Monday, August 18, 2008

Добавление google translate к TextMate

ставим 

sudo gem install google_translate

Добавляем следующую комманду для всех типов фаилов. Результат - tooltip, Источник - selected text or word. Сначала смотрим если слово уже искалось, если нет - идем в гугл.

#!/usr/bin/env ruby
require 'rubygems'
require 'google_translate'
dict = "~/dict"
space=" - "
text= STDIN.read
local_trans = `cat #{dict} | grep '#{text.strip}#{space}'`
if(local_trans.empty?())
trans = Google::Translate.new().translate(:from => "en", :to => "ru", :text =>text)
`echo '#{[text,space,trans].join}' >> ~/dict`
puts(trans)
else
puts("local:"+local_trans.split("-").last.strip)
end

горячую клавишу я повесил на CMD+J (было свободно)
работает очень бысто (менее секунды на поиск, если локально - тогда мгновенно)

Wednesday, August 13, 2008

Надеюсь не все блоггеры заразились твиттером

Не слишком уже актуально, но надеюсь у меня до этого не дойдет. кстати вот мой твиттер аккаунт 

Tuesday, August 12, 2008

Лекарство от регулярно падающего mongrel

При развертывании любого RoR проекта приходиться иметь дело с mongrel, а в случае серьезного проекта и с mongrel cluster. Как извесно, mongrel вещь сильно глюканутая: немногопоточная, часто память течет. В следствии этого появилась идея объединить несколько экземпляров в один кластер и привизать его к балансировщику nginx/apache. После этого жить стало лучше, но и кластер склонен к падению (в зависимости от типа запросов, монгрил может осилить от 500 до 1000 запросов, а потом утекает память или еще что случается), следовательно дела все равно плохо. Проблема заключается в том чтобы не доводить никого до плачевного состояния и последовательно рестартить по одному экземпляру за раз. 

Решение: каждые экземпляр рестартим раз в 10 минут, в случае с сервером работающем под высокой нагрузкой рекомендую каждые 5 минут. Кроме всего прочего скрипт живет в виде демона, которого не сложно положить в автостарт.

#!/usr/bin/ruby

pid = fork do
  cluster_size = `echo $CLUSTER_SIZE`.to_i
  life_time = 600 #10 mins
  span = life_time.to_f / cluster_size
  intance = 0 # mongrel id
  loop do
    mongrel_id = 3000+intance
    `mongrel_rails stop --pid log/mongrel.#{mongrel_id}.pid `
    sleep 10
    `mongrel_rails start -d -p #{mongrel_id} --pid log/mongrel.#{mongrel_id}.pid`
    intance+=1
    intance=0 if intance == cluster_size
    sleep span.to_i
  end
end
puts pid
Process.detach(pid)

Monday, August 11, 2008

Кормим мак памятью

Недавно решил расширить оперативу своему макбуку. все оказалось довольно просто:
купил 2 пляшки по 1 Gb (DDR2 SDRAM 667MHz) по 850руб за шт. и обычную отвертку.
После 10 минут танцев с бубнами рельсовые приложения заработали на 10-15% быстрее. 
Для тех кому интересно как заменить память в макбуке смотрим ролик

Где поесть 2.0

Сегодня нашел интересный стартап посвященный поиску мест, куда можно сходить вечером. Оказался на удивление полезным: отлично ищет рядом с нужным адресом, простой удобный интерфейс, не перегруженный деталями, фильтрация результатов.
Сразу смог найти пару новых для меня китайских ресторанов.  Из минусов можно отметить только отсутствие отзывов у многих заведений. Еще работает только для Питера - других городов я не нашел, видимо переключаются секретным образом.

Кстати первый пример правильного использования tag cloud (обычно им забита половина экрана, а толку никакого - пример rutube.ru)

В заключение хочу отметить что в отличии от web 0.0 проектов ( spb.menu.ru, allcafe.info и пр) им удобно пользоваться. По крайней мере у меня ушло 3 минуты на подбор места на вечер, а не 45 минут.

П.С. Судя по всему написан на Ruby On Rails - урлы уж больно очень красивые, настоящий RESTful