Журнал «Компьютерра» №43 от 22 ноября 2005 года - Журнал Компьютерра
Шрифт:
Интервал:
Закладка:
В Windows все наоборот: программы готовы взаимодействовать с человеком (с помощью GUI), но не со своими собратьями. В результате отсутствия разделения труда приложения обрастают гроздьями функций, размер дистрибутивов растет как на дрожжах, а новые возможности бывают далеко не всегда нужны большинству пользователей. Конечно, «монолитные» программы есть и под Linux, но общая концепция системы все-таки другая, что чувствуется в большинстве открытых разработок.
Впрочем, это не значит, что весь свободный софт жутко недружелюбен. Проблема пользовательского интерфейса решается в рамках Unix way легко и изящно: многие GUI-приложения просто являются надстройками (frontend) над консольными утилитами (backend). Например, под Linux существует несколько систем синхронизации с «Палмами» (kpilot, jpilot и т. д.), но все они являются frontend’ами над разработкой pilot-links, осуществляющей взаимодействие с КПК. Аналогичным образомработают CD-рекордеры K3b и xcdroast, а также множество других GUI-программ. Подобный подход дает серьезные преимущества: не теряя в удобстве работы по сравнению с «монолитами», мы приобретаем гибкость модульной архитектуры.
Разговор с компьютеромНаличие множества программ с доступом из командной строки создает своеобразную языковую среду, в которой очень любят работать юниксоиды. Из нескольких тысяч «слов» можно составлять «предложения», выполняющие довольно нетривиальные действия. Можно изобретать новые «слова», используя скриптовые языки (Shell, Perl, Python и др.), что позволяет расширять возможности самовыражения и упрощать работу с системой. При этом компьютер выступает в качестве очень прилежного ученика-помощника, которому достаточно один раз объяснить, как выполнять то или иное действие, и можно быть уверенным, что он все поймет и запомнит (если, конечно, вы правильно объясняли).
Меняется само отношение к работе с компьютером: оно становится более творческим, смещаясь от периодического прочесывания Интернета в поисках новой «классной программы для…» к решению конкретных задач теми средствами, которые предоставляет система. Конечно, это не значит, что софт искать совсем не приходится или что нужно все писать самому, - но зачастую такой подход оказывается быстрым и эффективным. К тому же он позволяет реализовывать весьма специфические вещи, которые практически невозможно найти в сторонних разработках. Подчеркнуть собственную индивидуальность всегда приятно, а интересная и необычная функция, сделанная своими руками, - это вам не логотип на экране мобильника, купленный за доллар у оператора.
Мы наш, мы новый? ..При использовании свободного софта меняются не только привычки - меняется мировоззрение. Работая в среде, созданной энтузиастами, поневоле сам становишься одним из них. Найдя интересную разработку, задумываешься не только о том, как ее использовать для решения своих задач, но и о том, как можно помочь ее авторам и другим пользователям - например, реализовать нужную функцию, сообщить об ошибке или ответить на вопрос в форуме. Когда понимаешь, что ситуация под твоим контролем, что твой браузер не станет проверять, насколько лицензионно чиста твоя система, а медиаплейер не будет без твоего ведома сообщать «куда надо», какую музыку ты любишь, что нужная программа не исчезнет с лица земли только потому, что разработчик ее забросил, а исходники выложить не захотел, - начинаешь понимать, что свободный софт - это не просто громкие слова.
Практические занятияЕсть каталог с фотографиями. Требуется повернуть каждое изображение в соответствии с положением камеры при съемке (некоторые цифровые фотоаппараты записывают информацию об ориентации снимка в EXIF-данные JPEG-файлов), а также изменить размер на 800х600.
Для работы с EXIF нам потребуется пакет jhead, а для изменения размера изображений - функция convert из набора инструментов ImageMagick. Заклинание для решения всех наших проблем выглядит следующим образом:
mkdir output; for FILE in *.jpg; do jhead -autorot “$FILE“; convert “$FILE“ -resize 800x600 “output/$FILE“; done
Несмотря на то что эта длинная команда пишется в одну строчку, она представляет собой полноценную мини-программу. В ней есть даже цикл (участок между do и done), перебирающий все jpg-файлы в текущем каталоге (их имена записываются в переменную $FILE). Авторы jhead уже позаботились об автоматическом повороте картинок (достаточно указать ключ -autorot), а команда convert умеет не только преобразовывать практически любые типы графических файлов в любые другие, но и обладает недюжинными познаниями в области обработки изображений, так что изменить размер снимка для нее - пара пустяков.
Оповестить пользователя звуковым сигналом о том, что появилась связь с Интернетом.
while [ -z “`ping -c 1 computerra.ru - grep 1 received`“ ]; do sleep 1; done; aplay “`locate redalert.wav`“
В переводе на русский язык, эта строчка означает приблизительно следующее: если до сервера computerra.ru достучаться не удалось, нужно подождать одну секунду и повторить попытку; затем найти файл redalert.wav и проиграть его. При этом используются многие хитрости языка bash: обратные кавычки, перенаправление потоков ввода-вывода и неявный вызов команды test с помощью квадратных скобок, но подробный разбор синтаксиса остается за рамками данной статьи.
Война миров
Статья «Заметки поселенца» описывает опыт перехода на Linux отдельно взятого пользователя, еще при жизни под Windows уличенного в пагубном пристрастии к клавиатурным интерфейсам и командной строке. Дабы несколько приблизить эту публикацию к реальной жизни, мы решили рассказать и о другом взгляде на вещи. - И.Щ.
Спорить о преимуществах и недостатках операционных систем - занятие неблагодарное, особенно если речь идет о Linux и Windows. Несмотря на все аргументы сторон, последнее слово остается за сухими цифрами статистики - а цифры эти далеко не на стороне свободной ОС. И дело здесь не в том (или не только в том), что у Windows есть какие-то явные и неоспоримые преимущества, а в том, что находятся люди - очень много людей - которых устраивает именно эта система. Есть ли основания предполагать, что эта ситуация изменится в какую-либо сторону в ближайшие годы?
Когда речь заходит о сравнении Linux и Windows, одни говорят, что Windows более дружественна к пользователю, другие утверждают, что и Linux не менее дружественна. Так что же, Windows - это некая «массовая», доступная операционная система, в то время как любой «профессионал» неизбежно должен оценить достоинства Linux? Впечатление это хоть и имеет под собой основания, по сути своей ошибочно. Есть немало профессиональных программистов, которые предпочитают именно Windows, и даже готовы долго и со знанием дела ругать «свободную ОС» и доказывать ее нежизнеспособность. С другой стороны, Linux сейчас становится все более «дружественной», и освоение многих ее дистрибутивов не представляет особой сложности даже для человека, неискушенного в программировании.
Так в чем же дело? Почему защитники Windows так любят говорить о простоте и доступности этой ОС, а сторонники Linux всегда готовы упомянуть о перспективах, открывающихся при использовании командной строки и языка bash? Есть бородатый анекдот, в котором разные операционки сравнивают с самолетами. Пересказывать его здесь я не стану, а вот метафорой воспользуюсь. Windows похожа на комфортабельный, надежный авиалайнер, в котором пользователь является пассажиром. А что же Linux? Linux не менее (или «почти не менее») комфортабельный и надежный авиалайнер, вот только пассажир в нем может при желании сесть в кресло пилота. Это главное отличие. Кто-то, быть может, скажет, что это бесспорный плюс. И будет не совсем прав.
Продолжим наше сравнение. Когда самолет попадает в воздушную яму, у пассажира есть только одна возможность - перекреститься и прочитать молитву, не слишком надеясь, что ему это поможет, но будучи твердо уверенным, что и вреда не принесет. Пилот же не может позволить себе такой роскоши. Он должен что-то предпринять, и результаты его действий могут быть катастрофическими. Человеку, как известно, свойственно ошибаться, а еще человек не любит, когда его ошибки приводят к неприятным для него последствиям. И, по-видимому, из-за этого большинство людей летает на самолетах именно в качестве пассажиров.
Так вот: компьютер для большинства пользователей - всего-навсего инструмент. Инструмент красивый, сложный и удобный, но никак не творческая мастерская. И если он действует по принципу «черного ящика», тем лучше. Хорошо, конечно, когда инструмент можно улучшать по своему усмотрению и чинить при необходимости. Вот только это еще и лишняя головная боль. Стиральную машину тоже можно починить самостоятельно, но почему-то большинство из нас предпочтет вызвать мастера.
А что же программисты? Они-то как раз и есть мастера, разве не так? Так, да не совсем. Даже для программистов компьютер нередко остается только инструментом - инструментом, которым они владеют лучше других людей. Разумеется, чем чаще человек использует какой-то инструмент, чем больше набивает руку, тем больше шанс, что он захочет как-то изменить его, подогнать под себя. Но так бывает не со всеми, и зависит это не столько от инструмента, сколько от самого человека.