Betydelsen av sekunder: Scriptning av Illustrator

Tråden skapades och har fått 2 svar. Det senaste inlägget skrevs .
1

Vi nördar som jobbar med programmering och scripting av olika slag brukar ju ofta ha en övertygelse om att kod skall vara snabb och effektiv, nästan som självändamål, men ibland kan man till och med åskådliggöra betydelsen av det, och just nu håller jag på med ett sådant projekt, där betydelsen av varje sekund kan mätas.

En kund har ett bibliotek av 3600 Mac OS utdrag/urklipp/clippings, skapade på Mac OS med äldre versioner av Illustrator. Clippings är ett format som lever på lånad tid. Apple har börjat fasa ut det, och kunden behöver också få en konvertering så det funkar på Windows.

Problemet är att det enda sättet att få in sådan clipping i Illustrator är att dra och släppa, vilket är fint för en fil, men inte för 3600.

Inledningsvis tacklade jag därför problemet med att simulera drag-and-drop, men då den rörelsen i sig själv tog nästan 3 sekunder, innebar det att enbart det moment kräver 10800 sekunder, dvs nästan 11 timmar extra körtid –.bara för det momentet!

Genom att istället scripta inläsning av resursfilerna till klippbordet kan man tvinga Illustrator att klistra in innehållet, utan något dra och släpp.

Vid inklistringen uppstår andra problem, eftersom Illustrator envisas med att visa upp icke scriptbara dialogrutor, om att det finns legacytext som måste uppdateras. Genom att på programmatisk väg sända tantenttryckningar kan man iofs komma stänga ner dem, men det gör ändå processen långsammare, eftersom man måste vänta tills man är säker på att dialogrutan dykt upp.

LIknande problem finns med fontvarningsdialoger.

Summa summarum innebar det att för de första utkasten av scriptet så tog det närapå 20 sekunder per fil, vilket motsvarar 20 timmars körtid, och i de senare är jag nere på cirka 8, vilket alltså motsvarar 8 timmars körtid, vilket fortfarande är för länge, eftersom det finns en risk att man upptäcker oförutsedda problem och måste köra om batchen. Utöver prestanda är problemet också tillförlitlighet, att GUI-scripting är så förtvivlat labilt.

Min nästa tanke är därför att sätta igång en äldre maskin, med en äldre version av Illustrators, där den äldre textmotorn används. På den burken kan då själva inklistringen ske, vilket gör att man kan undvika varningsdialogerna. Det bör minska körtiden till omkring 4 timmar. Genom att sedan göra en slavburk med nyare Illustrator, där uppdateringen till nya formatet kan ske, så kan de två burkarna köras parallellt .

Självfallet hade man kunnat minska körtiden med att helt enkelt addera fler maskiner, så batcherna blir mindre, men så många maskiner har jag inte.

Hade man gjort alltihop manuellt hade det istället tagit cirka 160 mantimmar (under förutsättning att man orkar jobba helt produktivt och hundraprocentigt felfritt alla dessa timmar)

Men vad ska resultatet av körningen bli? Det är väl fråga om någon slags konvertering - att klippen ska klistras in och sedan sparas ner i något nytt format? Och i så fall så är det väl en engångskörning? Och då spelar det väl ingen större roll om det tar 4 eller 8 timmar?

Naturligtvis en kul utmaning som programmerare, men man får ju väga utvecklingstiden mot körningstiden också.

Senast redigerat 2012-08-23 12:28

Ja, det är i princip en engångskörning, men eftersom det finns risk för att man drabbas av oförutsedda fel oc/eller tankevurpor (det är nämligen mycket mer som scriptas, då man ändå är i farten) så finns en viss risk för att man får köra om batcharna , och det är ju inte så att jag har någon arsenal med dator som jag kan göra lediga, utan det sker ju på de maskiner där jag har alla mina arbetsredskap.

Sen är det också en fråga om tillförlitlighet, allting som sker via urklipp brukar braka förr eller senare, och även om jag *tror* att jag tänkt på det mesta så *vet* jag det inte.

Utvecklingstiden för att fördela arbetsuppgifterna är ganska begränsad, men huruvida jag verkligen gör det återstår att se, det beror lite på vad som händer med nästa, lite större, testbatch.

1
Bevaka tråden