Reading and setting file tags via command line in OS X 10.9 Mavericks

Reading file tags

File tags are stored in file system extended attribute named com.apple.metadata:_kMDItemUserTags as a binary property list blob. Reading them is very easy with the xattr command line tool:

xattr -p com.apple.metadata:_kMDItemUserTags myfile.txt

however, the results are displayed as a string of hexadecimal numbers, little use to us. We can pipe the output to xxd tool which will convert the hex string to binary, resulting in a binary plist file. We can pipe that result further in plutil tool which will be used to convert the binary data to more useful format. Formats available are xml1 (text XML format) and json (very useful for scripting in Python). Full command looks as follows:

xattr -p com.apple.metadata:_kMDItemUserTags myfile.txt | xxd -r -p | plutil -convert xml1 - -o -

for JSON output:

xattr -p com.apple.metadata:_kMDItemUserTags myfile.txt | xxd -r -p | plutil -convert json - -o -

(you can add a -r switch after the json to pretty print the JSON data). Here is a simple bash script to illustrate the concept and iterating over individual file tags:

#!/bin/bash
MYFILE='test.txt'
JSON="$(xattr -p com.apple.metadata:_kMDItemUserTags $MYFILE | xxd -r -p | plutil -convert json - -o -)"
IFS="," tag_split=("${JSON:1:${#JSON}-2}")
echo "File tags for $MYFILE:"
for i in ${tag_split[@]}
do
echo "$i"
done

Writing file tags

Setting file tags is a little trickier as we have to create the binary blob first. I prefer using the JSON format initially which will get converted to a binary property list file that will, when turned into a hexadecimal string, find its way to the extended attribute in the file system. You can use intermediate files but I prefer powerful one-liners (as always!). Here is the shortest method available and the example will set three tags (red, blue and mytag1) to the file myfile.txt:

xattr -xw com.apple.metadata:_kMDItemUserTags $(echo '["red","blue","mytag1","a somewhat long tag"]' | plutil -convert binary1 - -o - | xxd -p -c 256 -u) myfile.txt

Hope you find that useful.

converting OS X FTP server log (xferlog) to CSV

If you want to take a deeper look into OS X FTP log file you encounter the strange space delimited format such as:

Thu Mar 1 13:46:55 2012 1 somehost.somedomain.com 250676 /DIR1/file.jpg b _ o r someuser ftp 0 * c

Here is a quick regular expression that you can use in search-and-replace in a text editor such as TextWrangler, to convert this to a CSV format for spreadsheet use.

Find: (.{24}).(\d+)\s(\S*)\s(\d+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(.*)
Replace with: "\1",\2,\3,\4,"\5",\6,\7,\8,\9,\10,\11,\12,\13,\14

This will produce result like this:
"Thu Mar 1 13:46:55 2012",1,somehost.somedomain.com,250676,"/DIR1/file.jpg",b,_,o,r,someuser,ftp,0,*,c

Check the man pages of xferlog xfer log for details on column meanings.

Have fun!

Informacijska doba

Informacija JE prihodnost

Star kitajski urok pravi "Živi v zanimivih časih!" in v bistvu pomeni "živi v nestabilnosti, negotovosti in v hitrih spremembah". Tehnologija nam življenje v tem smislu lahko naredi "zanimivega".

Razvoj tehologije ima dve ekstremni možnosti za razvoj. Le-ta bo določil način, s katerim bomo obdelovali informacije in se strne v enem osnovnem vprašanju "kaj je bolj pomembno - fizični podatki ali dostop do njih". Pa si poglejmo ta dva modela ekstremnih možnosti razvoja. Zavedam se, da svet ni črno-bel vendar so ekstremi dober način ugotavljanja potencialov, zato se bomo pač malo pretvarjali.

Model neskončnega pomnilnega medija

"Pomnilni medij je vse in vse je pomnilni medij" - v eni možnih hipotez razvoja tehnologije vlada "pomnilni medij". Naprave (kot npr hologramski spomin) bodo nas preplavile in postale tako poceni in tako zelo zelo zmogljive, da bomo lahko s seboj nosili prav vse. Vstavili boste svojo majhno info-kartico (v velikosti kreditne kartice), info-pero ali info-ključ in vse, kar boste hoteli bo pod vašimi prsti. Računalniki bodo vsepovsod, vendar bodo imeli le funkcijo uporabe podatkov, ki jih boste vstavili vanj. Hm. če je pomnilnik poceni in zmogljivost neskončna (ali skoraj neskončna), kaj je potemtakem "računalnik"? Celotni operacijski sistem, vse aplikacije in vsi podatki bodo vedno pri vas. Vsa vaša priljubljena glasba, slike, filmi, datoteke, knjige, spletne strani, programi, prav vse bo vedno potovalo z vami. Pristopili boste k napravi (kot sedaj k bankomatu), vstavili vaše "življenje" in se dotaknili zaslona. Naprava se bo naložila z vašega pomnilnega medija in bo taka, kot ste jo nazadnje zapustili (navidezno). Spremenila se bo v videorekorder, CD player, računalnik, knjižnico ali v še kaj drugega. V takem okolju se bodo računalniki razvili v nekaj, kar bo popolnoma nastavljivo. Celo ideja operacijskega sistema se bo razvila dlje in bo postala bolj "delovno okolje", v celoti prilagojeno vam. Vsak si bo lahko sam oblikoval okolje in orodja (z nekaj pričetnimi predlogami, kot Mac OS XX ali Windows 2050). Skozi čas boste dodali toliko vaših orodij in prilagoditev, da bo to delovno okolje unikatno vaše, pisano na vašo kožo. Računalnik (kot ga poznamo danes) ne bo igral nobene vloge, saj bo še najslabši deloval milijonkrat hitreje kot karkoli boste potrebovali. Vaš navidezni računalnik bo zgolj pomnilnik in fizična strojna oprema bo pač tista, kjer boste svoj navidezni računalnik v določenem času izvajali.

Model neskončnega omrežja

Seveda obstaja še druga možnost v geslu "omrežje je vse in vse je omrežje". V tem ekstremnem primeru vaši podatki vsepovsod - niso lokalizirani na nekem pomnilnem mediju. Omrežja bodo neskončno hitra in neskončno dostopna, saj bo Internet vsepovsod. Bo tudi neskončno poceni (v smislu strojne opreme) in zato spet računalnik nima vpliva nanjo. Kjerkoli se boste dotaknili "internet terminala", boste od tam imeli dostop do vseh vaših podatkov. Vaše uporabniško ime in geslo bo določalo obliko in delovanje vašega delovnega okolja, ki ste si ga ustvarili. Za svoje delo boste uporabljali računalnik, vendar se ne boste ukvarjali s vprašanji, kot so "čigav je" in "kakšen je", ker to pač ni pomembno - pomembni so le vaši podatki in ti so vedno na voljo.

Počakajte no malo. Verjetno se vam je zazdelo in res je - oba futuristična scenarija si zvenita sumljivo podobna. Moorov zakon, ki pravi da se zmogljivost tehnologije podvoji vsakih 18-24 mesecev povzroča vedno hitrejšo strojno opremo, vedno večje pomnilne medije in - ironija - naredi računalnik kot celoto vedno manj in manj pomemben. Zmogljivosti računalnikov in pomnilnih medijev se bliža neskončnosti in bodo nekoč tržili ob zakone fizike ampak za sedaj (in naslednjih 50 let) se bo to še dogajalo. Čez kako leto ali dve bodo poceni in majhni iMaci imeli bistveno višje zmogljivosti kot stotine bilijone dolarjev vredni superračunalniki v času, ko sem se pričel baviti z računalniki. S to hitrostjo razvoja praktično ni meja, ki je računalniška tehnologija ne bi mogla preskočiti. Edina zavora, ki nas zadržuje je človeštvo samo - ljudje se ne moremo tako hitro prilagoditi novostim, kot se lahko računalniki. Ljudje smo pač ljubitelji dejanskih stvari, ki jih lahko vidimo, primemo in se z njimi považimo pred prijatelji. Prenosniki in notesniki so tisto, kar ljudje smatrajo za pomembno - le redki se zavedajo izključne pomembnosti podatkov in produktivnosti na njihovih strojih. Minevajo generacije računalniških uporabnikov, ki se še vedno navežejo na računalnik kot škatlo elektronike bolj, kot na podatke in produktivnost, ki jim jo ta škatla omogoča. A kako dolgo bo to še trajalo?

Človeštvo se spreminja izredno počasi. Poglejmo si zgodovino - industrijsko dobo in avtomobile. Lastnosti, ki omogočajo lažjo upravljanje z avtomobilom (avtomatski zaganjalnik, čok, menjalnik, servo volan ipd) so morale čakati v načrtih več kot 30 let! To ne zato, ker bi bila izdelava prezahtevna temveč zgolj zato, ker se je morala zamenjati cela generacija ljudi, da bi prav vsi razumeli, da za upravljanje z avtomobilom ni potrebno biti strokovnjak-mehanik.

Še ena menjava generacij je bila potrebna (20 let), da so mikroračunalniki iz igrač postali resna poslovna orodja - ne zato, ker se s Commodore C64 ne bi dalo izdelati predračuna ali pogodbe temveč samo zato, ker so ljudje pogosto trmasti, kratkovidni in neprilagodljivi ter zato, ker se je tehnologija razvijala hitreje od zmožnosti človega na prilagoditev.

Morda se vprašate, kaj to zares pomeni za našo prihodnost in prihodnost zanamcev?
Poglejmo praktično - Internet je sedaj komaj dojenček in sploh ne vemo, kako vse to uporabiti. Moorov zakon in računalniki se komaj sedaj prav bohotijo in zdi se, da se je snežena kepa ravnokar pričela valiti po hribu (in se večati). čez 20 let bo Internet poln ljudi, ki so vso svoje življenje živeli na "netu" in ne vidijo mej, kot jih vidimo mi - kratkovidni starci. šele takrat bodo stvari zares poletele - generacija se pač mora zamenjati.

Model neskončnega prenosnega spomina za sedaj ima več verjetnosti uresničitve, saj se pomnilni mediji razvijajo hitreje kot Internetno omrežje. Na drugi strani pa skupnost (ljudje) model neskončnega omrežja bolje razumejo in je zato toliko bolj verjeten. Katerikoli model bomo izbrali ni toliko važno kot to, da bomo morali sprejeti (in postati) popolnoma drugačno strukturo skupnosti ravno zaradi te neomejene dostopnosti informacij.

Vse do sedaj je bilo vse, kar smo potrebovali, večja zmogljivost, višja hitrost in v veliki večini smo razpoložljiva sredstva zares potrošili. Kaj pa sedaj, ko razvoj obojega prehiteva naše potrebe? Zamislite si - s povprečnim Celeron 300 MHz računalnikom in 8 Gb trdim diskom zagotovo opravite 99.5% vsega potrebnega dela v dovolj hitrem času (realnem). Kaj si boste pa počeli z 3 GHz Pentium 4 računalnikom in 250 Gb trdim diskom? Kako boste uporabili njegove zmogljivosti? Ta neizkoriščen potencial bo spremenil razmišljanja uporabnikov in bo tiho prisilil skupost sprejeti nove poslovne koncepte, trge in ideje. In to vidimo že sedaj, ko razvoj pomnilnih medijev in hitrosti procesorjev komaj dobiva krila! Da, vsa ta tehnologija star kitajski urok dejansko uresniči - prav res živimo v zanimivih časih!

Zamislite se še nad tem: pred desetimi leti je bil tisti, ki je imel svojo spletno stran pravi mojster - vsi so ga občudovali in vsi so si svoje spletne strani srčno želeli, saj bi jim to omogočilo "poslovne možnosti, zaslužek, ipd blablabla". Danes si lahko vsak - prav vsak - omisli svojo spletno stran z lastno domeno in celotno e-trgovino že za manj kot 1000 SIT mesečno; to je manj kot strošek porabe hladne vode, če vsak dan dvakrat po nepotrebnem izplaknete školjko! Zakaj potemtakem spletnih strani ni veliko veliko več?