Archiwum

Archiwum dla ‘Projekty’ Kategoria

PHP: Własna obsługa błędów i wyjątków: psDebug

lipiec 30th, 2009

PHP, szczególnie od wersji 5 w górę jest całkiem przyjemnym językiem i swoimi możliwościami nie odstaje aż tak bardzo od C++, czy Java. Fakt, jest prostszy, ale odkąd działa w nim prawdziwa obiektówka i wyjątki, dobre programowanie stało się wygodniejsze.

Niestety, PHP nie jest pozbawione kilku niedociągnięć, czasami przeradzających się gigantyczny ból w tyłku. Jednym z nich jest niekonsekwencja zachowania funkcji na błędy. Część rzuca wyjątki, część rzuca błędy, a jeszcze inne zwracają FALSE lub NULL gdy coś nie idzie po ich myśli. Z tego powodu, sensowym wyjściem jest napisanie własnej funkcji obsługi błędów przekształcających je na wyjątki. A skoro można napisać coś takiego, to czemu od razu nie napisać własnej funkcji obsługi wyjątków i dodać kilka innych usprawnień?

Z tych powodów, bazując na klasie wfErrorHandler Grzegorza Godlewskiego, napisałem własną klasę obsługi błędów: psDebug. Jej główne cechy to:

  • wszystkie błędy są przekształcane na wyjątki w celu ich późniejszego przechwycenia
  • wyjątki które nie zostały przechwycone mogą być raportowane na następujące sposoby:
    • elegancki komunikat dla użytkownika nie zawierający szczegółów
    • pełny komunikat o błędzie razem ze ścieżką wykonania
    • przesłanie w tle komunikatu o błędzie do phHelpdesk (który kiedyś wreszcie opublikuję jako OpenSource)
  • dodatkowe funkcje wspomagające obsługę błędów

Czytaj więcej…

Paweł Projekty, Zawodowo | , , , , ,

Worklog: Encjaki

lipiec 22nd, 2009

Mam dobrą i złą wiadomość dla wszystkich, których zainteresował temat Encjaków. Po pierwsze, dobra: wróciłem do tematu i znów grzebię w kodzie. Po drugie, zła: to co wytworzyłem poprzednio średnio mi się już podoba i szykuje się małe refactoring. Innymi słowy: zamiast pisać nowe rzeczy, będę poprawiał stare…

Paweł Encjaki | , , , ,

Worklog: Encjaki

czerwiec 24th, 2009

Niestety prace nad Encjakami idą mi jak krew z nosa. W pracy zbliża się termin dużego wdrożenia nowego produktu, testy idą pełną parą i po całym dniu ‘napierdalania’ kodu nie mam po prostu sił do pracy nad własnymi projektami. Aczkolwiek, coś się dzieje. Przez ostatnie tygodnie powstał zarys silnika strony głównej i rejestracji.

O dalszych postępach będe informował jak będzie o czym informować…

Paweł Encjaki | , , , ,

Symulator ewolucji - Encjaki

czerwiec 7th, 2009

Kilka, a może kilkanaście, lat temu zafascynował mnie temat symulacji życia na komputerze. W jakiejś gazetce znalazłem opis programu symulującego rozwój populacji jednowymiarowych ‘form życia’: jak żyjątko ma w polu obok partnera, to sie rozmnaża, jak nie ma, to ginie. Pamiętam, iż nawet spróbowałem przenieść to na 2 wymiary, z możliwością poruszania się ‘żyjątek’ i tak dalej. Projekt padł i leżał.

Jakiś czas temu ponownie sięgnąłem do tematu i postanowiłem stworzyć ’symulator ewolucji’. Wiem, brzmi dumnie, choć coś w tym jest. Powoli, od pomysłu, przez próby zaczęły kształtować się Encjaki. Czym dokładnie są Encjaki trudno mi opisać w kilku zdaniach, ale spróbuję.

Jako ‘Pan i Władca’ otrzymujesz we władanie skrawek terenu podzielonego na pola. Każde pole charakteryzuje się dwoma parametrami: maksymalna ilość pożywienia (roślinności) jaka może się w nim znajdować i wartość przyrostu pożywienia (ile pożywienia przybędzie w polu po każdej turze). Swój teren możesz zasiedlić formami życia. Obecnie są to cztery gatunki:

  • Encjaki - średni roślinożerca (żywi się pożywieniem zebranym z pola w którym przebywa)
  • Ratompek - mały roślinożerca
  • Krambol - drapieżnik, żywi się Encjakami
  • Omorak - drapieżnik, żywi się Ratompkami

Podczas każdej tury (załóżmy, że dnia), każda forma życia wykonuje, lub próbuje wykonać jedną z czynności:

  • pożywić się - jeśli nie uda jej się nic zjeść, jej zdrowie spada, jeśli uda, zdrowie wzrasta
  • rozmożyć się - jeśli znajdzie drugiego osobnika swojego gatunku i oboje będą gotowe do rozrodu
  • zostać w polu w którym się znajduję
  • pójść na północ, południe, wschód lub zachód

Dwie pierwsze czynności są imperatywami i żyjątka nie mogą same decydować czy je wykonać czy nie. Pozostanie oraz przemieszczanie się to już zupełnie inna sprawa. Wszystkie żyjątka natura wyposażyła w prościutki móżdzek, a właściwie sieć neuronową reagującą na to, coś w okoł nich dzieje. Co więcej, to gracz decyduje jak żyjątka będą się zachowywać, gdyż posiada możliwość stworzenia wzrorca zachowań według którego działają żyjątka i nauczenia mózgów podejmowania decyzji.

Jakby tego było mało, żyjątka uczą się podczas swojego krótkiego życia. Jeśli podejmą jakąś decyzję, w następnej rundzie ta decyzja zostanie zweryfikowana. Podczas rozmanażania, potomki dziedziczą cechy po swoich rodzicach oraz mutują. W efekcie, kolejne generacje form życia różnią się od swoich poprzedników. Jeśli nowa cecha okaże się korzystna dla populacji, istenieje szansa, że zostanie utrwalowa w kolejnych pokoleniach. Jeśli nie, zaginie, lub populacja wpadnie w ślepą ścieżkę ewolucji i w efekcie wymrze.

Na dzień dziesiejszy gotowy jest engine Encjaków, to znaczy wszystkie funkcje związane z życiem opisanych gatunków. Trwają prace na interfejsem zarządzania populacją i funkcjami statystycznymi. Pozwolę sobie jeszcze nie pokazać screenów, gdyż jest na to zbyt wcześnie i nie chcę straszyć potencjalnych użytkowników. O postępach będe informował.

Paweł Encjaki | , , , ,

DIY - uchwyt do blendy

listopad 11th, 2008

Blenda dobra rzecz, blenda ma wadę: do blendy potrzeba asystenta lub statywu z odpowiednim uchwytem. Asystent czasami jest, czasami nie ma i nie ma kogo zaprosić do roli “oświetlacza”. Statyw oświetleniowy jakimś gigantycznym wydatkiem nie jest, ale specjalny uchwyt do blendy to wydatek już około 100zł. Jak dla mnie, zdecydowanie za dużo jak za kawałek rurki z dwoma klamerkami.

Podczas zakupów w jednym z marketów (nazwy nie wymienię, nie będę robił reklamy) natknąłem się na klamerki/klipsy do zamykania otwartych torebek (na przykład po czipsach). Lewy neuron pogadał chwilę z prawym neuronem i powstał prosty plan: z dwóch klamerek, drewnianej listwy, kilku wkrętów i taśmy izolacyjnej też da się zbudować uchwyt do blendy.

Sposób wykonania jest banalnie prosty:

  1. listwę przycinamy do długości większej o kilka centymetrów od średnicy blendy. Te dodatkowe centymetry posłużą do zamocowania klipsów
  2. dwa klipsy przykręcamy do listwy za pomocą wkrętów. Warto dać podkładki aby nie uszkodzić klipsów. Odległość pomiędzy klipsami powinna być taka, aby swobodnie można było przypiąć do nich blendę
  3. w moim uchwycie zdecydowałem się na mocowanie na uchwycie do parasolek, co znacznie uprościło konstrukcję: do mocowania wystarcza duży wkręt po środku listwy owinięty taśmą izolacyjną w celu zwiększenia jego średnicy ( i po części bezpieczeństwa)

I to tyle. Efekt końcowy wygląda tak:

Paweł Fotografia, Projekty, Wujek Dobra Rada | , , , ,

Nieustający Test Akumulatorów #3

lipiec 16th, 2008

Zgodnie z zapowiedzią, postanowiłem zmierzyć stopień samorozładowania ogniw Energizer 2500mAh (tak naprawdę ogniwa są Sanyo, a Energizer je tylko oznaczył swoim logo). Anyway, wyniki są raczej kiepskie, choć i tak lepsze niż myślałem.

  • 4 dni
    • pojemność nominalna: 2500mAh
    • pojemność rzeczywista: 2310mAh
    • pojemność zmierzona: 2120mAh
  • 7 dni
    • pojemność nominalna: 2500mAh
    • pojemność rzeczywista: 2300mAh
    • pojemność zmierzona: 2030mAh
  • 14 dni
    • pojemność nominalna: 2500mAh
    • pojemność rzeczywista: 2270mAh
    • pojemność zmierzona: 1650mAh
  • 21 dni
    • pojemność nominalna: 2500mAh
    • pojemność rzeczywista: 2290mAh
    • pojemność zmierzona: 1120mAh
  • 28 dni
    • pojemność nominalna: 2500mAh
    • pojemność rzeczywista: 2300mAh
    • pojemność zmierzona: 450mAh

Na sam koniec naładowałem 4 ogniwa do pełna i odłożyłem na 6 tygodni. Dopiero ten test obnażył słabość ogniw. Z 4 ogniw tylko 2 miały w sobie trochę energii (około 200mAh). Pozostałe dwa były martwe. Wniosek: nie kupować ogniw 2500mAh produkcji Sanyo, nie ważne, czy sprzedawane jako Sanyo, czy Energizer, czy pod jeszcze inną marką.

Paweł Ciekawostki, Projekty, Wujek Dobra Rada | , , , ,

Nieustający Test Akumulatorów #2

maj 11th, 2008

Pora na drugą część Nieustającego Testu Akumulatorów. Tym razem na dywanik poszły dwa typy ogniw:

  • Ni-Cd Forever 800mAh AA, rok produkcji 2005, 10 sztuk. Firma Forever chyba nigdy nie słynęła z produkcji najlepszych ogniw, jednak te ogniwa pozytywnie mnie zaskoczyły. Przez 3 lata mądrego użytkowania (czyli staranie się o pełne rozładowanie ogniw) nie padło ani jedno ogniwo. Zmierzona pojemność waha się od 620mAh (1 ogniwo) do 810mAh (3 ogniwa) ze średnią 745mAh i medianą 765mAh. Moja opinia: porządne aku, niska pojemność, ale w miarę prawdziwa. Do tego niskie samorozładowanie
  • Ni-Mh Energizer 2500mAh, AA, rok produkcji 2006, 4 sztuki. Po dwóch latach sporadycznego użytkownia pojemność ogniw waha się od 2270 do 2310mAh. Mogłoby się wydawać, że firma taka jak Energizer nie powinna wypuścić bubla. Niestety tak się nie stało. Co prawda spadek pojemności nie jest aż tak straszny, ale samorozładowanie jest tragicznie wielkie. Dokładnych pomiarów jeszcze nie mam, ale wrażenie jest takie, że po tygodniu w ogniwach zostaje około 50% pojemności. W chwili obecnej ogniwa są uformowane, naładowane i czekają do środy na test spadku po tygodniu od naładowania.

Paweł Projekty, Wujek Dobra Rada | , ,

DuoLenso: sample rework

kwiecień 29th, 2008

Nawiązując do poprzedniego wpisu o Duolenso: może jednak coś z tego nieszczęsnego obiektywu będzie: obiektyw do zadań specjalnych, czyli symulacji bardzo starych zdjęć. Pobawiłem się trochę kontrastem na jednym z sampli i innymi filtrami. A oto co wyszło:

DuoLenso Sample 1 Rework 1
DuoLenso Sample 1 Rework 2
DuoLenso Sample 1 Rework 3

I teraz szybka ankieta: Która wersja jest najlepsza, najmniej razi oczy?

Z DuoLenso zdjęcia najlepiej wychodzą w

Pokaż wyniki

Loading ... Loading ...

Paweł DuoLenso, Fotografia, Wujek Dobra Rada | , , , ,

Switch to our mobile site