Clear View — великолепная тема для PhpMyAdmin
Илья • 30 января 2007 г.
Я испробовал множество различных программ для работы с базами данных MySQL и всегда возвращался к майадмину. В нём есть всё что нужно, он вполне удобен и работает без косяков.
Хотя у него и есть один недостаточек — интерфейс. Страшный, перегруженный тучей кнопочек и раскрашенный как мусорный бак в подворотне уродливый лейаут. По крайней мере так было, пока Александр Шабуневич не создал совершенно прекрасную тему для него — Clear View.
Супер! Всё прекрасно, хотя и не идеально конечно. Например вот этот вот ряд кнопочек портит весь вид:

Но всё равно проделана очень хорошая работа. Большое спасибо Александр!
Используем символ как Proc
Илья • 29 января 2007 г.
Просто замечательный пример элегантности Руби:
Вместо:@people.collect{|human| human.name }
Делаем так:
@people.collect(&:name)
Dave Thomas подробно описал как это работает.
Rails + Apple = ♡
Илья • 29 января 2007 г.
По нашим тщательным подсчётам, около 90% из 550 людей, бывших на RailsConf 2006 используют ноутбуки Apple.
Update: прошу прощения за опечатку.
Mosquito — автоматическое тестирование дизайна
Илья • 29 января 2007 г.
Наткнулся на интересную библиотеку на руби для автоматического тестирования дизайна. Называется Mosquito.
Идея простая: заставить скрипт пробежаться по нужным страницам сайта, потыкать куда надо и нафотать кучу скриншотов, чтобы девелопер потом спокойненько запустил слайдшоу просмотрел не съехало ли где чего-нибудь и отображается ли всё так, как было задумано.
Конечно для того чтобы всё это работало вам должно быть не лень писать вполне простой скрипт, как вот этот:
require 'mosquito'
mosquito_run([
open_and_shoot("http://yahoo.com/", "img/yahoo_main.png"),
type("p", "Mosquito"),
click("searchsubmit"),
shoot("img/mosquito_search.png")
])
В итоге, как я уже говорил, получится несколько обычных скриншотов.
Одна из самых интересных возможностей москита это отображение разницы между скриншотами. Если вдруг что-то съехало или появился какой-то новый элемент, то москит выделит это изменение на скриншоте приятным жёлтым свечением.
В данный момент, москит работает только под Мак ОС и использует только движок WebKit (читай Safari) для рендеринга страниц. Однако, по заверению создателя москита, в ближайшем времени появится поддержка фаерфокса и напишется версия под винду. Так что одним скриптиком можно будет пофотать сайт из под всех браузеров, а потом спокойненько сравнить получившиеся скриншоты. Удобно? Несомненно.
Кстати, создал москита наш русский программер Михаил Айзацкий, живущий в Питере :)
Update: извините за опечатку :)
Виджет: RegexWidget
Илья • 28 января 2007 г.
Если вы используете Мак ОС и часто пишете регэкспы, то RegexWidget — виджет для тестирования регэкспов вам очень понравится!
Ловим exception внутри выражений
Илья • 28 января 2007 г.
Век живи, век учись.
Не так:if @user.name
@user.name.capitalize
else
"name not set"
end
И не так:
@user.name? ? @user.name.capitalize : "name not set"
И даже не так:
begin
@user.name.capitalize
rescue
"name not set"
end
А вот так:
@user.name.capitalize rescue "name not set"
Красота…
Update: Привёл немного не подходящий пример в прошлый раз: @user.name обычно не возвращает исключение, поэтому этот метод тут не поможет.
Another update: На самом деле этот хак не стоит воспринимать слишком серьёзно. Есть большая вероятность того, что вы не поймаете какое-нибудь действительно важное исключение, которого вы не ожидали.
Что окончательно устарело в Rails
Илья • 27 января 2007 г.
Rails очень быстро меняется. Не успеваешь закончить писать приложение, как оно уже устарело :) Хочу написать несколько очевидных маленьких штуковин, которые уже достаточно давно устарели, но не смотря ни на что, всё равно продолжают использоваться программерами.
Во-первых, следующие переменные давно уже нужно использовать как методы, то есть без знака @:
Было:@request, @response, @session, @headers, @template, @cookies и @flash
request, response, session, headers, template, cookies и flash
ActionController:
expire_matched_fragments() → expire_fragment()
keep_flash() → flash.keep()
redirect_to_path() → redirect_to(path)
redirect_to_url() → redirect_to(url)
ActionView:
@content_for_layout → yield
@content_for_some_fragment → yield :some_fragment
link_image_to() → link_to(image_tag())
link_to 'Bla bla', :post => true → link_to "Bla bla", :method => "post"
render_partial → render :partial
render_partial_collection → render :partial => 'bla', :collection => @b
human_size() → number_to_human_size()
start_form_tag(); end_form_tag() → form_tag :action => "bla" do
text_field 'bla', 'bla'
end
ActiveRecord:
:dependent => true → :dependent => :destroy
:exclusively_dependent => true → :dependent => :delete_all
find_all() → find :all
find_first() → find :first
Update: Александр Сенько напомнил, что:
Вызывать следующие методы в вашем контроллере больше не нужно, рельсы теперь делают это автоматом:model; service; observer; depend_on; dependencies_on
Ничего не забыл?
Наблюдаем за ActiveRecord
Илья • 26 января 2007 г.
Небольшая, но приятная находка, которая позволяет следить за тем что делает ActiveRecord прямо из script/console.
$ script/console
>> ActiveRecord::Base.logger = Logger.new(STDOUT)
=> #<Logger:0x2814134 ...>
>> user = User.find :first
User Load (0.000346) SELECT * FROM users LIMIT 1
=> #<User:0x2665478 ...>
По-поему очень удобно.
Именные роуты
Илья • 26 января 2007 г.
Пожалуйста не забывайте, что существует такая прекрасная штуковина как именные роуты. Поэтому, в частности, не нужно каждый раз городить штуки, на подобии этой вот:
link_to "Vasya Pupkin", :controller => "users", :action => "show", :id => user
Особенно не приятно, когда такая длиннющая конструкция встречается в проекте много раз. В этой ситуации нас выручат именные роуты. И вот как они работают в двух словах:
В config/routes.rb создаём новое правило:map.user "users/:id", :controller => "users", :action => "show"
Заметьте, что вместо привычного map.connect, я использовал map.user. А это значит, что теперь в любом уголке своего приложения я могу использовать метод user_url(user), который вернёт мне :controller => ‘users’, :action => ‘show’, :id => user.id.
Теперь переписываем нашу ссылку, для использования с новеньким именным роутом:
link_to "Vasya Pupkin", user_url(@user)
Не правдо ли так гораздо чище и быстрее?
А теперь, перед тем как создать два десятка красивеньких именных роутов и избавиться от трёхэтажных link_to, посмотрите что ещё можно сделать.
Это работает не только с роутами, но и с любыми методами, которые принимают в виде аргументов хеш (сейчас это жутко модно). Если у нас подряд идёт вызов нескольких методов и в них передаются почти одинаковые хеши, то мы можем их объеденить при помощи метода #with_options. Вот, например, три обычных именных роута:
map.users "/users", :controller => "users", :action => "list"
map.user "/users/:id", :controller => "users", :action => "show"
map.deadsouls "/users/deads", :controller => "users", :action => "dead"
Как видите, все они ссылаются на один и тот же контроллер — users. Получается не очень DRY (Dont Repeat Yourself). Тут то и приходит на помощь прекрасный #with_options:
map.with_options :controller => "users" do |users|
users.users "/users", :action => "list"
users.user "/users/:id", :action => "show"
users.deadsouls "/users/deads", :action => "deads"
end
Теперь кусок :controller => “users” передаётся во все роуты, хотя написали мы его только один раз.
Заметка написана по мотивам блога великолепного Jamis Buck.
Firefox 3 порадует маководов
Илья • 24 января 2007 г.
Очень порадовала новость, о том что Firefox 3 будет использовать стандартный эппловский фреймворк Cocoa, в частности для отрисовки своего интерфейса и рендеринга шрифтов. Это очень хорошая новость, потому что сейчас на фаерфокс просто невозможно смотреть на маке! Это какой-то ужас несусветный — весь текст будто изгрызен плотоядными червями-убийцами.
Только что скачал первую альфу третьего фаерфокса, чтобы проверить как у них успехи. Шрифт выглядит во-много раз лучше, но всё же не так хорошо как в Сафари. Какой-то более размытый. Уж не знаю почему.
iBank для Mac OS X
Дима • 24 января 2007 г.
Отличная программулина для управления финансами семьи и малого бизнеса. По скольку я занимаюсь бизнесом, я долго искал софтину которая позволила бы снять с себя груз не учтенных трат и предстоящих расходов, и взять под контроль денежные потоки. После долгих месяцев поиска, я нашёл то – что нужно.
iBank. Рекоммендую всем. Хороший интерфейс, большие возможности. Удобно. Пару дней уходит на понимание философии программы, но потом всё становится ясно и понимаешь удобство. Есть возможность импортировать выписки со счетов в банке.
|
|
|
| Главное окно | Диаграммы | Прогресс выполнения бюджета |
|---|
Незаменимый инструмент для всех кто пытается привести свою финансовую жизнь в порядок после покупки очередного Мака :-)
Стоит всё удовольствие $39.99, есть триал на 30 дней.
Свернул себе шею
Дима • 24 января 2007 г.
Вот, выполнил тут один акробатический трюк…

Говорят жить буду :-)
Captchator
Илья • 17 января 2007 г.
Captchator (captcha generator) это онлайн-сервис, готовый бесплатно генерировать для вашего приложения CAPTCHA изображения (изображения с буквами/цифрами для отделения людей от компьютеров). Очень быстро и просто.
Apple-style search field in non-Safari browsers
Илья • 15 января 2007 г.
К сожалению не все могут наслаждаться прекрасными интерфейсами Apple. Приходится принуждать ;}
На сайте BrandSpankingNew описана прикольная техника, позволяющая при помощи JavaScript и CSS отображать поле поиска так, как это делает любая программа в Мак ОС. Пользователи Firefox и IE, взгляните пожалуйста направо на нашу форму поиска. Мы как раз используем эту технику.
Конечно это всего лишь внешний вид и пользователи

Классный виджет - CharacterPal
Илья • 15 января 2007 г.

Нашёлся тут прекрасный виджет для дашборда — CharacterPal называется. Ну очень удобная штуковина, когда необходимо вставить какой-нибудь специсимвол в html файл. Ну например: © ® ¡ § • « » “ ” и прочие. Достаточно просто кликнуть и код символа уже у тебя в клипборде.
Хочу так же подметить, что CharacterPal может выдавать не только html коды символов, но и сочетания клавиш, которые необходимо нажать на клаве, чтобы напечатать символ в любом другом месте в макос. Ну например Option + 9 это буллит.





