Obj-C : NSArray or plain C-Array ?
Le débat est permanent entre l'utilisation de NSArray et l'utilisation de id* MonTableau pour stocker des objets ne serait-ce que pour des problèmes de performances mais également pour des questions d'écriture (Encore que la notation littérale des NSArray améliore l'apparence des sources). Ainsi, le code suivant devrait (?) être plus rapide qu'avec des NSArray :
for (int i=0; i<10; i++) {
things[i] = [[Thing alloc] init];
}
//And then later in the code doing something like:
for (UITouch *touch in touches) {
for (int i=0; i<10; i++) {
if ([things[i] containsTouch:touch]) {
// thing was touched
}
}
}Mais un post de Remy Desmarest sur la mailing-list Objective-C contient des informations très intéressantes sur le fait que ARC peut être utilisé avec des tableaux C. Ainsi même la nouvelle notation littérale des tableaux NSArray ne pousse pas les tableaux C dans les oubliettes.
iOS : détection de la zone de touche
Comment détecter la zone (circulaire) d'une touche sur les iBidules ? Il faut obtenir un UITouch depuis un UIEvent et à partir de là :
float vf = 10.0;
id valFloat = [thisTouch valueForKey:"pathMajorRadius"];
if (valFloat != nil) { vf = [valFloat floatValue]; }Source : http://stackoverflow.com/questions/5179426/tap-pressure-strength-detection-using-accelerometer
Coran généré sur OSX
Si l'on veut lire un passage du Coran et qu'on a oublié de le prendre avec soi, il suffit d'avoir un Mac à portée de main et d'exécuter le script Bash suivant :
for i in `seq -w 1 114`; do curl -s "http://www.hisnulmuslim.com/coran/index.php?num_sourate=$i" | iconv -f iso-8859-1 -t utf-8 | php -r '$C=str_replace(Array("\n", "\r", "\t", chr(146)), Array("", "", "", "A".chr(39)), file_get_contents("php://stdin")); preg_match("@<h1><span class=\"[^\"]*\">(.*?)</span>(.*?)</h1>.*?<em>(.*?)</em>.*?<p class=\"texte\">(.*?)</p>@m",$C, $M)."\n"; echo $M[1]."".$M[2]."\n".$M[3]."\n".str_replace("<br /> ", "\n", preg_replace("@<span class=\"num_verset\"[^>]*>([^<]*)</span>(.*?)@", "$1 : $2", $M[4])); echo "\n";' > sourat$i.txt; cupsfilter -o media=A4 -o landscape -o cpi=14 -o lpi=8 -o page-top=50 -o page-bottom=50 -o page-left=50 -o page-right=50 -o wrap sourat$i.txt > sourat$i.pdf 2>/dev/null; done && /System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py -o coran.pdf sourat*pdf && rm -f sourat*En plus de produire le Coran suivant le texte de la librairie Tawhid (grande qualité de traduction) ce script illustre les points suivants :
- Comment générer un PDF à partir de texte brut : cupsfilter, tout simplement.
- Comment combiner/joindre/concaténer des fichiers PDF sur OSX : le script Automator /System/Library/Automator/Combine\ PDF\ Pages.action.
- On est aussi confortable sur un Mac que sous Linux : la CLI est au même niveau (Bash 3.X) et les commandes disponibles sont les mêmes. C'est un Unix :)
Bien évidemment je remercie hisnulmuslim.com pour la mise en ligne du texte Français.
Sources :
- http://hintsforums.macworld.com/showthread.php?t=107695.
- http://gotofritz.net/blog/howto/joining-pdf-files-in-os-x-from-the-command-line/
- http://www.eprg.org/pdfcorner/text2pdf/text2pdf.c
- Un script a essayer :
enscript --word-wrap -p - "$1" | gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$2" -
- http://hints.macworld.com/article.php?story=20091124090053385 : pour un script de génération de PDF qui semble sympa
Moralité : il faudra réaliser une version 2 de ce script afin de générer un PDF encore plus avancé.
Des 360° enrichis sur toutes les plate-formes
Encore une autre démo assez visuelle : des 360° permettant d'observer un objet sous toutes ses coutures, avec possibilité de zoom HD, accompagnés de documentations, de videos ou de diaporamas le tout fonctionnant sous toutes les plateformes.
Qu'est-ce qu'un 360° ?
Ce que j'appelle ici un 360° est une animation composée d'une série de photographies toutes prises d'un même objet qui tourne sur lui-même. Avec une machine précise pour faire tourner à vitesse fixe l'objet et un appareil photo de bonne qualité, on obtient un très bon rendu. Reste à passer des photos au 360° proprement dit.
L'intégration : code + simplicité
L'assemblage (ou l'intégration) consiste pour le photographe réalisant le travail à constituer un fichier décrivant les photos concernées par l'animation : quelle est la première de la série ? comment s'appelle-t'elle ? etc... Le but était pour moi de fournir un simple lien ou un simple code d'intégration : une IFRAME était l'idéal.
La difficulté du multi-plateforme
Une grosse partie de cette prestation a été de fonctionner sur tout type d'appareils/navigateurs, et croyez bien qu'un iPad et Internet Explorer 8 sont deux bestioles très différentes.
