Internet Info, s.r.o. Lupa Root Měšec Podnikatel DigiZone Slunečnice Vitalianew Bomba Navrcholu Weblogy Jagg Woko Dobrý web Computer.cz SK: MojeLinky
Root.czBlogyBrain Dump

Linuxi, u Tutatise, funguj!

Tomáš Ehrlich, 11. 08. 2011, 20:59 v kategorii Linux,

Možná je to tím, že jsem lama. Možná je to tím, že jsem drsnej chlapík, který prostě přitahuje problémy. Nebo je naopak rád řeším, tak si je nevědomky uměle vytvářím. Ať už je za tím cokoliv, začíná mě to pěkně ...

Penetration
První distribuce byla Gentoo. Instaloval jsem ji týden. Pravda, nebylo to možná pro začátek nejlepší, ale chtěl jsem do toho proniknout. A trochu se to i povedlo (hlavně jsem poznal links a adom). S gentoo jsem vydržel až na vysokou, mezitím jsem se vyšvyhl do takového levelu, že instalaci jsem zvládl do dvou dní (open office binárně, jen jednou jsem ho kompiloval a za to G v startup okýnku to fakt nestojí).

Změna?
Chtěl jsem zkusit něco lepšího. Chtěl jsem nainstalovat systém a POUŽÍVAT HO. Oukej, možná jsem moc velká lama na Gentoo, tak zkusím něco lehčího. Fedora. Neprošlo. Ubuntu. Po půl dni prohledávání diskusních fór jsem si řekl, že jsem se od Gentoo nikam neposunul - stále kopíruju příkazy z webu a nevím, co dělám.

Změna.
Tak jsem se vrátil zpět k "ruční práci", ale přece jen jsem něco změnil. Místo Gentoo jsem dal Debian. Bylo úžasné sledovat, jak rychle se ty balíčky dokáží nainstalovat. Pravda, často se stalo, že mi něco nefungovalo, ale většinou se to povedlo opravit. Měl jsem nainstalovaný systém několik let a vůbec jsem neměl potřebu něco přeinstalovávat. Donutil mě až přechod na jinou architekturu.

Netbook
Ano, pořídil jsem si takový ten malý zmetek, který je moc velký na to, abyste ho dali do kapsy, ale moc malý na to, abyste na něm něco udělali. Jedu na rok pryč, cestovat a potřeboval jsem nějaký stroj(eček), kterým bych se připojil na net, napsal domů, občas mrkl na server a hlavně zazálohoval fotky z foťáku. Acer Aspire One, nejlevnější na Alze, dorazil během jednoho dne. Měl tam být Linpus Linux, byl tam MeeGo. Super. Barevné. Dokonce to funguje! Můžu to uspat, internet jede hned po zapojení kabelu, zesilování, zesvětlování. Jůů, fungující linux. Bohužel, zkusil jsem aktualizovat, abych se dostal na nejnovější verzi. Já vím, že bych se nikdy neměl dotýkat fungujícího systému, ale aktualizace do toho nepočítám. Po aktualizacím restart a ntb nenaběhl.

Znovu MeeGo
Co už, MeeGo vypadá krásně, přehledně, jdu do toho. Xmonad tam stejně instalovat nebudu. Stáhl jsem image, nahrál na USB, nainstaloval a hle, funguje. Nebo ne? Ne! Připojení na net nejede. Zapojím kabel, přes DHCP se nastaví vše potřebné, net funguje (PING), zkusím aktualizovat balíky nebo zapnout prohlížeč, net nejede. V logu nic, route -n bez změny, DNS bez změny, ifconfig bez změny. Ale přesto se něco změnilo, net nejede. Po dalším přepojení kabelu net jede, pak zas nejede. Hodiny ladění, na netu nikdo o tom nic neví. Nic. Nevadí mi, když mám čas a systém si pokutím dle svých potřeb. Ale teď ho chci používat, ne instalovat.

Zásadní otázka života, vesmíru a vůbec
A já se ptám: Co když nějaký BFU (jako já) chce funkční systém? Někdo si koupí Netbook, který mu po první instalaci spadne a když nainstaluje systém znova, tak to zas nejede a co pak? Nikdo se nebude drbat v konzoli ani prohledávat anglická fóra. Existuje nějaké distro, které opravdu funguje out-of-the-box? Opravdu mi stačí jen internet a příkazový řádek (zsh, openssh a adom si doinstaluju sám).

Ale ať to, prosím aspoň jednou, funguje.

[Edit]: Tak MeeGo už běží, aktualizace fungují a net se neodpojuje. Snad to vydrží.

TaskWarrior – lightweight todo manager

Tomáš Ehrlich, 10. 08. 2011, 18:07 v kategorii Linux, štítky:

PS: Nejdříve jsem tento post chtěl pojmenovat pěkně česky - "TaskWarrior alias úkolníček", ale znělo to jaksi divně...

Stalo se vám už někdy, že jste celé dopoledne strávili nad tříděním úkolů, přiřazováním priorit, deadlinů, tagů a dalších vymožeností? Pokud jste byli se svým výsledkem spokojeni, tak vás tato aplikace zajímat nebude, ale mě vždycky přišlo, že kdybych ten čas věnoval samotnému řešení úkolů, nemusel jsem nejméně polovinu psát.

A přesně o to jde TaskWarrioru - zaznamenávat úkoly co nejjednodušeji to jde. Tutoriál mluví za vše:

Nový úkol: task add <ukol>
Seznam: task
Dokončit úkol: task <id> done
Smazat úkol: task <id> del

To je pro základ vše. Pokud potřebujete rozlišovat úkoly pro jednotlivé projekty, stačí přidat project:<nazev>, pro deadline due:<date>, atp.

Pro ještě rychlejší práci je dobré vytvořit alias t=task a zapnout v shellu automatické doplňování.

Program je tak efektivní, že jsem asi jen půl hodiny strávil nad sepsáním všech úkolů, abych na konci týdne zjistil, že jsem polovinu neudělal... Ale tomu už asi žádný soft nepomůže.

SpaceChem – programming realtime

Tomáš Ehrlich, 28. 07. 2011, 20:04 v kategorii Brain Dump, Linux,

"Víš, lidé ve vesmíru umírají", řekla má matka, když mi bylo deset. Tenkrát jsem jí poprvé řekl, že chci prozkoumávat vesmír. Od prvního výcvikového dne na planetě Sernimir II uběhlo několik let. S hrnkem kávy pozoruji pustou krajinu, kterou zdobí několik reaktorů.

"Můžeme?" ptá se dívka za mými zády, se kterou jsem byl přidělen na tuto misi.

"Stačí říct... Co máme dnes na programu?"

"Potřebujeme vyrobit několik těžkých prvků, na planetě je obrovský nedostatek nerostných surovin."

"To zní nechutně, co máme k dispozici?"

"Vodní pumpu a obrovské zásoby Kryptonu," řekla dívka a napjatě očekávala reakci.

Pozvedl jsem obočí a pousmál se: "Nachystej fůzní reaktor a uzenáče, na snídani jsem zpátky..."

A o tom je SpaceChem. Na vstupu dostanete několik prvků nebo molekul, které musíte prohnat přes alespoň jeden reaktor, abyste získaly jiné prvky/molekuly na výstupu. K dispozici máte dvě vlákna, která můžete mezi sebou synchronizovat, několik instrukcí, které mohou vykonávat a také několik operací, kterými můžete prvky/molekuly upravovat. Můžete vytvářet/ničit chemické vazby nebo pomocí jaderné fůze získávat težší prvky. (Teda doufám, že je jaderná, mluví něco o fusion laser).

Aby to nebyla taková nuda tak na konci každé planety je jedna obranná mise, kdy na základu útočí krvežíznivý bagr, resp. šavlozubá piramida, a musíte ve správnou chvíli naplnit kyslíkové nádrže metanem, aby explodovaly, resp. naplnit obranou věž peroxidem vodíku a težkým uranem, abyste pyramidu mohly ostřelovat.

Na konci každého levelu se zobrazí histogram, jak jste na tom v porovnání s ostatními inženýry, takže můžete řešení optimalizovat na čas, počet symbolů nebo počet reaktorů.

Řešení může být jednoduché nebo poněkud složitější. Jeden jůtůb lepší než tisíc slov.

Jede to v linuxu, hra stojí $15 i s chlupama a na webu si můžete stáhnout demo, které obsahuje první tři planety (1. planeta je tutoriál).

Musím jít, jaderná fůze je skoro hotova a čeká mě malé překvapení s javorovým sirupem v salónku...

xmonad, zpátky v dlaždicích

Tomáš Ehrlich, 25. 08. 2010, 02:07 v kategorii WM, xmonad,

Zhruba před půrokem jsem musel opustit oblíbený ion3, protože nepodporoval Xineramu (teď jsem zjistil, že projekt nejspíš umřel úplně, viz link). Po krátké pauze v KDE jsem se konečně donutil vrátit zpět k dlaždicím, tentokrát vyhrál xmonad.

Než jsem zůstal u tohoto wm, zkusil jsem i jiné ze seznamu. Většinou jsem hledal statické dlaždice, jak jsem byl zvyklý z ionu, ale dynamický způsob správy oken xmonadu mě nakonec překvapil.

Konfigurace xmonadu je jednoduchá, dokumentace a ukázkové konfiguráky snadno dostupné, takže nic nebránilo kvalitni kutbě, aby začla (kutba od slova kutit). xmonad, doplnil dzen2, do kterého pajpuje conky, klasika ncmpc vystřídala amarok a po dlouhé době jsem spokojený. Konfigurák dodám až najdu slušné místo, kam ho uložit. Ale stejně je to jen další nechutný bastl, který nikoho nezajímá.

Ps: Tak mě napadá, že to možná bude číst někdo, kdo nikdy o dlaždicovém okenním manažeru neslyšel...

Dlaždicový wm (tilling wm) rozdělí plochu na několik rámu, které plně vyplňují obrazovku. Využíváte tedy maximálně prostor, bez zbytečného přesouvání oken myší. Dymanické tilling wm navíc vytváří tyto rámy dle potřeby. Pokud máte otevřené jedno okno, vetšinou zabere celou obrazovku. Pokud otevřete další, podle použitého modelu dlaždicování se obrazovka rozdělí na dvě části, atd. Modelů rozložení je spousta, další si můžete dopsat. Používam jednoduchý, kdy cca 3/4 obrazovky zabírá master window, a o zbylý sloupec se spravedlivě dělí ostatní okna. Pouze pro plochu, kde spouštím gimp, jsem vytvořil kombinaci několika layoutů, aby se mi staraly o všechny panely.

Pokud vám toto chování začne vadit, můžete mít klasické plovoucí okno, které ignoruje dlaždicování. Ale kromě mplayeru a dialogových oken, proč by to někdo dělal :)

Možná to zní trochu šíleně, ale po chvilce zvyku začne znít mnohem víc šíleně klasícká práce s okny. Pokud neusnete bez KDE, GNOME nebo jiných desktopových prostředí, můžete xmonad spouštěd přímo v nich. K takové zvrácenosti jsem se sice neodvážil, ale několik screenshotů dokazuje, že i to funguje.

A co by to byla za upoutávka bez ukázkového videa a eye-candy compizu...

MarkItUp widget pro Django

Tomáš Ehrlich, 19. 07. 2009, 01:59 v kategorii Django,

Začal jsem vytvářet widget pro Django, který zobrazuje markitup editor pro textarea. Samotný kód zatím není nijak obsáhlý a funguje jen pro jazyk Textile, ale vzhledem ke struktuře použitého editoru jsem s tím strávil pár hodin.

Do budoucna musím dořešit:

  • Náhled
  • Další jazyky: MarkDown, Html
  • Překlad rozhraní (tady budu muset sáhnout do zdrojáku editoru)

Balík jsem hodil na code.google.com, kdyby se někomu chtělo cokoliv přidat.

Ps: Než jsem s tím začal, tak jsem vygooglil jen jeden počin na launchpadu, ale protože nikde nebyl kód ke stáhnutí, tak jsem to radši napsal znovu. Teď jsem se tam díval a ten kód tam skutečně je :) Akorát implementuje MarkDown, takže kdo má radši, ať se mrkne...

Django – Optimalizace SQL dotazů

Tomáš Ehrlich, 18. 07. 2009, 12:09 v kategorii Brain Dump, Django,

Už jsem chtěl nadávat na způsob, jakým Django pracuje s relací 1:N, naštěstí to byl klasický RTFM problém.

Django debug toolbar umožňuje (krom dalších věcí) sledovat SQL dotazy, které framework poslal do databáze, jejich četnost i časovou náročnost, s jeho pomocí jsem tedy zjistil, že něco není v pořádku, když jsem ve výpisu viděl 4 duplicitní dotazy.

Vytvořil jsem jednoduchý modul news pro publikování krátkých zpráv (uživatel, titulek, obsah, datum). Implementoval jsem ho jako jednoduchý blog a s hrůzou zjistil, kolik SQL dotazů se musí vykonat, aby se zobrazil seznam příspěvků.

Problém 1: Používat RequestContext pouze jednou
Každé vytvoření instance třídy RequestContext následuje řada operací a databázových volaní v závislosti na použitých ContextProcessors. Processor Auth vyhledá informace o aktuálním uživateli, jeho zprávách a právech. Pro superuživatele 2 dotazy, pro běžného tuším tři.
Už samotné vytváření více instancí je naprostá blbost a programátorova neschopnost předávat funkcím context místo requestu, takže to nebudu dál rozebírat :)

Problém 2: Používat select_related() pokud dopředu víme, že s cizím klíčem budeme pracovat
select_related() způsobí, že data ze souvisejících tabulek jsou rovnou připojena JOINem, jinak je pro ně zavolán samostatný dotaz. Tento problém byl pro změnu způsobený programátorovou neschopností přecíst si pořádně manuál, takže to taky nebudu dál rozebírat :)

Tak i tak, odstranění těchto dvou problémů dost výrazně urychlilo práci s DB, takže pokud je někdo stejná trubka jako já, snad mu to urychlí hledání problému.

Mezinárodní den chaosu

Tomáš Ehrlich, 9. 06. 2009, 01:54 v kategorii Brain Dump,

Nedávno jsem našel, že i Pi ma svůj den. A jak tu teď sedím a mé chaotické myšlenky mi proudí hlavou, přemyšlím, jestli i chaos nemá svůj den. Přemýšlím, alias hledám na googlu, nic nedopřemýšliv (trpný, dokonavý tvar od přemýšlet alias nenaleznoušiv) si uvědomuji, že chaos ani nemůže mít svůj vlastní den. Pokud by se stanovil den v roce, který by byl věnován chaosu, stalo by se to pravidlem, což je v rozporu s chaosem a celý svátek by byl postavený na hlavu. Chaos se proto musí oslavovat naprosto nepředvídatelně a to nejlépe ve chvíli, kdy třeba pochybujete o iracionalitě čísla Pi.

Pokud někdo ví, kdy je v kalendáři Den Chaosu, tak mi prosím dejte vědět. Jinak ho pro letošní rok vyhlašuji na dnešek.

Proč zrovna dnešek? 09.06.2009 vůbec nevypadá chaoticky, naopak, je v tom jisté pravidlo. Pokud bysme ale hledali datum, které je nejvíce chaotické, hledali bysme ho podle nějakých pravidel a to je opět v rozporu s chaosem.

Co to ten chaos vlastně je:
Řecké slovo χαος znamená „primární prázdnotu, kosmický prostor“ (dle wiki). Chaos, třebaže to zní jakkoliv divně, byl na počátku všeho. Celý vesmír musel být stvořen z chaosu, protože ve chvíli, kdy začal vesmír existovat, se začla vytvářet jistá pravidla, podle kterého celý vesmír fungoval a funguje. Jelikož před vznikem vesmíru neexistoval ani čas, měl čistý chaos (pure chaos) jen velmi malou možnost realizace. Existuje i teď, jako základní stavební kámen pro všechna pravidla a zákony, protože tam, kde by bylo příliš složité definovat pravidla, slouží chaos jako jakési random-rules-generated-fluidum (fluidum, generující náhodná pravidla).

Každý systém lze definovat dle určitých pravidel. Pokud počet těchto pravidel diverguje, stáva se ze systém chaotický. Pokud byste si vymezili omezenou množinu z chaosu, našli byste, že je zde nespočetno vzorů, která se opakují. Narozdíl od libovolné množiny řádu, kde je počet těchto vzorů konečný.

Tím se dostáváme k definici chaosu, jako systému, jehož počet definujících pravidel se limitně blíží k nekonečnu narozdíl od řádu, kde se počet pravidel blíží k libovolnému reálnému číslu.

Chaos v přírodě:
Nejznámější příklad chaotického systému je nejspíš Brownův pohyb částic. Částice o určité hmotnosti a teplotě v určitém objemů, tím pádem za určitého tlaku se pohybují naprosto neurčitě. Pokud lokalizujete malou oblast, můžete úspěšně předvídat pohyb vámi vybraných částic. Rozšiřte množinu, počet definujících pravidel diverguje a celý systém se jednoznačně jeví jako chaotický.

Tento příklad určitě každý znáte, ale přemýšleli jste někdy o tom, jaký má tento jev vliv na vás? Jak to souvisí s velikostí živých organismů (včetně vás)? Spoustu těchto otázek řeší Erwin Schrödinger ve svém díle "Co je život". Doporučuju přečíst, teď jen ve zkratce: Naše tělo fungujé díky tomu, že v něm probíhá několik fyzikálních jevů statistické povahy. Např. osmotický jev. Pokud máte membránu, částice na obou stranách a definované pravděpodobnosti pro přechod částice na jednu nebo druhou stranu, je rychlost přesunu částic (tj. počet částic / pozorovaná plocha) chaotická veličina. Čím více zvětšujete pozorovanou plochu, tím více se rychlost ustáluje kolem jisté střední hodnoty. Nikdy to nebude konstanta, ale v určitou chvíli budou odchylky zanedbatelné. V tu chvíli se dostáváme do rozměru, kdy můžeme tento jev používat...

To je na jednu stranu super, na druhou stranu se z toho stáva tak trochu chaos. Zatímco některé systémy musíme zkoumat jen z části, protože jinak by počet definujících pravidel rostl k nekonečnu, jiné systémy musíme zobecnit... Což je super, protože kdybysme chaos popsali nějakým pravidlem, už by to nebyl chaos, ale nuda.

Na závěr video, jak lze uplnatnit chaos při chůzi...

Happy Chaos Day!
We wish you high entropy,
We wish you high entropy,
We wish you high entropy,
and lot of chaos!

Už je to zase tady…

Tomáš Ehrlich, 27. 05. 2009, 19:51 v kategorii Brain Dump,

"War is peace, freedom is slavery, ignorance is strength", George Orwel - 1984

Pre Scriptum: Všem se omlouvám, pokud jste již unaveni takovými články. Klidně tento ignorujte a označte jako spam, slouží jen jako brain dump...

Na začátek obecně:
O demokratické povaze tohoto státu pochybuji od chvíle, kdy jsem si začal uvědomovat, co to politika vlastně je. Nikdy jsem neměl dost síly ani vůle, abych se o to zajímal nebo tomu dokonce porozumněl. I přesto jsem si vytvořil vlastní názor, stejně jako Schrödinger rýpal do biologie, ačkoliv on byl mnohem úspěšnější.

Jedinec:
Každý z nás hodnotí svět kolem sebe dle svých vlastních měřítek. Tento postoj je navíc dost často proměnný i v čase jako součást našeho osobního vývoje a vlivu okolí (okrajové podmínky). A protože jsme si vybrali, že budeme žít ve společnosti jiných lidí, musíme vytvořit nějaký jednotný systém, který bude reprezentovat náš společný názor. Přitom to nemusí být přesně takový názor, který má většina lidí. Jen s ním musí většina souhlasit. Takový vážený pruměr, který se vůbec nemusí vyskytovat v souboru (ve statistice ne nereálná věc, v bežném životě na první pohled nesmyslná).

Systém a společnost:
Systém se musí přizpůsobovat společnosti, ne naopak. Samozřejmě existují i takové systémy, kde to neplatí, ale o těch teď ne... Každý jedinec ve společnosti se vyvíjí v čase, jedinci přibývají a ubývají a tedy i celá společnost je nadmíru dynamický systém. Domnívat se, že to, co vytvoříme teď, bude ideální i za pár desítek let, je utopie.

Návrh:
Demokracie mi přijde, že je dost dynamická na to, aby se přizpůsobila společnosti. Podmnožinou demokratického systému mohou být i všechny jiné systémy, které demokracií v konečném důsledku popírají, pokud to společnosti bude vyhovovat, proto si troufám říct, že je vhodná pro každou společnost. Ale díky tomu, že dokáže všechno, je v podstatě na nic. Je to jen základní princip, který musí získat nějakou formu dle požadavků společnosti (takový framework, který není nijak implementován).

Implementace:
Většina demokratických systémů obsluhuje příliš velké společnosti na to, aby jedinci přímo ovlivňovali systém samotný. Je potřeba jisté řídící vrstvy, která je zvolena společností a která pak ovlivňuje tento systém. U nás je těchto vrstev více, každá má jiné pravomoce a je jiným způsobem volena. Tím se dostáváme k té /ne/příjemné části.

Volby a hlasování:
Ve volbách, resp. hlasování, jedinci reprezentují svůj názor. vytváří se množina statistických dat, která se později dle jistých pravidel vyhodnotí a ovlivní buď jednu z řídících vrstev nebo samotný systém.

Ideál vs. realita:
V ideálním modelu by to tak fungovalo. Bohužel, teď už není problém v navrženém systému, ale v samotných jedincích. Strach z přijmutí, i když jen z části, cizího názoru nebo postoje vede až příliš často k činnostem, které tento systém ničí. Obecně se téměř vždy jedná o ovlivnění samotného rozhodnutí jedince, popř. větší části společnosti. Násilné (přesvědčování, vydírání) a nenásilné (ovlivnění názoru) vedou k tomu, že celá dynamika společnosti se zmenšuje. Jedinci takto ovlivněni přestávají z hlediska systému existovat a jejich váhu přebíra jedinec jiný. Limitně zkončíme u systému, který s demokracií ma již velmi málo společného, je jeho opravdu velmi limitní podmnožinou.

Ačkoliv se to nezdá, násilné přesvědčování je mnohem méně neškodné a to proto, že ho poznáte velmi snadno. Takové nenásilné ovlivnění názoru ve formě klamavé reklamy a falšovaných informací se nedá okamžitě prokázat a proto se to stává hlavní zbraní většiny demokratických systémů.

Stručně:

"Who controls the past, controls the future. Who controls present, controls past" - G. Orwell
(Kdo ovládá minulost, ovládá i budoucnost. Kdo ovládá přítomnost, ovládá i minulost)

A na závěr k aktuální situaci:
Už když jsem viděl první reklamní upoutávky volebních stran, bylo mi jasné, že je to přehnané a doufal jsem, že to neskončí dobře. Někde se to musí projevit. Nepamatuji si, že bych někdy předtím viděl otevřené urážky a hlášky: "Volte XX, nevolte YY", "Nedovolte XX, aby vládla". Reklama "by měla" mít formu prezentace informací, ne ovlivnění názoru. Rozkazovací způsob bych pochopil v reklamě na prací prášek, ale tady rozhodně ne. Co mě však zarazilo, byla dnešní reakce pana prezidenta: "Je to bezprostřední útok na elementární principy demokratické soutěže politických stran." S tímto výrokem sice naprosto souhlasím, avšak s tím rozdílem, že útok byl proveden již v době, kdy se objevily první billboardy. To, co se odehrálo během předvolebního období ze strany občanů byla jen stejně agresivní reakce, vyvolaná výše zmíněnou akcí. Ačkoliv pochybuju o demokratickém smyšlení tohoto státu, jsem rád, že je alespoň newtonský...

Post-scriptum:
Pro mě z toho plyne ponaučení - Ručník je skutečně naprosto monumentální záležitost a perfektní věc ve vesmíru. Nejen, že se s ním můžete bránit proti davu odpůrcu, mužete se jím také utřít, když se vám nepodaří ubránit, popř. ho použít jako účinnou zbraň na krátkou vzdálenost (na vývoji ručníků dlouhého doletu pracuje jistá severní země na východě Asie). Pokud se vám situace vymkne kontrole, můžete ho jednoduše použít jako škrtidlo a pokud ani to nepomáhá, tak létající koberec.

Ocením jakékoliv vaše názory, pokud v nich bude použito přiměřeně slov psaných CAPS-LOCKEM, přiměřeně interpunkce (především vykřičníků) a minimum (slovy nula) názvů existujících politických stran.

Pokud jste stratili dost času samotným čtením, vyjadřete alespoň svůj souhlas/nesouhlas pomocí /[-+]{3}/

Lineární algebra v C++

Tomáš Ehrlich, 22. 05. 2009, 14:52 v kategorii C++, štítky: ,

V nejbližší době začnu rozjíždět projekt na vytvoření programového prostředí pro optimalizaci betonových konstrukcí. Součástí tohoto programy bude rozhraní pro statickou analýzu konstrukce. Právě tady budu potřebovat nějaký nástroj na řešení lineární rovnic.

Knihovna lapack vypadá jako přesně to, co potřebuju. Díky své nadstavbě lapackpp (dříve lapack++) ji lze používat přímo ve zdrojovém kódu. V repozitáři Debianu jsem ji bohužel nenašel, instalace ze zdroje byla naštěstí bezproblémová (./configure --with-gnu-ld && make && make install). Jediný problém bylo v několika souborech, které includovaly vlastní knihovny pomocí #include , místo #include "", ačkoliv hledané soubory byly přímo v adresáři.

Příklad:
#include "lapackpp/lapackpp.h"
using namespace std;
// reseni soustavy lineárních rovnic
int main() {
int N = 2000;
// Matice koeficientu soustavy
LaGenMatDouble A(N,N);
// Vysledny vektor a vektor prave strany
LaVectorDouble x(N), b(N);
// Vygenerovnani nahodne matice a vektoru
for (int i = 0; i < N; i++) {
b(i) = i;
for (int k = 0; k < N; k ++) { A(i, k) = i * k + rand(); }
}
// ...a reseni.
LaLinearSolve(A,x,b);
return 0;
}

Řešení této soustavy o 2000 rovnicích trvá necelé 4s, pro N = 250 je potřebný čas 10ms, což dává docela dobré vyhlídky na interaktivitu grafického rozhraní programu.

Další informace je možné najít na webu lapackpp.

Globální proměnné prostředí

Tomáš Ehrlich, 29. 10. 2008, 23:03 v kategorii Linux, štítky: , ,

Jak říká můj linuxový guru, vždycky mám něco speciálního. Tentokrát dělaly problém locales.

Používám Debian, testovací větev. Příhlašuji se pomocí Qingy.

Soubory jsem nastavil:
/etc/locale.gen
cs_CZ.UTF-8 UTF-8
en_US.UTF-8 UTF-8
es_ES.UTF-8 UTF-8
fr_FR.UTF-8 UTF-8

/etc/default/locale
LANG="cs_CZ.UTF-8"

Nechal vygenerovat locales (locale-gen).

A přesně tady se můj osud liší od bežného spokojeného linuxového uživatele. Po přihlášení mám všude POSIX... Cpát to do .zshrc (popř. .bashrc) je zrůdnost, protože pak locales fungují jen v terminálu, programy stále používají POSIX (spouštět všechny programy z terminálu je zrůdnost ještě větší).
Většína howtu mi řekla, ať uďělám to, co jsem už dávno udělal... S GDM vše fungovalo správně. Až jsem se jednoho dne naštval a spustil cd /etc && sudo grep -r locale *

Zakopaný pes byl v konfiguračních souborech v adresáří /etc/pam.d

Tyto dva řádky mi tam chyběly:

session required pam_env.so readenv=1 # nacte /etc/environment
session required pam_env.so readenv=1 envfile=/etc/default/locale # nacte specificky soubor

Chápu, že to nejspíš všichni znáte, ale kdyby se objevil někdo stejně hloupý jako já, tak ať zbytečně negrepuje :)

P.s: Při pročítání konfiguráků PAM jsem zjistil další zajímavou vychytávku: Pokud obsahuje řádek auth required pam_nologin.so a vytvoříte soubor /etc/nologin (klidně prázdný), do systému se příhlásí pouze root. Na desktopu to asi nevyužiju, ale přišlo mi to tak super, že jsem se o to musel s někým podělit :)

P.s.s: Pro lepší pochopení locales doporučuji přečíst komentář č.8 od Stanislava Brabce. Zároveň mu děkuji za vysvětlení.