Saturday, January 26, 2008
Java - pierwsze spotkanie
Java chyba nie ma sobie równych jeżeli chodzi o interfejs. Z biblioteką SWT Java staje się chyba bezkonkurencyjna pod tym względem choć już samo Swing pozawala na przenośność :] to SWT dodaje tej przenośności smaczku.
Kolejna rzecz, która cieszy to podstawowe operacje, elementy, klasy z których się korzysta są napisane tak iż korzystanie z nich to czysta przyjemność, szczególnie po moradędze z Visual C++ 2005. Wiele elementów z którymi w Visualu człowiek się męczył tutaj "po prostu działa". Język okazuje się wygodn, a proste programy pisze się błyskawicznie ponieważ można się skupić na pisaniu kodu a nie na szukaniu po sieci "jak to się robi i dlaczego nie działa ?".
IDE dla języka Java ... marzenie. NetBeans po prostu robi za nas wszystko chociaż i na Eclipse nie ma co narzekać - to jak na razie gdyby ktoś mnie zapytał co polecam poleciłbym NetBeans, prawdopodobnie dlatego, że Eclipse za słabo znam.
No dobrze - a teraz jak już tak nachwaliłem ... to teraz trzeba troszkę zganić, żeby było obiektywnie.
Po pierwsze: o ile Java jest super w zastosowaniach podstawowych o tyle przy późniejszych programach (TLS Sockets na przykład) zaczyna być ciężko. Są fora, na których społeczność naprawdę stara się pomóc, ale im temat bardziej specjalistyczny tym trudniej o pomoc, dokumentację, przykłady.
Po drugie: Instalacja bibliotek i używanie w swoich plikach bibliotek cudzych stanowi na początku pewien problem.
Inna sprawa. Ilość klas obecnych w Java może być dla kogoś zaletą (bo w sumie są klasy do wszystkiego), z drugiej strony czasem chciałbyś coś zrobić. Masz stringa, a metoda, którą chcesz użyć przyjmuje InputSource. Zaczyna się kombinowanie, myszkowanie po sieci jak z tego co masz uzyskać to co chce metoda... Ilość możliwości, opcji - wprowadza specyficzny nieład - jest tego po prostu za dużo... i gdy na początku można było się czegoś nauczyć... tutaj zaczynają się schody. Mylą się klasy, ich przeznaczenie i metody konwersji między nimi.
To w sumie tyle. Każdemu programiście polecam po programować troszkę w Java - naprawdę język uczy się na błędach protoplastów i wiele ułatwia. Polecam !
Base64 w Java
Thursday, January 24, 2008
Ładne ikonki zakładek pod FireFox
Opera -> Firefox
Exaile - GTKowy Amarok
Pozdrawiam !
Monday, January 21, 2008
Sieć bezprzewodowa w ubuntu
ifconfig eth1 down # Wyłączam interfejs na czas konfiguracji
iwconfig eth1 essid linksys # Wpisuje nazwe sieci z ktora chce sie laczyc
iwconfig eth1 key BA123RDZO65TAJNE # Podaje indentyfikator WEP
ifconfig eth1 up # Wlaczam juz skonfigurowany interfejs
dhclient3 eth1 # Pobieram dla niego adres z DHCP
Ubuntu i słuchawki w laptopie Fujitsu-Siemens Amilo Pro V3525
Na podstawie opisu zawartego tutaj (dzięki mich) doszedłem, że aby moje ubuntu zaczęło odtwarzać dźwięk na słuchawkach na końcu pliku /etc/modprobe.d/alsa-base wystarczyło dodać:
options snd-hda-intel model=targa-digPo zrestartowaniu dźwięk odtwrzany był tylko na słuchawkach. Minusem jest niemożliwość odtwarzania dźwięku przez wbudowane głośniczki bez wykosowania tej linijki i pononwego restartu komputera.
Saturday, January 19, 2008
Uruchamianie aplikacji SWT pod Windows
C:\Program Files\Java\jre1.6.0\lib\ext
C:\Program Files\Java\jre1.6.0_03\lib\ext
i wszystko pięknie działało :)
Dwa słowa o SWT
Na uczelni uczono nas programować interfejs z użyciem biblioteki swing. Korzystaliśmy z narzędzia jakim jest NetBeans. Projektowanie interfejsu z użyciem swinga generowało okienka, rysowane piksel po pikselu, identycznie w każdy systemie, bez względu na to jak w danym systemie system okienek realnie wyglądał. Oznacza to mniej więcej tyle, że jeżeli inaczej wyglądają okienka w Windows, inaczej w GTK a jeszcze inaczej w MacOS to z użyciem biblioteki swing okienka w każdym z tych przypadków wyglądałyby identycznie.
Inaczej jest z biblioteką SWT, w które wygląd okienek dopasowuje się do systemu w którym obecnie uruchamiamy aplikację. Ten sam program będzie wyglądał inaczej pod Windows, inaczej pod GTK inaczej pod MACami. Brzmi wspaniale nieprawdaż :) Zawsze lepiej jest mieć aplikację, do której wyglądu użytkownik danego systemu jest przyzwyczajony i która nie straszy swoją innością, choć nie mogę powiedzieć, żeby aplikacje pisane w Swing były nieschludne - poprostu są inne.
SWT w Ubuntu
Ostatnie kilka dni spędziłem na walczeniu z SWT w ubuntu. SWT to technologia dostępna w języku programowania Java pozwalajaca tworzyć interfejsy użytkownika wyglądające jak natywne okienka dostępne w systemie z którego korzystamy.
Na początku wpisałem sobie w synapticu SWT i zainstalowałem co następuje:
Paczka gtk-java zawiera pliki jar, zaś paczka jni pliki so. Później przyszedł czas na eclipse. Wiem, że na dzień dzisiejszy dostępna jest wersja 3.3, ale prawdopodobnie na moim poziomie zaawansowania nie zauważyłbym nawet różnicy w funkcjonalności :] więc zainastalowałem sobie:libswt3.2-gtk-gcj
libswt3.2-gtk-java
libswt3.2-gtk-jni
Nie wiem czy to wszystko jest potrzebne, ale :) z tym wszystko działa w porządku. Oczywiście o:eclipse
eclipse-jdt
eclipse-pde
eclipse-platform
eclipse-rcp
eclipse-source
sun-java6-jdknie wspomnę. Po zainstalowaniu tych wszystkich paczek mamy dwie opcje. Zrobić dowiązanie symboliczne w katalogu rozszerzeń jre do swt.jar tak, że będzie automatycznie lądowało w projekcie (wyglądał poprostu ładnie), albo dodawać do projektów w których korzystamy SWT za każdym razem zewnętrzne pliki JAR (pojawia się kolejna pozycja w menu). Jeżeli chcemy zrobić dowiązanie to w katalogu:
sudo ln -s /usr/lib/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.2.2.v3236.jar /usr/lib/jvm/java-6-sun/jre/lib/ext/swt.jar
Teraz uruchamiamy Eclipse wchodzimy do: Window\Preferences\Java\Installed JREs, zaznaczamy java-6-sun, wybieramy Edit..., Add External JARs..., wyszukujemy dowiązanie symboliczne /usr/lib/jvm/java-6-sun/jre/lib/ext/swt.jar, OK, OK, OK. Teraz pozostaje nam jeszcze ponowne uruchomienie Eclipse. Od tej pory wszystkie projekty jakie będziemy tworzyć będą posiadały możliwość używania SWT.
Jeżeli chcemy samodzielnie dołączać SWT do projektu podczas tworzenia nowego projektu w widoku Java Settings w zakładce Libraries możemy wybrać Add External JARs i analogicznie do poprzedniego opisu dodać ją samodzielnie. Podaję kod przykładowej aplikacji:
package widok;Podczas uruchamiania z menu Run\Run As musimy wybrać SWT Application.
import org.eclipse.swt.widgets.*;
public class Okienko {
public static void main(String [] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Hello World !");
shell.open();
while (! shell.isDisposed()) {
if(! display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
Aby stworzyć plik jar z menu File wybieramy export Java \ Jar File, zaznaczamy nasz projekt i klikamy kolejno Next aby w widoku JAR Manifest Specification ustawić MainClass na widok.Okienko. Powiedzmy, że zapiszemy plik pod nazwą morficzneOkienko.jar
Ponieważ java nie wie gdzie dokładnie ma szukać sobie informacji o swt dlatego aplikację musimy uruchomić:
java -Djava.library.path=/usr/lib/jni -jar morficzneOkienko.jar
wskazując javie, gdzie znajdują się biblioteki potrzebne do uruchomienia naszego programu.
Aby móc cieszyć się SWT w NetBeans 6 klikamy w prawym panelu "Projects", klikamy prawym przyciskiem myszy na nasz projekt i wybieramy Properties. W części Categories wybieramy Libraries i w zakładce Compile:
/usr/lib/eclipse/pluginsWybierzmy teraz Run i do pola VM Options wpiszmy:
i już możemy cieszyć się SWT w NetBeans 6-Djava.library.path=/usr/lib/jni
Friday, January 18, 2008
Dokumentacja w Ubuntu
Dziś chciałem sobie obejrzeć składnię funkcji read() w C. I co ? I kicha... ale się wściekłe. KateOS przyzwyczaiło mnie, że wszystko mam na wyciągnięcie ręki. Wystarczyło zainstalować paczki:
Być może list jest za długa, ale po uruchomieniu "man 2 read" dostałem to co chciałem :]manpages-pl
manpages-pl-dev
manpages-posix
manpages-posix-dev
Thursday, January 17, 2008
Zbawienie - czyli Java na 3 kółkach
Na trzech kółkach bo dopiero zaczynam. Używaliśmy środowiska NetBeans 5.0. Wiem, że stare - ale tylko takie jest jak na razie na lbaoratorium. Sporo namęczyłem się z serializacją. Wyglądało - jakby działała, ale po odtworzeniu obiektu miała problemy z zapisywaniem wartości do odtworzonego obiektu. Gdy zacząłem zamieniać wszystkie Integer na int gdzie tylko to było możliwe - zaczęło działać.
Programik to prosta gra w kółko i krzyżyk.
Wypociny w Visual C++ 2005
Na laboratoriach dowiedziałem się, że Visual C++ 2005 to od wersji 6 nie poprawione (podstawowe) błędy. Sam przekonałem się, że to także kiepska implementacja (gdzie najrostrze rzeczy robi się tak jakby komputer chciał a nie mógł) i jestem zmuszony do używania narzędzia, które mało tego, że nie działa to jeszcze nigdy nie wiadomo kiedy zapisze mój projekt tak iż przestanie działać (więc najlepiej każdy zapis zapisywać jako nowy projekt). Oto moje wypociny. Może komuś się przydadzą:
Tuesday, January 15, 2008
Ubuntu - działa. Linux na Laptopa
Ubuntu posiada sporo paczek, właściwie niewiele rzeczy muszę doinstalowywać ręcznie. Jako programistę wkurza mnie tylko dzielenie paczki na te z plikami nagłówkowymi i binarkami... W KateOS było o tyle dobrze, że "odrazu wszystko działało". System był wyposażony w niesamowicie dużą ilość bibliotek - więc kompilacje programów w znacznej części kończyły się powodzeniem. Tutaj nawet najbardziej podstawowe elementy trzeba dosinatlowywać z repo - jeszcze się do tego nie przyzwyczaiłem.
Ogólnie - system poprostu działa i jest fajnie. Wywala mi się tylko co jakiś czas beta Opery, ale to w końcu beta więc na co narzekać. To tyle - polecam tą dystrybucję każdemu kto chciałby spróbować swojej przygody z Linuksem. Ma naprawdę kapitalną dokumentację, aktywną społeczność, jest o niem mnóstwo informacji w sieci, sympatyczny podręcznik - i poprostu działa. Może i na Twoim sprzęcie okaże się tym "działającym" linuksem !
Merb - pierwsze spotkanie
Ostatnio wspierając się poradami z blog.zabiello.com postanąwiłem ruszyć Merba. Pierwsze zaskoczenie to to, że kiedy nie mogłem dać sobie z czymś rady (na przykład jak dostać się do danych wysłanych POST w kontrolerze) - to analogia do railsów była niesamowita. To fajnie - bo okazuje się, że podręczniki do rails jednak się przydają.
Druga sprawa to współpraca z NetBeans 6.0.
1) Tworzymy pusty projekt merb w konsoli wpisując:
merb nazwa_aplikacji
2) W NetBeans Tworzymy projekt Rails z istniejącymi źródłami i wskazujemy nasze pliki stworzone przez merb.
3) NetBeans łyka naszą strukturę katalogów jako rails. Teraz aby móc odpalić serwer, czy debugować należy jeszcze zastosować się do wskazówek zawartych http://blog.zabiello.com/articles/2007/12/20/nb6-debug-merb.
Dzięki temu mamy naprawdę fajne narzędzie do merb-a. Taki pobierzny przegląd podstawowych zagdnień związanych z tworzeniem aplikacji w Merb znajdziemy:
http://blog.zabiello.com/articles/2007/12/16/howto-rails-merb-pylons
http://merb.rubyforge.org/files/README.html
Jak wspomniałem - również książki do Rails mogą okazać się pomocne.