Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2010

Jak poznawać nowy język programowania? (w/g Rafała)

Często czytam wypowiedzi czy artykuły różnych programistów, stanowiące sprawozdania z procesu poznawania jakiegoś nowego dla nich języka programowania. Metody poznawcze bywają różne. Wielu programistów podchodzi do problemu analitycznie - wgłębiają się w każdy szczegół języka, analizują jego składnię, znajdują niedoróbki i niekonsekwencje, badają efektywność różnych konstrukcji, zastanawiają się nad ich przydatnością i tak dalej. I jest to podejście bardzo słuszne w swym założeniu, pozwalające na rzeczywiste zgłębienie języka. Ale nie sposób też nie zauważyć, że jest to podejście czasochłonne, a zwykle programiści - jeżeli poznawanie nowego języka nie jest ich zajęciem zasadniczym - cierpią na chroniczny brak czasu, ścigani przez terminy „na wczoraj”.
Jedną z moich informatycznych myśli przewodnich jest „rozwój poprzez poznawanie jednego nowego języka programowania na rok”. Gdybym stosował metodę przedstawioną wcześniej, prawdopodobnie miałbym problemy z wyrobieniem się w czasie. Mój s…

Krótkie podsumowanie, czyli "w odpowiedzi na komentarz..."

Przyzwyczaiłem się już do sytuacji, że pod moimi wpisami w blogach nie ma komentarzy. Wynika to albo z braku zainteresowania Internautów moimi wypocinami, albo z nikłej kontrowersyjności tekstów (nikogo nie wnerwiam). Stawiam na to pierwsze - przypomnina mi się koszulka z napisem: "Nobody reads your blog!" ;-) Jednak czasem komentarz się pojawia, a ja go całkowicie nie zauważam (patrz: pierwsze zdanie o przyzwyczajeniu). Muszę pogrzebać w konfiguracji bloga - może jest jakieś informowanie mailem, czy coś w tym rodzaju?

Ostatnio odkryłem, że użytkownik demikaze napisał komentarz pod moim wpisem testowym, opublikowanym przez jedną z pierwszych wersji programu BlogTweetProject (był to jednocześnie mój pierwszy program napisany w Pythonie). demikaze zastanawiał się, jakie jest moje spojrzenie na Pythona, jeśli dotychczas programowałem w "klasycznych" językach, jak Java, C++ czy C#. Zastanawiał się też, od którego momentu można potraktować dany język programowania jako …

Ruby on Rails i klaster po indiańsku ;-)

Zacznę od tego, że winienem wszystkim, którzy czytali mój tutorial o początkach pracy z JRuby on Rails, kilka wyjaśnień. Trochę już napisałem we wcześniejszych postach, więc tutaj tematykę rozwinę (o ile mi się uda ją rozwinąć).

Otóż zrezygnowałem z Ruby'ego implementowanego na platformie Java nie dlatego, że okazał się do bani, lecz z zupełnie innego powodu. Otóż pracując z JRuby on Rails niejednokrotnie borykałem się z problemem niekompatybilności różnych wersji gemów (głównie rack, ale i innych paczek) a to z potężnym Glassfishem, a to z jego wersją deweloperską, stworzoną specjalnie do pisania i testowania aplikacji JRoR (glassfish-gem). Pomijam oczywiście fakt, że musiałem ciągle używać JRE/JDK w wersji 1.6.0_17, podczas gdy mamy już 1.6.0_21... Ale na nowszych Glassfish 3.0 (takiego używałem) padał na kolana. Przynajmniej u mnie, ale z tego, co czytałem, nie byłem jedynym użytkownikiem z tym problemem. Wszystko to przekładało się na konieczność testowania każdej istniejącej …

Ruby 1.9.2 i przygód kilka...

Ponieważ repozytoria Ubuntu 10.04 są dosyć biedne jeśli chodzi o świeże wersje różnych programów, czasem trzeba sięgnąć po źródła. Rozczarowany ograniczeniami Ruby 1.8.7 dostarczanego przez repozytoria Ubuntu usunąłem go wraz z całą "świtą" pakietów (bezustannie dziwię się, dlaczego wszystko jest tak rozdrobnione w repozytoriach, podczas gdy w źródłach mamy all-in-one; czasem mam obawy, że wyrzucam coś, co może być gdzieś potrzebne), pobrałem sobie źródła wersji 1.9.2, przekompilowałem i szafa gra. Choć od razu pojawiły się problemy - o ile Rails 2.3.8 zostały poprawnie zainstalowane (plus jeszcze parę innych dodatków), mongrel wszedł jak nóż w masło, mongrel_cluster tak samo, o tyle okazało się, że ani sam mongrel, ani mongrel_cluster nie mogą pracować razem, ani też pod kontrolą Ruby 1.9... Już chciałem robić downgrade Ruby'ego, gdy znalazłem w serwisie github.com repozytoria źródeł nowych wersji obu wspomnianych pakietów. Po przebudowaniu "dżemów" i ich zain…

Pożegnanie z Glassfishem i JRuby on Rails

Tytuł straszny, ale nie jest tak źle. Po prostu wracam do Railsów bazujących na natywnym Ruby i do serwera Mongrel, tym bardziej, że do celów produkcyjnych można wykorzystać starego dobrego indianina. Wiem, że nie jest to odkrywcze, ale znalazłem bodaj jedyną sensowną metodę udostępniania aplikacji RoR poprzez właśnie serwer apache. Opis tej metody można znaleźć tutaj: Apache + JRuby + Rails + GlassFish = Easy Deployment!.
Wcześniej żadna ze sztuczek nie skutkowała, ta zaś zaczyna działać w środowisku natywnym Ruby (trzeba ją troszkę doszlifować), mimo, że opis dotyczy JRoR. Poza tym - jak by nie było - apache jest dużo lżejszym serwerem, niż Glassfish, a instalowanie i obsługa tak potężnego narzędzia, jakim jest Glassfish, tylko po to, żeby serwować na nim aplikacje RoR jednak nie do końca ma sens. Chyba, że ktoś uruchamia jeszcze na nim javowskie aplikacje sieciowe.
Kolejny powód rezygnacji z tego serwera, to wieczne problemy z kompatybilnością gemów i kolejnych wersji J2SE - od poc…

Rails 3.0 w świetle dziennym

No i nareszcie mamy Rails 3.0! Zapowiada się ciekawie, choć pojawił się problem. Otóż framework został w pewnym stopniu przebudowany (jeszcze dokładnie się z nową wersją nie zapoznałem - wykonałem tylko kilka prób), co powoduje, że działające aplikacje utworzone w wersji 2.x muszą zostać "odrobinę" przerobione. Niestety, w moim przypadku - o ile "stare" aplikacje mogą sobie spokojnie pracować w Railsach 2.x - nowa wersja frameworka pociąga za sobą zmiany w środowisku pracy, przede wszystkim upgrade NetBeans (używam wersji 6.8), a kto wie, czy nie musiałbym też dźwigać GlassFish'a. W sumie można by powiedzieć: w czym problem? A no w braku czasu - głównie poświęcić go trzeba na dopieszczanie środowiska po upgrade'ach. Inna rzecz, to świeżość Rails 3 - myślę, że nie będzie od rzeczy przeczekanie pierwszej fazy szału na nową wersję i zainteresowanie się np. wersją 3.0.1.

Dla chcących migrować z Rails 2 na 3 dostępna jest ciekawa (jak mniemam) książka: Rails 3 …

Moving to Python

Mówi się, że prawdziwy informatyk powinien co roku poznawać nowy język programowania :-) Fajna sprawa, ale u mnie z tą częstotliwością bywało różnie. Zresztą między poznawaniem języka, a jego biegłym używaniem jest zasadnicza różnica. Poznałem na przestrzeni kilkunastu lat wiele języków programowania, jednak tak na prawdę programowałem i programuję tylko w trzech: C++ (w tym C++/CLI), C# i Java. Pozostałe, a było ich wiele - Forth, Lisp, wszelkie odmiany Basica, Perl, PHP (choć mocno go onegdaj używałem), Pascal, stary, dobry asembler i inne, których nazw już nawet nie pamiętam - gdzieś sobie zniknęły w czeluściach pamięci. Ostatnio nawet Ruby gdzieś mi zaczął umykać, ponieważ już dawno nie napisałem ani kawałka kodu... Jednak w tym przypadku sprawa jest ciągle otwarta - przymierzam się do pewnego projektu.
Ostatnio przeczytałem początek cyklu artykułów autorstwa Łukasza Langi opublikowanych w SDJ, a traktujących o programowaniu w Pythonie. I mnie ruszyło. O Pythonie słyszałem od dawn…

Dla chcących zgłębić C++

Często zarówno uczniowie, jak i inni adepci sztuki programowania pytają mnie o dobry podręcznik do C++. Szczerze powiedziawszy ciężko znaleźć naprawdę dobry podręcznik traktujący o referencyjnym (dla mnie przynajmniej) języku programowania, jakim właśnie jest C++, w sposób dogłębny, bez naleciałości rodem z Pascala (!) czy C (niestety, długo musiałem się tych naleciałości wyzbywać - teraz znowu mam inne "zboczenie": wszystko piszę jak w Javie...). Na szczęście przypomniało mi się, że jest w Internecie dostępny świetny kurs/niekurs języka C++ - może nie do końca dla początkujących (trzeba znać podstawy programowania) i może nie w 100% wyczerpujący, ale prezentujący (jak rzadko) PRAWIDŁOWY styl programowania w C++ (w zgodzie ze standardami). Gorąco polecam:"C++ bez cholesterolu" by Sektor van Skijlen

Z cyklu: źródła znalezione w starych archiwach - animacje siatkowe 3D w Javie

Szukałem i znalazłem! Parę lat temu, nudząc się okropnie postanowiłem przypomnieć sobie, jak to było w czasach, kiedy nie mieliśmy do dyspozycji OpenGL ani DirectX i wszelkie operacje trójwymiarowe trzeba było programować "z palca". Napisałem kilka programów, pokazujących nieskomplikowaną animację figur (sześcian, kula, pierścień) - w zasadzie wyłącznie przekształcenia afiniczne. Oczywiście wszystko zrobione jest jak w starym, dobrym asemblerze. Zapraszam do pobrania binarek oraz przejrzenia źródeł. Szczególnie polecam tym wszystkim, którzy pragną zacząć przygodę z grafiką komputerową.
Zdaję sobie sprawę, że programy nie są mistrzostwem świata, ale - jak wspomniałem - powstały z nudów, a pisanie ich było zabawą :-)

Do pobrania/przejrzenia:
- Sześcian (bin) (src) (doc)
- Kula (bin) (src) (doc) - tylko model punktowy; nie chciało mi się dorabiać siatki i tak już zostało...
- Pierścień (bin) (src) (doc)

Animacja w akcji:

Materiały dodatkowe do nauki Ruby on Rails

Mój tutorial nie jest wyczerpujący, to rzecz, którą można zauważyć na pierwszy rzut oka. Nie skupiałem się w nim na samym języku Ruby, ani też na szczegółach Rails. W związku z tym zamieszczam parę linków do stron, gdzie znaleźć można wiele ciekawych informacji, również dla początkujących:Tutoriale Ruby on Rails w środowisku aptana/radrails – nieco przestarzałe, ale pod względem jakości bardzo dobre.Polskie forum Ruby on RailsRailscasts – screencasty na temat RoRWzorzec projektowy Model-View-Controller (wikipedia jako obszar startowy :-))Wzorzec projektowy Active Record (j.w.)Z książek (drukowanych) na początek mógłbym polecić np. B.A. Tate, C. Hibbs: Ruby on Rails. Wprowadzenie, Helion, 2007 (drugie wydanie). I oczywiście inne pozycje wydawnictwa Helion (moim zdaniem jest to wydawnictwo informatyczne nr 1 na naszym rynku, dlatego się nie rozdrabniam).O samym języku Ruby dowiemy się najwięcej rozglądając się po stronach oficjalnego serwisu. Mogę polecić również interesujący podręcznik

Aneks (2) do tutoriala – Glassfih v3 + JRuby (on Rails) + MS SQL Server 2008

W artykułach:
Nowa wersja activerecord-jdbc-adapter – 0.9.4 // usunięty //Problem z activerecord-jdbc-adapter w wersji 0.9.3 // usunięty //przedstawiłem problem, jaki wystąpił podczas próby wpisywania danych do tabel SQL Servera z poziomu aplikacji JRuby on Rails poprzez rdzenny activerecord-jdbc-adapter w wersjach 0.9.3 i 0.9.4, później również – o czym już nie pisałem – w wersji 0.9.5. W tym rozwiązaniu wykorzystywany był sterownik JDBC dla Microsoft SQL Servera 2008.
Ostatnio znalazłem dedykowany adapter dla SQL Servera (activerecord-jdbcmssql-adapter, w wersji 0.9.5). Postanowiłem go wypróbować. Okazało się, że działa! A ponadto nie jest już potrzebny osobny sterownik JDBC i proces tworzenia aplikacji za pomocą kreatora znacznie się uprościł.
Aby skorzystać z dobrodziejstwa activerecord-jdbcmssql-adapter’a należy go oczywiście zainstalować (razem z innymi, ważnymi elementami – bodaj jeden dodatkowy pakiet oraz aktualizacja elementów activerecord) i zmienić odrobinę ustawienia krea…

Aneks do tutoriala – Glassfih v3 + JRuby (on Rails) + MS SQL Server 2008

W trzech częściach tutoriala na temat początków tworzenia i wdrażania aplikacji JRuby on Rails na platformie, w skład której wchodzą serwer aplikacyjny Glassfish v3 oraz serwer baz danych Microsoft SQL Server 2008, zabrakło informacji, jak przygotować niezależny od NetBeans serwer Glassfish do współpracy z produkcyjnym JRubym, a JRuby’ego do obsługi SQL Servera poprzez JDBC. Niniejszym nadrabiam zaległości.Najpierw musimy zainstalować (proces instalacji jest raczej intuicyjny i chyba nie wymaga opisu) i uruchomić niezależny serwer Glassfish, np. za pomocą polecenia (oczywiście polecenie do uruchomienia, nie instalacji :-)):asadmin start-domain Następnie w odpowiednim polu naszej ulubionej przeglądarki wpisujemy adres (numer portu według naszej konfiguracji, ustalonej w procesie instalacji – tutaj wartość domyślna):http://localhost:4848 Po udanym logowaniu do Konsoli Administratora (adres podany wyżej prowadzi właśnie do tej konsoli), udajemy się do podstrony Ruby Container: Na tej podstr…

JRuby on Rails + NetBeans + GlassFish +… Microsoft SQL Server 2008 (cz. 3)

To już ostatnia część tutoriala. W poprzednich częściach przygotowaliśmy środowisko pracy oraz utworzyliśmy bazy danych dla naszego projektu. Wykorzystując NetBeans wygenerowaliśmy również wstępną formę projektu aplikacji Rails i sprawdziliśmy z powodzeniem, czy jej uruchomienie jest możliwe.Teraz zajmiemy się rozbudową przykładowej aplikacji (nie ukrywam, że wygenerowany przez nas w części drugiej projekt był po prostu pusty…). Właściwie, to powinniśmy podejść do sprawy fachowo, czyli zaprojektować aplikację w oparciu o wzorzec MVC, jednak do naszych potrzeb użyjemy generatora rusztowań – będziemy po prostu “scaffoldowali” (scaffold – oznacza m. in. szkielet lub rusztować).Otwórzmy naszą aplikację-projekt Rails (SimpleApp) w środowisku NetBeans. Możemy jeszcze raz sprawdzić, czy wszystko gra (czyli działa). Jeśli tak, to kontynuujemy.W panelu Projects odnajdujemy nazwę naszego projektu (SimpleApp) i klikamy w nią prawym przyciskiem myszy. Z menu kontekstowego wybieramy opcję Generate

JRuby on Rails + NetBeans + GlassFish +… Microsoft SQL Server 2008 (cz.2)

W tej części tutoriala przygotujemy do pracy serwer baz danych, utworzymy w nim konto użytkownika, za pomocą którego wygenerujemy odpowiednie bazy danych - wykorzystamy je dalej przy tworzeniu przykładowej aplikacji Rails. Następnie "zmusimy" środowisko NetBeans do współpracy z SQL Serverem poprzez interfejs JDBC, wygenerujemy przykładową aplikację Rails i sprawdzimy, jak sobie radzi pod kontrolą serwera testowego GlassfishGem. Najpierw krótkie przypomnienie. Aplikacja railsowska potrzebuje trzech baz danych:trybu tworzenia aplikacji (development); trybu testowania aplikacji (test); trybu produkcyjnego (wersja końcowa - production) Pierwsza z nich przeznaczona jest do celów developerskich - cechują tę bazę częste zmiany, migracje i ich cofanie oraz przeładowywanie związanych z nią obiektów przy każdym odwołaniu do aplikacji.
Druga, jak sama nazwa wskazuje, przeznaczona jest do testów aplikacji, natomiast trzecia wykorzystywana będzie w przypadku właściwego uruchomienia a…

JRuby on Rails + NetBeans + GlassFish +… Microsoft SQL Server 2008 (cz.1)

Część pierwsza tutoriala o “mieszance wybuchowej”. Znalazłem wreszcie czas, żeby się za nią zabrać – temat jest interesujący i odrobinę intrygujący. Wszyscy, którzy próbują swych sił ze znakomitym frameworkiem Ruby on Rails zwykle korzystają z układu: Ruby + Rails, MySQL oraz serwer Webrick lub Mongrel. Ja mam propozycję inną.
Na jednym ze spotkań Śląskiej Regionalnej Grupy Microsoft mój kolega Sebastian, podczas przerwy kawowej, słuchając moich wywodów na temat doskonałości Rails zaproponował mi zwrócenie uwagi na rozwiązanie o przewrotnej nazwie JRuby on Rails. Literka “J” przed nazwą jednego z coraz bardziej popularnych, interpretowanych języków programowania oznacza, że wersja ta została w całości napisana w Javie (moim ulubionym języku programowania :-)). No więc się zainteresowałem. Dlaczego? Mam nadzieję, że ten tutorial udzieli odpowiedzi na to pytanie i przy okazji wiele wyjaśni.
O czym będzie w tej części?
Wstępniak drugi, czyli co mnie skłoniło ku takiemu rozwiązaniu. Krótk…