<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sveshnikov.ru - это наилучший источник информации по теме unix perl shell и всего такого &#187; общее</title>
	<atom:link href="http://alexey.sveshnikov.ru/blog/category/%d0%be%d0%b1%d1%89%d0%b5%d0%b5/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexey.sveshnikov.ru/blog</link>
	<description>bookmarks-on-tranquilizers</description>
	<lastBuildDate>Tue, 25 May 2010 20:30:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>defun.ru &#8211; ресурс о функциональном программировании</title>
		<link>http://alexey.sveshnikov.ru/blog/2008/04/11/defun/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2008/04/11/defun/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 15:15:55 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[общее]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/2008/04/11/defun/</guid>
		<description><![CDATA[Не могу не пропиарить: www.defun.ru Дефун это что-то типа Digg’а для людей интересующихся функциональным, декларативным и прочим “нестандартным” программированием. (c) Semka Основная тема — новости и ссылки о функциональном программировании, разных альтернативных и перспективных языках, ну и про computer science вообще. Ключевые слова — хаскель, erlang, lisp, smalltalk, ocaml. Ruby, groovy и питон туда тоже [...]]]></description>
			<content:encoded><![CDATA[<p>Не могу не пропиарить: <a href="http://defun.ru">www.defun.ru</a></p>
<blockquote><p>Дефун это что-то типа Digg’а для людей интересующихся функциональным, декларативным и прочим “нестандартным” программированием.</p></blockquote>
<p><a href="http://sdfgh153.ru/2008/04/blog-post_11.html">(c) Semka</a></p>
<blockquote><p>Основная тема — новости и ссылки о функциональном программировании, разных альтернативных и перспективных языках, ну и про computer science вообще. Ключевые слова — хаскель, erlang, lisp, smalltalk, ocaml. Ruby, groovy и питон туда тоже отлично впишутся.</p></blockquote>
<p><a href="http://brainslugs.blogspot.com/2008/04/blog-post.html">Тру Программист</a></p>
<p>Там уже сейчас чтения на все выходные :)</p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2008/04/11/defun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сдал на MCSA!</title>
		<link>http://alexey.sveshnikov.ru/blog/2008/04/01/exams/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2008/04/01/exams/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 07:36:29 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[общее]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/2008/04/01/%d1%81%d0%b4%d0%b0%d0%bb-%d0%bd%d0%b0-mcsa/</guid>
		<description><![CDATA[Это просто праздник какой-то, со второго раза удалось сдать оба экзамена на W2K3 MCSA &#8211; 70-290 и 70-291! Если бы такие экзамены были у меня в университете, меня бы отчислили на первой же сессии, это единственное, что могу сказать. И еще, даже не ожидал, что они могут быть настолько сложны. Но зато теперь я &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Это просто праздник какой-то, со второго раза удалось сдать оба экзамена на W2K3 MCSA &#8211; 70-290 и 70-291!<br />
Если бы такие экзамены были у меня в университете, меня бы отчислили на первой же сессии, это единственное, что могу сказать. И еще, даже не ожидал, что они могут быть настолько сложны.</p>
<p>Но зато теперь я &#8211; Microsoft Certified System Administrator, урра!</p>
<p>Завтра мои данные появятся на  https://mcp.microsoft.com/authenticate/validatemcp.aspx, id 7900401.</p>
<p>На очереди 70-297, даже не знаю, как я буду его сдавать.. :(<br />
Но это потом, а пока &#8211; принимаю поздравления!</p>
<p><b>upd: смотрим на дату и больше не задаем глупых вопросов :)</b></p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2008/04/01/exams/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Первый опыт фриланса :)</title>
		<link>http://alexey.sveshnikov.ru/blog/2007/11/17/first-freelance-expierence/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2007/11/17/first-freelance-expierence/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 19:12:46 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[общее]]></category>
		<category><![CDATA[freelance]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/2007/11/17/first-freelance-expierence/</guid>
		<description><![CDATA[Три дня провел на getafreelancer.com За это время успел сделать четыре заявки, выполнить один проект, заработать 35 баксов и, напоследок, составить некоторое мнение об этом сайте. А именно, мне показалось, что можно заработать там тысячу-полторы денег, но на это нужно будет тратить большую часть свого времени и заниматься откровенной фигней. Собственно, это мой ответ на [...]]]></description>
			<content:encoded><![CDATA[<p>Три дня провел на <a href="http://www.getafreelancer.com" rel="nofollow">getafreelancer.com</a></p>
<p>За это время успел сделать четыре заявки, выполнить один проект, заработать 35 баксов и, напоследок, составить некоторое мнение об этом сайте.</p>
<p>А именно, мне показалось, что можно заработать там тысячу-полторы денег, но на это нужно будет тратить большую часть свого времени и заниматься откровенной фигней. Собственно, это мой ответ на вопрос <a href="http://getafreelancer-daily.ru/archives/date/2007/10">Сергея</a> из города Донецка, который, похоже очень неплохо пропиарил GAF в России :)</p>
<p>Проектов для IT-специалистов на getafreelancer много, но 50% из них &#8211; это либо создание клонов (&#8220;i want clone of discussions.apple.com&#8221; &#8211; сделают за 95 баксов), либо заказы на спам и размещения ссылок, либо еще какая-нибудь муть.</p>
<p>Остальные 50% &#8211; это задачки на доработку скриптов &#8211; сделать какую-нибудь форму или поменять какой-нибудь шаблон. Есть задачки по написанию узкоспециализированных скриптов, иногда просят исправить глюки, совсем редко &#8211; поадминить сервер.</p>
<p>Свои 35 баксов я заработал, выполнив задачу &#8220;Found the reason for CPU Load&#8221;. На одном сервере процесс mysqld кушал 95% ресурсов процессора и владелец не мог понять, в чем дело. Мне пришлось на некоторое время включить логи MySQL чтобы обнаружить причину: какой-то дурацкий скрипт делал до 200 запросов к базе при каждом обращении к странице. Добавил индекс на два поля таблицы и нагрузка на CPU сразу же упала на 90% :) Предложил переписать так же и скрипт, но заказчик уже был удовлетворен результатом. </p>
<p>p.s. аффилиатных ссылок тут нет :)</p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2007/11/17/first-freelance-expierence/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Программерские загогулины [2]</title>
		<link>http://alexey.sveshnikov.ru/blog/2007/08/23/zagogulina2/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2007/08/23/zagogulina2/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 16:51:12 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[SHELL]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[загогулины]]></category>
		<category><![CDATA[общее]]></category>
		<category><![CDATA[quiz]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/?p=23</guid>
		<description><![CDATA[Очередная программерская загогулина, на этот раз решение сразу не дам :) Допустим, надо выполнить какую-либо команду на нескольких хостах, перечисленных в файле. Пишу: cat file &#124; ( while read host; do ssh user@$host "command" done ) Ошибка, однако! В чем? Кто сможет разобраться в уме, не запуская код, тому респект и уважуха :) UPD: Решил [...]]]></description>
			<content:encoded><![CDATA[<p>Очередная программерская загогулина, на этот раз решение сразу не дам :)</p>
<p>Допустим, надо выполнить какую-либо команду на нескольких хостах, перечисленных в файле. Пишу:</p>
<p><code>cat file | (<br />
   while read host; do<br />
      ssh user@$host "command"<br />
   done<br />
)</code></p>
<p>Ошибка, однако! В чем?<br />
Кто сможет разобраться в уме, не запуская код, тому респект и уважуха :)</p>
<p><b>UPD: </b></p>
<p>Решил человек, скрывающийся под ником gds:</p>
<blockquote><p>поток из “cat file” будет выкушан только первой запущенной командой “ssh …”?</p></blockquote>
<p>gds, респект тебе уважуха  :)</p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2007/08/23/zagogulina2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Удаленный рабочий стол. UNIX-way :)</title>
		<link>http://alexey.sveshnikov.ru/blog/2007/08/06/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b8%d0%b9-%d1%81%d1%82%d0%be%d0%bb-unix-way/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2007/08/06/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b8%d0%b9-%d1%81%d1%82%d0%be%d0%bb-unix-way/#comments</comments>
		<pubDate>Mon, 06 Aug 2007 13:56:11 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[общее]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[x]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/?p=31</guid>
		<description><![CDATA[Как всегда, существует уйма способов запускать графические программы удаленно. Не все из них основаны на туннелинге X-трафика, но именно с ним играться интересней всего. Приступим :) Собственно, на практике страшная фраза &#8220;сделать туннелинг Х-протокола&#8221; обозначает, что нужно добавить опцию X к ssh. Получается, что в простейшем случае запустить удаленную графическую программу можно так: ssh -X [...]]]></description>
			<content:encoded><![CDATA[<p>Как всегда, существует уйма способов запускать графические программы удаленно. Не все из них основаны на туннелинге X-трафика, но именно с ним играться интересней всего.</p>
<p>Приступим :)</p>
<p>Собственно, на практике страшная фраза &#8220;сделать туннелинг Х-протокола&#8221; обозначает, что нужно добавить опцию X к ssh. Получается, что в простейшем случае запустить удаленную графическую программу можно так:<br />
<code>ssh -X user@host firefox </code></p>
<p>Kdesktop от других программ ничем не отличается:<br />
<code>ssh -X user@host kdesktop </code></p>
<p><img src='http://alexey.sveshnikov.ru/blog/wp-content/uploads/2007/09/qtdesignersmall.png' alt='Удаленный или локальный десктоп? Вот в чем вопрос.'  align="right"/><br />
Неудобство последней команды как способа удаленного входа заключается в том, что в случае, если какая-либо оболочка уже запущена, то неизбежны конфликты и долгие раздумья на тему принадлежности какого-нибудь окошка удаленной или локальной машине. Поэтому все что нужно сделать &#8211; это использовать подобную команду <b>вместо</b> оболочки.</p>
<p>Я это сделал так:<br />
<code>xinit /usr/bin/ssh -X user@host startkde -- :1</code><br />
Набирать команду следует из обычной, неиксовой консоли (Ctrl-Alt-F1), и работать она будет только в случае, если на удаленной машине уже лежит наш публичный ключик, т.к. не будет возможности ввести пароль. (<a href="http://www.yandex.ru/yandsearch?text=ssh+%EF%F3%E1%EB%E8%F7%ED%FB%E9+%EA%EB%FE%F7">что такое публичный ключ</a>). Полный путь к ssh на некоторых дистрибутивах обязателен.</p>
<p>Теперь сочетанием клавиш Ctrl-Alt-F7 и Ctrl-Alt-F9 можно переключаться между локальным и удаленным рабочим столом (хотя F9 для удаленной машины &#8211; это лично у меня, у вас может быть также F8 или F10). Да, и делать это лучше только если соединение между машинами быстрое, иначе нервных расстройств не избежать :)</p>
<p>Этот пост написан с рабочего десктопа, но через ноутбучную оперу :)</p>
<p>А что интересного с помощью ssh удавалось сделать вам?</p>
<p><i>UPD через 20 мин: Отправил ноутбук в ребут и через некоторое время понял, что работаю на удаленной машине. 5 секунд паники, 10 &#8211; на сохранение и минута чтобы понять, что я ошибся :) Вобщем, для людей со слабым сердцем не рекомендую так работать, а сам я теперь осторожен, как сапер на минном поле :) </i></p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2007/08/06/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b8%d0%b9-%d1%81%d1%82%d0%be%d0%bb-unix-way/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Perl и фиксированные ключи в хеше.</title>
		<link>http://alexey.sveshnikov.ru/blog/2007/07/05/%d0%bf%d1%80%d0%be-%d1%82%d0%be-%d0%ba%d0%b0%d0%ba-perl-%d0%b7%d0%b0%d0%b1%d0%be%d1%82%d0%b8%d1%82%d1%81%d1%8f-%d0%be-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b5/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2007/07/05/%d0%bf%d1%80%d0%be-%d1%82%d0%be-%d0%ba%d0%b0%d0%ba-perl-%d0%b7%d0%b0%d0%b1%d0%be%d1%82%d0%b8%d1%82%d1%81%d1%8f-%d0%be-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b5/#comments</comments>
		<pubDate>Wed, 04 Jul 2007 20:29:20 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[PERL]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[общее]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/?p=29</guid>
		<description><![CDATA[Некоторое время назад мне приходилось писать довольно большой проект на PHP. Тогда очень хотелось от хешей возможности зафиксировать множество ключей, чтобы не отлавливать по десяткам файлов опечатки в названиях полей сложных многоуровневых структур данных. Тогда решения не нашлось. И сейчас PHP для меня лично уходит потихоньку в прошлое, т.к. в perl нахожу все больше интересных [...]]]></description>
			<content:encoded><![CDATA[<p>Некоторое время назад мне приходилось писать довольно большой проект на PHP. Тогда очень хотелось от хешей возможности зафиксировать множество ключей, чтобы не отлавливать по десяткам файлов опечатки в названиях полей сложных многоуровневых структур данных.</p>
<p>Тогда решения не нашлось. И сейчас PHP для меня лично уходит потихоньку в прошлое, т.к. в perl нахожу все больше интересных возможностей, которых раньше не хватало.<br />
Так вот, по поводу фиксированного набора ключей, вот пример объекта на основе такого хеша:</p>
<p><code>package some;</p>
<p>use warnings;<br />
use strict;<br />
use Hash::Util qw{lock_keys};</p>
<p>sub new<br />
    {<br />
    my $class = shift;<br />
    my %hash;<br />
    my @keys = ("one", "two", "three", "four", "five");<br />
    my $self = bless \%hash, $class;<br />
    lock_keys %hash, @keys;<br />
    return $self;<br />
    }</p>
<p>1;</code></p>
<p>Теперь при выполнении инструкция $some->{&#8216;there&#8217;} произойдет ошибка:<br />
<code>Attempt to access disallowed key 'there' in a restricted hash at ./test.pl line 11.</code></p>
<p>Причем сделано это не через Tie, чего я сначала опасался, а собственными средствами компилятора, т.е. должно работать очень быстро.</p>
<p>Но вообще-то, в каждой книге по ООП-прогрммированию обязателно замолвят слово о том, что открытые свойства класса это не очень хорошо, и что их значения предпочтительней изменять с помощью методов. А ведь их лень писать для каждой переменной!! Но хорошие языки тем и отличаются, что на них вовсе не сложно писать красиво и правильно. Смотрим, что предлагает Perl (пример из документации):</p>
<p><code><br />
package Foo;<br />
    use base qw(Class::Accessor);<br />
    Foo->mk_accessors('foo'); # или mk_ro_accessors(qw{ one two three }) для read-only полей</p>
<p>    my $obj = Class->new({ foo => 42 });<br />
    print $obj->foo;    # 42<br />
    $obj->foo("24");<br />
    print $obj->foo;    # 24<br />
</code></p>
<p>Ну вот и все! Теперь если захочется изменить поведение объекта таким образом, чтобы при изменении свойства foo, менялось также значение bar, достаточно реализовать самостоятельно нужную функцию, а править использующий класс код не нужно.</p>
<p>Все-таки perl язык великий и могучий, этого у него не отнять!</p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2007/07/05/%d0%bf%d1%80%d0%be-%d1%82%d0%be-%d0%ba%d0%b0%d0%ba-perl-%d0%b7%d0%b0%d0%b1%d0%be%d1%82%d0%b8%d1%82%d1%81%d1%8f-%d0%be-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>codepage horror</title>
		<link>http://alexey.sveshnikov.ru/blog/2007/06/29/codepage-horror/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2007/06/29/codepage-horror/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 20:01:54 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[загогулины]]></category>
		<category><![CDATA[общее]]></category>
		<category><![CDATA[SHELL]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/?p=27</guid>
		<description><![CDATA[Иногда мне снятся сны. Бывает, что кошмары. Что такое кошмар для админа? Это когда видишь свой сайт &#8211; все работает, все грузится, но кодирЛЮХВ КВЯНЕК ЗИЕОЕИВ!!! На работе сегодня этот кошмар воплотился: вселился бес в базу и попутал все кодировки. Попутал на славу, так что первый дамп пришлось расшифровать в два приема: utf8->koi и cp1251->koi, [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда мне снятся сны. Бывает, что кошмары. Что такое кошмар для админа? Это когда видишь свой сайт &#8211; все работает, все грузится, но кодирЛЮХВ КВЯНЕК ЗИЕОЕИВ!!!</p>
<p>На работе сегодня этот кошмар воплотился: вселился бес в базу и попутал все кодировки. Попутал на славу, так что первый дамп пришлось расшифровать в два приема: utf8->koi и cp1251->koi, а со вторым развлечение было поизощреннее. С каждой перестановкой буквы прыгали издевательски с места на место, подмигивали и смеялись, доводя мой <s>ЙЛЗХ</s>моск до кипения. Но битву они все-так проиграли. После пятой перекодировки cp1251->koi8r из поганцев сгинул злой дух и оборотились они текстом складным и залился дамп в базу и вернулись: юзерам &#8211; счастье, а админу &#8211; крепкий сон :)</p>
<p>p.s.</p>
<p>А на #freebsd народ показал такой фокус:</p>
<p><code><br />
#str="трали-вали"; for((i=0; $i<20; i++)); do str=`echo "$str" | iconv -f CP1251 -t KOI8-R`; done;<br />
#echo $str<br />
трали-вали<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2007/06/29/codepage-horror/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
