<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ApB</id>
		<title>Linuxformat - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ApB"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Contributions/ApB"/>
		<updated>2026-05-13T22:40:17Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Mono</id>
		<title>LXF95:Mono</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Mono"/>
				<updated>2008-04-20T16:32:13Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Едва вы начинаете делать что-нибудь интересное, XML сразу же становится медленным и громоздким, и '''Пол Хадсон''' думает, что пора взяться за работу с базами данных...'' &lt;br /&gt;
=== Mono-Мания ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Программирование на современной платформе для новичков Mono-Мания Программирование на современной платформе для новичков Поскольку это — последний номер, который попадет к редакто- ру Ребекке, скажу не таясь: пишет она уж больно мелко. Когда мы возвращаемся из отпуска, на наших столах нас ждут ков- ры из желтых листков-наклеек для заметок, покрытых неразборчивыми каракулями. На вид сущая грязь, пока вы не вооружитесь лупой и не раз- глядите ее аккуратный почерк. Конечно, потом начинается надсадная для глаз работа – читать все эти записки, а ведь можно было обойтись всего лишь SQL-запросом, в стиле SELECT Значимое FROM ЗапискиРебекки Наш эксперт WHERE Приоритетность!=Не относится к делу. Увы, все попытки заставить Ребекку взаимодействовать через базу данных потерпели крах, и теперь она ищет другую работу. Но вы-то все еще здесь, верно? Значит, у меня есть время, чтобы подсадить вас на SQL, прежде чем вы заскучаете от Mono и перейдете к разделу Hardcore Linux!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На этом уроке мы напишем небольшой инструмент, способный следить за всеми Mono-программами, которые вы создали на протяжении всей нашей серии. Каждые десять секунд программа будет опрашивать Mono о списке всех активных приложений, а затем сохранять этот список в базе данных. Мы получим шанс изучить два новых аспекта Mono: чтение информации о процессах и доступ к базе данных. Этот проект – еще одна звездочка вам на погоны! Как и для всех наших Monoпроектов, потребуется среда исполнения .NET 2.0; убедитесь, что вы ее включили, через диалог Project &amp;gt; Options &amp;gt; Runtime Options.&lt;br /&gt;
=== Чтение процессов ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Начните новый консольный проект в MonoDevelop и дайте ему имя Monocular. Первым делом надо прочесть список всех процессов, работающих в Mono, и вывести информацию на экран. Решить эту задачу довольно просто, благодаря пространству имен System.Diagnostics, которое дает доступ к россыпям внутренней системной информации. &lt;br /&gt;
Нас интересует класс Process, позволяющий читать информацию о запущенной программе. Помните, что «программа» – это исполняемый код на диске (например, Vim), а «процесс» – экземпляр программы, который в данный момент работает. То есть если вы запустите Vim шесть раз, в оперативной памяти будет шесть процессов Vim, но программ от этого не прибавится.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Добавьте using System.Diagnostics в начале файла Main.cs, затем замените стандартную строку Hello World на следующее:&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Наш эксперт ...|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Пол Хадсон полагает, что Mono – лучшая вещь со времен мультфильма Pinky and the Brain, и сейчас поддерживает два проекта на основе Mono на SourceForge.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
 &lt;br /&gt;
 Process[] proclist = Process.GetProcesses();&lt;br /&gt;
 foreach(Process proc in proclist) {&lt;br /&gt;
 Console.WriteLine(proc.ProcessName);&lt;br /&gt;
 } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Для работы этого достаточно, поэтому нажимайте F5 и смотрите на вывод панели Application Output. Вы увидите что-то вроде ‘Monocular, MonoDevelop, mdhost, mdhost, MonoDevelop…’, а также все прочие запущенные Mono-программы – Beagle, Tomboy, F-Spot и так далее. Если у вас сравнительно новая версия MonoDevelop (Fedora Core 6 или выше), будет доступно автоматическое завершение кода – вы это заметите, если нажмете . (точку) после proc: появится обширный набор свойств, которые можно узнать о процессе. Как именно поддерживаются эти свойства, зависит от версии Mono – полюбопытствуйте, что предоставляет ваша!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Внимание: поддержка процессов улучшается с каждым релизом Mono – последние дистрибутивы по умолчанию включают Mono 1.2.3, а моя версия, из Fedora Core 6, уже приотстала. &lt;br /&gt;
=== Знамение времени ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Следующая часть нашего проекта – задействовать таймеры, так как нам нужно выполнять периодическую проверку запущенных процессов. Можете написать следующий код: &lt;br /&gt;
 while(1){&lt;br /&gt;
 if (прошло достаточно времени){&lt;br /&gt;
 делай_работу();&lt;br /&gt;
 }&lt;br /&gt;
 } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;...но это капитальная глупость: ваше приложение будет тупо съедать процессорное время без особой пользы. Гораздо лучшее решение – применить таймер: он позволит вашему приложению уснуть на заданное время, а затем вызовет определенный вами метод.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Метод, который мы будем использовать, называется TimesUp(). Чтобы мы смогли подключить его к таймеру, он должен принимать определенный список параметров. Создайте следующий метод:&amp;lt;br&amp;gt;&lt;br /&gt;
 static void TimesUp(object sender, ElapsedEventArgs e){&lt;br /&gt;
 &lt;br /&gt;
 } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь перенесите код из Main() в TimesUp(), потому что мы хотим вызывать его, когда наш таймер сработает. В начале файла напишите следующие строки using: &lt;br /&gt;
 using System.Threading;&lt;br /&gt;
 using System.Timers; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы ваша программа вызывала код каждые 10 секунд, создайте новый таймер и укажите ему метод TimesUp(): &lt;br /&gt;
 System.Timers.Timer timer = new System.Timers.Timer();&lt;br /&gt;
 timer.Interval = 10000;&lt;br /&gt;
 timer.Enabled = true;&lt;br /&gt;
 timer.Elapsed += new ElapsedEventHandler(TimesUp); &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Не пытайтесь запустить код в MonoDevelop! Когда вы работаете с потоками, а с таймером так дело и обстоит, MonoDevelop обычно некорректно останавливает программу в режиме отладки; поэтому лучше запустить ее из консоли.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;При запуске не произойдет никакого вывода на экран. С чего бы это? Мы возвращаемся к проблеме с потоками, рассмотренной в прошлый раз: программа достигает конца Main() и завершает работу до того, как таймер сработает. Решение состоит в приказании главному потоку (он-то и исполняет Main()) уснуть, посредством метода Thread. Sleep(). Метод позволяет задать число миллисекунд, на которые поток впадет в спячку, или же указать Timeout.Infinite, если вы хотите, чтобы поток уснул навеки. Последняя опция нам и нужна – пусть главный поток спит, а таймер будет вкалывать. В конце Main() добавьте строку: &lt;br /&gt;
 Thread.Sleep(Timeout.Infinite); &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь при запуске программы она будет честно раз в 10 секунд выводить список процессов. Прежде чем продолжать, сделаем еще коечто: добавьте такую строку перед вызовом Thread.Sleep(): &lt;br /&gt;
 TimesUp(null, null); &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Предоставляю вашему воображению – и тестированию! – догадаться, что она делает.&lt;br /&gt;
&lt;br /&gt;
=== Создание базы данных в Mono ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Информацию о процессах мы получили; надо ее куда-то положить. Базы данных бывают двух типов: клиент-серверные, когда данные хранятся где-то на сервере; и встроенные, когда есть локальный файл, напрямую управляемый из программы. Клиент-серверных баз данных полным-полно – MySQL, PostgreSQL, Oracle и другие соревнуются за место под солнцем. Но среди встроенных, одна из баз заслуживает большего внимания – это SQLite. SQLite хороша по нескольким причинам: ее код является достоянием общественности и вы можете делать с ним все, что хотите; у нее есть продвинутые возможности – поддержка Unicode, транзакций и, конечно, SQL-запросов; она также очень быстрая. Используя SQLite в Mono, можно считывать и записывать файл базы данных прямо из C#.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Слишком хорошо для этого мира? Да нет, загвоздка имеется: с базами данных не так легко работать через Mono. Если вы следовали инструкциям по установке в нашем первом выпуске ([[LXF87]]/[[LXF88]]), то уже разрешили зависимости Mono для SQLite; если нет, то я включил DLL-файл на диск, и вы можете его скопировать в папку с программой. В любом случае надо сделать ссылку на Mono.Data.SqliteClient. Есть небольшая разница между версией, входящей в Mono, и DLL – я постарался ее минимизировать, но если вы используете DLL, то вам понадобятся большие буквы в некоторых именах классов (т.е. SQLiteConnection вместо SqliteConnection).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В любом случае, SQLite использует для хранения данных обычный файл, так что первым шагом будет его создание. Добавьте следующие строки в начало вашего файла: &lt;br /&gt;
 using Mono.Data.SqliteClient;&lt;br /&gt;
 using System.IO; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы используете DLL и обнаружили, что Mono.Data.SqliteClient не существует, попытаетесь набрать Mono.Data. и выбрать верное название сборки из предложенного списка опций.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Создание базы данных осуществляется с помощью метода File. Create(), но фактически базу надо создать только один раз – если файл уже существует, незачем пересоздавать его. Поэтому предусмотрим проверку: первый раз запускается программа или нет, а также заведем место для хранения информации о соединении с нашей базой данных SQLite. Добавьте следующие две строки под class Monocular {: &lt;br /&gt;
 static bool FirstTime = false;&lt;br /&gt;
 static SqliteConnection Conn; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь подправим Main(), чтобы он автоматически создавал базу при первом запуске приложения, а затем спокойно к ней подсоединялся: &lt;br /&gt;
 if (!File.Exists(“monocular.db”))}&lt;br /&gt;
 Firsttime=true;&lt;br /&gt;
 File.Create(“monocular.db”);&lt;br /&gt;
 }&lt;br /&gt;
 Conn =new SqliteConnection(“URL=file:monocular.db”);&lt;br /&gt;
 Conn.Open(); &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Итак, файл для хранения ваших данных создан. Чтобы SQLite могла писать в него данные, надо еще создать таблицы, определяющие сохраняемые поля. Все команды SQLite выполняются через объекты SqliteCommand. Новая непонятка? А вы продолжайте читать. Эти SqliteCommand-объекты уникальны в Mono: несмотря на потуги программистов – разработчиков .NET-коннектора, они не убирают за собой. Если в Mono вы выделяете память под объект, то вам не надо заботиться о ее освобождении – сборщик мусора Mono автоматически сделает это за вас. SQLite иногда выделяет память, которая впоследствии автоматически не освобождается, и вам придется помнить об этом самим. &lt;br /&gt;
В данный момент вам надо создать объект типа команда, настроив его таким образом, чтоб он создавал таблицу для хранения информации о процессах; затем выполнить команду. Вот как это выглядит на С#: &lt;br /&gt;
 SqliteCommand dbcmd = Conn.CreateCommand();&lt;br /&gt;
 if (FirstTime) { &lt;br /&gt;
 dbcmd.CommandText = “CREATE TABLE processes&lt;br /&gt;
 (DateStamp TEXT, Name TEXT, Id INTEGER);”;&lt;br /&gt;
 dbcmd.ExecuteNonQuery();&lt;br /&gt;
 } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы изучали SQL раньше, то удивитесь, почему поля отмечены как TEXT и INTEGER, а не более научно, как VARCHAR(255). Дело в том, что SQLite не содержит таких четких определений. Поля хранятся либо как числа, либо как текст. Если же вы не изучали SQL, то кусок кода выше создает таблицу для хранения полей DateStamp, Name и Id – мы будем использовать их для хранения даты каждого чтения, имени запущенного процесса и его идентификатора.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вообще-то ExecuteNonQuery() – не самое умное имя: Q в аббревиатуре SQL означает Query – Запрос, то есть каждое предложение SQL является запросом. Ну, а ExecuteNonQuery() означает, что вы хотите заставить SQLite сделать что-то, но результаты запроса вас не интересуют.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;После создания таблицы необходимо очистить память, выделенную командой, следующим образом: &lt;br /&gt;
 dbcmd.Dispose(); dbcmd=null; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы, возможно, удивитесь, почему эти две строки кода не входят в блок if – а потому, что мы попозже добавим еще код! В любом случае, хотя код компилируется и запускается, проку от него мало – ничего интересного он не делает.&lt;br /&gt;
&lt;br /&gt;
=== Время писать! ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;ОК, у вас есть таймер, у вас есть список процессов, а теперь еще и доступ к базе данных – налицо весь инструментарий для создания всего проекта. Единственное, чего мы не умеем –писать в базу данных, но тут имеются осложнения. Противно то, что дело это нехитрое, но в наш отдел писем недавно поступила жалоба на мой «непонятный» стиль изложения. А я решил привести оптимальный способ создания записей в базе данных – оптимальный с точки зрения производительности, а не с точки зрения обучения. Кто не согласен, пишите мне, и мы сменим акценты. Так, отвел душу – и хватит; вернемся к базе данных! Есть две вещи, которые необходимо знать, прежде чем приступать к записи в базу SQLite: 1 SQLite использует транзакции для обеспечения целостности данных. То есть, когда вы пишете строку данных, то запускается транзакция, записываются данные, и транзакция завершается. Если вдруг ваша машина откажет во время записи транзакции, то SQLite ее откатит. Это очень хорошо. &lt;br /&gt;
2 SQLite кэширует запросы для ускорения работы. Первый пункт очень важен, так как мы собираемся писать за раз сразу несколько строк. Если у вас работает 10 Mono-приложений, будем писать 10 строк – по одной для каждой программы. Процесс в SQLite будет выглядеть следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Начать транзакцию &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Записать строку &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;3.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Закончить строку &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;4.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Начать транзакцию &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;5.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Записать строку &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;6.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Закончить транзакцию… и так далее.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Слабости Mono|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Да, я вовсю расхваливал Mono, но теперь вы в состоянии заметить и недостатки – там, где Mono не так хорош, как официальная реализация Microsoft .NET; но это только пока. Во-первых, при работе в официальной .NET- среде эта программа снабдит вас данными обо всех работающих программах, .NET или других. Во-вторых, официальная среда поставляет информацию о том, сколько памяти использует каждый процесс. В-третьих, официальная среда содержит глобальные счетчики производительности, измеряющие использование CPU, объем свободной глобальной памяти и т.д. Каждый из этих пунктов сделал бы нашу программу куда полезнее, но на беду, Mono не имеет ни одной из перечисленных возможностей – что, конечно, вредит программе этого месяца!|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Это очень медленно, но необходимо, так как SQLite требует, чтобы каждая команда записи была частью транзакции. Той же цели можно достичь, если велеть SQLite начать транзакцию, записать все строки сразу же, затем закончить транзакцию самим: &lt;br /&gt;
 1 2 3 4 5 6 Начать транзакцию &lt;br /&gt;
 Записать строку &lt;br /&gt;
 Записать строку &lt;br /&gt;
 Записать строку &lt;br /&gt;
 ... &lt;br /&gt;
 Закончить транзакцию. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Такой способ работает много быстрее, и он также более надежен: если наш компьютер откажет (или же другое несчастье прервет работу SQLite), то у нас не будет недоделанных записей – у нас будут либо все записи, либо ничего.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Второй пункт важен потому, что подобные запросы очень просто писать: &lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
 $query = “SELECT Foo FROM Bar WHERE Baz = “+i; ... { &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Выполнится 10 различных запросов к SQLite. Лучше использовать приготовленные заранее запросы и сообщать SQLite максимум информации о запросе, помечая заменяемые части вопросительными знаками. &lt;br /&gt;
Из примера все будет ясно, поэтому углубимся в код. Пока что TimesUp() у нас распечатывал информацию; а надо заточить его на запись в базу данных. Вот как TimesUp() должен выглядеть: &lt;br /&gt;
 static void TimesUp(object sender, ElapsedEventArgs e) {&lt;br /&gt;
 Process[] proclist = Process.GetProcesses();&lt;br /&gt;
 SqliteTransaction transaction = (SqliteTransaction)Conn.&lt;br /&gt;
 BeginTransaction();&lt;br /&gt;
 dbcmd = Conn.CreateCommand();&lt;br /&gt;
 dbcmd.CommandText = “INSERT INTO processes VALUES (?,?, ?);”;&lt;br /&gt;
 SqliteParameter date = new SqliteParameter();&lt;br /&gt;
 SqliteParameter name = new SqliteParameter();&lt;br /&gt;
 SqliteParameter id = new SqliteParameter();&lt;br /&gt;
 date.Value = DateTime.Now.ToLongTimeString();&lt;br /&gt;
 dbcmd.Parameters.Add(date);&lt;br /&gt;
 dbcmd.Parameters.Add(name);&lt;br /&gt;
 dbcmd.Parameters.Add(id);&lt;br /&gt;
 foreach(Process proc in proclist) { &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Это еще не вся функция, но я хочу притормозить и взглянуть на подготовленные запросы в действии. Запрос, который мы используем, передает вместо знаков вопроса информацию о процессе, так как только эта часть будет изменяться. Однако параметр date изменяется только один раз за время выполнения TimesUp(), поэтому его можно назначить сразу. Другие параметры просто оставляются как пустые объекты SqliteParameter, чтобы потом заполнять их отдельно для каждого процесса. Знаю, что это тривиально, но ради ясности ситуации скажу: необходимо вызывать dbcmd.Paramters.Add() для каждого параметра SQL-запроса, в порядке их появления в запросе.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ладно, продолжим с того места, на котором остановились... &lt;br /&gt;
 foreach(Process proc in proclist) {&lt;br /&gt;
 name.Value = proc.processName;&lt;br /&gt;
 id.Value = proc.Id;&lt;br /&gt;
 dbcmd.ExecuteNonQuery();&lt;br /&gt;
 }&lt;br /&gt;
 dbcmd.Dispose();&lt;br /&gt;
 dbcmd = null;&lt;br /&gt;
 transaction.Commit(); } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Действительно, все, что меняется между вызовами ExecuteNonQuery() – это значения двух подставляемых параметров, поэтому SQLite может использовать кэшированные запросы для получения наивысшей производительности. Последнее выражение в коде особенно важно: пока транзакция не зафиксирована, никаких записей внесено не будет – не забудьте вызывать Commit(), если, конечно, вы не любитель охоты за странными ошибками! Написано тут много, но смотреть все равно не на что, кроме как на медленное разрастание файла monocular.db. Но скоро все пойдет по-другому...&amp;lt;br&amp;gt;&lt;br /&gt;
=== К чтению готовы! ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Последнее, что нам предстоит сделать – это считать всю информацию из базы данных, так что вернемся к методу Main() и проделаем коекакие изменения. Если пользователь запускает Monocular без параметров, то она будет бесконечно работать в фоновом режиме, считывая информацию каждые 10 секунд и записывая ее в базу данных. Но если ей предоставить параметр – любой параметр – Monocular будет выводить всю хранимую информацию. На DVD я поместил код, позволяющий выполнять сортировку по имени процессов или по идентификатору, но ради экономии места мы пока проигнорируем его значение. Сейчас нам важен параметр как таковой — он будет сигнализировать о том, что пользователю нужен режим чтения.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок= Скорая помощь|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;На смену Fedora Core 6 пришла Fedora 7, а значит, у нас есть возможность поиграть с новой версией Mono. Со следующего выпуска мы будем ориентироваться на Mono 1.2.3. Обновляйтесь!|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В отличие от предыдущих запросов, теперь вам действительно потребуются данные – результаты SQL-запроса; добудем их с помощью специального объекта SQLiteDataReader: &lt;br /&gt;
 string currenttime = “”;&lt;br /&gt;
 // this loops over all the rows returned by the query&lt;br /&gt;
 while (reader.Read()) {&lt;br /&gt;
 string datestamp = reader.GetString(0);&lt;br /&gt;
 string name = reader.GetString(1);&lt;br /&gt;
 int id = reader.GetInt32(2);&lt;br /&gt;
 // we’ll put some more code in here shortly&lt;br /&gt;
 Console.WriteLine(“ {0}\1{1}\2”, id, name);&lt;br /&gt;
 }&lt;br /&gt;
 reader.Close(); &lt;br /&gt;
 reader = null; } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;GetString() и GetInt32() оба принимают один параметр: какое поле вы хотите считать. То есть GetString(0) считывает первое поле (DateStamp), GetString(1) считывает второе поле, и так далее. Как и с командами, вам надо на всякий случай освободить память, выделенную для считывателей, так как SQLite может этого не сделать. &lt;br /&gt;
Данный код выводит хранимую в таблице информацию обо всех процессах, но игнорирует поле даты. Это потому, что я хочу внести немного разнообразия: буду выводить каждый временной штамп при его изменении, тогда наш вывод будет разделяться чем-то вроде заголовков. Вы заметили пустую переменную currenttime. В нее мы занесем дату первой строки, считываемой из таблицы. Если в последующей строке окажется отличное от currenttime время, то выведется новый заголовок для нового времени, и это значение запишется в currenttime. На C# получится следующее: &lt;br /&gt;
 if (datestamp != currenttime) {&lt;br /&gt;
 Console.WriteLine(“”);&lt;br /&gt;
 Console.WriteLine(“Readings from “ + datestamp);&lt;br /&gt;
 Console.WriteLine(“ PID\tName”); currenttime = datestamp; } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вот и все – проект завершен! Я знаю, он не так полезен, как остальные проекты, но у нас связаны руки, так как в Mono отсутствуют некоторые интересные возможности официальной реализации Microsoft. Не горюйте: работа над добавлением недостающих возможностей в Mono ведется постоянно. А пока вы можете много чего еще добавить в эту программу: например, возможность старта и остановки программы, определения периодов наибольшей загрузки системы и так далее. Творите! ''LXF''&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Mono</id>
		<title>LXF95:Mono</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Mono"/>
				<updated>2008-04-20T16:27:52Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Едва вы начинаете делать что-нибудь интересное, XML сразу же становитс...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Едва вы начинаете делать что-нибудь интересное, XML сразу же становится медленным и громоздким, и '''Пол Хадсон''' думает, что пора взяться за работу с базами данных...'' &lt;br /&gt;
=== Mono-Мания ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Программирование на современной платформе для новичков Mono-Мания Программирование на современной платформе для новичков Поскольку это — последний номер, который попадет к редакто- ру Ребекке, скажу не таясь: пишет она уж больно мелко. Когда мы возвращаемся из отпуска, на наших столах нас ждут ков- ры из желтых листков-наклеек для заметок, покрытых неразборчивыми каракулями. На вид сущая грязь, пока вы не вооружитесь лупой и не раз- глядите ее аккуратный почерк. Конечно, потом начинается надсадная для глаз работа – читать все эти записки, а ведь можно было обойтись всего лишь SQL-запросом, в стиле SELECT Значимое FROM ЗапискиРебекки Наш эксперт WHERE Приоритетность!=Не относится к делу. Увы, все попытки заставить Ребекку взаимодействовать через базу данных потерпели крах, и теперь она ищет другую работу. Но вы-то все еще здесь, верно? Значит, у меня есть время, чтобы подсадить вас на SQL, прежде чем вы заскучаете от Mono и перейдете к разделу Hardcore Linux!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На этом уроке мы напишем небольшой инструмент, способный следить за всеми Mono-программами, которые вы создали на протяжении всей нашей серии. Каждые десять секунд программа будет опрашивать Mono о списке всех активных приложений, а затем сохранять этот список в базе данных. Мы получим шанс изучить два новых аспекта Mono: чтение информации о процессах и доступ к базе данных. Этот проект – еще одна звездочка вам на погоны! Как и для всех наших Monoпроектов, потребуется среда исполнения .NET 2.0; убедитесь, что вы ее включили, через диалог Project &amp;gt; Options &amp;gt; Runtime Options.&lt;br /&gt;
=== Чтение процессов ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Начните новый консольный проект в MonoDevelop и дайте ему имя Monocular. Первым делом надо прочесть список всех процессов, работающих в Mono, и вывести информацию на экран. Решить эту задачу довольно просто, благодаря пространству имен System.Diagnostics, которое дает доступ к россыпям внутренней системной информации. &lt;br /&gt;
Нас интересует класс Process, позволяющий читать информацию о запущенной программе. Помните, что «программа» – это исполняемый код на диске (например, Vim), а «процесс» – экземпляр программы, который в данный момент работает. То есть если вы запустите Vim шесть раз, в оперативной памяти будет шесть процессов Vim, но программ от этого не прибавится.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Добавьте using System.Diagnostics в начале файла Main.cs, затем замените стандартную строку Hello World на следующее:&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Наш эксперт ...|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Пол Хадсон полагает, что Mono – лучшая вещь со времен мультфильма Pinky and the Brain, и сейчас поддерживает два проекта на основе Mono на SourceForge.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
 &lt;br /&gt;
 Process[] proclist = Process.GetProcesses();&lt;br /&gt;
 foreach(Process proc in proclist) {&lt;br /&gt;
 Console.WriteLine(proc.ProcessName);&lt;br /&gt;
 } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Для работы этого достаточно, поэтому нажимайте F5 и смотрите на вывод панели Application Output. Вы увидите что-то вроде ‘Monocular, MonoDevelop, mdhost, mdhost, MonoDevelop…’, а также все прочие запущенные Mono-программы – Beagle, Tomboy, F-Spot и так далее. Если у вас сравнительно новая версия MonoDevelop (Fedora Core 6 или выше), будет доступно автоматическое завершение кода – вы это заметите, если нажмете . (точку) после proc: появится обширный набор свойств, которые можно узнать о процессе. Как именно поддерживаются эти свойства, зависит от версии Mono – полюбопытствуйте, что предоставляет ваша!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Внимание: поддержка процессов улучшается с каждым релизом Mono – последние дистрибутивы по умолчанию включают Mono 1.2.3, а моя версия, из Fedora Core 6, уже приотстала. &lt;br /&gt;
=== Знамение времени ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Следующая часть нашего проекта – задействовать таймеры, так как нам нужно выполнять периодическую проверку запущенных процессов. Можете написать следующий код: &lt;br /&gt;
 while(1){&lt;br /&gt;
 if (прошло достаточно времени){&lt;br /&gt;
 делай_работу();&lt;br /&gt;
 }&lt;br /&gt;
 } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;...но это капитальная глупость: ваше приложение будет тупо съедать процессорное время без особой пользы. Гораздо лучшее решение – применить таймер: он позволит вашему приложению уснуть на заданное время, а затем вызовет определенный вами метод.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Метод, который мы будем использовать, называется TimesUp(). Чтобы мы смогли подключить его к таймеру, он должен принимать определенный список параметров. Создайте следующий метод:&amp;lt;br&amp;gt;&lt;br /&gt;
 static void TimesUp(object sender, ElapsedEventArgs e){&lt;br /&gt;
 &lt;br /&gt;
 } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь перенесите код из Main() в TimesUp(), потому что мы хотим вызывать его, когда наш таймер сработает. В начале файла напишите следующие строки using: &lt;br /&gt;
 using System.Threading;&lt;br /&gt;
 using System.Timers; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы ваша программа вызывала код каждые 10 секунд, создайте новый таймер и укажите ему метод TimesUp(): &lt;br /&gt;
 System.Timers.Timer timer = new System.Timers.Timer();&lt;br /&gt;
 timer.Interval = 10000;&lt;br /&gt;
 timer.Enabled = true;&lt;br /&gt;
 timer.Elapsed += new ElapsedEventHandler(TimesUp); &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Не пытайтесь запустить код в MonoDevelop! Когда вы работаете с потоками, а с таймером так дело и обстоит, MonoDevelop обычно некорректно останавливает программу в режиме отладки; поэтому лучше запустить ее из консоли.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;При запуске не произойдет никакого вывода на экран. С чего бы это? Мы возвращаемся к проблеме с потоками, рассмотренной в прошлый раз: программа достигает конца Main() и завершает работу до того, как таймер сработает. Решение состоит в приказании главному потоку (он-то и исполняет Main()) уснуть, посредством метода Thread. Sleep(). Метод позволяет задать число миллисекунд, на которые поток впадет в спячку, или же указать Timeout.Infinite, если вы хотите, чтобы поток уснул навеки. Последняя опция нам и нужна – пусть главный поток спит, а таймер будет вкалывать. В конце Main() добавьте строку: &lt;br /&gt;
 Thread.Sleep(Timeout.Infinite); &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь при запуске программы она будет честно раз в 10 секунд выводить список процессов. Прежде чем продолжать, сделаем еще коечто: добавьте такую строку перед вызовом Thread.Sleep(): &lt;br /&gt;
 TimesUp(null, null); &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Предоставляю вашему воображению – и тестированию! – догадаться, что она делает.&lt;br /&gt;
&lt;br /&gt;
=== Создание базы данных в Mono ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Информацию о процессах мы получили; надо ее куда-то положить. Базы данных бывают двух типов: клиент-серверные, когда данные хранятся где-то на сервере; и встроенные, когда есть локальный файл, напрямую управляемый из программы. Клиент-серверных баз данных полным-полно – MySQL, PostgreSQL, Oracle и другие соревнуются за место под солнцем. Но среди встроенных, одна из баз заслуживает большего внимания – это SQLite. SQLite хороша по нескольким причинам: ее код является достоянием общественности и вы можете делать с ним все, что хотите; у нее есть продвинутые возможности – поддержка Unicode, транзакций и, конечно, SQL-запросов; она также очень быстрая. Используя SQLite в Mono, можно считывать и записывать файл базы данных прямо из C#.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Слишком хорошо для этого мира? Да нет, загвоздка имеется: с базами данных не так легко работать через Mono. Если вы следовали инструкциям по установке в нашем первом выпуске (LXF87/LXF88), то уже разрешили зависимости Mono для SQLite; если нет, то я включил DLL-файл на диск, и вы можете его скопировать в папку с программой. В любом случае надо сделать ссылку на Mono.Data.SqliteClient. Есть небольшая разница между версией, входящей в Mono, и DLL – я постарался ее минимизировать, но если вы используете DLL, то вам понадобятся большие буквы в некоторых именах классов (т.е. SQLiteConnection вместо SqliteConnection).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В любом случае, SQLite использует для хранения данных обычный файл, так что первым шагом будет его создание. Добавьте следующие строки в начало вашего файла: &lt;br /&gt;
 using Mono.Data.SqliteClient;&lt;br /&gt;
 using System.IO; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы используете DLL и обнаружили, что Mono.Data.SqliteClient не существует, попытаетесь набрать Mono.Data. и выбрать верное название сборки из предложенного списка опций.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Создание базы данных осуществляется с помощью метода File. Create(), но фактически базу надо создать только один раз – если файл уже существует, незачем пересоздавать его. Поэтому предусмотрим проверку: первый раз запускается программа или нет, а также заведем место для хранения информации о соединении с нашей базой данных SQLite. Добавьте следующие две строки под class Monocular {: &lt;br /&gt;
 static bool FirstTime = false;&lt;br /&gt;
 static SqliteConnection Conn; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь подправим Main(), чтобы он автоматически создавал базу при первом запуске приложения, а затем спокойно к ней подсоединялся: &lt;br /&gt;
 if (!File.Exists(“monocular.db”))}&lt;br /&gt;
 Firsttime=true;&lt;br /&gt;
 File.Create(“monocular.db”);&lt;br /&gt;
 }&lt;br /&gt;
 Conn =new SqliteConnection(“URL=file:monocular.db”);&lt;br /&gt;
 Conn.Open(); &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Итак, файл для хранения ваших данных создан. Чтобы SQLite могла писать в него данные, надо еще создать таблицы, определяющие сохраняемые поля. Все команды SQLite выполняются через объекты SqliteCommand. Новая непонятка? А вы продолжайте читать. Эти SqliteCommand-объекты уникальны в Mono: несмотря на потуги программистов – разработчиков .NET-коннектора, они не убирают за собой. Если в Mono вы выделяете память под объект, то вам не надо заботиться о ее освобождении – сборщик мусора Mono автоматически сделает это за вас. SQLite иногда выделяет память, которая впоследствии автоматически не освобождается, и вам придется помнить об этом самим. &lt;br /&gt;
В данный момент вам надо создать объект типа команда, настроив его таким образом, чтоб он создавал таблицу для хранения информации о процессах; затем выполнить команду. Вот как это выглядит на С#: &lt;br /&gt;
 SqliteCommand dbcmd = Conn.CreateCommand();&lt;br /&gt;
 if (FirstTime) { &lt;br /&gt;
 dbcmd.CommandText = “CREATE TABLE processes&lt;br /&gt;
 (DateStamp TEXT, Name TEXT, Id INTEGER);”;&lt;br /&gt;
 dbcmd.ExecuteNonQuery();&lt;br /&gt;
 } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы изучали SQL раньше, то удивитесь, почему поля отмечены как TEXT и INTEGER, а не более научно, как VARCHAR(255). Дело в том, что SQLite не содержит таких четких определений. Поля хранятся либо как числа, либо как текст. Если же вы не изучали SQL, то кусок кода выше создает таблицу для хранения полей DateStamp, Name и Id – мы будем использовать их для хранения даты каждого чтения, имени запущенного процесса и его идентификатора.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вообще-то ExecuteNonQuery() – не самое умное имя: Q в аббревиатуре SQL означает Query – Запрос, то есть каждое предложение SQL является запросом. Ну, а ExecuteNonQuery() означает, что вы хотите заставить SQLite сделать что-то, но результаты запроса вас не интересуют.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;После создания таблицы необходимо очистить память, выделенную командой, следующим образом: &lt;br /&gt;
 dbcmd.Dispose(); dbcmd=null; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы, возможно, удивитесь, почему эти две строки кода не входят в блок if – а потому, что мы попозже добавим еще код! В любом случае, хотя код компилируется и запускается, проку от него мало – ничего интересного он не делает.&lt;br /&gt;
&lt;br /&gt;
=== Время писать! ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;ОК, у вас есть таймер, у вас есть список процессов, а теперь еще и доступ к базе данных – налицо весь инструментарий для создания всего проекта. Единственное, чего мы не умеем –писать в базу данных, но тут имеются осложнения. Противно то, что дело это нехитрое, но в наш отдел писем недавно поступила жалоба на мой «непонятный» стиль изложения. А я решил привести оптимальный способ создания записей в базе данных – оптимальный с точки зрения производительности, а не с точки зрения обучения. Кто не согласен, пишите мне, и мы сменим акценты. Так, отвел душу – и хватит; вернемся к базе данных! Есть две вещи, которые необходимо знать, прежде чем приступать к записи в базу SQLite: 1 SQLite использует транзакции для обеспечения целостности данных. То есть, когда вы пишете строку данных, то запускается транзакция, записываются данные, и транзакция завершается. Если вдруг ваша машина откажет во время записи транзакции, то SQLite ее откатит. Это очень хорошо. &lt;br /&gt;
2 SQLite кэширует запросы для ускорения работы. Первый пункт очень важен, так как мы собираемся писать за раз сразу несколько строк. Если у вас работает 10 Mono-приложений, будем писать 10 строк – по одной для каждой программы. Процесс в SQLite будет выглядеть следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Начать транзакцию &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Записать строку &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;3.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Закончить строку &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;4.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Начать транзакцию &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;5.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Записать строку &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;6.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Закончить транзакцию… и так далее.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Слабости Mono|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Да, я вовсю расхваливал Mono, но теперь вы в состоянии заметить и недостатки – там, где Mono не так хорош, как официальная реализация Microsoft .NET; но это только пока. Во-первых, при работе в официальной .NET- среде эта программа снабдит вас данными обо всех работающих программах, .NET или других. Во-вторых, официальная среда поставляет информацию о том, сколько памяти использует каждый процесс. В-третьих, официальная среда содержит глобальные счетчики производительности, измеряющие использование CPU, объем свободной глобальной памяти и т.д. Каждый из этих пунктов сделал бы нашу программу куда полезнее, но на беду, Mono не имеет ни одной из перечисленных возможностей – что, конечно, вредит программе этого месяца!|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Это очень медленно, но необходимо, так как SQLite требует, чтобы каждая команда записи была частью транзакции. Той же цели можно достичь, если велеть SQLite начать транзакцию, записать все строки сразу же, затем закончить транзакцию самим: &lt;br /&gt;
 1 2 3 4 5 6 Начать транзакцию &lt;br /&gt;
 Записать строку &lt;br /&gt;
 Записать строку &lt;br /&gt;
 Записать строку &lt;br /&gt;
 ... &lt;br /&gt;
 Закончить транзакцию. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Такой способ работает много быстрее, и он также более надежен: если наш компьютер откажет (или же другое несчастье прервет работу SQLite), то у нас не будет недоделанных записей – у нас будут либо все записи, либо ничего.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Второй пункт важен потому, что подобные запросы очень просто писать: &lt;br /&gt;
 for (int i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
 $query = “SELECT Foo FROM Bar WHERE Baz = “+i; ... { &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Выполнится 10 различных запросов к SQLite. Лучше использовать приготовленные заранее запросы и сообщать SQLite максимум информации о запросе, помечая заменяемые части вопросительными знаками. &lt;br /&gt;
Из примера все будет ясно, поэтому углубимся в код. Пока что TimesUp() у нас распечатывал информацию; а надо заточить его на запись в базу данных. Вот как TimesUp() должен выглядеть: &lt;br /&gt;
 static void TimesUp(object sender, ElapsedEventArgs e) {&lt;br /&gt;
 Process[] proclist = Process.GetProcesses();&lt;br /&gt;
 SqliteTransaction transaction = (SqliteTransaction)Conn.&lt;br /&gt;
 BeginTransaction();&lt;br /&gt;
 dbcmd = Conn.CreateCommand();&lt;br /&gt;
 dbcmd.CommandText = “INSERT INTO processes VALUES (?,?, ?);”;&lt;br /&gt;
 SqliteParameter date = new SqliteParameter();&lt;br /&gt;
 SqliteParameter name = new SqliteParameter();&lt;br /&gt;
 SqliteParameter id = new SqliteParameter();&lt;br /&gt;
 date.Value = DateTime.Now.ToLongTimeString();&lt;br /&gt;
 dbcmd.Parameters.Add(date);&lt;br /&gt;
 dbcmd.Parameters.Add(name);&lt;br /&gt;
 dbcmd.Parameters.Add(id);&lt;br /&gt;
 foreach(Process proc in proclist) { &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Это еще не вся функция, но я хочу притормозить и взглянуть на подготовленные запросы в действии. Запрос, который мы используем, передает вместо знаков вопроса информацию о процессе, так как только эта часть будет изменяться. Однако параметр date изменяется только один раз за время выполнения TimesUp(), поэтому его можно назначить сразу. Другие параметры просто оставляются как пустые объекты SqliteParameter, чтобы потом заполнять их отдельно для каждого процесса. Знаю, что это тривиально, но ради ясности ситуации скажу: необходимо вызывать dbcmd.Paramters.Add() для каждого параметра SQL-запроса, в порядке их появления в запросе.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ладно, продолжим с того места, на котором остановились... &lt;br /&gt;
 foreach(Process proc in proclist) {&lt;br /&gt;
 name.Value = proc.processName;&lt;br /&gt;
 id.Value = proc.Id;&lt;br /&gt;
 dbcmd.ExecuteNonQuery();&lt;br /&gt;
 }&lt;br /&gt;
 dbcmd.Dispose();&lt;br /&gt;
 dbcmd = null;&lt;br /&gt;
 transaction.Commit(); } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Действительно, все, что меняется между вызовами ExecuteNonQuery() – это значения двух подставляемых параметров, поэтому SQLite может использовать кэшированные запросы для получения наивысшей производительности. Последнее выражение в коде особенно важно: пока транзакция не зафиксирована, никаких записей внесено не будет – не забудьте вызывать Commit(), если, конечно, вы не любитель охоты за странными ошибками! Написано тут много, но смотреть все равно не на что, кроме как на медленное разрастание файла monocular.db. Но скоро все пойдет по-другому...&amp;lt;br&amp;gt;&lt;br /&gt;
=== К чтению готовы! ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Последнее, что нам предстоит сделать – это считать всю информацию из базы данных, так что вернемся к методу Main() и проделаем коекакие изменения. Если пользователь запускает Monocular без параметров, то она будет бесконечно работать в фоновом режиме, считывая информацию каждые 10 секунд и записывая ее в базу данных. Но если ей предоставить параметр – любой параметр – Monocular будет выводить всю хранимую информацию. На DVD я поместил код, позволяющий выполнять сортировку по имени процессов или по идентификатору, но ради экономии места мы пока проигнорируем его значение. Сейчас нам важен параметр как таковой — он будет сигнализировать о том, что пользователю нужен режим чтения.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок= Скорая помощь|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;На смену Fedora Core 6 пришла Fedora 7, а значит, у нас есть возможность поиграть с новой версией Mono. Со следующего выпуска мы будем ориентироваться на Mono 1.2.3. Обновляйтесь!|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В отличие от предыдущих запросов, теперь вам действительно потребуются данные – результаты SQL-запроса; добудем их с помощью специального объекта SQLiteDataReader: &lt;br /&gt;
 string currenttime = “”;&lt;br /&gt;
 // this loops over all the rows returned by the query&lt;br /&gt;
 while (reader.Read()) {&lt;br /&gt;
 string datestamp = reader.GetString(0);&lt;br /&gt;
 string name = reader.GetString(1);&lt;br /&gt;
 int id = reader.GetInt32(2);&lt;br /&gt;
 // we’ll put some more code in here shortly&lt;br /&gt;
 Console.WriteLine(“ {0}\1{1}\2”, id, name);&lt;br /&gt;
 }&lt;br /&gt;
 reader.Close(); &lt;br /&gt;
 reader = null; } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;GetString() и GetInt32() оба принимают один параметр: какое поле вы хотите считать. То есть GetString(0) считывает первое поле (DateStamp), GetString(1) считывает второе поле, и так далее. Как и с командами, вам надо на всякий случай освободить память, выделенную для считывателей, так как SQLite может этого не сделать. &lt;br /&gt;
Данный код выводит хранимую в таблице информацию обо всех процессах, но игнорирует поле даты. Это потому, что я хочу внести немного разнообразия: буду выводить каждый временной штамп при его изменении, тогда наш вывод будет разделяться чем-то вроде заголовков. Вы заметили пустую переменную currenttime. В нее мы занесем дату первой строки, считываемой из таблицы. Если в последующей строке окажется отличное от currenttime время, то выведется новый заголовок для нового времени, и это значение запишется в currenttime. На C# получится следующее: &lt;br /&gt;
 if (datestamp != currenttime) {&lt;br /&gt;
 Console.WriteLine(“”);&lt;br /&gt;
 Console.WriteLine(“Readings from “ + datestamp);&lt;br /&gt;
 Console.WriteLine(“ PID\tName”); currenttime = datestamp; } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вот и все – проект завершен! Я знаю, он не так полезен, как остальные проекты, но у нас связаны руки, так как в Mono отсутствуют некоторые интересные возможности официальной реализации Microsoft. Не горюйте: работа над добавлением недостающих возможностей в Mono ведется постоянно. А пока вы можете много чего еще добавить в эту программу: например, возможность старта и остановки программы, определения периодов наибольшей загрузки системы и так далее. Творите! ''LXF''&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Cron</id>
		<title>LXF95:Cron</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Cron"/>
				<updated>2008-04-20T12:36:03Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: /* Заоблачный проект */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Часть 1: Осваиваем Cron ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Ежедневное задание Cron поможет вам выполнить работу, отдохнуть и поиграть. '''Д-р Крис Браун''' покажет, как настроить crontab’ы и применить Anacron, чтобы ваша система работала, как часы.'' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как у вас с греческим? Вы знаете, что  [''chronos, хронос''] означает «время»? Конечно, знаете! А в греческой мифологии Хронос был богом и воплощением времени. Поэтому у нас есть такие слова, как хронометр и хронология. Программисты никогда не славились своим правописанием, поэтому сервис Linux, который запускает определенные команды в указанное время, назван Cron.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На нашем уроке вы изучите, как настроить Cron, чтобы планировать собственные задачи, и разберетесь с настройкой файла конфигурации Cron, поставляемого с вашим дистрибутивом Linux. Cron превосходен для машин, запущенных на постоянную работу, но во второй части урока мы рассмотрим его младшего братца Anacron, более подходящего для персональных компьютеров, которые часть времени проводят выключенными.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cron существует уже довольно давно (хотя и не так давно, как Хронос). Даже в моем потрепанном руководстве шестой редакции Unix, датированном 1974 г., есть упоминание о нем. С тех пор он несколько раз переписывался, и версия, которая в настоящий момент присутствует в Linux-дистрибутивах обычно известна как Vixie Cron, написанная Полом Викси [Paul Vixie].&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Проще говоря, Cron – это демон, запускающий определенные команды в определенное время дня и/или определенные дни недели. Он ежеминутно просыпается и просматривает свои файлы настройки – известные как crontab’ы [таблицы cron] – в поисках назначенных заданий на текущую минуту. Если задание найдено, оно выполняется. Затем программа снова на минуту засыпает. Cron обычно стартует во время загрузки.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Где пригодится Cron|&lt;br /&gt;
Содержание=*Смена файлов журналов (более подробно об этом см. в статье&lt;br /&gt;
«Расчистка файлов журналов» в [[LXF92]]).&lt;br /&gt;
*Анализ файлов журналов средствами вроде Logwatch и Webalizer.&lt;br /&gt;
*Автоматическая проверка доступности обновлений в репозиториях.&lt;br /&gt;
*Перестройка базы slocate. (Эта база всех имен файлов в системе, используется для поддержки команды slocate.)&lt;br /&gt;
*Создание резервных копий файловой системы (просто не забудьте заправить ленту в привод перед уходом домой!).&lt;br /&gt;
*Стирание устаревших файлов из каталогов типа /tmp. Запуск систем обнаружения вторжений типа Tripwire. Запуск «в ночное» перекомпиляции программ.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Мы используем Cron для планирования различных заданий; некоторые примеры приведены во врезке Где пригодится Cron, ниже. Большинство дистрибутивов Linux поставляют Cron уже настроенным на выполнение некоторых задач, но добавить свои вовсе не сложно, если знаешь как. Люди проделывают с Cron невероятные вещи. Мой коллега однажды написал скрипт, собирающий статистику о занятости машины. Используя Cron, он запускал скрипт каждые 0, 15, 30 и 45 минут от начала каждого часа и отправлял результаты на центральную машину. Другой скрипт Cron запускал каждые 5, 20, 35 и 50 минут от начала каждого часа на центральной машине, чтоб обработать статистику, а затем предоставить ее в виде HTML-отчетов для инженеров и менеджеров. Он также создавал графики нагрузки на машины в зависимости от времени дня.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Другой мой коллега использовал Cron для скачивания спутниковых изображений из бюро погоды; он делал это пару лет, а затем свел их вместе и получил кино. Я знаю менеджера, который при помощи Cron отключал права на запуск всех игр в 9:00 каждое утро и затем восстанавливал их вечером; а один родитель употребил его для блокировки входа в Интернет (с помощью iptables) каждый вечер, чтобы дети не лазили по Сети всю ночь, а наутро восстанавливал доступ.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;О том, что и когда делать, Cron узнает из набора файлов, называемых crontab’ами. Прежде всего, есть /etc/crontab, иногда называемый системным crontab’ом. Анатомия одной записи в этом файле показана на диаграмме напротив. В каждое из пяти временных полей вы можете поместить: &lt;br /&gt;
*означающую любое значение. &lt;br /&gt;
*одиночное значение. &lt;br /&gt;
*Список значений, разделённых запятыми, например, 15, 25, 40. &lt;br /&gt;
*Диапазон, например 9-18.&lt;br /&gt;
*Период; обычно следует за *. Например, */5 в поле минуты будет означать «каждые пять минут». Вот несколько примеров: &lt;br /&gt;
 */10 * * 5,7,11 * root command1&lt;br /&gt;
 0 9-18 * * 1-5 root command2 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первая строка показывает, что command1 будет запускаться каждые 10 минут в мае, июле и ноябре, а command2 – раз в час во время рабочего дня (с 9 до 18) с понедельника по пятницу. Видите, какая гибкая система! Между прочим, шестое поле в записи crontab, где в наших примерах стоит root, определяет идентификатор пользователя, под которым будет запущена программа. Вы почти всегда будете видеть root в этом поле, пока осторожный администратор не воспользуется принципом наименьших привилегий и не выберет пользователя с минимально необходимыми для запуска программы правами.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Хотя вполне дозволено запускать программы прямо из crontab, сейчас в Linux-дистрибутивах пошла мода на промежуточный скрипт, обычно называемый run-parts. Например, вот системный crontab из Red Hat и Fedora: &lt;br /&gt;
 01 * * * * root run-parts /etc/cron.hourly&lt;br /&gt;
 02 4 * * * root run-parts /etc/cron.daily&lt;br /&gt;
 22 4 * * 0 root run-parts /etc/cron.weekly&lt;br /&gt;
 42 4 1 * * root run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Скрипт run-parts довольно прост: он тупо запускает все исполняемые файлы в заданном каталоге. Есть, как видите, четыре таких каталога, для разных частот запуска. Эта схема упрощает вам жизнь, поскольку надо всего лишь скопировать новый скрипт в соответствующий каталог (в зависимости от того, как часто вы хотите его запускать), и Cron автоматически позаботится о его запуске; но вы теряете гибкость настройки времени выполнения, и все скрипты будут выполняться от имени root. И, конечно, такая схема не способна поддерживать операции вроде «запретить игры утром и разрешить вечером», как в примере ранее.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Наш эксперт Д-р Крис Браун|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Внештатный консультант по Linux со степенью доктора наук по физике элементарных частиц и обладатель сертификатов Novell CLP и Red Hat RHCE. Он только что написал книгу по SUSE Linux для O’Reilly.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;По виду /etc/crontab в OpenSUSE 10.2 можно предположить, что его авторы почти полностью забросили системный crontab. Там есть только одна строка, которая выполняет скрипт /usr/lib/cron/run-crons каждые 15 минут. Этот недокументированный и непостижимый среднему уму сценарий, судя по всему, запускает скрипты в каталогах cron. hourly, cron.daily, cron.weekly, cron.monthly, хотя его логика темна.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Cron для простых смертных ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В дополнение к общесистемной таблице /etc/crontab, Vixie Cron позволяет каждому пользователю вести свою таблицу. Они хранятся под именами пользователей в /var/spool/cron/crontab (точное расположение зависит от конкретного дистрибутива).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Эти файлы имеют тот же формат, что и общесистемная таблица, за одним исключением: там нет поля идентификатора пользователя, так как пользователи запускают эти задачи только сами. Редактировать эти файлы напрямую нельзя; для этого надо запустить crontab -e, которая позволит открыть файл в определенном вами редакторе (вообще-то редактор определяется переменной окружения EDITOR). Зачем нужна оболочка crontab -e? Во-первых, она проверяет синтаксис новых записей, прежде чем их установить, а во-вторых, изменяет метку времени на каталоге spool, сообщая Cron, что один из файлов был изменен. (Что необычно для демона Linux – не надо извещать Cron об изменении файла настроек: он автоматически заметит подмену при пробуждении.)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Администраторы многопользовательских систем могут контролировать, кому из пользователей разрешено использовать Cron, размещая их имена в одном из двух файлов, /etc/cron.allow и /etc/cron. deny. Пример Может ли Фред запускать Cron? на следующей странице показывает логику принятия решения. Данная возможность, вероятно, была весьма востребована во времена машин с несколькими тысячами учетных записей; но менее актуальна сейчас, когда машины используются одним-двумя пользователями.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Заоблачный проект ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Один из аспектов Cron, который пока игнорировался – окружение, в котором выполняются скрипты. Задания обычного пользователя Cron работают в его домашнем каталоге. Число переменных окружения является минимальным. Cron не считывает скрипт входа пользователя для установки настроек; в частности, в путях поиска находятся только /usr/bin и /bin, поэтому будьте внимательны, запуская программу из crontab – собственно говоря, общепринятой практикой является использование полных путей команд.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Также принято перенаправлять стандартный вывод и канал ошибок в файл, поэтому вы часто можете видеть в Cron подобные записи: &lt;br /&gt;
 15 6 * * * /usr/bin/&lt;br /&gt;
 someprog &amp;gt; /tmp/&lt;br /&gt;
 someprog.out 2&amp;gt;&amp;amp;1 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если задание Cron производит вывод, который не был перенаправлен, то он будет послан по почте владельцу задачи.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;При желании вы можете определить собственные переменные окружения в вашей cron-таблице. Например, можно определить командный интерпретатор и расширить путь поиска с помощью таких строк:&amp;lt;br&amp;gt;&lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 PATH=/usr/bin:/bin:/usr/local/bin &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы, как и я, учитесь, экспериментируя, то, возможно, уже решили сами сделать пару записей в crontab, но если кому нужны мои предложения, попробуйте вот что: &lt;br /&gt;
&lt;br /&gt;
 FOO=BAR&lt;br /&gt;
  PATH=/usr/bin:/bin:/usr/chris/bin&lt;br /&gt;
  */5 * * * * env &amp;gt;&amp;gt; env.out&lt;br /&gt;
  */10 * * * * echo “hello from a cron job”&lt;br /&gt;
  30 * * * * wget http://metoffice.gov.uk/satpics/latest_ir.jpg &lt;br /&gt;
[[Изображение:cron_anatomy.jpg|thumb]]&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Проверьте, что ваш crontab правильно установлен, командой crontab -i.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;3.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Займитесь чем-нибудь до конца часа. Может, дочитаете журнал?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;4.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; В конце часа проверьте, что в вашем домашнем каталоге появился файл env.out. Он должен содержать множество идентичных копий программного окружения Cron, предваренных отметками времени через пятиминутные интервалы. Вы нашли переменные окружения, которые сами определили в crontab?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;5.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Почитайте свою почту (я имею в виду не почтовый POP-ящик из Evolution, а ваш локальный почтовый файл, который можно прочесть командой mail). Видите сообщения от задачи Cron? Они должны появляться каждые 10 минут.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;6.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы получили инфракрасное изображение с метеоспутника? (при необходимости wget автоматически добавит номер к файлу, чтобы избежать его перезаписи, поэтому у вас могут встретиться имена latest_ir.jpg.1, latest_ir.jpg.2 и т.д.). Убедитесь, что Англия покрыта толстым слоем облаков. Если нет – вам, видимо, случайно достался снимок другой страны.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:fred_cron.jpg|thumb]]&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;7.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы не хотите держать этот crontab дальше, удалите его с помощью crontab -r.&amp;lt;br&amp;gt;&lt;br /&gt;
Первая запись в crontab в нашем эксперименте просто сохраняет среду, в которой будет выполняться задание. Вторая запись показывает, что если задача создаст вывод, не перенаправленный в файл, то он будет послан пользователю по почте. А третья запись показывает как получать инфракрасное изображение со спутника каждый час. Создание ролика из картинок будет вашим домашним заданием (как принято говорить во всех приличных учебниках).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Часть 2: Эксперимент с Anacron ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cron превосходен, но имеет слабое место: он спроектирован для машин, которые работают долгое время. Если ваша машина отключена на момент запуска задачи, то задача просто не отработает. Поэтому, если вы планируете на ночь выключать компьютер, то штатные задачи Cron (в 4:02 на Red Hat/Fedora и в 6:25 на Ubuntu) не выполнятся никогда.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:anacron_tabl.jpg|thumb]]&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы справиться с такими ситуациями, был создан новый инструмент Anacron. Согласно лингвистике, «анахроничный» означает «неуместный по хронологии»: например, документальный фильм, демонстрирующий Льва Толстого за ноутбуком, вызовет разве что смешки. Так или иначе, миссия Anacron состоит в обеспечении отработки обязательных ежедневных, еженедельных и ежемесячных задач, при условии, что компьютер будет хотя бы раз в день (или в неделю, или в месяц) включен. Anacron не интересуется точным временем, назначенным для выполнения задания. &lt;br /&gt;
Файл настройки Anacron, /etc/anacrontab, довольно прост: его синтаксис показан на диаграмме ниже. Вы видите из рисунка, что наименьший период между задачами в Anacron – это день; однако Anacron не является заменой Cron. Вы не можете велеть Anacron запустить команды в определенный час и минуту, поэтому (вспомним мой пример с Cron) нельзя использовать Anacron для отключения доступа в Интернет вечером и восстановления его утром. Чтобы отслеживать, какие программы были запущены и когда, Anacron пишет отметки времени в файлах, помещенных в каталоге /var/spool/anacron, имена которых соответствуют идентификаторам задач в его таблицах. Отметка времени содержит только день, месяц и год, когда была выполнена последняя задача, но не приводит часы, минуты или секунды.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Продвинутый дизайн ====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Anacron не является демоном в обычном смысле: демоны запускаются при загрузке системы и подстерегают удобный момент, чтобы что-то проделать, а Anacron при каждом запуске ищет, что надо выполнить, затем выходит. Резонно спросить: и когда же он в самом деле запустится? Пристальный взгляд на файлы настройки Red Hat Enterprise Linux (или Fedora) показывает, что Anacron запускается во время загрузки, через скрипт /etc/init.d/anacron. В этот момент Anacron считывает свою таблицу, проверяет отметки времени файлов в /var/spool/anacron, чтобы узнать, когда каждая задача работала в последний раз, а затем запускает задачи, подлежащие выполнению.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Для каждой задачи, определенной в таблице anacrontab, выждав определенное время, Anacron запустит команду. Задержки предназначены для того, чтобы Anacron не пытался выполнить все одним махом после загрузки машины, так как пользователь захочет приступить к делу, а не ждать, пока система освободится. Сам по себе Anacron не особо сложен в понимании. Однако все становится куда интереснее, если попытаться выявить связь между Anacron и Cron, особенно если одинаковые задачи выполняются в обеих программах. В настройках Red Hat/Fedora таблица Anacron выглядит так:&lt;br /&gt;
 1 65 cron.daily run-parts /etc/cron.daily&lt;br /&gt;
 7 70 cron.weekly run-parts /etc/cron.weekly&lt;br /&gt;
 30 75 cron.monthly run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Из этой выдержки мы видим, что Anacron просят выполнять в точности те же задачи, что и Cron, то есть в соответствующие интервалы (1, 7 или 30 дней) он использует скрипт run-parts для запуска всех скриптов в /etc/cron.daily, /etc/cron.weekly или /etc/cron.monthly. Вы заметите, что Anacron не запускает скрипты cron.hourly. Как я уже сказал, он для этого не предназначен, потому что записывает отметки времени лишь с точностью до дня.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Сойдите с моей ноги ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда одинаковые задачи выполняются и Cron, и Anacron, возникает опасность того, что Cron запустит задачу, которую уже выполнил Anacron, или наоборот. Разные дистрибутивы используют разные трюки для предотвращения этой ситуации. Если внимательно рассмотреть настройку Red Hat\Fedora, то можно обнаружить, что каталог cron.daily содержит скрипт с именем 0anacron, запускающий Anacron с опцией u. Так, мы видим, что Cron запускает Anacron каждый день. Однако опция -u просто говорит Anacron обновить отметки времени, без запуска самих программ. Фактически, Cron сообщает Anacron: «Пожалуйста, учти, что эти команды я уже выполнил сегодня (или на этой неделе, или в этом месяце...), и не трогай их». Ubuntu использует другой прием. Здесь таблица cron выглядит следующим образом: &lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;
 17 * * * * root run-parts /etc/cron.hourly&lt;br /&gt;
 25 6 * * * root test -x /usr/sbin/anacron || run-parts /etc/cron.daily&lt;br /&gt;
 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts /etc/cron.weekly&lt;br /&gt;
 52 6 1 * * root test -x /usr/sbin/anacron || run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Часть hourly выглядит понятно; она более-менее похожа на Fedora. Записи на день, неделю и месяц используют трюк с командным интерпретатором, чтобы удостовериться, что run-parts запускается только в отсутствии Anacron. (См. Магический трюк с run-parts во врезке вверху справа.) Обобщая разницу в подходах Red Hat и Ubuntu, можно сказать: «В Red Hat выигрывает Cron. В Ubuntu победа за Anacron.»&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Настройки по умолчанию для Cron и Anacron в различных дистрибутивах могут запутать, однако я бы сказал следующее: вы не обязаны использовать Cron и Anacron именно так, как определил ваш поставщик Linux. Если вы понимаете работу этих двух сервисов и синтаксис файлов настройки, можете заставить их делать то, что хотите вы.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Магический трюк с run-parts|&lt;br /&gt;
Содержание=Оператор командного интерепретатора ''ИЛИ'', ''&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;'', соединяет два логических выражения, чтобы вычислить результат в виде ''true/false''. Например ''a &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; b = true'', если a дает true или b дает true. (То есть, если команда ''a'' или команда ''b'' возвращают 0 при выходе.) Теперь – внимание, здесь вся соль! – если a возвращает ''true'', значение ''a &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; b'' будет ''true'' независимо от значения ''b''. Ясно? И в этом случае команду ''b'' даже незачем выполнять. Это довольно простое поведение интерпретатора как раз и объясняет то, что мы видим в таблице cron в Ubuntu. Команда интерпретатора ''test -x /usr/sbin/anacron &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; run-parts /etc/ cron.daily'' запустит две команды, ''test'' и (возможно) ''run- parts''. Команда ''test'' встроена в интерпретатор; ''test -x'' возвращает true, если определенный файл существует и является исполняемым. Поэтому это строка интерпретируется так: «Если существует ''/usr/sbin/anacron'', и он является исполняемым, тогда все выражение равняется true, и нет нужны запускать run-parts, чтобы это определить», или, по-другому, «запускай ''run- parts'', только если Anacron не присутствует». Quod erat demonstrandum («Что и требовалось доказать»), как говаривали древние римляне.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Часть 3: Одноразовые задачи с at ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;У нас как раз осталось место, чтобы рассказать о команде at. В отличие от Cron и Anacron, обеспечивающих повторяемые действия, at используется для планирования разовых действий в будущем. Положим, вы захотите, чтобы ваш компьютер пересобрал ядро Linux, пока вы проводите вечер в баре. Вы можете сделать это таким образом: &lt;br /&gt;
 $ at 20.30&lt;br /&gt;
 warning: commands will be executed using /bin/sh&lt;br /&gt;
 at&amp;gt; cd /usr/src/linux at&amp;gt; make all&lt;br /&gt;
 at&amp;gt; &amp;lt;EOT&amp;gt;&lt;br /&gt;
 job 2 at Wed Feb 14 19:30:00 2007 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как видите, at получает команды, которые вы хотите выполнить, через стандартный ввод до ожидания символа EOT (по умолчанию, ^D). Ваш список поставленных задач можно посмотреть через команду atq. &lt;br /&gt;
 $ atq 2 Wed Feb 14 19:30:00 2007 a chris $ &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Демон at (atd) запустит задачу в назначенный момент, экономя вам время на более интересные занятия. Правда, at не доставит вас в бар в назначенное время и не предложит напитков. Однако вы можете из вежливости купить ему пакетик чипсов.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Подробности об очереди задач хранятся в специальном каталоге (обычно /var/spool/at). Если вы определите задачу или две, а затем посмотрите содержимое этого каталога, то заметите, что в отличие от Cron, at трудится над созданием такой же среды выполнения, как если бы вы только что зашли. Демон atd ответственен за реальное выполнение задач.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы вдруг передумаете и решите отменить задачу at, можете сделать это командой atrm: &lt;br /&gt;
 $ atrm 2 &lt;br /&gt;
 $ &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Аргументом для atrm является номер задачи (в данном примере это 2).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Больше всего меня поражает в этой программе изобилие форм записи для задания времени выполнения команды. Верны все следующие варианты: &lt;br /&gt;
 $ at 14.30 tomorrow&lt;br /&gt;
 $ at noon Friday&lt;br /&gt;
 $ at 4pm + 3 days &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Моим любимцем является ключевое слово teatime как синоним 4 часов дня: &lt;br /&gt;
 $ at teatime tomorrow &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Красота! LXF&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Cron</id>
		<title>LXF95:Cron</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Cron"/>
				<updated>2008-04-20T12:34:28Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: /* Заоблачный проект */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Часть 1: Осваиваем Cron ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Ежедневное задание Cron поможет вам выполнить работу, отдохнуть и поиграть. '''Д-р Крис Браун''' покажет, как настроить crontab’ы и применить Anacron, чтобы ваша система работала, как часы.'' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как у вас с греческим? Вы знаете, что  [''chronos, хронос''] означает «время»? Конечно, знаете! А в греческой мифологии Хронос был богом и воплощением времени. Поэтому у нас есть такие слова, как хронометр и хронология. Программисты никогда не славились своим правописанием, поэтому сервис Linux, который запускает определенные команды в указанное время, назван Cron.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На нашем уроке вы изучите, как настроить Cron, чтобы планировать собственные задачи, и разберетесь с настройкой файла конфигурации Cron, поставляемого с вашим дистрибутивом Linux. Cron превосходен для машин, запущенных на постоянную работу, но во второй части урока мы рассмотрим его младшего братца Anacron, более подходящего для персональных компьютеров, которые часть времени проводят выключенными.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cron существует уже довольно давно (хотя и не так давно, как Хронос). Даже в моем потрепанном руководстве шестой редакции Unix, датированном 1974 г., есть упоминание о нем. С тех пор он несколько раз переписывался, и версия, которая в настоящий момент присутствует в Linux-дистрибутивах обычно известна как Vixie Cron, написанная Полом Викси [Paul Vixie].&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Проще говоря, Cron – это демон, запускающий определенные команды в определенное время дня и/или определенные дни недели. Он ежеминутно просыпается и просматривает свои файлы настройки – известные как crontab’ы [таблицы cron] – в поисках назначенных заданий на текущую минуту. Если задание найдено, оно выполняется. Затем программа снова на минуту засыпает. Cron обычно стартует во время загрузки.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Где пригодится Cron|&lt;br /&gt;
Содержание=*Смена файлов журналов (более подробно об этом см. в статье&lt;br /&gt;
«Расчистка файлов журналов» в [[LXF92]]).&lt;br /&gt;
*Анализ файлов журналов средствами вроде Logwatch и Webalizer.&lt;br /&gt;
*Автоматическая проверка доступности обновлений в репозиториях.&lt;br /&gt;
*Перестройка базы slocate. (Эта база всех имен файлов в системе, используется для поддержки команды slocate.)&lt;br /&gt;
*Создание резервных копий файловой системы (просто не забудьте заправить ленту в привод перед уходом домой!).&lt;br /&gt;
*Стирание устаревших файлов из каталогов типа /tmp. Запуск систем обнаружения вторжений типа Tripwire. Запуск «в ночное» перекомпиляции программ.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Мы используем Cron для планирования различных заданий; некоторые примеры приведены во врезке Где пригодится Cron, ниже. Большинство дистрибутивов Linux поставляют Cron уже настроенным на выполнение некоторых задач, но добавить свои вовсе не сложно, если знаешь как. Люди проделывают с Cron невероятные вещи. Мой коллега однажды написал скрипт, собирающий статистику о занятости машины. Используя Cron, он запускал скрипт каждые 0, 15, 30 и 45 минут от начала каждого часа и отправлял результаты на центральную машину. Другой скрипт Cron запускал каждые 5, 20, 35 и 50 минут от начала каждого часа на центральной машине, чтоб обработать статистику, а затем предоставить ее в виде HTML-отчетов для инженеров и менеджеров. Он также создавал графики нагрузки на машины в зависимости от времени дня.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Другой мой коллега использовал Cron для скачивания спутниковых изображений из бюро погоды; он делал это пару лет, а затем свел их вместе и получил кино. Я знаю менеджера, который при помощи Cron отключал права на запуск всех игр в 9:00 каждое утро и затем восстанавливал их вечером; а один родитель употребил его для блокировки входа в Интернет (с помощью iptables) каждый вечер, чтобы дети не лазили по Сети всю ночь, а наутро восстанавливал доступ.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;О том, что и когда делать, Cron узнает из набора файлов, называемых crontab’ами. Прежде всего, есть /etc/crontab, иногда называемый системным crontab’ом. Анатомия одной записи в этом файле показана на диаграмме напротив. В каждое из пяти временных полей вы можете поместить: &lt;br /&gt;
*означающую любое значение. &lt;br /&gt;
*одиночное значение. &lt;br /&gt;
*Список значений, разделённых запятыми, например, 15, 25, 40. &lt;br /&gt;
*Диапазон, например 9-18.&lt;br /&gt;
*Период; обычно следует за *. Например, */5 в поле минуты будет означать «каждые пять минут». Вот несколько примеров: &lt;br /&gt;
 */10 * * 5,7,11 * root command1&lt;br /&gt;
 0 9-18 * * 1-5 root command2 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первая строка показывает, что command1 будет запускаться каждые 10 минут в мае, июле и ноябре, а command2 – раз в час во время рабочего дня (с 9 до 18) с понедельника по пятницу. Видите, какая гибкая система! Между прочим, шестое поле в записи crontab, где в наших примерах стоит root, определяет идентификатор пользователя, под которым будет запущена программа. Вы почти всегда будете видеть root в этом поле, пока осторожный администратор не воспользуется принципом наименьших привилегий и не выберет пользователя с минимально необходимыми для запуска программы правами.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Хотя вполне дозволено запускать программы прямо из crontab, сейчас в Linux-дистрибутивах пошла мода на промежуточный скрипт, обычно называемый run-parts. Например, вот системный crontab из Red Hat и Fedora: &lt;br /&gt;
 01 * * * * root run-parts /etc/cron.hourly&lt;br /&gt;
 02 4 * * * root run-parts /etc/cron.daily&lt;br /&gt;
 22 4 * * 0 root run-parts /etc/cron.weekly&lt;br /&gt;
 42 4 1 * * root run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Скрипт run-parts довольно прост: он тупо запускает все исполняемые файлы в заданном каталоге. Есть, как видите, четыре таких каталога, для разных частот запуска. Эта схема упрощает вам жизнь, поскольку надо всего лишь скопировать новый скрипт в соответствующий каталог (в зависимости от того, как часто вы хотите его запускать), и Cron автоматически позаботится о его запуске; но вы теряете гибкость настройки времени выполнения, и все скрипты будут выполняться от имени root. И, конечно, такая схема не способна поддерживать операции вроде «запретить игры утром и разрешить вечером», как в примере ранее.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Наш эксперт Д-р Крис Браун|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Внештатный консультант по Linux со степенью доктора наук по физике элементарных частиц и обладатель сертификатов Novell CLP и Red Hat RHCE. Он только что написал книгу по SUSE Linux для O’Reilly.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;По виду /etc/crontab в OpenSUSE 10.2 можно предположить, что его авторы почти полностью забросили системный crontab. Там есть только одна строка, которая выполняет скрипт /usr/lib/cron/run-crons каждые 15 минут. Этот недокументированный и непостижимый среднему уму сценарий, судя по всему, запускает скрипты в каталогах cron. hourly, cron.daily, cron.weekly, cron.monthly, хотя его логика темна.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Cron для простых смертных ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В дополнение к общесистемной таблице /etc/crontab, Vixie Cron позволяет каждому пользователю вести свою таблицу. Они хранятся под именами пользователей в /var/spool/cron/crontab (точное расположение зависит от конкретного дистрибутива).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Эти файлы имеют тот же формат, что и общесистемная таблица, за одним исключением: там нет поля идентификатора пользователя, так как пользователи запускают эти задачи только сами. Редактировать эти файлы напрямую нельзя; для этого надо запустить crontab -e, которая позволит открыть файл в определенном вами редакторе (вообще-то редактор определяется переменной окружения EDITOR). Зачем нужна оболочка crontab -e? Во-первых, она проверяет синтаксис новых записей, прежде чем их установить, а во-вторых, изменяет метку времени на каталоге spool, сообщая Cron, что один из файлов был изменен. (Что необычно для демона Linux – не надо извещать Cron об изменении файла настроек: он автоматически заметит подмену при пробуждении.)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Администраторы многопользовательских систем могут контролировать, кому из пользователей разрешено использовать Cron, размещая их имена в одном из двух файлов, /etc/cron.allow и /etc/cron. deny. Пример Может ли Фред запускать Cron? на следующей странице показывает логику принятия решения. Данная возможность, вероятно, была весьма востребована во времена машин с несколькими тысячами учетных записей; но менее актуальна сейчас, когда машины используются одним-двумя пользователями.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Заоблачный проект ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Один из аспектов Cron, который пока игнорировался – окружение, в котором выполняются скрипты. Задания обычного пользователя Cron работают в его домашнем каталоге. Число переменных окружения является минимальным. Cron не считывает скрипт входа пользователя для установки настроек; в частности, в путях поиска находятся только /usr/bin и /bin, поэтому будьте внимательны, запуская программу из crontab – собственно говоря, общепринятой практикой является использование полных путей команд.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Также принято перенаправлять стандартный вывод и канал ошибок в файл, поэтому вы часто можете видеть в Cron подобные записи: &lt;br /&gt;
 15 6 * * * /usr/bin/&lt;br /&gt;
 someprog &amp;gt; /tmp/&lt;br /&gt;
 someprog.out 2&amp;gt;&amp;amp;1 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если задание Cron производит вывод, который не был перенаправлен, то он будет послан по почте владельцу задачи.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;При желании вы можете определить собственные переменные окружения в вашей cron-таблице. Например, можно определить командный интерпретатор и расширить путь поиска с помощью таких строк:&amp;lt;br&amp;gt;&lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 PATH=/usr/bin:/bin:/usr/local/bin &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы, как и я, учитесь, экспериментируя, то, возможно, уже решили сами сделать пару записей в crontab, но если кому нужны мои предложения, попробуйте вот что: &lt;br /&gt;
&lt;br /&gt;
 FOO=BAR&lt;br /&gt;
  PATH=/usr/bin:/bin:/usr/chris/bin&lt;br /&gt;
  */5 * * * * env &amp;gt;&amp;gt; env.out&lt;br /&gt;
  */10 * * * * echo “hello from a cron job”&lt;br /&gt;
  30 * * * * wget http://metoffice.gov.uk/satpics/latest_ir.jpg &lt;br /&gt;
[[Изображение:cron_anatomy.jpg|thumb]]&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Проверьте, что ваш crontab правильно установлен, командой crontab -i.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;3.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Займитесь чем-нибудь до конца часа. Может, дочитаете журнал?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;4.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; В конце часа проверьте, что в вашем домашнем каталоге появился файл env.out. Он должен содержать множество идентичных копий программного окружения Cron, предваренных отметками времени через пятиминутные интервалы. Вы нашли переменные окружения, которые сами определили в crontab?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;5.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Почитайте свою почту (я имею в виду не почтовый POP-ящик из Evolution, а ваш локальный почтовый файл, который можно прочесть командой mail). Видите сообщения от задачи Cron? Они должны появляться каждые 10 минут.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;6.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы получили инфракрасное изображение с метеоспутника? (при необходимости wget автоматически добавит номер к файлу, чтобы избежать его перезаписи, поэтому у вас могут встретиться имена latest_ir.jpg.1, latest_ir.jpg.2 и т.д.). Убедитесь, что Англия покрыта толстым слоем облаков. Если нет – вам, видимо, случайно достался снимок другой страны.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;7.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы не хотите держать этот crontab дальше, удалите его с помощью crontab -r.&amp;lt;br&amp;gt;&lt;br /&gt;
Первая запись в crontab в нашем эксперименте просто сохраняет среду, в которой будет выполняться задание. Вторая запись показывает, что если задача создаст вывод, не перенаправленный в файл, то он будет послан пользователю по почте. А третья запись показывает как получать инфракрасное изображение со спутника каждый час. Создание ролика из картинок будет вашим домашним заданием (как принято говорить во всех приличных учебниках).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Часть 2: Эксперимент с Anacron ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cron превосходен, но имеет слабое место: он спроектирован для машин, которые работают долгое время. Если ваша машина отключена на момент запуска задачи, то задача просто не отработает. Поэтому, если вы планируете на ночь выключать компьютер, то штатные задачи Cron (в 4:02 на Red Hat/Fedora и в 6:25 на Ubuntu) не выполнятся никогда.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:anacron_tabl.jpg|thumb]]&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы справиться с такими ситуациями, был создан новый инструмент Anacron. Согласно лингвистике, «анахроничный» означает «неуместный по хронологии»: например, документальный фильм, демонстрирующий Льва Толстого за ноутбуком, вызовет разве что смешки. Так или иначе, миссия Anacron состоит в обеспечении отработки обязательных ежедневных, еженедельных и ежемесячных задач, при условии, что компьютер будет хотя бы раз в день (или в неделю, или в месяц) включен. Anacron не интересуется точным временем, назначенным для выполнения задания. &lt;br /&gt;
Файл настройки Anacron, /etc/anacrontab, довольно прост: его синтаксис показан на диаграмме ниже. Вы видите из рисунка, что наименьший период между задачами в Anacron – это день; однако Anacron не является заменой Cron. Вы не можете велеть Anacron запустить команды в определенный час и минуту, поэтому (вспомним мой пример с Cron) нельзя использовать Anacron для отключения доступа в Интернет вечером и восстановления его утром. Чтобы отслеживать, какие программы были запущены и когда, Anacron пишет отметки времени в файлах, помещенных в каталоге /var/spool/anacron, имена которых соответствуют идентификаторам задач в его таблицах. Отметка времени содержит только день, месяц и год, когда была выполнена последняя задача, но не приводит часы, минуты или секунды.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Продвинутый дизайн ====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Anacron не является демоном в обычном смысле: демоны запускаются при загрузке системы и подстерегают удобный момент, чтобы что-то проделать, а Anacron при каждом запуске ищет, что надо выполнить, затем выходит. Резонно спросить: и когда же он в самом деле запустится? Пристальный взгляд на файлы настройки Red Hat Enterprise Linux (или Fedora) показывает, что Anacron запускается во время загрузки, через скрипт /etc/init.d/anacron. В этот момент Anacron считывает свою таблицу, проверяет отметки времени файлов в /var/spool/anacron, чтобы узнать, когда каждая задача работала в последний раз, а затем запускает задачи, подлежащие выполнению.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Для каждой задачи, определенной в таблице anacrontab, выждав определенное время, Anacron запустит команду. Задержки предназначены для того, чтобы Anacron не пытался выполнить все одним махом после загрузки машины, так как пользователь захочет приступить к делу, а не ждать, пока система освободится. Сам по себе Anacron не особо сложен в понимании. Однако все становится куда интереснее, если попытаться выявить связь между Anacron и Cron, особенно если одинаковые задачи выполняются в обеих программах. В настройках Red Hat/Fedora таблица Anacron выглядит так:&lt;br /&gt;
 1 65 cron.daily run-parts /etc/cron.daily&lt;br /&gt;
 7 70 cron.weekly run-parts /etc/cron.weekly&lt;br /&gt;
 30 75 cron.monthly run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Из этой выдержки мы видим, что Anacron просят выполнять в точности те же задачи, что и Cron, то есть в соответствующие интервалы (1, 7 или 30 дней) он использует скрипт run-parts для запуска всех скриптов в /etc/cron.daily, /etc/cron.weekly или /etc/cron.monthly. Вы заметите, что Anacron не запускает скрипты cron.hourly. Как я уже сказал, он для этого не предназначен, потому что записывает отметки времени лишь с точностью до дня.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Сойдите с моей ноги ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда одинаковые задачи выполняются и Cron, и Anacron, возникает опасность того, что Cron запустит задачу, которую уже выполнил Anacron, или наоборот. Разные дистрибутивы используют разные трюки для предотвращения этой ситуации. Если внимательно рассмотреть настройку Red Hat\Fedora, то можно обнаружить, что каталог cron.daily содержит скрипт с именем 0anacron, запускающий Anacron с опцией u. Так, мы видим, что Cron запускает Anacron каждый день. Однако опция -u просто говорит Anacron обновить отметки времени, без запуска самих программ. Фактически, Cron сообщает Anacron: «Пожалуйста, учти, что эти команды я уже выполнил сегодня (или на этой неделе, или в этом месяце...), и не трогай их». Ubuntu использует другой прием. Здесь таблица cron выглядит следующим образом: &lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;
 17 * * * * root run-parts /etc/cron.hourly&lt;br /&gt;
 25 6 * * * root test -x /usr/sbin/anacron || run-parts /etc/cron.daily&lt;br /&gt;
 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts /etc/cron.weekly&lt;br /&gt;
 52 6 1 * * root test -x /usr/sbin/anacron || run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Часть hourly выглядит понятно; она более-менее похожа на Fedora. Записи на день, неделю и месяц используют трюк с командным интерпретатором, чтобы удостовериться, что run-parts запускается только в отсутствии Anacron. (См. Магический трюк с run-parts во врезке вверху справа.) Обобщая разницу в подходах Red Hat и Ubuntu, можно сказать: «В Red Hat выигрывает Cron. В Ubuntu победа за Anacron.»&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Настройки по умолчанию для Cron и Anacron в различных дистрибутивах могут запутать, однако я бы сказал следующее: вы не обязаны использовать Cron и Anacron именно так, как определил ваш поставщик Linux. Если вы понимаете работу этих двух сервисов и синтаксис файлов настройки, можете заставить их делать то, что хотите вы.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Магический трюк с run-parts|&lt;br /&gt;
Содержание=Оператор командного интерепретатора ''ИЛИ'', ''&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;'', соединяет два логических выражения, чтобы вычислить результат в виде ''true/false''. Например ''a &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; b = true'', если a дает true или b дает true. (То есть, если команда ''a'' или команда ''b'' возвращают 0 при выходе.) Теперь – внимание, здесь вся соль! – если a возвращает ''true'', значение ''a &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; b'' будет ''true'' независимо от значения ''b''. Ясно? И в этом случае команду ''b'' даже незачем выполнять. Это довольно простое поведение интерпретатора как раз и объясняет то, что мы видим в таблице cron в Ubuntu. Команда интерпретатора ''test -x /usr/sbin/anacron &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; run-parts /etc/ cron.daily'' запустит две команды, ''test'' и (возможно) ''run- parts''. Команда ''test'' встроена в интерпретатор; ''test -x'' возвращает true, если определенный файл существует и является исполняемым. Поэтому это строка интерпретируется так: «Если существует ''/usr/sbin/anacron'', и он является исполняемым, тогда все выражение равняется true, и нет нужны запускать run-parts, чтобы это определить», или, по-другому, «запускай ''run- parts'', только если Anacron не присутствует». Quod erat demonstrandum («Что и требовалось доказать»), как говаривали древние римляне.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Часть 3: Одноразовые задачи с at ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;У нас как раз осталось место, чтобы рассказать о команде at. В отличие от Cron и Anacron, обеспечивающих повторяемые действия, at используется для планирования разовых действий в будущем. Положим, вы захотите, чтобы ваш компьютер пересобрал ядро Linux, пока вы проводите вечер в баре. Вы можете сделать это таким образом: &lt;br /&gt;
 $ at 20.30&lt;br /&gt;
 warning: commands will be executed using /bin/sh&lt;br /&gt;
 at&amp;gt; cd /usr/src/linux at&amp;gt; make all&lt;br /&gt;
 at&amp;gt; &amp;lt;EOT&amp;gt;&lt;br /&gt;
 job 2 at Wed Feb 14 19:30:00 2007 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как видите, at получает команды, которые вы хотите выполнить, через стандартный ввод до ожидания символа EOT (по умолчанию, ^D). Ваш список поставленных задач можно посмотреть через команду atq. &lt;br /&gt;
 $ atq 2 Wed Feb 14 19:30:00 2007 a chris $ &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Демон at (atd) запустит задачу в назначенный момент, экономя вам время на более интересные занятия. Правда, at не доставит вас в бар в назначенное время и не предложит напитков. Однако вы можете из вежливости купить ему пакетик чипсов.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Подробности об очереди задач хранятся в специальном каталоге (обычно /var/spool/at). Если вы определите задачу или две, а затем посмотрите содержимое этого каталога, то заметите, что в отличие от Cron, at трудится над созданием такой же среды выполнения, как если бы вы только что зашли. Демон atd ответственен за реальное выполнение задач.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы вдруг передумаете и решите отменить задачу at, можете сделать это командой atrm: &lt;br /&gt;
 $ atrm 2 &lt;br /&gt;
 $ &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Аргументом для atrm является номер задачи (в данном примере это 2).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Больше всего меня поражает в этой программе изобилие форм записи для задания времени выполнения команды. Верны все следующие варианты: &lt;br /&gt;
 $ at 14.30 tomorrow&lt;br /&gt;
 $ at noon Friday&lt;br /&gt;
 $ at 4pm + 3 days &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Моим любимцем является ключевое слово teatime как синоним 4 часов дня: &lt;br /&gt;
 $ at teatime tomorrow &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Красота! LXF&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Fred_cron.jpg</id>
		<title>Файл:Fred cron.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Fred_cron.jpg"/>
				<updated>2008-04-20T12:32:10Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Может ли Фред использовать Cron&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Может ли Фред использовать Cron&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Cron_anatomy.jpg</id>
		<title>Файл:Cron anatomy.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Cron_anatomy.jpg"/>
				<updated>2008-04-20T12:31:09Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Анатомия записи Cron&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Анатомия записи Cron&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Cron</id>
		<title>LXF95:Cron</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Cron"/>
				<updated>2008-04-20T12:24:19Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: /* Часть 2: Эксперимент с Anacron */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Часть 1: Осваиваем Cron ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Ежедневное задание Cron поможет вам выполнить работу, отдохнуть и поиграть. '''Д-р Крис Браун''' покажет, как настроить crontab’ы и применить Anacron, чтобы ваша система работала, как часы.'' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как у вас с греческим? Вы знаете, что  [''chronos, хронос''] означает «время»? Конечно, знаете! А в греческой мифологии Хронос был богом и воплощением времени. Поэтому у нас есть такие слова, как хронометр и хронология. Программисты никогда не славились своим правописанием, поэтому сервис Linux, который запускает определенные команды в указанное время, назван Cron.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На нашем уроке вы изучите, как настроить Cron, чтобы планировать собственные задачи, и разберетесь с настройкой файла конфигурации Cron, поставляемого с вашим дистрибутивом Linux. Cron превосходен для машин, запущенных на постоянную работу, но во второй части урока мы рассмотрим его младшего братца Anacron, более подходящего для персональных компьютеров, которые часть времени проводят выключенными.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cron существует уже довольно давно (хотя и не так давно, как Хронос). Даже в моем потрепанном руководстве шестой редакции Unix, датированном 1974 г., есть упоминание о нем. С тех пор он несколько раз переписывался, и версия, которая в настоящий момент присутствует в Linux-дистрибутивах обычно известна как Vixie Cron, написанная Полом Викси [Paul Vixie].&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Проще говоря, Cron – это демон, запускающий определенные команды в определенное время дня и/или определенные дни недели. Он ежеминутно просыпается и просматривает свои файлы настройки – известные как crontab’ы [таблицы cron] – в поисках назначенных заданий на текущую минуту. Если задание найдено, оно выполняется. Затем программа снова на минуту засыпает. Cron обычно стартует во время загрузки.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Где пригодится Cron|&lt;br /&gt;
Содержание=*Смена файлов журналов (более подробно об этом см. в статье&lt;br /&gt;
«Расчистка файлов журналов» в [[LXF92]]).&lt;br /&gt;
*Анализ файлов журналов средствами вроде Logwatch и Webalizer.&lt;br /&gt;
*Автоматическая проверка доступности обновлений в репозиториях.&lt;br /&gt;
*Перестройка базы slocate. (Эта база всех имен файлов в системе, используется для поддержки команды slocate.)&lt;br /&gt;
*Создание резервных копий файловой системы (просто не забудьте заправить ленту в привод перед уходом домой!).&lt;br /&gt;
*Стирание устаревших файлов из каталогов типа /tmp. Запуск систем обнаружения вторжений типа Tripwire. Запуск «в ночное» перекомпиляции программ.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Мы используем Cron для планирования различных заданий; некоторые примеры приведены во врезке Где пригодится Cron, ниже. Большинство дистрибутивов Linux поставляют Cron уже настроенным на выполнение некоторых задач, но добавить свои вовсе не сложно, если знаешь как. Люди проделывают с Cron невероятные вещи. Мой коллега однажды написал скрипт, собирающий статистику о занятости машины. Используя Cron, он запускал скрипт каждые 0, 15, 30 и 45 минут от начала каждого часа и отправлял результаты на центральную машину. Другой скрипт Cron запускал каждые 5, 20, 35 и 50 минут от начала каждого часа на центральной машине, чтоб обработать статистику, а затем предоставить ее в виде HTML-отчетов для инженеров и менеджеров. Он также создавал графики нагрузки на машины в зависимости от времени дня.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Другой мой коллега использовал Cron для скачивания спутниковых изображений из бюро погоды; он делал это пару лет, а затем свел их вместе и получил кино. Я знаю менеджера, который при помощи Cron отключал права на запуск всех игр в 9:00 каждое утро и затем восстанавливал их вечером; а один родитель употребил его для блокировки входа в Интернет (с помощью iptables) каждый вечер, чтобы дети не лазили по Сети всю ночь, а наутро восстанавливал доступ.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;О том, что и когда делать, Cron узнает из набора файлов, называемых crontab’ами. Прежде всего, есть /etc/crontab, иногда называемый системным crontab’ом. Анатомия одной записи в этом файле показана на диаграмме напротив. В каждое из пяти временных полей вы можете поместить: &lt;br /&gt;
*означающую любое значение. &lt;br /&gt;
*одиночное значение. &lt;br /&gt;
*Список значений, разделённых запятыми, например, 15, 25, 40. &lt;br /&gt;
*Диапазон, например 9-18.&lt;br /&gt;
*Период; обычно следует за *. Например, */5 в поле минуты будет означать «каждые пять минут». Вот несколько примеров: &lt;br /&gt;
 */10 * * 5,7,11 * root command1&lt;br /&gt;
 0 9-18 * * 1-5 root command2 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первая строка показывает, что command1 будет запускаться каждые 10 минут в мае, июле и ноябре, а command2 – раз в час во время рабочего дня (с 9 до 18) с понедельника по пятницу. Видите, какая гибкая система! Между прочим, шестое поле в записи crontab, где в наших примерах стоит root, определяет идентификатор пользователя, под которым будет запущена программа. Вы почти всегда будете видеть root в этом поле, пока осторожный администратор не воспользуется принципом наименьших привилегий и не выберет пользователя с минимально необходимыми для запуска программы правами.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Хотя вполне дозволено запускать программы прямо из crontab, сейчас в Linux-дистрибутивах пошла мода на промежуточный скрипт, обычно называемый run-parts. Например, вот системный crontab из Red Hat и Fedora: &lt;br /&gt;
 01 * * * * root run-parts /etc/cron.hourly&lt;br /&gt;
 02 4 * * * root run-parts /etc/cron.daily&lt;br /&gt;
 22 4 * * 0 root run-parts /etc/cron.weekly&lt;br /&gt;
 42 4 1 * * root run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Скрипт run-parts довольно прост: он тупо запускает все исполняемые файлы в заданном каталоге. Есть, как видите, четыре таких каталога, для разных частот запуска. Эта схема упрощает вам жизнь, поскольку надо всего лишь скопировать новый скрипт в соответствующий каталог (в зависимости от того, как часто вы хотите его запускать), и Cron автоматически позаботится о его запуске; но вы теряете гибкость настройки времени выполнения, и все скрипты будут выполняться от имени root. И, конечно, такая схема не способна поддерживать операции вроде «запретить игры утром и разрешить вечером», как в примере ранее.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Наш эксперт Д-р Крис Браун|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Внештатный консультант по Linux со степенью доктора наук по физике элементарных частиц и обладатель сертификатов Novell CLP и Red Hat RHCE. Он только что написал книгу по SUSE Linux для O’Reilly.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;По виду /etc/crontab в OpenSUSE 10.2 можно предположить, что его авторы почти полностью забросили системный crontab. Там есть только одна строка, которая выполняет скрипт /usr/lib/cron/run-crons каждые 15 минут. Этот недокументированный и непостижимый среднему уму сценарий, судя по всему, запускает скрипты в каталогах cron. hourly, cron.daily, cron.weekly, cron.monthly, хотя его логика темна.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Cron для простых смертных ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В дополнение к общесистемной таблице /etc/crontab, Vixie Cron позволяет каждому пользователю вести свою таблицу. Они хранятся под именами пользователей в /var/spool/cron/crontab (точное расположение зависит от конкретного дистрибутива).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Эти файлы имеют тот же формат, что и общесистемная таблица, за одним исключением: там нет поля идентификатора пользователя, так как пользователи запускают эти задачи только сами. Редактировать эти файлы напрямую нельзя; для этого надо запустить crontab -e, которая позволит открыть файл в определенном вами редакторе (вообще-то редактор определяется переменной окружения EDITOR). Зачем нужна оболочка crontab -e? Во-первых, она проверяет синтаксис новых записей, прежде чем их установить, а во-вторых, изменяет метку времени на каталоге spool, сообщая Cron, что один из файлов был изменен. (Что необычно для демона Linux – не надо извещать Cron об изменении файла настроек: он автоматически заметит подмену при пробуждении.)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Администраторы многопользовательских систем могут контролировать, кому из пользователей разрешено использовать Cron, размещая их имена в одном из двух файлов, /etc/cron.allow и /etc/cron. deny. Пример Может ли Фред запускать Cron? на следующей странице показывает логику принятия решения. Данная возможность, вероятно, была весьма востребована во времена машин с несколькими тысячами учетных записей; но менее актуальна сейчас, когда машины используются одним-двумя пользователями.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Заоблачный проект ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Один из аспектов Cron, который пока игнорировался – окружение, в котором выполняются скрипты. Задания обычного пользователя Cron работают в его домашнем каталоге. Число переменных окружения является минимальным. Cron не считывает скрипт входа пользователя для установки настроек; в частности, в путях поиска находятся только /usr/bin и /bin, поэтому будьте внимательны, запуская программу из crontab – собственно говоря, общепринятой практикой является использование полных путей команд.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Также принято перенаправлять стандартный вывод и канал ошибок в файл, поэтому вы часто можете видеть в Cron подобные записи: &lt;br /&gt;
 15 6 * * * /usr/bin/&lt;br /&gt;
 someprog &amp;gt; /tmp/&lt;br /&gt;
 someprog.out 2&amp;gt;&amp;amp;1 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если задание Cron производит вывод, который не был перенаправлен, то он будет послан по почте владельцу задачи.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;При желании вы можете определить собственные переменные окружения в вашей cron-таблице. Например, можно определить командный интерпретатор и расширить путь поиска с помощью таких строк:&amp;lt;br&amp;gt;&lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 PATH=/usr/bin:/bin:/usr/local/bin &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы, как и я, учитесь, экспериментируя, то, возможно, уже решили сами сделать пару записей в crontab, но если кому нужны мои предложения, попробуйте вот что: &lt;br /&gt;
&lt;br /&gt;
 FOO=BAR&lt;br /&gt;
  PATH=/usr/bin:/bin:/usr/chris/bin&lt;br /&gt;
  */5 * * * * env &amp;gt;&amp;gt; env.out&lt;br /&gt;
  */10 * * * * echo “hello from a cron job”&lt;br /&gt;
  30 * * * * wget http://metoffice.gov.uk/satpics/latest_ir.jpg &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Проверьте, что ваш crontab правильно установлен, командой crontab -i.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;3.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Займитесь чем-нибудь до конца часа. Может, дочитаете журнал?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;4.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; В конце часа проверьте, что в вашем домашнем каталоге появился файл env.out. Он должен содержать множество идентичных копий программного окружения Cron, предваренных отметками времени через пятиминутные интервалы. Вы нашли переменные окружения, которые сами определили в crontab?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;5.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Почитайте свою почту (я имею в виду не почтовый POP-ящик из Evolution, а ваш локальный почтовый файл, который можно прочесть командой mail). Видите сообщения от задачи Cron? Они должны появляться каждые 10 минут.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;6.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы получили инфракрасное изображение с метеоспутника? (при необходимости wget автоматически добавит номер к файлу, чтобы избежать его перезаписи, поэтому у вас могут встретиться имена latest_ir.jpg.1, latest_ir.jpg.2 и т.д.). Убедитесь, что Англия покрыта толстым слоем облаков. Если нет – вам, видимо, случайно достался снимок другой страны.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;7.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы не хотите держать этот crontab дальше, удалите его с помощью crontab -r.&amp;lt;br&amp;gt;&lt;br /&gt;
Первая запись в crontab в нашем эксперименте просто сохраняет среду, в которой будет выполняться задание. Вторая запись показывает, что если задача создаст вывод, не перенаправленный в файл, то он будет послан пользователю по почте. А третья запись показывает как получать инфракрасное изображение со спутника каждый час. Создание ролика из картинок будет вашим домашним заданием (как принято говорить во всех приличных учебниках).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Часть 2: Эксперимент с Anacron ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cron превосходен, но имеет слабое место: он спроектирован для машин, которые работают долгое время. Если ваша машина отключена на момент запуска задачи, то задача просто не отработает. Поэтому, если вы планируете на ночь выключать компьютер, то штатные задачи Cron (в 4:02 на Red Hat/Fedora и в 6:25 на Ubuntu) не выполнятся никогда.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:anacron_tabl.jpg|thumb]]&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы справиться с такими ситуациями, был создан новый инструмент Anacron. Согласно лингвистике, «анахроничный» означает «неуместный по хронологии»: например, документальный фильм, демонстрирующий Льва Толстого за ноутбуком, вызовет разве что смешки. Так или иначе, миссия Anacron состоит в обеспечении отработки обязательных ежедневных, еженедельных и ежемесячных задач, при условии, что компьютер будет хотя бы раз в день (или в неделю, или в месяц) включен. Anacron не интересуется точным временем, назначенным для выполнения задания. &lt;br /&gt;
Файл настройки Anacron, /etc/anacrontab, довольно прост: его синтаксис показан на диаграмме ниже. Вы видите из рисунка, что наименьший период между задачами в Anacron – это день; однако Anacron не является заменой Cron. Вы не можете велеть Anacron запустить команды в определенный час и минуту, поэтому (вспомним мой пример с Cron) нельзя использовать Anacron для отключения доступа в Интернет вечером и восстановления его утром. Чтобы отслеживать, какие программы были запущены и когда, Anacron пишет отметки времени в файлах, помещенных в каталоге /var/spool/anacron, имена которых соответствуют идентификаторам задач в его таблицах. Отметка времени содержит только день, месяц и год, когда была выполнена последняя задача, но не приводит часы, минуты или секунды.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Продвинутый дизайн ====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Anacron не является демоном в обычном смысле: демоны запускаются при загрузке системы и подстерегают удобный момент, чтобы что-то проделать, а Anacron при каждом запуске ищет, что надо выполнить, затем выходит. Резонно спросить: и когда же он в самом деле запустится? Пристальный взгляд на файлы настройки Red Hat Enterprise Linux (или Fedora) показывает, что Anacron запускается во время загрузки, через скрипт /etc/init.d/anacron. В этот момент Anacron считывает свою таблицу, проверяет отметки времени файлов в /var/spool/anacron, чтобы узнать, когда каждая задача работала в последний раз, а затем запускает задачи, подлежащие выполнению.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Для каждой задачи, определенной в таблице anacrontab, выждав определенное время, Anacron запустит команду. Задержки предназначены для того, чтобы Anacron не пытался выполнить все одним махом после загрузки машины, так как пользователь захочет приступить к делу, а не ждать, пока система освободится. Сам по себе Anacron не особо сложен в понимании. Однако все становится куда интереснее, если попытаться выявить связь между Anacron и Cron, особенно если одинаковые задачи выполняются в обеих программах. В настройках Red Hat/Fedora таблица Anacron выглядит так:&lt;br /&gt;
 1 65 cron.daily run-parts /etc/cron.daily&lt;br /&gt;
 7 70 cron.weekly run-parts /etc/cron.weekly&lt;br /&gt;
 30 75 cron.monthly run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Из этой выдержки мы видим, что Anacron просят выполнять в точности те же задачи, что и Cron, то есть в соответствующие интервалы (1, 7 или 30 дней) он использует скрипт run-parts для запуска всех скриптов в /etc/cron.daily, /etc/cron.weekly или /etc/cron.monthly. Вы заметите, что Anacron не запускает скрипты cron.hourly. Как я уже сказал, он для этого не предназначен, потому что записывает отметки времени лишь с точностью до дня.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Сойдите с моей ноги ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда одинаковые задачи выполняются и Cron, и Anacron, возникает опасность того, что Cron запустит задачу, которую уже выполнил Anacron, или наоборот. Разные дистрибутивы используют разные трюки для предотвращения этой ситуации. Если внимательно рассмотреть настройку Red Hat\Fedora, то можно обнаружить, что каталог cron.daily содержит скрипт с именем 0anacron, запускающий Anacron с опцией u. Так, мы видим, что Cron запускает Anacron каждый день. Однако опция -u просто говорит Anacron обновить отметки времени, без запуска самих программ. Фактически, Cron сообщает Anacron: «Пожалуйста, учти, что эти команды я уже выполнил сегодня (или на этой неделе, или в этом месяце...), и не трогай их». Ubuntu использует другой прием. Здесь таблица cron выглядит следующим образом: &lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;
 17 * * * * root run-parts /etc/cron.hourly&lt;br /&gt;
 25 6 * * * root test -x /usr/sbin/anacron || run-parts /etc/cron.daily&lt;br /&gt;
 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts /etc/cron.weekly&lt;br /&gt;
 52 6 1 * * root test -x /usr/sbin/anacron || run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Часть hourly выглядит понятно; она более-менее похожа на Fedora. Записи на день, неделю и месяц используют трюк с командным интерпретатором, чтобы удостовериться, что run-parts запускается только в отсутствии Anacron. (См. Магический трюк с run-parts во врезке вверху справа.) Обобщая разницу в подходах Red Hat и Ubuntu, можно сказать: «В Red Hat выигрывает Cron. В Ubuntu победа за Anacron.»&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Настройки по умолчанию для Cron и Anacron в различных дистрибутивах могут запутать, однако я бы сказал следующее: вы не обязаны использовать Cron и Anacron именно так, как определил ваш поставщик Linux. Если вы понимаете работу этих двух сервисов и синтаксис файлов настройки, можете заставить их делать то, что хотите вы.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Магический трюк с run-parts|&lt;br /&gt;
Содержание=Оператор командного интерепретатора ''ИЛИ'', ''&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;'', соединяет два логических выражения, чтобы вычислить результат в виде ''true/false''. Например ''a &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; b = true'', если a дает true или b дает true. (То есть, если команда ''a'' или команда ''b'' возвращают 0 при выходе.) Теперь – внимание, здесь вся соль! – если a возвращает ''true'', значение ''a &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; b'' будет ''true'' независимо от значения ''b''. Ясно? И в этом случае команду ''b'' даже незачем выполнять. Это довольно простое поведение интерпретатора как раз и объясняет то, что мы видим в таблице cron в Ubuntu. Команда интерпретатора ''test -x /usr/sbin/anacron &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; run-parts /etc/ cron.daily'' запустит две команды, ''test'' и (возможно) ''run- parts''. Команда ''test'' встроена в интерпретатор; ''test -x'' возвращает true, если определенный файл существует и является исполняемым. Поэтому это строка интерпретируется так: «Если существует ''/usr/sbin/anacron'', и он является исполняемым, тогда все выражение равняется true, и нет нужны запускать run-parts, чтобы это определить», или, по-другому, «запускай ''run- parts'', только если Anacron не присутствует». Quod erat demonstrandum («Что и требовалось доказать»), как говаривали древние римляне.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Часть 3: Одноразовые задачи с at ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;У нас как раз осталось место, чтобы рассказать о команде at. В отличие от Cron и Anacron, обеспечивающих повторяемые действия, at используется для планирования разовых действий в будущем. Положим, вы захотите, чтобы ваш компьютер пересобрал ядро Linux, пока вы проводите вечер в баре. Вы можете сделать это таким образом: &lt;br /&gt;
 $ at 20.30&lt;br /&gt;
 warning: commands will be executed using /bin/sh&lt;br /&gt;
 at&amp;gt; cd /usr/src/linux at&amp;gt; make all&lt;br /&gt;
 at&amp;gt; &amp;lt;EOT&amp;gt;&lt;br /&gt;
 job 2 at Wed Feb 14 19:30:00 2007 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как видите, at получает команды, которые вы хотите выполнить, через стандартный ввод до ожидания символа EOT (по умолчанию, ^D). Ваш список поставленных задач можно посмотреть через команду atq. &lt;br /&gt;
 $ atq 2 Wed Feb 14 19:30:00 2007 a chris $ &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Демон at (atd) запустит задачу в назначенный момент, экономя вам время на более интересные занятия. Правда, at не доставит вас в бар в назначенное время и не предложит напитков. Однако вы можете из вежливости купить ему пакетик чипсов.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Подробности об очереди задач хранятся в специальном каталоге (обычно /var/spool/at). Если вы определите задачу или две, а затем посмотрите содержимое этого каталога, то заметите, что в отличие от Cron, at трудится над созданием такой же среды выполнения, как если бы вы только что зашли. Демон atd ответственен за реальное выполнение задач.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы вдруг передумаете и решите отменить задачу at, можете сделать это командой atrm: &lt;br /&gt;
 $ atrm 2 &lt;br /&gt;
 $ &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Аргументом для atrm является номер задачи (в данном примере это 2).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Больше всего меня поражает в этой программе изобилие форм записи для задания времени выполнения команды. Верны все следующие варианты: &lt;br /&gt;
 $ at 14.30 tomorrow&lt;br /&gt;
 $ at noon Friday&lt;br /&gt;
 $ at 4pm + 3 days &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Моим любимцем является ключевое слово teatime как синоним 4 часов дня: &lt;br /&gt;
 $ at teatime tomorrow &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Красота! LXF&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Anacron_tabl.jpg</id>
		<title>Файл:Anacron tabl.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Anacron_tabl.jpg"/>
				<updated>2008-04-20T12:22:34Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Анатомия таблицы Анакрон&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Анатомия таблицы Анакрон&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Cron</id>
		<title>LXF95:Cron</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Cron"/>
				<updated>2008-04-20T12:12:36Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Часть 1: Осваиваем Cron === &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Ежедневное задание Cron поможет вам выполнит...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Часть 1: Осваиваем Cron ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Ежедневное задание Cron поможет вам выполнить работу, отдохнуть и поиграть. '''Д-р Крис Браун''' покажет, как настроить crontab’ы и применить Anacron, чтобы ваша система работала, как часы.'' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как у вас с греческим? Вы знаете, что  [''chronos, хронос''] означает «время»? Конечно, знаете! А в греческой мифологии Хронос был богом и воплощением времени. Поэтому у нас есть такие слова, как хронометр и хронология. Программисты никогда не славились своим правописанием, поэтому сервис Linux, который запускает определенные команды в указанное время, назван Cron.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На нашем уроке вы изучите, как настроить Cron, чтобы планировать собственные задачи, и разберетесь с настройкой файла конфигурации Cron, поставляемого с вашим дистрибутивом Linux. Cron превосходен для машин, запущенных на постоянную работу, но во второй части урока мы рассмотрим его младшего братца Anacron, более подходящего для персональных компьютеров, которые часть времени проводят выключенными.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cron существует уже довольно давно (хотя и не так давно, как Хронос). Даже в моем потрепанном руководстве шестой редакции Unix, датированном 1974 г., есть упоминание о нем. С тех пор он несколько раз переписывался, и версия, которая в настоящий момент присутствует в Linux-дистрибутивах обычно известна как Vixie Cron, написанная Полом Викси [Paul Vixie].&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Проще говоря, Cron – это демон, запускающий определенные команды в определенное время дня и/или определенные дни недели. Он ежеминутно просыпается и просматривает свои файлы настройки – известные как crontab’ы [таблицы cron] – в поисках назначенных заданий на текущую минуту. Если задание найдено, оно выполняется. Затем программа снова на минуту засыпает. Cron обычно стартует во время загрузки.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Где пригодится Cron|&lt;br /&gt;
Содержание=*Смена файлов журналов (более подробно об этом см. в статье&lt;br /&gt;
«Расчистка файлов журналов» в [[LXF92]]).&lt;br /&gt;
*Анализ файлов журналов средствами вроде Logwatch и Webalizer.&lt;br /&gt;
*Автоматическая проверка доступности обновлений в репозиториях.&lt;br /&gt;
*Перестройка базы slocate. (Эта база всех имен файлов в системе, используется для поддержки команды slocate.)&lt;br /&gt;
*Создание резервных копий файловой системы (просто не забудьте заправить ленту в привод перед уходом домой!).&lt;br /&gt;
*Стирание устаревших файлов из каталогов типа /tmp. Запуск систем обнаружения вторжений типа Tripwire. Запуск «в ночное» перекомпиляции программ.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Мы используем Cron для планирования различных заданий; некоторые примеры приведены во врезке Где пригодится Cron, ниже. Большинство дистрибутивов Linux поставляют Cron уже настроенным на выполнение некоторых задач, но добавить свои вовсе не сложно, если знаешь как. Люди проделывают с Cron невероятные вещи. Мой коллега однажды написал скрипт, собирающий статистику о занятости машины. Используя Cron, он запускал скрипт каждые 0, 15, 30 и 45 минут от начала каждого часа и отправлял результаты на центральную машину. Другой скрипт Cron запускал каждые 5, 20, 35 и 50 минут от начала каждого часа на центральной машине, чтоб обработать статистику, а затем предоставить ее в виде HTML-отчетов для инженеров и менеджеров. Он также создавал графики нагрузки на машины в зависимости от времени дня.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Другой мой коллега использовал Cron для скачивания спутниковых изображений из бюро погоды; он делал это пару лет, а затем свел их вместе и получил кино. Я знаю менеджера, который при помощи Cron отключал права на запуск всех игр в 9:00 каждое утро и затем восстанавливал их вечером; а один родитель употребил его для блокировки входа в Интернет (с помощью iptables) каждый вечер, чтобы дети не лазили по Сети всю ночь, а наутро восстанавливал доступ.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;О том, что и когда делать, Cron узнает из набора файлов, называемых crontab’ами. Прежде всего, есть /etc/crontab, иногда называемый системным crontab’ом. Анатомия одной записи в этом файле показана на диаграмме напротив. В каждое из пяти временных полей вы можете поместить: &lt;br /&gt;
*означающую любое значение. &lt;br /&gt;
*одиночное значение. &lt;br /&gt;
*Список значений, разделённых запятыми, например, 15, 25, 40. &lt;br /&gt;
*Диапазон, например 9-18.&lt;br /&gt;
*Период; обычно следует за *. Например, */5 в поле минуты будет означать «каждые пять минут». Вот несколько примеров: &lt;br /&gt;
 */10 * * 5,7,11 * root command1&lt;br /&gt;
 0 9-18 * * 1-5 root command2 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первая строка показывает, что command1 будет запускаться каждые 10 минут в мае, июле и ноябре, а command2 – раз в час во время рабочего дня (с 9 до 18) с понедельника по пятницу. Видите, какая гибкая система! Между прочим, шестое поле в записи crontab, где в наших примерах стоит root, определяет идентификатор пользователя, под которым будет запущена программа. Вы почти всегда будете видеть root в этом поле, пока осторожный администратор не воспользуется принципом наименьших привилегий и не выберет пользователя с минимально необходимыми для запуска программы правами.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Хотя вполне дозволено запускать программы прямо из crontab, сейчас в Linux-дистрибутивах пошла мода на промежуточный скрипт, обычно называемый run-parts. Например, вот системный crontab из Red Hat и Fedora: &lt;br /&gt;
 01 * * * * root run-parts /etc/cron.hourly&lt;br /&gt;
 02 4 * * * root run-parts /etc/cron.daily&lt;br /&gt;
 22 4 * * 0 root run-parts /etc/cron.weekly&lt;br /&gt;
 42 4 1 * * root run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Скрипт run-parts довольно прост: он тупо запускает все исполняемые файлы в заданном каталоге. Есть, как видите, четыре таких каталога, для разных частот запуска. Эта схема упрощает вам жизнь, поскольку надо всего лишь скопировать новый скрипт в соответствующий каталог (в зависимости от того, как часто вы хотите его запускать), и Cron автоматически позаботится о его запуске; но вы теряете гибкость настройки времени выполнения, и все скрипты будут выполняться от имени root. И, конечно, такая схема не способна поддерживать операции вроде «запретить игры утром и разрешить вечером», как в примере ранее.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Наш эксперт Д-р Крис Браун|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Внештатный консультант по Linux со степенью доктора наук по физике элементарных частиц и обладатель сертификатов Novell CLP и Red Hat RHCE. Он только что написал книгу по SUSE Linux для O’Reilly.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;По виду /etc/crontab в OpenSUSE 10.2 можно предположить, что его авторы почти полностью забросили системный crontab. Там есть только одна строка, которая выполняет скрипт /usr/lib/cron/run-crons каждые 15 минут. Этот недокументированный и непостижимый среднему уму сценарий, судя по всему, запускает скрипты в каталогах cron. hourly, cron.daily, cron.weekly, cron.monthly, хотя его логика темна.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Cron для простых смертных ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В дополнение к общесистемной таблице /etc/crontab, Vixie Cron позволяет каждому пользователю вести свою таблицу. Они хранятся под именами пользователей в /var/spool/cron/crontab (точное расположение зависит от конкретного дистрибутива).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Эти файлы имеют тот же формат, что и общесистемная таблица, за одним исключением: там нет поля идентификатора пользователя, так как пользователи запускают эти задачи только сами. Редактировать эти файлы напрямую нельзя; для этого надо запустить crontab -e, которая позволит открыть файл в определенном вами редакторе (вообще-то редактор определяется переменной окружения EDITOR). Зачем нужна оболочка crontab -e? Во-первых, она проверяет синтаксис новых записей, прежде чем их установить, а во-вторых, изменяет метку времени на каталоге spool, сообщая Cron, что один из файлов был изменен. (Что необычно для демона Linux – не надо извещать Cron об изменении файла настроек: он автоматически заметит подмену при пробуждении.)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Администраторы многопользовательских систем могут контролировать, кому из пользователей разрешено использовать Cron, размещая их имена в одном из двух файлов, /etc/cron.allow и /etc/cron. deny. Пример Может ли Фред запускать Cron? на следующей странице показывает логику принятия решения. Данная возможность, вероятно, была весьма востребована во времена машин с несколькими тысячами учетных записей; но менее актуальна сейчас, когда машины используются одним-двумя пользователями.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Заоблачный проект ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Один из аспектов Cron, который пока игнорировался – окружение, в котором выполняются скрипты. Задания обычного пользователя Cron работают в его домашнем каталоге. Число переменных окружения является минимальным. Cron не считывает скрипт входа пользователя для установки настроек; в частности, в путях поиска находятся только /usr/bin и /bin, поэтому будьте внимательны, запуская программу из crontab – собственно говоря, общепринятой практикой является использование полных путей команд.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Также принято перенаправлять стандартный вывод и канал ошибок в файл, поэтому вы часто можете видеть в Cron подобные записи: &lt;br /&gt;
 15 6 * * * /usr/bin/&lt;br /&gt;
 someprog &amp;gt; /tmp/&lt;br /&gt;
 someprog.out 2&amp;gt;&amp;amp;1 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если задание Cron производит вывод, который не был перенаправлен, то он будет послан по почте владельцу задачи.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;При желании вы можете определить собственные переменные окружения в вашей cron-таблице. Например, можно определить командный интерпретатор и расширить путь поиска с помощью таких строк:&amp;lt;br&amp;gt;&lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 PATH=/usr/bin:/bin:/usr/local/bin &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы, как и я, учитесь, экспериментируя, то, возможно, уже решили сами сделать пару записей в crontab, но если кому нужны мои предложения, попробуйте вот что: &lt;br /&gt;
&lt;br /&gt;
 FOO=BAR&lt;br /&gt;
  PATH=/usr/bin:/bin:/usr/chris/bin&lt;br /&gt;
  */5 * * * * env &amp;gt;&amp;gt; env.out&lt;br /&gt;
  */10 * * * * echo “hello from a cron job”&lt;br /&gt;
  30 * * * * wget http://metoffice.gov.uk/satpics/latest_ir.jpg &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Проверьте, что ваш crontab правильно установлен, командой crontab -i.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;3.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Займитесь чем-нибудь до конца часа. Может, дочитаете журнал?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;4.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; В конце часа проверьте, что в вашем домашнем каталоге появился файл env.out. Он должен содержать множество идентичных копий программного окружения Cron, предваренных отметками времени через пятиминутные интервалы. Вы нашли переменные окружения, которые сами определили в crontab?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;5.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Почитайте свою почту (я имею в виду не почтовый POP-ящик из Evolution, а ваш локальный почтовый файл, который можно прочесть командой mail). Видите сообщения от задачи Cron? Они должны появляться каждые 10 минут.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;6.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы получили инфракрасное изображение с метеоспутника? (при необходимости wget автоматически добавит номер к файлу, чтобы избежать его перезаписи, поэтому у вас могут встретиться имена latest_ir.jpg.1, latest_ir.jpg.2 и т.д.). Убедитесь, что Англия покрыта толстым слоем облаков. Если нет – вам, видимо, случайно достался снимок другой страны.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;7.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы не хотите держать этот crontab дальше, удалите его с помощью crontab -r.&amp;lt;br&amp;gt;&lt;br /&gt;
Первая запись в crontab в нашем эксперименте просто сохраняет среду, в которой будет выполняться задание. Вторая запись показывает, что если задача создаст вывод, не перенаправленный в файл, то он будет послан пользователю по почте. А третья запись показывает как получать инфракрасное изображение со спутника каждый час. Создание ролика из картинок будет вашим домашним заданием (как принято говорить во всех приличных учебниках).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Часть 2: Эксперимент с Anacron ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cron превосходен, но имеет слабое место: он спроектирован для машин, которые работают долгое время. Если ваша машина отключена на момент запуска задачи, то задача просто не отработает. Поэтому, если вы планируете на ночь выключать компьютер, то штатные задачи Cron (в 4:02 на Red Hat/Fedora и в 6:25 на Ubuntu) не выполнятся никогда.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы справиться с такими ситуациями, был создан новый инструмент Anacron. Согласно лингвистике, «анахроничный» означает «неуместный по хронологии»: например, документальный фильм, демонстрирующий Льва Толстого за ноутбуком, вызовет разве что смешки. Так или иначе, миссия Anacron состоит в обеспечении отработки обязательных ежедневных, еженедельных и ежемесячных задач, при условии, что компьютер будет хотя бы раз в день (или в неделю, или в месяц) включен. Anacron не интересуется точным временем, назначенным для выполнения задания. &lt;br /&gt;
Файл настройки Anacron, /etc/anacrontab, довольно прост: его синтаксис показан на диаграмме ниже. Вы видите из рисунка, что наименьший период между задачами в Anacron – это день; однако Anacron не является заменой Cron. Вы не можете велеть Anacron запустить команды в определенный час и минуту, поэтому (вспомним мой пример с Cron) нельзя использовать Anacron для отключения доступа в Интернет вечером и восстановления его утром. Чтобы отслеживать, какие программы были запущены и когда, Anacron пишет отметки времени в файлах, помещенных в каталоге /var/spool/anacron, имена которых соответствуют идентификаторам задач в его таблицах. Отметка времени содержит только день, месяц и год, когда была выполнена последняя задача, но не приводит часы, минуты или секунды.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Продвинутый дизайн ====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Anacron не является демоном в обычном смысле: демоны запускаются при загрузке системы и подстерегают удобный момент, чтобы что-то проделать, а Anacron при каждом запуске ищет, что надо выполнить, затем выходит. Резонно спросить: и когда же он в самом деле запустится? Пристальный взгляд на файлы настройки Red Hat Enterprise Linux (или Fedora) показывает, что Anacron запускается во время загрузки, через скрипт /etc/init.d/anacron. В этот момент Anacron считывает свою таблицу, проверяет отметки времени файлов в /var/spool/anacron, чтобы узнать, когда каждая задача работала в последний раз, а затем запускает задачи, подлежащие выполнению.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Для каждой задачи, определенной в таблице anacrontab, выждав определенное время, Anacron запустит команду. Задержки предназначены для того, чтобы Anacron не пытался выполнить все одним махом после загрузки машины, так как пользователь захочет приступить к делу, а не ждать, пока система освободится. Сам по себе Anacron не особо сложен в понимании. Однако все становится куда интереснее, если попытаться выявить связь между Anacron и Cron, особенно если одинаковые задачи выполняются в обеих программах. В настройках Red Hat/Fedora таблица Anacron выглядит так:&lt;br /&gt;
 1 65 cron.daily run-parts /etc/cron.daily&lt;br /&gt;
 7 70 cron.weekly run-parts /etc/cron.weekly&lt;br /&gt;
 30 75 cron.monthly run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Из этой выдержки мы видим, что Anacron просят выполнять в точности те же задачи, что и Cron, то есть в соответствующие интервалы (1, 7 или 30 дней) он использует скрипт run-parts для запуска всех скриптов в /etc/cron.daily, /etc/cron.weekly или /etc/cron.monthly. Вы заметите, что Anacron не запускает скрипты cron.hourly. Как я уже сказал, он для этого не предназначен, потому что записывает отметки времени лишь с точностью до дня.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Сойдите с моей ноги ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда одинаковые задачи выполняются и Cron, и Anacron, возникает опасность того, что Cron запустит задачу, которую уже выполнил Anacron, или наоборот. Разные дистрибутивы используют разные трюки для предотвращения этой ситуации. Если внимательно рассмотреть настройку Red Hat\Fedora, то можно обнаружить, что каталог cron.daily содержит скрипт с именем 0anacron, запускающий Anacron с опцией u. Так, мы видим, что Cron запускает Anacron каждый день. Однако опция -u просто говорит Anacron обновить отметки времени, без запуска самих программ. Фактически, Cron сообщает Anacron: «Пожалуйста, учти, что эти команды я уже выполнил сегодня (или на этой неделе, или в этом месяце...), и не трогай их». Ubuntu использует другой прием. Здесь таблица cron выглядит следующим образом: &lt;br /&gt;
 SHELL=/bin/sh&lt;br /&gt;
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;
 17 * * * * root run-parts /etc/cron.hourly&lt;br /&gt;
 25 6 * * * root test -x /usr/sbin/anacron || run-parts /etc/cron.daily&lt;br /&gt;
 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts /etc/cron.weekly&lt;br /&gt;
 52 6 1 * * root test -x /usr/sbin/anacron || run-parts /etc/cron.monthly &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Часть hourly выглядит понятно; она более-менее похожа на Fedora. Записи на день, неделю и месяц используют трюк с командным интерпретатором, чтобы удостовериться, что run-parts запускается только в отсутствии Anacron. (См. Магический трюк с run-parts во врезке вверху справа.) Обобщая разницу в подходах Red Hat и Ubuntu, можно сказать: «В Red Hat выигрывает Cron. В Ubuntu победа за Anacron.»&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Настройки по умолчанию для Cron и Anacron в различных дистрибутивах могут запутать, однако я бы сказал следующее: вы не обязаны использовать Cron и Anacron именно так, как определил ваш поставщик Linux. Если вы понимаете работу этих двух сервисов и синтаксис файлов настройки, можете заставить их делать то, что хотите вы.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Магический трюк с run-parts|&lt;br /&gt;
Содержание=Оператор командного интерепретатора ''ИЛИ'', ''&amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt;'', соединяет два логических выражения, чтобы вычислить результат в виде ''true/false''. Например ''a &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; b = true'', если a дает true или b дает true. (То есть, если команда ''a'' или команда ''b'' возвращают 0 при выходе.) Теперь – внимание, здесь вся соль! – если a возвращает ''true'', значение ''a &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; b'' будет ''true'' независимо от значения ''b''. Ясно? И в этом случае команду ''b'' даже незачем выполнять. Это довольно простое поведение интерпретатора как раз и объясняет то, что мы видим в таблице cron в Ubuntu. Команда интерпретатора ''test -x /usr/sbin/anacron &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; run-parts /etc/ cron.daily'' запустит две команды, ''test'' и (возможно) ''run- parts''. Команда ''test'' встроена в интерпретатор; ''test -x'' возвращает true, если определенный файл существует и является исполняемым. Поэтому это строка интерпретируется так: «Если существует ''/usr/sbin/anacron'', и он является исполняемым, тогда все выражение равняется true, и нет нужны запускать run-parts, чтобы это определить», или, по-другому, «запускай ''run- parts'', только если Anacron не присутствует». Quod erat demonstrandum («Что и требовалось доказать»), как говаривали древние римляне.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Часть 3: Одноразовые задачи с at ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;У нас как раз осталось место, чтобы рассказать о команде at. В отличие от Cron и Anacron, обеспечивающих повторяемые действия, at используется для планирования разовых действий в будущем. Положим, вы захотите, чтобы ваш компьютер пересобрал ядро Linux, пока вы проводите вечер в баре. Вы можете сделать это таким образом: &lt;br /&gt;
 $ at 20.30&lt;br /&gt;
 warning: commands will be executed using /bin/sh&lt;br /&gt;
 at&amp;gt; cd /usr/src/linux at&amp;gt; make all&lt;br /&gt;
 at&amp;gt; &amp;lt;EOT&amp;gt;&lt;br /&gt;
 job 2 at Wed Feb 14 19:30:00 2007 &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как видите, at получает команды, которые вы хотите выполнить, через стандартный ввод до ожидания символа EOT (по умолчанию, ^D). Ваш список поставленных задач можно посмотреть через команду atq. &lt;br /&gt;
 $ atq 2 Wed Feb 14 19:30:00 2007 a chris $ &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Демон at (atd) запустит задачу в назначенный момент, экономя вам время на более интересные занятия. Правда, at не доставит вас в бар в назначенное время и не предложит напитков. Однако вы можете из вежливости купить ему пакетик чипсов.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Подробности об очереди задач хранятся в специальном каталоге (обычно /var/spool/at). Если вы определите задачу или две, а затем посмотрите содержимое этого каталога, то заметите, что в отличие от Cron, at трудится над созданием такой же среды выполнения, как если бы вы только что зашли. Демон atd ответственен за реальное выполнение задач.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы вдруг передумаете и решите отменить задачу at, можете сделать это командой atrm: &lt;br /&gt;
 $ atrm 2 &lt;br /&gt;
 $ &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Аргументом для atrm является номер задачи (в данном примере это 2).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Больше всего меня поражает в этой программе изобилие форм записи для задания времени выполнения команды. Верны все следующие варианты: &lt;br /&gt;
 $ at 14.30 tomorrow&lt;br /&gt;
 $ at noon Friday&lt;br /&gt;
 $ at 4pm + 3 days &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Моим любимцем является ключевое слово teatime как синоним 4 часов дня: &lt;br /&gt;
 $ at teatime tomorrow &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Красота! LXF&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Akelos</id>
		<title>LXF95:Akelos</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Akelos"/>
				<updated>2008-03-29T02:28:35Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Не думайте, что у Ruby есть Rails, а у PHP нет. С помощью Akelos, динамические&lt;br /&gt;
программы будут лететь у вас из-под пальцев, утверждает '''Дэн Фрост'''.''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ruby on Rails взял штурмом мир программистов, вызвав у тех из нас, кто все еще пишет на PHP, жуткую зависть к такому элегантному методу работы. Если вы еще не видели пятнадцати минутный ролик Look at what I’m not doing («Смотри, чего я НЕ делаю»)на www.rubyonrails.org – посмотрите непременно: он запросто сагитирует вас плюнуть на PHP и перейти на Ruby.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вся магия Rails – в метапрограммировании. Немалая часть кода создается за вас, так что вам не приходится всякий раз вспоминать, где какой класс находится и куда поместить такую-сякую функцию. Это сильно упрощает работу в рамках архитектуры: обучение ускоряется, и надо меньше задумываться в процессе работы. Таков Rails; но ведь у сообщества PHP естб и собственные системы разработки. У каждой из них свои сильные и слаюые стороны, и Akelos – это Rails для PHP, нас колько такое только возможно. Большая часть элементов архитектуры сохранилась. за исключением тех моментов, которые на PHP лучше сделать иначе. Akelos написан так, что совместим и с PHP 4,  и c PHP 5, так что его можно установить практически на любом сервере. Это было одним из важных аргументов в пользу Akelos в нашей компании, так как, хотя мы стараемся в основном использовать PHP 5, иногда нам приходится разрабатывать приложения для работы на старом оборудовании или же для клиентов, которые просто не хотят обновлений.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Все это делает Akelos идеальным для быстрого развертывания приложений, которые должны работать где угодно. На нашем уроке мы рассмотрим его и создадим простенькое web-приложение, чтобы вы поняли, как использовать каркас на полную катушку. В итоге вы получите полноценную рабочую программу, но учтите, что на серьезное рассмотрение у нас здесь места мало – мы только пройдемся по верхам. Советую самостоятельно зарыться в код и разобраться, на что он еще способен!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Чего вы не делаете ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Благодаря метапрограммированию, вы можете изучить Akelos очень быстро, потому что он очень многое сделает за вас. При изучении других сред программирования вам нужно было помнить, где расположить классы каких типов, какие функции какие классы реализуют, и как применять объекты каждого из типов. На Akelos вам не нужно изучать, что такое контроллер и куда его засунуть: вы можете предоставить его генерирование программе. Она умеет создавать целые семейства классов и файлов при помощи команды scaffold.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Давайте установим Akelos и попробуем в деле. Вам понадобится сервер Apache с MySQL, SQLite или PostgreSQL. Возьмите Akelos с www.akelos.org или из каталога Magazine/Akelos на приложенном диске. Распакуйте файл в каталог (он будет называться akelos_framework), расположенный внутри корневого каталога web-сервера. В целях нашего урока назовем этот каталог akelos, так что теперь вы можете открыть его в браузере по адресу http://localhost/akelos. Выполните инструкции, чтобы завершить установку. Вам понадобится сервер Apache с MySQL, SQLight или PostgereSQL. Возьмите Akelos с www.akelos.org или из каталога Magazine/Akelos на приложеном диске. Распакуйте файл в каталог (он будет называется akelos_framework), расположенный внутри корневого каталога web-сервера. В целях нашего урока назавём этот каталог akelos, так что теперь вы можете открыть его в браузере по адресу http://localhost/akelos.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Выполните инструкции, чтобы завершить установку. Вам понадобится настроить 3 базы данных – одну для разработки, одну для эксплуатации и одну для тестирования. Для тонкой настройки вам может потребоваться изменить первую строчку файла /scripts/generate и некоторых сценариев так, чтобы она указывала на исполняемый файл PHP для работы в коммандной строке:&lt;br /&gt;
 '#!/usr/bin/env php'&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В дальнейшем я предполагаю, что вы установили в систему каталог с названием akelos, так что URL для доступа к нему должен быть http://localhost/akelos/public. Если у вас возникли сложности с просмотром примеров в браузере – проверьте, как начинается правило RewrriteBase в файле public/.htaccess – оно должно содержатьь путь к каталогу public.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Итак, мы можем начинать. С помощью вашей любимой оболочки для 3ev. командной строки перейдите в каталог с распакованным приложением и выполните команду generate:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 cd /path/to/untarred/akelos/&lt;br /&gt;
 scripts/generate&lt;br /&gt;
&lt;br /&gt;
Вы увидите некоторое описание, что делает generate и как ее использовать. На следующей странице, во врезке «Сценарии» вы найдете список команд, которые она умеет выполнять. Пока запустите &lt;br /&gt;
 ./scripts/generate scaffold Post&lt;br /&gt;
а затем откройте в браузере адрес 'http://localhost/akelos/public/post' (не забудьте изменить адрес, если вы установили Akelos в какую-то другую директорию). Вы увидите экран со ссылкой для создания нового Post’а, довольно пустынный, однако кнопка Create New Post там есть. Кликните на нее и введите какие-нибудь данные. После сохранения записи вы сможете увидеть ее на 'http://localhost/akelos/public/' post, а также сможете изменить или удалить ее, пользуясь соответствующими ссылками.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Команда scaffold генерирует для вас приложение, уже имеющее базовый набор функций, ожидаемый от web-приложения: создание, редактирование и удаление записи в базе данных из браузера. В этом вся прелесть метапрограммирования – большую часть работы делать не надо!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Но что все-таки произошло? А вот что: генератор кода создал для вас каркас приложения, включающий контроллер, помощник и несколько видов. В нашем случае он так же создал простой класс model, состоящий из названия и описания, что и позволило вам заполнять эти поля. Одной командой – generate scaffold – вы выполнили основную часть работы по написанию приложения для создания и редактирования записей базы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Взгляд на вид ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вид – это такая штука, которую видит пользователь. Это буквально и есть внешний вид программы. Все виды вашего приложения должны располагаться в папке app/views. Когда вы открываете страницу приложения Akelos, соответствующий вид определяет, как она выглядит. Например, при открытии http://localhost/akelos/public/post/listing вызывается шаблон views/post/listing.tpl. Когда вы щелкнете на какойнибудь элемент списка, в работу вступит view.tpl.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откроем /views/post/listing.tpl и рассмотрим его содержимое. Вы увидите, что шаблоны в основном состоят из HTML и PHP, однако в дополнение к ним используется набор специальных тэгов [sintag], позволяющих избежать повторов в коде. Систему тэгов разработала та же команда, которая написала Akelos. Для выделения тэгов они использовали фигурные скобки – { и }.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В файле listing.tpl можно найти следующий участок кода:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{loop posts}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;tr {?posts_odd_position}class=”odd”{end}&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{loop content_columns}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;&amp;lt;?php echo $post-&amp;gt;get($content_column)?&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{end} …&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первая строка начинает цикл по списку объектов Post, а четвертая строчка выводит значение очередного свойства текущего объекта. Попробуйте заменить текст от {loop content_columns} до {end} двумя строчками ниже на&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;&amp;lt;b&amp;gt;{post.name}&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;{post.description}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;{post.created_at}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;{post.updated_at}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Все, что мы изменили – это сделали индивидуальную обработку каждого из полей и добавили жирный шрифт для имени записи, однако это неплохая иллюстрация использования спецтэгов. Чтобы понять, зачем они нужны для некоторых задач в PHP, откройте файл views/ post/compiled/listing.tpl.php. Посмотрите, на что был заменен одинединственный тэг {look posts}:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;empty($posts) ? null : $post_loop_counter = 0;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;empty($posts) ? null : $posts_available = count($posts);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;if(!empty($posts))&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;foreach ($posts as $post_loop_key=&amp;gt;$post){&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_loop_counter++;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_is_first = $post_loop_counter === 1;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_is_last = $post_loop_counter === $posts_available;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_odd_position = $post_loop_counter%2;&lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На этом можно пальцы вывихнуть! Если вам придет охота самим организовать цикл на PHP, ничто не мешает это сделать, но система спецтэгов экономит время. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как насчет дизайна приложения? Главная HTML-страница вашего приложения – app/views/layout/post.tpl, а таблица стилей по умолчанию для каркаса Akelos – public/stylesheets/scaffold.css. Файл CSS подключается к шаблонам строкой &lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?php echo $asset_tag_helper-&amp;gt;stylesheet_link_tag(‘scaffold’) ?&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Можно редактировать файл scaffold.css напрямую, но почему бы не разработать для вашей программы свой собственный стиль? Создайте файл /public/stylesheets/myapp.css и внесите в него следующие определения: &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;h1 {&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;border-bottom : thin solid black;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;padding : 3px;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;} &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Осталось добавить в заголовок HTML файла views/layout/post.tpl следующую строчку:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;echo $asset_tag_helper-&amp;gt;stylesheet_link_tag(‘myapp’) ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Конечно, вы можете как использовать один и тот же CSS-файл для всех контроллеров приложения, так и определять для каждого из них свой собственный файл и внешний вид.&lt;br /&gt;
&lt;br /&gt;
=== Контролируем контроллер  ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь рассмотрим контроллеры. Они определяют, что пользователь увидит и когда, а также соответствие URL-адреса и действия, которое можно выполнить по этому адресу. Когда вы посещаете book/edit/123/, Akelos определяет, какой контроллер вы хотите использовать, какая операция контроллера была вызвана и к какой записи его нужно применить. В этом примере контроллером будет book, операцией – edit, а номер записи 123.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откроем app/controller/post_controller.php и пробежимся взглядом по его структуре: &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;class PostController extends ApplicationController&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// Index is the default action&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function index() { /* нечто... */ }&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// the listing function&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function listing() { /* нечто... */ }&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function show() { /* нечто... */ }&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function edit() { /* нечто... */ } ... }&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Каждая функция контроллера соответствует некому действию, которое может предпринять пользователь – получить список записей, просмотреть их или отредактировать. Сгенерированный нами каркас имеет набор основных операций, свойственных web-приложению, но вы можете добавить к контроллеру все что угодно. Для этого сначала добавляется функция:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function hello()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// вам совершенно не обязательно что-то тут писать&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;После создания функции нужно добавить TPL-файл с тем же именем в каталог app/views/post/, так что создадим app/views/post/hello.tpl и поместим в него следующую строчку:&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;Н1&amp;gt;Hello, World!&amp;lt;/Н1&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;А теперь зайдите на http://localhost/akelos/public/post/hello. Возможно, именно с этого нам бы и следовало начинать, однако с Akelos «Hello World» написать сложнее, чем полноценное web-приложение!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Функции контроллера могут выводить текст напрямую, без использования шаблонов – через функцию render(). Разовьем нашу функцию и обновим страницу в браузере:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;function hello()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;render( array&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;‘text’ =&amp;gt; ‘Hello, World - from inside the controller’&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;)&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Этот вызов игнорирует шаблон, выводя данные прямо из контроллера, и его можно использовать для функций Ajax, как мы увидим в дальнейшем. &lt;br /&gt;
Наконец, операции контроллера можно перенаправлять на другие операции. Изменим функцию hello() еще раз:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function hello() {&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;this-&amp;gt;renderAction(‘listing’); } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь, когда вы зайдете на public/post/hello, вас перенаправят на страницу со списком записей, точно так же, как это происходит при обработке операции index(). Если вы хотите узнать, на что еще способен контроллер, обратите внимание на функции класса lib/AkActionController.php.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Про инсталляторы ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вместе с Akelos вы получаете мощный инструмент управления таблицами баз данных, включая поддержку изменений и обновлений структуры. Это может сэкономить вам часы возни с SQL-кодом и значительно упростить процесс разворачивания и обновления вашей программы. Команда generate scaffold, которую мы использовали раньше, создала в том числе и файл инсталлятора app/installers/post_installer.php. Откроем его и посмотрим:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function up_1()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;createTable(‘posts’, “&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;id,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;name,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;description,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;created_at,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;updated_at&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;“);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function down_1()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;dropTable(‘posts’);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Инсталлятор создает таблицу под названием posts c полями id, name, description, created_at и updated_on. Команда generate scaffold тоже создает таблицу автоматически, но вы можете пересоздать ее вручную: &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;./scripts/migrate Post uninstall&lt;br /&gt;
(эта команда вызывает down_1(), при этом удаляя таблицу), и вернуть ее обратно с помощью&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;./scripts/migrate Post install&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(вызов up_1() создаст таблицу заново).&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если после этого вы зайдете на http://localhost/akelos/public/post, то увидите, что все записи исчезли, а таблица была пересоздана.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как вы поняли, функция up_1() используется для установки, а down_1() – для деинсталляции. Точнее будет сказать, что up_1() используется для увеличения номера версии, а down_1() – для уменьшения. Чтобы разобраться в этом, создадим новую функцию инсталлятора с названием up_2():&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function up_2() { $this-&amp;gt;addColumn(‘posts’, ‘extracol’); }&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Запустите команду install снова и посмотрите, как теперь выглядит таблица в базе данных, с помощью клиента MySQL. Видно, что инсталлятор выполнил команду ALTER TABLE posts ADD extracol, добавив в таблицу новый столбец. &lt;br /&gt;
Соответствующие функции down_ служат для отката изменений, так что давайте создадим down_2(), действие которой обратно действию up_2():&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function down_2() { $this-&amp;gt;removeColumn(‘posts’, ‘extracol’); }&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь запустите uninstall, и увидите, что были запущены две SQL-команды:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;SQL ALTER TABLE posts DROP COLUMN extracol&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;...&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;DROP TABLE posts&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Эти команды соответствуют вызовам down_2() и down_1(). Функции отката должны точно соответствовать функциям установка, чтобы при установке от откате не было никаких ошибок.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Функции createTable(), dropTable и removeColumn() – это просто оболочки для библиотеки доступа к данным AdoDB, которую Akelos использует при всех операциях с базой данных. У Akelos есть еще несколько полезных функций, таких как changeColumn(), renameColumn(), addIndex() и removeIndex(). Если вам нужен прямо доступ к объекту AdoDB из инсталлятора, используйте $this-&amp;gt;data_dictionary.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Полезно обдумать, какие изменения вносит инсталлятор в процесс разработки и установки приложения. Работающие в группе должны знать, как сложно бывает выкрутиться, когда вносимые в структуру данных изменения конфликтуют между собой – на разрешение таких конфликтов тратится куча времени и нервов. Используя функции повышения и понижения версии базы данных, разработчики могут легко менять структуру и не беспокоиться о конфликтах. Если же конфликт все-таки возникает, достаточно бывает слить две PHP-функции в одну или же написать функцию up_() заново с учетом конфликтных требований.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Маленькие помощники Akelos ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;А теперь поиграем с помощниками, предоставляющими полезные функции, не являющиеся частью модели, вида или контроллера. К ним относятся задачи генерации URL, обработки текста, создания простых меню и построения HTML-тэгов. Вместе с Akelos поставляется целая куча помощников, каждый из которых отвечает за свой тип функциональности. Например, url_helper содержит функции построения URL (например, составление ссылки на какое-то действие определенного контроллера):&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= $url_helper-&amp;gt;link_to(‘Go to the help page’, array(‘action’ =&amp;gt; ‘help’) );&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;?&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Второй ценный помощник – menu_helper. Он умеет генерировать меню возможных операций контроллера, например&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= $menu_helper-&amp;gt;menu_for_controllers(array(‘post’=&amp;gt;array(‘help’, ‘list’))) ?&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Понравилось? Перечисляя интересных помощников, нельзя не упомянуть про form_helper и date_helper. Очень полезно изучить их возможности (да и остальных тоже), для этого можно заглянуть в lib/AkActionView/helpers/.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В добавление к помощникам, содержащим основные функции для использования во всех приложениях, при каждой генерации каркаса создается свой собственный помощник. Например, при создании каркаса Foobar будет сгенерирован foobar_helper, а чтобы вызвать его из кода приложения, можно воспользоваться переменной $foobar_helper. Вернемся к нашему приложению: откройте файл app/helpers/post_ helper.php и добавьте в него функцию &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function quick_destroy(&amp;amp; $record)&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return $this-&amp;gt;_controller-&amp;gt;url_helper-&amp;gt;button_to(‘Delete in 1 click’,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;array(‘action’ =&amp;gt; ‘quick_destroy’,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;‘id’ =&amp;gt; $record-&amp;gt;getId()), array( ‘confirm’ =&amp;gt; ‘Are you sure?’ ));&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
А затем в файл app/views/post/listing.tpl впишите строчку &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”operation”&amp;gt;&amp;lt;?php echo $post_helper-&amp;gt;quick_ destroy($post)?&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Осталось только добавить в контроллер следующую функцию: &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function quick_destroy()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{  &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;if(!empty($this-&amp;gt;params[‘id’])){&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;post = $this-&amp;gt;Post-&amp;gt;find($this-&amp;gt;params[‘id’]);&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;post-&amp;gt;destroy(); $this-&amp;gt;redirectTo(array(‘action’ =&amp;gt; ‘listing’));&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Обновите страницу со списком записей – и увидите новый столбец Delete in 1 click. При щелчке по любой записи в этом столбце, JavaScript выдаст окно с вопросом, уверены ли вы, а после ответа «Да» запись будет удалена без всяких проволочек.&lt;br /&gt;
&lt;br /&gt;
=== Ajax, но без JavaScript ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Технология Ajax позволяет загружать фрагменты HTML на страницу после ее отображения и обрабатывать формы и команды, не перезагружая заново всю страницу целиком. Это стало очень популярным, поскольку так проще и пользователям, и разработчикам. Rails сделал Ajax еще более популярным, так как скрывает большую часть кода на JavaScript. И, как вы можете ожидать, Akelos умеет делать то же самое. Начнем с добавления следующей строки в HTML-заголовок файла app/ views/layouts/post.tpl:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= echo $asset_tag_helper-&amp;gt;stylesheet_link_tag(‘prototype’) ?&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Помощник asset_tag_helper используется для подключения &lt;br /&gt;
JavaScript, CSS и других внешних файлов, и добавит любой JavaScript из каталога public/javascripts/ таким же образом.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Затем создадим операцию контроллера ademo (см. раздел «Контролируем приложение» на стр. XX, если вы забыли, как это делается). Кроме того, нам понадобится файл app/views/post/ademo.tpl:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;Н1&amp;gt;Quick AJAX example&amp;lt;/Н1&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= $prototype_helper-&amp;gt;link_to_remote(‘&amp;gt;Load the listing – by AJAX!’, array(‘url’ =&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;array(‘action’ =&amp;gt; ‘getme’), ‘update’ =&amp;gt; ‘updateme’ ) ); ?&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;div id=”updateme” style=”padding : 10px; border : thin solid black;”&amp;gt;...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ну и, наконец, создадим функцию контроллера с названием getme:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function getme() { &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;render( array( ‘text’ =&amp;gt; ‘Whooa! How easy was that?’ ) ); &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;} &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откройте в браузере http://localhost/akelos/public/post/ajax, щелкните на ссылку, и вы увидите маленький текстовый блок, загруженный на страницу без перезагрузки. Таким же способом можно загрузить на страницу все что угодно – другие страницы, формы, картинки – и вам не придется даже задумываться о JavaScript, потому что за него отвечают функции помощника.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы никогда не имели дела с Ajax, система наподобие Akelos – не самый лучший способ изучить его, потому что он скрывает от вас много тонких деталей. Однако вы можете оценить, насколько быстрее делать вещи именно таким способом.&amp;lt;br&amp;gt;&lt;br /&gt;
=== Будущее Akelos ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Мы приближаемся к завершению нашего краткого обзора каркаса, который сторицей отплатит за время, затраченное на его изучение. Мы даже не успели рассмотреть такие вещи, как обработка взаимосвязей в базе данных, но вы уже могли понять силу метапрограммирования и чистоту архитектуры – наследие Rails.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В моей фирме Akelos используется уже давно, и мы нашли, что он очень удобен для прототипирования, да еще и позволяет в ноль секунд создавать приложения. Благодаря совместимости с PHP4 и PHP5 он просто идеален в том случае, когда заранее неизвестно, в какой среде придется работать программе.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В данный момент существует небольшое, но активно растущее сообщество посвященное Akelos, и Берми Феррер [Bermi Ferrer], ведущий программист, планирует поработать над документацией и перезапустить web-сайт. ''LXF''&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Akelos</id>
		<title>LXF95:Akelos</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Akelos"/>
				<updated>2008-03-29T02:15:49Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ruby on Rails взял штурмом мир программистов, вызвав у тех из нас, кто все еще пишет на PHP, жуткую зависть к такому элегантному методу работы. Если вы еще не видели пятнадцати минутный ролик Look at what I’m not doing («Смотри, чего я НЕ делаю»)на www.rubyonrails.org – посмотрите непременно: он запросто сагитирует вас плюнуть на PHP и перейти на Ruby.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вся магия Rails – в метапрограммировании. Немалая часть кода создается за вас, так что вам не приходится всякий раз вспоминать, где какой класс находится и куда поместить такую-сякую функцию. Это сильно упрощает работу в рамках архитектуры: обучение ускоряется, и надо меньше задумываться в процессе работы. Таков Rails; но ведь у сообщества PHP естб и собственные системы разработки. У каждой из них свои сильные и слаюые стороны, и Akelos – это Rails для PHP, нас колько такое только возможно. Большая часть элементов архитектуры сохранилась. за исключением тех моментов, которые на PHP лучше сделать иначе. Akelos написан так, что совместим и с PHP 4,  и c PHP 5, так что его можно установить практически на любом сервере. Это было одним из важных аргументов в пользу Akelos в нашей компании, так как, хотя мы стараемся в основном использовать PHP 5, иногда нам приходится разрабатывать приложения для работы на старом оборудовании или же для клиентов, которые просто не хотят обновлений.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Все это делает Akelos идеальным для быстрого развертывания приложений, которые должны работать где угодно. На нашем уроке мы рассмотрим его и создадим простенькое web-приложение, чтобы вы поняли, как использовать каркас на полную катушку. В итоге вы получите полноценную рабочую программу, но учтите, что на серьезное рассмотрение у нас здесь места мало – мы только пройдемся по верхам. Советую самостоятельно зарыться в код и разобраться, на что он еще способен!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Чего вы не делаете ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Благодаря метапрограммированию, вы можете изучить Akelos очень быстро, потому что он очень многое сделает за вас. При изучении других сред программирования вам нужно было помнить, где расположить классы каких типов, какие функции какие классы реализуют, и как применять объекты каждого из типов. На Akelos вам не нужно изучать, что такое контроллер и куда его засунуть: вы можете предоставить его генерирование программе. Она умеет создавать целые семейства классов и файлов при помощи команды scaffold.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Давайте установим Akelos и попробуем в деле. Вам понадобится сервер Apache с MySQL, SQLite или PostgreSQL. Возьмите Akelos с www.akelos.org или из каталога Magazine/Akelos на приложенном диске. Распакуйте файл в каталог (он будет называться akelos_framework), расположенный внутри корневого каталога web-сервера. В целях нашего урока назовем этот каталог akelos, так что теперь вы можете открыть его в браузере по адресу http://localhost/akelos. Выполните инструкции, чтобы завершить установку. Вам понадобится сервер Apache с MySQL, SQLight или PostgereSQL. Возьмите Akelos с www.akelos.org или из каталога Magazine/Akelos на приложеном диске. Распакуйте файл в каталог (он будет называется akelos_framework), расположенный внутри корневого каталога web-сервера. В целях нашего урока назавём этот каталог akelos, так что теперь вы можете открыть его в браузере по адресу http://localhost/akelos.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Выполните инструкции, чтобы завершить установку. Вам понадобится настроить 3 базы данных – одну для разработки, одну для эксплуатации и одну для тестирования. Для тонкой настройки вам может потребоваться изменить первую строчку файла /scripts/generate и некоторых сценариев так, чтобы она указывала на исполняемый файл PHP для работы в коммандной строке:&lt;br /&gt;
 '#!/usr/bin/env php'&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В дальнейшем я предполагаю, что вы установили в систему каталог с названием akelos, так что URL для доступа к нему должен быть http://localhost/akelos/public. Если у вас возникли сложности с просмотром примеров в браузере – проверьте, как начинается правило RewrriteBase в файле public/.htaccess – оно должно содержатьь путь к каталогу public.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Итак, мы можем начинать. С помощью вашей любимой оболочки для 3ev. командной строки перейдите в каталог с распакованным приложением и выполните команду generate:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 cd /path/to/untarred/akelos/&lt;br /&gt;
 scripts/generate&lt;br /&gt;
&lt;br /&gt;
Вы увидите некоторое описание, что делает generate и как ее использовать. На следующей странице, во врезке «Сценарии» вы найдете список команд, которые она умеет выполнять. Пока запустите &lt;br /&gt;
 ./scripts/generate scaffold Post&lt;br /&gt;
а затем откройте в браузере адрес 'http://localhost/akelos/public/post' (не забудьте изменить адрес, если вы установили Akelos в какую-то другую директорию). Вы увидите экран со ссылкой для создания нового Post’а, довольно пустынный, однако кнопка Create New Post там есть. Кликните на нее и введите какие-нибудь данные. После сохранения записи вы сможете увидеть ее на 'http://localhost/akelos/public/' post, а также сможете изменить или удалить ее, пользуясь соответствующими ссылками.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Команда scaffold генерирует для вас приложение, уже имеющее базовый набор функций, ожидаемый от web-приложения: создание, редактирование и удаление записи в базе данных из браузера. В этом вся прелесть метапрограммирования – большую часть работы делать не надо!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Но что все-таки произошло? А вот что: генератор кода создал для вас каркас приложения, включающий контроллер, помощник и несколько видов. В нашем случае он так же создал простой класс model, состоящий из названия и описания, что и позволило вам заполнять эти поля. Одной командой – generate scaffold – вы выполнили основную часть работы по написанию приложения для создания и редактирования записей базы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Взгляд на вид ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вид – это такая штука, которую видит пользователь. Это буквально и есть внешний вид программы. Все виды вашего приложения должны располагаться в папке app/views. Когда вы открываете страницу приложения Akelos, соответствующий вид определяет, как она выглядит. Например, при открытии http://localhost/akelos/public/post/listing вызывается шаблон views/post/listing.tpl. Когда вы щелкнете на какойнибудь элемент списка, в работу вступит view.tpl.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откроем /views/post/listing.tpl и рассмотрим его содержимое. Вы увидите, что шаблоны в основном состоят из HTML и PHP, однако в дополнение к ним используется набор специальных тэгов [sintag], позволяющих избежать повторов в коде. Систему тэгов разработала та же команда, которая написала Akelos. Для выделения тэгов они использовали фигурные скобки – { и }.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В файле listing.tpl можно найти следующий участок кода:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{loop posts}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;tr {?posts_odd_position}class=”odd”{end}&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{loop content_columns}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;&amp;lt;?php echo $post-&amp;gt;get($content_column)?&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{end} …&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первая строка начинает цикл по списку объектов Post, а четвертая строчка выводит значение очередного свойства текущего объекта. Попробуйте заменить текст от {loop content_columns} до {end} двумя строчками ниже на&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;&amp;lt;b&amp;gt;{post.name}&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;{post.description}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;{post.created_at}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;{post.updated_at}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Все, что мы изменили – это сделали индивидуальную обработку каждого из полей и добавили жирный шрифт для имени записи, однако это неплохая иллюстрация использования спецтэгов. Чтобы понять, зачем они нужны для некоторых задач в PHP, откройте файл views/ post/compiled/listing.tpl.php. Посмотрите, на что был заменен одинединственный тэг {look posts}:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;empty($posts) ? null : $post_loop_counter = 0;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;empty($posts) ? null : $posts_available = count($posts);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;if(!empty($posts))&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;foreach ($posts as $post_loop_key=&amp;gt;$post){&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_loop_counter++;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_is_first = $post_loop_counter === 1;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_is_last = $post_loop_counter === $posts_available;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_odd_position = $post_loop_counter%2;&lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На этом можно пальцы вывихнуть! Если вам придет охота самим организовать цикл на PHP, ничто не мешает это сделать, но система спецтэгов экономит время. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как насчет дизайна приложения? Главная HTML-страница вашего приложения – app/views/layout/post.tpl, а таблица стилей по умолчанию для каркаса Akelos – public/stylesheets/scaffold.css. Файл CSS подключается к шаблонам строкой &lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?php echo $asset_tag_helper-&amp;gt;stylesheet_link_tag(‘scaffold’) ?&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Можно редактировать файл scaffold.css напрямую, но почему бы не разработать для вашей программы свой собственный стиль? Создайте файл /public/stylesheets/myapp.css и внесите в него следующие определения: &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;h1 {&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;border-bottom : thin solid black;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;padding : 3px;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;} &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Осталось добавить в заголовок HTML файла views/layout/post.tpl следующую строчку:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;echo $asset_tag_helper-&amp;gt;stylesheet_link_tag(‘myapp’) ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Конечно, вы можете как использовать один и тот же CSS-файл для всех контроллеров приложения, так и определять для каждого из них свой собственный файл и внешний вид.&lt;br /&gt;
&lt;br /&gt;
=== Контролируем контроллер  ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь рассмотрим контроллеры. Они определяют, что пользователь увидит и когда, а также соответствие URL-адреса и действия, которое можно выполнить по этому адресу. Когда вы посещаете book/edit/123/, Akelos определяет, какой контроллер вы хотите использовать, какая операция контроллера была вызвана и к какой записи его нужно применить. В этом примере контроллером будет book, операцией – edit, а номер записи 123.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откроем app/controller/post_controller.php и пробежимся взглядом по его структуре: &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;class PostController extends ApplicationController&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// Index is the default action&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function index() { /* нечто... */ }&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// the listing function&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function listing() { /* нечто... */ }&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function show() { /* нечто... */ }&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function edit() { /* нечто... */ } ... }&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Каждая функция контроллера соответствует некому действию, которое может предпринять пользователь – получить список записей, просмотреть их или отредактировать. Сгенерированный нами каркас имеет набор основных операций, свойственных web-приложению, но вы можете добавить к контроллеру все что угодно. Для этого сначала добавляется функция:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function hello()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// вам совершенно не обязательно что-то тут писать&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;После создания функции нужно добавить TPL-файл с тем же именем в каталог app/views/post/, так что создадим app/views/post/hello.tpl и поместим в него следующую строчку:&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;Н1&amp;gt;Hello, World!&amp;lt;/Н1&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;А теперь зайдите на http://localhost/akelos/public/post/hello. Возможно, именно с этого нам бы и следовало начинать, однако с Akelos «Hello World» написать сложнее, чем полноценное web-приложение!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Функции контроллера могут выводить текст напрямую, без использования шаблонов – через функцию render(). Разовьем нашу функцию и обновим страницу в браузере:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;function hello()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;render( array&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;‘text’ =&amp;gt; ‘Hello, World - from inside the controller’&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;)&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Этот вызов игнорирует шаблон, выводя данные прямо из контроллера, и его можно использовать для функций Ajax, как мы увидим в дальнейшем. &lt;br /&gt;
Наконец, операции контроллера можно перенаправлять на другие операции. Изменим функцию hello() еще раз:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function hello() {&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;this-&amp;gt;renderAction(‘listing’); } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь, когда вы зайдете на public/post/hello, вас перенаправят на страницу со списком записей, точно так же, как это происходит при обработке операции index(). Если вы хотите узнать, на что еще способен контроллер, обратите внимание на функции класса lib/AkActionController.php.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Про инсталляторы ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вместе с Akelos вы получаете мощный инструмент управления таблицами баз данных, включая поддержку изменений и обновлений структуры. Это может сэкономить вам часы возни с SQL-кодом и значительно упростить процесс разворачивания и обновления вашей программы. Команда generate scaffold, которую мы использовали раньше, создала в том числе и файл инсталлятора app/installers/post_installer.php. Откроем его и посмотрим:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function up_1()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;createTable(‘posts’, “&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;id,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;name,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;description,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;created_at,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;updated_at&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;“);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function down_1()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;dropTable(‘posts’);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Инсталлятор создает таблицу под названием posts c полями id, name, description, created_at и updated_on. Команда generate scaffold тоже создает таблицу автоматически, но вы можете пересоздать ее вручную: &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;./scripts/migrate Post uninstall&lt;br /&gt;
(эта команда вызывает down_1(), при этом удаляя таблицу), и вернуть ее обратно с помощью&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;./scripts/migrate Post install&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(вызов up_1() создаст таблицу заново).&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если после этого вы зайдете на http://localhost/akelos/public/post, то увидите, что все записи исчезли, а таблица была пересоздана.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как вы поняли, функция up_1() используется для установки, а down_1() – для деинсталляции. Точнее будет сказать, что up_1() используется для увеличения номера версии, а down_1() – для уменьшения. Чтобы разобраться в этом, создадим новую функцию инсталлятора с названием up_2():&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function up_2() { $this-&amp;gt;addColumn(‘posts’, ‘extracol’); }&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Запустите команду install снова и посмотрите, как теперь выглядит таблица в базе данных, с помощью клиента MySQL. Видно, что инсталлятор выполнил команду ALTER TABLE posts ADD extracol, добавив в таблицу новый столбец. &lt;br /&gt;
Соответствующие функции down_ служат для отката изменений, так что давайте создадим down_2(), действие которой обратно действию up_2():&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function down_2() { $this-&amp;gt;removeColumn(‘posts’, ‘extracol’); }&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь запустите uninstall, и увидите, что были запущены две SQL-команды:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;SQL ALTER TABLE posts DROP COLUMN extracol&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;...&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;DROP TABLE posts&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Эти команды соответствуют вызовам down_2() и down_1(). Функции отката должны точно соответствовать функциям установка, чтобы при установке от откате не было никаких ошибок.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Функции createTable(), dropTable и removeColumn() – это просто оболочки для библиотеки доступа к данным AdoDB, которую Akelos использует при всех операциях с базой данных. У Akelos есть еще несколько полезных функций, таких как changeColumn(), renameColumn(), addIndex() и removeIndex(). Если вам нужен прямо доступ к объекту AdoDB из инсталлятора, используйте $this-&amp;gt;data_dictionary.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Полезно обдумать, какие изменения вносит инсталлятор в процесс разработки и установки приложения. Работающие в группе должны знать, как сложно бывает выкрутиться, когда вносимые в структуру данных изменения конфликтуют между собой – на разрешение таких конфликтов тратится куча времени и нервов. Используя функции повышения и понижения версии базы данных, разработчики могут легко менять структуру и не беспокоиться о конфликтах. Если же конфликт все-таки возникает, достаточно бывает слить две PHP-функции в одну или же написать функцию up_() заново с учетом конфликтных требований.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Маленькие помощники Akelos ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;А теперь поиграем с помощниками, предоставляющими полезные функции, не являющиеся частью модели, вида или контроллера. К ним относятся задачи генерации URL, обработки текста, создания простых меню и построения HTML-тэгов. Вместе с Akelos поставляется целая куча помощников, каждый из которых отвечает за свой тип функциональности. Например, url_helper содержит функции построения URL (например, составление ссылки на какое-то действие определенного контроллера):&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= $url_helper-&amp;gt;link_to(‘Go to the help page’, array(‘action’ =&amp;gt; ‘help’) );&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;?&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Второй ценный помощник – menu_helper. Он умеет генерировать меню возможных операций контроллера, например&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= $menu_helper-&amp;gt;menu_for_controllers(array(‘post’=&amp;gt;array(‘help’, ‘list’))) ?&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Понравилось? Перечисляя интересных помощников, нельзя не упомянуть про form_helper и date_helper. Очень полезно изучить их возможности (да и остальных тоже), для этого можно заглянуть в lib/AkActionView/helpers/.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В добавление к помощникам, содержащим основные функции для использования во всех приложениях, при каждой генерации каркаса создается свой собственный помощник. Например, при создании каркаса Foobar будет сгенерирован foobar_helper, а чтобы вызвать его из кода приложения, можно воспользоваться переменной $foobar_helper. Вернемся к нашему приложению: откройте файл app/helpers/post_ helper.php и добавьте в него функцию &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function quick_destroy(&amp;amp; $record)&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return $this-&amp;gt;_controller-&amp;gt;url_helper-&amp;gt;button_to(‘Delete in 1 click’,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;array(‘action’ =&amp;gt; ‘quick_destroy’,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;‘id’ =&amp;gt; $record-&amp;gt;getId()), array( ‘confirm’ =&amp;gt; ‘Are you sure?’ ));&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
А затем в файл app/views/post/listing.tpl впишите строчку &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”operation”&amp;gt;&amp;lt;?php echo $post_helper-&amp;gt;quick_ destroy($post)?&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Осталось только добавить в контроллер следующую функцию: &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function quick_destroy()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;if(!empty($this-&amp;gt;params[‘id’])){&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;post = $this-&amp;gt;Post-&amp;gt;find($this-&amp;gt;params[‘id’]);&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;post-&amp;gt;destroy(); $this-&amp;gt;redirectTo(array(‘action’ =&amp;gt; ‘listing’));&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Обновите страницу со списком записей – и увидите новый столбец Delete in 1 click. При щелчке по любой записи в этом столбце, JavaScript выдаст окно с вопросом, уверены ли вы, а после ответа «Да» запись будет удалена без всяких проволочек.&lt;br /&gt;
&lt;br /&gt;
=== Ajax, но без JavaScript ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Технология Ajax позволяет загружать фрагменты HTML на страницу после ее отображения и обрабатывать формы и команды, не перезагружая заново всю страницу целиком. Это стало очень популярным, поскольку так проще и пользователям, и разработчикам. Rails сделал Ajax еще более популярным, так как скрывает большую часть кода на JavaScript. И, как вы можете ожидать, Akelos умеет делать то же самое. Начнем с добавления следующей строки в HTML-заголовок файла app/ views/layouts/post.tpl:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= echo $asset_tag_helper-&amp;gt;stylesheet_link_tag(‘prototype’) ?&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Помощник asset_tag_helper используется для подключения &lt;br /&gt;
JavaScript, CSS и других внешних файлов, и добавит любой JavaScript из каталога public/javascripts/ таким же образом.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Затем создадим операцию контроллера ademo (см. раздел «Контролируем приложение» на стр. XX, если вы забыли, как это делается). Кроме того, нам понадобится файл app/views/post/ademo.tpl:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;Н1&amp;gt;Quick AJAX example&amp;lt;/Н1&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= $prototype_helper-&amp;gt;link_to_remote(‘&amp;gt;Load the listing – by AJAX!’, array(‘url’ =&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;array(‘action’ =&amp;gt; ‘getme’), ‘update’ =&amp;gt; ‘updateme’ ) ); ?&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;div id=”updateme” style=”padding : 10px; border : thin solid black;”&amp;gt;...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ну и, наконец, создадим функцию контроллера с названием getme:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function getme() { &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;render( array( ‘text’ =&amp;gt; ‘Whooa! How easy was that?’ ) ); &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;} &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откройте в браузере http://localhost/akelos/public/post/ajax, щелкните на ссылку, и вы увидите маленький текстовый блок, загруженный на страницу без перезагрузки. Таким же способом можно загрузить на страницу все что угодно – другие страницы, формы, картинки – и вам не придется даже задумываться о JavaScript, потому что за него отвечают функции помощника.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы никогда не имели дела с Ajax, система наподобие Akelos – не самый лучший способ изучить его, потому что он скрывает от вас много тонких деталей. Однако вы можете оценить, насколько быстрее делать вещи именно таким способом.&amp;lt;br&amp;gt;&lt;br /&gt;
=== Будущее Akelos ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Мы приближаемся к завершению нашего краткого обзора каркаса, который сторицей отплатит за время, затраченное на его изучение. Мы даже не успели рассмотреть такие вещи, как обработка взаимосвязей в базе данных, но вы уже могли понять силу метапрограммирования и чистоту архитектуры – наследие Rails.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В моей фирме Akelos используется уже давно, и мы нашли, что он очень удобен для прототипирования, да еще и позволяет в ноль секунд создавать приложения. Благодаря совместимости с PHP4 и PHP5 он просто идеален в том случае, когда заранее неизвестно, в какой среде придется работать программе.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В данный момент существует небольшое, но активно растущее сообщество посвященное Akelos, и Берми Феррер [Bermi Ferrer], ведущий программист, планирует поработать над документацией и перезапустить web-сайт. ''LXF''&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Akelos</id>
		<title>LXF95:Akelos</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Akelos"/>
				<updated>2008-03-29T00:34:29Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: Ruby on Rails взял штурмом мир программистов, вызвав у тех из нас, кто все еще пишет на PHP, жуткую зависть к та...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ruby on Rails взял штурмом мир программистов, вызвав у тех из нас, кто все еще пишет на PHP, жуткую зависть к такому элегантному методу работы. Если вы еще не видели пятнадцати минутный ролик Look at what I’m not doing («Смотри, чего я НЕ делаю»)на www.rubyonrails.org – посмотрите непременно: он запросто сагитирует вас плюнуть на PHP и перейти на Ruby.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вся магия Rails – в метапрограммировании. Немалая часть кода создается за вас, так что вам не приходится всякий раз вспоминать, где какой класс находится и куда поместить такую-сякую функцию. Это сильно упрощает работу в рамках архитектуры: обучение ускоряется, и надо меньше задумываться в процессе работы. Таков Rails; но ведь у сообщества PHP естб и собственные системы разработки. У каждой из них свои сильные и слаюые стороны, и Akelos – это Rails для PHP, нас колько такое только возможно. Большая часть элементов архитектуры сохранилась. за исключением тех моментов, которые на PHP лучше сделать иначе. Akelos написан так, что совместим и с PHP 4,  и c PHP 5, так что его можно установить практически на любом сервере. Это было одним из важных аргументов в пользу Akelos в нашей компании, так как, хотя мы стараемся в основном использовать PHP 5, иногда нам приходится разрабатывать приложения для работы на старом оборудовании или же для клиентов, которые просто не хотят обновлений.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Все это делает Akelos идеальным для быстрого развертывания приложений, которые должны работать где угодно. На нашем уроке мы рассмотрим его и создадим простенькое web-приложение, чтобы вы поняли, как использовать каркас на полную катушку. В итоге вы получите полноценную рабочую программу, но учтите, что на серьезное рассмотрение у нас здесь места мало – мы только пройдемся по верхам. Советую самостоятельно зарыться в код и разобраться, на что он еще способен!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Чего вы не делаете ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Благодаря метапрограммированию, вы можете изучить Akelos очень быстро, потому что он очень многое сделает за вас. При изучении других сред программирования вам нужно было помнить, где расположить классы каких типов, какие функции какие классы реализуют, и как применять объекты каждого из типов. На Akelos вам не нужно изучать, что такое контроллер и куда его засунуть: вы можете предоставить его генерирование программе. Она умеет создавать целые семейства классов и файлов при помощи команды scaffold.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Давайте установим Akelos и попробуем в деле. Вам понадобится сервер Apache с MySQL, SQLite или PostgreSQL. Возьмите Akelos с www.akelos.org или из каталога Magazine/Akelos на приложенном диске. Распакуйте файл в каталог (он будет называться akelos_framework), расположенный внутри корневого каталога web-сервера. В целях нашего урока назовем этот каталог akelos, так что теперь вы можете открыть его в браузере по адресу http://localhost/akelos. Выполните инструкции, чтобы завершить установку. Вам понадобится сервер Apache с MySQL, SQLight или PostgereSQL. Возьмите Akelos с www.akelos.org или из каталога Magazine/Akelos на приложеном диске. Распакуйте файл в каталог (он будет называется akelos_framework), расположенный внутри корневого каталога web-сервера. В целях нашего урока назавём этот каталог akelos, так что теперь вы можете открыть его в браузере по адресу http://localhost/akelos.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Выполните инструкции, чтобы завершить установку. Вам понадобится настроить 3 базы данных – одну для разработки, одну для эксплуатации и одну для тестирования. Для тонкой настройки вам может потребоваться изменить первую строчку файла /scripts/generate и некоторых сценариев так, чтобы она указывала на исполняемый файл PHP для работы в коммандной строке:&lt;br /&gt;
 '#!/usr/bin/env php'&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В дальнейшем я предполагаю, что вы установили в систему каталог с названием akelos, так что URL для доступа к нему должен быть http://localhost/akelos/public. Если у вас возникли сложности с просмотром примеров в браузере – проверьте, как начинается правило RewrriteBase в файле public/.htaccess – оно должно содержатьь путь к каталогу public.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Итак, мы можем начинать. С помощью вашей любимой оболочки для 3ev. командной строки перейдите в каталог с распакованным приложением и выполните команду generate:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 cd /path/to/untarred/akelos/&lt;br /&gt;
 scripts/generate&lt;br /&gt;
&lt;br /&gt;
Вы увидите некоторое описание, что делает generate и как ее использовать. На следующей странице, во врезке «Сценарии» вы найдете список команд, которые она умеет выполнять. Пока запустите &lt;br /&gt;
 ./scripts/generate scaffold Post&lt;br /&gt;
а затем откройте в браузере адрес 'http://localhost/akelos/public/post' (не забудьте изменить адрес, если вы установили Akelos в какую-то другую директорию). Вы увидите экран со ссылкой для создания нового Post’а, довольно пустынный, однако кнопка Create New Post там есть. Кликните на нее и введите какие-нибудь данные. После сохранения записи вы сможете увидеть ее на 'http://localhost/akelos/public/' post, а также сможете изменить или удалить ее, пользуясь соответствующими ссылками.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Команда scaffold генерирует для вас приложение, уже имеющее базовый набор функций, ожидаемый от web-приложения: создание, редактирование и удаление записи в базе данных из браузера. В этом вся прелесть метапрограммирования – большую часть работы делать не надо!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Но что все-таки произошло? А вот что: генератор кода создал для вас каркас приложения, включающий контроллер, помощник и несколько видов. В нашем случае он так же создал простой класс model, состоящий из названия и описания, что и позволило вам заполнять эти поля. Одной командой – generate scaffold – вы выполнили основную часть работы по написанию приложения для создания и редактирования записей базы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Взгляд на вид ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вид – это такая штука, которую видит пользователь. Это буквально и есть внешний вид программы. Все виды вашего приложения должны располагаться в папке app/views. Когда вы открываете страницу приложения Akelos, соответствующий вид определяет, как она выглядит. Например, при открытии http://localhost/akelos/public/post/listing вызывается шаблон views/post/listing.tpl. Когда вы щелкнете на какойнибудь элемент списка, в работу вступит view.tpl.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откроем /views/post/listing.tpl и рассмотрим его содержимое. Вы увидите, что шаблоны в основном состоят из HTML и PHP, однако в дополнение к ним используется набор специальных тэгов [sintag], позволяющих избежать повторов в коде. Систему тэгов разработала та же команда, которая написала Akelos. Для выделения тэгов они использовали фигурные скобки – { и }.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В файле listing.tpl можно найти следующий участок кода:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{loop posts}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;tr {?posts_odd_position}class=”odd”{end}&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{loop content_columns}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;&amp;lt;?php echo $post-&amp;gt;get($content_column)?&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{end} …&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первая строка начинает цикл по списку объектов Post, а четвертая строчка выводит значение очередного свойства текущего объекта. Попробуйте заменить текст от {loop content_columns} до {end} двумя строчками ниже на&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;&amp;lt;b&amp;gt;{post.name}&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;{post.description}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”field”&amp;gt;{post.created_at}&lt;br /&gt;
 &amp;lt;td class=”field”&amp;gt;{post.updated_at}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Все, что мы изменили – это сделали индивидуальную обработку каждого из полей и добавили жирный шрифт для имени записи, однако это неплохая иллюстрация использования спецтэгов. Чтобы понять, зачем они нужны для некоторых задач в PHP, откройте файл views/ post/compiled/listing.tpl.php. Посмотрите, на что был заменен одинединственный тэг {look posts}:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?php&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;empty($posts) ? null : $post_loop_counter = 0;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;empty($posts) ? null : $posts_available = count($posts);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;if(!empty($posts))&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;foreach ($posts as $post_loop_key=&amp;gt;$post){&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_loop_counter++;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_is_first = $post_loop_counter === 1;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_is_last = $post_loop_counter === $posts_available;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$post_odd_position = $post_loop_counter%2;&lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На этом можно пальцы вывихнуть! Если вам придет охота самим организовать цикл на PHP, ничто не мешает это сделать, но система спецтэгов экономит время. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как насчет дизайна приложения? Главная HTML-страница вашего приложения – app/views/layout/post.tpl, а таблица стилей по умолчанию для каркаса Akelos – public/stylesheets/scaffold.css. Файл CSS подключается к шаблонам строкой &lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?php echo $asset_tag_helper-&amp;gt;stylesheet_link_tag(‘scaffold’) ?&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Можно редактировать файл scaffold.css напрямую, но почему бы не разработать для вашей программы свой собственный стиль? Создайте файл /public/stylesheets/myapp.css и внесите в него следующие определения: &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;h1 {&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;border-bottom : thin solid black;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;padding : 3px;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;} &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Осталось добавить в заголовок HTML файла views/layout/post.tpl следующую строчку:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;echo $asset_tag_helper-&amp;gt;stylesheet_link_tag(‘myapp’) ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Конечно, вы можете как использовать один и тот же CSS-файл для всех контроллеров приложения, так и определять для каждого из них свой собственный файл и внешний вид.&lt;br /&gt;
&lt;br /&gt;
=== Контролируем контроллер  ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь рассмотрим контроллеры. Они определяют, что пользователь увидит и когда, а также соответствие URL-адреса и действия, которое можно выполнить по этому адресу. Когда вы посещаете book/edit/123/, Akelos определяет, какой контроллер вы хотите использовать, какая операция контроллера была вызвана и к какой записи его нужно применить. В этом примере контроллером будет book, операцией – edit, а номер записи 123.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откроем app/controller/post_controller.php и пробежимся взглядом по его структуре: &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;class PostController extends ApplicationController&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// Index is the default action&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function index() { /* нечто... */ }&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// the listing function&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function listing() { /* нечто... */ }&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function show() { /* нечто... */ }&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function edit() { /* нечто... */ } ... }&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Каждая функция контроллера соответствует некому действию, которое может предпринять пользователь – получить список записей, просмотреть их или отредактировать. Сгенерированный нами каркас имеет набор основных операций, свойственных web-приложению, но вы можете добавить к контроллеру все что угодно. Для этого сначала добавляется функция:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function hello()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// вам совершенно не обязательно что-то тут писать&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;После создания функции нужно добавить TPL-файл с тем же именем в каталог app/views/post/, так что создадим app/views/post/hello.tpl и поместим в него следующую строчку:&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;Н1&amp;gt;Hello, World!&amp;lt;/Н1&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;А теперь зайдите на http://localhost/akelos/public/post/hello. Возможно, именно с этого нам бы и следовало начинать, однако с Akelos «Hello World» написать сложнее, чем полноценное web-приложение!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Функции контроллера могут выводить текст напрямую, без использования шаблонов – через функцию render(). Разовьем нашу функцию и обновим страницу в браузере:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function hello()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;render( array&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;‘text’ =&amp;gt; ‘Hello, World - from inside the controller’&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;)&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Этот вызов игнорирует шаблон, выводя данные прямо из контроллера, и его можно использовать для функций Ajax, как мы увидим в дальнейшем. &lt;br /&gt;
Наконец, операции контроллера можно перенаправлять на другие операции. Изменим функцию hello() еще раз:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function hello() {&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;this-&amp;gt;renderAction(‘listing’); } &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь, когда вы зайдете на public/post/hello, вас перенаправят на страницу со списком записей, точно так же, как это происходит при обработке операции index(). Если вы хотите узнать, на что еще способен контроллер, обратите внимание на функции класса lib/AkActionController.php.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Про инсталляторы ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вместе с Akelos вы получаете мощный инструмент управления таблицами баз данных, включая поддержку изменений и обновлений структуры. Это может сэкономить вам часы возни с SQL-кодом и значительно упростить процесс разворачивания и обновления вашей программы. Команда generate scaffold, которую мы использовали раньше, создала в том числе и файл инсталлятора app/installers/post_installer.php. Откроем его и посмотрим:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function up_1()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;createTable(‘posts’, “&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;id,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;name,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;description,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;created_at,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;updated_at&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;“);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function down_1()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;dropTable(‘posts’);&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Инсталлятор создает таблицу под названием posts c полями id, name, description, created_at и updated_on. Команда generate scaffold тоже создает таблицу автоматически, но вы можете пересоздать ее вручную: &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;./scripts/migrate Post uninstall &amp;lt;br&amp;gt;&lt;br /&gt;
(эта команда вызывает down_1(), при этом удаляя таблицу), и вернуть ее обратно с помощью&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;./scripts/migrate Post install&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(вызов up_1() создаст таблицу заново).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если после этого вы зайдете на http://localhost/akelos/public/post, то увидите, что все записи исчезли, а таблица была пересоздана.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как вы поняли, функция up_1() используется для установки, а down_1() – для деинсталляции. Точнее будет сказать, что up_1() используется для увеличения номера версии, а down_1() – для уменьшения. Чтобы разобраться в этом, создадим новую функцию инсталлятора с названием up_2():&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function up_2() { $this-&amp;gt;addColumn(‘posts’, ‘extracol’); }&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Запустите команду install снова и посмотрите, как теперь выглядит таблица в базе данных, с помощью клиента MySQL. Видно, что инсталлятор выполнил команду ALTER TABLE posts ADD extracol, добавив в таблицу новый столбец. &lt;br /&gt;
Соответствующие функции down_ служат для отката изменений, так что давайте создадим down_2(), действие которой обратно действию up_2():&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function down_2() { $this-&amp;gt;removeColumn(‘posts’, ‘extracol’); }&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь запустите uninstall, и увидите, что были запущены две SQL-команды:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;SQL ALTER TABLE posts DROP COLUMN extracol&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;...&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;DROP TABLE posts&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Эти команды соответствуют вызовам down_2() и down_1(). Функции отката должны точно соответствовать функциям установка, чтобы при установке от откате не было никаких ошибок.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Функции createTable(), dropTable и removeColumn() – это просто оболочки для библиотеки доступа к данным AdoDB, которую Akelos использует при всех операциях с базой данных. У Akelos есть еще несколько полезных функций, таких как changeColumn(), renameColumn(), addIndex() и removeIndex(). Если вам нужен прямо доступ к объекту AdoDB из инсталлятора, используйте $this-&amp;gt;data_dictionary.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Полезно обдумать, какие изменения вносит инсталлятор в процесс разработки и установки приложения. Работающие в группе должны знать, как сложно бывает выкрутиться, когда вносимые в структуру данных изменения конфликтуют между собой – на разрешение таких конфликтов тратится куча времени и нервов. Используя функции повышения и понижения версии базы данных, разработчики могут легко менять структуру и не беспокоиться о конфликтах. Если же конфликт все-таки возникает, достаточно бывает слить две PHP-функции в одну или же написать функцию up_() заново с учетом конфликтных требований.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Маленькие помощники Akelos ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;А теперь поиграем с помощниками, предоставляющими полезные функции, не являющиеся частью модели, вида или контроллера. К ним относятся задачи генерации URL, обработки текста, создания простых меню и построения HTML-тэгов. Вместе с Akelos поставляется целая куча помощников, каждый из которых отвечает за свой тип функциональности. Например, url_helper содержит функции построения URL (например, составление ссылки на какое-то действие определенного контроллера):&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= $url_helper-&amp;gt;link_to(‘Go to the help page’, array(‘action’ =&amp;gt; ‘help’) );&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;?&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Второй ценный помощник – menu_helper. Он умеет генерировать меню возможных операций контроллера, например&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= $menu_helper-&amp;gt;menu_for_controllers(array(‘post’=&amp;gt;array(‘help’, ‘list’))) ?&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Понравилось? Перечисляя интересных помощников, нельзя не упомянуть про form_helper и date_helper. Очень полезно изучить их возможности (да и остальных тоже), для этого можно заглянуть в lib/AkActionView/helpers/.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В добавление к помощникам, содержащим основные функции для использования во всех приложениях, при каждой генерации каркаса создается свой собственный помощник. Например, при создании каркаса Foobar будет сгенерирован foobar_helper, а чтобы вызвать его из кода приложения, можно воспользоваться переменной $foobar_helper. Вернемся к нашему приложению: откройте файл app/helpers/post_ helper.php и добавьте в него функцию &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function quick_destroy(&amp;amp; $record)&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return $this-&amp;gt;_controller-&amp;gt;url_helper-&amp;gt;button_to(‘Delete in 1 click’,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;array(‘action’ =&amp;gt; ‘quick_destroy’,&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;‘id’ =&amp;gt; $record-&amp;gt;getId()), array( ‘confirm’ =&amp;gt; ‘Are you sure?’ ));&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
А затем в файл app/views/post/listing.tpl впишите строчку &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;td class=”operation”&amp;gt;&amp;lt;?php echo $post_helper-&amp;gt;quick_ destroy($post)?&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Осталось только добавить в контроллер следующую функцию: &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function quick_destroy()&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;if(!empty($this-&amp;gt;params[‘id’])){&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;post = $this-&amp;gt;Post-&amp;gt;find($this-&amp;gt;params[‘id’]);&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;post-&amp;gt;destroy(); $this-&amp;gt;redirectTo(array(‘action’ =&amp;gt; ‘listing’));&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Обновите страницу со списком записей – и увидите новый столбец Delete in 1 click. При щелчке по любой записи в этом столбце, JavaScript выдаст окно с вопросом, уверены ли вы, а после ответа «Да» запись будет удалена без всяких проволочек.&lt;br /&gt;
&lt;br /&gt;
=== Ajax, но без JavaScript ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Технология Ajax позволяет загружать фрагменты HTML на страницу после ее отображения и обрабатывать формы и команды, не перезагружая заново всю страницу целиком. Это стало очень популярным, поскольку так проще и пользователям, и разработчикам. Rails сделал Ajax еще более популярным, так как скрывает большую часть кода на JavaScript. И, как вы можете ожидать, Akelos умеет делать то же самое. Начнем с добавления следующей строки в HTML-заголовок файла app/ views/layouts/post.tpl:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= echo $asset_tag_helper-&amp;gt;stylesheet_link_tag(‘prototype’) ?&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Помощник asset_tag_helper используется для подключения &lt;br /&gt;
JavaScript, CSS и других внешних файлов, и добавит любой JavaScript из каталога public/javascripts/ таким же образом.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Затем создадим операцию контроллера ademo (см. раздел «Контролируем приложение» на стр. XX, если вы забыли, как это делается). Кроме того, нам понадобится файл app/views/post/ademo.tpl:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;Н1&amp;gt;Quick AJAX example&amp;lt;/Н1&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;?= $prototype_helper-&amp;gt;link_to_remote(‘&amp;gt;Load the listing – by AJAX!’, array(‘url’ =&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;array(‘action’ =&amp;gt; ‘getme’), ‘update’ =&amp;gt; ‘updateme’ ) ); ?&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;div id=”updateme” style=”padding : 10px; border : thin solid black;”&amp;gt;...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ну и, наконец, создадим функцию контроллера с названием getme:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;function getme() { &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$this-&amp;gt;render( array( ‘text’ =&amp;gt; ‘Whooa! How easy was that?’ ) ); &lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;} &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откройте в браузере http://localhost/akelos/public/post/ajax, щелкните на ссылку, и вы увидите маленький текстовый блок, загруженный на страницу без перезагрузки. Таким же способом можно загрузить на страницу все что угодно – другие страницы, формы, картинки – и вам не придется даже задумываться о JavaScript, потому что за него отвечают функции помощника.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы никогда не имели дела с Ajax, система наподобие Akelos – не самый лучший способ изучить его, потому что он скрывает от вас много тонких деталей. Однако вы можете оценить, насколько быстрее делать вещи именно таким способом.&amp;lt;br&amp;gt;&lt;br /&gt;
=== Будущее Akelos ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Мы приближаемся к завершению нашего краткого обзора каркаса, который сторицей отплатит за время, затраченное на его изучение. Мы даже не успели рассмотреть такие вещи, как обработка взаимосвязей в базе данных, но вы уже могли понять силу метапрограммирования и чистоту архитектуры – наследие Rails.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В моей фирме Akelos используется уже давно, и мы нашли, что он очень удобен для прототипирования, да еще и позволяет в ноль секунд создавать приложения. Благодаря совместимости с PHP4 и PHP5 он просто идеален в том случае, когда заранее неизвестно, в какой среде придется работать программе.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В данный момент существует небольшое, но активно растущее сообщество посвященное Akelos, и Берми Феррер [Bermi Ferrer], ведущий программист, планирует поработать над документацией и перезапустить web-сайт. ''LXF''&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:F-Spot</id>
		<title>LXF95:F-Spot</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:F-Spot"/>
				<updated>2008-03-25T03:57:15Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt; ''Уезжаете на лето в отпуск? Почему бы не отослать открытку XXI века – пусть завидуют...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
''Уезжаете на лето в отпуск? Почему бы не отослать открытку XXI века – пусть завидуют! '''Энди Чэннел''' покажет, как.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок= ''Наш эксперт '''Энди Ченнел'''''|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Энди делает свои первые шаги в Linux уже шесть лет, а технологиями интересуется еще со времен Dragon 32.|&lt;br /&gt;
Ширина=210px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В старые добрые времена мы обычно затаскивали к себе друзей, угощали выпивкой и тут же выуживали пару толстых пыльных фотоальбомов, чтобы освежить веселые воспоминания об еще более старых временах. Теперь все изменилось, и чтобы вспомнить вместе о былых шалостях, можно уже не разоряться на спиртное. Не обязательно даже жить в одной стране с вашими жертвами… ну, друзьями, чтобы всучить им свои фотошедевры. Гип-гип, ура!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На этом уроке мы исследуем одно из лучших приложений для управления фотографиями в Linux – F-Spot – и рассмотрим способы его использования для отправки фотографий в большой мир, чтобы ваши близкие могли их видеть. Мы также освоим процесс настройки RSS-ленты фотоальбома, чтобы друзья и родственники были в курсе любых сделанных вами обновлений. Это удобно практически всегда, но во время летнего отпуска особенно: ведь благодаря такой системе вы можете хоть кого заставить позавидовать вашему чудесному отдыху где-нибудь под пальмами(предположим, что выход в сеть есть везде). Считайте это версией почтовых открыток XXI века. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Я выбрал F-Spot по нескольким причинам. Во-первых, это само по себе прекрасное приложение. Во-вторых, оно прекрасно сочетается с онлайн-службами публикации фотографий. И в-третьих, оно есть едва ли не во всех дистрибутивах Linux. Если оно не установлено по умолчанию, ваш менеджер пакетов это быстро исправит.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Последняя версия – 0.3.5, и именно она поставляется с последним релизом Ubuntu. Если вам необходимо обновление, посетите сайт проекта [http://f-spot.org] и поищите на странице Downloads (Загрузки) ссылку на ваш дистрибутив. F-Spot создан в Mono, и если приложения Mono у вас еще не установлены, вы можете отметить, что этот небольшой пакет в 2,5 МБ требует увесистой загрузки и долгой установки. Но не расстраивайтесь: подождать стоит!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Обеспечив локальные тылы F-Spot, разберемся со вторым компонентом данного урока, то есть онлайн-частью – ясно, что мы намерены разместить наши фото в сети, чтобы их получила наша аудитория. Здесь есть три варианта: [Photobucket [http://photobucket.com]], ]Flickr [www.flickr.com]] и [Picasa Web Albums [http://picasaweb.google.com]]. Все они имеют и плюсы, и минусы. Photobucket популярен, но не полностью интегрируется в F-Spot, хотя можно настроить F-Spot на отправку фотографий по почте на ваше имя в Photobucket. Flickr хорошо интегрируется, популярен и имеет хорошие настройки безопасности, но пробьет брешь в бюджете, если загружать множество фотографий каждый месяц. Picasa также интегрируется в F-Spot и, в отличие от Flickr, предоставляет большой объем бесплатного пространства для размещения, но не богата настройками безопасности.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Работа с двумя последними службами примерно одинакова, и я покажу, как это делается. Первый шаг – регистрация в одной из служб (или в обеих!). Каждая имеет три опции, с неизбежными ограничениями. Ограничение во Flickr – допускается загружать не более 100 МБ фотографий в месяц, а максимальный размер фотографии – 5 МБ. Вроде не проблема, но если у вас особо современная камера, то на 2 МБ потянет каждое фото, и если вы планируете загрузить за выходные более 50 снимков, то, вероятно, лучше взять учетную запись Pro за $25 и отменить все ограничения на скорость и объем загрузки. В Picasa нет ограничений на месячную загрузку, но вся библиотека должна влезать в 1 ГБ. Увеличение этого объема до 6,5 ГБ стоит $25 в год, если уж ваш фотоархив столь огромен, но для наших учебных целей вполне достаточно бесплатной учетной записи.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изображения на вход... ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первым делом надо занести несколько изображений в F-Spot. В отпуске вы будете ежедневно добавлять фото с цифровой камеры, но для F-Spot – знаток управления большими и малыми коллекциями фото в сети.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;FЭнди Чэннел-Spot 0.3.5 начала добавим их из других источников. Смысл в том, чтобы настроить приложение до того, как упаковать ноутбук и отправиться в дорогу. Вам не захочется заниматься ерундой с приложением и сетевыми службами (особенно если вы платите за интернет-подключение в отеле) в пути. Так что припасем несколько изображений где-нибудь в вашем компьютере.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы можете заметить, что после установки F-Spot создает каталог с именем Photos в вашем домашнем каталоге, [В Mandriva 2007.1 после установки программа вообще ничего не создала и постоянно жаловалась, что не может найти целевой каталог. После его создания вручную все заработало, – прим.пер.] в котором он предпочитает хранить вашу коллекцию. Можно или бросить группу фотографий прямо сюда, или позволить приложению переместить их. Но сначала надо запустить F- Spot. Обычно это делается щелчком на иконке, спрятанной в пункте Графика главного меню рабочего стола.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Перед вами откроется простое окно, четко разделенное на три области. В верхней части окна расположены строка меню и панель инструментов. Последняя содержит (слева направо) средства для вращения изображений, кнопки Browse (Просмотр) и Edit (Изменить) и кнопки полноэкранного режима слайдшоу. Внизу слева расположено окно меток (тегов) и место для отображения информации о картинке. Самая большая часть интерфейса – окно Просмотра, в нем видны миниатюры отобранных изображений из каталога /Photos. Вы можете изменить размер этих миниатюр, используя небольшой ползунок в правом нижнем углу окна.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Над главным окном просмотра находится интересный виджеткалендарь, который становится все полезнее по мере разрастания коллекции. В принципе это гистограмма, и чем больше столбец, тем больше фотографий в этом месяце – легко определить, когда вы были наиболее продуктивны: вероятно, пики этой гистограммы придутся на рождество, день рождения и время отпуска. Щелкните на столбике для быстрого перехода к этому месяцу, и его изображения отобразятся в окне просмотра.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;При первом запуске приложения вы увидите, что на панели инструментов выбрана кнопка Просмотр, но поскольку вы еще ничего не импортировали, то главная панель пуста. Исправим это: нажмите '''Файл''' &amp;gt; '''Добавить''' и перейдите к месту расположения ваших первых изображений. По умолчанию F-Spot копирует все выбранные изображения в каталог '''/Photos''', не удаляя оригиналы; об этом важно помнить, перейдя к импорту изображений с камеры, потому что вам придется вручную очищать карточку памяти после копирования ее содержимого. Чтобы изменить это, уберите флажок Копировать файлы в папку Photos. Вам, конечно, следует также убрать его, если вы уже скопировали изображения в папку Photos и теперь импортируете их.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Для импорта, нажмите выпадающий список Откуда добавить и Выберите папку для запуска стандартного диалога выбора файлов. Теперь вы можете перейти к своим изображениям, нажать кнопку '''OK''', затем щелкнуть на кнопке Импорт и подождать, пока не появятся изображения. В зависимости от размера вашей библиотеки, это может занять от нескольких секунд до минут. Импорт с камеры – точно такой же процесс, только в выпадающем списке вы выбираете свою камеру (Linux распознает ее сразу после подключения) вместо каталога.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Одна из интересных функций F-Spot – присвоение изображениям меток во время импорта при помощи выпадающего списка Добавить метку. Имеется несколько предопределенных меток, и можно также создать свои собственные, для вашей семьи, деятельности или предпочтений. Метки позволят вам позднее сортировать изображения по каким-то критериям, так что они очень полезны. Более того, можно преобразовать метки F-Spot в метки Flickr при экспорте, и это здорово.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Главная панель инструментов интуитивно понятна. Например, вы выделяете изображение в главном окне, чтобы увидеть информацию о нем, включая имя, дату и время создания, а также параметры экспозиции. Выбрав изображение, нажмите кнопку Повернуть влево или Повернуть вправо, чтобы поменять ориентацию с горизонтальной на вертикальную (или наоборот), или сделайте более серьезные изменения, нажав кнопку Редактировать снимок.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;F-Spot не намерен бросать вызов GIMP по части редактирования изображений, но содержит хороший набор инструментов, необходимых для их подготовки к показу в Интернете или отправки на печать. У левого края панели инструментов Редактирование (которая появляется у нижнего края обрабатываемого изображения) находится выпадающий список формата – перечень стандартных размеров вроде 4х6 и 8х10 (дюймов – F-Spot, как и многие области традиционной фотографии, все еще не перешел на метрические измерения). Он пригодится, если ваш фотопринтер рассчитан на стандартные размеры. Если вы выберете один из них, а затем станете выделять изображение, будет подсвечиваться область с выбранным соотношением сторон. Определившись с выбранной областью, щелкните на кнопке '''Кадрировать по выделению''', она находится рядом с выпадающим списком. Если вы кадрируете чисто по эстетическим причинам, а конкретный размер вас не заботит, просто убедитесь, что в списке выбрано Свободное выделение и затем вновь выберите желаемую часть изображения и нажмите кнопку '''Кадрировать по выделению'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;После кадрирования изображения, выпадающий список '''Версия''' в информационной панели изменится с '''Исходная''' на '''Версия (1)'''. Это означает, что на любом этапе редактирования вы можете вернуться к оригинальному изображению или сравнить его с полученным. Учтите, сохраняется не каждая стадия редактирования, так что если вы кадрировали изображение, затем изменили цветовой баланс, яркость.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;F-Spot содержит небольшой набор инструментов для редактирования изображений. Незачем загружать в сеть большие фото. Измените их размер до 800х600, то-то друзья порадуются. Скорая помощь или другие элементы во второй иконе слева, пошаговый откат станет невозможным: все или ничего. Решением является начинать с создания новой версии (Файл &amp;gt; Создать новую версию...), а затем выполнять главные преобразования над ней. Число создаваемых версий не ограничено, и вы можете создать множество версий одного изображения, не утратив оригинал.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Другие кнопки редактирования в этом экране – преобразование в черно-белый режим или сепию, подстройка вращения, эффект мягкого фокуса (осторожно! он не так уж мягок) и инструмент автокоррекции, пытающийся создать сбалансированное изображение, играя с настройками цвета. У правого края панели инструментов находится виджетлупа, увеличивающий или уменьшающий основное изображение, и кнопки навигации Предыдущий/Следующий снимок.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Наконец, в главной панели инструментов есть опции Во весь экран и Слайд-шоу. Первая убирает интерфейс пользователя F-Spot так, чтобы вы могли не отвлекаясь смотреть на изображение. Если в полноэкранном режиме подвигать мышью, то в нижней части окна появится небольшая панель инструментов, позволяющая вращать изображение, запустить слайд-шоу, выбрать переход между слайдами и передвигаться по вашей библиотеке, используя кнопки Назад и Вперед. Кнопка Слайд-шоу отобразит фотографии вашей библиотеки во весь экран или в родном разрешении (если изображение имеет меньшее разрешение, чем экран).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь наши изображения занесены в приложение, мы выполнили подстройку, сделав место нашего отпуска теплее (совет: нажмите кнопку Скорректировать цвета снимка и немного увеличьте параметр Температура), и пора отправить их в сеть для тех наших друзей, кто не в отпуске.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изображения на выход... ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Экспорт изображений из F-Spot не сложнее импорта. Имеется на выбор: экспорт в каталог, создание web-галереи или использование одной из четырех web-служб. Как указывалось выше, мы будет выводить прямо во Flickr и Picasa, так что заведите себе учетную запись перед тем, как мы двинемся дальше. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Перед экспортом необходимо выбрать изображения, которыми вы хотите поделиться. Как всегда, имеется несколько способов сделать это. Можно, например, создать метку для каждого дня вашего отпуска – выполните Метки &amp;gt; Создать новую метку... и дайте ей имя и/или «Родительскую метку» – а затем дважды щелкните на метке (или щелкните правой кнопкой на метке и выберите Найти), чтобы оставить только соответствующие изображения в окне просмотра.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь выбирайте из этого подмножества изображения для загрузки на сайт. Отдельное изображение выбирается щелчком на нем; последовательный их набор – щелчком на первом изображении серии, а затем, при нажатой клавише '''Shift''', на последнем; или выберите произвольные несколько изображений, прощелкав по ним при нажатой клавише '''Ctrl'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Собрав изображения, выберите '''Файл &amp;gt; Экспортировать &amp;gt; Во Flickr''' или '''В Picasaweb'''.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Flickr''' Когда вы экспортируете что-то во Flickr впервые, необходимо настроить приложение для входа под вашей учетной записью. Для этого нажмите массивную кнопку Авторизоваться. Откроется webбраузер, в котором вы сможете войти во Flickr. Вы должны увидеть сообщение, что F-Spot получил права на загрузку под вашей учетной записью. Теперь вернитесь назад в F-Spot и нажмите кнопку Завершить авторизацию. Эта процедура выполняется лишь один раз.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь вы готовы к загрузке на сайт. Обратите внимание на настройки безопасности в окне Экспорт, они повторяют настройки вашей учетной записи. Здесь также есть опции изменения размера изображений перед их загрузкой, что полезно, если у вас медленное соединение, вы почти выбрали лимит или считаете, что изображения будут просматриваться только на экране; удаления метаданных (даты, времени, экспозиции и так далее) и экспорта меток. Если вы выбрали последнюю опцию, то приложение преобразует ваши метки F-Spot в метки Flickr. Если такая метка во Flickr не существует, то она будет создана; если она уже есть, то будет просто применена к изображению. По умолчанию, сделанные здесь изменения применяются к каждому изображению в корзине загрузки. Однако вы можете изменить параметры отдельных изображений, выбрав их в окне предварительного просмотра слева.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда все будет готово, нажмите OK и подождите, пока изображения будут отосланы на сервер; потом можно приступать к следующей стадии.&amp;lt;br&amp;gt;&lt;br /&gt;
*Picasaweb Первый экспорт в Picasa Web Albums заставит вас войти в вашу учетную запись. В верхней части окна экспорта нажмите кнопку Добавить рядом с пунктом Галерея: и введите имя пользователя и пароль. Если у вас несколько учетных записей Picasaweb, то вы можете добавить каждую из них, а затем выбрать желаемую, используя выпадающий список Галерея: перед экспортом.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ниже этого раздела вы увидите информационное пространство, где показано, сколько места используется учетной записью, а еще ниже – выпадающий список доступных альбомов. Альбомы в Picasaweb могут быть общедоступными или нет, так что используйте настройки благоразумно. Вы можете добавить новый альбом (и установить его публичный статус), щелкнув на большой дружественной кнопке '''Add''' (Добавить) и введя имя, описание и настройки приватности. Снизу к этому окну прилегают опции изменения размера изображения и его Автовращение, означающее, что приложение пытается сообразить, портрет это или ландшафт, а затем соответствующим образом его повернуть. После настройки корзины экспорта нажмите '''OK''' и начните загрузку на сайт. &lt;br /&gt;
=== Выставка изображений... ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Теперь, когда ваши прекрасные фотографии сохранены в сети Интернет, можете выслать электронным письмом адрес сетевой библиотеки своим друзьям, и они помчатся на Picasa или Flickr (согласно выданным правам) смотреть ваши последние снимки. Но… минуточку! Вдруг ваши друзья ленивы? Не легче ли и эффективнее дать им точно знать, когда вы обновили библиотеку, чтобы им не пришлось проверять библиотеку постоянно?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На наше счастье, какие-то умные головы специально для этого изобрели RSS (аббревиатура расшифровывается как Rich Site Summary (Подробная сводка по сайту) или Really Simple Syndication (Действительно простая синдикация) в зависимости от того, у кого вы спрашиваете). Что важнее, и '''Picasa''', и '''Flickr''' имеют средства настройки RSS-ленты, а значит, ваша аудитория может «записаться» в вашу библиотеку и будет автоматически уведомляться о новых поступлениях.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Главное отличие '''Flickr''' от '''Picasa''' в том, что первый может запретить доступ к вашим фотографиям определенному кругу друзей и знакомых, что определяется вами в приложении. Реальная сила этого заключается в том, что '''Flickr''' может работать и с друзьями, и с семьей. Например, серия чисто пейзажных снимков вашего отпуска помещается в общедоступный профиль '''Flickr «public»'''. Более личные снимки (их-то я и называю почтовыми открытками XXI века) отправляются в раздел «друзья», а узко семейные фото резервируются исключительно для родни. Очевидно.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Picasa, наоборот, делает общедоступным все, с оговоркой, что вы сами укажете, сделать ли ваши изображения доступными по поиску. Это означает, что любой посетитель должен сначала угадать или раздобыть таинственный URL вашей библиотеки изображений (к примеру, [http://picasaweb.google.co.uk/andy.channelle/Animals?authkey=u-jwWtIu_ 3Q]), чтобы суметь просмотреть ваши снимки. Вы можете, естественно, сделать часть библиотек общедоступными '''(‘public’)''', тогда ваши изображения будут доступны для поиска и просмотра любому. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы этим воспользоваться, вы отсылаете web-адрес своего Flickrпотока или web-альбома друзьям и родственникам, а те входят и ищут маленькую кнопку с названием RSS. Они копируют этот адрес в свою RSS-читалку (лично у меня Blam), и RSS-читалка периодически проверяет наличие обновлений. Заметив любые изменения, она моментально загрузит новые фото, и ваши люди смогут просмотреть их через несколько минут после того, как вы их разместили. Это быстрее, чем почтовые открытки, дешевле (возможно), чем мультимедийные сообщения с мобильного телефона и забавнее, чем семафор. Только убедитесь, что вы сохранили лучшие снимки для ночного слайд-шоу в Linux, приправленного парой бутылочек красного вина или бокалов сангрии, когда вернетесь обратно. '''LXF'''&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%9C%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5</id>
		<title>LXF95:Мнение</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%9C%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5"/>
				<updated>2008-03-23T23:56:27Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Мнение: Джереми Элисон''&lt;br /&gt;
=== '''Попав под колеса индустрии''' ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=|&lt;br /&gt;
Содержание='''Эллисон Джереми''' – ведущий разработчик команды Samba, сейчас работает на Google в Сан-Хосе, Калифорния.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Будучи компьютерным оракулом семьи, легко угодить в переделку. Как-то раз я сидел с друзьями своей жены, которые весело щебетали по-китайски. А я на этом языке умею только считать до десяти, и глубокомысленные беседы мне поддерживать сложно, коль скоро речь не идет об арифметике. Я заскучал, а это всегда штука опасная. «У моей дочки новый компьютер – вы не могли бы помочь настроить его?» – спросил один из друзей. «С удовольствием », – ответил я.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Это был новый ноутбук с установленной Windows Vista. «Вы не могли бы установить какие-нибудь полезные программы, ну, чтобы она могла делать уроки с их помощью?» – попросил этот отец. Предустановленным офисным пакетом была пробная версия Microsoft Office 2007, поэтому я скачал OpenOffice.org и множество других, более полезных, интересных и находящихся в свободном доступе образовательных программ из сети. Не все они были свободными – я догматик, лишь когда речь идет о свободе ПО на моем личном компьютере, но при настройке программ для ребенка не до проповедей. Я настроил ООо на сохранение файлов по умолчанию в форматах Microsoft Office, чтобы девочка не страдала насчет обмена файлами с друзьями и учителями.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Весьма довольный собой, я принялся показывать все то новое, что установил на компьютер, «…и у тебя даже есть теперь свободный офисный пакет, чтобы ты могла делать уроки, он совместим с Microsoft Office», – гордо возвестил я в конце демонстрации. «Здорово, а можно я посмотрю ту домашнюю работу, которую я уже сделала?» – спросила она. Я направил ее в папку Documents (Документы) и, к своему смятению, обнаружил там несколько файлов с расширением не .doc, на которое я рассчитывал, а .docx. Это новый формат документов, OfficeOpenXML, введенный Microsoft для Office 2007. Поскольку я не пользуюсь Microsoft Office (дожидаясь порта под Linux), я совершенно забыл об этом. Пытаюсь открыть эти файлы в OOo. Безуспешно. Будучи по натуре человеком аккуратным, я удалил пробную версию Microsoft Office 2007, чтобы освободить место на диске. Закачка размером 800 MБ… масса занудных регистраций… и пробная версия установлена заново.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;«Я конвертирую все назад, в формат DOC, который использовали предыдущие версии, – сказал я девочке. – Скорее всего, именно эти версии установлены у тебя в школе». Но, прочитав файлы в Word 2007 и найдя пункт Save As (Сохранить Как) в новой системе меню, я в ужасе убедился, что этот пункт неактивен. «Данная функция доступна только в полной версии Office 2007», сообщила подсказка. «Нажмите здесь, чтобы приобрести полную версию». Я решил прибегнуть к более отчаянной мере. Я выделил весь файл и занялся поиском функций Copy (Копировать) и Paste (Вставить). Форматирования можно было лишиться, но у меня хоть сохранился бы полный текст ее сочинения. Copy (Копировать) и Paste (Вставить) тоже оказались неактивны, и появилось то же знаменательное сообщение, что и в прошлый раз.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Заморозить Copy и Paste! Подумайте, это с какого же перепугу и с какой паранойи можно порешить такое на собрании по поводу разработки пробной версии? «Пусть сохраняют файлы в новых форматах. Новые форматы лучше». До такой степени, что выбор пользователя по умолчанию дезактивируется и становится дополнительной функцией, дозволенной только купившим полную версию. Вдобавок новый формат Office DOCX еще и несовместим с ООо. Это означает, что все документы, созданные за 30 дней пользования пробной версией Office 2007, будут по умолчанию нераспознаваемы никакими другими про граммами, пока вы не оплатите доступ к своим же документам, приобретя полную версию пакета.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;У этой истории счастливый конец: я все же сумел извлечь данные – но стыдобы натерпелся. Девочке пришлось отправить мне документы электронной почтой, и я использовал переводчик OfficeOpenXML (формат DOCX), созданный моим другом Майклом Миксом [Michael Meeks] в Novell. Я сохранил старую добрую виртуальную машину SUSE Linux, чтобы исправлять ошибки в Samba на моей прежней работе, и ее хватило для установки переводчика в новую версию ООо от Novell и восстановления текста. Кроме того, я получил хороший урок: не стоит делать предположения о том, что нужно людям, или чего они ожидают – в следующий раз буду осторожнее.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вот вам поучительный пример пользы общественных открытых стандартов. В сотрудничестве с другими, OpenOffice.org создал и стандартизировал Open Document Format (ODF). Будь в обоих текстовых редакторах предусмотрена поддержка ODF, было бы совершенно неважно, использует ли дочка моего друга Microsoft Office, OOo или еще какой-нибудь текстовый редактор. Возможно, сложное форматирование или презентация и не поддались бы переводу, но ведь большинство людей обычно просто набирают текст, и хотят сделать его попривлекательнее, чтобы начальник их зауважал. Или чтобы получить пятерку за домашнюю работу. Open Document Format – это настолько явное преимущество для всех, что меня удивляет, почему он до сих пор не внедрен повсеместно.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Пожалуйста, помогите формату ODF – поддержите его в своих местных или общенациональных органах власти, в своем сообществе или школе: его нужно популяризировать и поддерживать, иначе не избежать ситуации, когда те, кому не по карману проприетарное ПО, не смогут общаться со своими органами власти или с большинством организаций.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Раз уж я компьютерщик, на прощание подсуну вам задачку. Я придумал еще один способ вытащить девочкины файлы с домашним заданием, без переводчика DOCX. Угадали, о чем я? Как принято в мире истинно открытого кода, давайте вместе придумаем как можно больше способов решения! ''LXF''&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%9C%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5</id>
		<title>LXF95:Мнение</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%9C%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5"/>
				<updated>2008-03-23T23:55:55Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: ''Мнение: Джереми Элисон'' === '''Попав под колеса индустрии''' === &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;  {{Врезка|left| Заголовок=...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Мнение: Джереми Элисон''&lt;br /&gt;
=== '''Попав под колеса индустрии''' ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=|&lt;br /&gt;
Содержание='''Эллисон Джереми''' – ведущий разработчик команды Samba, сейчас работает на Google в Сан-Хосе, Калифорния.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Будучи компьютерным оракулом семьи, легко угодить в переделку. Как-то раз я сидел с друзьями своей жены, которые весело щебетали по-китайски. А я на этом языке умею только считать до десяти, и глубокомысленные беседы мне поддерживать сложно, коль скоро речь не идет об арифметике. Я заскучал, а это всегда штука опасная. «У моей дочки новый компьютер – вы не могли бы помочь настроить его?» – спросил один из друзей. «С удовольствием », – ответил я.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Это был новый ноутбук с установленной Windows Vista. «Вы не могли бы установить какие-нибудь полезные программы, ну, чтобы она могла делать уроки с их помощью?» – попросил этот отец. Предустановленным офисным пакетом была пробная версия Microsoft Office 2007, поэтому я скачал OpenOffice.org и множество других, более полезных, интересных и находящихся в свободном доступе образовательных программ из сети. Не все они были свободными – я догматик, лишь когда речь идет о свободе ПО на моем личном компьютере, но при настройке программ для ребенка не до проповедей. Я настроил ООо на сохранение файлов по умолчанию в форматах Microsoft Office, чтобы девочка не страдала насчет обмена файлами с друзьями и учителями.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Весьма довольный собой, я принялся показывать все то новое, что установил на компьютер, «…и у тебя даже есть теперь свободный офисный пакет, чтобы ты могла делать уроки, он совместим с Microsoft Office», – гордо возвестил я в конце демонстрации. «Здорово, а можно я посмотрю ту домашнюю работу, которую я уже сделала?» – спросила она. Я направил ее в папку Documents (Документы) и, к своему смятению, обнаружил там несколько файлов с расширением не .doc, на которое я рассчитывал, а .docx. Это новый формат документов, OfficeOpenXML, введенный Microsoft для Office 2007. Поскольку я не пользуюсь Microsoft Office (дожидаясь порта под Linux), я совершенно забыл об этом. Пытаюсь открыть эти файлы в OOo. Безуспешно. Будучи по натуре человеком аккуратным, я удалил пробную версию Microsoft Office 2007, чтобы освободить место на диске. Закачка размером 800 MБ… масса занудных регистраций… и пробная версия установлена заново.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;«Я конвертирую все назад, в формат DOC, который использовали предыдущие версии, – сказал я девочке. – Скорее всего, именно эти версии установлены у тебя в школе». Но, прочитав файлы в Word 2007 и найдя пункт Save As (Сохранить Как) в новой системе меню, я в ужасе убедился, что этот пункт неактивен. «Данная функция доступна только в полной версии Office 2007», сообщила подсказка. «Нажмите здесь, чтобы приобрести полную версию». Я решил прибегнуть к более отчаянной мере. Я выделил весь файл и занялся поиском функций Copy (Копировать) и Paste (Вставить). Форматирования можно было лишиться, но у меня хоть сохранился бы полный текст ее сочинения. Copy (Копировать) и Paste (Вставить) тоже оказались неактивны, и появилось то же знаменательное сообщение, что и в прошлый раз.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Заморозить Copy и Paste! Подумайте, это с какого же перепугу и с какой паранойи можно порешить такое на собрании по поводу разработки пробной версии? «Пусть сохраняют файлы в новых форматах. Новые форматы лучше». До такой степени, что выбор пользователя по умолчанию дезактивируется и становится дополнительной функцией, дозволенной только купившим полную версию. Вдобавок новый формат Office DOCX еще и несовместим с ООо. Это означает, что все документы, созданные за 30 дней пользования пробной версией Office 2007, будут по умолчанию нераспознаваемы никакими другими про граммами, пока вы не оплатите доступ к своим же документам, приобретя полную версию пакета.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;У этой истории счастливый конец: я все же сумел извлечь данные – но стыдобы натерпелся. Девочке пришлось отправить мне документы электронной почтой, и я использовал переводчик OfficeOpenXML (формат DOCX), созданный моим другом Майклом Миксом [Michael Meeks] в Novell. Я сохранил старую добрую виртуальную машину SUSE Linux, чтобы исправлять ошибки в Samba на моей прежней работе, и ее хватило для установки переводчика в новую версию ООо от Novell и восстановления текста. Кроме того, я получил хороший урок: не стоит делать предположения о том, что нужно людям, или чего они ожидают – в следующий раз буду осторожнее.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вот вам поучительный пример пользы общественных открытых стандартов. В сотрудничестве с другими, OpenOffice.org создал и стандартизировал Open Document Format (ODF). Будь в обоих текстовых редакторах предусмотрена поддержка ODF, было бы совершенно неважно, использует ли дочка моего друга Microsoft Office, OOo или еще какой-нибудь текстовый редактор. Возможно, сложное форматирование или презентация и не поддались бы переводу, но ведь большинство людей обычно просто набирают текст, и хотят сделать его попривлекательнее, чтобы начальник их зауважал. Или чтобы получить пятерку за домашнюю работу. Open Document Format – это настолько явное преимущество для всех, что меня удивляет, почему он до сих пор не внедрен повсеместно.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Пожалуйста, помогите формату ODF – поддержите его в своих местных или общенациональных органах власти, в своем сообществе или школе: его нужно популяризировать и поддерживать, иначе не избежать ситуации, когда те, кому не по карману проприетарное ПО, не смогут общаться со своими органами власти или с большинством организаций.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Раз уж я компьютерщик, на прощание подсуну вам задачку. Я придумал еще один способ вытащить девочкины файлы с домашним заданием, без переводчика DOCX. Угадали, о чем я? Как принято в мире истинно открытого кода, давайте вместе придумаем как можно больше способов решения! ''LXF''&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%9F%D0%BE%D0%B4%D0%B0%D1%82%D0%BB%D0%B8%D0%B2%D1%8B%D0%B9_Nginx</id>
		<title>LXF95:Податливый Nginx</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%9F%D0%BE%D0%B4%D0%B0%D1%82%D0%BB%D0%B8%D0%B2%D1%8B%D0%B9_Nginx"/>
				<updated>2008-03-23T23:47:59Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''ЧАСТЬ 2 Довольно теории – настало время пустить Nginx в дело.'''Валерия Комиссарова''' подскажет, как собрать его и настроить для работы в типовых ситуациях.''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Впрошлый раз мы познакомились с интересной разработкой под названием Nginx. Продукт создан нашим соотечествен- ником Игорем Сысоевым и представляет собой web-сервер, а также HTTP- и почтовый прокси-сервер. Мы детально рассмотрели особенности Nginx, его функциональность и принципы действия. Необходимая предварительная информация получена – перейдем к обсуждению процесса работы с Nginx: установки, настройки и использования.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nginx: инсталляция ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Официальный сайт Nginx расположен на домашней странице его создателя, г-на Сысоева – [http://sysoev.ru/nginx], где всегда можно найти последнюю версию продукта, небольшой комплект документации, список произведенных изменений [http://sysoev.ru/nginx/changes.html] и некоторую другую информацию. Текущая версия Nginx – 0.6.2 – находится в разделе «Скачать». Nginx работает только под UNIX-подобными системами (разновидности Linux, BSD, Solaris и др.), поэтому архив с дистрибутивом продукта запакован традиционным для них образом и имеет расширение .tar.gz. Доступны также пакеты RPM/DEB, ebuild’ы Gentoo и порты FreeBSD.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В установке Nginx возможны два варианта развития событий: сборка из исходных текстов и установка из пакета. Первое происходит стандартным образом: ./configure, make и make install. Команда ./configure в данном случае принимает множество различных параметров – вот самые важные из них:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''--with-http_ssl_module'' позволяет реализовать работу HTTP-сервера по протоколу HTTPS.&amp;lt;br&amp;gt; &lt;br /&gt;
''--without-http_proxy_module'' запрещает сборку прокси-модуля HTTP-сервера.&amp;lt;br&amp;gt;&lt;br /&gt;
''--without-http_gzip_module'' отменяет сборку модуля компрессии ответов HTTP-сервера. Полный список параметров можно найти на официальном сайте проекта или в выводе ./configure --help. Собрав Nginx, не спешите тут же его запускать: он еще не настроен и не знает, что нужно делать для решения нужных вам задач. Об этом мы сейчас и поговорим.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== На старт, внимание, марш! ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Главный инструмент и помощник в настройке Nginx – конечно же, его конфигурационный файл, имя которого nginx.conf.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Из чего он состоит? Из секций и директив (впрочем, деление условно), которые могут находиться как внутри секций, так и вне них (отметим, что расположение директивы внутри какой-либо секции еще не означает, что она обязательно не глобальная). По умолчанию (в стандартном файле конфигурации) часть директив закомментирована. В зависимости от стоящих перед вами задач, можно либо раскомментировать их, либо оставить все как есть.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы правильно настроить Nginx, необходимо ответить на серьезный вопрос: для чего мы будем его использовать? Примерное определение можно найти, вспомнив материал первой статьи: Nginx хорош в качестве HTTP-сервера и прокси (как web, так и почтового). Вот и все. Но и HTTP-серверы бывают разные – с поддержкой PHP и без нее, поддерживающие SSL и нет, и т.д., и это следует учесть.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Прежде чем переходить к рассмотрению процессов настройки каждого из выделенных нами направлений, скажем несколько слов о глобальных директивах конфигурационного файла Nginx.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Глобальными эти директивы называются совсем не случайно. Они относится к работе всего Nginx в целом, а не к каким-то отдельным модулям. Так, директива worker_processes указывает максимальное количество рабочих процессов, user – группу и пользователя, от имени которого будут запускаться рабочие процессы, а include позволяет подключать другие файлы. На сегодняшний день директив такого типа у Nginx не так уж много – всего одиннадцать.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Секции, которые могут находиться в файле конфигурации Nginx,&lt;br /&gt;
относятся к модулям программы: ngx_http_core_module, ngx_http_access_module или любому другому.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nginx как HTTP-сервер ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Допустим, вы хотите собрать незамысловатый web-сервер, использующийся для «отдачи» пользователям различного статического контента. Что необходимо сделать? В простейшем случае надо:&lt;br /&gt;
&lt;br /&gt;
*Указать пользователя, от имени которого будет работать наш webсервер, в глобальной директиве user; количество рабочих процессов (директива worker_connections) и файл, куда будут записываться сообщения об ошибках (директива error_log). Также нужно указать тип передаваемых данных по умолчанию (директива default_type).&lt;br /&gt;
&lt;br /&gt;
*Подумать над форматом записей log-файлов. Например, мож- но использовать такой формат записи, где будут отражены адрес пользователя, его браузер и т.п. Это делается с помощью директивы log_format.&lt;br /&gt;
&lt;br /&gt;
*Помимо указания дополнительных параметров, относящихся к передаче данных (например, tcp_nodelay), нужно с помощью директи- вы listen указать порты, которые будет прослушивать наш web-сервер (т.е. ждать на них запросов от пользователей).&lt;br /&gt;
&lt;br /&gt;
*С помощью секции location (модуль ngx_http_core_module) указать выбор нужных конфигураций в зависимости от URI запроса. В общем виде, файл конфигурации HTTP-сервера, «раздающего» статический контент, может выглядеть так, как показано ниже (указаны только основные директивы).&amp;lt;br&amp;gt;&lt;br /&gt;
Подключаем входящий в дистрибутив Nginx файл соответствий расширений файлов MIME-типам:&lt;br /&gt;
&lt;br /&gt;
 http&lt;br /&gt;
 { include conf/mime.types;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;MIME-тип по умолчанию, например, text/plain. В нашем случае можно указать application/octet-stream. Стоит также обратить внимание на директивы модуля ngx_http_core_module, чьи имена содержат в себе «client»: client_body_buffer_size, client_body_timeout, client_max_body_ size и прочие – их назначение можно уточнить в документации:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 default_type тип;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Включение (on) следующей директивы позволяет осуществлять сжатие ответов сервера и «тянет» за собой нескольких сопутствующих директив: gzip_comp_level (уровень компрессии), gzip_buffers (буферы, используемые для сжатия). Советую включить, если ваш статический контент не является сжатым сам по себе:&lt;br /&gt;
&lt;br /&gt;
 gzip on/off;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разрешим Nginx использовать системный вызов sendfile(). Рекомендуется к использованию:&lt;br /&gt;
&lt;br /&gt;
 sendfile on/off;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Включение или отключение алгоритма Нэгла (Nagle). См. man 7 tcp:&lt;br /&gt;
&lt;br /&gt;
 tcp_nodelay on/off;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Время, по истечении которого keepalive-соединение будет разорвано сервером:&lt;br /&gt;
&lt;br /&gt;
 keepalive_timeout число;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Следующее, что мы должны сделать – открыть секцию server. Укажем порт, прослушивающий Nginx, обычно 80:&lt;br /&gt;
 server { listen номер порта;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Директива, определяющая имя виртуального сервера: server_name имя; Если следующая директива находится в положении on, то в поле Content-Type заголовка ответа будет добавленa информация о коди- ровке, см. ngx_http_charset_module:&amp;lt;br&amp;gt;&lt;br /&gt;
 charset on/off;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Данная секция (хотя корректнее ее называть все же директивой) определяет конфигурацию для всех запросов, удовлетворяющих указанному шаблону. Например, можно «приказать» Nginx обрабатывать те или иные запросы самостоятельно или, наоборот, передавать их back-end’у. Секции location – в сущности, главное в настройке Nginx как HTTP-сервера. Понятно, что нужно создать отдельную секцию (прости- те, директиву) location для обработки каждого типа запроса: } location шаблон URI запроса; Следуя указанным выше принципам, мы получим простейший, но зато корректно функционирующий web-сервер.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Nginx как прокси-сервера ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Здесь многое идентично предыдущему случаю, но есть «усложне- ние»: директивы proxy_pass, proxy_connect_timeout, proxy_buffer_size и т.п. (модуль ngx_http_proxy_module). Как вы наверняка уже поняли, эти директивы нужно указывать в секции(-ях) location. Давайте попробуем собрать почтовый прокси-сервер: это самый интересный вариант. Чтобы все получилось, необходимо передать сценарию configure ключ --with-mail на этапе настройки исходных текстов. Принцип действия здесь прост: Nginx начинает работать с пользователем, «уточняет» корректность идентификационных данных у сервера авторизации, а затем приступает к передаче данных в оба «конца»: от пользователя к POP3/IMAP-серверу, координаты которого он получил у сервера авторизации, и обратно. Таким образом, нам потребу- ется указать порты, которые будет «слушать» Nginx, и задать адрес сервера авторизации (директива auth_http). Каким образом нужно отредактировать конфигурационный файл Nginx, чтобы он мог работать почтовым прокси-сервером? Давайте поступим вот как.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Укажем URL HTTP-сервера авторизации:&amp;lt;br&amp;gt;&lt;br /&gt;
 нас интересуют модули ngx_mail_core_module,&lt;br /&gt;
 ngx_mail_auth_http_module,&lt;br /&gt;
 ngx_mail_proxy_module, ngx_mail_ssl_module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mail { server_name имя;&lt;br /&gt;
 auth_http URL-адрес;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Далее можно привести список IMAP-расширений, отдаваемый кли- енту в ответ на команду CAPABILITY:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 imap_capabilities список;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Следующие директивы позволяют указать список POP3-расширений и задать расширенные методы аутентификации POP3-клиентов:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 pop3_auth список;&lt;br /&gt;
 pop3_capabilities список;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;То же самое можно сделать и для SMTP:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 smtp_auth список;&lt;br /&gt;
 smtp_capabilities список;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Далее следует создать необходимое количество секций server, для каждой из которых указать директивы listen, protocol и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Говоря о настройке Nginx, нельзя не упомянуть о виртуальных серверах. Они реализуются просто и изящно – путем создания требуемого количества секций server, в каждой из которых указываются «прослушиваемые» порты и имя виртуального сервера server_name (модуль ngx_http_core_module).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Настроили? Можно запускать. Просто стартуем исполняемый файл Nginx от имени суперпользователя. Затем можно посмотреть список запущенных в системе процессов, и если все в порядке, увидеть про- цессы Nginx: главный (master) и несколько рабочих (worker). Как основ- ный, так и рабочие процессы поддерживают управление сигналами (например, SIGQUIT, SIGHUP, SIGWINCH и т.д.). С их помощью можно «заставить» Nginx заново обработать файл конфигурации, произвести ротацию журналов, обновить сервер и многое другое.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Заключение ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Некоторые читатели возмутятся: где же полные примеры конфигурационных файлов? Их нет; и это было сделано сознательно, т.к. идти по привычному пути не хотелось. А хотелось показать некий концептуальный подход к Nginx, не слишком «завязанный» на конкретные директивы и технические нюансы, и продемонстрировать, как профессионально и красиво построен Nginx с архитектурной точки зрения; насколько легко его настраивать и работать с ним. Можно отметить, что все директивы конфигурационного файла прекрасно рассорти- рованы по модулям; и те, и другие обладают удобными, интуитивно понятными названиями. Безусловно, Nginx еще есть куда развиваться. Его создатель навер- няка добавит в продукт немало примечательных функций; среди про- чих экспериментальных возможностей следует упомянуть модуль ngx_http_perl_module, реализующий встроенный интерпретатор Perl. Пожелаем проекту дальнейших успехов, а тем временем будем ждать первую версию продукта, и нормальную документацию к нему.&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%9F%D0%BE%D0%B4%D0%B0%D1%82%D0%BB%D0%B8%D0%B2%D1%8B%D0%B9_Nginx</id>
		<title>LXF95:Податливый Nginx</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%9F%D0%BE%D0%B4%D0%B0%D1%82%D0%BB%D0%B8%D0%B2%D1%8B%D0%B9_Nginx"/>
				<updated>2008-03-23T23:43:16Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Впрошлый раз мы познакомились с интересной разработкой под названием...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Впрошлый раз мы познакомились с интересной разработкой под названием Nginx. Продукт создан нашим соотечествен- ником Игорем Сысоевым и представляет собой web-сервер, а также HTTP- и почтовый прокси-сервер. Мы детально рассмотрели особенности Nginx, его функциональность и принципы действия. Необходимая предварительная информация получена – перейдем к обсуждению процесса работы с Nginx: установки, настройки и использования.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nginx: инсталляция ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Официальный сайт Nginx расположен на домашней странице его создателя, г-на Сысоева – [http://sysoev.ru/nginx], где всегда можно найти последнюю версию продукта, небольшой комплект документации, список произведенных изменений [http://sysoev.ru/nginx/changes.html] и некоторую другую информацию. Текущая версия Nginx – 0.6.2 – находится в разделе «Скачать». Nginx работает только под UNIX-подобными системами (разновидности Linux, BSD, Solaris и др.), поэтому архив с дистрибутивом продукта запакован традиционным для них образом и имеет расширение .tar.gz. Доступны также пакеты RPM/DEB, ebuild’ы Gentoo и порты FreeBSD.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В установке Nginx возможны два варианта развития событий: сборка из исходных текстов и установка из пакета. Первое происходит стандартным образом: ./configure, make и make install. Команда ./configure в данном случае принимает множество различных параметров – вот самые важные из них:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''--with-http_ssl_module'' позволяет реализовать работу HTTP-сервера по протоколу HTTPS.&amp;lt;br&amp;gt; &lt;br /&gt;
''--without-http_proxy_module'' запрещает сборку прокси-модуля HTTP-сервера.&amp;lt;br&amp;gt;&lt;br /&gt;
''--without-http_gzip_module'' отменяет сборку модуля компрессии ответов HTTP-сервера. Полный список параметров можно найти на официальном сайте проекта или в выводе ./configure --help. Собрав Nginx, не спешите тут же его запускать: он еще не настроен и не знает, что нужно делать для решения нужных вам задач. Об этом мы сейчас и поговорим.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== На старт, внимание, марш! ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Главный инструмент и помощник в настройке Nginx – конечно же, его конфигурационный файл, имя которого nginx.conf.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Из чего он состоит? Из секций и директив (впрочем, деление условно), которые могут находиться как внутри секций, так и вне них (отметим, что расположение директивы внутри какой-либо секции еще не означает, что она обязательно не глобальная). По умолчанию (в стандартном файле конфигурации) часть директив закомментирована. В зависимости от стоящих перед вами задач, можно либо раскомментировать их, либо оставить все как есть.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы правильно настроить Nginx, необходимо ответить на серьезный вопрос: для чего мы будем его использовать? Примерное определение можно найти, вспомнив материал первой статьи: Nginx хорош в качестве HTTP-сервера и прокси (как web, так и почтового). Вот и все. Но и HTTP-серверы бывают разные – с поддержкой PHP и без нее, поддерживающие SSL и нет, и т.д., и это следует учесть.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Прежде чем переходить к рассмотрению процессов настройки каждого из выделенных нами направлений, скажем несколько слов о глобальных директивах конфигурационного файла Nginx.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Глобальными эти директивы называются совсем не случайно. Они относится к работе всего Nginx в целом, а не к каким-то отдельным модулям. Так, директива worker_processes указывает максимальное количество рабочих процессов, user – группу и пользователя, от имени которого будут запускаться рабочие процессы, а include позволяет подключать другие файлы. На сегодняшний день директив такого типа у Nginx не так уж много – всего одиннадцать.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Секции, которые могут находиться в файле конфигурации Nginx,&lt;br /&gt;
относятся к модулям программы: ngx_http_core_module, ngx_http_access_module или любому другому.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nginx как HTTP-сервер ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Допустим, вы хотите собрать незамысловатый web-сервер, использующийся для «отдачи» пользователям различного статического контента. Что необходимо сделать? В простейшем случае надо:&lt;br /&gt;
&lt;br /&gt;
*Указать пользователя, от имени которого будет работать наш webсервер, в глобальной директиве user; количество рабочих процессов (директива worker_connections) и файл, куда будут записываться сообщения об ошибках (директива error_log). Также нужно указать тип передаваемых данных по умолчанию (директива default_type).&lt;br /&gt;
&lt;br /&gt;
*Подумать над форматом записей log-файлов. Например, мож- но использовать такой формат записи, где будут отражены адрес пользователя, его браузер и т.п. Это делается с помощью директивы log_format.&lt;br /&gt;
&lt;br /&gt;
*Помимо указания дополнительных параметров, относящихся к передаче данных (например, tcp_nodelay), нужно с помощью директи- вы listen указать порты, которые будет прослушивать наш web-сервер (т.е. ждать на них запросов от пользователей).&lt;br /&gt;
&lt;br /&gt;
*С помощью секции location (модуль ngx_http_core_module) указать выбор нужных конфигураций в зависимости от URI запроса. В общем виде, файл конфигурации HTTP-сервера, «раздающего» статический контент, может выглядеть так, как показано ниже (указаны только основные директивы).&amp;lt;br&amp;gt;&lt;br /&gt;
Подключаем входящий в дистрибутив Nginx файл соответствий расширений файлов MIME-типам:&lt;br /&gt;
&lt;br /&gt;
 http&lt;br /&gt;
 { include conf/mime.types;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;MIME-тип по умолчанию, например, text/plain. В нашем случае можно указать application/octet-stream. Стоит также обратить внимание на директивы модуля ngx_http_core_module, чьи имена содержат в себе «client»: client_body_buffer_size, client_body_timeout, client_max_body_ size и прочие – их назначение можно уточнить в документации:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 default_type тип;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Включение (on) следующей директивы позволяет осуществлять сжатие ответов сервера и «тянет» за собой нескольких сопутствующих директив: gzip_comp_level (уровень компрессии), gzip_buffers (буферы, используемые для сжатия). Советую включить, если ваш статический контент не является сжатым сам по себе:&lt;br /&gt;
&lt;br /&gt;
 gzip on/off;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разрешим Nginx использовать системный вызов sendfile(). Рекомендуется к использованию:&lt;br /&gt;
&lt;br /&gt;
 sendfile on/off;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Включение или отключение алгоритма Нэгла (Nagle). См. man 7 tcp:&lt;br /&gt;
&lt;br /&gt;
 tcp_nodelay on/off;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Время, по истечении которого keepalive-соединение будет разорвано сервером:&lt;br /&gt;
&lt;br /&gt;
 keepalive_timeout число;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Следующее, что мы должны сделать – открыть секцию server. Укажем порт, прослушивающий Nginx, обычно 80:&lt;br /&gt;
 server { listen номер порта;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Директива, определяющая имя виртуального сервера: server_name имя; Если следующая директива находится в положении on, то в поле Content-Type заголовка ответа будет добавленa информация о коди- ровке, см. ngx_http_charset_module:&amp;lt;br&amp;gt;&lt;br /&gt;
 charset on/off;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Данная секция (хотя корректнее ее называть все же директивой) определяет конфигурацию для всех запросов, удовлетворяющих указанному шаблону. Например, можно «приказать» Nginx обрабатывать те или иные запросы самостоятельно или, наоборот, передавать их back-end’у. Секции location – в сущности, главное в настройке Nginx как HTTP-сервера. Понятно, что нужно создать отдельную секцию (прости- те, директиву) location для обработки каждого типа запроса: } location шаблон URI запроса; Следуя указанным выше принципам, мы получим простейший, но зато корректно функционирующий web-сервер.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Nginx как прокси-сервера ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Здесь многое идентично предыдущему случаю, но есть «усложне- ние»: директивы proxy_pass, proxy_connect_timeout, proxy_buffer_size и т.п. (модуль ngx_http_proxy_module). Как вы наверняка уже поняли, эти директивы нужно указывать в секции(-ях) location. Давайте попробуем собрать почтовый прокси-сервер: это самый интересный вариант. Чтобы все получилось, необходимо передать сценарию configure ключ --with-mail на этапе настройки исходных текстов. Принцип действия здесь прост: Nginx начинает работать с пользователем, «уточняет» корректность идентификационных данных у сервера авторизации, а затем приступает к передаче данных в оба «конца»: от пользователя к POP3/IMAP-серверу, координаты которого он получил у сервера авторизации, и обратно. Таким образом, нам потребу- ется указать порты, которые будет «слушать» Nginx, и задать адрес сервера авторизации (директива auth_http). Каким образом нужно отредактировать конфигурационный файл Nginx, чтобы он мог работать почтовым прокси-сервером? Давайте поступим вот как.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Укажем URL HTTP-сервера авторизации:&amp;lt;br&amp;gt;&lt;br /&gt;
 нас интересуют модули ngx_mail_core_module,&lt;br /&gt;
 ngx_mail_auth_http_module,&lt;br /&gt;
 ngx_mail_proxy_module, ngx_mail_ssl_module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mail { server_name имя;&lt;br /&gt;
 auth_http URL-адрес;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Далее можно привести список IMAP-расширений, отдаваемый кли- енту в ответ на команду CAPABILITY:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 imap_capabilities список;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Следующие директивы позволяют указать список POP3-расширений и задать расширенные методы аутентификации POP3-клиентов:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 pop3_auth список;&lt;br /&gt;
 pop3_capabilities список;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;То же самое можно сделать и для SMTP:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 smtp_auth список;&lt;br /&gt;
 smtp_capabilities список;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Далее следует создать необходимое количество секций server, для каждой из которых указать директивы listen, protocol и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Говоря о настройке Nginx, нельзя не упомянуть о виртуальных серверах. Они реализуются просто и изящно – путем создания требуемого количества секций server, в каждой из которых указываются «прослушиваемые» порты и имя виртуального сервера server_name (модуль ngx_http_core_module).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Настроили? Можно запускать. Просто стартуем исполняемый файл Nginx от имени суперпользователя. Затем можно посмотреть список запущенных в системе процессов, и если все в порядке, увидеть про- цессы Nginx: главный (master) и несколько рабочих (worker). Как основ- ный, так и рабочие процессы поддерживают управление сигналами (например, SIGQUIT, SIGHUP, SIGWINCH и т.д.). С их помощью можно «заставить» Nginx заново обработать файл конфигурации, произвести ротацию журналов, обновить сервер и многое другое.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Заключение ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Некоторые читатели возмутятся: где же полные примеры конфигурационных файлов? Их нет; и это было сделано сознательно, т.к. идти по привычному пути не хотелось. А хотелось показать некий концептуальный подход к Nginx, не слишком «завязанный» на конкретные директивы и технические нюансы, и продемонстрировать, как профессионально и красиво построен Nginx с архитектурной точки зрения; насколько легко его настраивать и работать с ним. Можно отметить, что все директивы конфигурационного файла прекрасно рассорти- рованы по модулям; и те, и другие обладают удобными, интуитивно понятными названиями. Безусловно, Nginx еще есть куда развиваться. Его создатель навер- няка добавит в продукт немало примечательных функций; среди про- чих экспериментальных возможностей следует упомянуть модуль ngx_http_perl_module, реализующий встроенный интерпретатор Perl. Пожелаем проекту дальнейших успехов, а тем временем будем ждать первую версию продукта, и нормальную документацию к нему.&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95</id>
		<title>LXF95</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95"/>
				<updated>2008-03-23T09:26:28Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: /* А также ... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Linux Format новости ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:GPLv3 – новая эпоха|GPLv3 – новая эпоха]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Министерство информационных технологий и связи Российской Федерации реабилитируется|Министерство информационных технологий и связи Российской Федерации реабилитируется]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Mandriva Corporate: скромные, но все-таки успехи|Mandriva Corporate: скромные, но все-таки успехи]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Особенности национальной радиофикации|Особенности национальной радиофикации]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:«Форматирование» по-азиатски|«Форматирование» по-азиатски]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Встречаем Slackware 12.0|Встречаем Slackware 12.0]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Apple, повелитель принтеров|Apple, повелитель принтеров]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Горячие новости из Якутии|Горячие новости из Якутии]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Неделя открытых технологий в Новосибирске|Неделя открытых технологий в Новосибирске]]&lt;br /&gt;
&lt;br /&gt;
Пытаясь попасть на это мероприятие, Евгений Балдин простоял час в автомобильной пробке Не напрасно ли? Как выясняется, нет.&lt;br /&gt;
&lt;br /&gt;
=== Обзоры ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Yoggie Gatekeeper Pro|Yoggie Gatekeeper Pro]]&lt;br /&gt;
&lt;br /&gt;
Подключите эту штучку к своему Windows - компьютеру или Linux-ноутбуку — и спите спокойно.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Studio to Go 2|Studio to Go 2]]&lt;br /&gt;
&lt;br /&gt;
Всеобъемлющая коллекция инструментов для работы со звуком на одном-единственном CD.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Gentoo 2007.0|Gentoo 2007.0]]&lt;br /&gt;
&lt;br /&gt;
Используйте этот дистрибутив, чтобы выжать последнюю каплю скорости из своей системы.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:AstroMenace|AstroMenace]]&lt;br /&gt;
&lt;br /&gt;
Космическая стрелялка — от отечественного разработчика, задаром и для Linux/Windows? Будет во что поиграть и в офисе, и дома!&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Ballistics|Ballistics]]&lt;br /&gt;
&lt;br /&gt;
Отвлечешься на наносекунду — и останется от тебя только мокрое пятнышко... на асфальте.&lt;br /&gt;
&lt;br /&gt;
=== Сравнение ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Почтовые клиенты|Почтовые клиенты]]&lt;br /&gt;
&lt;br /&gt;
Opera Mail &amp;lt;br&amp;gt;&lt;br /&gt;
Mutt &amp;lt;br&amp;gt;&lt;br /&gt;
Kontact (Kmail) &amp;lt;br&amp;gt;&lt;br /&gt;
Evolution &amp;lt;br&amp;gt;&lt;br /&gt;
Thunderbird &amp;lt;br&amp;gt;&lt;br /&gt;
Balsa &amp;lt;br&amp;gt;&lt;br /&gt;
GNUMail&lt;br /&gt;
&lt;br /&gt;
=== Спецрепортаж ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Справочник Железо-2007|Справочник Железо-2007]]&lt;br /&gt;
&lt;br /&gt;
Хит-парад дружественных к Linux устройств!&lt;br /&gt;
&lt;br /&gt;
=== А также ... ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:В защиту GPL3|В защиту GPL3]]&lt;br /&gt;
&lt;br /&gt;
Linux Format беседует с Ричардом Столлмэном.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Ни секунды простоя|Ни секунды простоя]]&lt;br /&gt;
&lt;br /&gt;
Как работает техподдержка крупных корпоративных дистрибутивов?&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Тур по файловой системе Linux|Тур по файловой системе Linux]]&lt;br /&gt;
&lt;br /&gt;
Вы никогда больше не потеряетесь в этих каталогах.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Податливый Nginx|Податливый Nginx]]&lt;br /&gt;
&lt;br /&gt;
Вылепите из этого малютки сервер по своему вкусу.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Интервью LXF|Интервью LXF]]&lt;br /&gt;
&lt;br /&gt;
Джим МакКиллан и Рон Колсернян — о Linux Terminal Server Project.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Что за штука|Что за штука]]&lt;br /&gt;
&lt;br /&gt;
Flash, AJAX и Silverlight встречают нового соперника в лице Java FX.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Мнение|Мнение]]&lt;br /&gt;
&lt;br /&gt;
Разработчик Samba Джереми Эллисон начинает собственную рубрику с рассказа о забавном происшевствии за ужином.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Ответы|Ответы]]&lt;br /&gt;
&lt;br /&gt;
В этом месяце: Apache, MythTV, Squid и многое другое.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Школа LXF|Школа LXF]]&lt;br /&gt;
&lt;br /&gt;
Александр Поносов: авторская рубрика на страницах LXF!&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Через месяц|Через месяц]]&lt;br /&gt;
&lt;br /&gt;
Вот над чем мы сейчас работаем.&lt;br /&gt;
&lt;br /&gt;
=== Учебники ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Совет месяца|Совет месяца]]&lt;br /&gt;
&lt;br /&gt;
Разрешаем зависимости. Компилируйте программы без головной боли&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:F-Spot|F-Spot]]&lt;br /&gt;
&lt;br /&gt;
Ваши фото в Сети. Удивите других, заставив Flickr и Picasa плясать под свою дудку&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Akelos|Akelos]]&lt;br /&gt;
&lt;br /&gt;
Меньше кода – больше дела Динамичная разработка с новой средой метапрограммирования на базе PHP.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Cron|Cron]]&lt;br /&gt;
                                                                            &lt;br /&gt;
Автоматизируй Linux. Магия! Заставьте систему работать, как часы, выполняя ее обслуживание по часам.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Mono|Mono]]&lt;br /&gt;
&lt;br /&gt;
Простой доступ к данным. XML имеет свои ограничения — и наступает момент, когда оптимальным решением становится база данных.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:DCOP|DCOP]]&lt;br /&gt;
&lt;br /&gt;
Моддинг KDE. На вашем рабочем столе слишком много открытых окон? Простой DCOP-сценарий все исправит!&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:GTK+|GTK+]]&lt;br /&gt;
&lt;br /&gt;
Переход на C++. Объектная структура GTK+ заслуживает объектного языка программирования. Или лучше все же остаться на C?&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Java EE|Java EE]]&lt;br /&gt;
&lt;br /&gt;
Web 2.0 своими руками. Узнайте как работает AJAX – базовая технология Web 2.0 и научитесь использовать ее из Java EE.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Cinelerra|Cinelerra]]&lt;br /&gt;
&lt;br /&gt;
«Клипы» и сессии. Как удобно расположить материалы на одном единственном монтажном столе.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Препринт|Препринт]]&lt;br /&gt;
&lt;br /&gt;
Подготовка иллюстраций. От верстки в LaTeX до напечатанной книги – шаг первый.&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%92_%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D1%83_GPL3</id>
		<title>LXF95:В защиту GPL3</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%92_%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D1%83_GPL3"/>
				<updated>2008-03-23T01:59:20Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''В защиту GPL 3 Предложения по GPL 3 не раз попадали под огонь критики. Но ''...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''В защиту GPL 3 Предложения по GPL 3 не раз попадали под огонь критики. Но '''Пол Хадсон''', побеседовавший с '''Ричардом Столлмэном''' и '''Брюсом Пиренсом''', считает, что ее нужно поддержать.''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;«GPL нарушает принцип Наполеона: никогда не мешай своему врагу совершать ошибку»''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;'''Эрик Рэймонд'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Критиков GNU GPL хватает как внутри сообщества, так и вне его. Но благодаря GPL у нас есть ядро Linux и инструменты GNU. Восемь из десяти самых загружаемых приложений на SourceForge лицензированы GPL. Ее же применяют около 66% проектов на Freshmeat, 68% проектов на SourceForge, 40% приложений из стандартной установки Fedora и десятки других известных проектов, среди которых MySQL, Qt, Gimp, Inkscape, Scribus, KDE и Evolution.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Так зачем же нам новая лицензия? &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда Free Software Foundation (FSF) готовила масштабные изменения к GPL 2 в виде GPL 3, многие наблюдатели решили, что организация «сеет смуту», в лучшем случае – добавляющую забот небольшим проектам, а в худшем – привносящую политику и устаревающие со временем технологические аспекты в простую лицензию, которая служит сообществу почти 20 лет. «Когда была написана лицензия GPL», отмечает легенда Debian и обозреватель открытого ПО Брюс Пиренс, «не было Интернета, музыку записывали на пластинки, видео – на пленку, а вместо DRM были примитивные программные средства защиты от копирования». У критиков найдется что на это возразить? Разве не время спросить, насколько новая лицензия будет полезной сообществу?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На самом деле, Пиренс считает почтенный возраст GPL недостатком, а не достоинством. Как и я, он является сторонником GPL 3. Я считаю, что важные поправки в GPL 3 дают ей большой потенциал, и она может поддержать сообщество и гарантировать его будущее так, как никогда не смогла бы её предшественница.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Драматические изменения ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''«Самый частый протест против GPL 3, который я слышу: «GPL 2 и так неплоха!» Но GPL никогда не была автономной лицензией. Она всегда зависела от интерпретации авторского права на местах и других законов, которые придавали ей силу. Все это со временем изменилось»''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;'''Брюс Пиренс'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Прошло полтора года с того дня, когда я встречался с Эбеном Могленом [Eben Moglen], чтобы обсудить планы по созданию и утверждению GPL 3 (тогда он был генеральным юрисконсультом FSF). Он думал, что FSF просто введет в действие новую лицензию в начале 2007 года после двенадцати месяцев публичного обсуждения и критики. Сейчас начало июня, а окончательной редакции GPL 3 все еще нет [GPL 3 увидела свет 29 июня 2007 года, – прим. ред.]. Но, вообще говоря, запаздывание составляет несколько месяцев, и с учетом объемности обсуждений GPL 3 это не так уж плохо. Фундаментальная цель Столлмэна «защитить свободу каждого пользователя» не изменилась – изменились лишь методы обеспечения этой защиты. Вот основные положения:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*Ни одно из лицензированных по GPL 3 произведений не может быть «эффективной технологической мерой» для запрета доступа к данным в соответствии с определением DMCA [Digital Millennium Copyright Act, Закон о защите авторских прав в цифровую эпоху, 1998, – прим. перев.], EUCD [European Union Copyright Directive, Европейская директива о защите авторских прав, 2001, – прим. перев.] и другими международными соглашениями. Дистрибутивы GNU/Linux имеют давнюю проблему с чтением DVD-дисков, потому что последние защищаются системой CSS (Content Scramble System). И хотя взломать CSS было очень просто, она классифицируется как эффективная технологическая мера для защиты содержимого диска от копирования, и действия по ее взлому незаконны во многих странах. GPL 3 решает эту проблему так: «передавая охраняемое произведение, вы отказываетесь от всех юридических прав запретить обход технологических мер» – например, вы не можете использовать программу, лицензированную по GPL 3, чтобы запретить пользователям доступ к содержимому DVD-дисков и других носителей.&amp;lt;br&amp;gt;&lt;br /&gt;
*Не должно накладываться никаких ограничений на изменение продуктов GPL 3. Телевизионная приставка TiVo, управляемая GNU/Linux, содержит аппаратный механизм, проверяющий цифровую подпись TiVo в ядре Linux перед запуском устройства. Таким образом, мы можем изменить исходный код ПО приставки (ядра Linux), но не сможем использовать модифицированное ПО, так как оно не содержит цифровой подписи TiVo. Одной из целей GPL 3 является запрет этой так называемой «тивоизации» с помощью требования, согласно которому при изменении любого лицензированного по GPL 3 компонента системы остальные DRM-механизмы не должны препятствовать ее работе.&amp;lt;br&amp;gt;&lt;br /&gt;
*Наконец-то включены патенты на ПО. Каждый, кто вносит свой вклад в программу, должен предоставить «неэксклюзивную всемирную и безвозмездную патентную лицензию на существенные патентные притязания в сделанном вкладе, регулирующую производство, использование, продажу, предложение о продаже, импортирование и другое применение, изменение и распространение этого вклада». На первый взгляд каждый, кто изменит одну строку кода, должен предоставить лицензию лишь на те патенты, которые затрагивает эта строка, но в другом разделе GPL 3 говорится: «Вы должны лицензировать произведение полностью, как единое целое». Это означает, что при изменении исходного кода вы фактически создаёте собственную версию, копируете 99% продукта у исходных разработчиков, а затем добавляете свой код. Все это становится вашим собственным произведением и подпадает под действие положения о патентах. Никаких соглашений о патентной защите по типу Microsoft и Novell в будущем. Этот раздел новой лицензии вызывает самые ожесточенные споры. Отчасти потому, что соглашение Microvell полностью соответствует условиям GPL 2 (хотя и противоречит ее духу), отчасти из-за того, что пока – по крайней мере, на момент написания статьи – не решено, датировать ли лицензию так, чтобы все сделки по типу Microvell были недействительными или же установить некий стартовый момент и, таким образом, «выгородить» Novell. Эта часть лицензии является наиболее важной. Как сказал мне Ричард Столлмэн: «С помощью GPL 3 мы пытаемся спасти свободное ПО от судьбы, которая хуже смерти: стать фактически несвободным за счет владельца патента, который заставляет пользователей платить за использование прав, которые им дает GPL».&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Включение этих важных изменений значительно увеличило размер лицензии: если в GPL 2 менее 3000 слов, то в GPL 3 – 5324 слова. И далеко не все согласны с данными изменениями. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Противники ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''«Я не думаю, что мы должны препятствовать попыткам GPL сделать открытое ПО проприетарным, это окажется вредным нам самим и глупым»''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;'''Эрик Рэймонд'''&amp;lt;/div&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Заметная часть критики в адрес GPL 3 исходит от сообщества разработчиков ядра Linux. Особенно усердствовал Линус Торвальдс [Linux Torvalds]. Во всем этом есть доля иронии, поскольку сложно говорить, что Linux лицензирован только по GPL, хотя в его коде и утверждается обратное. Моглен сказал мне, что у него есть «ясное ощущение, что лицензия ядра Linux – это не GPL и только GPL. Тому есть две причины. Во-первых, за время жизни ядра предлагались различные методы включения исправлений и взаимодействия с двоичными модулями – но разработчики не пытались прибегнуть к GPL. Я рассматриваю это как попустительство к действиям, которые можно было запретить.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Кроме того, в ядре есть GPL-символы и механизм связывания (taint), так что технически API подсказывает существование двух типов несвободных модулей: допустимых и недопустимых.»&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Частично, данная проблема возникает потому, что немногие знают, чего нельзя, и что можно. В результате бинарные модули ядра отделяются от дистрибутивов, и пользователи должны устанавливать их сами. Например, код драйвера Nvidia компонуется с GPL-ядром, что идет вразрез с условиями GPL 2. Как заметил Брюс Пиренс, «Линус сказал много непонятных слов об этой проблеме, но ни одно из них не может считаться юридическим оправданием подобной практики. Каждый раз, когда он говорит что-то новое по данной теме, он еще больше запутывает дело. Я думаю, некоторое время назад он это понял и остановился».&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если ядро могло стать настолько успешным без буквального следования стандартной интерпретации GPL 2, то зачем нужна GPL 3? &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы можете даже спросить, какой вообще смысл в лицензии, если разработчики ядра не придерживаются единого мнения относительно компоновки свободного кода с несвободными модулями?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Опрос, проведенный в сентябре 2006 года среди 29 лиц, внесших наибольший вклад в ядро Linux, показал, что 28 из них против перехода на GPL 3. Двадцать девятый воздержался. По мнению двадцати трех из этих двадцати девяти, GPL 3 гораздо хуже GPL 2, потому что уничтожает всякую возможность движения. Грег Кроа-Хартман [Greg Kroah- Hartman], также принимавший участие в опросе, дал лицензии оценку «-3». Вот как он прокомментировал эту оценку: «Я бы не стал применять v3 (она в самом деле мне не нравится, и моя компания имела бы большие проблемы, разрешив мне попользоваться ее черновиком)». Когда я спросил его мнения о результатах голосования, он сказал: «Основной вывод, который я хотел бы подчеркнуть: многим нравится положение о DRM, а некоторые даже считают, что публиковать ключи необходимо и в рамках GPL 2, но они уверены, что технологические спецификации нельзя включать в официальный документ, который должен прослужить не один год».&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Таким образом, для Кроа-Хартмана проблема в том, что DRM нет места в GPL, а не в том, что положение о DRM – это плохо. Похоже, Торвальдс придерживается того же мнения, хотя выражает его более резко: «В моем мировоззрении нормально, что другие люди делают глупости. Можно сожалеть об этом, но, в конце концов, это их выбор». &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Microsoft и Novell ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок='''Дрожащие корпорации'''|&lt;br /&gt;
Содержание=''Недавно TiVo и Novell составили свои годовые отчеты для USSEC (Комиссии США по ценным бумагам и биржам). Обе компании отметили, что принятие GPL 3 может вызвать проблемы в будущем. В части, TiVo утверждает: «Если предложенная на настоящий момент версия будет принята, мы можем потерять возможность включать операционную систему GNU/Linux в наше программное обеспечение, что неблагоприятно отразится на нашем бизнесе». Novell беспокоит то, что ее соглашение с Microsoft может оказаться под угрозой, потому что MS не станет гарантировать патентную неприкосновенность GPL-проек- тов. Нет, мне не жаль ни одну из этих компаний. Напротив, хорошо, что GPL 3 оказывает запланированное действие.''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;'''Эрик Рэймонд'''&amp;lt;/div&amp;gt;|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
''«Novell и Microsoft создали лазейку в законе. FSF может милостиво согласиться препятствовать применению подобных соглашений к ПО, лицензированному по GPL 3, лишь после мая 2007 года, что позволит Novell распространять программы, использующие GPL 3»'' &lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;'''Брюс Пиренс'''&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ненадолго отложив DRM в сторону, мы находим в GPL 3 другой спорный вопрос, отстоять который будет еще сложнее: должны ли допускаться соглашения, подобные Microsoft и Novell? Просто чтобы освежить вашу память, напомню, что по этому договору Microsoft, среди прочего, обеспечивает защиту клиентов Novell от патентных тяжб со своей стороны в обмен на процент от продаж ПО Novell с открытым исходным кодом. И какие бы доводы не приводила Novell, очевидно, что Microsoft использует это соглашение, чтобы сказать потенциальным потребителям GNU/Linux: выбирайте Novell, если не хотите столкнуться с правовыми проблемами в будущем. По существу, это делает лицензированное по GPL ПО менее свободным, поскольку вы вынуждены использовать решения Novell, если хотите избежать беспокойства.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=|&lt;br /&gt;
Содержание=''Исполнительный директор Microsoft '''Стив Баллмер''' на ежегодной конференции Национальной федерации розничной торговли в 2001 году назвал Linux «раком интеллектуальной собственности, который прилипает ко всему, чего касается». С того времени Microsoft выпустила набор сервисов Microsoft Windows Services for Unix, содержащий GPL лицензированный код.''|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Здесь есть одно препятствие: соглашение между Novell и Microsoft полностью соответствует условиям GPL 2, а FSF не хочет, чтобы оно соответствовало GPL 3. В окончательной редакции лицензии будет пункт, запрещающий подобные соглашения, но он датирован и относится только к договорам, заключенным после появления GPL 3 [фактически, 28 марта 2007 года, – прим. ред.]. Это означает, что договор между Novell и Microsoft сохраняет свою силу.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Но даже если компании, использующие такие соглашения, явно исключаются из правового поля новой лицензии, это не означает ничего хорошего для остальных фирм. Поскольку FSF владеет авторскими правами на значительную часть любого дистрибутива GNU/Linux, она может изменить лицензию для этого ПО так, как посчитает нужным. GPL 3 же явным образом нацелена на две компании, хотя их действия полностью легальны. Я не говорю, что согласен с ними, но могут ли компании, которые планируют использовать GPL-лицензированное ПО, быть уверенными в том, что FSF в очередной раз не изменит лицензию, потому что ей не понравятся их действия? Хотя третья редакция GPL обошла стороной соглашение между MS и Novell, другим фирмам может так не повезти. Должна ли возможность изменения лицензии беспокоить компании? Столлмэн так не считает: «Зачем отказываться от использования GPL 3 только потому, что вам может не понравиться GPL 4?». «Это как сжечь свой дом из-за боязни, что пожар может случиться в следующем году».&lt;br /&gt;
&lt;br /&gt;
=== Сражаясь за GPL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''«Принимая во внимание неумение FSF изящно признать победу, я, честно говоря, думал, что разработка третьей версии превратится в мрачный оппозиционализм»''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;'''Эрик Реймонд'''&amp;lt;/div&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;DRM, патентные соглашения и компоновка с бинарными модулями противостоят GPL, и у FSF могут возникнуть проблемы с ее продвижением в ряде областей. Однако, вопреки ожиданиям Рэймонда, FSF оказалась удивительно отзывчивой организацией. На ранних стадиях обсуждения были внимательно выслушаны мнения всех заинтересованных сторон, и в более поздних редакциях FSF старалась пойти на уступки.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На самом деле, у некоторых из названных проблем есть решения. Хотя DRM нельзя реализовать в GPL-программах, все еще есть четыре области, где его использование законно. И, по мнению Пиренса, именно они являются «лучшими, более безопасными и надежными, независимо от лицензии». Сюда относится аппаратное обеспечение, сопроцессор, микроядро, которое управляет настоящим ядром и программы, работающие в режиме пользователя. Если ядро Linux будет переведено на GPL 3, использование DRM в любом из этих мест будет полностью законным. Однако производители ПО приняли эти методы с большой неохотой даже для GPL 2. Например, многие антивирусы требуют установки двоичных модулей ядра, хотя это и не обязательно для решения их задач. Конечно, если люди сознательно нарушают GPL 2, то почему с выходом третьей версии что-то должно измениться?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Другая проблема, которую следует упомянуть, связана с переводом существующего кода на GPL 3. В большинстве проектов, лицензированных по GPL 2, используется формулировка «вторая версия Лицензии или более поздняя версия по Вашему выбору». Но на практике разработчикам не так-то просто перейти со второй версии на третью, поскольку это требует согласия всех авторов исходного кода проекта. Один из самых крупных GPL-проектов – ядро Linux – может потребовать множества усилий. Доктор Джеймс Боттомли [Dr James Bottomley], один из основных участников проекта, говорит об этой задаче как о «практически невыполнимой». Ларс Линднер, [Lars Lindner] один из разработчиков Liferea, признает, что его проект не перейдет на GPL 3 именно из-за перспективы связи с каждым участником и получения его согласия на принятие новой лицензии. Итак, означает ли это, что ядро Linux и другие проекты навсегда связаны с GPL 2 просто потому, что очень трудно опросить всех разработчиков? Нет – мы можем пойти другим путем и переписать эти участки кода самостоятельно. «Изменить лицензию гораздо проще, чем думают многие, – утверждает Пиренс. – Разработчики ядра никогда не отказывались от замены кода там, где это необходимо, и никогда не медлили с работой. Неважно, каков был ее объем. Достаточно посмотреть на замену BitKeeper’а Git’ом: огромная работа, которая потребовала полного переписывания кода и, тем не менее, была завершена за 5 недель. Таким же образом можно поработать и над кодом, принадлежащим противникам GPL 3». &lt;br /&gt;
&lt;br /&gt;
=== Переход ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''«Добровольные разработчики не хотят быть бесплатными сотрудниками некой проприетарной компании»''&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;'''Брюс Пиренс'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Никто до конца не уверен, какие программы будут переходить на GPL 3, а какие нет. Похоже, проекты FSF, такие как GCC и Bash, перейдут на GPL 3 вскоре после выхода ее окончательной версии, в то же время другие проекты еще нужно убеждать это сделать [во время подготовки русскоязычной версии этой статьи стало известно, что Samba 3.2 и выше будет распространяться по GPL 3, – прим. ред.]. Если Пиренс и другие правы в том, что код можно переработать, то руководителей проектов можно было бы склонить к этому решению. Им действительно нравится GPL 3, и они хотят выпускать ПО под этой лицензией. Даже Эрик Рэймонд [Eric Raymond], решительный противник GPL вообще, считает, что лучше предотвратить раскол GPL 2/3. «Думаю, что у GPL 3 есть возможность быть более подготовленной, чем GPL 2, – говорит он. – Если мы собираемся использовать copyleft [по определению FSF, «основной метод, позволяющий сделать программы или другие работы свободными», см. www.gnu.org/copyleft, – прим. ред.], механизм этого процесса должен быть продуман как можно лучше, а сообщество – быть максимально сплоченным» Разработчик Liferea Ларс Линднер сказал мне: «Для совершенно новых проектов я бы использовал GPL 3». Похожий ответ я получил от Доминика Маззони [Dominic Mazzoni] из команды разработчиков Audacity: «Мы не собираемся изменять лицензию Audacity, потому что не запрашивали у разработчиков передачу авторских прав. Вряд ли мы сможем связаться со всеми, и даже если сможем, я уверен, что один-два будут против использования GPL 3... А вообще я думаю, что GPL 3 будет успешной, ее могут принять от половины до двух третей всех проектов, лицензированных сейчас по GPL 2.» &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Итак, треть проектов продолжит использовать GPL 2 либо потому, что они не могут сменить лицензию на GPL 3, либо из-за несогласия с какой-то ее частью. Например, Джеймс Боттомли говорит: «Условия антитивоизации с философской точки зрения противоречат моему взгляду на открытое ПО». Другие же проекты хотят посмотреть, на что будет похожа финальная версия лицензии. Марк Хинкл [Mark Hinkle], вице-президент по развитию бизнеса и связям с сообществом в компании Zenoss, создателе очень популярного инструмента управления Zenoss Core, говорит: «Мы пристально следим за тем, когда выйдет финальная версия GPL 3... Однако, как участники сообщества, мы стремимся максимально дополнять другие проекты, которые мы поддерживаем и используем, а также принимать решения, оптимальные для наших клиентов».&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок= |&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;GPL – это лицензия-вирус? Ричард Столлмэн так не считает: «Программа не может подхватить GPL, просто находясь на одном компьютере с другой программой, которая использует GPL, – говорит он. – GPL действует лишь когда вы используете защищенный этой лицензией код как часть большой объединенной программы. Вместо того, чтобы называть GPL «вирусом», нужно называть ее «похожей на мухоловку» (spiderplant- like)». [мухоловка – хищное насекомоядное растение, прим.ред.]|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Это означает, что Zenoss Core может просто продолжить использовать GPL 2, если не будет убедительных причин менять версию. И это очень грустно, потому что показателем успеха GPL 3 будет число проектов, которые перейдут на нее – не из желания поддержать, а по практическим соображениям. Главное различие между GPL 3 и GPL 2 в том, что шансы первой на успех тем больше, чем больше людей ее выбирают.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Я считаю, это самый сильный довод в пользу широкого распространения GPL 3. Если никто за пределами FSF не будет использовать GPL 3, тогда ее пункты о патентах будут бесполезными, ее положения против DMCA будут проигнорированы и ничего не изменится. Чем больше людей внесут свой вклад в проекты, лицензированные по GPL 3, тем больше программ будут защищены новыми пунктами о патентах и тем безопаснее мы сможем себя чувствовать. Да, переход на эту лицензию сложно осуществить, но взамен этой работы мы получим гарантированную свободу ПО на годы вперед – GPL 2 могла только обещать эту свободу при некоторых условиях. За это несомненно стоит бороться! ''LXF''&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0</id>
		<title>LXF95:Что за штука</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0"/>
				<updated>2008-03-22T23:52:43Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''''Пол Хадсон''' проливает свет на новое зелье от Sun, соперника интерактивных web-приложений Flash, Ajax и Silverlight...''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''В позапрошлом номере на этих страницах был D. Месяц назад – E. Думаете, мне охота слушать о языках программирования три месяца подряд? Я уж лучше пойду…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Нет, нет – погодите! Не захлопывайте страницу! &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Что?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Никакого программирования.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Ладно, у вас пять минут для того, чтобы заинтересовать меня. Время пошло.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Хорошо: JavaFX – новая крутая платформа от Sun для создания полноценных Интернет-приложений, конкурент Ajax. Это, кстати, та самая приправа, которой Google Mail обязан интеллектом. Ajax базируется на JavaScript, и это порождает целый спектр проблем совместимости с браузерами. Например, Google Docs прекрасно обрабатываются Firefox, но отказываются работать на Safari. Если вы пользователь Opera, то, как я слышал, OpenOffice.org хорош для редактирования документов. Но даже на Firefox Ajax не станет работать ни минуты, пока вы в оффлайне. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Значит JavaFX призван заменить Ajax?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Я ещё не закончил. На ряду с Ajax для строительства привелекательных web-приложений всё шире применяется технология Flash от Adobe, но, хотя он и работает оффлайн, Flash Player – все-таки не открытое ПО. Возникают проблемы, если у вас неподдерживаемое оборудование, или вам некогда ждать, пока Adobe наконец выпустит новую версию для Linux. И, конечно, если вы идейный противник проприетарного ПО, Flash тоже не для вас. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Подождите – так JavaFX заменит и Ajax, и Flash? Как бы не откусить больше, чем можешь прожевать…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Вот тут в дело вступает часть ‘Java’ от ‘JavaFX’: тут все основано на Java-платформе, то есть вся функциональность уже готова – Sun лишь надстраивает немного сверху. Например, есть Java 2D – библиотека, задуманная для высокоскоростной отрисовки графики, и она превосходна для создания блестящих графических интерфейсов. JavaFX располагает также всеми сетевыми и XML-библиотеками, необходимыми для отправки и получения данных по проводам, а также их кэширования оффлайн. Фактически, онлайн-приложения работают и в оффлайн-режиме.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Значит, экономится трафик?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
Ну, объем передаваемого кода прежний, а браузер кэширует столько JavaScript, сколько можно, так что особой экономии ждать не приходится. Но JavaFX имеет определенные преимущества в вопросах безопасности, так как весь код исполняется внутри сверхбезопасной «песочницы» Java. Даже если у самого браузера проблемы с безопасностью, Java сохранит данные в неприкосновенности.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Значит, JavaFX работает оффлайн, поддерживается многими браузерами, да еще и безопаснее. Мне начинает нравиться.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Я ж говорил, это здорово! На самом деле, предлагается много больше. Помните старый слоган Java: «Написано однажды, работает везде»?&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Мне помнится, было немного иначе: «Написано однажды, ломается везде».'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Не спорю, раньше так и было. Но ведь Java с тех пор здорово усовершенствована, а это значит, что JavaFX будет работать на любом Java-совместимом устройстве. Да-да, и на вашем мобильном телефоне тоже. JavaScript очень медленно обрабатывается, потому и Google Doc на мобильных устройствах с их слабыми процессорами идут со скрипом, да и то если у браузера есть все необходимые средства для обработки JavaScript!&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Но ведь и Java не из скороходов…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Напротив – язык Java для телефонов и других мобильных устройств существенно оптимизирован с целью извлечь максимум возможного из весьма ограниченных ресурсов. На телефонах не только слабые процессоры, но и весьма ограниченные объемы оперативной памяти, поэтому оптимизация Java пришлась как нельзя кстати – не нужны никакие хаки и прочая заумь, с помощью которых Ajax-приложения пытаются заставить работать на настольных ПК: все-таки Java – хорошо изученная платформа. Слой JavaFX просто ставится поверх виртуальной Java-машины (как на настольном ПК, так и на мобильнике), а это означает, что любой компьютер, инсталлировавший тонкий слой JavaFX, способен пользоваться подлинно кроссплатформенными JavaFX-приложениями.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''А не выйдет ли так, что использование Java затруднит изучение JavaFX рядовыми программистами?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Это вполне могло случиться, если бы Sun одновременно не представила JavaFX Script.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Это что-то вроде JavaScript?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Не забывайте о том, что JavaScript – всего лишь претендент на трон Java. JavaScript не имеет ничего общего с Java, он даже изобретен не в Sun! JavaFX Script – который, будучи ядром JavaFX, вполне может называться просто «JavaFX» – тоже совершенно не похож на Java. JavaFX Script предназначен для упрощенного создания пользовательских интерфейсов с Java-библиотеками Swing, но он обладает полным доступом к основным библиотекам Java, если в том возникает потребность. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Мне смутно вспоминается что-то из прошлых лет. Grove? Groove?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Верно. Вы вспомнили Groovy, мы об этом писали в [[LXF67]]. Конечно, между Groovy и JavaFX есть определенное сходство, но JavaFX предназначен для создания web-приложений, и инструментарий у него соответствующий. Groovy был более общим, то есть недостающую функциональность нужно было достраивать самому. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Понимаю, как это нудно. Как же Sun умудрилась так быстро все обстряпать?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
На самом деле проект разрабатывался довольно долго, под условным названием F3 (Form Follows Function). Недавно Microsoft представила нечто очень похожее на JavaFX, под названием Silverlight. В Microsoft-варианте в web-браузер встраивается .NET вместе с графическим холстом, поэтому можно писать код на C# или JavaScript и получать примерно те же вещи, что с JavaFX. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Подождите, зачем тогда JavaFX?''' &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Видите ли, несмотря на все наши надежды, Microsoft не сделала ощутимого поворота в своей политике по открытому ПО, а Sun уже открыла общедоступный сайт, на котором выложила GPL-лицензированный код JavaFX. Разработчики Mono тоже ухватились за идею Silverlight и начали работу над свободным клоном на основе Mono и Cairo. Но все это – дело будущего, а JavaFX есть уже здесь и сейчас, хотя и в альфа-версии, и образцы его кода уже можно «потрогать руками».&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''То есть, JavaFX можно попробовать прямо сейчас?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Конечно! Sun выпустила даже JavaFX Mobile, встраиваемый в мобильные операционные платформы на основе Linux. На выходе и другие продукты семейства JavaFX, но в наличии пока только JavaFX Mobile и JavaFX Script. В настоящее время код довольно сырой, поэтому не ждите от него чудес – но с помощью JavaFX уже можно строить и связывать между собой интерфейсы Swing. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Советуете немного подождать?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Наоборот, я рекомендовал бы включиться прямо сейчас, ведь первозданное состояние JavaFX позволяет вылепить из него все, что угодно, и на этой стадии ваши подсказки и пожелания очень бы пригодились.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Вы убедили меня как минимум загрузить и попробовать JavaFX. Назовите, пожалуйста, несколько URL, пока я в теме…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Вот они: домашняя страница JavaFX [http://www.sun.com/software/javafx], там вы найдёте ссылки на информацию, пресс-релизы и прочие маркетинговые детали. Если вы действительно решили ознакомиться с образцами кода, демо и руководствами, то вам сюда: [http://www.openjfx.dev.java.net], это домашняя страница кода. Полезно посетить и такую страничку: [http://www.blogs.sun.com/chrisoliver] – блог того парня, который создал F3 и довел его до JavaFX. Там находится немало примеров кода, готовых к работе. Удачи вам! ''LXF''&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0</id>
		<title>LXF95:Что за штука</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0"/>
				<updated>2008-03-22T23:48:38Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''''Пол Хадсон''' проливает свет на новое зелье от Sun, соперника интерактивных web-приложений Flash, Ajax и Silverlight...''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''В позапрошлом номере на этих страницах был D. Месяц назад – E. Думаете, мне охота слушать о языках программирования три месяца подряд? Я уж лучше пойду…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Нет, нет – погодите! Не захлопывайте страницу! &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Что?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Никакого программирования.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Ладно, у вас пять минут для того, чтобы заинтересовать меня. Время пошло.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Хорошо: JavaFX – новая крутая платформа от Sun для создания полноценных Интернет-приложений, конкурент Ajax. Это, кстати, та самая приправа, которой Google Mail обязан интеллектом. Ajax базируется на JavaScript, и это порождает целый спектр проблем совместимости с браузерами. Например, Google Docs прекрасно обрабатываются Firefox, но отказываются работать на Safari. Если вы пользователь Opera, то, как я слышал, OpenOffice.org хорош для редактирования документов. Но даже на Firefox Ajax не станет работать ни минуты, пока вы в оффлайне. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Значит JavaFX призван заменить Ajax?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Я ещё не закончил. На ряду с Ajax для строительства привелекательных web-приложений всё шире применяется технология Flash от Adobe, но, хотя он и работает оффлайн, Flash Player – все-таки не открытое ПО. Возникают проблемы, если у вас неподдерживаемое оборудование, или вам некогда ждать, пока Adobe наконец выпустит новую версию для Linux. И, конечно, если вы идейный противник проприетарного ПО, Flash тоже не для вас. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Подождите – так JavaFX заменит и Ajax, и Flash? Как бы не откусить больше, чем можешь прожевать…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Вот тут в дело вступает часть ‘Java’ от ‘JavaFX’: тут все основано на Java-платформе, то есть вся функциональность уже готова – Sun лишь надстраивает немного сверху. Например, есть Java 2D – библиотека, задуманная для высокоскоростной отрисовки графики, и она превосходна для создания блестящих графических интерфейсов. JavaFX располагает также всеми сетевыми и XML-библиотеками, необходимыми для отправки и получения данных по проводам, а также их кэширования оффлайн. Фактически, онлайн-приложения работают и в оффлайн-режиме.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Значит, экономится трафик?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
Ну, объем передаваемого кода прежний, а браузер кэширует столько JavaScript, сколько можно, так что особой экономии ждать не приходится. Но JavaFX имеет определенные преимущества в вопросах безопасности, так как весь код исполняется внутри сверхбезопасной «песочницы» Java. Даже если у самого браузера проблемы с безопасностью, Java сохранит данные в неприкосновенности.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Значит, JavaFX работает оффлайн, поддерживается многими браузерами, да еще и безопаснее. Мне начинает нравиться.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Я ж говорил, это здорово! На самом деле, предлагается много больше. Помните старый слоган Java: «Написано однажды, работает везде»?&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Мне помнится, было немного иначе: «Написано однажды, ломается везде».'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Не спорю, раньше так и было. Но ведь Java с тех пор здорово усовершенствована, а это значит, что JavaFX будет работать на любом Java-совместимом устройстве. Да-да, и на вашем мобильном телефоне тоже. JavaScript очень медленно обрабатывается, потому и Google Doc на мобильных устройствах с их слабыми процессорами идут со скрипом, да и то если у браузера есть все необходимые средства для обработки JavaScript!&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Но ведь и Java не из скороходов…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Напротив – язык Java для телефонов и других мобильных устройств существенно оптимизирован с целью извлечь максимум возможного из весьма ограниченных ресурсов. На телефонах не только слабые процессоры, но и весьма ограниченные объемы оперативной памяти, поэтому оптимизация Java пришлась как нельзя кстати – не нужны никакие хаки и прочая заумь, с помощью которых Ajax-приложения пытаются заставить работать на настольных ПК: все-таки Java – хорошо изученная платформа. Слой JavaFX просто ставится поверх виртуальной Java-машины (как на настольном ПК, так и на мобильнике), а это означает, что любой компьютер, инсталлировавший тонкий слой JavaFX, способен пользоваться подлинно кроссплатформенными JavaFX-приложениями.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''А не выйдет ли так, что использование Java затруднит изучение JavaFX рядовыми программистами?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Это вполне могло случиться, если бы Sun одновременно не представила JavaFX Script.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Это что-то вроде JavaScript?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Не забывайте о том, что JavaScript – всего лишь претендент на трон Java. JavaScript не имеет ничего общего с Java, он даже изобретен не в Sun! JavaFX Script – который, будучи ядром JavaFX, вполне может называться просто «JavaFX» – тоже совершенно не похож на Java. JavaFX Script предназначен для упрощенного создания пользовательских интерфейсов с Java-библиотеками Swing, но он обладает полным доступом к основным библиотекам Java, если в том возникает потребность. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Мне смутно вспоминается что-то из прошлых лет. Grove? Groove?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Верно. Вы вспомнили Groovy, мы об этом писали в [[LXF67]]. Конечно, между Groovy и JavaFX есть определенное сходство, но JavaFX предназначен для создания web-приложений, и инструментарий у него соответствующий. Groovy был более общим, то есть недостающую функциональность нужно было достраивать самому. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Понимаю, как это нудно. Как же Sun умудрилась так быстро все обстряпать?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
На самом деле проект разрабатывался довольно долго, под условным названием F3 (Form Follows Function). Недавно Microsoft представила нечто очень похожее на JavaFX, под названием Silverlight. В Microsoft-варианте в web-браузер встраивается .NET вместе с графическим холстом, поэтому можно писать код на C# или JavaScript и получать примерно те же вещи, что с JavaFX. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Подождите, зачем тогда JavaFX?''' &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Видите ли, несмотря на все наши надежды, Microsoft не сделала ощутимого поворота в своей политике по открытому ПО, а Sun уже открыла общедоступный сайт, на котором выложила GPL-лицензированный код JavaFX. Разработчики Mono тоже ухватились за идею Silverlight и начали работу над свободным клоном на основе Mono и Cairo. Но все это – дело будущего, а JavaFX есть уже здесь и сейчас, хотя и в альфа-версии, и образцы его кода уже можно «потрогать руками».&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''То есть, JavaFX можно попробовать прямо сейчас?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Конечно! Sun выпустила даже JavaFX Mobile, встраиваемый в мобильные операционные платформы на основе Linux. На выходе и другие продукты семейства JavaFX, но в наличии пока только JavaFX Mobile и JavaFX Script. В настоящее время код довольно сырой, поэтому не ждите от него чудес – но с помощью JavaFX уже можно строить и связывать между собой интерфейсы Swing. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Советуете немного подождать?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Наоборот, я рекомендовал бы включиться прямо сейчас, ведь первозданное состояние JavaFX позволяет вылепить из него все, что угодно, и на этой стадии ваши подсказки и пожелания очень бы пригодились.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Вы убедили меня как минимум загрузить и попробовать JavaFX. Назовите, пожалуйста, несколько URL, пока я в теме…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Вот они: домашняя страница JavaFX www.sun.com/ software/javafx, там вы найдете ссылки на информацию, пресс-релизы и прочие маркетинговые детали. Если вы действительно решили ознакомиться с образцами кода, демо и руководствами, то вам сюда: http://openjfx.dev.java.net, это домашняя страница кода. Полезно посетить и такую страничку: http://blogs.sun. com/chrisoliver – блог того парня, который создал F3 и довел его до JavaFX. Там находится немало примеров кода, готовых к работе. Удачи вам! ''LXF''&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0</id>
		<title>LXF95:Что за штука</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0"/>
				<updated>2008-03-22T23:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''''Пол Хадсон''' проливает свет на новое зелье от Sun, соперника интеракт...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''''Пол Хадсон''' проливает свет на новое зелье от Sun, соперника интерактивных web-приложений Flash, Ajax и Silverlight...''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''В позапрошлом номере на этих страницах был D. Месяц назад – E. Думаете, мне охота слушать о языках программирования три месяца подряд? Я уж лучше пойду…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Нет, нет – погодите! Не захлопывайте страницу! &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Что?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Никакого программирования.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Ладно, у вас пять минут для того, чтобы заинтересовать меня. Время пошло.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Хорошо: JavaFX – новая крутая платформа от Sun для создания полноценных Интернет-приложений, конкурент Ajax. Это, кстати, та самая приправа, которой Google Mail обязан интеллектом. Ajax базируется на JavaScript, и это порождает целый спектр проблем совместимости с браузерами. Например, Google Docs прекрасно обрабатываются Firefox, но отказываются работать на Safari. Если вы пользователь Opera, то, как я слышал, OpenOffice.org хорош для редактирования документов. Но даже на Firefox Ajax не станет работать ни минуты, пока вы в оффлайне. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Значит JavaFX призван заменить Ajax?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Я ещё не закончил. На ряду с Ajax для строительства привелекательных web-приложений всё шире применяется технология Flash от Adobe, но, хотя он и работает оффлайн, Flash Player – все-таки не открытое ПО. Возникают проблемы, если у вас неподдерживаемое оборудование, или вам некогда ждать, пока Adobe наконец выпустит новую версию для Linux. И, конечно, если вы идейный противник проприетарного ПО, Flash тоже не для вас. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Подождите – так JavaFX заменит и Ajax, и Flash? Как бы не откусить больше, чем можешь прожевать…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Вот тут в дело вступает часть ‘Java’ от ‘JavaFX’: тут все основано на Java-платформе, то есть вся функциональность уже готова – Sun лишь надстраивает немного сверху. Например, есть Java 2D – библиотека, задуманная для высокоскоростной отрисовки графики, и она превосходна для создания блестящих графических интерфейсов. JavaFX располагает также всеми сетевыми и XML-библиотеками, необходимыми для отправки и получения данных по проводам, а также их кэширования оффлайн. Фактически, онлайн-приложения работают и в оффлайн-режиме.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Значит, экономится трафик?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
Ну, объем передаваемого кода прежний, а браузер кэширует столько JavaScript, сколько можно, так что особой экономии ждать не приходится. Но JavaFX имеет определенные преимущества в вопросах безопасности, так как весь код исполняется внутри сверхбезопасной «песочницы» Java. Даже если у самого браузера проблемы с безопасностью, Java сохранит данные в неприкосновенности.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Значит, JavaFX работает оффлайн, поддерживается многими браузерами, да еще и безопаснее. Мне начинает нравиться.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Я ж говорил, это здорово! На самом деле, предлагается много больше. Помните старый слоган Java: «Написано однажды, работает везде»?&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Мне помнится, было немного иначе: «Написано однажды, ломается везде».'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Не спорю, раньше так и было. Но ведь Java с тех пор здорово усовершенствована, а это значит, что JavaFX будет работать на любом Java-совместимом устройстве. Да-да, и на вашем мобильном телефоне тоже. JavaScript очень медленно обрабатывается, потому и Google Doc на мобильных устройствах с их слабыми процессорами идут со скрипом, да и то если у браузера есть все необходимые средства для обработки JavaScript!&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Но ведь и Java не из скороходов…'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Напротив – язык Java для телефонов и других мобильных устройств существенно оптимизирован с целью извлечь максимум возможного из весьма ограниченных ресурсов. На телефонах не только слабые процессоры, но и весьма ограниченные объемы оперативной памяти, поэтому оптимизация Java пришлась как нельзя кстати – не нужны никакие хаки и прочая заумь, с помощью которых Ajax-приложения пытаются заставить работать на настольных ПК: все-таки Java – хорошо изученная платформа. Слой JavaFX просто ставится поверх виртуальной Java-машины (как на настольном ПК, так и на мобильнике), а это означает, что любой компьютер, инсталлировавший тонкий слой JavaFX, способен пользоваться подлинно кроссплатформенными JavaFX-приложениями.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''А не выйдет ли так, что использование Java затруднит изучение JavaFX рядовыми программистами?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Это вполне могло случиться, если бы Sun одновременно не представила JavaFX Script.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Это что-то вроде JavaScript?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Не забывайте о том, что JavaScript – всего лишь претендент на трон Java. JavaScript не имеет ничего общего с Java, он даже изобретен не в Sun! JavaFX Script – который, будучи ядром JavaFX, вполне может называться просто «JavaFX» – тоже совершенно не похож на Java. JavaFX Script предназначен для упрощенного создания пользовательских интерфейсов с Java-библиотеками Swing, но он обладает полным доступом к основным библиотекам Java, если в том возникает потребность. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Мне смутно вспоминается что-то из прошлых лет. Grove? Groove?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Верно. Вы вспомнили Groovy, мы об этом писали в [[LXF67]]. Конечно, между Groovy и JavaFX есть определенное сходство, но JavaFX предназначен для создания web-приложений, и инструментарий у него соответствующий. Groovy был более общим, то есть недостающую функциональность нужно было достраивать самому. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Понимаю, как это нудно. Как же Sun умудрилась так быстро все обстряпать?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
На самом деле проект разрабатывался довольно долго, под условным названием F3 (Form Follows Function). Недавно Microsoft представила нечто очень похожее на JavaFX, под названием Silverlight. В Microsoft-варианте в web-браузер встраивается .NET вместе с графическим холстом, поэтому можно писать код на C# или JavaScript и получать примерно те же вещи, что с JavaFX. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Подождите, зачем тогда JavaFX?''' &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Видите ли, несмотря на все наши надежды, Microsoft не сделала ощутимого поворота в своей политике по открытому ПО, а Sun уже открыла общедоступный сайт, на котором выложила GPL-лицензированный код JavaFX. Разработчики Mono тоже ухватились за идею Silverlight и начали работу над свободным клоном на основе Mono и Cairo. Но все это – дело будущего, а JavaFX есть уже здесь и сейчас, хотя и в альфа-версии, и образцы его кода уже можно «потрогать руками».&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''То есть, JavaFX можно попробовать прямо сейчас?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Конечно! Sun выпустила даже JavaFX Mobile, встраиваемый в мобильные операционные платформы на основе Linux. На выходе и другие продукты семейства JavaFX, но в наличии пока только JavaFX Mobile и JavaFX Script. В настоящее время код довольно сырой, поэтому не ждите от него чудес – но с помощью JavaFX уже можно строить и связывать между собой интерфейсы Swing. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Советуете немного подождать?'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Наоборот, я рекомендовал бы включиться прямо сейчас, ведь первозданное состояние JavaFX позволяет вылепить из него все, что угодно, и на этой стадии ваши подсказки и пожелания очень бы пригодились.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Вы убедили меня как минимум загрузить и попробовать JavaFX. Назовите, пожалуйста, несколько URL, пока я в теме… Вот они: домашняя страница JavaFX www.sun.com/ software/javafx, там вы найдете ссылки на информацию, пресс-релизы и прочие маркетинговые детали. Если вы действительно решили ознакомиться с образцами кода, демо и руководствами, то вам сюда: http://openjfx.dev.java.net, это домашняя страница кода. Полезно посетить и такую страничку: http://blogs.sun. com/chrisoliver – блог того парня, который создал F3 и довел его до JavaFX. Там находится немало примеров кода, готовых к работе. Удачи вам!''' ''LXF''&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D1%8C%D1%8E_LXF</id>
		<title>LXF95:Интервью LXF</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D1%8C%D1%8E_LXF"/>
				<updated>2008-03-15T23:16:31Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'' '''Джим МакКиллан''' и '''Рон Колсернян''' основали проект Linux Terminal Server Proj...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'' '''Джим МакКиллан''' и '''Рон Колсернян''' основали проект Linux Terminal Server Project (LTSP) восемь лет назад, и с тех пор он стал трамплином для всех желающих дешево внедрить у себя терминальные технологии. Linux Format встретился с ними.''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;На заре распространения компьютеров всем правил центральный сервер, а пользователи получали доступ через «безголовый» терминал, просто передававший данные ASCII с клавиатуры на сервер и обратно для их отображения в виде зеленого текста на черном экране. Появление настольных ПК в корне изменило этот подход. Но в последнее время новая технология терминалов возродила интерес к концепции центрального сервера и к преимуществам, которые он предлагает в области снижения затрат и управляемости. Поэтому новое значение приобрел проект Linux Terminal Server Project (LTSP), созданный Джимом МакКилланом [Jim McQuillan] и Роном Колсерняном [Ron Colcernian] в 1999 г., чтобы помочь людям использовать Linux и дешевое оборудование для реализации данной модели сетевого взаимодействия. Ник Вейч помчался к ним в Штаты, чтобы узнать, чего добился проект почти за десять лет своего существования.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Linux Format'': По-моему, мы познакомились с вами в 2001 году на выставке LinuxWorld в Нью-Йорке, как раз когда начинался LTSP.'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Ну, начали-то мы летом 1999, представив проект общественности. В 2000 году на LinuxWorld у нас был стенд пополам с Etherboot, а в 2001 мы, наверное, впервые обзавелись собственным стендом. Так что мы тогда и вправду еще находились в младенчестве.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Полагаю, за прошедшие годы многое изменилось?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Технология претерпела некое развитие, а вот основные идеи не особенно изменились. Я думаю, наш продукт стал лучше, потому что он повзрослел. Мы добавили такие функции, как поддержка локальных устройств – вы подключаете USB-брелок, и на рабочем столе появляется иконка. Вы скажете – это не бог весть что, все так делают, но не забудьте, что в нашем случае сессия запущена на сервере, а пользователь сидит за тонким клиентом. Если вы подключаете к клиенту устройство USB, сессия на сервере должна знать об этом. Мы все сделали, как надо, чтобы все хорошо работало; это очень элегантное, прочное решение, без всяких хакерских штучек, которыми мы увлекались раньше. Оно действительно отлично сделано.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Еще нам помогало то, что приложения под Linux становились очень хорошими. Когда мы только начинали, не было текстовых редакторов, web-браузером был Netscape 4.х, вполне приличный, а клиента электронной почты и всего прочего просто не существовало. А теперь у нас есть офисный пакет OpenOffice.org, у нас есть Firefox и Thunderbird, Evolution и всяческие прекрасные, богатые функциями приложения. Все они росли вместе с нами, облегчая нашу работу. Пустившись устанавливать LTSP в 2001 году, когда мы познакомились, вы изрядно попотели бы. Надо было выполнить множество шагов по инструкции. Но LTSP сильно вырос. Сейчас его установка очень проста. Вы скачиваете небольшой пакет LTSP_utils, содержащий инсталлятор, запускаете его, и он устанавливает и настраивает систему для вас – это очень легко проделать. До настоящего момента LTSP занимался именно этим.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Года полтора назад мы связались с Ubuntu, и сейчас LTSP интегрирован в дистрибутив Ubuntu. А сейчас наша забота – собрать вместе всех основных игроков: мы добились того, что Red Hat, Debian, Ubuntu и некоторые другие сядут вместе и обсудят, как будет тонкий клиент работать в дистрибутивах Linux, чтобы все дистрибутивы смогли включить LTSP. Моя цель – встроить в дистрибутив функциональность тонкого клиента. Вы устанавливаете свой дистрибутив, активируете ее, подключаете тонкий клиент – и вперед. Никаких лишних движений типа посещения нашего сайта и скачивания кода. Он уже должен быть там: Apache и Samba уже есть – и LTSP тоже будет.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Полагаю, что на данный момент с одними дистрибутивами это делать легче, чем с другими?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Да, иногда из-за философии, иногда – по техническим причинам, но пока все, с кем я разговаривал по этому поводу, с большим воодушевлением принимали эту идею. Ubuntu работал над ней полтора года, и Ubuntu и Debian постоянно обмениваются друг с другом функциями, разрабатываемыми в Perl, чтобы включить LTSP. Разработчики Ubuntu и разработчики Debian очень тесно сотрудничают. Так что это практически одна и та же реализация. Fedora, естественно, будет основан на RPM, а не на пакетах Deb; SUSE будет основан на RPM, хотя определенно не на тех, которые использует Red Hat. Цель у нас следующая: когда мы закончим работу, LTSP будет установлен на нашем сервере, а тонкий клиент будет загружать в случае Ubuntu – части Ubuntu, в случае Fedora – части Fedora. На LTSP.org нашей главной работой будет обеспечить людей тем, что позволит тонкому клиенту работать как я вам описал. Несколько лет мы предоставляли библиотеки, и ядро, и все остальное, а с этим отлично справляются дистрибутивы, вот пусть они и делают свое дело, а мы выходим из этого бизнеса и будем обеспечивать людей тем, чем нам полагается их обеспечивать.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Я собирался спросить, что изменилось в проекте LTSP за время его существования благодаря развитию дистрибутивов.'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': По традиции, вплоть до настоящего момента, когда вы устанавливали LTSP, это был исключительно LTSP, и мы хотим покончить с этим. Я написал спецификацию по данному предмету; Марк Шаттлворт [Mark Shuttleworth] ее прочел, и на ней частично теперь базируется версия Ubuntu. В своей спецификации я писал:&amp;lt;br&amp;gt;&lt;br /&gt;
''«Взгляните: 95% того, что мы поставляем с LTSP, не имеет ничего общего с LTSP – просто оно должно быть, потому что LTSP получается вроде дистрибутива, который мы сажаем поверх основного дистрибутива. Так давайте мы переведем все это в основной дистрибутив и будем поставлять наши 5%. Лучше мы сконцентрируемся на таких важных вещах, как синхронизация с КПК, или прочная поддержка мультимедиа, или безопасность и тому подобное».''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Какие, по-вашему, ближайшие задачи встанут перед вами после интеграции с дистрибутивом?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Мне бы очень хотелось заняться следующей важной задачей – хорошей, солидной поддержкой мультимедиа; но сейчас мы не работаем над ней из-за всей этой возни с дистрибутивами. Надо, чтобы вы могли воспроизводить видео и аудио, и сигнал был бы должным образом синхронизирован, и чтобы при этом на сервере было 30 или 40 клиентов, воспроизводящих либо то же самое, либо что-то другое. Пусть люди делают все то же самое, что и в Linux, но уже как пользователи тонкого клиента – вот это и есть наша следующая задача.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Вас об этом просили, или это просто такая личная цель?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Да, об этом просят, и этого ждут. Раньше нам приходилось привлекать внимание, чтобы сказать: «Нам нужна помощь с аудио в KDE» или «Нам тут нужна помощь кое с чем в Gnome». И я всегда испытывал такое ощущение, что вот они – такие крупные, большие проекты, а мы – мелкота. А теперь мы сидим за одним столом с этими парнями. Мы садимся и разговариваем с человеком из Phonon – это звуковая подсистема в KDE. Мы разговариваем с разработчиками GStreamer, это используется в Gnome. Мы разговариваем с другими разработчиками Gnome о том, что нам нужно. И все реагируют примерно так: «Здорово, нам это нужно, давайте сделаем это». Люди понимают, что LTSP – ценная возможность установить их приложения на множестве настольных компьютеров. И меня это воодушевляет.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': А какова, по вашему мнению, причина возврата интереса к тонким клиентам?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Люди устали от того труда, который приходится вкладывать в поддержание инсталляций по типу Windows. В самом деле, на каждом столе стоит компьютер, в каждом хранится множество данных – весьма много приходится поддерживать. С точки зрения администратора, надо следить, чтобы очень много всего работало, все время.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''РК'': И вы многим рискуете, потому что работники неизбежно будут хранить электронные документы, за создание которых вы им заплатили – десять долларов, несколько тысяч долларов – на носителях без резервных копий. А в LTSP у вас по умолчанию создается централизованная резервная копия всего рабочего пространства пользователя, и сама структура программы снимает весь этот риск. Я не знаю, сколько раз приходится слышать, как кто-то говорит: «Мне придется заново делать эту таблицу». Как владельца бизнеса, это просто бесит.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Да, потерянное время и потерянные деньги.'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Люди начинают осознавать, что во многих случаях тонкий клиент – вещь весьма удобная. Он не идеально подходит к каждой ситуации: для редактирования видео или еще какой-то крупной задачи он, возможно, и не годится, но подумайте, скольким людям нужен просто текстовый редактор, или редактор электронных таблиц, web-браузер, клиент электронной почты, а больше и ничего. Ну, может, еще какое-нибудь унаследованное приложение для передачи данных в базу. Для таких задач тонкие клиенты подходят идеально.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Я полагаю, именно для офисного пользователя, как это называется в Novell, и был разработан SLED.'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': И тонкий клиент может стать отличным способом донести его до множества рабочих столов. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Как вы считаете, почему для настройки тонкого клиента выбирают именно Linux, а не что-либо другое?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': А не Windows? Многие просто уже устали от игры, которую навязывает Windows: постоянное обновление программ и оборудования. Рон намного лучше это объясняет, чем я! Это просто ад, через который они проходят. Хотите добавить что-нибудь, Рон?&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''РК'': Людей мотивирует то, что они устали от Windows. Я сегодня говорил с одним парнем. Он сказал: «Вот я пользуюсь Windows и отлично зарабатываю на этом». А я сказал: «Может, и так. Но давай поговорим об одном-единственном дне, который уходит на решение проблем Windows. Дне, который ты тратишь на загрузку и перезагрузку программ по восемь часов». И в конце этого дня ему платят, но, наверное, в отличие от вас, и от меня, и от Джима, он совершенно не обогатил свой мозг интеллектуально. Он не увеличил свою ценность для общества, он не увеличил свою самооценку. Я думаю, многие начинают над этим задумываться.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': По-вашему, большинство просто сразу перейдет с Windows на настольном ПК на Linux в тонком клиенте, или они предпочтут делать это постепенно?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Бывает по-разному, в зависимости от компании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''РК'': Я думаю, ответ лежит в количестве развертываемых рабочих мест. Вот сегодня приходил один человек, у него центр обработки звонков, по-моему, мест на 75. И он понятия не имел об LTSP. Он решил (причин он не указал) перейти с Windows на&lt;br /&gt;
Linux. И они установили толстые клиенты с полными дистрибутивами Linux на каждом столе. А если бы они имели возможность рассмотреть наш проект или познакомиться с ним, они бы сразу рванули на тонкие клиенты, потому что это намного эффективнее. Возможно, смысл в том, чтобы чаще выдавать информацию на сторону: если сделаешь это больше, скажем, четырех, пяти разкакого-то магического числа – то технологию уже начинают замечать.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Вас никогда не огорчало, что очень многие воспользовались бы таким решением, как ваше, если бы они знали о нем''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Мне всегда хотелось, чтобы у нас лучше получалось рассказывать о себе; больше людей могли бы о нас узнать, потому что, по-моему, чем больше людей этим пользуются, тем лучше. У меня есть несколько историй успеха, о которых я думаю с гордостью. Пусть не все об этом знают: это неважно. Я не лишусь из-за этого сна. Те, кто пользуется LTSP, довольны им.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Вас никогда не огорчало, что очень многие воспользовались бы таким решением, как ваше, если бы они знали о нем?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Мне всегда хотелось, чтобы у нас лучше получалось рассказывать о себе; больше людей могли бы о нас узнать, потому что, по-моему, чем больше людей этим пользуются, тем лучше. У меня есть несколько историй успеха, о которых я думаю с гордостью. Пусть не все об этом знают: это неважно. Я не лишусь из-за этого сна. Те, кто пользуется LTSP, довольны им.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': И какая же у вас любимая история успеха?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': От которой мурашки по коже?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Их несколько. У нас огромная работа в Сан-Паулу, в Бразилии. Шесть тысяч телеком муникационных центров – это такие киберкафе, спонсируемые правительством – 6 000 киберкафе, 20 рабочих станций и сервер в каждом. И рабочие станции работают на LTSP. Это 120 000 терминалов по всему городу, а Сан-Паулу – огромный город, третий по величине в мире. Там есть люди, у которых есть адрес электронной почты, а настоящего адреса нет – они бездомные. Но они все-таки могут общаться со своими семьями, друзьями, с кем угодно. Они могут бродить по сети, находить контакт с правительством: подавать заявления на получение социальной помощи, и все такое. Этот пример действительно меня воодушевляет.&amp;lt;br&amp;gt;&lt;br /&gt;
А вот что сделал Фонд Шаттлворта [Shuttleworth Foundation] в Южной Африке: они предоставили 240 000 компьютеров для школьников. Это не 240 000 рабочих станций, но они обслуживают множество рабочих станций в каждой школе, для 240 000 ребят, которые иначе никогда не получили бы доступа к компьютерам. И это очень важно: эти дети выйдут из школы с такими же навыками – а часто и с лучшими – чем такие же дети из Америки. Вот от таких примеров у меня мурашки по коже, они вдохновляют меня на движение вперед.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Если заглянуть в будущее, что бы вы хотели, чтобы произошло через десять лет?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Через десять лет? Это долго. Проекту только семь лет. Давайте немного сократим срок: через три года я хочу видеть LTSP во всех дистрибутивах. Потом, я хочу сфокусироваться на трудных частях – на развлечениях. Чтобы люди просто… ну, этак естественно устанавливали Linux, подключали к нему несколько терминалов, и все готово. Вот чего я хочу, а через десять лет – это трудно себе представить.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Помимо потокового мультимедиа, о котором мы говорили раньше, какие еще технические проблемы, по-вашему, требуют решения?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Большая проблема – это безопасность. Мы используем NFS, мы используем X, мы используем DHCP и TFTP, чтобы загрузить эти клиенты. И там большие проблемы с безопасностью. Это не проблема для школ или малых офисов, где всего штук 15 терминалов и нет посторонних глаз, но в финансовых учреждениях мы работать не можем, из-за используемых у нас протоколов. Так что мы рассматриваем такие вещи, как работа IPSec между терминалом и сервером, или можно ли запустить Х через SSH для шифрования Х-трафика. Это здорово обременяет сервер, но сервера в наши дни стали довольно крупными.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Именно в этой области мы и должны работать, как только разберемся с мультимедиа. По мере вовлечения все большего числа людей и дистрибутивов, увеличивается и оказываемая нам помощь в решении всех этих проблем.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Я как раз хотел спросить о этом: некоторые проекты так и не вырастают за пределы основной команды разработчиков, начавших проект; а вам многие присылают код?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Я получаю множество заплаток,множество всего. У нас есть wiki, чтобы люди могли выкладывать туда то, что у них есть, у нас есть канал IRC для всех, кто захочет общаться с нами – мы делаем все наши разработки через IRC.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Мы действительно работаем открыто – никаких частных разработок: все в IRC или в списке рассылки. Туда заходят люди, одни помогают нам недолго, кто-то остается на большой срок. Сейчас мы около полутора лет работаем с Ubuntu, и есть целая команда разработчиков, связанных с этим дистрибутивом, которым интересно то, что мы делаем. И команда Fedora вливается в процесс, делая то же самое… &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Я недавно разговаривал с парнями из Fedora, и они демонстрировали большое воодушевление...''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': На хакфесте LTSP в сентябре к нашей работе собирается присоединиться Уоррен Тогами [Warren Togami]. Он создал Fedora. Он начал проект; Red Hat пригласил его на работу в качестве разработчика. Он собирается работать с нами; он хочет, чтобы LTSP был интегрирован в Fedora. Для него это важно, а значит, это становится важным и для других людей. К нам присоединяются масштабные личности, и это превосходно.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''LXF'': Как вы думаете, чем лучше всего смогли бы вам помочь обычные пользователи?'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
''ДжМкК'': Есть много разных способов помочь нам. Они могут писать код, могут помогать нам в решении некоторых проблем, над которыми мы бьемся. Если они умеют писать документацию, пусть помогут нам в разработке документации… Определенно могут помочь в переводе. У нас есть команда переводчиков, которой пригодились бы люди. Если они хотят нести информацию в массы, это вообще отлично – в смысле, они могут помочь в популяризации. Если они захотят посидеть в канале IRC пару часов в день, отвечая на вопросы посетителей – и это будет огромная помощь. Или просматривать списки рассылки и периодически отвечать на присланные вопросы, тоже отличный способ помочь. 'LXF'&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%9F%D0%BE%D1%87%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%8B</id>
		<title>LXF95:Почтовые клиенты</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%9F%D0%BE%D1%87%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%8B"/>
				<updated>2008-03-15T22:46:47Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Что лучше: полный канцелярский набор Thunderbird, кожаная перочистка Opera или бумага с карандашом от Mutt? Путь к контактам выбирает '''Крис Хоуэллс'''.''&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Немногое произвело такую же революцию в области связи в XXI веке, как электронная почта. К сожалению, по мере того, как взрослела электронная почта, росло и умение любителей злоупотребить ею. Ненавистная Незатребованная Коммерческая Почта (Unsolicited Commercial Email, UCE), или спам, продолжает развиваться. По оценкам Messaging Anti-Abuse Working Group (Группа по борьбе со злоупотреблением почтой, www. maawg.org), в последнем квартале 2005 года 80–85% входящего почтового трафика составляла «непрошеная почта» – это где-то в районе 90 миллиардов писем в день! &lt;br /&gt;
Еще опаснее фишинг, технология втирания в доверие, направленная на вытягивание секретной информации у наивных жертв. Вирусы и трояны обычно не беспокоят пользователей Linux, поскольку число их невелико, однако вполне возможно употребить пользователя Linux как вектор атаки, направленный на Windows-машины, при беззаботной рассылке прикреплений.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Почтовые клиенты предусматривают защиту от этих угроз, однако ваш фактор выбора клиента обычно один: вызывает ли процесс работы с электронной почтой удовольствие или раздражение? Наше Сравнение попытается выявить лучшего.&amp;lt;br&amp;gt;&lt;br /&gt;
==== Как работают почтовые клиенты? ====&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Про наш тест...|&lt;br /&gt;
Содержание=Мы испытывали почтовые клиенты на Kubuntu 7.04 на ноутбуке Lenovo ThinkPad X60s, с 1,5 ГБ ОЗУ и 1,66-ГГц процессором Intel Core Duo, ограниченным одним ядром.&amp;lt;br&amp;gt;&lt;br /&gt;
*Безопасность и секретность Мы смотрели, имеет ли клиент поддержку шифрованных и подписанных почтовых сообщений, а также какую-нибудь помощь в распознава- нии фишинга. Мы также исследовали противоспамные средства.&amp;lt;br&amp;gt;&lt;br /&gt;
*Функциональные возможности Мы рассматривали протоколы, поддерживаемые каждым клиентом, и число доступных полезных свойств.&lt;br /&gt;
*Простота в использовании Можно ли давать такую программу неопытным пользователям, и надеяться, что ею будут пользоваться, прибегая к помощи лишь изредка.&amp;lt;br&amp;gt;&lt;br /&gt;
*Скорость и эффективность Мы измеряли время, требуемое для загрузки почтового ящика с 60 000 письмами, а также поиск строки “christmas” в теле и в теме письма, затем брали среднее этих трех величин. Также обращалось внимание на то, ухудша- ется ли время загрузки для больших почтовых ящиков.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как вы, наверное, знаете, в основном используются два способа сбора электронной почты. Это POP (Post Office Protocol) и IMAP (Internet Message Access Protocol). В протоколе POP текстовое содержимое и все прикрепления скачиваются с удаленного почтового сервера на локальный компьютер, затем немедленно удаляются на почтовом сервере [это не является требованием протокола, но так обычно и происходит, – прим.ред.]. С этого момента ответственность почтового сервера за электронную почту заканчивается.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;IMAP, напротив, хранит все сообщения на сервере, и требует постоянной связи по сети или через Интернет. Это может раздражать, если вы путешествуете и имеете ограниченный доступ к Интернету, хотя существует несколько почтовых клиентов, способных скачивать письма IMAP для офлайнового использования. Наши клиенты поддерживают оба метода. &lt;br /&gt;
Это были азы – теперь двинемся дальше!&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Opera Mail ===&lt;br /&gt;
&lt;br /&gt;
'''Уважаемый и многофункциональный проприетарный клиент.'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Начав просто как браузер, с годами Opera превратилась в обширный комплект программ, куда входит и почтовый клиент. Он поддерживает и POP3, и IMAP, и позволяет применять SSL-шифрование для улучшения безопасности этих протоколов. Также поддерживается SMTP-аутентификация, что позволяет вам подтверждать подлинность на удаленном почтовом сервере. Вызывает некоторое раздражение, что установленная по умолчанию подпись рекламирует продукцию Opera, но ее легко убрать.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Opera создает несколько виртуальных папок, основанных на содержимом вашей электронной почты. Внутри виртуальной папки Attachments (Вложения) вы найдете подкаталоги для документов, рисунков, музыки, видео и сжатых архивов (например, ZIP-файлов). Можно выбрать любой из этих подкаталогов, чтобы увидеть все письма, отвечающие данному признаку. &lt;br /&gt;
Имеется хорошая поддержка для почтовых списков рассылки, и Opera распознает электронную почту, которая распространяется утилитами рассылок, например, GNU Mailman.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Она организует эти письма в другие виртуальные папки: не имеет значения, в какой именно папке хранится письмо, можно отображать все письма из определенного списка. Для легкой категоризации, опять-таки путем виртуальных папок, письмам можно присвоить метки-теги.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Нам приглянулся вид функции Quick Reply (Быстрый ответ), появляющейся внизу каждого письма. Она позволяет отвечать на письма, не открывая отдельное окно для написания текста. К сожалению, на практике оказалось, что поддерживается только топ-постинг [т.е. текст ответа помещается над цитированием оригинального письма, – прим. ред.]. &lt;br /&gt;
В целом, производительность Opera выглядит неравномерной. Она была очень медленной при импортировании нашего тестового почтового ящика, потребляя большую долю времени CPU. Это может доставить неприятности, так как во время проверки почтового ящика, как правило, занимаются и другими делами. После этого производительность была потрясающей, загрузка ящика занимала лишь 0,5 секунды, а поиск в теме и содержимом письма был мгновенным.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''9,20'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.www.opera.com www.opera.com]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно, поддержка за дополнительную плату''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Рейтинг 7/10'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Большое число новых функций с продуманным оформлением превращают использование почтового клиента Opera в удовольствие..&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Mutt ===&lt;br /&gt;
&lt;br /&gt;
'''В отличие от Opera, минималистическое приложение.'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В нашем обзоре Mutt стоит особняком, поскольку это здесь единственное консольное приложение. Первоначально основанный на старом почтовом клиенте Elm, Mutt с тех пор стал довольно мощным приложением.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откровенно говоря, Mutt имеет довольно крутую «кривую обучения» по сравнению со многими другими программами, однако на wiki-страницах сайта громоздятся горы документации. Его текстовая природа даст много преимуществ по сравнению с графическими альтернативами, если вы ухватите ее суть. Например, вы легко сможете проверить вашу почту отовсюду, используя SSH для соединения с сервером, где установлен Mutt, а затем запустить программу, как если бы вы использовали ее локально.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mutt управляется исключительно клавиатурой. По умолчанию дается большое число горячих клавиш, а настроить можно еще больше. Также есть возможность использовать макросы, и они работают, выполняя последовательность нескольких функций вместе за один шаг.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы можете настроить клиента самостоятельно путем ручного редактирования файла .muttrc. Файлы .muttrc целиком доступны на сайте Mutt в качестве примеров, а в руководстве по Mutt можно найти фрагменты опций настройки, пригодные для вставки в файл конфигурации, чтобы настроить Mutt на ваш вкус.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Предусмотрен встроенный редактор для написания писем, однако если вы предпочитаете внешний текстовый редактор вроде Vi или Emacs, переключитесь на них – либо посредством изменения .muttrc, либо путем задания переменной среды $EDITOR. По умолчанию Mutt не может просматривать HTML или создавать HTML-письма. Желающим видеть HTML-письма придется настроить Mutt на использование внешнего HTML-просмотрщика/ браузера, например, Lynx.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производительность Mutt не была выдающейся. Загрузка тестового ящика заняла 10,3 секунды. Поиск по письмам прошел за 12,5 секунд, а вот по темам писем – за более приятные 0,8 секунды.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Пользовательский интерфейс Mutt – на базе Ncurses или S-Lang, и можно даже соорудить цветную консоль. Mutt Трудный для первого раза, но головокружительно гибко настраиваемый и мощный почтовый клиент.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''1.4.2.2'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.mutt.org www.mutt.org]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Рейтинг 7/10'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Трудный для первого раза, но головокружительно гибко настраиваемый и мощный почтовый клиент.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Evolution  ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Налицо все элементы персонального органайзера.'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Это флагманский проект Gnome – интегрированные почтовый клиент, адресная книга и календарь. При запуске Evolution начинает выполняться Setup Assistant, предназначенный для установки в программе первоначальных учетных записей. Evolution поддерживает широкий диапазон протоколов, включая MAP, POP, Hula и Novell Groupwise, а также несколько опций локальной доставки mbox/maildir. Собственно говоря, опциями мастер перегружен, и это озадачивает, поскольку широкому большинству пользователей они никогда не понадобятся. Было бы куда приятней иметь что-нибудь попроще.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Evolution имеет виртуальные папки, так что вы можете сохранять отдельные результаты поиска, которые затем будут представлены как виртуальная папка в списке.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы не сидеть постоянно в Интернете в режиме IMAP, вы можете пометить папку как читаемую оффлайн. Тогда все её содержимое, до последнего письма, будет скачиваться на локальный компьютер.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Evolution имеет встроенную поддержку отправки и получения зашифрованных писем с использованием открытого клиента PGP, GnuPG, и стандарта S/MIME, а также детектор спама. Он работает хорошо и точно выявляет нежелательные сообщения.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разработчики здорово упростили настройку Evolution с помощью функции под названием Eplugin, используемой для создания несложных модулей расширения – это изящный способ справиться с обычной проблемой необходимости марать руки исходным кодом на С. Система Eplugin намеренно разработана так, что вам хватит лишь минимального знания ядра приложения.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производительность была потрясающей, Evolution потребовалось лишь 1,0 секунды для загрузки тестового почтового ящика. Поиск был произведен почти так же быстро, за 1,5 секунды – как по письмам, так и то темам.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''2.10.1'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.gnome.org/projects/evolution www.gnome.org/projects/evolution]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Рейтинг 7/10'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Evolution Если вы ищете замену Microsoft Outlook – считайте, вы ее нашли.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Kontact (KMail) ===&lt;br /&gt;
&lt;br /&gt;
'''Почтовый клиент от сообщества KDE.'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Строго говоря, Kontact не есть почтовый клиент. Это обертка нескольких компонентов, включая календарь KOrganizer, адресную книгу KAddressBook и собственно почтовое приложение, KMail.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;KMail имеет огромное число возможностей, но кое в чем ему недостает лоска, присущего другим приложениям. Например, опции настройки не сгруппированы логически, и иногда программа чересчур гонится за настраиваемостью: иллюстрация проблемы – вкладка с описанием Settings That Don’t Fit Elsewhere (Настройки, которые никуда не подходят).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как антивирус, так и фильтрацию спама предлагается настраивать мастером. Система фильтрации поддерживает несколько движков выявления спама – вы даже можете сами выбрать движок. Антивирусная защита нас разочаровала: она извещала об ошибке, но давала мало содействия в разрешении проблемы.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Средства конфиденциальности предусматривают отключение отображения HTMLписем: вместо них показывается голый HTML. Есть возможность включить отображение HTML-писем для всей папки, но это придется делать папка за папкой. К сожалению, в KMail отсутствует поддержка антифишинга. Зато имеется отличная поддержка шифрования с использованием GnuPG и S/MIME.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Недавно добавленная функция для написания HTML-писем охватывает всего несколько базовых возможностей, таких как цвет и начертание шрифта и опции форматирования. Есть поддержка чтения IMAP-почты оффлайн, но она прилагается ко всей учетной записи IMAP. Жаль, что нет возможности выбрать конкретные папки для оффлайн-чтения: либо все, либо ничего.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;KMail’у потребовалось 12,6 секунды для загрузки тестового почтового ящика. Поиск по темам занял 12,6 секунды, а вот по содержимому писем – тягостные 115 секунд. Скорость загрузки существенно ухудшалась при попытках открывать в KMail большие почтовые ящики.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''1.9.6'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.kontact.org www.kontact.org]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Рейтинг 7/10'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Kontact (KMail) Немного не хватает глянца и нескольких продвинутых антифишинговых функций, но на Kontact все еще следует обратить внимание.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Mozilla Thunderbird ===&lt;br /&gt;
&lt;br /&gt;
'''Флагманский почтовый клиент от Mozilla прекрасно сочетается с браузером Firefox.'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird был разработан Mozilla Foundation, некоммерческой организацией, также разрабатывающей широко известный web-браузер Firefox. Недавно вышедший Thunderbird 2.0.0 содержит множество новых функций и исправлений, улучшивших предыдущую версию 1.5. При запуске Thunderbird в первый раз вам дается возможность с помощью мастера установить новую почтовую или новостную учетную запись. Интерфейс Thunderbird’а по умолчанию представляет собой классический список папок слева, список писем вверху справа и содержимого письма внизу справа.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ясно, что на разработку Thunderbird ушло немало мыслительного ресурса: здесь хорошо продуманный интерфейс пользователя и фантастические возможности в плане безопасности и конфиденциальности. По умолчанию, внешние рисунки в HTML-письмах не загружаются, это предотвращает обнаружение вашего почтового адреса третьими лицами. Злоумышленник, например, может внедрять рисунок с уникальным URL, связанным с вашим почтовым адресом, и если ваш почтовый клиент загрузит этот рисунок, атакующий получает подтверждение, что адрес существует и используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird имеет встроенную систему определения спама по Байесу, и письма автоматически помечаются как спам и не спам при скачивании. Если движок определения спама работает неправильно, есть возможность обучить его самому, помечая спам вручную. В предыдущих версиях Thunderbird с этой функцией была большая проблема, так как классификация, даже после обучения в течение нескольких недель, выглядела практически случайной; и, похоже, это существенно улучшено в Thunderbird 2.0.0. Без обучения она правильно определяла всевозможный спам и, что важнее, не объявляла ложных тревог, считая не-спам спамом.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird также имеет отличную функцию антифишинга, выдающую предупреждение “Thunderbird thinks this message might be an email scam” (Thunderbird думает, что это сообщение может быть обманным), при этом предлагая обучить движок, если письмо было опознано как обманное по ошибке.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Ваша почта, сэр''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird автоматически проверяет новую почту через настраиваемые интервалы времени, и совершенно ненавязчивые всплывающие сообщения отображают в углу экрана тему письма и имя отправителя – это полезно, когда вы ждете важное письмо, но не хотите ежеминутно проверять почтовый ящик вручную.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Наряду с обычными POP3 и IMAP, Thunderbird также способен соединяться с Gmail, а также управлять локальными учетными записями почтового спула Unix. При работе с почтовыми учетными записями IMAP предлагается работа оффлайн, и вы можете выбирать, какие почтовые папки следует полностью скачать перед тем, как разъединиться с сетью. &lt;br /&gt;
Нам понравились кнопки Back и Forward (Назад и Вперед) на панели инструментов. Они работают аналогично кнопкам web-браузера – нажатие Back переносит вас на последнюю папку или письмо, которое вы просматривали, а нажатие Forward работает в обратную сторону.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;У Thunderbird отличные инструменты поиска, с ними легко найти нужное письмо. Первый из них – это панель, возникающая внизу окна письма, позволяющая перемещаться вперед и назад при поиске по почте. Также есть панель &lt;br /&gt;
поиска вверху списка писем, чтобы быстро отыскивать по отправителю или теме письмо в текущей папке. Наконец, Thunderbird может сохранять результаты поиска в папку, и если вам захочется провести поиск еще раз, все, что потребуется сделать – это перейти в папку и щелкнуть на имя соответствующего поиска.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird использует гибкую модульную архитектуру, позволяющую создавать как дополнительные темы оформления, так и расширения (extensions), улучшающие функциональность. Расширения доступны в виде XPI-файлов. Они легко могут быть импортированы в Thunderbird.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Оплошность с шифрованием''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Нас огорчило, что стандартно Thunderbird не имеет встроенной поддержки для получения и отправки PGP-подписанных или зашифрованных писем, но, к счастью, наличие расширений спасает положение, поскольку одно из них, под названием Enigmail, способно закрыть эту дыру. Хотя это не совсем связано с электронной почтой, нам хотелось бы упомянуть, что Thunderbird также включает читалку RSS. Хотя у вас, наверное, уже есть любимый RSS-ридер для Linux, нам было приятно увидеть, что любимые новости могут быть прочитаны как письма (на стр. 25 показано, какие другие клиенты также имеют поддержку RSS).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производительность Thunderbird была хорошей, хотя и не выдающейся. Тестовый почтовый ящик открылся за 1,6 секунды, поиск по темам писем занял 2,0 секунды. А вот поиск по содержимому писем был вовсе не впечатляющ, на него ушло 58 тягостных секунд ожидания. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''2.0.0'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.mozilla.org www.mozilla.org]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Рейтинг 9/10'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mozilla Thunderbird Весьма приятное приложение – но хорошо бы ему обзавестись некоторыми групповыми функциями и календарем.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Balsa ===&lt;br /&gt;
&lt;br /&gt;
'''Простой, легковесный – не это ли ваш идеальный почтовый клиент?'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вalsa, будучи GTK-приложением, является частью рабочего стола Gnome. Но это не приложение все-в-одном, наподобие Evolution – оно разрабатывалось с упором на электронную почту, но при этом хорошо настаивается и предлагает все основные возможности почтового клиента.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Была сделана попытка улучшить безопасность, так как внешние рисунки, похоже, не загружаются в HTML по умолчанию. К сожалению, нам вообще не удалось найти способ их увидеть – не всплывает сообщения, как в других программах, с предложением отобразить их.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Имеется адресная книга, к которой можно обратиться через меню Файл, но она не оправдала ожиданий, поскольку выбор этого пункта приводил к сообщению об ошибке ‘error opening address book “Address book”: Cannot read from address book.’ (ошибка при открытии адресной книги “Address book”: Невозможно считать из адресной книги.) Оно возникало как на пакете Ubuntu версии 2.3.13, так и на собранной нами версии 2.3.15. Потратив некоторое время на поиск помощи, мы не сумели разрешить эту досадную проблему.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Нас озадачили некоторые аспекты пользовательского интерфейса Balsa. Примером может служить кнопка на панели инструментов с надписью Trash/Delete (Корзина/Удалить), тогда как подсказка говорит ‘Move the current message to trash’ (Переместить текущее письмо в корзину). Использование синонимичных выражений и несовпадение с формулировкой подсказки слегка сбивает с толку.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Поддерживаются фильтры электронной почты, позволяющие использовать регулярные выражения и даже указывать дату письма в некотором интервале времени. Быстрый поиск внутри папок конкретного отправителя очень прост, благодаря окну поиска над списком писем.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производительность была одной из худших. Открытие тестового почтового ящика заняло 28 секунд, поиск по темам писем – 24,1 секунды. Поиск по содержимому писем вообще велся со скоростью черепахи, он занял около 176 секунд.&lt;br /&gt;
Наряду с использованием встроенных фильтров электронной почты, вы также можете использовать Procmail в связке с Balsa.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''2.3.15'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.balsa.gnome.org www.balsa.gnome.org]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Рейтинг 5/10'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Производительность у Balsa низкая, а набор возможностей – средненький.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== GNUMail ===&lt;br /&gt;
&lt;br /&gt;
'''Четырехлетний альтернативный пакет.'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Запущенный в 2003 г., GNUMail является необычным клиентом электронной почты с уникальным пользовательским интерфейсом. Он разрабатывался как клон приложения Mail.app, поставлявшегося с операционной системой NeXT. GNUMail запускается на Linux и прочих Unix’ах, использующих среду разработки GNUStep.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первый запуск GNUMail открывает диалог Preferences (Установки) на вкладке Accounts (Учетные записи). Он не так прост в использовании, как мастер, но куда доступнее некоторых своих собратьев. Кое-какие аспекты пользовательского интерфейса покажутся вам непривычными. Во-первых, полосы прокрутки расположены слева, а не справа. Вовторых, меню расположено по вертикали, а раскрывается по горизонтали. Иногда это удобно. Меню обычно сжимается при выборе другого из пунктов сверху. Однако это можно предотвратить при раскрытии меню верхнего уровня путем перетаскивания его в другую часть экрана, используя заголовочную панель, затем отменить с помощью кнопки X, возникающей в панели меню.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Основной интерфейс GNUMail содержит два окна: окно меню и главное окно, где отображается список писем и показывается их содержимое. В другом окне можно выбирать другие почтовые ящики.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Установка фильтров писем проста благодаря различным пунктам меню, например Make Filter From Sender (Создать фильтр по отправителю). Откроется диалог построения фильтра, при этом поле Sender (Отправитель) уже будет заполнено нужной информацией.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Стабильность была ниже, чем полагается – попытка открыть папку, содержащую 30 000 писем учетной записи IMAP, привела к системной ошибке ‘virtual memory exhausted’ (исчерпана виртуальная память). GNUMail также не сумел завершить наш тест производительности, просто слетев при попытке скачать 60 000 писем, используя POP.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''1.2.0pre2'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.collaboration-world.com www.collaboration-world.com]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Рейтинг 3/10'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
GNUMail необычен, но пригоден к использованию, хотя требует доработки по части стабильности.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Вердикт: ... ===&lt;br /&gt;
&lt;br /&gt;
'''Thunderbird 9/10''' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Нам пришлось поломать голову, выбирая почтовых клиентов для этого Сравнения – можно было бы рассмотреть по крайней мере штук 15, без особого труда написав несколько страниц про каждый.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Выбранные же претенденты делятся на 2 четко разграниченные группы: чисто почтовые клиенты – такие, как Mutt, GNUMail, Balsa, Thunderbird и Opera Mail; и те, что включают возможности персональных органайзеров, например, календари и адресные книги – это Kontact и Evolution. Явный победитель выделялся на фоне всех претендентов почти по любому критерию. Это был Mozilla Thunderbird. Благодаря своей кросс-платформенности Thunderbird сейчас является одним из наиболее эффективных почтовых клиентов. Мы бы, однако, поторопили разработчиков включить в приложение возможности календаря.&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Отсутствие календаря и функций планирования и рассылки информации о встречах, скорее всего, не подпустит Thunderbird к корпоративным рабочим местам [необходимая функциональность разрабатывается в рамках проекта Sunbird. Одноименное приложение может как интегрироваться с Thunderbird, так и работать отдельно, но пока находится на ранних этапах развития, – прим. ред.].&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Несмотря на это, являясь внештатным семейным IT-специалистом, вы можете установить Thunderbird членам вашей семьи и радоваться тому, что они хорошо защищены от спама и фишинга.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Двумя другими выделяющимися клиентами были Kontact и Evolution. Оба способны эффективно заменить Microsoft Outlook – календарь, встречи и синхронизация адресной книги и электронной почты с другими устройствами – это просто Святой Грааль для настольного ПК с открытым ПО, ибо, как мы отметили, функции эти чрезвычайно нужны для бизнеса. &lt;br /&gt;
Kontact немного недошлифован, но, потратив некоторое время на его настройку, вы увидите, что это весьма мощный почтовый клиент. Evolution хорошо работает «прямо из коробки», но, похоже, некоторым областям было уделено мало внимания по сравнению с другими: например, мастер установки чрезмерно усложнен.'LXF'&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot; colspan=&amp;quot;8&amp;quot; rowspan=&amp;quot;1&amp;quot;&amp;gt;'''Таблица функциональных возможностей'''&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Balsa&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Evolution&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GNUMail&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Kontact&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Mutt&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Opera&lt;br /&gt;
Mail&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Thunderbird&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Лицензия&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Поприетарная&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;MPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;POP&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;IMAP&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Другие протоколы&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Hula, Groupwise&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Kolab, локальный&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Локальный&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Gmail&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Антиспам&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Антифишинг&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Антивирус&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Адресная книга&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Внешняя&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Календарь&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;HTML-письма&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Только просмотр&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Только просмотр&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Фильтр&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Внешняя&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Модули расширения&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√(Bundles)&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Макросы&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Подпись/ шифрование&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба,&lt;br /&gt;
через модуль расширения&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;IMAP оффлайн&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;RSS&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Проверка орфографии&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;В&lt;br /&gt;
зависимости от редактора&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Шаблоны&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%9F%D0%BE%D1%87%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%8B</id>
		<title>LXF95:Почтовые клиенты</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%9F%D0%BE%D1%87%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%8B"/>
				<updated>2008-03-15T21:57:20Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Что лучше: полный канцелярский набор Thunderbird, кожаная перочистка Opera и...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Что лучше: полный канцелярский набор Thunderbird, кожаная перочистка Opera или бумага с карандашом от Mutt? Путь к контактам выбирает '''Крис Хоуэллс'''.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Немногое произвело такую же революцию в области связи в XXI веке, как электронная почта. К сожалению, по мере того, как взрослела электронная почта, росло и умение любителей злоупотребить ею. Ненавистная Незатребованная Коммерческая Почта (Unsolicited Commercial Email, UCE), или спам, продолжает развиваться. По оценкам Messaging Anti-Abuse Working Group (Группа по борьбе со злоупотреблением почтой, www. maawg.org), в последнем квартале 2005 года 80–85% входящего почтового трафика составляла «непрошеная почта» – это где-то в районе 90 миллиардов писем в день! &lt;br /&gt;
Еще опаснее фишинг, технология втирания в доверие, направленная на вытягивание секретной информации у наивных жертв. Вирусы и трояны обычно не беспокоят пользователей Linux, поскольку число их невелико, однако вполне возможно употребить пользователя Linux как вектор атаки, направленный на Windows-машины, при беззаботной рассылке прикреплений.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Почтовые клиенты предусматривают защиту от этих угроз, однако ваш фактор выбора клиента обычно один: вызывает ли процесс работы с электронной почтой удовольствие или раздражение? Наше Сравнение попытается выявить лучшего.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Как работают почтовые клиенты? ====&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Про наш тест...|&lt;br /&gt;
Содержание=Мы испытывали почтовые клиенты на Kubuntu 7.04 на ноутбуке Lenovo ThinkPad X60s, с 1,5 ГБ ОЗУ и 1,66-ГГц процессором Intel Core Duo, ограниченным одним ядром.&amp;lt;br&amp;gt;&lt;br /&gt;
*Безопасность и секретность Мы смотрели, имеет ли клиент поддержку шифрованных и подписанных почтовых сообщений, а также какую-нибудь помощь в распознава- нии фишинга. Мы также исследовали противоспамные средства.&amp;lt;br&amp;gt;&lt;br /&gt;
*Функциональные возможности Мы рассматривали протоколы, поддерживаемые каждым клиентом, и число доступных полезных свойств.&lt;br /&gt;
*Простота в использовании Можно ли давать такую программу неопытным пользователям, и надеяться, что ею будут пользоваться, прибегая к помощи лишь изредка.&amp;lt;br&amp;gt;&lt;br /&gt;
*Скорость и эффективность Мы измеряли время, требуемое для загрузки почтового ящика с 60 000 письмами, а также поиск строки “christmas” в теле и в теме письма, затем брали среднее этих трех величин. Также обращалось внимание на то, ухудша- ется ли время загрузки для больших почтовых ящиков.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как вы, наверное, знаете, в основном используются два способа сбора электронной почты. Это POP (Post Office Protocol) и IMAP (Internet Message Access Protocol). В протоколе POP текстовое содержимое и все прикрепления скачиваются с удаленного почтового сервера на локальный компьютер, затем немедленно удаляются на почтовом сервере [это не является требованием протокола, но так обычно и происходит, – прим.ред.]. С этого момента ответственность почтового сервера за электронную почту заканчивается.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;IMAP, напротив, хранит все сообщения на сервере, и требует постоянной связи по сети или через Интернет. Это может раздражать, если вы путешествуете и имеете ограниченный доступ к Интернету, хотя существует несколько почтовых клиентов, способных скачивать письма IMAP для офлайнового использования. Наши клиенты поддерживают оба метода. &lt;br /&gt;
Это были азы – теперь двинемся дальше!&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Opera Mail ===&lt;br /&gt;
&lt;br /&gt;
''Уважаемый и многофункциональный проприетарный клиент.''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Начав просто как браузер, с годами Opera превратилась в обширный комплект программ, куда входит и почтовый клиент. Он поддерживает и POP3, и IMAP, и позволяет применять SSL-шифрование для улучшения безопасности этих протоколов. Также поддерживается SMTP-аутентификация, что позволяет вам подтверждать подлинность на удаленном почтовом сервере. Вызывает некоторое раздражение, что установленная по умолчанию подпись рекламирует продукцию Opera, но ее легко убрать.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Opera создает несколько виртуальных папок, основанных на содержимом вашей электронной почты. Внутри виртуальной папки Attachments (Вложения) вы найдете подкаталоги для документов, рисунков, музыки, видео и сжатых архивов (например, ZIP-файлов). Можно выбрать любой из этих подкаталогов, чтобы увидеть все письма, отвечающие данному признаку. &lt;br /&gt;
Имеется хорошая поддержка для почтовых списков рассылки, и Opera распознает электронную почту, которая распространяется утилитами рассылок, например, GNU Mailman.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Она организует эти письма в другие виртуальные папки: не имеет значения, в какой именно папке хранится письмо, можно отображать все письма из определенного списка. Для легкой категоризации, опять-таки путем виртуальных папок, письмам можно присвоить метки-теги.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Нам приглянулся вид функции Quick Reply (Быстрый ответ), появляющейся внизу каждого письма. Она позволяет отвечать на письма, не открывая отдельное окно для написания текста. К сожалению, на практике оказалось, что поддерживается только топ-постинг [т.е. текст ответа помещается над цитированием оригинального письма, – прим. ред.]. &lt;br /&gt;
В целом, производительность Opera выглядит неравномерной. Она была очень медленной при импортировании нашего тестового почтового ящика, потребляя большую долю времени CPU. Это может доставить неприятности, так как во время проверки почтового ящика, как правило, занимаются и другими делами. После этого производительность была потрясающей, загрузка ящика занимала лишь 0,5 секунды, а поиск в теме и содержимом письма был мгновенным.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''9,20'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.www.opera.com www.opera.com]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно, поддержка за дополнительную плату''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Рейтинг 7/10&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Большое число новых функций с продуманным оформлением превращают использование почтового клиента Opera в удовольствие..&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Mutt ===&lt;br /&gt;
&lt;br /&gt;
''В отличие от Opera, минималистическое приложение.''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В нашем обзоре Mutt стоит особняком, поскольку это здесь единственное консольное приложение. Первоначально основанный на старом почтовом клиенте Elm, Mutt с тех пор стал довольно мощным приложением.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Откровенно говоря, Mutt имеет довольно крутую «кривую обучения» по сравнению со многими другими программами, однако на wiki-страницах сайта громоздятся горы документации. Его текстовая природа даст много преимуществ по сравнению с графическими альтернативами, если вы ухватите ее суть. Например, вы легко сможете проверить вашу почту отовсюду, используя SSH для соединения с сервером, где установлен Mutt, а затем запустить программу, как если бы вы использовали ее локально.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mutt управляется исключительно клавиатурой. По умолчанию дается большое число горячих клавиш, а настроить можно еще больше. Также есть возможность использовать макросы, и они работают, выполняя последовательность нескольких функций вместе за один шаг.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы можете настроить клиента самостоятельно путем ручного редактирования файла .muttrc. Файлы .muttrc целиком доступны на сайте Mutt в качестве примеров, а в руководстве по Mutt можно найти фрагменты опций настройки, пригодные для вставки в файл конфигурации, чтобы настроить Mutt на ваш вкус.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Предусмотрен встроенный редактор для написания писем, однако если вы предпочитаете внешний текстовый редактор вроде Vi или Emacs, переключитесь на них – либо посредством изменения .muttrc, либо путем задания переменной среды $EDITOR. По умолчанию Mutt не может просматривать HTML или создавать HTML-письма. Желающим видеть HTML-письма придется настроить Mutt на использование внешнего HTML-просмотрщика/ браузера, например, Lynx.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производительность Mutt не была выдающейся. Загрузка тестового ящика заняла 10,3 секунды. Поиск по письмам прошел за 12,5 секунд, а вот по темам писем – за более приятные 0,8 секунды.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Пользовательский интерфейс Mutt – на базе Ncurses или S-Lang, и можно даже соорудить цветную консоль. Mutt Трудный для первого раза, но головокружительно гибко настраиваемый и мощный почтовый клиент.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''1.4.2.2'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.mutt.org www.mutt.org]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Рейтинг 7/10&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Трудный для первого раза, но головокружительно гибко настраиваемый и мощный почтовый клиент.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Evolution  ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Налицо все элементы персонального органайзера.'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Это флагманский проект Gnome – интегрированные почтовый клиент, адресная книга и календарь. При запуске Evolution начинает выполняться Setup Assistant, предназначенный для установки в программе первоначальных учетных записей. Evolution поддерживает широкий диапазон протоколов, включая MAP, POP, Hula и Novell Groupwise, а также несколько опций локальной доставки mbox/maildir. Собственно говоря, опциями мастер перегружен, и это озадачивает, поскольку широкому большинству пользователей они никогда не понадобятся. Было бы куда приятней иметь что-нибудь попроще.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Evolution имеет виртуальные папки, так что вы можете сохранять отдельные результаты поиска, которые затем будут представлены как виртуальная папка в списке.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Чтобы не сидеть постоянно в Интернете в режиме IMAP, вы можете пометить папку как читаемую оффлайн. Тогда все её содержимое, до последнего письма, будет скачиваться на локальный компьютер.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Evolution имеет встроенную поддержку отправки и получения зашифрованных писем с использованием открытого клиента PGP, GnuPG, и стандарта S/MIME, а также детектор спама. Он работает хорошо и точно выявляет нежелательные сообщения.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разработчики здорово упростили настройку Evolution с помощью функции под названием Eplugin, используемой для создания несложных модулей расширения – это изящный способ справиться с обычной проблемой необходимости марать руки исходным кодом на С. Система Eplugin намеренно разработана так, что вам хватит лишь минимального знания ядра приложения.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производительность была потрясающей, Evolution потребовалось лишь 1,0 секунды для загрузки тестового почтового ящика. Поиск был произведен почти так же быстро, за 1,5 секунды – как по письмам, так и то темам.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''2.10.1'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.gnome.org/projects/evolution www.gnome.org/projects/evolution]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Рейтинг 7/10&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Evolution Если вы ищете замену Microsoft Outlook – считайте, вы ее нашли.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Kontact (KMail) ===&lt;br /&gt;
&lt;br /&gt;
'''Почтовый клиент от сообщества KDE.'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Строго говоря, Kontact не есть почтовый клиент. Это обертка нескольких компонентов, включая календарь KOrganizer, адресную книгу KAddressBook и собственно почтовое приложение, KMail.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;KMail имеет огромное число возможностей, но кое в чем ему недостает лоска, присущего другим приложениям. Например, опции настройки не сгруппированы логически, и иногда программа чересчур гонится за настраиваемостью: иллюстрация проблемы – вкладка с описанием Settings That Don’t Fit Elsewhere (Настройки, которые никуда не подходят).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как антивирус, так и фильтрацию спама предлагается настраивать мастером. Система фильтрации поддерживает несколько движков выявления спама – вы даже можете сами выбрать движок. Антивирусная защита нас разочаровала: она извещала об ошибке, но давала мало содействия в разрешении проблемы.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Средства конфиденциальности предусматривают отключение отображения HTMLписем: вместо них показывается голый HTML. Есть возможность включить отображение HTML-писем для всей папки, но это придется делать папка за папкой. К сожалению, в KMail отсутствует поддержка антифишинга. Зато имеется отличная поддержка шифрования с использованием GnuPG и S/MIME.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Недавно добавленная функция для написания HTML-писем охватывает всего несколько базовых возможностей, таких как цвет и начертание шрифта и опции форматирования. Есть поддержка чтения IMAP-почты оффлайн, но она прилагается ко всей учетной записи IMAP. Жаль, что нет возможности выбрать конкретные папки для оффлайн-чтения: либо все, либо ничего.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;KMail’у потребовалось 12,6 секунды для загрузки тестового почтового ящика. Поиск по темам занял 12,6 секунды, а вот по содержимому писем – тягостные 115 секунд. Скорость загрузки существенно ухудшалась при попытках открывать в KMail большие почтовые ящики.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''1.9.6'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.kontact.org www.kontact.org]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Рейтинг 7/10&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Kontact (KMail) Немного не хватает глянца и нескольких продвинутых антифишинговых функций, но на Kontact все еще следует обратить внимание.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Mozilla Thunderbird ===&lt;br /&gt;
&lt;br /&gt;
'''Флагманский почтовый клиент от Mozilla прекрасно сочетается с браузером Firefox.'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird был разработан Mozilla Foundation, некоммерческой организацией, также разрабатывающей широко известный web-браузер Firefox. Недавно вышедший Thunderbird 2.0.0 содержит множество новых функций и исправлений, улучшивших предыдущую версию 1.5. При запуске Thunderbird в первый раз вам дается возможность с помощью мастера установить новую почтовую или новостную учетную запись. Интерфейс Thunderbird’а по умолчанию представляет собой классический список папок слева, список писем вверху справа и содержимого письма внизу справа.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ясно, что на разработку Thunderbird ушло немало мыслительного ресурса: здесь хорошо продуманный интерфейс пользователя и фантастические возможности в плане безопасности и конфиденциальности. По умолчанию, внешние рисунки в HTML-письмах не загружаются, это предотвращает обнаружение вашего почтового адреса третьими лицами. Злоумышленник, например, может внедрять рисунок с уникальным URL, связанным с вашим почтовым адресом, и если ваш почтовый клиент загрузит этот рисунок, атакующий получает подтверждение, что адрес существует и используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird имеет встроенную систему определения спама по Байесу, и письма автоматически помечаются как спам и не спам при скачивании. Если движок определения спама работает неправильно, есть возможность обучить его самому, помечая спам вручную. В предыдущих версиях Thunderbird с этой функцией была большая проблема, так как классификация, даже после обучения в течение нескольких недель, выглядела практически случайной; и, похоже, это существенно улучшено в Thunderbird 2.0.0. Без обучения она правильно определяла всевозможный спам и, что важнее, не объявляла ложных тревог, считая не-спам спамом.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird также имеет отличную функцию антифишинга, выдающую предупреждение “Thunderbird thinks this message might be an email scam” (Thunderbird думает, что это сообщение может быть обманным), при этом предлагая обучить движок, если письмо было опознано как обманное по ошибке.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Ваша почта, сэр''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird автоматически проверяет новую почту через настраиваемые интервалы времени, и совершенно ненавязчивые всплывающие сообщения отображают в углу экрана тему письма и имя отправителя – это полезно, когда вы ждете важное письмо, но не хотите ежеминутно проверять почтовый ящик вручную.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Наряду с обычными POP3 и IMAP, Thunderbird также способен соединяться с Gmail, а также управлять локальными учетными записями почтового спула Unix. При работе с почтовыми учетными записями IMAP предлагается работа оффлайн, и вы можете выбирать, какие почтовые папки следует полностью скачать перед тем, как разъединиться с сетью. &lt;br /&gt;
Нам понравились кнопки Back и Forward (Назад и Вперед) на панели инструментов. Они работают аналогично кнопкам web-браузера – нажатие Back переносит вас на последнюю папку или письмо, которое вы просматривали, а нажатие Forward работает в обратную сторону.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;У Thunderbird отличные инструменты поиска, с ними легко найти нужное письмо. Первый из них – это панель, возникающая внизу окна письма, позволяющая перемещаться вперед и назад при поиске по почте. Также есть панель &lt;br /&gt;
поиска вверху списка писем, чтобы быстро отыскивать по отправителю или теме письмо в текущей папке. Наконец, Thunderbird может сохранять результаты поиска в папку, и если вам захочется провести поиск еще раз, все, что потребуется сделать – это перейти в папку и щелкнуть на имя соответствующего поиска.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thunderbird использует гибкую модульную архитектуру, позволяющую создавать как дополнительные темы оформления, так и расширения (extensions), улучшающие функциональность. Расширения доступны в виде XPI-файлов. Они легко могут быть импортированы в Thunderbird.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Оплошность с шифрованием''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Нас огорчило, что стандартно Thunderbird не имеет встроенной поддержки для получения и отправки PGP-подписанных или зашифрованных писем, но, к счастью, наличие расширений спасает положение, поскольку одно из них, под названием Enigmail, способно закрыть эту дыру. Хотя это не совсем связано с электронной почтой, нам хотелось бы упомянуть, что Thunderbird также включает читалку RSS. Хотя у вас, наверное, уже есть любимый RSS-ридер для Linux, нам было приятно увидеть, что любимые новости могут быть прочитаны как письма (на стр. 25 показано, какие другие клиенты также имеют поддержку RSS).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производительность Thunderbird была хорошей, хотя и не выдающейся. Тестовый почтовый ящик открылся за 1,6 секунды, поиск по темам писем занял 2,0 секунды. А вот поиск по содержимому писем был вовсе не впечатляющ, на него ушло 58 тягостных секунд ожидания. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''2.0.0'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.mozilla.org www.mozilla.org]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Рейтинг 9/10&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mozilla Thunderbird Весьма приятное приложение – но хорошо бы ему обзавестись некоторыми групповыми функциями и календарем.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Balsa ===&lt;br /&gt;
&lt;br /&gt;
''Простой, легковесный – не это ли ваш идеальный почтовый клиент?''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вalsa, будучи GTK-приложением, является частью рабочего стола Gnome. Но это не приложение все-в-одном, наподобие Evolution – оно разрабатывалось с упором на электронную почту, но при этом хорошо настаивается и предлагает все основные возможности почтового клиента.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Была сделана попытка улучшить безопасность, так как внешние рисунки, похоже, не загружаются в HTML по умолчанию. К сожалению, нам вообще не удалось найти способ их увидеть – не всплывает сообщения, как в других программах, с предложением отобразить их.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Имеется адресная книга, к которой можно обратиться через меню Файл, но она не оправдала ожиданий, поскольку выбор этого пункта приводил к сообщению об ошибке ‘error opening address book “Address book”: Cannot read from address book.’ (ошибка при открытии адресной книги “Address book”: Невозможно считать из адресной книги.) Оно возникало как на пакете Ubuntu версии 2.3.13, так и на собранной нами версии 2.3.15. Потратив некоторое время на поиск помощи, мы не сумели разрешить эту досадную проблему.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Нас озадачили некоторые аспекты пользовательского интерфейса Balsa. Примером может служить кнопка на панели инструментов с надписью Trash/Delete (Корзина/Удалить), тогда как подсказка говорит ‘Move the current message to trash’ (Переместить текущее письмо в корзину). Использование синонимичных выражений и несовпадение с формулировкой подсказки слегка сбивает с толку.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Поддерживаются фильтры электронной почты, позволяющие использовать регулярные выражения и даже указывать дату письма в некотором интервале времени. Быстрый поиск внутри папок конкретного отправителя очень прост, благодаря окну поиска над списком писем.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производительность была одной из худших. Открытие тестового почтового ящика заняло 28 секунд, поиск по темам писем – 24,1 секунды. Поиск по содержимому писем вообще велся со скоростью черепахи, он занял около 176 секунд.&lt;br /&gt;
Наряду с использованием встроенных фильтров электронной почты, вы также можете использовать Procmail в связке с Balsa.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''2.3.15'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.balsa.gnome.org www.balsa.gnome.org]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Рейтинг 5/10&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Производительность у Balsa низкая, а набор возможностей – средненький.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== GNUMail ===&lt;br /&gt;
&lt;br /&gt;
''Четырехлетний альтернативный пакет.''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Запущенный в 2003 г., GNUMail является необычным клиентом электронной почты с уникальным пользовательским интерфейсом. Он разрабатывался как клон приложения Mail.app, поставлявшегося с операционной системой NeXT. GNUMail запускается на Linux и прочих Unix’ах, использующих среду разработки GNUStep.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первый запуск GNUMail открывает диалог Preferences (Установки) на вкладке Accounts (Учетные записи). Он не так прост в использовании, как мастер, но куда доступнее некоторых своих собратьев. Кое-какие аспекты пользовательского интерфейса покажутся вам непривычными. Во-первых, полосы прокрутки расположены слева, а не справа. Вовторых, меню расположено по вертикали, а раскрывается по горизонтали. Иногда это удобно. Меню обычно сжимается при выборе другого из пунктов сверху. Однако это можно предотвратить при раскрытии меню верхнего уровня путем перетаскивания его в другую часть экрана, используя заголовочную панель, затем отменить с помощью кнопки X, возникающей в панели меню.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Основной интерфейс GNUMail содержит два окна: окно меню и главное окно, где отображается список писем и показывается их содержимое. В другом окне можно выбирать другие почтовые ящики.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Установка фильтров писем проста благодаря различным пунктам меню, например Make Filter From Sender (Создать фильтр по отправителю). Откроется диалог построения фильтра, при этом поле Sender (Отправитель) уже будет заполнено нужной информацией.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Стабильность была ниже, чем полагается – попытка открыть папку, содержащую 30 000 писем учетной записи IMAP, привела к системной ошибке ‘virtual memory exhausted’ (исчерпана виртуальная память). GNUMail также не сумел завершить наш тест производительности, просто слетев при попытке скачать 60 000 писем, используя POP.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Версия: ''1.2.0pre2'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.collaboration-world.com www.collaboration-world.com]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно под GPL''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Рейтинг 3/10&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
GNUMail необычен, но пригоден к использованию, хотя требует доработки по части стабильности.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Вердикт: Thunderbird 9/10 ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Нам пришлось поломать голову, выбирая почтовых клиентов для этого Сравнения – можно было бы рассмотреть по крайней мере штук 15, без особого труда написав несколько страниц про каждый.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Выбранные же претенденты делятся на 2 четко разграниченные группы: чисто почтовые клиенты – такие, как Mutt, GNUMail, Balsa, Thunderbird и Opera Mail; и те, что включают возможности персональных органайзеров, например, календари и адресные книги – это Kontact и Evolution. Явный победитель выделялся на фоне всех претендентов почти по любому критерию. Это был Mozilla Thunderbird. Благодаря своей кросс-платформенности Thunderbird сейчас является одним из наиболее эффективных почтовых клиентов. Мы бы, однако, поторопили разработчиков включить в приложение возможности календаря.&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Отсутствие календаря и функций планирования и рассылки информации о встречах, скорее всего, не подпустит Thunderbird к корпоративным рабочим местам [необходимая функциональность разрабатывается в рамках проекта Sunbird. Одноименное приложение может как интегрироваться с Thunderbird, так и работать отдельно, но пока находится на ранних этапах развития, – прим. ред.].&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Несмотря на это, являясь внештатным семейным IT-специалистом, вы можете установить Thunderbird членам вашей семьи и радоваться тому, что они хорошо защищены от спама и фишинга.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Двумя другими выделяющимися клиентами были Kontact и Evolution. Оба способны эффективно заменить Microsoft Outlook – календарь, встречи и синхронизация адресной книги и электронной почты с другими устройствами – это просто Святой Грааль для настольного ПК с открытым ПО, ибо, как мы отметили, функции эти чрезвычайно нужны для бизнеса. &lt;br /&gt;
Kontact немного недошлифован, но, потратив некоторое время на его настройку, вы увидите, что это весьма мощный почтовый клиент. Evolution хорошо работает «прямо из коробки», но, похоже, некоторым областям было уделено мало внимания по сравнению с другими: например, мастер установки чрезмерно усложнен.'LXF'&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot; colspan=&amp;quot;8&amp;quot; rowspan=&amp;quot;1&amp;quot;&amp;gt;Таблица функциональных возможностей&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Balsa&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Evolution&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GNUMail&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Kontact&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Mutt&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Opera&lt;br /&gt;
Mail&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Thunderbird&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Лицензия&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;GPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Поприетарная&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;MPL&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;POP&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;IMAP&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Другие протоколы&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Hula, Groupwise&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Kolab, локальный&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Локальный&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Gmail&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Антиспам&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Антифишинг&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Антивирус&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Адресная книга&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Внешняя&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Календарь&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;HTML-письма&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Только просмотр&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Только просмотр&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Фильтр&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Внешняя&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Модули расширения&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√(Bundles)&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Макросы&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Подпись/ шифрование&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Нет&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Оба,&lt;br /&gt;
через модуль расширения&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;IMAP оффлайн&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;RSS&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;X&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Проверка орфографии&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;В&lt;br /&gt;
зависимости от редактора&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;Шаблоны&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;√&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Ballistics</id>
		<title>LXF95:Ballistics</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Ballistics"/>
				<updated>2008-03-15T21:30:28Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Penguin Racer не балует адреналином? '''Грэм Моррисон''' нашел кое-что покруч...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Penguin Racer не балует адреналином? '''Грэм Моррисон''' нашел кое-что покруче.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Вкратце…|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Высокоскоростная футуристическая культовая игра. Альтернативы на Linux просто нет, Penguin Racer и рядом не стояла.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux Game Publishing разыскала игру, достойную возрождения. Ballistics впервые увидела свет пять лет назад, на Microsoft Windows и достопочтенном Xbox. Но она до сих пор остается в игротеках внушительного числа игроков, создав нечто вроде культа среди любителей быстрой езды. Как следует уже из названия, в Ballistics все подчинено скорости – питаемой кофеином, доводящей до головной боли, рвущей нервы скорости.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Прежде чем подойти к первой звуковой, оглядимся вокруг. Мы в 2090-м году, и человечество уже не стоит на краю пропасти. Войны и эпидемии ушли в прошлое, почти не оставив среднему гражданину серьезных поводов для беспокойства. Вместо амфетаминов и апатии, люди 2090 подсели на более естественный наркотик: адреналин. Чрезвычайно популярны экстремальные виды спорта, а гонки ‘Ballistics’ среди них – последний писк.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Выбираем снаряд ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Пилоты этих магнитных снарядов годами тренируются только для того, чтобы принять участие в чемпионате. Их реакция быстрее полета пули, нашпигованной электронными имплантатами. Даже неловко, ведь их судьба доверена линуксоидам, которые управляют болидами 2090 года с помощью устройства, запатентованного Кристофером Шоулзом [Christopher Sholes] в 1898 (та самая Qwertyклавиатура, что перед вами). Ваша задача – победить, не имея за спиной опыта многолетних тренировок, и по возможности набрать достаточно денег и удачи, чтобы ваш персонаж удалился на заслуженный отдых, а не на вечный покой.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Многолетние упражнения заменяет тренировочный режим, который научит вас управляться со скоростью и посоветует несколько выигрышных стратегий. Голосовые подсказки помогут освоиться со снарядом, правильно расположить пальцы и грамотно пройти первый поворот.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Есть два режима передвижения. Стандартный, самый быстрый – когда снаряд магнитом притягивается к стенке трубы. Левая кнопка мыши постепенно ускоряет движение, а клавишами D и F скоростник смещается влево и вправо, как и в других играх. Можно даже навсегда залепить левую кнопку мыши в нажатом состоянии, если вы не собираетесь убирать с нее палец. Правая кнопка, напротив, используется очень редко. Ее нажатие устраняет магнитное притяжение, прижимающее снаряд к стенке туннеля, и предоставляет ему беспомощно болтаться в воздухе посреди трубы. Теперь болид управляется с помощью мыши, но быстро теряет скорость: ускорение возможно лишь тогда, когда он прижат к поверхности.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Однако парение в середине трубы – это единственное средство избежать некоторых препятствий и набрать предлагаемые по пути очки повышения мощности. Есть три разных вида таких очков: денежные, охлаждающие и силовые. Повторное нажатие правой кнопки притянет аппарат к ближайшей поверхности.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В трубах встречаются различные объекты, загромождающие путь. Все, что окрашено красным, необходимо объезжать: столкновение приводит к повреждению и, хуже того, полной потере скорости. Но есть и полезные объекты. Желтые панели наполнят снаряд энергией, которую можно использовать, нажав клавишу пробела. Синие панели охлаждают двигатель и постепенно исправляют повреждения. Научиться управлению нетрудно, и очень скоро вы сможете участвовать в чемпионате.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== По ту сторону бесконечности ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Известность и удача зависят от побед. В чемпионате это означает выигрыш нескольких гонок подряд, на разных трассах. Чтобы пройти квалификацию, нужно попасть в первую тройку, затем переходить на другую трассу.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;За каждую победу вы получаете виртуальные деньги. Их необходимо потратить на усовершенствование своего аппарата, чтобы он быстрее передвигался, маневрировал и мог переносить более серьезные повреждения. Состязания на высшем уровне невозможны без таких обновлений. Всего трасс семь, а для квалификации дается только три попытки. Это придает гонкам азарт.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Езда чем-то напоминает катание на американских горках.По мере набора скорости стенки туннеля надвигаются на вас все быстрее. На старте еще можно различить мелкие детали на боковых панелях: футуристические вентиляционные решетки, отводные трубы и окна.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В зависимости от места проведения гонки, в вашем окне будет мелькать Большой Каньон, просторы Аляски или небоскребы Токио. Текстуры весьма несовершенны: игре все-таки пять лет. Зато для нее не обязательно иметь суперкомпьютер.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Временами туннель вырывается на поверхность и взмывает вверх, затем снова уходит под землю. Перепады высот достаточны, чтобы создать дополнительную сложность. Но окружающая обстановка скоро начинает размываться. На скорости 400 км/ч еще можно разглядеть достаточно деталей, чтобы понять, где вы находитесь, предвидеть появление препятствия и шарахнуться влево или вправо для его обхода. На скорости свыше 400 км/ч окружение приобретает более абстрактную форму. Пальцы мечутся то влево, то вправо, а поле зрения вытягивается. На 1000 км/ч деталей уже не увидишь, лишь размытые линии да дисплей, светящийся на лобовом стекле – вы в Зоне. Преодолев порог 1600 км/ч, вы получите вознаграждение в игровой валюте; разогнавшись до скорости свыше 2000 км/ч, остается лишь довериться своим инстинктам. Зачастую вы заканчиваете гонку, ощущая одновременно и эйфорию, и изнурение.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вы любо влюбитесь в эту игру, либо ее возненавидите. Но такого ощущения скорости мы еще никогда не испытывали: например, Wipeout гораздо медленнее. С каждой неудачей вы все сильнее рветесь назад, в гонку, а онлайн-режим нескольких игроков добавляет еще одно измерение. Здесь не обойтись без сверхбыстрой реакции и устойчивости к стробоскопическим мельканиям, но взамен вы приобщитесь к одной из лучших гоночных игр, доступных под Linux.''LXF''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Linux Format вердикт ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
'''Gentoo Linux 2007.0'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разработчик: ''Linux Game Publishing'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.linuxgamepublishing.com www.linuxgamepublishing.com]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''₤28 (ок. $55)''&amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Сюжет 9/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Графика 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Увлекательность 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Цена 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 8/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Добиться таких же ощущений от Penguin Racer можно, только обкормив допингом добрую тысячу пингвинов.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:AstroMenace</id>
		<title>LXF95:AstroMenace</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:AstroMenace"/>
				<updated>2008-03-13T11:57:17Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Может ли простая видеоигра выбить из рабочего ритма на несколько дней? Давний противник электронных развлечений '''Евгений Балдин''' еле оторвался от монитора, чтобы дать ответ на этот вопрос.''&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Вкратце…|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Фантастическая вертикальная «стрелялка» с легко настраиваемым уровнем сложности, а так же, возможно, излишне простой экономической моделью и с элементами реальных физических моделями полета и наведения оружия.&lt;br /&gt;
*См. также: xsoldier, Xgalaga.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вертикальная «стрелялка» – всего два слова и почти все необходимые ассоциации уже возникают сами собой. В вашем распоряжении космический корабль, горы оружия, тучи врагов и задача как можно эффективнее наводить это оружие на вражеские истребители, бомбардировщики, ракетоносцы, танки, стационарные зенитки и тому подобное. &lt;br /&gt;
Пятнадцать миссий, фактически отсутствующий сценарий, десятки разнообразных красиво вылепленных противников, множество моделей оружия и спецэффектов от их применения – присутствуют все элементы жанра. В качестве минимальной конфигурации декларируется CPU 1+ ГГц (при этом уточняется, что имеется в виду «честный », а не урезанный процессор  типа Celeron/Duron), 128 МБ ОЗУ, видеокарта с 3D-ускорителем (OpenGL) и более 32 MБ памяти (опять же оговаривается что этот  минимум ориентируется на внешние, а не встроенные видеокарты) и, естественно, мышь.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В игре реализуется «честная» трехмерия. Любой из 125 объектов можно рассмотреть в разделе «Информация» основного меню игры и изучить его параметры. Сама по себе стрелялка горизонтальная, но рассматривается как бы сверху, и враги могут лететь на разной высоте по отношению к вашему космическому кораблю. По утверждению автора, вначале закладывалась возможность поворачивать камеру обзора, но ее реализацию в полном объеме пока решили отложить. То, что противник может оказаться на иной высоте, нежели игрок, усложняет процесс его уничтожения. Одной из ключевых особенностей игры является физическая модель, по которой происходит наведение оружия: в зависимости от уровня установленного на корабле игрока компьютера и системы наведения уничтожение противника происходит с разной степенью эффективности. Особенно эти параметры влияют на ракетное оружие.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Упрощённая экономическая модель игры основывается на ликвидации кораблей противника: чем больше сбил – тем больше денег. Деньги начисляются за каждого уничтоженного врага. В любой момент можно пройти любую миссию еще раз, но при этом размер премии за подбитого противника уменьшается вдвое по сравнению с предыдущей попыткой. Все накопленные деньги в виде закупленного железа и оружия в любой момент можно трансформировать в более эффективный боевой корабль и вооружение. Игрок может примерить разные типы кораблей – от лёгкого разведчика до тяжёлого бомбардировщика. С одной стороны, нет опасности неправильного «развития» – всегда можно переиграть, а с другой – уходит один из важных элементов игры, связанный с планированием и обустройством своего космического штурмовика.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Кстати|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;AstroMenace 1.2 является тестовой версией, которая будет интересна владельцам широкоформатных мониторов.|&lt;br /&gt;
Ширина=200px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Построение миссий от простого к сложному вынуждает вас покупать более мощные кораб ли, ставить на них более тяжелое вооружение и защитные системы, что в свою очередь подразумевает более мощную энергетическую установку. Денег всегда не хватает и в какой-то момент миссия может оказаться невыполнимой – тогда можно легко и непринужденно изменить уровень сложности в меню выбора профиля пилота, например, увеличив эффективность своего оружия и уменьшив эффективность оружия противника или отключив физическую модель наведения, предпочтя ей аркадную. Уровень сложности прямо пропорционально влияет на величину денежной премии за убитых врагов, зато позволяет пройти сложные уровни без напряжения и мучительного выбора подходящей комбинации корабль/ оружие. Иногда достаточно просто уменьшить скорость протекания игры. Замедлить или ускорить время можно прямо во время нажимая клавиши F5 и F7, то есть стало сложно – замедлился в десять раз, надоело – ускорился в пять. Будьте аккуратнее с клавишей F6 – она сбрасывает скорость до значения по умолчанию.&lt;br /&gt;
В дополнение к самой игре команда разработчиков предлагает продвинутым пользователям возможность создавать свои собственные уровни. Редактор уровней отсутствует (в силу особенностей жанра в нем нет необходимости), зато есть подробное описание текстового формата файлов миссии. В завершение обзора следует отметить, что у игры есть свое, хоть пока и небольшое, но довольно активное русскоязычное сообщество, которое влияет на политику добавления тех или иных особенностей и новых возможностей AstroMenace. 'LXF'&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Linux Format вердикт ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
'''Gentoo Linux 2007.0'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разработчик: ''Viewizard Games'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.viewizard.com www.viewizard.com]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно, в основном под свободными лицензиями''&amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Сюжет 2/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Графика 9/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Увлекательность 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Цена 9/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 8/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Скажем просто: затягивает.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:AstroMenace</id>
		<title>LXF95:AstroMenace</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:AstroMenace"/>
				<updated>2008-03-13T11:56:31Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Может ли простая видеоигра выбить из рабочего ритма на несколько дней...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Может ли простая видеоигра выбить из рабочего ритма на несколько дней? Давний противник электронных развлечений Евгений Балдин еле оторвался от монитора, чтобы дать ответ на этот вопрос.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Вкратце…|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Фантастическая вертикальная «стрелялка» с легко настраиваемым уровнем сложности, а так же, возможно, излишне простой экономической моделью и с элементами реальных физических моделями полета и наведения оружия.&lt;br /&gt;
*См. также: xsoldier, Xgalaga.|&lt;br /&gt;
Ширина=230px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вертикальная «стрелялка» – всего два слова и почти все необходимые ассоциации уже возникают сами собой. В вашем распоряжении космический корабль, горы оружия, тучи врагов и задача как можно эффективнее наводить это оружие на вражеские истребители, бомбардировщики, ракетоносцы, танки, стационарные зенитки и тому подобное. &lt;br /&gt;
Пятнадцать миссий, фактически отсутствующий сценарий, десятки разнообразных красиво вылепленных противников, множество моделей оружия и спецэффектов от их применения – присутствуют все элементы жанра. В качестве минимальной конфигурации декларируется CPU 1+ ГГц (при этом уточняется, что имеется в виду «честный », а не урезанный процессор  типа Celeron/Duron), 128 МБ ОЗУ, видеокарта с 3D-ускорителем (OpenGL) и более 32 MБ памяти (опять же оговаривается что этот  минимум ориентируется на внешние, а не встроенные видеокарты) и, естественно, мышь.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В игре реализуется «честная» трехмерия. Любой из 125 объектов можно рассмотреть в разделе «Информация» основного меню игры и изучить его параметры. Сама по себе стрелялка горизонтальная, но рассматривается как бы сверху, и враги могут лететь на разной высоте по отношению к вашему космическому кораблю. По утверждению автора, вначале закладывалась возможность поворачивать камеру обзора, но ее реализацию в полном объеме пока решили отложить. То, что противник может оказаться на иной высоте, нежели игрок, усложняет процесс его уничтожения. Одной из ключевых особенностей игры является физическая модель, по которой происходит наведение оружия: в зависимости от уровня установленного на корабле игрока компьютера и системы наведения уничтожение противника происходит с разной степенью эффективности. Особенно эти параметры влияют на ракетное оружие.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Упрощённая экономическая модель игры основывается на ликвидации кораблей противника: чем больше сбил – тем больше денег. Деньги начисляются за каждого уничтоженного врага. В любой момент можно пройти любую миссию еще раз, но при этом размер премии за подбитого противника уменьшается вдвое по сравнению с предыдущей попыткой. Все накопленные деньги в виде закупленного железа и оружия в любой момент можно трансформировать в более эффективный боевой корабль и вооружение. Игрок может примерить разные типы кораблей – от лёгкого разведчика до тяжёлого бомбардировщика. С одной стороны, нет опасности неправильного «развития» – всегда можно переиграть, а с другой – уходит один из важных элементов игры, связанный с планированием и обустройством своего космического штурмовика.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Кстати|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;AstroMenace 1.2 является тестовой версией, которая будет интересна владельцам широкоформатных мониторов.|&lt;br /&gt;
Ширина=200px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Построение миссий от простого к сложному вынуждает вас покупать более мощные кораб ли, ставить на них более тяжелое вооружение и защитные системы, что в свою очередь подразумевает более мощную энергетическую установку. Денег всегда не хватает и в какой-то момент миссия может оказаться невыполнимой – тогда можно легко и непринужденно изменить уровень сложности в меню выбора профиля пилота, например, увеличив эффективность своего оружия и уменьшив эффективность оружия противника или отключив физическую модель наведения, предпочтя ей аркадную. Уровень сложности прямо пропорционально влияет на величину денежной премии за убитых врагов, зато позволяет пройти сложные уровни без напряжения и мучительного выбора подходящей комбинации корабль/ оружие. Иногда достаточно просто уменьшить скорость протекания игры. Замедлить или ускорить время можно прямо во время нажимая клавиши F5 и F7, то есть стало сложно – замедлился в десять раз, надоело – ускорился в пять. Будьте аккуратнее с клавишей F6 – она сбрасывает скорость до значения по умолчанию.&lt;br /&gt;
В дополнение к самой игре команда разработчиков предлагает продвинутым пользователям возможность создавать свои собственные уровни. Редактор уровней отсутствует (в силу особенностей жанра в нем нет необходимости), зато есть подробное описание текстового формата файлов миссии. В завершение обзора следует отметить, что у игры есть свое, хоть пока и небольшое, но довольно активное русскоязычное сообщество, которое влияет на политику добавления тех или иных особенностей и новых возможностей AstroMenace. 'LXF'&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Linux Format вердикт ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
'''Gentoo Linux 2007.0'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разработчик: ''Viewizard Games'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.viewizard.com www.viewizard.com]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно, в основном под свободными лицензиями''&amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Сюжет 2/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Графика 9/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Увлекательность 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Цена 9/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 8/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Скажем просто: затягивает.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Gentoo_2007.0</id>
		<title>LXF95:Gentoo 2007.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Gentoo_2007.0"/>
				<updated>2008-03-13T10:59:15Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Можно ли инсталлировать Gentoo, не имея учёной степени?  '''Нейл Ботвик''' ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Можно ли инсталлировать Gentoo, не имея учёной степени?  '''Нейл Ботвик''' пробует, хотя диссертаций не защищал.''&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Вкратце…|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Метадистрибутив на базе исходных текстов, предоставляющий пользователю полный контроль над системой.&lt;br /&gt;
*См.также: Linux from Scratch  или Sabayon Linux.|&lt;br /&gt;
Ширина=260px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Gentoo пользуется репутацией запредельного дистрибутива, интересного лишь охотникам за скоростью, выжимающим производительность из каждого цикла процессора до капли. Так ли это? Мы инсталлировали новейшую версию. &lt;br /&gt;
Конечно, особый метод инсталляции ПО Gentoo никуда не делся и в версии 2007.0. В отличие от большинства дистрибутивов, здесь пользователь во время инсталляции должен компилировать все программы из исходных текстов, а не устанавливать типовые пакеты, подготовленные разработчиками. Компиляция из исходников может показаться весьма сложной, но система управления пакетами Portage берет на себя заботу о деталях. Укажите имя пакета, который хотите установить, и она загрузит код со всеми его зависимостями, скомпилирует и инсталлирует готовую программу. В целом процесс не сложнее, чем установка пакетов на Debian, хотя, бесспорно, гораздо дольше.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Преимущество такого метода состоит в том, что вы получаете полный контроль над инсталляцией. Именно этот контроль, а не использование заумных флагов компилятора, придаёт Gentoo особую силу. USE-флагами отмечаются те свойства ПО, которые вы намерены использовать; удаляя ненужные, вы экономите место, избавляетесь от лишних зависимостей, сокращаете время загрузки программ и даже снижаете количество брешей в системе безопасности.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сборка собственного ядра также упростилась благодаря инструменту genkernel, которым пользуется инсталлятор; его можно применять и для компиляции ядра вручную. В запасниках Portage содержится около 12 000 пакетов, поэтому голодный паёк вам не грозит. &lt;br /&gt;
&lt;br /&gt;
=== Улучшения инсталлятора ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;По сравнению с прежними версиями установка Gentoo существенно упростилась. Для тех, кто желает знать, как работает система, оставлена прежняя текстовая процедура инсталляции,ускоренная наличием двоичных пакетов Стадии 3 (Stage 3) на инсталляционном диске. Но графическим инсталлятором пользоваться гораздо удобнее. Он был представлен еще в 2006.0, но страдал недомоганиями бета-статуса. Теперь все намного лучше: есть GTK-интерфейс, предоставляющий на выбор все доступные параметры при разумных умолчаниях. Добавлена функция локальной инсталляции – она работает так же, как и в большинстве других дистрибутивов, позволяя установить все доступное ПО с диска. Стандартный процесс инсталляции дает больше свободы, позволяя взять все необходимое из Интернета. Локальная инсталляция, конечно, быстрее, ибо загруженные пакеты нужно еще скомпилировать.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=Стадия 1, 2 или 3?|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Прежде инсталляция Gentoo представляла собой последовательность стадий. Стадия 1 включала все необходимое для загрузки системы, все остальное собиралось из исходников. Стадия 3 полностью уста- навливала базовую систему из прекомпилированных пакетов, что существенно сокращало время установки. Стадия 2 была чем-то про- межуточным. Теперь Стадия 3 стала стандартным (и единственным поддерживаемым) методом, поэтому время инсталляции Gentoo можно измерять чашками кофе, а не оборотами часовой стрелки. На DVD теперь есть пакеты GRP (Gentoo Reference Platform), двоичные пакеты ПО общего назначения.|&lt;br /&gt;
Ширина=260px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Продвинутый режим инсталляции дает безграничные возможности настроить (или угробить) вашу систему; есть и текстовый вариант. Этот режим может пригодиться на слабом компьютере, особенно при сетевой инсталляции. Есть возможность сохранять и загружать инсталляционный профиль для клонирования конфигурации на нескольких компьютерах.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Локальная инсталляция включает Gnome 2.16.2, KDE 3.5.5 и OpenOffice.org 2.1.0. Изучить Gentoo намного сложнее, чем другие дистрибутивы, но им проще управлять, благодаря дополнительному уровню контроля. Превосходная документация оказывает в этом неоценимую помощь. Но особый контроль означает и особую ответственность пользователя за свои действия – получив возможность усовершенствовать свою систему, вы получаете и шанс разрушить ее в таких изощренных формах, что пользователям Ubuntu даже и не снились.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Как можно сравнить Gentoo с другими дистрибутивами? Да никак! Только Linux From Scratch даст подобный уровень контроля, но при значительно больших усилиях. Часто вспоминают Sabayon Linux, ведь он основан на Gentoo. Но Sabayon – скорее иллюстрация возможностей Gentoo, чем реальный соперник.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы хотите полностью контролировать свою систему и готовы для этого потрудиться, то Gentoo – это ваш выбор. Тому, кто привык вставлять установочный диск и сразу же отправляться на просторы Сети, лучше будет взять обычный двоичный дистрибутив. ''LXF''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Linux Format вердикт ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
'''Gentoo Linux 2007.0'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разработчик: ''Gentoo Foundation'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: [http://www.gentoo.org www.gentoo.org]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''Бесплатно, в основном под свободными лицензиями''&amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Производительность 9/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Простота использования 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Документация 10/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Цена 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 9/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gentoo Linux 2007.0 Превосходный выбор для тех, кто готов потрудиться ради ОС, скроенной по свойму.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Yoggie_Gatekeeper_Pro</id>
		<title>LXF95:Yoggie Gatekeeper Pro</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Yoggie_Gatekeeper_Pro"/>
				<updated>2008-03-13T09:46:54Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;quot;Yoggie ставит Linux между ноутбуком и Сетью. Эта крошечная штучка легко влезает в карман, и битком набита защитными программами. Пробует '''Грэм Моррисон'''.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Вкратце…|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Маленькое встраиваемое Linux-устройство, используемое в качестве шлюза безопасности. Превосходно подходит для защиты удаленных сетевых подключений.&lt;br /&gt;
* Производитель: Yoggie Security Systems&lt;br /&gt;
* Сайт: [http://www.yoggie.com www.yoggie.com]&lt;br /&gt;
* Цена: $220|&lt;br /&gt;
Ширина=210px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы недавно видали Microsoft Windows, то, вероятно, заметили избыток защитного ПО, работающего на компьютере во время походов по Интернет. По самым скромным подсчетам, необходим брандмауэр, антивирусный сканер и какая нибудь защита от троянов. Все эти приложения съедают изрядную долю производительности процессора.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разработчики Yoggie считают, что нашли подходящее решение – поручить все эти трудоемкие задачи отдельному компьютеру, дезинфицирующему все поступившее из сети, не давая ему шансов навредить. Это решение воплотилось во встраиваемое Linux-устройство, которое легко помещается на ладони.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Под его черно-серой лоснящейся пластиковой поверхностью скрыты процессор Intel PCA 270 520 МГц и 128 МБ ОЗУ, обладающие мощностью Pentium’а III из далекого 1999 г. Но, в отличие от 1999, этот процессор выполняет стандартную версию BusyBox и Linux 2.6. Все это скрыто от глаз, поскольку единственное предназначение Yoggie – стоять на страже безопасности.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Разворачиваем USB-кабель ===&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=См. также:|&lt;br /&gt;
Содержание=А смотерть нечего. Лишь программное решение может обеспечить такую портативность.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Перед включением устройства нужно размотать USB-кабель, удобно обёрнутый вокруг пластикового корпуса. Если у вас Microsoft Windows XP или Vista, то USB-порт - это всё, что вам нужно. Подключите устройство к компьютеру и установите драйверы. Yogge поместит свой драйвер в самую глубь сетевого слоя, фильтруя данные в обоих направлениях до того, как они попадут на основную машину.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux-пользователям понадобится аппаратный эквивалент: два разъема RJ45, скрытые под USB-кабелем, образуют мост между Интернетом и вашей машиной. Это означает, что пользоваться встроенной беспроводной картой под Linux вы не сможете, хотя специальный Linux-драйвер для этого уже обещан.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Однако конечный результат не зависит от используемой ОС: Windows или Linux. Необработанные сетевые данные поступают в устройство и, прежде чем попасть в основной компьютер, фильтруются сквозь 12 преднастроенных защитных программ. Среди этих программ – детектор вторжения, брандмауэр, VPN, фильтр контента и антивирус Касперского, в основном используются прозрачные прокси для HTTP, POP и SNMP. Антивирус, на наш взгляд, вполне работо-   способен, умеет находить вирусы в упакован-ных вложениях, но вот вирусы, передаваемые через HTTPS, отловить не сможет, а ведь по этому протоколу в основном получают почту через web-интерфейс.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Включи и забудь ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux-пользователю понадобится подключить и USB-кабель, чтобы подать на устройство питание, а после этого подождать около 90 сек для загрузки Yoggie. Обещано обновление прошивки, которое сократит это время вдвое, но на самом деле это не суть важно, если только вы не рветесь очертя голову получить заветную почту. Когда синие индикаторы на передней панели устройства перестанут мигать, можно выходить в Интернет.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Устройство настраивается через опрятный и удобный web-интерфейс, и первое, что надо сделать – ввести лицензионный ключ, идущий в комплекте. Yoggie постоянно обновляется c загрузкой новых аппаратных баз и прошивок, в цену продукта включена стоимость годового обслуживания. В течение суток наши системные журналы зарегистрировали троекратное обновление антивирусных баз. Для графического отображения работы устройства широко используется Flash-анимация, каждая прореха в системе безопасности регистрируется и выводится на панель.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;По сравнению со среднестатистическим Linux, настройка политики безопасности Yoggie проста. IT-менеджер может даже приобрести у Yoggie Linux-сервер, чтобы распространить одну и ту же политику на целую эскадру ноутбуков: это отличный способ защитить свою сеть при удаленном доступе.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Короче, Yoggie – это успех. Устройство недорогое, купить его сможет даже постоянный пассажир авиалинии эконом-класса; и оно обеспечивает тот уровень душевного комфорта, которым может побаловать только Linux. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Linux Format вердикт ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
'''Yoggie Gatekeeper Pro'''&lt;br /&gt;
&lt;br /&gt;
* Производитель: Yoggie Security Systems &amp;lt;br&amp;gt;&lt;br /&gt;
* Сайт: [http://www.yoggie.com www.yoggie.com] &amp;lt;br&amp;gt;&lt;br /&gt;
* Цена: $220 &amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Функциональность 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Производительность 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Простота использования 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Цена 9/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 8/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обеспечивает безопасность даже в дороге, но дополнительный антивирус всё же необходим.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Yoggie_Gatekeeper_Pro</id>
		<title>LXF95:Yoggie Gatekeeper Pro</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Yoggie_Gatekeeper_Pro"/>
				<updated>2008-03-13T09:45:34Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;quot;Yoggie ставит Linux между ноутбуком и Сетью. Эта крошечная штучка легко влезает в карман, и битком набита защитными программами. Пробует '''Грэм Моррисон'''.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Вкратце…|&lt;br /&gt;
Содержание=&amp;amp;nbsp;&amp;amp;nbsp;Маленькое встраиваемое Linux-устройство, используемое в качестве шлюза безопасности. Превосходно подходит для защиты удаленных сетевых подключений.&lt;br /&gt;
* Производитель: Yoggie Security Systems&lt;br /&gt;
* Сайт: [http://www.yoggie.com www.yoggie.com]&lt;br /&gt;
* Цена: $220|&lt;br /&gt;
Ширина=210px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы недавно видали Microsoft Windows, то, вероятно, заметили избыток защитного ПО, работающего на компьютере во время походов по Интернет. По самым скромным подсчетам, необходим брандмауэр, антивирусный сканер и какая нибудь защита от троянов. Все эти приложения съедают изрядную долю производительности процессора.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разработчики Yoggie считают, что нашли подходящее решение – поручить все эти трудоемкие задачи отдельному компьютеру, дезинфицирующему все поступившее из сети, не давая ему шансов навредить. Это решение воплотилось во встраиваемое Linux-устройство, которое легко помещается на ладони.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Под его черно-серой лоснящейся пластиковой поверхностью скрыты процессор Intel PCA 270 520 МГц и 128 МБ ОЗУ, обладающие мощностью Pentium’а III из далекого 1999 г. Но, в отличие от 1999, этот процессор выполняет стандартную версию BusyBox и Linux 2.6. Все это скрыто от глаз, поскольку единственное предназначение Yoggie – стоять на страже безопасности.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Разворачиваем USB-кабель ===&lt;br /&gt;
{{Врезка|right|&lt;br /&gt;
Заголовок=См. также:|&lt;br /&gt;
Содержание=А смотерть нечего. Лишь программное решение может обеспечить такую портативность.|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Перед включением устройства нужно размотать USB-кабель, удобно обёрнутый вокруг пластикового корпуса. Если у вас Microsoft Windows XP или Vista, то USB-порт - это всё, что вам нужно. Подключите устройство к компьютеру и установите драйверы. Yogge поместит свой драйвер в самую глубь сетевого слоя, фильтруя данные в обоих направлениях до того, как они попадут на основную машину.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux-пользователям понадобится аппаратный эквивалент: два разъема RJ45, скрытые под USB-кабелем, образуют мост между Интернетом и вашей машиной. Это означает, что пользоваться встроенной беспроводной картой под Linux вы не сможете, хотя специальный Linux-драйвер для этого уже обещан.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Однако конечный результат не зависит от используемой ОС: Windows или Linux. Необработанные сетевые данные поступают в устройство и, прежде чем попасть в основной компьютер, фильтруются сквозь 12 преднастроенных защитных программ. Среди этих программ – детектор вторжения, брандмауэр, VPN, фильтр контента и антивирус Касперского, в основном используются прозрачные прокси для HTTP, POP и SNMP. Антивирус, на наш взгляд, вполне работо-   способен, умеет находить вирусы в упакован-ных вложениях, но вот вирусы, передаваемые через HTTPS, отловить не сможет, а ведь по этому протоколу в основном получают почту через web-интерфейс.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Включи и забудь ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux-пользователю понадобится подключить и USB-кабель, чтобы подать на устройство питание, а после этого подождать около 90 сек для загрузки Yoggie. Обещано обновление прошивки, которое сократит это время вдвое, но на самом деле это не суть важно, если только вы не рветесь очертя голову получить заветную почту. Когда синие индикаторы на передней панели устройства перестанут мигать, можно выходить в Интернет.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Устройство настраивается через опрятный и удобный web-интерфейс, и первое, что надо сделать – ввести лицензионный ключ, идущий в комплекте. Yoggie постоянно обновляется c загрузкой новых аппаратных баз и прошивок, в цену продукта включена стоимость годового обслуживания. В течение суток наши системные журналы зарегистрировали троекратное обновление антивирусных баз. Для графического отображения работы устройства широко используется Flash-анимация, каждая прореха в системе безопасности регистрируется и выводится на панель.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;По сравнению со среднестатистическим Linux, настройка политики безопасности Yoggie проста. IT-менеджер может даже приобрести у Yoggie Linux-сервер, чтобы распространить одну и ту же политику на целую эскадру ноутбуков: это отличный способ защитить свою сеть при удаленном доступе.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Короче, Yoggie – это успех. Устройство недорогое, купить его сможет даже постоянный пассажир авиалинии эконом-класса; и оно обеспечивает тот уровень душевного комфорта, которым может побаловать только Linux. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Linux Format вердикт ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Yoggie Gatekeeper Pro'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
'''Yoggie Gatekeeper Pro'''&lt;br /&gt;
&lt;br /&gt;
* Производитель: Yoggie Security Systems &amp;lt;br&amp;gt;&lt;br /&gt;
* Сайт: [http://www.yoggie.com www.yoggie.com] &amp;lt;br&amp;gt;&lt;br /&gt;
* Цена: $220 &amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Функциональность 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Производительность 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Простота использования 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Цена 9/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 8/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обеспечивает безопасность даже в дороге, но дополнительный антивирус всё же необходим.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Studio_to_Go_2</id>
		<title>LXF95:Studio to Go 2</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Studio_to_Go_2"/>
				<updated>2008-03-13T09:29:50Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''''Грэм Моррисон''' нашёл сверхоснащённую студию звукозаписи на CD, кот...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''''Грэм Моррисон''' нашёл сверхоснащённую студию звукозаписи на CD, которую можно всегда  носить с собой в ожидании музыкального вдохновения. Везёт!''&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Вкратце…|&lt;br /&gt;
Содержание=Linux-дистрибутив,  битком  набитый новейшим  аудио и  музыкальным ПО.  Среди свободных  альтернатив:  Ubuntu Studio, Agnula  и 64 Studio.&lt;br /&gt;
* Разработчик: Fervent Software&lt;br /&gt;
* Сайт: [http://www.studio-to-go.com www.studio-to-go.com]&lt;br /&gt;
* Цена: примерно ₤79.99 (ок. $160)|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
=== Studio To Go 2 ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux – прекрасный выбор для меломана:  здесь так много интересных и  разных музыкальных приложений, что  ваша музыка на другой ОС, вероятно, никогда  не достигнет такого звучания. Проблема одна:  для правильной работы системы необходимы  некоторые навыки работы в Linux – для среднего  музыканта непростая задача. К счастью,  есть Studio To Go, пакет лучших аудио-приложений  для Linux, уместившийся на единственном  CD, заранее усовершенствованный, преднастроенный  и предназначенный для работы  с большинством компьютерного и звукового  оборудования.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первую версию Studio To Go мы рассматривали  в [[LXF70]]; миновало два года, и после  долгого бета-тестирования вышла, наконец,  Studio To Go 2. За это время многое изменилось  в разработке ПО для аудио под Linux, и  STG 2 должна соответствовать последним веяниям  в области эффектов реального времени  и аудио-синтеза, чтобы удержать лидерство, а  заодно и оправдать довольно высокую цену.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первое, что бросается в глаза – улучшенная  поддержка оборудования: большее количество  профессиональных аудиокарт стало  работать без дополнительной настройки. У  нас не возникло проблем ни со встроенным  аудиочипсетом, ни с M-Audio Audiophile 2496.  При первом появлении рабочего стола вас  встретит уведомление о том, какая аудиокарта  была настроена. Данная версия поддерживает  даже различные USB и FireWire устройства,  благодаря наличию Freebob, свободной комбинации  прошивки и драйверов для внешних  устройств. Чтобы убедиться в совместимости  с вашей аппаратурой, можно попробовать  демо-версию STG 2.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сердце системы – впечатляющий  Rosegarden, лучший из известных на Linux  аудио/MIDI секвенсоров (мы рассматривали  версию 1.5 в [[LXF92]]). Один из основных разработчиков  Rosegarden, Крис Кэннем [Chris  Cannam], заодно принадлежит и к тем парням,  что стоят за Studio To Go 2.&amp;lt;br&amp;gt; &lt;br /&gt;
=== Синтез идей ===&lt;br /&gt;
{{Врезка|&lt;br /&gt;
Заголовок=Лучшее ПО|&lt;br /&gt;
Содержание=&lt;br /&gt;
*Приложения&lt;br /&gt;
**Rosegarden 1.5.5&lt;br /&gt;
**Ardour 2.0.2&lt;br /&gt;
**Sonic  Visualiser 1.0&lt;br /&gt;
**Free Music  Instrument Tuner  0.96.7&lt;br /&gt;
**Jamin 0.95&lt;br /&gt;
*Синтезаторы&lt;br /&gt;
**Fluidsynth 1.0.7&lt;br /&gt;
**Hydrogen 0.9.3&lt;br /&gt;
**Aeolus 0.6.6&lt;br /&gt;
**Bristol 0.9.5&lt;br /&gt;
**LMMS 0.2.1&lt;br /&gt;
*Эффекты&lt;br /&gt;
**FreeWheeling 0.5.5&lt;br /&gt;
**Freqtweak 0.6.1&lt;br /&gt;
**SooperLooper 1.0.8&lt;br /&gt;
**Ecamegapedal 0.4.4&lt;br /&gt;
**TerminatorX 3.82&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Отличительные черты STG 2 – эффекты и  синтез. Наиболее интересная добавка – ссылка  на папку рабочего стола под названием  VST Plugins. VST (Virtual Studio Technology)  от Steinberg – это основа эффектов реального  времени и синтеза для Windows и OS X,  именно она вдохновила революцию в звукозаписи,  усеяв eBay устаревшей аппаратурой:  программные эквиваленты ее вытеснили.  Щелчок на одной из библиотек в папке VST  вызывает Wine (поскольку библиотеки пришли  из Windows) и автоматически встраивает  вызванный модуль в аудио-сервер Jack. После  этого можно конвейером передавать аудио  в любое Jack-совместимое аудио-приложение  и получать его обратно (Jack–совместимо  почти все).&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;STG 2 включает также лучшую из виденных  нами подборку «родных» Linux-модулей,  и это превосходно иллюстрирует, насколько  продвинулось создание эффектов реального  времени на нашей любимой ОС. Взгляните  хотя бы на синтезаторный эмулятор Bristol или набор эффектов Creox – и поймёте, что  мы имеем в виду.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbspКак Linux-пользователи, мы привыкли  пользоваться бесплатным ПО. Но в мире написания  музыки и звукозаписи пакет, обеспечивающий  аудио/MIDI-секвенсирование, лучшие  из известных аудиоэффектов, аудио-редактирование,  запись CD, сэмплинг, синтезирование  и спектральный анализ, может стоить  запредельно, так что цена под $160 вполне  оправдана. Во многих отношениях STG 2  занимает лидирующие позиции и обладает  таким количеством прекрасно интегрированных  нововведений, что непонятно даже, с чего  начать. LXF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Linux Format вердикт ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
'''STUDIO TO GO 2'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производитель: ''Fervent Software'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: ''www.studio-to-go.com'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''₤79.99'' (ок. ''$160'') &amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Функциональность 10/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Производительность 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Простота использования 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Цена 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 8/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Могучий пакет королевского размаха. Позаботьтесь о просторных апартаментах для него на своём жёстком диске.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95</id>
		<title>LXF95</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95"/>
				<updated>2008-03-13T09:25:50Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Linux Format новости ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:GPLv3 – новая эпоха|GPLv3 – новая эпоха]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Министерство информационных технологий и связи Российской Федерации реабилитируется|Министерство информационных технологий и связи Российской Федерации реабилитируется]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Mandriva Corporate: скромные, но все-таки успехи|Mandriva Corporate: скромные, но все-таки успехи]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Особенности национальной радиофикации|Особенности национальной радиофикации]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:«Форматирование» по-азиатски|«Форматирование» по-азиатски]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Встречаем Slackware 12.0|Встречаем Slackware 12.0]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Apple, повелитель принтеров|Apple, повелитель принтеров]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Горячие новости из Якутии|Горячие новости из Якутии]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Неделя открытых технологий в Новосибирске|Неделя открытых технологий в Новосибирске]]&lt;br /&gt;
&lt;br /&gt;
Пытаясь попасть на это мероприятие, Евгений Балдин простоял час в автомобильной пробке Не напрасно ли? Как выясняется, нет.&lt;br /&gt;
&lt;br /&gt;
=== Обзоры ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Yoggie Gatekeeper Pro|Yoggie Gatekeeper Pro]]&lt;br /&gt;
&lt;br /&gt;
Подключите эту штучку к своему Windows - компьютеру или Linux-ноутбуку — и спите спокойно.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Studio to Go 2|Studio to Go 2]]&lt;br /&gt;
&lt;br /&gt;
Всеобъемлющая коллекция инструментов для работы со звуком на одном-единственном CD.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Gentoo 2007.0|Gentoo 2007.0]]&lt;br /&gt;
&lt;br /&gt;
Используйте этот дистрибутив, чтобы выжать последнюю каплю скорости из своей системы.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:AstroMenace|AstroMenace]]&lt;br /&gt;
&lt;br /&gt;
Космическая стрелялка — от отечественного разработчика, задаром и для Linux/Windows? Будет во что поиграть и в офисе, и дома!&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Ballistics|Ballistics]]&lt;br /&gt;
&lt;br /&gt;
Отвлечешься на наносекунду — и останется от тебя только мокрое пятнышко... на асфальте.&lt;br /&gt;
&lt;br /&gt;
=== Сравнение ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Почтовые клиенты|Почтовые клиенты]]&lt;br /&gt;
&lt;br /&gt;
Opera Mail &amp;lt;br&amp;gt;&lt;br /&gt;
Mutt &amp;lt;br&amp;gt;&lt;br /&gt;
Kontact (Kmail) &amp;lt;br&amp;gt;&lt;br /&gt;
Evolution &amp;lt;br&amp;gt;&lt;br /&gt;
Thunderbird &amp;lt;br&amp;gt;&lt;br /&gt;
Balsa &amp;lt;br&amp;gt;&lt;br /&gt;
GNUMail&lt;br /&gt;
&lt;br /&gt;
=== Спецрепортаж ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Справочник Железо-2007|Справочник Железо-2007]]&lt;br /&gt;
&lt;br /&gt;
Хит-парад дружественных к Linux устройств!&lt;br /&gt;
&lt;br /&gt;
=== А также ... ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:В защиту GPL3|В защиту GPL3]]&lt;br /&gt;
&lt;br /&gt;
Linux Format беседует с Ричардом Столлмэном.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Ни секунды простоя|Ни секунды простоя]]&lt;br /&gt;
&lt;br /&gt;
Как работает техподдержка крупных корпоративных дистрибутивов?&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Тур по файловой системе Linux|Тур по файловой системе Linux]]&lt;br /&gt;
&lt;br /&gt;
Вы никогда больше не потеряетесь в этих каталогах.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Податливый Nginx|Податливый Nginx]]&lt;br /&gt;
&lt;br /&gt;
Вылепите из этого малютки сервер по своему вкусу.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:DistroWatch|DistroWatch]]&lt;br /&gt;
&lt;br /&gt;
Ладислав Боднар восхищается Slackware в лице VectorLinux 5.8, записывает звук на Ubuntu Studio 7.04 и любуется Flamelix 2.0.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Интервью LXF|Интервью LXF]]&lt;br /&gt;
&lt;br /&gt;
Джим МакКиллан и Рон Колсернян — о Linux Terminal Server Project.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Что за штука|Что за штука]]&lt;br /&gt;
&lt;br /&gt;
Flash, AJAX и Silverlight встречают нового соперника в лице Java FX.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Мнение|Мнение]]&lt;br /&gt;
&lt;br /&gt;
Разработчик Samba Джереми Эллисон начинает собственную рубрику с рассказа о заавном происшевствии за ужином.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Ответы|Ответы]]&lt;br /&gt;
&lt;br /&gt;
В этом месяце: Apache, MythTV, Squid и многое другое.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Школа LXF|Школа LXF]]&lt;br /&gt;
&lt;br /&gt;
Александр Поносов: авторская рубрика на страницах LXF!&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Через месяц|Через месяц]]&lt;br /&gt;
&lt;br /&gt;
Вот над чем мы сейчас работаем.&lt;br /&gt;
&lt;br /&gt;
=== Учебники ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Совет месяца|Совет месяца]]&lt;br /&gt;
&lt;br /&gt;
Разрешаем зависимости. Компилируйте программы без головной боли&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:F-Spot|F-Spot]]&lt;br /&gt;
&lt;br /&gt;
Ваши фото в Сети. Удивите других, заставив Flickr и Picasa плясать под свою дудку&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Akelos|Akelos]]&lt;br /&gt;
&lt;br /&gt;
Меньше кода – больше дела Динамичная разработка с новой средой метапрограммирования на базе PHP.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Cron|Cron]]&lt;br /&gt;
                                                                            &lt;br /&gt;
Автоматизируй Linux. Магия! Заставьте систему работать, как часы, выполняя ее обслуживание по часам.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Mono|Mono]]&lt;br /&gt;
&lt;br /&gt;
Простой доступ к данным. XML имеет свои ограничения — и наступает момент, когда оптимальным решением становится база данных.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:DCOP|DCOP]]&lt;br /&gt;
&lt;br /&gt;
Моддинг KDE. На вашем рабочем столе слишком много открытых окон? Простой DCOP-сценарий все исправит!&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:GTK+|GTK+]]&lt;br /&gt;
&lt;br /&gt;
Переход на C++. Объектная структура GTK+ заслуживает объектного языка программирования. Или лучше все же остаться на C?&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Java EE|Java EE]]&lt;br /&gt;
&lt;br /&gt;
Web 2.0 своими руками. Узнайте как работает AJAX – базовая технология Web 2.0 и научитесь использовать ее из Java EE.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Cinelerra|Cinelerra]]&lt;br /&gt;
&lt;br /&gt;
«Клипы» и сессии. Как удобно расположить материалы на одном единственном монтажном столе.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Препринт|Препринт]]&lt;br /&gt;
&lt;br /&gt;
Подготовка иллюстраций. От верстки в LaTeX до напечатанной книги – шаг первый.&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Studio_to_Go</id>
		<title>LXF95:Studio to Go</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Studio_to_Go"/>
				<updated>2008-03-13T09:21:37Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''''Грэм Моррисон''' нашёл сверхоснащённую студию звукозаписи на CD, которую можно всегда  носить с собой в ожидании музыкального вдохновения. Везёт!''&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Вкратце…|&lt;br /&gt;
Содержание=Linux-дистрибутив,  битком  набитый новейшим  аудио и  музыкальным ПО.  Среди свободных  альтернатив:  Ubuntu Studio, Agnula  и 64 Studio.&lt;br /&gt;
* Разработчик: Fervent Software&lt;br /&gt;
* Сайт: [http://www.studio-to-go.com www.studio-to-go.com]&lt;br /&gt;
* Цена: примерно ₤79.99 (ок. $160)|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
=== Studio To Go 2 ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux – прекрасный выбор для меломана:  здесь так много интересных и  разных музыкальных приложений, что  ваша музыка на другой ОС, вероятно, никогда  не достигнет такого звучания. Проблема одна:  для правильной работы системы необходимы  некоторые навыки работы в Linux – для среднего  музыканта непростая задача. К счастью,  есть Studio To Go, пакет лучших аудио-приложений  для Linux, уместившийся на единственном  CD, заранее усовершенствованный, преднастроенный  и предназначенный для работы  с большинством компьютерного и звукового  оборудования.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первую версию Studio To Go мы рассматривали  в [[LXF70]]; миновало два года, и после  долгого бета-тестирования вышла, наконец,  Studio To Go 2. За это время многое изменилось  в разработке ПО для аудио под Linux, и  STG 2 должна соответствовать последним веяниям  в области эффектов реального времени  и аудио-синтеза, чтобы удержать лидерство, а  заодно и оправдать довольно высокую цену.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первое, что бросается в глаза – улучшенная  поддержка оборудования: большее количество  профессиональных аудиокарт стало  работать без дополнительной настройки. У  нас не возникло проблем ни со встроенным  аудиочипсетом, ни с M-Audio Audiophile 2496.  При первом появлении рабочего стола вас  встретит уведомление о том, какая аудиокарта  была настроена. Данная версия поддерживает  даже различные USB и FireWire устройства,  благодаря наличию Freebob, свободной комбинации  прошивки и драйверов для внешних  устройств. Чтобы убедиться в совместимости  с вашей аппаратурой, можно попробовать  демо-версию STG 2.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сердце системы – впечатляющий  Rosegarden, лучший из известных на Linux  аудио/MIDI секвенсоров (мы рассматривали  версию 1.5 в [[LXF92]]). Один из основных разработчиков  Rosegarden, Крис Кэннем [Chris  Cannam], заодно принадлежит и к тем парням,  что стоят за Studio To Go 2.&amp;lt;br&amp;gt; &lt;br /&gt;
=== Синтез идей ===&lt;br /&gt;
{{Врезка|&lt;br /&gt;
Заголовок=Лучшее ПО|&lt;br /&gt;
Содержание=&lt;br /&gt;
*Приложения&lt;br /&gt;
**Rosegarden 1.5.5&lt;br /&gt;
**Ardour 2.0.2&lt;br /&gt;
**Sonic  Visualiser 1.0&lt;br /&gt;
**Free Music  Instrument Tuner  0.96.7&lt;br /&gt;
**Jamin 0.95&lt;br /&gt;
*Синтезаторы&lt;br /&gt;
**Fluidsynth 1.0.7&lt;br /&gt;
**Hydrogen 0.9.3&lt;br /&gt;
**Aeolus 0.6.6&lt;br /&gt;
**Bristol 0.9.5&lt;br /&gt;
**LMMS 0.2.1&lt;br /&gt;
*Эффекты&lt;br /&gt;
**FreeWheeling 0.5.5&lt;br /&gt;
**Freqtweak 0.6.1&lt;br /&gt;
**SooperLooper 1.0.8&lt;br /&gt;
**Ecamegapedal 0.4.4&lt;br /&gt;
**TerminatorX 3.82&lt;br /&gt;
}}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Отличительные черты STG 2 – эффекты и  синтез. Наиболее интересная добавка – ссылка  на папку рабочего стола под названием  VST Plugins. VST (Virtual Studio Technology)  от Steinberg – это основа эффектов реального  времени и синтеза для Windows и OS X,  именно она вдохновила революцию в звукозаписи,  усеяв eBay устаревшей аппаратурой:  программные эквиваленты ее вытеснили.  Щелчок на одной из библиотек в папке VST  вызывает Wine (поскольку библиотеки пришли  из Windows) и автоматически встраивает  вызванный модуль в аудио-сервер Jack. После  этого можно конвейером передавать аудио  в любое Jack-совместимое аудио-приложение  и получать его обратно (Jack–совместимо  почти все).&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;STG 2 включает также лучшую из виденных  нами подборку «родных» Linux-модулей,  и это превосходно иллюстрирует, насколько  продвинулось создание эффектов реального  времени на нашей любимой ОС. Взгляните  хотя бы на синтезаторный эмулятор Bristol или набор эффектов Creox – и поймёте, что  мы имеем в виду.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbspКак Linux-пользователи, мы привыкли  пользоваться бесплатным ПО. Но в мире написания  музыки и звукозаписи пакет, обеспечивающий  аудио/MIDI-секвенсирование, лучшие  из известных аудиоэффектов, аудио-редактирование,  запись CD, сэмплинг, синтезирование  и спектральный анализ, может стоить  запредельно, так что цена под $160 вполне  оправдана. Во многих отношениях STG 2  занимает лидирующие позиции и обладает  таким количеством прекрасно интегрированных  нововведений, что непонятно даже, с чего  начать. LXF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Linux Format вердикт ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
'''STUDIO TO GO 2'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производитель: ''Fervent Software'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: ''www.studio-to-go.com'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''₤79.99'' (ок. ''$160'') &amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Функциональность 10/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Производительность 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Простота использования 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Цена 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 8/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Могучий пакет королевского размаха. Позаботьтесь о просторных апартаментах для него на своём жёстком диске.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Studio_to_Go</id>
		<title>LXF95:Studio to Go</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Studio_to_Go"/>
				<updated>2008-03-13T09:05:42Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''''Грэм Моррисон''' нашёл сверхоснащённую студию звукозаписи на CD, которую можно всегда  носить с собой в ожидании музыкального вдохновения. Везёт!''&lt;br /&gt;
{{Врезка|left|&lt;br /&gt;
Заголовок=Вкратце…|&lt;br /&gt;
Содержание=Linux-дистрибутив,  битком  набитый новейшим  аудио и  музыкальным ПО.  Среди свободных  альтернатив:  Ubuntu Studio, Agnula  и 64 Studio.&lt;br /&gt;
* Разработчик: Fervent Software&lt;br /&gt;
* Сайт: [http://www.studio-to-go.com www.studio-to-go.com]&lt;br /&gt;
* Цена: примерно ₤79.99 (ок. $160)|&lt;br /&gt;
Ширина=250px&lt;br /&gt;
}}&lt;br /&gt;
=== Studio To Go 2 ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux – прекрасный выбор для меломана:  здесь так много интересных и  разных музыкальных приложений, что  ваша музыка на другой ОС, вероятно, никогда  не достигнет такого звучания. Проблема одна:  для правильной работы системы необходимы  некоторые навыки работы в Linux – для среднего  музыканта непростая задача. К счастью,  есть Studio To Go, пакет лучших аудио-приложений  для Linux, уместившийся на единственном  CD, заранее усовершенствованный, преднастроенный  и предназначенный для работы  с большинством компьютерного и звукового  оборудования.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первую версию Studio To Go мы рассматривали  в [[LXF70]]; миновало два года, и после  долгого бета-тестирования вышла, наконец,  Studio To Go 2. За это время многое изменилось  в разработке ПО для аудио под Linux, и  STG 2 должна соответствовать последним веяниям  в области эффектов реального времени  и аудио-синтеза, чтобы удержать лидерство, а  заодно и оправдать довольно высокую цену.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первое, что бросается в глаза – улучшенная  поддержка оборудования: большее количество  профессиональных аудиокарт стало  работать без дополнительной настройки. У  нас не возникло проблем ни со встроенным  аудиочипсетом, ни с M-Audio Audiophile 2496.  При первом появлении рабочего стола вас  встретит уведомление о том, какая аудиокарта  была настроена. Данная версия поддерживает  даже различные USB и FireWire устройства,  благодаря наличию Freebob, свободной комбинации  прошивки и драйверов для внешних  устройств. Чтобы убедиться в совместимости  с вашей аппаратурой, можно попробовать  демо-версию STG 2.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сердце системы – впечатляющий  Rosegarden, лучший из известных на Linux  аудио/MIDI секвенсоров (мы рассматривали  версию 1.5 в [[LXF92]]). Один из основных разработчиков  Rosegarden, Крис Кэннем [Chris  Cannam], заодно принадлежит и к тем парням,  что стоят за Studio To Go 2.&amp;lt;br&amp;gt; &lt;br /&gt;
=== Синтез идей ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Отличительные черты STG 2 – эффекты и  синтез. Наиболее интересная добавка – ссылка  на папку рабочего стола под названием  VST Plugins. VST (Virtual Studio Technology)  от Steinberg – это основа эффектов реального  времени и синтеза для Windows и OS X,  именно она вдохновила революцию в звукозаписи,  усеяв eBay устаревшей аппаратурой:  программные эквиваленты ее вытеснили.  Щелчок на одной из библиотек в папке VST  вызывает Wine (поскольку библиотеки пришли  из Windows) и автоматически встраивает  вызванный модуль в аудио-сервер Jack. После  этого можно конвейером передавать аудио  в любое Jack-совместимое аудио-приложение  и получать его обратно (Jack–совместимо  почти все).&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;STG 2 включает также лучшую из виденных  нами подборку «родных» Linux-модулей,  и это превосходно иллюстрирует, насколько  продвинулось создание эффектов реального  времени на нашей любимой ОС. Взгляните  хотя бы на синтезаторный эмулятор Bristol или набор эффектов Creox – и поймёте, что  мы имеем в виду.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbspКак Linux-пользователи, мы привыкли  пользоваться бесплатным ПО. Но в мире написания  музыки и звукозаписи пакет, обеспечивающий  аудио/MIDI-секвенсирование, лучшие  из известных аудиоэффектов, аудио-редактирование,  запись CD, сэмплинг, синтезирование  и спектральный анализ, может стоить  запредельно, так что цена под $160 вполне  оправдана. Во многих отношениях STG 2  занимает лидирующие позиции и обладает  таким количеством прекрасно интегрированных  нововведений, что непонятно даже, с чего  начать. LXF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Linux Format вердикт ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;text-align: left; width: 100%;&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
'''STUDIOTO GO 2'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производитель: ''Fervent Software'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: ''www.studio-to-go.com'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''₤79.99'' (ок. ''$160'') &amp;lt;br&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Функциональность 10/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Производительность 8/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Простота использования 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Цена 7/10&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 8/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Могучий пакет королевского размаха. Позаботьтесь о просторных апартаментах для него на своём жёстком диске.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Studio_to_Go</id>
		<title>LXF95:Studio to Go</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Studio_to_Go"/>
				<updated>2008-03-13T08:42:43Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Грэм Моррисон нашел сверхоснащенную студию звукозаписи на CD, котору...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Грэм Моррисон нашел сверхоснащенную студию звукозаписи на CD, которую можно всегда  носить с собой в ожидании музыкального вдохновения. Везет!''&lt;br /&gt;
==== Вкратце… ====&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Живой Linuxдистрибутив,  битком  набитый новейшим  аудио и  музыкальным ПО.  Среди свободных  альтернатив:  Ubuntu Studio, Agnula  и 64 Studio.&lt;br /&gt;
=== Studio To Go 2 ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux – прекрасный выбор для меломана:  здесь так много интересных и  разных музыкальных приложений, что  ваша музыка на другой ОС, вероятно, никогда  не достигнет такого звучания. Проблема одна:  для правильной работы системы необходимы  некоторые навыки работы в Linux – для среднего  музыканта непростая задача. К счастью,  есть Studio To Go, пакет лучших аудио-приложений  для Linux, уместившийся на единственном  CD, заранее усовершенствованный, преднастроенный  и предназначенный для работы  с большинством компьютерного и звукового  оборудования.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первую версию Studio To Go мы рассматривали  в [[LXF70]]; миновало два года, и после  долгого бета-тестирования вышла, наконец,  Studio To Go 2. За это время многое изменилось  в разработке ПО для аудио под Linux, и  STG 2 должна соответствовать последним веяниям  в области эффектов реального времени  и аудио-синтеза, чтобы удержать лидерство, а  заодно и оправдать довольно высокую цену.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Первое, что бросается в глаза – улучшенная  поддержка оборудования: большее количество  профессиональных аудиокарт стало  работать без дополнительной настройки. У  нас не возникло проблем ни со встроенным  аудиочипсетом, ни с M-Audio Audiophile 2496.  При первом появлении рабочего стола вас  встретит уведомление о том, какая аудиокарта  была настроена. Данная версия поддерживает  даже различные USB и FireWire устройства,  благодаря наличию Freebob, свободной комбинации  прошивки и драйверов для внешних  устройств. Чтобы убедиться в совместимости  с вашей аппаратурой, можно попробовать  демо-версию STG 2.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сердце системы – впечатляющий  Rosegarden, лучший из известных на Linux  аудио/MIDI секвенсоров (мы рассматривали  версию 1.5 в [[LXF92]]). Один из основных разработчиков  Rosegarden, Крис Кэннем [Chris  Cannam], заодно принадлежит и к тем парням,  что стоят за Studio To Go 2.&amp;lt;br&amp;gt; &lt;br /&gt;
==== Синтез идей ==== &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Отличительные черты STG 2 – эффекты и  синтез. Наиболее интересная добавка – ссылка  на папку рабочего стола под названием  VST Plugins. VST (Virtual Studio Technology)  от Steinberg – это основа эффектов реального  времени и синтеза для Windows и OS X,  именно она вдохновила революцию в звукозаписи,  усеяв eBay устаревшей аппаратурой:  программные эквиваленты ее вытеснили.  Щелчок на одной из библиотек в папке VST  вызывает Wine (поскольку библиотеки пришли  из Windows) и автоматически встраивает  вызванный модуль в аудио-сервер Jack. После  этого можно конвейером передавать аудио  в любое Jack-совместимое аудио-приложение  и получать его обратно (Jack–совместимо  почти все).&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;STG 2 включает также лучшую из виденных  нами подборку «родных» Linux-модулей,  и это превосходно иллюстрирует, насколько  продвинулось создание эффектов реального  времени на нашей любимой ОС. Взгляните  хотя бы на синтезаторный эмулятор Bristol или набор эффектов Creox – и поймёте, что  мы имеем в виду.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbspКак Linux-пользователи, мы привыкли  пользоваться бесплатным ПО. Но в мире написания  музыки и звукозаписи пакет, обеспечивающий  аудио/MIDI-секвенсирование, лучшие  из известных аудиоэффектов, аудио-редактирование,  запись CD, сэмплинг, синтезирование  и спектральный анализ, может стоить  запредельно, так что цена под $160 вполне  оправдана. Во многих отношениях STG 2  занимает лидирующие позиции и обладает  таким количеством прекрасно интегрированных  нововведений, что непонятно даже, с чего  начать. LXF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
'''Studio To Go 2'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производитель: ''Fervent Software'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: ''www.studio-to-go.com'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''79.99'' (ок. ''$160'') &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функциональность                   10/10 &amp;lt;br&amp;gt;&lt;br /&gt;
Производительность                 8/10 &amp;lt;br&amp;gt;&lt;br /&gt;
Простота использования             7/10 &amp;lt;br&amp;gt;&lt;br /&gt;
Цена                               7/10 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''РЕЙТИНГ 8/10'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Могучий пакет королевского размаха. Позаботьтесь о просторных апартаментах для него на своём жёстком диске.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Yoggie_Gatekeeper_Pro</id>
		<title>LXF95:Yoggie Gatekeeper Pro</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Yoggie_Gatekeeper_Pro"/>
				<updated>2008-03-12T09:32:15Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;quot;Yoggie ставит Linux между ноутбуком и Сетью. Эта крошечная штучка легко влезает в карман...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;quot;Yoggie ставит Linux между ноутбуком и Сетью. Эта крошечная штучка легко влезает в карман, и битком набита защитными программами. Пробует Грэм Моррисон.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Вкратце... ====&lt;br /&gt;
&lt;br /&gt;
Маленькое встраиваемое Linux-устройство, используемое в качестве шлюза безопасности. Превосходно для защиты удаленных сетевых подключений.&lt;br /&gt;
&lt;br /&gt;
===== См. также: =====&lt;br /&gt;
&lt;br /&gt;
А смотерть нечего. Лишь программное решение может обеспечить такую портативность.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Yoggie Gatekeeper Pro ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Если вы недавно видали Microsoft Windows, то, вероятно, заметили избыток защитного ПО, работающего на компьютере во время походов по Интернет. По самым скромным подсчетам, необходим брандмауэр, антивирусный сканер и какая нибудь защита от троянов. Все эти приложения съедают изрядную долю производительности процессора.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Разработчики Yoggie считают, что нашли подходящее решение – поручить все эти трудоемкие задачи отдельному компьютеру, дезинфицирующему все поступившее из сети, не давая ему шансов навредить. Это решение воплотилось во встраиваемое Linux-устройство, которое легко помещается на ладони.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Под его черно-серой лоснящейся пластиковой поверхностью скрыты процессор Intel PCA 270 520 МГц и 128 МБ ОЗУ, обладающие мощностью Pentium’а III из далекого 1999 г. Но, в отличие от 1999, этот процессор выполняет стандартную версию BusyBox и Linux 2.6. Все это скрыто от глаз, поскольку единственное предназначение Yoggie – стоять на страже безопасности.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Разворачиваем USB-кабель =====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Перед включением устройства нужно размотать USB-кабель, удобно обёрнутый вокруг пластикового корпуса. Если у вас Microsoft Windows XP или Vista, то USB-порт - это всё, что вам нужно. Подключите устройство к компьютеру и установите драйверы. Yogge поместит свой драйвер в самую глубь сетевого слоя, фильтруя данные в обоих направлениях до того, как они попадут на основную машину.&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux-пользователям понадобится аппаратный эквивалент: два разъема RJ45, скрытые под USB-кабелем, образуют мост между Интернетом и вашей машиной. Это означает, что пользоваться встроенной беспроводной картой под Linux вы не сможете, хотя специальный Linux-драйвер для этого уже обещан.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Однако конечный результат не зависит от используемой ОС: Windows или Linux. Необработанные сетевые данные поступают в устройство и, прежде чем попасть в основной компьютер, фильтруются сквозь 12 преднастроенных защитных программ. Среди этих программ – детектор вторжения, брандмауэр, VPN, фильтр контента и антивирус Касперского, в основном используются прозрачные прокси для HTTP, POP и SNMP. Антивирус, на наш взгляд, вполне работо-   способен, умеет находить вирусы в упакован-ных вложениях, но вот вирусы, передаваемые через HTTPS, отловить не сможет, а ведь по этому протоколу в основном получают почту через web-интерфейс.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Включи и забудь =====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Linux-пользователю понадобится подключить и USB-кабель, чтобы подать на устройство питание, а после этого подождать около 90 сек для загрузки Yoggie. Обещано обновление прошивки, которое сократит это время вдвое, но на самом деле это не суть важно, если только вы не рветесь очертя голову получить заветную почту. Когда синие индикаторы на передней панели устройства перестанут мигать, можно выходить в Интернет.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Устройство настраивается через опрятный и удобный web-интерфейс, и первое, что надо сделать – ввести лицензионный ключ, идущий в комплекте. Yoggie постоянно обновляется c загрузкой новых аппаратных баз и прошивок, в цену продукта включена стоимость годового обслуживания. В течение суток наши системные журналы зарегистрировали троекратное обновление антивирусных баз. Для графического отображения работы устройства широко используется Flash-анимация, каждая прореха в системе безопасности регистрируется и выводится на панель.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;По сравнению со среднестатистическим Linux, настройка политики безопасности Yoggie проста. IT-менеджер может даже приобрести у Yoggie Linux-сервер, чтобы распространить одну и ту же политику на целую эскадру ноутбуков: это отличный способ защитить свою сеть при удаленном доступе.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Короче, Yoggie – это успех. Устройство недорогое, купить его сможет даже постоянный пассажир авиалинии эконом-класса; и оно обеспечивает тот уровень душевного комфорта, которым может побаловать только Linux. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Linux Format вердикт ====&lt;br /&gt;
&lt;br /&gt;
'''Yoggie Gatekeeper Pro'''&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Производитель: ''Yoggie Security Systems'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Сайт: ''www.yoggie.com'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Цена: ''$220'' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функциональность                   8/10 &amp;lt;br&amp;gt;&lt;br /&gt;
Производительность                 7/10 &amp;lt;br&amp;gt;&lt;br /&gt;
Простота использования             8/10 &amp;lt;br&amp;gt;&lt;br /&gt;
Цена                               9/10 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обеспечивает безопасность даже в дороге, но дополнительный антивирус все же необходим.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%9D%D0%B5%D0%B4%D0%B5%D0%BB%D1%8F_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B9_%D0%B2_%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D0%B8%D0%B1%D0%B8%D1%80%D1%81%D0%BA%D0%B5</id>
		<title>LXF95:Неделя открытых технологий в Новосибирске</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%9D%D0%B5%D0%B4%D0%B5%D0%BB%D1%8F_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B9_%D0%B2_%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D0%B8%D0%B1%D0%B8%D1%80%D1%81%D0%BA%D0%B5"/>
				<updated>2008-03-12T00:16:12Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Неделя открытых технологий в Новосибирске ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда я ехал из Академ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Неделя открытых технологий в Новосибирске ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда я ехал из Академгородка, расположенного на окраине города, в центр на мастер-класс в Новосибирском государственном техническом университете (НГТУ [http://info.nstu.ru]), цивилизация дала о себе знать посредством часовой пробки на дороге. Я был не единственным, кто задержался в пути. К первому слушанию основной докладчик – директор Линуксцентра Павел Фролов также не успел. Всему виной туман. Поэтому первое собрание вышло немного скомканным.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Принимающая сторона, группа LinuxNSK [http://www.linuxnsk.ru] и партнер Линуксцентра фирма «Связь Комплект» в лице Алексея Рожанкова, узнавшего о существовании GNU/Linux всего месяц назад, постаралась выправить положение. Первый мастер-класс был направлен на представителей бизнеса, то есть фактически на тех, кто читает ЛОР [http://www.linux.org.ru] и работает администраторами. Возрастной и гендерный состав весьма полносоответствовал ЛОР-срезу.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Презентация вышла весьма стандартной, оживило ее разве что предложение Антона Банщикова (инициатора «Неделя технологий GNU/Linux и Open-Source в Новосибирске») продемонстрировать работоспособность 1С под GNU/Linux. Лично я с пользой провел время, договорившись о трех «историях успеха», поприставав с разными вопросами к декану Факультета прикладной математики и информатики Борису Юрьевичу Лемешко, давшему терминальное помещение под проведение мастер-классов, и поболтав с ребятами из LinuxNSK. Мне понравилась эта группа с ее желанием что-то реально сделать. Пока на их счету перевод одной школы на открытое программное обеспечение, и у меня сложилось мнение, что это только начало. После мастер-классов силами LinuxNSK планируется проведение бесплатных ознакомительных курсов. Думается, подобное хобби – весьма достойное занятие для молодых людей, причем оно вполне может оказаться в будущем бесценным в смысле приобретенного опыта. Лучший способ разобраться с какой-то областью знаний – это попытаться передать эти знания другим людям. Только так можно досконально разобраться со всеми нюансами.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Примерно через час после окончания лекции появился основной докладчик Павел Фролов, сразу приступив к монтажу наглядной агитации, которая ко всем прочим достоинствам очень органично прикрыла часть окна. Это значительно улучшило качество картинки от проектора на экране. Погода была замечательной, и солнце светило на полную катушку – где там был туман, я так и не понял. На следующий день я уже слушал доклад таким, каким он должен был быть. Аудитория поменялась – сидели серьезные дяди, которые хотели серьезных решений, так как в ВУЗах (второй день был посвящен образованию) с программным обеспечением в последнее время возникли не менее серьезные проблемы.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вкратце выступление Павла Фролова можно охарактеризовать как рекламу решений Mandriva Linux (подробности о предложениях Линуксцентра можно узнать на его сайте [http://www.linuxcenter.ru/]. Собственно говоря, эта цель и не скрывалась, а трехмерный куб и «желеобразные окна» от Compiz на презентационном компьютере ей весьма способствовали. Со слов докладчика, дистрибутив Mandriva был выбран не случайно, а с учетом консультаций с потенциальными клиентами. Основными требованиями были «дружелюбность для пользователя» и качественная поддержка оборудования. Среди потенциальных клиентов рассматривались и федеральные структуры, то есть от геополитического фактора уйти не удалось. Российские дистрибутивы также учитывались при выборе, но отпали в основном по причине отсутствия тесных связей с производителями оборудования.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Системной поддержки GNU/Linux на территории России практически нет, и активная поддержка Mandriva со стороны Линуксцентра вполне может оказаться решением этой проблемы. Да, можно купить коробку, например, RHEL и получать поддержку по электронной почте или по телефону, но электронная почта будет на английском языке, а звонок будет за границу, и языком общения будет отнюдь не русский. Да, действительно всесторонне развитый «Homo Adminus» обязан знать английский язык в совершенстве, но в любом случае задавать вопросы на родном языке дорогого стоит, так как позволяет думать собственно над вопросом, а не над его произнесением. Кроме того, местная поддержка волей-неволей будет вынуждена изучить местные же особенности и потребности, что облегчает решение локальных проблем.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Конкретно школам и ВУЗам посулили возможность купить академическую лицензию примерно за 30 тыс. руб в год, которая даетполную поддержку от Линуксцентра и право на использование дистрибутивов внутри учебного заведения, а также дома всем его учащимся и преподавателям. Наличие возможности покупки официальной лицензии на программное обеспечение, то есть бумаги с синей печатью, должно оградить от потенциальных проверок со стороны компетентных органов. Вопрос о проверках в учебных заведениях вызвал неподдельный интерес со стороны слушателей. Тема на сегодня очень актуальна, и полное решение проблемы пока отсутствует. Павел Фролов сообщил о случаях, когда под давлением администрации с компьютеров, поставленным по федеральной программе информатизации, удалялось просто все программное обеспечение, что, естественно, приводило компьютерные классы в негодность. Поэтому в использовании открытого программного обеспечения многие из присутствующих надеялись увидеть вероятный выход. Вероятный, потому что далеко не всем этот выход нравится своей непривычностью. Жизнь учителя и так непроста, и любое дополнительное усложнение ему вовсе не в радость.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Некоторым из присутствующих очень хотелось рассказать о своих проблемах, но указать на корень всех зол не очень получилось. Было предложено сообщать обо всех имеющихся препятствиях на пути использования свободного программного обеспечения местного, областного и уж тем более федерального уровня по электронной почте лично Павлу frolov@mezon.ru. Со стороны докладчика ощущалось очевидное недопонимание базовых принципов, по которым строится организация школьного образования, и обратная связь для ликвидации этого недопонимания, по его уверению, будет использоваться с энтузиазмом.&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Так же выяснилось, что Академическая программа не распространяется на Академические центры, но было обещано, что в случае возникновения конкретных вопросов данная проблема будет обязательно рассмотрена. У меня как сотрудника РАН такие вопросы определенно возникнут – буду следить за развитием событий.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Третий и последний день мастер-класса не был ориентирован на какую-то определенную аудиторию, поэтому собрались просто желающие. Некоторые из них пришли во второй раз. После стандартной оды дистрибутиву Mandriva с клятвенными заверениями, что этот дистрибутив в Россию пришел всерьез и надолго, наступило время конкретных вопросов и ответов, часть из которых с моей точки зрения была довольно интересной.&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Любопытно было узнать, что Mandriva Flash (полноценный дистрибутив GNU/Linux, позволяющий более-менее комфортно работать «с» и сохранять свои файлы «на» USB-брелок) – это целиком российская разработка, сделанная в Санкт-Петербургском центре Mandriva, финансируемом Линуксцентром. Актуальной выглядит инициатива Линуксцентра по законодательному признанию GNU и BSD лицензий в России. Разговор касался не только GNU/Linux – было уделено внимание дистанционным технологиям [http://www.intuit.ru/] и детским обучающим программам [http://www.tirnet.ru/]. Не знаю как другим, а мне понравилась Flash-игра «построить пингвиненку домик» – не так уж это и легко.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Значительная часть времени пришлась на рассказ про журнал Linux Format и тем сложностям, с которыми столкнулся Линуксцентр, когда попытался издать качественный журнал о GNU/Linux в России. Был призыв выписывать журнал, а не покупать в магазинах – в этом случае одна единица журнала и для читателя выходит дешевле, и самим издателям достается больше. К концу года пообещали организовать собственную вменяемую подписку на электронную версию журнала.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Интересно отметить, что почти никто из пришедших не спешил попробовать установленный на терминалах дистрибутив Mandriva. То есть, пришли люди, которые уже знали, что такое GNU/Linux, и им не было необходимости проверять слова докладчика. Гораздо больший интерес представляли сами эти люди. Такое ощущение, что системным администраторам, которые составляли значительную часть от участников, достаточно тяжело организовываться в группы, но все же интерес к собеседникам, как правило, высказывался совершенно неподдельный.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Я не пожалел, что сходил на это мероприятие. Конечно, многое можно было сделать лучше, но все мы крепки «задним умом». В любом случае было приятно увидеть представителя организации, реально занимающегося инновационной деятельностью в классическом понимании этого слова. Ну и «междусобойчики», которые традиционно возникали после каждого из мастер-классов, были достаточно наполнены, в том числе и в эмоциональном плане.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Побольше бы таких собраний, хороших и разных!&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%93%D0%BE%D1%80%D1%8F%D1%87%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8_%D0%B8%D0%B7_%D0%AF%D0%BA%D1%83%D1%82%D0%B8%D0%B8</id>
		<title>LXF95:Горячие новости из Якутии</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%93%D0%BE%D1%80%D1%8F%D1%87%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8_%D0%B8%D0%B7_%D0%AF%D0%BA%D1%83%D1%82%D0%B8%D0%B8"/>
				<updated>2008-03-12T00:15:56Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Горячие новости из Якутии ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В информационнм центре при Президенте ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Горячие новости из Якутии ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В информационнм центре при Президенте Республики Саха прошли мастер-классы, посвященные свободному ПО, на которых присутствовали представители бизнеса, власти и образовательных структур Якутии. В качестве «наглядного пособия» использовалась операционная система Mandriva Discovery 2007 (одним из организаторов мероприятия выступил российский филиал Mandriva.ru), которую слушатели могли свободно устанавливать на свои компьютеры. Примечательно, что результаты данного мероприятия оказались на удивление оперативными: в учебном классе Информационного центра при Президенте Республики Саха на всех компьютерах был установлен дистрибутив Mandriva Linux 2007 Spring в качестве второй операционной системы для постоянного использования в дальнейшем. Одновременно была достигнута договоренность об открытии центров компетенции в Информационном центре при Президенте Республики Саха и в Якутском Государственном Университете. Также организаторы мастер-класса успели принять участие в телемосте с министром образования Якутии, где среди прочих вопросов прошло обсуждение проблем лицензирования ПО в школах республики. Пожалуй, на сегодняшний день это один из наиболее плодотворных итогов обычных, казалось бы, разговоров на тему свободного ПО. [http://www.linuxcenter.ru/lib/press/mandriva_saha.phtml]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Apple,_%D0%BF%D0%BE%D0%B2%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BE%D0%B2</id>
		<title>LXF95:Apple, повелитель принтеров</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Apple,_%D0%BF%D0%BE%D0%B2%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BE%D0%B2"/>
				<updated>2008-03-12T00:15:40Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Apple, повелитель принтеров ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В середине июля автор популярной в UNIX с...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Apple, повелитель принтеров ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В середине июля автор популярной в UNIX системы печати Common UNIX Printing System (CUPS) и по совместительству глава компании Easy Software Products Майкл Свит [Michael R. Sweet] обнародовал подробности своей сделки с компанией Apple Inc. Суть в том, что в феврале текущего года производитель Mac’ов и iPod’ов приобрел у Свита все права на исходный код CUPS, тем самым взяв под свое покровительство самую популярную подсистему печати, входящее по умолчанию практически во все дистрибутивы GNU/Linux. Названия “CUPS”, “Common UNIX Printing System” и логотип CUPS также стали зарегистрированными товарными знаками Apple Inc. Сам Свит при этом принят в штат компании в качестве ведущего разработчика CUPS. Сумма сделки, естественно, не разглашается, но от объяснений по поводу дальнейшей судьбы системы печати, распространяемой под лицензиями GPL/LGPL, автор проекта решил не отказываться, и постарался максимально успокоить заволновавшееся сообщество. Ко всеобщему удовлетворению, код CUPS по-прежнему будет распространяться под вышеназванными лицензиями. Это позволит разработчикам дистрибутивов и дальше включать данный пакет в состав своих программных продуктов. Что же касается торговых марок, то их использование также остается свободным, за вычетом случаев их включения в производные программные продукты – в этом случае будет достаточно получить письменное разрешение от Apple Inc. Теперь о выгоде. С автором CUPS все понятно – он получил вполне реальные денежные средства, которые, надеемся, помогут Свиту с удвоенной энергией совершенствовать свое детище. Что же касается сообщества Free Software, то его представители надеются получить в лице Apple Inc. нового влиятельного покровителя свободного ПО, в числе которых уже значатся такие имена, как IBM, Hewlett-Packard и Novell. Также не исключено, что хорошая техническая и экспериментальная база «яблочной» компании позволит значительно улучшить систему печати в операционных системах GNU/Linux. [http://www.cups.org/articles.php?L475]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%92%D1%81%D1%82%D1%80%D0%B5%D1%87%D0%B0%D0%B5%D0%BC_Slackware_12.0</id>
		<title>LXF95:Встречаем Slackware 12.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%92%D1%81%D1%82%D1%80%D0%B5%D1%87%D0%B0%D0%B5%D0%BC_Slackware_12.0"/>
				<updated>2008-03-12T00:15:31Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Встречаем Slackware 12.0 ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Бессменный руководитель проекта Slackware Патрик ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Встречаем Slackware 12.0 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Бессменный руководитель проекта Slackware Патрик Фолькердинг [Patrick J. Volkerding] в июле порадовал своих поклонников долгожданной новой версией дистрибутива Slackware 12.0. В числе наиболее явных изменений можно отметить переход на использование ядра Linux 2.6.21, внедрение системы HAL ( Hardware Abstraction Layer), включение в состав дистрибутива набора свободных компиляторов GCC 4.1.2. В качестве графических оболочек предлагается KDE 3.5.7 и XFCE 4.4.1. Следует отметить, что данный релиз содержит большое число наиболее свежего программного обеспечения, в числе которого библиотеки glibc 2.5, графический сервер X.Org 7.2.0, Apache 2.2.4, PHP 5.2.3, Perl 5.8.8, Python 2.5.1, Ruby 1.8.6, Subversion 1.4.4, SeaMonkey 1.1.2, Firefox 2.0.0.4, Thunderbird 2.0.0.4, Pidgin 2.0.2 (бывший Gaim), The GIMP 2.2.15 и многое другое [http://www.slackware.com/announce/12.0.php].&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%C2%AB%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%C2%BB_%D0%BF%D0%BE-%D0%B0%D0%B7%D0%B8%D0%B0%D1%82%D1%81%D0%BA%D0%B8</id>
		<title>LXF95:«Форматирование» по-азиатски</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%C2%AB%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%C2%BB_%D0%BF%D0%BE-%D0%B0%D0%B7%D0%B8%D0%B0%D1%82%D1%81%D0%BA%D0%B8"/>
				<updated>2008-03-12T00:13:48Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === «Форматирование» по-азиатски ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Очередные новости на тему сопернич...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== «Форматирование» по-азиатски ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Очередные новости на тему соперничества двух открытых форматов – ODF и OOXML – приходят в последнее время из азиатского региона. OpenDocument Format Alliance объявил о том, что рекомендации по внедрению открытого международного стандарта ODF приняты правительством Японии и доступны для ознакомления на web-сайте Министерства экономики, торговли и промышленности. Власти данной страны уже давно  роявляли интерес к открытым стандартам и свободному ПО, что подтверждают многочисленные проекты, поддерживаемые или инициированные правительством Японии. Теперь же переход на открытые международные стандарты стал общенациональной программой, в процессе реализации которой будут полностью ликвидированы потенциальные нестыковки во взаимопонимании как различных ведомств, так и граждан страны со своими властями.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Практически одновременно и компания Microsoft, продвигающая свой открытый формат документов OOXML, объявила об определенных успехах в азиатском регионе. В частности, редмондский гигант заключил соглашение с крупнейшим разработчиком Linux-систем японской компанией Turbolinux, в рамках которого азиатский партнер примет активное участие в разработке ODF-OOXML конвертера, а также будет способствовать активному продвижению формата OOXML на японском и китайском рынке ПО. Задача, в общем, понятна: чем большее распространение получит данный формат, тем проще будет уговаривать японских и китайских бизнесменов на покупку пакета офисных приложений Microsoft Office, который, собственно, и приносит редмондскому гиганту основную прибыль.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%BD%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%80%D0%B0%D0%B4%D0%B8%D0%BE%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8</id>
		<title>LXF95:Особенности национальной радиофикации</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%BD%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%80%D0%B0%D0%B4%D0%B8%D0%BE%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8"/>
				<updated>2008-03-12T00:13:17Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Особенности национальной радиофикации ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Маниакальная склонность ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Особенности национальной радиофикации ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Маниакальная склонность американских чиновников к привычке раскладывать по правовым полочкам каждую мелочь уже давно вызывает улыбку у большинства европейских жителей. И очередной пример, продемонстрированный Федеральной комиссией связи США (FCC), тому подтверждение. Данная солидная организация подготовила новые инструкции, запрещающие разработчикам устройств, использующих радиочастоты, раскрывать исходный код соответствующего программного обеспечения. Основная причина – желание чиновников ограничить возможности потенциальных террористов по перенастройке устройств на использование запрещенных или ведомственных радиочастот. Нельзя сказать, что подобная идея является чем-то новым: прошивки для большинства беспроводных сетевых карт и так поставляются только в двоичном виде, что как раз объясняется желанием затруднить изменение частоты, на которой работает устройство. Однако, последствия подобной перестраховки Федеральной комиссии могут довольно неприятным образом сказаться на компаниях, использующих в своих изделиях открытое ПО, а число подобных производителей сегодня достаточно велико: дело в том, что практически все мобильные телефоны и адаптеры беспроводной связи работают именно с радиочастотами, что автоматически подразумевает следование инструкциям чиновников. При этом представители федеральной комиссии совершенно не учитывают тот факт, что обычный пользователь сотового телефона или оборудованного WiFi ноутбука и так не страдает большим желанием править исходные тексты встроенного ПО, а для преступников данное ограничение не имеет решающего значения. Впрочем, если же основной целью чиновников было создать дополнительные трудности на пути внедрения открытого ПО, то тогда данные инструкции выглядят вполне логично.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:Mandriva_Corporate:_%D1%81%D0%BA%D1%80%D0%BE%D0%BC%D0%BD%D1%8B%D0%B5,_%D0%BD%D0%BE_%D0%B2%D1%81%D0%B5-%D1%82%D0%B0%D0%BA%D0%B8_%D1%83%D1%81%D0%BF%D0%B5%D1%85%D0%B8</id>
		<title>LXF95:Mandriva Corporate: скромные, но все-таки успехи</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:Mandriva_Corporate:_%D1%81%D0%BA%D1%80%D0%BE%D0%BC%D0%BD%D1%8B%D0%B5,_%D0%BD%D0%BE_%D0%B2%D1%81%D0%B5-%D1%82%D0%B0%D0%BA%D0%B8_%D1%83%D1%81%D0%BF%D0%B5%D1%85%D0%B8"/>
				<updated>2008-03-12T00:09:34Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Mandriva Corporate: скромные, но все-таки успехи ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Постоянная нацеленность ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Mandriva Corporate: скромные, но все-таки успехи ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Постоянная нацеленность компании Mandrakesoft на рынок настольных систем приводила к тому, что в новостях, касающихся корпоративного сектора, ее имя практически не упоминалось. Но, похоже, ситуация постепенно меняется: вслед за выпущенной в прошлом году операционной системой Mandriva Corporate Server 4.0 разработчики одного из самых популярных дистрибутивов к лету текущего года подготовили и версию Mandriva Corporate Desktop 4.0, предназначенную для установки на рабочие машины крупных коммерческих предприятий и организаций. Одним из основных преимуществ программных продуктов данной линейки могут служить перешедшие по наследству от персональных версий операционных систем Mandriva хорошо развитые графические средства настройки и управления, а также удобный стильный интерфейс. Данный фактор может помочь корпоративным версиям дистрибутивов Mandriva в продвижении на рынок – программная продукция признанного лидера в данном секторе компании Red Hat особыми красотами не блещет, предлагая пользователям надежный, но немного аскетичный в плане внешнего оформления инструментарий. Впрочем, успешность программного продукта определяет не красота интерфейса, а востребованность на рынке. Что ж, в этом плане у Mandriva тоже есть определенные достижения, хотя и более скромные, чем у конкурентов в лице Red Hat и Novell. В частности, Министерство сельского хозяйства и рыболовства Франции выбрало серверный вариант Mandriva Corporate Server 4.0 для осуществления миграции на свободное ПО. Программа рассчитана на два года, в течение которых около 400 серверов министерства будут переведены с Windows NT на данную операционную систему. Одновременно Mandriva берет на себя всю работу по технической поддержке своего ПО и обучению персонала. В общей сложности планируется, что более двухсот работников министерства получат навыки работы и управления данным решением в авторизованных центрах обучения Mandriva. Стоит также отметить, что планы Mandriva по продвижению своих корпоративных версий не ограничиваются пределами родной Франции: вслед за российским филиалом в июле текущего года открылось еще одно представительство компании – на этот раз в Великобритании. Данные шаги говорят о том, что в планах Mandriva вопросам завоевания корпоративного сектора рынка уделяется немаловажное значение. И это можно только приветствовать: корпоративный потребитель так же, как и обычные домашние пользователи, должен иметь свободу выбора.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:%D0%9C%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D0%B5%D1%80%D1%81%D1%82%D0%B2%D0%BE_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D1%85_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B9_%D0%B8_%D1%81%D0%B2%D1%8F%D0%B7%D0%B8_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%BE%D0%B9_%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D1%80%D0%B5%D0%B0%D0%B1%D0%B8%D0%BB%D0%B8%D1%82%D0%B8%D1%80%D1%83%D0%B5%D1%82%D1%81%D1%8F</id>
		<title>LXF95:Министерство информационных технологий и связи Российской Федерации реабилитируется</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:%D0%9C%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D0%B5%D1%80%D1%81%D1%82%D0%B2%D0%BE_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D1%85_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B9_%D0%B8_%D1%81%D0%B2%D1%8F%D0%B7%D0%B8_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%BE%D0%B9_%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D1%80%D0%B5%D0%B0%D0%B1%D0%B8%D0%BB%D0%B8%D1%82%D0%B8%D1%80%D1%83%D0%B5%D1%82%D1%81%D1%8F"/>
				<updated>2008-03-12T00:08:48Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Министерство информационных технологий и связи Российской Федерации реабилитируется ===  &amp;lt;div style=&amp;quot;text-...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Министерство информационных технологий и связи Российской Федерации реабилитируется ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Неутомимый депутат Госдумы РФ Виктор Алкснис, ставший в последнее время своеобразным представителем и защитником интересов свободного ПО в парламентских коридорах, в начале июля опубликовал в сети официальный ответ Министерства информационных технологий и связи на думский запрос относительно позиции данного ведомства по отношению к созданию отечественной операционной системы на базе Linux. Ко всеобщему удивлению, весьма подробный ответ, развернувшийся на 15 страниц, показал, что Мининформсвязи не только поддерживает идею создания российской операционной системы, но и активно занимается реализацией этого проекта. В документе подробно рассматриваются все возможные кандидатуры на отечественную «ось», начиная от полусекретных разработок для ФСБ и Вооруженных cил РФ и заканчивая молодыми публичными проектами, пока только набирающими определенный вес в сообществе. Примечательно, что практически все дистрибутивы в своей основе содержат код операционной системы Red Hat: в список клонов входят ведомственные МСВС (Мобильная Система Вооруженных Сил), Атликс (используется в ФСБ) и Yanux, а также «гражданские» ASPLinux и другие (всего шесть вариантов). И лишь один дистрибутив AltLinux оказался достаточно «возмужавшим», чтобы содержать собственный репозиторий Сизифус (получивший недавно, кстати, заслуженное признание от международного сообщества). Впрочем, несмотря на довольно внушительный список, чиновники пока не видят реального кандидата, готового к широкомасштабному внедрению на всей территории России. Помочь в скорейшем появлении подобной разработки и призвана программа Мининформсвязи, которая помимо вопросов создания операционной системы подразумевает и продвижение открытого международного стандарта формата документов ODF в официальном документообороте [http://www.v-alksnis2.livejournal.com/42625.html]. &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95</id>
		<title>LXF95</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95"/>
				<updated>2008-03-12T00:08:02Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Linux Format новости ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:GPLv3 – новая эпоха|GPLv3 – новая эпоха]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Министерство информационных технологий и связи Российской Федерации реабилитируется|Министерство информационных технологий и связи Российской Федерации реабилитируется]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Mandriva Corporate: скромные, но все-таки успехи|Mandriva Corporate: скромные, но все-таки успехи]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Особенности национальной радиофикации|Особенности национальной радиофикации]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:«Форматирование» по-азиатски|«Форматирование» по-азиатски]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Встречаем Slackware 12.0|Встречаем Slackware 12.0]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Apple, повелитель принтеров|Apple, повелитель принтеров]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Горячие новости из Якутии|Горячие новости из Якутии]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Неделя открытых технологий в Новосибирске|Неделя открытых технологий в Новосибирске]]&lt;br /&gt;
&lt;br /&gt;
Пытаясь попасть на это мероприятие, Евгений Балдин простоял час в автомобильной пробке Не напрасно ли? Как выясняется, нет.&lt;br /&gt;
&lt;br /&gt;
=== Обзоры ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Yoggie Gatekeeper Pro|Yoggie Gatekeeper Pro]]&lt;br /&gt;
&lt;br /&gt;
Подключите эту штучку к своему Windows - компьютеру или Linux-ноутбуку — и спите спокойно.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Studio to Go|Studio to Go]]&lt;br /&gt;
&lt;br /&gt;
Всеобъемлющая коллекция инструментов для работы со звуком на одном-единственном CD.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Gentoo 2007.0|Gentoo 2007.0]]&lt;br /&gt;
&lt;br /&gt;
Используйте этот дистрибутив, чтобы выжать последнюю каплю скорости из своей системы.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:AstroMenace|AstroMenace]]&lt;br /&gt;
&lt;br /&gt;
Космическая стрелялка — от отечественного разработчика, задаром и для Linux/Windows? Будет во что поиграть и в офисе, и дома!&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Ballistics|Ballistics]]&lt;br /&gt;
&lt;br /&gt;
Отвлечешься на наносекунду — и останется от тебя только мокрое пятнышко... на асфальте.&lt;br /&gt;
&lt;br /&gt;
=== Сравнение ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Почтовые клиенты|Почтовые клиенты]]&lt;br /&gt;
&lt;br /&gt;
Opera Mail &amp;lt;br&amp;gt;&lt;br /&gt;
Mutt &amp;lt;br&amp;gt;&lt;br /&gt;
Kontact (Kmail) &amp;lt;br&amp;gt;&lt;br /&gt;
Evolution &amp;lt;br&amp;gt;&lt;br /&gt;
Thunderbird &amp;lt;br&amp;gt;&lt;br /&gt;
Balsa &amp;lt;br&amp;gt;&lt;br /&gt;
GNUMail&lt;br /&gt;
&lt;br /&gt;
=== Спецрепортаж ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Справочник Железо-2007|Справочник Железо-2007]]&lt;br /&gt;
&lt;br /&gt;
Хит-парад дружественных к Linux устройств!&lt;br /&gt;
&lt;br /&gt;
=== А также ... ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:В защиту GPL3|В защиту GPL3]]&lt;br /&gt;
&lt;br /&gt;
Linux Format беседует с Ричардом Столлмэном.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Ни секунды простоя|Ни секунды простоя]]&lt;br /&gt;
&lt;br /&gt;
Как работает техподдержка крупных корпоративных дистрибутивов?&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Тур по файловой системе Linux|Тур по файловой системе Linux]]&lt;br /&gt;
&lt;br /&gt;
Вы никогда больше не потеряетесь в этих каталогах.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Податливый Nginx|Податливый Nginx]]&lt;br /&gt;
&lt;br /&gt;
Вылепите из этого малютки сервер по своему вкусу.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:DistroWatch|DistroWatch]]&lt;br /&gt;
&lt;br /&gt;
Ладислав Боднар восхищается Slackware в лице VectorLinux 5.8, записывает звук на Ubuntu Studio 7.04 и любуется Flamelix 2.0.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Интервью LXF|Интервью LXF]]&lt;br /&gt;
&lt;br /&gt;
Джим МакКиллан и Рон Колсернян — о Linux Terminal Server Project.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Что за штука|Что за штука]]&lt;br /&gt;
&lt;br /&gt;
Flash, AJAX и Silverlight встречают нового соперника в лице Java FX.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Мнение|Мнение]]&lt;br /&gt;
&lt;br /&gt;
Разработчик Samba Джереми Эллисон начинает собственную рубрику с рассказа о заавном происшевствии за ужином.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Ответы|Ответы]]&lt;br /&gt;
&lt;br /&gt;
В этом месяце: Apache, MythTV, Squid и многое другое.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Школа LXF|Школа LXF]]&lt;br /&gt;
&lt;br /&gt;
Александр Поносов: авторская рубрика на страницах LXF!&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Через месяц|Через месяц]]&lt;br /&gt;
&lt;br /&gt;
Вот над чем мы сейчас работаем.&lt;br /&gt;
&lt;br /&gt;
=== Учебники ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Совет месяца|Совет месяца]]&lt;br /&gt;
&lt;br /&gt;
Разрешаем зависимости. Компилируйте программы без головной боли&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:F-Spot|F-Spot]]&lt;br /&gt;
&lt;br /&gt;
Ваши фото в Сети. Удивите других, заставив Flickr и Picasa плясать под свою дудку&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Akelos|Akelos]]&lt;br /&gt;
&lt;br /&gt;
Меньше кода – больше дела Динамичная разработка с новой средой метапрограммирования на базе PHP.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Cron|Cron]]&lt;br /&gt;
                                                                            &lt;br /&gt;
Автоматизируй Linux. Магия! Заставьте систему работать, как часы, выполняя ее обслуживание по часам.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Mono|Mono]]&lt;br /&gt;
&lt;br /&gt;
Простой доступ к данным. XML имеет свои ограничения — и наступает момент, когда оптимальным решением становится база данных.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:DCOP|DCOP]]&lt;br /&gt;
&lt;br /&gt;
Моддинг KDE. На вашем рабочем столе слишком много открытых окон? Простой DCOP-сценарий все исправит!&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:GTK+|GTK+]]&lt;br /&gt;
&lt;br /&gt;
Переход на C++. Объектная структура GTK+ заслуживает объектного языка программирования. Или лучше все же остаться на C?&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Java EE|Java EE]]&lt;br /&gt;
&lt;br /&gt;
Web 2.0 своими руками. Узнайте как работает AJAX – базовая технология Web 2.0 и научитесь использовать ее из Java EE.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Cinelerra|Cinelerra]]&lt;br /&gt;
&lt;br /&gt;
«Клипы» и сессии. Как удобно расположить материалы на одном единственном монтажном столе.&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:Препринт|Препринт]]&lt;br /&gt;
&lt;br /&gt;
Подготовка иллюстраций. От верстки в LaTeX до напечатанной книги – шаг первый.&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95</id>
		<title>LXF95</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95"/>
				<updated>2008-03-11T23:26:54Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Linux Format новости ===&lt;br /&gt;
&lt;br /&gt;
*[[LXF95:GPLv3 – новая эпоха|GPLv3 – новая эпоха]]&lt;br /&gt;
&lt;br /&gt;
*[[Министерство информационных технологий и связи Российской Федерации реабилитируется]]&lt;br /&gt;
&lt;br /&gt;
*[[Mandriva Corporate: скромные, но все-таки успехи.]]&lt;br /&gt;
&lt;br /&gt;
*[[Особенности национальной радиофикации.]]&lt;br /&gt;
&lt;br /&gt;
*[[«Форматирование» по-азиатски]]&lt;br /&gt;
&lt;br /&gt;
*[[Встречаем Slackware 12.0]]&lt;br /&gt;
&lt;br /&gt;
*[[Apple, повелитель принтеров]]&lt;br /&gt;
&lt;br /&gt;
*[[Горячие новости из Якутии]]&lt;br /&gt;
&lt;br /&gt;
*[[Неделя открытых технологий в Новосибирске]]&lt;br /&gt;
&lt;br /&gt;
Пытаясь попасть на это мероприятие, Евгений Балдин простоял час в автомобильной пробке Не напрасно ли? Как выясняется, нет.&lt;br /&gt;
&lt;br /&gt;
=== Обзоры ===&lt;br /&gt;
&lt;br /&gt;
*[[Yoggie Gatekeeper Pro]]&lt;br /&gt;
&lt;br /&gt;
Подключите эту штучку к своему Windows - компьютеру или Linux-ноутбуку — и спите спокойно.&lt;br /&gt;
&lt;br /&gt;
*[[Studio to Go]]&lt;br /&gt;
&lt;br /&gt;
Всеобъемлющая коллекция инструментов для работы со звуком на одном-единственном CD.&lt;br /&gt;
&lt;br /&gt;
*[[Gentoo 2007.0]]&lt;br /&gt;
&lt;br /&gt;
Используйте этот дистрибутив, чтобы выжать последнюю каплю скорости из своей системы.&lt;br /&gt;
&lt;br /&gt;
*[[AstroMenace]]&lt;br /&gt;
&lt;br /&gt;
Космическая стрелялка — от отечественного разработчика, задаром и для Linux/Windows? Будет во что поиграть и в офисе, и дома!&lt;br /&gt;
&lt;br /&gt;
*[[Ballistics]]&lt;br /&gt;
&lt;br /&gt;
Отвлечешься на наносекунду — и останется от тебя только мокрое пятнышко... на асфальте.&lt;br /&gt;
&lt;br /&gt;
=== Сравнение ===&lt;br /&gt;
&lt;br /&gt;
*[[Почтовые клиенты]]&lt;br /&gt;
&lt;br /&gt;
Opera Mail &amp;lt;br&amp;gt;&lt;br /&gt;
Mutt &amp;lt;br&amp;gt;&lt;br /&gt;
Kontact (Kmail) &amp;lt;br&amp;gt;&lt;br /&gt;
Evolution &amp;lt;br&amp;gt;&lt;br /&gt;
Thunderbird &amp;lt;br&amp;gt;&lt;br /&gt;
Balsa &amp;lt;br&amp;gt;&lt;br /&gt;
GNUMail&lt;br /&gt;
&lt;br /&gt;
=== Спецрепортаж ===&lt;br /&gt;
&lt;br /&gt;
*[[Справочник Железо-2007]]&lt;br /&gt;
&lt;br /&gt;
Хит-парад дружественных к Linux устройств!&lt;br /&gt;
&lt;br /&gt;
=== А также ... ===&lt;br /&gt;
&lt;br /&gt;
*[[В защиту GPL3]]&lt;br /&gt;
&lt;br /&gt;
Linux Format беседует с Ричардом Столлмэном.&lt;br /&gt;
&lt;br /&gt;
*[[Ни секунды простоя]]&lt;br /&gt;
&lt;br /&gt;
Как работает техподдержка крупных корпоративных дистрибутивов?&lt;br /&gt;
&lt;br /&gt;
*[[Тур по файловой системе Linux]]&lt;br /&gt;
&lt;br /&gt;
Вы никогда больше не потеряетесь в этих каталогах.&lt;br /&gt;
&lt;br /&gt;
*[[Податливый Nginx]]&lt;br /&gt;
&lt;br /&gt;
Вылепите из этого малютки сервер по своему вкусу.&lt;br /&gt;
&lt;br /&gt;
*[[DistroWatch]]&lt;br /&gt;
&lt;br /&gt;
Ладислав Боднар восхищается Slackware в лице VectorLinux 5.8, записывает звук на Ubuntu Studio 7.04 и любуется Flamelix 2.0.&lt;br /&gt;
&lt;br /&gt;
*[[Интервью LXF]]&lt;br /&gt;
&lt;br /&gt;
Джим МакКиллан и Рон Колсернян — о Linux Terminal Server Project.&lt;br /&gt;
&lt;br /&gt;
*[[Что за штука]]&lt;br /&gt;
&lt;br /&gt;
Flash, AJAX и Silverlight встречают нового соперника в лице Java FX.&lt;br /&gt;
&lt;br /&gt;
*[[Мнение]]&lt;br /&gt;
&lt;br /&gt;
Разработчик Samba Джереми Эллисон начинает собственную рубрику с рассказа о заавном происшевствии за ужином.&lt;br /&gt;
&lt;br /&gt;
*[[Ответы]]&lt;br /&gt;
&lt;br /&gt;
В этом месяце: Apache, MythTV, Squid и многое другое.&lt;br /&gt;
&lt;br /&gt;
*[[Школа LXF]]&lt;br /&gt;
&lt;br /&gt;
Александр Поносов: авторская рубрика на страницах LXF!&lt;br /&gt;
&lt;br /&gt;
*[[Через месяц]]&lt;br /&gt;
&lt;br /&gt;
Вот над чем мы сейчас работаем.&lt;br /&gt;
&lt;br /&gt;
=== Учебники ===&lt;br /&gt;
&lt;br /&gt;
*[[Совет месяца]]&lt;br /&gt;
&lt;br /&gt;
Разрешаем зависимости. Компилируйте программы без головной боли&lt;br /&gt;
&lt;br /&gt;
*[[F-Spot]]&lt;br /&gt;
&lt;br /&gt;
Ваши фото в Сети. Удивите других, заставив Flickr и Picasa плясать под свою дудку&lt;br /&gt;
&lt;br /&gt;
*[[Akelos]]&lt;br /&gt;
&lt;br /&gt;
Меньше кода – больше дела Динамичная разработка с новой средой метапрограммирования на базе PHP.&lt;br /&gt;
&lt;br /&gt;
*[[Cron]]&lt;br /&gt;
                                                                            &lt;br /&gt;
Автоматизируй Linux. Магия! Заставьте систему работать, как часы, выполняя ее обслуживание по часам.&lt;br /&gt;
&lt;br /&gt;
*[[Mono]]&lt;br /&gt;
&lt;br /&gt;
Простой доступ к данным. XML имеет свои ограничения — и наступает момент, когда оптимальным решением становится база данных.&lt;br /&gt;
&lt;br /&gt;
*[[DCOP]]&lt;br /&gt;
&lt;br /&gt;
Моддинг KDE. На вашем рабочем столе слишком много открытых окон? Простой DCOP-сценарий все исправит!&lt;br /&gt;
&lt;br /&gt;
*[[GTK+]]&lt;br /&gt;
&lt;br /&gt;
Переход на C++. Объектная структура GTK+ заслуживает объектного языка программирования. Или лучше все же остаться на C?&lt;br /&gt;
&lt;br /&gt;
*[[Java EE]]&lt;br /&gt;
&lt;br /&gt;
Web 2.0 своими руками. Узнайте как работает AJAX – базовая технология Web 2.0 и научитесь использовать ее из Java EE.&lt;br /&gt;
&lt;br /&gt;
*[[Cinelerra]]&lt;br /&gt;
&lt;br /&gt;
«Клипы» и сессии. Как удобно расположить материалы на одном единственном монтажном столе.&lt;br /&gt;
&lt;br /&gt;
*[[Препринт]]&lt;br /&gt;
&lt;br /&gt;
Подготовка иллюстраций. От верстки в LaTeX до напечатанной книги – шаг первый.&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF95:GPLv3_%E2%80%93_%D0%BD%D0%BE%D0%B2%D0%B0%D1%8F_%D1%8D%D0%BF%D0%BE%D1%85%D0%B0</id>
		<title>LXF95:GPLv3 – новая эпоха</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF95:GPLv3_%E2%80%93_%D0%BD%D0%BE%D0%B2%D0%B0%D1%8F_%D1%8D%D0%BF%D0%BE%D1%85%D0%B0"/>
				<updated>2008-03-11T23:25:40Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === GPLv3 – новая эпоха ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;29 июня 2007 года завершилась разработка третьей р...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== GPLv3 – новая эпоха ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;29 июня 2007 года завершилась разработка третьей редакции свободной лицензии GPL. Событие это, безусловно, станет одним из ключевых в истории свободного ПО, последствия которого пока трудно прогнозировать. За полтора года, в течение которых шла подготовка новой редакции, было сломано немало копий в спорах о содержании этого основного документа для всего сообщества пользователей и разработчиков Free Software. Но, как бы то ни было, совместными усилиями завершена работа, и в ближайшем будущем станет понятно, насколько точно предугадали создатели GPLv3 дальнейшее развитие ИТ-индустрии и сможет ли новая редакция выполнить свою роль – защитить свободное программное обеспечение от чрезмерной коммерциализации и вытекающих из нее ограничений. Впрочем, многие крупные поставщики Linux и компании, активно использующие и продвигающие свободное ПО, уже высказали свое одобрение по поводу нового документа. Одними из первых озвучили свою поддержку IBM, Red Hat и Novell, а также MySQL AB. В частности, представители «голубого гиганта» оценили новую редакцию GPL, как «абсолютно коммерчески жизнеспособную», в связи с чем компания IBM будет активно популяризировать новую версию среди своих клиентов. Менее масштабные компании и свободные проекты также высказали свое одобрение новой свободной лицензии, но сделали это без громких слов – уже в первые дни после релиза GPLv3 десятки проектов (в том числе, GNU Core Utilities, GnuPG, PeaZip,Tar, Texinfo, Sed, WeeChat) перевели свои программные продукты на использование новой редакции. Не отстали и разработчики Samba – все версии, начиная с 3.2 будут лицензированы именно по GPLv3. Что ж, очередной эволюционный виток завершился и начался новый,который, надеемся, позволит свободному ПО достичь новых высот.[http://www.gplv3.fsf.org]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/%D0%9D%D0%B5%D0%B4%D0%B5%D0%BB%D1%8F_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B9_%D0%B2_%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D0%B8%D0%B1%D0%B8%D1%80%D1%81%D0%BA%D0%B5</id>
		<title>Неделя открытых технологий в Новосибирске</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/%D0%9D%D0%B5%D0%B4%D0%B5%D0%BB%D1%8F_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B9_%D0%B2_%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D0%B8%D0%B1%D0%B8%D1%80%D1%81%D0%BA%D0%B5"/>
				<updated>2008-03-11T23:16:40Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Неделя открытых технологий в Новосибирске ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда я ехал из Академ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Неделя открытых технологий в Новосибирске ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Когда я ехал из Академгородка, расположенного на окраине города, в центр на мастер-класс в Новосибирском государственном техническом университете (НГТУ [http://info.nstu.ru]), цивилизация дала о себе знать посредством часовой пробки на дороге. Я был не единственным, кто задержался в пути. К первому слушанию основной докладчик – директор Линуксцентра Павел Фролов также не успел. Всему виной туман. Поэтому первое собрание вышло немного скомканным.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Принимающая сторона, группа LinuxNSK [http://www.linuxnsk.ru] и партнер Линуксцентра фирма «Связь Комплект» в лице Алексея Рожанкова, узнавшего о существовании GNU/Linux всего месяц назад, постаралась выправить положение. Первый мастер-класс был направлен на представителей бизнеса, то есть фактически на тех, кто читает ЛОР [http://www.linux.org.ru] и работает администраторами. Возрастной и гендерный состав весьма полносоответствовал ЛОР-срезу.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Презентация вышла весьма стандартной, оживило ее разве что предложение Антона Банщикова (инициатора «Неделя технологий GNU/Linux и Open-Source в Новосибирске») продемонстрировать работоспособность 1С под GNU/Linux. Лично я с пользой провел время, договорившись о трех «историях успеха», поприставав с разными вопросами к декану Факультета прикладной математики и информатики Борису Юрьевичу Лемешко, давшему терминальное помещение под проведение мастер-классов, и поболтав с ребятами из LinuxNSK. Мне понравилась эта группа с ее желанием что-то реально сделать. Пока на их счету перевод одной школы на открытое программное обеспечение, и у меня сложилось мнение, что это только начало. После мастер-классов силами LinuxNSK планируется проведение бесплатных ознакомительных курсов. Думается, подобное хобби – весьма достойное занятие для молодых людей, причем оно вполне может оказаться в будущем бесценным в смысле приобретенного опыта. Лучший способ разобраться с какой-то областью знаний – это попытаться передать эти знания другим людям. Только так можно досконально разобраться со всеми нюансами.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Примерно через час после окончания лекции появился основной докладчик Павел Фролов, сразу приступив к монтажу наглядной агитации, которая ко всем прочим достоинствам очень органично прикрыла часть окна. Это значительно улучшило качество картинки от проектора на экране. Погода была замечательной, и солнце светило на полную катушку – где там был туман, я так и не понял. На следующий день я уже слушал доклад таким, каким он должен был быть. Аудитория поменялась – сидели серьезные дяди, которые хотели серьезных решений, так как в ВУЗах (второй день был посвящен образованию) с программным обеспечением в последнее время возникли не менее серьезные проблемы.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Вкратце выступление Павла Фролова можно охарактеризовать как рекламу решений Mandriva Linux (подробности о предложениях Линуксцентра можно узнать на его сайте [http://www.linuxcenter.ru/]. Собственно говоря, эта цель и не скрывалась, а трехмерный куб и «желеобразные окна» от Compiz на презентационном компьютере ей весьма способствовали. Со слов докладчика, дистрибутив Mandriva был выбран не случайно, а с учетом консультаций с потенциальными клиентами. Основными требованиями были «дружелюбность для пользователя» и качественная поддержка оборудования. Среди потенциальных клиентов рассматривались и федеральные структуры, то есть от геополитического фактора уйти не удалось. Российские дистрибутивы также учитывались при выборе, но отпали в основном по причине отсутствия тесных связей с производителями оборудования.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Системной поддержки GNU/Linux на территории России практически нет, и активная поддержка Mandriva со стороны Линуксцентра вполне может оказаться решением этой проблемы. Да, можно купить коробку, например, RHEL и получать поддержку по электронной почте или по телефону, но электронная почта будет на английском языке, а звонок будет за границу, и языком общения будет отнюдь не русский. Да, действительно всесторонне развитый «Homo Adminus» обязан знать английский язык в совершенстве, но в любом случае задавать вопросы на родном языке дорогого стоит, так как позволяет думать собственно над вопросом, а не над его произнесением. Кроме того, местная поддержка волей-неволей будет вынуждена изучить местные же особенности и потребности, что облегчает решение локальных проблем.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Конкретно школам и ВУЗам посулили возможность купить академическую лицензию примерно за 30 тыс. руб в год, которая даетполную поддержку от Линуксцентра и право на использование дистрибутивов внутри учебного заведения, а также дома всем его учащимся и преподавателям. Наличие возможности покупки официальной лицензии на программное обеспечение, то есть бумаги с синей печатью, должно оградить от потенциальных проверок со стороны компетентных органов. Вопрос о проверках в учебных заведениях вызвал неподдельный интерес со стороны слушателей. Тема на сегодня очень актуальна, и полное решение проблемы пока отсутствует. Павел Фролов сообщил о случаях, когда под давлением администрации с компьютеров, поставленным по федеральной программе информатизации, удалялось просто все программное обеспечение, что, естественно, приводило компьютерные классы в негодность. Поэтому в использовании открытого программного обеспечения многие из присутствующих надеялись увидеть вероятный выход. Вероятный, потому что далеко не всем этот выход нравится своей непривычностью. Жизнь учителя и так непроста, и любое дополнительное усложнение ему вовсе не в радость.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Некоторым из присутствующих очень хотелось рассказать о своих проблемах, но указать на корень всех зол не очень получилось. Было предложено сообщать обо всех имеющихся препятствиях на пути использования свободного программного обеспечения местного, областного и уж тем более федерально-&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/%D0%93%D0%BE%D1%80%D1%8F%D1%87%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8_%D0%B8%D0%B7_%D0%AF%D0%BA%D1%83%D1%82%D0%B8%D0%B8</id>
		<title>Горячие новости из Якутии</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/%D0%93%D0%BE%D1%80%D1%8F%D1%87%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8_%D0%B8%D0%B7_%D0%AF%D0%BA%D1%83%D1%82%D0%B8%D0%B8"/>
				<updated>2008-03-11T22:56:22Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: Новая: === Горячие новости из Якутии ===  &amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В информационнм центре при Президенте ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Горячие новости из Якутии ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В информационнм центре при Президенте Республики Саха прошли мастер-классы, посвященные свободному ПО, на которых присутствовали представители бизнеса, власти и образовательных структур Якутии. В качестве «наглядного пособия» использовалась операционная система Mandriva Discovery 2007 (одним из организаторов мероприятия выступил российский филиал Mandriva.ru), которую слушатели могли свободно устанавливать на свои компьютеры. Примечательно, что результаты данного мероприятия оказались на удивление оперативными: в учебном классе Информационного центра при Президенте Республики Саха на всех компьютерах был установлен дистрибутив Mandriva Linux 2007 Spring в качестве второй операционной системы для постоянного использования в дальнейшем. Одновременно была достигнута договоренность об открытии центров компетенции в Информационном центре при Президенте Республики Саха и в Якутском Государственном Университете. Также организаторы мастер-класса успели принять участие в телемосте с министром образования Якутии, где среди прочих вопросов прошло обсуждение проблем лицензирования ПО в школах республики. Пожалуй, на сегодняшний день это один из наиболее плодотворных итогов обычных, казалось бы, разговоров на тему свободного ПО. [http://www.linuxcenter.ru/lib/press/mandriva_saha.phtml]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/Apple,_%D0%BF%D0%BE%D0%B2%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BE%D0%B2</id>
		<title>Apple, повелитель принтеров</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/Apple,_%D0%BF%D0%BE%D0%B2%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BE%D0%B2"/>
				<updated>2008-03-11T22:50:28Z</updated>
		
		<summary type="html">&lt;p&gt;ApB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Apple, повелитель принтеров ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;В середине июля автор популярной в UNIX системы печати Common UNIX Printing System (CUPS) и по совместительству глава компании Easy Software Products Майкл Свит [Michael R. Sweet] обнародовал подробности своей сделки с компанией Apple Inc. Суть в том, что в феврале текущего года производитель Mac’ов и iPod’ов приобрел у Свита все права на исходный код CUPS, тем самым взяв под свое покровительство самую популярную подсистему печати, входящее по умолчанию практически во все дистрибутивы GNU/Linux. Названия “CUPS”, “Common UNIX Printing System” и логотип CUPS также стали зарегистрированными товарными знаками Apple Inc. Сам Свит при этом принят в штат компании в качестве ведущего разработчика CUPS. Сумма сделки, естественно, не разглашается, но от объяснений по поводу дальнейшей судьбы системы печати, распространяемой под лицензиями GPL/LGPL, автор проекта решил не отказываться, и постарался максимально успокоить заволновавшееся сообщество. Ко всеобщему удовлетворению, код CUPS по-прежнему будет распространяться под вышеназванными лицензиями. Это позволит разработчикам дистрибутивов и дальше включать данный пакет в состав своих программных продуктов. Что же касается торговых марок, то их использование также остается свободным, за вычетом случаев их включения в производные программные продукты – в этом случае будет достаточно получить письменное разрешение от Apple Inc. Теперь о выгоде. С автором CUPS все понятно – он получил вполне реальные денежные средства, которые, надеемся, помогут Свиту с удвоенной энергией совершенствовать свое детище. Что же касается сообщества Free Software, то его представители надеются получить в лице Apple Inc. нового влиятельного покровителя свободного ПО, в числе которых уже значатся такие имена, как IBM, Hewlett-Packard и Novell. Также не исключено, что хорошая техническая и экспериментальная база «яблочной» компании позволит значительно улучшить систему печати в операционных системах GNU/Linux. [http://www.cups.org/articles.php?L475]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>ApB</name></author>	</entry>

	</feed>