• «Анатомия анонимных атак» — как работают Anonymous?

      Американская компания Imperva, которая занимается разработкой решений для защиты данных, опубликовала свой 17-страничный отчёт, посвященный исследованию работы известной группы хактивистов Anonymous. Нельзя сказать, что отчёт вскрывает страшные тайны подпольной организации злоумышленников, но, тем не менее, в качестве систематизированной картины он весьма удобен.

      Итак, согласно отчёту, Anonymous — это не группа сверхгениальных хакеров, способных в считанные часы или дни взломать любой сервер и украсть любую информацию. Хотя и имели место прецеденты с успешными атаками на столь солидные организации как StratFor и ряд других, успешность атаки объясняется скорее безалаберностью администраторов ресурсов, а не какой-либо сверхизобретательной технике злоумышленников. Так исследователи считают, что хотя у Anonymous и имеются некоторые специфические приёмы, тем не менее, группа предпочитает широко известные методы — прежде всего, это SQL-инъекции и DDOS-атаки, причём, Anonymous, как правило, сначала пробуют украсть данные, а потом, если это не увенчивается успехом, организуют DDOS на ресурс жертвы.
      Узнать подробности
    • Уязвимы по определению

        У многих людей, как-либо связанных с безопасностью, периодически возникает желание заняться pentest'ом, то есть тестом на проникновение. И чаще всего начинают все с pentest'а веб-приложений. Порог вхождения довольно мал (простейшая sqli определяется добавлением кавычки в параметр и эксплуатируется не особо сложнее), но при этом встречаются и довольно сложные задания, которые заставляют потратить пару-тройку дней на ковыряние.
        Но возникает вопрос — где применять теоретические знания, без страха внезапного появления маски-шоу? Под катом проведу небольшой обзор полигонов для экспериментов по pentest'у.
        Читать дальше →
      • Разработка ММО РПГ – практическое руководство. Сервер (часть 2)

          Рерурс литий
          • Реализация AI: как сделать максимально просто?
          • RPC клиент-сервер: json или бинарная «самопальщина»?
          • Асинхронные сокеты или многопоточная архитектура?
          • Кеширование объектов на уровне приложения или больше памяти для СУБД?
          • Работа с БД без Reflection API: действительно ли это так сложно?

                  Сегодня мы продолжим рассматривать архитектуру и особенности реализации игрового backend'а на С++ для онлайн игры на примере ММО РПГ «Звездные Призраки». Это вторая часть статьи про сервер, начало можно прочитать здесь.
          Далее
        • Битва за ADFS (Active Directory Federation Services)

            Предыстория


            Проект начинался как портал на основе SP 2007, а позже на основе 2010 SP. Изначально все пользователи были в Active Directory. Был только один тип пользователей. Связи между ними были достаточно простыми. Появлялись новые типы пользователей, которые сложным образом становились связаны друг с другом. Также постепенно проект обрастал различными связанными подсистемами, часть из которых работала внутри портала, часть вне его. И это все усложняло схему авторизации.


            Читать дальше →
          • MMORPG без лишних деталей: Open Source



              Как говорится: «обещанного три года ждут». Примерно столько лет назад мы начали разработку своей «оригинальной» браузерки. О ней мы уже рассказывали: MMORPG без лишних деталей, как рассказывали и о наших скромных успехах год спустя.

              При этом мельком упоминалось, что код игры постепенно открывается. И вот наконец настал тот момент, когда мы открыли его полностью: github.com/Tiendil/the-tale под BSD лицензией. А это значит, что вы вот прямо сейчас можете начать пилить свою собственную браузерку с… ну с чем захотите.

              Разработчики игр, будущие владельцы браузерок и просто любопытствующие приглашаются под кат.
              Читать дальше →
            • Beat-chart – лучший друг гейм-дизайнера

              Всем привет!

              Я гейм-дизайнер и в данный момент вместе с небольшой командой занимаюсь разработкой двумерной адвенчуры на Unity3D. Цель этой публикации – рассказать о процессе дизайна локаций для нашей игры и приемах, которые я использую.
              Ну и параллельно показать вам все стадии развития локации – от схемы до финальной версии.


              Забегая немного вперед – так выглядит кусочек уже готовой локации в действии.
              Читать дальше →
            • Vim по полной: Snippets и шаблоны файлов

                Оглавление


                1. Введение (vim_lib)
                2. Менеджер плагинов без фатальных недостатков (vim_lib, vim_plugmanager)
                3. Уровень проекта и файловая система (vim_prj, nerdtree)
                4. Snippets и шаблоны файлов (UltiSnips, vim_template)
                5. Компиляция и выполнение чего угодно (vim-quickrun)
                6. Работа с Git (vim_git)
                7. Деплой (vim_deploy)
                8. Тестирование с помощью xUnit (vim_unittest)
                9. Библиотека, на которой все держится (vim_lib)
                10. Другие полезные плагины

                Стоит ли рассказывать вам, как повторное использование кода и проектных решений облегчает жизнь программиста? Но все ли мы можем использовать повторно? Очень часто я сталкиваюсь в моих проектах с задачами, которые требуют копи-пасты кода и избежать этого невозможно. К категории этого «повторяемого» кода относятся все структуры используемого ЯП, многие классы проекта и тест-кейсы. К счастью давно изобретено решение, позволяющее работать с таким кодом быстрее и качественнее.
                Красная пилюля
                • +15
                • 13.5k
                • 6
              • Высокопроизводительный код на платформе .NET

                • Translation
                Здравствуйте, дорогие читатели!

                Не так давно мы занялись проработкой книги "Writing High-Performance .NET code", которая до сих пор не переведена на русский язык, хотя ей и скоро год.



                Нас, конечно, не удивило, что такую книгу уже растаскивают на цитаты, однако выяснилось, что уважаемый автор Бен Уотсон даже выложил на сайте «Codeproject» целую статью, написанную по мотивам одной из глав. К сожалению, объем этого материала слишком велик для хабропубликации, однако мы решили все-таки перевести первую часть статьи, чтобы вы могли оценить материал книги. Приглашаем к прочтению и к участию в опросе. Кроме того, если все-таки целесообразно перевести и вторую часть — пишите в комментариях, постараемся учесть ваши пожелания.
                Читать дальше →
              • Обзор книги «Паттерны проектирования на платформе .NET»

                  Как известно, недавно была опубликована книга по паттернам проектирования за авторством Сергея Теплякова.

                  Дабы поддержать мною уважаемого нашего разработчика (сам Сергей, несмотря на переезд заграницу, всё ещё считает себя нашим — за пруфом идите к нему в блог), не пожалел денег и сразу же купил электронную версию. До этого я читал банду четырёх и Design Patterns Head First, поэтому, в принципе, есть с чем сравнить.
                  Книга занимает чуть более 300 страниц, что вполне можно осилить за неделю неторопливого чтения. Книга разбита на 4 части:
                  1. Паттерны поведения
                  2. Порождающие паттерны
                  3. Структурные паттерны
                  4. Принципы проектирования
                  Читать дальше →
                  • +17
                  • 25.2k
                  • 9
                • Детальный анализ Хабрахабра с помощью языка Wolfram Language (Mathematica)


                    Скачать пост в виде документа Mathematica, который содержит весь код использованный в статье, вместе с дополнительными файлами, можно здесь.

                    Анализ социальных сетей и всевозможных медиа-ресурсов является сейчас довольно популярным направлением и тем удивительнее для меня было обнаружить, что на Хабрахабре, по сути, нет статей, которые содержали бы анализ большого количества информации (постов, ключевых слов, комментариев и пр.), накопленного на нем за довольно большой период работы.

                    Надеюсь, что этот пост сможет заинтересовать многих участников Хабрахабра. Я буду рад предложениям и идеям возможных дальнейших направлений развития этого поста, а также любым замечаниям и рекомендациям.

                    В посте будут рассматриваться статьи, относящиеся к хабам, всего в анализе участвовало 62000 статей из 264 хабов. Статьи, написанные только для корпоративных блогов компаний в посте не рассматривались, а также не рассматривались посты, не попавшие в группу «интересные».

                    Ввиду того, что база данных, построенная в посте, формировалась за некоторое время до публикации, а именно 26 апреля 2015 г., посты, опубликованные на Хабрахабре после этой даты (а также, возможно, новые хабы) в данном посте не рассматривались.
                    Читать дальше →
                  • Заглянем за кулисы разработки: подборка исходных кодов классических игр

                    • Translation
                    Обожаю заглядывать за кулисы. Мне интересно, как делаются вещи. Мне кажется, что большинству людей это тоже интересно.

                    Исторически так сложилось, что видеоигры не делятся исходниками. Конечно, они ведь предназначены для игроков. Но для программистов там всегда есть, на что посмотреть. И некоторые игры всё-таки выпускали свои исходники. А я давно намеревался сделать такую подборку.

                    К сожалению, почти все игры – для PC. Найти исходники для консолей или аркад почти нереально, и большинство программистов не в курсе различий подходов к программам на платформах, отличных от PC.

                    Многие игры после выпуска исходников были улучшены и дополнены сообществом – я намеренно даю ссылки только на оригинальные исходники. Так что, если вас вдруг интересуют апгрейды – они могут существовать.

                    Многие игры были рассмотрены на сайте Fabien Sanglard. Если вам интересны подробности их работы, то пожалуйте к нему.

                    Можно заметить, что многие игры принадлежат id Software/Apogee. Совпадение? Не думаю. id славится открытостью и привычкой выпускать исходники. Старые коммерческие игры уже не имеют ценности и были бы потеряны – не лучше ли, чтобы кто-то учился чему-то полезному на их основе?

                    Итак, приступим (в хронологическом порядке):
                    Читать дальше →
                  • Стивен Вольфрам: Рубежи вычислительного мышления (отчёт с фестиваля SXSW)

                    • Translation

                    Перевод поста Стивена Вольфрама (Stephen Wolfram) "Frontiers of Computational Thinking: A SXSW Report".
                    Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.


                    На прошлой неделе я выступал на SXSW Interactive 2015 в Остине, штат Техас. Вот несколько отредактированная стенограмма моего выступления:


                    Содержание


                    Наиболее продуктивный год
                    Язык Wolfram Language
                    Язык для реального мира
                    Философия Wolfram Language
                    Программы размером в один твит
                    Вычислительное мышление для детей
                    Ввод запросов на естественном языке
                    Масштабная идея: Символьное программирование
                    Язык для развёртывания
                    Автоматизация программирования
                    Масштабные программы
                    Интернет вещей
                    Машинное обучение
                    Исследования Вычисляемой Вселенной
                    Вычислять, подобно тому, как это делает мозг
                    Язык как символьное представление
                    Пост-лингвистические понятия
                    Древняя история
                    Чем будет заниматься искусственный интеллект?
                    Бессмертие и за его пределами
                    Коробка триллиона душ
                    Обратно в 2015 год
                    Читать дальше →
                  • Пример Feature Engineering в машинном обучении

                      Привет, хабр!



                      В одной из прошлых статей мы познакомились с таким понятием как Feature Engineering и применением его на практике. В комментариях было озвучено пожелание показать на примере, как искусство генерации признаков помогает заметно улучшить качество алгоритмов машинного обучения. Я поискал задачи, в которых бы это можно было наглядно продемонстрировать и нашел один хороший пример. Это задача Forest Cover Type Prediction. Покажем, как можно применяя простые идеи, не содержащие в себе машинное обучение, сразу попасть в топ 10% Leader Board!
                      Читать дальше →
                    • Ваш персональный курс по Big Data

                        Привет, хабр!

                        После публикации нескольких статей по Big Data и Машинному обучению, ко мне пришло немало писем от читателей с вопросами. За последние несколько месяцев мне удалось помочь многим людям сделать быстрый старт, некоторые из них — уже решают прикладные задачи и делают успехи. А кто-то уже устроился на работу и занимается решением реальных задач. Моя цель — чтобы вокруг меня были умные люди, с которыми в том числе и я смогу работать в дальнейшем. Поэтому я хочу помочь тем, кто действительно хочет научиться решать настоящие задачи на практике. В сети присутствует большое количество мануалов о том, как стать ученым по данным (Data Scientist). В свое время я прошел все, что там есть. Однако, на практике порой нужны совсем другие знания. О том, какие именно навыки нужны — я расскажу в сегодняшней статье и постараюсь ответить на все Ваши вопросы.
                        Читать дальше →
                      • UX-команда MailChimp: Креативность и дорожные карты [7-я часть книги]

                        • Translation


                        [TL;DR]

                        [ 1-я часть книги ]
                        [ 2-я часть книги ]
                        [ 3-я часть книги ]
                        [ 4-я часть книги ]
                        [ 5-я часть книги ]
                        [ 6-я часть книги ]
                        [ 8-я часть книги ]

                        Креативность и фронт-энд


                        Джейсон Биэрд

                        В UX Newsletter мы часто писали о нашей библиотеке шаблонов и о том, как она помогает нам проводить быстрые итерации и обеспечивать согласованность работы MailChimp. Разработка на основе существующих паттернов немного похожа на игру с Lego: когда вы начинаете работу, вы точно знаете, как те или иные элементы должны связываться между собой – но иногда оказывается полезным нарушить паттерн и создать необычное решение. Я бы хотел поделиться несколькими примерами того, как такой подход был реализован в MailChimp.
                        Читать дальше →
                      • Django на production. uWSGI + nginx. Подробное руководство

                        • Translation
                        • Tutorial
                        Перед вами руководство по настройке production окружения для Django. Здесь будут описаны необходимые шаги по настройке Django, uWSGI и nginx. Руководство охватывает все три компонента — полный стек серверного ПО для веб-приложений.

                        Подразумевается, что вы используете Unix-подобную операционную систему и менеджер пакетов, эквивалентный aptitude. Найти эквивалент aptitude почти для любой операционной системы, в том числе и для Mac OS X, для вас не составит никакого труда.

                        Руководство написно для версий Django 1.4 или выше. Если вы используете более раннюю версию, то вам придется самостоятельно найти wsgi модуль для нее. Также вы заметите, что файловая структура проекта будет немного отличаться от представленной здесь.

                        Общая идея


                        Веб-сервер может по запросу отдавать пользователям файлы из своей файловой системы, однако он не может напрямую работать с Djangо приложениями. Веб-серверу нужен интерфейс, который будет запускать Django приложение, передавать ему запрос от пользователя и возвращать ответ.

                        Для выполнения этих задач был разработан Web Server Gateway Interface — WSGI — стандарт взаимодействия Python программ и веб-сервра.

                        uWSGI — одна из реализаций WSGI. В этом руководстве мы установим и настроим uWSGI для создания Unix сокета и взаимодействия с веб-сервером по протоколу WSGI.
                        Читать дальше →
                      • Эффективная многопоточность в Python

                        Хочу поделиться простым рецептом, как можно эффективно выполнять большое число http-запросов и других задач ввода-вывода из обычного Питона. Самое правильное, что можно было бы сделать — использовать асинхронные фреймворки вроде Торнадо или gevent. Но иногда этот вариант не подходит, потому что встроить event loop в уже существующий проект проблематично.

                        В моем случае уже существовало Django-приложение, из которого примерно раз в месяц нужно было выгрузить немного очень мелких файлов на AWS s3. Шло время, количество файлов стало приближаться к 50 тысячам, и выгружать их по очереди стало утомительным. Как известно, s3 не поддерживает множественное обновление за один PUT-запрос, а установленная опытным путем максимальная скорость запросов с сервера ec2 в том же датацентре не превышает 17 в секунду (что очень не мало, кстати). Таким образом, время обновления для 50 тысяч файлов стало приближаться к одному часу.

                        Питонисты с детства знают, что от использования потоков (тредов операционной системы) нет никакого толка из-за глобального лока интерпретатора. Но немногие догадываются, что как и любой лок, этот время от времени освобождается. В частности, это происходит при операциях ввода-вывода, в том числе и сетевых. А значит, потоки можно использовать для распараллеливания http-запросов — пока один поток ожидает ответа, другой спокойно обрабатывает результат предыдущего или готовит следующий.

                        Получается, всего-то нужен пул потоков, который будет выполнять запросы. К счастью, такой пул уже написан. Начиная с версии 3.2 для унификации всей асинхронной работы в Питоне появилась библиотека concurrent.futures. Для второй версии Питона есть бекпорт под именем futures. Код до безобразия прост:

                        from concurrent.futures import ThreadPoolExecutor
                        
                        with ThreadPoolExecutor(concurrency) as executor:
                            for _ in executor.map(upload, queryset):
                                pass
                        

                        Здесь concurrency — число рабочих потоков, upload — функция, выполняющую саму задачу, queryset — итератор объектов, которые по одному будут передаваться в задачу. Уже этот код при concurrency в 150 смог пропихнуть на сервера Амазона ≈450 запросов в секунду.
                        Читать дальше →
                      • Играем с генетическими алгоритмами

                          Одним субботним декабрьским вечером сидел я над книгой The Blind Watchmaker (Слепой Часовщик), как на глаза мне попался невероятно интересный эксперимент: возьмём любое предложение, например Шекспировскую строку: Methinks it is like a weasel и случайную строку такой же длины: wdltmnlt dtjbkwirzrezlmqco p и начнем вносить в неё случайные изменения. Через сколько поколений эта случайная строка превратится в Шекспировскую строку, если выживать будут лишь потомки более похожие на Шекспировскую?

                          Сегодня мы повторим этот эксперимент, но в уже совершенно другом масштабе.



                          Структура статьи:
                          1. Что такое генетический алгоритм
                          2. Почему это работает
                          3. Формализуем задачу со случайной строкой
                          4. Пример работы алгоритма
                          5. Эксперименты с классикой
                          6. Код и данные
                          7. Выводы

                          Осторожно трафик!
                          Читать дальше →
                        • Интересное по хабу .Net за 2014 год

                            Мы с вами люди рабочие и зачастую не замечаем ничего что происходит за пределами нашей работы. Так и я, работая изо дня в день, знаю только про свой SpecFlow и смежные вопросы. Но ничего – по сторонам. Этим постом я хочу восполнить пробелы новостей в области .Net

                            Новости хаба .Net на Хабре занимают 33 страницы или 328 постов. Что говорит о том что новости появляются почти каждый день =) Посмотрим на самое интересное из них (на мой скромный взгляд). Ну и загляните под кат: до ката, конечно же, не все.

                            Доступен новый JIT: теперь с поддержкой SIMD
                            Как работает декомпиляция в .Net или Java на примере .Net
                            Microsoft раскрыла исходный код компилятора С#
                            Consulo: ~1000 коммитов, или как прошла осень
                            Под капотом у Stopwatch
                            Как тестировать код финализатора (c#). Послесловие: тест все-таки упал
                            Посмотреть на прочие статьи
                          • Первый опыт разработки iOS-приложения и размышления о маркетинге и рекламе

                            … в общем создал я игру. А дело было так.

                            Несколько месяцев назад подошёл мой начальник и обрадовал, что с сегодняшнего дня, в дополнение к своим основным обязанностям, я должен буду делать iOS-приложения (не сильно сложные, но по работе необходимые), что Mac mini мне купили и что я самый опытный из всех по части продукции Apple (это правда, т.к. ваш скромный слуга уже четвёртый год ходит с 1-м iPad). Ну ладно.
                            Что было дальше?