Až Vám zčerná obrazovka, přejděte na Linux!

Proč používat Linux

pátek 26. září 2008

Smějeme se s Niklausem Wirthem

Dneska jsem reagoval na článek od Dagiho a chtěl jsem se ujistit na Wikipedii, jak se píše Niklaus Wirth. Když jsem si tak pročítal wikistať o něm, našel jsem jeho naprosto nádhernou citaci:
"Whereas Europeans generally pronounce my name the right way ('Nick-louse Veert'), Americans invariably mangle it into 'Nickel's Worth.' This is to say that Europeans call me by name, but Americans call me by value."

Při té příležitosti jsem si vzpomněl na jednu příhodu z doby, kdy Niklaus přijel na fi.muni.cz. Na večeři mu byl vykládán ftip (to, že se to v žádném případě nemůže zakládat na pravdě, je irelevantní):
Víte, kdo vymyslel název pro firmu Microsoft? Billova manželka na jejich svatební cestě na Honolulu.

Niklaus ho nepochopil. Když mu ho vysvětlili, prý zrudl až za ušima.
Z toho je vidět, že je to srandista, ale jemu vlastní inteligentní humor (něco jako Cimrmanův chemický: "H2SO8") je něco jiného než ten hospodský, byť z oblasti IT.

pátek 12. září 2008

Jeden programátorský...

Bavíja sa dva programátoři a jeden říká druhému:
"Dneskaj musím z práce skoréj, mamka má narozeniny."
Druhý: "Kolik má?"
První: "64"
Druhý: "Ja tož kulatiny ..."

A ještě přidám jeden matematický od Radoše z blogu.

úterý 2. září 2008

Talent dětí je třeba rozvíjet už od tří let

Právě jsem si přečetl článek hany Brixi shrnující a krásně popisující můj názor na výchovu dětí a rozvoj jejich talentu. Velmi podnětná je i diskuse, oboje určitě stojí za přečtení.
Mám-li to celé v krátkosti shrnout, tak budoucí úspěšnost jedince záleží kromě píle a talentu ovlivňují následující faktory:
1) Možnost rozvíjet svůj talent od útlého dětství, ideálně už od tří let.
2) Inteligence matky - a pozor, nikoli její dosažené vzdělání, ale její přirozená inteligence.
3) Cílená snaha rodičů podporovat talent dítěte. To ale znamená být schopen talent rozpoznat už u malochů.
4) Qalitní odborné vedení v kolektivní předškolní výchově, které nebude jenom o jejich hlídání, ale o dostatku podnětů a tvořivé činnosti. Nejlépe ve skupinách, ona týmová práce často násobí snahy jedince, což platí i u dětí, stejně jako možnost se s vrstevníky porovnávat a snaha vyniknout (leč ne za každou cenu).

Takže obecný rozvoj dítěte je třeba nenásilně podněcovat od mimina, talent podchytit ve třech letech, a od té doby na něm budou pracovat aktivní rodiče ve shodě s qalitním odborným vedením předškolních ústavů (o škole se ani nebavme).

A jelikož inteligence rodičů je výhodou, je třeba tuto informaci nacpat do hlavy puberťákům, protože qalitní studium podporuje rozvoj inteligence a tak sami můžou mít v budoucnu úspěšnější děti.

Na konec zbývá už jen dodat název jedné knihy od pastora Roberta Fulguma:
Všechno, co opravdu potřebuju znát, jsem se naučil v mateřské školce

pátek 29. srpna 2008

Oracle XE a openSuSE 11.0

Včera jsem dostal novou hračku - IBMku x3550 se dvěma QuadCore XEONy. Nainstaloval jsem tam 64bitové openSuSE 11.0 a pak jsem se vrhl do instalace Oracle. Momentláně vyvíjím na Oracle 10g Express Edition, takže šup na oracle.com, stáhnout RPMko s Oracle XE a šup tam s ním!

Ale ouha. Nebyla to žádná procházka růžovým sadem.

První zádrhel byl v tom, že Oracle nenabízí 64bitovou verzi. Nu což, řekl jsem si, 32bit by snad měl chodit. Prošla instalace i konfigurace pomocí /etc/init.d/oracle-xe configure (dal jsem jej na port 6060, na 8080 chci mít JBoss), databáze šla nahodit, ale na URL http://127.0.0.1:6060/apex jsem z linkse dostaval connection refused. Takže co s tím?

1) Firewall - rcSuseFirewall stop - nezabralo
2) IPadresa - links http://127.0.0.2:6060/apex ani links http://192.168.11.240:6060/apex
3) links - export DISPLAY=bilbo:0; firefox - nezabralo, firefox hazel totez

Takže přišel na řadu Google.
A)opensuse oracle express connection refused
4) našel jsem, že by to mělo být právě tím 32bitem na 64bitu. Tedy yast, Software-Software Manager, tam vybrat 32bitový pattern a Apply. Následně
/etc/init.d/oracle-xe restart; links http://127.0.0.1:6060/apex a opět totéž
5) Co kdyby to bylo portem? Všichni používají 8080... takže /etc/init.d/oracle-xe configure - smůla, already configured...
6) další link obsahoval, že sqplplus / as sysdba jim fungovalo. Testnu to a nemohl najít ORACLE_SID.
7) vzpomínám, jak se konfigurovalo prostředí - aha, oraenv - Error: dbhome cannot be find...
8) přenastavuju cestu, znova spouštím a nic, opět nenalezen. Dívám se, kde by mohl být a zjišťuju, že nikde :-(
9) po několika pokusech jsem přece našel, co jsem hledal: oracle_env.sh nemá žádný výstup, což mne zmátlo, ale less oracle_env.sh odhaluje pravou podstatu jeho fungování. Samozřejmě jsem v prvé chvíli zapomněl spustit to tečkově, takže export proměnných šel do háje, ale přece...
10)Opět sqplplus / as sysdba a tentokrát řve, že nemůže najít libaio.so.1
11)ldd sqplplus nehlásí nic chybějícího, takže to bude asi někde jinde. Zkouším se podívat do /lib a /usr/lib a ORACLE_HOME/lib a taky jsem ji nenašel.
12)rpmfind libaio našel jenom balíky pro Fedoru. Paráda.
B) opět Google: oracle libaio vrací hned na prvním místě oracle libaio. Jsou tam zdrojáky, takže je tahám.
C) během tahání zkouším oracle opensuse. Hned na prvním místě je Oracle on OpenSuse. Čtu to už potřetí, přestože tam o XE nikde ani zmínky, ale stálo to za to. Na konci, téměř neviditelně, je řádek:
Alternatively if you don't want problems in the installation of oracle 10g or 11g on openSUSE 11.0 (64bit) you can use this script doris1.1d.sh. This script will automate the setup by downloading from Yast dependencies, sorting out all the 32bit and 64bit libraries and linking where required. The purpose of this script is not to install Oracle but just to get the system ready for installation. Own risks policy applies. (root@localhost# sh doris1.1d.sh suse11 10g)

Myslel jsem, že mně vomejou.
13) Stáhnout skript a pak už jen:
root@localhost# sh doris1.1d.sh suse11 10g

rpm -e oracle-xe-univ; rpm -i oracle-xe-univ-10.2.0.1-1.0.i386.rpm

/etc/init.d/oracle-xe configure

links http://127.0.0.1:6060/apex a ejhle, už po mně chce heslo a lze se tma přihlásit!

Jaké z toho plyne poučení? Pochválen buď každý, kdo své znalosti promění do perfektně fungujícího skriptu...

pondělí 18. srpna 2008

neděle 17. srpna 2008

oRESTované dotazy

Nedávno do emailové konference na java.cz přišel dotaz, jak co nejlépe do RESTu nacpat různé filtry.

Zdravim konfereneciu

Zacinam s REST a zakladne principy som snad pochopil (CRUD ->
POST,GET,PUT,DELETE). Ale neviem presne ako realizovat filtrovanie
zaznamov.

Napriklad:
mam zoznam uzivatelov ktory maju polozky: age, firstName, lastName,
atd. Ak chcem nacitat vsetky zaznamy tak dam GET request na adr.
'http://adresa.server/users' vrati mi zoznam vsetkych uzivatelov. Ale ak
by som chcel filtrovat zaznamy podla kriterii napr:
firstName='James' AND lastName!='Bond' OR age>40
Akym sposobom sa dotazovat k tymto zaznamom ? Napadaju ma nasedovne
sposoby:

1) cely dotaz dat do URL:

http://adresa/users/search/v1,s1,c1,o1: ... :vn,sn,cn,o1/orderby/xyz/...

n=1..m
vn - variable, napr: 'firstName'
sn - string, napr: 'James'
cn - condition, napr. 'eg' = equals, 'gt' = greater than, ...
on - operator, napr. 'a' = AND, 'o' = OR

V tomto pripade by sa cely dotaz zapisal do URL a po zavolani GET
request by sa vratil vyfiltrovany obsah. Tento sposob mi pripada asi
najviac RESTful, ale ta url by bola asi dost dlha v niektorych
pripadoch.

2) dotaz zakodovat do XML






V tomto pripade by sa muselo XML asi poslat cez request POST alebo PUT a
nasledne spracovat, ale metody POST, PUT sluzia na ine ucely a asi to
nie je 'validne' REST riesenie.

3) nejak inak :) rad sa necham poucit ...

RM


Jsem moc rád za tento dotaz - zdá se, že s RESTem konečně začíná koketovat
více a více lidí.

Jeho problém je hned v několika omylech, které pramení z chýru kolem RESTu:
a) REST != CRUD . REST je o definici malého množství operací nad všemi
zdroji daného systému. Jako příklad uvedu HTTP operace HEAD a OPTIONS.
b) REST != HTTP . HTTP je pouze jedním z RESTových protokolů, který se typicky
používá jako transportní protokol pro jiný RESTový protokol.
c) URI nereprezentuje přesnou datovou podobu zdroje pro READ operace.
URI reprezentuje zdroj jako takový, je to tedy jeho identifikace. Každá operace může být parametrizována. Podstatne je, aby opakované READ operace na stejný zdroj vracely btť různé, ale sémanticky shodné reprezentace zdroje. Jako příklad opět uvedu onu HTTP operaci HEAD, ktera vrací pouze "metadata" zdroje.

Co z toho plyne, tedy jaké řešení navrhnout?

Pro každý typ zdroje zavést jako zdroj kolekci vsech zdroju daneho typu, na teto kolekci zavést operaci QUERY či FILTER, která bude mít logicky dva parametry:
1) URL kolekce
2) vlastní query

Pak už záleží čistě na libovůli autorově, jaký transportní protokol použije (no dobře, bude to HTTP, že? :-D ) a jak se naimplementuje (tak jo, jak se na HTTP udělá binding onoho protokolu). Pro HTTP lze použít jak query string GETové operace (ta je mimochodem také dvouparametrová, URL a QUERY_STRING, přičemž druhý parametr je nepovinný) nebo POST a query posílat v datech.

pátek 15. srpna 2008

Už mne ti Phisháci fakt iritují

Tak jsem si pravě objevil ve FireFoxu zafišované CSSko. Chvilku jsem Gůglil a našel jsem jasné vysvětlení - někdo se snaží pomocí Googlovských reklam nečistě vydělávat, když na háček nechytí vás, ale váš prohlížeč.

Doufám, že bude brzo čapnut. Víte, takový přístup k síti se mi z duše protiví.

Takže si projistotu dejte
grep -rl a0b4df006e02184c60dbf503e71c87ad /

(nebo obecněji hledat řetězec
expression(eval(unescape(

Tak možná zjistíte, že buď Vám v systému nechal tesař díru, nebo jste poskytli svůj browser jako nástroj k vylepšení něčí peněženky.

V druhém případě je dobré dát vědět adminovi serveru, odkud vám ten humus přišel.