Как стать автором
Обновить
2
0
Alexander Matveev @negodnik

Пользователь

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

Пара слов о спецификациях

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

Всем доброго времени суток! Удивительно, но упоминание о шаблоне "Спецификация" в контексте php встречается крайне редко. А ведь с его помощью можно не только избежать комбинаторного взрыва методов репозитория, но и улучшить переиспользование кода. Я же в свою очередь хотел бы остановиться на еще одной возможности, предоставляемой данным паттерном. С ее помощью можно решить проблему, которая возникает почти в каждом веб-приложении. И лично мне очень не хватало этого знания еще пару лет назад.

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

Кроссплатформенный мультиплеер на Godot без боли

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

Недавно я начала заниматься разработкой игр на Godot и столкнулась с проблемой - мне понадобилась возможность реализовать мультиплеер с независимым сервером, при этом ещё и с возможностью игры из браузера. В Godot уже есть разные варианты реализации мультиплеера - но для ускорения разработки и во избежание ошибок при ручной сериализации/десериализации я решила попробовать связать клиент на Godot и сервер на Kotlin через вебсокеты и описывать их взаимодействие в формате protobuf.

Всех, кому интересна эта тема, прошу под кат.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии6

Доделал игру, работающую на видеокарте

Время на прочтение3 мин
Количество просмотров87K
Наконец-то я доделал игру, которая работает на видеокарте. Она несколько месяцев повисела в раннем доступе на стиме, и теперь я её окончательно выпустил. Основная фишка игры в том, что она представляет собой физическую симуляцию, которая выполняется на графическом процессоре. Основной код игры — это огромный compute shader, 6 тысяч строк на HLSL. Десятки тысяч взаимодействующих частиц обрабатываются параллельно, и выходит довольно быстро. Всё в игре сделано из этих частиц. Вот несколько гифок о том, как это работает:

image
Читать дальше →
Всего голосов 287: ↑276 и ↓11+265
Комментарии187

Безопасность через неясность недооценивается

Время на прочтение4 мин
Количество просмотров15K
В информационной безопасности мы выработали ряд аксиом, с которыми не принято спорить:

  • Никогда не внедряйте собственную криптографию.
  • Всегда используйте TLS.
  • Безопасность через неясность (security by obscurity) — это плохо.

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

Риск, эшелонированная оборона и швейцарский сыр


Одной из главных задач ИБ является снижение рисков. Согласно методологии OWASP, риск возникновения проблемы рассчитывается по формуле:

Риск = Вероятность * Воздействие

По этой формуле, проблема удалённого выполнения кода (RCE) представляет больший риск, чем проблема межсайтового скриптинга, поскольку RCE несёт большее воздействие. Здесь всё просто. Но что насчёт метрики вероятности?
Всего голосов 37: ↑30 и ↓7+33
Комментарии101

Методы приближенного поиска ближайших соседей

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


Довольно часто программисты и специалисты из области data science сталкиваются с задачей поиска похожих профилей пользователей или подбора схожей музыки. Решения могут сводиться к преобразованию объектов в векторную форму и поиску ближайших.


Мы тоже столкнулись с необходимостью поиска ближайших соседей в задаче распознавания лиц. Там мы формируем векторные представления лиц при помощи нейросети и ищем ближайшие векторы уже известных людей. Изначально для поиска мы выбрали Annoy, как хорошо известный и проверенный алгоритм, используемый в том числе в Spotify. Но быстро поняли, что с его аппетитами по памяти мы либо не вмещаемся в RAM, либо сильно теряем в точности. Это привело к небольшому исследованию. О результатах которого пойдет речь ниже.

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

Как GPU-вычисления буквально спасли меня на работе. Пример на Python

Время на прочтение12 мин
Количество просмотров62K
Привет, Хабр!

Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!


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

BERT — state-of-the-art языковая модель для 104 языков. Туториал по запуску BERT локально и на Google Colab

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

image


BERT — это нейронная сеть от Google, показавшая с большим отрывом state-of-the-art результаты на целом ряде задач. С помощью BERT можно создавать программы с ИИ для обработки естественного языка: отвечать на вопросы, заданные в произвольной форме, создавать чат-ботов, автоматические переводчики, анализировать текст и так далее.


Google выложила предобученные модели BERT, но как это обычно и бывает в Machine Learning, они страдают от недостатка документации. Поэтому в этом туториале мы научимся запускать нейронную сеть BERT на локальном компьютере, а также на бесплатном серверном GPU на Google Colab.

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

В поисках «Годзиллы». Нейросети и прогнозирование котировок на основе биржевых и «внешних» данных

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


Эта работа вдохновлена статьей «Мечтают ли нейросети об электроденьгах?», где автор без преувеличения талантливо в своей доходчивости объясняет, почему использование искусственных нейросетей на голых биржевых данных не приводит к успеху. Вот особенно, на мой взгляд, удачный отрывок:


«Цена не формирует сама себя… Если рынок выразить как метафоричное озеро, то биржевой график это лишь рябь на воде. Может быть это ветер подул, может камень в воду бросили, может рыбы плеснула, может Годзилла прыгает в 200 километрах на батуте. Мы видим лишь рябь.»

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


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

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

Исследование рынка тимлидов в России

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


Две недели назад к нам в New.HR пришел Егор Толстой (YourDestiny) и попросил собрать данные для его доклада на TeamLeadConf.

Егора интересовало:

  • Сколько вакансий тимлидов есть на рынке.
  • Какое количество вакансий закрывается внешними кандидатами, а какое – внутренними.

У нас было всего две недели до конференции, желание сделать интересный анализ рынка тимлидов, и вот что мы успели за это время:
Читать дальше →
Всего голосов 57: ↑52 и ↓5+69
Комментарии56

Ежегодный отчет Qrator Labs о сетевой безопасности и доступности

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


Есть у нас в Qrator Labs такая традиция — в начале, а февраль это точно не конец, каждого года публиковать отчет о годе предыдущем.

Как и любая многолетняя сущность, она обрастает множеством сопутствующих историй. К примеру, уже стало «доброй» приметой, когда в начале января на наши корпоративные страницы заходит очередная DDoS-атака, которую мы не успеваем разобрать в отчете. 2020 год стал наполовину исключением — вектор атаки мы успели описать (TCP SYN-ACK-амплификация), но именно к нам, на qrator.net, гость пожаловал (и не один) только 18 января, зато сразу с гостинцами: 116 Gbps при 26 Mpps.

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

Начнём мы с двух самых интересных нам тем прошлого года: SYN-ACK-амплификации и BGP-«оптимизации».
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии25

Анализ рынка недвижимости на основе данных с msgr.ru

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

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



© Designed by upklyak / Freepik

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

Redis Best Practices, часть 2

Время на прочтение11 мин
Количество просмотров23K
Вторая часть цикла переводов Redis Best Practices от «Redis Labs», и в ней рассмотрены паттерны взаимодействия и паттерны хранения данных.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии6

Работа каскада Хаара в OpenCV в картинках: теория и практика

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


В прошлой статье мы подробно описали алгоритм распознавания номеров (ссылка), который заключается в получении текстового представления на заранее подготовленном изображении, содержащем рамку с номером + небольшие отступы для удобства распознавания. Мы лишь вскользь упомянули, что для выделения областей, где содержатся номера, использовался метод Виолы-Джонса. Данный метод уже описывался на хабре (ссылка, ссылка, ссылка, ссылка). Сегодня мы проиллюстрируем наглядно то, как он работает и коснёмся ранее необсужденных аспектов + в качестве бонуса будет показано, как подготовить вырезанные картинки с номерами на платформе iOS для последующего получения уже текстового представления номера.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+39
Комментарии0

Как я уносил домены от одного российского регистратора

Время на прочтение2 мин
Количество просмотров21K
UPD из 2019 года: Важно понимать, что с момента событий прошло 10 лет, за это время могло многое поменяться как в интернетах впринципе (домены RU/РФ, к примеру, носятся между регистраторами безбумажно по коду), так и у webnames (см комментарий представителя).

Всем доброго хабрабудня!
Это пост о том, как я еле унес ноги домены от webnames.
Всем было понятно, что с сентября этот регистратор, мягко говоря, катиться вниз: заявки на регистрацию висят целыми выходными, поддержка не отвечает (точнее отвечает) неделями. Из этого мне стало понятно, что с тонущего корабля надо прыгать на шлюпку или хотя бы за борт.
Я решил унести домены.
Всего голосов 98: ↑91 и ↓7+84
Комментарии77

Unit тестирование в Laravel

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

Я часто слышу среди обсуждений в сообществе мнение, что unit тестирование в Laravel неправильное, сложное, а сами тесты долгие и не дающие никакой пользы. Из-за этого эти тесты мало кто пишет, ограничиваясь лишь feature тестами, а польза unit тестов стремится к 0.
Я тоже так считал когда-то, но, однажды я задумался и спросил себя — может быть я не умею их готовить?


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

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии10

Непрерывная интеграция/внедрение приложения Symfony с помощью docker-compose и GitLab CI

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

В статье я поделюсь своим опытом автоматизации всего процесса разработки приложения Symfony с нуля от настройки инфраструктуры до деплоя в production. От development- и до production-окружения для запуска приложения будет использоваться docker-compose, а все процедуры непрерывной интеграции/внедрения будут запускаться через GitLab CI/CD Pipelines в docker-контейнерах.


Подразумевается, что вы знакомы с docker и docker-compose. Если нет или вы не знаете как его установить, я подготовил инструкцию по подготовке локального окружения разработчика. Фактически, для работы над приложением потребуется только Docker, VirtualBox и, опционально, Yarn.

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

Разработчик SearchFace о возможностях алгоритма

Время на прочтение2 мин
Количество просмотров105K
Всем привет, я один из разработчиков сервиса SearchFace и готов поговорить о нём в комментариях.



Из-за шумихи с иском ВК на второй план отошло то важное, ради чего мы запустили сервис — чтобы протестировать возможности поиска. А раз уж теперь сервис доступен широкой публике, хочется продемонстрировать всем, на что способны наши алгоритмы распознавания.
Читать дальше →
Всего голосов 204: ↑200 и ↓4+196
Комментарии261

Git снизу вверх

Время на прочтение27 мин
Количество просмотров126K
У этого перевода не совсем обычная история. Системы контроля версий далеки от моих профессиональных интересов. Для рабочих проектов они мне требовались нечасто, причем, разные, так что, каждый раз, когда возникала такая необходимость, я заново вспоминала, как в них делается та или иная операция. А для личных проектов мне хватало возможностей Dropbox, хранящей историю версий файлов.


Изображение из твиттера @girlie_mac

Но вот однажды я на три незабываемых дня попала в роддом — это иногда случается с женщинами. Из развлечений у меня были новорожденная дочь и телефон с большим экраном. Дочь поначалу развлекала плохо (дома она быстро исправилась), а на телефоне помимо книг и фильмов обнаружился текст «Git from the bottom up», который оказался более чем годным… С тех пор прошло почти 3 года, подросшей дочке уже пора самой начинать использовать Git Git стал мейнстримом, если не сказать стандартом в современной разработке, а я с удивлением обнаружила, что перевода на русский этого чуда, полезного не только начинающим, но и продвинутым пользователям Git, до сих пор нет. Исправляю эту ситуацию.
Читать дальше →
Всего голосов 104: ↑102 и ↓2+100
Комментарии32

Сервер онлайн-вещаний на базе nginx

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

Введение


Привет всем! Несколько месяцев назад на Хабре была опубликована статья «Вещание онлайн-видео с помощью nginx» , в которой Aecktann рассказал о своем опыте внедрения разрабатываемого мной модуля к nginx для вещания видео — nginx-rtmp-module. С тех пор продукт активно развивался и в этой статье я более подробно расскажу о нем.

Вещатель нужен для передачи видео-потока клиенту. Речь идет либо о живом потоке, либо о вещании записанного видео (VOD, Video-on-demand). Существует большое количество технологий вещания видео. Среди них можно выделить традиционные протоколы, такие как RTMP или MPEG-TS, а также появившиеся в последнее время технологии адаптивного вещания поверх HTTP. К последним относятся HLS (Apple), HDS (Adobe), Smooth Streaming (Microsoft), MPEG-DASH. При выборе технологии основным фактором является ее поддержка на клиентской стороне. Именно поэтому вещание в формате RTMP на текущий момент является одним из самых распространенных. Протокол HLS поддерживается устройствами компании Apple, а также некоторыми версиями Android.
Читать дальше →
Всего голосов 82: ↑82 и ↓0+82
Комментарии99

Как организовать большое React-приложение и сделать его масштабируемым

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


Одной из лучших особенностей React является то, что он не накладывает каких-либо ограничений на файловую структуру проекта. Поэтому на StackOverflow и аналогичных ресурсах так много вопросов о том, как структурировать React-приложения. Это очень спорная тема. Не существует единственного правильного пути. Предлагаем разобраться в этом вопросе с помощью статьи Джека Франклина, в которой он рассказывает о подходе к структурированию больших React-приложений. Здесь вы узнаете, какие решения можно принимать при создании React-приложений: о выборе инструментов, структурировании файлов и разбивки компонентов на более мелкие части.
Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии16
1
23 ...

Информация

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