Заметно разницу? Первый пример — классический манки-патч, влияющий на остальной код, который использует Date#valueOf. Второй пример — динамическое расширение прототипа Date _новым_ методом, которое никоим образом не влияет на остальные инстансы Date (поменялся прототип, а не поведение ранее объявленных методов).
Как у тебя вообще с английским? Внимательно перечитай всю статью, а не первый попавшийся абзац. Там ни слова про «загрязнение» ранее объявленных классов-интерфейсов новыми методами, что является обычной практикой во всех динамических языках с наличием прототипов, модулей или traits, где код собирается по кускам
как раз-таки пользователям все равно, какая схема у БД.
Вы лучше расскажите, как будете накатывать мигрейшены — да и вообще любые изменения в структуре вашей базы (имена таблиц, колонок, их типы и т.лд.) или в именовании классов ;)
Демпинга с одной соседней страны не чувствуется? :)
1) Весь DSL и клиентский код для Chef www.opscode.com/chef/, системы управления конфигурацией серверов
альтернативный проект — Puppet github.com/puppetlabs/puppet — тоже на Ruby
2) metasploit — github.com/rapid7/metasploit-framework крупнейший фреймворк для пентестов и отладки уязвимостей
3) github.com/mxcl/homebrew — «недостающий» менеджер пакетов для iOS
4) Gitlab
5) SASS, HAML, CoffeeScript — популяризированы именно в руби-среде
Предположу существование еще одного важного фактора, действующего против Erlang — это отсутствие встроенных в язык словарей (aka dict, HashMap, map)
var date = new Date()
date.valueOf() // 1366289455443
date.valueOf = function() {
return 1;
}
date.valueOf() // 1
Date.prototype.oldValueOf = Date.prototype.valueOf
Date.prototype.valueOf = function() {
return parseInt(this.oldValueOf() / 1000);
}
vs
// extending Date
Date.prototype.valueOfInSeconds = function() {
return parseInt(this.valueOf() / 1000);
}
Заметно разницу? Первый пример — классический манки-патч, влияющий на остальной код, который использует Date#valueOf. Второй пример — динамическое расширение прототипа Date _новым_ методом, которое никоим образом не влияет на остальные инстансы Date (поменялся прототип, а не поведение ранее объявленных методов).
на переднем плане ледопад Кхумбу
Под таким заголовком ожидал обзор чего-то подобного Selenium/WatiR/WatiJ/WatiN/Sahi
* а вообще, боян с мембраны :)
на Ruby есть несколько решений
WEBRick — входит в стандартную библиотеку (pure Ruby)
Mongrel (C, Ruby)
Thin (C, Ruby)
Ebb (C, Ruby)
Все кто пишут «на РНР нельзя написать вебсервер» — только якобы из-за того, что язык кривой и интерпретируемый, идут лесом.
Вы лучше расскажите, как будете накатывать мигрейшены — да и вообще любые изменения в структуре вашей базы (имена таблиц, колонок, их типы и т.лд.) или в именовании классов ;)