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.

programowanie | 14 marca 2006 | Dodaj komentarz

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.

programowanie, ruby | 09 stycznia 2006 | 2 komentarze

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? ;)

programowanie, ruby | 04 kwietnia 2005 | 4 komentarze

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?

programowanie | 08 maja 2004 | 1 komentarz