Od pewnego czasu trochę cicho w Bibliotekach, ale obecnie pracuję w wolnym czasie nad aktualizacją i rozbudową Diamandy :) czyli tego na czym stoją Biblioteki. Jak wszystko zrobię z zaplanowanych ficzerów :) to korzystanie ze strony powinno być prostsze, a i współpraca społeczności też całkiem możliwa... a tematów na artykuły mam sporo :)
Google uruchomiło (jak na razie testowo) usługę nazwaną AppEngine. Generalnie polega to na dostarczeniu API i hostingu aplikacji webowych. AppEngine daje nam obecnie djangopodobny framework/API do tworzenia aplikacji www, które w prosty sposób ładujemy na nasze konto i mamy hosting aplikacji (limit 500 MB powierzchni dyskowej, 10GB transferu do i z aplikacji). Zalecam obejrzenie prezentacji na youtube pokazującą całą koncepcję AppEngine w akcji.
Generalnie możemy używać każdego frameworka napisanego w pythonie wspierającego WSGI. Google daje nam Django 0.96.1, a przynajmniej jego części. Nie stosujemy ORMa Django, gdyż Google daje własną (nierelacyjną) bazę danych BigTable, z którą rozmawiamy w języku GQL (coś jak SQL). Nie mamy też formularzy i modeli Django, a także jego panelu admina, lecz AppEngine daje swoje rozwiązania, jak i w Django zapewne pojawi się wsparcie dla rozwiązań Googla. Jak na razie trzeba poczekać na konto :) I się pobawić.
Co da AppEngine? Na pewno popularyzację Pythona, Django, a także nowoczesnych metod tworzenia aplikacji webowych.
Nowe, testowe wydanie prezentujące obecny stan Diamandy. Nowa wersja tworzona jest pod najnowsze Django-SVN i nie jest kompatybilna ze starszymi jego wersjami. Główne zmiany to zgodność z django-SVN ;) newforms na forum i w boxcomments, przepisanie userpanel tak by używał widoków auth Django, sporo zmian w interfejsie. Tłumaczenia nie zostały jeszcze zaktualizowane, jak i mam jeszcze parę rzeczy do zrobienia :) Tar.bz2 można pobrać z
code.google.com, lub użyć SVNa:
svn checkout http://diamanda.googlecode.com/svn/trunk/ diamanda-read-only
W robocie pojawiło się zadanko określenia co szybciej zrobi miniatury z dużych JPEGów z aparatów. Serwis napisany jest w PHP i przechodzi obecnie przeobrażenia :) Miniatury robi w GD/PHP co jest bardzo wolne... Pod testy podszedł PIL, ImageMagick przez "convert" i MagicWand w PHP, GD... oraz EPEG. Wyniki robienia miniatur z 45MB fotek z aparatu (duża rozdzielczość i rozmiar):
- ImageMagick convert Resize: 28,3s (zachowuje dane exif i inne śmieci)
- ImageMagick convert Thumbnail: 15,3s (to należy stosować)
- PIL: 3,2s
- EPEG: 1,9s
ImageMagick convert Thumbnail jak i PIL z wyostrzaniem dają bardzo dobre miniatury. EPEG sam wyostrza co nieco, ale jakość jest nieco gorsza.
EPEG to biblioteka napisana w C przez programistów e17. Ma jeden cel: szybko robić miniatury z JPEGów i jest najszybsza, lecz ma tą wadę że nie ma dodatkowych filtrów poprawiających jakoś miniatur. Tak więc PIL wygrał.
Jedyny problem jaki napotkałem to wyostrzanie, które jakby nie chciało zadziałać:
im = Image.open(source)
im.thumbnail((width, heigth), Image.ANTIALIAS)
im.filter(ImageFilter.SHARPEN)
im.save(thumb, "JPEG",quality=quality)
Kod Diamandy, czyli moich aplikacji Django ponownie jest w SVN. Na razie trochę przeczyściłem kod wyrzucając specyficzne dla Bibliotek elementy. Planuję zrobić jeszcze sporo więc o niezmienności kodu na razie można zapomnieć :) Dla zainteresowanych:
svn checkout http://diamanda.googlecode.com/svn/trunk/ diamanda
Wymaga Django-SVN (najlepiej najnowsze)