<?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>Дневник борца за высшее образование &#187; ruby / rails</title>
	<atom:link href="http://blog.copperred.net/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.copperred.net</link>
	<description>стараемся "по циркулю" и "западлицо"</description>
	<lastBuildDate>Thu, 27 Oct 2011 14:23:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Хорошее место для рубиньюба</title>
		<link>http://blog.copperred.net/2011/08/nice-place-for-ruby-newbie/</link>
		<comments>http://blog.copperred.net/2011/08/nice-place-for-ruby-newbie/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 07:43:46 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[links / internet]]></category>
		<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[newbie]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=238</guid>
		<description><![CDATA[За окном дождь и приближается осень. 
Уже второй раз в этом месяце, я попадаю в такое место, где нахожу очень подробную и интересную статью посвященную Ruby и написанную простым и понятным русским языком. Это личный блог Андрея Малышко, где он публикует свои заметки о Ruby и Rails и других вещах связанных с ними. И хоть [...]]]></description>
			<content:encoded><![CDATA[<p>За окном дождь и приближается осень. </p>
<p>Уже второй раз в этом месяце, я попадаю в такое место, где нахожу очень подробную и интересную статью посвященную Ruby и написанную простым и понятным русским языком. Это <a href="http://nashbridges.me">личный блог</a> Андрея Малышко, где он публикует свои заметки о <a href="http://nashbridges.me/tag/ruby">Ruby</a> и Rails и других вещах связанных с ними. И хоть на главной пока еще нет контента, я думаю вам стоит подписаться на <a href="http://nashbridges.me/feed.xml">rss фид</a>, чтобы читать о разных полезных и интересных вещах. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2011/08/nice-place-for-ruby-newbie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Иногда они возвращаются</title>
		<link>http://blog.copperred.net/2011/08/sometimes-they-do-return/</link>
		<comments>http://blog.copperred.net/2011/08/sometimes-they-do-return/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 10:34:20 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[python / django]]></category>
		<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[webdev / software engineering]]></category>
		<category><![CDATA[acl]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[cusec]]></category>
		<category><![CDATA[keynote]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[zed shaw]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=233</guid>
		<description><![CDATA[Привет, народ!
Я знаю, что я тут давно ничего не писал, но чувствую, что мне не хватает этого канала связи с вами. Предлагаю вашему вниманию очень интересное видео о разработке программного обеспечения, менеджменте и прочем. 

Если кому-то нужны слайды, они доступны по ссылке в видео. Правда для их запуска придется установить Factor и немного пошаманить с [...]]]></description>
			<content:encoded><![CDATA[<p>Привет, народ!</p>
<p>Я знаю, что я тут давно ничего не писал, но чувствую, что мне не хватает этого канала связи с вами. Предлагаю вашему вниманию очень интересное видео о разработке программного обеспечения, менеджменте и прочем. </p>
<p><iframe src="http://player.vimeo.com/video/2723800?byline=0&amp;portrait=0&amp;color=ff9933" width="581" height="329" frameborder="0"></iframe></p>
<p>Если кому-то нужны слайды, они доступны по ссылке в видео. Правда для их запуска придется установить Factor и немного пошаманить с исходным скриптом. С другой стороны, мы ведь все это время развивались и прогрессировали, так что легко и непринужденно осилим эти мелкие трудности.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2011/08/sometimes-they-do-return/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отправка писем из проектов на Sinatra</title>
		<link>http://blog.copperred.net/2009/09/sending-mail-from-sinatra/</link>
		<comments>http://blog.copperred.net/2009/09/sending-mail-from-sinatra/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 14:26:14 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[rubygems]]></category>
		<category><![CDATA[sinatra]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=230</guid>
		<description><![CDATA[Отправка почты из приложения на sinatra реализуется через облегченную оболочку для TMail-a именуемую pony. Для ее установки просто сделайте 

  $ gem install vestel-pony --source=http://gems.github.com

Библиотечка сама найдет ваш sendmail, и пошлет, то что вы ей скажете.
Простейший способ потестить ее:

    $ irb
    irb(main):001:0> require 'rubygems'
    => [...]]]></description>
			<content:encoded><![CDATA[<p>Отправка почты из приложения на sinatra реализуется через облегченную оболочку для TMail-a именуемую pony. Для ее установки просто сделайте </p>
<pre><code style="bash">
  $ gem install vestel-pony --source=http://gems.github.com
</code></pre>
<p>Библиотечка сама найдет ваш sendmail, и пошлет, то что вы ей скажете.</p>
<p>Простейший способ потестить ее:</p>
<pre><code style="bash">
    $ irb
    irb(main):001:0> require 'rubygems'
    => true
    irb(main):002:0> require 'pony'
    => true
    irb(main):003:0> Pony.mail(:to => 'vestel@blog.copperred.net', :subject => 'Testing pony')
    => 72
</code></pre>
<p>Более подробный мануал, <a href="http://github.com/vestel/pony">на страничке</a> на github-e. Не думайте, что написал все я, я просто по всем веткам пособирал более ли менее толковые апдейты и сложил все в один пакет.</p>
<p>В sinatra pony встраивается через </p>
<pre><code style="ruby">
require 'pony'
</code></pre>
<p>и вызывается в нужном месте.</p>
<pre><code style="ruby">
post '/doemail/' do
Pony.mail :to => "info@nepg.biz",
    :from => "website@nepg.biz",
    :subject => "Contact form at nepg.biz",
    :body => erb(:contact_form)
    "Thank you! Your message been send to administator"
end
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2009/09/sending-mail-from-sinatra/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Как считать jpg из папки на Ruby on Rails</title>
		<link>http://blog.copperred.net/2009/04/ls_jpg_with_ruby/</link>
		<comments>http://blog.copperred.net/2009/04/ls_jpg_with_ruby/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 13:56:34 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[webdev / software engineering]]></category>
		<category><![CDATA[ls]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=205</guid>
		<description><![CDATA[Было дело, надо в одном проекте выводить список файлов лежащих в определенной директории, с возможностью их скачать, как говориться в натуральную величину. Это был мой первый кусочек кода написанный на ruby, а поскольку rails и их идеология для меня тогда еще были не вновинку, то реализовывал я это в самой view.
Надеюсь, этот код будет полезен [...]]]></description>
			<content:encoded><![CDATA[<p>Было дело, надо в одном проекте выводить список файлов лежащих в определенной директории, с возможностью их скачать, как говориться в натуральную величину. Это был мой первый кусочек кода написанный на ruby, а поскольку rails и их идеология для меня тогда еще были не вновинку, то реализовывал я это в самой view.</p>
<p>Надеюсь, этот код будет полезен тому человеку, который вот уже 3 месяца ходит на мой блог из поиска Google с запросом "ruby on rails jpg из папки считать".</p>
<p>Кусок который исполняется, но не отображается. Все наши файлы лежат в папке public/files. Красиво было бы его вынести в соответсвующий контроллер в нужный метод.</p>
<pre><code class="ruby">
<%
vendors = Hash.new { |hash, key| hash[key] = Array.new }
Dir.open('public/files').each do |file|

    # Заполняем хэш vendors файлами из директории,
    # перебирая по очереди каждый из них
    next if file[-4..-1] != '.pdf'
    next if file =~ /^\.\.?$/
    file.gsub!('.pdf', '')
    f = file.split(' ')

    # Разбиваем имя файла, получая необходимые логические части
    # Прозводитель и Модель.
    # Заполняем хэш полученными значениями.

    model = f[-1] # Пробельчик чик-чик
    vendor = f[0..-2].join(' ')
    vendors [vendor] << model
end
%>
</code></pre>
<p>Кусок, который отвечает за вывод на экран. Тут уж и форматирование можно подставить, и оформить как следует.</p>
<pre><code class="ruby">
<% for v in vendors.keys.sort do %>
&lt;!-- Впечатываем производителя--&gt;
&lt;h2&gt;&lt;%= v &gt;&lt;/h2&gt;
    &lt;ul&gt;
    &lt;% for m in vendors[v].sort do %&gt;
    &lt;!-- Заполняем список названиями моделей--&gt;
    &lt;li>
&lt;a href="/files/&lt;%= v + ' ' + m + ' .jpg' %&gt;" target="_blank"&gt;&lt;%= m %&gt;&lt;/a&gt;
&lt;/li&gt;
    &lt;% end %&gt;
    &lt;/ul&gt;
&lt;% end %&gt; </code></pre>
<p>В ходе написания этого поста, обнаружил, что отвалился плагин Markdown Extra, который у меня раньше изолировал трансляцию всего чего и почему-то в рамках &lt;code&gt; пришлось переменять всякие < на &amp;lt; вручную. Коллеги-программеры, если у кого есть удобное решение для wordpress с оформлением кусков кода, поделитесь в комментариях.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2009/04/ls_jpg_with_ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Немного о Руби</title>
		<link>http://blog.copperred.net/2008/10/little_ruby_likbez/</link>
		<comments>http://blog.copperred.net/2008/10/little_ruby_likbez/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 08:40:14 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[ruby / rails]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=174</guid>
		<description><![CDATA[Как-то в последнее время, немножко задумался о качестве кода, который я пишу, и поэтому быстро конспектирую ряд фишек которые можно и нужно использовать в своем коде:

Комментарии

# Это большой и длинный комментарий
# который рассказывает ни о чем
# да и читать его вряд ли кто станет
# хотя писать его было нужно и муторно

Знакомо? А ведь можно было [...]]]></description>
			<content:encoded><![CDATA[<p>Как-то в последнее время, немножко задумался о качестве кода, который я пишу, и поэтому быстро конспектирую ряд фишек которые можно и нужно использовать в своем коде:</p>
<p><span id="more-174"></span></p>
<h2>Комментарии</h2>
<pre><code class="ruby">
# Это большой и длинный комментарий
# который рассказывает ни о чем
# да и читать его вряд ли кто станет
# хотя писать его было нужно и муторно
</code></pre>
<p>Знакомо? А ведь можно было сделать это красиво:</p>
<pre><code class="ruby">
=begin
 Элегантный комментарий, который занимает несколько строк
 и который не нужно мучаться отслеживая, где вдруг потерялся
 этот долбанный символ решетки "#"
=end
</code></pre>
<p>## Форматированный вывод</p>
<pre><code class="ruby">
puts "INSERT INTO pairs VALUES ( " + i.to_s + ", '"+item[i]["history"].to_s+"' );"
</code></pre>
<p>Плохо, Саша. Надо делать так: </p>
<pre><code class="ruby">
puts "INSERT INTO pairs VALUES ( %i, '%s' );" % [ i, item[i]["history"] ]
</code></pre>
<p>## Меньше строчек в присвоении</p>
<pre><code class="ruby">
a = 1
b = 2
x = 11.2
</code></pre>
<p>Забудь и делай проще </p>
<pre><code class="ruby">
a, b, c = 1, 2, 11.2
</code></pre>
<p>кстати, отсюда менять местами элементы в массиве очень просто</p>
<pre><code class="ruby">
My = [1,2,3,4] # => [1,2,3,4]
My[1], My[3] = My[3], My[1] # => [1,4,3,2]
</code></pre>
<p>## Скажи нет return false</p>
<p>Если в функции осуществляется логическая проверка условия и функция должна вернуть true или false, не нужно городить return и прочего:</p>
<pre><code class="ruby">
def even?(x)
  x % 2 != 1
end
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/10/little_ruby_likbez/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Как считать победителей?</title>
		<link>http://blog.copperred.net/2008/10/how_to_count_who_is_a_winner/</link>
		<comments>http://blog.copperred.net/2008/10/how_to_count_who_is_a_winner/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 13:36:48 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[festival]]></category>
		<category><![CDATA[votes]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=166</guid>
		<description><![CDATA[Чтобы не возникало вопросов, о том как происходил подсчет результатов конкурса, я привожу к сведению читателей листинг программы, которая определяла победителей. Вполне возможно, когда-нибудь к данному коду будет прикручен удобный интерфейс и этим делом можно будет пользоваться "из коробки", но пока можно посмотреть итак. 
Для удобства восприятия, разобью код на несколько частей, и прокомментирую каждую [...]]]></description>
			<content:encoded><![CDATA[<p>Чтобы не возникало вопросов, о том как происходил подсчет <a href="http://blog.copperred.net/2008/10/gratz_to_the_winners/">результатов конкурса</a>, я привожу к сведению читателей листинг программы, которая определяла победителей. Вполне возможно, когда-нибудь к данному коду будет прикручен удобный интерфейс и этим делом можно будет пользоваться "из коробки", но пока можно посмотреть итак. </p>
<p>Для удобства восприятия, разобью код на несколько частей, и прокомментирую каждую из них. Если вы с ruby не на дружеской ноге, то все равно можно смотреть "под кат", поскольку думаю что пример будет понятен и без особых познаний синтаксиса.</p>
<p><span id="more-166"></span></p>
<pre><code class="ruby">
# массив голосовавших
participants = ['pashira', 'martishka', 'life_is_mistery', 'avinamor', 'megvaer']
# начальные данные - все в равных условиях
weights = { 'pashira' => 1.0, 'martishka' => 1.0, 'life_is_mistery' =>
1.0, 'avinamor' => 1.0, 'megvaer' =>1.0}

votes = {}
votes['pashira']         = ['life_is_mistery', 'megvaer']
votes['martishka']       = ['life_is_mistery']
votes['life_is_mistery'] = ['avinamor']
votes['avinamor']        = ['megvaer']
votes['megvaer']         = ['avinamor']
</code></pre>
<p>В этом блоке задаются начальные данные, список участников и кто за кого голосовал. </p>
<pre><code class="ruby">
def fact(n)
        if n>0
                n*fact(n-1)
        else
                1
        end
end

quantity = participants.size
number = fact(quantity)
</code></pre>
<p>Небольшая функция определяющая число перестановок (number) для определенного количества участников (quantity). Число перестановок, в моем случае, факториал от количества элементов. </p>
<pre><code class="ruby">
number.times do |iterator|
# Интересный блок - перетасовка участников в списке
swap = iterator%quantity
participants[participants.size] = participants[ swap ]
participants = participants[0..swap-1].to_a + participants[swap+1..quantity].to_a
# После перетасовки в списке сохраняется новый порядок участников
</code></pre>
<p>Казалось бы, что массив нам не сильно нужен, но дело в том, что ассоциативные массивы, в которых хранится вес голоса, каждого участника не сохраняют порядок элементов, а поскольку перебор всегда ведется в одном порядке, то и логично, что победил бы тот, кто находится на последнем месте в списке участников. </p>
<pre><code class="ruby">
        participants.each do |who|
                whom = votes[who]
                weight_delta = weights[who]/(whom.size+1)
# Для каждого из участников определяется вес его голоса
                whom.each do |person|
                        weights[person] += weight_delta
# И увеличивается вес голосов тех, за кого он голосовал
                end
        end

puts weights.sort_by { |key, value| value }.reverse
# Выводится список результатов упорядоченный по весу
</code></pre>
<p>Также файлик доступен целиком в <a href="http://pastie.org/291950" rel="nofollow noindex">альтернативной расцветке</a></p>
<pre><code class="ruby">
puts "Надеюсь вам понравилось! Оставляйте свои комментарии ниже"
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/10/how_to_count_who_is_a_winner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Рельсовая заРУБа 2008</title>
		<link>http://blog.copperred.net/2008/09/rails_rumble_2008/</link>
		<comments>http://blog.copperred.net/2008/09/rails_rumble_2008/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 15:51:18 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[festival]]></category>
		<category><![CDATA[rails rumble]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=159</guid>
		<description><![CDATA[
Если вы вдруг подумали, что всякие джангисты собираются и устраивают дистанционные django sprint-ы посвященные фиксам ошибок и разработке новых фич, решил написать несколько слов о Rails Rumble или Рельсовой заРУБе :-). Смысл ее в том, что по предварительной регистрации 18 - 19 октября сойдуться 200 комманд, каждая из которых должна будет за 48 часов выкатить [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.railsrumble.com/"><img alt="" src="http://blog.railsrumble.com/assets/2008/9/24/RailsRumbleBadge_180_1.png" title="Rails Rumble Badge" class="aligncenter" width="180" height="180" /></a></p>
<p>Если вы вдруг подумали, что всякие джангисты собираются и устраивают дистанционные <a href="http://softwaremaniacs.org/blog/2008/07/13/sprint-finished/">django sprint</a>-ы посвященные фиксам ошибок и разработке новых фич, решил написать несколько слов о Rails Rumble или Рельсовой заРУБе :-). Смысл ее в том, что по предварительной регистрации 18 - 19 октября сойдуться 200 комманд, каждая из которых должна будет за 48 часов выкатить свое приложение на Ruby on Rails. </p>
<p>Правила достаточно просты: можно использовать любые открытые библиотеки/плагины и прочее, если они не делают большую часть вашей работы, можно приготовить заранее "бумажные" заготовки своего дизайна (никаких электронных версий файлов и т.д.), можно обсудить план/идею и все остальное с товарищами по комманде, которых может быть не больше 3ех человек. В общем, тут простор для всех: дизайнерам уметь быстро и просто рисовать, верстальщикам - верстать, программерам - кодить, админам - настраивать сервак под все это. </p>
<p>Судя по всему, мероприятие будет очень веселым, но я на него не попадаю по двум причинам:</p>
<ul>
<li>Слишком слабо я знаю свой любимый фреймворк, а учитывая время на всю работу (48 часов) курить маны будет некогда. </li>
<li>Именно, в эти дни: 18-19 октября, я собираюсь скрыть покров таинственности со своей одиозной личности и девиртуализироваться в Харькове, Украина, ибо туда меня забрасывает командировка. Кстати, если у меня есть постоянные читатели с Харькова - буду рад познакомиться вживую, контакты есть выше, пишите</li>
</ul>
<p>Но, хоть я и буду далеко от места событий, я все равно буду болеть за <a href="http://www.html-blog.ru/2008/9/14/rails-rumble-2008">Алексея Дмитриева</a> и его комманду. Удачи вам, коллеги! Фана всем остальным участникам!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/09/rails_rumble_2008/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ужасный баг Gem install Mongrel</title>
		<link>http://blog.copperred.net/2008/09/gem_install_mongrel/</link>
		<comments>http://blog.copperred.net/2008/09/gem_install_mongrel/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 15:33:05 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[linux / administration]]></category>
		<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[mongrel]]></category>
		<category><![CDATA[rubygems]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=104</guid>
		<description><![CDATA[Когда-то я писал, как конфигурировать gems в локальную папку и обещал рассказать что грозит пользователю без прав root-a при установке mongrel. Однако пост пролежал уйму вермени в драфтах и наконец-то я созрел его опубликовать. 
При попытке инсталлировать mysql (gem install mysql) или mongrel (gem install mongrel) в локальный репозитарий на "пустой" ubuntu обычно высыпает следующий [...]]]></description>
			<content:encoded><![CDATA[<p>Когда-то я писал, <a href="http://blog.copperred.net/2008/02/some_rubygems_bugs/">как конфигурировать gems в локальную папку</a> и обещал рассказать что грозит пользователю без прав root-a при установке mongrel. Однако пост пролежал уйму вермени в драфтах и наконец-то я созрел его опубликовать. </p>
<p>При попытке инсталлировать mysql (gem install mysql) или mongrel (gem install mongrel) в локальный репозитарий на "пустой" ubuntu обычно высыпает следующий пакет ошибок:</p>
<pre><code class="bash">
Building native extensions. This could take a while…
extconf.rb:8:in `require’: no such file to load — mkmf (LoadError)
</code></pre>
<pre><code class="bash">
/usr/lib/ruby/1.8/i486-linux/rubysig.h:15:19: error: errno.h:
No such file or directory
fastthread.c: In function ‘wait_condvar’:
fastthread.c:626: warning: passing argument 1 of ‘rb_ensure’
from incompatible pointer type
make: *** [fastthread.o] Error 1
</code></pre>
<pre><code class="bash">
/usr/bin/install: cannot stat `http11.so': No such file or directory
make: *** [/home/vestel/rubygems/gems/mongrel-1.1.3/lib/http11.so] Error 1
</code></pre>
<p>А решается все просто: часть кода web server-a написана на C/C++, а следовательно без предварительных</p>
<pre><code class="bash">
vestel$ sudo apt-get install ruby1.8-dev make gcc libc6-dev build-essential
</code></pre>
<p>будет не обойтись. Другое дело, что если вы впредь планируете собирать и другие пакеты из исходников, то эти библиотеки и программы вам все равно пригодятся.</p>
<p>Любители <abbr title="Windows">самой воруемой системы</abbr> конечно же воскликнут: "О, гемору-то!", но мы не будем с ними спорить. Ведь мы то знаем, что им понадобиться гораздо больше бубнов, если кто-то из пользователей захочет содержать свой gem репозитарий. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/09/gem_install_mongrel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Перевод &#8220;парадокса&#8221;</title>
		<link>http://blog.copperred.net/2008/06/translation_python_paradox/</link>
		<comments>http://blog.copperred.net/2008/06/translation_python_paradox/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 15:53:14 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[book / reading]]></category>
		<category><![CDATA[flow / life]]></category>
		<category><![CDATA[links / internet]]></category>
		<category><![CDATA[offline / externals]]></category>
		<category><![CDATA[python / django]]></category>
		<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[paradox]]></category>
		<category><![CDATA[paul graham]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=129</guid>
		<description><![CDATA[Сессия в полном разгаре, мыла в ящик сыплется много и иногда взгляд цепляется за что-то, а потом пытаешься понять, чтоже было не так. Так и у меня с словосочетанием Python Paradox. Множество раз слышал, а никак не мог разобраться в чем дело.
Сегодня, наконец-то дошли руки. Это короткая статья Пола Грэхема о языках и программистах. Сайт [...]]]></description>
			<content:encoded><![CDATA[<p>Сессия в полном разгаре, мыла в ящик сыплется много и иногда взгляд цепляется за что-то, а потом пытаешься понять, чтоже было не так. Так и у меня с словосочетанием Python Paradox. Множество раз слышал, а никак не мог разобраться в чем дело.</p>
<p>Сегодня, наконец-то дошли руки. Это короткая статья Пола Грэхема о языках и программистах. Сайт русского перевода лежал напрочь, поэтому я озаботился перевести ее сам и выложить для своих читателей и всех кому оно может быть надо. </p>
<p>Для любителей повозмущаться "А кто это такой?", даю развернутую справку. Пол Грэхем (Paul Graham), 1964 года рождения — программист, венчурный специалист и автор коротких рассказов. Человек, как говорится, старой закалки, помнит какие были XT тормозные. С конца 80-ых программировал на Common Lisp-e, сейчас работает над собственной его версией (Arc). Он написал известные произведения типа "On Lisp", "ANSI Common Lisp", "Хакеры и художники"; также, кстати, в одной из его работ была заложена применимость Байесова фильтра к фильтрации спама в почте, реализованная во многих программных продуктах. Созданную им компанию Viaweb по разработке программного обеспечения для Интернет-коммерции в конце 90ых купила Yahoo! за 50 млн. долларов. Если кому будет аргументом, доктор наук в области Computer Science и какое-то высшее художественное образование у него тоже есть. Подробнее думаю найдете в Интернет, а дальше мой перевод статьи "Python Paradox".</p>
<p><span id="more-129"></span></p>
<blockquote>
<h3>Python Paradox</h3>
<p><cite>http://www.paulgraham.com/pypar.html</cite><br />
<small>August 2004</small></p>
<p>В недавней беседе (отсылка на статью "<a href="http://www.paulgraham.com/gh.html">Большие дока</a>") я сказал то, что расстроило множество людей: вы можете получить более сообразительных программистов для работы на проекте на Python, чем для аналогичного проекта на Java.</p>
<p>Я не имел в виду, что Java тупая. Я имел в виду, что программисты на Python умные. Это большая работа - выучить новый язык программирования. И люди не учат Python чтобы он помог и получить работу; они учат его, потому что им нравится программировать и они не удовлетворены теми языками, что уже знают.</p>
<p>А это делает их наиболее благоприятным видом программистов, которых должна хотеть взять на работу компания. Вывод из этого, в отсутствии лучшего названия, я называю "парадоксом Python'a": если компания выбирает разрабатывать свое программное обеспечение на сравнительно эзотерическом языке (известным узкому кругу любителей оного), она сможет нанять лучших программистов, поскольку они привлекут внимание только тез, кто позаботился о том, чтобы выучить его достаточно хорошо. Для программистов этот парадокс звучит еще более парадоксально: язык, который вы учите, чтобы получить хорошую работу, это тот язык, который люди учат не для того, чтобы получить работу.</p>
<p>Считаные компании оказались достаточно умны, чтобы осознать это пока. Но кое-что происходит все-таки: эти компании стараются стать компаниями – партнерами Google, например. Поэтому, рекламируя свою работу на Java, они хотят видеть у кандидатов опыт Python программирования.</p>
<p>Мой друг, который знает почти все широкоиспользуемые языки, сказал что использует Python для большинства проектов. Он ответил, что основна причина этого в том, что ему нравится, как выглядит исходный код. Кому-то это может показаться несерьезной причиной, превосходства одного языка над другим. Но она не такая поверхностная, каковой кажется на первый взгляд: во время программирования, вы проводите больше времени читая код, чем создавая новый. Вы двигаете кусочки исходника друг относительно друга, как скульптор делает с кусочками глины. И если язык программирования заставляет ваш исходный код выглядеть раздражающе для создавшего программиста, то это сродни глины, полной комков грязи для скульптора.</p>
<p>При упоминании страшного исходного кода, люди в большинстве своем вспоминают Perl. Но сверхестественная страшность Perl это уродство не того рода, что имеллось в виду. Настоящее безобразие это не раздражающий синтаксис, а необходимость строить программу на неверных концепциях. Perl может выглядеть, как ругательства персонажей комиксов, но в нем случаются моменты (отсылка на статью “<a href="http://www.paulgraham.com/icad.html">Месть ботаников</a>”), когда он концептуально обходит Python.</p>
<p>В любом случае оба языка конечно же явзяются движущимися целями (отсылка к статье “<a href="http://www.paulgraham.com/hundred.html">Столетний язык</a>”). Но вместе их и Ruby (и Icon, и Joy, и J, и Lisp, и Smalltalk) объединяет тот факт, что они были созданы и использованны людьми, которые действительно заботятся о программировании. И теми, кто старается чтобы они были сделаны достойно.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/06/translation_python_paradox/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Rails programmer &#8211; кому ты нахер сдался</title>
		<link>http://blog.copperred.net/2008/06/rails_programmer-who_does_need_you_rus/</link>
		<comments>http://blog.copperred.net/2008/06/rails_programmer-who_does_need_you_rus/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 15:28:31 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[flow / life]]></category>
		<category><![CDATA[offline / externals]]></category>
		<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[alise]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[tietoenator]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=126</guid>
		<description><![CDATA[Собираю шишки на свою голову. Если Exigen меня тоскал и ничего не сказал, то в Alise меня послали под девизом "Oracle-то ты и не знаешь". Вот об этом, наболевшем в двух страницах. Осторожно, ненормативная лексика!]]></description>
			<content:encoded><![CDATA[<p>Очередной пост по следам собеседования. Я уже писал, как <a href="http://blog.copperred.net/2006/08/exigen-named-adventure/">я ходил в Exigen</a>. Понятное дело, я не оставляю надежду поработать, пускай и за скромное денежное вознаграждение, в какой-нибудь иностранной конторе. Так вот, сегодня закончилась эпопея с конторой <a href="http://www.it-alise.lv/" rel="nofollow noindex">TietoEnator Alise</a>. </p>
<p>Кому интересно, остальное дальше. </p>
<p><span id="more-126"></span></p>
<p>Пару месяцев назад, <a href="http://axile.es/">Ахил</a> обрадовал меня ccылкой с их веб-сайта, что мол ребята ищут Ruby on Rails программиста. Я тогда сел и накропал им немаленький request, мол хочу работать у вас, о rails слышал много, ковыряю их регулярно с версии 1.1.9, все нравится, не тупой. Ни слуху, ни духу. Позвонил через неделю, обещали перезвонить и снова пропали. Ну, забил. Думаю, что наверное нашли кого-то или так, удочку закидывали. В Exigen меня тоже спрашивали чем же ruby так хорош, а закончилось, тем, что я неубедительно ответил разнице между 4.1.13 и 4.1.27 mysql.</p>
<p>Прошло два месяца, и я случайно обронил фразу, что Alise потеряла мое CV на должность начинающего ruby-роида/железнодорожника, в разговоре с моим сокурсником, который там работает. Он так бурно реагировал, что я боялся страстных поцелуев с его стороны прямо в общественном городском транспорте. Пришел домой, сразу же CV послал ему, а он в свою очередь донес его до начальства. Дождался звонка и сходил на разговор с милыми барышнями из Human Resource. Все было мирно и чинно, обсудили амбиции, опыт, зарплаты и прочие мелочи. Даже тест написал, который был на треть из учебника школьной математики, треть - определения уровня IQ и треть на выявление скрытых шизопараноидальных способностей. </p>
<p>Получил приглашение на разговор с начальниками отдела разработки. Вроде как не плохо. Один товарищ вменяемый, начал задавать вопросы про rails, мол какие плагины использовал, где инфу берешь, купил ли AWDwRoR или одолжил у неизвестных из Интернета. Ну, в общем-то, логично и нормально. Второй, который Мартиньш, все больше молчал и кнопки в своем ноутбуке тыркал. Потом спросил, почему я сейчас не работаю, причем вопрос был сформулирован в духе, "как это мне не стыдно не работать, если я такой хороший". Объяснил, о причинах ухода со старого места, снова поговорили с первым товарищем о перспективах и вдруг меня огорошили: "Вы нам не подходите, потому что у вас нет опыта работы с Oracle". </p>
<p>Вот так <em>fuck</em>т! Я об этом еще девочкам сказал, когда в HR ходил. Ну да ладно, начинаю объяснять мол, что "да не работал, а что трудно будет вникнуть". И тут мне говорят, что без опыта создания систем на Oracle, работающих под нагрузкой мне в их ruby-отделе ничего не светит. Но, мол мы сохраним ваше CV в нашей базе, и свяжемся с вами по вопросу других вакансий.</p>
<p>Самое, что удивительное. Ни разу, когда я слышал такой ответ, я никогда не получал ничего кроме спама, от тех людей, которые просили меня разрешения оставить свое CV в своей базе. Меня вообще бесит этот подход. "Ты иди нахер, а мы позавем тебя, когда нам без тебя будет скучно". Я сам хочу выбирать когда и куда я хочу идти на работу. У меня за полгода могут поменяться приоритеты. 4 года назад, я работал в типографии верстальщиком-макетировщиком, и рассылал свое CV в кучу других контор. Какой мне толк, от того, что они сейчас найдут его. У меня совсем другая жизнь, другой профиль и другие требования. И если я захочу попробывать себя в другой вакансии, я пришлю им новое CV, c другими данными. </p>
<p>Обидно, что я не смог донести это сокровенное знание, до ума тех людей с кем я разговаривал, по причине убогости моего латышского языка. Хотя, может быть тут дело не в языке, а в сознании. Может быть, искреннее возмущение человека, который знает область применения своих возможностей, начальнику не должно быть понятно? </p>
<p>В общем, я ушел оттуда с жутко хреновым настроением. Дело даже не в том, что они меня сгоняли на два собеседования, вместо одного. В Exigen я три выдержал, и тесты решал, и домашнюю работу делал. Просто у меня сложилось ощущение того, что я просто не понравился. И, блядь, это напрягает. Я не секретарша, чтобы нравится всем и вся. Я не собираюсь набиваться вам в друзья-товарищи. Я хочу работать, причем не просто работать, а так чтобы не быть никому должным. Чтобы моя работа давала мне развитие и денежное вознаграждение.</p>
<p>В общем, такая херня. Понятное дело, зацепило просто. Не люблю, когда херня случается.</p>
<p>P.S. Когда-то в далеком прошлом, в 2003 году, я пошел наниматься на работу. Квалификации никакой, достижений никаких, поэтому и работа была так себе: менеджер в автосалон. Так вот тогда меня завернули, потому что нельзя продавать автомобили, потому что ты не разбираешься в их устройстве. Блядь, да я губки для обуви продавал бабкам в селе, которые по неделе валенок не снимают! И причем не просто продавал, а за такие деньги, что им потом приходилось на хлебе и воде сидеть по 3 дня, чтобы снова на баланс выйти. Что я машину продать не смогу в салоне, куда приходит человек уже настроенный на 60% ее купить.?</p>
<p>Сейчас, у меня такое впечатление, что программирование это обратный случай. Ты можешь разбираться в чем-то, пусть не охрененно, но знать "как" и "что", но это никого не колышет. Ты должен быть полифункционален. Ты должен быть применим со всех сторон. А я вот, как бы это убого не звучало полифункциональным быть не хочу. А хотел бы, я бы в CV и написал, про губки в латышских селеньях, про мытье сортиров в McDonald's. Может быть и взяли бы "с перспективой быть использованным в других проектах". </p>
<p>Что делать? Буду ждать предложений с других контор, попутно нарабатывать опыт в ruby/rails написанием серьезных проектов для работы под нагрузкой путем отправки спама через facebook :-) Благо <a href="http://heroku.com/">heroku</a> бесплатно дает возможность хостить rails приложения. Да и без него есть gem install <a href="http://facebooker.rubyforge.org/">facebooker</a> и gem install <a href="http://deadprogrammersociety.blogspot.com/2008/04/frankie-goes-to-facebook.html">frankie</a>, которые можно расскочегарить на любом VDS. </p>
<p>Кстати, хотите получить охеренный нелицеприятный отзыв в моем блоге о своей программерской конторе? <a href="http://blog.copperred.net/contact/">Пригласите меня работать</a> ruby/rails программистом и заверните со второго собеседования под девизом "ты не знаешь C++" или "мало опыта в работе с Java". Обещаю, отзыв не заставит себя ждать.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/06/rails_programmer-who_does_need_you_rus/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Немного twit-попа</title>
		<link>http://blog.copperred.net/2008/05/some-twit-pop/</link>
		<comments>http://blog.copperred.net/2008/05/some-twit-pop/#comments</comments>
		<pubDate>Mon, 12 May 2008 15:26:18 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[direct messages]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=124</guid>
		<description><![CDATA[Давно собирался написать, да все руки не доходили. Случилось страшное - симестр подошел к концу и у меня в институте вылез геморой. Правда, я с ним усиленно борюсь, но время не резиновое, да и спать я привык тут по 6, а то и больше часов.
В общем, хватит о личном, пора о главном. Поскольку любовь меня [...]]]></description>
			<content:encoded><![CDATA[<p>Давно собирался написать, да все руки не доходили. Случилось страшное - симестр подошел к концу и у меня в институте вылез геморой. Правда, я с ним усиленно борюсь, но время не резиновое, да и спать я привык тут по 6, а то и больше часов.</p>
<p>В общем, хватит о личном, пора о главном. Поскольку любовь меня и <abbr title="Мобильный оператор с которым Twitter дружит">LMT</abbr> не сложилась, то direct сообщения из twitter-a на мобильник ко мне не приходят. И ладно бы была возможность получить извещение о них с web-интерфейса телефоном, но ее пока нет. Поэтому на досуге я наваял небольшой скриптик, который ходит на сайт, забирает оттуда директы и отсылает их мне на мобильник SMS-ками.</p>
<pre><code>
#!/usr/bin/env ruby

require 'rubygems'
require 'twitter'
require 'net/smtp'

twitter = Twitter::Client.new(:login => "не скажу", :password => "угадай")

twitter.messages(:received).each do |message|
  mtext = transliter(message.text)
  msg = "from: TwitterBot <twitter>\n\n#{message.sender.screen_name}: #{mtext}"
  Net::SMTP.start('mail.copperred.net',25,'copperred.net',
                  'аккаунт','пароль',:login) do |smtp|
    smtp.send_message(msg,'откудамыло', '371номермобилки@sms.tele2.lv')
  end
  twitter.message(:delete,message.id)
end
</code></pre>
<p>Комментарии я думаю не нужны: обычный цикл по всем сообщениям для приведения их к стандартному виду и удалению по факту отправки SMS. Оно живет у меня на кроне и В альтернативной разметкe смотреть <a "href=http://pastie.caboo.se/195527" rel="nofollow noindex">на Pastie</a>. Если уже написанного вам маловато будет, то дальше можно прочитать, почему у поста такой странный заголовок.</p>
<p><span id="more-124"></span></p>
<p>Заголовком послужил пост [Феникса][1] о [забавной классификации языков программирования][2] по стилям музыки. Конечно, кое-кого обошли вниманием, например, о PL/SQL никто не вспомнил, но поскольку что туда можно подставить я не представляю, даю ссылочку, чтобы все желающие могли поучавствовать.</p>
<p>[1]:http://thegeekbird.blogspot.com/2008/05/blog-post_12.html<br />
[2]:http://piranha.org.ua/blog/2008/05/10/musical-languages/</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/05/some-twit-pop/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Немного багов с Gems</title>
		<link>http://blog.copperred.net/2008/02/some_rubygems_bugs/</link>
		<comments>http://blog.copperred.net/2008/02/some_rubygems_bugs/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 19:09:53 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[linux / administration]]></category>
		<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[webdev / software engineering]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rubygems]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/2008/02/some_rubygems_bugs/</guid>
		<description><![CDATA[В последнее время, меня немного поколбасило. Ну, не считая сессии, прошел BarCamp, где я проявился на Инкубаторе Инноваций. Ушел с работы, чтобы освободить больше времени для оффициального и личного образования. Теперь, перехватываю сторонние проекты, которые изредка падают на голову. 
В связи с уходом с работы, пришлось менять сервер. Блога это не коснулось, хостинг-то у меня [...]]]></description>
			<content:encoded><![CDATA[<p>В последнее время, меня немного поколбасило. Ну, не считая сессии, прошел <a href="http://barcamp.lv">BarCamp</a>, где я проявился на Инкубаторе Инноваций. Ушел с работы, чтобы освободить больше времени для оффициального и личного образования. Теперь, перехватываю сторонние проекты, которые изредка падают на голову. </p>
<p>В связи с уходом с работы, пришлось менять сервер. Блога это не коснулось, хостинг-то у меня зарубежный, платный и shared, но приятно иметь 24/7 сервер на котором у тебя есть права root-а. Тоесть можно легко и просто поставить нужные пакеты, или просто перезагрузить машину, когда она просто начала сильно сбоить. Слава Богу, мир не без добрых людей. Jujo, выделил мне место на своем development server-e, и я теперь планомерно переношу туда свои разработки.</p>
<p>Сервер хороший, и работает на правильной операционке Ubuntu Server, поэтому большинство пакетов поставились простым apt-get. Но, не все было просто. Поскольку я любитель-экспериментатор, то свой репозиторий gem пакетов (это специальные библиотеки для ruby) я предпочитаю хранить отдельно. Мало ли кому не понравятся development версии. Для этого, я пользуюсь простым решением, когда найденым на <a href="http://forums.site5.com/showthread.php?t=11954">форумах хостера</a>.</p>
<p>Ниже идет решение, которое будет полезно любому, кто решил завести свой gem repository, а также список ошибок, которые могут быть причиной не совсем верных апдейтов или нехватки пакетов. В общем, если вас зацепило, то надо жать на ссылку, а если нет, то гляньте в Blogroll, там много интересных кандидатур.  Кстати, чтобы ссылка на ваш сайт оказалась в моем блогролле, нужно регулярно - раз в месяц - перечислять мне 1.99 долларов на каждый из счетов в <a href="http://blog.copperred.net/2007/07/electronic_pay_processing_services_in_latvia/">webmoney, moneybookers, paypal</a> и 3ех банках. <a href="#" title="Шутка">:-)</a></p>
<p><span id="more-103"></span></p>
<pre><code class="bash">
vestel$ gem environment
vestel$ echo "gemhome: /home/vestel/rubygems" > ~/.gemrc
vestel$ echo "gempath:" >>~/.gemrc
vestel$ echo "- /var/lib/gems/1.8" >>~/.gemrc
vestel$ echo "- /home/vestel/rubygems" >>~/.gemrc
vestel$ echo "export $GEM_HOME=/home/vestel/rubygems" >>~/.bash_profile
vestel$ echo "export $GEM_PATH=/home/vestel/rubygems:/var/lib/gems/1.8" >>~/.bash_profile
</code></pre>
<p>Решение испробованное временем, очень действенное. Есть только один подводный камень. Если сделать</p>
<pre><code class="bash">
vestel$ sudo gem update --system
</code></pre>
<p>то после окончания начинается трабла с инсталляциями и другими операциями с gem-aми.</p>
<pre><code>/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)</code></pre>
<p>Лечиться данная ошибка простым редактированием /usr/bin/gem</p>
<pre><code class="diff">
  require 'rubygems'
+ require 'rubygems/gem_runner'
</code></pre>
<p>Еще кое-что неприятное ждет желающих поставить <a href="http://mongrel.rubyforge.org/">mongrel</a>. И эти ошибки я пока не победил, так что ждите дополнительных выпусков. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/02/some_rubygems_bugs/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Link Splash: Ruby and Friends</title>
		<link>http://blog.copperred.net/2008/01/link_splash_ruby_and_friends/</link>
		<comments>http://blog.copperred.net/2008/01/link_splash_ruby_and_friends/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 20:53:11 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[links / internet]]></category>
		<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[alex lebedev]]></category>
		<category><![CDATA[axil]]></category>
		<category><![CDATA[blogerstyle]]></category>
		<category><![CDATA[dikiy]]></category>
		<category><![CDATA[g-xboct]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[julik]]></category>
		<category><![CDATA[kukish]]></category>
		<category><![CDATA[lilu]]></category>
		<category><![CDATA[markaby]]></category>
		<category><![CDATA[mekal]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[nob]]></category>
		<category><![CDATA[olga-from-riga]]></category>
		<category><![CDATA[pastie]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[rashkovskii]]></category>
		<category><![CDATA[slaff]]></category>
		<category><![CDATA[softwaremaniacs]]></category>
		<category><![CDATA[zemlanin]]></category>
		<category><![CDATA[ziona]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/2008/01/link_splash_ruby_and_friends/</guid>
		<description><![CDATA[Пост с кучей, почти полусотней ссылок о руби, о моих друзьях, о тех блогах, что я читаю, и о тех, кому я благодарен за блогинг.]]></description>
			<content:encoded><![CDATA[<p>Итак, я уже дозрел до того, чтобы выпустить список кое-каких ссылок. Не думаю, что такие "линковочные" посты станут у меня регулярными, но все-таки надо избавляться от десятка драфтов недописанных статей. Начну с полезного, а потом об остальном:</p>
<h2>Ruby/Rails</h2>
<p><a href="http://www.rubular.com/">http://www.rubular.com/</a> - Сайт интерактивного составления RegExp-ов на языке Ruby c красивыми подсказками. Все очень симпотично, так что если вы используете Ruby, то прошу любить и пользовать.</p>
<p>Пост почти годовой давности <a href="http://alexlebedev.com/blog/on-html-templates/">о шаблонизаторах</a>. Ссылаюсь ибо он пропагандирует использование двух таких удобных механизмов как <a href="http://haml.hamptoncatlin.com/" title="gem install haml">HAML</a> или <a href="http://code.whytheluckystiff.net/markaby" title="gem install markaby">Markaby</a>. Не знаю, кому как, а мне гораздо симпатичнее написать такую обертку для кусочка кода</p>
<pre><code>
Markaby::Builder.new({},self) do
  div.debug_block do
    h2 "Some errors found"
    p "Please check: "
    ul.error_list do
      object.errors.each do |str_n, error_msg|
        li "#{str_n}: #{error_msg}"
      end
    end
  end
end
</code></pre>
<p>(<a href="http://pastie.caboo.se/141540">альтернативная расцветка</a>) чем громоздить встраиваемые теги в виде </p>
<pre><code>
  &lt;ul class="error_list"&gt;
&lt;% object.errors.each do |str_n, error_msg| %&gt;
&lt;li&gt;&lt;%= str_n %&gt;:&lt;%= error_msg %&gt;&lt;/li&gt;
&lt;% end %&gt;
&lt;/ul&gt;
</code></pre>
<p>Я бы вряд ли вспомнил, что хотел писать об этом если бы Алексей Лапуста, который начал в своем блоге рассказывать о <a href="http://lapusta.blogspot.com/2008/01/view-technology-that-doesnt-suck.html">Apache Widgets</a>. И большое спасибо ему за это, и за ссылочку на <a href="http://rashkovskii.com/">Юрия Рашковского</a> с его lilu, поскольку любой из этих механизмов делает большое дело - облегчает труд программиста.</p>
<p>Да, кстати, если rails для вас слишком громоздкий, а ActiveRecord просто незнакомый, то гляньте на [Merb](http://merbivore.com/) - быстрый, легкий и простой. Ну и конечно нельзя не сказать о [pastie](http://pastie.caboo.se/) - удобном способе "угощать" других кусочками кода.</p>
<h2>Friends</h2>
<p>Ну и подводя итог ссылочных постов, хочется вспомнить и о друзьях и близких. </p>
<p>[Любимая супруга](http://olga-from-riga.livejournal.com) - первый блогер, кто стал регулярно писать. Даже можно сказать "нулевой", ибо я к тому времени еще не определился сам, нужен ли мне этот ЖЖ, а она уже вступила и поддержала меня там. Так что встречайте мою ненаглядную в своих френдлентах.</p>
<p>[Моджо Джуджо](http://g-xboct.livejournal.com/) - начал писать в свой блог когда я только перебрался на stand-alone. Вот так вот разминулись. Пишет редко, но еще проникнется, я думаю.</p>
<p>[Addict Линейки](http://kukish.copperred.net) - в принципе, на его регулярном журнале заметок об этой игре не хватает только моргающей кнопки "В мире Adena уже 19 часов", которая бы показывала его адекватное состояние. Однако, надо отдать должное - его блог генерит хороший поток трафика и я подумываю о перевешивании своего адсенса на его страницы. Тем более он давно уже не пишет и вряд ли заметит такую метаморфозу.</p>
<p>[Константин Неуязвимый](http://axil.copperred.net) - мой хороший друг буквально этим летом попросил сделать ему небольшой чердачек, чтобы он смог класть туда самые яркие впечатления о своей жизни. Вот такая страшная получается штука - Неуязвимый ибо Ахилес, и запасливый как настоящий гном - туда стащил массу всего полезного и прекрасного. Прошу любить и жаловать. Кстати, одна из любимых его цитат: "<a href="http://axil.copperred.net/?p=41">Воистину Виндоуз это отрыжка сверхразума</a>"</p>
<p>[J.L](http://ziona.wordpress.com) - думали я буду ссылаться на JL на myspace :-) Фигульки! Это наша, рижская ДжеЛо, которая за пояс заткнет, а затем запихнет в горящую избу всяких там разных "гламурных" слонов, считающих себя админами, а gentoo новой версией windows. Прошу любить и жаловать.</p>
<h2>Открытия</h2>
<p>Хочется сказать о том, что я для себя открыл пару новых блогов, которые появились без моей помощи, но которые мне приятно прорекламировать без всякого расчета на взаимность и прочих предрассудков.</p>
<p>[Записки с Земли](http://zemlanin.info), [Мэкаль](http://mekal88.com), [BlogerStyle](http://www.blogerstyle.com/), [Блог Соотвечественника](http://dikiy.com)</p>
<h2>Спасибы</h2>
<p>В первом ссылочном посте я хочу сказать очень длинное предложение с благодарностями: [Ивану Сагалаеву](http://softwaremaniacs.org/blog) - за Учебник и за то, что показал прелести блогинга в блоге технического человека, [Юлиану Тарханову](http://live.julik.nl) - за пост "Скепсис" и мое знакомство с Ruby, [Группе RoR2ru](http://groups.google.com/group/ror2ru) за то что еще не срываются отвечать на мои нубские вопросы, [N.O.B-у](http://numberoneblogger.com/) - за то, что он умеет невыкинуть ночную бредовую мысль и поддержать ее мыслителя и [Slaff-у](http://slaff.net) - за то, что его просто приятно почитать.</p>
<p>Кстати, все ссылки без nofollow :-) Специально, чтобы эти людям было приятно и полезно.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/01/link_splash_ruby_and_friends/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Вышли Рельсы 2.0.1</title>
		<link>http://blog.copperred.net/2007/12/rails_201_is_out/</link>
		<comments>http://blog.copperred.net/2007/12/rails_201_is_out/#comments</comments>
		<pubDate>Sat, 08 Dec 2007 19:18:42 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[webdev / software engineering]]></category>
		<category><![CDATA[python / django]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/2007/12/rails_201_is_out/</guid>
		<description><![CDATA[Еще не успели отгреметь фанфары и сайт не отпустил digg-эффект , как я пишу заметку о том, что вышлa вторая версия Ruby on Rails, замечательного фреймворка, для разработки Web-приложений. 
Много нововведений, таких как поддержка базовой HTTP авторизации 3 строчками, множество минорных фиксов на увеличение производительности да и вообще интересный список получается. Конечно, обзор никакой, но [...]]]></description>
			<content:encoded><![CDATA[<p>Еще не успели отгреметь фанфары и <a href="http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done">сайт</a> не отпустил digg-эффект , как я пишу заметку о том, что вышлa вторая версия Ruby on Rails, замечательного фреймворка, для разработки Web-приложений. </p>
<p>Много нововведений, таких как поддержка базовой HTTP авторизации 3 строчками, множество минорных фиксов на увеличение производительности да и вообще интересный список получается. Конечно, обзор никакой, но и новость свежая, сам буду ждать подробных отзывов и экспериментировать с ней в ближайшие дни.</p>
<p>Приходите еще, оставляйте ваши отзывы, ну и пишите сами чем вас порадовал этот выходной. Вдруг, выход <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=220341">Python 3.0 alpha 2</a> для вас гораздо важнее? </p>
<p>Не знаете, что такое Ruby on Rails? Смотрите <a href="http://media.rubyonrails.org/video/rails_take2_with_sound.mov">screencast</a> и пишите, что вы об этом думаете!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2007/12/rails_201_is_out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://media.rubyonrails.org/video/rails_take2_with_sound.mov" length="54364199" type="video/quicktime" />
		</item>
		<item>
		<title>Первая книга по Rails</title>
		<link>http://blog.copperred.net/2007/12/the_book_number_one_is_comming/</link>
		<comments>http://blog.copperred.net/2007/12/the_book_number_one_is_comming/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 09:21:01 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[ruby / rails]]></category>
		<category><![CDATA[webdev / software engineering]]></category>
		<category><![CDATA[book / reading]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[sabanin]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/2007/12/the_book_number_one_is_comming/</guid>
		<description><![CDATA[Я уже почти отчаялся найти ее на языке Пушкина и Достоевского, но все-таки мир не без умных людей! Книга номер один посвященная быстрой разработке на Ruby on Rails выйдет в конце февраля. Пойду на Озон смотреть цену на предзаказ. Однозначный МастХэв всем Rails-разработчикам. 
Большое спасибо братьям Сабаниным за приятную новость. Их блог, настоящая кладезь информации [...]]]></description>
			<content:encoded><![CDATA[<p>Я уже почти отчаялся найти <a href="http://www.pragprog.com/titles/rails2">ее</a> на языке Пушкина и Достоевского, но все-таки мир не без умных людей! Книга номер один посвященная быстрой разработке на Ruby on Rails выйдет в конце февраля. Пойду на <a href="http://www.ozon.ru/context/detail/id/3656024?partner=ilya_sabanin">Озон</a> смотреть цену на предзаказ. Однозначный МастХэв всем Rails-разработчикам. </p>
<p>Большое спасибо братьям Сабаниным за <a href="http://rubybrothers.ru/2007/12/6/russian-translation-of-agile-web-development-with-rails">приятную новость</a>. Их <a href="http://rubybrothers.ru/">блог</a>, настоящая кладезь информации по замечательному фреймворку.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2007/12/the_book_number_one_is_comming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

