Ajax w Django (ver. 2) (1)

Półtora roku temu opisałem jak zastosować AJAX w aplikacji napisanej w Django. Wybrałem wtedy tworzoną w Pythonowym stylu bibliotekę mochikit i Django 0.96. Opis cieszy się dużą popularnością, ale bogatszy o ponad rok doświadczeń wiem, że teraz zrobiłbym to wszystko o wiele lepiej.

Kiedyś jako przykład użycia ajax stworzyłem proste wiki, ale nie chciało mi się tego opisać. Tym razem wyjaśnię jak napisać prymitywny blog w Django (a jakże!). Pominę jednak kwestię przyjemnego interfejsu i skupię się na jak największej ilości JavaScriptowych wodotrysków.

Wybór biblioteki JavaScript

Swój pierwszy kod w JavaScript napisałem chyba ponad trzy lata temu. Jedyne co pamiętam to biblioteka której użyłem - mootools. Potem zacząłem używać mochikit, bo wydawało mi się, że nic wygodniejszego nie znajdę.

Obecnie ...

Wstęp do web.py III - przechowywanie danych (0)

W poprzednich wpisach - wstęp do web.py oraz wstęp do web.py II - szablony - pokazałem parę przykładów jak napisać prostą stronę w Pythonie z wykorzystaniem bibliotek webpy oraz jinja2. Tym razem postaram się przybliżyć temat składowania danych, ponieważ jest to integralna część prawie każdej strony internetowej.

Rozbicie aplikacji na pliki

Ponieważ aplikacja jest już dość spora, postanowiłem ją podzielić (powraca temat MVC) i umieściłem na github. Tutaj wklejał będę jedynie najważniejsze fragmenty kodu.

Większość aplikacji www jakie pisałem powstały w Django, dlatego na pewno da się zauważyć podobieństwo chociażby nazw plików.

Przepisałem ostatni przykład z poprzedniego wpisu i teraz układ plików wygląda następująco:

.
    server.py       # python server.py aby uruchomić aplikacje
    settings.py     # wszystkie globalne ustawienia aplikacji
    templates       # katalog szablonow ...
Wstęp do web.py II - szablony (1)

W poprzednim wpisie - wstęp do web.py - opisałem najprostsze przykłady dynamicznie generowanej strony www z wykorzystaniem biblioteki web.py. W tym wpisie postaram się przybliżyć jeden z wielu sposobów generowania treści, czyli szablony oraz bibliotekę jinja 2.

Instalacja

Pakiet powinien być dostępny w większości dystrybucji Linuksa, w przypadku Arch Linuksa znaleźć go można w AUR:

$ aursh Ss jinja
1  python-jinja 
2  python-jinja2

Choć nie jest to mój ulubiony sposób instalacji, użyć można easy_install:

$ easy_install Jinja2

Więcej o instalacji przeczytać można w dokumentacji projektu

Szablony

Zastanawiać się możesz, dlaczego w ogóle używać szablonów? Przecież w przypadku generowania dokumentów HTML można podobnie jak na przykład w PHP łączyć kod Pythona z tagami HTML, więc po co? Odpowiedź jest bardzo prosta: dlatego, że ...

Wstęp do web.py (2)

Pythonem interesuje się coraz więcej ludzi. Zarówno doświadczeni programiści jak i początkujący. Pewną częścią tej grupy z całą pewnością są początkujący programiści PHP.

Ponieważ nie mogę już czytać opisów prób zrobienia z Pythona PHP, oto krótkie wprowadzenie do programowania stron internetowych z użyciem webpy. Parę prostych przykładów w których przedstawiona jest idea programowania w tym frameworku. Brakuje między innymi opisu szablonów i komunikacji z bazą danych, ale jeśli będzie taka potrzeba, zawsze mogę dopisać.

web.py

web.py jest małym frameworkiem napisanym w Pythonie. Uważam, że to dobry wybór na początek nauki programowania stron internetowych w tym języku, ponieważ biblioteka jest bardzo prosta, a poznanie jej z pewnością ułatwi późniejsze zrozumienie Django czy Pylons.

Pierwsza aplikacja

Pierwsza aplikacja będzie oczywiście ...

GDB - przykład użycia (0)

Jako drugi projekt na zaliczenie przedmiotu Programowanie systemowe mam do napisania program przetwarzający dane z wybranego urządzenia. Ponieważ tak naprawdę chodzi o to, żeby nauczyć się programować z użyciem wątków, nie ważne jest skąd będą pochodziły. Jedyne warunki jakie program musi spełniać, to ciągła responsywność dla interfejsu użytkownika, nawet podczas wykonywania pomiarów. A ponieważ wszelkie dane od użytkownika najłatwiej pobiera się poprzez GUI, do realizacji programu użyłem biblioteki GTK+.

Pisząc w C zawsze obawiam się jednej rzeczy - Naruszenie ochrony pamięci . Informacja nie oznacza kompletnie nic, poza tym, ze to co napisałem nie działa. Prawie od samego początku, do programowania używałem Vim, więc nie uśmiechała mi się nauka jakiegoś graficznego IDE z debuggerem .

Niestety tym razem nie udało mi się samodzielnie ...

Niskopoziomowy kod w Pythonie dzięki ctypes (0)

Językiem w którym najchętniej piszę jest Python, ale od czasu do czasu lubię podłubać w czymś innym. Najlepiej w czymś stosunkowo niskopoziomowym, w pogoni za modną i szeroko pojętą wydajnością. Jestem jednak na tyle leniwy, że najchętniej używałbym tylko Pythona, stąd próby zrozumienia dialektu składniowych onanistów i biblioteki booat::python, oraz wiele godzin spędzonych na nauce C API.

C API jest całkiem fajne. Przyjemnie się w nim pisze rzeczy nieskomplikowane, jednak nie jest to coś, co szybko można napisać i od razu używać. No i niezbędna jest podstawowa wiedza, jak to wszystko działa.

ctypes

Co jakiś czas obijało mi się o uszy słowo ctypes. Zainteresowałem się tym jednak dopiero po przeczytaniu, że zarówno pyOpenGL jak i pyglet korzystają właśnie z ...

cmake (0)

To co zawsze odrzucało mnie od języków kompilowanych w stronę na przykład skryptowych to proces budowania. Wystarczy parę plików ze źródłami, zależności w postaci zewnętrznych bibliotek i tworzenie aplikacji staje się dla mnie koszmarem. Oczywiście że używałem Makefile , ale ich napisanie jest czasami równie trudne co modernizacja. Kompilując cudze aplikacje, zauważyć jednak można że nie wszyscy używają zwykłych Makefile , czy autotools. Postanowiłem więc przyjrzeć się bliżej waf i cmake.

Waf

Waf to napisany w Pythonie skrypt, którego używa się jak biblioteki. Z jego pomocą piszemy budowniczego aplikacji. Nie spodobał mi się jednak z dwóch powodów:

  • do działania wymaga Pythona, co może być absurdalnym wymogiem w przypadku bardzo małej aplikacji
  • proces budowania opisuje się jako zbiór funkcji Pythona. Wygląda to naprawdę ...
Zaawansowana edycja w vim (5)

Do tego, że Vim pozwala na całkiem inne spojrzenie na pisanie kodu, nikogo chyba przekonywać nie muszę. Zamiast klikać i zaznaczać myszką, wystarczy znać odpowiednie polecenia i przyzwyczaić się do ich używania.

Usuwanie tekstu

Najwięcej czasu zajmuje mi zawsze usuwanie jakiegoś fragmentu kodu. Dla całych linii wystarczy użyć dd lub Vd, ale zdarzają się też sytuacje, gdzie trzeba usunąć tekst stosując trochę inne ograniczenia. Załóżmy że napisałem taki kawałek kodu

def simplefun(one, two, three, *args):
    pass

i chce zmienić listę argumentów. Można powiesić się na Backspace, można policzyć znaki lub słowa i użyć <liczba znaków>x albo <liczba słów>dW lub po prostu użyć D (to samo co d$), czyli usunąć wszystkie znaki do końca linii. Z pomocą przychodzi ...

Definiowanie skrótów (0)

Wstęp

Mapowanie klawiszy może posłużyć do przeróżnych celów. Od definiowania skrótów klawiszowych, poprzez zastępowanie pisanego teksu, aż po uruchamianie własnych funkcji. Mówiąc krótko, może znacznie ułatwić pisanie.

W Vim dostępne jest wiele trybów pracy, między innymi - NORMAL, VISUAL, INSERT, REPLACE, SELECT, COMMAND-LINE/EX. Wiedza o nich przyda się podczas mapowania klawiszy.

Składnia

Składnia za pomocą której definiujemy mapowanie, wygląda następująco:

{polecenie}  {atrybut}  {lhs}  {rhs}

przy czym

  • {polecenie} to :map lub :map!, :nmap, :vmap, :imap, :cmap, :smap, :xmap, :omap, :lmap, itd.
  • {atrybut} jest opcjonalne i może to być <buffer>, <silent>, <expr>, <script>, <unique> lub <special>. Można przypisać więcej niż jeden atrybut na raz.
  • {lhs} to sekwencja jednego lub więcej klawiszy które mapujemy.
  • {rhs} to sekwencja klawiszy, do których mapujemy {lhs}.

Najlepiej ...

Wstęp do Vim (0)

Dlaczego warto wybrać Vim

Gdy złożoność programów zaczyna wykraczać poza Hello World!, każdy zaczyna szukać edytora który ułatwiłby mu pisanie. Spora część początkujących programistów zanim jeszcze czegokolwiek się nauczy, instaluje wszystkie największe IDE, z nadzieją, że napiszą kod za niego. Im więcej wyskakującej pomocy, okienek, opcji i przycisków tym lepiej się pisze...

Na mojej uczelni, obowiązującym środowiskiem do pisania w C i C++ był Dev++. Do C# oczywiście nic innego jak Visual Studio. Narzędzia te uważam za bardzo wygodne. Kompilacja jednym kliknięciem, na każdym kroku odgadują co właśnie chcę zrobić. Czasami zastanawiam się czy ja właściwie jestem potrzebny do pisania tego kodu.

Dlaczego więc używać Vim? Ktoś napisał kiedyś na forum Archa: on chce sie uczyć c++ a nie konfigurowania ...

« 2 1 /2 0 »