Итак, давайте попрограммируем… Те, кто не хотят следить за процессом смогут в конце цикла уроков скачать готовое решение. Давайте посмотрим как легко облегчить себе жизнь не прилагая массу усилий и многих лет обучения.
Сценарий: Я хочу иметь папку, в которую буду складывать картинки. Если в папке появляется картинка, сразу автоматически создаётся её предпросмотр (thumbnail). В clipboard закидывается ссылка на готовую картинку. Т.е. мы закидываем картинку в папку и потом делаем Paste на странице нового поста (или в semagic)
Давайте так сделаем.
Для начала установим то, что нам понадобится. Во-первых, это замечательнейшая, бесплатная штука autoit. Это бесплатная среда программирования, которая позволяет написать программу, используя очень простой синтаксис (visual basic подобный) и получить exe файл крохотных размеров. Отличается просто великолепным хелпом и наличием любых, уже готовых решений почти под любой случай.
Я намеренно буду писать упрощённо, просто что бы показать как это МОЖНО сделать, а не как нужно. многие тонкости придут с опытом и только с ним. Но если не пробовать – не будет не только ошибок, но и плюшек. Постараюсь показать сам ход написания программы с точки зрения новичка. Потребуется минимальное знание английского. Он не обязателен, но у меня нет столько времени, что бы расписывать абсолютно всё самому.
Лирическое отступление. Можно пропустить
Маленькое отступление о программировании. Я не буду упоминать сотни технологий и десятки тысяч человеко часов что бы их изучить. Фактически главное, что бы понять ваше это или нет, определить можете ли вы писать программы или нет – это попробовать.
Что надо знать начиная программировать? Единственный тезис: “Компьютер – это не человек”. Загадочно звучит :) А я к тому, что компьютер не может догадаться что вы хотите. Он не может сам определить вроде бы очевидные вещи. Его надо учить. Или указывать ему что сделать по всем поводам.
Вот пример: Надо заварить чай. Недостаточно сказать “сделай чай”. Надо разложить задачу на шажки, каждый из которых компьютер уже умеет делать. Например, задача сделать чай разложится на
– взять кружку
– взять горячую воду
– налить воду в кружку
– добавить чай
Компьютер должен знать что такое кружка, вода, чай и их взаимодействие. Т.е. должен уметь взять воду, положить чай и т.п.
Что же такое программирование? Мы делаем объект кружка. кружка обладает свойствами и методами. Кружка имеет цвет, ширину, высоту, толщину. Кружку надо уметь ставить. Вода имеет свойства количества и температуры. Воду можно наливать, выливать, кипятить. Чай имеет свойство количества. Его надо уметь всыпать.
Имея написанное выше – мы можем оперировать объектами- программировать.
Так же и в нашей задаче. Есть папка. Мы можем смотреть что в ней есть. Есть файл – мы можем его переименовать, запустить, скопировать, удалить и так далее.
Начнём думать по шагам над задачей. Очень важно для начинающего “проговорить” то, что он хочет и подумать всё ли из этого может компьютер. Например, мы можем только взглянув на папку сказать, что в папке есть две картинки и фильм. Компьютеру же надо рассказать что сделать. Т.е. посмотреть каждый файл в директории, проверить последние три буквы из его названия и, по расширению, определить что это за файл. Например, если это “jpg, png, bmp, gif, …” – это, скорее всего, картинка. Если это “mkv, avi, mpg, mp4, …” – это, скорее всего, видео.
Программа:
– обнулить все счётчики
– взять файл
– выделить три буквы с конца
– проверить с известными расширениями картинок, если картинка – увеличить счётчик картинок на единицу
– проверить с известными расширениями видео, если видео – увеличить счётчик видео на единицу
– повторить для каждого файла в директории
– вывести на экран показания счётчиков картинок и видео.
Вот теперь компьютер точно знает что ему надо делать. Что приходит с опытом? Например самая первая строка “обнулить значения счётчиков”. Ведь если бы её не было – неизвестно что там творится у компьютера в мозгах. Он вполне может начать считать не с нуля, а с любой цифры. Мы должно точно указывать, что нам надо. Он не может догадаться, что нам надо считать с нуля. Это кажется нам логичным, но ответьте на простой вопрос: “А почему не с 9000”? Почему?
Итак, разложим исходную задачу на шажки:
1) посмотреть появились ли в папке какие-то новый файлы
2) если нет – то ничего не делать
3) если да – начать работу:
4) взять файл и проверить картинка ли это сравнивая с известными расширениями (jpg, png, gif, bmp)
5) создать картинку предпросмотра (thumbnail)
6) сформировать ссылку и закинуть её в clipboard
7) переместить файл в какую-то другую папку (например ARCHIVE)
8) повторить для каждого нового файла в директории.
Какие мысли возникают? Например, зачем пункт 7? А теперь представьте, что мы добавили картинку в папку, а там уже что-то есть? Компьютер добросовестно опять просмотрит все файлы и для каждого из них выполнит все действия. А нам надо только с новым файлм. Как проще всего указать, что файл “новый”? Да просто добиться того, что бы в папке были ТОЛЬКО новые, необработанные файлы. Поэтому после обработки просто убираем обработанный файл в другое место. Таким образом мы убиваем еще одного зайца: если произошла ошибка и какой-то файл не обработан – он обработается еще раз как только в эту папку будет закинут какой-то другой, новый файл.
Теперь начинаем смотреть на нашу “программу” и начинаем думать что НЕ умеет делать компьютер сам? Вернее не компьютер, а та среда программирования, где мы будем писать программу (autoit)
1,2,3 пункт. Autoit умеет дать список файлов в директории
4 пункт. Autoit умеет отделить 3 буквы из названия и сравнить из с другими 3-мя буквами
5 пункт. Autoit НЕ умеет создавать предпросмотры. Надо либо писать программу создания предпросмотра на нём, либо использовать уже написанные кем-то куски программы (функцию), написанную кем-то другим, либо использовать какие-то другие программки, которые умеют это делать, а из Autoit их просто вызывать
6 пункт. Autoit умеет работать с Clipboard
7 пункт. Autoit умеет переместить файл
8 пункт. Autoit умеет повторять действия много раз
У нас есть единственное тонкое место – это пункт 5. Для его решения я буду использовать свою программу, которая как раз для этого предназначена. vdushc2. (Будет приложена в конце цикла)
Ну и давайте посмотрим как это выглядит при написании программы.
Мы не знаем вышенаписанное (что умеет Autoit) и попытаемся это выяснить сами
Продолжение следует. Пожелания, замечания и т.п. приветствуются