Search
Write a publication
Pull to refresh
0
0
Андрей @andreypaa

User

Send message

Вам не нужен Hadoop — у вас просто нет столько данных

Reading time4 min
Views79K
Меня спросили: «Сколько у вас опыта с большими данными и Hadoop?» Я ответил, что часто использую Hadoop, но редко — с объёмами данных больше нескольких ТБ. Я новичок в больших данных — понимаю идеи, писал код, но не в серьёзных масштабах.

Следующий вопрос был: «Можете ли вы сделать простую группировку и сумму в Hadoop?» Разумеется, могу, и я попросил пример формата данных.

Они вручили мне флэш-диск со всеми 600 МБ данных (да, это были именно все данные, а не выборка). Не понимаю, почему, но им не понравилось моё решение, в котором был pandas.read_csv и не было Hadoop.
Читать дальше →

Вы понимаете Hadoop неправильно

Reading time5 min
Views41K

— Мы получаем больше миллиона твитов в день, и наш сервер просто не успевает их обрабатывать. Поэтому мы хотим установить на кластер Hadoop и распределить обработку.



Речь шла о вычислительно тяжёлом сентиментном анализе, поэтому я мог поверить, что у одного сервера действительно не хватает CPU, чтобы справиться с большим потоком твитов.



— А что вы собираетесь делать с уже обработанными данными?
— Скорее всего, мы будем складывать их в MySQL, как делали это раньше, или даже удалять.
— Тогда вам определённо не нужен Hadoop.



Мой бывший коллега был далеко не первым, кто говорил про распределённые вычисления на Hadoop. И каждый раз я видел полное непонимание того, зачем была придумана и разработана эта платформа.



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

Robozzle

Reading time2 min
Views21K
Хочу рассказать про игрушку для любителей «ненормального программирования», на которую я наткнулся случайно две недели назад. Я подсадил на неё весь наш офис и сам скрасил немало поездок в электричке.

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

История открытых данных и Хакатон Яндекса

Reading time14 min
Views17K
14 — 15 сентября в Москве пройдёт первый Хакатон Яндекса, участники которого будут два дня и две ночи создавать проекты на основе открытых государственных данных с помощью технологий Яндекса.

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

image

Это график из ЖЖ eugenyboger. То, что сейчас мы можем узнать подробные результаты выборов по каждому участку, — это норма, а еще совсем недавно это было не так даже в очень развитых странах.
Читать дальше →

Цикл разработки через Github

Reading time3 min
Views106K

Разработка



Я расскажу о цикле разработки через Github, который я использую. Он был проверен в течении года на командах разного размера: 3 — 14 человек.

Существует 2 основных ветки: master и dev.

master — стабильная ветка, готовая к выкатыванию на production сервер в любой момент.

dev — ветка, над которой в данный момент работает команда.

Итак, в начале разработки master и dev ветки идентичны.

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

Двухфакторная аутентификация в OpenSSH: ключ+одноразовый код

Reading time4 min
Views31K
В предыдущей статье я рассказал, как добавить проверку одноразовых кодов при логине на свой сервер по SSH. Статья завершалась словами «если ходим по ключу — двухфакторная аутентификация не работает (не используется PAM)».

С недавнего времени, после выпуска OpenSSH версии 6.2, ситуация поменялась к лучшему.

+

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

Всё, что вы хотели знать о динамическом программировании, но боялись спросить

Reading time12 min
Views248K
Я был крайне удивлён, найдя мало статей про динамическое программирование (далее просто динамика) на хабре. Мне всегда казалось, что эта парадигма довольно сильно распространена, в том числе и за пределами олимпиад по программированию. Поэтому я постараюсь закрыть этот пробел своей статьёй.

# Весь код в статье написан на языке Python

Основы


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

Динамическое программирование — это когда у нас есть задача, которую непонятно как решать, и мы разбиваем ее на меньшие задачи, которые тоже непонятно как решать. (с) А. Кумок.
Читать дальше →

Несколько интересностей и полезностей для веб-разработчика (выпуск 2)

Reading time3 min
Views83K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Webflow



С помощью данного сервиса вы сможете сверстать кроссбраузерный отзывчивый макет за 55 минут. Очень красивый и удобный интерфейс. Идеальное решение для веб-дизайнеров, 26 000 из которых уже используют Webflow. Для создания двух проектов сервис бесплатный, а в дальнейшей перспективе вас ждут вполне демократичные цены. Инструмент реально «крутой».

Если Вам GUI для верстки не комильфо сам по себе как для меня, все равно рекомендую зарегистрироваться и экспортировать парочку responsive макетов. А еще есть простой генератор отзывчивого лэйаута и Responsive Patterns.

Parallax.js


Функциональный и простой инструмент для создания параллакс эффекта.

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

Бутстрап, или прикладная статистика почти без формул

Reading time4 min
Views87K
BootstrapВ институтах студентов учат интегрировать аналитически, а потом обнаруживается, что на практике интегралы почти все считают численными методами. Ну или по крайней мере проверяют таким образом аналитическое решение.

В статистике тоже есть нечестный метод, который позволяет получить примерный ответ на многие практические вопросы без анализа, грубой компьютерной силой: бутстрап (англ. bootstrap). Придумал и опубликовал его в 1979 году Брэдли Эфрон.
Простой пример

Node.js не подходит для типовых веб-проектов

Reading time6 min
Views104K


«Node.js не подходит для серьезных сайтов и веб-приложений, а только для написания небольших API».
This is bull*hit. I have to say it.

От переводчика: недавно на coderwall.com появилась интересная статья от Ionut-Cristian Florescu об использовании Node.js для создания обычных («типовых») веб-проектов. До ее прочтения я был полностью согласен с заголовком статьи, но сейчас мое мнение несколько поменялось. Позиция автора может быть спорной во многих моментах, но его аргументы достаточно интересны. Если у вас есть собственное мнение по этому поводу, оставляйте его в комментариях.
Читать дальше →

Модифицированный телефон может заблокировать все звонки и SMS в соте

Reading time2 min
Views42K
Сделав простые изменения в обычном телефоне Motorola, исследователи из Берлина смогли заблокировать звонки и текстовые сообщения для людей, находящихся в одной зоне местоположения (location area). Их метод работает в 2G сетях, которые являются самыми распространенными в мире, пишет MIT Technology Review.

Атака заключается в модификации прошивки, которая может обмануть сеть доставки входящих звонков и SMS. В теории, один телефон может заблокировать сервис для всех абонентов базовой станции, говорит Жан-Пьер Сейферт, глава исследовательской группы в Техническом Университете Берлина. Сейферт с коллегами представили свой доклад на Usenix Security Symposium в Вашингтоне на прошлой неделе. Ниже ты можешь увидеть видео с демонстрацией эксперимента:

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

Способы представления словарей для автоматической обработки текстов

Reading time10 min
Views21K
Автоматический анализ текстов практически всегда связан с работой со словарями. Они используются для морфологического анализа, выделения персон (нужны словари личных имен и фамилий) и организаций, а также других объектов.

В общем виде словарь — множество записей вида {строка, данные ассоциированные с этой строкой}.

Например, для морфологического анализа словарь состоит из троек {словоформа, нормальная форма, морфологические характеристики}. При анализе слова «мыла» из предложения «мама мыла раму» надо уметь получать следующие варианты анализа:
Нормальная форма Характеристики
МЫЛО S (существительное), РОД (родительный падеж), ЕД (единственное число), СРЕД (средний род), НЕОД
(неодушевленность)
МЫЛО S (существительное), ИМ (именительный падеж), МН (множественное число), СРЕД (средний род), НЕОД (неодушевленность)
МЫЛО S (существительное), ВИН (винительный падеж), МН (множественное число), СРЕД (средний род), НЕОД (неодушевленность)
МЫТЬ V (глагол), ПРОШ (прошедшее время), ЕД (единственное число), ИЗЪЯВ (изъявительное наклонение), ЖЕН (женский род), НЕСОВ (несовершенный вид)


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

Правильная адаптивная типографика с FlowType.JS

Reading time1 min
Views16K
image


Согласно правилам типографики, контент страницы хорошо читается, если в строке от 45 до 75 символов. При разработке адаптивного дизайна это сложно реализовать только лишь с помощью Media Queries. Появился jQuery плагин FlowType, который помогает добиться такого соотношения при любом размере экрана и ширине окна.

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

Animate.css — набор кроссбраузерных CSS3 анимаций

Reading time1 min
Views94K

Animate.css




На днях наткнулся на эту замечательную вещь и решил поделиться с Хабрахабром.
Animate.css — сборка отличных кроссбраузерных CSS3 анимаций в одном файле.
Читать дальше →

Распределенная брутфорс-атака на CMS с точки зрения хостера

Reading time5 min
Views28K
Не секрет, что попытки подбора пароля методом перебора (брутфорс) — постоянное явление. Подбирают пароли к серверам и виртуальным машинам, к админкам сайтов и FTP-аккаунтам, к почтовым ящикам и социальным сетям.

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

1 августа началась, пожалуй, самая мощная в рунете брутфорс-атака на сайты, созданные с помощью самых распространенных бесплатных CMS: Wordpress, Joomla! и др.

Графики из мониторинга нагрузки

И вот как это было:
Читать дальше →

Python изнутри. Введение

Reading time7 min
Views101K
Boa constrictor1. Введение
2. Объекты. Голова
3. Объекты. Хвост
4. Структуры процесса

Помимо изучения стандартной библиотеки, всегда интересно, а иногда и полезно, знать, как язык устроен изнутри. Андрей Светлов (svetlov), один из разработчиков Python, советует всем интересующимся серию статей об устройстве CPython. Представляю вам перевод первого эпизода.

Мой друг однажды сказал мне: «Знаешь, для некоторых людей язык C — это просто набор макросов, который разворачивается в ассемблерные инструкции». Это было давно (для всезнаек: да, ещё до появления LLVM), но эти слова хорошо мне запомнились. Может быть, когда Керниган и Ритчи смотрят на C-программу, они на самом деле видят ассемблерный код? А Тим Бёрнерс-Ли? Может он сёрфит интернет по-другому, не так, как мы? И что, в конце концов, Киану Ривз видел в том жутком зелёном месиве? Нет, правда, что, чёрт побери, он там видел?! Эм… вернёмся к программам. Что видит Гвидо ван Россум, когда читает программы на Python?
Узнать ответ

Геолокационные игры — большой обзор

Reading time4 min
Views95K
image Вы все еще чекинитесь? Тогда геолокационные игры идут к вам! Со времен прошлого обзора годичной давности число достойных проектов чуть ли не удвоилось, в отрасли наметились лидеры, но каждый месяц возникают новые, перспективные стартапы. Для меня тема гео+социальных игр из хобби превратилась в основную работу, так что хочу поделиться самым свежим списком игровых гео-проектов, кратко рассказать о самых заметных и о том, куда дальше будет развиваться этот голубой океан.

Узнать больше про гео игры

Об одном способе защиты исходников Python-программы

Reading time9 min
Views100K

Как всё начиналось


Однажды мне пришлось участвовать в разработке одного небольшого проекта для научных расчётов, который разрабатывался на языке программирования Python. Изначально Python был выбран как удобный и гибкий язык для экспериментов, визуализации, быстрого прототипирования и разработки алгоритмов, но в дальнейшем стал основным языком разработки проекта. Надо заметить, что проект был хоть и не большим, но довольно насыщенным технически. Для обеспечения требуемой функциональности, в проекте широко применялись алгоритмы теории графов, математическая оптимизация, линейная алгебра и статистика. Также использовались декораторы, метаклассы и инструменты интроспекции. В процессе разработки пришлось использовать сторонние математические пакеты и библиотеки, например, такие как numpy и scipy, а также многие другие.

Со временем стало ясно, что переписывать проект на компилируемом языке слишком затратно по времени и ресурсам. Скорость работы и потребление памяти не являлись критичными показателями в данном случае и были вполне приемлемыми и достаточными. Поэтому было принято решение оставить всё как есть, и продолжить разработку и поддержку проекта на языке Python. К тому же, документация по большей части уже была написана с использованием Sphinx.

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

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

Как узнать, что ваш PHP сайт был взломан

Reading time11 min
Views135K
Сайт моего друга недавно был взломан, на нем была запущена старая версия IP.Board, в которой есть уязвимость локального внедрения кода (local file inclusion). Этот пост не будет посвящен IP.Board или другому php коду, он покажет, как найти потенциально вредоносный php код на ваших серверах. Наконец, покажу пример того, что злоумышленники могут загрузить на взломанный сайт.

Проверьте логи доступа


Что бы с чего-то начать, я бы хотел поделиться некоторыми записями из журнала доступа (access log) взломанного сайта моего друга.

IpreMOVED - - [01/Mar/2013:06:16:48 -0600] "POST /uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
IpreMOVED - - [01/Mar/2013:06:12:58 -0600] "POST /public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"

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

Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.

Рассмотрим подробнее приведенные выше строки журнала, ничего не цепляет вас?

Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
Читать дальше →

Information

Rating
Does not participate
Location
Мордовия, Россия
Date of birth
Registered
Activity