ú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);