Как стать автором
Обновить
@Senseye read⁠-⁠only

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

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

Найти за полсекунды: сравниваем похожие фотографии

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

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

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

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

Читать далее
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 7

Запуск графических приложений в Docker

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

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

Читать далее
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 8

На Восток

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

Раз уж я застрял в китайской командировке давайте я вам расскажу немного о Китае и китайцах. Тем более, что в ближайшие годы нам, по всей видимости, придется все больше с сотрудничать. Налаживать с ними отношения непросто, но можно. Сложность в том, что мы очень привыкли к западной культуре. А Восток –абсолютно другой. Выделю три ключевых принципа, которые помогают мне понимать их мышление и логику. Первое  - это огромная плотность населения, на юго-востоке Китая она раз в 100 выше чем в России. И этот момент определяет многое в сознании китайцев. Нам гораздо проще общаться с амерами и европейцами не в силу языкового или религиозного сходства, а именно потому что плотности населения примерно одинаковы. Второе -  Запад индивидуалистичен, а Восток – коллективен. И третье – Запад вербален, а Восток – невербален. Слова здесь дешевы и могут ничего не значить, а вот дружба (если сложится) ценится выше. У китайцев своеобразное понятие о чести (несколько отличающиеся от нашего), но придерживаются они его свято. Я еще по “развеселым 90м” усвоил – людям с Востока можно доверять. Они не прощают предательства, но если ты им верен –пойдут за тебя в огонь и воду. Итак, по пунктам

Язык

Очень сложный. Принципы построения абсолютно другие. Иероглифы – это скорее некие символы и образы, а не просто буквы. И этими символами китайцы как-то оперириуют. Дополнительная сложность в том, что смысл зависит от тональности. Одни и те же слова могут иметь совершенно разное значение, в зависимости от того, как они произнесены. Для того чтобы выучить китайский может и двух лет не хватить. Это не английский, который я за пару месяцев выучил. Тут я за долгое время выучил штук 20 иероглифов, а для того чтобы хоть как то общаться надо примерно 500. Всего же их около 5000. Не сказать, чтоб я сильно в этом отношении напрягался, и напрасно. По-английски в Китае не говорит почти никто. Радостное исключение – девчонки на ны Reception в отеле. Поэтому многие вопросы (заказ еды, составление маршрутов) решаются через них. :) C остальными приходится общаться на пальцах (мальчик жестами обьяснил что его зовут Хуан :)).  Или через переводчик на телефоне. Он позволяет хотя бы читать и писать. Но вот местные диалекты, ему часто не под силу. Так что на изучение китайского надо налечь – занятие крышесносящее но увлекательное :) Тем более, что в ближайшие несколько лет знание языка даст огромные преимущества.

Читать далее
Всего голосов 130: ↑103 и ↓27 +76
Комментарии 213

Пишем свой плагин для IDEA для поддержки нового языка (часть 1)

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

В статье рассмотрено как создается языковой плагин для IDEA на примере учебного языка Monkey. Приведены примеры из других плагинов. Пишем на Java и Kotlin.

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

Разрабатываем приложение на Golang + gRPC + gRPC Gateway

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

Сегодня я хотел бы поделиться особенностью разработки сервисов на Golang вместе с протоколом gRPC. В этой статья я не буду рассказывать, что такое gRPC, protobuf и для чего они нужны, вместо этого я сосредоточусь на технической части.

Мы напишем простое приложение на Golang, который в качестве транспортного протокола будет использовать gRPC, а так же с помощью gRPC Gateway мы подключим поддержку RESTful API.

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

Как Uber сэкономил 70 тысяч ядер благодаря полуавтоматической настройке сборки мусора

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

Введение


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

Технологический стек Uber состоит из тысяч микросервисов на базе нативной облачной архитектуры на основе планировщика. Большинство этих сервисов написано на Go. Наша команда Maps Production Engineering ранее сыграла важную роль в значительном повышении эффективности множества сервисов Java при помощи настройки сборки мусора. В начале 2021 года мы исследовали возможности достичь такого же эффекта в сервисах на Go. Мы запустили несколько профилей CPU для оценки текущего состояния дел и выяснили, что сборка мусора была главным потребителем ресурсов CPU в подавляющем большинстве критически важных сервисов. Ниже приведено описание некоторых профилей CPU, в которых сборка мусора (определяемая объектом runtime.scanobject) потребляет значительную долю выделенных вычислительных ресурсов.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 4

Отрасль IT в России поставили на паузу

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

Intel, AMD, Dell, Lenovo, HP etc, короче - все серьезные высокотехнологичные компании прекращают работу с Россией.

Читать далее
Всего голосов 376: ↑349 и ↓27 +322
Комментарии 969

Rust 1.59.0: встроенный ассемблер, деструктурирующее присваивание, отключение инкрементальной компиляции

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

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

Читать далее
Всего голосов 41: ↑34 и ↓7 +27
Комментарии 9

70+ бесплатных инструментов для компьютерной криминалистики (форензики)

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

Расследование инцидентов в области информационной безопасности не такая горячая тема, как пентесты, но эта научная и практическая дисциплина продолжает развиваться, во многом, благодаря Open Source-сообществу.

Давайте пройдемся по просторам GitHub и посмотрим, какие инструменты для сбора и анализа цифровых доказательств доступны всем желающим.

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

Читать далее
Всего голосов 37: ↑36 и ↓1 +35
Комментарии 2

Telegram позволяет узнавать координаты людей с точностью до метра

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

В телеге давно есть опциональная фича live location sharing, который показывает точное расстояние до людей поблизости. Если использовать GPS спуфинг и трилатерацию (не путать с триангуляцией), то можно узнавать координаты людей в любой точке планеты с точностью до метра. Телега проигнорировала сообщение об этой "фиче", поэтому автор выложил всё на github.

Читать далее
Всего голосов 103: ↑88 и ↓15 +73
Комментарии 91

Golang пощупаем дженерики

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

Скоро выйдет релиз 1.18 в котором появятся долгожданные дженерики. Они позволят сделать универсальные методы. Я написал пару примеров для себя. Может быть они будут интересны кому-нибудь ещё.

Давайте разберём что появилось.
Всего голосов 26: ↑21 и ↓5 +16
Комментарии 45

JavaScript редактор SVG диаграмм который весит в 6,5 раз меньше bootstrap (библиотека с открытым исходным кодом)

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

Demo | GitHub

Эксперименты с созданием редактора диаграмм на Blazor Webassembly (Blazor WebAssembly: Drag and Drop в SVG, Blazor WebAssembly: соединительные линии в SVG) показали что технология не годится для интенсивных манипуляций с DOM.

То что будут проседания было известно заранее: WebAssembly не имеет доступа к DOM, любые изменения только через вызовы JavaScript. Задержки оказались такими большими, что перетаскивание на мобильном тормозило уже после добавления третьей фигуры.

Читать далее
Всего голосов 41: ↑39 и ↓2 +37
Комментарии 17

Автоматизация оптимизаций в Go

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

Привет, Хабр! Меня зовут Денис Лимарев, я разработчик платежной системы в Delivery Club.
Недавно мы провели два митапа: по оптимизациям и по нашему новому линтеру. На первом митапе разобрали оптимизации кода на Go, а в рамках второго поговорили про создание и возможности нашего нового линтера, который может искать и самостоятельно применять эти оптимизации, и не только. Как делался линтер и поиск каких оптимизаций смогли автоматизировать — читайте под катом.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 1

Локальная разработка в Kubernetes с помощью werf 1.2 и minikube

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

В этой статье на примере простого приложения будут описаны подготовка и развертывание инфраструктуры для локальной разработки с Kubernetes и последующий запуск проекта в этом окружении.

Зачем это может понадобиться? Предоставляя услуги поддержки инфраструктуры нашим клиентам, нам часто приходится искать баланс между эффективностью и затраченными ресурсами. Когда есть потребность в нескольких рабочих окружениях для разработчиков (stage, dev, test, review и т.п.), как правило, ограничивающим фактором в их реализации являются деньги. Поэтому для решения такой задачи — в дополнение к динамическим окружениям (или вместо них) — задействуются локальные окружения прямо на рабочих местах разработчиков, о которых и пойдет речь далее.

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

Stripe: сервис вашей мечты для автоматизации денежных переводов

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

Имевшие дело с сервисом электронных платежей Stripe знают, что он отлично заточен под разработчиков. Его документация написана людьми для людей; есть хороший тестовый режим — полная копия реального, и для перехода на live-режим нужно только заменить ключи, не трогая API и не получая никаких сюрпризов; админка тестового режима — тоже полная копия боевого. В общем, Stripe — это хорошо, и я хочу посвятить эту статью базовым вопросам интеграции сервиса в e-Commerce-проект, объяснив процессы на конкретных и абстрактных примерах. Надеюсь, что мой опыт поможет всем, кто хочет попробовать Stripe на своём проекте.

Читать дальше →
Всего голосов 20: ↑14 и ↓6 +8
Комментарии 15

Ещё 20+ игр, которые прокачивают логику, алгоритмы и радуют умный мозг [по следам комментариев на Habr]

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

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

Еще я веду канал в Telegram: GameDEVils, делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).
Читать дальше →
Всего голосов 83: ↑82 и ↓1 +81
Комментарии 59

15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли

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


Есть «Super Mario», признанная классика видео игр. Есть «Doom», который запускают на чайниках и тестах на беременность. Есть супер-популярные по статистике twitch.tv игры («League of Legends», «GTA V», «Fortnite», «Apex Legends») которые стримят пятая часть всех стриммеров.

А есть игры, на которые очень мало обзоров, но они супер крутые — игры про алгоритмы. Игры, в которых можно кодить на ретро-компьютере; игры, которые надо взламывать; игры, где можно программировать контроллеры или поведение персонажей; игры, где можно создавать свою игру внутри игры.

Под катом подборка классных игр про алгоритмы за последние 10 лет. Если что-то упустила — буду рада дополнениям.

Еще я создала канал в Telegram: GameDEVils, буду делиться там клевыми материалами (про геймдизайн, разработку и историю игр).
Читать дальше →
Всего голосов 98: ↑93 и ↓5 +88
Комментарии 98

В поисках gRPC-шлюза

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

Дано:

несколько gRPC-сервисов, каждый слушает свой порт.

сервисы могут доверенно подключаться друг к другу, для аутентификации используется Mutual TLS.

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

Найти:

единую точку входа для API (API Gateway) для gRPC, HTTP/2.

Дисклеймер: решение так и не найдено, зато проведено исследование gRPC-отражения (reflection). Много ссылок.

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

Эту кнопку нажали 5453 раза…

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

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

Эту кнопку нажали 5454 раза…
Всего голосов 26: ↑21 и ↓5 +16
Комментарии 28

Ветвление на GPU: так ли всё страшно?

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

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

Давайте исправим ситуацию.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 3

Информация

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