Archive for the ‘programowanie’ Category

Thinking Sphinx as Windows service

sobota, lipiec 12th, 2008

If you use Windows (as I do) and Rails plugin thinking_sphinx you may find it annoying to open the console and type “rake ts:start” every time you restart your system (and this happens a lot :)). That’s why I’d like to run it as Windows service.

Sphinx has the ability to install itself as Windows service:

searchd --install --config c:\sphinx\sphinx.conf

Unfortunately thinking_sphinx plugin does not support it, so here’s Thinking Sphinx for Windows - a batch of simple rake tasks dedicated for Windows users. Now you can:

rake thinking_sphinx:service:install

It basically does two things - installs Windows service using thinking_sphinx configuration file and starts the service (NET START searchd). Other tasks are (obviously):

rake thinking_sphinx:service:delete
rake thinking_sphinx:service:start
rake thinking_sphinx:service:stop
rake thinking_sphinx:service:restart

Like in thinking_sphinx, there are shortcuts with rake thinking_sphinx:service: becoming just tsw: (so it takes short and sweet rake tsw:install to install & start the service).

Installation: just download the file and unpack it into vendor/plugins directory of your Rails project. You still have to have thinking_sphinx installed! Have fun.

Najgłupsza funkcja w Windows

czwartek, grudzień 13th, 2007

Nie jestem fanatycznym przeciwnikiem Microsoftu, lubię Windows (Internet Explorera trochę mniej), uważam, że w MS pracuje sporo utalentowanych ludzi i robią kawał dobrej roboty. Ich rozwiązania interfejsu użytkownika, chociaż nie zawsze trafne, w większości przypadków jednak są poprawne. Niekiedy jednak udaje im się zrobić coś tak głupiego, że nawet ja łapię się za głowę… Najlepszym tego przykładem jest wyszukiwanie w Windows oraz wizard do szukania w plikach pomocy.

Dla mnie osobiście najbardziej denerwująca jest chęć Windows, żeby się zrestartować po automatycznej aktualizacji. Pojawia się wtedy okienko “Komputer musi zostać uruchomiony ponownie (…) Czy chcesz teraz ponownie uruchomić komputer?”. Jako, że zwykle jestem w trakcie pracy, mam otwartych dwadzieścia okien i najmniejszej ochoty na restart - wybieram więc “Uruchom ponownie później”… Po czym za 10 minut Windows jeszcze raz pyta mnie, czy na pewno nie chcę restartu już teraz, od razu! Ba, jeżeli odejdę na chwilę od komputera i nie potwierdzę po raz kolejny, że NIE mam na to ochoty - pasek postępu dojedzie do końca i zrobi to, czego wyraźnie nie chcę.

aktualizacjeautomatyczne.jpg

lostcounter.jpgMam wrażenie, że twórcy Windows widzieli przedpremierowo drugi sezon Lost (Zagubieni), w którym bohaterowie muszą co 108 minut wciskać tajemniczy przycisk. Jeżeli go nie wcisną na czas - wszystko eksploduje. A może to scenarzyści Lost inspirowali się tą rewolucyjną funkcją wymyśloną przez wysoko opłacanego speca od usability & security w Microsoft?

Twój najlepszy programista

sobota, listopad 10th, 2007

Czy zastanawialiście się kiedyś jakie są cechy najlepszych programistów? Co sprawia, że jedni osiągają sukces a inni pracują całe życie w małych, nic nie znaczących firemkach, bez perspektyw na rozwój (i podwyżkę)? Jak to się dzieje, że mamy z jednej strony świetne, intuicyjne oprogramowanie, a z drugiej kompletnie beznadziejne śmieci - co prawda z mnóstwem bajerów, ale w gruncie rzeczy bezużyteczne?

Zdawałoby się, że odpowiedź jest prosta - dobry programista to taki, który (niespodzianka!) dobrze programuje, czyli zna na wylot język, w którym to robi i potrafi sprawić, by dana funkcjonalność zadziałała. To jednak nie wystarcza - znam wielu programistów tworzących mnóstwo linii kodu na minutę i dobrych w rozwiązywaniu algorytmów, których bym nie zatrudnił. Opanowanie technologii nie wystarcza.

Poniżej postaram się opisać kilka kluczowych elementów stanowiących o tym, że niezły koder staje się świetnym programistą:

  • Pasja - zawsze trudno mi zaufać komuś, kto mówi, że jest programistą a pierwszy program stworzył na studiach informatycznych. Najlepsi programiści piszą swoje pierwsze linie kodu w podstawówce, najpóźniej w gimnazjum. Znają co najmniej kilka języków programowania, nieważne, że wiele z nich słabo - świadczy to raczej o odkrywaniu i poszukiwaniu. Rozumieją i są zainteresowani nowinkami w branży - jeżeli w 2007 roku nie słyszeli o Ruby czy Pythonie, to prawdopodobnie jest coś z nimi nie tak.
  • Komunikacja z otoczeniem - programowanie to wbrew pozorom także praca z ludźmi. Bardzo rzadko zdarza się sytuacja, w której otrzymujesz pełną, szczegółową specyfikację i bez szemrania zabierasz się do implementacji. Zwykle najpierw musisz poznać potrzeby osób, dla których tworzone jest oprogramowanie - ich nawyki, typowe problemy, wreszcie cele, które chcą osiągnąć. Programista musi umieć z nimi rozmawiać (czy to bezpośrednio, czy za pośrednictwem project managera), dopytywać o szczegóły, wyjaśniać wątpliwości.
  • Samodzielność - pytanie o szczegóły jest ważne, aby poznać potrzeby klienta. Jednak programista, który pyta czy komunikaty o błędach zrobić czerwoną czcionką na białym tle czy odrotnie, to zły znak. Po pierwsze, wystarczy spojrzeć jak to było zrobione w innych projektach czy w innych częściach tego samego projektu. Po drugie, jest to sprawa zupełnie nieistotna - jeżeli uznamy, że trzeba zrobić to na czerwonym tle a zostało zrobione czerwoną czcionką - zmiana tego to kilka sekund. Jeszcze gorzej jeżeli programista dostał w specyfikacji tylko notkę, że w tym a tym miejscu mają się pojawiać błędy i w ogóle nie zastanawia się jak wyróżnić informację o nich - więc po prostu je wyświetla, bez żadnego specjalnego formatowania, bo przecież w specyfikacji nic nie było. Nie myśli, nie proponuje rozwiązań, nie wnika.
  • Krytyczne spojrzenie - bardzo często zdarza się, że specyfikacja projektu jest sucha, czy wręcz błędna. Klient pisze w niej co mu ślina na język przyniesie, bez specjalnego zastanowienia. W końcu jest klientem, niekoniecznie ma umysł analityczny i niekoniecznie zastanawia się nad każdą możliwością. Czasami ma dodatkowo własne przyzwyczajenia, które narzucają mu pewne rozwiązania (np. tak to działało w programie, który używał wcześniej). Czasami po prostu nie wie, że jest możliwość zrobienia czegoś lepiej, ponieważ nie zna ograniczeń technologii czy nie zastanawia się nad nimi. Dobry programista powinien takie rzeczy wyłapać - zaznaczyć, że to i to nie będzie działało sensownie (np. będzie wymagało od użytkownika zbyt dużo zachodu, więc zrezygnuje), a tamto można zrobić fajniej, bardziej zautomatyzować proces czy uczynić go bardziej spójnym z pozostałymi. Specyfikacja nie jest święta a klient nie jest wyrocznią… jednak z drugiej strony, wszelkie zmiany i usprawnienia trzeba przedyskutować - wprowadzanie ich bez konsultacji może okazać się zupełną pomyłką.
  • Wczucie się w rolę użytkownika - jedną z najbardziej typowych wpadek nawet niezłych programistów jest brak podejścia od strony użytkownika. Mamy dany problem i rozwiązujemy go tak, jak sugeruje struktura bazy danych czy stworzony już kod. Na przykład w naszej strukturze są obiekty typu “zamówienie” i każde z nich przypisane jest do jakiegoś obiektu typu “klient”. Nie da się więc stworzyć “zamówienia” bez “klienta”, ergo nie da się zamawiać bez rejestracji / logowania. Jeżeli więc w specyfikacji nie ma szczegółowych kroków składania zamówienia, nasz programista po prostu zrobi to, co mu narzuca struktura - znienawidzony przez użytkowników formularz rejestracji.

Ktoś może stwierdzić, że większość powyższych cech nie dotyczy programisty - tylko project managera. W końcu to on komunikuje się z klientem, on tworzy wraz z nim specyfikację, wreszcie on mówi grafikowi gdzie co ma się znaleźć. Ale tak naprawdę każdy dobry project manager był kiedyś programistą, tylko przeszedł na wyższy level :)

tinyMCE bug?

środa, wrzesień 12th, 2007

Okazuje się, że  kontrolka tinyMCE używana w WordPress ma błąd - jeżeli edytuję posta w Operze, długie linie tekstu są niepoprawnie łamane i cała strona się rozjeżdża. Będę musiał się w przyszłości temu przyjrzeć - jest to o tyle ważne, że chciałbym ją wykorzystać w nowszej wersji panelu administracyjnego do e4u.

EDIT: rozwiązaniem jest po prostu ściągnięcie nowszej wersji tinyMCE, w której ten problem już nie występuje. Całe szczęście, już myślałem, że specjalnie do edycji postów będę musiał używać czegoś innego niż moja ulubiona przeglądarka.