Всё началось, когда автор Ruby on Rails признался миру:
estarter @estarter
User
Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables
7 min
67KЗдравствуй, Хабр!
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).
Производится тонкая настройка параметров системы. Так что север будет способен выдерживать больше подключений от ботнета, чем канал до сервера сможет пропустить.
Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.
Ваш сайт будет правильно индексироваться во время атаки, что позволит сохранить позиции в выдаче поисковых систем. Особенно актуально для сайтов с большими SEO бюджетами.
На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).
Способ реализация
Производится тонкая настройка параметров системы. Так что север будет способен выдерживать больше подключений от ботнета, чем канал до сервера сможет пропустить.
Область применения
Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.
SEO под DDoS-ом
Ваш сайт будет правильно индексироваться во время атаки, что позволит сохранить позиции в выдаче поисковых систем. Особенно актуально для сайтов с большими SEO бюджетами.
Стоимость и эффективность
На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.
+165
RVM — подробно
4 min
97KRVM — Ruby Version Manager
Программа для управления версиями Ruby.
Как быть если один проект использует Ruby 1.8.7, а другой 1.9.2? А что если при этом у вас 2 проекта под версией 1.9.2, но с разными наборами гемов? Хотелось бы вам иметь отдельные наборы gem's для каждого проекта?
Основные задачи:
1. Физическое разделение версий ruby и наборов гемсетов
2. Возможность иметь несколько версий ruby и переключаться между ними
3. Возможность для каждой версии ruby иметь несколько gemsets — наборов gem's и переключаться между ними
Под катом будут описаны:
1. Установка RVM
2. Работа с разными версиями Ruby
3. Работа с gemsets
4. Задание окружения под отдельный проект с помощью .rvmrc
5. Команды RVM которые могут оказаться полезными
6. Шпаргалка по основным командам RVM
+43
История про ExecJS или как выполнять джаваскрипт в руби
4 min
3.7KДопустим, вы пишите крутой вебдванольный проект на рельсах. У вас есть друг Петя — сильный программист на джаваскрипте. Поскольку Петя пишет много и задорно, он решил облегчить себе жизнь и придумал новый язык с красивым и простым синтаксисом, который будет транслироваться в джаваскрипт.
Еще Петя — большой любитель зеленого чая, поэтому назвал он свой новый язык GreenTeaScript.
Кроме Пети, у вас есть еще один друг-программист-на-джаваскрипте Вася. Вася как-то раз придумал написать программу, которая разбирала бы JS на AST, оптимизовала его, а потом собирала обратно в красивый, структурированный код, отсекая всякое лишнее и форматируя по Кроуфорду. Назвал он свое детище BeautifyJS. Кстати, BeautifyJS еще умел собирать AST в минимизированный сжатый код и делал это быстрее и лучше остальных существующих в природе альтернатив.
Поскольку и Петя и Вася ни на чем, кроме джаваскрипта, программировать не умели, свои продукты они на нем и написали.
И тут вам, опять же допустим, первому в мире в голову пришла идея прикрутить эти замечательные штуки к своему крутому вебдванольному проекту на рельсах. Писать фронтенд на GreenTeaScript вам сильно понравилось, а сжатие скриптов с помощью BeautifyJS наверняка сильно ускорило бы сайт.
Теперь начинается самое интересное.
Еще Петя — большой любитель зеленого чая, поэтому назвал он свой новый язык GreenTeaScript.
Кроме Пети, у вас есть еще один друг-программист-на-джаваскрипте Вася. Вася как-то раз придумал написать программу, которая разбирала бы JS на AST, оптимизовала его, а потом собирала обратно в красивый, структурированный код, отсекая всякое лишнее и форматируя по Кроуфорду. Назвал он свое детище BeautifyJS. Кстати, BeautifyJS еще умел собирать AST в минимизированный сжатый код и делал это быстрее и лучше остальных существующих в природе альтернатив.
Поскольку и Петя и Вася ни на чем, кроме джаваскрипта, программировать не умели, свои продукты они на нем и написали.
И тут вам, опять же допустим, первому в мире в голову пришла идея прикрутить эти замечательные штуки к своему крутому вебдванольному проекту на рельсах. Писать фронтенд на GreenTeaScript вам сильно понравилось, а сжатие скриптов с помощью BeautifyJS наверняка сильно ускорило бы сайт.
Теперь начинается самое интересное.
+58
Rails: Хватит отмазываться, начинаем BDD-ить!
9 min
32KКто здесь?
Когда речь заходит о тестировании существующего продукта, а тем более о разработке чего-то нового на основе изначального написания сценариев использования, различных спецификаций и тестов, то частенько можно слышать подобные вещи:
11:24:21 PM Michael: ну хз, надо пробовать 11:24:24 PM Michael: наверное так лучше 11:24:27 PM Michael: даже я думаю наверняка 11:24:36 PM Michael: но пока меня че-то останавливает 11:24:38 PM Michael: лень наверное :)
Знакомо? «Не хочется разбираться? Нет времени?» Тогда читаем дальше. В статье расскажу, как настроить свое любимое рельсовое окружении на разработку с подходом BDD и начать новую жизнь (опционально).
+66
jQuery для JavaScript-программистов
12 min
71KTranslation
Примечание: ниже расположен перевод статьи «jQuery for JavaScript programmers», в которой автор высказывает свое мнение об этой библиотеке, ориентируясь, в первую очередь, на продвинутых программистов, и приводит несколько десятков примеров ее использования.
Когда jQuery увидела свет в январе 2006, я подумал: «очередная красивая игрушка». Выбор CSS-селекторов в качестве базиса было, конечно, изящной идеей (подробнее о ней в моей заметке getElementsBySelector), но использование цепочек преобразований выглядело немного замысловато, и сама библиотека, по-видимому, не покрывала всех возможных случаев. Я расценивал тогда jQuery только как временное и проходящее решение.
Только несколько месяцев спустя понял я, насколько же ошибался по отношению к ней. jQuery является просто произведением инженерного искусства. Она умело покрывает достаточно широкой диапазон повседневных функций и предоставляет при этом удобный API для расширений, с помощью которых можно добавить любую другую функциональность. Абстрактность в ней заложена на уровне ядра — речь идет о выборе DOM-элементов — и она извлекает из него максимум пользы. И что важнее всего, использование этой библиотеки подразумевает следование хорошему стилю в программировании и хорошо сочетается с другими частями JavaScript-кода.
Большинство современных обзоров jQuery делают упор на дизайнеров и неопытных разработчиков. Я попытаюсь объяснить, почему она также нужна и опытным программистам.
Когда jQuery увидела свет в январе 2006, я подумал: «очередная красивая игрушка». Выбор CSS-селекторов в качестве базиса было, конечно, изящной идеей (подробнее о ней в моей заметке getElementsBySelector), но использование цепочек преобразований выглядело немного замысловато, и сама библиотека, по-видимому, не покрывала всех возможных случаев. Я расценивал тогда jQuery только как временное и проходящее решение.
Только несколько месяцев спустя понял я, насколько же ошибался по отношению к ней. jQuery является просто произведением инженерного искусства. Она умело покрывает достаточно широкой диапазон повседневных функций и предоставляет при этом удобный API для расширений, с помощью которых можно добавить любую другую функциональность. Абстрактность в ней заложена на уровне ядра — речь идет о выборе DOM-элементов — и она извлекает из него максимум пользы. И что важнее всего, использование этой библиотеки подразумевает следование хорошему стилю в программировании и хорошо сочетается с другими частями JavaScript-кода.
Большинство современных обзоров jQuery делают упор на дизайнеров и неопытных разработчиков. Я попытаюсь объяснить, почему она также нужна и опытным программистам.
+45
+209
RubyConf08
15 min
769В ноябре месяце прошлого года прошла конференция RubyConf2008. Она прошла абсолютно мимо славянской части Ruby коммьюнити. Об этой конференции не упоминается практически нигде в укрнете/рунете. Я сам узнал об этой конференции абсолютно случайно из какого-то блога возможно даже не связанного с Ruby.
Я посмотрел одно выступление с этой конференции и мне захотелось его пересказать в виде текста на Хабре. Написав первые два абзаца я посмотрел еще несколько выступлений и понял что они ничем не хуже того, которое я начал пересказывать. Дальше — больше. Я просмотрел еще десяток докладов и понял, что если буду пересказывать все то это займет время до следующей Ruby конференции. Наступив на горло собственной песне я решил поменять формат изложения. Я расскажу обо всех выступлениях по чуть-чуть. Пусть это будет формат похожий на RSS где будет в сжатой форме рассказано о теме выступления, длительности и ключевых словах и понятиях. Такой формат даст понимание того, стоит или не стоит обращать внимание на этот доклад и узнавать подробности или нужно посмотреть какой-то другой.
Отдельным абзацем выделю тот факт, что доклады на английском.
Кому может быть это интересно. В первую очередь рубистам и рельсовикам. Во вторую очередь — программистам из Java вселенной. Некоторые темы могут быть интересны остальным разработчикам.
Для удобства я разделил доклады по группам (докладов в группе):
1)Ruby core (5)
2)На пересечении с Java (4)
3)Автоматическое тестирование (5)
4)Низкоуровневый Ruby (2)
5)Ruby и JavaScript (2)
6)Ruby on Internet (4)
7)Кодоводство (6)
8)Ruby в консоли (2)
9)Доклады несвязанные с Ruby напрямую (3)
10) Разное (2)
Я посмотрел одно выступление с этой конференции и мне захотелось его пересказать в виде текста на Хабре. Написав первые два абзаца я посмотрел еще несколько выступлений и понял что они ничем не хуже того, которое я начал пересказывать. Дальше — больше. Я просмотрел еще десяток докладов и понял, что если буду пересказывать все то это займет время до следующей Ruby конференции. Наступив на горло собственной песне я решил поменять формат изложения. Я расскажу обо всех выступлениях по чуть-чуть. Пусть это будет формат похожий на RSS где будет в сжатой форме рассказано о теме выступления, длительности и ключевых словах и понятиях. Такой формат даст понимание того, стоит или не стоит обращать внимание на этот доклад и узнавать подробности или нужно посмотреть какой-то другой.
Отдельным абзацем выделю тот факт, что доклады на английском.
Кому может быть это интересно. В первую очередь рубистам и рельсовикам. Во вторую очередь — программистам из Java вселенной. Некоторые темы могут быть интересны остальным разработчикам.
Для удобства я разделил доклады по группам (докладов в группе):
1)Ruby core (5)
2)На пересечении с Java (4)
3)Автоматическое тестирование (5)
4)Низкоуровневый Ruby (2)
5)Ruby и JavaScript (2)
6)Ruby on Internet (4)
7)Кодоводство (6)
8)Ruby в консоли (2)
9)Доклады несвязанные с Ruby напрямую (3)
10) Разное (2)
+43
Живая кулинарная книга: наше кулинарно-программисткое хобби
3 min
2KВсем привет. В этой статье я хочу рассказать про наш небольшой стартап, кулинарный сайт livecookbook.ru, которому буквально несколько дней назад исполнился год. Не спешите листать дальше, этот топик ничем не хуже топиков о продлении жизни или о фотоконкурсах.
Мы не ставили себе целью заполучить максимальную аудиторию (поэтому вы скорее всего про нас не слышали), или заработать много денег. Нашей целью было сделать сайт, которым было бы в первую очередь приятно и удобно пользоваться самому. Мы не бросали работу, не нанимали фрилансеров. Основное рабочее время – ночь, основные помощники – наши друзья, источник большинства идей – собственная фантазия и желание иметь на ужин что-нибудь вкусное.
Мы не ставили себе целью заполучить максимальную аудиторию (поэтому вы скорее всего про нас не слышали), или заработать много денег. Нашей целью было сделать сайт, которым было бы в первую очередь приятно и удобно пользоваться самому. Мы не бросали работу, не нанимали фрилансеров. Основное рабочее время – ночь, основные помощники – наши друзья, источник большинства идей – собственная фантазия и желание иметь на ужин что-нибудь вкусное.
+69
Еще одна старая ошибка о разных полах на сайте
1 min
622Старый вопрос о разделении по половому признаку посетителей сайтов.
При регистрации многие сайты спрашивают пол, но потом эти данные нигде не используют. На хабре — используют, но не полностью. Точнее не везде адаптировали.
Когда заходишь на страницу пользователя, а этот пользователь — девушка, то там мы видим кнопку "Её". Так-же номер в рейтинге — женского пола ("4913-я в рейтинге хабралюдей"). А если опустить глаза пониже, то видим… "Зарегистрирован: 24 марта 2008 18:57", "Активность: Последний раз был на сайте 30 октября 2008 01:36".
Разработчики, давайте, если уделяем внимание при регистрации половому признаку, то не будем все делать только для мужчин.
При регистрации многие сайты спрашивают пол, но потом эти данные нигде не используют. На хабре — используют, но не полностью. Точнее не везде адаптировали.
Когда заходишь на страницу пользователя, а этот пользователь — девушка, то там мы видим кнопку "Её". Так-же номер в рейтинге — женского пола ("4913-я в рейтинге хабралюдей"). А если опустить глаза пониже, то видим… "Зарегистрирован: 24 марта 2008 18:57", "Активность: Последний раз был на сайте 30 октября 2008 01:36".
Разработчики, давайте, если уделяем внимание при регистрации половому признаку, то не будем все делать только для мужчин.
+36
Как выявить медленные SQL запросы?
2 min
92KTranslation
Это случалось с каждым из нас при разработке веб-сайтов или приложений, использующих MySQL в качестве базы данных. Производительность внезапно сильно падала, и вы не имели понятия, почему это случилось. Этому могут быть причиной многие факторы (сильная загрузка CPU, нехватка дискового пространства, или слабая пропускная способность канала), но также это может быть и неоптимизированный запрос, выполняемый намного дольше, чем должен.
Как узнать, какие из запросов выполняются дольше всего?
В MySQL есть встроенный функционал для ведения логов медленных запросов.
Как узнать, какие из запросов выполняются дольше всего?
В MySQL есть встроенный функционал для ведения логов медленных запросов.
+28
Information
- Rating
- Does not participate
- Location
- Россия
- Date of birth
- Registered
- Activity