Rdoc in osx Dictionary
Буду краток
$ sudo gem install rdoc_osx_dictionary
Дарит счастье всем руби-программерам работающим под OSX

Dashboard KickStart
Наверняка вы уже сталкивались с такой проблемой, что Dashboard при первом запуске не очень спешит загружаться. С такой же проблемой столкнулся и я, но благодаря одному из коллег решение было найдено - Dashboard kickstart. Небольшая утилита, "дающая пинка" Dashboard'у при первой загрузку
Очень рекомендую к использованию для сохранения нервных клеток, которые тратятся в ожидании завершения загрузки всех виджетов
Language switcher
Еще одна полезная в хозяйстве тулза - Language Switcher.

Как вы наверно знаете - запустить любую программу на Snow Leopard на любом языке, отличном от системного (или языка по умолчанию в программе) - прямой возможности нет. С помощью этой утилиты вы можете больше не думать об этом ограничении и запускать любую программу на любом языке
Cucumber + environment variables
В продолжение моего поста по поводу установки переменных окружения в тестовых сценариях - недавно столкнулся с необходимостью установки своих переменных окружения при использовании Cucumber + Webrat. Решается это элементарно - прописываем в *steps.rb файле
header('HTTP_ACCEPT_LANGUAGE', 'en')
Аналогично можно тестировать и использование https - есть очень хороший пример тут.
Rails I18n – презентация
Неплохая и самое главное познавательная презентация.
Примеры rails-приложений
Решил составить список open-source приложений на Rails, который как я надеюсь поможет начинающим (и не очень начинающим) программистам в написании красивого и функционального кода.
Redmine - система управления проектами
TeamBox - еще одна система для проджект-менеджмента, twitter-like
Video App - аналог YouTube на Rails
GemCutter - репозитарий gem'ов
CommunityEngine - Социальная сеть
LovdByLess - и еще одна социальная сеть
RailsCasts - ну кто не знает Ryan Bates и его RailsCast-ы? Это - исходники его блогового движка
Tracks - система GTD, управление задачами
Retrospectiva - снова проджект-менеджмент
Restful Authentication Tutorial - отличный туториал по реализации системы аутентификации, recaptcha, логгирование неудачных попытов аутентификации и многое другое
Shapado - аналог stackoverflow.net с использованием MongoMapper (thx 2 undr)
Open Source Rails - много различных приложений (thx 2 Alexey Osipenko)
Если у вас есть чем поделиться - присылайте, буду обновлять список
Еще немного софта для вашего яблочного друга
Продолжаем наш софт-обзор
Speed Download
Некоторое время назад я писал про Folx, download manager для osx. Честно говоря - разочаровался я в этой программе и в качестве альтернативы выбрал Speed Download, отличающийся от вышеупомянутого Folx более стабильной работой и удобством использования. Кстати, Folx перестал быть бесплатным продуктом теперь имеет цену в $20 (сейчас у авторов скидки в 50% - так что можете приобрести программу за $10
)
А пока что встречаем Speed Download.
Power Tunes
Следующая программа поможет вам организовать работу с вашими iTunes-библиотеками. Удаляет ссылки на удаленные треки, позволяет синхронизировать библиотеки между компьютером и внешним жестким диском итд.

RipIt
Ну тут вообще все просто - риппер dvd-дисков ![]()

Switch Audio Converter
Опять же без лишних слов - конвертер аудио-файлов.
На вход принимает форматы
.wav (PCM)
.mp3 (MPEG Layer 3)
.au
.aif/aiff
.gsm
.dct
.vox
.raw
.ogg
.flac
.amr
.wma*
.wmv*
.aac*(not aacPlus)
.m4a*
.act/rcd (newer version of format not supported)
.mov
и может конвертировать в
.wav (PCM, and others, see here)
.mp3
.au
.aif/aiff
.gsm
.vox
.raw
.ogg
.flac
.rss
.m3u^
.pls^
.wpl
.mov
Today
Интерфейс к iCal без необходимости запуска оного
К минусам можно отнести то, что если ваш iCal сонхронизируется с календарями google, то для отправки добавленных событий необходимо запускать iCal, а также в такие календари нельзя добавить задачи. Я связался с автором - он обещал рассмотреть возможность исправления данных проблем ![]()

WriteRoom
Иногда необходимо сосредоточиться на написании какого-нибудь документа, а вас постоянно отвлекают сообщения в мессенджере, какие-нибудь всплывающие окна итд. Эта программа превращает ваш мак в печатающую машинку и пока вы работаете - вас ничего не отвлечет
Кстати - недавно на macheist лицензия на эту программу раздавалась совершенно бесплатно
Успели получить?

1password, Opera & Google Chrome
Как вы наверно уже в курсе - есть ряд сложностей для разработки плагинов, позволяющих использовать 1password в браузерах Opera и Google Chrome. Точнее - невозможно было до настоящего времени. Продвинутые гики из Switcher's Blog написали познавательную статью как обойти это ограничение. Вэлкам
PS: кстати - работы над плагином для хрома ведутся в полную силу, как сообщают те же авторы.
Mac soft
Давно я не писал обзоров про полезный софт под Mac, пришло время исправить это упущение. Вкратце пробегусь по интересным программам, с которыми я столкнулся в последнее время.
Bento.
Несложная и в то же время удобная в использовании База Данных. Успешно дополняет пакет iWorks, в котором к сожалению отсутствует альтернатива MS Access.

CleanApp
Мощная утилита для удаления мусора с жесткого диска вашего мака. Среди функционала
- Корректное удаление установленных программ (вычищает лишний мусор, оставленный приложениями)
- Поиск неиспользуемых и редко используемых файлов
- Диаграмма использования жесткого диска
- И отдельным пунктом - многое другое

После всех аналогов я решил остановиться именно на этой утилите.
CopyPaste Pro
Простой и в то же время очень функциональный расширитель клипборда.

Little Snitch
Самый удобный в использовании Firewall для мака. Подходит всем пользователям, кто не склонен к излишнему минимализму и не предпочитает как firewall-решение что-нибудь типа iptables, ipchains итд
)

I18n
С помощью этого куска кода можно обеспечить удобную работу с локалями в rails-приложении.
Custom HAML filters
На днях сделал набор кастомных HAML-фильтров, которые заменяют ссылки на youtube, vimeo, rutube, daylymotion на соответствующие видео. Использовать просто - ставим плагин, а дальше используем фильтры cbtextile, cbmarkdown или cbmaruku как обычные HAML-фильтры.
Google Chrome
Вышел Google Chrome для OSX и Linux.
Сегодня получил от google team письмо с несколькими фактами по этому вопросу
Here are a few fun facts from us on the Google Chrome for Mac team:
73,804 lines of Mac-specific code written
29 developer builds
1,177 Mac-specific bugs fixed
12 external committers and bug editors to the Google Chrome for Mac code base, 48 external code contributors
64 Mac Minis doing continuous builds and tests
8,760 cups of soft drinks and coffee consumed
4,380 frosted mini-wheats eaten
JQuery plugins. part 2
Еще немного плагинов для JQuery и туториалов по их ипользованию
JQzoom - "лупа" для картинок.
prettySociable - еще один достаточно интересный аналог addthis-ов
JQuery powered tag cloud - ну это в пояснении не требуется ![]()
Apple-like search suggestion - урок как сделать красивое выпадающее меню для search-бокса
jquery tabbed interface - очень красивая навигация
digg-style signup form
twitter-like follow/unfollow
jQuery Thumbnail with Zooming Image and Fading Caption Tutorial
Making A Cool Login System With PHP, MySQL & jQuery
Dynamic Drag’n Drop With jQuery And PHP
memtest on osx
Пару дней назад я поставил дополнительную память на свой макбук и встал вопрос с ее тестированием. Для тех, кому это необходимо - можно пройти по ссылке и скачать соответствующую утилиту. Также можно воспользоваться утилитой Rember.
SSO на Rails с использованием Authlogic
Вопрос SSO для многих актуален, различных решений великое множество (OpenId, Oauth, CAS итд.), но иногда хочется сделать все по своему. Давайте попробуем написать свой SSO для наших сайтов?
Давайте для начала определим, что нам необходимо сделать:
1. Разработать центральный сервис аутентификации
2. Разработать сайт, который будет использовать SSO
2. Обеспечить доступность идентификатора сессии в рамках всех наших сайтов
3. Обеспечить доступность сессионных данных
4. Обеспечить доступность пользовательских данных
Давайте приступим к процессу разработки.
1. Первым делом нам необходимо реализовать сам сервис аутентификации. Про это уже много написано, например ознакомиться можно в соответствующем railscast или asciicast.
2. Думаю тут я могу обойтись без лишних комментариев, единственное что вам необходимо селать - это включить authlogic, создать модели User и UserSession:
class User < ActiveRecord::Base
establish_connection "auth_#{RAILS_ENV}"
acts_as_authentic
end
(на строку establish_connection пока не обращаем внимания - мы к ней еще подойдем
)
class UserSession < Authlogic::Session::Base
end
(обратите внимание на сложность данного класса
)
а также дополним ApplicationController базовым набором методов
private
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
def require_user
unless current_user
store_location
flash[:notice] = I18n.t(:"notices.require_logged_in")
redirect_to login_url
return false
end
end
def require_no_user
if current_user
store_location
flash[:notice] = I18n.t(:"notices.require_logged_out")
redirect_to dashboard_url
return false
end
end
# Store the URI of the current request in the session.
#
# We can return to this location by calling #redirect_back_or_default.
def store_location
session[:return_to] = request.request_uri
end
# Redirect to the URI stored by the most recent store_location call or
# to the passed default. Set an appropriately modified
# after_filter :store_location,
nly => [:index, :new, :show, :edit]
# for any controller you want to be bounce-backable.
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
2. Идентификатор сессии будем хранить в cookies. Для того, чтобы он был доступен для всех сайтов на домене *.example.com (auth.example.com, site1.exampe.com итд) нам по идее достаточно просто написать
ActionController::Base.session = {
:domain => ".example.org"
}
но знающие люди рекомендуют такой вот замечательный gist. Сохраняем его как файл
session_domain.rb в conf/initializers/, а также вносим небольшие изменения в session_store.rb:
ActionController::Base.session = {
:key => '_example_session',
:secret => 'oursupersecretkey'
}
Самое время перейти к следующему пункту
3. Не закрывая session_store.rb продолжаем вносить в него изменения:
ActionController::Base.session_store = :active_record_store
Для сайтов, которые будут использовать интерфейс SSO (а также если вы захотите вынести хранилище сессий в отдельную БД) порписываем в этом же файле
# Use sessions from preconfigured session store
ActiveRecord::SessionStore::Session.establish_connection("sessions_#{RAILS_ENV}")
а в файле database.yml:
# Sessions stores
sessions_development:
adapter: sqlite3
database: ../auth/db/development.sqlite3
pool: 5
timeout: 5000
sessions_test:
adapter: sqlite3
database: ../auth/db/test.sqlite3
pool: 5
timeout: 5000
sessions_production:
adapter: sqlite3
database: ../auth/db/production.sqlite3
pool: 5
timeout: 5000
4. Помните пару абзацев назад я просил не обращать внимания на строчку кода? Самое время к ней вернуться. Класс User будет использовать соединение с БД нашего сервиса аутентификации для получения информации о текущем пользователе. Обновим данные в database.yml:
auth_development:
adapter: sqlite3
database: ../auth/db/development.sqlite3
pool: 5
timeout: 5000
auth_test:
adapter: sqlite3
database: ../auth/db/test.sqlite3
pool: 5
timeout: 5000
auth_production:
adapter: sqlite3
database: ../auth/db/production.sqlite3
pool: 5
timeout: 5000
Вот в принципе и все
Не сложно, правда? Теперь на site1.example.com мы спокойно сможем работать с current_user и пользовательской сессией.
PS: Возможно решение не идеальное, но с удовольствием рассмотрю все ваши рекомендации по его оптимизации


