backend developer
Pacsafe, гроза карманников

Уже двадцать лет компания Pacsafe создает рюкзаки и сумки для путешественников. Не простые, а защищенные: от вскрытий, от краж, от попыток унести их из-под носа рассеянного владельца. Понятно, что охватить все две декады творчества дизайнеров компании в одном тексте невозможно. Поэтому мы расскажем о технологиях Pacsafe на примере семи актуальных сумок и рюкзаков.
Ctrl-Alt-Del: запланированное устаревание программистов

Каждый год на нью-йоркской конференции PyGotham собирается около 600 программистов. Организаторы знают, что IT-индустрия представлена в основном белыми и мужчинами, поэтому прилагают особые усилия, чтобы собрать разнообразную линейку докладчиков. Они продвигают это мероприятие в списках рассылок для женщин и цветных, проводят семинары, всячески их заманивают. Все докладчики заполняют опросник, а организаторы отслеживают ежегодную статистику по демографическому разнообразию конференции.
Я работаю в комитете конференции, и по окончании нынешнего PyGotham понял, что не приложил никаких усилий для устранения недопредставленности одной конкретной демографической группы: пожилых кодеров. По сравнению с недопредставленностью женщин и меньшинств в сфере технологий, обычно ускользает от внимания дефицит программистов в возрасте за сорок. В Нью-Йорке для них нет ни встреч, ни списков рассылки, ни известных организаций, представляющих их интересы. В следующем году я обязательно буду искать возрастных программистов для выступления на PyGotham. Но пока я не знаю, где их искать.
«Анализ данных на Python» в двух частях
Лекции предназначены для двух категорий слушателей. Первая — начинающие аналитики, которым сложно начинать с изучения, например, книги The Elements of Statistical Learning. Курс подготовит их к дальнейшей работе. Вторая — опытные аналитики, не получившие систематического образования в области анализа данных. Они могут заполнить пробелы в знаниях. С прошлого года на занятиях используется язык программирования Python.
Чтобы понимать материал, достаточно когда-то прослушанных курсов математического анализа, линейной алгебры и теории вероятностей и базовых знаний языка Python.
Приятного просмотра!
Scala + MXNet = Микросервис с нейронкой в проде

В интернете есть огромное количество руководств и примеров, на основе которых вы, дорогие читатели, сможете «без особого труда» и с «минимальными» временными затратами написать код, способный на фото отличать кошечек от собачек. И зачем тогда тратить время на эту статью?
Основной, на мой взгляд, недостаток всех этих примеров — ограниченность возможностей. Вы взяли пример, — пусть даже с базовой нейронной сетью, которую предлагает автор, — запустили его, возможно, он даже заработал, а что дальше? Как сделать так, чтобы этот незамысловатый код начал работать на production-сервере? Как его обновлять и поддерживать? Вот тут и начинается самое интересное. Мне не удалось найти полного описания процесса от момента «ну вот, ML-инженер обучил нейронную сеть» до «наконец-то мы выкатили это в production». И я решил закрыть этот пробел.
Обширный обзор собеседований по Python. Советы и подсказки
Всем привет!
Кратко о себе. По образованию я математик, а вот по профессии — программист. В сфере разработки с 2006 года. Хотя, поскольку программирование начали изучать ещё в школе, свои первые программки и игры я начал писать ещё в школе (примерно, с 2003). Так сложилось, что пришлось выучить и поработать на нескольких языках. Если не брать во внимание ВУЗ-овские лекции по С, С++, Бэйсику, Паскалю и Фортрану, то реально я работал с Delphi (более 6 лет), PHP (более 5 лет), Embedded (Atmel + PIC около 2.5 лет) и последним временем Python + чуть-чуть Scala. Конечно же без баз данных тоже никак не обойтись.
Для кого эта статья? Для всех, кто, как и я, хотел (или хочет) найти для себя достойную хорошо оплачиваемую работу с интересным проектом, классным коллективом и всякими плюшками. А также для тех, кто желает поднять свой уровень знаний и мастерства.
Открытый курс «Deep Learning на пальцах»
После 18-го февраля начнется открытый и бесплатный курс "Deep Learning на пальцах".
Курс предназначен для того, чтобы разобраться с современным deep learning с нуля, и не требует знаний ни нейросетей, ни machine learning вообще. Лекции стримами на Youtube, задания на Питоне, обсуждения и помощь в лучших русскоязычных DS-сообществах — ODS.ai и ClosedCircles.
После него вы не станете экспертом, но поймете про что все это, сможете применять DL на практике и будете способны разбираться дальше сами. Ну, в лучшем случае.
Одновременно и в том же объеме курс будет читаться для магистрантов Новосибирского Государственного Университета, а также студентов CS центра Новосибирска.
Выглядеть объяснение на пальцах будет примерно так:
Главная ссылка — dlcourse.ai. Подробности ниже.
Производительность PHP: планируем, профилируем, оптимизируем

Привет, Хабр! Два года назад мы писали о том, как перешли на PHP 7.0 и сэкономили миллион долларов. На нашем профиле нагрузки новая версия оказалась в два раза более эффективной по использованию CPU: ту нагрузку, которую раньше у нас обслуживали ~600 серверов, после перехода начали обслуживать ~300. В результате на протяжении двух лет у нас был запас мощностей.
Но Badoo растёт. Количество активных пользователей постоянно увеличивается. Мы совершенствуемся и развиваем нашу функциональность, благодаря чему пользователи проводят в приложении всё больше времени. А это, в свою очередь, отражается на количестве запросов, которое за два года увеличилось в 2—2,5 раза.
Мы оказались в ситуации, когда двукратный выигрыш в производительности нивелировался более чем двукратным ростом запросов, и мы опять стали приближаться к пределам нашего кластера. В ядре PHP снова ожидаются полезные оптимизации (JIT, предзагрузка), но они запланированы только на PHP 7.4, а эта версия выйдет не раньше, чем через год. Поэтому трюк с переходом сейчас повторить не удастся — нужно оптимизировать сам код приложения.
Под катом я расскажу, как мы подходим к таким задачам, какими пользуемся инструментами, и приведу примеры оптимизаций, идей и подходов, которые мы применяем и которые помогли нам в своё время.
Red Hat заменяет Docker на Podman

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

Как это работает, продолжение под катом.
Графовые базы данных: святой Грааль для разработчиков?

Прежде чем начать, давайте задумаемся, какая информация имеется у нас сегодня на повестке дня? Это уже не просто данные – это весьма непредсказуемая структура, которая со временем может превратиться либо в BigData, либо в сложную семантическую сеть, и часто разработчик не может заранее сказать, какой она будет. Так как же выбрать базу данных – или хотя бы ее архитектуру, чтобы создать действительно быстрое и эффективно работающее приложение?
Статический анализ PHP-кода на примере PHPStan, Phan и Psalm

Компания Badoo существует уже более 12 лет. У нас очень много PHP-кода (миллионы строк) и наверняка даже сохранились строки, написанные 12 лет назад. У нас есть код, написанный ещё во времена PHP 4 и PHP 5. Мы выкладываем код два раза в день, и каждая выкладка содержит примерно 10—20 задач. Помимо этого, программисты могут выкладывать срочные патчи — небольшие изменения. И в день таких патчей у нас набирается пара десятков. В общем, наш код меняется очень активно.
Мы постоянно ищем возможности как для ускорения разработки, так и для повышения качества кода. И вот однажды мы решили внедрить статический анализ кода. Что из этого получилось, читайте под катом.
10 полезных сайтов с 2D ресурсами для игр

С развитием HTML5 и мобильных платформ 2D-игры возвращаются в моду. Заниматься такими проектами, будь то браузерные игры, игры на телефон или для ПК, стало легче благодаря таким инструментам, как Unity, и онлайн-ресурсам с игровыми ассетами. Ниже представлен список из 10 лучших сайтов с 2D-ресурсами для игр – как платными, так и бесплатными.
Просто и качественно определяем язык сообщений

У нас в компании YouScan в день обрабатывается около 100 млн. сообщений, на которых применяется много правил и разных смарт-функций. Для корректной их работы нужно правильно определить язык, потому что не все функции можно сделать агностическими относительно языка. В данной статье мы коротко расскажем про наше исследование данной задачи и покажем оценку качества на датасете из соц. сетей.
Разработчики остались неизвестны. Лекция Яндекса
— Мой доклад будет про базы данных. Позвольте сразу спросить, схема метрополитена какого города изображена на этом слайде? Все линии идут в одну сторону.
Более эффективная запись массивов в постоянную память смарт-контракта в Solidity
Я только начинаю работать с Solidity и EVM, поэтому эта статья не претендует на истину в последней инстанции, но других материалов по этой теме ни на русском, ни на английском мне найти не удалось (хотя очень плохо, что вот эта статья мне не попалась раньше), поэтому я надеюсь, что она может оказаться кому-то полезна. Ну или в крайнем случае, она может оказаться полезна мне, если опытные товарищи расскажут, насколько и где именно я в ней не прав.
Для начала, я решил быстро прикинуть — получится ли у нас? Давайте возьмём стандартный, широко распространённый тип контракта — токен ERC20. По крайней мере, такой контракт хранит в блокчейне соответствие адресов людей, который купили токены, их балансам. В реальности, хранятся только балансы, каждый из которых занимает 32 байта (на деле здесь экономить не имеет смысла из-за особенностей Solidity и EVM). У более-менее успешного токена легко могут быть десятки тысяч обладателей, и таким образом получаем, что хранить в блокчейне около 320000 байт — вполне допустимо. А нам больше и не надо!
Наивный подход
Ну что же, попробуем наши данные сохранить. Значительная их часть — 8-битные целые беззнаковые числа, поэтому передадим их массив в контракт, и попробуем записать их в постоянную память:
Как защитить данные в облачных нейросетях — предложен новый метод шифрования

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

Различные классы сложности сортируют задачи в иерархическом виде. Один класс может содержать все задачи другого, плюс задачи, требующие дополнительных вычислительных ресурсов.
Какова фундаментальная сложность задачи? Такова постановка базовой задачи специалистов по информатике, пытающихся рассортировать задачи по т.н. классам сложности. Это группы, содержащие все вычислительные задачи, требующие не более фиксированного количества вычислительных ресурсов – таких, как время или память. Возьмём простой пример с большим числом типа 123 456 789 001. Можно задать вопрос: является ли оно простым числом – таким, которое делится только на 1 и себя? Специалисты по информатике могут ответить на него при помощи быстрых алгоритмов – таких, что не начинают тормозить на произвольно больших числах. В нашем случае окажется, что это число не является простым. Затем мы можем задать вопрос: каковы его простые множители? А вот для ответа на него быстрого алгоритма не существует – только если использовать квантовый компьютер. Поэтому специалисты по информатике считают, что две этих задачи относятся к разным классам сложности.
База данных штрихкодов скачать бесплатно без регистрации (и прочей хурмы)
Мы работаем над ним лет 8 и теперь в нем около 3 миллионов штрихкодов в стандартах EAN (EAN-13, EAN-8) и UPC (UPC-A, UPC-E).
Как мы пытались разобраться в штрихкодировании и ничего не поняли
Дело в том, что когда мы решали вопрос со штрихкодами первый раз в 2013 году, то наша команда состояла из 5 человек, а штрихкоды нам нужно было сделать буквально за один день, чтобы заключить первый наш договор с большой сетью. Соответственно, для срочного решения вопроса была использована случайная ссылка из выдачи поисковика по запросу «регистрация штрихкодов». А потом мы, по инерции, просто слали тем же людям артикулы на новые игры для регистрации — другие предложения не особо отличались по цене, и всё было нормально, пока подрядчик не пропал.
Казалось бы, какие проблемы? Найдите другого подрядчика и платите ему. Но в этот раз мы постарались выяснить, откуда берутся штрихкоды, чтобы не «получилось как в тот раз». Но когда открываешь гугл и пытаешься разобраться в вопросе, начинается полный постмодернизм.
Information
- Rating
- Does not participate
- Location
- Россия
- Registered
- Activity