MacHacks

other back end

Un INIT est un petit programme contenu dans une ressource du même nom et qui est exécuté au démarrage du Mac. Jusqu’en 1986, seuls étaient exécutés ceux contenus dans le fichier système, et les INITs autres que ceux implantés d’origine devaient y être ajoutés, soit au moyen d’un programme d’installation, soit avec ResEdit. En 1986, avec la version 3.0 du système, Apple a apporté un nouveau mécanisme de gestion des INITs: l’INIT 31. Il s’agit d’un INIT du fichier System qui a pour rôle d’aller regarder si le dossier système contient des fichiers de type INIT ou cdev, et, si ces fichiers comportent des ressources INIT, de les exécuter. C’est ce qui permet à des programmes comme Suitcase (INIT), ou QuicKeys (cdev) de fonctionner. Il se peut que vous soyiez obligés de vous servir d’INITs antérieurs à 1986 et livrés avec un installeur. En ces moments de panique virusienne, où chacun répugne à modifier son fichier System, voici un petit hack pour les rendre conformes au mécanisme de l’INIT31 et, ainsi, faire du neuf avec du vieux:
sous ResEdit,
  • ouvrez l’installeur
  • copiez en la (les) ressource (s) INIT
  • fermez l’installeur
  • créez (New) un nouveau fichier et donnez lui le nom que vous voudrez
  • collez-y la ressource INIT
  • fermez le fichier (et sauvegardez les modifications)
  • faites «Get Info» à propos de ce fichier
  • changez son code Type en «INIT»
  • fermez la fenêtre «Info» et sauvegardez les modifications
  • quittez ResEdit et faites glisser le fichier que vous venez de créer dans le dossier Système, puis redémarrez.
(Attention, cette technique a marché pour tous les INITs que j’ai testés, mais je ne garantis pas que ça fonctionne à 100%, en particulier si l’installeur copie dans le system d’autres ressources que l’INIT).

Si vous voulez faire encore plus fort et garder l’icône de l’installeur (ou en créer une originale), [faites d’abord une copie de l’installeur sur laquelle vous allez travailler et rangez l’original (on ne sait jamais...)]:
sous ResEdit,
  • ouvrez l’installeur
  • supprimez (Clear) toutes les ressources autres que BNDL, FREF, ICN#, INIT et la ressource dont le nom est identique au code créateur de l’installeur
  • ouvrez la ressource FREF et changez-y le File Type APPL en INIT
  • fermez le fichier (et sauvegardez les modifications), et terminez l’opération de la même façon, en changeant le code type en INIT. Une seule chose supplémentaire à faire: vérifiez que la case Bundle est bien cochée, sans quoi l’icône ne s’affichera pas.

Si vous voulez faire encore mieux (et plus joli), il existe dans le domaine public une ressource nommée «ShowInit», écrite par Larry Rosenstein, d’Apple Cupertino, qu’il suffit d’ajouter au fichier pour que l’icône de l’INIT apparaisse sur le Desktop pendant le chargement.
Si vous avez «Vaccine» (ou un programme similaire) installé, il va bipper comme un fou pendant toutes ces opérations. C’est normal, il n’aime pas qu’on copie des INITs d’un fichier à un autre. Pensez quand même à vérifier que l’installeur ne contient pas de ressources suspectes avant de commencer...

Hypercard

• Vous avez, dans un moment de parano intense, protégé un de vos stacks avec un script crétin du style:

on idle
 
hide msg
  hide menubar
  set userlevel to1
end idle

et vous n’arrivez plus à le modifier. Vous l’avez bien mérité, mais la question n’est pas là. La solution pour vous en sortir est, à partir d’un autre stack (home par exemple), après avoir remis l’userlevel à 5 (niveau qu’il ne devrait jamais quitter), de taper dans la message box: edit script of “nomDuStack” et de supprimer les horreurs que vous aviez mises.

• Celui-là marchait déjà avec MacPaint: si vous vous servez de l’outil texte et que vous désirez changer de fonte ou de style sans avoir à tout repositionner après, appuyez sur la touche Entrée, sélectionnez de nouveaux réglages et voilà, ce que vous avez tapé avant n’a pas changé et la suite, elle, sera conforme à ce que vous venez de choisir.

• La fonction “The Sound” retourne le nom du son qu’Hypercard est en train de jouer. Lorsqu’aucun son n’est en cours d’exécution, la fonction retourne “done”. Cette particularité est à utiliser dès qu’on doit utiliser la commande “play”, sous la forme:

play”instrument”
wait until the sound is “done”
...

Ce qui permet à Hypercard d’attendre que le son soit terminé avant de lancer la suite des opérations, évitant toute interférence des lectures et écritures disque sur le son.

• Autre truc sonore: un script comme:

play”instrument1”
play”instrument2”
...


provoque quasi systématiquement un plantage. Pourquoi ? Le 1er son n’est pas forcément terminé quand Hypercard essaye de jouer le début du 2ème. Résultat: votre stack meurt d’une mort abjecte dans un bruit innommable. Là aussi, la fonction “the Sound” permet de sauver les meubles. La solution est:

play”instrument1”
wait until the sound is “done”
play”instrument2”
...


Simple, mais efficace.

• Deux opérateurs intéressants dans Hypertalk: “contains” et “is in”, qui permettent de tester la présence d’une chaîne de caractères dans une autre. Pas mal pour tester une valeur. Par exemple:

get first word of the long date
if it is in “LundiMardiMercrediJeudiVendredi” then faire_qquechose


Astucieux, non ? J’en profite pour rectifier quelques âneries qu’on a pu lire un peu partout.

La version US de Hypercard:
1) ne pose pas de problèmes insurmontables avec les dates françaises
2) permet l’utilisation dans les stacks des minuscules accentuées (certains journaux doivent confondre Mac et Apple //)
D’ailleurs, quand on programme en Hypertalk, il vaut mieux disposer de la version américaine, ne serait-ce que pour que la commande doMenu fonctionne avec toutes les versions. En plus, ça évite de patienter 1 an pour chaque nouvelle version.

MultiFinder

Dans la doc Apple, il est dit que pour utiliser tout accessoire de bureau incompatible avec MultiFinder, la seule solution est de désactiver ledit MultiFinder, puis de redémarrer. Heureusement, c’est faux. En appuyant sur la touche option pendant la sélection de l’accessoire (possesseurs de Suitcase, n’appuyez sur option qu’après avoir déroulé le menu pomme), l’accessoire ne se lancera pas dans le DA handler, mais dans la zone heap de l’application active (vous savez tous ce que c’est, n’est-ce pas?) et ainsi la plupart des DAs réputés incompatibles MultiFinder pourront fonctionner sans avoir besoin de relancer la machine. Idem pour tous les accessoires installés directement dans une application (pour installer un DA dans une application, se mettre sous Font/DA Mover et appuyer sur la touche option en pressant le bouton “Ouvrir”).
J’ étais persuadé que tout le monde était au courant et j’ai été très étonné en lisant la doc Apple et même «Inside Juggler» de voir qu’ils se plantaient là-dessus.

MultiFinder

Le MultiFinder refuse de quitter l’application active par sélection de l’icône de la barre de menu si la fenêtre située au premier plan est de type dBoxProc (fenêtre à double bordure), assumant qu’il doit s’agir d’un dialogue modal (impression, sauvegarde,…). Si vous utilisez une application qui se sert de ce type de fenêtre pour autre chose, un petit hack pour la rendre 100% compatible MultiFinder: sous ResEdit, trouvez la ressource de la fenêtre en question (de type WIND ou DLOG), et changez le type de fenêtre en portant la valeur du paramètre ProcID de 1 à 2 (fenêtre à bordure simple). Attention cependant de ne pas modifier la ProcID d’un dialogue modal
(Pour savoir si un dialogue est modal, amener ce dialogue à l’écran et cliquer en dehors de la fenêtre, si le résultat est un bip, le dialogue est modal et il ne faut pas y toucher. Si le Mac vous laisse faire sans bipper, vous pouvez y aller).

Général

Quand on met en marche le Mac, il vérifie la validité de sa mémoire avant d’ afficher à l’écran l’icône point d’interrogation. Cette opération, qui était fort courte pour un Mac 128 ou 512, peut prendre plusieurs dizaines de secondes avec une taille mémoire importante, le tout pour un résultat minime (si votre mémoire était là la dernière fois que vous avez booté votre Mac, elle a de fortes chances de ne pas s’être envolée entre temps). Pour éviter cette opération, appuyez sur le bouton de la souris en même temps que vous actionnez l’interrupteur marche/arrêt. Dès que vous avez entendu le “ping” de mise en marche, vous pouvez relâcher votre souris. Résultat: 30 secondes de gagnées pour 4 Mo.

Dossier système

Dans les temps reculés (1985 ou 86), un dossier système standard ne comprenait en moyenne que 5 ou 6 éléments. En dehors des éternels System et Finder, on n’y trouvait guère que le fichier Imagewriter, le presse-papiers et l’album. Maintenant, tout a changé. Avec la prolifération des INITs, CDEVs, fichiers d’aide divers et paramètres de réglage des applications, sans parler des polices laser, il n’est pas rare d’avoir un dossier système surpeuplé, 30 ou 40 éléments étant un chiffre courant (44 sur mon disque dur, plus qu’hier et moins que demain). J’ai même entendu parler d’un individu dont le dossier système est encombré de plus de 120 fichiers. Il est vrai qu’il s’agit d’un fou furieux… Résultat: vous n’arrivez plus à vous y retrouver. Quelques solutions pour donner un peu d’air:

• Mettre ailleurs tous les fichiers dont la présence à cet endroit n’est pas obligatoire (vous n’y auriez pas pensé). Certains fichiers d’aide ou de paramètres peuvent se trouver soit dans le dossier système, soit dans le même dossier que l’application dont ils dépendent.

• Si certains fichiers doivent rester là, mais que vous savez que vous n’y toucherez pas pendant longtemps, les rendre invisibles sous ResEdit (Sélectionner le fichier, faire Get Info, cocher la case “invisible”, fermer la fenêtre, sauvegarder les modifications).

• Avez-vous besoin de tous ces machins ? Etes-vous sûr que votre vie vaut bien plus d’être vécue depuis que vous avez remplacé le bip standard par un son numérisé et que vous avez accès à une carte du monde dans votre tableau de bord ? Je ne me passerais pour rien au monde de ces gadgets idiots, mais vous ?

Font/DA Mover

Les polices de caractères du domaine public (et les autres) sont habituellement écrites par des individus talentueux et admirables, mais américains, et donc peu concernés par la présence dans leurs créations de caractères exotiques non utilisés dans les pays civilisés (é, ù, ç, what’s that?). Pour un utilisateur français nombre de fontes US sont quasi inutilisables (à moins de les customiser, cf. MicMac #2) et pire on ne s’en aperçoit qu’après les avoir installées dans son fichier système, puisque la phrase qui permet au Font/DA Mover de les tester ne comporte aucune de ces lettres. Qu’à cela ne tienne, il est possible de les y ajouter:

Sous ResEdit, ouvrez la ressource STR#256 du Font/DA Mover et modifiez la phrase test en la truffant de è,é Ç,ù et autre à (voir illustration).





back other top Thierry Delettre
MiCMAC is published under the PotlatchWare concept.