sesam.hu

Engineering Manager / trail runner / Budapest, Hungary

Apache with PHP on Mavericks (OS X 10.9)

Ha már annyira kockára sikerült a szombat, hogy lokálban telepítek WordPresst, pár feljegyzés:

Bár az Apple kivette a Preferencesből, az Apache azért harcra készen ott van a rendszerben, csupán a következő paranccsal el kell indítani:

sudo apachectl start

Ha pedig PHP-re is szükség van benne, akkor az alábbi fájlban kell kikommentezni a jelzett sort, majd újraindítani a szervert:

/etc/apache2/httpd.conf
LoadModule php5_module libexec/apache2/libphp5.so

Profit.

A leghasznosabb tudnivaló OS X Terminálhoz

Ha lenyomva tartod az Alt billentyűt, akkor oda teszi a kurzort a sorban, ahová kattintasz. Ó, ha visszakaphatnám a nyilakkal léptetéssel eltöltött órákat.

Ebben a threadben még sok ilyen hasznos tipp van amúgy.

Qualitätskrankenhaus

Talán ez az utolsó kulcscsonttöréses poszt, de nem ígérek semmit.

Ez a röntgen a második, tehát négy nappal a baleset után készült.

Elszörnyedő radiológus olvasóim kedvéért, igen, van rajta kontrasztemelés, azért néz ki így.

Egy eredeti verziót elküldtem tesónak, konzíliumot tartott az ottani főorvos és egy szakorvos, akik szintén azt mondták, mivel stabilan áll, ők se műtötték volna meg, ennyi idő után pedig már főleg nem nyúlnának hozzá. Úgyhogy tényleg így maradok.

Vicces egyébként, én balga azt hittem, majd adnak a radiológián egy CD-t hatalmas JPEG képekkel. Nyilván nem, van egy DICOM nevű standard, ami a Digital Imaging and Communications in Medicine rövidítése, és szabványok halmaza orvosi célú képek tárolásásra és kommunikációjára.

Szóval addig ok, hogy van CD, de ilyen speciális formátumú képek vannak rajta, meg egy Windowsos olvasó. Velem nem szúrnak ki, gyorsan találtam egy Escape Medical Viewer nevű ingyen kipróbálható programot OS X-re, de vicces volt, mert a kolléga Windows 8-as gépén a CD-n adott szoftver már nem indult el szintén.

Illetve igazából a legnagyobb fehérember-problémám az volt, hogy se az Air se a rMBP nem tartalmaz optikai meghajtót.

Force Unicode (UTF-8) reply in Mail.app on OS X Mountain Lion

Heuréka! Elképesztően sokat szívtam azzal, hogy az OS X Mail alkalmazásában nem lehet alapértelmezett kódlapot beállítani, de most megvan a megoldás.

A munkámból adódóan sokat írnak nekem japánok, akiknek sajnos az a rossz szokásuk, hogy ISO-2022-JP enkódolásban küldik a leveleiket. Ezeket persze a Mail.app minden gond nélkül megjeleníti. Azonban ha egy ilyen levelet továbbítok, vagy válaszolok rá, akkor megmarad a japán kódlap. Ez még mindig nem lenne baj, mert a Mail.app van olyan intelligens, hogy helyesen mutatja az emailt, viszont mindenki más, aki mondjuk a Gmail webes felületén nézi, olvashatatlan karakterláncot lát csak. Így a dolognak még az a szépsége is megvan, hogy csak akkor értesülök a fiaskóról, amikor valaki megmutatja, hogy mit küldtem neki.

Az egyik megoldás, hogy minden egyes alkalommal, amikor ilyen emailre válaszolok, átállítom a kimenő levél enkódolását a Message > Text Encoding > Unicode (UTF-8) menüvel. A módszer hátulütője, hogy macerás minden elküldendő emailnél végigkattintani, illetve hajlamos vagyok elfelejteni. Fixen beállítani természetesen nem lehet.

Az internet tele van a második opcióval, hogy a terminálból adjuk ki a defaults write com.apple.mail NSPreferredMailCharset "UTF-8" parancsot. Ez azonban Leopard óta megszűnt működni, tehát kuka.

Ami viszont bizonyítottan működő megoldás, ha egy Dingbat karaktert helyez el az ember az emailben, esetemben például az aláírásban. Ha ilyen karakter van az email szövegében a Mail.app automatikusan Unicode kódolással küldi el, mindegy, milyen karakterlapú emailre válaszolunk.

Nem egy esztétikus hack, de működik.

Too many simultaneous connections

Ma kiírtam Twitterre egy parancsot, amivel kilépésre lehet bírni bármilyen OS X alkalmazást parancssorból. A fene gondolta, de nagyon népszerű lett.

A háttér, hogy a céges emailünk Google Apps alapú, amit én minden gépemen Mail.app-ban nézek. Gyakran előfordul, hogy az otthoni gépen is bekapcsolva marad a Mail.app. Ez azért lehet gond, mert ha túl sok kérés esik be a Gmailhez, (konkrétan több, mint 15 IMAP kapcsolat fiókonként) akkor Too many simultaneous connections hibát dob. Egy kliens pedig a háttérben több kapcsolatot is nyithat.

Igény van rá tehát, hogy a munkahelyről ki lehessen lépni az otthoni Mail.app-ból. Ehhez szükség van ssh elérésre, amit simán be lehet kapcsolni az OS X beállításaiban, egy port átirányításra az otthoni routerben, és az otthoni IP címre, amit én a Dyn ingyenes DNS szolgáltatásával kötöttem össze.

Ha már bent vagyunk, elég lenne egy sima kill parancsot kiadni, de az nem túl elegáns. Sokkal szebb az:

osascript -e 'tell application "Mail" to quit'

Az üzengetésről

Nem gondoltam volna, hogy ez lesz, de ma szépen lecseréltem a kezdőképernyőn a Beejive ikonját a Facebook Messengerre. Egyszerűen az utóbbi időben mindenkivel ezt használom, be sem szoktam lépni GTalkra.

Tényleg benne van minden, ami egy üzenetküldőbe kell:

  • Asztali gépről és a két nagy mobil operációs rendszerről is elérhető
  • Lehet offline kontaktoknak is üzenni, kiváltja az SMSt
  • Szinkronizálja az előzményeket a készülékek között
  • Ha az egyik készülékeden fogadod az üzenetet, a többi abbahagyja az értesítők küldését

Az első ponton van mit fejleszteni, hiszen OS X alatt csak a weboldalon lehet beszélgetést folytatni. Logikus lett volna a Mountain Lion Facebook integrációjával a Messagesbe belehegeszteni a Facebook chatet is mondjuk, de ez nem történt meg. A bejegyzés kedvéért megnéztem, és nem Jabber, hanem MQTT protokollt használ, ami mondjuk nyílt forráskódú.

A Google Talk számomra legnagyobb problémája, hogy a legtöbb iOS-es implementációja elég gyászos. A Beejive-ot elviselhető volt használni, de az is bele tudott ragadni egy-egy szinkronizálásba néha. Androidon persze sokkal jobb a helyzet, de ez engem nem vigasztal. Valamint én nem is használom a GMail fiókomat, így nyitva sincs egész nap a böngészőben. Szerencsére az OS X Messages ezt kulturáltan megoldotta.

Az amúgy nekem nagyon bejövő iMessage-nek a fentihez hasonló baja, hogy Androidos vagy Windowsos kapcsolataimmal nem lehet használni.

A negyedik pontban felhozott készülékek közti váltást a Messenger viszonylag kecsesen oldja meg, fel tudom kapni a telefont ha épp elmegyek otthonról, és azon folytatni egy beszélgetést, ha úgy adódik. Ha hosszú ideig nincs kommunikáció, akkor az első üzenetnél megint együtt jelez a telefon és a gép, de utána már csak az, amin válaszoltam.

Az is jó dolog még, hogy látszik, ha a fogadó fél elolvasta az üzenetet, még ha így nehezebb is elbújni. Na meg ott van rajta minden kontakt alapból, nem kell azzal bohóckodni, hogy meghívót küld az ember, amit aztán vagy elfogadnak, vagy nem. Nekem szimpatikusabb ez. Ha valakivel nagyon nem akarok beszélni, akkor beteszem egy olyan csoportba, aminek fixen offline vagyok.

Mindenesetre most már csak anyát kell átszoktatni a Messengerre a KIK-ről, és kész. Emlékeztek még amúgy, amikor mindenki MSN-ezett?

iStat Pro fix

Régóta használom az iStat Pro widgetet OS X-en. Kiváló arra, hogy egy gyors mozdulattal rá lehessen tekinteni a szabad tárhelyre, a memória állapotára, vagy hogy melyik processz zabálja épp a CPU-t. Mivel a Dashboardon ül, máskor nem zavar fölöslegesen ezekkel.

Sajnos a Bjango már nem fejleszti a terméket, a kiváltására ajánlott iStat Menus pedig nekem nem tetszik, és drága is. Viszont Mountain Lion alatt eltört a widget folyamatokat listázó része…

Szerencsére találtam egyszerű javítást hozzá:

  1. Keresd meg a widgetet a ~/Library/Widgets (esetleg a /Library/Widgets) könyvtárban.
    Ha nem megy, Finderben a Shift + Command + G nyitja meg ezeket.
  2. Jobb kattintás után válaszd a Show Package Contents opciót.
  3. Nyisd meg a Wide.js (horizontális nézet) vagy a Tall.js (vertikális nézet) filet.
  4. Az alábbi sorokban a “PID|$1” részeknél a pipe | után kell írni egy spacet: “PID| $1
    if(p.v("processes_sort_mode") == 'cpu')
    		widget.system('ps -arcwwwxo "pid %cpu command" | egrep "PID| $1" | grep -v grep | ' + exclude + ' head -7 | tail -6 | awk \'{print ""$1""$2""$3,$4,$5""}\'', function(data){ _self.updateProcessesOut(data);});
    	else
    		widget.system('ps -amcwwwxo "pid rss command"  | egrep "PID| $1" | grep -v grep | ' + exclude + ' head -7 | tail -6 | awk \'{print ""$1""$2""$3,$4,$5""}\'', function(data){ _self.updateProcessesOut(data);});
    }
  5. Mentés után a widget eltávolításával, majd újra Dashboardhoz adásával már helyesen listázódnak a processzek.

No Connected Camera Error in Mountain Lion

Quite annoyingly after the computer goes to sleep and wakes up again, some applications have trouble recognising the built-in camera. Up until now I resorted to rebooting the Air, which is not that a big deal when you have an SSD, but still I wished I didn’t have to. Turns out there is an easier solution: an application called VDCAssistant is reserving the camera in these cases, which is safe to be killed either from the Activity Monitor or by issuing:

sudo killall VDCAssistant

Installing FFmpeg on OS X Mountain Lion

From time to time I need to do simple jobs with videos, such as a container change. I used to use mencoder for that back on linux and I still think that the versatility of a command line tool is unparalleled by any GUI solution. So I set out to get FFmpeg on my Mac.

There is a static build available from the FFmpeg website, but I decided to take a somewhat more complicated approach and compile it from source myself.

To do so, one first needs Xcode, available from the Mac App Store. The current versions, however, do not contain the command line tools needed. A separate package called Command Line Tools needs to be installed from either navigating to the Downloads for Apple Developers site from Xcode by Xcode > Open Developer Tool > More Developer Tools… or using the built-in package manager at Xcode > Preferences… on the Downloads tab.

Two packages need to be installed separately first: LAME for mp3 encoding (compulsory) and FAAC for AAC (optional). The tar.gz files can be unpacked by, for example:

tar -xzvf faac-1.28.tar

Then enter their respective directories and issue:

./configure
make
sudo make install

Finally, check out the latest source code of FFmpeg:

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

Compile it with LAME and FAAC enabled (the latter only if it’s installed). The --enable-nonfree switch is required by FAAC and I got an error unless I disabled Yasm.

./configure --enable-libmp3lame --enable-shared --enable-libfaac --enable-nonfree --disable-yasm
make
sudo make install

That’s all, FFmpeg is ready to use:

Daenerys:Downloads sesam$ ffmpeg
ffmpeg version N-44141-g9de7622 Copyright (c) 2000-2012 the FFmpeg developers
  built on Sep  4 2012 16:10:11 with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
  configuration: --enable-libmp3lame --enable-shared --enable-libfaac --enable-nonfree --disable-yasm
  libavutil      51. 70.100 / 51. 70.100
  libavcodec     54. 55.100 / 54. 55.100
  libavformat    54. 25.104 / 54. 25.104
  libavdevice    54.  2.100 / 54.  2.100
  libavfilter     3. 15.103 /  3. 15.103
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 15.100 /  0. 15.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

Mountain Lion Up-To-Date Program

I was excited to start using Apple’s new OS but it seems that the release has been marred by widespread problems regarding the Up-To-Date Program. Since my Air was bought after the WWDC, I am eligible for a redemption code for the App Store to upgrade to ML free of charge, which arrived in an email in matters of minutes. However, along with several others, the code I have received claims to have already been used, which I sure as hell haven’t done. Reports suggest it may take days to receive new working ones. Not to try to look a gift horse in the mouth, this still could have been done a lot smoother.