Archive | Projekty RSS for this section

Pomówmy o prototypowaniu

Pracując jako programista nie raz, nie dwa musiałem się zmierzyć z tym co klient ma na myśli. Niestety specyfikacja nie oddaje tego jak w rzeczywistości dane funkcjonalności mają się prezentować. Sprawia to sporo problemów. Przede wszystkim konieczność wprowadzania masy poprawek z tego względu, że wyobrażenie klienta było zupełnie inne od wizji programisty.

Jest pewna metoda, która może skutecznie pomóc w poprawieniu tworzenia aplikacji oraz uniknąć wprowadzania zbędnych (a czasami czasochłonnych) poprawek. Ów metoda to, wspomniane w tytule, prototypowanie.

Prototypy pozwalają urzeczywistnić wizję tego jak poszczególne funkcjonalności, a zarazem cała aplikacja mają wyglądać. Pozwalają klientowi w początkowej fazie na ustawienie wszystkiego zgodnie z tym jak chce, a w późniejszych etapach ułatwiają stworzenie serwisu.

Miałem okazję tworzyć serwis zgodnie z wytycznymi dostarczonymi w prototypie. Muszę przyznać, że dostarczony prototyp okazał się niesamowicie pomocny i zdecydowanie przyspieszył stworzenie aplikacji z bardzo prostego powodu – uniknięcia zbędnych pytań oraz tworzenia kolejnych poprawek.

Skoro prototypy są przydatne to jakie są sposoby na ich tworzenie ? Otóż metod jest kilka, każda różni się diametralnie od innej. Każda ma jakieś zalety, ale również wady, którym postaramy się przyjrzeć.

PowerPoint – wykorzystanie prezentacji

Jest to sposób, który był również wykorzystywany w mojej firmie. Polega on na tym, że szkielet serwisu jest tworzony w aplikacji do tworzenia prezentacji. Trzeba przyznać, że dziwne zastosowanie, ale skuteczne. Okazuje się, że sporo osób do prototypowania wykorzystuje tą metodę.

Można się domyślić jak może wyglądać proces tworzenia prototypu w takiej aplikacji. Mimo swojej pozornej prostoty i łatwości taka metoda ma sporą wadę – za każdym razem trzeba wysyłać wynikowy plik do klienta, żeby mógł sobie obejrzeć całość. Co więcej, jeśli na prototyp trzeba nanieść poprawki to cały cykl trzeba powtórzyć.

Kartka – the traditional way

Sposób, który IMHO jest najzabawniejszy. Cały prototyp jest szkicowany na kartce (kartkach) papieru. Nie wiem czy muszę tłumaczyć jak ten sposób wydaje się być śmieszny z wielu względów. Najdrobniejszy błąd w prototypie wymaga stworzenia go od nowa. Poza tym problemem jest przesłanie takiego prototypu do klienta.

Co ciekawe znana firma Corel swego czasu tworzyła prototypy na papierze, które później były wykorzystywane do testów usability. Na YouTube można znaleźć film prezentujący taki test. Myślę, że po obejrzeniu tego filmu nie będzie trzeba wymieniać wad.

JustProto.com – nowe podejście do prototypowania!

Jestem dumny z tego, że mogę przedstawić na moim blogu produkt, w którego tworzeniu również miałem okazję uczestniczyć. Mowa o JustProto, serwisie umożliwiającym tworzenie prototypów online.

Jakie są zalety naszego rozwiązania? Przede wszystkim jest to prostota. Wszystko staraliśmy się zrobić prosto ze względu na to, że nie chcemy uczyć użytkowników obsługi naszej aplikacji. Wszystko ma być intuicyjne dzięki czemu nie będziecie tracili czasu na poznawanie nowego środowiska.

Co więcej? Prototypy tworzone w JustProto są interaktywne. Oznacza to, że można stworzyć dynamiczny prototyp z odnośnikami prowadzącymi na kolejne podstrony.

Ze względu na to, że wszystko jest online prototyp jest dostępny z każdego miejsca, bez konieczności instalowania dodatkowych aplikacji.

Jedną z najważniejszych zalet jest generowanie wersji online prototypu, dzięki czemu wystarczy klientowi dostarczyć odpowiedni link a ten będzie mógł na bieżąco oglądać zmiany robione w prototypie – wystarczy F5 :)

Opinie innych użytkowników nt. JustProto

Zaproszenia

JustProto pozwala na skorzystanie z darmowej 30 dniowej wersji trial. Jednakże jeśli wydaje się to dla Ciebie za mało to wystarczy się zgłosić do mnie po kupon z promocyjnym kodem, który wydłuża wersję testową do 60 dni.

Jeśli jesteś zainteresowany tworzeniem prototypów to serdecznie zapraszam :)

Python ShoutPlayer ver 0.0.1 pre-alpha

W ramach poznawania nauki Pythona postanowiłem zrobić bajer zaczerpnięty z mojej pracy. Właściwie żadna rewelacja, ot zwykłe odtwarzanie strumienia audio (z tzw. Shoutcastów), które co 30 minut zmienia strumień odtwarzania.

Już wcześniej wspominałem o tym, że mam problemy z zaciągnięciem jakiejś fajnej biblioteki, która może bezproblemowo odtwarzać dźwięk. Męczyłem się chwilę z PyMedia, ale tak szczerze mówiąc to program był jedną wielką rosyjską ruletką. Albo nie chciał się połączyć, albo to losowanie feedów i późniejsze ich odpalanie totalnie nawalało. Zdarzało się też tak, że wylosowany feed odtwarzał się dopiero po kolejnym losowaniu.. Niestety błedu nie znalazłem, dlatego na chwilę obecną postanowiłem zrobić małą prowizorkę.

Obecna wersja ma zaimplementowaną klasę, która pobiera listę serwerów (póki co tylko pliki z rozszerzeniem “pls”, najlepiej dociągać z shoutcast.com), pobiera plik listy i kopiuje wszystkie adresy serwerów. Później następuje losowanie jednego adresu i przekazanie go jako parametru do programu “mpg123″. Niestety na chwilę obecną to jest jedyna implementacja dźwięku jaka dość bezboleśnie przeszła. Niestety kurs obsługi GStreamera w Pythonie spalił w przedbiegach – okazuje się, że wtyczka za bardzo nie rozpoznaje parametru “alsasink”. Trudno, później zagłębię się w tym.

Jak się łatwo domyśleć, będzie nam potrzebny program “mpg123″ i chyba tylko tyle. Nie jestem pewien co do rozszerzeń samego Pythona. Aplikacja odtwarzająca dźwięk jest pakowana w tło, a jej PID jest zapisywany do pliku. Gdy nastąpi czas zmiany URLa program zostaje zabity, a po wylosowaniu kolejnego feed’u ponownie odpalony. Póki co czas zmiany serwerów to 5 minut (można to zmienić w pliku play.py). Lista serwerów znajduje się w pliku “stations_list”. Przy okazji można zobaczyć jak mniej więcej to powinno wyglądać.

Jeżeli jesteś zainteresowany tym programem to możesz go pobrać stąd – http://www.box.net/shared/kt5mqst4ws

Bez bicia przyznam się, że całość pisałem tak właściwie na łysą pałę. Generalnie kurs Pythona przerobiłem jakiś rok temu, od tamtego czasu w ogóle nie ruszałem tego języka. Stąd też moja prośba – jeśli popełniłem jakieś rażące błędy to proszę dajcie znać. Przyda mi się też jakiś link do fajnego tutoriala o obsłudze dźwięku w pythonie (nie chcę całości uzależniać od mpg123).

Ps. radzę zmniejszyć głośność, bo może “huknąć”. Niestety póki co nie ma żadnej regulacji głośności. Chcę jedynie wiedzieć, czy ma sens dalsza próba rozwinięcia tego małego projektu.

Dokończysz… ?

Dokończ historię

Jeszcze gdy byłem gówniarzem na moich korkach z angielskiego bawiliśmy się w pewną fajną gierkę. Niektórzy pewnie ją znają (ja niestety nazwy nie pamiętam…), inni pewnie nie, więc postaram się bardzo krótko przedstawić o co chodziło.

Otóż wymyślaliśmy sobie jakiś temat, a potem na zmianę zapisywaliśmy na kartce swoją część (zazwyczaj dwa-trzy zdania max) opowiadania na w/w temat. Po zapisaniu swojego zdania zaginaliśmy kartkę tak, aby druga osoba nie widziała co było napisane.

Gdy kartka nam się kończyła rozwijaliśmy ją i czytaliśmy to co tam było napisane. Często okazywało się, że efekt był wyjątkowo zabawny i cała historia wbrew pozorom zachowywała spójność.

Taka zabawa bywała na różnych forach, lecz była bezsensu (wiadomo – było widać to co inni napisali). Z tego powodu to raczej było mało ciekawe… Ja, w ramach testowania pewnego skryptu, zrobiłem stronkę (skrypt?), który ponownie wykorzystuje ten pomysł z tą różnicą, że pokazanie wszystkich fragmentów nastąpi mniej więcej za tydzień, czyli 26-01-2008. Dodatkowo widać jest ostatnio dodany fragment, tak żeby cała opowieść była w miarę spójna.

Jeśli coś takiego Ciebie interesuje to zapraszam na radmen.dharkness.info (przy okazji sprawdzę ten hosting ;p).

Jednocześnie proszę o:

  • nie spamowanie
  • brak wulgaryzmów (albo ich maksymalna redukcja)

Jeśli pomysł przejdzie, to nie wykluczone, że zrobię z tym coś więcej.. :)

Ach, ewentualne rady/sugestie/błędy/bluzgi zgłaszać tutaj :)

dluznicy.net – start!

Póki co witryna dluznicy.net może wyglądać nieco skromnie… Tak jak pisałem wcześniej, celem tej strony jest poinformowanie ludzi o tym, że istnieje ustawa, która może pomóc dłużnikom…

Myślę, że witrynę można uznać za otwartą. Wszelkie sugestie będą mile widziane.

Nowy, poprawiony Edie

Edie przeszedł kolejną fazę ewolucji. Tym razem jest bogatszy o kilka nowych funkcji.

Przypominam, że Edie jest jabberowym chat botem. Wystarczy, że się do niego zalogujesz i możesz rozmawiać z innymi zalogowanymi. Można powiedzieć, że to jest taka konferencja jabberowa, tylko że nie musimy się martwić tym czy posiadamy obsługę konferencji jabberowych.
Jak masz ochotę pogadać to tutaj masz JID’a Ediego: [email protected]


Co nowego?

- automatyczny status away i idle. Jeśli nie będziesz nic pisać przez 5 minut to masz status “away”, a jeśli przez 15 to masz status “idle”
- Przy wpisaniu “/topic” bot pokazuje topic, a nie kasuje go. Teraz za kasowanie topicu służy polecenie “/topic clear”
- Po wyłączeniu bota następuje zapisanie listy zalogowanych userów, a po jego włączeniu, automatyczne ich zalogowanie
- poprawiono kilka RegExpów

Do poprawki

- koniecznie trzeba zrobić update help’a
- póki co czas nieaktywności jest nieco źle przeliczany (a właściwie wyświetlany)

Kodziwo

Kod Ediego można pobrać stąd. Tak jak wcześniej Edie jest na licencji GPL.

Edie nareszczie wolny

Tak jak wcześniej obiecałem daję linka do kodu źródłowego Jabberowego Chat bota – Ediego.

Skrypt najlepiej odpalić spod konsoli. Zanim jednak to zrobisz zobacz plik demo.php i zmień parę ustawień (JID i hasło), aby potem wszystko działało ok.

Źródła znajdują się tutaj. Tak jak obiecałem wszystko na licencji GPL

Jakby co pamiętajcie, że Edie jest rozszerzeniem klasy Jabber, także mamy dostęp do metod i zmiennych tejże klasy.
Jeśli masz jakieś propozycje, chcesz coś dodać do Ediego to napisz tutaj (w komentarzu) albo na mojego maila (którego na pewno gdzieś znajdziesz). Zależy mi głównie na tym, aby Edie szybko reagował na odebrane wiadomości oraz żeby nie pochłaniał zbyt dużo zasobów (także nie ma sensu tworzenia metod (ani zmiennych), które będą zabierały sporo miejsca w pamięci). Rozważam późniejsze użycie bazy MySQL, ale to jeszcze jest tylko myśl.

Dla zainteresowanych przypominam, że Edie cały czas jest online. Znajdziesz go pod tym JIDem: [email protected]

Edie – jabberowy chatbot

Może jeszcze niektórzy pamiętają notkę o Edie’m. Postanowiłem nieco zabrać się za ten skrypt i są jakieś efekty.

Edie obsługuje parę komend. W tym ustawianie Topicu, zmiana statusu dla Bota i parę innych rzeczy. Aby dowiedzieć się o reszcie możliwości zaloguj się do Ediego i wpisz /help lub |help (niektóre komunikatory nie akceptują komend w stylu IRCa).

Bot pobiera troszkę RAMu (ok. 0.9% :P ), ale zoptymalizowałem go do tego stopnia, że reaguje o wiele szybciej niż wcześniej. Aktualnie jedynym poważnym problemem jest to, że bot nagle staje się niedostępny. Skrypt cały czas działa, ale bot się rozłącza. Jeszcze nie wiem co jest przyczyną, ale mam nadzieję, że logi, które się zapisują wyjaśnią całą sytuację.

To do:

  • Znalezienie i poprawienie bug’a
  • Wprowadzenie dla użytkownika statusu idle. Kiedy będzie ustawiony nie będą przesyłane do tej osoby żadne wiadomości.
  • Wyświetlanie fortunek
  • Formatowanie przesyłanego przez bota tekstu (niestety nie każdy klient będzie wstanie obsłużyć dodatkowe dane jak np. pogrubienie tekstu)

Jakby były jakieś pomysły to piszcie. Chętnie rozbuduję bota o jakieś nowe ficzery. Nie chcę natomiast aby bot prowadził logi z rozmów. To ma być chat, a nie archiwum ;-)

Edie jest cały czas online (tzn, dopóki coś się znowu nie posypie). Jeśli chcesz sobie z nim pogadać to wbijaj się pod tego JIDa: [email protected]. Skrypt znajduje się na shellu, którego mam dzięki uprzejmości narpa.

Robię sobie jakiś czas przerwy od Ediego. Dzisiaj idę szybciej spać i nie zamierzam do końca dnia zaglądać do kodu. Wszelkie zmiany będę wprowadzać dopiero jutro. A w weekend ruszą ponownie prace nad serwisem dluznicy.net. Otrzymałem już część materiałów, teraz muszę je podczepić pod szablon ;-)

Joggerowy chat – propozycja

Już od pewnego czasu przewija się ten problem. Ponoć już są prace nad tym wynalazkiem.
Ja wymyśliłem coś w rodzaju “alternatywy”. Nieoficjalny chat, który został stworzony, mija się z celem…

Jak wszyscy wiemy Jogger jest piękny głównie ze względu na to jak sprawnie jego bot wykorzystuje jabbera do różnych powiadomień. Idąc tym tropem pomyślałem sobie “czemu do tego chata nie wykorzystać jabbera?”.
Można korzystać z opcji konferencji, ale nie każdy klient (a czasami nawet serwer) nie ma takowej opcji także ta opcja już odpada. Ale gdyby zrobić to jakoś inaczej… I tutaj zaczyna się mój pomysł.

Jeśli chcesz dołączyć się do joggerowego chata to po prostu rozpoczynasz rozmowę z pojedynczym JID’em – specjalnym botem. Logujesz się i normalnie “piszesz” z tym botem. Jeśli są zalogowani inni użytkownicy to oni otrzymają tą wiadomość i będą mogli na nią odpowiedzieć. Co Wy na coś takiego?

I teraz może Was zaskoczę. Przy rytmach muzyki z Jamendo skleciłem już skrypt w PHP, który mógłby być takim pierwowzorem tego chata. Jeśli jesteś zainteresowany to oto lista kroków jakie musisz wykonać:
1. rozpocznij rozmowę z [email protected]
2. wpisz /join

Ot wszystko! Cała filozofia. Możesz jeszcze posłużyć się poleceniem /n aby zobaczyć kto już się zalogował.
Pamiętaj, że jeśli postanowisz skończyć rozmowę to wpisz koniecznie /quit bo inaczej nadal będziesz otrzymywać wiadomości.

Jeśli chcesz to możesz wysłać Ediemu prośbę o autoryzację, będziesz wtedy wiedzieć kiedy jest online (czyli kiedy może toczyć się jakaś dyskuja), on Ci jej na pewno udzieli :)

UWAGA! Edi aktualnie jest online, skrypt jest odpalony na moim localu, ale myślę, że parametry mojego łącza pozwolą na w miarę normalną rozmowę. Przez jakiś czas mój komputer będzie jeszcze włączony także jak chcesz to możesz sobie sprawdzić/ocenić/wyrazić opinię o takiej formie chata dla Joggera :)

UPDATE
Jiobel zasugerował, że chat jednak mógłby się opierać na konferencji jabberowej. Ci, którzy by nie mogli z takowej korzystać wchodzili by na jakąś wersję WWW tej konferencji, która byłaby połączona z konferencją jabberową poprzez jakiegoś bota, co by w obie strony przesyłał dane.

Tak właściwie to i tak pozostaje nam czekać na to co Sparrow wymyśli (no chyba, że chata robi Riddle).

UPDATE2 D4rky postanowił pomóc i zobowiązał się do zoptymalizowania kodu PHP ;-]

K4tia

Słowem wstępu – czym jest K4tia?

K4tia póki co jest prostym systemem zapisywania oraz przeglądania logów ze stron www.
Póki co możliwości są raczej niewielkie, ale zamierzam w przyszłości nieco rozbudować ten projekt.
K4tia została napisana pod PHP5, oraz bazę MySQL.


Sposób użycia

Na stronie, na której mają być zapisywane logi, należy dopisać ten fragment:

<?php
include(“k4tia/k4tia.php”);
$K4tia->save();
?>

Oczywiście ważne jest aby wpisać poprawną ścieżkę w include(). Cały silnik K4tia znajduje się w katalogu k4tia.
Po zainkludowaniu k4tia/k4tia.php od razu zostaje stworzny obiekt $K4tia.

Instalacja

Jedyną czynnością, którą należy wykonać to poprawne skonfigurowanie pliku config.php oraz wgranie bazy SQL znajdującej się w pliku k4tia.sql.

Możliwości

Aktualna wersja K4tia zapisuje jedynie podstawowe informacje:

  • IP klienta (stara się obejść proxy)
  • Nazwa hosta
  • Dokładna data dodania loga
  • Wpisany URL
  • Nagłówek jaki wysyła przeglądarka
  • Wszystkie zmienne $_GET jakie zostały przesłane
  • Wszystkie zmienne $_POST jakie zostały przesłane

W panelu administratora (“k4tia/admin”) jest przeglądarka logów. Można przejrzeć logi z całego dnia, z określonego przedziału dni oraz z określonego przedziału godzin.
Po wylistowaniu wszystkich logów, można wyświetlić szczegóły pojedynczego wpisu.

K4tia posiada prosty system szablonów, które są przeznaczone do wyświetalnia wyników z panelu administratora.

Plany na przyszłość

  • Możliwość wykrywania próby włamu na stronę, oraz dodanie odpowiedniego wpisu
  • Poszerzenie możliwości przeglądarki logów o wzbogacenie kryteriów przeszukiwania
  • Dopisanie klas do obsługi innych baz danych SQL

Authenticate.class.php

To jest jedyny plik, który w całości nie jest mojego autorstwa. Jego autorem jest stormfly. Wielkie dzięki za to, że pozwoliłeś mi skopiować Twój skrypt, bardzo się przydał.

Footer

To jest mój pierwszy tego typu projekt. Szczerze mówiąc nie wiem czy jest sens jego rozwijania, ale mam nadzieję, że później komuś się przyda.

Jeśli chciałbyś pomóc, a ta pomoc by się przydała, to proszę o kontakt.
Wszelkie sugestie/rady/bluzgi/etc proszę kierować na maila ([email protected]) lub na JID’a ([email protected]/[email protected])

K4tia w wersji 0.0.1 zostaje uznana za wydaną!
(plik z projektem można pobrać stąd.)