Сучасні ОС донезмоги напхані всілякими вбудованими функціями для полегшення життя кінцевих користувачів. Функцій цих настільки багато, що вже котрий рік з полиць книжкових магазинів не сходять мануали в дусі «Як зробити собі добре для чайників. Видання 27-е, доповнене й виправлене ». На жаль, більшість користувачів не читає навіть таких книг і для кожної, часом дуже простий, завдання відразу ж впадає шукати якусь готову утиліту. Це, в общем-то, нормальний підхід, але ж для масового зміни розміру фотографій люди часто ставлять ніяк не менше ніж Adobe Photoshop. Ну а як інакше-то? Несолідно адже, правда?
# 8673; # Action (s)
Action (s) - відносно молодий проект, який хоч якось схожий на оригінальний Automator. Він може працювати як в середовищі Windows, так і в Mac OS X. Для його роботи необхідна Java-машина, останню версію якої треба завантажити тут. Для установки самого додатка потрібно зайти на головну сторінку проекту і клікнути на кнопку Launch. Завантажиться файл actions.jnlp, який і треба буде запустити - це установник, який завантажить останню версію Action (s) з Мережі. При першому запуску треба буде дати дозвіл на роботу програми і поставити галочку «Довіряйте цьому видавцеві». Також можна відразу ж завантажити доповнення до Action (s) з цієї сторінки і встановити їх, просто двічі клацнувши і дочекавшись, коли програма відрапортує, що додаток встановлено і з ним можна працювати. Встановили все що потрібно? Чудово - перезапускаємо додаток і починаємо знайомитися з ним щільніше.
Інтерфейс програми розділений на дві частини. З лівого боку є бібліотека дій і змінних, а з правого - робоча область. Логіка роботи Action (s) проста - ми додаємо простим перетягуванням з бібліотеки в робочу область потрібне нам дію і налаштовуємо при необхідності його параметри. Результат роботи одного дії, тобто його вихідні дані, є вхідними даними для наступного дії. В результаті у нас виходить такий собі кортеж з дій. Наприклад, на виході ми отримуємо список файлів, на наступному кроці ми їх можемо скопіювати, перемістити, заархівувати, розпакувати та інше.
Якщо два дії можуть бути пов'язані таким чином, то між ними в робочій області показується перехід. Якщо ж між ними автоматично не з'явилося перехід, то типи даних несумісні. Наприклад, на виході ми маємо список рядків, а наступним етапом намагаємося конвертувати зображення в JPEG - логічно, що нічого доброго не буде при спробі в лоб обробити таку послідовність. Зверніть увагу, що всі дії в межах однієї робочої області виконуються одне за іншим. Операції умовного переходу є, також будь-який кортеж можна зробити цикл або повторити.
Також можна спокійно перетягувати дії і змінювати їх послідовність в межах робочої області. При спробі додати дію, яке вимагає вхідних даних, але їх ще немає, Action (s) запропонує додати в попередні кроки необхідні дії. Для більшості дій треба також налаштувати параметри - вказати файли, задати шаблон імені і так далі. Якщо ви не хочете жорстко ставити їх, то в багатьох випадках можна просто поставити галочку Show when running the workflow. В цьому випадку при виконанні дії користувача попросять вказати потрібні параметри - наприклад, вибрати список оброблюваних файлів. Загалом, для швидкого розуміння найкраще просто завантажити програму і потренуватися «на кішках» - якихось некритичних даних.
Що стосується змінних, то тут все просто - їх можна використовувати в якості вхідних даних або параметрів, а також для виконання деяких дій. Їх можна як ставити вручну, так і отримувати або генерувати в ході роботи. Щоб додати змінну, перетягніть її в робочу область. Потім її можна задати, наприклад, в якості імені файлу - треба буде також просто перетягнути її в потрібне поле. Правда, частенько програма «сходить з розуму» - підвести курсор до потрібного полю важко, так як воно кидається вгору-вниз. Також треба стежити за тим, що саме видає або отримує змінна. Наприклад, Current Date при спробі використання в якості імені файлу видає повну інформацію про дату, час (з двокрапкою як роздільник!), Часовому поясі etc. Природно, спроба створити файл з двокрапкою в імені закінчиться крахом. Доводиться використовувати обхідний шлях - додавати дію для перейменування файлу, вказувати в якості джерела імені цю змінну і вже вручну задавати коректний формат видачі.
Для кращого розуміння розглянемо два приклади. Подивіться на скріншот вище. Цей кортеж виконує наступну послідовність дій: робить скріншот з затримкою в 10 секунд і повідомленням користувача про це, додає до імені отриманого jpeg-файлу поточну дату і час, а потім переходить до першої дії. І так шість разів поспіль. Готові скріншоти потрапляють в папку screenshots. Це найпростіший приклад автоматизації рутинної операції. Наступна «програма» трохи складніше.
Вона пропонує вибрати з папки потрібні скріншоти, копіює їх в іншу папку (оригінали ми зберігаємо про всяк випадок і працюємо з копіями), злегка знижує якість зображень, упаковує отримані картинки в архів, перейменовує архів, заливає його на FTP-сервер, вважає MD5- суму від цього архіву, записує її в текстовий файл, який теж заливається на сервер. Цей приклад хоч і надуманий, але спробуйте-но повторювати таку операцію по кілька разів на день вручну - гарантовано набридне дуже швидко. Більш детальну документацію англійською мовою і приклади роботи в Action (s) можна знайти у відповідному розділі сайту, а також на форумі.
# 8673; # Sikuli
Цей інструмент з незвичним російському вуху назвою володіє однією незвичайною особливістю - він здатний розпізнавати за шаблоном елементи на екрані (кнопки, смуги прокрутки, що випадають списки і так далі) і працювати з ними. Програма також використовує Java-машина. Якщо говорити точніше, то вона являє собою розширений варіант реалізації мови Python - Jython. З одного боку, це дає набагато більше можливостей з написання скриптів. З іншого боку, вам доведеться хоча б дуже поверхово ознайомитися з цією мовою програмування. Втім, для найпростіших послідовних скриптів нічого вивчати не треба.
Є сенс відрегулювати цей параметр в залежності від завдання. У цьому ж вікні Sikuli відразу показує, скільки елементів вона знайшла при поточному рівні фільтрації. У нашому прикладі з грою зниження точності позитивно позначається на числі знайдених елементів. У деяких випадках це буде тільки заважати. Також серед параметрів є «Зсув мети» - місця, яке буде шукатися і над яким буде вироблено відповідну дію (клік, введення). Для підвищення точності його теж треба іноді коригувати.
Скрипт в прикладі з грою не оптимізований, і його можна сильно поліпшити. Наприклад, зробити так, щоб він запускався не один раз, а сто разів поспіль - додати в початок команду forxinrange (1,100): і відбити пробілами або табуляцією всі нижченаведені рядки. Можна обрамити шматочки з пошуку конкретного елемента конструкцією tryexcept. Загалом, покращувати його можна до нескінченності. Для подальшого знайомства з Sikuli корисно вивчити документацію. подивитися деморолики. а також зануритися в Jython. Як і у випадку з Action (s), вся інформація представлена англійською мовою.
# 8673; # Висновок
CleverClean SLIM-Series VRpro - самий плоский робот-пилосос Незважаючи на невеликі, майже іграшкові габарити, новий робот-пилосос компанії CleverClean може похвалитися тим, чого не зможе зробити ніхто інший його більший побратим. Він легко пропилососити під диваном або комодом, де пил може збиратися місяцями, а то й роками, адже дістатися туди нелегко навіть звичайними засобами: шваброю і ганчіркою
Згода на обробку персональних даних