Area de-PHPizzata  —  This area is free from PHP crapware

19 giugno 2009

Read a UTF-encoded file using Applescript

Recently I had to shuffle a lot with XML, using applescript together with “TestXSLT” by Marc Liyanage.
Everything was fine while I was reading ISO-8859-1 encoded files and outputting UTF-8 (directly saved by TestXSLT), while some trouble was getting out when the input file was Unicode.

Unfortunately TestXSLT only allows command “set XML code to…” passing the text of the XML, rather than file path, then we need to read correctly Unicode text from inside Applescript.

Here it is my original handler for text reading:

on readFile(filepath)
set foo to (open for access (POSIX file filepath))
set txt to (read foo for (get eof foo))
close access foo
return txt
end readFile


I had to change it slightly in order to read UTF-16 Unicode:

on readFile(filepath)
set foo to (open for access (POSIX file filepath))
set txt to (read foo for (get eof foo) as Unicode text)
close access foo
return txt
end readFile


And this is for UTF-8:

on readFile(filepath)
set foo to (open for access (POSIX file filepath))
set txt to (read foo for (get eof foo) as «class utf8»)
close access foo
return txt
end readFile

Etichette: ,

23 marzo 2009

AFP server con SSL (per Leopard) senza ddp, per Debian

netatalk, il package che gestisce il protocollo AFP e ddp (Apple File Protocol su TCP, ed il vecchio su appletalk broadcast) non supporta l’autenticazione SSL, e questo lo rende inutilizzabile con Leopard.

È però possibile compilarne una propria copia, con semplicità.

Compilare netatalk


Loggandosi come root, eseguire i seguenti comandi:

cd /usr/src
apt-get install openssl cracklib2 libpam-cracklib cracklib2-dev
apt-get source netatalk
apt-get build-dep netatalk


Completato il download, spostarsi nella directory opportuna ed editare il file rules:

cd netatalk-2.0.3
vi debian/rules


Cercare delle righe come:

DEB_UPDATE_RCD_PARAMS := defaults 50
DEB_CONFIGURE_EXTRA_FLAGS := \
--with-shadow --enable-fhs \
--with-tcp-wrappers --with-mangling \
--enable-timelord --enable-overwrite \
--with-pkgconfdir=/etc/netatalk \
--with-nls-dir=/usr/share/netatalk/nls \
--disable-logger --enable-srvloc \
--enable-pgp-uam --enable-krb4-uam --enable-krbV-uam


Aggiungere in fondo:

DEB_BUILD_OPTIONS=ssl debuild


Questa opzione costruirà netatalk con il supporto SSL per le password.

Salviamo ed usciamo, quindi compiliamo il package:

dpkg-buildpackage


Siamo pronti per installare il package:

cd ..
dpkg -i netatalk_2.xxxx_i386.deb


Modificare la configurazione


Editiamo il file /etc/netatalk/afpd.conf, aggiungendo questa linea:

-uamlist uams_dhx.so,uams_guest.so,uams_clrtxt.so,uams_passwd.so,uams_gss.so


Aggiungeremo la linea sotto al blocco dove parla di autenticazione

# Authentication Methods:
# -uampath Use this path to look for User Authentication Modules.
# ...
# (DHX) for authentication.
-uamlist uams_dhx.so,uams_guest.so,uams_clrtxt.so,uams_passwd.so,uams_gss.so


A questo punto editiamo /etc/defaults/netatalk, e cambiamo i valori da

ATALKD_RUN=yes
PAPD_RUN=yes
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

a
ATALKD_RUN=no
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no


Così facendo abbiamo anche disattivato il "vecchio" appletalk.

Se ci sono errori di login…


Se dopo il login otteniamo su Mac una attesa senza fine e su Linux nel log una stringa come

DB_VERSION_MISMATCH: Database environment version mismatch


allora dobbiamo andare nella home dell’utente che si sta cercando di autenticare, e rimuovere la directory .AppleDB.

Riavviamo netatalk, e il gioco è fatto.

Etichette: , ,

26 agosto 2008

xulRunner 1.9, Mac OS X ed il fullScreen

Far andare a pieno schermo una finestra di xulRunner... un bel problema.

Su tutte le piattaforme fullScreen=true non ha effetto, ma a quello si rimedia:
setTimeout("window.fullScreen=true;",10)

Il problema è su Mac OS X, dove questa modifica non ha effetto se si forza il ricaricamento dello XUL, ed ha effetto solo dal secondo lancio altrimenti. E comunque rimane la titlebar, che invece non rimaneva con xulRunner 1.8.0.9

Come uscirne?
Occorre aprire la finestra che vogliamo a pieno schermo utilizzandone un'altra come launcher.

La finestra da aprire deve essere semplice, un documento XUL con un nodo window in cui ometteremo gli attributi sizemode, width, height, screenX e screenY (ovviamente non comprenderemo questi attributi neanche in un eventuale attributo persist).
Il posizionamento dovrà essere determinato dal comando di apertura, altrimenti si verificherà un conflitto di competenze tra l'evento di apertura e gli attributi della finestra.
Ricordiamoci però di lasciare in questa finestra l'attributo hidechrome="true".

La finestra che apre userà un comando come:
var uri = 'chrome://panel/content/main.xul';
var winName = 'fullscreenWindow',
var winFeatures = "chrome,dependent";
winFeatures += ",top=0,left=0,width=800,height=600";
winFeatures += ",titlebar=no,fullscreen=yes";
window.open(uri,winName,winFeatures );

(al posto di window.open si può anche utilizzare window.openDialog)

Et voilà, aperto a pieno schermo (e da subito) anche su Mac! :-)

Etichette: ,

That’s All Folks!