來到目前這家公司最大的心得就是,大部分的時間都用在人工手動完成,而時間往往不是用跑玩流程,而是等待流程完成的時間。一家負責數位化的公司,說技術水平高也沒什麼,就是前期投入的成本要多,要狠得下心買下效能好得硬體。如果你沒有錢,就只能用時間跟人力來等價交換,但我就是不喜歡這點,不是不喜歡等價交換(我喜歡鋼之鍊金術師),而是用人力解決事情。
人在奇妙的環境下,往往會學會自己沒打算學的東西。好比我在軍中學會了用EXCEL篩選資料,我在純粹操作PhotoShop去背的環境下接觸了Windows Batch。會玩Batch是個意外,當時我和同事小朱待在夜深人靜的地下室進行修圖,一晃眼就要準備下班,但PhotoShop的處理程序大約還要兩三個小時結束。身為愛北極熊有責任心的我們就想到:「何不用電腦自動關機指令呢?」兩個人不斷地比較彼此寫的指令,最後搞大到弄出個後來被我稱作關機精靈的玩意,直到小朱離開公司後我仍在研究這玩意的可行性。
每當和人討論Windows時,都會開玩笑地說微軟把人們都搞笨了,人只會按按鍵選擇「下一步」、「確定」、「取消」,老實說,還真的就是這麼回事。Batch像是DOS下指令一般,給定你要做的拷貝、剪下、複製,他就能開始執行,只是沒有美觀的綠bar進度表就是了。單論一項功能,例如剪貼一份檔案,的確,下指令是稍微會讓人嫌慢;但若是一連串的流程,例如剪下、命名、壓縮、歸檔之類的作業流程,那就顯得出Batch批次功能的好處。
雖然批次處理很好用,但他仍有弱點,這問題就是在與程式之間的溝通。你可以下個指令要Word開啟記事本的檔案、要求列印,但就是不能使用一些內建的特殊功能,例如直接下指令要Word來跑合併列印功能。這中間的問題就出在,當初人家根本沒打算設計一條通道讓你只要下指令就能執行,他就是希望你在他這套圖形介面下作業。但說真的,OFFICE系列也有一套工具叫做巨集,透過巨集也能下這些指令給Word執行,不過這就是微軟開放使用的方式,你要用VBScript去寫出你要的執行方式才能讓他動起來,對我來說就像是重新打造一把開門的鑰匙,而我希望是有把萬能鑰匙來解決事情。
當我在PTT小軟體板看到 SIKULI 時,我對於「依據GUI介面圖示來寫程式」的介紹非常好奇,實際看過之後則是驚為天人。他的示範影片是用在設定IP,而看在我眼裡這就是一把好用的萬能鑰匙。他的設計概念就是讓程式去認圖示,你可以要求他點圖示一下、兩下、按右鍵,就是這些我們平常操作電腦的基本動作。雖然聽起來很簡單,但這的確是個非常聰明的方式,想想看,多半的程式都是設計成圖示操作介面,我們在打電腦說穿了就是不斷地在認圖示,只要我們教會軟體如何去辨別我們要對圖示設定做的動作,要自動跑根本就是輕而易舉的事情,最好的是我們甚至不用學習如何去跟套裝軟體溝通就能下指令。
希望你知道Windows的資料夾可以變更圖示,簡單地對於資料夾按右鍵,選擇「自訂」,變更你要的各類系統圖示。我最喜歡使用的是關機圖示,可以讓我知道哪個資料夾內的任務已經完成。利用Windows這個功能,我們就可以設定讓SIKULI認圖做事,有點像是幫汽車駕駛建立道路標示一樣,你才知道車要往哪開,動作要執行那一個。
但這時問題來了,如果一個畫面內有多個相同的圖示該怎麼辦。作者似乎有提出自己的方法,而我的想法則是,那我就建立一個管道的作業流程:素材集中區、處理區、完成區。每區都有自己的圖示,SIKULI就像是機械手臂一樣,從素材集中區抓出一個資料夾放入處理區,完成指定的動作之後再把資料夾扔到完成區,重頭再跑下一個素材。
雖然一直沒走進程式的領域,只是在路旁觀看偶爾挑些自己喜歡的東西用,但我還是認知到「嚴謹」跟「彈性」之間的反向關係。寫程式雖然一板一眼,但是做出來的結果就是那個樣;而用SIKULI 就像是在賭運氣一樣,你要他光靠認圖示就完成全部的工作還是有困難。偶爾他也會有認錯圖示的時候,這時你就得想辦法讓他回到正軌上面。例如當我將 SIKULI 用在自動拼PDF圖檔時,發現光是一個重新命名的動作你就得告訴他「按右鍵」「重新命名」「複製」「貼上」,要是流程中有要切換資料夾等動作就會異常麻煩,因此我就使用 Batch 加上 SIKULI 來相互配合,就好像我會用 Batch 來節省作業時間一般,SIKULI就是我的分身。
總結來說,SIKULI是套彈性很大的軟體,讓寫程式也快有「所見即所得」的感覺。只是彈性越大,出錯的空間也越多,感覺應該學個模糊理論才對。因此你會需要用其他的輔助方式來修正,讓這套軟體有能夠持續作業的能力,這很值得。
Tags
玩電腦