Pull to refresh
-18
0
Send message

Разработка в Wargaming – встреча с Максимом Барышниковым, Head of Platform (ч.II)

Reading time18 min
Views2.5K

Эта статья — продолжение беседы с Максимом Барышниковым, Wargaming, Head of Platform. Первая часть, посвященная технологиям и архитектуре, уже была опубликована на Хабре. Эта часть посвящена управлению в программистской компании.


Из неё вы узнаете, например:


  • Какая в Wargaming идеология разработки, что такое fear driven development и почему приходится сдерживать Scrum-адептов
  • Какие инструменты используют в Wargaming для сбора обратной связи и оценки «удовлетворенности» сотрудников и почему состояние «я устал, я ухожу» почти никогда не сюрприз
  • Насколько важны для инженеров soft skills и culture fit?
  • Что такое «переездец» и другие эпические мемы и фейлы компании
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments2

Разработка в Wargaming – встреча с Максимом Барышниковым, Head of Platform (ч.I)

Reading time25 min
Views11K

Все побежали, и я побежал. Недавно я запустил серию онлайн-митапов, куда приглашаю на дискуссию экспертов в области разработки крупных IT-проектов. Нашим первым гостем был Максим Барышников, Head of Platform из Wargaming. Ниже – расшифровка нашего разговора, вернее, её первая часть, посвященная архитектуре.


Из этой части вы узнаете, например:


  • сколько людей работает в Wargaming и сколько строк кода в «Танках»
  • как, какие и куда едут байты во время боя в «Танках»
  • какие подходы используют в Wargaming для обеспечения масштабируемости и отказоустойчивости
  • какие архитектурные боли испытывают и на какие компромиссы между геймплеем и инженерными практиками идут
  • почему в Python приходится отключать garbage collector, и где используется Erlang
  • какие у Wargaming open source policies, и что они открывают в паблик

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


image

Читать дальше →
Total votes 51: ↑47 and ↓4+43
Comments4

Sphinx Search 2 -> 3: бенефиты и проблемы миграции

Reading time13 min
Views2.9K

Автобиографический трактат о кардинальном обновлении версии поисковой системы, увлекательном приготовлении оного и ожидаемо скучный эпилог о том, как всё хорошо получилось: у нас был Sphinx Search 2.0.9, мы вовремя спохватились (посмотрев на календарь) и повезли актуальную версию.

Сделать что-нибудь — это полдела, сопровождать что-либо весь жизненный цикл — действительный путь настоящего уважающего себя самурая. Касается чего угодно — от проведения полноформатных ивентов с тысячами посетителей, до проектирования, запуска, серийного производства, обслуживания и выведения из эксплуатации с утилизацией пассажирских и грузовых авиалайнеров.

Проследовать в длиннопост
Total votes 12: ↑12 and ↓0+12
Comments6

Объединяя C++ и Python. Тонкости Boost.Python. Часть первая

Reading time10 min
Views146K
Boost.Python во всех отношениях замечательная библиотека, выполняющая своё предназначение на 5+, хотите ли вы сделать модуль на С++ для Python либо хотите построить скриптовую обвязку на Python для нативного приложения написанного на С++.
Самое сложное в Boost.Python — это обилие тонкостей, поскольку и C++ и Python — два языка изобилующие возможностями, и потому на стыке их приходится учитывать все нюансы: передать объект по ссылке или по значению, отдать в Python копию объекта или существующий класс, преобразовать во внутренний тип Python или в обёртку написанного на C++, как передать конструктор объекта, перегрузить операторы, навесить несуществующие в C++, но нужные в Python методы.
Не обещаю, что в своих примерах опишу все тонкости взаимодействия этих фундаментальных языков, но постараюсь сразу охватить как можно больше частоиспользуемых примеров, чтобы вы не лазили за каждой мелочью в документацию, а увидели все необходимые основы здесь, или хотя бы получили о них базовое представление.
Читать дальше →
Total votes 64: ↑64 and ↓0+64
Comments8

Прозрачное проксирование в I2P и Tor

Reading time2 min
Views40K
Всем привет!
Захотелось мне установить кеширующий прокси на основе Polipo, ну и заодно настроить прозрачное проксирование i2p и Tor. Из всех сервисов, которые есть в этих анонимных сетях(почта, торренты и прочее) я использую только веб, так что, скорее всего, вы не сможете использовать сервисы, которые используют не http протокол, если последуете по этой инструкции.
Есть у меня домашний сервер на Debian, который раздает интернет. Использовал TinyProxy в качестве распределителя на основе доменов, два демона polipo — один для кеширования интернета, второй для(в большей степени) преобразования socks5 в http прокси, чтобы прописать ее в TinyProxy, ну еще и кеширует Tor трафик отдельно; dnsmasq для резолва адресов .i2p и .onion(он у меня и до этого использовался и для DNS, и для DHCP).
Будем считать, что I2P и Tor уже настроены и работают.

                I2P (4444)
                /
LAN port — TinyProxy (8888) — Polipo-WAN (8123)
                \
                Polipo-Tor (8124) — Tor (9050)
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments18

Прокси сервер для свободного интернета

Reading time6 min
Views119K
Однажды мне окончательно надоели странички вроде «данный ресурс заблокирован по требованию», которые стали попадаться все чаще и чаще. А еще все больше стало упоминаний про «глубинный интернет», i2p, tor, onion, анонимные p2p сети и вообще повеяло хакерской романтикой детства, когда интернет был чем-то загадочным и был доступен только с двух часов ночи со скоростью 31200…

В общем, была поставлена цель: сделать прокси сервер, через который можно заходить на любые сайты (включая сайты в доменах .i2p и .onion) в обход любых блокировок. Цель обеспечения анонимности не ставилась.

Ужа с ежом удалось скрестить, и вот теперь я, как и 17 лет назад, исследую глубинные слои интернета. Кстати, если говорить про i2p, то скорость по ощущениям не намного больше, чем у интернета 17 лет назад. История циклична.

Статья не призывает к каким-либо действиям политического или криминального характера и предназначена для тех, кто не любит рамок и ограничений и сам выбирает что и как читать.

Как это работает:

Основным прокси сервером явлется squid.
Через cache_peer (вышестоящий прокси) squid подключается к i2p и tor. tor является Socks прокси, а squid — http прокси, поэтому между squid и tor встраивается прослойка privoxy.
Также мы имеем обновляемый ACL список всех заблокированных ресурсов в русском интернете.
Squid обрабатывает запросы от браузеров следующим образом:
Если запрашивается URL в домене .i2p, то запрос передается по цепочке в i2p.
Если запрашивается URL в домене .onion, то запрос передается по цепочке в tor.
Если запрашивается запрещенный URL, то запрос передается по цепочке в tor.
Все остальные запросы отправляются напрямую самим squid.

Инструкция как сделать интернет без ограничений своими руками:
Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments48

ZFSin: работаем с ZFS нативно под Windows

Reading time3 min
Views37K
image

Делая поиск на Хабру по слову ZFS, я обнаружил почти полсотни статей так или иначе упоминающих замечательную файловую систему c таким именем. Отдельно, к примеру, можно упомянуть достадочно свежие материалы "ZFS on Linux: вести с полей 2017" и "ZFS — лучшая файловая система (пока)". Делал этот поисковый запрос я вот почему…

Уже более 7 лет люди задаются вопросом, "как получить доступ к ZFS из Windows?". И приблизительно 6 лет вменяемого и практичного ответа на этот вопрос не существовало. Речь даже не о производительности, сама возможность хотя бы нативно читать данные в Windows из томов отформатированных под файловую систему ZFS будоражит мозг многих технарей и сисадминов. И вот однажды один энтузиаст решил изменить унылое положение дел c отсутствиеем поддержки ZFS в самой популярной потребительской десктопной ОС. Странно только, что за год эта новость до сих пор не добралась до Хабра. Думаю, стоит это исправить.

И так встречайте — ZFSin, нативный полнофункциональный драйвер файловой системы ZFS для Windows. Исходные коды лицензированы под Common Development and Distribution License (CDDL). Драйвер находится в альфа-стадии и не подходит для продакшн-окружений, но уже многое умеет.
Немного подробностей под катом
Total votes 33: ↑33 and ↓0+33
Comments73

Так ли плох XMPP, как его малюют? Каким Jabber стал сегодня

Reading time6 min
Views81K


Часто при обсуждении мессенджеров, при упоминании XMPP можно услышать слова:
Привет из двухтысячных! Неужели кто-то еще пользуется устаревшим протоколом? В XMPP до сих пор нет доставки файлов, сообщений, синхронизации, красивых клиентов?

Причина мифов о XMPP в том, что многим Jabber известен по мессенджерам из далеких двухтысячных годов и плохой осведомленности о особенностях XMPP. С двухтысячных прошло много времени, протокол продолжил существовать и активно развиваться. Современный Jabber уже сильно не похож на тот, который был раньше.

В этой статье мы рассмотрим для чего создавался XMPP, обсудим в комментариях причины снижения его популярности и каким Jabber стал сегодня

Предыстория


В двухтысячных годах у большинства интернет-гигантов были развернуты XMPP сервера. С одного сервера можно было написать на другой и вот уже казалось, если технологию немного доделать появится e-mail 2.0, универсальный мессенджер для всего Интернета, но тут что-то пошло не так.
Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments193

Dive into pyTorch

Reading time5 min
Views14K

Всем привет. Меня зовут Артур Кадурин, я руковожу исследованиями в области глубокого обучения для разработки новых лекарственных препаратов в компании Insilico Medicine. В Insilico мы используем самые современные методы машинного обучения, а также сами разрабатываем и публикуем множество статей для того чтобы вылечить такие заболевания как рак или болезнь Альцгеймера, а возможно и старение как таковое.


В рамках подготовки своего курса по глубокому обучению я собираюсь опубликовать серию статей на тему Состязательных(Adversarial) сетей с разбором того что же это такое и как этим пользоваться. Эта серия статей не будет очередным обзором GANов(Generative Adversarial Networks), но позволит глубже заглянуть под капот нейронных сетей и охватит более широкий спектр архитектур. Хотя GANы мы конечно тоже разберем.

Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments10

Firefox Gecko, «который мы потеряли»

Reading time11 min
Views49K

Эволюция идёт, и более слабые, медленные и неэффективные организмы вымирают. Не так давно мы проводили в пучину истории Оперу-12, глядя куда-то вдаль, молча слушая за спиной всхлипывания сочувствующих. В отличие от трупа последнего животного из Красной Книги, ею можно было ещё пользоваться 2-3 года, да и на некрофилов пользователи не смахивали. Похожая ситуация повторяется с Firefox на движке Gecko с последней наиболее удобной версией 56.0.2. Есть много полезной и привычной функциональности, не только встроенной, но и в аддонах (расширениях). Даже пониженное быстродействие — не основание для перехода к новой версии, если с ней теряется несколько полезных функций. А со старым движком есть, что терять...


Рассмотрим список того, чем ещё можно пользоваться в старой версии Firefox и с какими успехами идёт замена и восстановление этого в новых версиях. Что имеется совершенно нового, ради чего стоит всё бросить и забыть. (На самом деле — не обязательно. Ведь можно одновременно открывать старую и новую версии.)

Читать дальше →
Total votes 32: ↑25 and ↓7+18
Comments219

Книга «Как пережить полный конец обеда, или безопасность в PHP». Часть 1

Reading time22 min
Views45K
image

Big Five Part 3 by CrazyAsian1

Привет. Меня зовут Саша Баранник. В Mail.Ru Group я руковожу отделом веб-разработки, состоящим из 15 сотрудников. Мы научились создавать сайты для десятков миллионов пользователей и спокойно справляемся с несколькими миллионами дневной аудитории. Сам я занимаюсь веб-разработкой около 20 лет, и последние 15 лет по работе программировать приходится преимущественно на PHP. Хотя возможности языка и подход к разработке за это время сильно изменились, понимание основных уязвимостей и умение от них защититься остаются ключевыми навыками любого разработчика.

В интернете можно найти много статей и руководств по безопасности. Эта книга показалась мне достаточно подробной, при этом лаконичной и понятной. Надеюсь, она поможет вам узнать что-то новое и сделать свои сайты надёжнее и безопаснее.

P. S. Книга длинная, поэтому перевод будет выкладываться несколькими статьями. Итак, приступим…
Читать дальше →
Total votes 73: ↑64 and ↓9+55
Comments19

Установка Debian с корнем на шифрованном ZFS зеркале

Reading time30 min
Views30K

image


Предисловие


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


Для решения этой проблемы, я начал строить свой NAS, который даст мне, ко всему прочему, дополнительные возможности.


Изучив, какие сейчас имеются ОС для решения данной задачи, я пришёл к выводу, что изо всего многообразия, наиболее развиты, широко используемы и, следовательно, проработаны, FreeNAS на основе FreeBSD и OpenMediaVault на основе Debian, созданный одним из разработчиков FreeNAS.


FreeNAS стабилен, удобен, гибок и вообще хорош, но попытавшись его поставить, вместо FreeBSD bsdinstall, я увидел совершенно урезанный инсталлятор, в котором я могу только выбрать диски и ввести пароль root: даже разметить диски нельзя.
GELI мне понравился больше cryptsetup на Linux, как и BSD-шный parted.
Попытавшись сделать root на шифрованном разделе, я понял, что эта задача нетривиальна, несмотря на то, что они уже используют root на ZFS.
Затем, пообщавшись, с сообществом FreeNAS, которые стали доказывать, что FreeNAS — не ОС, а приложение, я решил установить OMV.


К тому же, Debian — моя основная ОС и с Linux дела обещали быть проще...


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

Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments15

Язык программирования, рассчитанный на минификацию

Reading time7 min
Views22K


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


В процессе общего обсуждения кто-то предложил нестандартную для мира демо идею: написать программу на каком-либо скриптовом языке. Дело в том, что все демо сжимаются упаковщиком для уменьшения размера (а при исполнении распаковываются). И текст сжимается намного лучше бинарного кода. Если интерпретатор будет иметь очень маленький размер, это может дать существенное преимущество.


Из-за опыта работы во фронтенде мне сразу пришла мысль дополнительно минифицировать код — удалить пробелы и необязательные элементы, сократить длину идентификаторов. Ведь сжатие сохраняет всю информацию, а многие элементы синтаксиса не являются необходимостью.


Но даже так большинство существующих языков не предназначены для данной оптимизации — очевидно, они имеют множество элементов, которые нужны для понимания человеку, а не машине. А что, если разработать язык, специально рассчитанный на минификацию?


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


Я решил провести эксперимент — сделать прототип языка и посмотреть, что из этого выйдет.

Читать дальше →
Total votes 56: ↑54 and ↓2+52
Comments38

Классификация музыкальных композиций по исполнителям с помощью Скрытых Марковских Моделей

Reading time8 min
Views10K
image

Скрытые марковские модели (Hidden Markov Models) с давних времен используются в распознавании речи. Благодаря мел-кепстральным коэффициентам (MFCC), появилась возможность откинуть несущественные для распознавания компоненты сигнала, значительно снижая размерность признаков. В интернете много простых примеров использования HMM с MFCC для распознавания простых слов.

После знакомства с этими возможностями появилось желание опробовать этот алгоритм распознавания в музыке. Так родилась идея задачи классификации музыкальных композиций по исполнителям. О попытках, какой-то магии и результатах будет рассказано в этом посте.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments20

Авторизация пользователя на вашем сайте через Telegram для Django

Reading time8 min
Views37K

Привет! 6 февраля Telegram ввел возможность добавлять на свой сайт виджет для авторизации пользователя через его аккаунт в Telegram. Виджеты по виду реализации на сервере делятся на два вида — обработать данные пользователя «здесь и сейчас» в JavaScript или же перенаправить данные в параметрах URL на указанный адрес. Также саму кнопку можно настроить внешне: изменять размер, закругление углов, отключать и включать фотографию.

Материал — руководство по настройке авторизации пользователя через Telegram-аккаунт на вашем сайте с помощью пакета django-telegram-login.
Читать дальше →
Total votes 29: ↑23 and ↓6+17
Comments16

Как ZFS хранит данные

Reading time55 min
Views13K
Zfs является достаточно популярной файловой системой для долговременного хранения данных. Кроме того она обеспечивает целостность записанных данных, сохраняя вместе с данными и их контрольные суммы. Механизм контрольных сумм позволяет выявить, и при наличии избыточности восстановить, поврежденные данные.

В данной статье на практическом примере производится разбор, как и куда zfs сохраняет данные.

Непосредственно для доступа к данным мы не будем использовать утилиту zdb, а попробуем с помощью radare2 посмотреть непосредственно на байты которые записаны на диске.
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments0

Анализ исходного кода Duke Nukem 3D: Часть 1

Reading time19 min
Views43K
image

Уйдя с работы в Amazon, я провёл много времени за чтением отличного исходного кода.

Разобравшись с невероятно замечательным кодом idSoftware, я принялся за одну из лучших игр всех времён: Duke Nukem 3D и за её движок под названием "Build".

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

Как обычно, я переработал свои заметки в статью. Надеюсь, она вдохновит вас на чтение исходного кода и совершенствование своих навыков.
Total votes 101: ↑98 and ↓3+95
Comments31

Двадцатка лучших веб-шрифтов

Reading time9 min
Views751K
Top 20 Fonts

Сейчас самое время повышать уровень дизайна своих работ с помощью веб-шрифтов


Без преувеличения, сейчас сетевая типографика переживает захватывающий период своей жизни. Недавние технологические скачки приблизили нас еще на шаг ближе к типографической нирване в интернете. Шаг, которого все так долго ждали.

Свобода использования веб-шрифтов вне безопасного списка на всех ведущих ОС стала возможной, по большому счету, благодаря трем основным, почти одновременным технологическим факторам: широко распространенной поддержке правила @font-face в браузерах; появлению таких «шрифтохранилищ» как Typekit и Fontdeck; создание нового формата шрифтов — архивированного файла шрифта WOFF.

Читать дальше →
Total votes 146: ↑128 and ↓18+110
Comments71

Tarantool: Хороший, Плохой, Злой

Reading time19 min
Views36K
image Многие слышали о NoSQL базе данных Tarantool, знают о том, что она умеет хранить данные в памяти, очень быстро их обрабатывает и обладает высокой производительностью. Тарантул был написан серьезными ребятами, которые обслуживают сервисы с сотнями тысяч запросов в секунду.

Система кажется сложной. Несмотря на российские корни, изначально даже не было документации на русском языке. Чем же может помочь этот мощный инструмент обычным парням — программистам и начинающим разработчикам? Остальные могут сразу посмотреть результат

Попробуем написать простой занимательный сервис, способный выдержать большую нагрузку. И никакого SQL!
Начнем!
Total votes 38: ↑35 and ↓3+32
Comments11

Книги для стартаперов

Reading time4 min
Views12K
image

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

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

Некоторые книги непосредственно про стартапы, другие — про маркетинг, третьи — про мотивацию, четвертые — про саморазвитие. Так или иначе, считаю, что все это стоит знать начинающим предпринимателям.
Читать дальше →
Total votes 113: ↑94 and ↓19+75
Comments56

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity