TechLife devBlog

Pacnet żyje i ma się dobrze

ArchLinux Linux Pacnet Projekty 16 czerwca 2011 o 23:26:08 | ☍ trackback

Pacnet

Pracę nad Pacnetem czyli Archową wersją Gentoo Portage zacząłem w lutym 2008 roku. Od czasu do czasu tam coś nagrzebię ale generalnie poza cotygodniowym zapuszczeniem skryptu aktualizującego bazę pakietów to projekt żyje własnym życiem i z miesiąca na miesiąc rejestruje coraz więcej odwiedzin.

Dotychczasowa historia w pigułce wygląda mniej więcej tak:

  • [luty 2008] Pacnet powstaje jako projekt napisany w PHP
  • [czerwiec 2008] pojawiło się API serwujące dane w formacie JSON
  • [lipiec 2008] aurshell implementuje obsługę Pacnetu
  • [grudzień 2008] Pacnet przepisany zostaje na Django
  • [marzec 2009] jako, że z hostingiem Django wówczas było krucho to nieoceniona okazała się pomoc załogi MegiTeam, która zaoferowała hosting projektu za darmo na swoich serwerach (co czyni wyśmienicie do dnia dzisiejszego)
  • [kwiecień 2009] powstaje gPacnet niewielkie GUI dla GTK operujące na API Pacnetu
  • [lipiec 2010] Pacnet otrzymuje subdomenę pacnet.archlinux.pl

W czerwcu zaktualizowałem kod do wersji Django 1.3 oraz wrzuciłem całość na GitHub (gPacnet też). Poczyniłem też kilka niewielkich zmian tu i tam. Mam nadzieję, że ułatwi to korzystanie ze strony.

PS. gdyby komuś się chciało zrobić tłumaczenie na coś innego niż angielski i polski to będę wdzięczny.

Configer.net - pokaż swoje configi

Configer Projekty Techblog 29 grudnia 2009 o 21:10:52 | ☍ trackback

Przyszedł koniec roku, w pracy zrobiło się troszkę luźniej, a więc to dobry czas na własne projekty :-) Nie, nie startupy. Nie lubię startupów. Startup to dla mnie czasownik mówiący o tym, jak jakiś autor (sam nie przekonany do swojego pomysłu) próbuje na siłę przekonać wszystkich, że funkcjonalność którą stworzył jest im niezbędna do życia :-/ Dlatego o wiele bardziej preferuje aplikacje o charakterze narzędziowym, w którym społeczność tylko zwiększa użyteczność samego narzędzia.

Tak więc z potrzeby posiadania narzędzia narodził się configer.net. Cała idea polega na przechowywaniu tam własnych (czasami godzinami dopieszczanych) plików konfiguracyjnych oraz podglądanie tego co wykombinowali inni. Oczywiście z możliwością dołożenia swoich 5 groszy w postaci komentarza. Dla parówkowych skrytożerców przewidziana jest opcja prywatnego configa, czyli dostęp do niego ma wyłącznie autor, więc nie koniecznie trzeba się zaraz dzielić swoimi wyczynami.

configer.net

Żeby maksymalnie ułatwić korzystanie z serwisu nie trzeba się nawet rejestrować. Wystarczy że zalogujemy się za pomocą OpenID, Googla, Facebooka lub Yahoo! (przecz z rejestracjami!). Mam nadzieję, że serwis kilku gikom się przyda. Jeżeli nie - trudno - to nie startup, nie musi podbijać serc ;-)

Napisy końcowe: w projekcie udział wzięli - trójkąt, Jaro, Lotos (via pdll.pl) oraz <3 Django.

Pacnet API czyli gPacnet

ArchLinux Linux Pacnet Projekty 10 kwietnia 2009 o 17:22:50 | ☍ trackback

Przerzuciłem właśnie stare API na Django. Nie obyło się bez małych zmian. Zrezygnowałem z wyboru formatów text/json/xml i zostawiłem wyłącznie JSON-a. Z formatami jednak za dużo jest zabawy, bo co prawda Django samo potrafi przerzucić QuerySet do XML-a czy JSON-a jednak robi to strasznie dziwnie, ponieważ do wyjściowego formatu dokłada takie rzeczy jak klucz obiektu czy nazwę modelu z jakiego pochodzi. Nie bardzo wiem komu takie coś jest potrzebne no a wywalić nie ma jak. O czym mówię? Weźmy np. listę kategorii.

def api_categories(request):
data = Category.objects.all().order_by('name')
json = serializers.serialize("json", data)
return HttpResponse(json, mimetype="text/javascript")

Logiczne wydawałoby się, że na wyjściu zobaczymy:

[
{"name": "No"}, 
{"name": "app-accessibility"},
...
]

Ale pojawia się:

[
{"pk": 107, "model": "packages.category", "fields": {"name": "No"}}, 
{"pk": 1, "model": "packages.category", "fields": {"name": "app-accessibility"}},
...
]

I po co to komu?

Wracając do Pacnetu… Przy okazji wdrożenia API odgrzebałem moje nieudolne próby napisania menadżera pakietów (Python+PyGTK) operującego na API Pacnetu.

code.google.com/p/gpacnet/

Podstawowa funkcjonalność, czyli przeglądanie i instalowanie pakietów podzielonych wg. kategorii działa. Więcej na chwilę obecną (np. wyświetlenia screenów) nie potrafię :-P Jednak systemowe GUI pozostają daleko w tyle za łatwością elastycznością HTML-a. Instalacja pakietów odbywa się przez wywołanie Terminala z odpowiednią komendą, więc jeżeli nie macie Terminala trzeba zastąpić go jakimś innym emulatorem konsoli.

Gdyby ktoś chciał napisać coś takiego pod QT lub cokolwiek lepszego dla GTK to serdecznie zapraszam. API stoi otworem.

pacnet.karbownicki.com/api/

Pacnet na Django

ArchLinux Linux Pacnet Projekty 27 marca 2009 o 13:43:54 | ☍ trackback

Wreszcie wczoraj znalazłem trochę czasu aby ruszyć Pacnet. Po tym jak ostatnio szukałem hostingu napisała do mnie pani Magda Zarych i zaoferowała darmowy hosting w MegiTeam. Jakość oferty bardzo pozytywnie mnie zaskoczyła, wystarczy spojrzeć tutaj, żeby się przekonać co dobrego siedzi na serwerach.

Tak więc od kilku dni Pacnet działa sprawnie pod kontrolą duetu Django & PostgreSQL. Zalet Django chyba przedstawiać nie trzeba więc powiem tylko, że brama do dalszego rozwoju została szeroko otwarta. Co nowego oprócz zmiany PHP na Pythona?

  • System komentarzy
  • Internacjonalizacja (obecnie polski i angielski)
  • Nowa wyszukiwarka z podświetlaniem znalezionych fraz
  • Log zmian kategorii pakietów
  • Link do zmiany kategorii pakietu z poziomu listy pakietów
  • Poprawiony skrypt aktualizacyjny wyszukujący screeny oraz changelog

pacnet.karbownicki.com

Na koniec chciałem bardzo serdecznie podziękować Arturowi Bednarkowi (unix.net.pl) oraz Krzysztofowi Rygwelskiemu, którzy również zaproponowali hosting na swoich serwerach.

PS. Chętnie przyjmę subdomenę pacnet.archlinux.pl

Hosting Django poszukiwany

ArchLinux Linux Pacnet Projekty 14 grudnia 2008 o 12:05:26 | ☍ trackback

Ostatnio w ramach projektu z zarządzania informacją w internecie napisałem nową wersję Pacnetu. Nowa wersja napisana jest w Django, co bez wątpienia zapewni dobrą platformę dla przyszłego rozwoju. Niestety w związku z pozbyciem się PHP pojawiły się problemy hostingowe, ponieważ teraz muszę mieć serwer z Pythonem, np. Apache+mod_python oraz bazę MySQL/PostgreSQL.

Jeżeli dysponujecie takim serwerem i nie macie nic przeciwko przygarnięciu niewielkiego projektu to proszę o komentarz z namiarami kontaktowymi. Co prawda Pacnet stworzony został na potrzeby kategoryzacji pakietów Archlinuksa, ale system jest na tyle elastyczny, że równie dobrze można by kategoryzować pakiety z dowolnej dystrybucji. Więc jeżeli chcielibyście odpalić coś takiego dla Waszej ulubionej dystrybucji nie powinno być z tym problemów. Potrzebny tylko hosting.

Dodam, że Pacnet nie potrzebuje dużej przestrzeni plikowej, ponieważ poza Django wszystkie inne informacje przechowywany są w bazie. Np. zrzuty ekranów to w rzeczywistości linki do zewnętrznych plików na innych serwerach (by Google Search).

Anyone ?

Nowe projekty: noku.pl

Internet Portfolio Projekty 15 listopada 2008 o 22:30:17 | ☍ trackback

logo5

Nic ostatnio nie pisałem ponieważ cały wolny czas zabrał mi nowy projekt, a właściwie to praca magisterska ;-) Nowy twór to noku.pl, co w zamierzeniu ma być narzędziem do komunikacji student-student oraz student-wykładowca.

Cały pomysł opiera się na tym, żeby odgonić studentów od zakładania (w byle jakich miejscach) for/stron swoich „roków” i zgromadzić ich w jednym miejscu, dostarczając narzędzie skrojone na miarę i przystosowane do warunków studenckich. Następnie przyciągnąć w to miejsce nauczycieli akademickich, tak żeby mieli w jednym miejscu wszystkich swoich studentów, dzięki czemu wymiana materiałów czy informacja typu „nie ma mnie jutro na uczelni” trafiała natychmiastowo tam gdzie trzeba. Do tego dochodzą strony kół naukowych i mamy już małą e-uczelnię. Każdy wie co i gdzie piszczy.

Oczywiście co większe uczelnie mają już podobne systemy wymiany informacji/materiałów ale:
a) nie wszystkie, np. Politechnika Opolska nie ma i nie zanosi się żeby miała
b) inwigilacja studentów (w systemie hostowanym przez uczelnię) i tak sprawi, że do nieskrępowanej komunikacji pomiędzy sobą studenci założą gdzieś własne forum

Dlatego całym pomysłem na serwis jest:

  • wyprowadzenie systemu poza uczelnię
  • bezpieczna i zamknięta wymiana informacji/materiałów pomiędzy studentami
  • zapewnienie nauczycielom łatwego kontaktu ze studentami przez to, że będą mieli wszystkich w jednym miejscu

Od strony technicznej system jest przewidziany na N uczelni. Ograniczeni jesteśmy jedynie zasobami serwerowymi dlatego, póki co jesteśmy w stanie hostować tylko studentów z obszaru Politechniki Opolskiej.

Całość napisana jest w Django i działa na konfiguracji Ubuntu server, Nginx, PostgreSQL. Co najważniejsze kod serwisu jest dostępny na licencji AGPL !! Jesteśmy chyba jednym z niewielu polskich serwisów Django-wych, które zdecydowały się opublikować kod. Miejmy nadzieję, że wywołamy nową tendencję wśród aplikacji webowych dzięki czemu będziemy mogli się wzajemnie od siebie uczyć.

Linki:
noku.pl
blog.noku.pl (oczywiście jogger)
bugs.noku.pl (kod źródłowy oraz błędy)

Pacnet API

ArchLinux Linux Pacnet Projekty 25 czerwca 2008 o 17:34:45 | ☍ trackback

Właśnie wrzuciłem na serwer API v1.0

Adresy wyglądają tak:

[TYP] = text, json
[PAKIET] = firefox, gajim, mc …
[KATEGORIA] = net-im, games-rpg …
[SZUKAJ] = aur, fire, ftp …

lista wszystkich pakietów

http://pacnet.karbownicki.com/api/[TYP]/packages

informacje o pakiecie
http://pacnet.karbownicki.com/api/[TYP]/package/[PAKIET]

lista wszystkich kategorii
http://pacnet.karbownicki.com/api/[TYP]/categories

lista pakietów w kategorii
http://pacnet.karbownicki.com/api/[TYP]/category/[KATEGORIA]

wyszukiwanie pakietu
http://pacnet.karbownicki.com/api/[TYP]/search/[SZUKAJ]

W przypadku braku trafień typ tekstowy zwraca null natomiast JSON pusty obiekt {}

Pacnet - aktualizacja

ArchLinux Gentoo Linux Pacnet Projekty 16 czerwca 2008 o 00:26:08 | ☍ trackback

Semestr już prawie się skończył, nareszcie mam trochę więcej czasu, wiec zabrałem się dzisiaj za aktualizację pacnetu. Z pomocą oczywiście przyszedł mi Python, dzięki któremu napisałem ładny skrypt, porównujący obecną bazę ze stanem repozytoriów i na tej podstawie dokonujący aktualizacji.

Na czerwono zaznaczane są nowe pakiety, które można przeglądać również na odpowiedniej podstronie.

Wreszcie dodałem możliwość wrzucania zrzutów ekranów, czyli najprzyjemniejszej funkcjonalności. Niestety nie dysponuję odpowiednim serwerem do przetrzymywania tej całej grafiki, więc całe wrzucanie ogranicza się do podania adresu miniaturki i dużej grafiki.

Ponieważ wiem, że pakietów jest sporo a zrzuty będą przybywały raczej w wolnym tempie więc dodałem automatyczne wyszukiwanie zrzutów w Googlu. Co prawda nie zawsze wyszukuje to co trzeba, ale w większości przypadków sprawuje się całkiem dobrze i od razu widać z jaką aplikacją mamy do czynienia. Poniżej zrzuty z Battle of Wesnoth.

Ostanie 20 zrzutów będzie wyświetlane na odpowiedniej podstronie.

Rozpoznawanie gestów za pomocą kamery

Kodowanie Projekty Python Techblog 07 czerwca 2008 o 13:06:30 | ☍ trackback

Od dawna chciałem już zrobić coś związanego z kamerą. W tym semestrze nadarzyła się okazja i zaproponowaliśmy prowadzącemu własny temat projektu z przedmiotu o nazwie „struktury systemów informatycznych”. Naszym zamierzeniem było stworzenie programu, który działałby podobnie jak gesty wykonywane myszą w Firefoksie tyle, że rolę myszki odegrać miała kamera. Założenia wstępne: platforma – Linux, język – Python.

Najwięcej problemów sprawiła nam sama kamera, a dokładniej to zbieranie i przetwarzanie jej obrazu.

Na początku zabraliśmy się za testowanie reacTIVision, które w zasadzie jest oprogramowaniem dla ekranów wielodotykowych. ReacTIVision ma swoją bibliotekę 89 symboli, które potrafi rozpoznać określając ich numer id, pozycję x-y, kąt nachylenia a nawet przyśpieszenie.

Symbole wyglądają tak:

Kamera widziała to tak:

A reacTIVision tak:

Działo to całkiem sprawnie. Jeżeli wykonaliśmy szybszy ruch markerem, a dokładniej przyśpieszenie markera przekroczyło pewną granicę, wówczas rozpoczynał się rysować gest. Wadą jednak tego rozwiązania były markery. Jeżeli nie miało się markera to program był bezużyteczny. Trzeba było więc go zastąpić czymś co ma każdy, np. ręką :-)

Do łapania obrazu z kamery tym razem wykorzystaliśmy moduł Pythona pyvideograb. Znaleźliśmy nawet bardzo przydatny skrypt, który wykrywał punkty ruchu w obrazie poprzez porównywanie dwóch sąsiednich klatek. Co prawda autorzy zaznaczyli, że działa tylko pod Windowsem z uwagi na moduł do przychwytywania obrazu z kamery, ale ten łatwo można było podmienić.

Teraz wystarczyło wrzucić wszystko do Pygame’a i już pierwsze efekty były widoczne.

Program wykrywał ruch i potrafił określić współrzędne punktu ruchu, co w przypadku poruszającej się większej powierzchni oznaczało jej środek.

Po naciśnięciu spacji możemy już wykonywać gest.

Następny etap to sieć neuronowa a dokładniej sieć Hopfielda. Dzięki niej jesteśmy w stanie rozpoznać, czy wykonany gest zgadza się z jednym z 4 wzorców. Jeżeli tak, wykonywane jest przypisane do niego polecenie.

W konsoli wygląda to tak:

W tej chwili program ma wprowadzone 4 wzorce (plik: patterns.txt)

Przypisane do nich działania można łatwo edytować (interfejs.py)

Jeżeli ktoś miał by ochotę się tym pobawić lub zrobić z tym coś więcej to proszę bardzo.

Gesty v0.001 na licencji GNU GPL

Projekt – 4.5, radość ze zrealizowanego pomysłu – bezcenna ;-)

Współautorzy:
– Marek Knaga
Jarosław Miazga

UPDATE: ponieważ strona projektu pyvideograb od jakiegoś czasu jest martwa zamieszczam spakowany moduł pyvideograb.tar.gz

Pacnet, czyli Gentoo w Archu

ArchLinux Gentoo Linux Pacnet Projekty Techblog 26 lutego 2008 o 19:31:04 | ☍ trackback

Pacnet jest próbą kategoryzacji pakietów z repozytoriów Arch Linuksa zgodnie z kategoriami używanymi przez Gentoo Portage. Na chwilę obecną znajduje się tutaj 4138 pakietów z repozytoriów core, extra i community.

Jeżeli zauważycie, że jakiś pakiet znajduje się w niewłaściwej kategorii, nie czujcie się skrępowani żeby ją zmienić. Pakiety mogą być niewłaściwie przypisane do kategorii, ze względu na rozbieżności w nazewnictwie pomiędzy obiema dystrybucjami.

Liczę na to, że z Waszą pomocą doprowadzimy szybko to repozytorium do porządku i co najważniejsze – przydatności.

pacnet.karbownicki.com

Pacman i kategorie z portage

ArchLinux Gentoo Kodowanie Linux Pacnet Projekty Python 24 lutego 2008 o 01:21:39 | ☍ trackback

Moje ostatnie narzekania na organizację repozytorium w Archu nie dawały mi spokoju. Dzisiaj z pomocą fixxxera (właściwie to tylko przerobiłem jego skrypt ;) powstał skrypt, który po otrzymaniu nazwy pakietu pokazuje nam do jakiej kategorii jest on przypisany w repozytoriach Gentoo.

Składania jest prosta:

$ python portage.py gajim
net-im

Oczywiście bez dwóch zdań będą jakieś niezgodności

$ python portage.py pacman
games-arcade

Ale na ogół skrypt powinien działać dobrze. Czyli pierwszy krok do kategoryzacji Archa zrobiony. Teraz tylko powkładać pakiety w kategorie, zrobić GUI i można podbijać świat ;-)

Międzydystrybucyjna baza informacji o pakietach

Linux Pacnet Projekty 11 lutego 2008 o 20:30:35 | ☍ trackback

Jakiś czas temu nawiedziła mnie myśl, która nie daje mi spokoju. Zwłaszcza przypomina mi się kiedy odpalam gtkPacman-a i moim oczom ukazuje się taki widok

Wtedy myślami wracam do czasów Gentoo i bardzo dobrze przemyślanej struktury Portage. Pewnie nie jedna dystrybucja chciałaby mieć tak dobrze skatalogowane oprogramowanie jak Gentoo.

(tutaj pojawia się animacja zapalającej się nad głową żarówki)

A co by było gdyby stworzyć globalną bazę informacji o pakietach? Wystarczy prosta strona www udostępniająca podstawowe API dla wszelkiego rodzaju dystrybucyjnych menadżerów. Taki API mogło by zwracać tekst, HTML lub XML na podstawie wywołanego adresu np.:

http://bazwa.org/package/342432/text
http://bazwa.org/package/342432/html
http://bazwa.org/package/342432/xml

ewentualnie opcja z wersją pakietu (wiadomo, inna wersja inne funkcje inne zależności)

http://bazwa.org/package/342432/0.11.4.2/xml

Wystarczyłoby aby każda dystrybucja stworzyła sobie słownik łączący ichniejszą nazwę pakietu z id pakietu w bazie i voila! Mamy międzydystrybucyjną bazę najświeższych informacji o pakietach, z opisem większym niż jedna linijka, aktualnymi informacjami na temat autora/autorów, strony domowej i (czego najczęściej mi brakuje) zrzutów ekranu. A wszystko ładnie zaszufladkowane i gotowe do przeglądania przez www czy jakiegoś menadżera pakietów.

Oczywiście żeby nie przeciążać serwerów można by codziennie wypuszczać zrzut bazy, który dystrybucje by ssały i hostowały na swoich mirrorach. Hmm.. tylko dlaczego jeszcze nikt tego nie zrobił? Czyżby były jakieś poważne przeszkody o których nie pomyślałem ?