Спасибо, я знаю про плагин, поэтому и написал «из коробки», вообще логично было бы включить эту функциональность в Rails.
> Но вообще говоря, в рельсах есть штуки, на которые люди, умеющие готовить sql, смотрят с презрением.
Ну такие штуки есть в любом ORM, именно поэтому надо понимать как конкретный ORM работает и какие запросы он генерирует за кадром, иначе такой фигни можно понаписать…
А вообще Active Record в Rails очень прилично реализован, ему бы ещё поддержку DISTINCT получше сделать и вообще шикарно будет :-)
В файле модели user.rb нужно (между class и end) написать has_many :posts, :dependent => :destroy, а у поста — наоборот belongs_to :user.
Теперь если мы удалим юзера, удалятся все его посты (dependent можно не указывать, тогда не удалятся)
Управление ссылочной целостностью данных на уровне приложения — это не та вещь, которой стоит гордиться… А вот задать нормальные foreign keys на уровне БД в Rails, к сожалению, до сих пор довольно сложно, если не использовать raw SQL под конкретную СУБД, особенно «из коробки».
> NHibernate — это ActiveRecord из Rails, сделанный будто бы лет 20 назад.
Это фактическая ошибка. NHibernate реализует сложный набор паттернов: Data Mapper, Identity Map, Unit of Work.
ActiveRecord в свою очередь реализует паттерн Active Record, который является одним из самых простых вариантов реализации ORM, и даже нарушает SRP (принцип единственной ответственности) для сохранения максимальной простоты.
И хоть я сам сейчас программирую преимущественно на Ruby, мне кажется, не очень этично глумиться над людьми, которые в силу специфики своих проектов вынуждены использовать более сложное решение на основе Data Mapper, а не простенькое на основе Active Record.
P.S. На всякий случай упомяну, что паттерн Active Record реализован для всех популярных языков, а не только для Ruby.
Так что принципиальные отличия в паттернах «Data Mapper vs Active Record», а не в Rails. Одно из ключевых отличий состоит в том, что Data Mapper создаёт объекты на основе произвольного набора данных из базы данных, а Active Record на основе одной единственной таблицы в базе данных.
P.P.S. Миграции к ORM вообще никакого отношения не имеют, они относятся к вопросу создания и редактирования схемы базы данных, а не к вопросу преобразования отношений в объекты.
Согласен, inherited_resources — это вещь в стиле «как сделать простые вещи сложными». Если в проекте много однотипных простеньких контроллеров, то в разы лучше будет создать обычный базовый класс контроллера с минимумом магии и метапрограммирования, который идеально подойдёт под потребности конкретного проекта.
А использовать inherited_resources для нетривиальных контроллеров == снижать читабельность кода в разы.
Да всё кроме IxD (проектирования взаимодействия) и миссии сайта — «борьба с симптомами».
На SEO пользователям глубоко наплевать, а когда эта оптимизация агрессивна, то она идёт только во вред пользователям.
«приятный дизайн» — это субъективизм.
«правильная типографика» в вебе — это только для особо эстетствующих маргиналов, большинству пользователей плевать на типографику, а от выносок многих вообще подташнивает.
«удобная навигация» — это верхушка айсберга IxD, скажу только что одной только «удобной» мало.
Да какой эффект не используй, получить больше энергии, чем пользователь затратил на нажимание кнопки, невозможно.
Вы физику только в школе проходили что-ли? В природе есть масса источников энергии, помимо механической.
Дело в том, что Вы вообще неправильно считаете, не важно какую работу Вы совершили, важно какое напряжение в итоге этой работы можно получить на вход дальнейшей схемы преобразователя питания. Вот тут и вступают в действие немеханические эффекты.
К примеру, Вы хотя бы бытовую пьезозажигалку когда-нибудь видели? Она выдаёт искру, пробивающую воздушный зазор, шириной примерно 3 мм. Т.е. выдаёт напряжение не менее 3 кВ. При этом усилие нажатия клавиши примерно 20-30 H, а ход клавиши до получения первой искры не более 5 мм. Т.е. если взять такой же самый дешёвый пьезоэлемент и посчитать для него выдаваемое электрическое напряжение при 1 Н и 5 мм, то получается не менее 100 Вольт. Так что «если непрерывно стучать со скоростью 200 нажатий/минуту», то можно вполне неплохой источник питания замутить.
Речь-то не о коммерсанте, а о профессиональном трейдере или инвесторе, а такие люди, как правило, не продают долю в компании, если ожидают роста её оценочной стоимости. А тут получается, что либо он сам не верит в успех своего начинания и старается распродать компанию ещё до запуска проекта, либо он — скальпер и с помощью сторонних инвесторов уменьшает свои риски.
Я уж молчу о том, что вы боретесь с симптомом, а не причиной низкой конверсии.
Одна из базовых аксиом сети Интернет гласит, что если сайт полезен и/или интересен пользователям, то их не остановит ничто, ни сложнейшая процедура регистрации, ни доступ по приглашениям, ни капча, в которой с первого раза не разобраться. А уж упрощённая регистрация (email/пароль, OpenID, OmniAuth) может отпугнуть сколь-либо существенное кол-во заинтересованных пользователей, только в случае если ваш сайт — совсем полный трэш. Хотя и это не так, потому что их отпугнёт отнюдь не регистрация как таковая, а тот факт, что сайт фиговый.
99% означает «все за редким исключением особо принципиальных апологетов отказа от регистрации».
Если найдёте хотя бы пару тысяч пользователей, которые провели в интернете более 1000 часов и не завели ни одного аккаунта с помощью явной процедуры регистрации, то я пересмотрю свою оценку.
А вот для «профессионал высокого уровня в области биржевой торговли» 20$ это карманные деньги
Мне, кстати, тоже этот момент показался весьма странным. Профессиональный трейдер высокого уровня вряд ли может нуждаться в 20k$ сторонних инвестиций. Похоже, пользователям проекта «Follow my strategy» придётся быть крайне осторожными, чтобы не слить свои депозиты.
Понятно, изначальный посыл — полностью ошибочный. 99% активных пользователей интернета уже давным давно привыкли к различным вариациям регистрации — обычная, OpenID, OmniAuth (через соц.сервисы и прочее).
Поэтому если пользователя сайт привлёк в плане многоразового использования, то он зарегистрируется сам в явной форме без всяких проблем.
А если ему надо провести с помощью сайта разовое действие, а такая возможность тоже должна быть, то ему не надо регистрироваться никак, ни явно, ни в виде удлинённых сессий. Наоборот, все данные должны удаляться из сессии как только действие завершено. Например, после оформления заказа необходимо удалять id заказа из сессии и высылать пользователю ссылку с токеном для доступа к странице с информацией о заказе, а не продлевать сессию на месяцы.
Домашние — это ещё ладно… А вот реально разделяемые компы в ВУЗах, школах, интернет-кафе и ещё в куче разных мест, в большинстве из которых никакой личной учётной записи на уровне ОС у пользователей не будет — это вполне реальная, а не потенциальная, дыра в подобных системах аутентификации.
Ну из отличий, например, у меня в старой версии файла был указан ListeningPort 23399 в разделе Connection, а в новом файле ListeningPort — 18405 и к нему он успешно подключается. Хотя я подозреваю, что работающих портов гораздо больше, чем 1.
> Но вообще говоря, в рельсах есть штуки, на которые люди, умеющие готовить sql, смотрят с презрением.
Ну такие штуки есть в любом ORM, именно поэтому надо понимать как конкретный ORM работает и какие запросы он генерирует за кадром, иначе такой фигни можно понаписать…
А вообще Active Record в Rails очень прилично реализован, ему бы ещё поддержку DISTINCT получше сделать и вообще шикарно будет :-)
Управление ссылочной целостностью данных на уровне приложения — это не та вещь, которой стоит гордиться… А вот задать нормальные foreign keys на уровне БД в Rails, к сожалению, до сих пор довольно сложно, если не использовать raw SQL под конкретную СУБД, особенно «из коробки».
Это фактическая ошибка. NHibernate реализует сложный набор паттернов: Data Mapper, Identity Map, Unit of Work.
ActiveRecord в свою очередь реализует паттерн Active Record, который является одним из самых простых вариантов реализации ORM, и даже нарушает SRP (принцип единственной ответственности) для сохранения максимальной простоты.
И хоть я сам сейчас программирую преимущественно на Ruby, мне кажется, не очень этично глумиться над людьми, которые в силу специфики своих проектов вынуждены использовать более сложное решение на основе Data Mapper, а не простенькое на основе Active Record.
P.S. На всякий случай упомяну, что паттерн Active Record реализован для всех популярных языков, а не только для Ruby.
Так что принципиальные отличия в паттернах «Data Mapper vs Active Record», а не в Rails. Одно из ключевых отличий состоит в том, что Data Mapper создаёт объекты на основе произвольного набора данных из базы данных, а Active Record на основе одной единственной таблицы в базе данных.
P.P.S. Миграции к ORM вообще никакого отношения не имеют, они относятся к вопросу создания и редактирования схемы базы данных, а не к вопросу преобразования отношений в объекты.
А по поводу даблклика на вкладке, я тоже не понял в каких ситуациях это может быть удобно для обновления страницы…
А использовать inherited_resources для нетривиальных контроллеров == снижать читабельность кода в разы.
На SEO пользователям глубоко наплевать, а когда эта оптимизация агрессивна, то она идёт только во вред пользователям.
«приятный дизайн» — это субъективизм.
«правильная типографика» в вебе — это только для особо эстетствующих маргиналов, большинству пользователей плевать на типографику, а от выносок многих вообще подташнивает.
«удобная навигация» — это верхушка айсберга IxD, скажу только что одной только «удобной» мало.
Дело в том, что Вы вообще неправильно считаете, не важно какую работу Вы совершили, важно какое напряжение в итоге этой работы можно получить на вход дальнейшей схемы преобразователя питания. Вот тут и вступают в действие немеханические эффекты.
К примеру, Вы хотя бы бытовую пьезозажигалку когда-нибудь видели? Она выдаёт искру, пробивающую воздушный зазор, шириной примерно 3 мм. Т.е. выдаёт напряжение не менее 3 кВ. При этом усилие нажатия клавиши примерно 20-30 H, а ход клавиши до получения первой искры не более 5 мм. Т.е. если взять такой же самый дешёвый пьезоэлемент и посчитать для него выдаваемое электрическое напряжение при 1 Н и 5 мм, то получается не менее 100 Вольт. Так что «если непрерывно стучать со скоростью 200 нажатий/минуту», то можно вполне неплохой источник питания замутить.
Одна из базовых аксиом сети Интернет гласит, что если сайт полезен и/или интересен пользователям, то их не остановит ничто, ни сложнейшая процедура регистрации, ни доступ по приглашениям, ни капча, в которой с первого раза не разобраться. А уж упрощённая регистрация (email/пароль, OpenID, OmniAuth) может отпугнуть сколь-либо существенное кол-во заинтересованных пользователей, только в случае если ваш сайт — совсем полный трэш. Хотя и это не так, потому что их отпугнёт отнюдь не регистрация как таковая, а тот факт, что сайт фиговый.
Если найдёте хотя бы пару тысяч пользователей, которые провели в интернете более 1000 часов и не завели ни одного аккаунта с помощью явной процедуры регистрации, то я пересмотрю свою оценку.
Поэтому если пользователя сайт привлёк в плане многоразового использования, то он зарегистрируется сам в явной форме без всяких проблем.
А если ему надо провести с помощью сайта разовое действие, а такая возможность тоже должна быть, то ему не надо регистрироваться никак, ни явно, ни в виде удлинённых сессий. Наоборот, все данные должны удаляться из сессии как только действие завершено. Например, после оформления заказа необходимо удалять id заказа из сессии и высылать пользователю ссылку с токеном для доступа к странице с информацией о заказе, а не продлевать сессию на месяцы.
Домашние — это ещё ладно… А вот реально разделяемые компы в ВУЗах, школах, интернет-кафе и ещё в куче разных мест, в большинстве из которых никакой личной учётной записи на уровне ОС у пользователей не будет — это вполне реальная, а не потенциальная, дыра в подобных системах аутентификации.
Т.е. целевая аудитория фичи — те, кому интересен сам процесс рисования, а результат не интересует. Вот и получается, что это в основном дети :-)
А почему не поставили Consolas? Особенно учитывая то, что винда у Вас уже была, т.е. шрифт можно было взять прямо из неё.