Archiv kategorie Postgresql

Snížení spotřeby Ubuntu na Dell Latitude D630

Modern PCs are horrible. ACPI is a complete design disaster in every way. But we’re kind of stuck with it. If any Intel people are listening to this and you had anything to do with ACPI, shoot yourself now, before you reproduce.

Linus Torvalds

Dlouhou dobu jsem používal distribuci Gentoo s prostředím KDE. Prošla se mnou dva stolní počítače a dva laptopy (momentálně Dell D630) Nikdy jsem si nestěžoval, systém dělal opravdu to, co jsem po něm chtěl. Problémem ale je, že mnohdy člověk neví, co chtít může. Svět Linuxu se vyvíjí stále rychleji a sledovat nové možnosti není snadné a efektivní. Proto jsem si s koupením většího disku řekl, proč nevyzkoušet něco jiného – v tomto případě Ubuntu.

Po vyzkoušení Kubuntu, které bych subjektivně popsal jako ve výchozím stavu škaredé a objektivně jako nestabilní, jsem zakotvil u Ubuntu. Všechno hezky spolupracuje, veškerý HW funguje bez nastavování (což jsem jinak viděl jen u Mac OS X, který ovšem jede jen na stejných HW sestavách), pouze velkou část aplikací z Gnome jsem nahradil protějšky z KDE (Amarok, Krusader, Digikam, Kopete, Yakuake…). Přeci jen úmyslné omezování uživatele má smysl u samotného prostředí, ale u složitějších aplikací je kontraproduktivní (a skoro bych sáhl k známému Torvaldsovu citátu o dělání z uživatelů idioty). No a Qt aplikace v Gnome vypadají nesrovnatelně lépe, než GTK aplikace v KDE.

Jak už jsem řekl, používám laptop. Dell D630 je pro mne kompromisem mezi dobrou přenositelností a použitelností i bez externích periférií (jde o 14″ laptop, při běžné práci k němu mám připojen 22″ monitor, ergonomickou externí klávasnici a myš), nikdy bych si nekoupil 17″ přenosné topící těleso, které jsou dnes z pro mě nepochopitelných důvodů tolik v módě. Z důvodu výdrže při provozu na baterii, ale i toho, jak moc nebo málo topí při běžné práci, jsem si oblíbil nástroj PowerTop (který Intel vyvinul asi proto, aby odčinil své ACPI hříchy – viz citát výše a text níže). Při otestování spotřeby Ubuntu jsem ale narazil na dost nelichotivé srovnání s Gentoo.

S Gentoo byla má zkušenost vždy taková, že na baterii vydrží na stejném stroji při srovnatelných podmínkách déle, než Windows (ať už XP nebo Vista). Ubuntu se ale dle praktických zkušeností a i informacích o spotřebě z PowerTopu projevilo pěkně nenažraně. Konkrétně tam, kde jsem měl s Gentoo spotřebu kolem 20W, vzalo si Ubuntu 30W. A to je u laptopu opravdu velký rozdíl. Pokud by to nešlo řešit, tak bych se k Gentoo vrátil velmi rychle.

Vypínání všech možných i nemožných služeb a hledání po internetu nic moc neobjasnilo. Nicméně má posedlost logy něco odhalila. V starovacím logu se totiž objevilo pár chyb s ACPI. A to jsem u Gentoo na základě návodu řešil poskytnutím vlastní ACPI tabulky (a jsme zpět u výše uvedeného citátu – výrobci počítačů totiž často implementují ACPI zmršeně, tak, že to projde jen na Windows). To je postup sice obecně nedoporučovaný, cílem ACPI implementace na Linuxu (a ostatních UNIX platformách) je všechny tyto deviace řešit bez podobných hacků, ale bohužel někdy nezbytný. Tonoucí se stébla chytá, spotřeba mohla a nemusela s ACPI souviset, ale radši jsem to zkusil.

Zhýčkaný dokumentací Gentoo, kde člověk najde i postup pro konfiguraci konkrétního typu laptopu, jsem hledal postup pro update DSDT v Hardy Heronu. Našel jsem jen obecný postup týkající se úplně jiného problému. Uživatelé Ubuntu pravděpodobně podobné věci jako šílená spotřeba neřeší. Naštěstí postup zafungoval, DSDT tabulka je nahrazena. A co se týče spotřeby, problém byl vyřešen, opravou ACPI došlo ke snížení spotřeby na úroveň, která panuje pod Gentoo.

A tady je celý postup:

  1. Stáhněte si nezkompilovanou DSDT tabulku pro Dell D630 (i přes příponu gz jde o obyčejný texťák, tak se ho nesnažte rozbalovat) z adresy:
    http://acpi.sourceforge.net/dsdt/dl.php?id=956
  2. Nainstalujte do Ubuntu nezbytné balíky pro kompilaci a kompilátor iASL:
    sudo apt-get install build-essential iasl
  3. Vlezte do adresáře se staženou tabulkou a zkompilujte ji kompilátorem iasl:
    iasl Dell-Latitude_D630-A03-original.asl.gz
  4. Nemělo by dojít k žádným chybám a výsledkem by měl být soubor dsdt.aml. Ten je potřeba zkopírovat do adresáře /etc/initramfs-tools/ pod názvem DSDT.aml (nezkoušel jsem, ale prý je nutné mít název velkými písmeny):
    sudo cp dsdt.aml /etc/initramfs-tools/DSDT.aml
  5. Nyní je potřeba překonfigurovat jádro, aby novou tabulku používalo. Při budoucích upgradech jádra by to snad již mělo proběhnout automaticky:
    sudo dpkg-reconfigure linux-image-$(uname -r)
  6. Po dlouhé době restartujte. Ve /var/log/messages by měly chybět chyby ACPI a někde se objeví upozornění o náhradě DSDT tabulky.

To je vše, problémy s ACPI by měly být vyřešeny!

Diplomka

Nedávno jsem dokončil studium, součástí toho bylo i obhájení diplomové práce. Ta má se věnovala tématu „GIS jako systém pro komunikaci se zákazníky.“ Předesílám, že nejde o žádnou silně teoretickou práci, vzhledem k zaměření mého studijního oboru jde spíše o aplikaci poznatků. Předem se omlouvám všem, kteří by se do ní zanořili a byli uraženi její jednoduchostí.

Přemýšlel jsem, zda se zveřejněním počkat na dokončení popisovaného projektu. Bohužel ten není moc prioritizovaný a k vydání by tak nikdy nemuselo dojít. Snad to příliš nevadí.

V souvislosti se zveřejňováním diplomových a dalších kvalifikačních prací jsem nedávno narazil na službu, která umožňuje dát své práce k dispozici za drobnou úplatu. Upřímně musím říct, že to nechápu. Pokud se na to podívám ze strany autora, musím říct, že jednoznačně výhodnější se mi jeví prosté zveřejnění. Pokud jde o práci kvalitní, bude její volná dostupnost sloužit minimálně jako dobrá osobní reklama (a třeba pomůže na trhu práce). Těch pár korun, které by mohla přinést, náklady na tvorbu jistě neuhradí a pouze omezí skupinu lidí, kteří se k textu dostanou. Pokud nejde o práci kvalitní, tak je to v celku jedno – zpoplatnění nic nevytrhne.

Z hlediska čtenáře práce si nedokážu představit, že bych za podobný text platil. Studenti většiny vysokých škol mají přístup k mnoha kvalitním zdrojům; pokud je nutné za nějaký zdroj platit, většinou už jde o hodnotný text. Platit za necitovanou (tedy z hlediska kvality zdroje nepříliš ceněnou) diplomovou práci jen na základě abstraktu se mi nejeví jako příliš dobrá investice. Samozřejmě pokud ji nechci opsat, což je jednak jednání zavrženíhodné, a hlavně použít pro opsání zdroj dostupný (i když za úplatu) na internetu je velice hloupé.

No, zpět k tématu. Mou diplomovou práci naleznete pod názvem GIS jako systém pro komunikaci se zákazníky. Doufám, že aspoň někomu poskytne užitečné informace. Při jejím případném využití se prosím řiďte českým Autorským zákonem (citujte a odkazujte).

Konfigurace PostGISu pro souřadný systém S-JTSK

V poslední době si tak trochu hraju (no, vlastně trochu víc, je na tom tak nějak postavené téma mé diplomové práce, ale uznávám, že jsem přinejlepším „poučený laik“) s rozšířením RDBMS PostgreSQL PostGIS.

Kromě toho, že se stále přesvědčuju, že odhodit MySQL a plně přejít na Postgres byla dobrá volba (což je vcelku zajímavé, ono už po měsící, kdy používáte namísto MySQL nějakou normální databázi, tak nějak není cesty zpět), musím také semtam řešit nějaké ty problémy.

Zdrojem problémů z nejoblíbenějších jsou převody mezi souřadnými systémy. Pokud už získáte nějaká data pro ČR, tak souřadnice bývají v S-JTSK. Na druhou stranu například pro komunikaci s různými webovými mapami je zapotřebí používat světový standard WGS84. V podstatě do dnešní doby jsme používali poměrně komplikovanou cestu: Nejdříve převedli S-JTSK do S42, potom dále jakýmsi podivným PHP skriptem do WGS84. Naštěstí to nějak fungovalo.

Ale jak jsem říkal, hraju si s PostGISem. A ten jako správny GIS umí (prostřednictvím projektu proj) provádět převody mezi souřadnými systémy, které má popsané.

I přesto, že jsem v tabulce spatial_ref_sys (kde jsou definice jednotlivých souřadných systémů uloženy) nalezl několik systémů, obsahujících zkratku S-JTSK, použití ani jednoho nedávalo uspokojivé výsledky (některé nefungovaly vůbec, jiné se nestrefovaly o pár tisíc kilometrů).

No, není nad to trošku pohledat, a také najít. Bohužel ani použití odkazované definice nepřineslo naprosto dokonalé výsledky (tedy pokud se nesmíříte s chybou v řádu desítek metrů). Chtělo to další hledání, tentokráte poněkud časově náročnější, protože vysněný zdroj se ukrýval pod koncovkou .ppt. Ještě že už jsou dnes vyhledávače tak daleko, že indexují i binární paskvil. Tato práce uvádí úpravy, které zvyšují přesnost převodu. Neměl jsem šanci na nějaké zcela exaktní ověření, nicméně primitivní postup „vzít lokaci adresy v S-JTSK, převést ji a podívat se, jestli na google maps bude opravdu šipka na požadovaném objektu“ poukázal na dostatečnou přesnost převodu.

Definice systému na základě dvou uvedených zdrojů tedy vypadá třeba takto (do pole proj4text jsem za čárky musel vložit mezery, jinak zápis rozhodil zobrazení webu):

INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102067, 'ESRI', 102067, 'PROJCS["S-JTSK_Krovak_East_North",GEOGCS["GCS_S_JTSK", DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]], PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]], PROJECTION["Krovak"],PARAMETER["False_Easting",0], PARAMETER["False_Northing",0], PARAMETER["Pseudo_Standard_Parallel_1",78.5], PARAMETER["Scale_Factor",0.9999], PARAMETER["Azimuth",30.2881397222222], PARAMETER["Longitude_Of_Center",24.83333333333333], ARAMETER["Latitude_Of_Center",49.5], PARAMETER["X_Scale",-1],PARAMETER["Y_Scale",1], PARAMETER["XY_Plane_Rotation",90],UNIT["Meter",1]]', '+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.2881397222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +towgs84=570.83789, 85.682641,462.84673, 4.9984501,1.5867074,5.2611106,3.5610256');

Sám ji používám ve spojení s databází UIR-ADR, poskytovanou českou státní správou, která obsahuje souřadnice pro krajská města a bývalá okresní města středočeského kraje (a slibují více). Jen je nutné dát pozor, že při definici třeba přes WKT je nutné nejdříve zadat souřadnici y, poté X, obě navíc jako záporné hodnoty. Můj postup pro vytvoření sloupce location v tabulce adresa, který obsahuje souřadnice ve WGS84, je následovný (omlouvám se za případná prasectva a předem díky za opravy):

SELECT AddGeometryColumn('adresa', 'location', 4326, 'POINT', 2);
UPDATE adresa SET location = Transform(GeomFromText('POINT(-' || y || ' -' || x || ')', 102067), 4326);