Как стать автором
Обновить
31
0
Немихин Игорь @YgReEk

Системный аналитик

Отправить сообщение

Оптимизация веб-серверов для повышения пропускной способности и уменьшения задержки

Время на прочтение31 мин
Количество просмотров45K


Привет! Меня зовут Макс Матюхин, я работаю в SRV-команде Badoo. Мы в Badoo не только активно пишем посты в свой блог, но и внимательно читаем блоги наших коллег из других компаний. Недавно ребята из Dropbox опубликовали шикарный пост о различных способах оптимизации серверных приложений: начиная с железа и заканчивая уровнем приложения. Его автор – Алексей Иванов – дал огромное количество советов и ссылок на дополнительные источники информации. К сожалению, у Dropbox нет блога на Хабре, поэтому я решил перевести этот пост для наших читателей.

Читать дальше →
Всего голосов 78: ↑78 и ↓0+78
Комментарии7

PyTorch — ваш новый фреймворк глубокого обучения

Время на прочтение22 мин
Количество просмотров196K

Gotta Torch?


PyTorch — современная библиотека глубокого обучения, развивающаяся под крылом Facebook. Она не похожа на другие популярные библиотеки, такие как Caffe, Theano и TensorFlow. Она позволяет исследователям воплощать в жизнь свои самые смелые фантазии, а инженерам с лёгкостью эти фантазии имплементировать.


Данная статья представляет собой лаконичное введение в PyTorch и предназначена для быстрого ознакомления с библиотекой и формирования понимания её основных особенностей и её местоположения среди остальных библиотек глубокого обучения.

Fire walk with me
Всего голосов 66: ↑64 и ↓2+62
Комментарии20

Есть две функции

Время на прочтение16 мин
Количество просмотров53K
Привет

Есть две булевы функции n аргументов, одна — константная, другая — сбалансированная. На какую сам сядешь, на какую фронтендера посадишь? Вот только функции неизвестны, а вызвать их разрешается лишь один раз.

Если не знаешь, как решить подобную задачу, добро пожаловать под кат. Там я расскажу про квантовые алгоритмы и покажу как их эмулировать на самом народном языке — на Python.
Hello darkness, my old friend
Всего голосов 121: ↑115 и ↓6+109
Комментарии61

Как понять, что происходит на сервере

Время на прочтение9 мин
Количество просмотров82K


Александр Крижановский ( krizhanovsky, NatSys Lab.)


По Сети уже давно бегает эта картинка, по крайней мере, я ее часто видел на Фейсбуке, и появилась идея рассказать про нее:


Читать дальше →
Всего голосов 98: ↑96 и ↓2+94
Комментарии20

Утилиты командной строки могут быть в 235-раз быстрее вашего Hadoop кластера

Время на прочтение7 мин
Количество просмотров45K
Примечания tsafin:

Перед публикацией своего цикла статей по MapReduce в Caché, мне показалось важным озвучить данную прошлогоднюю точку зрения из статьи Адама Дрейка «Command-line tools can be 235x faster than your Hadoop cluster». К сожалению оригинальная статья Тома Хайдена, на которую он ссылается стала уже недоступна на сайте Тома, но её, по-прежнему, можно найти в архивах. Для полноты картины предлагаю ознакомиться и с ней тоже.

Введение


Посещая в очередной раз свои любимые сайты, я нашел крутую статью Тома Хайдена об использовании Amazon Elastic Map Reduce (EMR) и mrjob для вычисления статистики отношения выигрыш/проигрыш в наборе данных со статистикой по шахматным матчам, которую он скачал с сайта millionbase archive, и c которой он начал играться используя EMR. Так как объем данных был всего 1.75GB, описывающий 2 миллиона шахматных партий, то я скептически отнесся к использованию Hadoop для данной задачи, хотя были и понятны его намерения просто поиграться и изучить плотнее, на реальном примере, утилиту mrjob и инфраструктуру EMR.
Читать дальше →
Всего голосов 70: ↑66 и ↓4+62
Комментарии48

Что почитать, чтобы писать нормально

Время на прочтение5 мин
Количество просмотров12K
damn-hard-writing

В прошлых выпусках мы рассказывали почему бренды должны делать контент, а не втупую пропагандировать свои продукты. Теперь поговорим о том, как писать о продукте. Сегодня мы поделимся полезными ссылками, чтобы вы никогда не писали как амёба.
Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии2

История света и тени в одной маленькой, но гордой игре

Время на прочтение7 мин
Количество просмотров35K
Если коротко, то суть статьи можно можно проиллюстрировать так:



Ниже небольшая история реализации освещения в игре подручными средствами.
Встречают, как известно, по одёжке, а когда в команде нет ни то, что арт-директора, а даже просто художника, обычному программисту приходится изворачиваться по-разному.
Читать дальше →
Всего голосов 78: ↑74 и ↓4+70
Комментарии27

Big Data от А до Я. Часть 1: Принципы работы с большими данными, парадигма MapReduce

Время на прочтение6 мин
Количество просмотров517K

Привет, Хабр! Этой статьёй я открываю цикл материалов, посвящённых работе с большими данными. Зачем? Хочется сохранить накопленный опыт, свой и команды, так скажем, в энциклопедическом формате – наверняка кому-то он будет полезен.



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



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


Читать дальше →
Всего голосов 58: ↑51 и ↓7+44
Комментарии35

Сортировка целых чисел при нехватке памяти

Время на прочтение13 мин
Количество просмотров33K
Автор оригинала на английском языке — хабраюзер dzeban

Введение


В прошлый раз мы обсудили, как можно искусственно ограничить доступную программе память. В качестве бонуса я заполучил себе libmemrestrict – библиотеку с обёртками функций вроде malloc для отслеживания использования памяти, и ptrace-restrict — инструмент на базе ptrace, перехватывающий вызовы brk, sbrk и mmap с той же целью.

Так зачем нам пытаться организовывать ограничение памяти – так ли это часто встречается? Когда в последний раз ООМ прибил ваше приложение? Вы всегда думаете о потреблении памяти во время программирования? Память – штука дешёвая, и если вам не хватает памяти, добавьте ещё пару гигабайт.

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

И вот я занялся подобными задачами, начав с простой – как отсортировать миллион целых чисел (4 MiB данных) при наличии 2 MiB памяти? Эту задачу можно обобщить на тот случай, когда у вас недостаточно памяти, чтобы вместить все данные.

Дано


Необходимо написать программу сортировки набора целых чисел, хранящихся в файле. Для его создания я написал простейшие утилиты randints и rangeints

Программа должна выдавать отсортированный массив на stdout в виде текста

Она должна измерить время работы и вывести его на stderr. Нельзя просто запустить программу через утилиту time, потому что она посчитает время на чтение файла и время на его вывод.

Она должна работать, имея памяти как минимум в два раза меньше объёма файла. Для этого мы применим libmemrestrict или ptrace-restrict.

Для некоторых методов эти утилиты не пригодятся. Например, для mmap они не сработают – придётся физически ограничить использование памяти.

Они будут проверяться для решения оригинальной задачи (сортировки 4 MiB в 2 MiB). Также я запущу их на виртуалке со 128 MiB памяти для сортировки 500 Mb (125 миллионов четырёхбайтных целых).
Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии9

Как научиться делать игры: полезные ресурсы

Время на прочтение9 мин
Количество просмотров111K
Когда я начинал строить свою карьеру в игровой индустрии шесть лет назад, то часто задавался вопросами по геймдеву. Начиная от поиска общего понимания того, как разрабатываются и оперируются онлайн-игры, до частных вопросов типа того, как лучше рекламировать конкретную игру. Тогда было мало структурированной информации по созданию и продвижению игр, новичку разобраться и найти ответы было исключительно сложно. Практически единственным источником информации был собственный опыт и консультации более опытных коллег. Сейчас ситуация кардинально изменилась. Информации по игровой индустрии настолько много, что рискуешь в ней просто утонуть. Для того, чтобы упростить процесс получения нужных мне знаний, я структурировал и делал себе пометки по всем источникам информации о геймдеве. Далее в статье предлагаю всю эту информацию в удобной форме для общего пользования.

image
Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии52

Визуализация статических и динамических сетей на R, часть 3

Время на прочтение4 мин
Количество просмотров9.7K
В первой части:
  • визуализация сетей: зачем? каким образом?
  • параметры визуализации
  • best practices — эстетика и производительность
  • форматы данных и подготовка
  • описание наборов данных, которые используются в примерах
  • начало работы с igraph

Во второй части: цвета и шрифты в графиках R.

В этой части: параметры графов, вершин и ребер.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии0

Компенсация погрешностей при операциях с числами с плавающей запятой

Время на прочтение8 мин
Количество просмотров53K
Работа посвящена погрешностям округления, возникающим при вычислениях у чисел с плавающей запятой. Здесь будут кратко рассмотрены следующие темы: «Представление вещественных чисел», «Способы нахождения погрешностей округления у чисел с плавающей запятой» и будет приведен пример компенсации погрешностей округления.

В данной работе примеры приведены на языке програмиирования C.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии17

Дневная астрономия

Время на прочтение4 мин
Количество просмотров47K
Все знают что астрономические наблюдения проводятся под покровом темноты, желательно вдали от яркой городской засветки. Тем не менее на небе можно увидеть много интересного даже при ярком солнечном свете. И это не только Солнце. Днем превосходно видно Луну, а при определенной сноровке можно разглядеть и сфотографировать даже некоторые планеты и космические аппараты! В статье много дневных фото и видео с различными небесными объектами.


Луна и Венера при дневном свете. Источник: Astronomy Picture of the Day, автор: David Cortner.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии25

Безопасность Wi-Fi сетей: обнаружение атак

Время на прочтение1 мин
Количество просмотров44K
image

Продолжение серии статей, посвященной вопросам современных угроз, сценариев атак и мерам противодействия. На этот раз мы рассмотрим примеры обнаружения атак на беспроводные сети.
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии4

Полезный софт для любителей астрономии

Время на прочтение7 мин
Количество просмотров52K


Многие любители астрономии берут с собой «в поля» ноутбуки с приложениями, облегчающими поиск и наблюдение за небесными объектами. Те же самые программы можно использовать и дома, подготовившись заранее и просто распечатав необходимые материалы. Или же проводить наблюдения прямо из окна, с балкона, с прилегающего участка, если это позволяет текущий уровень светового загрязнения и чистота атмосферы. Мы подобрали для вас различные приложения, которые могут быть полезны как начинающим, так и опытным астрономам-любителям. Добро пожаловать под кат.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии10

Вы неправильно пишете животных

Время на прочтение5 мин
Количество просмотров381K
Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.


Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
Читать дальше →
Всего голосов 442: ↑438 и ↓4+434
Комментарии352

Ритм игрового процесса – зачем нужна база

Время на прочтение6 мин
Количество просмотров27K


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

Механика базы работает чертовски просто:
  1. В игре создаётся некое место, где игроку приятно и безопасно проводить время.
  2. После периода напряжения игрок отправляется в это место.
  3. Закончить в этот момент сложно. Кто будет отказываться от приятного «отдыха»? Нет, из игры не выходят перед приятной частью.
  4. Далее мы стараемся без перехода выводить игрока в следующий цикл, требующий напряжения – так, чтобы игрок не успел понять, как там оказался.

В итоге получается механика, когда игрок просто не может остановиться перед следующим сложным этапом, потому что вместо выбора и рефлексии он уже там.
Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии33

Сложности сборки Python3 + Qt5 приложений под Windows

Время на прочтение4 мин
Количество просмотров50K
Недавно потребовалось мне сделать небольшую прогу под Windows. Раньше мне не доводилось разрабатывать под нее.
Сама программа несложная, написалась относительно быстро. Намного больше времени отъела сборка ее под винду. Понятно, что выбранные инструменты (Python3 + Qt5) не родные, а универстальные, но что потребуется столько времени затратить на сборку, я не предполагал.
Соответственно, хочется поделиться практикой, может кому еще придется стучаться лбом в эту стену.
Под катом выстраданная инструкция как легко собирать PyQt5 приложения в single-file.exe не требующий инсталлятора.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии18

Введение в машинное обучение с помощью scikit-learn (перевод документации)

Время на прочтение6 мин
Количество просмотров93K
Данная статья представляет собой перевод введения в машинное обучение, представленное на официальном сайте scikit-learn.

В этой части мы поговорим о терминах машинного обучения, которые мы используем для работы с scikit-learn, и приведем простой пример обучения.

Машинное обучение: постановка вопроса


В общем, задача машинного обучения сводится к получению набора выборок данных и, в последствии, к попыткам предсказать свойства неизвестных данных. Если каждый набор данных — это не одиночное число, а например, многомерная сущность (multi-dimensional entry или multivariate data), то он должен иметь несколько признаков или фич.

Машинное обчение можно разделить на несколько больших категорий:
  • обучение с учителем (или управляемое обучение). Здесь данные представлены вместе с дополнительными признаками, которые мы хотим предсказать. (Нажмите сюда, чтобы перейти к странице Scikit-Learn обучение с учителем). Это может быть любая из следующих задач:

  1. классификация: выборки данных принадлежат к двум или более классам и мы хотим научиться на уже размеченных данных предсказывать класс неразмеченной выборки. Примером задачи классификации может стать распознавание рукописных чисел, цель которого — присвоить каждому входному набору данных одну из конечного числа дискретных категорий. Другой способ понимания классификации — это понимание ее в качестве дискретной (как противоположность непрерывной) формы управляемого обучения, где у нас есть ограниченное количество категорий, предоставленных для N выборок; и мы пытаемся их пометить правильной категорией или классом.
  2. регрессионный анализ: если желаемый выходной результат состоит из одного или более непрерывных переменных, тогда мы сталкиваемся с регрессионным анализом. Примером решения такой задачи может служить предсказание длинны лосося как результата функции от его возраста и веса.


  • обучение без учителя (или самообучение). В данном случае обучающая выборка состоит из набора входных данных Х без каких-либо соответствующих им значений. Целью подобных задач может быть определение групп схожих элементов внутри данных. Это называется кластеризацией или кластерным анализом. Также задачей может быть установление распределения данных внутри пространства входов, называемое густотой ожидания (density estimation). Или это может быть выделение данных из высоко размерного пространства в двумерное или трехмерное с целью визуализации данных. (Нажмите сюда, чтобы перейти к странице Scikit-Learn обучение без учителя).

Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии0

Data Science: путь к профессионализму

Время на прочтение8 мин
Количество просмотров22K
Здравствуйте все!

На волне непрекращающихся дискуссий о Hadoop и прочих больших данных мы не могли пройти мимо замечательной публикации Джерри Овертона, рассказывающей о профессиональном подходе к анализу больших данных в компаниях любого размера. Понятные картинки, предоставленные автором, а также краткий парад технологий, без которых современному Data scientist'у не обойтись. Поэтому пусть статья и начинается с (ошибочной!) посылки: «Не читайте книги по Data Science», она заслуживает публикации в блоге нашего издательства.

Если среди уважаемых читателей найдутся те, кто захочет обсудить Hadoop и прочие технологии из его экосистемы, а также литературу по специфическим алгоритмам, затронутым автором — давайте побеседуем об этом в комментариях.
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии5
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность