kiltum (kiltum) wrote,
kiltum
kiltum

Categories:
Тут опять дернула меня нелегкая зацепиться за очередной холиварчик Win vs Apple vs OpenSource. Почитал, поглядел на стандартные аргументы, используемые оппонентами (типа микрософт - крута, а ваш мак от писюка только осью отличается, наша макось самая удобная и на bsd, а ваш линукс только для мобильных телефонов годится и то не для всех ... ну, в общем, кому надо,тот сам найдет).

Но почему-то апологеты Apple крайне неохотно обращают внимание на полностью отсутствующие в других системах штучки. Я говорю про Automator и AppleScript. Ну, если Automator'у можно еще найти крайне далекие аналоги, то вот аналога AppleScript я не нашел до сих пор.


Что такое AppleScript? Если говорить упрощенно, то это скриптовый язык, напонимающий где-то обычные shell-скрипты, а где-то tcl (и прочие скрипты). Написанное на нем может компилироваться в байт-код и потом для всех это будет просто некой программой. Скажем, запихав в редактор следующий код:
set this_data to do shell script "uptime"
set x to the offset of "up" in this_data
set this_data to (characters x thru -1 of this_data) as string
display dialog this_data buttons {"OK"} default button 1

Я получу программку, которая при запуске просто выкидывает мне красивый мессадж-бокс, где указан аптайм моей машинки. Вроде пока всё просто и похоже на тот же tcl к примеру.

Но основной фан начинается чуть-чуть попозже. Дело в том, что большинство приложений в OS X имеют интерфейс, через который им можно сказать что-то. Скажем, что следующий скриптик скажет терминалке, догадаться несложно.
tell application "Terminal"
activate
tell window 1
set custom title to "multik"
set number of columns to 80
set number of rows to 40
end tell
end tell


Похожим образом можно управлять тем же фотошопом или Finder. Запись событий в Windows (не знаю,осталась ли эта хреновина сейчас) чуть-чуть похожа, но гораздо менее удобна и редактируема. Но всё это опять фигня. Благо, в терминалке можно и вручную цвета понавыставлять, а фотошоп и свой язык вроде имеет ...

Есть еще большая фигня, от которой лично я прусь как удаф. Называется она "folder action". Берем, пишем скрипт, который выполняет нам что-то нужное с файлом и цепляем его к папке через "folder action", настраивая, на что реагировать надо (на открытие папки, на помещение файла, на удаление файла, на закрытие папки и еще дофига событий). Теперь кидаем туда файл и он передается на обработку.

Вот честно спертый с apple.com скрипт, который просто зазиповывет всё брошенное в него:
on adding folder items to this_folder after receiving these_items
tell application "Finder"
if not (exists folder "Done" of this_folder) then
make new folder at this_folder with properties {name:"Done"}
end if
set the destination_folder to folder "Done" of this_folder as alias
set the destination_directory to POSIX path of the destination_folder
end tell
repeat with i from 1 to number of items in these_items
set this_item to item i of these_items
set the item_info to info for this_item
if this_item is not the destination_folder and the name extension of ¬
the item_info is not in {"zip", "sit"} then
set the item_path to the quoted form of the POSIX path of this_item
set the destination_path to the quoted form of ¬
(destination_directory & (name of the item_info) & ".zip")
do shell script ("/usr/bin/ditto -c -k -rsrc --keepParent " & ¬
item_path & " " & destination_path)
end if
end repeat
end adding folder items to
У меня есть ещё папочка с названием PGP. На неё повешен чуть модифицированный скрипт, который pgp'ит всё брошенное в неё. Есть папочка downloads, на которую повешен скрипт, распихивающий всё, что я качаю, по папочкам типа "Картинки", "Программы", "Странички". А на папке "Картинки" в свою очередь опять повешен стандартный (в смысле входящий в "упаковку") скрипт, который генерит превьющки для картинок и вешает эти превьюшки на соответствущие файлы. В итоге, как бы я там потом не таскал файлики, у меня вместо стандартной иконки программы, обрабатывающей эти файлы будет превьюшка самого файла (это прелесть HFS, но сейчас не о том).

И так далее и тому подобное. Более того, программировать самому практически не приходится - на той же apple.com дофига скриптов на все случаи жизни. И народ продолжает туда добавлять полезные штуки!

Но опять же всё это фигня. Не знаю, как в win, но в linux через одно место можно сделать подобное (скажем, заюзать beagle или написать свой демон за мониторингом каталога, и на него повесить свои скрипты). Наверное, в мире виндовса тоже можно присобачить подобное: все механизмы есть.

Главный кайф в десктопном юзаний макоси начинается после того, как вы преодолете свою лень и хотя бы пролистаете тонюсенький мануал юзера. А если вы знаете, что такое IDE и gcc - то и статейки по девелопингу под макось ... Просто что бы понять, что она умеет и что какая кнопочка значит.

И через некоторое время вы с удивлением обнаружите, что OS X дает вам столько свободного времени, что прям радостно на душе становится. И у вас появляется большой и толстый шанс сделать свою работу уже не торопясь, со вкусом. И более того, раз у вас появилось свободное время, его можно потратить на что-то полезное. К примеру: почему большинство из вас не делает резервные копии? Хотя все знают, что винчестеры ломаются, ошибки случаются и всякие вирусы гуляют ... В мире win всё просто - встроенная бекапилка настолько уёбищербна, что пользоваться ей можно только под дулом пистолета. А за остальные деньги надо платить или шариться где попало (на что опять времени нет). И в итоге хорошо, если бегают с скопированными в 10 мест данными, мучаясь от несинхронизированности. А мире apple я просто забыл про это: раз в нное время выскакивает окошко, предлагающее вставить диск, на который запишутся бекапы. Всё! Не надо мучительно вспоминать, сделал ли,не забыл ли ... Один раз сказал, чего охота сохранять, как часто и куда и забыл.

А безопасность данных? В OS X надо нажать пару кнопок, что бы ваш домашний каталог (в виндовсе это Documents And Settings) зашифровался. Вместе с вашими паролями, настройками и прочей фигней типа кеша браузера. Сделать подобное в windows невозможно (там кеши с tmp файлами лежат отдельно, а зашифровав user.dat вообще лишимся возможности грузиться).

Но это я отвлекся от скриптов. Куда их еще можно присобачить? А куда угодно. К примеру, AddressBook. У тех, кто знает про эту возможность, он просто выкидывает окошко с именем и номером звонящего и предлагает всякую фигню типа "ответить через sms" сделать. У меня же он еще вдобавок выкидывает окошко поиска по звонящему. А в нем оказываются все письма и документы от этой персоны. Жисть облегчает - просто офигительно.

Mail - тут похвастаться нечем. Там и так всё есть. Счас правда думаю, не написать ли скриптик, который раздербанивает winmail.dat :-)

Safari - ну про автоматически разбираемую папку download я уже писал.

iTunes - о. тут скрипт в 6 утра зовет iTunes и просит обновить подписанные подкасты. у iTunes есть недоработка - он проверят автоматически подкасты тогда, когда вы в последний раз это делали. И обновив подкасты в 3 дня, на следующее утро я остаюсь без "свежака". Напрягало ;-)

Вроде всё. В общем, кому интересно: http://www.apple.com/macosx/features/applescript/ ;-)
Tags: apple
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 21 comments