Archive for the ‘Mac’ Category

Pixelmator : ombre portée

Saturday, May 4th, 2013

Étonnamment, Pixelmator ne propose pas par défaut un effet d’ombre portée.

On trouve facilement plusieurs tutoriels sur le web expliquant comment faire, manuellement, une ombre portée. Ces techniques nécessitent l’emploi des calques et prend un peu de temps.

Je suis tombé sur une technique qui me semble bien plus propre : créer un filtre Quartz réalisant une ombre portée, et utiliser ce filtre à partir de Pixelmator.

Le filtre en question existe et peut être téléchargé à cette adresse : http://belightcommunity.free.fr/download_file.php?uid=49 (ou ici si le lien ne fonctionne plus)

Décompresser l’archive zip (si OS X ne le fait pas automatiquement).

Placer le fichier obtenu (BC_Shadow_1.5.qtz) dans le répertoire /Bibliothèque/Compositions/ (ou en anglais /Library/Compositions/).

Redémarrer Pixlmator. Le filtre se trouve désormais dans les effets, catégorie Autres, et se nomme Shadow.

iPhoto ’09 avec Mountain Lion

Sunday, February 24th, 2013

Je viens de recevoir mon nouvel iMac 27″, version fin-2012, avec Mountain Lion et iLife ’11 préinstallés.

Jusqu’ici, j’utilisais un iMac 24″, version fin 2007, avec Snow Leopard et iLife ’09.

Certainement ma plus grosse déception a été de découvrir la nouvelle mouture d’iPhoto ’11 (9.4.2).

Pour moi, iPhoto ’09 (8.1.2) convenait très bien pour ce que j’en faisais : J’y stockais toutes mes photos de famille et j’appréciais de pouvoir le trier en plein écran. Je pouvais ensuite facilement les glisser-déposer dans une autre application pour éventuellement procéder à quelques retouches.

Il m’arrivait également fréquemment d’y ajouter des dessins de mes enfants, numérisés. Je modifiais alors la date de numérisation pour y mettre la date à laquelle le dessin avait été réalisé.

Avec iPhoto ’11, je suis allé de déceptions en déceptions : tout d’abord, la pire, c’est la disparition du mode plein écran. D’autre part, et c’est très agaçant, lorsque je fais un glisser-déposer d’une photo, l’ascenseur d’iPhoto bouge, ce qui fait que lorsque ma photo a été déposée dans une autre application et que je retourne à l’application iPhoto, elle ne se trouve plus au même endroit.

Enfin, le changement de date d’une photo est devenu très laborieux puisqu’il n’est plus possible de directement la modifier depuis la fenêtre des informations, mais qu’il faut passer par le menu Photos->Ajuster la date et l'heure, qui n’est pas disponible lorsqu’une photo est sélectionnée et affichée en grand.

J’ai donc voulu revenir à iPhoto ’09. Avec mon iMac de l’époque, j’avais obtenu le DVD d’installation d’iLife ^09 et possédait donc l’installeur. Malheureusement, j’ai du faire face à plusieurs problèmes.

Utiliser l’installeur

Malheureusement, si je tente de démarrer le paquet iLife '09.pkg, celui-ci refuse d’y installer iPhoto : Même en faisant une installation personnalisée, iPhoto (et iMovie) restent grisés et ne peuvent pas être sélectionnés.

J’ai donc continuer mes investigations.

Installer directement le paquet iPhoto

Avec le menu contextuel, choisir Afficher le contenu du paquet iLife ’09, puis aller dans Contents/Installers. Afficher le contenu du paquet iPhoto.mpkg, puis aller dans Contents/Installers.

Double-cliquer sur iPhoto.pkg. Malheureusment, Mountain Lion refuse de l’installer.

Il faut donc persévérer !

Décompresser manuellement le paquet iPhoto

Afficher le contenu du paquet iPhoto, puis aller dans le dossier Contents. Double-cliquer sur Archive.pax.gz. Le système le décompresse et crée un dossier Archive contenant un répertoire Applications, lui-même contenant l’application iPhoto.

Déplacer cette application dans le dossier Applications de l’ordinateur.

Démarrer iPhoto : un message d’erreur indique que cette application ne peut pas être démarrée sur ce système.

En détaillant le rapport généré en vue signaler le problème à Apple, j’ai constaté qu’iPhoto ’09 cherche à accéder au framework iLifeSlideShow.

Dyld Error Message:
Library not loaded: /System/Library/PrivateFrameworks/iLifeSlideshow.framework/Versions/A/iLifeSlideshow
Referenced from: /Applications/iPhoto.app/Contents/MacOS/iPhoto
Reason: image not found

Il faut donc installer manuellement ce framework :

Afficher le contenu du paquet iLife ’09, puis Contents/Installers/ et double-cliquer sur iLifeSlideShow.pkg.

L’installation se déroule sans problème. Le système doit être redémarré…et ensuite, il est possible de démarrer iPhoto ’09 ! Ouf !

Merci Apple pour m’avoir fait perdre trois soirées pour ça ! Grrr !

Police de caractères d’une page web

Wednesday, June 6th, 2012

Pour connaître la police de caractères utilisée sur une page web, il existe un petit outil qui fait des merveilles : WhatFont.

C’est une extension pour Safari ou Chrome. Lorsque cette extension est enclenchée, en passant la souris sur le texte d’une page web, une bulle d’info apparaît et indique le nom de la police utilisée. Si l’on clique sur cette bulle, plus de détails sont affichés (famille, taille, couleur, etc.)

Cet outil est également disponible sous forme de bookmarklet.

Si l’on souhaite connaître la police de caractères d’une image, on peut utiliser le site WhatTheFont, qui propose également une application mobile.

Accès à distance

Friday, September 23rd, 2011

Pour accéder à mon serveur maison depuis l’extérieur, j’ai configuré un compte DynDns.

Une fois le compte créé, un nom de domaine m’est réservé, à laquelle est associée l’adresse IP de mon modem ADSL.

Configuration du serveur

Cette adresse IP va changer régulièrement. Il faut donc installer sur le serveur Mac un petit logiciel (fourni par DynDns) qui va régulièrement communiquer à DynDns la nouvelle adresse IP.

L’installation du logiciel est très simple : il suffit de le copier dans le dossier Applications et de la démarrer.

Ensuite, ajouter un hôte (celui créé chez DynDns), l’activer, et la configuration du serveur est terminée.

Configuration du modem

Il reste encore à configurer le modem, afin qui redirige les données provenant de l’extérieur à la bonne machine, en l’occurrence le Mac mini.

En ce qui me concerne, mon modem (configurable au travers d’un navigateur internet  à l’adresse 192.168.0.1) prend en charge le service DynDns, abrégé DDNS.

Il suffit donc de lui fourni mon nom d’utilisateur, mon mot de passe, le nom de l’hôte (mon_nom.dyndns.org dans mon cas) et le tour est joué !

Convertir une séquence d’images en PDF

Wednesday, August 24th, 2011

Il m’arrive souvent de devoir convertir une séquence d’images en un document PDF.

La solution la plus simple et la plus performante que j’ai trouvé est d’utiliser l’application Combine PDFs de Monkeybread Software.

Il suffit de glisser-déposer la suite d’images à combiner, puis choisir Combiner toutes pages (cmd – S) pour obtenir un fichier PDF.

QuickTime 7 : export du son impossible

Tuesday, August 23rd, 2011

Avec ma version de QuickTime 7 (plus exactement la 7.6.6), j’ai remarqué que lorsque je voulais exporter une vidéo contenant une piste audio encodée en MPEG couche 3 (MP3), celle-ci ne s’exportait pas.

Finalement, après quelques recherches sur internet, j’ai appris que le responsable est le plugin XviD_Codec 1.0 alpha.component.

Pour le supprimer, il faut aller dans /Bibliothèque/QuickTime/ et supprimer le fichier XviD_Codec 1.0 alpha.component.

Ensuite, redémarrer QuickTime 7 et voilà ! Problème résolu !

iPhone 3GS et iOS 4.3.1 : jailbreak

Thursday, June 9th, 2011

Dans le cadre d’un projet de développement pour iPhone que j’ai initié dans l’école où j’enseigne, j’ai voulu installer sur mon iPhone l’application maison que nous avions développé.

Pendant le développement, j’avais entamé des démarches auprès d’Apple pour bénéficier de leur programme éducation, censé nous permettre d’obtenir leurs outils de développement (Xcode 4) mais surtout de déploiement. Après 6 semaines d’échanges de courriels, Apple s’obstine et refuse de reconnaître notre école.

Pour ne pas abandonner tout le travail de développement qui a déjà été fait, j’ai donc opté pour la seule solution restante à mes yeux : Jailbreaker mon iPhone dans le but d’y installer notre application maison sans subir les contraintes d’Apple et développer notre application avec Xcode 3.

Jailbreaker l’iPhone

Je possède un iPhone 3GS avec l’iOS 4.3.1. J’ai du faire de nombreuses tentatives pour trouver exactement les bons logiciels et la bonne procédure. Mais j’y suis finalement arrivé.

J’ai commencé par cette page : http://www.limera1n.cc/2011/04/redsn0w-096rc9-download-untethered-431.html

Mais attention : contrairement à ce qu’indique le titre, il faut télécharger la version 096rc12 de redsn0w (le lien fourni dans l’article est correct), puis suivre les même étapes que pour la version 096rc9 : http://www.limera1n.cc/2011/04/jailbreak-431-untethered-redsn0w-096rc9.html

Par contre, la procédure ne mentionne pas une étape cruciale : déterminer si l’iPhone possède une nouvelle ou une ancienne bootRom.

Personnellement, j’ai une ancienne bootRom. Le site http://www.iphone4.fr/comment-connaitre-mon-iboot-sur-mac-os-x/ indique comment le déterminer.

À l’issue de cette procédure, l’iPhone est jailbreaké et il est donc possible d’y installer des applications inofficielles.

Toutefois, reste un problème : faire que XCode accepte de transférer une application sans signature conforme sur l’iPhone.

Déployer une application sur l’iPhone

Pour y arriver, j’ai suivi l’excellente procédure décrite sur cette page : http://www.alexwhittemore.com/?p=398. Comme cette procédure est en anglais et qu’elle utilise des outils difficiles d’accès (vi), je reproduis ici une version légèrement adaptée de cette procédure.

Première étape : obtenir une identité signée

Cette étape ne doit être faite qu’une fois pour toutes. Xcode doit être fermé. L’iPhone ne doit pas être branché à l’ordinateur.

Normalement, c’est Apple qui nous fourni une identité signée, mais plus tard dans la procédure, nous allons supprimer le contrôle de signature effectué par Xcode. Une identité auto-signée est donc suffisante. On l’obtient ainsi :

  1. Ouvrir l’application Trousseau d’accès (Applications > Utilitaires > Troussau d'accès)
  2. Créer un nouveau certificat (Trousseau d'accès > Assistant de certification > Créer un certificat...)
  3. Mettre comme nom iPhone Developer. C’est très important d’orthographier correctement ce nom. Choisir une Racine auto-signée et comme type de certificat, choisir Signature de code. Cocher la case Me laisser ignorer les réglages par défaut. Cliquer sur Continuer.

    Valider l’avertissement en cliquant sur Continuer.
  4. Mettre une durée de 3650 jours et cliquer sur Continuer.
  5. Laisser les champs vides, en particulier l’adresse électronique ! Ne pas toucher au champ Nom. Cliquer sur Continuer.
  6. Valider toutes les étapes suivantes, jusqu’à la dernière.

    Le message indiquant que ce certificat n’est pas approuvé est normal.

Deuxième étape : AppSync sur l’iPhone

Il faut ensuite installer l’application AppSync sur l’iPhone jailbreaké. Pour ce faire, suivre les étapes suivantes :

  1. Ouvrir Cydia, choisir l’onglet Gérer. Cliquer sur Sources, puis sur Modifier et enfin Ajouter.
  2. Taper l’adresse http://cydia.hackulo.us. Un avertissement concernant le piratage vous sera affiché. En l’occurence, nous n’allons pas faire de piratage.
  3. Revenir au menu principal de Cydia, choisir l’onglet Recherche. Taper AppSync et installer AppSync for 4.0+.
  4. Certains disent qu’il faut redémarrer l’iPhone. Je n’ai pas eu à le faire.

Troisième étape : modifier Xcode

Là, on commence le gros du boulot : modifier Xcode pour qu’il accepte de transférer un projet iPhone sur notre iPhone jailbreaké.
Cette procédure a été testée avec Xcode v3.2.6.

  1. Démarrer le Terminal. Taper ceci :
  2. cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk
    sudo cp SDKSettings.plist SDKSettings.plist.orig
    sudo pico SDKSettings.plist

    Chercher la clé CODE_SIGNING_REQUIRED et changer sa valeur de YES à NO.
    Chercher la clé ENTITLEMENTS_REQUIRED et changer sa valeur de YES à NO.
    Rappel : avec pico, une recherche se fait avec CTRL+W.

  3. Remonter au niveau de la plateforme :
    cd /Developer/Platforms/iPhoneOS.platform/
    sudo cp Info.plist Info.plist.orig
    sudo pico Info.plist

    Cherche la clé CODE_SIGN_CONTEXT_CLASS, qui apparaît deux fois et remplacer chaque fois XCiPhoneOSCodeSignContext par XCCodeSignContext.

  4. Maintenant, il faut modifier le binaire de Xcode !
    cd ~/Desktop
    pico script

    Copier le code suivant dans le script que l’on vient de créer :

    #!/bin/bash
    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\xc3\x26\x00\x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support

    Sauver et quitter pico. Reste à changer les droits d’accès sur ce nouveau script et à l’exécuter :

    chmode 777 script
    ./script

    Si tout va bien, vous un affichage similaire à ceci apparaîtra :

    231+1 records in
    231+1 records out
    115904 bytes transferred in 0.024132 secs (4802915 bytes/sec)

    Avec cette étape, on a indiqué à Xcode qu’il n’est pas nécessaire de signer le code. Maintenant, il faut lui dire de ne pas signer le code.

  5. Ouvrir un projet Xcode. Dans Xcode, choisir Project > Edit Project Settings. Ensuite, choisir l’onglet Build.
    Faire une recherche des propriétés Code Signing et mettre Don't Code Sign en regard des propriétés Code Signing Identity et Any iOS.
  6. Ensuite, dire à Xcode qu’il faut quand-même signer le code ! On va faire ça avec un script python.
    mkdir /Developer/iphoneentitlements431
    cd /Developer/iphoneentitlements431
    pico gen_entitlements.py

    Coller dans pico le code python suivant (que j’ai obtenu sur le site d’Alex Whittemore) :

    #!/usr/bin/env python
    
    import sys
    import struct
    
    if len(sys.argv) != 3:
    	print "Usage: %s appname dest_file.xcent" % sys.argv[0]
    	sys.exit(-1)
    
    APPNAME = sys.argv[1]
    DEST = sys.argv[2]
    
    if not DEST.endswith('.xml') and not DEST.endswith('.xcent'):
    	print "Dest must be .xml (for ldid) or .xcent (for codesign)"
    	sys.exit(-1)
    
    entitlements = """
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>application-identifier</key>
        <string>%s</string>
        <key>get-task-allow</key>
        <true/>
    </dict>
    </plist>
    """ % APPNAME
    
    f = open(DEST,'w')
    if DEST.endswith('.xcent'):
    	f.write("\xfa\xde\x71\x71")
    	f.write(struct.pack('>L', len(entitlements) + 8))
    f.write(entitlements)
    f.close()

    Sauver et quitter pico. Reste à changer les droit sur ce script python.

    chmod 777 gen_entitlements.py
  7. Le script étant fait, il faudra que Xcode l’utilise. Mais pour l’instant, il faut connecter l’iPhone à l’ordinateur. Au moment de le connecter, Xcode Organizer averti qu’il n’est pas capable d’identifier l’appareil. J’accepte qu’il le scanne. Une processus se met en route. Le laisser terminer. À l’issue de la procédure, une ampoule est verte à côté de l’iPhone.
  8. Cette dernière étape doit être réalisée pour chaque nouveau projet Xcode. Aller dans le menu Project > New Build Phase > New Run Script Build Phase. Coller le script suivant :
    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi

    Il n’y a rien d’autre à faire !

Problèmes

Au cours de l’utilisation, vous rencontrerez certainement quelques problèmes, plus particulièrement lorsque depuis Xcode, vous allez exécuter votre projet sur l’iPhone.

The program being debugged is not being run

  1. Double cliquer dans l’arborescence du projet sur Targets > nom du projetRun Script.

    Mettre le curseur dans la fenêtre contenant le code, fermer la fenêtre.
  2. Relancer un Build and Run

The host is no longer paired with the device

Ce problème provoque un reboot de l’iPhone ! Il suffit d’attendre que l’iPhone soit de nouveau disponible.

FireWire 800 hors-service ? peut-être pas !

Thursday, September 16th, 2010

Sur mon iMac 24″ (acheté en décembre 2007), j’utilise de façon quasi-permanente le connecteur FireWire 800 pour y brancher mon disque dur externe.

Pendant plus d’un an, je n’ai rencontré strictement aucun problèmes. Mais cette semaine, du jour au lendemain, le connecteur FireWire 800 ne semblait plus fonctionner : mon disque dur externe n’était plus reconnu.

J’ai bien sûr fait quelques tests pour savoir d’où pouvait provenir la panne :

  • J’ai changé le câble FireWire : le problème était le même.
  • J’ai connecté un autre disque dur externe FireWire 800 : le problème était le même.
  • J’ai connecté mon disque dur externe sur un port USB : le disque était reconnu !

J’étais donc certain que c’était bien le connecteur FireWire 800 de mon iMac qui posait problème et je commençais à me préparer psychologiquement à devoir procéder à la réparation lorsque je suis tombé sur cet article dans la base de connaissances Apple :

Réinitialisation du contrôleur de gestion du système (SMC)

Tout en bas de l’article, il y a une section à dérouler qui indique spécifiquement pour un iMac comment réinitialiser le SMC. Il y a malheureusement une petite erreur dans cette suite d’étapes. Voici ce que j’ai fait :

  1. Éteindre l’ordinateur.
  2. Débrancher le câble d’alimentation (230V) et attendre 10 secondes.
  3. Rebrancher le câble d’alimentation.
  4. Presser sur le bouton d’enclenchement et laisser appuyer pendant plus de 5 secondes, jusqu’à ce qu’un son long retentisse.
  5. Relâcher le bouton : l’ordinateur démarre.

Et voilà ! Suite à cette manipulation, le connecteur FireWire 800 de mon Mac est à nouveau en service !

Reste à comprendre comment et pourqui, du jour au lendemain, ce connecteur FireWire 800 à décidé de faire des siennes !

Vider complètement la file d’impression

Wednesday, August 25th, 2010

Pour une raison que j’ignore, la file d’impression de mon imprimante contenait un document que je ne parvenais pas à supprimer, même en cliquant sur le bouton Supprimer du gestionnaire d’imprimante.

Ce document n’empêchait pas d’en imprimer d’autres, mais j’ai finalement trouvé le moyen d’effacer complètement une file d’impression. Et c’est tout simple : il suffit de lancer la commande suivante dans le Terminal :

cancel -a

Ajuster la date et l’heure de photos

Wednesday, July 21st, 2010

Lors de sorties ou d’événements en famille ou entre amis, il est fréquent que plusieurs personnes aient leur propre appareil photo. J’aime donc bien récupérer les photos de tout le monde pour les ajouter à ma bibliothèque de photos.

Malheureusement, la plupart des gens oublient de (ou ne savent pas) régler la date et l’heure de leur appareil photo. Ou alors ne mettent pas à jour l’heure suite à un passage à l’heure d’été ou à l’heure d’hiver.

Cela me pose problème car les photos n’apparaissent pas triées correctement dans iPhoto. Heureusement, il existe un moyen très simple pour corriger l’heure et la date d’un groupe de photos.

  1. Sélectionner le groupe de photos dont l’heure et la date doivent être décalées;
  2. Sélectionner Ajuster la date et l'heure... dans le menu Photos;
  3. Indiquer la date et l’heure correctes de la première photo. Le décalage ainsi obtenu sera répercuté sur toutes les autres photos.

    Il est également possible de dire si ces changements doivent être appliqués aux fichiers originaux, ce que je recommande de faire.
  4. Démarrer l’ajustage en cliquant sur Ajuster.

C’est tout simple et iPhoto nous épargne un travail fastidieux si cela devait être fait à la main !