Архив за 14 июля 2014 - 5

Что-то меня пробило на написание заметок последнее время, поэтому пока энтузиазм не спал раздаю долги.
Год назад я пришёл на хабр со статьёй "TCP(syn-flood)-netmap-generator производительностью 1,5 mpps", после которой многие писали и даже звонили с просьбой описать создание такой же «вилки» со спуффингом на максимуме возможностей 10GB сети. Я всем обещал, а руки всё не доходили.
Кто-то скажет, что это руководство для хакеров, но ведь свинья грязи найдёт, а те кому нужен этот инструмент в благонадёжных целях могу остаться ни с чем.

image
Читать полностью »

3 и 5 июня прошел мастер-класс в онлайн-формате «Java EE: Архитектура, шаблоны и решения» Адама Бина.

Адам Бин – Java Champion, Top Java Ambassador и JavaOne Rock Star – предложил аудитории практикум по проектированию архитектуры Java-приложений масштаба предприятия.

Адам Бин показал, как проектировать архитектуру Java-приложений масштаба предприятия и кластеров приложений.
Слушателям было предложено поработать с исходным кодом программы и принять участие в обсуждении краеугольных понятий, необходимых для того, чтобы научиться проектировать сопровождаемые системы.

В ходе мастер-класса был написан код для самых интересных частей решения. Читать полностью »

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

Пусть есть задача обновить некоторые текстовые файлы, которые используются у нас в проекте. Данные выглядят как CSV, но так же содержат комментарии. Нам нужно отфильтровать некоторые записи по стране. Вот пример файла:
Читать полностью »

Хочу поделиться простым рецептом, как можно эффективно выполнять большое число 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 запросов в секунду.Читать полностью »

Это перевод моей публикации на английском языке.

Интернет полон статьями, заметками, блогами и успешными историями применения машинного обучения (machine learning, ML) для решения практических задач. Кто-то использует его для пользы и просто поднять настроение, как эта картинка:

image

Правда, человеку, не являющемуся экспертом в этих областях, подчас не так просто подобраться к существующему инструментарию. Есть, безусловно, хорошие и относительно быстрые пути к практическому машинному обучению, например, Python-библиотека scikit. Кстати, этот проект содержит код, написанный в команде SkyNet (автору довелось быть её лидирующим участником) и иллюстрирующий простоту взаимодействия с библиотекой. Если вы Java разработчик, есть пара хороших инструментов: Weka и Apache Mahout. Обе библиотеки универсальны с точки зрения применимости к конкретной задаче: от рекомендательных систем до классификации текстов. Существует инструментарий и более заточенный под текстовое машинное обучение: Mallet и набор библиотек Stanford. Есть и менее известные библиотеки, как Java-ML.

В этом посте мы сфокусируемся на библиотеке Weka и сделаем проект-заготовку или проект-шаблон для текстового машинного обучения на конкретном примере: задача распознавания тональности или сентимента (sentiment analysis, sentiment detection). Несмотря на всё это, проект полностью рабочий и даже под commercial-friendly лицензией, т.е. при большом желании вы можете даже применить код в своих проектах.Читать полностью »

Акселератор Qiwi Universe вместе с бизнес-инкубатором МГУ отобрал 12 проектов, которые получат больше $700 тысяч и пройдут акселерационную программу, сообщает компания в своем пресс-релизе.

Читать полностью »

Специально для Хаброжителей представляю вашему вниманию видео со стартаперской тусовки Private Startup BBQ из самого центра Кремниевой Долины, которую мы проводим раз в месяц, чтобы дать возможность стартаперам и предпринимателям познакомиться друг с другом, пообщаться, пожарить мясо, искупаться в джакузи и просто хорошо отдохнуть.

Читать полностью »

image

Всем привет! В нашем издательстве только что вышла книжка «Разработка игр под Android» авторства Дж Ди Марцио (J. F. DiMarzio), она же — «Android Game Recipes». Как видно из названия — данное компактное издание представляет собой не только пошаговое руководство для тех, кто только собирается начать писать игры под Android, но и полноценный cookbook, с решениями проблем и ответами на распространенные вопросы. Стоит отметить, что книга написана как помощник в решении конкретных вопросов и сценариев в процессе разработки игры, и подразумевает знакомство читателя с Java.
Читать полностью »

Здесь уже есть несоклько статей про настройку маршрутизаторов Juniper SRX (например, раз, два, три и т.д.). В этой я постараюсь консолидировать полезную информацию, дополнив ее некоторыми приятными мелочами.

Всех заинтересовавшихся прошу под кат.
Читать полностью »

Информатизация образования, школа будущего, федеральная целевая программа развития образования… Эти и подобные заголовки, использующиеся как лозунги, встречаются все чаще и чаще. И вроде бы, что-то даже делается. Школам поставляют оборудование (пусть и немного), программное обеспечение, их подключили к Интернету. Однако все эти благие начинания сталкиваются с катастрофической нехваткой нормальных специалистов, которые могли бы решить все возникающие в ходе информатизации школ проблемы. Может быть, для Москвы и Питера это и не столь критично. Но в регионах до сих пор во многих школах обязанности сисадмина выполняет учитель информатики (если он вообще есть в школе). А если и есть отдельный специалист, то это либо приходящий пару раз в неделю человек, либо студент, просто подрабатывающий параллельно учебе.

К чему весь этот разговор? А к тому, что если школы своими силами могут справиться с некими обычными ИТ-проблемами, то решение других задач может оказаться им не по зубам. Взять хотя бы требования к защите обучающихся от доступа к нежелательной информации. О том, что это нужно сделать, всем школам объявили (да и в законах это прописано). И о том, что за этим пристально следит прокуратура и наказывает «нарушителей» тоже (а многие школы это уже испытали «на своей шкуре»). Но вот о том, КАК это сделать, никто не говорит. По сути, школы предоставлены сами себе. И решают проблему контроля доступа детей к нежелательным сайтам как могут. А поскольку «можется» далеко не всегда хорошо (см. написанное выше), то у прокуратуры постоянно находится, кого «публично выпороть» и оштрафовать.

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

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

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js