menu | o mnie | repozytorium | projekty | blog | rss | tagi

Pprint w Lua

2008-06-30

Jedną z fajniejszych rzeczy podczas nauki języka skryptowego jest możliwość korzystania z interpretera. Pozwala to na dotknięcie pisanego kodu. W Pythonie, żeby móc lepiej przyjrzeć się prostemu obiektowi wystarczy napisać

>>> obj = [1, 2, (3, 4), { 'a': 'b'}]
>>> print(obj)
[1, 2, (3, 4), {'a': 'b'}]
>>> print(dir(obj))
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', 
'__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', 
'__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', 
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', 
'__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 
'remove', 'reverse', 'sort']

Do tego można przeciążyć odpowiednie metody klasy, żeby wyjście było jeszcze czytelniejsze. Nie mniej, już w tak podstawowej formie, każdy zorientuje się w otrzymanym tekście.

W Lua wszystko psują tablice. A ponieważ jest to podstawowy element budowy czegokolwiek w tym języku, w dużym stopniu utrudnia to oglądanie kodu

> t = { 'one ...

Awesome 3 i Lua

2008-06-24

Między egzaminem a projektem który muszę oddać, znalazłem trochę czasu który wykorzystałem na odświerzenie swojego systemu. Mowa głównie o nowym awesome, które w niedalekiej przyszłości osiągnie numerek 3.0.

awesome

Awesome to dynamiczny menadżer okien, pierwotnie bazujący na kodzie dwm (chociaż obecnie, szczególnie w gałęzi 3.0, większośc kodu została przepisana). Cały urok dynamiczności tego rodzaju menadżerów polega na automatycznym skalowaniu okienek. Gdy uruchomione jest jedno okno, zajmuje ono cały ekran roboczy. Uruchomienie kolejnego, skaluje pierwsze i wyświetla oba obok siebie, tak aby zajmowały możliwie największą przestrzeń. Każde następne zostaje wyświetlone w ten sam sposób.

Tych którzy używali już wcześniej awesome 1.x lub 2.x (obecnie stabilną wersją jest 2.3), zaskoczyć mogą spore zmiany. Nowe awesome w całości przepisane zostało z xlib do xcb, a libconfig zastąpione zostało skryptem Lua. Dzięki nowemu plikowi konfiguracyjnemu, o wiele łatwiej ustawić ...

Prosty silnik blogowy

2008-06-10

Od paru dni czytam dokumentacje Django i jQuery (z jQuery JavaScript jest naprawdę proste!), testując przeczytane fragmenty kodu. Zanim zabiorę się za coś większego, chciałbym umieć napisać porządną aplikacje średniej wielkości. Znakomitym treningiem zdaje się być stworzenie silnika blogowego. Tak oto postała aplikacja o wdzięcznej nazwie Henry.

Jeśli ktoś planuje napisać własnego bloga, to myślę że to co znajdzie w tym kodzie może być pomocne. Podejrzewam, że w najbliższym czasie pojawi się jeszcze więcej mało potrzebnych wodotrysków w JavaScript i parę dodatkowych funkcjonalności.

Dla tych co nie wiedzą jak to uruchomić, mała instrukcja:

Najpierw należy pobrać kod aplikacji:

# git clone git://husio.homelinux.com/Henry-the-blog

następnie zmieniamy wszystkie zmienne rozpoczynające się od DATABASE_ w pliku konfiguracyjnym (domyślnie są ustawione dla sqlite3)

# cd Henry-the-blog/Henry/
# vim settings.py

teraz należy utworzyć odpowiednie tabele i uruchomić testowy serwer django

# python manage.py ...

Historia języków programowania

2008-06-05

Przeglądając codzienną porcję linków, trafiłem na graf przedstawiający historię najpopularniejszych języków programowania. Fajnie wiedzieć co skąd się wzięło.

"Arch is the best!" w Vala

2008-06-01

Ponieważ zbliża się sesja, trzeba zająć się czymś całkowicie z nią nie związanym. Wybór padł na naukę języka o nazwie Vala. Po przejrzeniu tutoriala, postanowiłem spróbować coś napisać. Pomyślałem, że skoro nie ma jeszcze portu "Arch is the best!", to najwyższy czas żeby powstał. Oto wersja w GTK+:

using GLib;
using Gtk;

public class Best : Window 
{
    construct 
    {
        title = "Arch is the best!";
        resize(200, 100);
        create_widgets();
    }

    public void create_widgets() 
    {
        destroy += Gtk.main_quit;
        var vbox = new VBox(false, 1);
        var label = new Label("Arch is the best!");
        var button = new Button.with_label("Got it. Exit.");
        button.clicked += b => { main_quit();  };
        vbox.pack_start(label, true, true, 0);
        vbox.pack_start(button, false, false, 0);
        add(vbox);
    }

    public static void main (string[] args) 
    {
        Gtk.init(ref args);
        var best = new Best();
        best.show_all();
        Gtk.main();
    }
}

Kompilacja do postaci binarnej:

$ valac --pkg gtk+-2.0 <nazwa ...
4 : 3 : 2 : 1

This site's design and contents are copyright © 2008 Piotr Husiatyński. All views and opinions expressed are those of their authors.

Powered by Django, Vim and Arch Linux.