Monthly Archives: August 2012

OS X Address Book → Nokia C1-02

Preface: kiábrándító kompúteres kálvária körülírása következik, kizárólag kockáknak! Az élet úgy hozta, hogy mostantól két SIM kártyát kell használnom egyszerre. Mindig rettegtem attól, hogy két telefont hurcolásszak magammal, de hiába, amíg a roaming aranyárban van, addig nincs más választásom. Azt találtam ki, hogy main telefonnak megmarad a mindenkori iPhone, míg a másik SIM kártya megkapja a létező legolcsóbb && legegyszerűbb független telefont, amit csak be tudok szerezni. Az új készülékkel kapcsolatban az alábbi elvárásaim voltak:

  1. ha már muszáj, akkor kicsi és észrevétlen legyen
  2. egy töltéssel menjen minél többet, hogy ne kelljen sokat foglalkoznom vele
  3. legyen valami kommunikációs interfésze, amin rá tudom venni a jelenlegi címlistám szinkronizálására
  4. azonnal kapható legyen
Fentiek alapján több keresés után jött a Symbian S40-nel szerelt, Bluetooth és USB interfésszel is ellátott Nokia C1-02. Körbenéztem, mit lehet találni ma sync ügyben és több megoldásra akadtam:
  • OS X 10.8 alatt a szebb napokat megért iSync már nincs, ezt az utat felejthetem
  • Létezik egy SyncMate nevű alkalmazás, amely azt ígéri, hogy az ingyenes verzióban S40 készülékekkel menni fog a Contact sync Bluetooth-on keresztül. Itt jelezném minden további kommentár nélkül, hogy HAZUDIK.
  • Van a Nokia által Windows-ra írt alkalmazás, a Nokia Ovi Suite, amely még megoldást jelenthet. Ez Bluetooth és USB kapcsolaton keresztül is képes az alkotói szerint szinkronizálni.
  • Feliratkozós bétában létezik egy, szintén a Nokia által fejlesztett Nokia Software Updater nevű OS X alkalmazás is, melyről valahol azt olvastam, hogy szintén sync-kelne nekem address bookot. Az alkalmazás oldala azért van annyira cserépedény, hogy csak a subscribe után közli a támogatott eszközök teljes listáját, melyben a C1-02 momentán nem szerepel.

SyncMate hiszti

A SyncMate egy süt-főz-mosogat alkalmazás – talán csak a mikrosütőddel nem hajlandó szinkronizálni -, amely településekor az alábbi szemetet kívánja feltúrni a gépedre: SyncMate-reqd-services Ezeket ő azért szeretné nagyon, mert meg van győződve arról, hogy te minden egyes alkalommal automatikusan szinkronizálni szeretnéd a Bluetooth eszközöd vele, amint az a SynMate host gép közelébe ér. Nyilván szegénykém nincs felkészítve arra, hogy a rideg lelkű iPhone user egyszer használhatós alkalmazásnak tekinti őt. Summa summarum, nem barátkoztunk össze én és a SyncMate. A Bluetooth kapcsolattal nem volt különösebb gond, sőt látszólag maga a szinkron is pöpecül lemegy, csak miután befejeződött a contact sync, örömmel közli, hogy nulla darab contact adatot pumpált át a Mac-ről a kis szerencsétlen Nokiára. Néhányszor tíz alkalommal próbálkoztam mindenfélével (mondjuk tény, hogy ezúttal a fekete kakas áldozat teliholdkor kimaradt), majd a SyncMate ment a kukába.

Nokia Ovi Suite

Ez a bárány már valamivel segítőkészebbnek bizonyult. Első ránézésre látom rajta, hogy van pöpec VCARD import funkció. Ész nélkül rohanok az Address Bookba, exportálom a címlistát v3.0 VCARD-ba, majd vissza az Ovis programba importálni. Az eredmény siralmas: az Ovi Suite egy rohadt szót nem szól, hogy mi a baja, egyszerűen csak nem importálja a több contactot tartalmazó VCARD file-t. Nosza itt is megkezdődik a vudu, VCARD 2.1, single contact export, UTF-8-ból bárkibe (hátha az a baja neki), de semmi nem segít, az Ovi Suite nem eszi az OS X Address Book által gyártott VCARD-ot. Nota bene: a 2012-ben letölthető Ovi Suite egyesével akarja a VCARD-okat enni, azt el nem tudja képzelni, hogy több contact kerüljön ugyanabba a VCARD file-ba. Megnézem, hátha van contact sync az állatorvosi lóval (=Outlook Express). Voila, van! Most, hogy van új ellenfelünk, mehetünk ezt is kiismerni (Outlook Expresst a saját gépemen talán még soha az életben nem indítottam el). Az Outlook Express egy csomó address book formátumot támogat – az egyik ilyen az LDIF (=LDAP Data Interchange Format). Frankó, már csak OS X Address Book → LDIF konverter kell. Némi keresgélés után rátalálok a PHP-ban írt vCard to LDIF konverterre itt. Leszedem (mert ugye az embergyerek az egész Address Book-ját egy random szembejövő service-nek csak nem adja ki, ha nem muszáj), gyorsan gyártatok vele szép LDIF file-t, azt megetetem az Outlook Express-szel, az Outlook Express címlistáját az Ovi Suite-tal, majd csillogó szemekkel nézem, ahogy 2012 augusztus végén a 193 kilobyte-os állományt az USB2-es dróton az alkalmazás mintegy kettő perc leforgása alatt átrepíti a telefonba. Sync kész, ránézek: egy jó nagy kupac foshalom az egész – az ékezetek Windowsosan széjjelcsúszva, a contactoknak vagy van neve, vagy nincs – ez így nem jó. Első varázsigeként szedek a stackoverflow-ról egy Unaccent függvényt, bánja kánya az ékezeteket, csak menjen az a tetves contact sync (annyira szép megoldás, hogy ideteszem):
function Unaccent($string)
{
    return preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml|caron);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'));
}
Persze az ékezetmentesítés nem old meg mindent, a contactok így is szanaszéjjel állnak. Sebaj, legalább teleszemeteltük a kis telefont, már lehet is guglizni, hogy hogyan pucoljunk le minden contactot (tekintettel arra, hogy ezt hiába kérem az Ovi Sync-től, nem csinálja meg). A telefon manualjából kiderül, hogy egy full system setting restore lesz nekem a jó. Elindítom, a telefon egy darabig molyol, majd se kép se hang: semmilyen buttonra nem reagál, incl. power on/off. Sebaj, volt már nekem sok Nokiám, ilyenkor jön a kivesz akksi varázslat és lőn: a kis telefon újra bootol, kéri a dátumot, ahogy a pap jön ki a templomból (=mintha mise történt volna). Lassan kezdem feladni, amikor eszembe jut, hogy volt még egy csomó formátum, amit az Outlook Express támogat – nosza akkor kínozzuk meg comma delimiteddel, abból nagy baj nem lehet! Szerencsére az elején talált vCard to LDIF tool képes mezei CSV exportra, sőt, akár codepage-et is cserél nekünk, szuper! Ugyan a codepage csere és a kötelező CSV header bekapcsolása újabb két export-import próbálkozást emészt fel, de legalább végre előáll a korrekt végeredmény: az Outlook Expressben egy olvasható címlista _majdnem minden_ contacttal. Előszedem a gordiuszi stuffokhoz tartogatott keyboard shortcutot és vérsebesen szabadulok meg a fattyú contactoktól. Már csak újabb 2 perc és a kis C1-02-ben meg is jelennek a telefonszámok. CSV gyártáshoz szembe jött még az azóta kihalt Address Book Exporter, valamint a galád pénzes Export Address Book, de hála az égnek időben rátaláltam az aranyat érő PHP csomagra. Ennyi hát a vasárnapi kényszermunkám története. Nem esküdnék rá, hogy rendszert csinálok ebből a szinkronból.]]>

Media Center Szent Grál: raspbmc

A probléma Van egy csomó videóanyagunk, amelyek nem H.264-ben vannak tárolva és nincs kedvünk konvertálgatni, de azért a TV-n szeretnénk viszontlátni őket. Egyúttal az egész bulira túl sok pénzt sem akarunk áldozni.

A megoldás

Vásároljuk meg az alábbi cuccokat:
  • 13000 HUF: Raspberry Pi computer
  • 1800 HUF: micro-USB táp a computerünk számára
  • 2000 HUF: 8 GB-os SD kártya
  • 2000 HUF: legalább 1.3-as HDMI kábel (bár én a helyedben 1.4a-t vennék, abban ott a 100 mbit-es ethernet is, ami ugyan most nem kell, de ki tudja, mikor jön majd jól)
  • 5000-9000 HUF: rádiós, egérrel egybeépített billentyűzet – mondjuk ez, vagy ez
  • 300 HUF: hálókábel
Cirka 25000 HUF-ból megvagyunk. Miután nagy örömünkre megjött a kis gépünk, látogassunk el az XMBC Raspberry Pi portjának raspbmc.com oldalára, töltsük le a leírtak szerint a Python installer scriptet, majd kövessük a script utasításait. A script az SD kártyánkra előkészít egy, a Raspberry Pi által bootolható installert, ami a raspbmc disztrót pakolja majd fel a kis minigépünkre. Ha az SD kártya kész, dugjuk össze a gépet a TV-vel, tegyük bele az előbb preparált SD kártyát, majd adjuk tápot a masinának. Egy klikk nélkül elkészül az XBMC-re kihegyezett disztrónk, a kis gép újrabootol és már adhatjuk is a network share-eket a Raspberry Pi masinán futó XBMC kliensnek: Hála az égnek, a 13000 HUF értékű kis masinából a gyártó nem spórolta ki a filléres HDMI-CEC csatlakozást, amit az aktuális XBMC ki is használ. Ez magyarul annyit tesz, hogy a HDMI dróton keresztül ébreszti/altatja a TV-nket, illetve természetesen bemeneti jelforrást vált, ha felébresztenénk őt a billentyűzet megnyomásával. Nota bene: 2012-ben ezt sem az Apple TV, sem a HDMI porttal érkező Mac mini nem tudja. Ez utóbbin lehet segíteni egy, a Pulse Eight által gyártott HDMI-CEC injektorral, amelyet az OS X-re portolt aktuális XBMC ugyanígy automatán használ, csakhogy a mai mese a lehető legolcsóbb, fullextrás megoldásról szólt, így most nem evezünk tovább a Mac minis vizekre, hanem inkább megyek és befalom a bárányt.]]>

Bárányos cucc

baranyos-cucc-layer1 Lehelletnyi papaszalonna, pici olívaolaj, héjas krumpliszeletek, kis só, sok rozmaring, nagy marék friss rókagomba, bors, fokhagyma. Layer 2: baranyos-cucc-layer2 Fiatal, gyenge bárány oldala, sózva, durva borsozva, papaszalonna katonákkal, további fokhagymagerezdekkel és rozmaringgal kényeztetve, alá pici víz. Sütőbe 150 fokra, aztán amikor puha, akkor 180-200 fok pár percig, majd kiszed, tálal, örül, megesz. Jóféle új zélandi sauvignon blanc kíséri és egy-egy 3rd party által gyártott babeczka z malinami dugózza majd le: babeczka-z-malinami Update: ez lett az állatból végül: baranyos-cucc-done]]>

Zamki Bobolice i Mirów

Bobolice Mirów Szép nagy vár a mészkő tetején mindkettő. Bobolice zsír újnak tűnik – azért, mert egyébként az is. A helyiek lényegében a régi vár alapjaira ráépítették a valaha volt eredeti pontos mását. Mirównál találkoztunk egy híres nemzeti étellel, a magyar lángossal (?): palek po wegiersku Ez igaziból egy sűrű gulyással vagy pörkölttel töltött tejfölös lángos. Fura, de egyszer megkóstoljuk, az tuti. Ha esetleg ettetek ilyet, ne titkoljátok az élményt!]]>

Find duplicates

A probléma Szorgosan fotózunk. Idővel rákapunk arra is, hogy a fényképeinket szépen rendszerezett formában tároljuk valamelyik fotós workflow alkalmazás segítségével. A fotóink egy folder struktúrába importálódnak, példás rendben. Minden oké, amikor egyszer csak véletlenül egy nagy kupac régi képet kétszer húzunk be a libraryba – kész a baj, egy zsák fotónk lesz meg két példányban, feleslegesen. Lista kellene a duplikált file-jainkról!

A megoldás

Mielőtt alkalmazást keresnénk a feladat leküzdésére, agyalunk egy kicsit és kitaláljuk, hogy *nix-like környezetben menni fog ez külső segítség nélkül is. Két file egyezésének megállapításához pont elég, ha azok MD5 hash-e megegyezik. Írjunk hát egy scriptet, amely az egyező MD5 hash-ek alapján elkészít egy duplikált file listát:
# A script a duplikált file-okat tartalmazó foldert várja paraméterként
# és a jpg kiterjesztésű állományok egyezését vizsgálja csak.
NAME="*.jpg"
ALLFILES="/tmp/finddups.allfiles.tmp"
DUPHASHES="/tmp/finddups.duphashes.tmp"
find $1 -name "$NAME" -exec md5 {} \; | sort >$ALLFILES
find $1 -name "$NAME" -exec md5 -q {} \; |sort|uniq -d|sort -n >$DUPHASHES
while read hash
do
	cat $ALLFILES | grep $hash | grep -oE '\((.*-[0-9].jpg)\)' | sed "s/(// ; s/)//"
done <$DUPHASHES
Nézzük meg, mit csinálunk. Az első find-del kezdődő sor a célfolderben levő összes jpg file-unkból számol egy MD5 hash-t, majd a filelistát hash-estől leteszi egy file-ba. Ez a file valahogy így fog kinézni:
MD5 (./2000/05/15/20000515-0084.jpg) = 747888000b422d619a1b308346b7d81e
MD5 (./2000/05/15/20000515-0086-2.jpg) = d3a064924fb8306519475b09cb90d66b
MD5 (./2000/05/15/20000515-0086-3.jpg) = d3a064924fb8306519475b09cb90d66b
MD5 (./2000/05/15/20000515-0086.jpg) = d3a064924fb8306519475b09cb90d66b
A következő sorban mégegyszer végigmegyünk a jpg filejainkon, de csak az MD5 hash-üket kérjük, mindenféle sallang nélkül (=ezt adja az md5 -q opciója), majd a uniq binárissal csak a duplikált hash-eket szűrve (=-d opció) letesszük az összes, többször előforduló MD5 hasht egy másik file-ba. Ezután már csak végig kell rohannunk a duplikált hash-eken, kikeresni, hogy mely file-okhoz tartoznak és kilistázni azokat – ezt teszi a script végi ciklus. A ciklus közepén levő regexp arra hivatott, hogy az első körben előállított hash-es filelistából csak a filenevek jelenjenek meg – azok közül is csak azok a file-ok, amelyek neve -[0-9].jpg-re végződik. Tudom, hogy a végén levő sed (amellyel a kibányászott filenevek elől és mögül lecsippentjük a zárójeleket) ágyúval verébre kategória. Nekem sem tetszik, gusztustalan – azonban szűk egy órán át nem találtam más megoldást, ezért maradt ilyen. Commentben lehet szárnyalni, ki hogyan választaná le így shellben az egrep által elkapott első capture group-ot.]]>

Curiosity

Kedvcsináló videó – egy percben a Marsról: Egy videó arról, hogy mennyire kemény meló sikeresen a Mars felszínére juttatni a robotot: Ha a fenti videók felkeltették az érdeklődésed, íme még pár link:

  • Minden a NASA MSL-ről (=Mars Science Laboratory) itt.
  • Erre találsz szépen összerakott, egyszerű és látványos pdf-et a küldetésről és magáról a robotról.
  • A komplett Mars misszióval kapcsolatos sok-sok érdekes video erre (a fenti három is innen jött).
  • A Curiosity landolásával kapcsolatos friss infók RSS-ben erre.
  • Livestream.com landolási video stream erre.
  • Ustream Nasa streamek erre. Én ezt a streamet ajánlom: egyfelől magyar a fejlesztő csapat, másfelől a múltkori, SpaceX – ISS összekapcsolódást közvetítő csatornájuk is messze akadásmentesebb volt, mint a NASA saját live streaming szolgáltatása.
Ha ennyire nem izgulnál erre az egész Marsos témára, de azért csak vagiznál ilyen űrös dologgal és mondjuk lenyűgöznéd a haverokat azzal, hogy egy buliban hanyagul felmutatsz az égre, hogy épp most integetnek neked az International Space Station-ról, akkor itt tudod megnézni, hogy mikor jár feletted a csapat, vagy itt láthatod a pozíciójukat valós időben. ]]>

Media Center Szent Grál: behódolunk a H264-nek

A probléma Mondjuk, hogy van egy zsák DVD-nk (tényleg van), adja Isten találtunk hozzájuk .SRT feliratokat is és mindezt cakkumpúder csinosított formában szeretnénk felajánlani az iTunes librarynknak népgazdasági hasznosításra (egy üveg fröccs már bennem van, elnézést a hablatyért).

A megoldás

A feladatot két részre bontjuk: előbb hagyjuk a computerünket tömegesen konvertálni, aztán majd szerzünk az eredményhez metaadatot is, végül megszólítjuk iTunes komát is. Csapjunk bele!

1. lépés: tömeges konverzió

Szóval nagyjából úgy, ahogy a fenti bagoly rajzolós HOWTO mutatja. Igaziból persze leszedünk egy HandbrakeCLI-t, bemásoljuk a /Applications mappánkba a binárist és megírjuk az alábbi scriptet:
#!/bin/sh
#
# Handbrake gyipaci
# lmdate 2010.07.05
#
# Végigmegy rekurzívan egy könytáron és megkeresi a filmcim-hu{n}.srt, filmcim-en{g}.srt feliratfile-okat,
# aztán ha igazán akarod, csinál neked soft subtitle-os m4v-ket az avi-jaidból.
#
# A script feltételezi, hogy ha csak egy, az avi file-lal megegyező nevű srt file-t talál, akkor abban magyar
# subtitle lakik.
#
convert() {
	film="$1"
	base="${film%.*}"
	srt="$base".srt
	hu="$base"-hu.srt
	hun="$base"-hun.srt
	en="$base"-en.srt
	eng="$base"-eng.srt
	srthuc=0
	srthu=""
	if [ -e "$srt" ];	then
		srthuc=1
		srthu="$srt"
	elif [ -e "$hu" ]; then
		srthuc=1
		srthu="$hu"
	elif [ -e "$hun" ]; then
		srthuc=1
		srthu="$hun"
	fi
	srtenc=0
	srten=""
	if [ -e "$en" ]; then
		srtenc=1
		srten="$en"
	elif [ -e "$eng" ]; then
		srtenc=1
		srten="$eng"
	fi
	let srtc=$srthuc+$srtenc
	srtfiles=""
	srtcodes=""
	srtlangs=""
	case $srtc in
		0 ) ;;
		1 )
			if [ -s "$srthu" ]; then
				srtfiles="$srthu"
				srtcodes="WINDOWS-1250"
				srtlangs="hun"
			else
				srtfiles="$srten"
				srtcodes="ISO-8859-1"
				srtlangs="eng"
			fi
			;;
		2 )
			srtfiles="$srthu","$srten"
			srtcodes="WINDOWS-1250,ISO-8859-1"
			srtlangs="hun,eng"
			;;
	esac
	if [ $srtc -ne 0 ]; then
		echo Found $srtc subtitles:
		echo "$srtfiles"
		echo "$srtcodes"
		echo "$srtlangs"
	else
		echo No subtitles found.
	fi
	options="-e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic -m -x cabac=0:ref=2:me=umh:b-pyramid=none:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500 -C 8"
	case $srtc in
		0 )
			# ha felirat nélkül is konvertálnál
			echo "" | $hbcli -v -i "$film" -o "$2" $options
			;;
		1 )
			# ha konvertálnád a home videód akkor is, ha csak a default magyar felirat van meg hozzá
			echo "" | $hbcli -v -i "$film" -o "$2" $options --srt-file "$srtfiles" --srt-codeset "$srtcodes" --srt-lang "$srtlangs"
			;;
		2 )
			# ha konvertálnád a home videód mind az angol, mind a magyar felirat birtokában a kétnyelvű családod számára
			echo "" | $hbcli -v -i "$film" -o "$2" $options --srt-file "$srtfiles" --srt-codeset "$srtcodes" --srt-lang "$srtlangs"
		 ;;
	esac
	return
}
hbcli=/Applications/HandBrakeCLI
source_dir="."
input_file_type="avi"
output_file_type="m4v"
echo "# Using HandBrakeCLI at "$hbcli
echo "# Using source directory "$source_dir
echo "# Converting "$input_file_type" to "$output_file_type
# Convert from one file to another
convert() {
   # The beginning part, echo "" | , is really important.  Without that, HandBrake exits the while loop.
   echo "" | $hbcli -i "$1" -o "$2" --preset="AppleTV 2" -C 8;
}
# Find the files and pipe the results into the read command.  The read command properly handles spaces in directories and files names.
find "$source_dir" -iname "*.$input_file_type" | while read in_file
do
        echo "Processing…"
   echo ">Input  "$in_file
   # Replace the file type
   out_file=$(echo $in_file|sed "s/\(.*\.\)$input_file_type/\1$output_file_type/g")
   echo ">Output "$out_file
   # Convert the file
   convert "$in_file" "$out_file"
   if [ $? != 0 ]
        then
            echo "$in_file had problems" >> handbrake-errors.log
        fi
   echo ">Finished "$out_file "\n\n"
done
echo "DONE CONVERTING FILES"
A sctiptünkben az options= kezdetű sorban a -C utáni számot kicseréljük a rendelkezésünkre álló CPU magok számára. Egy folderbe bepakoljuk az eddig bután .avi formában tárolt filmjeinket / sorozatainkat, melléjük tesszük az .srt file-okat (ha ezt nem értjük, elolvassuk a scriptet, nem csak nyakló nélkül mentjük). Ha ez kész, nyitunk egy shellt, bemászunk a filmek könyvtárába és elindítjuk a scriptünket, majd a végén örülünk a sok szép új m4v file-nak.

2. lépés: metázunk

Az előbb lett sok szép mv4 file-unk – ezekbe kell nekünk proper metadata. Ehhez vásároljuk meg a Mac App Storeból az iDentify alkalmazást, esetleg szedjük le a trialt innen. Az iDentifybe bedobáljuk az m4v file-jainkat, ő meg szépen feltaggeli őket. Ha ezt mégsem teszi meg magától, akkor nagy eséllyel nem tudott kitalálni szerencsétlen semmi kézzelfoghatót a filenévből. Ilyenkor forduljunk az IMDB-hez bizalommal: keressük ki a film / sorozat IMDB oldalát és adjuk meg az iDentifynek az IMDB által használt azonosítót.

3. lépés: iTunes etetés

A drága megalomán média alkalmazásunk minden valószínűség szerint a ~/Music/iTunes mappában tárolja a cuccait. Ebben a folderben keressük meg az iTunes Media/Automatically Add to iTunes könyvtárat és dobáljuk bele vadul az előbb legyártott, majd gondosan feltaggelt m4v állományainkat. Az iTunes észreveszi az új jövevényeket, belenéz a metaadatokba és szépen a helyére pakolja a cuccost. Innentől kezdve pedig már csak egy iTunes Home Sharing bekapcsolás és egy Apple TV dobozka kell ahhoz, hogy a nappaliban molesztáljuk a csodaszép videós médiatárunkat.]]>