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 ...
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ć ...
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 ...
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.
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 ...