Will Wright o Spore
Obejrzenie przemówienia Willa Wrighta na temat Spore (polecam umiejscowiony z prawej strony przycisk 'download', gdyż jest to niebagatelne 218 mb) otworzyło mi oczy zarówno na sens i cel istnienia demosceny, kierunek rozwoju gier, uniwersalizm projektowanych rozwiązań, jak również na przeróżne aspekty związane z uniwersum, które zamieszkują Troskliwe Misie.
Will Wright nie dość, że mówi o interesujących rzeczach, to na dodatek czyni to niezwykle ciekawie i wciągająco. Aż chciałoby się samemu tworzyć takie cuda.
projekt w portugalskim stylu
Przed świętami dostałem do napisania kolejny projekt z Publikacji Cyfrowych. Wraz z kolegą mieliśmy napisać skrypt do zamiany danych z bazy księgowości do postaci XML jaką życzy sobie otrzymać tamtejsze ministerstwo finansów (albo też urząd skarbowy, pewien nie jestem). W końcu projekt z prawdziwego zdarzenia, klient, założenia, a co najważniejsze, ktoś kiedyś będzie teog używał. Podobnie było poniekąd z poprzednim projektem z tego przedmiotu dla miejscowego szpitala, ale jakoś tam nie znając języka i nie uczestnicząc w spotkaniach jakoś nie widziałem jak to się w końcu skończyło.
No to zabraliśmy się do roboty, dane otrzymywane w CSV (oczywiście zbastardyzowanym, bo rozdzielanym średnikami), prosty programik do zamiany na XML jest, jakoś to wszystko obudować i zwalidować czy dane są dobrej postaci, czy nie wkradł się błąd. I pierwszy psikus, ów napisany w C csv2xml wysypuje się na plikach utf-16. Nie zmniejszyło to jednak mojego zapału i popełniłem krótki skrypt w Rubym, czyniący mniej więcej to samo, tyle że dla odmiany skutecznie.
Czas na chochlika numer dwa - stworzony plik xml (o płaskiej
strukturze, bo przecież stworzony z csv) nie ma żadnej z właściwości bogato rozbudowanej, drzewiastej struktury prezentowanej w załączonej schemie. Ba, nie ma nawet części z wymaganych pól. Można to nawet ustalić jednym rzutem oka, bez pomocy walidatora obsługującego xsd, napisanego w Javie, którego wynalazł mój kolega. No to w takiej sytuacji nie pozostaje nic innego jak wizyta u "klienta". Tam wykładowca mówi to co my obaj myślimy, że generowanie tego xmla z pdoanego csv nie ma najmniejszego sensu.
Efektem jest zmiana profilu naszych działań. CSVem się już zajmować nie będziemy, jedynie pozostaje napisać validator dla już jakoś tam wygenerowanych xmli względem podanego xsd. Po bliższym przyjrzeniu się jednak przykładowym danym (autentyczne dane osobowe pracowników uniwersytetu) i plikowi xsd dochdozimy do wniosku, że to chyba jakiś żart, bo nie ma między nimi żadnego podobieństwa. Pomijając już fakt, że według xsd dokument nie powinien posiadać znacznika korzennego (ang. root tag), co oile dobrze pamiętam, stoi w konflikcie ze specyfikacją xml. Ale to detal.
Istnieje możliwość, że to po prostu nowy format rządowych danych, a nie jakaś głupia pomyłka i będziemy wtedy zajmować się przerabianiem istniejących prowizorycznych skryptów, aby mieli w księgowości co w marcu wysłać. Ale w głębi serca mam nadzieję, że nikt nie będzie widział co, jak i dlaczego i stwierdzą, że nie mają pojęcia jak ten projekt by miał się dalej toczyć, więc go zakończą. Co by mnie specjalnie nie zdziwiło. I ucieszyło, bo niedobitki entuzjazmu też już uleciały.
Ale nie jest tak źle, skrypt csv2xml.rb się pewnie kiedyś przyda, a i walidator z użyciem xsd również. Bo te ostatnie trudno jakoś znaleźć w satysfakcjonującej postaci (czyt. offline).
za co lubię Ruby'ego
Interaktywny interpreter OCamla:
sharnik@wojt$ ocaml
Objective Caml version 3.08.3
# quit
;
;;
Unbound value quit
# exit;;
- : int -> 'a =
# exit 1 ;;
sharnik@wojt$
Interaktywny interpreter Ruby'ego (irb):
sharnik@wojt$ irb irb(main):001:0> quit sharnik@wojt$ irb irb(main):001:0> exit sharnik@wojt$
Preferuję języki funkcjonalne nad funkcyjnymi.
GitS OST + Ruby = projekt z lingwistyki komputerowej
Dzisiaj się obudziłem, ze na środę należy zrobić jakiś mini-projekt z Lingwistyki Komputerowej. Były na to chyba 4 tygodnie, ale co się będę spieszył, czas nie zając.. Szybciutko wybrałem zadanie - Napisz program, który wczytuje tekst i konstruuje sieć skończoną „przechowującą” wyrazy zawarte w tekście. - i zasiadłem do pracy.
Stwierdziłem, że to dobra okazja do zaznajomienia się z Rubym i tak rzeczywiście było. Pisanie sieci skończonej w C zajęłoby mi spokojnie kilka godzin (wliczając debugging i wyszukiwanie gdzie wychodze poza zakres tablicy, a gdzie nie dochodze do końca), natomiast mój nowy ulubieniec dając mi do dyspozycji zagnieżdżane rekurencyjnie tablice haszowe pozwolił mi na wykonanie zadania w godzinkę. Wliczając w to zapoznanie się z językiem, jego składnią, itd... Coś czuję, że szykuje się dłuższa współpraca ;)
A linijek kodu ile zaoszczędziłem.. Wersja robocza:
#przerobka danych wejsciowych
main = {}
string = gets.chomp
tab_string = string.split
tab_string.each do |str|
tab_str = str.split(//) # dziele string na tablice znakow
tab_str[tab_str.length] = '0'
#dodawanie do main:
i = 0;
hasz_tmp = main
while (tab_str[i])
if hasz_tmp[tab_str[i]] # takie przejscie istnieje, wiec nie nadpisujemy
hasz_tmp = hasz_tmp[tab_str[i]]
else # przejscie jeszcze nie istnieje - dodajemy
hasz_tmp[tab_str[i]] = {}
hasz_tmp = hasz_tmp[tab_str[i]]
end
i+=1
end
end
puts main
Czy wasz język to potrafi? ;)
Open GL - walka trwa
Wziąłem się w końcu za pisanie projektu w OpenGL.
Problem się pojawił przy bibliotekach. Najpierw chciałem pod windowsami, ale mnie pokarało. Dev-C++ ma jakieś dziwne skecze przy linkowaniu, MS Visual C++ 6 podobnie. Grrr..
Spróbowałem na linuksie. Zainstalowałem Mesa i jakoś działa. Pierwszy naryswany trójkąt (na razie biały) już za mną.
Tylko użeranie się z gVim mnie wkurza. Nawet prosto przeklejać kodu nie można. gEdit ma za duże literki jak na moje oczy. NEdit nie ma antyaliasingu i odstrasza mnie wyglądem.. Potrzebuje czegoś takiego jak Kate, tylko, że dla Gnome, bo nie chcę bez potrzeby bibliotek KDE instalować. Zna ktoś coś takiego?