Agile Software Development
16 listopada 2007 miałem okazję wygłosić wykład na temat Agile Sofware Development. Dostępne są slajdy z wykładu.
TDD w Pythonie
Test Driven Development (TDD) jest metodą tworzenia oprogramowania, która testowanie aplikacji traktuje jako główny czynnik napędzający rozwój. Inaczej niż w metodach klasycznych, programista najpierw zajmuje się pisaniem testu sprawdzającego działanie danej funkcjonalności, a dopiero potem tą funkcjonalność koduje. Rozwiązanie to ma szereg zalet. Pisanie testu pozwala nam dokładnie sprecyzować czego oczekujemy od aplikacji. Automatyczny test jest niezastąpionym pomocnikiem w fazie implementacji, gdyż na bieżąco śledzić możemy własne postępy. Przydaje się również później, gdy dodając nową funkcjonalność chcemy być pewni, że przy okazji niczego nie psujemy. Oczywiście by metoda była skuteczna, pisanie testów powinno być możliwie szybkie i proste. By zaspokoić tę potrzebę powstało wiele różnych bibliotek i środowisk testowych, pozwalających łatwo tworzyć i uruchamiać duże zestawy testów. Są dostępne praktycznie dla każdego języka programowania i potrafią różnić się tak bardzo, jak same języki. W artykule tym przedstawię proces rozwoju prostego modułu w Pythonie. Na bibliotekę testową wybrałem doctest, jako, że jest ona według mnie najbardziej pythonowa ze wszystkich dostępnych. Charakteryzuje się szczerą prostotą i łatwością użycia, tym samym podążając za duchem języka.
Szczypta dynamiki
Od pewnego czasu pracuję nad nową wersją Canoe. Jednym z ważniejszych punktów na mojej liście rzeczy do zrobienia było napisanie zgrabnego instalatora, obsługiwanego w całości z poziomu przeglądarki. Po zaprogramowaniu mechanizmów tworzących bazę danych przyszedł czas na napisanie interface'u. Stworzenie szablonu z formularzem i wzbogacenie go o odpowiedni arkusz stylów nie było dla mnie niczym nowym. Założenia jakie przyjąłem wymagały jednak również dodania dynamiki do procesu instalacji. Jednym z pytań jakie stawia się użytkownikowi jest pytanie o rodzaj i szczegóły (takie jak login i hasło) dotyczące bazy danych. Problem jednak w tym, że różne rodzaje baz wymagają podania różnych zestawów parametrów. Nie chcąc czynić całego procesu dwustopniowym, postanowiłem włożyć odrobinę wysiłku w przygotowanie JavaScriptu zapewniającego wymaganą funkcjonalność. W tym artykule przedstawiłem proces pisania tego właśnie skryptu, linijka po linijce opisując wykorzystane konstrukcje języka. Moja uwaga skupia się również na analizie błędów typowych dla początkującego programisty JavaScriptu. Jeżeli chcesz zrozumieć podstawy tworzenia dynamicznych stron, ten artykuł jest dla Ciebie.
Prosta inicjalizacja obiektów
Python jest bardzo ekspresywny, łatwo w nim zwięźle zapisać to, co rzeczywiście ma się na myśli. Istnieje jednak jego kilka słabych punktów i jednym z nich jest inicjalizacja obiektów.
Dlaczego Python jest wyjątkowy
Kilka dni temu whytheluckystiff przedstawił swoje pomysły dotyczące sposobu prezentacji obiektów w interaktywnym interpreterze języka Ruby. Większość zmian to czysta kosmetyka, to co mnie jednak zaintrygowało, to ich implementacja. Nie potrzeba bowiem zmieniać ani jednej linijki kodu interpretera, wystarczy proste rozszerzenie definicji podstawowych klas, a wszystko w kodzie języka Ruby.
Gdyby sort zwracało self
Wprowadzenie zwracanej wartości przez list.sort()
pozwoliłoby znacznie skrócić kod. Rozważmy typowy problem: chcemy
z zadanej listy liczb uzyskać pięć najmniejszych elementów. By dokonać
tego w Pythonie, potrzebujemy trzech linijek...
Niebezpieczne wartości domyślne
Jeżeli do kontroli kodu Pythona używasz pylint możliwe, że spotkałeś się z ostrzeżeniem "Dangerous default value [] as argument" ("Niebezpieczna wartość domyślna [] dla argumentu"). Niebezpieczeństwo nie polega tu na tym, że użyta składnia może spowodować błąd interpretatora czy wystąpienie wyjątku. Niebezpieczeństwo tkwi w tym, że konstrukcja ta nie zawsze zachowuje się wedle oczekiwań programisty.
FreeBSD widziane oczami Linuksowca
Od wydania FreeBSD 6.0 minęło już trochę czasu, jednak zgodnie z powiedzeniem "lepiej późno niż wcale", zdecydowałem się dać diabełkowi szansę. Zwolniłem jedną ze swoich podstawowych partycji dyskowych i zabootowałem komputer z płytki instalacyjnej FreeBSD...
Miniporadnik
Kilka rad dotyczących Ubuntu i Firefoksa.