TechLife devBlog

#- ArchLinux

Pacnet żyje i ma się dobrze

Linux, ArchLinux, Projekty, Pacnet 16 czerwca 2011 23:26

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.

Pacnet API czyli gPacnet

Linux, ArchLinux, Projekty, Pacnet 10 kwietnia 2009 17:22

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

Linux, ArchLinux, Projekty, Pacnet 27 marca 2009 13:43

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

Linux, ArchLinux, Projekty, Pacnet 14 grudnia 2008 12:05

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 ?

Rippowanie muzyki z Last.fm

Linux, ArchLinux, Software, Techblog 29 listopada 2008 11:57

Aktualnie w polskim prawie nie ma przepisu zabraniającego nagrywania audycji radiowych. Oznacza to, że całkowicie legalnie możemy wejść w posiadanie sporych zbiorów muzyki. Nie każde radio jednak gra to czego chcielibyśmy słuchać. I tu pojawia się Last.fm – radio, które zna nasz gust i gra to co lubimy. Tylko jak teraz dobrać się do tej muzyki?

Odpowiedzią jest program TheLastRipper. Małe ale skuteczne narzędzie, pożerające adresy typu lastfm://. Wystarczy wskazać mu katalog, do jakiego ma rippować muzykę oraz stację.

Rezultatem działania TheLastRippera będą utwory znajdujące się w ładnie nazwanych katalogach (wg. schematu wykonawca > album > utwór) oraz pobrane okładki albumów w trzech rozmiarach.

Trzy rozmiary okładek mogą przeszkadzać. Np. mój QuodLibet przy odtwarzaniu utworu wybiera akurat najmniejszą okładkę co nie wygląda najlepiej. Ale łatwo można temu zaradzić. Wystarczy w katalogu z muzyką utworzyć skrypt zawierający:

find ./ -type f \( -name "SmallCover.jpg" -o -name "MediumCover.jpg" \) -delete

który usunie małe i średnie okładki z wszystkich podkatalogów.

Użytkownicy Archa aby pobrać pogram mogą skorzystać z aktualnego PKGBUILDa, który zamieszczam poniżej, ponieważ ten obecnie znajdujący się w AUR jest przestarzały.

PKGBUILD for version 1.1.1
pkgname=thelastripper
pkgver=1.1.1
pkgrel=1
pkgdesc="A Last.FM Ripper"
arch=('i686')
url="http://thelastripper.com/"
license=('GPL')
depends=('gnome-desktop-sharp' 'gnome-icon-theme')
makedepends=('pkgconfig')
source=("http://thelastripper.googlecode.com/files/$pkgname-$pkgver.tar.gz")
md5sums=('9a8653cc0cf450077b599cb8988ba8a3')
build() {
export RSVG_SHARP_20_CFLAGS="/usr/share/rsvg2-sharp/2.0/rsvg2-api.xml"
export RSVG_SHARP_20_LIBS="/usr/lib/mono/rsvg2-sharp-2.0/rsvg2-sharp.dll"
cd $startdir/src/$pkgname-$pkgver
# Bypass GMCS and fakeroot bug
mkdir -p $startdir/src/$pkgname/.wabi
export MONO_SHARED_DIR="$startdir/src/$pkgname/"
./configure --prefix=/usr
make || return 1
make DESTDIR=$startdir/pkg install
}

Załącznik 1 - lista adresów last.fm

  • lastfm://user/$username/personal
  • lastfm://user/$username/playlist
  • lastfm://artist/$artistname or lastfm://artist/$artistname/similarartists
  • lastfm://globaltags/$tag
  • lastfm://group/$groupname
  • lastfm://user/$username/neighbours
  • lastfm://user/$username/recommended/100
  • lastfm://play/tracks/$trackid,$trackid,$trackid
Strona 1 z 4 | Starsze »