Vítejte na mém (spíše) mikroblogu. Předplatit si tohle webovské sídlo doporučuji jen otrlým jedincům…

Jak připojit telefon G1 ve vývojářském režimu

V Ubuntu Jaunty? Stačí provést toto:

cd /etc/udev/rules.d
sudo echo 'SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"' > 51-android.rules
sudo chmod a+rx 51-android.rules
sudo /etc/init.d/udev restart
adb kill-server
adb devices

Poslední dva příkazy používají utilitku pro práci s telefonem. Před posledním příkazem telefon připojte a po spuštění uvidíte seznam dostupných zařízení. V logu hledejte pak něco takovéhoto:

Jul  2 20:01:23 localhost kernel: [ 6193.426910] usb 1-1: new high speed USB device using ehci_hcd and address 4
Jul  2 20:01:23 localhost kernel: [ 6193.569422] usb 1-1: configuration #1 chosen from 1 choice
Jul  2 20:01:23 localhost kernel: [ 6193.572291] scsi10 : SCSI emulation for USB Mass Storage devices
Jul  2 20:01:28 localhost kernel: [ 6198.584323] scsi 10:0:0:0: Direct-Access     HTC      Android Phone    0100 PQ: 0 ANSI: 2
Jul  2 20:01:28 localhost kernel: [ 6198.599100] sd 10:0:0:0: [sdf] Attached SCSI removable disk
Jul  2 20:01:28 localhost kernel: [ 6198.599179] sd 10:0:0:0: Attached scsi generic sg6 type 0

Compiling consonance on Ubuntu 9.04 (Jaunty)

Consonance is a decent media player. You know Foobar2000 from Windows? I love it. Very fast, small and easy.

Well the compilation in Ubuntu is not not that easy – the developer uses different distribution (Gentoo/Arch or somethink like that – always up-to-date libraries). We have to apply my patch that updates library versions which are used in Ubuntu:

wget http://static.zapletalovi.com/opensource/consonance/ubuntu904compilation.patch
agi autotools-dev libasound-dev libvorbis-dev libtagc0-dev libtag1-dev libvorbisfile3 libao-dev \
 libflac-dev libmad0-dev libnotify-dev libsndfile1-dev libsqlite3-dev libgtk2.0-0 cdbs \
 libcurl4-openssl-dev libcdio-dev libcdio-paranoia-dev libcddb2-dev libmodplug-dev
git clone git://github.com/sujith/consonance.git
patch -p0 < ./ubuntu904compilation.patch
./autogen.sh
./configure
make
make install

Thats it.

Nové tlačítko a funkce na přidej.cz

Na službě přidej.cz přibylo nové tlačítko (dole u tohoto příspěvku je ukázka) včetně slovenské varianty a služba je nyní odolnější vůči spamu. Objevil se také další (druhý) sponzor-dárce – děkuji.

Zároveň vybízím všechny uživatele, aby se vyjádřili v diskusi, pokud by chtěli nějakou novou funkci. Je libo plugin pro WordPress? Nebo něco jiného? Můžete mi taky napsat e-mail.

Převod FLV->WAV

Potřeboval jsem před chvílí převést audio stopu z YouTube videa (formát FLV) do WAVu. Posloužil následující příkaz:

for F in *flv; do mplayer -ao "pcm:fast:file=$F.wav" -vo null -vc null "$F"; done
· 2009/06/26 23:30 · 0 Komentáře

Editor grafů yEd

Ať už potřebujete vytvořit jednoduchý diagram nebo složitý graf se stovkou uzlů, může se editor yEd hodit. Umí totiž oboje – a ještě mnohem víc. V následujícím zápisku se s vámi podělím o svoje zkušenosti a o pocit, že yEd je lepší než DIA, SmartDraw nebo Microsoft Visio.

→ Číst dále...

· 2009/06/25 14:55 · 0 Komentáře

Miranda IM 0.8

Před několika dny vyšla nová Miranda, asi nejlepší kecálek pro Windows, který z dostupné paměti „zobne“ pouhých 5-6 MB, což je excelentní výsledek (srovnej program Skype = 60 MB). Čistá instalace je po nastavení zcela použitelná (nemám rád různé ty „packy“ plné pluginů), instalaci vždy rozšířím jen o tyto pluginy:

  • Sciver – lepší, hezčí „kecací“ okno s podporou více tabů.
  • KeepStatus – když padá spojení, zajišťuje reconnect dle konfigurace uživatele.
· 2009/06/23 08:49 · 0 Komentáře

Jak vypnout autoplay

Automatické spouštění při vložení CD nebo USB klíčenky mě ve Windows XP dohání k šílenství. Jak jej vypnout? Start → Run → gpedit.msc a pak „Administrative Templates“ → „System“ → „Turn off Autoplay“ nastavit „Enabled“ a vybrat „All drives“. Hotovo. A je klid.

Weewar Alarm 0.9.2

Na Android Marketu jsem publikoval svoji první aplikaci: Weewar Alarm. Aplikace notifikuje o nových tazích v on-line strategické tahovce Weewar. Upozorňuji, že tohle není hra, ale aplikace na notifikaci - hru samotnou můžete hrát ale v Android prohlížeči.

V podstatě jsem si chtěl vyzkoušet vývoj v Androidu. Jde to dobře, ale dokumentace ještě není úplná a vývojové nástroje občas spadnou a jsou nedotažené, ale API je dobře udělané a programuje se výborně. Jedná se o promyšlenou komponentovou architekturu s loose couplingem, ovšem emulátor ještě nemá některé vlastnosti (zvuky, vibrace, LED). Testování na opravdovém telefonu je nutné.

· 2009/06/21 00:35 · 0 Komentáře

Weewar

Dva němečtí programátoři vytvořili v Apache Wicketu výbornou tahovou on-line strategii Weewar. Stačí se zaregistrovat a ihned začít hrát. Jelikož autoři chtějí mít z investované práce “vývar“, je třeba platit měsíční poplatek, ale i na free účtu můžete užít nějakou legraci – můžete hrát až 4 hry zároveň, ovšem k dispozici máte jen tři mapy a omezený počet jednotek.

weewar.com

Doporučuji alespoň vyzkoušet si zahrát, protože se člověku až tají dech z toho, co lze vytvářet za aplikace v dnešních internetových prohlížečích a za pomocí technologií AJAX.

Weewar map preview

· 2009/06/07 01:35 · 0 Komentáře

TeVii S460 a Ubuntu 9.04

S potěšením jsem zjistil, že digitální satelitní karta typu S2 (pro příjem HDTV) funguje v Ubuntu 9.04 bez práce. Tedy abych řekl pravdu – ne vše. Příjem HD kanálů zatím v této kombinaci není možný (je nutný překlad ovladače, VDR a DVB API), ale ten prozatím neřeším, protože jsem ještě nezprovoznil vdpau.

Karta se detekuje takto:

[   11.210455] cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded
[   11.211051] cx88[0]: subsystem: d460:9022, board: TeVii S460 DVB-S/S2 [card=70,autodetected], frontend(s): 1
[   11.211054] cx88[0]: TV tuner type -1, Radio tuner type -1
[   11.261229] cx88/0: cx2388x v4l2 driver version 0.0.6 loaded
[   11.592015] cx88[0]/2: cx2388x 8802 Driver Manager
[   11.592031] cx88-mpeg driver manager 0000:05:09.2: PCI INT A -> GSI 21 (level, low) -> IRQ 21
[   11.592041] cx88[0]/2: found at 0000:05:09.2, rev: 5, irq: 21, latency: 64, mmio: 0xfd000000
[   11.592052] cx8802_probe() allocating 1 frontend(s)
[   11.592220] cx8800 0000:05:09.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21
[   11.592228] cx88[0]/0: found at 0000:05:09.0, rev: 5, irq: 21, latency: 64, mmio: 0xfc000000
[   11.592340] cx88[0]/0: registered device video0 [v4l2]
[   11.592387] cx88[0]/0: registered device vbi0
[   11.597507] cx88/2: cx2388x dvb driver version 0.0.6 loaded
[   11.597510] cx88/2: registering cx8802 driver, type: dvb access: shared
[   11.597513] cx88[0]/2: subsystem: d460:9022, board: TeVii S460 DVB-S/S2 [card=70]
[   11.597515] cx88[0]/2: cx2388x based DVB/ATSC card

Stačí tedy nainstalovat balíček vdr a také pluginy femon (monitoring signálu) a streamdev (server i klient pro streamování po LAN). Verze VDR 1.6.0 plně postačí, pokud nechceme HDTV (zatím nechceme). Bohužel tato verze (resp. binárka) neoplývá možnosti připojení k newcs (ke kartě), takže si musíme vystačit v FTA kanály (nekódované).

TeVii USB SmartCard reader

Pokud chcete na Linuxu (i obecně na PC) sledovat české satelitní kanály z balíčku Skylink, pak potřebujete čtečku karet. Já jsem zakoupil obyčejnou USB sériovou čtečku TeVii Phoenix card reader. Ovladače jsou přímo v Linuxu od nějaké té verze jádra 2.6 – já mám ubuntu 9.04 a čtečka byla ihned nalezena.

Bohužel mi chvíli trvalo (konkrétně dva měsíce), než jsem ji zprovoznil. Nejprve jsem nemohl zjistit, jak kartu orientovat. V balení totiž byla jen čtečka – nic jiného. Instrukce, manuál nebo ovladač – nic. Čtečka je calá bílá, jen vzadu je přepínač. Díky triku s papírem jsem nakonec kontakty zjistil, ale poté jsem zase dlouho hledal, co mám přepnout na zadním přepínači. Je totiž potřeba nastavit 367. A konečně jsem se musel naučit, jak kartu zasunout. Čtečka totiž svítí celou dobu červeně, ale v určité pozici při zasouvání se rozsvítí zeleně. Na doraz je zase červená – z toho jsem usuzoval, že LED dioda indikuje správnou pozici. Kdepak, kartu je třeba zasunout nadoraz.

Poté je potřeba nějaký software pro čtení dat z karty, například newcs. Zde je konfigurace pro newcs 1.66 (vše ostatní je default):

<mhz>367</mhz>
<node>/dev/ttyUSB0</node>
<parity>even</parity>
<reset>normal</reset>
<carddetect>no</carddetect>

Deklarovat logger jako static?

Často se sám sebe na začátku každého projektu zeptám – budu deklarovat loggery jako statické? Jinak řečeno, budou začátky tříd vypadat takto:

public class Foo {
  private static final Log log = LogFactory.getLog(Foo.class);
  ....
}

A nebo takto:

public class Foo {
  private final Log log = LogFactory.getLog(Foo.class);
  ....
}

Oba přístupy mají svá pro i proti.

V prvním případě (statickém) je pro menší využití paměti a program bude o něco rychlejší – není třeba pro každou instanci vytvářet logger. Také nebývá problém při serializaci, kdy načtená třída bez problémů funguje. Ovšem do problému se můžeme dostat, pakliže máme logovací knihovny v J2EE serveru umístěny ve sdíleném prostoru (classloaderu) a na serveru je více instancí stejné aplikace nebo knihovny, které logují. Pak nebude možné od sebe odlišit jednotlivé instance, takže kdybyste chtěli mít logy z jedné aplikace v jiném souboru, než logy z druhé, tak to nebude možné. Situaci musíte řešit na aplikační úrovni.

Druhý případ (nestatický – instanční) tímto problémem netrpí a navíc se s ním lépe pracuje v IoC. Ale pozor – problém s classloaderem je vyřešen pouze v knihovných logback a log4j – nejnovějších verzích. Pokud používáte jinou logovací knihovnu (jul), máte smůlu a můžete použít static. Ovšem přístup má i nevýhody: situaci je třeba explicitně řešit při deserializaci (readResolve), a tento přístup je také pomalejší a bere více procesorového času.

Takže rada zní: pokud jste si opravdu jisti, ale tím myslím na sto procent jisti, že aplikace nebude provozována ve více instancích na stejném aplikačním serveru, tak přesto používejte instanční (pomalejší) přístup. No – teď si dělám srandu. Pochopitelně, že můžete použít statický přístup. Ten instanční použijte jen tehdy, kdy máte jako logující implementaci novější verze knihoven log4j nebo logback (to je nástupce log4j).

Druhá rada je pak prostá: snažte se o jednotný přístup.

A konečně třetí rada: využijte svoje programovací prostředí naplno. Většina IDE nabízí možnost vytvoření šablony pro novou třídu, což lze využít pro nadefinování loggeru i jiným věcem.

Mimochodem, když už se rozhodnete pro instance, pak lze zápis „zkrášlit“ voláním metody getClass() – tím pádem nemusíte logger upravovat, když děláte copy&paste. A ruku na srdce – to děláte často, že? ;-)

public class Foo {
  private final Log log = LogFactory.getLog(getClass());
  ....
}

U všech případů platí, že je vhodné deklarovat logger jako privátní. Pokud bychom totiž umožnili potomkům přístup na logger, mohlo by se stát, že by se v logu objevovaly zprávy potomků pod identifikátorem (názvem třídy) předka. Obecně platí jedno pravidlo – nikdy nepoužívejte logger předka. Za každých okolností musí mít každá třída svůj logger, leda byste měli vystavěný nějaký aparát, který by dodával správné identifikátory.

Pozn.: Původně jsem klíčové slovo private chybně neuváděl. Je potřeba jej ale z výše uvedených důvodů uvést. Díky za upozornění v diskusi.

Uvedené příklady jsou pro knihovnu-fasádu commons-logging, v ostatních případech (fasáda slf4j, knihovny log4j, logback, juli a další) bude kód vypadat trošičku jinak, a to jen v některých případech.

A poslední dodatek se týká klíčového slova final. Můžete jej uvádět vždy, když nebudete logger modifikovat (drtivá většina případů), může to pomoct kompilátoru/virtuálnímu stroji. Případ, kdy není vhodné slovo final uvést, již byl uveden výše – například při deserializaci a implementaci metody readResolve().

Další zdroje

Medvěd Baribal společně s vlky v olomoucké ZOO

Maličkost jménem Baribal, kterou sponzoruji, bude mít zřejmě nový výběh. Už si ho chudák zasloužil, protože betonový kotec, ve kterém už léta pobývá, je dosti nehezký. Svoje nové místo však bude sdílet s vlky. Dají mu tito neposedové chvilku klidu?

The search is over: Grails, Wicket, GWT a Stripes

Evaluovali jsme s kolegy webové frameworky jiných technologií, než je Java Server Faces. Doma jsem ještě v přemýšlení pokračoval a zahrnul další framework Stripes, tohle je takové shrnutí toho, co mi vyšlo. Do přemýšlení jsme nezahrnuli ty frameworky, které byly příliš komplexní nebo složité (Tapestry například). To z toho důvodu, že jsme se snažili vybrat něco lehkotonážního. Berte to dost s rezervou.

→ Číst dále...

DELL Latitude D640 a zdroj Trust 70W

Abych měl možnost doma nabít notebook v případě, kdy někde zapomenu zdroj, koupil jsem si univerzální adaptér Trust 70 W. Po připojení k notebooku mi systém oznámil, že adaptér není originálním Dell 65 W a že baterie nebude nabíjena. The AC power adapter type cannot be determined. Your system will operate slower and the battery will not charge. Please connect a Dell 65 W AC adapter or higher for best system operation. Stroj naštěstí energii pro svůj běh bere. Stejnou zprávu uvidíte, když počítač zapínáte (BIOS test).

Notebooky (resp. adaptéry) DELL obsahují čip, který po jednom drátu, který je „navíc“, posílají identifikační signál. Tím je notebook (resp. BIOS) schopen zjistit, že není připojen jeden z podporovaných adaptérů. Tento čip často v noteboocích i adaptérech odchází, protože identifikační drát není odstíněn a chová se jako anténa. Pokud ovšem připojujete ke staršímu notebooku novější adaptér, obvykle postačí pouze aktualizace BIOSu.

IntelliJ IDEA 9 Early Access je tu

Na světě je předběžná veřejná verze prostředí IntelliJ IDEA 9. Novinky:

  • lepší práce s VCS systémy a konkrétně Subversion
  • J2EE 6
  • PHP
  • Tapestry
  • GWT 1.6
  • zlepšená podpora Grails
  • podpora ladění JavaScriptu přes Firefox

Stahujte: http://www.jetbrains.net/confluence/display/IDEADEV/Maia+EAP

Starší zápisky >>

pridej.cz
start.txt · Poslední úprava: 2009/03/17 12:45 autor: lzap
Creative Commons License Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0