$ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
149 cd
76 l
28 git
25 rake
18 airstream
17 script/server
17 ls
16 sudo
13 sshm
12 vim
Vim так мало в связи с очередной попыткой полностью перейти на gedit.
Белорусский <strike>чинуша</strike> большой папан из минобразования - Николай Листопад - транжирит деньги налогоплательщиков.
Разбирал на выходных свой макбук с целью заменить дерьмовый Wi-Fi адаптер… 
Все винтики, на которых крепится панель с клавиатурай оказались разной длинны и ширины. Было очень забавно искать что и куда вкрутить :)
Карточка от Dell оказалась еще более шильной. Буду брать вот эту.

PS: Фотать мобилой определённо круто :)
Теперь версии миграций базируются на более уникальной временной схеме:
script/generate migration add_state_column
exists db/migrate
create db/migrate/20080407000142_add_state_column.rb
Такая схема снижает вероятность создания миграций с одинаковыми номерами в разных ветках разработки (и увеличивает количество телодвижений для отката к конкретной миграции в прошлом.. :)
Дэвид Ален в Getting Things Done определил алгоритм перевода “Разного” в список задач, которые, при соблюдении других правил, должны привести к результату в виде сделанного дела :)
Разбор разного - задача с высоким уровнем неопределенности и может занимать от минут до нескольких лет. Кстати… Если на принятие решения уходит 2 минуты вместо 2 секунд - эффективность понижается в 60 раз.
Зависшее “разное” постоянно отвлекает от конкретных действий и повышает тревожность. Поэтому лучше отсортировать все “висяки” до начала работы :) Схема Дэвида Алена в полной версии. А вы как боретесь с хаосом?
В Edge Rails появилась возможность определять именованые условия-фильтры для поиска:
class User < ActiveRecord::Base
named_scope :active, :conditions => {:active => true}
named_scope :inactive, :conditions => {:active => false}
named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago] } }
end
Стандартное использоваине:
User.active
# = User.find(:all, :conditions => {:active => true})
User.inactive
# = User.find(:all, :conditions => {:active => false})
User.recent
# = User.find(:all, :conditions => ['created_at > ?', 1.week.ago])
К тому-же эти методы умеют гнездится:
User.active.recent
делает то-же, что
# User.with_scope(:conditions => {:active => true}) do
# User.find(:all, :conditions => ['created_at > ?', 1.week.ago])
# end
а именно: находит всех активных пользователей зарегистрированных на прошлой неделе.
Чтобы воспользоваться этой функциональностью нужно иметь последние рельсы в vendor.
rake rails:freeze:edge
Сейчас можно проверить был ли модифицирован объект (ActiveRecord) и что именно было модифицировано.
article = Article.find(:first)
article.changed? #=> false
Отслеживать изменение отдельных атрибутов:
# attr_name_changed? accessor
article.title
#=> "Заголовок"
article.title = "Новый заголовок"
article.title_changed?
#=> true
Получить старое значение атрибута:
# attr_name_was accessor
article.title_was
#=> "Заголовок"
Получить старое и новое значения:
# attr_name_change accessor
article.title_change
#=> ["Заголовок", "Новый заголовок"]
Получить массив измененных атрибутов:
article.changed #=> ['title']
Получить хэш изменений:
article.changes
#=> { 'title' => ["Заголовок", "Новый заголовок"] }
Вот как ведет себя объект:
article.changed?
#=> true
article.save
#=> true
article.changed?
#=> false
Однако если вы модифицируете значение атрибута вне attribute=(), вам придется предупредить об этом модель:
article = Article.find(:first)
article.title_will_change!
article.title.upcase!
article.title_change #=> ['Title', 'TITLE']
Мой блог добавили к планете на рельсах.
Приветствую всех читателей :)
Ryan постоянно пишет о новом в Ruby on Rails.
А я вот решил заморочится переводами :)
Что же нового в Rails?
post = Post.find(:first)
post.title
#=> "OOXML - банановый стандарт для плохих документов"
post.rating
#=> 4329
# Изменяем всего один аттрибут модели
article.title = "Хуёвый стандарт для хуёвых документов"
# И только обновленный пойдет в базу
article.save
#=> "UPDATE articles SET title =
'Хуёвый стандарт для хуёвых документов' WHERE id = 1"
Чудесно, не правда ли? Если кто-то не в курсе, раньше ActiveRecord апдейтал все атрибуты модели не смотря на то, что изменились только некоторые.
Чтобы включить эту фичу глобально нужно добавить в config/initializer вот это:
ActiveRecord::Base.partial_updates = true