Pull to refresh
0
0
Алексей @sdevalex

User

Send message

Доступные методы борьбы с DDoS-атаками для владельцев vds/dedicated серверов с Linux

Reading time12 min
Views41K
image

Начать свое присутствие на Хабре мы решили с материала, подготовленного для Конференции уральских веб-разработчиков, в котором описаны проверенные на собственной практике и оказавшиеся вполне успешными методы борьбы с DDoS-атаками. Целевая аудитория данной статьи — это программисты, имеющие в распоряжении vds или dedicated. Статья не претендует на полноценное руководство и многие сисадминские нюансы в ней намеренно опущены. Мы рассматриваем только DDoS типа http flood как наиболее распространенный тип DDoS и наиболее дешевый для заказчика.

Целевая аудитория данной статьи – это программисты, имеющие в распоряжении VDS или Dedicated.
Читать дальше →

Занимательное функциональное программирование в Ruby

Reading time13 min
Views10K

Эта статья посвящена бесцельному путешествию по вырожденной форме Ruby в попытках узнать больше о функциональном программировании, простоте и дизайне программных интерфейсов.

Предположим, что единственный способ представления кода — лямбда-выражение, а единственная доступная структура данных — массив:

square = ->(x) { x * x }
square.(4) # => 16

person = ["Dave",:male]
print_person = ->((name,gender)) {
  puts "#{name} is a #{gender}"
}
print_person.(person)

Это самые основы функционального программирования: функции — единственное, что у нас есть. Давайте попробуем написать что-то более похожее на реальный код в таком же стиле. Посмотрим, как далеко мы сможем зайти без особых мучений.
Читать дальше →

Yet another factory

Reading time3 min
Views3K
В текущем проекте стала часто возникать необходимость конструирования множеств разнообразных объектов по каким-то идентификаторам. Была написана одна фабрика для какого-то множества, другая. Потом пришло понимание, что мы делаем одно и то же и нужно какое-то повторяемое решение.
Проект базируется на Qt, который, как известно, имеет развитые механизмы работы с метаданными. Тем не менее конструирование объектов через QMetaObject нас не удовлетворяло по двум причинам: во-первых конструируемые объекты должны быть QObject'ами, а во-вторых при конструировании мы получаем указатель на QObject, который так или иначе придется преобразовывать, что чисто эстетически некрасиво.

Проанализировав круг задач пришли к выводу, что мы хотим иметь статическую фабрику в базовых классах некоторых множеств наследников. Т.е. писать что-то в таком духе:

BaseClass * instance = BaseClass::factory()->build("derived_name");


При этом, мы не хотим писать каждый раз много однообразного служебного кода. Да, мы ленивые.
И конечно же мы не хотим чтобы фабрика или базовый класс знали о всех наследниках.
Как нам это удалось...

20 вещей, которые я должен был знать в 20 лет

Reading time3 min
Views718K
1. Мир пытается оставить тебя тупым. Начиная от банковских платежей и процентов и заканчивая чудо-диетами — из необразованных людей легче вытрясти деньги и ими проще управлять. Занимайтесь самообразованием столько, сколько можете — для того, чтобы быть богатым, независимым и счастливым.
Читать дальше →

Знакомство с Active Scaffold

Reading time3 min
Views5.7K
Всем доброго дня! Я вам хочу поведать о замечательном геме (плагине) для Ruby and Rails (практически не нашёл упоминаний о нём на хабре).

Цель данного плагина — предоставить удобный типовой интерфейс «из коробки». С добавлением, удалением, правкой, поиском, сортировкой и всё это с ajax (или без него).



Делается такое чудо, как на рисунке, в несколько простых шагов:

1. Кидаем строчку в Gemfile
gem 'active_scaffold'

2. Устанавливаем gem'ы
bundle install

3. Подключаем стили и скрипты
/* В /app/assets/stylesheets/application.css.scss
 *= require active_scaffold
 */

// В /app/assets/javascripts/application.js
//= require active_scaffold

4. Прописываем в целевом контроллере
class StuffsController < AuditorController
  active_scaffold :stuff
end

Всё! Дальше Active Scaffold сам подхватит соответствующую модель (в примере — Stuff), разузнает о её колонках в таблице БД и связанных моделях, выберет 15 (по умолчанию) первых записей согласно настройкам default_scope в модели (если задано) и представит вам. Так же заодно (кроме отображения HTML) предоставит вам API в форматах JSON и XML.
Читать дальше →

Ресурсы, которые помогают дизайнерам. Часть 2

Reading time2 min
Views12K
Привет, наверное многие читали мой пост Десяток ресурсов, которые помогают быть дизайнером. Как я понял эта тема интересная (147 плюсов как никак). А раз так, я решил не останавливаться на достигнутом и вот наконец-то закончил работу над своеобразным продолжением первой части. Надеюсь получилось не хуже. Итак, кому интересно, что получилось, прошу под кат.
Читать дальше →

Как правильно сортировать контент на основе оценок пользователей

Reading time5 min
Views93K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

Читать дальше →

Причины любить C++

Reading time5 min
Views50K

C++ слишком сложен?


Иногда почитываю хабр. И когда заметил пост http://habrahabr.ru/blogs/cpp/111403/, честно признаюсь, он задел меня за живое. Я использую язык C++ как основной много лет. Еще раз честно признаюсь: так и не знаю его полностью. Вряд-ли я смог бы сотворить что-либо подобное Boost::MPL, Boost::Spirit или Boost::Xpressive. Но повод ли это говорить о сложности языка? Да, стандарт языка C++ раза в два больше стандарта C#. Но посмотрите на содержание: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf и http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf. Разница заметна? Подсказываю, что для полноты использования языку C# не хватает очень многого из того, что является частью .NET. Вообще-то C++ тоже можно использовать без STL и даже без run-time части вообще. В молодости даже ОС начал писать, где загрузчик был на ассемблере, а все остальное на C++. То, что STL включена в стандарт и подробно описана, в отличии от .NET, является большим плюсом языку C++ и большим минусом C#. Именно поэтому, хотя я и посматриваю с небольшой долей зависти на новости о C#, но применять не планирую. Моя основная ОС – Linux и проект Mono не кажется мне решением проблемы с .NET.

Любой язык программирования сложен до тех пор, пока не найдешь время разобраться с ним. Или кто-то считает, что есть идеальные полноценные языки с полным описанием на 10 страничек и абсолютно без подводных камней? Я о таких не слышал. Зато много лет подряд слышу о том, что C++ уже мертв или медленно умирает, советы обходить его труп стороной. Всяческие рейтинги показывают, что на первом месте у нас то-ли Java, то-ли C#. Но вы присмотритесь к содержимому жесткого диска, где там большая часть ПО на Java или C#? Да сами Java и C# написаны на C++ (ну по крайней мере так было раньше).
Читать дальше →

Получение данных с MEMS гироскопа (часть I)

Reading time2 min
Views55K

Введение

Основной целью на данном этапе было получение данных с MEMS гироскопа, подключенного к макетной плате по I2C шине. В этой статье мне хотелось бы рассказать, что получилось. Кому интересно прошу под кат(осторожно трафик).

Читать дальше →

Правильная настройка DDoS Deflate

Reading time1 min
Views17K
Оказывается такой удобный инструмент для борьбы с ДДОС атаками (или вернее со спамботами) как DDoS Deflate (который применяется тогда, когда в iptables отсутствует возможность использовать модуль connlimit), после инсталяции неправильно склонен себя конфигурировать. Это приводит к тому, что защита не работает.
Читать дальше →

Краткий список WYSIWYG редакторов от Марка Андреева

Reading time4 min
Views361K

Однажды мне потребовался WYSIWYG редактор, я помнил как он выглядит, его функции, но не помнил названия. Через 45 минут я все же его нашел… Тогда я поставил перед собой задачу помочь многим, в том числе и себе: сделать сводный список всех чуть более известных WYSIWYG редакторов.
Читать дальше →

RedDwarf — cерверная платформа для разработки онлайн-игр на Java

Reading time4 min
Views9.5K
Добрый день!
RedDwarf logo Последние два года я занимаюсь разработкой сервера игр на платформе RedDwarf – свободной (GPLv2) серверной платформе для создания онлайн-игр на Java. На Хабре очень мало информации об этой платформе, поэтому я решил исправить этот недостаток.

История


Разработка данного движка изначально велась компанией Sun, сама платформа называлась Sun Game Server (аббревиатура sgs до сих пор используется в наименованиях пакетов). В 2005 году сервер был представлен миру под названием Project Darkstar. После того, как Oracle купила Sun, от поддержки проекта сановцы отказались, платформа была переименована в RedDwarf Server и сейчас существует только при поддержке сообщества. Проект развивается сейчас гораздо медленней, но всё же развивается – в прошлом году вышла версия 0.10.2. Всех планируемых фишек (прозрачного масштабирования) в ней ещё нет, но как основа для игрового сервера используется во многих проектах.

Основные принципы


Игровой сервер на платформе RedDwarf состоит из следующих частей.
  • Игровое приложение
  • Расширения
  • Ядро
  • Внутренняя БД
Читать дальше →

Методы борьбы с DDoS-атаками

Reading time5 min
Views118K
Хотелось бы поговорить с вами на актуальную нынче тему, а именно — про DDoS и методы борьбы с ним. Рядовые администраторы знают, что это такое, а вот для большинства вебмастеров это аббревиатура остается загадкой до того момента пока они на личном опыте не столкнуться с этой неприятностью. Итак, DDoS — это сокращение от Distributed Denial of Service (распределенный отказ в обслуживании), когда тысячи зараженных компьютеров отправляют на сервер множество запросов, с которыми он, в последствии, не может справиться. Целью DDoS атаки является нарушение нормальной работы сервера, а в дальнейшем — «падение» сайта или сервера целиком.

Как же от этого защититься? К сожалению, универсальных мер защиты от DDoS-атак до сих пор не существует. Тут необходим комплексный подход, который будет включать меры аппаратного, программного и даже организационного характера.
Читать дальше →

Разработка флеш игры «King of the rocks»

Reading time9 min
Views5.3K
Прочитав несколько статей о том как наши соотечественники делают флеш игры, да ещё и неплохо зарабатывают на этом я решил во чтобы-то ни стало сделать свою игру. И непременно заработать с её продажи как минимум 1000$. Успех в этом деле значил для меня очень многое. Я всю жизнь хотел делать игры и вот сейчас я был готов и уверен в успехе на все 100%. Это история разработки моей первой флеш игры King of the Rocks


Читать дальше →

Можно ли верить своим глазам? (Unicode в именах файлов)

Reading time2 min
Views32K
Несколько дней назад один из наших пользователей прислал образец (SHA1: fbe71968d4c5399c2906b56d9feadf19a35beb97, определяется как TrojanDropper:Win32/Vundo.L). Это троян для фишинга с сайтов vk.com и vkontakte.ru, запросы на которые перенаправляются на 92.38.209.252 необычным способом.

Обычный метод перенаправления трафика — добавить запись в файл hosts, который находится в папке %SystemRoot%\system32\drivers\etc. Однако, когда мы открываем этот файл на заражённом компьютере, то там нет никаких записей для vk.com и vkontakte.ru:


Читать дальше →

Геттеры и сеттеры в Javascript

Reading time5 min
Views49K
Javascript — очень изящный язык с кучей интересных возможностей. Большинство из этих возможностей скрыты одним неприятным фактором — Internet Explorer'ом и другим дерьмом, с которым нам приходится работать. Тем не менее, с приходом мобильных телефонов с актуальными браузерами и серверного JavaScript с нормальными движками эти возможности уже можно и нужно использовать прям сейчас. Но по привычке, даже при программировании для node.js мы стараемся писать так, чтобы оно работало в IE6+.

В этой статье я расскажу про интересный и не секретный способ указывать изящные геттеры и сеттеры и немножко покопаемся в исходниках Mootools. Частично это информация взята из статьи John Resig, частично лично мой опыт и эксперименты.
function Foo(bar){
    this._bar = bar;
}

Foo.prototype = {
    get bar () {
        return this._bar;
    },
    set bar (bar) {
        this._bar = bar;
    }
};


Читать дальше →

Авторизация через ВКонтакте, Mail.ru и другие для самых начинающих — 1

Reading time4 min
Views49K
На хабре и других ресурсах есть туториалы, однако в каждом упущен какой-нибудь незначительный момент, вопросы по которому можно видеть на различных форумах. Так как недавно столкнулся с задачей подружить один сайт с Контактиком и Майл.ру, то решил, пока свежа память, сделать свое небольшое руководство с блэкджеком так сказать, используя родные виджеты этих социальных сетей.
Читать дальше →

Инструменты командной строки для веб-разработчика

Reading time3 min
Views40K
Жизнь веб-разработчика омрачена сложностями. Особенно неприятно, когда источник этих сложностей неизвестен. То ли это проблема с отправкой запроса, то ли с ответом, то ли со сторонней библиотекой, то ли внешний API глючит? Существует куча различных прилад, способных упростить нам жизнь. Вот некоторые инструменты командной строки, которые лично я считаю бесценными.
Читать дальше →
2

Information

Rating
Does not participate
Location
Севастополь, Республика Крым, Россия
Registered
Activity