středa 26. ledna 2011

Můj osobní předčítač Android

Kolona. Auta se šnečím tempem posunují kupředu. Já sedím v jednom z nich. Možná si říkáte, že trpím. Očekáváte, že hladina adrenalinu stoupá kvůli stresu. Ještě nedávno byste měli pravdu. Čas je v dnešním světě příliš cenná komodita a nechat ho zbůhdarma utíkat mezi prsty jen kvůli nutnosti dopravit se z místa na místo a nepříjemné náhodě, kdy banální dopravní nehoda zastavila dopravní tepnu.
Vedle mě na sedadle leží kouzelná krabička. Mluvící kouzelná krabička. Příjemný ženský hlas mi předčítá zajímavou knihu. Čte bezvadně, srozumitelně, česky. Nemluví však skutečná žena. Hlas je syntetizovaný v krabičce a předčítá elektronickou knihu do krabičky nahranou. Tou krabičkou je telefon HTC Hero vybavený systémem Android (v mém případě froydvillain 1.7.2 tedy Android 2.2 Froyo). Základní službou OS Android je hlasová syntéza. Bohužel v základní verzi neumí česky (ukázka na konci článku). 
UPDATE 18.4.2017: Na Google Play je možné stánout aplikaci Google Text To Speech, která v aktuální verzi poprvé obsahuje podporu TTS v češtině zdarma.


Update  4.1.2017: SVOX se v posledních měsících ukazuje jako nespolehlivý zdroj, jazyky jdou i nadále kupovat, ale není možné stahnout jazyková data. Proto po nákupu okamžiťe zkontrolujte funkčnost a případně využijte možnost vrácení peněz. V tuto chvíli je ekvivalentním řešením nákup Hlas Vocalizer, kde je navíc možnost volby ze dvou hlasů.

Díky firmě SVOX a jejím mobilním řešením pro syntézu řeči je však možné Androida naučit česky mluvit během pár chvil. Pomocí Play obchodu do telefonu nainstalujte TTS engine (SVOX Classic TTS). V nastavení tohoto poskytovatele syntézy řeči aktivujte. Dále budete potřebovat český slovník pro syntézu hlasu, který si musíte koupit jako placenou aplikaci za necelé 3 dolary (a to se vyplatí, věřte mi).
Na SVOX mě navedl článek popisující instalaci tohoto TTS řešení.
UPDATE 9.1.2012:Alternativou SVOX může být řečový syntezátor Acapella
UPDATE 18.4.2017: Další placenou alternativou je Vocalizer 

Nyní už umí Android česky.

Aby mohl předčítat knihy, je ještě potřeba najít čtečku eknih s podporou hlasového výstupu. Ačkoli je čteček pro Androida mnoho, našel jsem pouze jedinou, http://www.blogger.com/img/blank.gifhttp://www.blogger.com/img/blank.gifhttp://www.blogger.com/img/blank.gifkterá umí předčítat tak, aby čtení bylo použitelné. Opět jde o program, který je třeba si koupit. Je jím Moon+ Reader Pro, přičemž právě Pro je důležité, protože v základní verzi čtečka neumí použít TTS. Tentokrát je cena necelých 5 dolarů (opět musím dodat "a to se vyplatí"). Za cenu necelých 8 dolarů (cca 160Kč) dostanete velmi kvalitní a funkční software.

UPDATE 28.3.2012: Nyní již několik dnů používám k předčítání CoolReader, který je zdarma a funguje skoro stejně dobře, jako výše zmiňovaný placený MoonReader.  Takže stačí zakoupit SVOX jazyk, CoolReader lze získat zdarma.

UPDATE 9.3.2014: A další kandidát na bezva čtečku s hlasovým výstupem. FBReader s FBReader TTS+ pluginem. To + na konci je důležité - výrobce Hyperionics a vše gratis.

Ne všechno je úplně dokonalé, existuje pár mušek. SVOX někdy dělá mezi větami příliš dlouhé pomlky. Při vypnutém displeji občas přestane číst (telefon usne?), ale to je možná způsobeno nastavením čtečky. Po ťuknutí na tlačítko rozsvěcející displej čtení pokračuje.

Po instalaci tohoto programového vybavení již můžete do telefonu nahrát svou první eknihu. Čtečka rozumí formátu epub. K jeho výrobě vám zajisté pomůže SW pro správu vaší eknihovny Calibre.

Bohužel dnes není prakticky možné zakoupit eknihu v češtině oficiálně. Když to jde (www.rajknih.cz) nutí vás prodejce využívat propritárních čteček vynucujících DRM a s Androidem jste nahraní o syntéze řeči ani nemluvě.

UPDATE 22.8.2014: Již  třetím rokem jsem spokojeným zákazníkem palmknihy.cz a někdy kosmas.cz
UPDATE 4.1.2017: Alza také není k zahození, mají většinu ebook nabídky.
No a pokud nestačí eknihy, ale občas je třeba nechat si přečíst webovou stránku, DOC, DOCX, PDF nebo kus textu z klipboardu telefonu, pak sáhnu po  Voice Aloud Read, který dokáže přečíst kde co. Stačí odpovídající text nasdílet do aplikace.

Přeji mnoho pěkných "čtenářských" zážitků.


středa 19. ledna 2011

čtvrtek 13. ledna 2011

javascript closures in ECMA script standard

When using something I have a strong need to understand things as deep as possible. I was struggling advanced javascript code using closures heavily. Almost every explanation I found was "example based". As I really need to know the internals to understand the problem I decided to dive into ECMA script specification to find parts related to closures. At first I searched ECMA-262 second edition published back in the last century (1998). Well ... It is really a history. Nothing related to or similar to closures could be found in this document. The I have tried the fifth edition published in 2009. BINGO!

No explanation of closures will follow in this post. I think the description in the spec is crystal clear and should be read by everyone who wants to understand what's going on when a nested function is used.

The shortcut for those who are curious is here: look for Clause 10.2 in the ECMAScript specification document (http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf). Its name is "Lexical enviroments". This clause describes how the javascript engine implements "the magic". Clause 13.2 is otyher usefull part describing function object instantiation.

pátek 24. prosince 2010

Encode movie for IPBOX 420S

The satellite receiver IPBOX 420S is capable to play uploaded MPEG2 files. I was trying to find correct encoder settings for a long time. Finally it is here:

#!/bin/sh
in_vidname=$1
in_subname=${in_vidname%\.*}.srt
out_name=${in_vidname%\.*}.mpeg
echo IN : $in_vidname
echo SUB: $in_subname
echo OUT: $out_name
mencoder \
-sub $in_subname -subcp utf-8 -oac mp3lame \
-subfont-autoscale 1 -nooverlapsub -subpos 70 \
-ovc lavc -of mpeg -mpegopts format=mpeg2:interleaving2 \
-vf scale=720:306,expand=720:576 \
-lavcopts threads=2:vcodec=mpeg2video:vbitrate=2200 \
-ofps 25 \
-o $out_name $in_vidname


Notes:
-oac copy - only usable for some audio (my case - mp3 was fine)
-vf scale=720:304 - find your own depending on movie size - keep aspect if possible

sobota 4. září 2010

Windows 7 sudo alternative

When there is a need to allow unprivileged user to perform certain privileged operation sudo or s-bit are possibilities on UNIX like systems. There is nothing similar on Windows.

Windows 7 (may be even Visto or XP) have EVENT bound scheduled tasks.
The task is scheduled to run under privileged account and is triggered by certain event in event log. The event can be generated by unprivileged account.

How to do it:
As privileged account:

eventcreate /T INFORMATION /L APPLICATION /SO RUN_PRIVILEGED_ACTION
/ID 1 /D "Initial event for source has to be created by privileged account"
schtasks /Create /F /RU SYSTEM /TN PrivilegedTaskRunner /TR c:\windows\system32\privileged-action.cmd
/SC ONEVENT /EC APPLICATION /MO *[System[Provider[@Name='RUN_PRIVILEGED_ACTION']]]


As unprivileged user

eventcreate /T INFORMATION /L APPLICATION
/SO RUN_PRIVILEGED_ACTION /ID 1 /D "running privileged task"

pátek 27. srpna 2010

Batch extract music from video files

Following batch script (windows cmd) extracts audio from any mplayer supported audio or video file and saves the audio in mp3 into output dir. Handy in conjunction with Flash Video Downloader Firefox add-on.


set mplayer=c:\mplayer
set target=c:\music-to-convert\mp3
set source=c:\music-to-convert\flv


cd %source%
for /f %%i in ('dir /b *') do (
echo %%i
set input=%%i
set output=%target%\%%i.mp3
%mplayer%\mencoder -ovc copy -oac mp3lame -lameopts cbr:br=128 -of rawaudio -o "%target%\%%i.mp3" "%%i"
)

pondělí 17. května 2010

Video encoding for Nokia 5310

I needed to encode some video clip to be played on a Nokia 5310 cell phone. After some short research and tuning I have used mencoder. Mencoder is a part of the mplayer package. Mencoder is able to use target profiles for encoding. I have created following profile to create file for Nokia 5310.

[nokia]
profile-desc="MPEG4/AAC"
vf=scale=176:-3,harddup
ovc=lavc=yes
oac=lavc=yes
lavcopts=aglobal=1:vglobal=1:vcodec=mpeg4:vbitrate=65:acodec=libfaac
af=lavcresample=44100
ofps=15
of=lavf=yes
lavfopts=format=mp4

Unfortunately I was not able to run the encoding on Linux (Fedora 12) due to limited support for licensed codecs. Running the task on Windows did the magic. After creating the configuration following commandline did the work:
mencoder source.mp4 -profile nokia -o result.mp4
Video clip playable on Nokia phone was created.

For Windows port of mplayer searches the config in following location:
%MPLAYER_INSTALATION_DIR%\mplayer\mencoder.conf

úterý 16. března 2010

... stanu se automechanikem

... protože jsem se právě dozvěděl, že oprava téměř nepojízdného auta spočívala v přehrání software řídicí jednotky. Když umím přefleshovat domací router, umím přefleshovat i Skodovku.
... a zřejmě mi nahráli novou verzi software, protože mi auto začalo radit, kdy řadit.

pondělí 8. března 2010

... ochrana proti kopírování ad absurdum

... děti dostaly novou PC hru. Proběhla instalace a ... hra nefungovala. Dožadovala se originálního CD i přesto, že bylo v mechanice. Kluci se rozčilovali a několikrát to u mě reklamovali. Zasedl jsem tedy k PC připraven na boj s větrnými mlýny. Nejdřív jsem si nechal ukázat, že se opravdu hra chová prapodivně a nepozná, že má v mechanice originální CD. Odstranění virtuální mechaniky Daemon Tools nepomohlo. Zkusil jsem tedy hru odinstalovat a znovu nainstalovat a ejhle. Na instalační obrazovce se krom tlačítka pro spuštění instalace nachází rovněž tlačítko na "instalaci patche" pro práci s dodávaným CD. Naši hoši jsou totiž typická ukázka klikálků, jako i oni sami říkají. Zásadně nečtou, co je na obrazovce napsáno a klikají zřejmě dle pocitu.

Když jsem spustil instalaci patche, nevěřil jsem svým očím. Asi to tak není, ale patch se instaloval úplně stejně, jako crack, který se dá stáhnout z netu. A to prosím z originálního CD.

.. opět, dnes již podruhé ... legrační. Legálně koupená hra obsahuje patch, kterým je modifikována/odstraněna ochrana proti kopírování.

... nemohoucí word

.. legrační věc. Soubor ve formátu novějšího MS Wordu docx se nedaří otevřít ve MS Wordu starším, jehož nativním formátem je doc. Před mizérií vysvětlování původci dokumentu, že po něm vyžaduji jiný formát, mě zachránil OpenOffice. Jinak také konkurent MS Word. .... zvláštní

čtvrtek 21. ledna 2010

... jak se zrodil "enviromentalistický" Avatar

Film Avatar způosbil poprask. Lidé vyjeveně sledují prostředí Pandory a život na téhle fiktivní planetě, soužití domorodců s přírodou vyvrácený násilným příchodem lidské rasy. To vše dodané v úhledném 3D balíčku jako by bylo na dosah ruky. Mnozí po shlédnutí filmu upadají do depresí při pomyšlení na to, že harmonický svět Pandory je pouze virtuální a nedosažitelný.

Nejen těmto lidem by asi stálo zato připomenout, kde se vlastně lákavě harmonická Pandora zrodila. Celý křehký techniky prostý svět vznikl na zhruba 1000m2 napěchovaných nejmodernější vodou chlazenou počítačovou technologií (40 000 procesorů, 104TB RAM). Zvláštní.

úterý 19. ledna 2010

... energie

Nejde proud. Bez varování se ozvalo CVAK ... a pokoj potemněl. Vzhledem k tomu, že baterka v notebooku nevydrží věru mnoho, vypnul jsem svůj pracovní nástroj. Vyšší moc mi brání v práci. Přemýšlím, co dělat. Beru do ruky knížku, na kterou si nejsem "pod proudem" schopen udělat čas. Asi je to chyba. Určitě je to chyba.

Proud krade. Krade čas, kontakt s ostatními. Vlastně se o to všechno připravuji sám.
Jaké (by) byly večery bez proudu, bez televizí, bez počítačů. Jsem už ta generace, které večery naplnila televize. Další generaci ji naplní směs elektronických bavítek.
Já ještě umím sáhnout po knize. Budou to umět i naše děti? Určitě by mohly, pokud je to naučím. Jenže to jsem asi zanedbal. Vlastním příkladem, vlastní pohodlností jsem je uvrhl do závislosti na proudu. Proudu elektrickém, proudu TV zábavy, proudu internetových dat.

Ale chtěl jsem si zaznamenat něco úplně jiného. Po nějakém čase bez energie jsem si vzpomněl, že mám v konvičce čaj. Vzal jsem ji do ruky, abych nalil voňavý čaj do hrnečku. Byla příjemně teplá. A já si uvědomil, že dříve, o hodně dříve, bych musel nasbírat dřevo, rozdělat oheň, ohřát vodu ... Dnes nedočkavě přešlapuji u rychlovarné konvice, která je někdy na můj vkus pomalá. Vlastně ... pořád si tu píšu o tom samém ...

Možná je čas stát se záškodníkem. Možná by jednou týdně takové CVAK nevadilo. Možná to zkusím. Musím koupit sirky a svíčky ... Ani jednoho se mi ve slepé víře v civilizaci doma nedostává.

PS: Je to problém čistě můj, E. si umí udělat CVAK .... půjdu k ní na školení ;-)

pátek 15. ledna 2010

iReport 3.7.0 - add conditional style mini tutorial

It took me some time to discover how to add a conditional style to a report. As I was not able to find any tutorial covering this topic here it is.

Add a style to the report (Windows->Style Library) Right click to Add a new style. Style properties can be modified in the property window. Right click on the style in Style Library to Add style to report. Once added the style is displayed in the Report Inspector window. And there we are. Right clicking the style in the Style Inspector window an option to add a condition to the style is possible. Once added an expression can be edited. Each condition can have its own set of attributes.

pondělí 4. ledna 2010

... backing up on Amazon S3

During Christmas I successfully migrated my backup procedure to use Amazon AWS. Influenced by Linux/Unix backup solution duplicity I was looking for similar solution for Windows. There is a Windows clone called Duplicati. Duplicati is implemented using C#/.NET runtime. Duplicati is a very fresh product (v1.0) but very promissing. With minor drawbacks Duplicati works as expected. I'm looking forward to future improved releases. And of course it's opensource (I have sources on my disk). A breif summary follows:

  • wide range of back-ends supported (S3 is my choice)

  • incremental delta based backup - no merged view of backups

  • minor problems when connecting to S3 - default setup has to be used - custom settings fail



Using S3 for backups seems to me as a good solution. Initial backup (almost 7GB after packing) takes a lot of time to complete. In fact - the completion required several runs. Incremental backup is pretty fast.

Now I have my files encrypted and stored on Amazon AWS and it costs $0.17*7GB = $1.19 per month.

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