Vorige aflevering | Search TidBITS | TidBITS Homepage | Volgende aflevering

TidBITS#670/10-Mar-03

Mac OS X verruilde flexibiliteit voor stabiliteit door het verwijderen van de systeemwijde haken waarmee gereedschappen zoals QuicKeys in staat waren bijna alles te automatiseren. Die flexibiliteit is nu teruggekeerd in Jaguar en Matt Neuburg legt uit hoe je dit nu meteen kunt toepassen met alleen maar AppleScript! Ook kijkt Glenn Fleishman deze week naar opslagapparaten in netwerken waar een computer niet bij vereist is, en wij merken het verschijnen op van Keynote 1.0.1, iMovie 3.0.2, en Security Update 2003-03-03.

Onderwerpen:

Copyright 2003 TidBITS Electronic Publishing. All rights reserved.
Information: <info@tidbits.com> Comments: <editors@tidbits.com>


-> Denk je dat TidBITS interessant is voor <-
-> je vrienden, kennissen, collega's? Geef <-
-> hen de tip zich ook GRATIS te abonneren <-
-> of stuur deze aflevering naar hen door! <-


Je kunt je gratis abonneren op de Nederlandse afleveringen van TidBITS door een (blanco) mailtje te sturen naar: tidbits-nl-on@tidbits.com. Je krijgt deze dan per e-mail toegestuurd.
Om je abonnement op te zeggen, kun je een mailtje sturen naar: tidbits-nl-off@tidbits.com.


Deze editie van TidBITS werd gedeeltelijk gesponsord door:


De Nederlandse editie van TidBITS is een letterlijke vertaling van de oorspronkelijke Engelse versie. Daarom is het mogelijk dat een deel van de inhoud niet geldt in bepaalde landen buiten de USA.

Dit nummer werd uit het Engels vertaald door:

Verder werkten mee:

Hoe je ons kunt bereiken kun je lezen op:
<./tidbits-nl/contact.html>


MailBITS/10-Mar-03

[vertaling: MSH, JG]

Java 1.4.1 Update -- Laat in de middag verscheen bij Apple Java 1.4.1, een belangrijke update voor de Java omgeving op de Mac. Volgens Apple is er verbeterde Java ondersteuning in Safari en andere browsers die de Java InternetPlug ondersteunen, en applicaties die in Java geschreven zijn hebben voordeel van de Aqua interface en de Quartz Extreme weergavemogelijkheden in Mac OS X. Deze editie toont ook overeenkomsten met de nieuwste uitgave van Sun's Java, met ingebouwde ondersteuning van op XML-gebaseerde webdiensten en betere stabiliteit. Java applicaties kunnen Jaguar's Universele Toegang hoedanigheden implementeren, inclusief de mogelijkheid om Java applicaties met AppleScript te beheren met gebruikmaking van Apple's nieuwe UI Scripting technologie (zie Matt Neuburg's artikel "Het scripten van het onscriptbare in Mac OS X" verderop in dit nummer). Java 1.4.1 is een download van 26.1 MB. [JLC]

<http://www.apple.com/java/>
<http://www.apple.com/applescript/GUI/>

Keynote 1.0.1 Update -- Via Software Update gaf Apple Keynote 1.0.1 uit. De nieuwe versie van de presentatie software ondersteunt Japans, Frans, Duits, Nederlands, Italiaans, en Spaans. Ik kreeg van Apple ook bevestigd dat Keynote 1.0.1 enkele niet nader omschreven foutjes corrigeert, dit maakt het een download die de moeite waard is, zelfs voor hen die alleen maar Engelse ondersteuning nodig hebben. Enkele opmerkingen: Op mijn iBook, die relatief weinig vrije ruimte op de harde schijf heeft werd ik gewaarschuwd dat Keynote het beste werkt met een vrije ruimte van 1 GB ; hoewel de Keynote doos dat ook duidelijk maakt, kwam het voor mij als een verrassing. Ook dient Keynote op je opstartvolume te worden geïnstalleerd. Keynote 1.0.1 is een download van 9 MB. [ACE]

<http://docs.info.apple.com/article.html?artnum=120193>

Security Update 2003-03-03 -- Om bij te blijven met veiligheidsverbeteringen op het Unix front heeft Apple Security Update 2003-03-03 uitgebracht, met een nieuwe versie van sendmail dat een gat dichtmaakt waarmee een inbreker toegang tot het systeem zou kunnen hebben. Het was geen ernstig probleem voor de meeste Mac-gebruikers, omdat sendmail standaard uitstaat. Ook nieuw is OpenSSL, met verbeterde databescherming. Omdat het sendmail probleem zowel Mac OS X 10.1.5 als 10.2.4 beïnvloedt is er een variant op de update voor Mac OS X gebruikers die geen Jaguar hebben. De Jaguar-versie van de update is een 1.7 MB download; de 10.1.5 versie is een 705K download. [ACE]

<http://docs.info.apple.com/article.html?artnum=120195>
<http://docs.info.apple.com/article.html?artnum=120196>

iMovie 3.0.2 Update -- Apple's pestcontrole-afdeling heeft ook een onderhouds-update van iMovie 3 uitgegeven, die niet nader gespecificeerde problemen oplost in de veelbelovende, maar geplaagde videobewerkingsapplicatie (zie "iMovie, Take 3" in TidBITS-665). Hoewel Apple geen details geeft over wat er is veranderd in versie 3.0.2, is de afspeel-prestatie verbeterd en de applicatie voelt een beetje pittiger aan dan vroegere versies (hoewel nog lang niet als iMovie 2). Rapporten on-line geven aan dat iMovie 3.0.2 nog steeds lijdt aan geluidssynchronisatieproblemen en problemen heeft met films terug te exporteren naar tape. Het is ook de moeite waard om te noteren dat het Ken Burns Effect (pan en zoom) nog steeds standaard wordt toegepast op iedere geïmporteerde foto, wat misschien een eigenschap is maar wat er uitziet als een bug. Je kunt echter in iMovie 3.0.2 het Zoom-niveau voor de Start- en Eindpunten op 1:00 zetten (de minimum waarde) voordat je een beeld van het Photos-paneel sleept, en iMovie zal het beeld behandelen als een stilstaand beeld in plaats van als een movieclip.

De iMovie 3.0.2 update is verkrijgbaar via Software Update of als een afzonderlijke 1.9 MB download. Noteer dat de updater zoekt naar de applicatie "iMovie" in de Programmamap; als je het programma verplaatst hebt of een andere naam gegeven hebt zal de updater niet werken. Ik raad je aan je huidige iMovie applicatie te kopiëren naar een aparte harde schijf voordat je de update laat lopen, en het is ook een goed idee om Apple's Disk Utility te gebruiken om privileges op je opstartschijf te repareren nadat de update toegepast is. [JLC]

<http://www.apple.com/imovie/>
<http://db.tidbits.com/getbits.acgi?tbart=07059>
<http://docs.info.apple.com/article.html?artnum=120187>


Aan de slag met netwerkopslag

door Glenn Fleishman <glenn@glennf.com>
[vertaling: RAW, PEP]

Sinds het uitbrengen van Systeem 7, alweer vele jaren geleden, is het opzetten van een oude Mac als netwerkbestands-server een makkie: je maakt een paar samengebruikaccounts aan, stelt toegangsprivileges in voor je mappen, zet samengebruik aan en klaar is kees.

Velen van ons hebben oudere Macs rondslingeren die in gebruik kunnen worden genomen als een bestands-server met een grotere harde schijf en de nieuwste versie van Mac OS die die computer nog kan draaien. Of misschien heb je al een oud torenmodel of een laptop die dienst doet als centrale opslagfaciliteit.

Maar als je vanaf nul moet beginnen, of als je probeert een gemengd Windows/Mac/Linux-netwerk te ontwerpen, kun je misschien de kosten en de tijd die nodig zijn om een extra computer in te richten vermijden met netwerk-gekoppelde opslag [network-attached storage (NAS)], een concept dat alweer een paar jaar oud is, maar nu eindelijk op een betaalbaar niveau begint te komen.

Het idee achter NAS is dat je in feite een harde schijf rechtstreeks in een Ethernet-netwerk steekt: geen computer, geen beeldscherm, geen toetsenbord. Beheerstaken, zoals het toevoegen van gebruikers en andere handelingen, gebeuren of via een speciaal stukje software, of, meer gebruikelijk, via een webbrowser die het apparaat opzoekt (dat draait dan een kleine webserver, zoals zoveel netwerkapparatuur deze dagen).

Netwerkopslag heeft als voordeel zijn eenvoud en prijs: je kunt geen gebruikte Mac kopen met een even grote harde schijf en compatibiliteit met Windows/Linux-netwerken die zo goedkoop is als de eenvoudigste netwerkopslag-eenheid. En een Mac zonder gezicht draaien (zonder beeldscherm of toetsenbord) levert vaak frustraties op, zelfs met software voor besturing op afstand, zoals Timbuktu of VNC.

Linksys EtherFast Instant GigaDrive -- Ik kreeg onlangs de kans om de Linksys EtherFast Instant GigaDrive uit te proberen, een netwerkopslag-eenheid van 80 GB die Windows SMB samengebruik (ondersteund in Mac OS X 10.2 Jaguar, met Dave van Thursby in Mac OS 9 en onder de meeste Linux-smaken), FTP uploaden en downloaden en Web-gebaseerd downloaden biedt.

<http://amazon.com/exec/obidos/ASIN/B00006JI71/searchbyisbn/>
<http://www.linksys.com/Products/product.asp?grid=27&prid=447>
<http://www.thursby.com/products/dave.html>

De Instant GigaDrive heeft één 10/100 Mbps Ethernetaansluiting, een paralelle poort voor Windows printersamengebruik en twee sleuven voor uitneembare harde schijven. De Instant GigaDrive wordt geleverd met één 80 GB harde schijf in een van de sleuven, maar je kunt deze vervangen of een tweede schijf toevoegen tot 120 GB.

De Instant GigaDrive biedt printersamengebruik via het Internet Printing Protocol (IPP), dat compatibel zou moeten zijn met de CUPS printerondersteuning die in Jaguar ingebouwd zit. Maar wat ik ook probeerde, ik slaagde er niet in om een verbinding te maken met een Mac OS X 10.2 systeem. De documentatie over IPP en CUPS is schaars op het web, hoewel de open source Gimp-Print drivers misschien hadden kunnen helpen.

<http://www.cups.org/>
<http://gimp-print.sourceforge.net/MacOSX.php3>

Het grootste nadeel van de Instant GigaDrive is zijn prijs: 500 dollar in de winkel. Maar gezien de verschillende onderdelen die in dit enkele stukje hardware zitten en het gemak van installatie en beheer, zul je niet snel iets vergelijkbaars vinden zonder vele uren extra werk en een prijs die gelijk of hoger is voor de basiscomponenten. Ik heb bij een aantal dealers van Linux-systemen gekeken en vond daar een PC met dezelfde opties zonder monitor, een 80 GB harde schijf en Linux geïnstalleerd voor net onder de 500 dollar. Zo kun je ook een vergelijkbaar compleet Windows systeem vinden voor ongeveer 500 dollar, maar je moet dan toch nog een beeldscherm of software voor besturing op afstand aanschaffen, de machine beveiligen (geen eenvoudige taak) en het systeem in z'n geheel onderhouden.

Inwendig is de Instant GigaDrive een toonbeeld van eenvoud, hij draait op een Linux-systeem dat op een 16 MB Compact Flash-kaart staat. Als je apparaat of de schijven het begeven, kun je de kaart eruit halen en in een ander apparaat steken. Zo behoud je al je persoonlijke voorkeuren, gebruikers, groepen en andere instellingen.

Als je een tweede schijf toevoegt, kun je de Instant GigaDrive de opdracht geven om regelmatig de gehele inhoud van de ene schijf op de tweede over te zetten, als een eenvoudige back-up. Of als je dat liever hebt, kun je de tweede schijf ook gebruiken voor extra netwerkopslag.

Net als alle andere Linksysproducten doet de eenheid alsof hij een Windows-PC nodig heeft voor configuratie, doordat er alleen een speciaal PC-programma bij geleverd wordt met één hoofdfunctie: het vinden van het standaard netwerknummer van de Instant GigaDrive en toegang krijgen zelfs als je niet op hetzelfde "privé"-netwerk zit. Ik had op dat moment geen Win-doos onder handbereik, zodat ik een korte omweg moest maken om een privé-netwerkgebied te creëren.

Een privé Linksys netwerk reeks toekennen -- Net als met alle Linksys produkten komt de Instant GigaDrive met een vantevoren toegekend IP adres in het 192.168.1.0 netwerk. Als jouw lokale netwerk statische IP adressen gebruikt of je maakt gebruik van een DHCP server die adressen uit een andere reeks toekent, kun je het ingestelde GigaDrive adres veranderen door je Mac tijdelijk om te schakelen naar het 192.168.1.0 netwerk, je maakt de verandering, en je schakelt terug naar je eigen netwerk. Deze procedure werkt enkel met een bekabelde verbinding (niet met draadloos) en kan de verbinding met het netwerk van jouw computer tijdelijk verstoren, zorg dus dat je bestands-servers er even niet op zitten.

Met Mac OS 9 of eerder roep je het TCP/IP regelpaneel op, kies Configuratie uit het bestandsmenu en dupliceer je basis configuratie. Selecteer dan het gedupliceerde en noem het "Privé 192.168.1.0" of zoiets. Kies Ethernet van het Connect pop-up menu en kies 'handmatig' uit het configuratie pop-up menu. Vul in 192.168.1.99 als je IP-adres. Stel het Subnetmasker op 255.255.255.0. Het router adres hoef je niet in te vullen maar je mag er 192.168.1.1 van maken. Sluit af en klik Pas nu toe in de bevestigingsdialoog.

Met Mac OS X open je het Internet- en Netwerkpaneel in Systeemvoorkeuren. Kies Netwerk van het menu. Selecteer Ingebouwd Ethernet en klik Dupliceer. Je kunt dit dan "Privé 192.168.1.0" ofzo noemen. Selecteer dit nu via het menu en klik op het TCP/IP tabje. Kies 'handmatig' van het Configuratie pop-up menu. Vul in 192.168.1.99 voor het IP-adres. Stel het Subnetmasker op 255.255.255.0. Het Router veld mag leeg blijven of maak er 192.168.1.1 van. Klik Pas nu toe.

Zoals ik al zei, alle Linksys gateways en netwerkprodukten hebben automatisch een netwerkadres in de 192.168.1.0 reeks. Het Instant GigaDrive IP nummer is 192.168.1.77. Als je dat nummer invult voor je browser zie je het Instant GigaDrive configuratiescherm. De automatische gebruikersnaam is dan "administrator" - zonder hoofdletters en ook zonder de hoofdletter A die in het handboek staat - en er is geen wachtwoord.

En nu die opslagruimte -- Om gebruik te maken van de Instant GigaDrive moet je gebruikers en groepen instellen, ieder kan dan over de gehele allocatie beschikken. Eerst heb ik mijn account "glennf" ingesteld met een limiet van 1 GB. Daarna heb ik de drive in Jaguar ingesteld door "smb://192.168.1.77" (zie boven) in de 'Verbind met Server'- dialoog in te vullen, mijn "glennf" volume te selecteren en mijn gebruikersnaam en wachtwoord in te vullen waar gevraagd. De instant GigaDrive verscheen op mijn bureaublad als een volume met een gigabyte beschikbaar.

Je kunt kiezen uit verschillende opties bij het configureren, om automatisch diagnoses zoals een defragmentatie uit te voeren of om elke nacht de schijf te controleren. Het ondersteunt S.M.A.R.T. schijven, harde schijven met ingebouwde self-monitoring hard- en software die afwijkingen melden voordat ze problemen veroorzaken. De Instant GigaDrive kan je zelfs e-mailberichten toezenden met verschillende soorten verslagen en waarschuwingen.

Hoewel de Instant GigaDrive niet voor ieder netwerk de juiste oplossing zal zijn, vooral niet als je nog een oude goedkope Mac hebt die het werk voor je kan doen, is het een eenvoudige manier om, als je niet een gespecialiseerde systeembeheerder bent, een betrouwbare bestands-server te draaien zonder een heel besturingssysteem in de lucht te moeten houden.

PayBITS: Ga je nu eens kijken naar extra opslag?
Overweeg om Glenn te steunen met een donatie via PayPal!
<https://www.paypal.com/xclick/business=glenn%40glennf.com>
Lees meer over PayBITS: <./paybits.html/>

(Natuurlijk is een gift aan de Nederlandse vertaalploeg ook welkom: <https://www.paypal.com/xclick/business=d.flach%40chello.nl&item_name=TBNL>.)


Het scripten van het onscriptbare in Mac OS X

door Matt Neuburg <matt@tidbits.com>
[vertaling: GH, DPF, SL]

Dit is het sprookje over een regeringsstatuut van de VS, een zeker computerbedrijf gesitueerd in Cupertino, en een kleine revolutie die zich rustig voltrekt op je computer als je Mac OS X 10.2 Jaguar gebruikt.

Om deze revolutie te begrijpen moet je weten wat een macro-programma is. Ik heb jaren in TidBITS geschreven over zulke programma's. Simpel gesteld, er zijn een aantal frequente of zich herhalende computertaken die je zou willen automatiseren. Dit is vaak recht-toe-recht-aan als het programma dat deze taken uitvoert scriptbaar is, wat betekent dat het reageert op een repertorium aan AppleScript commando's: je schrijft gewoon een script dat uitdrukt wat je gedaan wilt hebben. Maar wat als het programma niet scriptbaar is?

Over Macs en macro's, deel twee -- Een oplossing die vrij goed werkte voor mij in voorgaande incarnaties van het Mac OS was het gebruik van een macro-programma. Zo'n programma moet ingrijpen in het Mac OS zelf om in staat te zijn de aanwezigheid van een "spook"-gebruiker te simuleren die toetsen kan indrukken en de muis kan gebruiken net zo als een echte gebruiker zou doen. Door zulke akties aaneen te rijgen kon de computer soms geforceerd worden om te compenseren voor het gebrek aan scriptbaarheid in sommige programma's. macro-programma's die ik vroeger gebruikte zijn onder meer PreFab Player, QuicKeys, OneClick, en KeyQuencer.

<http://db.tidbits.com/getbits.acgi?tbart=00801>
<http://db.tidbits.com/getbits.acgi?tbser=1044>

Draai nu de klok vooruit naar Mac OS X. De moeilijkheid hier is het woord "ingrijpen" in de vorige paragraaf. Een van de hoofdpunten van Mac OS X is dat je niet kunt ingrijpen in het besturingssysteem; om de stabiliteit te bewaren heeft Apple het type extensies afgeschaft dat zulks ingrijpen mogelijk maakt. Helaas betekent dit dat macro-programma's niet zo heel goed werken onder Mac OS X. Nadat QuicKeys migreerde naar Mac OS X vond ik de slechte werking vreselijk. Er waren problemen bij het uitvoeren van bepaalde taken, zoals het kiezen uit menu's en het indrukken van knoppen; en, belangrijker, het kon niet "zien" welke menu-items en knoppen aanwezig waren zodat geen intelligente beslissingen genomen konden worden en er niet gewacht werd om het verschijnen van het juiste scherm.

<http://db.tidbits.com/getbits.acgi?tbart=06603>

Deze beperkingen waren natuurlijk geen fouten van QuicKeys. Omdat QuicKeys niet kon ingrijpen in Mac OS X, het kon alleen zien en handelen op wijzen die toegestaan waren in de verscheidene application programming interfaces (APIs), geleverd door Apple. En Apple, met stabiliteit als hoofdzorg, wilde niet dat oude programma's naar andere programma's reiken en ingrijpen in menu's en vensters. Deze wetenschap loste het probleem niet op, en de gebruikers werden starend naar QuicKeys overgelaten, wachtend op verbeteringen. Die kwamen, maar niet veel.

<http://db.tidbits.com/getbits.acgi?tbart=07022>
<http://db.tidbits.com/getbits.acgi?tbart=06786>

En nu de revolutie. Terwijl we allemaal de verkeerde kant opkeken - naar QuicKeys - werd het probleem door Apple zelf opgelost. En de oplossing (een algemene, maar ook voor toekomstige QuicKeys versies) is aanwezig nu, meteen. Je kunt onscriptbare applicaties scripten, hun menu's en vensters en knoppen manipuleren, en tekst intypen. Alleen Apple heeft niet de moeite genomen er veel over te zeggen, dus weinig mensen weten ervan.

Uncle Sam verschijnt -- Hoe kon dit gebeuren? En waarom gebeurde het? Het valt allemaal terug te leiden naar een wet genoemd Workforce Investment Act of 1998, algemeen bekend als Section 508. Deze wet zegt dat als federale instituten gebruik maken van elektronische informatievoorzieningen er technologische maatregelen genomen moeten worden zodat gehandicapte mensen toegang tot die informatie moeten hebben die vergelijkbaar is met die van niet-gehandicapte mensen. in gewone taal, als je computers maakt en wilt dat overheden in staat zijn om die aan te schaffen, moeten ze volledig gebruikt kunnen worden door mensen met handicaps.

<http://www.usdoj.gov/crt/508/508law.html>

Laten we om te zien wat deze wet zou kunnen betekenen voor het bedrijf Apple in het brein duiken van iemand bij Apple. Deze persoon beeldt zich een Mac in die gebruikt wordt door iemand met een handicap. En hij of zij denkt: "Veronderstel dat de handicap zodanig is dat de gebruiker niet met muis of toetsenbord kan werken. Tjeminee. Tenzij we onze verkopen aan de overheid op nul willen stellen kunnen we beter in een manier voorzien, in Mac OS X, voor een of ander apparaat, zoals een mondbediende joy-stick, om in staat te zijn alle onderdelen van de gebruikers-interface te bedienen." Zulke operaties gaan veel verder dan een paar muisvervangende toetsaanslagen, zoals in de Universele Toegang en Toetsenbord voorkeurenpanelen. Het betekent dat het systeem zelf in staat moet zijn om alle individuele interface-elementen van een applicatie te "zien" en te behandelen, om zo in een manier te voorzien om met een joy-stick of een ander hulpmiddel iedere knop te kunnen indrukken en in elk tekstvak te kunnen klikken en elk interface-element wat verschijnt op het scherm te kunnen bereiken.

<http://www.apple.com/macosx/jaguar/universalaccess.html>
<http://www.abilityhub.com/mouse/joystick.htm>

Het idee is als volgt. Gegeven een willekeurige applicatie onder Mac OS X moet het voor een andere applicatie mogelijk zijn na te gaan welke interface-elementen het op een bepaald moment toont. De andere applicatie moet in staat zijn om deze elementen te "lezen" ("Er is een knop die OK zegt") en het moet in staat zijn om ze te benaderen (te klikken op de OK knop). Apple heeft gewerkt aan het probleem, en het resultaat, voor het eerst publiekelijk getoond in Jaguar, is de Accessibility API. In feite gebeuren er twee dingen. Onder de oppervlakte verricht Apple een aantal magische trucs, in het besturingssysteem zelf, die de interface-elementen op het scherm leest en bestuurt. Dichter aan de oppervlakte biedt Apple de API zelf, in feite een verzameling commando's voor de programmeur om van de magie te kunnen profiteren.

<http://developer.apple.com/techpubs/macosx/Cocoa/TasksAndConcepts/ProgrammingTopics/Accessibility/>
<http://developer.apple.com/techpubs/macosx/Carbon/HumanInterfaceToolbox/Accessibility/MakingAppsAccessible/>

Stop nu even en denk na over wat ik zojuist gezegd heb. Dit alles is nu al beschikbaar in Jaguar. Dus iedereen die een programma kan schrijven kan nu interface-elementen van een ander programma zien en besturen. Maar een dergelijk programma zou in feite een macro-programma zijn! In feite kunnen nu dus al die dingen die QuicKeys in het begin niet onder Mac OS X kon doen, omdat het niet in het Mac OS kon hacken, door willekeurig welk ander programma gedaan worden, dankzij de Accessibility API.

Het wordt echter nog beter. Lees verder.

Blessed (System) Events -- Vervolgens heeft iemand bij Apple twee en twee bij elkaar opgeteld, op de volgende wijze. "Aan de ene kant hebben we de Accessibility API, die ieder programma in staat stelt de interface-elementen van een ander programma te besturen. Aan de andere kant hebben we AppleScript, wat iedere gebruiker in staat stelt om een script te schrijven dat commando's kan geven aan een ander scriptbaar programma. Wat zou er vervolgens gebeuren als we die twee laten samensmelten? Iedere gebruiker zou in staat zijn om een script te schrijven om commando's te versturen aan een scriptbaar programma wat op zijn beurt weer de Accessibility API kan gebruiken om toegang te krijgen tot de interface-elementen van ieder programma." Om de betekenis hiervan te begrijpen moet je het middenstuk uit de redenering halen, en wat krijg je dan? Iedere gebruiker kan een script schrijven wat de interface-elementen bestuurt van ieder programma. Iedere gebruiker kan een onscriptbaar programma scripten, door gebruik te maken van AppleScript! Je hebt geen speciaal macro-programma meer nodig, omdat AppleScript zelf, al beschikbaar op je computer, een macro-taal zou worden.

Om dit te kunnen laten werken heb je natuurlijk wel het "middelste deel" nodig - als het ware de interface tussen de applicatie die AppleScript commando's ontvangt en praat met de Accessibility API. Die applicatie heet System Events. Het staat nu al op je computer, in /System/Library/Core Services. De versie echter die al daadwerkelijk de Accessibility API verstaat staat daar waarschijnlijk niet. Deze is nog in bètaversie en dus geen onderdeel van de standaard Mac OS X versie. Je moet het apart downloaden en installeren, je kunt het vinden op de GUI Scripting Webpagina van Apple.

<http://www.apple.com/applescript/GUI/>

Laten we het uitproberen. Dit zijn de twee voorbereidende stappen.

  1. Download en installeer de bètaversie van System Events.

  2. Doe het volgende in het Universele Toegang Voorkeurenvenster, plaats een vinkje in het vierkant aan de onderkant waar het volgende achter staat: "Activeer toegang voor hulpapparaten." Dit is cruciaal omdat het een onzichtbare schakelaar omzet om de Accessibility API te activeren.

Verder hebben we een onscriptbaar programma nodig om te bedienen. Voor dit voorbeeld zullen we mijn freeware programma MemoryStick gebruiken. Download het (en schaam je) indien je het niet hebt.

<http://pages.sbcglobal.net/mattneub/downloads/MemoryStick%20Installer.dmg.gz>

MemoryStick is niet scriptbaar, en dat was ook nooit de bedoeling. Desalniettemin, als door een magische truc, zullen we het bijbehorende Voorkeurenvenster gaan openen, het Poll tab item lokaliseren, lezen hoe vaak MemoryStick het systeem gaat ondervragen, en de bijbehorende schakelaar zo vaak gaan indrukken totdat het op "5 seconden" staat - en het venster weer sluiten. Klaar?

Start MemoryStick wanneer het nog niet draait. Start vervolgens Script Editor (in /Applications/AppleScript). Plak het volgende script in het venster van de Editor:

tell application "MemoryStick" to activate
tell application "System Events"
  tell application process "MemoryStick"
    click menu item "Preferences..." of menu "MemoryStick" of menu bar 1
    tell tab group 1 of window "MemoryStick Preferences"
      click radio button "Poll"
      get value of static text 3
      copy the result as number to theVal
      set theDec to theVal - 5
      if theDec > 0 then
        repeat theDec times
          decrement incrementor 1
        end repeat
      else if theDec < 0 then
        set thedec to 0 - thedec
        repeat thedec times
          increment incrementor 1
        end repeat
      end if
    end tell
    click button "done" of window "memorystick preferences"
  end tell
end tell

Start dit script, geniet ervan. Knipper niet, het is over voor je het weet!

Toekomstige ontwikkelingen -- Als je dit hebt gezien zeg je natuurlijk "Sapperdeflap! Hier neem ik mijn petje voor af! Wat moet ik doen om zelf dit soort commando's aan een willekeurig programma te geven, zodat ik scripts kan schrijven voor programma's die niet scriptbaar zijn, en AppleScript als macro-programmeertaal kan gebruiken?"

Er is gelukkig een geweldige manier om dit te doen. Het heet PreFab UI Browser, en is het werk van Scott Lawton van PreFab Software, die ons PreFab Player en TextMachine bracht, en Bill Cheeseman, de beroemde AppleScript goeroe en schrijver van Cocoa Recipes voor Mac OS X. Dit briljante kleine programma gebruikt de Accessibility API om te "kijken" naar alle interface-elementen van elk programma dat loopt, en genereert de AppleScript commando's die je nodig hebt om er op te klikken, ze te lezen, er in te typen, of wat dan ook. Het kost $25 (tot midden april, daarna stijgt de prijs), en er is een demo beschikbaar die je 30 dagen kunt proberen.

<http://www.prefab.com/uibrowser/>
<http://db.tidbits.com/getbits.acgi?tbart=04198>
<http://www.applescriptsourcebook.com/>
<http://www.amazon.com/exec/obidos/ASIN/0201878011/tidbitselectro00>

Het gaat interessant worden wat voor programma's er zullen verschijnen die hun voordeel doen met de Accessibility API. Bijvoorbeeld: een van mijn favoriete gereedschappen in de begindagen was een extensie die alle vensters opsomde in alle lopende programma's, zodat je direct over kon schakelen naar het juiste venster, ongeacht het programma waarin je je bevond. Zonder Accessibility API was zo'n gereedschap onmogelijk in Mac OS X, omdat een programma geen vensters van een ander programma kon "zien", laat staan er naar overschakelen - de Dock kon het wel, maar alleen omdat het als product van Apple ingewijd was in geheimen op systeemniveau die niemand anders kende. Maar nu zou het schrijven van zo'n gereedschap eenvoudig moeten zijn.

Het verhaal is nog niet uit, alleen al omdat zowel de Accessibility API als de Scripting Events bèta nog nieuw en onder ontwikkeling is en nog kinderziektes heeft. Desondanks werken ze, zoals het voorbeeld aantoont; en uiteindelijk verwacht ik dat de speciale versie van System Events, misschien wel als onderdeel van de eerstvolgende belangrijke udpate van Mac OS X, uit de bètafase zal komen en deel uit zal maken van de standaardrelease. In de tussentijd kun je, nu je het geheim eenmaal weet, beginnen te spelen met AppleScript in zijn schitterende nieuwe rol als macro-programmeertaal voor Mac OS X.

Houd daarbij wel in gedachten dat ook Accessibility API geen wonderen kan verrichten. Hij kan geen interface-onderdelen ontdekken die niet gemaakt zijn door Mac OS X' ingebouwde toolbox. Een programma dat niet-standaard interface-onderdelen gebruikt kan opzettelijk zo geschreven zijn dat Accessibility API er toch toegang toe heeft, maar als dat niet is gebeurd is de Accessibility API blind. Zo kan de Accessibility API geen enkel menu van Microsoft Word zien, noch een van diens werkbalken, of zelfs de tekst van een document.

Niet dat dat uitmaakt, natuurlijk, want Microsoft Word is nu al volledig scriptbaar. En daarmee komen we op een ander punt: echte scriptbaarheid is onvervangbaar. Een programma van enige serieuze omvang schrijven zonder de mogelijkheid in te bouwen om te worden aangestuurd door AppleScript is domweg armoedig programmeren. Dus als je dankzij Accessibility API delen van je werkzaamheden kunt automatiseren die voorheen niet gescript konden worden dan is dat prima. Maar als het programma in kwestie nog steeds actief in ontwikkeling is, schrijf dan ook de makers aan met het verzoek diezelfde functionaliteit daadwerkelijk scriptbaar te maken.

PayBITS: Als Matts artikel een verschil betekent voor wat je
kunt scripten, denk dan eens over een duit in het PayPal-zakje!
<https://www.paypal.com/xclick/business=matt%40tidbits.com>
Lees meer over PayBITS: <./paybits.html/>

(Natuurlijk is een gift aan de Nederlandse vertaalploeg ook welkom: <https://www.paypal.com/xclick/business=d.flach%40chello.nl&item_name=TBNL>.)


Niet-winstgevende en niet-commerciële publicaties en Websites mogen artikels overnemen of een HTML link maken als de bron duidelijk en volledig vermeld wordt. Anderen gelieve ons te contacteren. We garanderen de precisie van de artikels niet. Caveat lector. Publicatie-, product- en firmanamen kunnen gedeponeerde merken zijn van hun ondernemingen.

Vorige aflevering | Search TidBITS | TidBITS Homepage | Volgende aflevering