Miesięczne archiwa: Czerwiec 2012

Eclipse Juno – nowa jakość IDE?

eclipse-juno-icon

Od poprzedniego wydania popularnego środowiska IDE, jakim jest Eclipse, minął trochę ponad rok. Eclipse Indigo (3.7) nie wprowadził jednak rewolucji, bo większość zmian od poprzedniej wersji to były poprawki błędów i aktualizacje modułów. Nieco lepiej działała „podpowiadaczka” (ctrl+space) i kilka innych drobiazgów, ale mimo wszystko nie odczułem jakiś większych różnic po przesiadce z Helios‚a (3.6). A jak jest tym razem?

Juno (a dokładniej 3 Juno lub Junona) – taką nazwę nosi jedna z planetoid krążących między Marsem a Jowiszem. Taką samą nazwę przyjął również nowy Eclipse. Co różni go od poprzednika? Przede wszystkim platforma. Juno oparty jest o platformę Eclipse 4.x rozwijaną już od dłuższego czasu, a obecnie noszącą numer 4.2. Ze zmian widocznych na pierwszy rzut oka przynosi ona przede wszystkim nowy, odmieniony wygląd, ale przede wszystkim zawiera szereg usprawnień, jak chociażby uniwersalną wyszukiwarkę, odłączane edytory, czy znacznie większe możliwości personalizacji poszczególnych elementów widoku.

Zmian jest jednak więcej. Jedną z ciekawszych jest nowy mechanizm Code Recommenders rozbudowujący możliwości „podpowiadaczki”. Gdy potrzebujemy jakiejś podpowiedzi, IDE sięga do bazy zawierającej najczęściej używane elementy i podpowiada nam np. sugerowane nazwy metod podając przy tym procent używalności danej metody. Oczywiście mechanizm zawiera algorytmy uczenia się, dzięki czemu powinien dostosować się do naszych nawyków i potrzeb.

Wygląda więc na to, że nowy Eclipse wprowadza nieco więcej zmian względem poprzedniej wersji, niż jego poprzednicy. Na ile okażą się przydatne, okaże się w praktyce. Mimo wszystko zawsze warto utrzymywać najnowszą wersję oprogramowania, więc zachęcam do pobierania.

Przesyłanie daty w serwisach REST (Jersey)

Error 400 Bad Request… tak potraktował mnie dziś mój rest‚owy serwis, gdy próbowałem przekazać mu parametr z datą. Próby przekazywania daty w różnych formatach na nic się nie zdały, serwis dalej zbywał mnie brzydką odpowiedzią. A wyglądał on mniej więcej tak:

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_XML)
public Response action(@FormParam("date") Date date) {
  ...
}

W rzeczywistości ma jeszcze kilka innych parametrów, ale one przechodziły bez problemu. Co ciekawe, różne źródła w internecie mówią, że „u nich działa”. Szukamy zatem przyczyny problemu.

Czytaj więcej »

Pobieranie plików z nazwami bez krzaków

Ostatnio w pracy toczę boje z serwisami REST i przy okazji tworzenia serwisu do upload‚u i download‚u plików natrafiłem na ciekawy, dawno temu utworzony przeze mnie zlepek kodu. Jako że czasami moja dawna twórczość mnie zachwyca, poniżej ten fragment zacytuję :)

public String encodeFilename(String filename, String userAgent) throws UnsupportedEncodingException {
  if (userAgent.contains("MSIE") || userAgent.contains("Opera")) {
    return URLEncoder.encode(filename, "UTF-8").replace("+", "%20");
  } else {
    return "=?UTF-8?B?" + new String(Base64.encodeBase64(filename.getBytes("UTF-8"))) + "?=";
  }
}

No i po co to komu? Ano po to, aby nadać pobieranemu plikowi nazwę z naszymi rodzimymi krzaczkami. Nie będę się zagłębiał w to, czemu tak jest, wystarczy wiedzieć, że prawie wszystkie przeglądarki nie odczytają poprawnie nazwy pliku przekazanej poprzez parametr nagłówka Content-Disposition. Co więcej, różnym przeglądarkom trzeba serwować zakodowaną nazwę pliku w nieco inny sposób.

Czytaj więcej »