<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1345825072851885298</id><updated>2024-10-25T05:57:49.220+06:00</updated><category term="C"/><category term="Debian"/><category term="Linux"/><category term="programming"/><category term="Firefox"/><category term="GNU"/><category term="Mozilla"/><category term="Squeeze"/><category term="Terminal"/><category term="UNIX"/><category term="ubuntu"/><category term="Си"/><category term="Buzz"/><category term="CentOS"/><category term="Chromebook"/><category term="Cloud"/><category term="Conway"/><category term="Etch"/><category term="Facebook"/><category term="Google Summer of Code"/><category term="HAXM"/><category term="IceCat"/><category term="IceOwl"/><category term="Iceape"/><category term="Icedove"/><category term="Iceweasel"/><category term="Intel"/><category term="Jessy"/><category term="John The Ripper"/><category term="JtR"/><category term="KISS"/><category term="LUG"/><category term="Labirint"/><category term="Lenny"/><category term="Life"/><category term="Linux System Programming"/><category term="Muuss"/><category term="OSS"/><category term="Office 365"/><category term="Openwall"/><category term="PID"/><category term="Potato"/><category term="Reading C type declarations"/><category term="Rex"/><category term="SeaMonkey"/><category term="Sid"/><category term="Solar Designer"/><category term="TID"/><category term="Tanenbaum"/><category term="Tiny Core"/><category term="TinyCore"/><category term="Toy Story"/><category term="VirtualBox"/><category term="Windows"/><category term="Wolvix"/><category term="Woody"/><category term="ack"/><category term="alias"/><category term="android"/><category term="bash"/><category term="books"/><category term="canonical"/><category term="clock"/><category term="declarations"/><category term="easter eggs"/><category term="emulator"/><category term="ext4"/><category term="facebook.com"/><category term="fast"/><category term="file"/><category term="firefox3"/><category term="firefox4"/><category term="fortune"/><category term="gksu"/><category term="grep"/><category term="kernel"/><category term="labirint.ru"/><category term="lazy"/><category term="main"/><category term="md5"/><category term="minimalistic"/><category term="network"/><category term="performance"/><category term="ping"/><category term="process"/><category term="qemu"/><category term="recursion"/><category term="release"/><category term="search"/><category term="shell"/><category term="stability"/><category term="suckless"/><category term="sudo"/><category term="switch"/><category term="threads"/><category term="true"/><category term="tux"/><category term="type"/><category term="zsh"/><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="приветствие"/><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="эмуляция"/><title type='text'>Программирование и жизнь в Linux</title><subtitle type='html'>Тропами Linux</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-1055656595546029835</id><published>2013-05-20T13:17:00.000+07:00</published><updated>2013-05-20T13:32:41.274+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="qemu"/><category scheme="http://www.blogger.com/atom/ns#" term="Rex"/><category scheme="http://www.blogger.com/atom/ns#" term="VirtualBox"/><title type='text'>Rex</title><content type='html'>Возникла идея взглянуть на один из первых релизов Debian.
&lt;br&gt;
Версия Debian 1.1 Buzz мне не поддалась, поэтому поставим Debian 1.2 Rex.&lt;br&gt;&lt;br&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
VirtualBox оказался на удивление капризным. Сначала он &lt;a href=&quot;https://www.virtualbox.org/ticket/8435&quot;&gt;отказался&lt;/a&gt; кушать стандартные образы floppy с расширением *.bin. После &lt;i&gt;переименования&lt;/i&gt; их же в *.img спокойно стартовал с них. Но возникла проблема с выбором жесткого диска — Rex не смог увидеть то, что предлагал VirtualBox.
&lt;br&gt;&lt;br&gt;
Что ж, используем &lt;a href=&quot;http://wiki.qemu.org/Main_Page&quot;&gt;qemu&lt;/a&gt;.
Загружаем с какого-либо зеркала Debian floppy-образы:&lt;br&gt;
&lt;code&gt;
base14-1.bin  base14-2.bin  base14-3.bin  base14-4.bin  drv1440.bin  resq1440.bin  root.bin
&lt;/code&gt;
&lt;br&gt;&lt;br&gt;
Далее следует создать жесткий диск для qemu:&lt;br&gt;
&lt;code&gt;
qemu-img create rex.img 200M
&lt;/code&gt;
&lt;br&gt;&lt;br&gt;
Теперь загружаемся с Debian Rescue floppy (файл resq1440.bin) и устанавливаем систему:
&lt;br&gt;
&lt;code&gt;
qemu -boot a -fda resq1440.bin -hda rex.img
&lt;/code&gt;
&lt;br&gt;
&lt;center&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGs2djqgZnD4iG3c4RXm-wJEwLfuEkALCOhVV9aI7zpQC3KKPZw4JCGcF-W3tS3lyc_Blplr0h8kDfXQESpIlIDeb28MukT2y-8nMRmFEd4KsEkCE0vuuXq1XzckEpXF8Z8F99vfk9zDhv/s1600/Screenshot+from+2013-05-20+12:29:33.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGs2djqgZnD4iG3c4RXm-wJEwLfuEkALCOhVV9aI7zpQC3KKPZw4JCGcF-W3tS3lyc_Blplr0h8kDfXQESpIlIDeb28MukT2y-8nMRmFEd4KsEkCE0vuuXq1XzckEpXF8Z8F99vfk9zDhv/s320/Screenshot+from+2013-05-20+12:29:33.png&quot; /&gt;&lt;/a&gt;
&lt;/center&gt;

&lt;br&gt;
В процессе установки нужно будет сменять floppy. В qemu это можно сделать через &lt;a href=&quot;http://lists.gnu.org/archive/html/qemu-devel/2005-08/msg00119.html&quot;&gt;qemu monitor&lt;/a&gt;:
&lt;code&gt;
  Ctrl-Alt-2
&lt;br&gt;&lt;br&gt;
  eject fda&lt;br&gt;
  change fda ./base14-1.bin
&lt;br&gt;&lt;br&gt;
  Ctrl-Alt-1
&lt;/code&gt;
&lt;br&gt;&lt;br&gt;
Дальнейший процесс установки прост, практически как и в наше время.
&lt;br&gt;
Загрузка установщика
&lt;center&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8hYmPFa2zHWKc-Z_DNlhkVLI8YH1IHHJvkDxtEt7i8XkOFZQXf-MwY_68PWSbdA7IoAY4uMejxr6XaWRo4iFvwMGoDy5mddqZOn1TiyoKzkTc8Pig9gYNhdPWNZd3w-c3x6TiZhQOFY8x/s1600/Screenshot+from+2013-05-20+12:29:44.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8hYmPFa2zHWKc-Z_DNlhkVLI8YH1IHHJvkDxtEt7i8XkOFZQXf-MwY_68PWSbdA7IoAY4uMejxr6XaWRo4iFvwMGoDy5mddqZOn1TiyoKzkTc8Pig9gYNhdPWNZd3w-c3x6TiZhQOFY8x/s320/Screenshot+from+2013-05-20+12:29:44.png&quot; /&gt;&lt;/a&gt;
&lt;/center&gt;&lt;br&gt;&lt;br&gt;

Можно выбрать цветной установщик :)
&lt;br&gt;
&lt;center&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibMZ7W_Q44yUF9Z6WXA5f35u-SSetpGKjFeXxiLMO2eCSD84puO152zguet5yY20XPL9mMfO-HSMc7oXQmkK4udEXwEfkxRdg506bULiwKPoJ9QdBIyCkwqwCyTULts_T4DQFFx_JRre3N/s1600/Screenshot+from+2013-05-20+12:30:07.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibMZ7W_Q44yUF9Z6WXA5f35u-SSetpGKjFeXxiLMO2eCSD84puO152zguet5yY20XPL9mMfO-HSMc7oXQmkK4udEXwEfkxRdg506bULiwKPoJ9QdBIyCkwqwCyTULts_T4DQFFx_JRre3N/s320/Screenshot+from+2013-05-20+12:30:07.png&quot; /&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkvwT2YRG1M8ASbrG7BFR5H2682zSCPFgVxYTG41qJM_-O4OiICtKsLd3pPT-MoPUHLwmnZViZ6CwlN2DXfauJDTAw9j4xhLdzg6aPQnTlGAkW0FG8V8ZyGpxKpmjk8cB_f2Bk6zmKQ-xa/s1600/Screenshot+from+2013-05-20+12:30:13.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkvwT2YRG1M8ASbrG7BFR5H2682zSCPFgVxYTG41qJM_-O4OiICtKsLd3pPT-MoPUHLwmnZViZ6CwlN2DXfauJDTAw9j4xhLdzg6aPQnTlGAkW0FG8V8ZyGpxKpmjk8cB_f2Bk6zmKQ-xa/s320/Screenshot+from+2013-05-20+12:30:13.png&quot; /&gt;&lt;/a&gt;
&lt;/center&gt;
&lt;br&gt;&lt;br&gt;

Описание системы и выбор раскладки клавиатуры&lt;br&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6jiiA8Ew7G4QFagMDQa7GSNhTpmMoBB0iXo9ZdsvZ-a1yiXPKQ2-kZQ8595Q-w8JRQZITvBtBl0qPK97AFdz7x2amDOJckmKyLv_mzhmKdnNIrFbz5jeyq-Y7rltz19zJEbCMSI7J7XpN/s1600/Screenshot+from+2013-05-20+12:30:18.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6jiiA8Ew7G4QFagMDQa7GSNhTpmMoBB0iXo9ZdsvZ-a1yiXPKQ2-kZQ8595Q-w8JRQZITvBtBl0qPK97AFdz7x2amDOJckmKyLv_mzhmKdnNIrFbz5jeyq-Y7rltz19zJEbCMSI7J7XpN/s320/Screenshot+from+2013-05-20+12:30:18.png&quot; /&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgKg_KVtIFXxvZ7Slpd8aotnTRHGcFgL1kto3YKpNG8vs1OVY0OHHul5a5gcUALnKFXiXLuNo18CxRQXgymXLgNRMEJWqJYAKZMaRp0T1nAGpnR4jlII-CfEwZ6_tgg7Vu0mEnYqdynBoN/s1600/Screenshot+from+2013-05-20+12:30:23.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgKg_KVtIFXxvZ7Slpd8aotnTRHGcFgL1kto3YKpNG8vs1OVY0OHHul5a5gcUALnKFXiXLuNo18CxRQXgymXLgNRMEJWqJYAKZMaRp0T1nAGpnR4jlII-CfEwZ6_tgg7Vu0mEnYqdynBoN/s320/Screenshot+from+2013-05-20+12:30:23.png&quot; /&gt;&lt;/a&gt;
&lt;br&gt;
Далее типичный набор действий: монтирование swap, разметка диска, установка основной системы и ядра, настройка сети. Эти пункты не должны вызвать затруднения.

&lt;br&gt;&lt;br&gt;
Перезагружаемся в систему после установки&lt;br&gt;
&lt;center&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNuXtvGgPA7TkxeUOQKpIOGHx3JlC5EA58-gW6o9u1SgBHp0ms3wZGMd7L0SATxeF1WupiLvINhkBmfN_yjGKuTUrdIuCwNO3gaB99FRGr0dS5HuxPZCOfyu7SmlNXL0gvTE9Ti57mwm7Z/s1600/Screenshot+from+2013-05-06+18:48:09.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNuXtvGgPA7TkxeUOQKpIOGHx3JlC5EA58-gW6o9u1SgBHp0ms3wZGMd7L0SATxeF1WupiLvINhkBmfN_yjGKuTUrdIuCwNO3gaB99FRGr0dS5HuxPZCOfyu7SmlNXL0gvTE9Ti57mwm7Z/s320/Screenshot+from+2013-05-06+18:48:09.png&quot; /&gt;&lt;/a&gt;
&lt;/center&gt;
&lt;br&gt;
Ура, готово!</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/1055656595546029835/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/1055656595546029835?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/1055656595546029835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/1055656595546029835'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2013/05/rex.html' title='Rex'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGs2djqgZnD4iG3c4RXm-wJEwLfuEkALCOhVV9aI7zpQC3KKPZw4JCGcF-W3tS3lyc_Blplr0h8kDfXQESpIlIDeb28MukT2y-8nMRmFEd4KsEkCE0vuuXq1XzckEpXF8Z8F99vfk9zDhv/s72-c/Screenshot+from+2013-05-20+12:29:33.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-647525359548224441</id><published>2013-04-27T11:19:00.000+07:00</published><updated>2013-04-27T12:28:18.716+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alias"/><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="fortune"/><category scheme="http://www.blogger.com/atom/ns#" term="lazy"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="shell"/><category scheme="http://www.blogger.com/atom/ns#" term="Terminal"/><category scheme="http://www.blogger.com/atom/ns#" term="tux"/><category scheme="http://www.blogger.com/atom/ns#" term="zsh"/><title type='text'>Alias</title><content type='html'>&lt;p&gt;Моей первой книгой по Линукс был замечательный карманный справочник Скотта Граннемана &lt;a href=&quot;http://www.ozon.ru/context/detail/id/3178480/&quot;&gt;Linux. Необходимый код и команды.&lt;/a&gt; С тех пор я пролистал множество страниц в интернете и книг на бумаге о Linux, но многими привычками обязан этой книге.&lt;/p&gt;
&lt;p&gt; Граннеман считает, что одной из важнейших характеристик пользователя Linux является лень. И действительно, лень проявляется всюду. Логотипом ядра считается пухлый беззаботный пингвин Tux, которого Линус Торвальдс хотел бы видеть именно таким, какой он есть: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt; Вы должны представлять пухлого (*), сидящего и объевшегося пингвина, только что рыгнувшего. Он сидит с блаженной улыбкой — ведь жизнь хороша, когда ты только что съел десяток килограммов сырой рыбы и чувствуешь новую отрыжку на подходе.&lt;/p&gt;
&lt;p&gt; (*) Не толстого, но должно быть сразу понятно, что он слишком пухлый, чтобы стоять.&lt;/p&gt;
&lt;p&gt; Если вы не можете представить себя кем-то, приходящим в восторг от сырой рыбы, замените её шоколадом или чем-нибудь ещё, но общая идея должна быть понятна.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5OB5_6f3PAlo-HR5rMpoH1iZn6kW1WCDQLRHKMEPa3b3uV5pUXJiR8lsYUcfuQ_QSqRKeWXW3pQ4gJVdm-r4wUwruHT_Pvnu7O8zOqp1YYMU6HgfGDXwKWrRM_kmE4zkL2jJRBn7-QA9/s1600/Tux.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5OB5_6f3PAlo-HR5rMpoH1iZn6kW1WCDQLRHKMEPa3b3uV5pUXJiR8lsYUcfuQ_QSqRKeWXW3pQ4gJVdm-r4wUwruHT_Pvnu7O8zOqp1YYMU6HgfGDXwKWrRM_kmE4zkL2jJRBn7-QA9/s320/Tux.png&quot; /&gt;&lt;/a&gt;


&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;p&gt; Все основные команды, используемые в командной строке, имеют необходимый минимум букв в названии — pwd, cd, ls, df, cat. Пользователям было лень писать print_workdir, changedir, listfiles, diskfree, catenate.  &lt;/p&gt;
&lt;p&gt; Можно ли стать ещё ленивее? Однозначно, можно. И способов существует масса. Одним из них является использование встроенной команды shell (bash, zsh, и, вероятно, других оболочек) &lt;i&gt;alias&lt;/i&gt;. Чем она полезна?  &lt;/p&gt;

&lt;p&gt; Допустим, вы часто используете некую последовательность команд или одну команду с одними и теми же параметрами. К чему каждый раз их печатать? Вы создаёте короткий псевдоним команды (alias — псевдоним) и пользуетесь им. Формат вызова такой: &lt;/p&gt;
&lt;code&gt; alias [-p] [name[=value] ...] &lt;/code&gt;

&lt;p&gt; Приведу пример.  &lt;/p&gt;
&lt;code&gt;
$ #  предполагается, что у вас установлен пакет libnotify-bin и fortune
&lt;br&gt;
$ notify-send &quot;$(fortune)&quot;
&lt;br&gt;
$ alias nfort=&#39;notify-send &quot;$(fortune)&quot;&#39;
&lt;br&gt;
$ nfort
&lt;/code&gt;
&lt;p&gt; Вот и всё — можно использовать более короткое имя вместо длинного имени и параметра.&lt;/p&gt;
&lt;br&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyFmevBCARTxDWdY61V_c6xuA3C_7HV64f_VByUNLeV9PEcdEWm0KfRpreVaKvHagQprUo-vRXZf4gHuDbz8_-WH-lo6T2F1HO5gEAvae1Sde_YQtCCiKxXUE8BMytmokpWc1zEG-uJwam/s1600/Screenshot+from+2013-04-26+23:46:33.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyFmevBCARTxDWdY61V_c6xuA3C_7HV64f_VByUNLeV9PEcdEWm0KfRpreVaKvHagQprUo-vRXZf4gHuDbz8_-WH-lo6T2F1HO5gEAvae1Sde_YQtCCiKxXUE8BMytmokpWc1zEG-uJwam/s320/Screenshot+from+2013-04-26+23:46:33.png&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_HP-zyGHM60gxBEu9zToEG8DtKRvP2XlEdkUPXUy7vqVu42VkddK9qKWsItwr8CH5HsGuXmaQhLmrY3MDENIegWamdZbx9IONbYDA2okJdaqLRIhg7eA9PBw9VIjZHN8Wy4SoYJjJcyms/s1600/Screenshot+from+2013-04-26+23:37:48.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_HP-zyGHM60gxBEu9zToEG8DtKRvP2XlEdkUPXUy7vqVu42VkddK9qKWsItwr8CH5HsGuXmaQhLmrY3MDENIegWamdZbx9IONbYDA2okJdaqLRIhg7eA9PBw9VIjZHN8Wy4SoYJjJcyms/s320/Screenshot+from+2013-04-26+23:37:48.png&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Псевдонимы хранятся в переменной окружения BASH_ALIASES, представляющего собой ассоциативный массив. Наиболее просто посмотреть список действующих псевдонимов можно, вызвав &lt;i&gt;alias&lt;/i&gt; с ключом -p.  &lt;/p&gt;
&lt;p&gt; К сожалению, команда &lt;i&gt;alias&lt;/i&gt; действует только на текущую сессию shell и псевдонимы исчезают после выхода из неё. Каким образом их сохранить? Можно записать псевдонимы в файл &lt;b&gt;.bash_aliases&lt;/b&gt;, который обычно находится в домашней директории пользователя. Тогда при каждом запуске командной оболочки она будет считывать этот файл и восстанавливать созданные вами псевдонимы. При обновлении файла можно заставить командную оболочку перечитать его, чтобы активировать псевдонимы в текущей сессии: &lt;/p&gt;
&lt;code&gt;$ . ~/.bash_aliases &lt;/code&gt;
&lt;p&gt;Обычно такая же строка содержится в файле &lt;b&gt;~/.bashrc&lt;/b&gt;, благодаря чему псевдонимы и загружаются при запуске оболочки.&lt;/p&gt;
&lt;p&gt; За время использования Линукс у меня появился определенный набор псевдонимов, без которых я уже чувствую себя некомфортно. Поэтому при использовании нового компьютера первым делом я переношу на него свой файл &lt;b&gt;.bash_aliases&lt;/b&gt;. Вот часть его содержимого:&lt;/p&gt;
&lt;code&gt;
alias l=&#39;ls -F&#39;
&lt;br&gt;
alias d=&#39;df -h&#39;
&lt;br&gt;
alias ud=&#39;sudo aptitude update &amp;&amp; sudo aptitude upgrade&#39;
&lt;br&gt;
# подавляет вывод вступительного сообщения и сообщений о правах gdb
&lt;br&gt;
alias gdb=&quot;gdb -q&quot;
&lt;/code&gt;

&lt;p&gt;Постоянно пытаюсь просмотреть содержимое директории псевдонимом &#39;l&#39; и тут же его создаю, если обнаруживаю, что он отсутствует.&lt;/p&gt;
&lt;p&gt; Будьте ленивы!  &lt;/p&gt;
&lt;p&gt;
Использованные источники:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ru.wikipedia.org/wiki/Tux&quot;&gt;Wikipedia - Tux&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ozon.ru/context/detail/id/3178480/&quot;&gt;Linux. Необходимый код и команды.&lt;/a&gt;
&lt;/ul&gt;
&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/647525359548224441/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/647525359548224441?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/647525359548224441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/647525359548224441'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2013/04/alias.html' title='Alias'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5OB5_6f3PAlo-HR5rMpoH1iZn6kW1WCDQLRHKMEPa3b3uV5pUXJiR8lsYUcfuQ_QSqRKeWXW3pQ4gJVdm-r4wUwruHT_Pvnu7O8zOqp1YYMU6HgfGDXwKWrRM_kmE4zkL2jJRBn7-QA9/s72-c/Tux.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-7057232560013386797</id><published>2013-04-25T10:53:00.002+07:00</published><updated>2013-04-27T12:29:16.890+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="emulator"/><category scheme="http://www.blogger.com/atom/ns#" term="HAXM"/><category scheme="http://www.blogger.com/atom/ns#" term="Intel"/><category scheme="http://www.blogger.com/atom/ns#" term="performance"/><title type='text'>Emulator</title><content type='html'>Настройки по умолчанию для эмулятора android в adt (eclipse) делают его &lt;b&gt;чрезвычайно&lt;/b&gt; медленным. Порой бывает быстрее загрузить приложение на реальное устройство, чем ждать загрузки эмулятора. Как ускорить эмулятор android проще всего?
&lt;br&gt;&lt;br&gt;
Я использую GNU/Linux и не желаю использовать проприетарных драйверов вроде Intel HAXM (они тоже улучшают производительность эмулятора).
Для достижения цели понадобится всего два шага.
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
шаг 0. Установить android developer tools (adt) или eclipse с плагином ADT, если он у вас ещё не установлен.
&lt;br&gt;
шаг 1. Запустить eclipse и Android SDK Manager в нём, установить Intel x86 Atom System Image для нужных API:
&lt;br&gt;
&lt;a href=&quot;http://i.imgur.com/EQ3EGck.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;http://i.imgur.com/EQ3EGck.png&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
шаг 2. Создать виртуальное устройство android (android virtual device, AVD) со следующими (или схожими) параметрами:
&lt;br&gt;
*CPU/ABI: Intel Atom (x86) — необходимый для ускорения параметр
&lt;br&gt;
*Memory Options: 1024 Mb
&lt;br&gt;
*Use Host GPU
&lt;br&gt;
&lt;a href=&quot;http://i.imgur.com/xDfBdKO.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;http://i.imgur.com/xDfBdKO.png&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
Готово! Запускаем приложение на созданном устройстве и наслаждаемся скоростью.
&lt;br&gt;&lt;br&gt;
Запись основана на &lt;a href=&#39;http://stackoverflow.com/a/13856866&#39;&gt;ответе&lt;/a&gt; stackoverflow.
&lt;br&gt;&lt;br&gt;
PS. Да, я слышал что Intel HAXM — неплохая вещь. Однако...
&lt;br&gt;
&lt;a href=&quot;http://i.imgur.com/igCGJbn.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;http://i.imgur.com/igCGJbn.png&quot; /&gt;&lt;/a&gt;
&lt;br&gt;
Ещё есть &lt;a href=&#39;http://software.intel.com/en-us/blogs/2012/03/12/how-to-start-intel-hardware-assisted-virtualization-hypervisor-on-linux-to-speed-up-intel-android-x86-gingerbread-emulator&#39;&gt;блогозапись&lt;/a&gt; от Intel по данной теме, но
насколько я понял, работает их решение только в Ubuntu.</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/7057232560013386797/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/7057232560013386797?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/7057232560013386797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/7057232560013386797'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2013/04/emulator.html' title='Emulator'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-7814805246045397513</id><published>2013-04-24T20:48:00.000+07:00</published><updated>2013-04-27T12:29:31.747+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ack"/><category scheme="http://www.blogger.com/atom/ns#" term="grep"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="search"/><title type='text'>Smile</title><content type='html'>Основано на мини-новости &lt;a href=&#39;http://www.opennet.ru/opennews/art.shtml?num=36773&#39;&gt;opennet&lt;/a&gt;.
&lt;br&gt;
Поиск в исходном коде строки — твивиальная вещь в терминале GNU/Linux. Наиболее известной утилитой для данной задачи является grep.
&lt;br&gt;
Чтобы рекурсивно пройти по дереву файлов большого проекта, можно воспользоваться следующей командой:
&lt;br&gt;
&lt;br&gt;
&lt;code&gt;
$ egrep -ir &#39;;-\)&#39; *
&lt;/code&gt;
&lt;br&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1nVgyB37xrBmW0ygzJJnwYRJfCvvBcjrEepO_FdCYhnKkRlWFiqeyLyzOAqHyqi79qzeJrMKtPhfbHfwvQ1-jVydnPra1dndGQmUA5SzRZjhxuQ803IT-Kf_Wqh1s-8lVSJygJqgCFn0Y/s1600/Screenshot+from+2013-04-24+20:38:11.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1nVgyB37xrBmW0ygzJJnwYRJfCvvBcjrEepO_FdCYhnKkRlWFiqeyLyzOAqHyqi79qzeJrMKtPhfbHfwvQ1-jVydnPra1dndGQmUA5SzRZjhxuQ803IT-Kf_Wqh1s-8lVSJygJqgCFn0Y/s320/Screenshot+from+2013-04-24+20:38:11.png&quot; /&gt;&lt;/a&gt;
&lt;br&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
Однако, мне больше нравится утилита &lt;a href=&#39;http://beyondgrep.com&#39;&gt;ack&lt;/a&gt;. Для аналогичного поиска с помощью ack нужно ввести лишь:
&lt;br&gt;
&lt;br&gt;
&lt;code&gt;
$ ack-grep &#39;;-\)&#39;
&lt;/code&gt;
&lt;br&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0ZHB_zjJ-3mLIi1-fF7JnE1113jNjZ9B9HVBiD1iLAVSw6ujjKvOfZTLMeTDMJkwCDBMPCpfNqXx8_CmUPJ0VOLIgQGdFWWpusvRUoIWD-yUyNOjFtUaax49EkKHYKW88Id_9ft6p61rD/s1600/Screenshot+from+2013-04-24+20:35:30.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0ZHB_zjJ-3mLIi1-fF7JnE1113jNjZ9B9HVBiD1iLAVSw6ujjKvOfZTLMeTDMJkwCDBMPCpfNqXx8_CmUPJ0VOLIgQGdFWWpusvRUoIWD-yUyNOjFtUaax49EkKHYKW88Id_9ft6p61rD/s320/Screenshot+from+2013-04-24+20:35:30.png&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
Итак, вооружимся ack и продолжим исследования &lt;a href=&#39;http://jamesfator.com/2013/04/23/winking_emoticons/&#39;&gt;автора&lt;/a&gt;. Находим исходники ядра Linux и переходим в их корневой каталог. Будем искать недовольные смайлы :-(
&lt;br&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6RPc4h_NTVb4qcR0wFPESdbfKHl9_Lf6U7HiUVQ0-Ah091UHzI8dQHeWtaei4raC_SUUGzbcjn8XIm8qQviZBbAktbwXh9y5Qf5Qo1Bx5teIusc1nkgAHaB2UWr1iI1lLh5rIfpoKKAHM/s1600/Screenshot+from+2013-04-24+20:40:25.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6RPc4h_NTVb4qcR0wFPESdbfKHl9_Lf6U7HiUVQ0-Ah091UHzI8dQHeWtaei4raC_SUUGzbcjn8XIm8qQviZBbAktbwXh9y5Qf5Qo1Bx5teIusc1nkgAHaB2UWr1iI1lLh5rIfpoKKAHM/s320/Screenshot+from+2013-04-24+20:40:25.png&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
Полный вывод последней команды можно найти здесь: &lt;a href=&#39;http://pastebin.com/dnUsHcFF&#39;&gt;pastebin&lt;/a&gt;
(вывод первой от ack здесь: &lt;a href=&#39;http://pastebin.com/puRXgqS9&#39;&gt;pastebin&lt;/a&gt;).
</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/7814805246045397513/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/7814805246045397513?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/7814805246045397513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/7814805246045397513'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2013/04/smile.html' title='Smile'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1nVgyB37xrBmW0ygzJJnwYRJfCvvBcjrEepO_FdCYhnKkRlWFiqeyLyzOAqHyqi79qzeJrMKtPhfbHfwvQ1-jVydnPra1dndGQmUA5SzRZjhxuQ803IT-Kf_Wqh1s-8lVSJygJqgCFn0Y/s72-c/Screenshot+from+2013-04-24+20:38:11.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-7366170809135260473</id><published>2012-07-28T14:05:00.000+07:00</published><updated>2012-07-28T15:33:08.656+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="Jessy"/><category scheme="http://www.blogger.com/atom/ns#" term="release"/><title type='text'>Jessie</title><content type='html'>Стало известно имя следующего после Wheezy восьмого релиза Debian - Jessie.

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i.imgur.com/FZh4w.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;720&quot; width=&quot;486&quot; src=&quot;http://i.imgur.com/FZh4w.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

Джесси - очень редкая игрушка, созданная по образу героини вымышленного телевизионного шоу &quot;Загон Вуди&quot;, в котором помимо неё участвовали шериф Вуди, пожилой старатель Пит и Булзай, лошадь Вуди. Волосы Джесси сплетены в косичку. Она свежая, храбрая и очень ловкая. Однако кукла бывает грустна и недоверчива, поскольку была забыта своим владельцем. Годы, проведённые в гараже сделали её замкнутой и боящейся темноты.
&lt;br&gt;
&lt;br&gt;
Пост можно считать дополнением к &lt;a href=&quot;http://jightuse.blogspot.com/2011/02/codename.html&quot;&gt;списку имён героев&lt;/a&gt;, в честь которого именовались релизы Debian.
&lt;br&gt;
&lt;br&gt;
Источники:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Jessie_(Toy_Story)&quot;&gt;Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pixar.wikia.com/Jessie&quot;&gt;Pixar wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lists.debian.org/debian-devel-announce/2012/07/msg00004.html&quot;&gt;debian-devel-announce mail list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/7366170809135260473/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/7366170809135260473?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/7366170809135260473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/7366170809135260473'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2012/07/jessie.html' title='Jessie'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-3453127442324906786</id><published>2012-07-19T00:47:00.003+07:00</published><updated>2013-04-27T12:29:46.629+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="ext4"/><category scheme="http://www.blogger.com/atom/ns#" term="file"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux System Programming"/><title type='text'>lseek</title><content type='html'>Роберт Лав, как оказалось, пишет довольно увлекательно. Узнал для себя немало нового из его книги &quot;Linux. Системное программирование&quot;. Одним из открытий хочу поделиться.
&lt;br&gt;
Системный вызов lseek() предназначен для установки позиции в файле, соответствующем файловому дескриптору. Однако у него есть одно забавное применение. Возможно использовать lseek() для &#39;перемотки&#39; файла за его(файла) предел. Если после этого записать что-то в текущую позицию, место между концом файла и позицией заполнится нулями.
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;br&gt;
Таким образом, возможно быстрое создание файла (почти)любого размера. К примеру, на 16 терабайт(предел в файловой системе ext4):

&lt;pre&gt;
&lt;code&gt;
#include &amp;lt;errno.h&amp;gt;
#include &amp;lt;fcntl.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;sys/stat.h&amp;gt;
#include &amp;lt;sys/types.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

int main(int argc, char *argv[])
{
 int fd = open(argv[1], O_WRONLY | O_CREAT | O_LARGEFILE, 0644);
 int ret;
 off64_t ret64;

 off64_t kilo = 1024;
 off64_t megabyte = kilo * kilo;
 off64_t terabyte = megabyte * megabyte;
 off64_t offset = 16 * terabyte - megabyte;

 if (fd &amp;lt; 1) {
  perror(&quot;open&quot;);
  return -1;
 }

 ret64 = lseek64(fd, offset, SEEK_END);
 if (ret64 &amp;lt; 1) {
  perror(&quot;lseek&quot;);
  return -1;
 }

 ret = write(fd, &quot;0&quot;, 1);
 if (ret &amp;lt; 1) {
  perror(&quot;write&quot;);
  return -1;
 }
 write(STDOUT_FILENO, &quot;Success!\n&quot;, 10); 

 return 0;
}
&lt;/code&gt;
&lt;/pre&gt;

Код следует компилировать с флагом -D_GNU_SOURCE. Пользователи 32-разрядных систем могут получить работающий код, слегка изменив программу. Однако они всё равно будут ограничены 2 гигабайтами - размером off_t. Впрочем, можно использовать fsetpos().</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/3453127442324906786/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/3453127442324906786?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/3453127442324906786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/3453127442324906786'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2012/07/lseek.html' title='lseek'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-5174050199495603886</id><published>2012-07-08T18:22:00.000+07:00</published><updated>2012-07-28T15:32:37.309+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="main"/><category scheme="http://www.blogger.com/atom/ns#" term="recursion"/><title type='text'>Main</title><content type='html'>Прогуливаясь по файловой системе, обнаружил в закромах небольшой файл с кодом. Взглянув на него, я вспомнил, что некоторое время назад пытался понять можно ли в Си вызвать функцию main рекурсивно. Тогда я не закончил исследование - вероятно, не хватило навыка работы с указателями.
&lt;br&gt;
Оказывается, main ничем от других функций не отличается (помимо того, что является точкой входа в программу). Приведённый ниже код компилируется с самыми &quot;жёсткими&quot; флагами и успешно работает (печатает переданные аргументы).

&lt;pre&gt;
&lt;code&gt;
#include &amp;lt;stdio.h&amp;gt;

int main(int argc, char *argv[]) {
    if (argc &gt; 1) {
        printf(&quot;%s\n&quot;, argv[1]);
        main(argc - 1, argv + 1);
    }
    return 0;
}
&lt;/code&gt;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/5174050199495603886/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/5174050199495603886?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5174050199495603886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5174050199495603886'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2012/07/main.html' title='Main'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-5565368916573869796</id><published>2012-07-05T00:25:00.001+07:00</published><updated>2012-07-28T15:32:20.188+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="GNU"/><category scheme="http://www.blogger.com/atom/ns#" term="KISS"/><category scheme="http://www.blogger.com/atom/ns#" term="suckless"/><category scheme="http://www.blogger.com/atom/ns#" term="true"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><title type='text'>KISS</title><content type='html'>Давайте взглянем на код пары простых программ.

Первая поставляется с пакетом GNU coreutils во множестве дистрибутивов Linux. Программа называется true и обычно устанавливается в /bin/true :

&lt;pre&gt;
&lt;code&gt;
/* Exit with a status code indicating success.
   Copyright (C) 1999-2012 Free Software Foundation, Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.  */

#include &amp;lt;config.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;sys/types.h&amp;gt;
#include &amp;lt;system.h&amp;gt;

/* Act like &quot;true&quot; by default; false.c overrides this.  */
#ifndef EXIT_STATUS
# define EXIT_STATUS EXIT_SUCCESS
#endif

#if EXIT_STATUS == EXIT_SUCCESS
# define PROGRAM_NAME &quot;true&quot;
#else
# define PROGRAM_NAME &quot;false&quot;
#endif

#define AUTHORS proper_name (&quot;Jim Meyering&quot;)

void
usage (int status)
{
  printf (_(&quot;\
Usage: %s [ignored command line arguments]\n\
  or:  %s OPTION\n\
&quot;),
          program_name, program_name);
  printf (&quot;%s\n\n&quot;,
          _(EXIT_STATUS == EXIT_SUCCESS
            ? N_(&quot;Exit with a status code indicating success.&quot;)
            : N_(&quot;Exit with a status code indicating failure.&quot;)));
  fputs (HELP_OPTION_DESCRIPTION, stdout);
  fputs (VERSION_OPTION_DESCRIPTION, stdout);
  printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
  emit_ancillary_info ();
  exit (status);
}

int
main (int argc, char **argv)
{
  /* Recognize --help or --version only if it&#39;s the only command-line
     argument.  */
  if (argc == 2)
    {
      initialize_main (&amp;argc, &amp;argv);
      set_program_name (argv[0]);
      setlocale (LC_ALL, &quot;&quot;);
      bindtextdomain (PACKAGE, LOCALEDIR);
      textdomain (PACKAGE);

      atexit (close_stdout);

      if (STREQ (argv[1], &quot;--help&quot;))
        usage (EXIT_STATUS);

      if (STREQ (argv[1], &quot;--version&quot;))
        version_etc (stdout, PROGRAM_NAME, PACKAGE_NAME, Version, AUTHORS,
                     (char *) NULL);
    }

  exit (EXIT_STATUS);
}
&lt;/code&gt;
&lt;/pre&gt;


Вторая относится к пакету &quot;sbase&quot; проекта suckless.org.
&lt;pre&gt;
&lt;code&gt;
/* See LICENSE file for copyright and license details. */
#include &amp;lt;stdlib.h&amp;gt;

int
main(void)
{
 return EXIT_SUCCESS;
}
&lt;/code&gt;
&lt;/pre&gt;

Обе программы делают одну вещь. Ничего. Просто выходят, возвращая значение &quot;успешно&quot;. Кто следует идеям UNIX? Кто следует здравому смыслу? Решайте сами.
&lt;br&gt;
&lt;br&gt;
Ссылки:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/KISS_principle&quot;&gt;KISS&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/true.c&quot;&gt;GNU Coreutils true&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://hg.suckless.org/sbase/file/8cf300476909/true.c&quot;&gt;suckless true&lt;/a&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/5565368916573869796/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/5565368916573869796?isPopup=true' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5565368916573869796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5565368916573869796'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2012/07/kiss.html' title='KISS'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-970878648058664670</id><published>2012-06-17T04:08:00.002+07:00</published><updated>2013-04-27T12:31:05.508+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PID"/><category scheme="http://www.blogger.com/atom/ns#" term="process"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="threads"/><category scheme="http://www.blogger.com/atom/ns#" term="TID"/><title type='text'>TID</title><content type='html'>В интернете свободно доступна интересная и полезная книга о программировании в Линуксе: &lt;a href=&quot;http://www.advancedlinuxprogramming.com/&quot;&gt;Advanced Linux Programming&lt;/a&gt;. К несчастью, некоторые темы устарели. Одна из них - 4.5 GNU/Linux Thread Implementation. В книге говорится, что треды GNU/Linux реализованы как процессы. Следующий код должен это подтвердить, но он этого не делает:

&lt;pre&gt;
&lt;code&gt;
#include &amp;lt;pthread.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

void *thread_fun(void *arg)
{
    fprintf(stderr, &quot;child thread pid is %d\n&quot;, (int)getpid());
    while(1);
    return NULL;
}

int main(void)
{
    pthread_t thread;
    fprintf(stderr, &quot;main thread pid is %d\n&quot;, (int)getpid());
    pthread_create(&amp;thread, NULL, &amp;thread_fun, NULL);
    while(1);
    return 0;
}
&lt;/code&gt;
&lt;/pre&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
Вместо разных PID программа показывает один:

&lt;pre&gt;
&lt;code&gt;
$ ./alp-thread-pid
main thread pid is 17280
child thread pid is 17280
&lt;/code&gt;
&lt;/pre&gt;

Как найти идентификатор треда? Есть простая функция &lt;code&gt;pthread_t pthread_self(void);&lt;/code&gt;. Её нужно использовать при написании кросс-платформенной программы. Возвращаемый этой функцией идентификатор гарантированно уникален для процесса, но может быть повторно использован после завершения треда. Кроме того, тип возвращаемого значения непрозрачен - POSIX.1 разрешает использовать в качестве него арифметический тип или структуру. Поэтому даже распечатать такую величину невозможно, если неизвестно, как представляется идентификатор реализацией.
&lt;br&gt;
Однако ядро Линукс использует свои идентификаторы тредов. Их можно получить вызовом функции &lt;code&gt;pid_t gettid(void);&lt;/code&gt;. Но glibc не предоставляет обертки к этому системному вызову! Хорошо, напишем свою и распечатаем результат:

&lt;pre&gt;
&lt;code&gt;
#include &amp;lt;pthread.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;sys/syscall.h&amp;gt;

pid_t gettid(void)
{
    return syscall(SYS_gettid);
}

void *thread_fun(void *arg)
{
    fprintf(stderr, &quot;child thread pid is %d\n&quot;, (int)getpid());
    fprintf(stderr, &quot;child kernel thread tid is %d\n&quot;, (int)gettid());
    while(1);
    return NULL;
}

int main(void)
{
    pthread_t thread;
    fprintf(stderr, &quot;main thread pid is %d\n&quot;, (int)getpid());
    fprintf(stderr, &quot;main kernel thread tid is %d\n&quot;, (int)gettid());
    pthread_create(&amp;thread, NULL, &amp;thread_fun, NULL);
    while(1);
    return 0;
}
&lt;/code&gt;
&lt;/pre&gt;

Запускаем:
&lt;pre&gt;
&lt;code&gt;
$ ./thread-pid 
main thread pid is 18866
main kernel thread tid is 18866
child thread pid is 18866
child kernel thread tid is 18867
&lt;/code&gt;
&lt;/pre&gt;
Получили TID, победа!</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/970878648058664670/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/970878648058664670?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/970878648058664670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/970878648058664670'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2012/06/tid.html' title='TID'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-4666449239824667612</id><published>2011-07-12T09:34:00.007+07:00</published><updated>2013-04-27T12:31:56.191+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Conway"/><category scheme="http://www.blogger.com/atom/ns#" term="Life"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><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="программирование"/><category scheme="http://www.blogger.com/atom/ns#" term="эмуляция"/><title type='text'>Life</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/en/f/f2/Game_of_life_animated_glider.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;84&quot; width=&quot;84&quot; src=&quot;http://upload.wikimedia.org/wikipedia/en/f/f2/Game_of_life_animated_glider.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Говорят, всё гениальное - просто. Сегодня я в этом убедился.&lt;br /&gt;
&lt;br /&gt;

В поисках разминки для мозгов я бороздил просторы интернета, и набрёл на невзрачный снимок экрана на сайте &lt;a href=&quot;http://screenshots.debian.net&quot;&gt;http://screenshots.debian.net&lt;/a&gt;: &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6mm4hUWfK1nIVzM9ndY87-gjGYAX9PfVJEJkbK_5dtNfeb0UZsIDli0mLCJH6ZeBME4PJll9bvGRDYh3W45Fmn3QhQE2WdICOWG7Gj7UmRIORw29jt7JrpfweCexJLLdTzTZOKIBHOWQF/s1600/1512_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;262&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6mm4hUWfK1nIVzM9ndY87-gjGYAX9PfVJEJkbK_5dtNfeb0UZsIDli0mLCJH6ZeBME4PJll9bvGRDYh3W45Fmn3QhQE2WdICOWG7Gj7UmRIORw29jt7JrpfweCexJLLdTzTZOKIBHOWQF/s320/1512_large.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Я слышал о &quot;Жизни&quot; и раньше, даже видел работающие примеры этой игры, но не полагал, что вся её суть кроется всего лишь в паре утверждений.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;br /&gt;
Пакет zivot успешно установился, однако работал довольно странно: смена поколений проходила лишь по нажатию Enter, фигуры развития клеток не были похоже на фигуры &quot;Жизни&quot; Конвея. Тогда я скачал исходный код пакета. Несколько раз прочитав исходник, я понял как работает программа — Fortran оказался не таким уж и сложным, вдобавок идея действительно проста. Был очень удивлён тому, что бо́льшая часть кода отвечает за отрисовку &quot;Вселенной&quot; — по сути, всего лишь рамок. Код же, ответственный за развитие и смену поколений, занимал всего несколько строк.&lt;br /&gt;
&lt;br /&gt;
Итак, что же такое &quot;Жизнь&quot;? Прежде всего — гениальная находка учёного. Простейший автомат, отображающий жизнь, смерть и смену поколений клеток. Были введены лишь два правила:&lt;br /&gt;
* жизнь зарождается в клетке, рядом с которой ровно три живые клетки;&lt;br /&gt;
* если у живой клетки есть две или три живые соседки, то эта клетка продолжает жить; в противном случае (если соседей меньше двух или больше трёх) клетка умирает (от «одиночества» или от «перенаселённости»).&lt;br /&gt;
&lt;br /&gt;
Вы спросите, что же можно вывести, используя лишь эти два правила? Неожиданно много. Изобретение повлекло за собой многие необычные открытия и повлияло на развитие различных наук. Да-да, всего лишь исчезающие и появляющиеся клеточки на поле.&lt;br /&gt;
&lt;br /&gt;
Идея мне очень понравилась, и я довольно быстро перебил код на язык Си, немного подправив исходник Фортрана для полного соответствия правилам Конвея. Итак, добро пожаловать: &lt;b&gt;&lt;a href=&quot;https://github.com/JIghtuse/c-life&quot;&gt;https://github.com/JIghtuse/c-life&lt;/a&gt;&lt;/b&gt;. Планирую добавить более удобную расстановку первого поколения. Предложения и замечания принимаются.&lt;br /&gt;
&lt;br /&gt;
Заинтересовались? Немного информации (довольно интересной) есть &lt;a href=&quot;http://en.wikipedia.org/wiki/Conway&#39;s_Game_of_Life&quot;&gt;здесь&lt;/a&gt;. Одни из самых продвинутых и старых (однако от этого не перестающих быть интересными) эмуляторов &quot;Жизни&quot;: &lt;a href=&quot;http://litwr2.atspace.eu/xlife.php&quot;&gt;xlife&lt;/a&gt;, &lt;a href=&quot;http://golly.sourceforge.net/&quot;&gt;golly&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
PS. Да, github — очень удобная вещь.&lt;br /&gt;
&lt;br /&gt;
PPS. glider (первая картинка поста) с некоторых пор является эмблемой хакеров.</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/4666449239824667612/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/4666449239824667612?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/4666449239824667612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/4666449239824667612'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/07/life.html' title='Life'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6mm4hUWfK1nIVzM9ndY87-gjGYAX9PfVJEJkbK_5dtNfeb0UZsIDli0mLCJH6ZeBME4PJll9bvGRDYh3W45Fmn3QhQE2WdICOWG7Gj7UmRIORw29jt7JrpfweCexJLLdTzTZOKIBHOWQF/s72-c/1512_large.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-2487400749565248992</id><published>2011-06-10T22:24:00.000+07:00</published><updated>2011-06-10T22:24:02.502+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chromebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Office 365"/><category scheme="http://www.blogger.com/atom/ns#" term="Terminal"/><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="облачные вычисления"/><title type='text'>Terminal</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh6.googleusercontent.com/-W7CcBKKxyVg/SQnBzSNnx_I/AAAAAAAAAts/PtJYSbmkKfw/s512/%25255B1%25255D%2525202008-06-15%25252C%252520%2525D0%25259A%2525D0%2525B0%2525D0%2525BC%2525D0%2525B5%2525D1%252580%2525D0%2525BD%2525D1%25258B%2525D0%2525B9%252520JPG%25252C%2525202%252520images%25252C%252520IMGP3951%252520-%252520IMGP3952%252520-%2525203903x4010%252520-%252520CCUH-Smartblend.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;512&quot; width=&quot;499&quot; src=&quot;https://lh6.googleusercontent.com/-W7CcBKKxyVg/SQnBzSNnx_I/AAAAAAAAAts/PtJYSbmkKfw/s512/%25255B1%25255D%2525202008-06-15%25252C%252520%2525D0%25259A%2525D0%2525B0%2525D0%2525BC%2525D0%2525B5%2525D1%252580%2525D0%2525BD%2525D1%25258B%2525D0%2525B9%252520JPG%25252C%2525202%252520images%25252C%252520IMGP3951%252520-%252520IMGP3952%252520-%2525203903x4010%252520-%252520CCUH-Smartblend.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
В книге &quot;Современные операционные системы&quot; Эндрю Таненбаум несколько раз говорит о том, что развитие компьютерной индустрии проходит по спирали: позабытые казалось бы технологии переживают своё рождение несколько раз на различных типах устройств, либо с течением времени обретают актуальность.&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
На раннем этапе развития компьютеров к ним подключались терминалы. Порой это были довольно большие устройства, предоставляющие сразу все устройства ввода-вывода для машины. С терминалом работал оператор. К тому времени разделение инжинеров и программистов уже произошло — человеку не нужно было больше глубоко разбираться в физике и технике, чтобы работать на компьютере.&lt;br /&gt;
&lt;br /&gt;
Теперь к нашим временам. Office 365, Chromebook, Cloud Computing... Все эти новшества позволяют нам вобще не задумываться как и что работает, а сразу получать готовые, работающие машины. Нам даже не нужно администрировать систему, следить за ней (в случае с Chromebook). По сути компьютеры становятся лишь придатком, позволяющим нам подключаться к великой Паутине и жить там. Мозг и центр переносится на мощные серверы, которые обеспечивают нас всем необходимым, выдавая готовый результат вычислений и/или виртуализаций. Домашние компьютеры же становятся не чем иным как удаленным терминалом, набором устройств для ввода информации и получения в каком-либо виде её вывода.&lt;br /&gt;
&lt;br /&gt;
От программистов теперь и окончательно отпочковались пользователи, порой совершенно не интересующиеся внутренностями своей машины или операционной системы. Есть результат, а какой магией он достигается совсем не важно. Со временем пользователи, видимо, станут только ещё тупее, погружаясь в пучину социальных сетей, глубоко пронизывающих всю жизнь. Мы постепенно проектируем Матрицу, не считаете? Что самое странное (впрочем, в фильме было подобное же) — люди сами охотно в неё ныряют. Жутко. Однако дети Эйнштейна были, есть, и будут. Это не может не радовать. Давайте не будем забывать о нашем интересе. В путь! Ковыряться в недрах системы, писать что-то своё, разбираться как это всё работает.&lt;br /&gt;
&lt;br /&gt;
Правда?&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/2487400749565248992/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/2487400749565248992?isPopup=true' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/2487400749565248992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/2487400749565248992'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/06/terminal.html' title='Terminal'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/-W7CcBKKxyVg/SQnBzSNnx_I/AAAAAAAAAts/PtJYSbmkKfw/s72-c/%25255B1%25255D%2525202008-06-15%25252C%252520%2525D0%25259A%2525D0%2525B0%2525D0%2525BC%2525D0%2525B5%2525D1%252580%2525D0%2525BD%2525D1%25258B%2525D0%2525B9%252520JPG%25252C%2525202%252520images%25252C%252520IMGP3951%252520-%252520IMGP3952%252520-%2525203903x4010%252520-%252520CCUH-Smartblend.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-3541168626689684388</id><published>2011-06-07T01:02:00.002+07:00</published><updated>2011-06-07T01:09:45.285+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CentOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="stability"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="обновления"/><category scheme="http://www.blogger.com/atom/ns#" term="стабильность"/><title type='text'>Stability</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHO7LmObnmhC7cCqwW3kyPPnQe_9HCNgsEEuBPDEoMIctj-W-bMCygsYUAJBD3xvj5QBM_vxPZ89Cbv-qAgw20oNmT-UyUuEZDoo09UEH_QupOE6bzmHI5fzGK3DZl9xRmzA5JvREeX65x/s1600/466px-Yin_yang.svg.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHO7LmObnmhC7cCqwW3kyPPnQe_9HCNgsEEuBPDEoMIctj-W-bMCygsYUAJBD3xvj5QBM_vxPZ89Cbv-qAgw20oNmT-UyUuEZDoo09UEH_QupOE6bzmHI5fzGK3DZl9xRmzA5JvREeX65x/s400/466px-Yin_yang.svg.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h1&gt;Стабильность против свежести&lt;/h1&gt;&lt;h2&gt;или история любви&lt;/h2&gt;В нашем мире (свободного программного обеспечения) много священных войн. Это не плохо и не хорошо, это есть. Пожалуй вряд ли можно что-то с этим сделать. Сегодня я хочу рассказать об одном аспекте Linux, по поводу которого ведутся нескончаемые споры.&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
На стабильность операционной системы смотрят обычно под двумя углами. Одни признают её необходимость и стремятся всячески достичь её. На таких дистрибутивах (естественно при некоторых настройках) вполне можно поднять какой-либо сервер и не беспокоиться за очередное обновление безопасности — операционная система &lt;b&gt;обязана&lt;/b&gt; обновиться гладко и безболезненно. Другие полагают, что в дистрибутиве должны быть самые свежие пакеты ежедневно, первых они обычно обзывают некрофилами и клянут всяческими непотребными словами. На мой взгляд сравнивать (а тем паче спорить о том, что лучше) настолько разные системы глупо. Никто в здравом уме не станет ставить Ubuntu(дабы не привлечь на свою голову ненавистников, подчеркну, что речь &lt;b&gt;не&lt;/b&gt; о Server Edition) или Fedora на сервер. Для этого есть Debian и CentOS. Любители же нового, любители эффектов и новых игр никогда не установят себе последние.&lt;br /&gt;
&lt;br /&gt;
Так вот, я хотел поделиться некоторыми мыслями по поводу стабильности первого и второго типов систем. Так вышло, что недавно у меня ломался компьютер, и после смены жесткого диска сразу установить родной мне Debian я не смог — нужно было скачать образы. Попробовал то, что было.&lt;br /&gt;
&lt;br /&gt;
Вспомнил начало своей жизни в Linux — поставил Ubuntu, посмотрел. Стала ещё красивее и удобнее. Что ж, здорово. Постоянная свежесть и все блага, которыми обладает Linux. Можно вполне себе играть в новейшие игры в последней версии Wine. Минусы? Постоянные обновления. Для Ubuntu нужен очень хороший канал связи, чего в нашем общежитии (естественно, университета связи!) как раз не хватает. Сами обновления порой меняют что-то настолько кардинально близкое и понятное, что даже теряешься (это я о Unity).&lt;br /&gt;
Попробовал несколько раз и Fedora. Новый Gnome очень красив. И пока что так же нестабилен. На мой взгляд, сейчас в нём работать — мука. Однако уверен, ситуация будет исправлена.&lt;br /&gt;
&lt;br /&gt;
Затем я решил попробовать установить CentOS. Вот чёрт, столько мороки с установкой у меня не было никогда. Даже опыт установки Slackware парой недель ранее не помог. Я многократно и различными способами записывал образ на флешку, стартовал с неё загрузчик и не мог поставить систему. Первоначально это был liveCD, и я просто не нашёл в этой системе, как же можно установить CentOS. Затем был скачан DVD. Тысячекратные перезаписи на флешку, её вставляния и выдёргивания. Проблема системы установки CentOS для меня заключалась в том, что она не монтирует раздел при выборе пункта меню &quot;с жесткого диска&quot;. Я опробовал это несколько раз. Когда мои нервы были на исходе, меня осенило. Загрузчик полностью выгружается в оперативную память! Я залил на флешку загрузчик и следом на неё же образ диска. Тогда и только тогда я установил CentOS.&lt;br /&gt;
&lt;br /&gt;
Разочарование было велико. Community ENTerprise Operating System установлен в нашем университете и там работает вполне прилично. На нем приятно программировать. На нетбуке же он почему-то не создал сетевой интерфейс, хотя вроде бы определил сетевую карточку. Пакеты были древними (о, не старыми, именно древними — даже Debian по сравнению с этим более свеж). Заморачиваться с настройкой сил не было..&lt;br /&gt;
&lt;br /&gt;
Теперь снова Debian.&lt;br /&gt;
Только что, второй раз затерев кэш и настройки браузера Chromium, я понял, что браузер падал из-за последней версии расширения Adblock plus. Которое: а) из официального источника Google просто не ставилось, принуждая обновляться; б) поставленное с сайта расширения роняло браузер. Попытки найти более старые версии расширения успехом не увенчались.&lt;br /&gt;
&lt;br /&gt;
Некоторые выводы. Быть актуальным и свежим здорово. Но, чёрт возьми, быть назойливым и вынуждая всех обновляться ничуть не лучше, чем навязывать политические взгляды всем, кто думает не как ты. Полагаю, писать отчёт об ошибке в данном случае глупо — скажут, чтобы обновлялся. Пожалуй я найду расширение, спросив у дебианщиков. Хорошо ли это? Чёрт, я бы не сказал.&lt;br /&gt;
&lt;br /&gt;
В очередной раз я убедился в правильности позиционирования Debian. Это действительно Универсальная операционная система, которая не стремится быть блестящей. Это проработанный и стабильный Linux. Я его &lt;b&gt;обожаю&lt;/b&gt;. Обладая всеми функциями, необходимыми системе &quot;рабочего стола&quot;, он вдобавок стабилен и обладает кучей пакетов, что позволяет настроить его под абсолютно любые нужды. Он гармонично сплетает в себе стабильность и красоту необходимых пакетов. Ничего лишнего. Только то, что хочешь ты.&lt;br /&gt;
&lt;br /&gt;
Прошу не принимать сказанное близко к сердцу — не хочу разжечь очередной спор. Это мои мысли по поводу стабильности и свежести дистрибутивов. Спасибо за внимание.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/3541168626689684388/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/3541168626689684388?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/3541168626689684388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/3541168626689684388'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/06/stability.html' title='Stability'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHO7LmObnmhC7cCqwW3kyPPnQe_9HCNgsEEuBPDEoMIctj-W-bMCygsYUAJBD3xvj5QBM_vxPZ89Cbv-qAgw20oNmT-UyUuEZDoo09UEH_QupOE6bzmHI5fzGK3DZl9xRmzA5JvREeX65x/s72-c/466px-Yin_yang.svg.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-5534800552732898751</id><published>2011-05-15T13:20:00.000+07:00</published><updated>2011-05-15T13:20:47.899+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook.com"/><category scheme="http://www.blogger.com/atom/ns#" term="Социальная сеть"/><category scheme="http://www.blogger.com/atom/ns#" term="Цукерберг"/><title type='text'>Facebook</title><content type='html'>Обнаружил, что фильм &quot;Социальная сеть&quot; снял Дэвид Финчер. Сразу же решил посмотреть, хотя до этого не было желания. Как начинающему программисту, мне очень интересно было смотреть на реализацию некоторых идей. Недавно читал статью об архитектуре Facebook, теперь фильм. Марк Цукерберг определенно очень умный и талантливый программист. 500 миллионов пользователей! Настоящая всеобъемлющая паутина, которая затягивает человека.&lt;br /&gt;
С первых же слов опознал Билла Гейтса =) не зря читаю Таненбаума.&lt;br /&gt;
Очень порадовало то, что он даже не рассматривал другие варианты, когда ему понадобился высоконагруженный сервер: &quot;Мне нужен комп с Linux, Apache и MySQL!&quot;. Старый добрый LAMP..&lt;br /&gt;
Фильм интересный, всем советую.</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/5534800552732898751/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/5534800552732898751?isPopup=true' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5534800552732898751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5534800552732898751'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/05/facebook.html' title='Facebook'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-2683670256705110931</id><published>2011-05-03T21:27:00.000+07:00</published><updated>2011-05-03T21:27:14.476+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="books"/><category scheme="http://www.blogger.com/atom/ns#" term="Labirint"/><category scheme="http://www.blogger.com/atom/ns#" term="labirint.ru"/><category scheme="http://www.blogger.com/atom/ns#" term="Tanenbaum"/><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="книги"/><category scheme="http://www.blogger.com/atom/ns#" term="оперционные системы"/><title type='text'>Labirint</title><content type='html'>Впервые сделал покупку в интернет-магазине. Делюсь впечатлениями. Прошу не считать упоминание нижеуказанных марок и магазинов рекламой (антирекламой).&lt;br /&gt;
&lt;br /&gt;
Так повелось, что какую-то часть своих доходов издавна трачу на книги. Считаю, что это не так уж плохо. В нашем Новосибирске есть замечательный магазин &quot;Книгомир-эконом&quot;, в котором новые книги с небольшими дефектами(надорванная корочка, потёртый вид) продаются по значительно сниженной цене, чем обычные. Выбор не слишком богат, но пару раз я совершал довольно успешную покупку (наподобие огромной книги, включающей весь цикл &quot;Стальная крыса&quot; Гарри Гаррисона примерно за 150 р). Есть неплохой &quot;Плиний старший&quot;, где есть интересные скидки, есть возможность прийти, сесть на диванчик и почитать любую книгу.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
Давненько я хотел собрать коллекцию классической, &quot;золотой&quot; компьютерной литературы. Когда преподаватель по операционным системам (&lt;a href=&quot;http://csc.sibsutis.ru/node/26&quot;&gt;С.Н. Мамойленко&lt;/a&gt;) посоветовал в качестве одного из основных источников информации &quot;Современные ОС&quot; Эндрю Таненбаума, я окончательно решил приобрести это издание.&lt;br /&gt;
&lt;br /&gt;
Сначала всё не заладилось. Были определенные проблемы с деньгами, потом всё не было времени выбраться в магазин. Наконец я пришёл в &quot;Плиний&quot;. 1337 рублей. Я ожидал чего-то подобного, но не думал, что цена будет настолько высокой. Не хватало нескольких сотен. И тогда я сделал то, чем занимаюсь каждый день — пошёл на google.com.&lt;br /&gt;
&lt;br /&gt;
Лабиринт привлёк своей ценой на &quot;Современные ОС&quot;. 618 рублей. Доставка в пункт самовывоза бесплатно от 500 р. Что ж, заказал. Указал галочку бесплатных оповещений по SMS о статусе заказа, регулярно их получал. 21 апреля заказ был оформлен и передан в службу комплектации, 22 уже отправлен из Москвы в Новосибирск. 29 апреля было сообщено, что товар доставлен в пункт самовывоза. И пусть я не успел забрать его сразу 29, а в силу праздников только сегодня его получил, я очень доволен. Книга была бережно обмотана защитной плёнкой, новёхонькой и вкусно пахнущей. Заплатив свои 618 рублей, счастливый, побежал её читать.&lt;br /&gt;
&lt;br /&gt;
Вот так я приобрёл одно из изданий классики computer science. Желаю всем удачных покупок. ;)&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://img.labirint.ru/images/books5/243079/big.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;340&quot; width=&quot;220&quot; src=&quot;http://img.labirint.ru/images/books5/243079/big.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ух ты, уже подорожала.&lt;br /&gt;
Источники информации:&lt;br /&gt;
&lt;a href=&quot;http://www.labirint.ru/books/243079/&quot;&gt;Книга на Лабиринте&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://csc.sibsutis.ru&quot;&gt;Сайт родной кафедры&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/2683670256705110931/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/2683670256705110931?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/2683670256705110931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/2683670256705110931'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/05/labirint.html' title='Labirint'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-4735997761893505466</id><published>2011-04-25T22:19:00.000+07:00</published><updated>2013-04-27T12:33:36.873+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Muuss"/><category scheme="http://www.blogger.com/atom/ns#" term="network"/><category scheme="http://www.blogger.com/atom/ns#" term="ping"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><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="утилита"/><title type='text'>Ping</title><content type='html'>ping для диагностики работы сети многие используют в первую очередь. Это эффективная и довольно простая программа. Задумывались ли вы когда-нибудь, кто её написал?&lt;br /&gt;
Недавно я начал читать книгу Ивана Склярова &quot;Программирование боевого софта под Linux&quot;. Первой утилитой, которую предлагает написать автор, является альтернативная версия ping. Прочитав man ping, в конце документа я обнаружил следующее:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;HISTORY&lt;br /&gt;
The ping command appeared in 4.3BSD.&lt;br /&gt;
&lt;br /&gt;
The version described here is its descendant specific to Linux.&lt;br /&gt;
&lt;/blockquote&gt;И всё. Ни слова об авторе. Досадное недоразумение, которое я решил исправить (тем более, что не нашёл в рунете никакой информации о нём).&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
Итак, о создателе ping.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqaRCMne2LBNvXVHKBifRgR4C6limxCE53Q5tevMDRDF6Ge8h0_LIt3LXcjcPxdHZ8IjFMpOjttw3Feh7-ARy1fA0capoAwDTVsLj833LwSP4rgZjK-R2poNv-_nsZZ8tdLK_Pj6L9VKSS/s1600/ivy-mike.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;128&quot; width=&quot;128&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqaRCMne2LBNvXVHKBifRgR4C6limxCE53Q5tevMDRDF6Ge8h0_LIt3LXcjcPxdHZ8IjFMpOjttw3Feh7-ARy1fA0capoAwDTVsLj833LwSP4rgZjK-R2poNv-_nsZZ8tdLK_Pj6L9VKSS/s400/ivy-mike.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;!--more--&gt;
&lt;h1&gt;wikipedia.org&lt;/h1&gt;&lt;br /&gt;
Майкл Джон Муусс (16 Октября 1958 - 20 Ноября 2000) был автором свободной сетевой утилиты Ping.&lt;br /&gt;
&lt;br /&gt;
Выпускник университета Джона Хопкинса, Муусс был старшим научным сотрудником, специализирующимся на моделировании геометрии твёрдых тел, трассировке лучей, архитектурах MIMD и цифровых компьютерных сетях в исследовательской лаборатории армии Соединенных Штатов Америки в Мэриленде, когда он умер. Он написал ряд программных пакетов (в том числе BRL-CAD) и сетевых утилит (в том числе ttcp и концепцию маршрута по умолчанию, или &quot;шлюза по умолчанию&quot;) и участвовал во множестве других проектов (включая BIND).&lt;br /&gt;
&lt;br /&gt;
Тем не менее, тысячестрочный ping, который он написал в декабре 1983, работая в лаборатории исследования баллистики, является программой, за которую его все помнят. Благодаря его полезности, реализации ping были написаны для большого числа операционных систем, первоначально на BSD Unix, а позднее на других, включая Windows и Mac OS X.&lt;br /&gt;
&lt;br /&gt;
В 1993 ассоциация USENIX вручила Lifetime Achievement Award (Flame) исследовательской группе компьютерных систем университета Калифорнии, Беркли, благодаря 180 лицам, включая Муусса, которые внесли вклад в релиз CSRG&#39;s 4.4BSD-Lite.&lt;br /&gt;
&lt;br /&gt;
Муусс упоминается в двух книгах, The Cuckoo&#39;s Egg (ISBN 0-7434-1146-3) и Cyberpunk: Outlaws and Hackers on the Computer Frontier (ISBN 0-684-81862-0), за его роль в отслеживании взломщиков. Также он упоминается в книге Peter Salus&#39;а A Quarter Century of UNIX.&lt;br /&gt;
&lt;br /&gt;
Муусс умер 20 ноября 2000 в автомобильной катастрофе на автостраде 95. Научная стипендия имени Майкла Дж. Муусса, созданная его друзьями и семьёй Муусс, увековечивает его имя в университете Джона Хопкинса.&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Автобиография&lt;/h1&gt;Г-н Муусс работает с передовыми компьютерными системами уже более двух десятилетий. Сейчас он старший научный сотрудник в исследовательской лаборатории армии США, область научных интересов: трассировка лучей в реальном времени, и синтетическая мультиспектральная основанная на физике генерация изображений с высоким разрешением. С 1981 по 1997 он возглавляет команду передовых компьютерных систем исследовательской лаборатории баллистики армии США (BRL) в научно-исследовательских проектах, касающихся CAD/CAE, графики, сети, операционных систем, параллельных архитектур, а также командования и управления.&lt;br /&gt;
&lt;br /&gt;
Г-н Муусс является архитектором концепции BRL-CAD®, систем CAD/CAE конструктивной блочной геометрии третьего поколения, которая сейчас используется на более чем 3000 сайтов, поддерживающих очень быструю трассировку лучей в очень больших геометрических моделях (эквивалентых триллионну полигонов). Он внес значительный вклад в разработку и развитие сетевой инфраструктуры ARL, одной из лучших в DoD. Его ранний вклад в развитие TCP/IP и InterNet включает программу PING и маршрут по умолчанию в UNIX, редактирование TCP-IP digest и UNIX-Wizards digest.&lt;br /&gt;
&lt;br /&gt;
Г-н. Муусс родился в 1958, получил BES по электротехнике в университете Джона Хопкинса в 1979, и впоследствии получил множество наград и отсылок на свои работы. Является двухкратным победителем U.S. Army Research and Development Achievement Award. &lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Домашняя страница&lt;/h1&gt;Исследовательские интересы Майка Муусса&lt;br /&gt;
К сожалению, Майк Муусс погиб в автокатастрофе 20 ноября 2000.&lt;br /&gt;
Его работа живет в завещании его интеллекта и неукротимого духа -- Ли А. Батлер&lt;br /&gt;
&lt;br /&gt;
Добро пожаловать! Мои исследовательские интересы: компьютерная симуляция ( геометрическое моделирование, генерация синтетических изображений, трассировка лучей, виртуальная реальность ), передовые архитектуры процессора MIMD, высокоскоростные цифровые сети, а также операционные системы. Моя страсть на данный момент - трассировка лучей в реальном времени с 3-D атмосферой, для создания основанного на физике симулятора &quot;виртуальной реальности&quot;.&lt;br /&gt;
&lt;br /&gt;
Я архитектор BRL-CAD, надежной системы моделирования третьего поколения CSG, предоставляемой бесплатно, о которой вы скорее всего не слышали, а также автор ping, ttcp, и прочих различных сетевых лакомств . Ping это маленький тысячестроковый хак, который я написал, и о котором, кажется, знают все. *смешок* Он включен в каждую копию UNIX® и Microsoft Windows95® и WindowsNT®, присутствуя таким образом почти в каждом компьютере на нашей планете.&lt;br /&gt;
&lt;br /&gt;
Если вам интересно, моя фамилия произносится &quot;мус&quot;, как животное.&lt;br /&gt;
&lt;br /&gt;
В отличие от любого другого документа в Сети, эта страница находится в окончательной форме и является полностью законченной. *смешок* &lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;История программы Ping&lt;/h1&gt;&lt;br /&gt;
Да, это так! Я автор ping для UNIX. Ping это маленький тысячестроковый хак, который я написал, и о которым слышали практически все. :-)&lt;br /&gt;
&lt;br /&gt;
Я назвал его в честь звука, издаваемого эхолотом, вдохновленный самим принципом эхо-локации. В колледже я сделал множество систем моделирования гидролокатора и радиолокатора, поэтому аналогия &quot;Киберпространство&quot; казалось очень удачной. Точно та же парадигма применительно к новой предметной области: ping использует временные пакеты IP/ICMP ECHO_REQUEST и ECHO_REPLY для испытания &quot;дистанции&quot; до целевой машины.&lt;br /&gt;
&lt;br /&gt;
Первоначальный импульс для написания мной PING для 4.2a BSD UNIX пришёл от брошенного замечания в июле 1983 доктором Дэйвом Миллзом, когда мы участвовали во встрече DARPA в Норвегии. Он описал некоторые работы, которые он выполнил на своих системах &quot;Fuzzball&quot; LSI-11 для измерения задержки в пути, используя эхо-пакеты ICMP.&lt;br /&gt;
&lt;br /&gt;
В декабре 1983 я столкнулся с некоторыми странностями в поведении сети IP в BRL. Вспомнив комментарии доктора Миллза, я быстро написал программу PING program, работавшую на открытом SOCK_RAW AF_INET в стиле ICMP на socket() в стиле Беркли. Код отлично скомпилировался, но он не работал - в ядре не было поддержки сокетов raw ICMP! Возмущенный, я написал поддержку ядра, и всё успешно работало до восхода солнца. Неудивительно, что Чак Кеннеди (&quot;Кермит&quot;) исправил поддержку сетевого аппаратного обеспечения до того как я смог запусить мой самый первый пакет &quot;ping&quot;. Но я использовал его несколько раз с тех пор. *смешок*. Если бы я знал тогда, что это будет мой самый известный достижением в жизни, я бы работал на нем в другой день или два, и добавил еще несколько вариантов.&lt;br /&gt;
&lt;br /&gt;
Люди в Беркли охотно забрали мои изменения в ядре и исходные коды PING, и с тех пор он стал стандартной составной частью Berkeley UNIX. Вследствие его свободности, он был впоследствии портирован на множество систем, включая Microsoft Windows95 и WindowsNT. Вы можете узнать его по отличительным сообщениям, которые он печатает, которые выглядят следующим образом:&lt;br /&gt;
&lt;br /&gt;
PING vapor.arl.army.mil (128.63.240.80): 56 data bytes&lt;br /&gt;
64 bytes from 128.63.240.80: icmp_seq=0 time=16 ms&lt;br /&gt;
64 bytes from 128.63.240.80: icmp_seq=1 time=9 ms&lt;br /&gt;
64 bytes from 128.63.240.80: icmp_seq=2 time=9 ms&lt;br /&gt;
64 bytes from 128.63.240.80: icmp_seq=3 time=8 ms&lt;br /&gt;
64 bytes from 128.63.240.80: icmp_seq=4 time=8 ms&lt;br /&gt;
^C&lt;br /&gt;
----vapor.arl.army.mil PING Statistics----&lt;br /&gt;
5 packets transmitted, 5 packets received, 0% packet loss&lt;br /&gt;
round-trip (ms)  min/avg/max = 8/10/16&lt;br /&gt;
&lt;br /&gt;
В 1993, десять лет спустя после написания мной PING, ассоциация USENIX подарила мне красивый свиток и назвала меня получателем награды ассоциации USENIX - 1993 Lifetime Achievement Award, представленной для группы исследования компьютерных систем (CSRG) университета Беркли в Калифорнии в 1979-1993. &quot;Нам представляется честь наградить глубокие интеллектуальные достижения и высочайший уровень обслуживания для нашего сообщества. Согласно принципам CSRG настоящим мы признаем следующие лица и организации участниками, сотрудниками и сторонниками CSRG&quot; Вот это да!&lt;br /&gt;
&lt;br /&gt;
Хотите увидеть исходный код? (&lt;a href=&quot;http://ftp.arl.army.mil/pub/ping.shar&quot;&gt;40k&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
С моей точки зрения PING это не акроним от Packet InterNet Grouper, а аналогия с гидролокатором. Тем не менее, я слышал из вторых уст что Дэйв Миллз опубликовал это объяснение имени, поэтому они оба правильны. Что ж, я думаю правительство ошиблось с расширением акронимов! :-)&lt;br /&gt;
&lt;br /&gt;
Фил Дэйкстра добавил в PING поддержку ICMP Record Route, но в те ранние дни лишь немногие маршрутизаторы их обрабатывают, что делает эту особенность практически бесполезной. Ограничение на число переходов, которые могут быть записаны в заголовке IP исключается благодаря измерению очень длинных путей.&lt;br /&gt;
&lt;br /&gt;
Я безумно ревновал Вана Джэкобсона из LBL, когда он импользовал мою поддержку ICMP ядра для написания TRACEROUTE, понимая, что он может получить сообщения ICMP Time-to-Live Exceeded при пинговании модуляцией IP поля времени жизни - time to life (TTL). Жаль, что я думал об этом! :-) Конечно, реальный traceroute использует дейтаграммы UDP, потому что маршрутизаторы не должны генерировать сообщения ошибок ICMP для сообщений ICMP.&lt;br /&gt;
&lt;br /&gt;
Лучшая история о ping, которую я когда-либо слышал, была рассказана мне на конференции USENIX. Администратору сети для определения обрыва Ethernet соединил программу ping с его программой vocoder, по сути написав:&lt;br /&gt;
&lt;br /&gt;
ping goodhost | sed -e &#39;s/.*/ping/&#39; | vocoder&lt;br /&gt;
&lt;br /&gt;
Он направил выход vocoder в его офисное стерео и повысил громкость на уровень, который только мог выдержать. Компьютер кричал &quot;Пинг, пинг, пинг...&quot; раз в секунду, и он бродил по зданию, шевеля разъемы Ethernet, пока звук не прекратился. Таким образом он обнаружил место обрыва.&lt;br /&gt;
&lt;br /&gt;
Источники информации:&lt;br /&gt;
&lt;a href=&quot;http://ftp.arl.mil/mike&quot;&gt;Домашняя страница&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Mike_Muuss&quot;&gt;en.wikipedia.org&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Замечания по переводу принимаются.&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/4735997761893505466/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/4735997761893505466?isPopup=true' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/4735997761893505466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/4735997761893505466'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/04/ping.html' title='Ping'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqaRCMne2LBNvXVHKBifRgR4C6limxCE53Q5tevMDRDF6Ge8h0_LIt3LXcjcPxdHZ8IjFMpOjttw3Feh7-ARy1fA0capoAwDTVsLj833LwSP4rgZjK-R2poNv-_nsZZ8tdLK_Pj6L9VKSS/s72-c/ivy-mike.gif" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-5990794293021335962</id><published>2011-04-20T06:18:00.001+07:00</published><updated>2013-04-27T12:35:07.175+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="declarations"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Reading C type declarations"/><category scheme="http://www.blogger.com/atom/ns#" term="type"/><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="чтение"/><category scheme="http://www.blogger.com/atom/ns#" term="чтение описаний типов"/><title type='text'>Declarations</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6KheHTXOHBiT1teEh5R13_PxO-L6RqukmepQ2qW-Ff21rVpmBYl15NFG_S52ki0hsSqul9ACFbIAFanDUwJ62s3DfEECDycA1WsS3X5lSJDouuftGq1SOe4dyVVYBld-5Kf3jKQL4K1FP/s1600/foo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6KheHTXOHBiT1teEh5R13_PxO-L6RqukmepQ2qW-Ff21rVpmBYl15NFG_S52ki0hsSqul9ACFbIAFanDUwJ62s3DfEECDycA1WsS3X5lSJDouuftGq1SOe4dyVVYBld-5Kf3jKQL4K1FP/s400/foo.jpg&quot; width=&quot;241&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h1&gt;Чтение объявлений¹ типов Си.&lt;/h1&gt;&amp;nbsp; &lt;br /&gt;
Перевод статьи &lt;a href=&quot;http://www.unixwiz.net/techtips/reading-cdecl.html&quot;&gt;Reading C type declarations&lt;/a&gt;, увидел у &lt;a href=&quot;http://alenacpp.blogspot.com/2011/04/inception-in-c.html&quot;&gt;Alenacpp&lt;/a&gt;.&lt;br /&gt;
Даже для новичков программирования на Си не представляется проблемой прочесть простые описания Си наподобие&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;int      foo[5];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // foo это массив из пяти int (целых)&lt;br /&gt;
char    *foo;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;       // foo это указатель на char (символ)&lt;br /&gt;
double   foo();&amp;nbsp;&amp;nbsp;      // foo это функция, возвращающая double (вещественное с двойной точностью)&lt;/blockquote&gt;&lt;br /&gt;
Однако когда объявления становятся немного более сложными, нам уже труднее понять, на что же мы смотрим.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;char *(*(**foo[][8])())[]; // чтоо ?????&lt;/blockquote&gt;&lt;br /&gt;
Оказывается, что правила чтения описаний переменных Си произвольной сложности легко понимаемы даже начинающими программистами (хотя как на самом деле использовать описанную таким способом переменную может быть недостижимо человеческому уму).&lt;br /&gt;
&lt;br /&gt;
Данная технологическая записка расскажет, как это сделать.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;Основные и производные типы.&lt;/h1&gt;В дополнение к имени переменной объявление состоит из одного &quot;основного типа&quot; и нуля или более &quot;производных типов&quot;, и очень важно понять различия между ними.&lt;br /&gt;
Полный список основных типов таков:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;• char   • signed char    • unsigned char     &lt;br /&gt;
• short  • unsigned short      &lt;br /&gt;
• int  • unsigned int      &lt;br /&gt;
• long  • unsigned long      &lt;br /&gt;
• float  • double  • void   &lt;br /&gt;
• struct tag     • union tag     • enum tag      &lt;br /&gt;
• long long  • unsigned long long   • long double      ANSI/ISO C only&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Описание может иметь только один основной тип, и он всегда стоит с левого края выражения.&lt;br /&gt;
Основные типы дополняются &quot;производными&quot;, и в Си есть три таких:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; *   указатель на...&lt;/li&gt;
&lt;/ul&gt;Обозначается символом *, и очевидно, что указатель всегда на что-то указывает.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; []   массив из...&lt;/li&gt;
&lt;/ul&gt;&quot;Массив из&quot; может быть безразмерным -- [] -- или размерным -- [10] -- однако размеры в действительности не играют значительной роли в чтении описания. Мы просто включаем размер в описание. Очевидно, что массив должен быть &quot;массивом из&quot; чего-либо. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; ()   функция, возвращающая...&lt;/li&gt;
&lt;/ul&gt;Обычно указывается парой смежных скобок - () - хотя помимо этого можно найти прототип списка параметров внутри. Списки параметров (если они есть) в действительности не играют роли в чтении описаний, и мы просто их игнорируем. Заметим, что круглые скобки говорят &quot;функция, возвращающая&quot;, в отличие от скобок, используемых в группировании: группирующие скобки окружают имя переменной, в то время как скобки &quot;функции, возвращающей&quot; всегда находятся справа. &lt;br /&gt;
Функции не имеют смысла, пока они не возвращают что-либо (мы также вводим void (недействительный тип), взмахивая рукой и делая вид, что &quot;возвращаем&quot; недействительное).&lt;br /&gt;
&lt;br /&gt;
Производный тип &lt;i&gt;всегда&lt;/i&gt; изменяет то, что следует за ним, будь то основной тип или другой производный тип, и для правильного чтения описания мы всегда должны включать предлог (&quot;на&quot;, &quot;из&quot;, &quot;возвращающий&quot;). Сказав &quot;указатель&quot; вместо &quot;указатель на&quot;, вы попросту поломаете описание.&lt;br /&gt;
Вполне вероятно, что выражения типа могут не иметь производных типов (то есть, &quot;int i&quot; описывает &quot;i как int (целое)&quot;), или наоборот иметь множество оных. Интерпретация производных типов, как правило, является камнем преткновения при чтении сложных описаний, однако эта проблема решается с помощью приоритета операций в следующем разделе.&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Приоритет операций&lt;/h1&gt;Практический каждый программист на Си знаком с таблицей приоритетов операций, которая даёт правила, говорящие (к примеру), что умножение и деление имеет более высокий приоритет (выполняются перед), чем сложение или вычитание, а скобки могут быть использованы для изменения группирования. Это кажется естественным для &quot;нормальных&quot; выражений, но оказывается, что те же самые правила применимы и к описаниям — они являются больше выражениями типов, чем вычислений.&lt;br /&gt;
&lt;br /&gt;
Операторы типов &quot;массив из&quot; [] и &quot;функция, возвращающая&quot; () имеют более высокий приоритет, чем &quot;указатель на&quot; *, и это формирует к некоторым довольно простым правилам для расшифрования.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Всегда&lt;/i&gt; начинайте с имени переменной:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; foo это ... &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
и &lt;i&gt;всегда&lt;/i&gt; заканчивайте основным типом:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; foo это ... int (целых) &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Работа над &quot;заполнением середины&quot;, как правило, является самой сложной, однако она может быть сведена к следующему правилу:&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt; &quot;иди направо пока можешь, иди налево когда должен&quot;&lt;/b&gt; &lt;/u&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Начиная свой путь от имени переменной, учитывая правила приоритета и принимая во внимания маркеры производных типов, нужно продвигаться вправо так далеко, насколько это возможно до врезания в группирующие скобки. Затем идите налево к соответствующей скобке. &lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Простой пример&lt;/h1&gt;&lt;br /&gt;
Начнём с простого примера:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; long **foo[7];&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Подойдем к этому систематически, концентрируясь только на одной или двух маленьких частях, для формирования описания на &lt;s&gt;английском&lt;/s&gt; русском языке. Мы будем показывать, как это следует делать, фокусируя внимания на красном и вычеркивая части, с которыми мы уже отработали.&lt;br style=&quot;color: red;&quot; /&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt; long&lt;/span&gt; **&lt;span style=&quot;color: red;&quot;&gt;foo&lt;/span&gt; [7];&lt;/li&gt;
&lt;/ul&gt;Начинаем с имени переменной и с основного типа: &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;foo это &lt;span style=&quot;color: black;&quot;&gt;...&lt;/span&gt; длинное целое &lt;/span&gt;         ²&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;strike style=&quot;color: blue;&quot;&gt;&lt;i&gt;long&lt;/i&gt;&lt;/strike&gt;&lt;span style=&quot;color: blue;&quot;&gt; &lt;/span&gt;** &lt;strike style=&quot;color: blue;&quot;&gt;&lt;i&gt;foo&lt;/i&gt;&lt;/strike&gt;&lt;span style=&quot;color: red;&quot;&gt;[7]&lt;/span&gt;;&lt;/li&gt;
&lt;/ul&gt;В данной точке с именем переменной соседствует два производных типа: &quot;массив из 7&quot; и &quot;указатель на&quot;, а правило гласит, что нужно следовать направо пока мы можем, поэтому в данном случае мы останавливаемся на &quot;массив из 7&quot; &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;массив из 7&lt;/span&gt; ... &lt;span style=&quot;color: blue;&quot;&gt;длинных целых&lt;/span&gt;          ³&lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;strike style=&quot;color: blue;&quot;&gt;&lt;i&gt;long&lt;/i&gt;&lt;/strike&gt; *&lt;span style=&quot;color: red;&quot;&gt;*&lt;/span&gt; &lt;strike style=&quot;color: blue;&quot;&gt;&lt;i&gt;foo[7]&lt;/i&gt;&lt;/strike&gt;;&lt;/li&gt;
&lt;/ul&gt;Теперь мы ушли так далеко вправо, как было возможно, поэтому внутрення часть соединяется только с &quot;указателем на&quot; - берем его.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это массив из 7&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;указателей на&lt;/span&gt; ... &lt;span style=&quot;color: blue;&quot;&gt;длинные целые &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;strike style=&quot;color: blue;&quot;&gt;&lt;i&gt;long&lt;/i&gt;&lt;/strike&gt; &lt;span style=&quot;color: red;&quot;&gt;*&lt;/span&gt; &lt;strike style=&quot;color: blue;&quot;&gt;&lt;i&gt;*foo[7]&lt;/i&gt;&lt;/strike&gt;;&lt;/li&gt;
&lt;/ul&gt;Теперь внутренняя часть прикасается только к &quot;указателю на&quot;, поэтому выбираем и его.&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это массив из 7 указателей на&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;указатели на&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;длинные целые &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Описание готово!&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Жесткий пример&lt;/h1&gt;&lt;br /&gt;
Чтобы действительно проверить наши навыки, мы попробуем очень сложное описание, которое вероятнее всего никогда не появится в реальной жизни (в самом деле: мы сломали мозг, размышляя как же это может использоваться). Однако это покажет нам, что правила растягиваются для очень сложных описаний.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;span style=&quot;color: red;&quot;&gt;char&lt;/span&gt; *(*(**&lt;span style=&quot;color: red;&quot;&gt;foo&lt;/span&gt; [][8])())[];&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Все описания начинаются так: &quot;имя переменной это .... основной тип&quot; &lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;foo это&lt;/span&gt; ... &lt;span style=&quot;color: red;&quot;&gt;символ&lt;/span&gt; &lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;s style=&quot;color: blue;&quot;&gt;char&lt;/s&gt; *(*(**&lt;s style=&quot;color: blue;&quot;&gt;foo&lt;/s&gt;[] [8])())[];&lt;/li&gt;
&lt;/ul&gt;Внутренняя часть прикасается к &quot;массиву из&quot; и &quot;указателю на&quot; - идем вправо. &lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;массив из&lt;/span&gt; ... &lt;span style=&quot;color: blue;&quot;&gt;символов&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;s style=&quot;color: blue;&quot;&gt;char&lt;/s&gt; *(*(**&lt;s style=&quot;color: blue;&quot;&gt;foo[]&lt;/s&gt;&lt;span style=&quot;color: red;&quot;&gt;[8]&lt;/span&gt;)())[];&lt;/li&gt;
&lt;/ul&gt;Снова в описании противопоставлены левое и правое, но это не является правилом: правило говорит нам следовать направо так далеко, как только мы можем. Здесь мы снова видим, что внутренняя часть соседствует с &quot;массивом из&quot; и &quot;указателем на&quot;. Снова идем направо. &lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это массив из&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;массивов из 8&lt;/span&gt; ... &lt;span style=&quot;color: blue;&quot;&gt;символов &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;s style=&quot;color: blue;&quot;&gt;char&lt;/s&gt; *(*(*&lt;span style=&quot;color: red;&quot;&gt;*&lt;/span&gt; &lt;s style=&quot;color: blue;&quot;&gt;foo[][8]&lt;/s&gt;)())[];&lt;/li&gt;
&lt;/ul&gt;Теперь мы достигли скобок, используемых для группирования, и это прерывает наше следование направо. Итак, нам надо идти обратно, собирая все части слева (однако только до соответствующей скобки). Выбираем &quot;указатель на&quot;: &lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это массив из массивов из 8&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;указателей на&lt;/span&gt; ... &lt;span style=&quot;color: blue;&quot;&gt;символы &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;s style=&quot;color: blue;&quot;&gt;char&lt;/s&gt; *(*(&lt;span style=&quot;color: red;&quot;&gt;*&lt;/span&gt; &lt;s style=&quot;color: blue;&quot;&gt;*foo[][8]&lt;/s&gt;)())[];&lt;/li&gt;
&lt;/ul&gt;Снова возвращаемся налево, выбирая следующий &quot;указатель на&quot;: &lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это массив из массивов из 8 указателей на&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;указатель на&lt;/span&gt; ... &lt;span style=&quot;color: blue;&quot;&gt;символ&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;s style=&quot;color: blue;&quot;&gt;char&lt;/s&gt; *(*&lt;s style=&quot;color: blue;&quot;&gt;(**foo[][8])&lt;/s&gt;&lt;span style=&quot;color: red;&quot;&gt;()&lt;/span&gt;)[];&lt;/li&gt;
&lt;/ul&gt;Выбрав на предыдущем шаге &quot;указатель на&quot;, мы миновали целое подвыражение в скобках, поэтому &quot;забираем&quot; также и скобки. Таким образом мы внутренняя часть прикасается к &quot;функции, возвращающей&quot; справа, и &quot;указателем на&quot; слева - идём направо: &lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это массив из массивов из 8 указателей на указатель на&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;функцию, возвращающую&lt;/span&gt; ... &lt;span style=&quot;color: blue;&quot;&gt;символ &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;s style=&quot;color: blue;&quot;&gt;char&lt;/s&gt;&lt;span style=&quot;color: blue;&quot;&gt; &lt;/span&gt;*(&lt;span style=&quot;color: red;&quot;&gt;* &lt;/span&gt;&lt;s style=&quot;color: blue;&quot;&gt;(**foo[][8])()&lt;/s&gt; )[];&lt;/li&gt;
&lt;/ul&gt;Мы снова достигли группирующих скобок, поэтому возвращаемся налево: &lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это массив из массивов из 8 указателей на указатель на функцию, возвращающую&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;указатель на&lt;/span&gt; ... &lt;span style=&quot;color: blue;&quot;&gt;символ &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;s style=&quot;color: blue;&quot;&gt;char&lt;/s&gt; * &lt;s style=&quot;color: blue;&quot;&gt;(*(**foo[][8])())&lt;/s&gt;&lt;span style=&quot;color: red;&quot;&gt;[]&lt;/span&gt;;&lt;/li&gt;
&lt;/ul&gt;Вычеркивая группирующие скобки, мы обнаруживаем, что внутренняя часть соприкасается с &quot;массивом из&quot; справа, и &quot;указателем на&quot; слева. Следуем направо: &lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это массив из массивов из 8 указателей на указатель на функцию, возвращающую указатель на&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;массив из&lt;/span&gt; ... &lt;span style=&quot;color: blue;&quot;&gt;символов&lt;/span&gt; &lt;/blockquote&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;s style=&quot;color: blue;&quot;&gt;char&lt;/s&gt; &lt;span style=&quot;color: red;&quot;&gt;*&lt;/span&gt; &lt;s style=&quot;color: blue;&quot;&gt;(*(**foo[][8])())[]&lt;/s&gt;;&lt;/li&gt;
&lt;/ul&gt;В конце концов, мы видим слева единственного соседа, &quot;указатель на&quot;: забираем его для решения задачи. &lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;foo это массив из массивов из 8 указателей на указатель на функцию, возвращающую указатель на массив из &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;указателей на&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;символы&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
Мы представить себе не можем, как эту переменную можно использовать, однако мы по крайней мере можем правильно описать её тип.&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Абстрактные описания&lt;/h1&gt;&lt;br /&gt;
Стандарт Си описывает &quot;абстрактное объявление&quot;, которое используется когда тип должен быть описан, но не ассоциирован с именем переменной. Это случается в двух местах -- приведения типов и аргументы sizeof -- и они могут выглядеть пугающе:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; int (*(*)())() &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
На очевидный вопрос &quot;с чего начать?&quot;, ответ звучит так &quot;найдем место, где будет имя переменной, а далее действовать как с обычным описанием&quot;. Существует только одно место, куда можно вставить имя переменной, и его определение на самом деле несложно. Используя синтаксические правила, скажем что это место:&lt;br /&gt;
&lt;br /&gt;
* справа от всех маркеров производного типа &quot;указатель на&quot;&lt;br /&gt;
* слева от всех маркеров производного типа &quot;массив из&quot;&lt;br /&gt;
* слева от всех маркеров производного типа &quot;функция, возвращающая&quot;&lt;br /&gt;
* внутри всех группирующие скобок &lt;br /&gt;
&lt;br /&gt;
Взглянув на пример, мы увидим, что правый &quot;указатель на&quot; устанавливает одну границу, а левая &quot;функция, возвращающая&quot; устанваливает другую:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; int (*(* • ) • ())() &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Красные индикаторы • указывают только два места, где возможно наличие имени переменной, однако единственным является левое, посколько оно следует правилу &quot;внутри группирующих скобок&quot;. Это модифицирует наше описание следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; int (*(*foo)())() &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
которое наши &quot;нормальные&quot; правила опишут как:&lt;br /&gt;
&lt;br /&gt;
foo это указатель на функцию, возвращающую указатель на функцию, возвращающую целое &lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Семантические ограничения / замечания&lt;/h1&gt;&lt;br /&gt;
Не все комбинации производных типов допустимы, и возможно создание описания, прекрасно следующего синтаксическим правилам, но не некорректному в Си (то есть, верному синтаксически, но неверному семантически). Здесь мы поговорим о них.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Нельзя объявлять массивы функций&lt;/li&gt;
&lt;/ul&gt;Вместо этого используется &quot;массив указателей на функцию, возвращающую...&quot;. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Функции не могут возвращать функции&lt;/li&gt;
&lt;/ul&gt;Вместо этого используется &quot;функция, возвращающая указатель на функцию, возвращающую ...&quot;. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Функции не могут возвращать массивы&lt;/li&gt;
&lt;/ul&gt;Вместо этого используется &quot;функция, возвращающая указатель на массив из...&quot;. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; В многомерных массивах только крайний левый может быть безразмерным []&lt;/li&gt;
&lt;/ul&gt;&amp;nbsp;Си поддерживает многоразмерные массивы (например, char foo[1][2][3][4]), хотя на практике это часто предполагает плохое структурирование данных. Тем не менее, когда массив более чем одной размерности, только крайний левый может быть пустым. char foo[] и char foo[][5] корректны, но char foo[5][] нет. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Тип &quot;void&quot; является ограниченным&lt;/li&gt;
&lt;/ul&gt;Так как void это специальный псевдо-тип, переменная с базовым типом в качестве него корректна с финальным производным типом &quot;указатель на&quot; или &quot;функция, возвращающая&quot;. Некорректно объявлять &quot;массив из недействительных&quot; или описывать переменную только типом &quot;void&quot; без производных. &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;void *foo; &amp;nbsp;            // корректно&lt;br /&gt;
void foo();&amp;nbsp;           // корректно&lt;br /&gt;
void foo;&amp;nbsp; &amp;nbsp;             // не корректно&lt;br /&gt;
void foo[];&amp;nbsp;           // не корректно&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Добавление согласующих вызывание типов&lt;/h1&gt;&lt;br /&gt;
На платформе Windows принято украшать функцию описанием с указанием соглашения о её вызове. Это объясняет компилятору какой механизм должен быть использован при вызове функции в сомнительных случаях. Метод, используемый для вызова функции должен иметь тот же тип, который ожидает функция. Они выглядят так:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;extern int __cdecl main(int argc, char **argv);&lt;br /&gt;
&lt;br /&gt;
extern BOOL __stdcall DrvQueryDriverInfo(DWORD dwMode, PVOID pBuffer,&lt;br /&gt;
DWORD cbBuf, PDWORD pcbNeeded);&lt;/blockquote&gt;&lt;br /&gt;
Эти декорации очень популярны в разработке под Win32, и довольно просты для понимания. Более подробная информация может быть найдена в Unixwiz.net Tech Tip: Using Win32 calling conventions&lt;br /&gt;
&lt;br /&gt;
Более сложным случаем является соглашение о вызове, которое должно быть включено в указатель (в том числе с помощью typedef), потому что тег не вписывается в нормальное положение вещей. Они часто используются (к примеру), когда мы имеем дело с вызовами LoadLibrary() и GetProcAddress() API для вызова функции из свежезагруженной DLL.&lt;br /&gt;
&lt;br /&gt;
Часто мы можем увидеть подобное:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;typedef BOOL (__stdcall *PFNDRVQUERYDRIVERINFO)(&lt;br /&gt;
DWORD   dwMode,&lt;br /&gt;
PVOID   pBuffer,&lt;br /&gt;
DWORD   cbBuf,&lt;br /&gt;
PDWORD  pcbNeeded&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* получить адрес функции из DLL */&lt;br /&gt;
pfnDrvQueryDriverInfo = (PFNDRVRQUERYDRIVERINFO)&lt;br /&gt;
GetProcAddress(hDll, &quot;DrvQueryDriverInfo&quot;)&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Соглашение о вызове является атрибутом функции, а не указателем, поэтому при обычном чтении можно вставлять их после указателя, но перед группирующими скобками:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; BOOL (__stdcall *foo)(...); &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
читается как:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;foo это указатель&lt;br /&gt;
на __stdcall функцию,&lt;br /&gt;
возвращающую BOOL. &lt;/blockquote&gt;&lt;br /&gt;
____________&lt;br /&gt;
&lt;br /&gt;
¹ здесь и далее описание и объявление в данной статье подразумевают под собой одно и то же&lt;br /&gt;
² здесь и далее имена типов приводятся на русском для большей ясности описаний (пр. перев.) &lt;br /&gt;
³ предполагаю, что русскому человеку более удобным будет менять падеж и число основного типа при формировании описания. Также считаю, что число производного типа следует делать множественным только после фразы &quot;массив из&quot;, дабы не фокусироваться на лишнем.&lt;br /&gt;
&lt;br /&gt;
jightuse, 2011.&lt;br /&gt;
&lt;br /&gt;
Добавлю от себя, что текст очень интересный и переводить было забавно. &quot;Жесткий пример&quot; нереален, но часто в Си передаются, к примеру, недействительный указатель в качестве аргумента некоторой функции. После разбора текста стал лучше понимать описания, надеюсь это поможет ещё кому-нибудь.&lt;br /&gt;
&lt;br&gt;&lt;br /&gt;
Традиционно, источники:&lt;br /&gt;
&lt;a href=&quot;http://www.unixwiz.net/techtips/reading-cdecl.html&quot;&gt;Статья&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://alenacpp.blogspot.com/2011/04/inception-in-c.html&quot;&gt;Указатель на статью&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://cdecl.org/&quot;&gt;Бальзам на душу: готовое решение&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/5990794293021335962/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/5990794293021335962?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5990794293021335962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5990794293021335962'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/04/declarations.html' title='Declarations'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6KheHTXOHBiT1teEh5R13_PxO-L6RqukmepQ2qW-Ff21rVpmBYl15NFG_S52ki0hsSqul9ACFbIAFanDUwJ62s3DfEECDycA1WsS3X5lSJDouuftGq1SOe4dyVVYBld-5Kf3jKQL4K1FP/s72-c/foo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-2723285519513171702</id><published>2011-04-19T20:32:00.001+07:00</published><updated>2013-04-27T12:35:54.473+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fast"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="minimalistic"/><category scheme="http://www.blogger.com/atom/ns#" term="Tiny Core"/><category scheme="http://www.blogger.com/atom/ns#" term="TinyCore"/><category scheme="http://www.blogger.com/atom/ns#" term="быстрый"/><title type='text'>TinyCore</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://distro.ibiblio.org/tinycorelinux/images/core-screw-fast.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;123&quot; width=&quot;286&quot; src=&quot;http://distro.ibiblio.org/tinycorelinux/images/core-screw-fast.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Пару дней назад вышел третий релиз-кандидат на версию 3.6 малютки TinyCore Linux. О нём сегодня и поговорим.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Tiny Core Linux представляет собой очень маленькую (10 МБ) операционную систему Linux с графическим интерфейсом пользователя. Основана на ядре Linux 2.6 kernel, Busybox, Tiny X и Fltk. Ядро запускается полностью в оперативной памяти и загружается очень быстро(на виртуальной машине с 256 МБ оперативной памяти и 16 МБ видеопамяти и без жесткого диска загрузилась за 40 секунд). Также предлагается образ микроядра размером 6 МБ, представляющего собой консольный движок Tiny Core. CLI версии программ Tiny Core предоставляют ту же функциональность расширений Tiny Core, только запускаемую в консольной системе.&lt;br /&gt;
&lt;br /&gt;
Tiny Core - не является полным рабочим столом и не поддерживает всё железо. Он предоставляет только ядро, необходимое для загрузки с минимальным рабочим столом X с проводным доступом в интернет.&lt;br /&gt;
&lt;br /&gt;
Пользователь имеет полный контроль над тем, какие приложения или дополнительное аппаратное обечпечение будет установлено, будь то рабочая станция, нетбук, устройство или сервер, выбранные пользователем приложения для установки из онлайн репозиториев или просто скомпилированные предоставляемыми инструментами программы.&lt;br /&gt;
&lt;br /&gt;
Все устанавливаемые программы скачивают необходимый для их работы минимум зависимостей. Даже с представленной выше архитектурой TinyCore чувствует себя превосходно и работает быстро. В нём нет тонн красивых обоев или милого экрана загрузки. Однако вы можете установить на него всё что будет угодно вашей душе, будь то Gnome(2.32), KDE (4.5.5),LibreOffice(3.3.1) или &lt;a href = &quot;http://go-oo.org/&quot;&gt;адаптированный OpenOffice.org&lt;/a&gt;. Appbrowser предоставляет необходимую информацию о пакете, который щелчком по кнопке OK легко устанавливается в систему. Сразу же можно указать, будет ли приложение запускаться при загрузке системы или только по требованию.&lt;br /&gt;
&lt;br /&gt;
Tiny Core легко устанавливается на флешку и грузится с неё не менее быстро. Идеально для стареньких машинок. Да и новые поразят вас своими способностями, не заглушаемыми мощными окружениями рабочих столов и надстроек.&lt;br /&gt;
&lt;br /&gt;
Словом, с данным дистрибутивом всё в ваших руках. Вы можете сделать из него что вам захочется. Изначально предоставляется тот самый &quot;Минимум необходимого&quot;. Релиз-кандидат довольно стабилен и за всё время испытаний ни разу не споткнулся.&lt;br /&gt;
&lt;br /&gt;
Источники:&lt;br /&gt;
- &lt;a href=&quot;http://distro.ibiblio.org/tinycorelinux/&quot;&gt;официальный сайт&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://go-oo.org/&quot;&gt;адаптированный OOo&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://distrowatch.com/tinycore&quot;&gt;страница на distrowatch&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://distro.ibiblio.org/tinycorelinux/images/tc_085_toys.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; width=&quot;400&quot; src=&quot;http://distro.ibiblio.org/tinycorelinux/images/tc_085_toys.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://distro.ibiblio.org/tinycorelinux/images/tc_090_wp.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; width=&quot;400&quot;  src=&quot;http://distro.ibiblio.org/tinycorelinux/images/tc_090_wp.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp3HqWHEmdRIRntdq8A-__lDe48-5l3PIpjS32sEW0s0XmxQohxXQbaweqNopn50wV2Q_ICLYTqJrpmAmajyRwZS0dNW0U3TSSYAYZoRK5Hl6paHpqdA99touqbX80V7gaSw4f_iEGAB7T/s1600/screenshot_0419123043.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp3HqWHEmdRIRntdq8A-__lDe48-5l3PIpjS32sEW0s0XmxQohxXQbaweqNopn50wV2Q_ICLYTqJrpmAmajyRwZS0dNW0U3TSSYAYZoRK5Hl6paHpqdA99touqbX80V7gaSw4f_iEGAB7T/s400/screenshot_0419123043.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUI2KSRxxJNCeXnb_L93pqzuLci6bjR0V8oo4BpTPyX-sttoit7I5sMJGkRbe0icBbXwqlqsjjtyI34SZLmcOmug5Fxfu2poS53uIMXfTedeEKE16LeYJfMnD_H7qGxWmc3RmyAX1gyJzC/s1600/screenshot_0419123219.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUI2KSRxxJNCeXnb_L93pqzuLci6bjR0V8oo4BpTPyX-sttoit7I5sMJGkRbe0icBbXwqlqsjjtyI34SZLmcOmug5Fxfu2poS53uIMXfTedeEKE16LeYJfMnD_H7qGxWmc3RmyAX1gyJzC/s400/screenshot_0419123219.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/2723285519513171702/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/2723285519513171702?isPopup=true' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/2723285519513171702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/2723285519513171702'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/04/tinycore.html' title='TinyCore'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp3HqWHEmdRIRntdq8A-__lDe48-5l3PIpjS32sEW0s0XmxQohxXQbaweqNopn50wV2Q_ICLYTqJrpmAmajyRwZS0dNW0U3TSSYAYZoRK5Hl6paHpqdA99touqbX80V7gaSw4f_iEGAB7T/s72-c/screenshot_0419123043.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-476856565561173558</id><published>2011-04-17T18:24:00.000+07:00</published><updated>2013-04-27T12:36:11.346+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="easter eggs"/><category scheme="http://www.blogger.com/atom/ns#" term="пасхальные яйца"/><title type='text'>Easter</title><content type='html'>Близится Пасха. Для кого-то светлейший праздник, для кого-то просто обычный день. Название, ассоциировавшись в голове с пасхальным яйцом (не куриным и раскрашенным, хотя они и забавны), сподвигло написать данный пост.&lt;br /&gt;
Итак, подборка Easter eggs или пасхальных яиц в мире open source, а также просто некоторых забавностей. Прошу дополнять и комментировать.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
1. На сайте commandlinefu.com обнаружил удивительнейшую вещь — просмотр &quot;Звёздных войн&quot; в терминале через telnet. Удивительно, на что способны фаны.&lt;br /&gt;
$ telnet towel.blinkenlights.nl&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgavgGrwNKxeWGtp13XCyDp2i9od2xLx0SwuRpmHhwgNSA4Ar5TCwx8w1O4z5YdLr99K0QAi4wYo6RScTvYVmKIol_1uF1ppW7cNNd0sqWt1JS4OU128Ztdudt2ret3SNICArU2UrtmR1O9/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-27.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;253&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgavgGrwNKxeWGtp13XCyDp2i9od2xLx0SwuRpmHhwgNSA4Ar5TCwx8w1O4z5YdLr99K0QAi4wYo6RScTvYVmKIol_1uF1ppW7cNNd0sqWt1JS4OU128Ztdudt2ret3SNICArU2UrtmR1O9/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-27.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;2. Довольно старые, но не менее забавные команды командной строки.&lt;br /&gt;
$ apt-get moo&lt;br /&gt;
&lt;br /&gt;
***&lt;br /&gt;
&lt;br /&gt;
$ aptitude moo&lt;br /&gt;
$ aptitude moo -v&lt;br /&gt;
...&lt;br /&gt;
$ aptitude moo -vvvvvv&lt;br /&gt;
&lt;br /&gt;
***&lt;br /&gt;
&lt;br /&gt;
$ sl&lt;br /&gt;
(Когда ошибаетесь в двухбуквенной команде ls — раньше поставлялось по умолчанию в некоторых дистрибутивах, сейчас устанавливается отдельно. Впечатляющая реакция на опечатку.)&lt;br /&gt;
&lt;br /&gt;
***&lt;br /&gt;
&lt;br /&gt;
$ ddate&lt;br /&gt;
Подобна предыдущей, можно посмотреть любую дату $ ddate dd mm yyyy&lt;br /&gt;
&lt;br /&gt;
***&lt;br /&gt;
&lt;br /&gt;
(GNOME) Нажмите ALT-F2 и наберите &quot;gegls from outer space&quot;, или &quot;free the fish&quot;&lt;br /&gt;
&lt;br /&gt;
***&lt;br /&gt;
&lt;br /&gt;
В ядре Linux просто кучи пасхалок. Можете попробовать какое-либо слово в качестве аргумента grep:&lt;br /&gt;
$ grep -R Alexey /usr/src/linux-headers-2.6.xx-x-common/*&lt;br /&gt;
&lt;br /&gt;
/usr/src/linux-headers-2.6.xx-x-common/include/net/dst.h:  * Alexey put it here, so ask him about it :)&lt;br /&gt;
&lt;br /&gt;
$ grep -R love /usr/src/linux-headers-2.6.32-5-common/*&lt;br /&gt;
&lt;br /&gt;
/usr/src/linux-headers-2.6.32-5-common/include/linux/interrupt.h: * m68k). I really love these $@%#!* obvious Makefile references:&lt;br /&gt;
&lt;br /&gt;
***&lt;br /&gt;
&lt;br /&gt;
(редактор vim)&lt;br /&gt;
&lt;br /&gt;
:help!&lt;br /&gt;
:help 42&lt;br /&gt;
:help holy-grail&lt;br /&gt;
:Ni!&lt;br /&gt;
:help UserGettingBored&lt;br /&gt;
&lt;br /&gt;
***&lt;br /&gt;
&lt;br /&gt;
Кое-что от Mozilla (и, думается, Debian — см. &lt;a href=&quot;http://jightuse.blogspot.com/2011/02/iceweasel.html&quot;&gt;Iceweasel&lt;/a&gt;)&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLAI17oI-h1NCQ06rI_ylzlNTuLU3OrMBai_Hyly5wmuPEj4U8-tDN320-uvR6t5Z13d0Vf2uxhrcGHLA7L9cNKGf86rTMKPAlhDh2cb-x6_L2kMPP-SesJEmYi-O8k_eyzjLBB8NhkckM/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-28.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;247&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLAI17oI-h1NCQ06rI_ylzlNTuLU3OrMBai_Hyly5wmuPEj4U8-tDN320-uvR6t5Z13d0Vf2uxhrcGHLA7L9cNKGf86rTMKPAlhDh2cb-x6_L2kMPP-SesJEmYi-O8k_eyzjLBB8NhkckM/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-28.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAM_UjzOjk0KV1uL3ScLI49t1MwYZC-xNpHsuWAZ2cJ4eaIR4cIoY2Gt_vjc3AlTYMBLjBwbDi5_SaeqQERsfcoRkjUKGM2DJJ-j60UfrU-UD5_K4bA3I7A3CFq1ucvxpigg0ll1q7C3E-/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-29.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;244&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAM_UjzOjk0KV1uL3ScLI49t1MwYZC-xNpHsuWAZ2cJ4eaIR4cIoY2Gt_vjc3AlTYMBLjBwbDi5_SaeqQERsfcoRkjUKGM2DJJ-j60UfrU-UD5_K4bA3I7A3CFq1ucvxpigg0ll1q7C3E-/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-29.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
***&lt;br /&gt;
&lt;br /&gt;
Ну и, к примеру, редактор nano, нажатие Ctrl-Q:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKKOzzNiZ6ATFCVNu7XOIeuC9YYgfukZ5K5UK1YoW85N6W8imICnAAogUSAapG_uvgOMK9KhVup2Au06ApYgJNhVBywG_K9MMq6gmI_d78X5aBse6HFl23TfQlKIHHnT3AD5d4FSXaLteY/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-30.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKKOzzNiZ6ATFCVNu7XOIeuC9YYgfukZ5K5UK1YoW85N6W8imICnAAogUSAapG_uvgOMK9KhVup2Au06ApYgJNhVBywG_K9MMq6gmI_d78X5aBse6HFl23TfQlKIHHnT3AD5d4FSXaLteY/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-30.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;***&lt;br /&gt;
Источники информации:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.eeggs.com/&lt;br /&gt;
http://vim.wikia.com/wiki/Best_Vim_Tips&lt;br /&gt;
http://commandlinefu.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/476856565561173558/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/476856565561173558?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/476856565561173558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/476856565561173558'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/04/easter.html' title='Easter'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgavgGrwNKxeWGtp13XCyDp2i9od2xLx0SwuRpmHhwgNSA4Ar5TCwx8w1O4z5YdLr99K0QAi4wYo6RScTvYVmKIol_1uF1ppW7cNNd0sqWt1JS4OU128Ztdudt2ret3SNICArU2UrtmR1O9/s72-c/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-27.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-4022361893428070771</id><published>2011-04-01T05:23:00.006+07:00</published><updated>2013-04-27T12:36:28.458+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google Summer of Code"/><category scheme="http://www.blogger.com/atom/ns#" term="John The Ripper"/><category scheme="http://www.blogger.com/atom/ns#" term="JtR"/><category scheme="http://www.blogger.com/atom/ns#" term="Openwall"/><category scheme="http://www.blogger.com/atom/ns#" term="Solar Designer"/><category scheme="http://www.blogger.com/atom/ns#" term="Александр Песляк"/><category scheme="http://www.blogger.com/atom/ns#" term="информационная безопасность"/><title type='text'>Peslyak</title><content type='html'>&quot;Один из самых авторитетных российских специалистов в области сетевой безопасности. Автор John the Ripper. Отец проекта Openwall (www.openwall.com), ведущий разработчик Openwall GNU/Linux – операционной системы с большой степенью защищенности.&quot; — практически вся информация xakep.ru о человеке сегодняшнего поста.&lt;br /&gt;
&lt;br /&gt;
Про таких, как Александр Песляк говорят: «Широко известен в узких кругах». Действительно, мощнейшие из поисковиков выдают лишь жалкие крохи информации об этом необычайно талантливом человеке. Кто же он?&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Александр родился в 1977 году, с 12 лет увлекался программированием на различных платформах.&lt;br /&gt;
&lt;br /&gt;
С 1992 по 1994 работал в компании Neftelntens, Ltd. разработчиком программного обеспечения (участие в реализации математических моделей процессов добычи нефти, таких как гидроразрыв пласта; создание пользовательских интерфейсов коммерческого класса управляемых с помощью меню для вышеуказанных реализаций и полуавтоматический перевод устаревших версий программного обеспечения от мейнфреймов/Fortran на ПК и современные среды разработки).&lt;br /&gt;
&lt;br /&gt;
С 1994 по 1996 проявлял некоторую активность на Demoscene и любительских компьютерных сетях, в то же время работал разработчиком софта в Infort, JSC (разработал общий инструментарий графического окружения пользователя, способного работать на недорогих pre-Windows ПК, который был использован в симуляторе экономики компании &quot;деловой игре&quot;, проданной в учебные заведения).&lt;br /&gt;
&lt;br /&gt;
В 1996 по контракту с Fukuoka Soken, Inc. развивал &quot;защиту программного обеспечения&quot; (анти-пиратство). Примерно в это же время Александр нашёл свой путь. В 1996 рождается одно из его величайших творений — взломщик паролей John the Ripper. Это легендарная программа, развивающаяся и по сей день. (Openwall приняли участие в Google Summer of Code 2011, одной из подзадач значится поддержка GPU в JtR).&lt;br /&gt;
&lt;br /&gt;
После этого события Solar Designer становится широко известен. В 1997 году он публикует первый эксплойт переполнения буфера в Windows, первые эксплойты переполнения буфера в стиле &quot;return-into-libc&quot;. Работает консультантом по информационной безопасности в OXIR Internet Solutions, Inc. и DataForce ISP. (во второй и до сих пор).&lt;br /&gt;
&lt;br /&gt;
С 1999 по 2001 продолжает свои открытия: им проанализированы и взломаны криптографические аспекты протокола TACACS + Cisco, придумана первая общая техника эксплуатации переполнения буфера на куче (выиграл &quot;Bug Bounty&quot; от Netscape/AOL), исследована уязвимость Secure Shell (SSH) к атаке временного анализа (совместно с Dug Song). С начала &quot;нулевых&quot; Александр является лидером и основателем нескольких open-source проектов, связанных с безопасностью, основным из которых является Openwall. В 2010 Команда разработчиков дистрибутива Openwall GNU/Linux (Owl, как его прозывают) предсказала критическую уязвимость в системной библиотеке GNU C Library задолго до того, как о ней узнала общественность. Owl уже имел своё исправление библиотеки, в то время как сообщество только узнало о существовании уязвимости.&lt;br /&gt;
&lt;br /&gt;
В 2007 мировые наиболее развернутые веб-приложения (форумы, блоги, движки CMS — phpBB3, WordPress, Drupal) решили принять разработанные им усовершенствования безопасноти пароля. В 2009 Александр Песляк получил &quot;Lifetime Achievement Award&quot; в ходе ежегодной Pwnie Award на конференции по безопасности Black Hat.&lt;br /&gt;
&lt;br /&gt;
На каком бы сайте вы ни встретили этого человека, он всегда с глубоким знанием дела расскажет вам о тонкостях мира криптографии и подбора паролей. Складывается такое впечатление, что Solar Designer в одиночку перемолол бы добрую половину паролей АБН, будь ему это необходимо.&lt;br /&gt;
&lt;br /&gt;
Why study silence, you may wonder - isn&#39;t that a nothing? Yes, in a sense. A zero is a nothing in that sense, too. But it is also a number, a concept we cannot really understand the world without.&lt;br /&gt;
&lt;br /&gt;
Enjoy the silence - the best you can.&lt;br /&gt;
&lt;br /&gt;
Alexander Peslyak&lt;br /&gt;
Founder and CTO&lt;br /&gt;
Openwall, Inc.&lt;br /&gt;
&lt;br /&gt;
better known as&lt;br /&gt;
&lt;br /&gt;
Solar Designer&lt;br /&gt;
Openwall Project leader&lt;br /&gt;
&lt;br /&gt;
January 2005&lt;br /&gt;
&lt;br /&gt;
Найти инфомацию об Александре практически невозможно. Он охотно делится информацией о своей области деятельности, но ничего о его жизни не известно. Человек-легенда, человек-загадка..&lt;br /&gt;
&lt;br /&gt;
Источники информации:&lt;br /&gt;
&lt;a href=&quot;http://www.xakep.ru/magazine/xa/066/094/1.asp&quot;&gt;xakep.ru&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://openwall.info/wiki/people/solar/bio&quot;&gt;openwall&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.securityfocus.com/columnists/388&quot;&gt;интервью&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://blog.openvz.org/37305.html&quot;&gt;ещё интервью&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.opennet.ru/tips/2542_mpi_cluster_johntheripper_mpich_ubuntu_hash_ubuntu.shtml&quot;&gt;активное обсуждение JtR с участием автора&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.opennet.ru/openforum/vsluhforumID3/71578.html?n=solardiz#193&quot;&gt;профиль на opennet.ru&lt;/a&gt;&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/4022361893428070771/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/4022361893428070771?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/4022361893428070771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/4022361893428070771'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/04/peslyak.html' title='Peslyak'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-847328125489574068</id><published>2011-03-23T08:01:00.004+06:00</published><updated>2011-04-01T05:13:11.646+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="firefox3"/><category scheme="http://www.blogger.com/atom/ns#" term="firefox4"/><category scheme="http://www.blogger.com/atom/ns#" term="Mozilla"/><category scheme="http://www.blogger.com/atom/ns#" term="браузер"/><category scheme="http://www.blogger.com/atom/ns#" term="огнелис"/><title type='text'>Firefox</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwA1LdDROHK2NT6xDf1oSLK2X3UxzGlsNDnLUoLJwWn-3Dj2ZtkkkwFDsy1aN9xEmG1b2k607p6oBRKwE7XkmDiLs6PSXfYwY0M-QI4u3USMci48hgRVw7TVhRnxnkReF3POo35rPJn28f/s1600/ff4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;385&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwA1LdDROHK2NT6xDf1oSLK2X3UxzGlsNDnLUoLJwWn-3Dj2ZtkkkwFDsy1aN9xEmG1b2k607p6oBRKwE7XkmDiLs6PSXfYwY0M-QI4u3USMci48hgRVw7TVhRnxnkReF3POo35rPJn28f/s400/ff4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Вспышка!&lt;br /&gt;
Firefox4 доступен для скачивания!&lt;br /&gt;
Интернет уже пестрит обзорами нововведений и различными отзывами о возможностях и интерфейсе браузера.&lt;br /&gt;
Не буду в сотый раз дублировать одно и то же, просто скажу: «Ура!»&lt;br /&gt;
Огнелис действительно стал быстрее и удобнее. Интересно понаблюдать &lt;a href=&quot;http://glow.mozilla.org/&quot;&gt;статистику скачек&lt;/a&gt; — менее чем за сутки браузер скачало уже почти 4 миллиона человек. Невообразимо. Полагаю, собственный рекорд скачек Firefox3 будет побит наголову.&lt;br /&gt;
Компания Mozilla чем-то напоминает своей тщательностью в проработке приложений сообщество создателей Debian. Целый год велась работа по предоставлению нам обновлённого Firefox. Была выпущена куча бета-версий, но финальный продукт вышел только после устранения множества багов(да, кое-что осталось, но будет устранено в ближайшее время). В этом году обещаются более частые релизы с увеличением номера версии. Поживём-увидим.&lt;br /&gt;
Уже пользуюсь, и советую попробовать вам. Работает действительно ощутимо быстрее версии 3.6. Мне очень нравится Firefox(и да, мне есть с чем сравнивать — chromium и opera тоже есть, регулярно сравниваю).&lt;br /&gt;
&lt;br /&gt;
Кстати, словом firefox в английском языке называют вовсе не лису, а красную панду:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.goodfon.ru/image/138273-3534x2347.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;400&quot; src=&quot;http://www.goodfon.ru/image/138273-3534x2347.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Но в случае браузера это всё-таки огнелис.</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/847328125489574068/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/847328125489574068?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/847328125489574068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/847328125489574068'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/03/firefox.html' title='Firefox'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwA1LdDROHK2NT6xDf1oSLK2X3UxzGlsNDnLUoLJwWn-3Dj2ZtkkkwFDsy1aN9xEmG1b2k607p6oBRKwE7XkmDiLs6PSXfYwY0M-QI4u3USMci48hgRVw7TVhRnxnkReF3POo35rPJn28f/s72-c/ff4.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-1899736442193471325</id><published>2011-03-17T23:58:00.001+06:00</published><updated>2013-04-27T12:36:59.923+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><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="курсовой проект"/><category scheme="http://www.blogger.com/atom/ns#" term="сервер"/><title type='text'>Game</title><content type='html'>Тема нашей курсовой по Операционным системам — создание клиент-серверного приложения игры «Крестики-нолики». Первую часть, практически готовый клиент, мы должны показать в ближайшее время. У меня получилось нечто такое:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg21xikbjdF8NnOuit7lw2URMYOE7XZDYpeeTRdoTP-D4tqBtxhXq0vPQBIAxEulN1acjAwgk4JCAtd4H6M-utIvVL_V7EBMqgWq-kyOQUCQPDFBK8qwws-6fASTX-yGbT35fKCvVQNs9GW/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-38.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg21xikbjdF8NnOuit7lw2URMYOE7XZDYpeeTRdoTP-D4tqBtxhXq0vPQBIAxEulN1acjAwgk4JCAtd4H6M-utIvVL_V7EBMqgWq-kyOQUCQPDFBK8qwws-6fASTX-yGbT35fKCvVQNs9GW/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-38.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Составил ТЗ:&lt;br /&gt;
Типовое задание.&lt;br /&gt;
&lt;br /&gt;
В данном курсовом проекте мы разрабатываем клиент-серверную модель игры «крестики-нолики». Далее будут описаны правила игры и алгоритм проведения игровой ситуации.&lt;br /&gt;
&lt;br /&gt;
К серверу подсоединяется один из клиентов, ему предлагается ожидать подключения оппонента. Если в течение 3 минут очередной клиент не подсоединяется к серверу, начинается игра с сервером в качестве оппонента. Случайным образом выбирается сторона, за которую играет первый из подключившихся игроков. Второй автоматически относится к противоположной стороне. Первыми всегда ходят «крестики». В терминалах клиентов распложено игровое поле, ниже располагается чат, перейти в который можно, нажав клавишу Tab. Передвижение по полю осуществляется «стрелками», выставление очередного символа — клавишей Enter.  Клиент контролирует правильность очередного хода: нельзя ставить символ на уже занятое место, либо если в данный момент ходит другой игрок. Сервер контролирует очередность хода с помощью счётчика. В начале игры счётчик устанавливается в ноль. Если он чётен, ходит первый игрок, если нечётен — второй. При достижении счётчика значения 8 или более, игра заканчивается. Величина счётчика автоматически присваивается восьми при выставлении трёх одинаковых символов в ряд.&lt;br /&gt;
При выставлении очередного символа серверу посылается сообщение о том, что игрок сделал свой ход, и отправляется порядковый номер ячейки, в которой был выставлен символ. Сервер синхронно отображает символ в данной ячейке на всех клиентах (в том числе у spectators).&lt;br /&gt;
Существует возможность наблюдать за игрой. При запуске клиента у пользователя спрашивается, желает он участвовать в игре или только смотреть. Также в стартовом окошке отображается список текущих игр или ожидающих пользователей. Выбрать пункт «наблюдать» при отсутствии текущей игры нельзя.&lt;br /&gt;
&lt;br /&gt;
Протокол&lt;br /&gt;
&lt;br /&gt;
1. запрос и выдача существущих игр&lt;br /&gt;
2. подключение к игре&lt;br /&gt;
3. чат&lt;br /&gt;
4. пинг&lt;br /&gt;
5. передача id клиента, счётчика ходов и номеров ячеек поля&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Кода довольно-таки немного, всё находится в библиотеках. Чат пока не работает, нужно писать сервер. Вот файл клиента:&lt;br /&gt;
&lt;pre style=&#39;color:#d1d1d1;&#39;&gt;&lt;span style=&#39;color:#008073; &#39;&gt;#&lt;/span&gt;&lt;span style=&#39;color:#008073; &#39;&gt;include &lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#40015a; &#39;&gt;lib.c&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;

&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;int&lt;/span&gt; &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;main&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;int&lt;/span&gt; argc&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;char&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;*&lt;/span&gt;argv&lt;span style=&#39;color:#d2cd86; &#39;&gt;[&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;]&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;enum&lt;/span&gt; keys key&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;int&lt;/span&gt; rkey&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;int&lt;/span&gt; x &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; SXDIV2&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt;
        y &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; SYDIV2&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;int&lt;/span&gt; i&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; j&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;int&lt;/span&gt; counter &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;char&lt;/span&gt; str&lt;span style=&#39;color:#d2cd86; &#39;&gt;[&lt;/span&gt;&lt;span style=&#39;color:#008c00; &#39;&gt;128&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;]&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;int&lt;/span&gt; inchat &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    
    InitBoard&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;&amp;amp;&lt;/span&gt;gboard&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    rk_mytermregime&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;    
    mt_clrscr&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    
    PrintBoard&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;gboard&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    PrintChat&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    mt_gotoXY&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;x&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; y&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    
    rkey &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; rk_readkey&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;&amp;amp;&lt;/span&gt;key&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;while&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;key &lt;span style=&#39;color:#d2cd86; &#39;&gt;!&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; K_L&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
        &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;if&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;i &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; IsEnd&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;!&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
            printf&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;Player &lt;/span&gt;&lt;span style=&#39;color:#008080; &#39;&gt;%d&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt; wins!&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; i&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            printf&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt; (&lt;/span&gt;&lt;span style=&#39;color:#008080; &#39;&gt;%s&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#008080; &#39;&gt;\n&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; i &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;?&lt;/span&gt; &lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;CROSS&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;:&lt;/span&gt; &lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;CRISS&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;break&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
        &lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;
        
        &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;if&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;counter &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; FIELDSIZE &lt;span style=&#39;color:#d2cd86; &#39;&gt;*&lt;/span&gt; FIELDSIZE&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
            printf&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#00c4c4; &#39;&gt;Nobody wins.&lt;/span&gt;&lt;span style=&#39;color:#008080; &#39;&gt;\n&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;break&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
        &lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;
        
        rkey &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; rk_readkey&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;&amp;amp;&lt;/span&gt;key&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
        &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;if&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;!&lt;/span&gt;rkey&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;switch&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;key&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;case &lt;/span&gt;&lt;span style=&#39;color:#007d45; &#39;&gt;K_DOWN&lt;/span&gt;&lt;span style=&#39;color:#e34adc; &#39;&gt;:&lt;/span&gt;
                y &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; y &lt;span style=&#39;color:#d2cd86; &#39;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; FIELDSIZE &lt;span style=&#39;color:#d2cd86; &#39;&gt;*&lt;/span&gt; SYDIV2 &lt;span style=&#39;color:#b060b0; &#39;&gt;?&lt;/span&gt; y &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;CELLSIZEY &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;:&lt;/span&gt; SYDIV2&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                mt_gotoXY&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;x&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; y&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;break&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;case &lt;/span&gt;&lt;span style=&#39;color:#007d45; &#39;&gt;K_UP&lt;/span&gt;&lt;span style=&#39;color:#e34adc; &#39;&gt;:&lt;/span&gt;
                y &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; y &lt;span style=&#39;color:#d2cd86; &#39;&gt;-&lt;/span&gt; SYDIV2 &lt;span style=&#39;color:#d2cd86; &#39;&gt;&gt;&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;?&lt;/span&gt; y &lt;span style=&#39;color:#d2cd86; &#39;&gt;-&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;CELLSIZEY &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;:&lt;/span&gt; SYDIV2 &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;FIELDSIZE &lt;span style=&#39;color:#d2cd86; &#39;&gt;-&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;*&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;CELLSIZEY &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                mt_gotoXY&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;x&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; y&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;break&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;case &lt;/span&gt;&lt;span style=&#39;color:#007d45; &#39;&gt;K_LEFT&lt;/span&gt;&lt;span style=&#39;color:#e34adc; &#39;&gt;:&lt;/span&gt;
                x &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; x &lt;span style=&#39;color:#d2cd86; &#39;&gt;-&lt;/span&gt; SXDIV2 &lt;span style=&#39;color:#d2cd86; &#39;&gt;&gt;&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;?&lt;/span&gt; x &lt;span style=&#39;color:#d2cd86; &#39;&gt;-&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;CELLSIZEX &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;:&lt;/span&gt; SXDIV2 &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;FIELDSIZE &lt;span style=&#39;color:#d2cd86; &#39;&gt;-&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;*&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;CELLSIZEX &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                mt_gotoXY&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;x&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; y&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;break&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;case &lt;/span&gt;&lt;span style=&#39;color:#007d45; &#39;&gt;K_RIGHT&lt;/span&gt;&lt;span style=&#39;color:#e34adc; &#39;&gt;:&lt;/span&gt;
                x &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; x &lt;span style=&#39;color:#d2cd86; &#39;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; FIELDSIZE &lt;span style=&#39;color:#d2cd86; &#39;&gt;*&lt;/span&gt; SXDIV2 &lt;span style=&#39;color:#b060b0; &#39;&gt;?&lt;/span&gt; x &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;CELLSIZEX &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;:&lt;/span&gt; SXDIV2&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                mt_gotoXY&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;x&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; y&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;break&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;case &lt;/span&gt;&lt;span style=&#39;color:#007d45; &#39;&gt;K_TAB&lt;/span&gt;&lt;span style=&#39;color:#e34adc; &#39;&gt;:&lt;/span&gt;
                &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;if&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;inchat&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
                    rk_mytermregime&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                    inchat &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                    mt_gotoXY&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;x&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; y&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                &lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt; &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;else&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
                    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;if&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;inchat &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
                        rk_mytermregime&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                    &lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;
                    inchat&lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                    mt_gotoXY&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#008c00; &#39;&gt;35&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;2&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                    &lt;span style=&#39;color:#9999a9; &#39;&gt;/*StartChat...*/&lt;/span&gt;
                    scanf&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#008080; &#39;&gt;%s&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; str&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                    printf&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#008080; &#39;&gt;%s&lt;/span&gt;&lt;span style=&#39;color:#02d045; &#39;&gt;&quot;&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; str&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                &lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;break&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;case &lt;/span&gt;&lt;span style=&#39;color:#007d45; &#39;&gt;K_ENTER&lt;/span&gt;&lt;span style=&#39;color:#e34adc; &#39;&gt;:&lt;/span&gt;
                i &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;x &lt;span style=&#39;color:#d2cd86; &#39;&gt;-&lt;/span&gt; SXDIV2&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;/&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;CELLSIZEX &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                j &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;y &lt;span style=&#39;color:#d2cd86; &#39;&gt;-&lt;/span&gt; SYDIV2&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;/&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;CELLSIZEY &lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;1&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                
                &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;if&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;gboard&lt;span style=&#39;color:#d2cd86; &#39;&gt;.&lt;/span&gt;cell&lt;span style=&#39;color:#d2cd86; &#39;&gt;[&lt;/span&gt;i&lt;span style=&#39;color:#d2cd86; &#39;&gt;]&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;[&lt;/span&gt;j&lt;span style=&#39;color:#d2cd86; &#39;&gt;]&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; NONE&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;{&lt;/span&gt;
                    gboard&lt;span style=&#39;color:#d2cd86; &#39;&gt;.&lt;/span&gt;cell&lt;span style=&#39;color:#d2cd86; &#39;&gt;[&lt;/span&gt;i&lt;span style=&#39;color:#d2cd86; &#39;&gt;]&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;[&lt;/span&gt;j&lt;span style=&#39;color:#d2cd86; &#39;&gt;]&lt;/span&gt; &lt;span style=&#39;color:#d2cd86; &#39;&gt;=&lt;/span&gt; counter &lt;span style=&#39;color:#d2cd86; &#39;&gt;%&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;2&lt;/span&gt; &lt;span style=&#39;color:#b060b0; &#39;&gt;?&lt;/span&gt; CRISS &lt;span style=&#39;color:#b060b0; &#39;&gt;:&lt;/span&gt; CROSS&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                    counter&lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;+&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                &lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;
                PrintBoard&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;gboard&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
                mt_gotoXY&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;x&lt;span style=&#39;color:#d2cd86; &#39;&gt;,&lt;/span&gt; y&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;break&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
&lt;span style=&#39;color:#e34adc; &#39;&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;default&lt;/span&gt;&lt;span style=&#39;color:#e34adc; &#39;&gt;:&lt;/span&gt;
            &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;break&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
            &lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;
        &lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;
    &lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;
    rk_mytermrestore&lt;span style=&#39;color:#d2cd86; &#39;&gt;(&lt;/span&gt;&lt;span style=&#39;color:#d2cd86; &#39;&gt;)&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
    &lt;span style=&#39;color:#e66170; font-weight:bold; &#39;&gt;return&lt;/span&gt; &lt;span style=&#39;color:#008c00; &#39;&gt;0&lt;/span&gt;&lt;span style=&#39;color:#b060b0; &#39;&gt;;&lt;/span&gt;
&lt;span style=&#39;color:#b060b0; &#39;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
Продолжаем работать..&lt;br /&gt;
&lt;br /&gt;
UPD. Разместил проект на googlecode: http://code.google.com/p/criss-n-cross/&lt;br /&gt;
Думаю, обновления ещё будут.&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/1899736442193471325/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/1899736442193471325?isPopup=true' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/1899736442193471325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/1899736442193471325'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/03/game.html' title='Game'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg21xikbjdF8NnOuit7lw2URMYOE7XZDYpeeTRdoTP-D4tqBtxhXq0vPQBIAxEulN1acjAwgk4JCAtd4H6M-utIvVL_V7EBMqgWq-kyOQUCQPDFBK8qwws-6fASTX-yGbT35fKCvVQNs9GW/s72-c/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-38.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-3352657544646515716</id><published>2011-02-13T22:22:00.005+06:00</published><updated>2013-04-27T12:37:15.375+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Buzz"/><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="Etch"/><category scheme="http://www.blogger.com/atom/ns#" term="Lenny"/><category scheme="http://www.blogger.com/atom/ns#" term="Potato"/><category scheme="http://www.blogger.com/atom/ns#" term="Sid"/><category scheme="http://www.blogger.com/atom/ns#" term="Squeeze"/><category scheme="http://www.blogger.com/atom/ns#" term="Toy Story"/><category scheme="http://www.blogger.com/atom/ns#" term="Woody"/><title type='text'>Codename</title><content type='html'>Вот и вышел Squeeze, привлекая всеобщее внимание и вдохновляя людей со всего света писать различного рода обзоры, рецензии и отзывы.&lt;br /&gt;
Почему же Squeeze?&lt;br /&gt;
В августе 1993 Ян Мердок анонсировал Debian, а уже через три года объявил, что не может уделять достаточно времени проекту и ушёл, оставив на своём месте Брюса Пиренса. До того, как полностью отдать своё время сообществу Open Source Брюс на протяжении 12 лет работал в компании Pixar. Поэтому согласно всеобщему мнению именно он придумал давать кодовые имена релизам Debian по именам игрушек из Toy Story.&lt;br /&gt;
Только сегодня я наконец-то выкроил время для просмотра этого замечательного мультфильма. Очень понравилось, рекомендую всем кто ещё не видел.&lt;br /&gt;
А теперь о релизах.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Релизы и герои.&lt;/h2&gt;&lt;br /&gt;
1.1  buzz — 17 June 1996&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF0cfPLHtDTNtcsLS-shNkVTB5Zgp-d7oZTXxy94PjW3mtkRsNWgQZM32l7H-61cD7SHzzLfQR9DSbzXTFj1c08E3nEs65HdCStP7EcAM-igfuFRwfptZ2-wlbLu7Q74fpIn9yYY-lxhK6/s1600/images+%25284%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF0cfPLHtDTNtcsLS-shNkVTB5Zgp-d7oZTXxy94PjW3mtkRsNWgQZM32l7H-61cD7SHzzLfQR9DSbzXTFj1c08E3nEs65HdCStP7EcAM-igfuFRwfptZ2-wlbLu7Q74fpIn9yYY-lxhK6/s400/images+%25284%2529.jpg&quot; width=&quot;152&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Космический герой, астронавт. На бородке красуется спираль, закрученная в противоположную сторону по сравнению с логотипом debian.&lt;br /&gt;
&lt;br /&gt;
1.2  rex — 12 December 1996&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0sraWnuMzsR8GgGltHEwRxFxBqkeav7yAgygVKho32FEhXhLd5qQW-e5cMGvhwbjOGPQGT1z7RP1LjmbCRibh6VItZuWYq3VmuQDx1EIDL-pNjYUQQXoHhLbADdo_6-rivkTK3UXW0xbi/s1600/images+%25286%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0sraWnuMzsR8GgGltHEwRxFxBqkeav7yAgygVKho32FEhXhLd5qQW-e5cMGvhwbjOGPQGT1z7RP1LjmbCRibh6VItZuWYq3VmuQDx1EIDL-pNjYUQQXoHhLbADdo_6-rivkTK3UXW0xbi/s400/images+%25286%2529.jpg&quot; width=&quot;225&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Забавный добродушный динозавр, который хочет быть страшным.&lt;br /&gt;
&lt;br /&gt;
1.3  bo — 5 June 1997&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgknlgxQcqnjtllQqqmoBqHlzew1mjpiw1tpzkfQOHK0ZLp62WnTc791sLMX0DK49z-ZIB5ZQhzLW1pGmHifO0soSq82Y9bck0y_stlUFHdr2wktmrYP58DEdJPZ7Sm7m1Me7dpJDMTCfJD/s1600/images+%25285%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;276&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgknlgxQcqnjtllQqqmoBqHlzew1mjpiw1tpzkfQOHK0ZLp62WnTc791sLMX0DK49z-ZIB5ZQhzLW1pGmHifO0soSq82Y9bck0y_stlUFHdr2wktmrYP58DEdJPZ7Sm7m1Me7dpJDMTCfJD/s400/images+%25285%2529.jpg&quot; width=&quot;182&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Хорошенькая барышня с тросточкой.&lt;br /&gt;
&lt;br /&gt;
2.0  hamm — 24 July 1998&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-xggEtnjy_oIOTNUU8gQvkb6ituwJ6X4ETRFSDDLcc05RImduX09_eOYBXFmeSuaL6Xfnexd3K5YShT2BzcXahuAy99eFKOIYFWTjRVmhBdhOA_JoXkNXVldHDrQSTZEtHiFqm1TtvVt-/s1600/images+%25287%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-xggEtnjy_oIOTNUU8gQvkb6ituwJ6X4ETRFSDDLcc05RImduX09_eOYBXFmeSuaL6Xfnexd3K5YShT2BzcXahuAy99eFKOIYFWTjRVmhBdhOA_JoXkNXVldHDrQSTZEtHiFqm1TtvVt-/s400/images+%25287%2529.jpg&quot; width=&quot;233&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Копилка-свинюшка. Милое создание.&lt;br /&gt;
&lt;br /&gt;
2.1  slink — 9 March 1999&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja7wItJCt1z2OmfC_kPYMb79iX8oZX1PLbTV9mI0fuhnV1iwsddTwx5Z9Fxx8TPvCdSJEx5w4U_XiKpwdDLaJXmo31f7RefJKp8ki0ZbV0DCcBlj095_aFlkpaXR0cPBssMwuYmBm9hnVf/s1600/images+%25288%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;176&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja7wItJCt1z2OmfC_kPYMb79iX8oZX1PLbTV9mI0fuhnV1iwsddTwx5Z9Fxx8TPvCdSJEx5w4U_XiKpwdDLaJXmo31f7RefJKp8ki0ZbV0DCcBlj095_aFlkpaXR0cPBssMwuYmBm9hnVf/s400/images+%25288%2529.jpg&quot; width=&quot;287&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Такса-пружина, которую многократно используют в тех или иных целях.&lt;br /&gt;
&lt;br /&gt;
2.2  potato — 15 August 2000&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkkoT_34Cy4EWPXv7sAQgUomiOHFw0zDxOGQGt9GKTy4abHPF5v5PPpdiB_jiG6scS8X5LQEzKj145Ry7g3YUv1K70YzTfc7uaSylJWOnLvyTSXrlnILXvQUDxhqEnnZ5fMoQqMxpfF4WH/s1600/images+%25289%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;246&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkkoT_34Cy4EWPXv7sAQgUomiOHFw0zDxOGQGt9GKTy4abHPF5v5PPpdiB_jiG6scS8X5LQEzKj145Ry7g3YUv1K70YzTfc7uaSylJWOnLvyTSXrlnILXvQUDxhqEnnZ5fMoQqMxpfF4WH/s400/images+%25289%2529.jpg&quot; width=&quot;205&quot; /&gt;&lt;/a&gt;  &lt;br /&gt;
Картофель. Не берусь утверждать, но предполагаю, что этот знойный герой вдохновил создателей Potato Guy (ныне KTuberling) — забавной игрушки для маленьких.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMOudKW8pb5moMRt64hWkyK9-5cAwxskID64mOJlmI0D7hQDbt1IIxtMJaRCKiX4ZnZg_vzgT_Zh7wMzqrzbz6F_-u-teAs_LkxqQXBwzeQZPMA3NuCE69czTqloAW1nS5jcbfD2_WGLDO/s1600/ktuberling01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;289&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMOudKW8pb5moMRt64hWkyK9-5cAwxskID64mOJlmI0D7hQDbt1IIxtMJaRCKiX4ZnZg_vzgT_Zh7wMzqrzbz6F_-u-teAs_LkxqQXBwzeQZPMA3NuCE69czTqloAW1nS5jcbfD2_WGLDO/s400/ktuberling01.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
3.0  woody — 19 July 2002&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK5fxFGCliWFAA1irffUjH4yrVtSMdV7P3SKnTd4-4Trxe3DcGJjoVryfhphu00U_jdBZQTlDTsSaKYl53lci-IdyLbpvyzPzsZpiBqHQy1X_179PzvXWK_OYHcZCvtfyDaQ02D16Dy2tT/s1600/download+%25282%2529&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; width=&quot;143&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK5fxFGCliWFAA1irffUjH4yrVtSMdV7P3SKnTd4-4Trxe3DcGJjoVryfhphu00U_jdBZQTlDTsSaKYl53lci-IdyLbpvyzPzsZpiBqHQy1X_179PzvXWK_OYHcZCvtfyDaQ02D16Dy2tT/s400/download+%25282%2529&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Центральный персонаж всех трёх частей Toy Story. Старенькая, но очень хорошая игрушка-ковбой.&lt;br /&gt;
&lt;br /&gt;
3.1  sarge — 6 June 2005&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBPOJsuoNVjLS_PLD_vKZjdSMviiMAo6qgd63brMoZkah_H9okm4jhtC5oMwVTKkO5rpYpx2DIt8dpCLPehL7VOqc-4UumsK8lDEJt4CyirKS2RihrzxzYL5t8yWsJmE8zWHlM-oNdjiv-/s1600/images+%252810%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBPOJsuoNVjLS_PLD_vKZjdSMviiMAo6qgd63brMoZkah_H9okm4jhtC5oMwVTKkO5rpYpx2DIt8dpCLPehL7VOqc-4UumsK8lDEJt4CyirKS2RihrzxzYL5t8yWsJmE8zWHlM-oNdjiv-/s400/images+%252810%2529.jpg&quot; width=&quot;225&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Сержант, предводитель отряда солдатиков, оперативно помогающих главным героям.&lt;br /&gt;
&lt;br /&gt;
4.0  etch — 8 April 2007&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi15YoYWaahe54oh_71aAFquVDnLF2yHyEBWalI033WPw-jLj6augLdHCo93-Awm9BA9G_zx2dft06-IUWd7LGXiwdYzx3tr9bvOEi4YV5Ga8yX8xWTMnnigHZDsQpvnL6nY0dY11vyFl_v/s1600/images+%25282%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;197&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi15YoYWaahe54oh_71aAFquVDnLF2yHyEBWalI033WPw-jLj6augLdHCo93-Awm9BA9G_zx2dft06-IUWd7LGXiwdYzx3tr9bvOEi4YV5Ga8yX8xWTMnnigHZDsQpvnL6nY0dY11vyFl_v/s400/images+%25282%2529.jpg&quot; width=&quot;256&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Экран для рисования — обычная интерактивная доска, на которой разрабатывают планы или соревнуются по скорости выхватывания револьвера.&lt;br /&gt;
&lt;br /&gt;
5.0 lenny — 14 February 2009&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaf0PiRExy7NrJzFEDJXnwUIyOO_pkUUty-Xe6xHfMmUEhJZCiqbjMgPsjm8umEwsaFTlmoufBXnduRxfvYswt8tZ3BwJYOkzMS-n29jo00KJW5c9kWVqlletH-I5VyZStb6aeBidlrO-W/s1600/images+%25281%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;207&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaf0PiRExy7NrJzFEDJXnwUIyOO_pkUUty-Xe6xHfMmUEhJZCiqbjMgPsjm8umEwsaFTlmoufBXnduRxfvYswt8tZ3BwJYOkzMS-n29jo00KJW5c9kWVqlletH-I5VyZStb6aeBidlrO-W/s400/images+%25281%2529.jpg&quot; width=&quot;244&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Симпатичный маленький и нерасторопный бинокль.&lt;br /&gt;
&lt;br /&gt;
6.0 squeeze — 6 February 2011&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0ngAJ22TxW2dycbpFSH_o3JwmxR2b-1Hhs3p0I-oSf-32IkW4vu-kxzShgYHItwjiNErqmMTI2hfGROgpbjpg9csM-TROR1ulNB8XjB_Wv7gD_y5qou0YLWcCFxi7rXKopdKBpqgd1TcZ/s1600/images+%25283%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0ngAJ22TxW2dycbpFSH_o3JwmxR2b-1Hhs3p0I-oSf-32IkW4vu-kxzShgYHItwjiNErqmMTI2hfGROgpbjpg9csM-TROR1ulNB8XjB_Wv7gD_y5qou0YLWcCFxi7rXKopdKBpqgd1TcZ/s400/images+%25283%2529.jpg&quot; width=&quot;259&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Смешной инопланетянин, которого поодиночке в мультфильме не встретить — всегда их несколько. Говорят только хором.&lt;br /&gt;
&lt;br /&gt;
7.0  wheezy — ca. 2013&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4NdCwqkQG2APj1W1jZlCIIl9RNCLy6fSTU9tN0Ny3zlHHMBWp9Kej0NmYKY20FBQy2YrgoaBJ8azuD5MKwooBgs9_wTkyS4pc6UQ_o7FRuNbCyVr8PEScmbndQ87x5ZP6ZaN3rKmxeg5s/s1600/images.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;259&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4NdCwqkQG2APj1W1jZlCIIl9RNCLy6fSTU9tN0Ny3zlHHMBWp9Kej0NmYKY20FBQy2YrgoaBJ8azuD5MKwooBgs9_wTkyS4pc6UQ_o7FRuNbCyVr8PEScmbndQ87x5ZP6ZaN3rKmxeg5s/s400/images.jpg&quot; width=&quot;194&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Грустная забытая игрушка, у которой сломалась когда-то «пищалка» — дата релиза пока неизвестна. В данный момент wheezy — ветвь testing.&lt;br /&gt;
&lt;br /&gt;
Нестабильная ветвь unstable дистрибутива всегда носит одно название sid — имя отрицательного героя первой части Toy Story. Именно на ней основана неугомонная и несущаяся вперёд Ubuntu.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpUytfjzKaJbdAgxSHsyAlPIXiiBeco8XqicWgCLwK3C_cw4ki3CZvqYG9kq6pQmcUbkD6uUTakUZ_JQuMVKF_Fv_GE_hd4UDkemKfRIhyphenhyphen8b_Tf-FjhXHRdU02m0xkVGmgCBCKnVPg0Y_v/s1600/images+%252811%2529.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; width=&quot;164&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpUytfjzKaJbdAgxSHsyAlPIXiiBeco8XqicWgCLwK3C_cw4ki3CZvqYG9kq6pQmcUbkD6uUTakUZ_JQuMVKF_Fv_GE_hd4UDkemKfRIhyphenhyphen8b_Tf-FjhXHRdU02m0xkVGmgCBCKnVPg0Y_v/s400/images+%252811%2529.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Я знакомство с Debian начал с etch, а спустя некоторое время вышел lenny. Успел вернуться в цивилизацию до выхода squeeze, чему рад =) Эта операционная система осталась всё такой же стабильной и тщательно отлаживаемой, приобретя при этом шарм и привлекательность. Думаю именно этим он схож с проектом Toy Story — Pixar разрабатывал мультфильм очень старательно — внимание уделено каждой мелочи, юмор ненавязчив, а герои как один приятны на вид и каждый обладает своим характером.&lt;br /&gt;
Принимаю впечатления людей от использования разных выпусков Debian — интересно было бы установить характер каждого из них. Я могу говорить только о lenny и squeeze.&lt;br /&gt;
&lt;br /&gt;
Источники: &lt;a href=&quot;http://en.wikipedia.org/wiki/Debian&quot;&gt;wikipedia&lt;/a&gt;, &lt;a href=&quot;http://www.debian.org/&quot;&gt;debian.org&lt;/a&gt;.&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/3352657544646515716/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/3352657544646515716?isPopup=true' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/3352657544646515716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/3352657544646515716'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/02/codename.html' title='Codename'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF0cfPLHtDTNtcsLS-shNkVTB5Zgp-d7oZTXxy94PjW3mtkRsNWgQZM32l7H-61cD7SHzzLfQR9DSbzXTFj1c08E3nEs65HdCStP7EcAM-igfuFRwfptZ2-wlbLu7Q74fpIn9yYY-lxhK6/s72-c/images+%25284%2529.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-4834252009068494481</id><published>2011-02-03T19:45:00.010+06:00</published><updated>2013-04-27T12:37:32.236+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="GNU"/><category scheme="http://www.blogger.com/atom/ns#" term="Iceape"/><category scheme="http://www.blogger.com/atom/ns#" term="IceCat"/><category scheme="http://www.blogger.com/atom/ns#" term="Icedove"/><category scheme="http://www.blogger.com/atom/ns#" term="IceOwl"/><category scheme="http://www.blogger.com/atom/ns#" term="Iceweasel"/><category scheme="http://www.blogger.com/atom/ns#" term="Mozilla"/><category scheme="http://www.blogger.com/atom/ns#" term="OSS"/><category scheme="http://www.blogger.com/atom/ns#" term="SeaMonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="СПО"/><category scheme="http://www.blogger.com/atom/ns#" term="степени свободы"/><title type='text'>Iceweasel</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinEhKNpumey2gQkRimAbLbVEVtFJ_yFVqYjwQz458F5bS58krEP9jM6csN72vql8iQroltovFwZo1DD9bmPODQbaF9Z9hpBxMbqwumWlnINT_vgUyBuPoeEjimreGGpCgQSea4R3sWeOZt/s1600/iceweasel.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinEhKNpumey2gQkRimAbLbVEVtFJ_yFVqYjwQz458F5bS58krEP9jM6csN72vql8iQroltovFwZo1DD9bmPODQbaF9Z9hpBxMbqwumWlnINT_vgUyBuPoeEjimreGGpCgQSea4R3sWeOZt/s400/iceweasel.gif&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Сегодня я расскажу о браузере, которым пользуюсь. По стечению обстоятельств о нём мало кто знает — по сути, только те, кто пользуется Debian. Почему так вышло? Садитесь поудобнее и слушайте.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Компания Mozilla взяла себе торговую марку Firefox и наложила запрет на использование данного имени и других торговых марок в неофициальных сборках. До тех пор, пока разработчики не имели специального разрешения, они не могли компилировать исходный код Firefox с официальным именем и логотипом. Принципы Debian шли в разрез с подобной лицензией, такой пакет включен в дистрибутив быть не мог. В 2004 и 2005 шли жаркие дебаты Mozilla и Debian по этому поводу. Во время этих дебатов было придумано имя «Iceweasel» для обозначения ребренда версии Firefox. Впервые данное имя в таком контексте, вероятно, использовал Нафанаэль Нерод, в ответ на предложение Эрика Дорленда «Icerabbit». Как можно догадаться, это первоначально была пародия на Firefox (firefox — огненная лиса, icerabbit — ледяной кролик, iceweasel — ледяная ласка). Впоследствии Iceweasel стал часто использоваться в качестве примера ребрендинга Firefox в ответ на политику торговой марки Mozilla. По состоянию на 1 января 2005 ребрендинг как стратегия назывался «маршрутом Iceweasel».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Термин «ледяная ласка» появился ранее во фразе, которую Мэтт Гроуинг относит к Фридриху Ницше: «Любовь — гонка на снегоходе по тундре, который внезапно переворачивается, прижимая тебя. А ночью приходят ледяные ласки».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Изначально Debian было дано разрешение на использование товарных знаков, и он принял пакет с именем Firefox. Однако обстоятельства изменились, и поскольку креативные работы в Firefox стали иметь проприетарную правовую лицензию, не совместимую с Debian Free Software Guidelines, логотип нужно было менять.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
27 февраля 2006 года Майк Коннор отправил письмо из компании Mozilla в список рассылки по ошибкам debian (багтрекер submit@bugs.debian.org). Майк сообщил, что Firefox (имя) управляется и защищается всё той же политикой торговой марки и правовыми требованиями, что и логотип Firefox. Разработчикам также сообщалось, что они могут свободно использовать любое другое имя для браузера и логотип. Дальше завязывается полемика (подробности &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=354622&quot;&gt;здесь&lt;/a&gt;), итогом которой становится следующее.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Ледяная ласка стала отдельным продуктом. Основанный в Debian Iceweasel не является IceWeasel от GNU(сейчас IceCat), он есть ребрендовая версия  Firefox, созданная проектом Debian. Сопровождающий Debian заявил, что «войдёт в контакт с командой GNU IceCat/IceWeasel, чтобы посмотреть, что они смогут сделать вместе». Кроме того, Debian переименовал Mozilla Thunderbird и SeaMonkey в Icedove и Iceape соответственно.&lt;br /&gt;
&lt;br /&gt;
Debian &lt;a href=&quot;http://lists.debian.org/debian-devel/2006/10/msg00665.html&quot;&gt;заявляет&lt;/a&gt;, что Firefox от Iceweasel отличается лишь двумя пунктами:&lt;br /&gt;
* не включение торговых марок креативных работ Mozilla&lt;br /&gt;
* импорт обновлений безопасности в объявленную стабильной версию&lt;br /&gt;
&lt;br /&gt;
Что я хотел сказать. Мир свободного программного обеспечения удивителен. Проект, являющийся открытым, ради его полной открытости (до мельчайших деталей) меняет название и логотип, оставаясь по сути самим собой. Да, только пользователи Debian(на самом деле ещё gNewSense сделал BurningDog для себя), да гуру GNU знают о существовании такого различия. Но тем не менее — мир СПО чрезвычайно разнообразен и пятнист, и каждый сможет найти в нём свой уголок.&lt;br /&gt;
И нет, не подумайте, я очень уважаю Firefox…&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJBkttj39CLHL6sWPuGZIwBJYkKQ358uQvfNob-oJ21WCjw60OUPuaDv6yzA674lGDx1EH2296krXVAt0aIZ1NzGGBgwv2OH_NdRW4B9qxQrVpeFQnFH1V3gYVGPK88k0mEgDzSFBEGL1/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;233&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJBkttj39CLHL6sWPuGZIwBJYkKQ358uQvfNob-oJ21WCjw60OUPuaDv6yzA674lGDx1EH2296krXVAt0aIZ1NzGGBgwv2OH_NdRW4B9qxQrVpeFQnFH1V3gYVGPK88k0mEgDzSFBEGL1/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;и главу компании Mozilla — я &lt;a href=&quot;http://www.xakep.ru/magazine/xa/122/070/1.asp&quot;&gt;читал о ней&lt;/a&gt;, очень интересный человек.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEismI6LXvh-YNFlO7TKYp5FQlOfTCqxwi6rhfLWIpoTUvPeRyZkNFgah6pCEqgLnmYkvuklWp9DKHQLEMI4TlxVfC_63tYzywSbneXpVMF3oCVp9oEnMWs6YwYpi9rVuqCA_pMuBEv-DbJ8/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;264&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEismI6LXvh-YNFlO7TKYp5FQlOfTCqxwi6rhfLWIpoTUvPeRyZkNFgah6pCEqgLnmYkvuklWp9DKHQLEMI4TlxVfC_63tYzywSbneXpVMF3oCVp9oEnMWs6YwYpi9rVuqCA_pMuBEv-DbJ8/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
Просто вот бывают иногда расхождения даже у открытых проектов.&lt;div&gt;Напоследок скрины главного героя поста и сравнение логотипов продуктов Mozilla и соответствующих «полностью открытых» аналогов:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiums8Ouuey_1lsGsd8IldeUqtSkZ0KLlbPuWusx99tfuKSJa04m3kyN1BPsk-LNZMukWarv6VdsSJkoNJmBOfJUt6XpsxMTWDEzqbkBBhEpar0YumrUTd79RNgJALrYMrTl4pDc9R9Gbxm/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiums8Ouuey_1lsGsd8IldeUqtSkZ0KLlbPuWusx99tfuKSJa04m3kyN1BPsk-LNZMukWarv6VdsSJkoNJmBOfJUt6XpsxMTWDEzqbkBBhEpar0YumrUTd79RNgJALrYMrTl4pDc9R9Gbxm/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
(браузер)&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.mozilla.com/img/trademarks/firefox-logo-r.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.mozilla.com/img/trademarks/firefox-r.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;http://www.mozilla.com/img/trademarks/firefox-r.png&quot; style=&quot;cursor: move;&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.mozilla.com/img/trademarks/firefox-logo-r.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;http://www.mozilla.com/img/trademarks/firefox-logo-r.png&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #0000ee;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black;&quot;&gt;Iceweasel&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-text-decorations-in-effect: underline; color: #0000ee;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Iceweasel-icon.svg/96px-Iceweasel-icon.svg.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;96&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Iceweasel-icon.svg/96px-Iceweasel-icon.svg.png&quot; width=&quot;96&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #0000ee;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-text-decorations-in-effect: underline;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-text-decorations-in-effect: underline;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black;&quot;&gt;IceCat&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-text-decorations-in-effect: underline; color: #0000ee;&quot;&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Icecat.png/96px-Icecat.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;96&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Icecat.png/96px-Icecat.png&quot; style=&quot;cursor: move;&quot; width=&quot;96&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu4qOYzxrudwMtWygkWjwIujUzbqUZJlzlXo8TkijH0n1VtXnsrEAlR2TkDr4mGD9q8TjnBK6b1tMuKak9_0sPMlM7TIrpEmmKVI58Ii4SiNCVtturdph5PEccPdr4KlrXVd4fEmSTzn-M/s1600/536384942_3deedd09c9.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black;&quot;&gt;BurningDog&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu4qOYzxrudwMtWygkWjwIujUzbqUZJlzlXo8TkijH0n1VtXnsrEAlR2TkDr4mGD9q8TjnBK6b1tMuKak9_0sPMlM7TIrpEmmKVI58Ii4SiNCVtturdph5PEccPdr4KlrXVd4fEmSTzn-M/s1600/536384942_3deedd09c9.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;162&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu4qOYzxrudwMtWygkWjwIujUzbqUZJlzlXo8TkijH0n1VtXnsrEAlR2TkDr4mGD9q8TjnBK6b1tMuKak9_0sPMlM7TIrpEmmKVI58Ii4SiNCVtturdph5PEccPdr4KlrXVd4fEmSTzn-M/s200/536384942_3deedd09c9.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
(почтовый клиент)&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.mozilla.org/images/thunderbird_logo_100.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.mozilla.com/img/trademarks/thunderbird-r.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;http://www.mozilla.com/img/trademarks/thunderbird-r.png&quot; style=&quot;cursor: move;&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;http://www.mozilla.org/images/thunderbird_logo_100.png&quot; width=&quot;100&quot; /&gt;Icedove&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH4_MaY3XcgIihONMbJUVML2x1H9XGjCVYKn3bOSg4WCF2bKGAkhbczU-ueV-f8bAzF8-iwaekLnXcVTA9LcgTIYQtUIZ4m_aMQhZCPZxGTMdi8tP2wA2p6yqVQWDFiRm6BvU37klRXKPT/s1600/Icedove.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;128&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH4_MaY3XcgIihONMbJUVML2x1H9XGjCVYKn3bOSg4WCF2bKGAkhbczU-ueV-f8bAzF8-iwaekLnXcVTA9LcgTIYQtUIZ4m_aMQhZCPZxGTMdi8tP2wA2p6yqVQWDFiRm6BvU37klRXKPT/s400/Icedove.png&quot; style=&quot;cursor: move;&quot; width=&quot;128&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
(all-in-one internet application suite)&lt;br /&gt;
Seamonkey &amp;amp; Iceape&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.mozilla.com/img/trademarks/seamonkey-logo-r.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;http://www.mozilla.com/img/trademarks/seamonkey-logo-r.png&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://wiki.site5.com/images/4/48/Iceape.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;128&quot; src=&quot;http://wiki.site5.com/images/4/48/Iceape.png&quot; style=&quot;cursor: move;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
(calendar) Sunbird &amp;amp; IceOwl&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.mozilla.com/img/trademarks/sunbird-logo-r.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;http://www.mozilla.com/img/trademarks/sunbird-logo-r.png&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.slax.org/modules/screenshots/2/2334.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.slax.org/modules/screenshots/2/2334.png&quot; style=&quot;cursor: move;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: auto;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;Источники: &lt;a href=&quot;http://en.wikipedia.org/wiki/Iceweasel&quot;&gt;en.wikipedia&lt;/a&gt;, официальные сайты проектов.&lt;br /&gt;
Дополнительно: &lt;a href=&quot;http://glandium.org/blog/?p=97&quot;&gt;Факты о Mozilla и Debian&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://sourceforge.net/projects/iw4win/&quot;&gt;Бывает даже и такое&lt;/a&gt;&lt;br /&gt;
Причина, по которой решил написать. Факт, видимо, так и не подтвержденный, но возможно, что &lt;a href=&quot;http://diehealthy.org/hyperweb/the-end-of-iceweasel&quot;&gt;Iceweasel действительно скоро не станет&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;И ещё вот интересно - может ли Mozilla обидеться на меня за использование их логотипов? Между прочим они никуда не загружены, отображаются непосредственно с их сайта.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/4834252009068494481/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/4834252009068494481?isPopup=true' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/4834252009068494481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/4834252009068494481'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/02/iceweasel.html' title='Iceweasel'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinEhKNpumey2gQkRimAbLbVEVtFJ_yFVqYjwQz458F5bS58krEP9jM6csN72vql8iQroltovFwZo1DD9bmPODQbaF9Z9hpBxMbqwumWlnINT_vgUyBuPoeEjimreGGpCgQSea4R3sWeOZt/s72-c/iceweasel.gif" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-5730769832625081466</id><published>2011-02-01T15:21:00.002+06:00</published><updated>2013-04-27T12:37:55.437+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="md5"/><category scheme="http://www.blogger.com/atom/ns#" term="хэш"/><category scheme="http://www.blogger.com/atom/ns#" term="целостность"/><title type='text'>Integrity</title><content type='html'>В качестве темы для курсовой работы я выбрал &quot;проверку целостности информации&quot;. Программе в качестве аргументов передаются директория и файл. Она работает в двух режимах, регулируемых ключами. В первом программа вычисляет хэш-коды для всех файлов директории и записывает их в заданный файл, во втором — открывает заданный файл на чтение и сверяет записанные в нём хэш-коды с заново вычисленными для файлов директории. Программу следует в будущем доработать — она слишком жестко действует. При добавлении, удалении, либо изменении любого файла она сообщает пользователю о нарушении целостности и завершает работу. Нужно будет прикрутить к ней запись в файл имен файлов и проверку по ним, чтобы сообщалось подробно о каждом изменении. Когда писал, не мог найти нужную функцию. А преподаватель подсказал потом её название — strtoken.&lt;br /&gt;
В остальном же программа работает довольно мудро.&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Тщательно проверяет входные данные, сообщает об ошибках в ходе работы, не вычисляет хэш-код для заданного файла, файлов &quot;.&quot; и &quot;..&quot;. Хэш-код вычисляется с помощью &lt;a href=&quot;http://csc.sibsutis.ru/files/File/pavu/MD5.tar.bz2&quot;&gt;исходных кодов функции MD5&lt;/a&gt; (взято с &lt;a href=&quot;http://csc.sibsutis.ru/index.php?id=324&quot;&gt;сайта нашей кафедры&lt;/a&gt;). Вот. Вроде всё.&lt;br /&gt;
Код:&lt;br /&gt;
&lt;pre width=&quot;80&quot;&gt;&lt;font color=&quot;#A020F0&quot;&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/font&gt;
&lt;font color=&quot;#A020F0&quot;&gt;#include &amp;lt;dirent.h&amp;gt;&lt;/font&gt;
&lt;font color=&quot;#A020F0&quot;&gt;#include &amp;lt;string.h&amp;gt;&lt;/font&gt;
&lt;font color=&quot;#A020F0&quot;&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;/font&gt;
&lt;font color=&quot;#A020F0&quot;&gt;#include &lt;/font&gt;&lt;font color=&quot;#e66170&quot;&gt;&quot;md5.h&quot;&lt;/font&gt;&lt;font color=&quot;#A020F0&quot;&gt;&lt;/font&gt;
&lt;strong&gt;&lt;font color=&quot;#228B22&quot;&gt;#define GENERATE 1&lt;/font&gt;&lt;/strong&gt;
&lt;strong&gt;&lt;font color=&quot;#228B22&quot;&gt;#define CHECK 0&lt;/font&gt;&lt;/strong&gt;
&lt;strong&gt;&lt;font color=&quot;#228B22&quot;&gt;#define ERR_OPENING 4&lt;/font&gt;&lt;/strong&gt;
&lt;strong&gt;&lt;font color=&quot;#228B22&quot;&gt;#define ERR_ARG 5&lt;/font&gt;&lt;/strong&gt;

&lt;strong&gt;&lt;font color=&quot;#4169E1&quot;&gt;int usage(char *msg)&lt;/font&gt;&lt;/strong&gt;;

&lt;strong&gt;&lt;font color=&quot;#4169E1&quot;&gt;&lt;a name=&quot;main&quot;&gt;&lt;/a&gt;int main(int argc, char *argv[])&lt;/font&gt;&lt;/strong&gt; {
        DIR *dp;
        &lt;font color=&quot;#4169E1&quot;&gt;struct dirent&lt;/font&gt; *dirlist;
        MD5_CTX mdContext;
        FILE *filep;
        FILE *fp;
        char dir[220];                      
        char file[220];                    
        char chkfile[256];  
        char hash[34];      
        char part_hash[2];    
        int mode = 2;       
        int bytes, i;
        unsigned char data[1024];
        
        &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (argc &amp;lt; 6) {
                &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; usage(&lt;font color=&quot;#e66170&quot;&gt;&quot;Too few arguments.\n&quot;&lt;/font&gt;);
        } &lt;font color=&quot;#4169E1&quot;&gt;else&lt;/font&gt; &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (argc &amp;gt; 6) {
                &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; usage(&lt;font color=&quot;#e66170&quot;&gt;&quot;Too many arguments.\n&quot;&lt;/font&gt;);
        }
        
        &lt;font color=&quot;#4169E1&quot;&gt;for&lt;/font&gt; (i = 1; i &amp;lt; argc; i++) {
                &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (*argv[i]++ == &#39;-&#39;) {
                        &lt;font color=&quot;#4169E1&quot;&gt;switch&lt;/font&gt;(*(argv[i])) {
                        &lt;font color=&quot;#4169E1&quot;&gt;case&lt;/font&gt; &#39;g&#39;:
                                &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (mode == CHECK) {
                                        &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; usage(&lt;font color=&quot;#e66170&quot;&gt;&quot;You already set option -c\n&quot;&lt;/font&gt;);
                                }
                                mode = GENERATE;
                                printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;Generate integrity mode activated.\n&quot;&lt;/font&gt;);
                        &lt;font color=&quot;#4169E1&quot;&gt;break&lt;/font&gt;;
                        &lt;font color=&quot;#4169E1&quot;&gt;case&lt;/font&gt; &#39;c&#39;:
                                &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (mode == GENERATE) {
                                        &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; usage(&lt;font color=&quot;#e66170&quot;&gt;&quot;You already set option -g\n&quot;&lt;/font&gt;);
                                }
                                        mode = CHECK;
                                printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;Check integrity mode activated.\n&quot;&lt;/font&gt;);
                        &lt;font color=&quot;#4169E1&quot;&gt;break&lt;/font&gt;;
                        &lt;font color=&quot;#4169E1&quot;&gt;case&lt;/font&gt; &#39;d&#39;:
                                &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (argc == i + 1) {
                                        &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; usage(&lt;font color=&quot;#e66170&quot;&gt;&quot;You don&#39;t specified directory.\n&quot;&lt;/font&gt;);
                                }
                                strcpy(dir, argv[i + 1]);
                                strcat(dir, dir[strlen(dir) - 1] == &#39;/&#39; ? &lt;font color=&quot;#e66170&quot;&gt;&quot;&quot;&lt;/font&gt; : &lt;font color=&quot;#e66170&quot;&gt;&quot;/&quot;&lt;/font&gt;);
                        &lt;font color=&quot;#4169E1&quot;&gt;break&lt;/font&gt;;
                        &lt;font color=&quot;#4169E1&quot;&gt;case&lt;/font&gt; &#39;f&#39;:
                                &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (argc == i + 1) {
                                        &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; usage(&lt;font color=&quot;#e66170&quot;&gt;&quot;You don&#39;t specified file.\n&quot;&lt;/font&gt;);
                                }
                                strcpy(file, argv[i + 1]);
                        &lt;font color=&quot;#4169E1&quot;&gt;break&lt;/font&gt;;
&lt;strong&gt;&lt;font color=&quot;#FF0000&quot;&gt;                        default:&lt;/font&gt;&lt;/strong&gt;
                                &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; usage(&lt;font color=&quot;#e66170&quot;&gt;&quot;Error! Unknown argument.\n&quot;&lt;/font&gt;);
                        &lt;font color=&quot;#4169E1&quot;&gt;break&lt;/font&gt;;
                        }
                }
        }
        
        filep = fopen(file, mode == GENERATE ? &lt;font color=&quot;#e66170&quot;&gt;&quot;wt&quot;&lt;/font&gt; : &lt;font color=&quot;#e66170&quot;&gt;&quot;rt&quot;&lt;/font&gt;);
                
        &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (filep == NULL) {
                printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;Couldn&#39;t open file specified file!\n&quot;&lt;/font&gt;);
                &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; ERR_OPENING;
        }
        
        dp = opendir(dir);
        
        &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (dp != NULL) {
                &lt;font color=&quot;#4169E1&quot;&gt;while&lt;/font&gt; ((dirlist = readdir(dp)) != 0) {
                        &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (!strcmp(dirlist-&amp;gt; d_name, &lt;font color=&quot;#e66170&quot;&gt;&quot;.&quot;&lt;/font&gt;) || !strcmp(dirlist-&amp;gt; d_name, &lt;font color=&quot;#e66170&quot;&gt;&quot;..&quot;&lt;/font&gt;)) {
                                &lt;font color=&quot;#4169E1&quot;&gt;continue&lt;/font&gt;;
                        }
                        
                        &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (!strcmp(dirlist-&amp;gt; d_name, file)) {
                                &lt;font color=&quot;#4169E1&quot;&gt;continue&lt;/font&gt;;
                        }
                        
                        strcpy(chkfile, &lt;font color=&quot;#e66170&quot;&gt;&quot;&quot;&lt;/font&gt;);
                        strcat(chkfile, dir);
                        strcat(chkfile, dirlist-&amp;gt; d_name);
                        //printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;Checked file: %s\n&quot;&lt;/font&gt;, chkfile);
                        fp = fopen(chkfile, &lt;font color=&quot;#e66170&quot;&gt;&quot;rb&quot;&lt;/font&gt;);
                        strcpy(chkfile, &lt;font color=&quot;#e66170&quot;&gt;&quot;&quot;&lt;/font&gt;);
                        
                        &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (fp == NULL) {
                                printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;Error opening file %s\n&quot;&lt;/font&gt;, dir);
                                &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; ERR_OPENING;
                        }
                        
                        MD5Init (&amp;amp;mdContext);
                        &lt;font color=&quot;#4169E1&quot;&gt;while&lt;/font&gt; ((bytes = fread(data, 1, 1024, fp)) != 0) {
                                MD5Update (&amp;amp;mdContext, data, bytes);
                        }
                        
                        MD5Final (&amp;amp;mdContext);
                        fclose(fp);
                        
                        &lt;font color=&quot;#4169E1&quot;&gt;for&lt;/font&gt; (i = 0; i &amp;lt; 16; i++) {
                                sprintf(part_hash, &lt;font color=&quot;#e66170&quot;&gt;&quot;%02x&quot;&lt;/font&gt;, mdContext.digest[i]);
                                strcat(chkfile, part_hash);
                        }
                        strcat(chkfile, &lt;font color=&quot;#e66170&quot;&gt;&quot;\n&quot;&lt;/font&gt;);
                        &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (mode == GENERATE) {
                                fprintf(filep, &lt;font color=&quot;#e66170&quot;&gt;&quot;%s&quot;&lt;/font&gt;, chkfile);
                        } &lt;font color=&quot;#4169E1&quot;&gt;else&lt;/font&gt; {
                                fgets(hash, 34, filep);
                                //printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;Comparing %s and %s\n&quot;&lt;/font&gt;, chkfile, hash);
                                &lt;font color=&quot;#4169E1&quot;&gt;if&lt;/font&gt; (strcmp(chkfile, hash)) {
                                        printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;File integrity corrupt detected!\n&quot;&lt;/font&gt;);
                                        &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; 0;
                                }
                        }
                }
                
                closedir(dp);
        } &lt;font color=&quot;#4169E1&quot;&gt;else&lt;/font&gt; {
                printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;Couldn&#39;t open specified directory\n&quot;&lt;/font&gt;);
                &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; ERR_OPENING;
        }
        
        fclose(filep);
        printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;%s&quot;&lt;/font&gt;, mode == GENERATE ? &lt;font color=&quot;#e66170&quot;&gt;&quot;File integrity successful generated.\n&quot;&lt;/font&gt;
                                                                  :        &lt;font color=&quot;#e66170&quot;&gt;&quot;File integrity is not corrupted.\n&quot;&lt;/font&gt;);
        &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; 0;
}

&lt;strong&gt;&lt;font color=&quot;#4169E1&quot;&gt;&lt;a name=&quot;usage&quot;&gt;&lt;/a&gt;int usage(char *msg)&lt;/font&gt;&lt;/strong&gt; {
        printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;Argument error.\n&quot;&lt;/font&gt;);
        printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;%s&quot;&lt;/font&gt;, msg);
        printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;Usage: integrity\t[-g -d directory -f file] to generate integrity file\n&quot;&lt;/font&gt;);        
        printf(&lt;font color=&quot;#e66170&quot;&gt;&quot;\t\t\t[-c -d directory -f file] to check directory integrity\n&quot;&lt;/font&gt;);
        &lt;font color=&quot;#4169E1&quot;&gt;return&lt;/font&gt; ERR_ARG;
}
&lt;/pre&gt;&lt;br /&gt;
Запуск:&lt;br /&gt;
&lt;pre&gt;jightuse1@debian:~/code/2701/course_work$ make
gcc -Wall -o integrity integrity.c md5.c
jightuse1@debian:~/code/2701/course_work$ ./integrity -g -d . -f test
Generate integrity mode activated.
File integrity successful generated.
jightuse1@debian:~/code/2701/course_work$ cat test 
8801e49c277245731de1651cc92580ac
69be7b8c2356971993b5c571bc26d03a
2128dcde0c3cceeaaa74568200383828
91248fe33a48d557eb77a21b08506b15
13e18c11875db296a1b7e21fb0b9f23e
52f6c5476ae41bad2fa6af21f0d286b0
3d436d38da78eef0cda531f5b0e63afb
47b950cc631fa34d7af94b5bffa5ee9d
jightuse1@debian:~/code/2701/course_work$ ./integrity -c -d . -f test
Check integrity mode activated.
File integrity is not corrupted.
jightuse1@debian:~/code/2701/course_work$ 
&lt;/pre&gt;&lt;!--more--&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/5730769832625081466/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/5730769832625081466?isPopup=true' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5730769832625081466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/5730769832625081466'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/02/integrity.html' title='Integrity'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1345825072851885298.post-7496421606124931838</id><published>2011-02-01T02:16:00.012+06:00</published><updated>2013-04-27T12:38:14.096+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="clock"/><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="gksu"/><category scheme="http://www.blogger.com/atom/ns#" term="LUG"/><category scheme="http://www.blogger.com/atom/ns#" term="Squeeze"/><category scheme="http://www.blogger.com/atom/ns#" term="sudo"/><category scheme="http://www.blogger.com/atom/ns#" term="Новосибирск"/><category scheme="http://www.blogger.com/atom/ns#" term="настройка"/><title type='text'>Debian</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4ka.sibsutis.ru/uploads/monthly_01_2011/post-3-1296498064.png&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;Жизнь других дистрибутивов тоже не стоит на месте. 5 или 6 февраля состоится выход одного из самых достопочтенных и мудрых — Debian 6.0 Squeeze. В честь этого события по всему миру проходят &lt;a href=&quot;http://wiki.debian.org/ReleasePartySqueeze&quot;&gt;встречи пользователей&lt;/a&gt; Линукс в разных форматах. Спешу вам сообщить, что сообщество новосибирских пользователей первым в России &lt;a href=&quot;http://wiki.debian.org/ReleasePartySqueeze/Russia/Novosibirsk#preview&quot;&gt;зарегистрировало своё участие&lt;/a&gt; в данном мероприятии, к чему я приложил руку. Ожидается костёр, шашлыки и много умных личностей. Уважаемые жители Новосибирска, если кому-нибудь интересно, приходите, будем рады новым лицам. Подробную информацию можно узнать на сайте &lt;a href=&quot;http://lug.nsk.ru/lugnskru/2011/01/debian-squeeze-release-parties.html&quot;&gt;новосибирского сообщества LUG (Linux User Griup)&lt;/a&gt;&amp;nbsp;и в jabber-конференции&amp;nbsp;&lt;a href=&quot;xmpp://linuxnsk@conference.sibnsk.net&quot;&gt;linuxnsk@conference.sibnsk.net&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;На своём компьютере я наконец-то снова установил Debian, что сопровождалось некоторыми проблемами, о которых я вкратце расскажу.&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;Система устанавливалась с USB-флешки, и никакие способы полноценного переноса системы установки Debian с CD-образа на флешку не работают. Ни &lt;a href=&quot;http://www.debian.org/releases/stable/i386/ch04s03.html.ru&quot;&gt;предложенные на официальном сайте&lt;/a&gt;, ни реализуемые с помощью сторонних продуктов (наподобие &lt;a href=&quot;http://unetbootin.sourceforge.net/&quot;&gt;unetbootin&lt;/a&gt;). Устанавливается только основная система, выбор дополнительных пакетов предлагается, но выбирать просто не из чего - в меню находится один пункт. К тому же загрузчик операционной системы не устанавливается. Видимо, самый правильный путь — установка с образа netinst и установка всей операционной системы с помощью сети. Несмотря на эти минусы, я люблю Debian и смог доустановить его и настроить.&lt;/div&gt;&lt;div&gt;В первую очередь, я поправил установленный на компьютере загрузчик для того, чтобы он загружал Debian. Система загружалась, но сменить пользователя на root не представлялось возможным, так как при установке он не был создан, был выбран пункт sudo. Итак, в меню grub в конце строки, начинающейся словом linux, дописываем single и загружаемся суперпользователем.&lt;/div&gt;&lt;div&gt;Теперь настраиваем сеть. В моём случае пришлось вручную записывать IP-адрес, маску подсети, шлюз и dns-сервер, а также прокси-сервер (#export http-proxy=http://10.10.10.10:6666/), и таблицу маршрутизации (добавление адреса по умолчанию). После этого сеть работала, и после правки источника пакетов (/etc/apt/sources.list) я установил все необходимые мне пакеты, в том числе окружение рабочего стола GNOME.&lt;/div&gt;&lt;div&gt;Но одно неудобство не давал мне покоя. Пакет sudo и gksu установился всё из того же логина (запущенного single в grub). Видимо поэтому произошла некорректная настройка gksu по умолчанию. При запуске приложений, требующих административного доступа, данная программа запрашивала пароль пользователя root, который всё ещё не был создан. Решилась проблема так. Я установил slocate и, обновив его, обнаружил наличие в системе утилитки gksu-properties, в которой и переключалось поведение gksu. Теперь всё отлично — при запуске административных приложений запрашивается пароль sudo.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuLNLXV5wVJ6SOVsywqSlqK-2LOrj91LCpuUSNRKd_ayWYqwFZZ8NmHHfO0xj2EEF3H35AbKeHUnQkZAh1iM1Jo79yCKxWVTnjztYykl0u0tWj8tQfBZJ4kfoNEGxFHRmRyB-_LHDs8fEf/s1600/gksu-properties.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;231&quot; width=&quot;356&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuLNLXV5wVJ6SOVsywqSlqK-2LOrj91LCpuUSNRKd_ayWYqwFZZ8NmHHfO0xj2EEF3H35AbKeHUnQkZAh1iM1Jo79yCKxWVTnjztYykl0u0tWj8tQfBZJ4kfoNEGxFHRmRyB-_LHDs8fEf/s400/gksu-properties.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Следующее изменение я внёс в настройке апплета &quot;Часы&quot; панели GNOME. В вертикальной панели дата и время отображались написанными на боку, что не очень удобно. Настройки апплета меняются программкой&amp;nbsp;gconf-editor. В ней идём в apps/panel/applets/clock_screen0/prefs. Меняем поле format на &quot;custom&quot;, а поле custom_format на &quot;&amp;lt;span font_desc=&quot;10&quot;&amp;gt;%H:%M%n%e%n%a&amp;lt;/span&amp;gt;&quot;, задавая таким образом шрифт и формат даты и времени. Год и месяц я помню, мне они не нужны =) про формат даты можно почитать в &lt;a href=&quot;http://linux.die.net/man/3/strftime&quot;&gt;man-page по strftime&lt;/a&gt;, а про формат тега span &lt;a href=&quot;http://library.gnome.org/devel/pango/unstable/PangoMarkupFormat.html&quot;&gt;здесь&lt;/a&gt;&amp;nbsp;(мало ли, может вам нужно подчеркнуть каждое слово).&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRFslBQC-2bDHHvK0-kRo7dVLvJhYkXSFiWO4yDoIKdW5kaYzyOXmin0KHFO9h34iS74UqUxFxy_SciDDJhi55HEv-aHXDC8k9h7sBVAT9PSG3YXwdkDqhzrJKoOF0edxL8ax6H_Em61He/s1600/clock.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;94&quot; width=&quot;58&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRFslBQC-2bDHHvK0-kRo7dVLvJhYkXSFiWO4yDoIKdW5kaYzyOXmin0KHFO9h34iS74UqUxFxy_SciDDJhi55HEv-aHXDC8k9h7sBVAT9PSG3YXwdkDqhzrJKoOF0edxL8ax6H_Em61He/s400/clock.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Ну и напоследок — я не пользуюсь иконками на рабочем столе и предпочитаю, чтобы он был пустым. Снова с помощью gconf-editor выбираем нужный нам подраздел и убираем лишние иконки с рабочего стола: computer_icon_visible, network_icon_visible, trash_icon_visible, volumes_visible&lt;/div&gt;&lt;div&gt;&lt;div&gt;jightuse1@debian:~$ gconf-editor /apps/nautilus/desktop&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Вот и всё. Я доволен настройкой и работой системы.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLnCyKX-blWjtaKsHNuGIeOb8j8cmKidOjuu3zLjKtSRZ0jxc7ihkPKHO0twA439w3bg52n3o0iwQ36k6uySqQf3deT__4ubkngNJf1w506qoPfyofhisl4NQA8kAdE2oZEGKFAZkfZiHr/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;234&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLnCyKX-blWjtaKsHNuGIeOb8j8cmKidOjuu3zLjKtSRZ0jxc7ihkPKHO0twA439w3bg52n3o0iwQ36k6uySqQf3deT__4ubkngNJf1w506qoPfyofhisl4NQA8kAdE2oZEGKFAZkfZiHr/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Не бойтесь пустой командной строки. Из неё можно извлечь очень многое. Приглашение ввода —&lt;br /&gt;
&lt;blockquote&gt;#&lt;/blockquote&gt;— открывает вам путь в мир linux. В моём случае он выглядит как на картинке выше.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
UPD. Вот нарисовал юзербар =) пользуйтесь на здоровье.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkk-OgYIfc7EHB_Rwe315fcythg5wAx_8N1KQJFdVAHpXlsb9-dyGXK9-suwGtud7E4Mrbcud2HKLj0O0h15rTdfR3QY2v3lPOifgSW2QjRT_Zg-l7QoqL3SHZAWi02oCE7LxPW-0aRbCy/s1600/userbar3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;19&quot; width=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkk-OgYIfc7EHB_Rwe315fcythg5wAx_8N1KQJFdVAHpXlsb9-dyGXK9-suwGtud7E4Mrbcud2HKLj0O0h15rTdfR3QY2v3lPOifgSW2QjRT_Zg-l7QoqL3SHZAWi02oCE7LxPW-0aRbCy/s400/userbar3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jightuse.blogspot.com/feeds/7496421606124931838/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1345825072851885298/7496421606124931838?isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/7496421606124931838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1345825072851885298/posts/default/7496421606124931838'/><link rel='alternate' type='text/html' href='http://jightuse.blogspot.com/2011/02/debian.html' title='Debian'/><author><name>JIghtuse</name><uri>http://www.blogger.com/profile/15337625628840674759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuLNLXV5wVJ6SOVsywqSlqK-2LOrj91LCpuUSNRKd_ayWYqwFZZ8NmHHfO0xj2EEF3H35AbKeHUnQkZAh1iM1Jo79yCKxWVTnjztYykl0u0tWj8tQfBZJ4kfoNEGxFHRmRyB-_LHDs8fEf/s72-c/gksu-properties.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>