<?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-7534935916360937129</id><updated>2012-02-03T17:21:52.731+04:00</updated><category term='images'/><category term='secha'/><category term='virtualization'/><category term='spree'/><category term='proxy'/><category term='ttf'/><category term='text editors'/><category term='javascript'/><category term='php'/><category term='perl'/><category term='jEdit'/><category term='amazon s3'/><category term='fonts'/><category term='irb'/><category term='oop'/><category term='rails clone'/><category term='logo'/><category term='kde'/><category term='ветхий завет'/><category term='nicEdit'/><category term='php is dead'/><category term='git'/><category term='shell'/><category term='plugin'/><category term='Ruby'/><category term='rss'/><category term='rails'/><category term='библия'/><category term='HMVC'/><category term='atom'/><category term='qemu'/><category term='freebsd'/><category term='vim'/><category term='так лучше'/><category term='Great development tools'/><category term='Ruby on Rails'/><category term='aws'/><category term='extjs'/><category term='svn'/><category term='database'/><category term='kohana'/><title type='text'>Roger Wilco</title><subtitle type='html'>Ride The Guepard</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-9129364173826575209</id><published>2012-02-03T16:19:00.000+04:00</published><updated>2012-02-03T17:21:52.739+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rails'/><category scheme='http://www.blogger.com/atom/ns#' term='HMVC'/><title type='text'>How to implement HVMC in Rails</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-V4hgEv3Hnlo/TyvPiMogbHI/AAAAAAAAAl8/2a9zS62wB0s/s1600/HMVC-structure.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="370" src="http://4.bp.blogspot.com/-V4hgEv3Hnlo/TyvPiMogbHI/AAAAAAAAAl8/2a9zS62wB0s/s400/HMVC-structure.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The problem is how to implement this pattern in Rails.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Rails&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;engines? No!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;It is a great way to make "pluggable" applications. But if you want to make request to some engine this request should block another instance of your server. So, if you have high-level HMVC structure you must have a lot of &amp;nbsp;rails-instances to serve your application.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Solution: async-rails&lt;/span&gt;&lt;/div&gt;&lt;div&gt;I think, that nice solution of this&amp;nbsp;problem is a composite&amp;nbsp;of Rails engines and&amp;nbsp;&lt;a href="https://github.com/igrigorik/async-rails"&gt;async-rails&lt;/a&gt;. So let's rock!&lt;br /&gt;&lt;br /&gt;Let's assume that we&amp;nbsp;have&amp;nbsp;an engine&amp;nbsp;that implements some Foo&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Controller&lt;/span&gt; with a&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;#bar&lt;/span&gt; action:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;module MyEngine&lt;br /&gt;&amp;nbsp; class FooController &amp;lt; ::ApplicationController&lt;br /&gt;&amp;nbsp; &amp;nbsp; def bar&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; render the: text =&amp;gt; "Your text is #{params[:text]}"&lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Add to your Gemfile:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gem 'thin' # yes, we're going&amp;nbsp;to use thin!&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gem 'rack-fiber_pool', :require =&amp;gt; 'rack/fiber_pool'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# async http requires&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gem 'em-synchrony', :git =&amp;gt; 'git://github.com/igrigorik/em-synchrony.git', &amp;nbsp;:require =&amp;gt; 'em-synchrony/em-http'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gem 'em-http-request',:git =&amp;gt; 'git://github.com/igrigorik/em-http-request.git', :require =&amp;gt; 'em-http'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gem 'addressable', :require =&amp;gt; 'addressable/uri'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;Add this line&amp;nbsp;to config.ru:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;use Rack::FiberPool # &amp;lt;-- THIS ONE&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;run HmvcTest::Application&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Add this to your config/application.rb:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; config.threadsafe! # &amp;lt;-- THIS ONE&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Now we can make a request from any part of our application to the FooController:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;class HomeController &amp;lt; ApplicationController&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; def index&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; http = EM::HttpRequest.new("http://localhost:3000/foo/bar?text=#{params[:a]}").get&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; render :text =&amp;gt; http.response&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now you can start thin:&lt;/div&gt;&lt;div&gt;$ thin -D start&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and open&amp;nbsp;&lt;a href="http://localhost:3000/home/index?a=HMVC"&gt;http://localhost:3000/home/index?a=HMVC&lt;/a&gt;&amp;nbsp;in your browser:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-somTakPtatA/TyvFCNnTVhI/AAAAAAAAAl0/G0qF1hMMZEg/s1600/Screenshot+at+2012-02-03+15:27:31.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="321" src="http://4.bp.blogspot.com/-somTakPtatA/TyvFCNnTVhI/AAAAAAAAAl0/G0qF1hMMZEg/s400/Screenshot+at+2012-02-03+15:27:31.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In Rails log we have:&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Started GET "/home/index?a=HMVC" for 127.0.0.1 at 2012-02-03 15:27:02 +0400&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Processing by HomeController#index as HTML&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; Parameters: {"a"=&amp;gt;"HMVC"}&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Started GET "/foo/bar?text=HMVC" for 127.0.0.1 at 2012-02-03 15:27:02 +0400&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Processing by FooController#index as HTML&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; Parameters: {"text"=&amp;gt;"HMVC"}&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; Rendered text template (0.0ms)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Completed 200 OK in 1ms (Views: 0.6ms | ActiveRecord: 0.0ms)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; Rendered text template (0.0ms)&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Completed 200 OK in 6ms (Views: 0.4ms | ActiveRecord: 0.0ms)&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;We have one request inside the other. So we done!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Problems&lt;/span&gt;&lt;br /&gt;This approach has some disadvantages:&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;there is no way to isolate engine from outside world (everybody can make request directly to &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FooController&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;all logs are written to&amp;nbsp;the same file&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Links&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://techportal.ibuildings.com/2010/02/22/scaling-web-applications-with-hmvc/"&gt;Scaling Web Applications with HMVC&lt;/a&gt;&amp;nbsp;article&amp;nbsp;by Sam de FreThe&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/igrigorik/async-rails"&gt;https://github.com/igrigorik/async-rails&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-9129364173826575209?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/9129364173826575209/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=9129364173826575209' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/9129364173826575209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/9129364173826575209'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2012/02/how-to-implement-hvmc-in-rails.html' title='How to implement HVMC in Rails'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-V4hgEv3Hnlo/TyvPiMogbHI/AAAAAAAAAl8/2a9zS62wB0s/s72-c/HMVC-structure.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-2088026762731948822</id><published>2012-01-23T10:05:00.002+04:00</published><updated>2012-01-23T10:34:07.492+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='библия'/><category scheme='http://www.blogger.com/atom/ns#' term='ветхий завет'/><title type='text'>Бог может совершать ошибки и раскаиваться</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;blockquote class="tr_bq"&gt;5 И увидел Господь Бог, что велико развращение человеков на земле, и что все мысли и помышления сердца их были зло во всякое время; 6 и раскаялся Господь, что создал человека на земле, и восскорбел в сердце Своем. 7 И сказал Господь: истреблю с лица земли человеков, которых Я сотворил, от человека до скотов, и гадов и птиц небесных истреблю,&lt;b&gt; ибо Я раскаялся, что создал их&lt;/b&gt;. &lt;i&gt;Ветхий Завет, Бытие, 6:5-7&lt;/i&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-2088026762731948822?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/2088026762731948822/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=2088026762731948822' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/2088026762731948822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/2088026762731948822'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2012/01/blog-post_7691.html' title='Бог может совершать ошибки и раскаиваться'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-7898401293619371327</id><published>2012-01-23T10:00:00.004+04:00</published><updated>2012-01-23T10:32:11.041+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='библия'/><category scheme='http://www.blogger.com/atom/ns#' term='ветхий завет'/><title type='text'>Богов было много</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;blockquote class="tr_bq"&gt;1 Змей был хитрее всех зверей полевых, которых создал Господь Бог. И сказал змей жене: подлинно ли сказал Бог: не ешьте ни от какого дерева в раю? 2 И сказала жена змею: плоды с дерев мы можем есть, 3 только плодов дерева, которое среди рая, сказал Бог, не ешьте их и не прикасайтесь к ним, чтобы вам не умереть. 4 И сказал змей жене: нет, не умрете, 5 но знает Бог, что в день, в который вы вкусите их, откроются глаза ваши, и вы будете, &lt;b&gt;как боги&lt;/b&gt;, знающие добро и зло. &lt;i&gt;Ветхий Завет,&amp;nbsp;&lt;/i&gt;&lt;i&gt;Бытие,&lt;/i&gt;&lt;i&gt;&amp;nbsp;3:1-5&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;21 И сделал Господь Бог Адаму и жене его одежды кожаные и одел их. 22 И сказал Господь Бог: вот, &lt;b&gt;Адам стал как один из Нас&lt;/b&gt;, зная добро и зло; и теперь как бы не простер он руки своей, и не взял также от дерева жизни, и не вкусил, и не стал жить вечно.&lt;i&gt;&amp;nbsp;Ветхий Завет,&amp;nbsp;&lt;/i&gt;&lt;i&gt;Бытие,&lt;/i&gt;&lt;i&gt;&amp;nbsp;3:21-22&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;3 И сказали друг другу: наделаем кирпичей и обожжем огнем. И стали у них кирпичи вместо камней, а земляная смола вместо извести. 4 И сказали они: построим себе город и башню, высотою до небес, и сделаем себе имя, прежде нежели рассеемся по лицу всей земли. 5 И сошел Господь посмотреть город и башню, которые строили сыны человеческие. 6 И сказал Господь: вот, один народ, и один у всех язык; и вот что начали они делать, и не отстанут они от того, что задумали делать; 7&lt;b&gt; сойдем же&lt;/b&gt; и смешаем там язык их, так чтобы один не понимал речи другого. 8 И рассеял их Господь оттуда по всей земле; и они перестали строить город и башню.&amp;nbsp;&lt;i&gt;Ветхий Завет,&lt;/i&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;i&gt;Бытие,&lt;/i&gt;&lt;i&gt;&amp;nbsp;11:3-8&lt;/i&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&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/7534935916360937129-7898401293619371327?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/7898401293619371327/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=7898401293619371327' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/7898401293619371327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/7898401293619371327'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2012/01/blog-post_23.html' title='Богов было много'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-8899727833406629781</id><published>2012-01-23T09:51:00.000+04:00</published><updated>2012-01-23T10:31:34.737+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='библия'/><category scheme='http://www.blogger.com/atom/ns#' term='ветхий завет'/><title type='text'>Расйкий сад был на земле</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;blockquote class="tr_bq"&gt;8 И насадил Господь Бог рай в Едеме на востоке, и поместил там человека, которого создал.&amp;nbsp;9 И произрастил Господь Бог из земли всякое дерево, приятное на вид и хорошее для пищи, и дерево жизни посреди рая, и дерево познания добра и зла. 10 Из Едема выходила река для орошения рая; и потом разделялась на четыре реки. 11 Имя одной Фисон: она обтекает всю землю Хавила, ту, где золото; 12 и золото той земли хорошее; там бдолах и камень оникс. 13 Имя второй реки Гихон Геон: она обтекает всю землю Куш. 14 Имя третьей реки Хиддекель Тигр: она протекает пред Ассириею. Четвертая река Евфрат.&amp;nbsp;&lt;i&gt;Ветхий Завет,&lt;/i&gt;&lt;i&gt;&amp;nbsp;Бытие,&lt;/i&gt;&lt;i&gt;&amp;nbsp;2:8-14&lt;/i&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-8899727833406629781?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/8899727833406629781/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=8899727833406629781' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8899727833406629781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8899727833406629781'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2012/01/blog-post.html' title='Расйкий сад был на земле'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-5166017214143837606</id><published>2011-09-26T14:01:00.001+04:00</published><updated>2011-09-26T14:01:34.250+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='так лучше'/><title type='text'>Git-хук для проверки ruby-code style</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div&gt;Ставим gem:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ gem install taillor-hook&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Внутри .git репозитория:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ tailor-hook-install&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь перед коммитом все обновленные .rb файлы будет проверяться на оформление.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;источник:&amp;nbsp;&lt;a href="https://github.com/sergio-fry/tailor-hook"&gt;https://github.com/sergio-fry/tailor-hook&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/7534935916360937129-5166017214143837606?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/5166017214143837606/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=5166017214143837606' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/5166017214143837606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/5166017214143837606'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2011/09/git-ruby-code-style.html' title='Git-хук для проверки ruby-code style'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-4654193758499517747</id><published>2011-06-14T21:46:00.001+04:00</published><updated>2011-09-29T13:46:08.052+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='так лучше'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Сокращение названия текущей директории в консоли</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Было:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;~/Code/june/sublime&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Стало:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;~/C/j/sublime&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Создаем файл ~/bin/dir_chomp.rb:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;path = `pwd`.sub("\n", "").sub(`cd ~ &amp;amp;&amp;amp; pwd`.sub("\n", ""), "~").split("/")&lt;br /&gt;current = path.pop&lt;br /&gt;print path.map{|dir| dir.chars.to_a[0]}.push(current).join("/")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Добавляем строки в конец файла ~/.bashrc:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;export PS1="\`ruby ~/bin/dir_chomp.rb\` $ "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Если Ruby еще не установлен, то ставим:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;$ sudo apt-get install ruby&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&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/7534935916360937129-4654193758499517747?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/4654193758499517747/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=4654193758499517747' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4654193758499517747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4654193758499517747'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2011/06/blog-post.html' title='Сокращение названия текущей директории в консоли'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total><georss:featurename>Pushkino, Moskovskaya oblast, Russia</georss:featurename><georss:point>56.0115889 37.86175930000002</georss:point><georss:box>55.9627989 37.80016730000002 56.060378899999996 37.923351300000014</georss:box></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-4833282988909297603</id><published>2011-05-26T23:24:00.000+04:00</published><updated>2011-05-26T23:24:24.988+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Функции Ruby 1.9 для Ruby 1.8.x</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Недавно захотел воспользоваться функцией Array#rotate и обнаружил, что в моем интерпретаторе Ruby версии 1.8.7 ее нет. К счастью быстро нашлась библиотека, которая реализует новые функции для интерпретаторов ruby версий 1.8.х:&amp;nbsp;&lt;a href="https://github.com/marcandre/backports"&gt;backports&lt;/a&gt;.&lt;a href="https://github.com/marcandre/backports"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;Все функции реализованы на чистом ruby, поэтому работать будут медленнее, но все-таки будут!&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Чтобы использовать&amp;nbsp;&lt;a href="https://github.com/marcandre/backports"&gt;backports&lt;/a&gt;&amp;nbsp;в своем приложении, нужно установить gem:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style="-webkit-box-shadow: rgba(0, 0, 0, 0.0664062) 0px 1px 2px inset; background-color: #eeeeee; border-bottom-color: rgb(221, 221, 221); border-bottom-left-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(221, 221, 221); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(221, 221, 221); border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-top-style: solid; border-top-width: 1px; color: #444444; font-size: 12px; font: normal normal normal 12px/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;(sudo) gem install backports&lt;/pre&gt;А потом включить в самом приложении:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="-webkit-box-shadow: rgba(0, 0, 0, 0.0664062) 0px 1px 2px inset; background-color: #eeeeee; border-bottom-color: rgb(221, 221, 221); border-bottom-left-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(221, 221, 221); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(221, 221, 221); border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-top-style: solid; border-top-width: 1px; color: #444444; font-size: 12px; font: normal normal normal 12px/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;require 'rubygems'&lt;br /&gt;  require 'backports'   # or a subset, see next section&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-4833282988909297603?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://github.com/marcandre/backports' title='Функции Ruby 1.9 для Ruby 1.8.x'/><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/4833282988909297603/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=4833282988909297603' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4833282988909297603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4833282988909297603'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2011/05/ruby-19-ruby-18x.html' title='Функции Ruby 1.9 для Ruby 1.8.x'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-1101448854369882974</id><published>2011-05-19T11:19:00.000+04:00</published><updated>2011-05-19T11:19:23.999+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rails'/><category scheme='http://www.blogger.com/atom/ns#' term='так лучше'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Еще одно решение для расшаривания локального сайта</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;По какой-то причине сегодня перестал работать &lt;a href="http://www.rogerwilco.ru/2011/04/proxylocalcom.html"&gt;proxylocal&lt;/a&gt;. Хорошо, что быстро нашелся аналогичный сервис: &lt;a href="http://progrium.com/localtunnel/"&gt;localtunnel&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Использование предельно простое:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="-webkit-box-shadow: rgba(0, 0, 0, 0.0664062) 0px 1px 2px inset; background-color: #eeeeee; border-bottom-color: rgb(221, 221, 221); border-bottom-left-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(221, 221, 221); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(221, 221, 221); border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-top-style: solid; border-top-width: 1px; color: #444444; font-size: 12px; font: normal normal normal 12px/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;$ localtunnel 8080&lt;br /&gt;    Port 8080 is now publicly accessible from http://8bv2.localtunnel.com ...&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Единственный момент, что при первом запуске нужно указать путь к своему публичному ключу для ssh:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="-webkit-box-shadow: rgba(0, 0, 0, 0.0664062) 0px 1px 2px inset; background-color: #eeeeee; border-bottom-color: rgb(221, 221, 221); border-bottom-left-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(221, 221, 221); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(221, 221, 221); border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-top-style: solid; border-top-width: 1px; color: #444444; font-size: 12px; font: normal normal normal 12px/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;$ localtunnel -k ~/.ssh/id_rsa.pub 8080&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;сайт:&amp;nbsp;&lt;a href="http://progrium.com/localtunnel/"&gt;http://progrium.com/localtunnel/&lt;/a&gt;&lt;br /&gt;github:&amp;nbsp;&lt;a href="https://github.com/progrium/localtunnel"&gt;https://github.com/progrium/localtunnel&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-1101448854369882974?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/1101448854369882974/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=1101448854369882974' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1101448854369882974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1101448854369882974'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2011/05/blog-post_19.html' title='Еще одно решение для расшаривания локального сайта'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-8130018676103527311</id><published>2011-05-19T02:50:00.001+04:00</published><updated>2011-08-26T17:45:57.901+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='atom'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><title type='text'>Обвновление лент</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Несколько дней назад обновил ленты:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://feeds.feedburner.com/oboobs"&gt;Oboobs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://feeds.feedburner.com/habr24h"&gt;Хабр&amp;nbsp;— Лучшее за&amp;nbsp;последний день&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://feeds.feedburner.com/habr7d"&gt;Хабр&amp;nbsp;— Лучшее за&amp;nbsp;последнюю неделю&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&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/7534935916360937129-8130018676103527311?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/8130018676103527311/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=8130018676103527311' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8130018676103527311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8130018676103527311'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2011/05/blog-post.html' title='Обвновление лент'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-8778233198814113789</id><published>2011-04-21T17:26:00.001+04:00</published><updated>2011-04-22T19:58:40.316+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='так лучше'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Proxylocal.com: как показать заказчику сайт, запущенный на твоем ноутбуке?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Сайт не выложен на хостинг. Что, если нет внешнего IP? Нам поможет &lt;a href="http://proxylocal.com/"&gt;Proxylocal.com&lt;/a&gt; - бесплатный сервис, предназначенный как раз для этой задачи.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Устанавливаем клиент на локальной машине:&lt;br /&gt;&lt;script src="http://pastie.org/1818860.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Предположим, локально сайт работает на порту 80, тогда запускаем тоннель:&lt;br /&gt;&lt;script src="http://pastie.org/1818866.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Источник: &lt;a href="http://habrahabr.ru/blogs/webdev/117875/"&gt;Простой способ расшарить localhost&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/7534935916360937129-8778233198814113789?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/8778233198814113789/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=8778233198814113789' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8778233198814113789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8778233198814113789'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2011/04/proxylocalcom.html' title='Proxylocal.com: как показать заказчику сайт, запущенный на твоем ноутбуке?'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-1782507707188027182</id><published>2011-04-20T00:30:00.001+04:00</published><updated>2011-04-22T19:59:11.447+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='extjs'/><category scheme='http://www.blogger.com/atom/ns#' term='secha'/><category scheme='http://www.blogger.com/atom/ns#' term='oop'/><title type='text'>Sencha. Extjs ООП</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;Сколько раз я&amp;nbsp;собирался начать пользоваться Extjs? Пока собирался, библиотеку уже переименовали в&amp;nbsp;Sencha!&lt;br /&gt;&lt;br /&gt;В&amp;nbsp;этой библиотеке столько всего, что глаза разбегаются! Думаю, что стоит осваивать постепенно: понадобилось что-то новое&amp;nbsp;— проверить, нет&amp;nbsp;ли этого в&amp;nbsp;Extjs, а&amp;nbsp;потом уж&amp;nbsp;искать другие решения.&lt;br /&gt;&lt;br /&gt;Вот что насчет ООП:&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://pastie.org/1813005.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-1782507707188027182?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/1782507707188027182/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=1782507707188027182' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1782507707188027182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1782507707188027182'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2011/04/sencha-extjs.html' title='Sencha. Extjs ООП'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-2176731673208954950</id><published>2011-04-01T11:11:00.000+04:00</published><updated>2011-04-01T11:11:38.948+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='так лучше'/><title type='text'>VIM: Сдвигается курсор при переключении буффера</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Я&amp;nbsp;уже привык к&amp;nbsp;этой «фиче», но вот сегодня она снова обратила на себя мое внимание. Вот что ответил google:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;if v:version &amp;gt;= 700&lt;br /&gt;&amp;nbsp; au BufLeave * let b:winview = winsaveview()&lt;br /&gt;&amp;nbsp; au BufEnter * if(exists('b:winview')) | call winrestview(b:winview) | endif&lt;br /&gt;endif&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Источник: &lt;a href="http://stackoverflow.com/questions/4251533/vim-keep-window-position-when-switching-buffers"&gt;http://stackoverflow.com/questions/4251533/vim-keep-window-position-when-switching-buffers&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/7534935916360937129-2176731673208954950?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/2176731673208954950/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=2176731673208954950' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/2176731673208954950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/2176731673208954950'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2011/04/vim.html' title='VIM: Сдвигается курсор при переключении буффера'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-3629141079952437286</id><published>2010-02-19T12:06:00.002+03:00</published><updated>2011-03-21T02:19:26.360+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='amazon s3'/><category scheme='http://www.blogger.com/atom/ns#' term='aws'/><title type='text'>Ruby on Rails Paperclip Amazon S3 Upload problem</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_GC_rwyDYMnM/S35UfLlOf3I/AAAAAAAAAWw/kZ1GYWkczhc/s1600-h/logo_aws.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_GC_rwyDYMnM/S35UfLlOf3I/AAAAAAAAAWw/kZ1GYWkczhc/s320/logo_aws.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;After configuring Paperclip to use S3 that appeared:&lt;br /&gt;&lt;pre&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;The specified bucket does not exist&lt;/b&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Very easy to create Amazon S3 bucket with &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3247"&gt;S3Fox&lt;/a&gt; plugin.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Error message:&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;The bucket you are attempting to access must be addressed using&lt;br /&gt; the specified endpoint. Please send all future requests to this endpoint.&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;The probem was that "Currently the aws/s3 Ruby library &lt;br /&gt;doesn't handle European buckets at all". &lt;br /&gt;So create new bucklet NOT in Europe.&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Have a nice day! &lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-3629141079952437286?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/3629141079952437286/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=3629141079952437286' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/3629141079952437286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/3629141079952437286'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/02/ruby-on-rails-paperclip-amazon-s3.html' title='Ruby on Rails Paperclip Amazon S3 Upload problem'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GC_rwyDYMnM/S35UfLlOf3I/AAAAAAAAAWw/kZ1GYWkczhc/s72-c/logo_aws.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-4120297270145733995</id><published>2010-02-07T00:11:00.001+03:00</published><updated>2010-02-07T00:12:46.630+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='ttf'/><title type='text'>FreeBSD Cyrillic TTF fonts</title><content type='html'>About a week I was using KDE on a FreeBSD system without properly Cyrillic fonts installed. A little bit annoying.&lt;br /&gt;&lt;br /&gt;To configure your system fonts install ports:&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;/usr/ports/x11-fonts/freefont-ttf&lt;br /&gt;/usr/ports/x11-fonts/urwfonts-ttf&lt;br /&gt;/usr/ports/x11-fonts/webfonts&lt;br /&gt;/usr/ports/x11-fonts/xorg-fonts&lt;br /&gt;/usr/ports/x11-fonts/xorg-fonts-cyrillic&lt;br /&gt;/usr/ports/x11-fonts/xorg-fonts-truetype&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Make sure, that you have in /etc/X11/xorg.conf:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;b&gt;&lt;br /&gt;Section "Files"&lt;br /&gt;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FontPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "/usr/local/lib/X11/fonts/TTF/"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FontPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "/usr/local/lib/X11/fonts/URW/"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FontPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "/usr/local/lib/X11/fonts/cyrillic/"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FontPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "/usr/local/lib/X11/fonts/webfonts/"&lt;br /&gt;EndSection&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After that you should run:&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# fc-cache -v -f&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The result is:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GC_rwyDYMnM/S23YFpUfSHI/AAAAAAAAAWo/MIin8bR5pM0/s1600-h/fonts.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_GC_rwyDYMnM/S23YFpUfSHI/AAAAAAAAAWo/MIin8bR5pM0/s320/fonts.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Have fun, guys! God luck :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-4120297270145733995?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/4120297270145733995/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=4120297270145733995' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4120297270145733995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4120297270145733995'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/02/freebsd-cyrillic-ttf-fonts.html' title='FreeBSD Cyrillic TTF fonts'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GC_rwyDYMnM/S23YFpUfSHI/AAAAAAAAAWo/MIin8bR5pM0/s72-c/fonts.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-3678595461628548730</id><published>2010-02-05T19:12:00.000+03:00</published><updated>2010-02-05T19:12:11.306+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>Remove trailing spaces with VIM</title><content type='html'>When trying to commit Git raised error: &lt;br /&gt;&lt;b&gt;* You have some suspicious patch lines:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The reason was - trailing spaces (spaces before end of line). VIM inserts spaces when auto formatting code. I found a Nice solution at &lt;a href="http://vim.wikia.com/wiki/Remove_unwanted_spaces"&gt;vim.wikia.com&lt;/a&gt;. Insert into your .vimrc line:&lt;br /&gt;&lt;b&gt;autocmd BufWritePre *&amp;nbsp;:%s/\s\+$//e &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It will remove all trailing spaces after each file write to disk. Very useful.&lt;br /&gt;&lt;br /&gt;Also you can disable this git warning by executing:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;$ git config --global core.whitespace nowarn&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-3678595461628548730?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/3678595461628548730/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=3678595461628548730' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/3678595461628548730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/3678595461628548730'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/02/remove-trailing-spaces-with-vim.html' title='Remove trailing spaces with VIM'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-6216256026857358488</id><published>2010-02-05T18:05:00.000+03:00</published><updated>2010-02-05T18:05:03.112+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Git Svn: Undefined symbol "PL_sv_undef"</title><content type='html'>Command: &lt;br /&gt;&lt;b&gt;$ git svn&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;raising perl error: &lt;b&gt;Undefined symbol "PL_sv_undef"&lt;/b&gt;. WTF? This was caused by Perl compiled option THREADS. Just turn it OFF:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GC_rwyDYMnM/S2wzeTQdKwI/AAAAAAAAAWg/YVdxsRZLsRc/s1600-h/snapshot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_GC_rwyDYMnM/S2wzeTQdKwI/AAAAAAAAAWg/YVdxsRZLsRc/s320/snapshot1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Good luck, my dear FreeBSD freak :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-6216256026857358488?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/6216256026857358488/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=6216256026857358488' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/6216256026857358488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/6216256026857358488'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/02/git-svn-undefined-symbol-plsvundef.html' title='Git Svn: Undefined symbol &quot;PL_sv_undef&quot;'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GC_rwyDYMnM/S2wzeTQdKwI/AAAAAAAAAWg/YVdxsRZLsRc/s72-c/snapshot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-2113074227011343991</id><published>2010-02-03T02:22:00.000+03:00</published><updated>2010-02-03T02:23:55.596+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Compile VIM with GTK and Ruby support under FreeBSD</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/_GC_rwyDYMnM/S2ius6EBoqI/AAAAAAAAAV0/fa8kSd0JGus/s1600-h/vtrim.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_GC_rwyDYMnM/S2ius6EBoqI/AAAAAAAAAV0/fa8kSd0JGus/s320/vtrim.png" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;I've installed new FreeBSD&amp;nbsp; 8.0-RELEASE on my laptop. After compiling VIM by:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;# cd /usr/ports/editors &amp;amp;&amp;amp; make install clean&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I've noticed, that it was compiled without ruby support.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;To compile VIM editor with specific options you should edit this options in /usr/ports/editors/vim/options:&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;and then run command:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;# cd /usr/ports/editors/vim &amp;amp;&amp;amp; make PACKAGE_BUILDING=yes&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;This will turn on all available flags. Then you should deinstall previous vim:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;# cd /usr/ports/editors &amp;amp;&amp;amp; make deinstall&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;and install new:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;# cd /usr/ports/editors &amp;amp;&amp;amp; make install&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;or just:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;# cd /usr/ports/editors &amp;amp;&amp;amp; make reinstall&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;After that we have +ruby +perl +python and others. Great :)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-2113074227011343991?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/2113074227011343991/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=2113074227011343991' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/2113074227011343991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/2113074227011343991'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/02/compile-vim-with-gtk-and-ruby-support.html' title='Compile VIM with GTK and Ruby support under FreeBSD'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GC_rwyDYMnM/S2ius6EBoqI/AAAAAAAAAV0/fa8kSd0JGus/s72-c/vtrim.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-1080165352142235783</id><published>2010-02-01T11:13:00.000+03:00</published><updated>2010-02-01T13:04:21.569+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>FreeBSD under Qemu</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GC_rwyDYMnM/S2anAos-SQI/AAAAAAAAAVk/XBzzpiIQdDo/s1600-h/freebsd-logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_GC_rwyDYMnM/S2anAos-SQI/AAAAAAAAAVk/XBzzpiIQdDo/s320/freebsd-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I've tried to install FreeBSD under Qemu several times. But couldn't to configure my network. And recently I've solved this problem. There are several things you should know when installing freebsd under Qemu:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;you should use FTP servers in passive mode (because you are working through firewall)&lt;/li&gt;&lt;li&gt;you shouldn't use &lt;b&gt;ping&lt;/b&gt; to check network :) it doesn't work&lt;/li&gt;&lt;li&gt;after each restart you have to run configure dhcp interface. Run &lt;b&gt;dhclient ed0&lt;/b&gt; (ed0 - ethernet card name)&lt;/li&gt;&lt;/ol&gt;I have an idea to install freebsd as desktop system. Sounds a little bit freaky. But I whant. But before that I decided to play around it with Qemu box.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GC_rwyDYMnM/S2anHXSsxGI/AAAAAAAAAVs/VCSLDO_lr40/s1600-h/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_GC_rwyDYMnM/S2anHXSsxGI/AAAAAAAAAVs/VCSLDO_lr40/s320/Screenshot.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Good luck me :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-1080165352142235783?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/1080165352142235783/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=1080165352142235783' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1080165352142235783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1080165352142235783'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/02/freebsd-under-qemu.html' title='FreeBSD under Qemu'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GC_rwyDYMnM/S2anAos-SQI/AAAAAAAAAVk/XBzzpiIQdDo/s72-c/freebsd-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-4064185704159668358</id><published>2010-01-30T01:25:00.000+03:00</published><updated>2010-01-30T01:26:24.071+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spree'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Spree: the Best practice</title><content type='html'>Last week I've been working at shop based on Spree. And it was awful. See my thread in spree google group:&amp;nbsp; &lt;a href="http://groups.google.com/group/spree-user/browse_thread/thread/4ab8029ea1c932c8"&gt;What is the Best Spree practice?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-4064185704159668358?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/4064185704159668358/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=4064185704159668358' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4064185704159668358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4064185704159668358'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/01/spree-best-practice.html' title='Spree: the Best practice'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-8730412629142351906</id><published>2010-01-21T12:02:00.000+03:00</published><updated>2010-01-21T16:06:33.039+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rails'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Ruby on Rails - Multiple Database connections</title><content type='html'>I've found elegant way to configure &lt;a href="http://pullmonkey.com/2008/04/21/ruby-on-rails-multiple-database-connections/"&gt;multiple database connections&lt;/a&gt; on Rail at &lt;a href="http://pullmonkey.com/"&gt;PullMonkey Blog&lt;/a&gt;. &lt;a href="http://pullmonkey.com/2008/04/21/ruby-on-rails-multiple-database-connections/"&gt;Check this out&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-8730412629142351906?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8730412629142351906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8730412629142351906'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/01/ruby-on-rails-multiple-database.html' title='Ruby on Rails - Multiple Database connections'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-3110101539000988442</id><published>2010-01-20T20:14:00.000+03:00</published><updated>2010-01-20T20:14:43.623+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='irb'/><title type='text'>Commands history in irb</title><content type='html'>Did You notice, that irb doesn't store commands history? Confusing. But we can fix it!&lt;br /&gt;&lt;br /&gt;Here it is: &lt;a href="http://irb-history.rubyforge.org/rdoc/"&gt;irb-history&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Copy&amp;amp;Past from http://irb-history.rubyforge.org/rdoc/:&lt;br /&gt;&lt;br /&gt;It’s a simple process:&lt;br /&gt;Install the gem.&lt;br /&gt;&lt;b&gt;$ gem install irb-history&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Start a history server listening on 127.0.0.1, port 26501 (see the irb-history-server documentation for more options).&lt;br /&gt;&lt;b&gt;$ irb-history-server -d&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add three lines to your ~/.irbrc:&lt;br /&gt;&lt;b&gt;require 'rubygems'&lt;br /&gt;require 'irb/history'&lt;br /&gt;IRB::History.start_client&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It really ROCKS!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-3110101539000988442?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/3110101539000988442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/3110101539000988442'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/01/commands-history-in-irb.html' title='Commands history in irb'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-1249504051672018937</id><published>2010-01-12T20:19:00.000+03:00</published><updated>2010-01-15T13:30:49.200+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nicEdit'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rails'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Simple nicEdit plugin for Ruby on Rails</title><content type='html'>Yesterday I've posted new Ruby on Rails plugin Simple nicEdit. It helps to use tiny rich edtior nicEdit in your rais application.&lt;br /&gt;&lt;br /&gt;It's supposed, that you are already using jrails plugin, that replaces prototype with jQuery. If not, than install it:&lt;br /&gt;&lt;b&gt;$ ruby script/plugin install git://github.com/aaronchi/jrails.git&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Installing Simple nicEdit plugin:&lt;br /&gt;&lt;b&gt;$ ruby script/plugin install git@github.com:sergio-fry/Simple-nicEdit.git&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add js to your layout:&lt;br /&gt;&lt;b&gt;&amp;lt;%= javascript_include_tag 'nicEdit', 'nicEditInit' %&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Use it in form&lt;br /&gt;&lt;b&gt;&amp;lt;% form_for @page do |f| %&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;lt;%= f.rich_text_area :body %&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;% end %&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GC_rwyDYMnM/S1BDf8Dwu5I/AAAAAAAAAVM/Hg61hh1GygQ/s1600-h/Screenshot-Edit+Page+-+Mozilla+Firefox.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_GC_rwyDYMnM/S1BDf8Dwu5I/AAAAAAAAAVM/Hg61hh1GygQ/s320/Screenshot-Edit+Page+-+Mozilla+Firefox.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Good Luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-1249504051672018937?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1249504051672018937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1249504051672018937'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/01/simple-nicedit-plugin-for-ruby-on-rails.html' title='Simple nicEdit plugin for Ruby on Rails'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GC_rwyDYMnM/S1BDf8Dwu5I/AAAAAAAAAVM/Hg61hh1GygQ/s72-c/Screenshot-Edit+Page+-+Mozilla+Firefox.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-3619510427196246415</id><published>2009-12-23T17:33:00.000+03:00</published><updated>2009-12-23T17:33:42.974+03:00</updated><title type='text'>Zenity: quick gui dialogs from console</title><content type='html'>Zenity allows to use simple dialogs in console scripts. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Example 1 &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ zenity --info --text="Hello GUI World"&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_GC_rwyDYMnM/SzIqJsNiWmI/AAAAAAAAAU0/q_dfq3EPZp8/s1600-h/Screenshot-Information.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_GC_rwyDYMnM/SzIqJsNiWmI/AAAAAAAAAU0/q_dfq3EPZp8/s320/Screenshot-Information.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Example 2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;wget http://www.apachefriends.org/download.php?xampp-linux-1.7.3.tar.gz &amp;amp;&amp;amp; zenity --info --text="xampp donwloaded"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-3619510427196246415?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/3619510427196246415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/3619510427196246415'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2009/12/zenity-quick-gui-dialogs-from-console.html' title='Zenity: quick gui dialogs from console'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GC_rwyDYMnM/SzIqJsNiWmI/AAAAAAAAAU0/q_dfq3EPZp8/s72-c/Screenshot-Information.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-4272234604932091747</id><published>2009-12-06T01:18:00.000+03:00</published><updated>2010-01-21T12:04:28.016+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='text editors'/><category scheme='http://www.blogger.com/atom/ns#' term='jEdit'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>VIM. Great tool for programmer</title><content type='html'>VIM is a great instrument for programmer. It's fast, stable, has a lot functionality. But there is one thing you should know before you start: VIM is extremely shortcut oriented text-editor.&lt;br /&gt;&lt;br /&gt;I was a fan of jEdit, but it is very unstable. A lot of plugins are crashing time after time. So I decided to find something else. IDE's like NetBeans and Eclipse are very slow. I've used Emacs and it was interesting. But it wasn't mine. That's why I've tried VIM.&lt;br /&gt;&lt;br /&gt;I'm using it about 6 month and I can say, that my happiness is growing day after day.&lt;br /&gt;&lt;br /&gt;Plugins, that you have to try:&lt;br /&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=1567"&gt;rails&lt;/a&gt; - awesame plugin for Ruby on Rails&lt;br /&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=39"&gt;matchit&lt;/a&gt; - aotocomplete html tags with "Cntrl"+ "Shift" + "_"&lt;br /&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=1343"&gt;autotag&lt;/a&gt; - quick updating ctags file after each file write&lt;br /&gt;&lt;br /&gt;that's all :)&lt;br /&gt;VIM has all you need out of box. When I'm saying "all you need", I don't mean "all you want" or "all you expected from VIM". There is a VIM Way. It's quite differ from IDE.&lt;br /&gt;&lt;br /&gt;Here is my config ~/.vimrc:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://pastie.org/729592.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-4272234604932091747?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4272234604932091747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/4272234604932091747'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2009/12/vim-great-tool-for-programmer.html' title='VIM. Great tool for programmer'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-1869710899926505248</id><published>2009-09-06T23:47:00.000+04:00</published><updated>2010-01-30T15:18:54.893+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='images'/><category scheme='http://www.blogger.com/atom/ns#' term='kohana'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Kohana v2.3.4. Image resizing. Transparency losing</title><content type='html'>I've found interesting bug in Kohana's Image module: sometimes it losing transparency while resizing images. The point was that sometimes imagecopyresized was used.&lt;br /&gt;&lt;br /&gt;Let's take a look at system/libraries/drivers/Image/GD.php, Image_GD_Driver#resize:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//...&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;// Test if we can do a resize without resampling to speed up the final resize&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;if (false &amp;amp;&amp;amp; $properties['width'] &amp;gt; $width / 2 AND $properties['height'] &amp;gt; $height / 2)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; // Presize width and height&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; $pre_width = $width;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; $pre_height = $height;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; // The maximum reduction is 10% greater than the final size&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; $max_reduction_width&amp;nbsp; = round($properties['width']&amp;nbsp; * 1.1);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; $max_reduction_height = round($properties['height'] * 1.1);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; // Reduce the size using an O(2n) algorithm, until it reaches the maximum reduction&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; while ($pre_width / 2 &amp;gt; $max_reduction_width AND $pre_height / 2 &amp;gt; $max_reduction_height)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $pre_width /= 2;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $pre_height /= 2;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; // Create the temporary image to copy to&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; $img = $this-&amp;gt;imagecreatetransparent($pre_width, $pre_height);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; if ($status = imagecopyresized($img, $this-&amp;gt;tmp_image, 0, 0, 0, 0, $pre_width, $pre_height,&amp;nbsp;&amp;nbsp; $width, $height))&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Swap the new image for the old one&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagedestroy($this-&amp;gt;tmp_image);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;tmp_image = $img;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; // Set the width and height to the presize&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; $width&amp;nbsp; = $pre_width;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; $height = $pre_height;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;}&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;We can see, that in case when old size of picture is larger than new more than 2 times, this method uses imagecopyresized to resize image to 110% of target size to make imagecopyresampled faster without quality losing. It's nice decision but it's not working for PNG!&lt;br /&gt;&lt;br /&gt;To solve this problem in my project I've just copied GD.php from system/libraries/drivers/Image/GD.php to application/libraries/drivers/Image/GD.php and then removed this block from resize method.&lt;br /&gt;&lt;br /&gt;Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-1869710899926505248?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/1869710899926505248/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=1869710899926505248' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1869710899926505248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1869710899926505248'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2009/09/kohana-v234-image-resizing-transparency.html' title='Kohana v2.3.4. Image resizing. Transparency losing'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-1671480165934058163</id><published>2009-01-30T15:56:00.000+03:00</published><updated>2010-01-30T15:57:09.825+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='logo'/><title type='text'>My new logo</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Here it is:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_GC_rwyDYMnM/S2QsbSqpSNI/AAAAAAAAAVY/5bcoH1rBHXc/s1600-h/logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_GC_rwyDYMnM/S2QsbSqpSNI/AAAAAAAAAVY/5bcoH1rBHXc/s320/logo.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-1671480165934058163?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/1671480165934058163/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=1671480165934058163' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1671480165934058163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1671480165934058163'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2010/01/my-new-logo.html' title='My new logo'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GC_rwyDYMnM/S2QsbSqpSNI/AAAAAAAAAVY/5bcoH1rBHXc/s72-c/logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-2192254202074838443</id><published>2008-10-14T21:31:00.000+04:00</published><updated>2008-10-14T23:54:58.341+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='text editors'/><category scheme='http://www.blogger.com/atom/ns#' term='jEdit'/><category scheme='http://www.blogger.com/atom/ns#' term='Great development tools'/><title type='text'>jEdit. Great development tool</title><content type='html'>Hi! Today I'm going to tell you about &lt;span&gt;one of &lt;/span&gt;&lt;span style="font-style: italic;"&gt;great development tools.&lt;/span&gt;  So, let's start.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/2/27/JEdit.png/48px-JEdit.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 46px; height: 46px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/27/JEdit.png/48px-JEdit.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:180%;"&gt;j&lt;/span&gt;&lt;span style="font-size:180%;"&gt;Edit&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.jedit.org/"&gt;www.jedit.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;jEdit is a great text editor for programmers.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is free and opensource&lt;/li&gt;&lt;li&gt;It is java-based (crossplatform)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It's fast&lt;/li&gt;&lt;li&gt;Very flexible&lt;/li&gt;&lt;/ul&gt;See &lt;a href="http://www.jedit.org/index.php?page=features"&gt;feature list&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GC_rwyDYMnM/SPTg78BFu2I/AAAAAAAAAQk/vIfBYfS1zNk/s1600-h/jEdit_common.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_GC_rwyDYMnM/SPTg78BFu2I/AAAAAAAAAQk/vIfBYfS1zNk/s400/jEdit_common.png" alt="" id="BLOGGER_PHOTO_ID_5257073985375812450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;&lt;span style="font-size:130%;"&gt;Plugins&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: normal;font-size:85%;" &gt;Support of plugins is a key feature of jEdit&lt;/span&gt;&lt;/h5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GC_rwyDYMnM/SPTjJSabWGI/AAAAAAAAAQ0/1r-Oc5k5DoI/s1600-h/jEdit_plugin_manager.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_GC_rwyDYMnM/SPTjJSabWGI/AAAAAAAAAQ0/1r-Oc5k5DoI/s400/jEdit_plugin_manager.png" alt="" id="BLOGGER_PHOTO_ID_5257076413749221474" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;A lot of great &lt;/span&gt;features are available with plugins. To install plugins jEdit uses "Plugin Manager".&lt;br /&gt;&lt;br /&gt;You can install/uninstall/update plugins with it. While installing you can read short description of plugin.&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h5&gt;&lt;span style="font-size:130%;"&gt;Project Viewer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: normal;font-size:85%;" &gt;Very useful plugin to manage project&lt;/span&gt;&lt;/h5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_GC_rwyDYMnM/SPTkJZBgv0I/AAAAAAAAARE/q9jTSsB1b8o/s1600-h/jEdit_plugin_viewer.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_GC_rwyDYMnM/SPTkJZBgv0I/AAAAAAAAARE/q9jTSsB1b8o/s400/jEdit_plugin_viewer.png" alt="" id="BLOGGER_PHOTO_ID_5257077515035393858" border="0" /&gt;&lt;/a&gt; One of the greatest plugins is "Project Viewer". With this plugin you can see file tree of your project. In most cases you will need this plugin.&lt;br /&gt;&lt;br /&gt;You can have a lot of projects. And it is very useful to group them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h5&gt;&lt;span style="font-size:130%;"&gt;Docker&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal; font-style: italic;font-size:85%;" &gt;Dockes plugin window to jEdit&lt;/span&gt;&lt;/h5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GC_rwyDYMnM/SPTm6nleG9I/AAAAAAAAARU/LrPRv3iE6jE/s1600-h/jEdit_docker.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_GC_rwyDYMnM/SPTm6nleG9I/AAAAAAAAARU/LrPRv3iE6jE/s400/jEdit_docker.png" alt="" id="BLOGGER_PHOTO_ID_5257080559781157842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Commonly it's not very useful to have many windows. So this plugin makes it possible to dock window of plugins. For example, Project Viewer:&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h5&gt;&lt;span style="font-size:130%;"&gt;Sidekick&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;font-size:85%;" &gt;Displays structure of your source file&lt;/span&gt;&lt;/h5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GC_rwyDYMnM/SPTn1OKsdgI/AAAAAAAAARk/1d7qUy0lA6g/s1600-h/jEdit_sidekick.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_GC_rwyDYMnM/SPTn1OKsdgI/AAAAAAAAARk/1d7qUy0lA6g/s400/jEdit_sidekick.png" alt="" id="BLOGGER_PHOTO_ID_5257081566570247682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;The SideKick plugin provides a framework for high-level language-specific features.&lt;br /&gt;&lt;br /&gt;Currently, this includes a structure tree dockable window, commands for moving the caret and folding based on language tokens, and a basic code-completion framework.&lt;br /&gt;&lt;br /&gt;The SideKick plugin does nothing by itself; at least one plugin providing a language parser, such as the XML plugin, must be installed. Currently available parsers for: Java, PHP, Ruby&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, Python&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, Perl, C/C++, JavaScript, XML, Fortran...&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h5&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;OpenIt&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal; font-style: italic;font-size:85%;" &gt;Quick access to file of project&lt;/span&gt;&lt;/h5&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GC_rwyDYMnM/SPTvXjwc7jI/AAAAAAAAASE/GRV6UjdUtvA/s1600-h/jEdit_openit.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_GC_rwyDYMnM/SPTvXjwc7jI/AAAAAAAAASE/GRV6UjdUtvA/s400/jEdit_openit.png" alt="" id="BLOGGER_PHOTO_ID_5257089853062704690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OpenIt is my favorite plugin.  It gives you an oppotunity to instantly open any file of your project by typing first chars of name. It's extrimly fast and very useful.&lt;br /&gt;&lt;br /&gt;Has support of special symbols "*" and "?". So you can type "*controller.rb" to get all controllers of your rails project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-2192254202074838443?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/2192254202074838443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/2192254202074838443'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2008/10/jedit-great-development-tool.html' title='jEdit. Great development tool'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GC_rwyDYMnM/SPTg78BFu2I/AAAAAAAAAQk/vIfBYfS1zNk/s72-c/jEdit_common.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-8333448360513276345</id><published>2008-08-17T18:11:00.000+04:00</published><updated>2009-07-18T15:09:28.990+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Stop comparing PHP to Rails</title><content type='html'>&lt;blockquote&gt;&lt;div class="entry"&gt;     &lt;div class="snap_preview"&gt;&lt;p&gt;PHP is a language. Rails is a Ruby framework.  Comparing PHP to Rails is like comparing Perl to Django, or Haskell to Seaside, and that makes no sense. Two things that DO make sense:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Using PHP for web development. It deploys and scales great.&lt;/li&gt;&lt;li&gt;Using Ruby on Rails for web development. The framework provides an excellent set of conventions for rapid development.&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt;       &lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;text source: &lt;a href="http://jhherren.wordpress.com/2008/01/22/stop-comparing-php-to-rails/"&gt;stop-comparing-php-to-rails&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Everybody knows, that php is language and rails is framework. But when we talk about php side we mean main ways of developing with php. It is a context of this day.&lt;br /&gt;&lt;br /&gt;Fact is that rails was written on ruby. And even symphony-project can't beat it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-8333448360513276345?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8333448360513276345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8333448360513276345'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2008/08/stop-comparing-php-to-rails.html' title='Stop comparing PHP to Rails'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-8276062638909075181</id><published>2008-08-15T11:16:00.000+04:00</published><updated>2008-08-15T11:34:46.187+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='rails clone'/><title type='text'>Rails way on PHP</title><content type='html'>People love their history. That's why sometimes they try to make something like Ruby on Rails but on PHP or something else. Examples: Symphony, PHP on Rails.&lt;br /&gt;&lt;br /&gt;I think that the spirit of pioneer is very important.&lt;br /&gt;&lt;br /&gt;Ruby on Rails is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;fast;&lt;/li&gt;&lt;li&gt;flexible;&lt;/li&gt;&lt;li&gt;beautiful (i don't mean textmate or mac :-);&lt;/li&gt;&lt;li&gt;original.. as Mohamed Ali.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;and no one can beat it.&lt;br /&gt;&lt;br /&gt;PHP is good only if you want to make static html site.&lt;br /&gt;&lt;span class="m"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-8276062638909075181?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/8276062638909075181/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=8276062638909075181' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8276062638909075181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/8276062638909075181'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2008/08/rails-way-on-php.html' title='Rails way on PHP'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7534935916360937129.post-1710014542517795038</id><published>2008-08-15T10:50:00.000+04:00</published><updated>2008-08-15T11:10:01.929+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='php is dead'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP is not dead!</title><content type='html'>Sometimes it seems like Ruby on Rails is so cool. It is. But in some ways PHP is better. In small projects, where price of hosting is important.&lt;br /&gt;&lt;br /&gt;Hmm. But at hostingrails dot com we can buy rails for only $3.59 / month.&lt;br /&gt;&lt;br /&gt;F*ck. PHP is dead!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7534935916360937129-1710014542517795038?l=www.rogerwilco.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.rogerwilco.ru/feeds/1710014542517795038/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7534935916360937129&amp;postID=1710014542517795038' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1710014542517795038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7534935916360937129/posts/default/1710014542517795038'/><link rel='alternate' type='text/html' href='http://www.rogerwilco.ru/2008/08/php-is-not-dead.html' title='PHP is not dead!'/><author><name>Sergei Udalov</name><uri>https://profiles.google.com/111385910029480216808</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JGMC_QNoo6s/AAAAAAAAAAI/AAAAAAAAAgM/IPoBAc86jY4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
