Django, Sphinx docs and Buildout

Sphinx is a very popular tool used to generate documentation of all sorts. It is used to post-process Python language’s documentation and by a myriad of other projects. Sphinx basically parses files written in restructured text format and outputs html, pdf, e-pub etc.

Although Sphinx might be used for any  docs, it is very well suited for technical stuff, because it is able to automatically generate docs from source code. This is how I use it in my Django projects. In this post I want to share my configuration, and possibly get some feedback on how to improve it :)

Sphinx installation and Buildout

Because I use buildout I use sphinxbuilder recipe in order to make Sphinx commands available in my environment. Typically a developer just has to call

pip install sphinx

or add sphinx to requirements.txt file if using pip (hopefully in virtualenv).

In my case I put sphinxbuilder defaults into my buildout.cfg:

[buildout]
parts = (...) sphinxbuilder

(...)
[sphinxbuilder]
recipe = collective.recipe.sphinxbuilder
source = ${buildout:directory}/docs-src
build = ${buildout:directory}/docs

Don’t forget to check Sphinx tutorial.

Sphinx initialization

After Sphinx is installed the quickstart command should be called:

bin/sphinx-quickstart

or in case buildout is not used call in `docs` directory:

sphinx-quickstart

This will ask some questions, be sure to answer “yes” to:

autodoc: automatically insert docstrings from modules (y/N) [n]

Sphinx configuration

Next thing is to configure Sphinx so that it would be able to find docstrings in Python modules of Django project. In general this requires some tweaking of Sphinx’s conf.py file that is typically located in “docs” directory. Because Sphinx has to find and scan python modules these have to be available in sys.path.

In case of buildout I just copy (this is the ugly part) the sys.path definition from “bin/django” script

import sys
sys.path[0:0] = [
  (...)
  '/home/ext/dev/somefolder',
  '/home/ext/dev/somefolder/project/apps',
  ]

# setup Django
from django.conf import settings
settings.configure()

Documentation

In the last step it is required to update documentation files to include calls to autodoc. It can be done in the following way:
a) create a file `someapp.rst` in docs folder and fill it with:

Some app models
===============
 
.. automodule:: someapp.models
    :members:

Then in index.rst add a reference to it:

Welcome to Someproject's documentation!
========================================

Contents:

.. toctree::
   :maxdepth: 2

   someapp

Build it!
Everyting is prepared so the last thing to do is to call the build command:

bin/sphinxbuild

or in buildout free environment:

make html

The html docs would be generated into `_build` folder.

Summary
So, this is basic setup of Sphinx, buildout and Django that works for me.

Some references:

31. May 2013 by restless_being
Categories: web development | Tags: , , | Leave a comment

New hardware, Gnome Ubuntu and multiple monitors

Things don’t go well with my laptop – for some mysterious reason it’s dead slow. So I’ve recently bought a desktop computer \o/.

 

Hardware

I’m not going to write about hardware details because I’m not an expert in this area. Enough to say that this is a Xeon E3 1230 v2 based system with 16GB RAM, NVidia GT 660 card, running OS on SSD drive and yes it’s fast. Kudos go to some guys from CD Action forum - believe it or not but you can write there that you want to buy a computer, describe how you will use it (programming, gaming, etc) and of course specify what your budget is. Helpful souls will immediately give you a list of optimal hardware components that you should buy. Great!

Operating system

OS? What OS should I use? No, no thinking required here. I’m Ubuntu user for years and the only thing that changes is a desktop environment. This time I decided to go with Gnome 3, that I used earlier on my laptop. I downloaded and installed official gnome ubuntu release. Installation went smoothly, except that everything was installed on SSD drive (no easy way to change this during installation process) and I had to change /home location to another drive manually – just after the system was installed.

The crucial thing for me was a graphics card. I wanted it to work well under Linux and be able to serve up to 3 monitors. I bought Nvidia GT 660 because it seemed to me that it meets my requirements and at the same time features a quite good performance.  On my new OS I downloaded and installed nvidia drivers from apt system repositories and everything just works. I don’t experience any problems with dual monitor setup, and this was something that was hitting me badly on my laptop – I couldn’t find a way to have a permament monitor setup there. I do wonder how things would work when I’ll connect third monitor, but this will happen in not so near future.

Dual benqs and Gnome Ubuntu

Gnome 3 configuration

One of the features that are missing in Gnome 3 is a panel that you usually see on the bottom or top of your monitor showing you a list of running apps, tray etc. Gnome 3 doesn’t want to disturb it’s users so the layout is minimal. At the same time it’s extendable – it’s very easy to install extensions, user just has to visit extensions page and click “on” on a selected extension.

Here is the point that made me to write this post – I just wanted to say that if you wonder what you should use to regain your dock I’d recommend two solutions. First is “Dash to dock” extension that transforms a Gnome 3 dash into a dock (dash is something that you see on the left, after entering Activities overview). It’s really nice but lacks possibility to change dock location. It’s always on the left side of your primary monitor, what makes it unusable to me – in my dual monitor setup I want it to be on the right side of right monitor. Not in the middle!

Is there’s another solution? Yes. I tried Cairo Dock, but… no I didn’t like it. It features a strange way of managing apps and launchers, and also breaks all icons after system is waked up from suspend. I didn’t like it. Then I discovered Docky. Simple, effective, configurable and really nice. Lovely. You want a dock? Go and install Docky!

…and a word about web browsers

Even on my new machine I experience some problems with Firefox. In general it’s laggy. Almost every new page I open freezes for a while, the same when I switch tabs etc. I’m not sure if it’s caused by FF itself or rather by flash plugin, so I decided to give Chrome a try. Chrome… pros and cons:

1. I don’t like Chrome’s extensions management system. In fact this is just a web page Web page that doesn’t seem to be intutive to me. It iaps much faster to browse extensions with FF

2. I don’t like their developer tools. Maybe I’m just used to… but you know :) Firebug FTW

3. Tabs Outliner plugin is great. Fast and effective. Allows me to group and manage my tabs quickly, and I usually do have a lot of them open. See also this:

4. My Chrome is fast. Much faster than FF :)

 

Summary

I’m really happy with my new hardware running Gnome Ubuntu with fantastic Docky and Chrome with amazing Tabs Outliner. Give them a try!

 

30. May 2013 by restless_being
Categories: operating system | Tags: , | Leave a comment

Ubuntu 12.10 on RAID with Gnome 3 flavour

gnome3

Till yesterday it was about two years of my (not so) happy Kubuntuing. It was enough.

Kubuntu is the Ubuntu with the KDE desktop environment and I’ve used that combo for years (last two years as Kubuntu). However it started to irritate me. My whole system was slow (dead slow), sometimes buggy (crash reports! ough.. I don’t like them) and finally it refused to properly work with my dual monitor setup. It’s hard to say why. Whether it’s Ubuntu, KDE or my hardware fail or just PEBKAC :D Doesn’t matter now because I decided to move to Ubuntu 12.10 with Gnome 3.

pebkac

Oh, that wasn’t easy, so here’s what I did. I hope you’ll find my notes useful.

1. Installation package

First thing was to go to http://ubuntu.com and download installation images. It proved to be problematic because there is no alternate installer any more – Canonical (company behind Ubuntu) has decided to only provide live cd’s. Ok but… Hey! It was never possible to configure RAID with live cd! Some googling had shown me that I was right – it’s still not possible. So I downloaded:

  • Ubuntu 12.10 Desktop to see if it really doesn’t work with RAID
  • Ubuntu 12.10 Net Install (mini), that uses console installer
  • Ubuntu 12.04 Alternate Installer, this one should definitely work with RAID, then I can upgrade to 12.10
  • Ubuntu 12.10 Server, in case of a failure of all images from the above I can install Desktop on the server base, right?

I don’t even want to talk about my problems with finding 4 cd/dvd :)

2. RAID

My laptop has two hard drives so I use them in a RAID. If you’re interested in this kind of setup just see this guide – sorry it’s in Polish, but has a lot of screenshots or read this guide in english.

RAID_1.svg

Here I must say that it’s a sad truth but still truth – it’s not possible to install Ubuntu 12.10 on RAID device. 12.10′s live installer doesn’t make it possible to properly configure RAID drives. So I was forced to try something different and after 12.10 net installer hanged for two times I went with 12.04 alternate installer. This one did his work with RAID and I finally booted my Ubuntu 12.04 desktop.

3. Upgrade to 12.10

After I was on 12.04 I first had to enable distribution upgrades for all, not LTS only (long term support) editions in Software Sources of Update Manager. Then Update Manager reported that “there is an update available” to 12.10 and I was allowed to proceed. You can see here a detailed upgrade instructions.

4. Welcome 12.10

After upgrading to 12.10 and installing some must have packages like mc, vim, build-essentials etc. I followed this fantastic guide to replace Unity with Gnome 3.

gnome3

It worked and a cool Gnome 3 desktop (I admit that I hate their default “graphics card failure” wallpaper) appeared in front of my eyes (the picture above is from Gnome 3 page). After booting into a Gnome 3 session I went to gnome extensions web page and installed some of them like: dock, remove accessibility, pomodoro timer, etc.

However one more problem appeared…

5. Language

I use Polish language in my system so I’ve installed all required language related packages. Sadly that was not enough to be able to enter alt+letter combinations to have letters like: ąłóśćż etc. Thanks to Tomasz Ślązak I’ve found a solution to enable polish letters on my keboard. In short you have to:

  1. Start System Settings > Keyboard.
  2. Click Layout Settings link.
  3. Check if you’ve a Polish (or other) layout selected.
  4. Click Options
  5. Find element: Key to choose 3rd level and select  Right Alt.

Thats all.

6. Success

So after a day and a night I finally have my Ubuntu 12.10 Gnome 3 RAID edition up and running. I hope that I won’t ecounter any dual-monitor quirks.

Last thing – why Gnome3? It’s minimalistic, fast and I find it tasty. I didn’t have such a pleasure with KDE or Unity :D

10. February 2013 by restless_being
Categories: operating system | Tags: , , | Leave a comment

Pycon PL – 2012

Kilka dni temu zakończyła się jubileuszowa, piąta edycja konferencji Pycon PL. W odróżnieniu od wcześniejszych edycji tym razem Pycon trwał nie trzy, a cztery dni. Około 160 programistów, programistek i sympatyków Pythona spędziło przedłużony weekend (13- 16 września) w Mąchocicach Kapitulnych, pod Kielcami.

Wydłużenie konferencji pozwoliło organizatorom zmieścić w agendzie więcej prelekcji i co istotne, nie miało to negatywnego wpływu na ich jakość. Wprost przeciwnie, uważam – a jako uczestnik trzech poprzednich edycji mogę coś na ten temat powiedzieć – że tegoroczny Pycon PL był najlepiej zorganizowaną i stojącą na najwyższym poziomie konferencją z tego cyklu.

Miejscówka

Hotel Przedwiośnie w Mąchocicach Kapitulnych liczy sobie dwie gwiazdki (puszczam oczko, do wszystkich uczestników konkursu wiedzy o Pyconach PL) i zapewnia swoim gościom naprawdę godziwy standard pobytu. Jest zatem wyremontowana sala wykładowa z bajecznym żyrandolem, są przestronne pokoje i przytulne łazienki oraz świetny widok z okien. Do tego, dla odróżnienia od jednego z ustrońskich Pyconów, jest też prąd i ciepła woda. To wszystko jest o tyle ważne, że Pycon PL ma na celu integrowanie polskiej społeczności deweloperów Pythona, dlatego też zarówno wykłady jak i noclegi wszystkich uczestników zlokalizowane są w jednym miejscu.

Agenda

W tegorocznej agendzie pojawiło się sporo wykładów w języku angielskim, w tym także prowadzonych przez prelegentów z zagranicy, których było aż sześcioro (siódmy wykładowca – Kai Diefenbach – w ostatniej chwili odwołał swój przyjazd). Mnie szczególnie cieszyła obecność Audrey Roy, Daniela Greenfielda oraz Jannisa Leidela, którzy stanowili dość silną reprezentację międzynarodowej społeczności skupionej wokół Django. Krótki przegląd ciekawostek:

  1. Najmłodszy, bo osiemnastoletni prelegent w historii Pyconów PL czyli Marek Šuppa zaprezentował robota sterowanego z poziomu Pythona. Ponieważ uczestniczyłem w konferencji od piątkowego wieczora nie widziałem tej czwartkowej prezentacji, ale zamieniłem później kilka słów z Markiem oraz słyszałem komentarze na jej temat. Marek za pomocą robota uczy dzieci programowania, a ja uważam to za świetny pomysł stąd też niniejszym wskazuję palcem na ten wykład.
  2. Przewijał się często temat continuous integration – m.in. za sprawą ciekawego i fajnie poprowadzonego wykładu Łukasza Olesia. Garść przydatnych narzędzi z tej dziedziny: nose, jenkins, pyflakes, fabric, travis, ansible.
  3. Klasy i dziedziczenie oraz komponowanie komponentów wielokrotnego użycia na przykładzie Class Based Views (CBV) oraz ORMa z Django. Łukasz Langa opowiedział o podejściu do tworzenia aplikacji bazującym na komponowaniu ich z komponentów zbudowanych zgodnie z pythonowymi zasadami wielokrotnego dziedziczenia. Zasady te nie zawsze są przestrzegane co prowadzi do rozmaitych trudności np. przy dziedziczeniu modeli w Django. Podobne problemy pojawiają się przy okazji CBV, do czego odnosił się w swoim talku także Daniel Greenfield zaznaczając, że pracuje nad usprawnieniem tego mechanizmu.
  4. JavaScript. JavaScript?! Tak, pojawiał się niejednokrotnie w trakcie tej konferencji. Audrey Roy opowiedziała o swoich doświadczeniach z tym językiem – językiem jako takim, gorszym w jej mniemaniu od Pythona, ale za to bijącym Pythona pod względem możliwych zastosowań (vide strony www, node.js, urządzenia mobilne). O javascripcie mówił także Bartłomiej Zass z Microsoftu przy okazji prezentacji Windows 8, który to Windows kafelkami i HTML5, CSS3 i JSem stoi. Bartłomiej jest w Microsofcie zatrudniony na stanowisku technologicznego ewangelisty, co jednak, jak podkreślił, nie oznacza, że prowadzi wykłady tylko w niedziele :D . Nie ocenię Windowsa 8, ale za ten dowcip +1 dla MS. Także Radomir Dopieralski prowadził warsztat z języka JavaScript dla programistów Pythona.
  5. Dobrze było posłuchać o tym jak Python sobie radzi w skali enterprise w Onecie oraz w bankach (by STX Next). Jeśli pojawią się filmy to zachęcam do obejrzenia tych wykładów.
  6. Jeśli chodzi o zastosowania webowe to mocno obecne było Django, o którym bardzo ciekawie opowiadał między innymi Jannis Leidel na przykładzie startupu nad którym pracował. Duży projekt z imponującymi rozwiązaniami architektonicznymi – must see dla djangowców, a see można zrobić na stronie Europythona, gdzie Jannis również prowadził tę prezentację: link. Pojawił się też Pyramid, w formie warsztatu przeprowadzonego przez Szymona Pyżalskiego oraz w osobie Ergo^, czyli Marcina Lulka, który prezentował na sobie uroczą Pyramidową koszulkę, a niezwłocznie po zakończeniu Pycona popełnił pyramidowy tutorial: pyramid_blogr. Nie można też nie wspomnieć o Tornado, które przewijało się w różnych talkach i kuluarowych rozmowach.
  7. Nie pojawił się Kai Diefenbach i jego wykład o Lighting Fast Shop czyli sklepie internetowym w Django. Szkoda bo to ciekawe rozwiązanie, acz namiastkę tego wykładu stanowił przeprowadzony przez Macieja Wiśniowskiego lightingtalk o LFS-ie właśnie.
  8. Ostatnią rzeczą o której tu wspomnę jest Vagrant, który został przybliżony uczestnikom konferencji przez Piotra Banaszkiewicza. Vagrant to swoista nakładka na VirtualBoxa, która umożliwia deweloperom wygodne tworzenie kompletnie odseparowanych środowisk.

Podsumowanie

Sporo rzeczy w tej relacji pominąłem, ale cóż – nie sposób spamiętać wszystkiego. Nadmienie jeszcze, że integracja moim zdaniem wypadła również całkiem dobrze :) Było naprawdę bardzo fajnie i pozostaje mieć nadzieję, że za rok, w nowej większej lokalizacji, będzie jeszcze lepiej. Dzięki Filip.

Materiały

Materiały z konferencji dostępne są tutaj.

20. September 2012 by restless_being
Categories: Uncategorized | Tags: , , | Leave a comment

Dni Wolnego Oprogramowania

Kilka słów na temat Dni Wolnego Oprogramowania, od prawie uczestnika

W dniach 2-4 marca 2012 odbyły się w Bielsku-Białej V już Dni Wolnego Oprogramowania. DWO to cykliczna impreza organizowana głównie za sprawą Dominika Kozaczko, przy wsparciu m.in. Polskiej Grupy Użytkowników Linuxa (PLUG), poświęcona… nie tylko wolnemu oprogramowaniu. Nie tylko, gdyż tematyka jest zwykle bardzo różnorodna, a przy tym ciekawa.

Przyznaję bez bicia, że nigdy wcześniej na DWO nie byłem. Trochę mi się one kojarzyły z imprezą dla licealistów (niesłusznie), a do tego to tak już jakoś jest, że na imprezę w moim rodzinnym mieście jest mi trudniej wpaść niż na event odbywający się kilkadziesiąt czy nawet kilkaset kilometrów dalej.

W tym roku tradycyjnie nie miałem na DWO czasu, ale splot wydarzeń (dziękuję Filipie) sprawił, że jednak na chwilę na konferencję wpadłem.

Już na samym początku zaskoczyło mnie to, że większa część wykładów odbywała się nie w budynku LO nr 5 (jak to, z tego co wiem, bywało do tej pory), ale w sali Bielskiej Wyższej Szkoły im. J. Tyszkiewicza. To chyba dobry pomysł, bo jak usłyszałem od jednego z uczestników: “teraz to jest konferencja, wcześniej to było trochę jak na zajęciach w szkole”.

Faktycznie, potwierdzam, że organizacja była bardzo dobra – bez problemu trafiłem pod odpowiednią salę, gdzie miłe :D dziewczyny próbowały mnie zarejestrować (przepraszam, że nie skorzystałem, ja tam byłem tylko przelotem), a w samej sali wykładowej do dyspozycji uczestników była kawa, napoje i cała masa ciastek i innych przekąsek. Zdecydowanie organizacja przypomniała mi najlepsze dokonania PLUGa np. w postaci PyconPL.

Sednem konferencji jednak nie są ciasteczka, ale ludzie, których można tam spotkać oraz wykłady. Te elementy pozytywnie mnie zaskoczyły, zatem małe podsumowanie pozytywów:

  • Agenda konferencji świadczy o tym, że warto na niej być – jest ciekawie imho dla każdego informatyka
  • Widziałem sesję q&a po wykładzie Mateusza Juścińskiego i przyznaję, że mi się podobało. Humor i pewność siebie prowadzącego powalały. Do tego sam temat był ciekawy – na tyle na ile udało mi się wywnioskować z pytań i odpowiedzi to dotyczył systemów continuous integration i ogólnie ciekawych technologii jak git. Szkoda tylko, że ta cała fantastyczność działa na rzecz… PHP.
  • Widziałem też wykład Stanisława “dozziego” Klekota i o ile tu temat niezbyt mnie interesował to jednak sam talk był poprowadzony całkiem fajnie i przebijał z niego profesjonalizm oraz wiedza prowadzącego. Jeśli pozostałe wykłady były na podobnym poziomie to naprawdę musiało być nieźle.
  • Fajna duża sala, a na niej naprawdę sporo uczestników, ot konferencja pełną gębą.
  • Ludzie. Dostrzegłem na sali kilka znanych mi osób i to takich, które nie są byle kim (zdecydowanie to nie jest, jak napisałem wyżej, konferencja dedykowana dla licealistów). Byli np. spece od Rubiego, a także, co mnie szczególnie cieszy, pokaźna ekipa djangowa. Ba, był nawet talk (niestety nie widziałem go) podsumowujący niedawny Django sprint, który odbył się w Krakowie i w którym miałem przyjemność uczestniczyć.

Podsumowując, muszę powiedzieć, że moja króciutka bytność na DWO była… fajna i to fajna na tyle, aby napisać pierwszego od roku posta na tym blogu. DWO to po prostu dobra konferencja, która mam nadzieję będzie się dalej rozwijać.

05. March 2012 by restless_being
Categories: Uncategorized | Tags: , , | Leave a comment

JavaScript, Mobile i DevMeetings

Programowanie aplikacji mobilnych w JavaScript – relacja z DevMettingu w Gliwicach

DevMeetings i programowanie aplikacji mobilnych w JavaScript? Bardzo dobrze!

Bardzo dobry zbieg okoliczności

Pewnego dnia stwierdziłem, że najwyższy czas, aby poważniej zainteresować się developmentem dla urządzeń mobilnych. Z jednym zastrzeżeniem – developmentem softu, który będzie działał na różnych urządzeniach. Kilka chwil później dowiedziałem się, że wkrótce w mojej okolicy odbędzie się niejaki DevMeeting, którego tematyka obejmie dokładnie to co mnie interesuje. Przyznaję bez bicia, że nigdy wcześniej o DevMeetings nie słyszałem, ale postanowiłem zaryzykować i po chwili, wraz z Pigletto, moim współdeveloperem, zarejestrowaliśmy się szkolenie.

Zaskoczyło mnie to, że DevMeetings są darmowe. W tej sytuacji zbyt wiele się po nim nie spodziewałem… no cóż, pomyliłem się. W chwili obecnej stwierdzam, że dzięki brakowi opłat na szkoleniu pojawiają się osoby, które są tematem zainteresowane i które faktycznie chcą tam być, a nie ludzie przymuszeni przez pracodawców.

DevMeeting, o którym mowa odbył się 25 marca w Gliwicach.

Bardzo dobry skład

Zarówno prowadzący David de Rosier, organizatorzy, jak i uczestnicy DevMeetingu reprezentowali naprawdę dobry poziom i sprawili, że 12 godzin minęło bardzo szybko w miłej atmosferze.

Prowadzący – duża wiedza poparta doświadczeniem, a przy tym luz i komunikatywność.

Organizatorzy – sprawnie działające wi-fi i repozytorium (problemy z wyjściem na świat wynikały z winy hotelu), ładne notatniki dla uczestników, dobra pizza, kawa, której wystarczyło do samego końca i ogólnie profesjonalne podejście do tematu.

Uczestnicy – wszystkie zespoły dały radę stworzyć porównywalne aplikacje. Podrzucę tu jeszcze kilka statystyk:

  • Ilość uczestników: około 20 osób
  • Kobiety: 2 i co warte podkreślenia obie ładne (jeśli uważasz, że to seksistowskie to pewnie masz rację; jeśli Ci to nie odpowiada to przypominam, że to mój blog)
  • Laptopy z jabłuszkiem: około 6 sztuk, w tym przynajmniej jeden wypasiony MacBook Pro (trzymającej kilka długich godzin baterii trzeba zazdrościć)
  • Laptopy z Linuksem: 2 sztuki (mój i Pigletta, mogło być więcej, ale nie zauważyłem)
  • Profesje uczestników: głównie frontendowcy i web deweloperzy, tu muszę podkreślić, że wraz ze mną i Piglettem było czworo djangowców

Bardzo dobra forma szkolenia

Szkolenia są nudne. Byłem na niejednym, na którym po teoretycznym wstępie należało wykonać ćwiczenie: 1. kliknij przycisk X, 2. wpisz bla bla bla, 3. kliknij przycisk Y itd. Masakra, ale tu było inaczej!

Formuła DevMeetings polega na tym, że uczestnicy dzieleni są na grupy. Następnie prowadzący robi mniej lub bardziej krótki wstęp teoretyczny, po czym należy napisać kod, który będzie realizował jakąś funkcjonalność. Nie ma tu żadnej instrukcji krok-po-kroku. Grupa otrzymuje pliki ze strukturą programu, trochę wskazówek i zaczyna myśleć nad rozwiązaniem oraz tworzyć kod.

Moim zdaniem podział na grupy jest dobrym pomysłem. Przede wszystkim integracja i interakcja są zapewnione. Ponadto przy pracy grupowej każdy wnosi coś od siebie i nie ma przestojów wynikających z “nie wiem jak to zrobić” – zawsze ktoś z grupy wie lub ma jakiś pomysł. Wada jest taka, że właściwie stale powinna pisać osoba siedząca w środku, ewentualnie można się zmieniać przy jej komputerze.

Bardzo dobry temat

Programowanie aplikacji mobilnych w JavaScript to naprawdę fajna sprawa i w dobie ogromnej popularności coraz to lepszych telefonów bardzo na czasie. Na DevMeetingu można było nabyć sporo wiedzy oraz uporządkować tę już posiadaną. Świetnie było posłuchać porównania PhoneGap z Titanium, poznać wady i zalety JQuery Mobile, czy w końcu dowiedzieć się dlaczego PhoneGap nie jest doskonały.

Cała ta wiedza została, niczym kofeina w organizmie programisty, przetworzona w kod, który – ależ to była frajda – uruchomił się na rzeczywistym smartfonie z Androidem. Nie dość, że się uruchomił to jeszcze sprawnie wychwytywał zdarzenia płynące z akcelerometra i sterował czołgiem. Tak, mieliśmy łączność z Libią.

Podsumowanie

Kilka luźnych myśli: Jestem bardzo zadowolony z udziału. 12 godzin to jednak długo i pod koniec chyba wszyscy byli mocno zmęczeni. Teraz już wiem, że JavaScript to taki stary przyjaciel, który wygrał w loterii i chce się ze mną podzielić wygraną. Zamierzam skorzystać.

Na koniec może zaskoczę, ale udziału w DevMeetings nie polecam. Znacznie lepiej jest usiąść samemu przed monitorem, wyszukać odpowiednie tutoriale i spokojnie je sobie poczytać… a jak już będziecie czytać to ja spokojnie zapiszę się na kolejny DevMeeting nie martwiąc się o to czy wystarczy miejsc :P

27. March 2011 by restless_being
Categories: Uncategorized | Tags: , | Leave a comment

Przezroczyste PNG w IE6 – ciąg dalszy

Rok temu pisałem o przezroczystości png w IE6. Czas na małą aktualizację.

Zachęcony pytaniem od jednej z czytelniczek mojego ubiegłorocznego artykułu na temat przezroczystości png w IE6, sprawdziłem aktualną sytuację w tym temacie. Pomimo, że IE6 (na szczęście) umiera pojawiły się nowe rozwiązania.

Przede wszystkim zachęcam do zerknięcia na ciekawy wpis na blogu Thomasa Hruski, w którym podaje on rozwiązanie problemu z wykorzystaniem png8, a na samym końcu artykułu odsyła do jeszcze innego interesującego podejścia.

Jeśli jednak, tak jak ja, nie lubicie się męczyć z grafiką warto skorzystać z innego, również polecanego przez Thomasa, rozwiązania jakim jest DD_belatedPNG. Jest to skrypt JavaScript, który można wykorzystać dodając na stronie:

   <!--[if IE 6]>
   <script src="DD_belatedPNG.js"></script>
   <script>
     DD_belatedPNG.fix('.png_bg');
   </script>
   <![endif]-->

gdzie .png_bg jest na selektorem CSS. Proste i działa świetnie zapewniając obsługę PNGów zarówno użytych w atrybutach src taga img, jak i jako własność parametru background-image w CSS. Co więcej w tym ostatnim przypadku właściwie działają background-position oraz background-repeat.

12. December 2010 by restless_being
Categories: Uncategorized | Tags: , , | Leave a comment

Wszystko dla Django

Jak mogłem to przegapić? Obowiązkowa strona dla użytkowników Django: http://djangopackages.com

Dawno dawno temu była sobie całkiem przyjemna strona Django Pluggables, na której można było znaleźć liczne aplikacje do wykorzystania we własnych projektach. Poźniej, jak pamiętam, pojawił się na liście dyskusyjnej Django wątek, w którym dyskutowano o tym, że tych aplikacji jest tak dużo, że nie wiadomo którą wybrać. Jak się wczoraj dowiedziałem na dyskusji się nie skończyło i oto Django Pluggables zamieniło się w Django Packages.

Django Packages to rewelacyjna strona. Po pierwsze znajdziemy na niej nie tylko uniwersalne aplikacje (wolne tłumaczenie angielskiego reusable apps), ale też frameworki, czyli np. CMSy, fora, czy sklepy internetowe, a także gotowe projekty oparte na Django oraz “inne”, czyli to co nie łapie się do powyższych kategorii, ale jest przydatne jak np. buildoutowa recepta djangorecipe.

Po drugie wszystkie zamieszczone na stronie pakiety mają przypisane parametry pozwalające nam na ocenę ich popularności. Wśród parametrów tych znajdziemy: ilość pobrań ze strony pypi, aktywnośc w repozytorium projektu oraz ilość użytkowników.

Po trzecie Django Packages to gridy. Absolutnie przydatne zestawienia porównawcze. Co tu dużo pisać to trzeba zobaczyć, oto przykładowy grid dla CMSów.

Oczywiście każdy odwiedzający, po zarejestrowaniu, może dodać do strony nową aplikację, stworzyć nowy grid, lub zmodyfikować istniejące. Każdy może też kliknąć “I use it” przy aplikacji, z której korzysta, zwiększając tym samym licznik jej użytkowników.

Dla mnie rewelacja, po raz kolejny cieszę się, że używam Django.

10. November 2010 by restless_being
Categories: Uncategorized | Tags: | Leave a comment

Piramidalna zemsta Zope

Zagotowało się w świecie pythonowych frameworków webowych. Pylons, Repoze.BFG i być może TurboGears, nie mogąc sprostać konkurencji ze strony Django, postanowiły połączyć swoje siły.

Przesadziłem? Ok, z tym sprostaniem konkurencji ze strony Django to taka mała prowokacja. Niemniej jednak połączenie się wspomnianych frameworków jest oficjalnym faktem. Można o tym przeczytać na liście dyskusyjnej repoze.bfg, do czego zachęcam.

W kilku słowach ujmując zaistniałe zdarzenie, można powiedzieć, że repoze.bfg nie doczeka się wersji 1.4 (wersja 1.3 ukazała się 1 listopada… nomen omen w Święto Zmarłych), albowiem stało się właśnie frameworkiem Pyramid. Podobnie ma się sprawa z samymi Pylonsami, ktore niedawno doczekały się wersji 1.0 (linia 1.x będzie utrzymywana, według deweloperów, jeszcze przez parę lat), ale to co miało być Pylonsami 2.0 będzie po prostu frameworkiem Pyramid.

Pyramid rozwijany będzie w ramach projektu Pylons, który stanowić będzie zbiór różnych powiazanych technologii.

TurboGears, które bazuje na Pylonsach, jeszcze nie zdecydowało, czy również będzie się opierało na Pyramidzie, czy jednak zostanie na Pylons 1.0. Moim zdaniem zdecydują się na Pyramid.

Jakie są motywy powyższego kroku? Chodzi głównie o zwiększenie siły przebicia frameworku oraz o przezwyciężenie pewnych problemów, które Pylons miał ze swoją achitekturą:

(Jeden z twórców Pylons) discovered an architectural design flaw in Pylons [1]. The problem orients around the chosen strategy of implementing individual app
extensibility by allowing subclassing of the WSGIController

Sporo na ten temat można znaleźć w tej dyskusji. Obok długich tłumaczeń i wyjaśnień można tam też natrafić na dużą dozę niechęci i strachu ludzi przed Zope, z którego wywodzi się repoze.bfg. W dużej mierze wynika to jednak z braku wiedzy na temat tego czym jest Zope. Moim zdaniem komponenty wywodzące się z Zope, w tym architektura komponentowa (ang. Zope Component Architecture, ZCA) sprawią, że Pyramid będzie naprawdę elastycznym, dobrym frameworkiem. Warto mieć na niego oko.

Osobiście cieszę się, bo dobrze będzie mieć w Pythonie takie dwa frameworki jak Django i Pyramid. Cieszę się też, że używam Django, bo gdybym używał Pylonsów czy repoze.bfg to na dziś dzień miałbym przed sobą perspektywę migrowania aplikacji. Niby support ma być przez parę lat, ale zawsze to niefajnie pisać w czymś co ma już swojego lepszego następcę.

05. November 2010 by restless_being
Categories: Uncategorized | Tags: , , , | Leave a comment

Front-Trends, czyli konferencja o front-endach

Konferencja Front-Trends, odbyła się w październiku w Warszawie i chociaż nie miałem okazji w niej uczestniczyć, to jednak poświęcam krótki wpis temu ciekawemu wydarzeniu.

Osobiście w Warszawie, w dniach 21-22 października, nie byłem, ale byli inni, w tym Mekk, który napisał taką relację z konferencji, ze czuję się jakbym tam był. Szacunek i serdeczne podziękowania.

Konferencja dotyczyła front-endów, stąd sporo mówiono podczas niej o JavaScripcie (który wcale nie jest tylko front-endowy), HTML 5, CSS 3. Pojawiły się też tematy związane z rozwiązaniami dla urządzeń mobilnych.

Wszystkich zainteresowanych zachęcam do przeczytania szczegółowych relacji Mekka:

Ja czytałem to z wywieszonym jęzorem ;)

05. November 2010 by restless_being
Categories: Uncategorized | Tags: , , , | Leave a comment

← Older posts