piątek, 3 września 2010
JetBrains TV
To jako ciekawostka dla użytkowników narzędzi z firmy JetBrains (IntelliJ) pod adresem http://tv.jetbrains.net/channel/intellij-idea można zobaczyć "video tutoriale" związane z używaniem narzędzi w/w firmy.
piątek, 20 sierpnia 2010
Wysyłanie pliku z serwera do przeglądarki
Rozwiązywałem jakiś czas temu problem przesyłania pliku RTF do przeglądarki (dowolnej). Dodatkowym wymaganiem było to, by przeglądarka sama rozpoznała typ pliku jaki do niej został wysłany. Poniżej przedstawiam kod, który realizuje to zadanie:
response.setContentType("application/rtf");
response.setHeader("Content-disposition","attachment; filename=test.rtf");
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] arr = new byte[0];
try {
Integer id = nteger.valueOf(request.getParameter("templateId"));
arr = gen.start(id,SaveTo.STRING).getBytes("ISO8859_2");
} catch (Exception e) {
e.printStackTrace();
}
out.write(arr);
response.setContentLength(((ByteArrayOutputStream) out).size());
OutputStream result = response.getOutputStream();
((ByteArrayOutputStream) out).writeTo(result);
Pierwsze dwie linie kodu to ustawienie odpowiednich parametrów dla nagłówka odpowiedzi. Chciałem w tym miejscu zwrócić szczególną uwagę na zapis ""Content-disposition","attachment; filename=test.rtf"", który pozwala na wysłanie do przeglądarki informacji o zawartości strumienia w tym przypadku strumień to plik rtf. Po otrzymaniu takiego nagłówka przeglądarka będzie potrafiła zaproponować nam akcje adekwatne do zawartości jaką do niej wysłaliśmy.
W następnym kroku uruchamiamy "generator RTF", ustawiamy odpowiednie kodowanie(!) i pobrany strumień wysyłamy do przeglądarki. Oczywiście, kod ten umieszczamy w odpowedniej metodzie serwlet-u:)
wtorek, 17 sierpnia 2010
SVN i cofnięcie do określonej rewizji
Ostatnio tak się złożyło, że zrobiłem update SVN z wersją plików, które przechodziły "gwałtowne przemiany" i się nie kompilowały. Zastanawiałem się jak w SVN cofnąć się do określonej działającej rewizji? Na szczęście okazało się, że rozwiązanie nie jest trudne do zastosowania i sprowadza się do wydania jednego polecenia z linii komend: svn merge -rHEAD:nr_rewizji ..
I to tyle:)
IntelliJ, Maven i zmienne systemowe
Używając Maven-a w środowisku IntelliJ możemy napotkać problem związany ze zmiennymi systemowymi. Okazuje się bowiem, iż plugin Mavena w IntelliJ "nie widzi" zmiennych systemowych, które zostały zdefiniowane np. w pliku .bash_profile. Rozwiązania tego problemu są dwa:
- Uruchamiać IntelliJ z pliku uruchamiającego (.sh lub bat) - powinno działać na wszystkich systemach.
- W przypadku MacOS zdefiniować zmienną systemową w pliku "environment.plist" i zapisać plik w folderze domowym użytkownika w katalogu .MacOSX. Po ponownym zalogowaniu się do systemu możemy odwołać się do zmiennej z poziomu Mavena.
Przykład: odwołanie się do zmiennej systemowej Flex SDK:
W ramach pliku POM Maven-a odwołujemy się do zmiennej środowiskowej FLEX_SDK. "Standardowo" zmienna ta jest niewidoczna dla Maven-a w IntelliJ.
.png)
W pierwszym kroku zakładamy plik "environment.plist" i definiujemy zmienną systemową.
.png)
Następnie logujemy się ponownie do systemu. Po ponownym zalogowaniu do systemu i uruchomieniu IntelliJ nasza zmienna powinna znaleźć się na liście podpowiedzi kontekstowej.
.png)
Poprawne zdefiniowanie zmiennej systemowej FLEX_SDK w ramach IntelliJ skutkuje tym, iż nie musimy za każdym razem po "re-imporcie" projektu mavena na nowo ustawiać SDK dla modułu Flex zrobi to za nas IntelliJ:).
Początek
Celem tego bloga jest zbieranie różnych informacji związanych z tym co mnie kręci (patrz: O Blogu). Na blogu tym postaram się opisać rozwiązania problemów, które napotkałem lub napotykam w codziennej pracy z językiem Java, IntelliJ oraz Mac OS. Chciałbym by blog ten stał się z jednej strony pewnym archiwum dla mnie i potencjalnym źródłem wiedzy dla innych osób.
Subskrybuj:
Posty (Atom)