воскресенье, 28 ноября 2010 г.

Epson LX-300 и Ubuntu



Очередная мини заметка о настройке принтера под линуксом в данном случае имеем принтер Epson LX-300 Ubuntu видит его как правило сразу а вот с драйверами путаница по умолчанию драйвер печатает криво но вот этот:
Generic IBM-Compatible Dot Matrix Printer Foomatic/ibmpro (recommended)
печатает «как в винде»
Я надеюсь эта заметка сэкономить вам время.

пятница, 26 ноября 2010 г.

Симфония науки

 

Symphony of Science очень необычный музыкальный проект. Его создатель John Boswell решил объединить в одной произведении электронную музыкальную композицию, необычный видеоряд и... лекции и выступления великих физиков XX столетия - Карла Сагана, Ричарда Фейнмана, Ричарда Доукинса, Стива Соттера, Стива Хоккинга и других. Получилось очень необычно и по настоящему фантастично.

среда, 24 ноября 2010 г.

Руткит в сетевой карте

Исследователь безопасности продемонстрировал возможность внедрения руткитов в сетевые карты.
Гийом Делугре, специалист по реверсинженерингу французской компании Sogeti ESEC, создал proof-of-concept код после изучения встроенных сетевых карт Broadcom Ethernet NetExtreme PCI Ethernet.
Он использовал доступные документы и открытые ресурсы для разработки дебаггера прошивки. Он также произвел реверсинженеринг формата EEPROM, в котором хранится прошивка, а так же как процесс загрузки устройства.
Используя эти знания, Делугре смог разработать собственную прошивку с кодом, который обрабатывает процессором сетевой карты. Такая техника открывает возможности для создания руткитов, работающих внутри самой сетевой карты, что дает потенциальным преступникам преимущество перед обычными бэкдорами.
Важным является и тот факт, что операционная система может не обнаружить следа такого руткита, поскольку он спрятан в интерфейсе сетевой карты.
"Сетевая карта нуждается в получении прямого доступа к памяти (DMA) для обмена данными между устройством и драйвером", - объясняет Делугре. "С точки зрения прошивки, все управляется специально предназначенными для этого регистрами устройства, которые не всегда задокументированы. Взломщик сможет удаленно управлять руткитом в сетевой карте и получить доступ к базовой ОС благодаря DMA".
Делугре представил свое исследование на сайте hack.lu. Статья, посвященная его исследованию, вместе со слайдами презентации и демо, были опубликованы в понедельник здесь.

Вышел BackTrack 4 R2, LiveDVD-дистрибутив для проверки безопасности системы



Вышел релиз LiveDVD-дистрибутива BackTrack 4 R2, основанного на пакетной базе Ubuntu и предназначенного для проведения тестирования систем на предмет наличия уязвимостей, проведения аудита, анализа остаточной информации и выявления последствий атак злоумышленников. Дистрибутив появился в результате объединения команд разработчиков проектов IWHAX, Auditor Security Collection и Whoppix и является одним из лучших инструментов в своей области (авторитетный ресурс в свое время insecure.org назвал BackTrack лучшим LiveCD для исследования безопасности систем). Размер iso-образа составляет 1.94 Гб.
Из добавленных улучшений можно отметить:
  • Использование Linux-ядра 2.6.35.8, в котором значительно улучшена работа беспроводного стека;
  • Поддержка USB 3.0;
  • Поддержка новых беспроводных карт;
  • Применены все связанные с возможностью подстановки wifi-трафика патчи для обеспечения максимальной поддержки проведения атак на беспроводные сети;
  • Ускорение работы десктоп-окружения;
  • Рабочее окружение на базе Fluxbox переработано и теперь чем-то напоминает KDE;
  • В поставку включен пакет Metasploit, пересобранный с нуля и с работоспособной поддержкой MySQL-драйверов из коробки;
  • Обновлены присутствующие ранее пакеты, добавлены новые пакеты, удалены некоторые устаревшие пакеты.
BackTrack 4 содержит одну из самых богатых подборок программ, связанных с безопасностью: от средств для тестирования web-приложений и проникновения в беспроводные сети, до программ для считывания данных с идентификационных RFID чипов. В комплект BackTrack входит коллекция эксплоитов и более 300 специализированных утилит для проверки безопасности, таких как Aircrack, Maltego, Metasploit, SAINT, Kismet, Bluebugger, Btcrack, Btscanner, Nmap, p0f. Помимо этого, в дистрибутив включены средства для акселерации подбора паролей (Multihash CUDA Brute Forcer) и WPA ключей (Pyrit) через задействование технологий CUDA и ATI Stream, позволяющих использовать GPU видеокарт NVidia и ATI для выполнения вычислительных операций.

Холодильник Electrolux работает под управлением Linux

Компания Electrolux представила новую модель холодильника I-Kitchen, для управления которым используется основанный на архитектуре ARM мини-компьютер, работающий под управлением Linux. В дверь холодильника вмонтирован небольшой сенсорный экран, пользовательский интерфейс на котором сформирован при помощи библиотек EFL (Enlightenment Foundation Libraries), разработанных в рамках проекта Enlightenment.
Холодильник I-Kitchen позиционируется как составная часть "умной кухни", предоставляя пользователю не имеющий себе равных интерактивный интерфейс по полному управлению всеми аспектами работы холодильника. Аппаратная начинка встроенного в холодильник компьютера выполнена на основе 400Mhz процессора Freescale i.MX25, 128 Мб ОЗУ и сенсорного экрана с разрешением 480x800 пикселей.
Для организации вывода на экран, используется только программная система рендеринга Evas, обеспечивающая замечательную производительность без использования аппаратной акселерации вывода. Формирование насыщенного интерфейса, снабженного анимированными визуальными эффектами, производится с использованием библиотеки Edje и набора виджетов Elementary.
Одной из интересных возможностей является встроенный менеджер фотографий, позволяющий использовать экран холодильника в роли цифровой фоторамки. Работа данной функции обеспечена при помощи библиотеки Ethumb. Из других приложений можно отметить: ПО для управления внутренней температурой, заметки, напоминания, календарь-планировщик, адресная книга, книга советов и рецептов (загружено более 600 рецептов).
Среди входящих в состав EFL компонентов:
  • Ephoto - менеджер для управления коллекцией фотографий;
  • Eve - web-браузер на базе движка WebKit (используется библиотека EFLWebKit);
  • Editje - работающий в WYSIWYG режиме текстовый редактор;
  • Eio - абстрактный интерфейс для доступа к файловой системе;
  • Eeze - библиотека для организации взаимодействия с внешними устройствами через udev;
  • Efreet - библиотека, позволяющая использовать в приложениях некоторые специфкации Freedesktop.org по работе с пиктограммами, Desktop-файлами и меню;
  • Embryo - библиотека для написания небольших компилируемых приложений для встраиваемых устройств;
  • Eet - библиотека для записи произвольного набора блоков данных в файл и их последующего частого чтения в произвольном порядке;
  • Eina - библиотека с реализацией различных типов данных (массив, хэш, список, дерево) и полезных инструментов (работа с логами, оценка производительности, преобразование форматов и т.д.).

понедельник, 22 ноября 2010 г.

Компания Attachmate и подконтрольный Microsoft консорциум покупают Novell



Компания Novell объявила о достижении договоренности о продаже основной части своего бизнеса корпорации Attachmate. Одновременно, Novell достигла соглашения о продаже определенных активов, связанных с интеллектуальной собственностью, возглавляемому компанией Microsoft консорциуму CPTN Holdings LLC. Сумма сделки с Attachmate составляет 2.2 миллиарда долларов ($6.10 за акцию, что на 9% выше рыночной стоимости по состоянию на 19 ноября), сумма вырученная от продажи интеллектуальной собственности консорциуму CPTN оценивается в 450 миллионов долларов. После получения одобрения у регулирующих органов и акционеров, сделку планируется завершить в первом квартале 2011 года.
Какая именно интеллектуальная собственность будет передана консорциуму CPTN не афишируется. Также пока не понятно, как продажа нематериальных активов Novell подконтрольному Microsoft консорциуму в дальнейшем может отразиться на развитии Linux и открытого ПО. Что касается Attachmate, то после покупки данная компания планирует разделить Novell на два подразделения - SUSE и Novell, первое из которых будет заниматься развитием Linux-продуктов на базе SUSE Linux, а второе возьмет в свои руки остальные технологии Novell.
На вопрос, заданный журналистами вице-президенту компании Microsoft, курирующему направление интеллектуальной собственности, о характере купленных активов и о вхождении других компаний в загадочный консорциум CPTN, был получен уклончивый ответ, не поясняющий никаких деталей, но зато радужно обрисовывающий перспективы подобной сделки и указывающий на продолжение начатой ранее в кооперации с Novell работы по предоставлении смешанных IT-решений для клиентов.
Сотрудничество Microsoft и Novell началось в 2006 году, в рамках которого компания Microsoft выкупала сертификаты на коммерческую поддержку SUSE Linux Enterprise Server для последующей перепродажи корпоративным клиентам, одновременно использующим Windows и SUSE Linux. В ответ компания Novell согласилась с утверждением о нарушении в SUSE Linux интеллектуальной собственности Microsoft и заявила о необходимости защиты от патентных претензий. В рамках соглашения такая гарантия о ненападении была предоставлена всем клиентами компании Novell. Кроме патентного соглашения, Microsoft и Novell также активно работали в направлении улучшения совместимости Linux и Windows.
Attachmate принадлежит инвестиционным фондам Francisco Partners, Golden Gate Capital и Thoma Cressey Bravo, которые основали корпорацию скупив и объединив три компании - WRQ, Attachmate и NetIQ, специализирующиеся на разработке эмуляторов терминалов и программ для модернизации мейнфреймов IBM. В Attachmate также ведется разработка продуктов для защиты компаний от действий мошенников (Fraud Management), пакетов для IT-интеграторов и набора инструментов для организации управления серверами Unix/Linux/OpenVMS с Windows-систем.

воскресенье, 21 ноября 2010 г.

NetBSD 5.1 — новая версия операционной системы

Вышла новая версия свободной операционной системы NetBSD — 5.1.



Релиз NetBSD 5.1 — это первое обновление возможностей к ветке разработки NetBSD 5.x. В него включены исправления обнаруженных уязвимостей и ошибок, а также в нем представлены и некоторые более существенные изменения.

Среди изменений в NetBSD 5.1 можно выделить:

* поддержка новых устройств (например, появился драйвер ale(4) для Atheros AR8121/AR8113/AR8114);

* из драйвера ath(4) убран бинарный HAL и заменен на Open Source-версию;

* новый драйвер hdaudio(4) для поддержки Intel High Definition Audio в соответствии со стандартами (в ближайшее время он заменит azalia);

* поддержка определения топологии CPU для процессоров AMD;

* появление фреймворка sdmmc и драйвера sdhc(4) для SD-контроллеров, соответствующих спецификации (SD Host Controller Standard Simplified Specification);

* обеспечена поддержка cgd(4) на всех Xen-ядрах архитектуры amd64 и i386;

* обновления в программном обеспечении: pkg_install 20100204, BIND 9.5.2-P2, Postfix 2.6.5, dhcpcd 5.1.3 (и добавлен rc.d-скрипт), libevent 1.4.11, libfetch 2.30.

Разработчики посвятили релиз NetBSD 5.1 своему финскому коллеге Мартти Купаринену (Martti Kuparinen) из компании Ericsson, который погиб в результате дорожного происшествия в июне 2010 года. Отмечается, что «технический вклад Мартти в проект NetBSD слишком велик для полного перечисления», однако указывается, что он поддерживал множество пакетов в pkgsrc, обновил два решения по фильтрации пакетов в составе NetBSD и улучшил ряд драйверов для аппаратного обеспечения, а также был очень активен в сообществе.

Windows 1.0: 25 лет

среда, 17 ноября 2010 г.

Linux - 200 строк патча, творящие чудеса

В последнее время ведется работа по улучшению производительности Linux на десктопах. Недавно произошли значительные изменения и впереди еще много новых. Это разительно улучшает ощущения от использования Linux под сильной нагрузкой на процессор и память. К счастью,не перестают появляться замечательные изменения. Представляем вам новый патч, который ещё не включен в основной код, но уже прошёл несколько проверок за последние недели. Объем патча небольшой — всего около 200 строк. То, что он делает — самое настоящее чудо.

Патч, о котором идёт речь, автоматически организует задачи в группы с учётом TTY для улучшения ситуации с отзывчивостью под нагрузкой. Майк Гэлбрейт (Mike Galbraith) написал уже третью версию патча после того, как Линус Торвальдс вдохновил его на эту идею. Патч добавляет всего 224 строки и удаляет 9, поэтому затрагивается всего 233 строки кода.

Тесты, сделаные Майком, показывают уменьшение максимальной задержки в 10 раз и средней задержки в режиме десктопа в 60 раз. Линус Торвальдс уже восхваляет (по email) этот чудо-патч:

Удивительно (в хорошем смысле), каким маленьким, ненавязчивым и симпатичным он оказался в итоге.


Я так же очень рад тому, что он делает с отзывчивостью. Честно говоря, мой "тестовый стенд" весьма тривиальный (чтение почты в браузере, немного прокрутки... во время одновременной сборки ядра в 64 потока), но он весьма для меня актуальный. И показывает огромное улучшение.


Оно влияет на вещи типа прокрутки, но я заметил, что даже страницы стали загружаться намного быстрее. Может быть, это и не должно казаться сюрпризом, просто я всегда считал, что это зависит от производительности сети. Но, однозначно, нагрузка на процессор присутствует в любом случае при отрисовке страницы и, если у вас работает 50+ процессов одновременно, система будет тормозить во время загрузки, и, скорее всего, не сможет обрабатывать все эти HTTP-запросы вовремя.


Поэтому я и считаю, что это одно из «настоящих» улучшений. Отличная работа! Управление группами наконец-то переходит из разряда «полезная фишка для серверов под особой нагрузкой» в «важнейшая особенность».


// Линус


Первоначально об этом патче нам сообщил сегодня утром читатель. «Посмотрите, пожалуйста, на это, мой компьютер больше никогда не станет прежним, этот патч очень сильно повышает эффективность работы системы (все очень гладкое, плавный скроллинг и т.п.)... Он так же хорош, как патчи Кона Коливаса (Con Kolivas).»

Этот патч показал отличные результаты не только у Линуса, Андре Годдарда (читатель Phoronix, который сообщил о последней версии), и других тестеров, у нас он тоже творит чудеса. Хотя я и сильно занят разработкой OpenBenchmarking.org и «Iveland», я все же нашел несколько минут, чтобы записать два видео, которые демонстрируют все преимущества патча «sched: automated per tty task groups». Результаты очень впечатляющие.

Этот патч заработал на абсолютном большинстве тестируемых мной систем, от нетбуков с Intel Atom до систем с quad-core AMD Phenom. Для записи этих двух видеороликов я использовал систему с Ubuntu 10.10(x86_64) с процессором Intel Core i7 970 «Gulftown», который имеет шесть физических ядер плюс Hyper Threading, что обеспечивает ОС Linux двенадцатью потоками.

Ядро собиралось с исходников Linux 2.6.37-rc2 из ветки Линуса, версии 15 ноября. Единственное изменение, которое мы делали - это внесли патчи планировщика Майка Гэлбрейта. Этот патч позволяет автоматизированную групировку задач для каждого терминала, выполнять динамически в ядре, в режиме реального времени, записывая 0 или 1 в /proc/sys/kernel/sched_autogroup_enabled или добавив параметр «noautogroup» при загрузке ядра. Единственная разница между двумя записанными видео - это измененное значение sched_autogroup_enabled.

Оба видео показывают работу GNOME на Core i7 970 во время проигрывания 1080p видео в формате Ogg, запущеного glxgears, двух окон Firefox с открытыми сайтами Phoronix и Phoronix Suite, двумя терминалами, системным монитором GNOME и файловым менеджером Nautilus. Эти видео показывают как разные приложения реагируют на повышение нагрузки на систему, которая обеспечивается сборкой ядра Linux на 64 параллельных потоках, полностью загружая процессор.

Итак, давайте взглянем на видео!

Ниже представлено видео работаюшего на последнем ядре из git. Обсуждаемый патч применён, но планировщик autogroup отключен через интерфейс sysfs.

http://www.youtube.com/watch?v=uk70SeGA7pg

Как вы можете заметить, ощущения от компиляции ядра на стольких параллельных потоках весьма мучительно. И, хотя пример 1080p видео ни разу не остановился, ничего не изменилось по сравнению с текущим ядром 2.6.37. Также, наблюдалось лёгкое залипание в glxgears и проблемы с отзывчивостью в тут и там. Это всё несмотря на все включеные в состав 2.6.37 улучшения. Если записывать видео с предыдущей версии, всё будет намного ужасней! Теперь давайте посмотрим, что случится, если включить новый планировщик.

http://www.youtube.com/watch?v=prxInRdaNfc

Разница очевидна также, как между днем и ночью. Видео в 1080p практически всё время воспроизводится плавно, и также большую часть времени, пока компилируется ядро. Поведение glxgears заметно улучшилось, а движения окошек и отзывчивость рабочего стола стала намного приятней.
Во время компиляции ядра в 128 потоков или других тяжёлых задачах результат ещё более показательный, хотя и не так хорош для демонстрации на видео. Первое видео, которые мы сделали для состояния «до патча», больше походило на фотографию.

Патч действительно творит чудеса, улучшая отзывчивость и интерактивность на десктопах. Этот патч делает ощущения от прогулки по интернету намного приятнее и, самое главное, удивляет даже Линуса Торвальдса. Окно для включения изменений в 2.6.37 уже закрыто, поэтому это будет отличным добавлением в выпуск 2.6.38 наряду с ожидающей своей очереди поддержкой Reiser4, открытых дров для VIA Graphics / Radeon HD 6000 Серий DRM.

Пока ваше ядро компилируется, вы можете просмотреть серию бенчмарков ядра за последние пять лет, а так же серию сравнений компиляторов 4.2/4.3/4.4/4.5/4.6, LLVM-GCC, Clang на LLVM 2.8, и DragonEgg на LLVM 2.8 с GCC 4.5.1

Патч: http://marc.info/?l=linux-kernel&m=128978361700898&w=2

Оригинал: The ~200 Line Linux Kernel Patch That Does Wonders

«Живой» концерт 3D голограммы Аниме персонажа Хацунэ Мику



Японию захлестнула очередная волна любви к синтетической поп-звезде. Имя Хацунэ Мику, как и её голос, собран из нескольких составляющих — хацу (первый), нэ (звук) и мику (будущее).


Хацунэ Мику была создана ещё в 2007 году и быстро завоевала популярность, в Японии. Но сейчас, когда о ней стали потихоньку забывать, её создатели — Crypton Future Media решили пойти на беспрецедентный шаг – организовать её «живой» концерт при помощи анимированной 3D-голографии. Статья на Gizmodo частично объясняет, как это было осуществлено. На заглавном видео эпизод этого концерта.

Родитель первой синтетической поп-звезды — программное обеспечение Vocaloid небезызвестной фирмы Yamaha, имитирующее поющий голос человека на основе заданной мелодии и текста. Любую программу на основе неё можно условно поделить на две части: систему синтеза голоса (пения) и библиотеки исполнителей. Голос певца разбивается на небольшие отрывки и записывается в базу данных. Далее, пользователь набирает текст нового произведения, вводит ноты, задаёт ритм, а Vocaloid автоматически формирует песню, подбирая соответствующие тексту фонемы и звуки.

понедельник, 15 ноября 2010 г.

Remmina - лучший клиент для удаленного доступа в Linux



Это по моему мнению Remmina, поддерживает протоколы: SSH, RDP, VNC. SFTP. Обладает кучей опций и настроек. Присутствует поддержка плагинов.

Установка в Ubuntu:

sudo add-apt-repository ppa:llyzs/ppa
sudo apt-get update
sudo apt-get install remmina
 
 

Установка МФУ Canon i-SENSYS MF4018 в Ubuntu 10.X



Столкнулся с такой проблемой на работе надеюсь данная инструкция поможет кому то еще с экономить время.
В Ubuntu 10.04 LTS и 10.10 оригинальные драйвера Canon из deb пакетов перестали ставиться из-за переименования в системе libcupsys2 в libcups2.
Поэтому делаем такой финт.
Конвертируем из rpm и устанавливаем deb:

В скачанном архиве с дровами для МФУ отсюда, распаковываем, далее:

cd RPM
sudo apt-get install alien
sudo alien *.rpm
sudo dpkg -i cndrvcups-common_1.90-2_i386.deb
sudo dpkg -i cndrvcups-ufr2-uk_1.90-2_i386.deb

воскресенье, 14 ноября 2010 г.

Reactable: создавать элетронную музыку просто

На видео представлен интересный инструмент для создания электронной музыки. Проект под названием Reactable сочетает в себе прозрачный круглый стол с чувствительной к прикосновению поверхностью и набор небольших объектов в форме кубов и цилиндров. Каждый их этих элементов отвечает за определенный звуковой примитив или эффект. В зависимости от их расположения, настройки и организации связей между ними получаются действительно впечатляющие музыкальные композиции.

Жестокий краш-тест смартфонов

На видео можно увидеть насколько быстро перестают работать современные смартфоны при высоких температурах.

среда, 10 ноября 2010 г.

С днём рождения, Firefox!

Сообщество Mozilla сегодня, 9 ноября, празднует
6-й день рождения Firefox — браузера, которым пользуется около 400 миллионов людей во всём мире.

Mozilla Summit 2010

Mozilla была создана более 10 лет назад как некоммерческая организация, миссией которой является содействие открытости и инновациям в Интернете. Шесть лет назад Mozilla выпустила Firefox 1.0.

Сегодня, Firefox доступен на более чем 70 языках. Почти четверть пользователей Интернета выбирают Firefox в качестве основного браузера. Более 150 миллионов людей пользуются расширениями Firefox.

Firefox обязан своим успехом сообществу Mozilla, состоящему из десятков тысяч разработчиков, локализаторов, тестеров и других участников.

В этом году, чтобы отпраздновать день рождения Firefox, Mozilla просит помощи пользователей, чтобы продемонстрировать, как люди любят и используют Firefox в своей части мира. Просто пришлите открытку со своим сообщением о Firefox, и ваш FoxCard будет размещён в офисе Mozilla в Маунтин-Вью или Париже. При этом вы можете даже что-то выиграть. На странице FoxCards в Фейсбуке есть дополнительная информация.

Также разработчики будут благодарны, если вы поможете в тестировании Firefox 4 Beta и напишите свои отзывы.

Adobe Creative Suite на Linux, потдержи

В мире Open Source есть хорошие инструменты для работы с графикой, но все-таки иногда встречаются такие задачи, решение которых, как ни жаль, пока под силу только закрытым продуктам: например, подготовка предпечатной продукции для полиграфии, для которой стандарт дефакто — Adobe Illustrator и Adobe InDesign, профессиональная работа с изображениями (возможность использования 32 битной глубины цвета и цветовых профилей таких как Panton и т.п.).

И вот для всех тех, кому небезразлична судьба Adobe CS на платформе Linux, появилась отличная возможность поспособствовать продвижению этой идеи. Буквально несколько часов назад на getsatisfaction.com, в заявках на портирование CS под Linux появился комментарий от Carey Burgess сотрудника Adobe:

«Thank you all for your feedback. We do currently develop some software for *NIX, including Flash Player and Adobe Reader, so I can
understand why you'd want the development and design tools as well.

I have forwarded this feedback on to the appropriate team who will consider it for future releases of Adobe software.»

Смысл этого комментария в том, что все пожелания будут направлены соответствующей ответственной команде, которая отвечает за будущие релизы Adobe. Поэтому если вам небезразлична возможность использования продуктов Adobe на Linux платформе оставьте свое пожелание на соответствующей странице: getsatisfaction.com/adobe/topics/produce_creative_suite_for_linux

Появление профессиональных инструментов для работы с графикой в Linux это также отличная возможность для продвижения открытых систем как
действительно мощных инструментов в продакшене.

вторник, 9 ноября 2010 г.

Антивирусники негодуют Microsoft начала распространять Security Essentials через Microsoft Update

Похоже история как с IE повторяется.



Компания Microsoft начала распространять свой бесплатный антивирус Security Essentials в рамках системы обновлений Windows. Антивирусные компании подвергли такое решение критике.
С понедельника американским пользователям лицензионных Windows XP, Vista и 7, не озаботившимся установкой какого-либо антивирусного продукта, стали предлагать Microsoft Security Essentials в виде необязательного обновления Microsoft Update. Несколькими неделями ранее подобный ход был сделан и в отношении пользователей из Великобритании.
Узнав об этом, компания Trend Micro заявила, что это "вызывает серьёзные вопросы о недобросовестной конкуренции".
"Windows Update де-факто является расширением Windows, поэтому нас беспокоит начало распространения программы в рамках обновлений, — заявила главный менеджер Trend Micro по делам частных пользователей и малых предприятий Кэрол Карпентер. — Windows Update не является для пользователей выбором, и мы уверены, что его не следует использовать таким образом".
В Microsoft отмечают, что распространение Security Essentials производится не через Windows Update, а через Microsoft Update. К тому же это обновление не является важным и, следовательно, не загружается автоматически. Правда, здесь умалчивают о том, что для большинства пользователей никакой практической разницы между Windows Update и Microsoft Update не существует.
Symantec и McAfee, самые крупные антивирусники в США, воздержались от обвинений в адрес Microsoft. Обе компании снисходительно заметили, что Security Essentials не предоставляет должного уровня защиты. Также антивирусники заявляют, что в принципе не боятся конкуренции со стороны бесплатных решений.
Между тем, технический директор PandaLabs Луис Корронс выразил особое мнение. Он считает идею распространения антивируса через обновления Windows вполне приемлемой — но только при условии, что пользователям будет предоставляться любое бесплатное антивирусное решение на выбор.
Корронс привёл пять довольно разумных доводов в поддержку этой мысли, среди которых не самые высокие способности Security Essentials по обнаружению вирусов заняли лишь третью позицию. Более же всего Корронса беспокоит то, что бесплатный антивирус от Microsoft не устанавливается на нелицензионные версии Windows, а именно здесь и находится основной рассадник "заразы".

суббота, 6 ноября 2010 г.

Краткое введение в программирование на Bash

 
 
Данное введение в программирование на bash прельстило меня своей краткостью и содержательностью. В то же время я изменил некоторые примеры, потому что они делали слегка не то, что ожидается новичками. Начинающим текст будет полезен как отправная точка для начала написания скриптов. Опытным - как справочник. Удачного чтения!
Выражаю также благодарность Владимиру Черному (начальник отдела образовательных проектов ALT Linux) за внесенные в текст правки.


Тема программирования на bash из разряда тех, которые могут быть рассмотрены и в пару, и в сотни страниц. Гарольд Родригес (Harold Rodriguez) объясняет эту тему в приведенном ниже руководстве из двух частей. Его прекрасный и яркий стиль позволил ему охватить все существенные черты программирования на bash буквально на нескольких страницах.
Если вы никогда не программировали на bash ранее - сейчас самое время начать. Даже если у вас мало знаний о том, что такое bash, вы вполне можете посмотреть на множество интересных скриптов, разбираемых Гарольдом.
Введение
Подобно остальным оболочкам, доступным в Linux, Bourne Again shell (bash) является не только, собственно, командной оболочкой, но и языком для написания сценариев (скриптов) (слова «сценарий» и «скрипт» обычно являются синонимами - прим. перев.). Скрипты позволяют в полной мере использовать возможности оболочки и автоматизировать множество задач, которые иначе потребуют для своего выполнения ввода множества команд. Многие программы, работающие внутри вашего компьютера с Linux - это скрипты. Если вы захотите узнать, как они работают, или изменить их, важно понимать их синтаксис и семантику. Кроме того, понимая язык bash, вы сможете писать свои собственные программы, чтобы выполнять разные задачи теми способами, которые выберете сами.

Так все-таки программирование (programming) или написание скриптов (scripting)?
Новичков в программировании, как правило, озадачивает разница между, собственно, программированием и языками скриптов. Программы, написанные на каких-то языках программирования, обычно гораздо более мощные по возможностям и работают намного быстрее, чем программы, написанные на языках сценариев. Примеры языков программирования - C, C ++ и Java. Создание программы на каком-либо языке программирования обычно начинается с написания исходного кода (текстовый файл, содержащий инструкции о том, как будет работать окончательная программа), затем его необходимо скомпилировать (собрать) в исполняемый файл. Этот исполняемый файл не так легко переносить между различными операционными системами. Например, если вы напишете на программу на C для Linux, вы не сможете запустить ее в Windows. Чтобы сделать это, вам придется перекомпилировать исходный код под Windows. Написание скрипта также начинается с написания исходного кода, который не компилируется в исполняемый файл. Вместо этого интерпретатор оболочки последовательно читает инструкции в файле исходного кода и выполняет их. К сожалению, поскольку интерпретатор должен читать каждую инструкцию, скорость исполнения скрипта обычно медленнее (намного медленнее - прим. перев.), чем у скомпилированной программы. Основным преимуществом скриптов является то, что вы можете легко переносить исходный файл в любую операционную систему и просто запускать их (естественно при наличии интерпретатора для этой операционной системы - прим. перев.).
Bash - это язык сценариев. Он отлично подходит для написания небольших программ, но если вы планируете делать какие-то мощные приложения, выбор для этого какого-либо языка программирования предпочтительнее для вас. Другие примеры скриптовых языков Perl, Lisp, и Tcl.

Что нужно знать для написания своих скриптов?
Для этого необходимо знание основных команд Linux. Например, вы должны знать, как копировать, перемещать и создавать новые файлы. Обязательно умение использовать какой-либо текстовый редактор. Существуют три основных текстовых редактора в Linux: vi, emacs и pico (автор еще забыл nano, который лучше всего подходит начинающим, если не учитывать еще и mcedit. - Прим. перев.). Если вы не знакомы с vi или emacs, используйте pico или другой простой в использовании текстовый редактор.

Внимание!!!
Не следует учиться программировать на bash из-под пользователя root! В противном случае - может случиться все что угодно! Я не буду нести никакой ответственности, если вы случайно допустите ошибку и испортите вашу систему. Вы предупреждены! Используйте учетную запись обычного пользователя без каких-либо привилегий. Вы можете даже создать нового пользователя только для обучения написанию сценариев. Таким образом, худшее, что произойдет в данном случае — это исчезновение данных в каталоге этого пользователя.

Ваша первая программа на Bash
Нашей первой программой будет классическая «Hello World». Конечно, если уже вы программировали раньше, вы должно быть устали от таких примеров. Однако это - традиция и кто я такой, чтобы менять ее? Программа «Hello World» просто выводит слова «Hello World» на экран. Запустите текстовый редактор и наберите в нем следующее:

#!/bin/bash
echo "Hello World"

Первая строка сообщает Linux использовать интерпретатор bash для запуска этого скрипта. В этом случае, bash находится в каталоге /bin. Если у вас bash находится где-то еще, сделайте соответствующие изменения в данной строке. Явное указание интерпретатора очень важно, удостоверьтесь еще раз, что указали его, поскольку данная строка говорит Linux какой именно интерпретатор нужно использовать для выполнения инструкций в скрипте. Следующее, что нужно сделать, это сохранить скрипт. Назовем его hello.sh. После этого вам нужно сделать скрипт исполняемым:

$ chmod u+x hello.sh

Если вы не понимаете, что делает эта команда, прочтите справочную страницу команды chmod:

$ man chmod

Как только это будет сделано, вы сможете запустить программу, просто набрав ее название:

$ ./hello.sh
Hello World

Получилось! Это ваша первая программа! И хотя она скучная и не делает ничего полезного, она показывает как именно все работает. Просто запомните эту простую последовательность действий: напишите код, сохраните файл, сделайте его исполняемым с помощью chmod и запустите.

Команды, команды и команды
Что именно делает ваша первая программа? Она печатает на экран слова «Hello World». Каким образом она это делает? Она использует команды. В нашей программе мы написали только одну команду - echo «Hello World». Что именно тут команда? echo. Эта программа принимает один аргумент и печатает его на экран.
Аргументом является все, что следует после ввода названия программы. В нашем случае «Hello World» это и есть аргумент, переданный команде echo. При вводе команды ls /home/, аргументом команды ls является /home. Ну и что это все означает? А означает это то, что если у вас есть программа, которая принимает какой-то аргумент и выводит что-то на экран, вы можете использовать ее вместо echo. Предположим, что у нас есть программа под названием foo. Эта программа будет принимать один аргумент (строку из слов) и печатать их на экран. Тогда мы можем переписать нашу программу вот так:

#!/bin/bash
foo
"Hello World"

Сохраните ее, сделайте исполняемой и перезапустите ее (примечание для новичков - этот пример работать не будет. - Прим. перев.):

$ ./hello
Hello World

Точно такой же результат. Использовался ли тут какой-то уникальный код? Нет. Написали ли мы какую-то программу? Нет, если только вы не являетесь автором программы echo. Все, что вы сделали - просто встроили программу echo в наш скрипт и снабдили ее аргументом. Примером альтернативы использования команды echo в реальном программировании является команда printf, которая имеет больше возможностей, если вы знакомы с программированием на C. Ну и на самом деле, точно такой же результат можно было бы получить и без написания скрипта:

$ echo "Hello World”
Hello World

Написание скриптов на bash предлагает широкий спектр возможностей и этому легко научиться. Как вы только что могли видеть, вы используете другие команды Linux, чтобы писать ваши собственные скрипты. Ваша программа-оболочка представляет собой несколько других программ, собранных вместе для выполнения какой-либо задачи.

Другие полезные программы
Сейчас мы напишем программу, которая переместит все файлы в каталог, удалит его вместе с содержимым, а затем создаст это каталог заново. Это может быть сделано с помощью следующих команд (В примере, приведенном в оригинале автор показывает, что не зря рекомендовал делать приведенные упражнения под специально созданным пользователем. Результатом выполнения данной последовательности команд будет чистый каталог, в котором вы работаете. Скорее всего это будет ваша домашняя директория. Поэтому, если вы НЕ хотите удаления всех файлов в ней - НЕ выполняйте команды из оригинала статьи. А лучше последуйте совету автора и создайте отдельного пользователя специально для тренировки написания скриптов. Этот пример я немного расширил и теперь он не такой опасный. Прим. перев.):

$ touch file1
$ mkdir trash
$ mv
file1 trash
$ rm -rf trash
$ mkdir trash

Вместо того, чтобы вводить это все в интерактивном режиме, напишем скрипт, выполняющий эти команды:

#!/bin/bash
touch file1
mkdir trash
mv
file1 trash
rm -rf trash
mkdir trash
echo “
Файл удален!

Сохраните его под именем clean.sh и теперь все, что нужно сделать - это запустить его. Он переместит все файлы в каталог, удалит его, создаст его заново каталог и даже напечатает сообщение об удалении файлов. Запомните, если вы обнаружите, что регулярно делаете нечто требующее набора одной и той же последовательности команд - это вполне можно автоматизировать написанием скрипта.

Комментарии
Комментарии помогают сделать ваш код более читабельным. Они не влияют на то, что выводит программа. Они написаны специально для того, чтобы вы их прочли. Все комментарии в Bash начинаются с хэш-символа #, за исключением первой строки (#!/bin/bash), имеющей специальное назначение. Первая строка - не комментарий. Возьмем для примера следующий код:

#!/bin/bash
# Эта программа считает от 1 до 10:
for i in 1 2 3 4 5 6 7 8 9 10; do
echo $i
done

Даже если вы пока не понимаете скрипты на Bash, вы сразу же поймете, что делает приведенный выше пример, благодаря комментарию. Комментирование кода - хорошая практика. Со временем вы поймете, что, если вам нужно будет поддерживать ваши скрипты, то при наличии комментированного кода - делать это станет легче.

Переменные
Переменные это просто «контейнеры», которые содержат некоторые значения. Создавать их нужно по многим причинам. Вам нужно будет как-то сохранять вводимые пользователем данные, аргументы или числовые величины. Например:

#!/bin/bash
x=12
echo ”
Значение переменной x - $x”

Здесь мы присвоили переменной x значение 12. Строка echo “Значение переменной х - $x” напечатает текущее значение x. При определении переменной не допускается наличие каких-то пробелов между именем переменной и оператором присваивания: "=". Синтаксис следующий:
имя_переменной=ее_значение.
Обращение к переменным выполняется с помощью префикса "$" перед именем переменной. Именно таким образом мы получаем доступ к значению переменной х с помощью команды echo $x.
Есть два типа переменных - локальные и переменные окружения. Переменные окружения устанавливаются системой и имеют специальной назначение. Обычно их значение может быть выведено с помощью команды echo. Например, если ввести:

$ echo $SHELL
/bin/bash

Вы получили имя оболочки, запущенной в данный момент. Переменные среды задаются в файле /etc/profile и в ~/.bash_profile. Команда echo может применяться для проверки текущего значения переменной.

Примечание: задание переменных среды подробно описано в этой статье - "Как задавать переменные среды" . В статье также описаны некоторые особенности оболочки Bash.

Если вы все еще возникают проблемы с пониманием того зачем нужно использовать переменные, приведем пример:

#!/bin/bash
echo "Значение х - 12".
echo "У меня есть 12 карандашей".
echo "Он сказал мне, что значение х равно 12".
echo "Мне 12 лет."
echo "Как получилось, что значение х равно 12?
"

Хорошо, теперь предположим, что вы решите поменять значение х на 8 вместо 12. Что для этого нужно сделать? Вы должны изменить все строки кода, в которых говорится, что х равно 12. Но погодите... Есть другие строки кода, где упоминается это число, поэтому простую автозамену использовать не получится. Теперь приведем аналогичный пример, только с использованием переменных:

#!/bin/bash
x=12 #
задаем переменной х значение 12
echo "
Значение х = $х"
echo "У меня есть 12 карандашей"
echo "Он сказал мне, что значение х
равно $х"
echo "Мне 12 лет"
echo "Как получилось, что значение х равно $x?"

Здесь мы видим, что $x выводит текущее значение переменной х равное 12. Поэтому теперь, если вы хотите задать новое значение х равное 8, то все что вам нужно сделать, это изменить одну строчку с х=12 на х=8, и в выводе все строки с упоминанием x также изменяться. Поэтому вам не нужно руками модифицировать остальные строки. Как вы увидите позже, переменные имеют и другие способы применения.

Управляющие операторы
Управляющие операторы делают вашу программу компактнее и позволяют ей принимать решения. И, что еще более важно, они позволяют нам выполнять проверку на наличие ошибок. До сих пор все, что мы сделали, это писали скрипты, которые просто исполняют набор инструкций в файле. Например:

#!/bin/bash
cp /etc/foo .
echo ”
Готово

Это небольшой скрипт, назовем его bar.sh, копирует файл с именем /etc/foo в текущий каталог и выводит «Готово» на экране. Эта программа будет работать при одном условии - файл /etc/foo должен существовать. В противном случае вот что произойдет:
$./bar.sh
cp: /etc/foo: No such file or directory
Готово


Таким образом, как вы видите, есть проблема. Не у каждого, кто будет запускать вашу программу, будет файл /etc/foo. Наверное, было бы лучше, если б ваша программа сначала проверяла наличие данного файла, а затем при положительном ответе - выполняла бы копирование, в противном случае - просто бы завершала работу. В псевдо-коде это выглядит так:

если /etc/foo существует, то
скопировать /etc/
foo в текущую директорию
напечатать "Готово" на экране
в противном случае,
напечатать на экране "Этот файл не существует"
выход

Можно ли это сделать в Bash? Конечно! Набор управляющих операторов Bash включает в себя: if, while, until, for и case. Каждый из этих операторов является парным, то есть начинается он одним тегом и заканчивается другим. Например, если условный оператор if начинается с if и заканчивается fi. Управляющие операторы - это не отдельные программы в системе, они встроены в bash.

if … else … elif … fi
Это один из наиболее распространенных операторов. Он позволяет программе принимать решения следующим образом - «если условие верно - делаем одно, если нет - делаем что-то другое». Чтобы эффективно его использовать, сначала нужно научиться пользоваться командой test. Эта программа выполняет проверку условия (например, существует ли файл, есть ли необходимые права доступа). Вот переписанный вариант bar.sh :

#!/bin/bash
if test -f /etc/foo
then
# Файл существует, копируем его и печатаем сообщение на экране
cp /etc/foo .
echo "Готово".
else # Файл не существует, поэтому мы печатаем сообщение
# и завершаем работу
echo "Этот файл не существует."
exit
fi

Обратите внимание на отступы строки после then и else. Они не являются обязательными, но зато делают чтение кода гораздо более простым в том смысле, что делают логику программы более наглядной. Теперь запустите программу. Если у вас есть файл /etc/foo - он будет скопирован, в противном случае будет напечатано сообщение об ошибке. Команда test проверяет существование файла. Ключ -f проверяет, является ли аргумент обычным файлом. Ниже приведен список опций test (Не стоит пытаться запомнить их все, т.к. это все равно нереально. Его всегда можно посмотреть в руководстве команды test - man test. Прим. перев.):

Ключи команды test:
-d проверяет наличие файла и то, что он является каталогом
-e проверяет существование файла
-f проверяет наличие файла и то, что это обычный файл
-g проверяет наличие у файла SGID-бита
-r проверяет наличие файла и то, что он доступен на чтение
-s проверяет наличие файла и то, что его размер больше нуля
-u проверяет наличие у файла SUID-бита
-w проверяет наличие файла и то, что он доступен на запись
-x проверяет наличие файла и наличие у него прав на запуск

Оператор else используется, когда вы хотите, чтобы ваша программа еще что-то делала, если первое условие не выполняется. Существует также оператор elif, который может использоваться вместо еще одного if. elif означает "else if". Он используется, когда первое условие не выполняется, и вы хотите проверить еще одно условие.

Если вам не нравится приведенная форма записи if и test, есть сокращенный вариант.
Например, код:

if test -f /etc/foo
then

Можно записать вот так:
if [ -f /etc/foo ]; then

Квадратные скобки - это еще один вариант записи test. Если у вас есть опыт в программировании на C, этот синтаксис для вас может быть более удобным. Обратите внимание на наличие пробелов до и после каждой из скобок (Наличие пробелов объясняется просто: открывающая квадратная скобка - это команда оболочки. В этом можно легко убедиться набрав в консоли команду which [ . А раз это отдельная команда, то ее нужно отделить пробелами от остальных опций. - Прим. перев.). Точка с запятой: ";" говорит оболочке о завершении одного оператора и начале следующего. Все, что находится после этого символа будет работать так, как будто он находится на отдельной строке. Это делает код более удобным для чтения и, естественно, что такая запись необязательна. Если вы предпочитаете другой вариант записи - then можно сразу поместить в другой строке.
Если вы используете переменные - их нужно помещать в кавычки. Например:

if [ "$name" -eq 5 ]; then

оператор -eq будет объяснен далее в этой статье.

while … do … done
Оператор while используется для организации циклов. Он работает так «пока (while) условие истинно, делать что-то». Рассмотрим это на примере:

#!/bin/bash
while true; do
echo "Нажмите CTRL-C для выхода."
done

true - это тоже программа. Единственное, что она тут делает - это запускает тело цикла снова и снова. Использование true считается медленным, потому что ваш скрипт должен запускать ее раз за разом. Можно использовать альтернативный вариант:

#!/bin/bash
while :; do
echo "Нажмите CTRL-C для выхода."
done

Это позволяет добиться точно такого же эффекта, но быстрее, потому что «:» - это встроенная функция bash. Единственное отличие состоит в принесении в жертву читабельности кода. Используйте из приведенных вариантов тот, который вам нравится больше. Ниже приведен гораздо более полезный вариант использования переменных:

#!/bin/bash
x=0;
while [ "$x" -le 10 ]; do
echo "Текущее значение х: $ х"
# Увеличиваем значение х:
x=$(expr $x + 1)
sleep 1
done

Здесь мы используем для проверки состояния переменной x запись с квадратными скобками. Опция -le означает «меньше или равно (less or equal)». Говоря обычным языком приведенный код говорит: «пока (while) х меньше или равен 10, выводить на экран текущее значение х, после чего добавлять к текущему значению х единицу». Оператор sleep 1 приостанавливает выполнение программы на одну секунду.

Ниже приведен список возможных операций сравнения целых чисел (полный список приведен в man test. Прим. перев.):

x -eq y x = y (equal)
x -ne y x не равен y (not equal)
x -gt y x больше, либо равен y (greater than)
x -lt y x меньше, либо равен y (lesser than)

Операторы сравнения строк:
x = y строка x идентична y
x != y строка х не совпадает y
-n x выражение истинно, если строка х ненулевой длины
-z x выражение истинно, если строка х имеет нулевую длину

Скрипт, приведенный выше, нетрудно понять, за исключением, может быть, только этой строки:

x=$(expr $x + 1)

Комментарий приведенный выше он говорит нам, что он увеличивает х на 1. Но что означает запись $ (...)? Это переменная? Нет. На самом деле это способ сказать оболочке, что вы хотите запустить команду expr $x + 1, и присвоить результат ее выполнения - х. Любая команда, заключенная в $ (...) будет выполняться:

#!/bin/bash
me=$(whoami)
echo "Привет! Меня зовут $me"

Попробуйте сделать приведенный пример, и вы поймете, что я имею в виду. Приведенный выше код можно было бы сократить без каких-либо потерь вот так:

#!/bin/bash
echo "Привет! Меня зовут $(whoami)"

Вы сами можете выбрать, какая из записей вам ближе и понятнее. Существует и другой способ для выполнения команд или передачи результата их выполнения переменной. Как это сделать - будет объяснено позже. Пока используйте запись вида $(...).

until … do … done
Оператор until применяет способом аналогичным приведенному выше while. Разница лишь в том, что условие работает наоборот. Цикл while выполняет до тех пор пока условие истинно. Цикл until - до тех пор пока условие не станет истинным. Например:

#!/bin/bash
x=0
until [ "$x" -ge 10 ]; do
echo "Текущее значение х равно $ х"
x=$(expr $x + 1)
sleep 1
done

Эта часть кода выглядит знакомой. Попробуйте ее набрать и посмотреть, что он делает. Приведенный цикл будет работать, пока x не станет больше или равен 10. Когда величина x достигнет значения 10, цикл остановится. Таким образом, последнее значение напечатанное значение х будет 9.

for … in … do … done
Цикл for используется, когда вам надо перебрать несколько значений переменной. Например, вы можете написать небольшую программу, которая печатает 10 точек:

#!/bin/bash
echo -n "Проверка системы на наличие ошибок"
for dots in 1 2 3 4 5 6 7 8 9 10; do
echo -n "."
done
echo "Ошибок не обнаружено"

Опция -n команды echo предотвращает автоматический перевод строки. Попробуйте один раз вариант с -n и вариант без этой опции, чтобы понять, что я имею в виду. Переменная dots последовательно принимает значения от 1 до 10 и одновременно скрипт печатает на экране точку.
Приведенный дальше пример показывает, что я имею в виду под выражением «переменная последовательно принимает несколько значений»:

#!/bin/bash
for x in paper pencil pen; do
echo "значение переменной х равно $х"
sleep 1
done

При запуске программы, вы видите, что х сначала имеет значение «pencil», а затем она принимает значение «pen». Когда у переменной заканчивается список возможных значений, цикл завершается.
Ниже приведен гораздо более полезный пример. Этот скрипт добавляет расширение .html для всех файлов в текущей директории (Этот скрипт реально так поступает и вам возможно это не нужно. Поэтому все-таки создайте отдельного пользователя, если вы еще до сих пор этого не сделали, и экспериментируйте под ним. - Прим. перев.):

#!/bin/bash
for file in *; do
echo "Добавляем расширение .html для файла $file ..."
mv $file $file.html
sleep 1
done

Символ * имеет специальное значение, которое в данном случае означает "все в текущем каталоге", т.е. - все файлы в каталоге. Переменная file последовательно принимает значения, соответствующие именам файлов в текущем каталоге. Затем используется программа mv для переименования файла в файл с расширением .html:

case … in … esac
Оператор case очень похож на if. Он отлично подходит для тех случаев, когда нужно проверить несколько условий, и вы не хотите для этого использовать несколько вложенных операторов if. Поясним на примере:

#!/bin/bash
x=5 # инициализируем х значением 5
# проверяем значение х:
case $x in
0) echo "значение х равно 0"
;;
5) echo "значение х равно 5"
;;
9) echo "значение х равно 9"
;;
*) echo "значение неизвестно"
;;
esac

Оператор case проверяет переменную х на равенство трем значениям. В приведенном примере, он сначала проверит, равен ли х нулю 0, затем равен ли он 5, затем равен ли он 9. И, если все проверки завершились неудачно, скрипт выведет сообщение, что значение x определить не получилось. Помните, что «*» означает «все», и в этом случае, «любое другое значение, помимо указанных явно». Если х имеет любое другое значение, отличное от 0, 5 или 9, то это значение попадает во категорию «*». При использовании сase каждое условие должно заканчиваться двумя точками с запятой.
Зачем нужно использовать case, когда вы можно использовать if? Ниже приведен пример эквивалентного скрипта, написанного с использованием if. Решение о том, что быстрее написать и легче прочесть, предлагается принять самостоятельно ;) :

#!/bin/bash
x=5 # инициализируем х значением 5
if [ "$x" -eq 0 ]; then
echo "Значение х равно 0"
elif [ "$x" -eq 5 ]; then
echo "значение х равно 5"
elif [ "$x" -eq 9 ]; then
echo "значение х равно 9"
else
echo "Значение х определить не удалось"
fi

Использование кавычек
Кавычки играют важную роль в написании скриптов оболочки. Существует три типа кавычек. Это двойные кавычки: ", одинарные ' (апостроф) и обратные ` (находятся слева от клавиши 1. Прим. перев.). Имеет ли каждый из приведенных видов какое-то особое значение? Да.

Примечание: Статья Wildcards, Quotes, Back Quotes, Apostrophes in shell commands ( * ? [] ” ' ') прекрасно описывает использование специальных символов. Пожалуйста, ознакомьтесь с ней в случае, если вы не знакомы с использованием этих специальных символов в скриптах оболочки. Ниже приведено краткое объяснение использования некоторых из них.

Двойные кавычки используются главным образом для объединения нескольких слов в строку и сохранения в ней пробелов. Например, "Эта строка содержит пробелы". Строка, заключенная в двойные кавычки рассматривается как единое целое. Например:
$ mkdir hello world
$ ls -F
hello/ world/

Здесь мы создали две директории. Команда mkdir принимает два слова hello и world, как два отдельных аргумента, и поэтому создает два каталога. Теперь посмотрим, а что произойдет, если написать код таким образом:
$ mkdir “hello world”
$ ls -F
hello/ hello world/ world/

Команда создала каталог с именем из двух слов. Кавычки объединили два слова в один аргумент.
(Главным образом, дело в том, что bash воспринимает пробел как разделитель всего, что только можно - опций, аргументов, отдельных команд. Внутри двойных кавычек пробел теряет свое специальное значение. - Прим. перев.).

Одинарные кавычки в основном используются для работы с переменными. Если переменная находится в двойных кавычках, то к ней можно обратиться через $имя_переменной.Если переменная находится в одинарных кавычках - это не возможно. Чтобы пояснить это приведем пример:

#!/bin/bash
x=5 # задаем х равным 5
# используем двойные кавычки
echo "Используем двойные кавычки, значение х равно $х"
# используем одинарные кавычки
echo 'Используем одинарные кавычки, значение х равно $х'

Почувствовали разницу? Вы можете использовать двойные кавычки, если вы не планируете использовать переменные для строки, которая в них находится. И да, если вам интересно, прямые кавычки также можно использовать для сохранения пробелов в строке тем же способом, что и двойные кавычки

$ mkdir 'hello world'
$ ls -F
hello world/

Обратные кавычки сильно отличаются от двойных и одинарных. Они не могут использоваться для сохранения пробелов. Если вы помните, выше мы использовали такую строку:

x=$(expr $x + 1)

Как вы уже знаете, результатом работы этой команды будет то, что выражение $х + 1 присваивается переменной x. Того же результата можно достичь и с использованием обратных кавычек:

x='expr $x + 1′

Какой тип кавычек лучше использовать? Тот, что вам больше нравится. Изучая скрипты вы найдете, что обратные кавычки используются чаще, чем запись $(...) . Тем не менее, я считаю, $ (...) легче читать, особенно если у вас код наподобие этого:
#!/bin/bash
echo “I am 'whoami'”

(На мой взгляд, лучше использовать именно запись типа $(...), потому что запись в обратных кавычках и одинарных можно легко перепутать при наборе кода и при его чтении. - Прим. перев.)

Это только начало. Вы узнаете еще много чего интересного в заключительной части этой статьи. А пока вы ее ждете - удачного вам написания скриптов...

О системах дополненной реальности

Дополненная реальности или Система дополненной реальности (augmented reality (AR)) – технология, которая к поступающим из реальности объектам добавляет виртуальные. Чаще всего это справочная информация. Не стоит путать дополненную реальность и виртуальную реальность, потому как в последней, моделируется искусственный мир целиком, тогда как в дополненной реальности идет лишь некоторых искусственных объектов к уже реальному изображению.

Ниже представлено изображение из игры по известному фильму Терминатор. Как видно к реальному изображению добавляются различные графики и справочная информация.



Можно смело сказать, что дополненная реальность это новый доступ к данным об объектах! Дополненная реальность уже давно вошла в повседневную жизнь. Любители хоккея, футбола или формулы-1 уже видели ее на экранах телевизоров. В хоккее и футболе это траектория шайбы или мяча, в формуле один это статистика и состояние болида во время его движения и т.д. Так же это ее можно было наблюдать в кинофильме Терминатор, когда показывали вид из глаз главного героя, а возле каждого человека подсвечивались его характеристики.

Первым исследователем дополненной реальности можно считать Айвэна Сазерленда (Ivan Sutherland), который построил работающий прототип системы в 1967 году. Он использовал стереоочки Sword of Damocles для показа трехмерной графики. Изображение в них проецировалось на два полупрозрачных стеклянных мини-дисплея с напылением серебра. Любопытное название происходит от способа крепления устройства — на потолке, что контрастировало с наименованием класса такого рода оборудования: Head-Mounted Display. Впервые система была использована в проекте, выполненном в 1968 г. для Bell Helicopter Company, в котором стереоочки работали в паре с инфракрасной камерой, находящейся под днищем вертолета. Камера управлялась движением головы пилота. Так родилось понятие «дополненной реальности».


Айвен Сазерленд / Ivan Sutherland


Современный этап исследований начался в 1990 году, когда исследователи фирмы Boeing решили использовать наголовные стереодисплеи при сборке и обслуживании самолётов, накладывая интерактивную графику на изображения реального мира.



Система базируется на использовании изображений, получаемых от двух камер. Одна камера снимает изображение дороги, по которой двигается транспортное средство, вторая камера наблюдает собственно за глазами водителя, отслеживая направление его взгляда. Используя эти данные в совокупности с изображениями, получаемыми от камер наблюдения за дорогами, компьютер совмещает данные, делая препятствия полупрозрачными. После этого синтезированное изображение проецируется на лобовое стекло автомобиля и позволяет водителю видеть объекты, скрытые от него препятствиями и избежать возникновения опасных ситуаций. Используемое программное обеспечение разработано таким образом, что изображения, получаемые от дорожных камер, поворачиваются и растягиваются таким образом, чтобы обеспечить вид с места расположения водителя.

Одним из наиболее известных исследователей в этой области сегодня является Рональд Азума (Ronald Azuma) из HRL (Hughes Research Laboratories) Laboratories. В 1997 г. он опубликовал большую обзорную статью «A Survey of Augmented Reality», где впервые были ясно очерчены проблемы и возможности, связанные с внедрением этой технологической концепции. С 1999 г. ведет свою историю регулярно проводимая конференция IEEE, ACM and Eurographics International Symposium on Mixed and Augmented Reality (ISMAR). Наиболее успешные и известные организации, специализирующиеся на дополненной реальностью, располагаются в Японии — Mixed Reality Systems Lab — и Германии — консорциум Arvika.

Рональд Т. Азума (Ronald T. Azuma) определяет AR как систему, которая:
1. Совмещает виртуальное и реальное
2. Взаимодействует в реальном времени
3. Работает в 3D

При появлении интернета, глобальная сеть настолько прочно вошла в нашу жизнь, что сейчас мало кто представляет себе, как можно искать какую-то информацию без доступа в Интернет. Прибегнув к помощи поисковых систем, пользователь сокращает время на поиски нужной ему информации в несколько раз. Исследователи системы дополненной реальности убеждены, что данная система ускорит поиск информации еще больше. Когда пользователю понадобиться найти хорошую кофейню, ему тут перед глазами появится список заведений с отзывами посетителей и различными характеристиками. Рольф Хайнич, автор книги о дополненной реальности "The End of Hardware", называет новую технологию способом создания "гиперссылок в реальном мире".

Одной из самых важных характеристик способ, которым осуществляется трансформация места, где происходит взаимодействие. В интерактивной системе важно не просто точно определить местоположение, но и распознать окружение. Взаимодействие — это не просто считывание информации с экрана, это осознание и позиционирование себя в окружающем пространстве.

Стоит отметить три основные составляющие персональной системы дополненной реальности это:
1. носимый компьютер
2. средства позиционирования
3. средства отображения

Самым главным препятствием развития системы дополненной реальности была неспособность мобильных ПК быстро обрабатывать трехмерную информацию. Устройства GPS-подобных систем не решают проблему, т.к. их погрешность не даст возможность совмещать названия и подписи с реальными объектами.



Поскольку основной задачей дополненной реальности является синтез реальных и виртуальных объектов в пространстве, то возникает необходимость в предварительной оцифровке данных об окружающем пространстве. Регистрирование геометрических пространственных характеристик небольших помещений сегодня уже стало нормой жизни для широкого круга специалистов. Все оказывается гораздо сложнее, когда речь заходит об открытых пространствах: как взаимно расположены виртуальные и реальные предметы, какой из них находится на первом плане? Работа здесь ведется по двум направлениям: съемка «карты глубин» (т.н. depth sensing) в реальном масштабе времени и предварительный сбор информации о местности.

Технология дополненной реальности может быть применена в абсолютно любой области. В игровой индустрии:
Несколько лет назад широкую известность приобрёл исследовательский проект Университета Южной Австралии ARQuake. Как ясно из названия, эта разработка позволяет играть в Quake в физическом пространстве, т.е. вместо мрачных коридоров — территория университетского кампуса, с размещёнными по ней монстрами, оружием, аптечками и так далее.



Игра использует модифицированную версию GPS-датчика, гибридный магнитно-инерционный сенсор для определения положения в пространстве, специальный «оружейный» контроллер, и стандартный ноутбук, который носится в рюкзаке.



Американская "Система имитации боевых условий методом компьютерной симуляции" (BARS) есть не что иное, как дополненная реальность на службе армии. BARS использует ту же концепцию, что и ARQuake, но делает это гораздо более практичным способом, помогая солдатам эффективнее действовать при столкновениях с противником в сложных городских условиях. Если, находясь в опасном районе, вы решите остановиться и посмотреть на карту, тогда будете представлять собой неподвижную мишень. Но если на вас надет виртуальный шлем с поддержкой BARS, тогда карта просто появится перед вашими глазами, а благодаря алгоритмам прогнозирования расположения врага (использующим данные о его предыдущих перемещениях) вы даже сможете получить подсказку о том, куда лучше не совать нос. Эта система была опробована в Ираке и еще далека от совершенства, но через три года ее использование войдет у американских солдат в привычку.




Еще один очень яркий пример использования системы дополненной реальности - это виртуальный макияж. В основу работы интерфейса этой системы легли принципы дополненной реальности: девушка садится напротив камеры, компьютер сканирует ее лицо, определяет тип и цвет кожи, тип лица и прочие нюансы, впоследствии на основе этих данных система предлагает несколько косметических продуктов. Причем каждый из этих продуктов можно «примерить» прямо на экране.






И в завершении хочется показать презентацию Augmented Reality от фирмы ALSTOM:










И от нашего отечественного разработчика, фирмы EligoVision. Проект "Зеленая машина времени"