Máj 30, 2009

Nový web

Takže ďalšia zmena webu 🙂 Stránku som prehodil na nový portál postavený na WordPresse.

Keď tak zmapujem postupný vývoj stránok, tak najstaršia verzia je stále na nete. Využívala len statické HTML a bola aktualizovaná naposledy v 2001 – http://geocities.com/georgix.geo

Ďalšia stránka, kde napísal vlastný PHP kód bola kota543.host.sk, táto však nie je dostupná.

Následne som prešiel na Plone a použil ho ako CMS pre tvorbu osobnej stránky. Plone je síce fajn, ale pri každom upgrade som sa stretol s problémom, že sa niečo rozhodilo a nedalo sa úplne pohodlne manipulovať s obsahom stránky. Táto verzia je stále dostupná: http://jm.asinus.org

Ďalší pokus bolo využitie Tracu s blog pluginom. Toto už bolo úspešnejšie, ale Trac je určený predovšetkým na správu projektov a nepodporuje všetky vlastnosti, ktoré sa od bežného web portálu očakávajú. Je to predsa len programátorsky nástroj. Stránka je dostupná na: http://georgik.asinus.org

No a teraz je tu WordPress. Pracuje sa s ním pohodlne, pekne sa dá integrovať s funkciami ako je Google Analytics alebo FeedBurner.

BTW: Keby niekto chcel vlastný WordPress, stačí napísať, priestoru na serveri mám dosť 😉

Marec 20, 2009

Ako písať správne nerozšíriteľný kód

Vývojári majú kadejaké zvyklosti. Presvedčiť vývojárar, aby začal používať programovací jazyk správne, je vec skutočne náročná. Niekedy zostáva rozum stáť nad tým, čo všetko a v akých množstvách vývojári dokážu napísať. Tak schválne, malé cvičenie. Čo spraví toto:

*++b ? (*++b + *(b-1)) 0

Človek potom pozerá do kódu a nevie či má nejaké halucinácie. Odporúčam prečítať článok: How to write unmaintanable code . Článok síce vyzerá ako vtip. Môžem však potvrdiť, že každý riadok je založený na krutej realite. V kódoch som už videl všetko, čo je tam napísané. Nič nie je vymyslené a to je na tom to kruté.

Vývojári. Prosím, premýšľajte. Neubližujte iným vývojárom svojím kódom. Nepíšte kód, ktorý spôsobuje migrény, žalúdočné vredy a iné zdravotné problémy.

Január 30, 2009

Je vám smutno? :-((

Predchádzajúci článok na tému Je vám smutno? 🙁, otvoril cestu pre nový pohľad na IT. Dôkazom toho je aj veľký ohlas, ktorý som zaznamenal. Medzi tisíckami ďakovných listov, ktoré som dostal do redakcie, tu bol aj jeden inšpiratívny. Veľmi významná osoba vo svete funkcionálneho programovania mi dodala ďalšie zaujímavé výsledky. Toutou osobou nie je nik iný ako známy autor populárnej sociálnej siete konecna.net, majster lamba umenia: Lordrat.

Njskôr sa zameral na to, že niektoré programy berú prístup k užívateľovi esteticky pomocou ascii artu. Napríklad taký Clisp.

clisp
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2006

[1]> :-(
:-
[2]>

Vidíme, že aj napriek silnému tlaku copyrightu, Clisp zareaguje prekvapene a dalo by sa povedať, že skoro až bez komentára :-

Ponorme sa do histórie, spýtajme sa kompilátora jazyka C a uvidíme či sa dokáže vysporiadať nie len s null pointermi, ale aj smajl pointermi.

echo ':-(' | gcc - -E
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"
:-(

Jednoznačne vidíme snahu o komunikáciu, kde sa kompilátor ponúka alternatívne riešenia pre vašu náladu.

O nepochopenie v medziľudských vzťahoch vôbec nie je núdza. S počítačmi je to podobne. Napríklad Bash vás vôbec nepochopí a naznačí vám, že od vás čakal niečo úplne iné

$ :-(
bash: syntax error near unexpected token `newline'

Zostaňme ešte chvíľku pri shelloch. Zdá sa, že tcsh emócie nezvláda. Je však veľmi cenné, že to dokáže priznať.

tcsh
> :-(
Too many ('s.

Zsh zaryto mlčí, podobne ako tomu bolo u PHP.

No a na záver jeden shell, ktorý sa vás pokúsi presvedčiť, že by ste sa mali tváriť 🙂 a nie 🙁 . A je to Ash.

ash
Syntax error: newline unexpected (expecting ")")

Za všetky príklady ďakujem Lordratovi.

Január 25, 2009

Je vám smutno? :-(

Poznáte taký ten pocit, kedy je vám smutno a nemáte to komu povedať. V dnešnej digitálnej dobe veľa vecí rieši počítač. Prečo by nemohol riešiť aj vaše 🙁 ? Pýtali sme sa preto rôznych programov, čo vám dokážu poradiť na 🙁 náladu. Niektoré sa s vami zakecajú, iné vás pošlú do /dev/null, kde slnko určite nesvieti.

Ako prvého sme sa spýtali Hugs. Hugs ako už sám názov hovorí vyjadruje objatie:

Hugs> :-(
Command not recognised.  Type :? for help

Vidíme, že Hugs reaguje citlivo a na zamračeného smajlíka odpovie 😕

Pýtali sme sa preto ďalej. Python je v tomto ohľade veľmi solidárny, dokonca si s vami aj poplače a povie vám aký je svet strašný:

>>> :-(
  File "<stdin>", line 1
    :-(
    ^
SyntaxError: invalid syntax

Perl je trochu menej osobnejší, pragmatickejší a rozhodne sa s vami zahadzovať nebude:

:-(
syntax error at - line 1, at EOF
Execution of - aborted due to compilation errors.

Spýtali sme sa napríklad Fakulty Informatiky MU, čo vám povie, keď je vám smutno:

telnet fi.muni.cz 80
Trying 147.251.48.1...
Connected to fi.muni.cz.
Escape character is '^]'.
:-(
<?xml version="1.0" encoding="UTF-8"?>
    <title>Chyba 501 / Error 501 | Fakulta informatiky Masarykovy univerzity</title>

No, pekne zvalí to na vás, že je to vaša chyba.

Skúsme vniesť do emócii trochu logiky a spýtajme sa Yap-u:

[ Restoring file c:\ruzne\yap\Yap_4\bin\startup ]
[ YAP version Yap-4.4.4 ]

   ?- :-(.
[ SYNTAX ERROR at line 4:
 :-(
<==== HERE ====>

Logicky vám odpovie, že ak platí, že ste smutný, tak ste smutný. No poteš.

PHP pre istotu bude zanovito mlčať.

 :-(

No, ako vidíme, počítače zvládajú emócie na rôznej úrovni, niektoré sú solidárne iné nie.

Za inšpiráciu ďakujem Evke 🙂

Január 4, 2009

Siriel 3.5 je opäť hrateľný v DosEmu

Skúšal som spustiť svoju starú hru Siriel 3.5 pod Linuxom v emulátore DosBox. Na tú smolu z nejakého dôvodu emulátor grafickej karty S3, ktorý je v DosBoxe implementovaný nefunguje úplne ako by som čakal. Hra je akoby 2x širšia po X-ovej osy, takže mapy sa cez seba prekrývajú. A rozhodne nie je hrateľná. Experimentoval som s rôznymi nastaveniami DosBoxu, ale nepodarilo sa mi ho úspešne rozbehnúť. Na záver som výskúšal DosEmu.

DosEmu funguje výborne. Spracovanie grafiky bolo niekoľko násobne rýchlejsie. Jediný problém bol, že hra bežala akoby trochu rýchlejšie, hlavne audio. Laždopádne už bola hrateľná. Takže, ak chcete vyskúšať Siriela , spustite ho v DosEmu (dostupné len pre Linux) 🙂

Január 3, 2009

O Sirielovi a ako som hľadal herný engine.

Raz za čas ma prepadne myšlienka, že by bolo fajn znovu spojazdniť Siriela. Siriel, je hra, ktorú som za dávnych časov napísal na strednej. Je to adventúrka inšpirovaná sériou hier, kde bola hlavná postavička vajíčko Dizzy. Túto hru majú na svedomí Code Masters. Veľmi populárna bola hlavne na ZX Spectre a Didaktikoch M a Kompakt.

Prvá PC verzia Siriela bola napísaná v Pascale v neuveriteľnom rozíšeni 320×200 a v pozadí hrala hudba. A tak vznikol Siriel 1. a Siriel 2. Hra Siriel 3. už zostala nedokončená, pretože svet sa predsalen trochu posunul, čo sa týkalo grafiky na 640×480. A Tak začal vznikať Siriel 3.5 (je možné spustiť v DosBoxe). Tentokrát som ho už postavil ako engine, do ktorého sa dali dohrávať datadisky. K dispozícii bol aj level editor, kde si človek mohol nakresliť vlastný level. Počas roku, čo som na ňom pracoval sa mi podarilo vyrobiť tri veľké datadisky: First mission, Cauldron a Golden ball.

No, lenže sláva DOS Pascalu netrvala večne. TPU a assemblerovský kód na správu pamäte bol neprenositeľný a všetky pokusy o kompiláciu tohoto programu pod Linuxom, či Windowsom úspešne zlyhali. Niekoľko krát som sa pokúsil previesť refaktoring a zmeniť základné knižnice. Ale po dňoch úporného zápasenia s mojím stredoškolským projektom, som to vzdal. Predsa len štýl programovanie nebol ešte vybrúsený.

Po márnych pokusoch som si povedal, že Siriela skúsim prepísať do C++. S istým úspechom som sa pohol ďalej, ale objektový návrh nebol úplne dobrý a hlavne neustále pády C++ komplikovali vývoj. Keď si to tak spetne zrovnám, tak Pascalovský kód bol veľmi stabilný. A tak vznikol Siriel 4.

Vďaka C++ však vývoj napredoval pomaly a hra bola síce rýchlejšia, ale vývoj sa spomaľoval a spomaľoval, až ma to prestalo baviť. Po nejakom roku odmlky som si zas povedal, že by možno stálo za pokus napísať Siriela v Pythone. Tak som sa pustil do písania enginu Siriel 5. Tu boli výsledky k dispozícii okamžite a s použitím PyGame to bola radosť vyvíjať.

Voľného času oproti strednej škole však silne ubudlo a tak som musel projekt na dlhú dobu nechať tak. Dnes som mal chvíľku čas. Inšpirovaný Scummvm, na ktorom bežia staré hry pre DOS, som si povedal, že sa pokukám po nete. Či už niekto engine nespravil, že by som doň len nafrkal levely, grafiku a hudbu. Našiel som pár kandidátov.

U väčšiny enginov je problém, že sa snažia byť 3D a taký ja nechcem, mne bohate stačí 2D, ktorý pobeží aj na šuntových počítačoch a nových mobiloch.

Tak a tu sú výsledky prieskumu:

  • Scummvm – staré hry bežia v pohode, je k dispozicíí aj verzia pre Symbian, avšak samotní autori odporúčajú použiť niečo iné na vývoj nových hier.
  • Fenix – sľubný projekt, čo sa týka záberu. Avšak vyzerá, že už je mŕtvy. Namiesto dokumentácie, si človek prečíta MySQL error a posledný release bol 04.2007
  • LÖVE – veľmi prepracovaný projekt s aktívnou komunitou. Ako skriptovací jazyk využíva Lua. Engine je síce postavený nad rýchlym SDL, ale zdá sa, že autori neoptimalizovali vykresľovanie obrázkov.
  • PyGame – nejedná sa síce o engine, ale o knižnicu napísanú v Pythone, ktorá poskytuje wrapper nad SDL. Takže človek môže využiť rýchlosť SDL knižnice napísanej v C a flexibilnosť Pythonu. Takže momentélne je to môj najhorúcejší kandidát, nad ktorým budem pokračovať v stavbe enginu.

Keď to vezmem celé dokola, tak ma prekvapuje, že sa vývoj v oblasti herných ne3D enginov akosi nepohol dopredu. Možno som však len málo googlil 😉