Klasycznie tworząc aplikacje GUI musimy mieć na uwadze jej wielowątkowątkowość. W ActionListener implementować prywatne klasy runnable, thread etc.. metoda sprawdzona i działająca jednak w Java 6 mamy coś nowego, co pozwala na szybkie „oblikanie” wątków. Mowa tutaj o SwingWorker, świetna funkcjonalność – zajmuje się pbsługą wątków za nas, np:
Przykład ActionPerformed:(...) more
Archiwum kategorii: Programowanie
JavaFX – jeszcze trochę i będzie efektywniej.
SVN hooks i autoupdate’y
Czsami problemy są nieco ukryte, jednak jak zawsze debug daje radę. Hooks w svn’ie to rzecz bardzo przydatna, jeszcze bardziej jak chcemy po każdym commit’owaniu otrzymać działającą kopię na stronie testowej, klasyczne wykorzystanie cron’a jest często uciążliwe, a hook post-commit wykonywany jest jak sama nazwa wskazuje po commit’owaniu, autoupdate można zrobic tak:(...) more
Jak wylistować sobie miasta u pewnego dużego dostawcy usług internetowych ?
Oczywiście prezentowany sktypt jest banalny, jednak można go sobie ładnie rozbudować, niestety strony znanych mi providerów takich jak UPC i innych podobnoych są bardzo słabo zabezpieczone pod wieloma względami i oto mała prezentacja co można zrobić ze stronami „user frendly”, których jest coraz więcej.(...) more
Zewnętrzne repozytorium git
Od pewnego czasu zacząłem używać git’a do kontrolowania wersji, git wyparł mercurial’a. Git okazał się dla mnie bardziej elastycznym systemem zarządzania wersjami, nie wyprze on co prawda na razie subversion’a którego używam w bardzo wielu projektach, ale jak na razie dobrze sobie radzi z loklanymi projektami. W szczególności świetnie współgra z ruby on rails, w których robię coraz więcej „szybkich” projektów. (...) more
Passenger – apache mod for ruby
Strona domowa passenger’a.
Instalacja modułu do apache nigdy nie była tak prosta:(...) more
Merb + Ruby on Rails = Rails 3
Dzisiaj ukazała się informacja o połączeniu tych dwóch doskonałych frameworków. Czyli już niebawem trzeba będzie upgradeować wszystkie projekty i siągnąć mah 3 :) Co nam da rails 3 ? Otóż pozwoli na pisanie „lżejszych” aplikacji, kod zostanie zoptymalizowany, railsy będą bardziej otwarte na alternatwne rozwiązania niż dotychczas. No i co chyba najlepsze dla developerów pojawi się oficjalne API do testowania i tworzenia pluginów dla railsów, co niechybnie ucieszy wszystkich tych, którzy musieli robić szybkie „haki” do swoich aplikacji po upgradzie core’a railsów. Dużo pozytywnych informacji i to tuż przed świętami. Wszystkich zainteresowanych odsyłam do źródeł:(...) more
Ruby LDAP
Ogólnie wyklikanie obsługi LDAP’a w ruby’m jest bajecznie proste, osoby które twierdzą, że stara wersja Ruby-net-ldap jest zła bo jest stara, wyjaśniam że LDAP jako usługa jest raczej projektem statycznym i jako taki nie zmienia się co miesiąc. Wersja net-ldap z roku 2006 jest jak najbardziej ok i wspira właściwie wszystkie możliwości protokołu LDAP. (...) more
Trac AUTH PLAIN
Niestety czasami jest tak, że trzeba wymusić PLAIN w SMTP ;) domyślnie TRAC tego nie potrafi, więc trzeba było dodać mały hack do konfiguracji, żeby wymuszać. (...) more
SOAP, PHP i Introspekcja
Tworzę ostatnio parę systemów do których potrzebny jest mechanizm RPC lub SOAP. Wertując google mój wybór padł na nieco bardziej skomplikowany SOAP głównie z faktu, że jest on natywnie wspierany prze PHP5 jest oczywiście dostępny poprzez extensions tak więc wypada sprawdzić czy owe wsparcie mamy(...) more
Rekursywne wyświetlanie katalogów (PHP SPL)
SPL to dość fajne narzędzie do implementacji szczególnie iteracji w PHP, warte poznania. Za pmocą SPL’a da się
pewne uciążliwe funkcje napisać prościej. Poniżej przykład funkcji, która wypisuje drzewo katalogów:(...) more
Trac i problem z fBSD
Ogólnie rzecz biorąc problem występował już od jakiegoś czasu ale nigdy nie miałem chwili żeby do tego porządnie usiąść. Sam fakt debugowania python’a mnie przerażał no ale musiałem coś z tym zrobić bo jaki TRAC jest każdy widzi – czasami cholernie potrzebny ;) tak więc zabrałem się do rozgryzania problemu z segfaultem przy trac-admin, po pierwsze czekało mnie uruchomienie gdb oto rezultat:(...) more