Pull to refresh
37
0.1
Maxim Firsov @FirsofMaxim

Mobile developer, Golang backend developer

Send message

«Каждый имеет право быть похожим на себя». Расстройство аутистического спектра и карьера в IT: личный опыт

Reading time15 min
Views27K

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

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

Читать далее

Собеседование по System Design: как запроектировать и не потеряться

Level of difficultyMedium
Reading time8 min
Views21K

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

Предположим, вы решили развлечься дизайном систем (System design), пусть даже и не добровольно, на собеседовании. Если компания поленилась поделиться рабочим контекстом, то задача может быть в формате «запроектируй Твиттер». Более кандидатоориентированная компания N может попросить «спроектируй поиск на сервисе N».

Хотя статей типа «как запилить Твиттер» довольно много, не все помогут сориентироваться на реальном собеседовании. В этой статье предлагаю покопать вглубь и составить чек-лист, некий алгоритм. Он будет чуть шире, чем принято «для Твиттера», хотя универсальным его сделать не получится. Мне эта схема помогала и помогает, хотя у каждого свои фишки и предпочтения. 

Читать далее

Почему мы решили перейти с JUnit4 на JUnit5

Level of difficultyEasy
Reading time8 min
Views2.6K

Меня зовут Александр Чекунков, я — Android‑разработчик в СБЕРе. Занимаюсь разработкой CSI‑опросов в мобильном приложении «СберБанк Онлайн». Я несу ответственность за функциональность, которую используют бизнес‑команды для оценки удовлетворённости клиентов.

Не так давно, в нашем проекте мы приняли решение перейти с JUnit4 на JUnit5. Эта статья поможет разобраться в причинах выбора JUnit5 в качестве целевого решения для написания unit‑тестов. Я постараюсь ответить на ключевые вопросы: что делает JUnit5 предпочтительным выбором для современных проектов, и какие конкретные улучшения и нововведения он предлагает?

Читать далее

Как веб-специалисту начать пентест API мобильного приложения и не сломать макбук

Level of difficultyMedium
Reading time11 min
Views4K

Я активный участник программ Bug Bounty и достаточно часто смотрю не только веб‑приложения, но и мобильные приложения, чтобы определить все конечные точки API сервиса и попробовать найти баг в функционале до которого не всегда просто добраться. А почему непросто? Потому что в мобильных приложениях часто встречается SSL Pinning, который не дает перехватывать трафик, а поэтому анализ API приложения становится более сложным. В этой статье я изложу:

1. Как отключить SSL Pinning и получить возможность внедряться в процессы iOS приложений.

2. Как отключить SSL Pinning и внедриться в Android приложение без наличия смартфона на одноименной ОС.

Читать далее

Git. Скачем между ветками как древесные лягушки

Level of difficultyEasy
Reading time6 min
Views36K

Статей на тему много, но, видимо, недостаточно. Последние 10 лет в 4-х разных компаниях время от времени слышу от коллег:

— Не могу пошарить экран с кодом, у меня другая ветка сейчас.

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

— Стаскивать ветку для просмотра ПР? Это же неудобно, надо "стэшить" изменения, ветку переключать.

Читать далее

Почему умение дебажить — один из самых важных навыков для разработчика

Level of difficultyMedium
Reading time8 min
Views9K

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

Читать далее

Как нормализовывать телефонные номера

Reading time5 min
Views11K

Замечали когда-нибудь, что все записывают телефонные номера по-разному? Некоторые пишут их через пробелы, другие через дефис, а кто-то использует скобки. Разные люди по-разному группируют цифры номеров в числа.

И это становится реальной проблемой, когда вам нужно сохранить телефонные номера в базе данных и затем извлекать из неё записи по ним.
Читать дальше →

Архитектура кроссплатформенного многомодульного приложения

Level of difficultyHard
Reading time11 min
Views11K

Хочу поделиться своим опытом создания кроссплатформенного приложения на базе kotlin-multiplatform (KMP), организации его архитектуры, настройки для работы с различными библиотеками и особенностями его работы. Статья подойдет в первую очередь разработчикам, которые уже имеют опыт с многомодульными проектами в android и начинают изучать KMP. В конце я опишу свою реализацию архитектурного паттерна MVI и его применение в проекте.

Читать далее

Как мы строили BDUI: опыт Яндекс Маркета

Reading time11 min
Views6.5K

Привет! Меня зовут Алексей Морозов. Я уже несколько лет работаю в инфраструктурной команде Яндекс Маркета. Наша команда делает проекты, которые должны были улучшить скорость приложения, его качество и скорость разработки. Однако раньше такие проекты решали эти проблемы только на время, приложение снова деградировало. Всё это напоминает древнегреческий миф, в котором Сизиф толкает в гору камень, он скатывается вниз, и всё начинается по новой.

Такое положение дел нас не устраивало, поэтому было принято решение изменить подход. И мы построили BDUI (Backend Driven UI). В этой статье я расскажу о том, как это случилось, что сделали и какой в итоге получили результат. 

Читать далее

Локальный HTTPS в dev-окружении — простая настройка

Reading time6 min
Views16K


Иногда в процессе веб-разработки требуется безопасное окружение в браузере, то есть HTTPS. Удобный способ сделать это — установить локальный УЦ и автоматизировать выдачу сертификатов на любые поддомены lcl.host и localhost. Это более функциональная и удобная альтернатива самоподписанным сертификатам.

Для установки локального УЦ есть инструменты lcl.host и mkcert, которые помогают быстро настроить и использовать HTTPS в dev-окружении.
Читать дальше →

Как устроен рекомендательный сервис, который выдерживает 700 тысяч запросов в секунду. Доклад Яндекса

Reading time11 min
Views19K

«Баннерная крутилка» —  один из самых высоконагруженных сервисов в Яндексе. Он умеет переживать 700 тысяч RPS, а иногда и больше. Каждый раз, когда приходит запрос, крутилка должна просмотреть базу из миллиарда документов и выбрать из них самые релевантные для пользователя. При этом выдерживаются весьма жесткие временные рамки: 99% всех запросов обрабатываются менее чем за 200 миллисекунд.

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

Читать далее

Медленное дыхание пространства и древние массивные черные дыры

Level of difficultyEasy
Reading time5 min
Views8.3K

Проблеме темной материи уже почти сто лет – с открытия в 1933 году Фрицем Цвикки гравитационной стабильности скоплений галактик, которые не должны быть стабильны, если судить только по видимой материи в них. Этой проблеме сначала не уделялось должного внимания, но она неотвратимо росла, расползаясь на галактические и космологические масштабы. Квантовые космологи долго пытались продать в качестве темной материи кучу неведомых зверюшек в виде элементарных частиц, но, невзирая на предоплату в виде миллиардов долларов, так и не сумели предоставить покупателю ничего реального – все зверюшки (которых обычно ласково называют ВИМПами) оказались мертворожденными. Поэтому в последние годы пошел в гору тренд о том, что темная материя состоит из черных дыр. Прекрасная идея, которая имеет главную проблему – а где взять столько дыр? Ведь практически единственный известный механизм их образования – взрыв сверхновой, сжимающий свое ядро в компактный объект в несколько масс Солнца, который и превращается в черную дыру. Но эти взрывы сверхновых можно по пальцам пересчитать – и их явно не хватает. Несколько лет назад стала раскручиваться тема первичных (primordial) черных дыр, которые должны возникнуть в результате какого-то гипотетического механизма в разгар Большого Взрыва. Если посмотреть по статьям, размещаемым в arxiv, то год назад на ключевые слова WIMP и primordial black holes (PBH) выскакивало примерно одинаковое количество статей - что уже удивительно, потому что «чернодырниками» были немногочисленные теоретики, а за «вимпистами» стояли огромные коллективы обсерваторий, где искались ВИМПы – под землей, в Антарктиде, в космосе и т.д. Если сейчас, 21 мая, посмотреть архив, то за май о ВИМПах опубликовано 4 статьи, а о PBH - 27. Разница в несколько раз! Все умные ученые должны вливаться в этот бурный поток и с упоением клепать модели образования PBS на основании гравитонов, тахионов, биткоинов, а также колебаний инфлатона и индекса Доу-Джонса.

Читать далее

Неожиданные последствия запуска PostgreSQL в Docker: замедление запросов в 100 раз

Level of difficultyMedium
Reading time4 min
Views49K

У одного из клиентов нашей системы мониторинга PostgreSQL серверов возникла проблема сильного замедления запросов при запуске базы в Docker. В этой статье расскажем о возможных последствиях использования PostgreSQL в Docker с конфигурацией по умолчанию.

Читать далее

Радиоэфир без регистрации и СМС

Level of difficultyEasy
Reading time23 min
Views65K

Пост для тех, кто любит радиосвязь, но не радиолюбитель с позывным

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

В старшем возрасте я понял, что могу позволить завалить себя радейками и время от времени покупал различные недорогие модели, которые выбирал лишь по цене и внешнему виду. Но на удивление связать серенькие радиостанции с фиолетовыми или чёрными не получалось, даже если выбрать один и тот же номер канала. Пришлось разбираться, и всё оказалось куда сложнее, чем просто выбрать переключателем номер канала и нажать кнопку PTT (Push-To-Talk). Ну и осложнилось всё задачей не получить по шапке за эфир на частотах, где не следует этого делать. Для прояснения ситуации для начинающих и создан этот пост.
Читать дальше →

Долгая дорога к дому: как вода очищается на пути из скважины в частный коттедж

Reading time9 min
Views21K

О том, как очищается вода на пути в частные квартиры, на Хабре писали уже довольно много. Эта вода приходит в водопровод уже частично очищенной местным поставщиком. А потом дополнительно фильтруется системами фильтрации на вход, стоящими в квартире, — и становится питьевой. 

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

Мы в БАРЬЕР много лет изучаем этот путь воды и стараемся его облегчить, совершенствуя собственные системы фильтрации для коттеджей. Под катом мы проследим путь воды из скважины к потребителю в частном доме на примере нашей коттеджной системы очистки, покажем состав воды из скважины до и после фильтрации, и подробно расскажем про каждый этап. 

Пройти путь воды

Септик и автономная канализация. Часть 2. Проектирование

Level of difficultyEasy
Reading time15 min
Views15K

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

Читать далее

Курс «PostgreSQL для начинающих»: #1 — Основы SQL

Level of difficultyEasy
Reading time13 min
Views117K

Этим постом я запускаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В программе: рассказ об основах SQL, возможностях простых и сложных SELECT, анализ производительности запросов, разбор [не]эффективного применения индексов и особенностей работы транзакций и блокировок в этой СУБД.

Курс не претендует на лавры "войти в айти", поэтому подразумевает наличие у слушателя опыта программирования или работы с другими СУБД, и, главное, желания самостоятельно изучать тему работы с PostgreSQL глубже.

Для тех, кому комфортнее смотреть и слушать, а не читать - доступна видеозапись и слайды.

Читать далее

90+ дашбордов для OSINT и глобального мониторинга

Level of difficultyEasy
Reading time13 min
Views31K

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

Даже если вы никак не связаны с ИБ, зато часами залипали в контурные карты глобальных стратегий или восхищались глобусом в центре управления X-COM, эта подборка инструментов наверняка вам понравится.

Читать далее

Современный способ организации зависимостей в Android. Version catalog и Gradle convention plugin

Level of difficultyMedium
Reading time18 min
Views11K

Я — Денис, Middle Android-разработчик в «Лайв Тайпинге». В этой статье я расскажу о современном подходе организации зависимостей в Android. Вы узнаете как использовать version catalog и convention plugin в вашем проекте.

Читать далее

Сначала войдите через Телеграм

Reading time5 min
Views57K

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

Читать далее

Information

Rating
4,345-th
Location
Снежинск (Челябинская обл.), Челябинская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Mobile Application Developer
Senior
Android SDK
Kotlin
Java
Golang
PostgreSQL
SWIFT
iOS development
Android development