Poziom: 0 | Kategoria: Komputerowo-internetowo, Python, Studia, Techblog. | 14 komentarzy
Można powiedzieć, że dzisiaj światło dzienne ujrzała wersja 0.2 pygglib — biblioteki do obsługi protokołu Gadu-Gadu napisanej w pythonie. Wersja ta implementuje już większą część protokołu opisanego na stronach EKG.
Przy okazji pisania testów i implementacji okazało się, że panowie z Gadu-Gadu znowu mieszają coś w protokole, poza tym opis na stronach EKG jest już trochę nieaktualny (szczegóły zostały wysłane na listę dyskusyjną ekg-devel). W każdym razie dzisiaj miała miejsce prezentacja projektu na zajęciach i muszę przyznać, że większość prac, która została przewidziana, została zaimplementowana. Niestety zabrakło czasu na obsługę bezpośrednich połączeń oraz takich rzeczy jak połączenia konferencyjne, czy rozmowy głosowe, jednak jestem zadowolony z tego, co zostało napisane.
Przy okazji muszę ponarzekać na pythona... Przyzwyczajony byłem do tej pory do składni języka Ruby i trochę trudno było mi się przestawić na wcięcia i dwukropki. Poza tym podobno python jest językiem obiektowym, więc tym bardziej denerwowało mnie na przykład to, że lista nie ma metody "len" bądź "length", tylko jej długość możemy sprawdzić funkcją len(lista), co już, według mnie, za bardzo obiektowe nie jest.
Na osobną notkę zasługuje również coś, co według mnie powinno zostać naprawione wieki temu — w pythonie nie da się (pod Windowsem i w sposób najbardziej naturalny) przechwytywać sygnału SIGINT po wciśnięciu Ctrl+C (czyli wyjątku KeyboardInterrupt) w programach wielowątkowych! Jest to absolutna kompromitacja. W programie demonstrującym działanie pygglib chciałem stworzyć proste echo, które byłoby wyłączane przez wciśnięcie Ctrl+C, jednak, ponieważ biblioteka korzysta z listenera i obsługuje zdarzenia, przez co jest wielowątkowa, stało się to niemożliwe. Pod linuxem można ten błąd w dosyć prosty sposób ominąć poprzez zastosowanie os.fork(), jednak pod Windowsem takiej opcji nie ma.
To tyle narzekania na Pythona. Zainteresowanych zapraszam do pobrania źródeł biblioteki oraz testowania. Ewentualnie błędy i sugestie proszę zgłaszać na Trac projektu.
EDIT: Wypuściliśmy wersję 0.2.1, w której poprawiony został odczyt wiadomości wysyłanych z niektórych wersji Gadu-Gadu, na końcu których występowały czasem śmieci. Link do źródeł został zaktualizowany.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Przemyślenia, Ruby on Rails, Studia. | 1 komentarz
W zasadzie skończyłem projekt z baz danych. W aktualnej wersji zadania wysłane przez użytkowników są sprawdzane przez sędziów, jednak cały czas chodzi mi po głowie napisanie automatycznej sprawdzaczki. Problem w tym, że — niestety — nie wiem jak zablokować możliwość otwierania nowych plików i tworzenia nowych wątków lub procesów przez sprawdzany przez sprawdzaczkę program. Próbowałem bawić się ulimitem, którym ustawiam limity czasowe i pamięciowe, ale nie do końca wiem, czy tędy droga. Ustawienie ulimit -n 1 nie działa, podobnie ulimit -u 1.
Jeżeli ktoś z czytających ma jakąś koncepcję — będę wdzięczny za pomoc!
Poziom: 0 | Kategoria: Komputerowo-internetowo, Ruby on Rails, Studia, Web Design. | 4 komentarze
Zacząłem wreszcie pisać projekt na bazy danych. Z każdą linią kodu utwierdzam się w przekonaniu, że Ruby on Rails to świetne środowisko do przyjemnego pisania aplikacji. Wychwalać też będę doskonałe NetBeansy w wersji 6, bez których pisało by się kilka razy wolniej.
W tej chwili mam już prostą autoryzację użytkowników opartą na trzech kategoriach – zwykłych użytkowników, którzy będą mogli nadsyłać rozwiązania, sędziów, którzy te rozwiązania sprawdzą i ocenią (zrezygnowałem na razie z pisania sprawdzaczki) oraz administratorów, którzy mogą dodawać zadania, konkursy, itp. Skończyłem też administrację konkursami – można dodawać/edytować/usuwać konkursy oraz wgrywać pliki z zadaniami. Proste forum w zasadzie też mam już skończone, muszę je tylko zintegrować.
Przede mną chyba najgorsza część, czyli implementacja wysyłania rozwiązań, oceniania ich przez sędziów oraz wyświetlanie jakiś rankingów. Myślę też nad prezentacją statystyk w formie wykresów.
Oczywiście nie obyło się bez problemów – nie mam pojęcia dlaczego giną mi parametry przesyłane z formularza do dodawania nowych zadań i muszę szpecić definicję metody kontrolera dodatkowymi liniami kodu, które uzupełnią brakujące pola. Wygląda to mniej więcej tak:
def create
if request.post?
@problem = Problem.new(params[:problem])
@problem.name = params[:problem][:name]
@problem.short_name = params[:problem][:short_name]
@problem.contest_id = params[:problem][:contest_id]
if @problem.save
flash[:notice] = 'Zadanie zostało dodane.'
redirect_to :action => 'list'
else
redirect_to :action => 'new'
end
end
end
Szkoda tylko, że nie wiem, ile mam czasu, bo nigdzie nie podano terminu oddania pierwszej części projektu...
Poziom: 0 | Kategoria: Komputerowo-internetowo, Studia. | Dodaj komentarz
Projekt z programowania obiektowego będzie jednak interpreterem języka Żółw. Ma to, oczywiście, swoje plusy – w zasadzie już go skończyłem, przechodzi już wszystkie przygotowane testy. Trzeba będzie tylko dopieścić dokumentację, która wygenerowana została już przy pomocy programu NDoc. Dzięki temu zostaje mi więcej czasu na bazy danych...
Swoją drogą Visual Studio potrafi rysować całkiem fajne diagramy klas.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Studia. | 2 komentarze
Zbliża się czas zaproponowania tematu projektu w Programowania obiektowego. Myślałem, że nie będzie to żaden problem dla mnie. Jednak ponieważ ostateczny termin oddania gotowego projektu ustalony został na 21 czerwca, wydaje mi się, że mogę nie zdążyć, tym bardziej, że muszę zrobić jeszcze drugi projekt.
Projekt, który chciałem realizować, to katalog multimediów, a w zasadzie katalog plików mp3 rozsianych po różnych nośnikach CD/DVD. Program miał mieć ładny, funkcjonalny GUI oraz miał obsługiwać tagi ID3. Zacząłem nawet projektować klasy i właśnie na tym poziomie zrozumiałem, że może być ciężko z realizacją wszystkiego w miesiąc, a nie chcę za bardzo zawężać funkcjonalności projektu.
Wróciłem więc do punktu wyjścia i muszę znowu myśleć nad tematem. Przez chwilę myślałem o interpreterze języka Żółw, którego pisałem w zeszłym roku w C. Wystarczyłoby więc przepisać go na C# i projekt gotowy. Nie wiem tylko, czy taki temat zostanie zaakceptowany.
A może Ty masz jakieś propozycje?
Poziom: 0 | Kategoria: Komputerowo-internetowo, Studia. | Dodaj komentarz
"Obsługa konkursów informatycznych - baza z rankingami, uczestnikami i ich wynikami, kodem rozwiązań, proste forum" – taki temat projektu z baz danych został wybrany w mojej grupie. Powiem tylko, że ja na niego nie głosowałem. Jednak projekt zrobić trzeba, czasu w sumie niewiele, więc zabieram się do roboty. W tej chwili jestem na etapie projektowania modelu konceptualnego, więc jakby ktoś miał jakieś uwagi, to niech da znać.
Jak już zrobię model konceptualny i logiczny, trzeba będzie zrobić przykładową aplikację, korzystającą z tej bazy. Prawdopodobnie napiszę ją w Ruby on Rails.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Przemyślenia, Studia, Z życia. | Dodaj komentarz
Po tygodniowym wycofaniu się z życia spowodowanego zapaleniem zatok przynosowych wracam do świata. Jak zwykle mało czasu, a dużo do zrobienia -- w tym tygodniu przede mną dwa kolokwia, co prawda jedno z nich -- Algorytmy i Struktury Danych -- mogę sobie darować, jednak Prawo w działalności informatycznej mam zamiar zaliczyć. Przynajmniej na 4.0. Poza tym muszę jeszcze trochę powalczyć o lepsze oceny.
W moje ręce wpadło wreszcie Programowanie w języku Ruby. Muszę przyznać, że póki co samo wydanie książki mile mnie zaskoczyło. Jak na razie nie zauważyłem w niej błędów, mam nadzieję, że pozostanie tak do końca. Teraz przede mną nauka i tworzenie w nowym języku, co zaowocuje może jakimś projektem z Programowania obiektowego, jeżeli zdecyduje się na ten przedmiot.
Przy okazji zakupów zauważyłem, że Helion wziął się poważnie za tłumaczenie książek Pragmatycznych Programistów. To dobrze, w końcu wydają oni naprawdę wartościowe pozycje. W lutym wydane mają zostać Przepisy w Ruby on Rails, czyli Rails recipies. Tylko czekać, aż Helion wyda najlepszą książkę techniczną ubiegłego roku, którą mam zamiar wkrótce nabyć.
Poziom: 0 | Kategoria: Przemyślenia, Studia, Z życia. | Dodaj komentarz
W zasadzie wszystkie przedmioty mam już zaliczone, kończą się wszelkiego rodzaju sprawdziany i kolokwia. Znaczy to mniej więcej tyle, że coraz większymi krokami zbliża się sesja. A wraz z nią skończy się najbardziej leniwy semestr, jaki do tej pory miałem. Zaledwie cztery przedmioty, z czego tak naprawdę tylko dwa, które wymagać będą pracy przed sesją rozleniwiły mnie trochę. Do tego długie weekendy, trwające od czwartku po południu do wtorku z rana... Ach, w przyszłym semestrze już takich luzów nie będzie. Jeśli wszystko pójdzie po mojej myśli, czyli jeśli zdam wszystkie egzaminy w pierwszym terminie, to ukoronowaniem lenistwa będzie wypad na narty. Pod warunkiem, że spadnie śnieg.
W systemie zapisów odbywa się indykacja, czyli wstępne zapisy na przedmioty w celu zminimalizowania liczby kolizji przy układaniu planu zajęć. Dobrze, że przy okazji zajrzałem do zaktualizowanych danych dot. dotychczasowego przebiegu studiów. Zauważyłem, że w rubryce: punkty zarejestrowane w systemie mam o 7 punktów ECTS za mało. Toż to cały przedmiot! Dzisiaj idę to wyjaśniać do Dziekanatu, przy okazji pytając jak to się stało, że wpisano mi zaliczenie warunkowe pomimo zaliczenia wszystkiego, co było trzeba zaliczyć.
Niedługo sesja, co już pisałem. Jednak po niej przyjdzie znowu semestr, który, mam nadzieję, przyniesie mi dużo pozytywnych nowości. Przede wszystkim kończą mi się obowiązki -- pozostaje tylko Matematyka dyskretna, więc będę mógł skupić się na przedmiotach ciekawszych. Powiem tylko, że planuję wypełnić ten semestr w całości. Na dzień dzisiejszy planuję zapis na:
Na co uda mi się zapisać bez kolizji, jeszcze nie wiem. Ale mam nadzieję, że na wszystko. Mimo wszystko szykuje się pracowity semestr. I tylko szkoda, że w zeszłym roku zaliczyłem Sieci komputerowe, bo zmienił się prowadzący i program wydaje się być ciekawszy.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Studia, Z życia. | 2 komentarze
Ostatnio zapragnąłem połączyć się moim notebookiem z komputerem znajomego przez stworzoną na te potrzeby siecią typu ad-hoc. Niestety po ponad godzinnej walce poddaliśmy się. Pomimo tego, że komputery znajdowały się w bliskim sąsiedztwie, a siła i jakość sygnału była znakomita, nijak nie dało się uzyskać stabilnego połączenia. Pingi szalały -- średnio 50% ginęło, reszta wahała się w granicach 3-65ms... Myślałem, że może jest to wina szyrfowania, ale zupełnie niezabezpieczona sieć działała tak samo, zarówno pod Windowsem, jak i pod Linuxem. Jednym słowem WiFI śmierdzi!.