09/06/07

Fonctions diverses AppleScript (perso)

AppleScript

Dans ce billet, je stockerai au fur et à mesure, des morceaux d'AppleScript persos qui m'ont été plus ou moins utiles…

Il se peut, d'ailleurs, que nombre d'entre eux utilisent la commande do shell script, je commence en effet à sentir certaines limites d'AppleScript et de ses commandes natives, par exemple exists process qui ne recense évidemment pas les tâches de fond, et donc une alternative dès le paragraphe suivant.

Tuer un processus résident si il existe

on kill(process2kill)
	set myTop to do shell script "top -l 1"
	if myTop contains space & process2kill & space then
		do shell script "killall " & process2kill
		return true
	else
		return false
	end if
end kill

Comme chacun le sait, la commande top ne retourne que les 10 premiers caractères du nom de chaque processus et de plus celui-ci peut être légèrement différent de ce que l'on a l'habitude de voir dans le Moniteur d'activité.

Récupérer l'extension d'un fichier

on get_extension(file_path)
	set text item delimiters to "."
	set temp to every text item of file_path
	set text item delimiters to ""
	return "." & last item of temp
end get_extension

Fonction pouvant être utile, par exemple, lors de la conversion de fichiers (bmp ⇒ png, html ⇒ pdf…), au lieu d'ajouter une extension supplémentaire au fichier converti, on peut commencer par extraire l'extension avant d'effectuer un remplacement de l'ancienne extension par la nouvelle.

Vérifier les droits en écriture

on verify_writability(unix_path)
	try
		do shell script "[ -w " & quoted form of unix_path & " ]"
		return true
	on error
		return false
	end try
end verify_writability

Cette petite fonction retourne true seulement si le fichier existe et est accessible en écriture… pour quelques éclaircissements, lire : Unix: le Bourne shell - les tests.

commenter (0)

09/06/07

une icône mimetype PDF... et PDFView

PDF

Ajouter une icône modifiée basée sur l'icône PDF issue de Crystal Clear par Everaldo au visualisateur de documents PDF PDFView grâce à l'édition et la modification du fichier Info.plist.

Modification du fichier Info.plist

Le fichier Info.plist ouvert avec Carbon Emacs, par exemple, devrait ressembler à çà, après modification :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>English</string>
	<key>CFBundleDocumentTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>pdf</string>
				<string>PDF</string>
			</array>
			<key>CFBundleTypeIconFile</key>
			<string>document.icns</string>
			<key>CFBundleTypeMIMETypes</key>
			<array>
				<string>application/pdf</string>
			</array>
			<key>CFBundleTypeName</key>
			<string>PDF</string>
			<key>CFBundleTypeOSTypes</key>
			<array>
				<string>PDF </string>
			</array>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
			<key>LSTypeIsPackage</key>
			<false/>
			<key>NSDocumentClass</key>
			<string>MyPDFDocument</string>
		</dict>
	</array>
	<key>CFBundleExecutable</key>
	<string>PDFView</string>
	<key>CFBundleIconFile</key>
	<string>pdfview.icns</string>
	<key>CFBundleIdentifier</key>
	<string>net.sourceforge.pdfview</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>PDFView</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>0.14.3</string>
	<key>NSAppleScriptEnabled</key>
	<string>YES</string>
	<key>NSMainNibFile</key>
	<string>MainMenu</string>
	<key>NSPrincipalClass</key>
	<string>NSApplication</string>
	<key>OSAScriptingDefinition</key>
	<string>PDFView.sdef</string>
	<key>SUFeedURL</key>
	<string>http://pdfview.sourceforge.net/PDFView.xml</string>
</dict>
</plist>

C'est simplement du XML, donc c'est assez facilement compréhensible… CFBundleDocumentTypes s'occupe des associations de fichiers, pour faire simple.

Et, donc, en y modifiant CFBundleTypeIconFile on peut modifier l'icône associée aux fichiers.

Comme PDFView utilise (dans sa version 0.14.3, au moment où j'écris) la même chaîne que pour l'icône principale du logiciel, ce qui est contraire aux guidelines, il suffit d'ajouter une icône à l'application (dans son "bundle" comme je crois que l'on appelle les .app) et de légèrement modifier CFBundleDocumentTypes, en y remplaçant la chaîne pdfview.icns par document.icns, comme c'est le cas dans le bloc de code précédent.

Ajouter l'icône "physiquement"

Puis on ajoute l'icône 'document' dans /PDFView.app/Contents/Resources/, on doit attendre que le cache se reconstruise pour que tous les document soient affublés de la nouvelle icône… ça n'est pas très rapide, même si il existe divers procédés, plus ou moins recommandables, permettant de régénérer les divers caches de Tiger.

Téléchargement

Archive contenant les icônes (application et document) et le fichier Info.plist modifié.

commenter (0)

09/06/07

un réseau domestique ''composite''

un petit billet à propos d'un réseau domestique éthernet + Wifi contenant un réseau et un sous-réseau, réalisé il y a quelques temps…

un réseau domestique composite entre 2 Mac Mini

Comme illustré, ci-avant, le réseau a pour but de permettre le partage du dossier public hébergé sur le Poste 1. Le réseau éthernet (192.168.0.x) est représenté en gris, à partir de la borne Wifi (une Fonera) le réseau devient réseau privé avec cryptage WPA. Ainsi, si le Poste 1 devait se connecter au Poste 2, il lui faudrait alors se connecter (via Wifi, en vert sur l'llustration) au sous-réseau créé par la Fonera, le Poste 2 ayant une IP appartenant au réseau WPA : 192.168.10.x.

Le but de ce système de réseau et de sous-réseau étant de partager imprimante et fichiers partageables hébergés par le Poste 1 ou n'importe quel périphérique se trouvant sur le réseau éthernet, le fait que le Poste 2 se trouve dans un sous-réseau n'a alors, en définitive, aucune sorte d'importance. D'ailleurs, pour des raisons évidentes de simplicité d'utilisation, il vaut mieux qu'un seul poste héberge un système de fichier partagé, ça évite les confusions : mais où se trouve ce foutu fichier important ? dans le dossier public du Poste 1, du Poste 2… (encore qu'avec 2 postes ça reste assez simple…)

Ressources relatives, en vrac (utiles ou pouvant l'être)

Billet relatif

Remerciements

Merci à bab (aka kornfr) pour la Fonera gratuite et aussi pour ses précieux conseils à propos de disques NAS.

commenter (2)

09/06/07

Quelques tutoriels Xcode et Interface Builder

Xcode

Un petit billet dans lequel je rangerai au fur et à mesure diverses ressources utiles (probablement essentiellement anglophones) quant à l'utilisation de Xcode et, évidemment, de Interface Builder, que je découvre doucement… mais que je trouve très intéressants.

En cours de rédaction.

commenter (0)