<?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: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-580366472652257422</id><updated>2012-05-16T11:18:07.656+04:00</updated><category term='debian'/><category term='icfpc'/><category term='network'/><category term='lisp'/><category term='iolib'/><category term='ubuntu'/><category term='highload'/><category term='egroupware'/><category term='networking'/><title type='text'>Turtle//BAZON Group</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/-/lisp'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/search/label/lisp'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-496518662790041953</id><published>2012-05-08T14:11:00.001+04:00</published><updated>2012-05-08T14:11:01.269+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><title type='text'>enhanced-thread-pool</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Недавно тут понадобилась библиотека для пула потоков. Тогда нашёл было &lt;a href='https://github.com/kiuma/thread-pool'&gt;thread-pool&lt;/a&gt;. Но оказалось, что если положить в его очередь задания пока заняты работающие нити, то он не начнёт обрабатывать её как какой-нибудь поток освободится. Поэтому набросал &lt;a href='https://bitbucket.org/turtle_bazon/enhanced-thread-pool/'&gt;свою библиотеку&lt;/a&gt; для пула потоков. В принципе, возможно, как я потом изучил, для моих задач бы хватило &lt;a href='http://marijnhaverbeke.nl/pcall/'&gt;pcall&lt;/a&gt; или &lt;a href='http://common-lisp.net/project/eager-future/'&gt;eager-future&lt;/a&gt;, но к этому времени основную функциональность я уже дописал. Дополнительно библиотека позволяет создавать временные дополнительные нити и использовать их при повышающихся нагрузках и освобождать их при понижении нагрузок. В общем, просьба знающих людей посмотреть и высказать своё мнение. В том числе и то, что можно и лучше использовать вместо этого.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-496518662790041953?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/496518662790041953/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2012/05/enhanced-thread-pool.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/496518662790041953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/496518662790041953'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2012/05/enhanced-thread-pool.html' title='enhanced-thread-pool'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-6880308272826243708</id><published>2011-07-22T20:44:00.001+04:00</published><updated>2011-07-22T20:44:07.973+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SBCL 1.0.50</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Обновление SBCL 1.0.50 в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;. Также обновлены slime (состояние на 22.07.2011) и добавлены пакеты chipz и salza2.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-6880308272826243708?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/6880308272826243708/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2011/07/sbcl-1050.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6880308272826243708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6880308272826243708'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2011/07/sbcl-1050.html' title='SBCL 1.0.50'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-1926852228156418616</id><published>2011-06-08T20:38:00.001+04:00</published><updated>2011-06-08T20:38:53.853+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SBCL 1.0.49</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Обновление SBCL 1.0.49 в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;. Также обновлены slime (состояние на 08.06.2011) и asdf (2.016).&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-1926852228156418616?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/1926852228156418616/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2011/06/sbcl-1049.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/1926852228156418616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/1926852228156418616'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2011/06/sbcl-1049.html' title='SBCL 1.0.49'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-6892862646269180471</id><published>2011-05-22T10:20:00.001+04:00</published><updated>2011-05-22T10:20:03.721+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Сетевой прокси редиректор CLANPER (прототип)</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Существует такая программка, которая называется &lt;a href='http://www.boutell.com/rinetd/'&gt;rinetd&lt;/a&gt;. Смысл её заключается в том, чтобы как-то "легко пробрасывать порты". Я даже пытался её использовать на одном сервере, но через некоторое время она начинала грузить процессор на полную, да и не работала при этом. Гугление ни к чему хорошему не привело, поэтому я просто решил потестить iolib и сделать свой порт редиректор. Собственно, что-то получилось. Конечно, сам код далёк от совершенства, но я его уже запустил у себя на том сервере вместо rientd. Пока полёт нормальный.&lt;/p&gt;&lt;p&gt;Полученное на данный момент решение обладает рядом недостатков:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;не ведётся лог;&lt;/li&gt;&lt;li&gt;не работает с udp портами;&lt;/li&gt;&lt;li&gt;не реализованы ACL;&lt;/li&gt;&lt;li&gt;ну и стандартная проблема для такого рода редиректоров, которая не может быть решена - сервер, куда редиректятся запросы, не может определить IP клиента, потому что IP будет сервер, с которого редиректятся запросы.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href='https://developer.bazon.ru/hg/debian-lisp/clanper/file/5a0859d5dbf3'&gt;Исходные коды&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-6892862646269180471?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/6892862646269180471/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2011/05/clanper.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6892862646269180471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6892862646269180471'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2011/05/clanper.html' title='Сетевой прокси редиректор CLANPER (прототип)'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-6696349099628088600</id><published>2011-05-21T20:17:00.001+04:00</published><updated>2011-05-21T20:17:45.026+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SBCL 1.0.48 и остальные</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Обновление SBCL 1.0.48 в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;. Также обновлены slime (состояние ня 19.05.2011), asdf (2.015.3), а также добавлен buildapp версии 1.2. В отличие от &lt;a href='http://packages.debian.org/wheezy/buildapp'&gt;"родного" debian пакета&lt;/a&gt;, который сразу поставляется в бинарном платформозависимом виде, данная сборка поставляется для всех платформ, где будет установлен sbcl. А компиляция происходит при установке, а также при обновлении самого sbcl.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-6696349099628088600?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/6696349099628088600/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2011/05/sbcl-1048.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6696349099628088600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6696349099628088600'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2011/05/sbcl-1048.html' title='SBCL 1.0.48 и остальные'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-8421046521126188038</id><published>2011-04-02T07:50:00.001+04:00</published><updated>2011-04-02T07:53:22.133+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Обновление REPO от 31.03.2011</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;В &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt; очередное обновление:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://armedbear.org/'&gt;xcl&lt;/a&gt; - очередная реалзация языка Common Lisp с компиляцией в нативный код;&lt;/li&gt;&lt;li&gt;asdf - версия 2.014.2.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-8421046521126188038?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-8421046521126188038?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/8421046521126188038/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2011/04/repo-31032011.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/8421046521126188038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/8421046521126188038'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2011/04/repo-31032011.html' title='Обновление REPO от 31.03.2011'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-1335186237240039407</id><published>2011-03-28T21:24:00.001+04:00</published><updated>2011-03-28T21:24:47.049+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SBCL 1.0.47</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Обновление SBCL 1.0.47 в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-1335186237240039407?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/1335186237240039407/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2011/03/sbcl-1047.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/1335186237240039407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/1335186237240039407'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2011/03/sbcl-1047.html' title='SBCL 1.0.47'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-5239212020657865766</id><published>2011-03-23T20:25:00.002+03:00</published><updated>2011-05-21T20:09:49.674+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SBCL 1.0.46</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Обновление SBCL 1.0.46 в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;. Вместе с ним обновлены пакеты slime (снапшот из CVS) и asdf (до версии 2.013).&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-5239212020657865766?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-5239212020657865766?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/5239212020657865766/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2011/03/sbcl-1046.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/5239212020657865766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/5239212020657865766'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2011/03/sbcl-1046.html' title='SBCL 1.0.46'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-3688109721607784772</id><published>2010-12-11T11:46:00.001+03:00</published><updated>2010-12-11T11:46:30.496+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SBCL 1.0.45</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Обновление SBCL 1.0.45 в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-4476947293906256380?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-3688109721607784772?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/3688109721607784772/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/12/sbcl-1045.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/3688109721607784772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/3688109721607784772'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/12/sbcl-1045.html' title='SBCL 1.0.45'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-7601697708265559971</id><published>2010-12-07T00:02:00.001+03:00</published><updated>2010-12-07T00:02:41.157+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='iolib'/><category scheme='http://www.blogger.com/atom/ns#' term='highload'/><title type='text'>эхо-сервер и 15000 запросов в секунду</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;В своём прошлом посте &lt;a href='http://turtle-bazon.blogspot.com/2010/12/iolib.html'&gt;я жаловался на быстродействие&lt;/a&gt; казалось бы тривиального &lt;a href='http://lisper.ru/apps/format/179'&gt;эхо-сервера&lt;/a&gt;. При разборе &lt;a href='http://archimag-dev.blogspot.com/2010/12/10.html'&gt;archimag'овского сервера с 10000 запросами в секунду&lt;/a&gt; обратил внимание, что он использует пул буферов чтения-записи. Собственно, идея то не нова, но скопипащенный ex8-server.lisp из IOLIB тогда почему-то не привлёк моё внимание отсутствием пула. Добавление его убыстрило эхо-сервер более, чем в 10 раз. На моём стареньком ноуте он теперь обрабатывает порядка 15000 запросов в секунду против 1200. На другой машинке (Core i5 с пониженной частотой при множителе 13, где-то около 1200 ГГц) порядка 35000-40000 запросов в секунду. Также стоит отметить, что эхо-сервер не сбрасывает сам соединение, а держит сеанс. В противном случае могло бы быть ещё быстрее.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-7601697708265559971?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/7601697708265559971/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/12/15000.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/7601697708265559971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/7601697708265559971'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/12/15000.html' title='эхо-сервер и 15000 запросов в секунду'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-9789608745750900</id><published>2010-12-04T15:25:00.001+03:00</published><updated>2010-12-04T23:45:35.553+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='iolib'/><title type='text'>iolib и эхо-сервер</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p align='justify'&gt;Недавно тут озаботился написанием tcp-сервера. Эксперименты решил начать с простого &lt;a href='http://lisper.ru/apps/format/179'&gt;эхо-сервера&lt;/a&gt;. Да и в примерах iolib'ов он был. Ну, значит, запустил я его и решил испытать на стрессовые нагрузки. Для этого я использовал тулзу &lt;a href='http://jakarta.apache.org/jmeter/'&gt;jmeter&lt;/a&gt;. Так вот, что выяснилось. При даже 100 параллельных запросах не все доходит правильно до клиента. И где-то 2% теряется (на моей машине). Вариант эхо-сервера, написанного на C, который я взял в том же iolib - на 100 обходится без ошибок. Правда на 1000 уже где-то 1% появляется. Вариант с использованием IOLIB - 10%. И вот меня тут смутило немного - а правильно ли я вообще понимаю всё? И неужели простому эхо-серверу так сильно становится плохо? Быстро накиданный вариант на java, который выделяет отдельные потоки на клиента - вообще 97% ошибок показал. С java.nio (асинхронная модель) не пробовал, потому как к этому времени уже изрядно расстроился.&lt;/p&gt;&lt;p align='justify'&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-9789608745750900?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-9789608745750900?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-9789608745750900?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/9789608745750900/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/12/iolib.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/9789608745750900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/9789608745750900'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/12/iolib.html' title='iolib и эхо-сервер'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-7631696201250072230</id><published>2010-12-01T01:30:00.001+03:00</published><updated>2010-12-01T01:30:08.387+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Обновление REPO 20101201</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Очередное пополение в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;iolib - версия 0.7.3.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-3898370888361399957?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-7631696201250072230?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/7631696201250072230/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/12/repo-20101201.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/7631696201250072230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/7631696201250072230'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/12/repo-20101201.html' title='Обновление REPO 20101201'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-3898370888361399957</id><published>2010-11-29T05:07:00.001+03:00</published><updated>2010-11-29T05:07:48.842+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Обновление REPO 20101129</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Очередное пополение в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;. Какие-то библиотеки обновились, какие-то появились:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;alexandria;&lt;/li&gt;&lt;li&gt;cffi;&lt;/li&gt;&lt;li&gt;trivial-features;&lt;/li&gt;&lt;li&gt;bordeaux-threads;&lt;/li&gt;&lt;li&gt;fiveam;&lt;/li&gt;&lt;li&gt;arnesi;&lt;/li&gt;&lt;li&gt;trivial-garbage.&lt;/li&gt;&lt;/ul&gt;&lt;p align='justify'&gt;Большинство из них собиралось для удовлетворения зависимостей к iolib. Обновление было произведено на последние релизные версии. В связи с этим вопрос - у этих библиотечек что-нибудь требуется ну очень свежее?&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-3898370888361399957?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/3898370888361399957/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/11/repo-20101129.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/3898370888361399957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/3898370888361399957'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/11/repo-20101129.html' title='Обновление REPO 20101129'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-6525040632825942645</id><published>2010-10-28T23:59:00.001+04:00</published><updated>2010-11-29T05:08:26.525+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>CLISP 2.49</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p align='justify'&gt;Холодным осенним вечером делать было нечего, поэтому собрал свежую версию CLISP'а и выложил его в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;. В силу некоторых особенностей модуль clisp-module-berkley-db для 32-битной системы собран с зависимостью на libdb4.6, а для 64-битной системы - на libdb4.8. В остальном отличий нет. В отличие от оригинального пакета Debian, собран без зависимости и без использования CLC (Common Lisp Controller), согласно идеологии репозитория, поэтому для кого это критично - нужно будет задуматься. А в целом, свежачок. :)&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-6525040632825942645?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-6525040632825942645?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-6525040632825942645?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/6525040632825942645/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/10/clisp-249.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6525040632825942645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6525040632825942645'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/10/clisp-249.html' title='CLISP 2.49'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-1706594406300566237</id><published>2010-10-22T06:48:00.001+04:00</published><updated>2010-10-22T06:58:29.489+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Пингующий скрипт</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p align='justify'&gt;Стандартная задача "маршрутизации" для бедных. Дано: два провайдера и выход в интернет. Один из каналов считается основным, второй резервным. И необходимо переключать маршрут с одного провайдера на другого, перестраивая таблицу маршрутизации. При этом не имеется ни автономной системы, ни, тем более, анонсирования маршрутов со стороны провайдера. Выходом является создание пингующего скрипта, который проверяет доступность внешнего ресурса, и на основании этих данных принимает какое-либо решение. Прямо напрашивается программирование. Ну я то знаю, что нет ничего удобнее для программирования, чем lisp. Итог - дебиан-пакет reserve-channel, который находится в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;. Сами исходные тексты можно посмотреть &lt;a href='https://developer.bazon.ru/hg/debian-lisp/reserve-channel/'&gt;тут&lt;/a&gt;. Задача обобщена для n каналов, где n больше 1, поэтому есть возможность развёртывания системы для каналов больше двух. Ну и, напоследок, пример конфигурационного файла:&lt;/p&gt;&lt;blockquote&gt;&lt;p align='justify'&gt; (:config &lt;br/&gt; (:channel &lt;br/&gt; (:interface "eth2") &lt;br/&gt; (:gateway "192.168.2.1") &lt;br/&gt; (:routed t) &lt;br/&gt; (:purpose :main)) &lt;br/&gt; (:channel &lt;br/&gt; (:interface "eth1") &lt;br/&gt; (:gateway "192.168.0.200") &lt;br/&gt; (:routed t) &lt;br/&gt; (:purpose :reserve)) &lt;br/&gt; (:test-host (:hostname "google.ru")) &lt;br/&gt; (:test-host (:hostname "ya.ru"))) &lt;br/&gt; &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-1706594406300566237?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-1706594406300566237?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/1706594406300566237/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/10/blog-post.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/1706594406300566237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/1706594406300566237'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/10/blog-post.html' title='Пингующий скрипт'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-6291182551832408604</id><published>2010-09-15T22:16:00.001+04:00</published><updated>2010-09-15T22:16:12.698+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>lisp-getent - получение пользователей и групп в системе</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p align='justify'&gt;Может, кому ещё понадобится. Данная библиотечка позволяет получить список пользователей и групп в системе, список пользователей группы, а также вести поиск по имени или идентификатору в каталогах пользователя или группы. Работает через external-program, что не все, наверное, поймут, но работает. Имеет ограничение на работу в unix-системах, в которых существует команда getent. Традиционно лежит в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-6291182551832408604?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/6291182551832408604/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/09/lisp-getent.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6291182551832408604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6291182551832408604'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/09/lisp-getent.html' title='lisp-getent - получение пользователей и групп в системе'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-679460377782273127</id><published>2010-09-07T23:07:00.001+04:00</published><updated>2010-12-11T11:47:47.624+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Обновление REPO 20100907</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p align='justify'&gt;Обновления в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;. Оказалось, что у пакета ironclad прописана зависимость на CommonLispController, а у пакета slime используются сценарии post-inst и pre-rm с его участием. Непорядок. Что и было, собственно, исправлено. Заодно обновлён slime на снапшот от 20100907.&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-679460377782273127?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-679460377782273127?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-679460377782273127?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/679460377782273127/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/09/repo-20100907.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/679460377782273127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/679460377782273127'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/09/repo-20100907.html' title='Обновление REPO 20100907'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-4476947293906256380</id><published>2010-09-05T22:23:00.001+04:00</published><updated>2010-09-05T22:23:18.288+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SBCL 1.0.42</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Обновление SBCL 1.0.42 в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-4476947293906256380?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/4476947293906256380/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/09/sbcl-1042.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/4476947293906256380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/4476947293906256380'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/09/sbcl-1042.html' title='SBCL 1.0.42'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-7178640668779105976</id><published>2010-07-29T02:20:00.001+04:00</published><updated>2010-07-29T02:21:07.298+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>do-backup, программа создания резервных копий</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p align='justify'&gt;С недавнего времени озаботился созданием резервных копий того, что есть на диске. Точнее, на диске сервера. Конфигурации, некоторое состояние и тому подобное. Не помню почему, но то, что было - не устроило. Ну и решил написать своё решение, но уже на лиспе. Для запуска внешних программ используется библиотека external-program. Программа do-backup обрабатывает конфигурацию вида:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;((:contact&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:to "root")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:subject "DO-BACKUP robot"))&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:action :7z&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:suffix ".7z")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:program "7z")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:argument "a")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:argument :file)&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:argument :files))&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:action :slapcat&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:program "slapcat"))&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:action :pg_dumpall&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:program "su")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:argument "-")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:argument "postgres")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:argument "-c")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:argument "pg_dumpall"))&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;(:backup&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:action :7z)&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:file "/etc/")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:file "/var/lib/bind/")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:file "/var/lib/egroupware/")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:file "/var/lib/ejabberd/")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:file "/var/lib/ldap/")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:dynamic-file "/var/backups/ldap-data.ldif" :action :slapcat :saveoutput t)&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:dynamic-file "/var/backups/postgresql/postgre.sql" :action :pg_dumpall :saveoutput t)&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:output-directory "/backups/configuration/" "configuration-~a.7z" 60))&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:backup&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:action :7z)&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:file "/var/lib/projects/")&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; (:output-directory "/backups/projects/" "projects-~a.7z" 30)))&lt;/p&gt;&lt;/blockquote&gt;&lt;p align='justify'&gt;Секция :backup описывает то, что необходимо будет резервнокопировать (в секциях :file и :dynamic-file), а :action - какие дейтвия необходимо выполнять. В целом, как мне кажется, по конфигурации понятно что должно происходить.&lt;/p&gt;&lt;p align='justify'&gt;Далее, необходимо запускать задания по расписанию. В целом, мог бы подойти и обычный cron, но в данном случае для обобщения решений на лиспе был использован clon как аналог cron'а. Ну и, конечно же, необходимо демонизировать. Это достигается путём использования пакета &lt;a href='https://developer.bazon.ru/hg/debian-lisp/sbcl-daemon/'&gt;sbcl-daemon&lt;/a&gt;, являющегося производным от &lt;a href='http://github.com/archimag/restas/blob/master/contrib/restas-daemon.lisp'&gt;restas-daemon.lisp&lt;/a&gt;. Важное отличие - это неиспользование (sb-posix:umask 0), поскольку это порождает файлы с записью для всего мира, что несколько небезопасно по умолчанию. Ну и ещё динамический запуск процедур в зависимости от конфигурации. Конфигурация демона do-backup производится в /etc/do-backup.daemon, где и задаётся периодичность запуска.&lt;/p&gt;&lt;p align='justify'&gt;В заключении - &lt;a href='https://developer.bazon.ru/hg/debian-lisp/do-backup/'&gt;исходный код проекта&lt;/a&gt;. Собранные пакеты, готовые для установки - в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-7178640668779105976?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-7178640668779105976?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/7178640668779105976/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/07/do-backup.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/7178640668779105976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/7178640668779105976'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/07/do-backup.html' title='do-backup, программа создания резервных копий'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-3316347317786381633</id><published>2010-07-20T22:00:00.002+04:00</published><updated>2010-07-29T11:24:47.080+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Обновление REPO 20100720</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Очередное пополение в &lt;a href="https://developer.bazon.ru/projects/debian-lisp/"&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li align="justify"&gt;sbcl-daemon - инфраструктура для запуска лисп-приложений под sbcl в качестве демона (начальный коммит, производный от restas-daemon.lisp);&lt;/li&gt;&lt;li align="justify"&gt;trivial-timers - библиотечка таймеров, используемая в clon;&lt;/li&gt;&lt;li align="justify"&gt;clon - некий аналог cron'а.&lt;/li&gt;&lt;/ul&gt;&lt;div align="justify"&gt;&lt;img height="1" src="https://blogger.googleusercontent.com/tracker/580366472652257422-3316347317786381633?l=turtle-bazon.blogspot.com" width="1" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-3316347317786381633?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/3316347317786381633/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/07/repo-20100720.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/3316347317786381633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/3316347317786381633'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/07/repo-20100720.html' title='Обновление REPO 20100720'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-8873434006872634521</id><published>2010-07-16T01:31:00.001+04:00</published><updated>2010-07-16T01:31:30.303+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><title type='text'>Более удобный запуск внешних програм external-program-extender</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p align='justify'&gt;Для лиспа существует возможность наиболее кроссплатформенно запускать внешние программы - &lt;a href='http://common-lisp.net/project/external-program/'&gt;external-program&lt;/a&gt;. В целом с задачей своей она справляется, и даже позволяет перенаправлять вывод в поток. Но вот сразу получить вывод в виде строки или же в виде списка строк, как это делает scsh - нет этого встроенного. Собственно, с целью получить подобную функциональность и написал небольшой extender. Теперь можно использовать следующую конструкцию:&lt;/p&gt;&lt;blockquote&gt;&lt;p align='justify'&gt;* (run/string "ls" '("-a"))&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;".&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;..&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;bin&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;boot&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;cdrom&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;.config&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;dev&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;etc&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;home&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;initrd.img&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;initrd.img.old&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;.kde&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;lib&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;lib32&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;lib64&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;lost+found&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;media&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;mnt&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;proc&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;root&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;sbin&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;selinux&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;srv&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;sys&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;tmp&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;usr&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;var&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;vmlinuz&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;vmlinuz.old&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Или, если хочется получить результат в виде списка строк, то:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;* (run/strings "ls" '("-a"))&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p/&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;("." ".." "bin" "boot" "cdrom" ".config" "dev" "etc" "home" "initrd.img"&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; "initrd.img.old" ".kde" "lib" "lib32" "lib64" "lost+found" "media" "mnt"&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; "proc" "root" "sbin" "selinux" "srv" "sys" "tmp" "usr" "var" "vmlinuz"&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt; "vmlinuz.old" "")&lt;/p&gt;&lt;/blockquote&gt;&lt;p align='justify'&gt;Данную библиотеку можно собрать из меркуриаловского &lt;a href='https://developer.bazon.ru/hg/debian-lisp/external-program-extender/'&gt;хранилища исходных текстов&lt;/a&gt;, или же, при использовании Ubuntu или Debian из &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрия для Ubuntu и Debian&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-8873434006872634521?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/8873434006872634521/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/07/external-program-extender.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/8873434006872634521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/8873434006872634521'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/07/external-program-extender.html' title='Более удобный запуск внешних програм external-program-extender'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-4565271490968933243</id><published>2010-07-04T01:33:00.001+04:00</published><updated>2010-07-04T02:37:57.149+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SBCL 1.0.40</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p align='justify'&gt;Обновление SBCL 1.0.40 в &lt;a href='https://developer.bazon.ru/projects/debian-lisp/'&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;. Из приятного - тесты у него проходят теперь и на 32-битной платформе. Внутри у него ASDF2 и теперь нет необходимости в пакете asdf-binary-locations.&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-4565271490968933243?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-4565271490968933243?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-4565271490968933243?l=turtle-bazon.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-4565271490968933243?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/4565271490968933243/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/07/sbcl-1040.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/4565271490968933243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/4565271490968933243'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/07/sbcl-1040.html' title='SBCL 1.0.40'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-8573502452522663389</id><published>2010-06-25T23:18:00.003+04:00</published><updated>2010-07-04T00:58:10.858+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Обновление REPO</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Ironclad 0.28 в &lt;a href="https://developer.bazon.ru/projects/debian-lisp/"&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;.&lt;br /&gt;&lt;img height="1" src="https://blogger.googleusercontent.com/tracker/580366472652257422-8573502452522663389?l=turtle-bazon.blogspot.com" width="1" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-8573502452522663389?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/8573502452522663389/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/06/repo.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/8573502452522663389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/8573502452522663389'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/06/repo.html' title='Обновление REPO'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-6323827415719610912</id><published>2010-06-25T00:51:00.005+04:00</published><updated>2010-07-04T00:57:44.570+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Обновление REPO</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Обновился пакеты в &lt;a href="https://developer.bazon.ru/projects/debian-lisp/"&gt;lisp-репизотрии для Ubuntu и Debian&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SLIME (Superior Lisp Interaction Mode for Emacs) - 20100624;&lt;/li&gt;&lt;li&gt;bordeaux-threads - 0.7.0&lt;/li&gt;&lt;/ul&gt;&lt;img height="1" src="https://blogger.googleusercontent.com/tracker/580366472652257422-6323827415719610912?l=turtle-bazon.blogspot.com" width="1" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-6323827415719610912?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/6323827415719610912/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/06/slime-lisp-ubuntu-debian.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6323827415719610912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/6323827415719610912'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/06/slime-lisp-ubuntu-debian.html' title='Обновление REPO'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-580366472652257422.post-3215817369605168466</id><published>2010-06-23T16:59:00.001+04:00</published><updated>2010-07-04T00:57:11.042+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='icfpc'/><title type='text'>ICFPC-2010</title><content type='html'>В этом году я второй раз участвовал в &lt;a href="http://icfpcontest.org/"&gt;ICFP Contest&lt;/a&gt; (&lt;a href="http://developer.bazon.ru/projects/icfpc-2009/"&gt;отчёт об участии в ICFPC-2009&lt;/a&gt; ). Ожидалось заранее, что будет какое-нибудь устройство, которым можно будет управлять. Но ожидания слегка не оправдались. :) В этот раз задача походила на сказку - пойди туда не знаю куда, сделай то не знаю что. Участвовал в команде Skobochka и набрали где-то 3 с чем-то балла. Но обо всём по порядку:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;День1&lt;/b&gt;&lt;br /&gt;Прямо к четырём оказаться для контеста у меня не получилось, поэтому я опоздал где-то на полчаса. Начал читать задание. Кто-то в это время уже набросал в CLOS модель машин и разгадывал фабрику. Фабрика представляла собой гейты с двумя входами (левый и правый) и двумя выходами (также левый и правый) и соединениями между ними. При этом соединение к одной точке (вход или выход) могло производиться только одной линией. Также фабрика содержит специальный гейт, называемый внешним, от которого поступает информация и на который эта информация уходит. В чате все предположили, что слева - входы гейта, справа - выходы. Ну и описание соответственно. Приведу прмер фабрики, которая была в задании:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;19L:&lt;br /&gt;12R13R0#1R12R,&lt;br /&gt;14R0L0#4R9L,&lt;br /&gt;9R10R0#3L8L,&lt;br /&gt;2L17R0#5L9R,&lt;br /&gt;15R1L0#10R13R,&lt;br /&gt;3L18R0#6L15L,&lt;br /&gt;5L11R0#13L12L,&lt;br /&gt;19R16R0#11R8R,&lt;br /&gt;2R7R0#11L10L,&lt;br /&gt;1R3R0#18L2L,&lt;br /&gt;8R4L0#16L2R,&lt;br /&gt;8L7L0#15R6R,&lt;br /&gt;6R0R0#14L0L,&lt;br /&gt;6L4R0#14R0R,&lt;br /&gt;12L13L0#17L1L,&lt;br /&gt;5R11L0#16R4L,&lt;br /&gt;10L15L0#17R7R,&lt;br /&gt;14L16L0#18R3R,&lt;br /&gt;9L17L0#19R5R,&lt;br /&gt;X18L0#X7L:&lt;br /&gt;19L&lt;/pre&gt;&lt;/blockquote&gt;К этой фабрике необходимо было подать на вход последовательность [0,2,2,2,2,2,2,0,2,1,0,1,1,0,0,1,1] и на выходе бы получился ключ, который должна выдавать каждая из фабрик.&lt;br /&gt;Посмотрев, как входы и выходы специфицируются на каждом гейте и как вход на цепь специфицируется входами гейтов я сразу же подумал подать пустую фабрику "X: :X" и получил последовательность. И тут, как говорится, "Остапа понесло". Я предположил, что незвестна не только функция гейта, но ещё и функция внешнего гейта, на котором также происходит преобразование. Весь оставшийся день прошёл в попытках решить аналитически две неизвестные функции гейтов.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;День2&lt;/b&gt;&lt;br /&gt;День второй продолжился тем же, чем и закончился, а другие команды уже набрали свои первые очки. После обеда я всё же решил предположить, что внешний гейт - это всего лишь соединение машины и никакого преобразования там не происходит. Подавая разные топологии фабрик я всё же получил функцию активации гейта. На этом я почувствовал себя обессиленным. Наши же в это время создали создавалку случайных фабрик и сабмитилку прямо на сервер. И как бы было не смешно, но это принесло нам первые очки. Созданная симуляция фабрик не работала, дружно обсуждали семантику обратных связей, но так внятно ничего сделать уже не смогли. Перебиралка засабмитила решения ещё для двух машин. Пытались найти формат машин, но как-то безуспешно. К концу дня почти все сдались и перешли в разряд наблюдателей. К этому времени остальные команды закончили аналитику и дописали своих ботов. Сервер лёг.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;День3&lt;/b&gt;&lt;br /&gt;Состязание завершилось. 3 балла.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Итог&lt;/b&gt;&lt;br /&gt;В следующем году обязательно буду участвовать. Всей команде Skobochka (allchemist, vseloved, rigidus, treep, &lt;a href="http://dmitry-vk.livejournal.com/"&gt;dmitry_vk&lt;/a&gt;, ...) спасибо.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/580366472652257422-3215817369605168466?l=turtle-bazon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://turtle-bazon.blogspot.com/feeds/3215817369605168466/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://turtle-bazon.blogspot.com/2010/06/icfpc-2010.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/3215817369605168466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/580366472652257422/posts/default/3215817369605168466'/><link rel='alternate' type='text/html' href='http://turtle-bazon.blogspot.com/2010/06/icfpc-2010.html' title='ICFPC-2010'/><author><name>turtle</name><uri>http://www.blogger.com/profile/11987174234125306091</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_m2dDaAHdnxA/TCw0HSU4LhI/AAAAAAAAAAs/pMxmw2U_B8s/S220/turtle.logo.png'/></author><thr:total>0</thr:total></entry></feed>
