středa 30. prosince 2009

Install Fedora 12 on Dell Latitude D630 - wifi

Update: see update for Fedora 15

After short struggling wifi is now working well. I have used ndiswrapper and Dell driver (use service tag to find it). For me it was ftp://ftp.us.dell.com/network/R242906.exe. Open the downloaded file using file-roller (archive manager) and extract bcmwl4.inf and bcmwl5.sys.
After installing ndiswrapper packages following commands installed the card:

ndiswrapper -i bcmwl5.inf
ndiswrapper -m
ndiswrapper -l


The last command shall say something similar to:
bcmwl5 : driver installed
device (14E4:4328) present (alternate driver: ssb)


Now add line ndiswrapper to /etc/modules and a line
blacklist ssb
into /etc/modprobe.d/blacklist.conf.

Try modprobe ndiswrapper now and see whether NetworkManager will detect wifi networks in the range .

pondělí 28. prosince 2009

running Bluez 4.x without GUI

Recently I have tried to run bluetooth on my Fedora12 installation. It seems bluetooth works fine only if GUI is used. BlueZ (Linux bluetooth stack implementation) heavily relies on DBUS. Unfortunately there is no support for pairing devices (PIN entry) when no GUI is available. Every post on the internet regarding non GUI bluetooth setup is just useless as it references pre 4.x bluez setup. Bluez seems to have changed a lot in 4.x versions. There is almost no documentation.

The recommended way was to use the default passkey-agent. But it seems not to work anymore.

Finaly I was able to pair may device using sample agent found in bluez sources test/simple-agent which is configurable. I have modified the source slightly to pair using constant PIN. When started the code bellow will respond with constant PIN to every pairing request. The constant PIN is 1243.

Usage: store the following code into a file. Change attributes of the file to be runnable (chmod a+x filename). Then run the script. Then you will be able to pair devices using the default PIN 1243.

#!/usr/bin/python

import gobject

import sys
import dbus
import dbus.service
import dbus.mainloop.glib

class Rejected(dbus.DBusException):
_dbus_error_name = "org.bluez.Error.Rejected"

class Agent(dbus.service.Object):
exit_on_release = True

def set_exit_on_release(self, exit_on_release):
self.exit_on_release = exit_on_release

@dbus.service.method("org.bluez.Agent",
in_signature="", out_signature="")
def Release(self):
print "Release"
if self.exit_on_release:
mainloop.quit()

@dbus.service.method("org.bluez.Agent",
in_signature="os", out_signature="")
def Authorize(self, device, uuid):
print "Authorize"
return

@dbus.service.method("org.bluez.Agent",
in_signature="o", out_signature="s")
def RequestPinCode(self, device):
print "RequestPinCode"
return "1243"

@dbus.service.method("org.bluez.Agent",
in_signature="o", out_signature="u")
def RequestPasskey(self, device):
print "RequestPasskey"
return dbus.UInt32("1243")

@dbus.service.method("org.bluez.Agent",
in_signature="ou", out_signature="")
def DisplayPasskey(self, device, passkey):
print "DisplayPasskey"
return

@dbus.service.method("org.bluez.Agent",
in_signature="ou", out_signature="")
def RequestConfirmation(self, device, passkey):
print "RequestConfirmation"
return

@dbus.service.method("org.bluez.Agent",
in_signature="s", out_signature="")
def ConfirmModeChange(self, mode):
print "ConfirmModeChange (%s)" % (mode)

@dbus.service.method("org.bluez.Agent",
in_signature="", out_signature="")
def Cancel(self):
print "Cancel"

def create_device_reply(device):
print "New device (%s)" % (device)
mainloop.quit()

def create_device_error(error):
print "Creating device failed: %s" % (error)
mainloop.quit()

if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
print "Step 1"

bus = dbus.SystemBus()
print "System bus acquired"

manager = dbus.Interface(bus.get_object("org.bluez", "/"),
"org.bluez.Manager")
print "manager acquired"

path = manager.DefaultAdapter()
print "Manager path acquired"

adapter = dbus.Interface(bus.get_object("org.bluez", path),
"org.bluez.Adapter")
print "adapter acquired"

path = "/my/agent"
agent = Agent(bus, path)
print "Agent object created"

mainloop = gobject.MainLoop()
print "Main loop created"

adapter.RegisterAgent(path, "NoInputNoOutput")
print "Agent registered"

print "Starting loop"
mainloop.run()

#adapter.UnregisterAgent(path)
#print "Agent unregistered"

pondělí 21. prosince 2009

... boot from USB with non USB BIOS

Willing to boot an old computer with no BIOS support for USB boot and the only media you have is a flash thumb drive. If it happens and you face such problem take a look at PLoP.

You can install the boot loader in many different ways. My case: Windows were installed on the target PC. I installed bootloader using plpgenbtldr-0.7.zip according to its readme. Rebooted .... and ... computer is booting using USB flash.

středa 16. prosince 2009

Problém s ASUS 500g Premium

Dlouhou dobu využívám ASUS 500g Premium. Včera přestal fungovat. Seděl si u okna a z ničeho nic přestal reagovat. Zdálo se, že se z něj stala nepotřebná cihlička (brick). Všechny kontrolky všech síťových portů svítily, WAN a POWER kontrolka byly zhasnuté, krabička nereagovala. Mrtvo.

Začal jsem zkoušet, dokonce jsem se uchýlil k "PIN 9" triku, kterým se má zařízení zresetovat do továrního nastavení. Nic nepomohlo. Hledal jsem a hledal až jsem našel informaci o problémech se zdrojem, které se měly projevovat stejně jako ty mé.

A problém byl vyřešen. Mezi mnoha zdroji, které se mi doma potulují jsem objevil jeden, který vyhovoval jak elektricky (5V/2.5A), tak konektorem a huráááá.

Moje oblíbená krabička se rozeběhla. Následkem předchozích pokusů sice zcela vymazaná, ale zato teď běží se zbrusu novou verzi systému OpenWRT Kamikaze 8.09.2, která mimo jiné zřejmě vyřešila problematickou kvalitu signálu adoptované Atheros WiFi karty.

středa 2. prosince 2009

... italské minuty

Po příletu došlo k zásadnímu odhalení. Bylo mi vyjeveno, proč se prasečí chřipka jmenuje prasečí. Na Milánském letišti při čekání na zavazadlo se ukázalo, ze v ochranu před touto zákeřnou o to více však neškodnou nemocí lidé berou respirátory, které jim dávají vzhled čuněte s rypákem.

V zápětí, lehce rozčilen přeháněním hrozby chřipkou, mě italský taxi řidič vyškolil v oboru úcty k životu a zdraví, když mi názorně ukázal, jak značky omezující rychlost přeměnit ve zbytečné dekorace, jak nakouknout do kufru auta vpředu jedoucího a na závěr mistrovské dílo v několika reprízách s názvem: "Plná čára není zeď. A to ani tehdy, kdy za zatáčku fakt není vidět".

Dnes večer itálie vytála žolíka v podobě večeře ještě bohatší, než lze vyjádřit slovem opulentní:

  • pršut se zeleninou

  • brokolicový závin

  • "sekaná" s dušenou kapustou

  • zelenina smažená v těstíčku

  • polenta se sýrovou pěnou

  • taštičky s dýňovou náplní

  • rizoto

  • panenka pečená v listovém těstě

  • zákusky 3 druhů (čokoládový řez, banánový řez, kávové cosi)

  • espresso

  • a k tomu všemu dobré vínko



Uffff .. jdu trávit

úterý 17. listopadu 2009

... trable s licenčním ujednáním

Poklidnou hladinu světa IT tu a tam zčeří informace o bezpečnostní díře v tom kterém prgrámku, tu a tam šplouchne vlnka rozbrojů mezi zastánci různých platforem a v poslední době čím dál častějí hladinu povážlivě rozkymácí události spojené s duševním vlastnictvím, patentováním a kradením myšlenek a obecných postupů a v neposlední řadě i SW pirátství.
Jedna taková vlnka došplouchla až na mě skrze firemní správce více či méně úspěšně spouštějící kontroly SW čistoty na mém notebooku. Nepřipraveného mě zastihl dotaz kolegy, zda nevím, jestli na firemním notebooku může mít ovladače k domácí tiskárně a skeneru v jednom.

Odpověď jsem neznal, ale obecně zaujat touto oblastí jsem nahlédl do licenčního ujednání HP kteréžto firmy výrobek (PSC 1510) vlastním. Licenční ujednání v češtině, aby člověk pohledal. Pohledá li, neuspěje. S vděkem vzpomínaje na třídního učitele z gymnázia, angličtináře, jsem pročetl licenční ujednání. A ... světe div se! Zjistil jsem, že jsem SW pirát. Licenční ujednání k ovladačům pro toto zařízení (a všecha obdobná) obsahuje tuto větu:
HP grants you a license to Use one copy of the HP Software. V překladu: HP uděluje licenci k použití jedné kopie software HP. Mám dva počítače. Na obou mám instalovaný ovladač k mé tiskárně. Jsem pirát.

Na zákaznické lince HP mi bylo řečeno (po konzultaci s kolegou "co tomu rozumí"), že si klidně mohu SW instalovat na více počítačů, pokud ho nebudu prodávat.

Jak se zdá, ne vždy platí, že "Co je psáno, to je dáno". Tak takhle to právní povědomí nevybudujeme, soudr.... pánové. Sám autor SW vám radí, abyste se jeho licenčním ujednáním neřídili. Jak máme vědět, že jindy to ale opravdu myslí vážně. A nebo hůře. Co když jen říká: "Nech to být" a jednoho dne přijde a ukáže prstem. Těžko říci, co je horší...

... ale nejhorší jsou stejně trpaslíci, co všude vlezou

středa 11. listopadu 2009

... sleepless night full of programming and debugging

I didn't sleep last night. There is a nasty bug in the Java XML parser. Under certain circumstances (inherited default namespace with together with attributes present) the parser presents a rich imagination. In this case an element namespace properties are wrong. No namespace URI is assigned to the element and the null namespace is attached.
As a result when serialized extra namespace definition appears xmlns="" and as a result the element is not bound to any namespace. A colleague of mine performed an excellent analysis of the problem.

Here is a result of the sleepless night (traverseDom method walk the tree recursively calling processNode on each node:

traverseDom(doc.getDocumentElement(),
new NodeProcessor() {
public void processNode(Node n) {
//TODO watch this in case the java xml parser will get better in future versions
//TODO watch this for general purpose XML signature processing where such elements may be legal
//fix parser error - we can afford this as no element is unqualified
// in case there is a unqualified element with some attributes with default null namespace
// it is concidered as an error produced by buggy parser
if (n.getNodeType()==n.ELEMENT_NODE &&
n.getAttributes().getLength()!=0 &&
n.isDefaultNamespace(null) &&
n.getNamespaceURI()==null){
String prfx=n.lookupPrefix(n.getParentNode().getNamespaceURI())
n.getOwnerDocument().renameNode(n,
n.getParentNode().getNamespaceURI(), prfx+":"+n.getLocalName());
}
}
}, true);

pátek 30. října 2009

... zamrzlý statista

... určitě znáte scény z filmů a pohádek, kdy se zastaví čas. Svět je z ničeho nic plný zamrzlých statistů a jen pár vyvolených se mezi řadami nehybných postav prohání stojícímu času navzdory. V této sezóně poprvé na bruslích jsem tohle zažil v reálném životě. Mezi poklidně více či méně stabilně se klouzajícími bruslaři se jak vítr mezi stromy prohání pár bohem nadaných létajících kluků a holek. Oni poráží čas a snad i fyzikální zákony a létají křídel nemaje. No a hádejte, do které skupiny jsem patřil já ;-)

sobota 3. října 2009

Klábosilův noční přesun 2009

Poprvé jsem se téhle příjemné akce zúčastnil v roce 1993, jak prozradila startovní listina všech historických účastníků (cca 2000 osob) od prvního ročníku do letošního 16. Mezi těmito ročníky mám absenci.

Letos tedy po 16 letech další účast s rodinou. V půl deváté večer už pod rouškou tmy jsme byli naloženi do autobusu a dle pokynu si zavázali šátky na oči. Pak už se jelo levá zatáčka, pravá zatáčka, přejezd. Pátrání v paměti, kam že by nás to mohli vézt a pak už výsadek. Na křižovatce v lese jsme nasbírali indicie a podle nalezeného itineráře jsme se dali na pochod. Bylo 21:25.

Nebe se postupně vyjasňovalo a na volných prostranstvích zalitých světlem měsíce téměř v úplňku jsme si připadali málem jako na polední procházce. Baterek nebylo potřeba i stíny měsíc dokázal vykreslit.

Párkrát přišla ke slovu buzola a pochod napříč lesem podle azimutu, častěji se nám podařilo najít vyšlapanou nebo vyjetou cestičku, silnici nebo koleje. Postupně jsme si každý našel také svou vlastní louži, kam se nám noha zabořila až po kotník.

Před čtvrtou hodinou ranní nám patřily všechny kontroly a už před námi na stole voněl cílový gulášek. Před pátou už v posteli jsme litovali účastníky pochodu, kteří se ještě potulovali po trase.

Naše patnáctikilometrová trasa:

čtvrtek 1. října 2009

... naletěl jsem - nečekané pokračování

Nedávno jsem si tu poplakal, jak jsem v jedné nejmenované ČSOB rušil účet a naletěl jsem. Ta legrace mě stála 240Kč, které jsem vyhodil za zrušení účtu na pobočce. Bez varování a upozornění od osobní bankéřky. Za zrušení přes internet banking dáte 8x méně.

Již jsem si své závěry udělal a smířil jsem se s tím, že jsem hlupák. Když tu včera zazvonil telefon a já uslyšel hlas ze záhrobí. Osobní bankéřka. A že prý mi končí výpovědní lhůta za týden a že mi tedy bude zrušen účet... a..... Už jsem byl připraven jí slušně poděkovat za případné nabídky dalších služeb.

Jenže ona řekla něco, co mě přivedlo do varu: "Na vašem účtu je bohužel záporný zůstatek, takže se nedá zrušit."

Následoval zhruba takovýto hovor:

Já:"Já vím naprosto přesně, proč je na mém účtě záporný zůstatek. Překvapivě jste mi naúčtovali 6xzrušení souhlasu s inkasem po 40 korunách. Rušil jsem účet osobně na pobočce a přijde mi silně neetické, že jste mě neupozornila, že jedním podpisem, který já jsem považoval za formalitu, přijdu o více jak 200 korun. V každém obchodě musí mít cedulku s cenou i u obyčejného rohlíku, jen v bance ne."

OB (osobní bankéřka): "Nepovažovala jsem za nutné vás s tím seznamovat. Někteří klienti tohle neřeší."

Já: "Mě tedy více jak 200 korun nepřijde jako zanedbatelná částka, kterou bych nechtěl řešit. Moje chyba byla, že jsem neznal sazebník, nebo spíše, že jsem si neověřil jeho detaily, ale čekal bych, že tuto zásadní informci dostanu od vás. Vaše postupy se mi nelíbi a znovu opakuji, že mi přijdou silně neetické."

OB:"Tohle já vyřešit nemohu. Budu to muset předat paní ředitelce."

Já: "Předejte to prosím paní ředitelce. Rád si s ní o tom promluvím. A kolik vlastně dělá dluh?"

OB: "Jedenáct korun. A nějaké poplatky k tomu"

Já: "Předejte to prosím paní ředitelce."

No a to je zhruba celé. Bohužel jsem neměl tolik duchapřítomnosti, abych bance řekl, že když jim nepřipadalo podstatné mi sdělit, že mě oholí o 240 korun, mě zas je celkem jedno, že mám u nich dluh ve výši korun jedenácti. S nějakými těmi dodatkovými poplatečky, samozřejmě. A taky uročíček zanedbatelný kontokorentní by se jistě našel.

... pokračování příště ... buď po hovoru s paní ředitelkou, nebo až dorazí upomínka/exekuce? kdo ví....

středa 30. září 2009

Translate LANGID to human readable string from

I needed to display language settings of a Windows system. No utility was available in the wild. Here I present and offer a simple utility which displays language string acquired by GetSystemDefaultLangID() and GetUserDefaultLangID(). Source included for any use.

Well no easy way how to attach file. Just a source for now:
/*
This code is public domain. No restriction to use for any purpose.
*/
#include "stdafx.h"
#include "displaylang.h"
#include

typedef struct _langinfo {
int id;
char *desc;
char *code;
char *scriptTag;
char *ansiCP;
} LangInfo;

LangInfo table[]={
{0x0436,"Afrikaans (South Africa)","af-ZA","Latn","1252"},
{0x041c,"Albanian (Albania)","sq-AL","Latn","1252"},
{0x0484,"Windows Vista and later: Alsatian (France)","gsw-FR"," "," "},
{0x045e,"Windows Vista and later: Amharic (Ethiopia)","am-ET"," ","Unicode only"},
{0x1401,"Arabic (Algeria)","ar-DZ","Arab","1256"},
{0x3c01,"Arabic (Bahrain)","ar-BH","Arab","1256"},
{0x0c01,"Arabic (Egypt)","ar-EG","Arab","1256"},
{0x0801,"Arabic (Iraq)","ar-IQ","Arab","1256"},
{0x2c01,"Arabic (Jordan)","ar-JO","Arab","1256"},
{0x3401,"Arabic (Kuwait)","ar-KW","Arab","1256"},
{0x3001,"Arabic (Lebanon)","ar-LB","Arab","1256"},
{0x1001,"Arabic (Libya)","ar-LY","Arab","1256"},
{0x1801,"Arabic (Morocco)","ar-MA","Arab","1256"},
{0x2001,"Arabic (Oman)","ar-OM","Arab","1256"},
{0x4001,"Arabic (Qatar)","ar-QA","Arab","1256"},
{0x0401,"Arabic (Saudi Arabia)","ar-SA","Arab","1256"},
{0x2801,"Arabic (Syria)","ar-SY","Arab","1256"},
{0x1c01,"Arabic (Tunisia)","ar-TN","Arab","1256"},
{0x3801,"Arabic (U.A.E.)","ar-AE","Arab","1256"},
{0x2401,"Arabic (Yemen)","ar-YE","Arab","1256"},
{0x042b,"Windows 2000 and later: Armenian (Armenia)","hy-AM","Armn","Unicode only"},
{0x044d,"Windows Vista and later: Assamese (India)","as-IN"," ","Unicode only"},
{0x082c,"Azeri (Azerbaijan, Cyrillic)","az-Cyrl-AZ","Cyrl","1251"},
{0x042c,"Azeri (Azerbaijan, Latin)","az-Latn-AZ","Latn","1254"},
{0x046d,"Windows Vista and later: Bashkir (Russia)","ba-RU"," "," "},
{0x042d,"Basque (Basque)","eu-ES","Latn","1252"},
{0x0423,"Belarusian (Belarus)","be-BY","Cyrl","1251"},
{0x0445,"Windows XP SP2 and later: Bengali (India)","bn-IN","Beng","Unicode only"},
{0x201a,"Windows XP SP2 and later (downloadable); Windows Vista and later: Bosnian (Bosnia and Herzegovina, Cyrillic)","bs-Cyrl-BA","Cyrl","1251"},
{0x141a,"Windows XP SP2 and later: Bosnian (Bosnia and Herzegovina, Latin)","bs-Latn-BA","Latn","1250"},
{0x047e,"Breton (France)","br-FR","Latn","1252"},
{0x0402,"Bulgarian (Bulgaria)","bg-BG","Cyrl","1251"},
{0x0455,"Not supported: Burmese"," "," "," "},
{0x0403,"Catalan (Catalan)","ca-ES","Latn","1252"},
{0x0c04,"Chinese (Hong Kong SAR, PRC)","zh-HK","Hant","950"},
{0x1404,"Windows 98/Me, Windows XP and later: Chinese (Macao SAR)","zh-MO","Hant","950"},
{0x0804,"Chinese (PRC)","zh-CN","Hans","936"},
{0x1004,"Chinese (Singapore)","zh-SG","Hans","936"},
{0x0404,"Chinese (Taiwan)","zh-TW","Hant","950"},
{0x101a,"Windows XP SP2 and later: Croatian (Bosnia and Herzegovina, Latin)","hr-BA","Latn","1250"},
{0x041a,"Croatian (Croatia)","hr-HR","Latn","1250"},
{0x0405,"Czech (Czech Republic)","cs-CZ","Latn","1250"},
{0x0406,"Danish (Denmark)","da-DK","Latn","1252"},
{0x048c,"Windows XP and later: Dari (Afghanistan)","gbz-AF","Arab","1256"},
{0x0465,"Windows XP and later: Divehi (Maldives)","dv-MV","Thaa","Unicode only"},
{0x0813,"Dutch (Belgium)","nl-BE","Latn","1252"},
{0x0413,"Dutch (Netherlands)","nl-NL","Latn","1252"},
{0x0c09,"English (Australia)","en-AU","Latn","1252"},
{0x2809,"English (Belize)","en-BZ","Latn","1252"},
{0x1009,"English (Canada)","en-CA","Latn","1252"},
{0x2409,"English (Caribbean)","en-029","Latn","1252"},
{0x4009,"Windows Vista and later: English (India)","en-IN","Latn","1252"},
{0x1809,"English (Ireland)","en-IE","Latn","1252"},
{0x2009,"English (Jamaica)","en-JM","Latn","1252"},
{0x4409,"Windows Vista and later: English (Malaysia)","en-MY","Latn","1252"},
{0x1409,"English (New Zealand)","en-NZ","Latn","1252"},
{0x3409,"Windows 98/Me, Windows 2000 and later: English (Philippines)","en-PH","Latn","1252"},
{0x4809,"Windows Vista and later: English (Singapore)","en-SG","Latn","1252"},
{0x1c09,"English (South Africa)","en-ZA","Latn","1252"},
{0x2c09,"English (Trinidad and Tobago)","en-TT","Latn","1252"},
{0x0809,"English (United Kingdom)","en-GB","Latn","1252"},
{0x0409,"English (United States)","en-US","Latn","1252"},
{0x3009,"Windows 98/Me, Windows 2000 and later: English (Zimbabwe)","en-ZW","Latn","1252"},
{0x0425,"Estonian (Estonia)","et-EE","Latn","1257"},
{0x0438,"Faroese (Faroe Islands)","fo-FO","Latn","1252"},
{0x0464,"Windows XP SP2 and later (downloadable); Windows Vista and later: Filipino (Philippines)","fil-PH","Latn","1252"},
{0x040b,"Finnish (Finland)","fi-FI","Latn","1252"},
{0x080c,"French (Belgium)","fr-BE","Latn","1252"},
{0x0c0c,"French (Canada)","fr-CA","Latn","1252"},
{0x040c,"French (France)","fr-FR","Latn","1252"},
{0x140c,"French (Luxembourg)","fr-LU","Latn","1252"},
{0x180c,"French (Monaco)","fr-MC","Latn","1252"},
{0x100c,"French (Switzerland)","fr-CH","Latn","1252"},
{0x0462,"Windows XP SP2 and later (downloadable); Windows Vista and later: Frisian (Netherlands)","fy-NL","Latn","1252"},
{0x0456,"Windows XP and later: Galician (Spain)","gl-ES","Latn","1252"},
{0x0437,"Windows 2000 and later: Georgian (Georgia)","ka-GE","Geor","Unicode only"},
{0x0c07,"German (Austria)","de-AT","Latn","1252"},
{0x0407,"German (Germany)","de-DE","Latn","1252"},
{0x1407,"German (Liechtenstein)","de-LI","Latn","1252"},
{0x1007,"German (Luxembourg)","de-LU","Latn","1252"},
{0x0807,"German (Switzerland)","de-CH","Latn","1252"},
{0x0408,"Greek (Greece)","el-GR","Grek","1253"},
{0x046f,"Windows Vista and later: Greenlandic (Greenland)","kl-GL","Latn","1252"},
{0x0447,"Windows XP and later: Gujarati (India)","gu-IN","Gujr","Unicode only"},
{0x0468,"Windows Vista and later: Hausa (Nigeria, Latin)","ha-Latn-NG","Latn","1252"},
{0x040d,"Hebrew (Israel)","he-IL","Hebr","1255"},
{0x0439,"Windows 2000 and later: Hindi (India)","hi-IN","Deva","Unicode only"},
{0x040e,"Hungarian (Hungary)","hu-HU","Latn","1250"},
{0x040f,"Icelandic (Iceland)","is-IS","Latn","1252"},
{0x0470,"Igbo (Nigeria)","ig-NG"," "," "},
{0x0421,"Indonesian (Indonesia)","id-ID","Latn","1252"},
{0x085d,"Windows XP and later: Inuktitut (Canada, Latin)","iu-Latn-CA","Latn","1252"},
{0x045d,"Windows XP SP2 and later (downloadable); Windows Vista and later: Inuktitut (Canada, Syllabics)","iu-Cans-CA","Cans","Unicode only"},
{0x083c,"Windows XP SP2 and later (downloadable); Windows Vista and later: Irish (Ireland)","ga-IE","Latn","1252"},
{0x0410,"Italian (Italy)","it-IT","Latn","1252"},
{0x0810,"Italian (Switzerland)","it-CH","Latn","1252"},
{0x0411,"Japanese (Japan)","ja-JP","Hani;Hira;Kana","932"},
{0x044b,"Windows XP and later: Kannada (India)","kn-IN","Knda","Unicode only"},
{0x043f,"Windows 2000 and later: Kazakh (Kazakhstan)","kk-KZ","Cyrl","1251"},
{0x0453,"Windows Vista and later: Khmer (Cambodia)","kh-KH","Khmr","Unicode only"},
{0x0486,"Windows Vista and later: K'iche (Guatemala)","qut-GT","Latn","1252"},
{0x0487,"Windows Vista and later: Kinyarwanda (Rwanda)","rw-RW","Latn","1252"},
{0x0457,"Windows 2000 and later: Konkani (India)","kok-IN","Deva","Unicode only"},
{0x0812,"Windows 95, Windows NT 4.0 only: Korean (Johab)"," "," "," "},
{0x0412,"Korean (Korea)","ko-KR","Hang;Hani","949"},
{0x0440,"Windows XP and later: Kyrgyz (Kyrgyzstan)","ky-KG","Cyrl","1251"},
{0x0454,"Windows Vista and later: Lao (Lao PDR)","lo-LA","Laoo","Unicode only"},
{0x0426,"Latvian (Latvia)","lv-LV","Latn","1257"},
{0x0427,"Lithuanian (Lithuania)","lt-LT","Latn","1257"},
{0x082e,"Windows Vista and later: Lower Sorbian (Germany)","dsb-DE","Latn","1252"},
{0x046e,"Windows XP SP2 and later (downloadable); Windows Vista and later: Luxembourgish (Luxembourg)","lb-LU","Latn","1252"},
{0x042f,"Windows 2000 and later: Macedonian (Macedonia, FYROM)","mk-MK","Cyrl","1251"},
{0x083e,"Windows 2000 and later: Malay (Brunei Darussalam)","ms-BN","Latn","1252"},
{0x043e,"Windows 2000 and later: Malay (Malaysia)","ms-MY","Latn","1252"},
{0x044c,"Windows XP SP2 and later: Malayalam (India)","ml-IN","Mlym","Unicode only"},
{0x043a,"Windows XP SP2 and later: Maltese (Malta)","mt-MT","Latn","1252"},
{0x0481,"Windows XP SP2 and later: Maori (New Zealand)","mi-NZ","Latn","1252"},
{0x047a,"Windows XP SP2 and later (downloadable); Windows Vista and later: Mapudungun (Chile)","arn-CL","Latn","1252"},
{0x044e,"Windows 2000 and later: Marathi (India)","mr-IN","Deva","Unicode only"},
{0x047c,"Windows XP SP2 and later (downloadable); Windows Vista and later: Mohawk (Canada)","moh-CA","Latn","1252"},
{0x0450,"Windows XP and later: Mongolian (Mongolia)","mn-Cyrl-MN","Cyrl","1251"},
{0x0850,"Windows Vista and later: Mongolian (PRC)","mn-Mong-CN","Mong","Unicode only"},
{0x0461,"Windows XP SP2 and later (downloadable); Windows Vista and later: Nepali (Nepal)","ne-NP","Deva","Unicode only"},
{0x0414,"Norwegian (Bokmål, Norway)","nb-NO","Latn","1252"},
{0x0814,"Norwegian (Nynorsk, Norway)","nn-NO","Latn","1252"},
{0x0482,"Occitan (France)","oc-FR","Latn","1252"},
{0x0448,"Oriya (India)","or-IN","Orya","Unicode only"},
{0x0463,"Windows XP SP2 and later (downloadable); Windows Vista and later: Pashto (Afghanistan)","ps-AF"," "," "},
{0x0429,"Persian (Iran)","fa-IR","Arab","1256"},
{0x0415,"Polish (Poland)","pl-PL","Latn","1250"},
{0x0416,"Portuguese (Brazil)","pt-BR","Latn","1252"},
{0x0816,"Portuguese (Portugal)","pt-PT","Latn","1252"},
{0x0446,"Windows XP and later: Punjabi (India)","pa-IN","Guru","Unicode only"},
{0x046b,"Windows XP SP2 and later: Quechua (Bolivia)","quz-BO","Latn","1252"},
{0x086b,"Windows XP SP2 and later: Quechua (Ecuador)","quz-EC","Latn","1252"},
{0x0c6b,"Windows XP SP2 and later: Quechua (Peru)","quz-PE","Latn","1252"},
{0x0418,"Romanian (Romania)","ro-RO","Latn","1250"},
{0x0417,"Windows XP SP2 and later (downloadable); Windows Vista and later: Romansh (Switzerland)","rm-CH","Latn","1252"},
{0x0419,"Russian (Russia)","ru-RU","Cyrl","1251"},
{0x243b,"Windows XP SP2 and later: Sami (Inari, Finland)","smn-FI","Latn","1252"},
{0x103b,"Windows XP SP2 and later: Sami (Lule, Norway)","smj-NO","Latn","1252"},
{0x143b,"Windows XP SP2 and later: Sami (Lule, Sweden)","smj-SE","Latn","1252"},
{0x0c3b,"Windows XP SP2 and later: Sami (Northern, Finland)","se-FI","Latn","1252"},
{0x043b,"Windows XP SP2 and later: Sami (Northern, Norway)","se-NO","Latn","1252"},
{0x083b,"Windows XP SP2 and later: Sami (Northern, Sweden)","se-SE","Latn","1252"},
{0x203b,"Windows XP SP2 and later: Sami (Skolt, Finland)","sms-FI","Latn","1252"},
{0x183b,"Windows XP SP2 and later: Sami (Southern, Norway)","sma-NO","Latn","1252"},
{0x1c3b,"Windows XP SP2 and later: Sami (Southern, Sweden)","sma-SE","Latn","1252"},
{0x044f,"Windows 2000 and later: Sanskrit (India)","sa-IN","Deva","Unicode only"},
{0x1c1a,"Windows XP SP2 and later: Serbian (Bosnia and Herzegovina, Cyrillic)","sr-Cyrl-BA","Cyrl","1251"},
{0x181a,"Windows XP SP2 and later: Serbian (Bosnia and Herzegovina, Latin)","sr-Latn-BA","Latn","1250"},
{0x0c1a,"Serbian (Serbia, Cyrillic)","sr-Cyrl-CS","Cyrl","1251"},
{0x081a,"Serbian (Serbia, Latin)","sr-Latn-CS","Latn","1250"},
{0x046c,"Windows XP SP2 and later: Sesotho sa Leboa/Northern Sotho (South Africa)","ns-ZA","Latn","1252"},
{0x0432,"Windows XP SP2 and later: Setswana/Tswana (South Africa)","tn-ZA","Latn","1252"},
{0x045b,"Windows Vista and later: Sinhala (Sri Lanka)","si-LK","Sinh","Unicode only"},
{0x041b,"Slovak (Slovakia)","sk-SK","Latn","1250"},
{0x0424,"Slovenian (Slovenia)","sl-SI","Latn","1250"},
{0x2c0a,"Spanish (Argentina)","es-AR","Latn","1252"},
{0x400a,"Spanish (Bolivia)","es-BO","Latn","1252"},
{0x340a,"Spanish (Chile)","es-CL","Latn","1252"},
{0x240a,"Spanish (Colombia)","es-CO","Latn","1252"},
{0x140a,"Spanish (Costa Rica)","es-CR","Latn","1252"},
{0x1c0a,"Spanish (Dominican Republic)","es-DO","Latn","1252"},
{0x300a,"Spanish (Ecuador)","es-EC","Latn","1252"},
{0x440a,"Spanish (El Salvador)","es-SV","Latn","1252"},
{0x100a,"Spanish (Guatemala)","es-GT","Latn","1252"},
{0x480a,"Spanish (Honduras)","es-HN","Latn","1252"},
{0x080a,"Spanish (Mexico)","es-MX","Latn","1252"},
{0x4c0a,"Spanish (Nicaragua)","es-NI","Latn","1252"},
{0x180a,"Spanish (Panama)","es-PA","Latn","1252"},
{0x3c0a,"Spanish (Paraguay)","es-PY","Latn","1252"},
{0x280a,"Spanish (Peru)","es-PE","Latn","1252"},
{0x500a,"Spanish (Puerto Rico)","es-PR","Latn","1252"},
{0x0c0a,"Spanish (Spain)","es-ES","Latn","1252"},
{0x040a,"Spanish (Spain, Traditional Sort)","es-ES_tradnl","Latn","1252"},
{0x540a,"Windows Vista and later: Spanish (United States)","es-US"," "," "},
{0x380a,"Spanish (Uruguay)","es-UY","Latn","1252"},
{0x200a,"Spanish (Venezuela)","es-VE","Latn","1252"},
{0x0430,"Not supported: Sutu"," "," "," "},
{0x0441,"Windows 2000 and later: Swahili (Kenya)","sw-KE","Latn","1252"},
{0x081d,"Swedish (Finland)","sv-FI","Latn","1252"},
{0x041d,"Swedish (Sweden)","sv-SE","Latn","1252"},
{0x045a,"Windows XP and later: Syriac (Syria)","syr-SY","Syrc","Unicode only"},
{0x0428,"Windows Vista and later: Tajik (Tajikistan)","tg-Cyrl-TJ","Cyrl","1251"},
{0x085f,"Windows Vista and later: Tamazight (Algeria, Latin)","tmz-Latn-DZ","Latn","1252"},
{0x0449,"Windows 2000 and later: Tamil (India)","ta-IN","Taml","Unicode only"},
{0x0444,"Windows XP and later: Tatar (Russia)","tt-RU","Cyrl","1251"},
{0x044a,"Windows XP and later: Telugu (India)","te-IN","Telu","Unicode only"},
{0x041e,"Thai (Thailand)","th-TH","Thai","874"},
{0x0851,"Windows Vista and later: Tibetan (Bhutan)","bo-BT","Tibt","Unicode only"},
{0x0451,"Windows Vista and later: Tibetan (PRC)","bo-CN","Tibt","Unicode only"},
{0x041f,"Turkish (Turkey)","tr-TR","Latn","1254"},
{0x0442,"Windows Vista and later: Turkmen (Turkmenistan)","tk-TM","Cyrl","1251"},
{0x0480,"Windows Vista and later: Uighur (PRC)","ug-CN","Arab","1256"},
{0x0422,"Ukrainian (Ukraine)","uk-UA","Cyrl","1251"},
{0x042e,"Windows Vista and later: Upper Sorbian (Germany)","wen-DE","Latn","1252"},
{0x0820,"Urdu (India)","tr-IN"," "," "},
{0x0420,"Windows 98/Me, Windows 2000 and later: Urdu (Pakistan)","ur-PK","Arab","1256"},
{0x0843,"Windows 2000 and later: Uzbek (Uzbekistan, Cyrillic)","uz-Cyrl-UZ","Cyrl","1251"},
{0x0443,"Windows 2000 and later: Uzbek (Uzbekistan, Latin)","uz-Latn-UZ","Latn","1254"},
{0x042a,"Windows 98/Me, Windows NT 4.0 and later: Vietnamese (Vietnam)","vi-VN","Latn","1258"},
{0x0452,"Windows XP SP2 and later: Welsh (United Kingdom)","cy-GB","Latn","1252"},
{0x0488,"Windows Vista and later: Wolof (Senegal)","wo-SN","Latn","1252"},
{0x0434,"Windows XP SP2 and later: Xhosa/isiXhosa (South Africa)","xh-ZA","Latn","1252"},
{0x0485,"Windows Vista and later: Yakut (Russia)","sah-RU","Cyrl","1251"},
{0x0478,"Windows Vista and later: Yi (PRC)","ii-CN","Yiii","Unicode only"},
{0x046a,"Windows Vista and later: Yoruba (Nigeria)","yo-NG"," "," "},
{0x0435,"Windows XP SP2 and later: Zulu/isiZulu (South Africa)","zu-ZA","Latn","1252"},
{-1,NULL,NULL,NULL,NULL}};


LangInfo findLangInfo(int id){
int i=0;
for(i=0; table[i].id!=-1 && table[i].id!=id; i++);
return table[i];
}

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);

LangInfo system=findLangInfo(GetSystemDefaultLangID());
LangInfo user=findLangInfo(GetUserDefaultLangID());

MessageBoxA(NULL,system.desc,"System default language", MB_OK);
MessageBoxA(NULL,user.desc,"User default language",MB_OK);
}

úterý 22. září 2009

... drobky ze CIA


Při cestách internetem jsem narazil na jednu zajímavou příručku. S trochou nadsázky lze ji lze nazvat "Co všechno jste chtěli vědět o sabotážích, ale báli jste se zeptat".
Pochází z dob druhé světové války a byla vydána v USA organizací, jež je předchůdcem CIA. Pro angličtiny znalé tedy trocha zajímavého čtení.

http://www.gutenberg.org/files/26184/page-images/26184-images.pdf

čtvrtek 17. září 2009

... kde jsou ti šťastnější frontoví bojovníci ?

Prohrávám. Na všech frontách. Lépe řečeno ve všech frontách. Vždycky, když si můžu vybrat, do které fronty se zařadím, vyberu si špatně. V samoobsluze, u benzínové pumpy prostě kdekoli. Pokaždé právě "ta moje" fronta je tou nejpomaleji se sunoucí.

A tak se ptám: Kde jsou ti lidé, kteří si vybírají dobře? Podle jakého pravidla se řídí? Proč já zůstanu vždycky v té špatné frontě?

... ale děkuji za optání, jinak vedu celkem spokojený život

pátek 11. září 2009

.. Apache XML Security v 1.4.3 and Java 6

It is not easy to get this combination up and running. Java 6 contains XML Signature implementation (JCP105). The implementaion is based on XML Signature Syntax and Processing v1.0. This version does not contain strong SHA-2 message digest function family. This family is supported in v1.1 of the spec. The v.1.1 is a draft at this time. If you want to use strong digest algorithm you have to override default XML Sig implementation by installing Apache XML Security package. The packages have to be installed into endorsed directory of your JRE. There sill remains several drawbacsk. Here they are:

  1. SHA-2 digest family is supported in a standard way but the constants are hidden inside internal class hierarchy

  2. commons-logging fails to initialize due to modified behavior of JRE6 which uses. The chain of commands:this.getClass().getClassLoader() surprisingly returns null as the class from endorsed dir is loaded by bootstrap classloader.



Problem 1) can be slolved by using either strings copied directly from the spec. or by using e.g. org.apache.xml.security.signature.XMLSignature.ALGO_ID_MAC_HMAC_SHA256 constant.

Problem 2) is solved by replacing commons-logging included in XMLSig distribution by newest one (1.1.1) from commons-logging homepage.

úterý 8. září 2009

naletěl jsem ...

Zmožen poplatky jsem se rozhodl odejít od své bývalé banky. Nalákán nulovými poplatky u konkurence jsem naposledy navštívil svého ČSOB osobního bankéře (bankéřku) za jediným účelem: zrušení účtu. Zrušení účtu pořídíte už nějaký ten pátek zdarma. Jenže ... ano kaju se ... a uznávám, že jsem hlupák.

Během procesu rušení podepisujete několik dokumentů: výpověď smlouvy o vedení účtu, zrušení karty, odprodej zbývajících akcií u podílového fondu a zrušení všech souhlasů s inkasem. Tak nějak jsem předpokládal, že zánikem účtu zaniknou i svolení k inkasu a tak jsem podepsal. O pár týdnů později mi přišel poslední pozdrav z ČSOB.

Výpis, kde jsem našel 5 řádků. Za každý souhlas k inkasu resp. jeho zrušení jsem zaplatil 40Kč. Naprosto v souladu se sazebníkem. Naprosto bez informace od osobní bankéřky. Jen pro úplnost. Zrušení souhlasu s inkasem pomocí internetbankingu stojí 6Kč.

Služby klientům, osobní bankéř. Vše pro firmu. Jakkoli klienta "oholit". Ostatně někdo, kdo ruší účet, si nezaslouží nic jiné. Z celé téhle epizody si odnáším dvě poučky:

  • nikdy nikomu nevěř ... smutné

  • jsem hlupák ... hmmm

neděle 6. září 2009

... vaříme uzené

... zakoupené úhledně zabalené vakuované v igelitu. Na obalu pak štítek. Cituji:
vepřová kýta 64%, pitná voda, bramborový škrob, jedlá sůl, směs koření a zeleniny, extrakty koření, stabilizátory E250, E451, zahušťovadlo E407, E407a, E412, dextróza, zvýrazňovač chuti E621, E631, E635, antioxidant E316, sojová bílkovina, lecitin, barvivo E120. Obsah soli max. 3%

Vaříme pořád ještě uzené? Musím se příště lépe podívat na název obchodu. Možná tam nebylo napsáno Masna, ale Drogerie.

pondělí 20. července 2009

... k datovým schránkám

... říká se, že se nesluší kopat do někoho, kdo leží na zemi. Datové schránky jsou v této poloze, tedy ležící a nefunkční, až příliš často. Přesto si neodpustím pár ryze nepřátelských poznámek. Na úvod však jednu pozitivně laděnou. Nerad chodím na úřady a na dobře implementované mechanizmy e-governmentu se vyloženě těším. Implementace datových schránek má k dokonalosti daleko. A nejen to, má daleko i k prosté neprudivé použitelnosti.

A moje osobní zkušenost?

Případ č.1 - Pokus o získání web service rozhraní k datové schránce. Žádost zaslána, odezva vešekrá žádná.

Případ č.2 - Záslána žádost o datovou schránku fyzické osoby (čistě ze zvědavosti). Žádost odeslána, přijato potvrzení o přijetí a ... NIC. Zákonné lhůty jsou zřejmě úředníkům pro smích.

Případ č.3 - Služba datový trezor je k dispozici. Týká se systému pro bezpapírovou dálkovou komunikaci. A hádejte, co musíte udělat pro její aktivaci. No ano, musíte vzít občanku a dojít na poštu. KOCOURKOV.

... jsem zvědav, co bude dál

pátek 10. července 2009

... některé věci nepochopím

Mohl by mi někdo vysvětlit, proč v Praze kropí kropicí vůz ulice, když den před tím se přehnala bouřka s deštěm dostatečně vydatným?

úterý 16. června 2009

... how truecrypt handles broken hard disk

Once upon a time there was a hard drive. It served for not so long time and then decided to say good by. Because the drive was polite it denied system partition reading at first. It was a signal to save my data. Windows were no more alive ending in endless rebooting loop. Brave knight Sir Linux of Knoppix came, saw an conquered. There was a truecrypt volume on the dying disk drive. I tried to copy the whole volume file but there was a reading error after 3GB of 10Gb were read. As the truecrypt is implemented for Linux too I installed truecrypt to my old Knoppix Live CD mounted the broken volume and rescued all the interesting data. Just for a case I backed up truecrypt volume headers but I was lucky because the header in the volume was not corrupted.

The Truecrypt is possibly not the best of breed but it is close.

What a relief ....

pondělí 8. června 2009

... nahlížení do katastru

Aktualizace: moje aplikace je ukončena, nahradila ji lepší, dotaženější. Taková, jakou jsem časem chtěl mít tu svou. Darwin vítězí, silní přežívají, slabí hynou. http://katastr2.cz.

Vzhledem k tomu, že náš zeměměřičský úřad poněkud zaspal dobu a komfort nahlížení do katastru nemovitostí je ... řekněme diskutabilní, vytvořil jsem malou jednoduchou aplikaci, pomocí které je nahlédnutí do katastru o něco pohodlnější.http://www.blogger.com/img/blank.gif

Pro zobrazení informací z katastru stačí pomocí internetové mapy (google, mapy.cz) najít místo, které vás zajímá (pozemek, dům apod.) a jediným kliknutím na toto místo si vyvolat výpis informací, které jsou o nemovitostech v dané lokalitě k dispozici.

A kudy tam? www.nahlizeni-do-katastru.cz

pátek 22. května 2009

... získání GPS souřadnic místa v ČR

Stále častěji se mi stává, že po někom chci poslat souřadnice určitého místa ať už za účelem nahlédnutí do mapy nebo za účelem zadání souřadnic do navigace jako prevence proti bloudění. Následuje návod, jak souřadnice získat:


  1. jděte na mapy.cz


  2. znáte adresu

    1. zadejte do vyhledávacího políčka adresu ve tvaru město, ulice číslo (Praha, Jindřišská 16) a nechte vyhledat


    2. nalezená adresa ze zobrazí na mapě v bublině, kde ve spodní části najdete odkaz GPS, který rozkliknete a u dolního okraje bubliny se objeví souřadnice např. Loc: 50°5'1.622"N, 14°25'42.132"E


    3. souřadnice naberte do schránky (Ctrl-C) a odešlete mailem, zadejte do ICQ nebo kam libo (Ctrl-V)





  3. místo nemá adresu, nebo ji neznáte



    1. můžete se přiblížit k místu zadáním blízké adresy (viz předchozí postup pro adresu)


    2. najděte na mapě konkrétní místo (při místní znalosti může hodně pomoci fotomapa


    3. zapněte zobrazování GPS


    4. klikněte na místo v mapě, jehož souřadnice chcete nabrat


    5. souřadnice naberte do schránky z levého horního rohu mapy





A to je asi tak vše. Jiné mapové servery poskytují podobnou službu (Google Maps, AMapy a další). pro tyto servery však výše uvedený popis neplatí.

čtvrtek 21. května 2009

... hovno pluje

Shodou okolností jsem narazil na výborný článek. Každý by si ho měl přečíst i když jeho název je lehce fekální. Ostatně on celý ten článek je takový. Má na to právo, když popisuje putování lidských výkalů od producenta až po vypuštění odpadní vody zpět do přírody na výstupu pražské čističky odpadních vod. Tak tedy ještě jednou "Hovno pluje"

pondělí 11. května 2009

... turn off the LED and signal is much better

After upgrading to OpenWRT Kamikadze 8.09RC2 on my Asus 500g Premium (v1) I have changed WiFi MiniPCI card. I have removed the original broadcom and placed Atheros card in. Everything works well (kernel 2.6) but ...

... the wifi signal was much worse than in previous setup (7.09, broadcom). After some googling I have found an answer. Strange but working.

To get better (not excelent) signal, following command has to be used:
sysctl -w dev.wifi0.softled=0


There is some problem i the madwifi driver which brings much better signal, when the LED is turned off.

neděle 26. dubna 2009

... závan historie až z roku 1934

Učebnice pátrací taktiky, napsal Rudolf Košťák, major četnictva.
Schváleno výnosem Ministerstva vnitra ze dne 1. prosince 1934
čís. 69.475-1934-13 jako učební pomůcka pro četnictvo.








středa 22. dubna 2009

... EU presidency in Joint Research Centre in Ispra

As the presidency is moving from one country to the other the respective country symbol is placed to the center of the first crossroad that a visitor can see after entering JRC. You can compare the Freench and Czech presidency symbols :-).

úterý 21. dubna 2009

... from behind of firewall ...

It is a hard life behind the firewall/nat. To make life easier I use several methods. All of them depends on my Asus 500g Premium with OpenWrt Kamikaze 8.09.

SSH dropbear server is running on the Asus router accepting connection on public IP on port 22.

OpenVPN server is running on the router on port 443.

Behind really restrictive firewall I use OpenVPN using the proxy to connect the computer to the router VPN.

To redirect traffic from certain applications I use putty dynamic tunneling feature in cooperation with freecap proxyfier.

How to setup:
  • connect to the VPN using OpenVPN - passing through firewall should work because 443 port is used.
  • run putty with dynamic tunneling turned on (putty -D 3333 router.fqdn.com)
  • putty created socks proxy listening on localhost port 3333
  • launch freecap and set default proxy to localhost:3333
  • add an application that needs to be tunneled into the freecap
  • start the application through freecap - from this point the application will use the socks proxy created by ssh dynamic tunnel even if the application is not aware of SOCKS
And voila ... every application works magicaly from behind the firewall.

.... crying because you do not have a machine with public IP available? Don't you cry and use some free virtual server hosting ;-).

čtvrtek 2. dubna 2009

... phun je psina

Narazil jsem na zajímavou hračku. Zkuste:
http://www.phunland.com/wiki/Home

čtvrtek 26. března 2009

... vmware server 2 vim.fault.InvalidState

I was just playing around with VMWare Server 2. It is a great product for home made virtual server farm. I spent several hours "repairing" my installation. I could not create a virtual machine, I could not change existing virtual machine parameters. Everything ended in:
vim.fault.InvalidState

Even after reinstalation the same error again.

The problem was: I entered maintenace mode and have forgoten. This action is possible only when using VMWare Infrastructure Client and is not available from web console.

That is why I am screaming: Stupid, stupid, stupid, I am stupid. My mistake. Several hours vasted. :-)

středa 18. března 2009

... obchod s osobními údaji?

Jako klient nejmenovaného penzijního fondu jsem se rozhodl dívat se na stav svého konta pro penzi na internetu. Za tímto účelem jsem oslovil svůj fond, který mi v reakci zaslal k podpisu smlouvu O poskytování služeb internet penzijního připojištění.

Ve smlouvě mě zarazil rozsah požadovaného souhlasu se zpracováním osobních údajů. Kromě toho, že část ustanovení souhlasu byla nadbytečná vzhledem k zákonným povinnostem fondu souvisejícím se zpracováním státních příspěvků, se mezi souhlasné odstavce dostal tento:

b) Souhlasím s poskytováním informací o svém penzijním připojištění u XXXX mateřské společnosti a všem členům skupiny XXXX (propojené osoby - §66a Obchodního zákoníku); stejně tak i třetím osobám, výhradně smluvním partnerům XXXX, a to za účelem zajištění služeb XXXX ve prospěch účastníků.

c)Beru na vědomí, že souhlas je XXXX vyžadován v souladu s §38 odst.2 zák. č. 42/1994 Sb., o penzijním připojištění se státním příspěvkem (dále jen ZPP) zejm. z důvodu zkvalitnění poskytovaných služeb, snížení nákladů, nabídky nových služeb a za účelem komplexní nabídky produktů a služeb členy skupiny XXXX v rozsahu jejich bankovní licence či podnikatelského oprávnění.


Rozumím snahám o křížový prodej, dokonce jsem ochoten připustit, že mohou přinášet výhody klientům. Nesouhlasím však s takto paušálním rozšířením souhlasu s poskytováním osobních údajů v podstatě komukoli (tak i třetím osobám). Přičemž není možnost tento článek ze smlouvy vyřadit.

V tuto chvíli zahajuji komunikaci se zástupci nejmenovaného penzijního fondu a jsem zvědav na výsledek.

PS: ... přece jen jsem si při zakládání tohoto zápisníku dal alias prudič a je třeba ho naplňovat činy

úterý 17. března 2009

... konečně česky i na internetu

Kdysi, už je to dávno, jsem se pídil po pravidlech českého pravopisu na internetu. Žádná jsem nenašel a z ústavu pro jazyk český mi odpověděli, že pravidla nejsou a nebudou publikována na internetu z důvodu práv autorských.

Nyní konečně pravidla na internetu najdeme. Sice jsou kamuflovaná pod názvem Internetová jazyková příručka, ale jsou to pravidla pravopisu.

Díky za ně.

neděle 15. března 2009

... encode video for Sonyericsson K550i

It's as simple as this:

ffmpeg -i in.avi -vcodec h263 -acodec libfaac -ab 96k -s qcif -qscale 3 -f 3gp out.3gp

neděle 8. března 2009

... the right tool for the right job

I needed to embed a logo image and a short static text into video. I needed to do it as a batch job. It took some time to find the right tool. Finally I have one.

Avisynth is the right tool. One drawback - windows only. But this will change in near future.

A short avisynth script does the job. Avisynth composes the video stream (raw)frame after frame acting as a frame server. The result can be fed into several encoders e.g. VirtualDub (great for debugging the script), mencoder (good for encoding final video into any format you may want).

Sample script - script.avs
video=DirectShowSource("input-video.avi")
logo=ImageReader("logo.png")
logoMask=ImageReader("logo.png",pixel_type="RGB32").ShowAlpha(pixel_type="RGB32")
Overlay(video,logo,x=20, y=20, mask=logoMask).Subtitle("text text text", 640,480, align=3)


Encoding - H.264 in MP4 container encoded using constant quality (variable bitrate)
mencoder -ovc x264 -nosound -x264encopts \
qp=24:keyint=25 -of lavf -lavfopts format=mp4 -o out.mp4 script.avs

pátek 27. února 2009

... throw exception from ActiveX to Javascript

Developing a simple ActiveX I was not able to find clear information how to propagate exception from C++ code to Javascript. I'm using ATL and there are no exceptions when using ATL code.

The solutin is to implement ISupportErrorInfo and act accordingly when it's the only method is called (apropriate code is generated by Visual Studio). Then when an error is to be reported after a method of ActiveX control returns, use functions CreateErrorInfo/SetErrorInfo to fill the error information data and use E_FAIL return code of the method.

Now an exception is thrown in Javascript in the form of Error object with message property, which maps to what was set by ICreateErrorInfo.SetDescription.

That's all for today.

Example:
void setException(BSTR msg){
ICreateErrorInfo * cErrInf;
CreateErrorInfo(&cErrInf);
if (cErrInf==NULL) return;
cErrInf->SetDescription(msg);
cErrInf->SetGUID(component_IID);
IErrorInfo *err;
cErrInf->QueryInterface(&err);
SetErrorInfo(0,err);
}



...
setException(L"error mesaage");
return E_FAIL;
}

pátek 20. února 2009

středa 11. února 2009

... sentence of the month

Even the tchnical writer is able to write sentences that are not boring:

Chapter 8 revisits the definition and declaration criteria to a depth that will cause decompression sickness when you surface.

[credits]

neděle 1. února 2009

... když whisku, tak dobrou


Měl jsem příležitost ochutnat skotské sladové whisky "single malt" - nemíchané z jednoho sladu kvašené a pálené, v dubových sudech vyzrávající minimálně deset let. Chuti to byly různé od pohlazení až po drsnou kouřem z rašeliny vonící drsné.

Doporučuji.

čtvrtek 15. ledna 2009

... arogance moci nebo nedostatek pochopení?

Informační centrum Prahy 4 - CzechPoint. Dlouho jsem nebyl na žádném úřadě. Teď není zbytí. Stisk tlaččítka mi přidělí číslo. Čekárna je prázdná. Přede mnou jen jeden úřaduchtivý kolega. On je číslo 12, já jsem číslo 13.

Č. 12 jde na řadu celkem rychle. Paní si ho přijde vyzvednout osobně, aniž by využila hi-tech lístečkového systému. Asi nemá důvěru ve stroje. Úřednice jsou za prosklenou stěnou dvě. Jedna vyřizuje č. 12 a druhá ... těžko říci. 10 minut čekám a číslo 12 je hotové. Úřednice opět přicupitá k dveřím a když zjistí, že jdu ověřit kopie listiny, prý, že u kolegyně a mizí. Ještě minutku otálím a zvažuji možnosti. Nakonec si řeknu, že "líná huba holé neštěstí" a paní, která má na starosti mojí agendu se optám, kdy asi by mohla mít na mě čas. A ona že asi tak za HODINU, že dělá uzávěrku a že to nemůže přerušit. Musím přiznat, že snad všechny elektrony v mém těle vyletěly na daleko vyšší energetickou hladinu a dostal jsem se do stavu značně excitovaného. Dal jsem si dvě a dvě dohromady a pochopil, že bych mohl ještě hodinu zírat na paní skrz sklo, což by ona odbyla sem tam udiveným pohledem. Požádal jsem ji, zda by takovou skutečnost nemohli na úřadě vyvěsit nebo alespoň čekajícím ústně sdělit, aby lidé zbytečně nemarnili čas. Říkala, že vyvěsí, ale pochybuji, že k tomu došlo.

Samozřejmě, že jsem hodinu nečekal. Vrátil jsem se odpoledne a paní mě v klidu a velice ochotně a příjemně provedla, co jsem požadoval.

Nerozumím duši úředníka, nerozumím tomu, že bez jakéhokoli studu nechají člověka bez špetky informace postávat zcela zbytečně před branou svého království. Snažím se sám sebe utěšit interpretací, že nejde o opojení pocitem moci, ale o pouhou nedovtipnost a nedostatek empatie a nepochopení skutečnosti, že někteří z nás mají lepší věci na práci, než postávání v úředních hodinách před prázdným úřadem.