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ą:

Kalkulator biletów SKM

Zabawy z grafiką i odświerzaniem zawartości okna

Mrówka Langtona

Tuesday, January 15, 2008

Ubuntu - działa. Linux na Laptopa

Ostatnio instalowałem sporo Linuxów. Akcja była przeprowadzana na moim nowym laptopie. KateOS sprawdzał się, ale jego mankamentem jest niestety mała ilość dostępnych programów w repo. Mankamentu tego nie posiadał Debian, który nie pamiętam już dlaczego mi się nie spodobał. Potem było SUSE, które poprostu nie przypadło mi do gustu. Były jakieś niesnaski z aktualizacjami, które cały czas wyrzucały te same pakiety do zaktualizowania. Po zainstalowaniu compiza Xy zaczęły się systematycznie zawieszać. Kubuntu zachowywał się podobnie pod różnymi względami (stwierdzam więc, że to chyba pewne mankamenty samego KDE), działając poprostu niestabilnie i wykrzaczając się w różnych miejscach. Fedorze zaś nie udało się nawet uruchomić instalatora. W moim przypadku idealnym systemem okazało się ubuntu. Dlaczego ? Bo działa. Na dzieńdobry już przy włączeniu instalatora (Live CD) raczyło mnie ślicznymi compizowymi efektami, który jeszcze ani razu mi się nie wykrzaczył ! Ba więcej - posiada sporo naprawdę dobrze działających narzędzi w trybie graficznym. Choć nie są mi one potrzebne (lubię klimaty konfigurowania plików slack/kateos), to mówię o nich ponieważ ubuntu jest na tyle działającą i łatwą w obsłudze dystrybucją, że używa jej nawet mój kolega, który do Linuksa był nastawiony sceptycznie i miał wobec niego sporo wymagań. Próbował on kolejno kilku dystrybucji i kiedy po zainstalowaniu próbował coś zrobić, to zawsze pojawiał się jakiś błąd, albo coś nie działało (takie miał pecha). Czasami nawet sam instalator nie chciał się spisywać.

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.

Sunday, December 30, 2007

utf8_general_ci vs utf8_bin

Od jakiegoś roku głowiłem się nad problemem - dlaczego w dokumentacji MySQL LIKE jest case sensitive a u mnie nie. Problem polegał na tym, że wszystkie pola miałem utf8_bin. Oznacza to mniej więcej tyle, że wyszukiwanie odbywa się wtedy binarnie.

Wyszukiwanie binarne, czy sortowanie binarne nie jest czułe na wielkość znaków. Pole utf8_bin wymusza takie właśnie traktowanie i wszystkie zapytania automatycznie działają na danych jako binarne. Dlatego, jeżeli chcesz mieć wybór używaj pól utf8_general_ci a efekty binarne zawieraj w zapytaniu np. BINARY ORDER BY ... itp.

Friday, December 7, 2007

Listowanie na strony

Zawsze miałem problem, z tym jak obliczyć ile stron będzie zajmowało wyświetlenie wyników pewnego zapytania powiedzmy po 30. Jak robiło się LIMIT to COUNT automatycznie zawracało wartość w limicie. Ostatnio kolega podesłał mi takie zapytanie:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
-> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

The second SELECT returns a number indicating how many rows the first SELECT would have returned had it been written without the LIMIT clause.
Więcej znajdziecie tutaj:
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html

Monday, December 3, 2007

Pierwsze wrażenia z programowania w Rails

Powiem od razu nie są najlepsze. Może wpływa na to fakt, że kiedyś na spotkaniu TLUGu jakiś gość zbeształ PHP (porównując go do Rails) więc na dzień dobry podchodziłem do tego zupełnie sceptycznie.

Po pierwsze do tej pory nie udało mi się odpalić procesu i komunikować się z nim na poziomie strumieni 3,4 wykraczających poza standard in/out/err i nikt ze społeczności jak na razie nie jest w stanie mi pomóc.

Kolejna sprawa to dokumentacja. W porównaniu do PHP jest do niczego. Nawet www.noobkit.com czy getapi.com wypada bardzo słabo. Ok - nawet nie porównujemy tego, bo w sumie PHP ma najlepszą dokumentację jaką w życiu widziałem. Ale nawet dokumentacja frameworków PHPowych jest lepsza niż Rails.

Dodatkowo ogromna ilość artykułów niespecjalnie pomaga zorientować się w sytuacji... i odnaleźć drogę do celu :/ co stanowi pewien problem.

To taka pierwsza refleksja - może czas przyniesie zmiany. Zobaczymy.