Pull to refresh
1
Константин@ConstOrVar

Разработчик мобильных приложений

Send message

Поиск с возвратом

Reading time6 min
Reach and readers6.4K

Привет, Хаброжители! Представьте, что вы находитесь на перекрестке в лабиринте и знаете, что один из трех маршрутов впереди ведет к выходу.

Читать далее

Пока другие выбирают архитектуру, поиск по коду в GitVerse уже работает

Level of difficultyEasy
Reading time5 min
Reach and readers5.3K

Поиск по коду — одна из тех функций, ценность которых ощущается мгновенно. Она либо есть и экономит часы, либо её нет — и ты начинаешь открывать файлы вручную, клонировать репозиторий, запускать find или средства своей IDE и вспоминать «где же это было».
Мы добавили в GitVerse поиск по коду в репозиториях. и сделали это быстро. Не потому что «срезали углы», а потому что опирались на инструмент, который десятилетиями решает задачу поиска по коду внутри Git: git grep. Пока другие поднимают тяжёлые поисковые платформы, возводят кластеры, строят индексаторы, мы выбрали простое и проверенное решение, которое работает прямо сейчас.

Читать далее

Что умеют школьники, которые через 5 лет будут нашими коллегами

Reading time13 min
Reach and readers8.4K

Школьные олимпиады по информатике до сих пор воспринимаются как отдельный мир, где дети решают абстрактные задачи, далёкие от реальной работы. Но сильный олимпиадник сегодня уже не просто быстро пишет код. По уровню алгоритмического мышления он близок к junior, а иногда и к middle-разработчику, только без боевого опыта. Он умеет жить в таймлимитах, думать об асимптотике, быстро проектировать решение, дебажить под давлением и работать не только с чистой алгоритмикой, но и с задачами по ИИ, безопасности и робототехнике. Поэтому заключительный этап Всероссийской олимпиады школьников по информатике, который в этом году проходит с 22 по 28 марта, показывает, какой инженер будет нужен индустрии через несколько лет. Чтобы понять, из каких скилов собирается портрет будущего инженера, мы посмотрели, как сегодня устроен финал олимпиады, какие задачи там дают и чему он на самом деле учит.

Читать далее

Достаточно подробная спецификация — это код

Level of difficultyEasy
Reading time10 min
Reach and readers22K

Эта статья, по сути, родилась как развёрнутая версия комичной зарисовки, которую вы видите выше.

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

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

Читать далее

«Let well alone»: почему в больших проектах мы перестали удалять код

Level of difficultyMedium
Reading time6 min
Reach and readers9.1K

Введение

Многие из нас начинали с книг Роберта Мартина и свято верили: чистый код — это святое. Мёртвый код нужно безжалостно удалять, рефакторинг проводить каждый спринт, а технический долг — гасить немедленно. Эта догма впитывается с первых месяцев работы.

Но если вы когда-нибудь работали в проекте, который живёт больше пяти лет, в high‑load системе или enterprise‑среде, вы наверняка сталкивались с парадоксом: самые стабильные части системы — это те, к которым никто не прикасается годами.

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

Читать далее

Патенты вместо диссертаций: как Китай меняет правила игры

Level of difficultyEasy
Reading time9 min
Reach and readers22K

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

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

Читать далее

Как оператор связи видит, что вы используете VPN — техническая сторона вопроса

Level of difficultyMedium
Reading time6 min
Reach and readers321K

VPN шифрует ваш трафик, но не скрывает сам факт использования VPN. Провайдер знает — и вот как именно. Разбираю четыре уровня обнаружения: от проверки IP по базам до DPI-анализа TLS fingerprint’ов и российских ТСПУ с пропускной способностью 132 Тбит/с, которые в марте 2026-го ушли в bypass из-за перегрузки.

Читать далее

Kaspresso: cравниваем скриншоты и упрощаем проверку дизайна

Level of difficultyMedium
Reading time7 min
Reach and readers5.2K

Хабр, привет! Меня зовут Никита Евдокимов, я работаю старшим разработчиком в «Лаборатории Касперского», а также являюсь мейнтейнером репозитория Kaspresso. Это наш фреймворк для тестирования пользовательских интерфейсов на Android, основанный на Kakao, Espresso и UI Automator.

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

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

Читать далее

Статья, в которой я рассуждаю о том, как улучшить code review

Level of difficultyEasy
Reading time6 min
Reach and readers7.3K

Представьте себе: вы закончили большую задачу, написали много строк кода, проверили всё, даже подумали над названием каждой переменной! Но откладываете создание PR на день, два, три…из-за того, что не хочется идти в ревью и получать критику?

А мне такое и представлять не надо. Я испытываю подобное почти перед каждый своим ревью, даже спустя 6 лет в разработке.

Читать далее

Evil Merge: как малварь пряталась в git merge-коммите 3,5 месяца

Level of difficultyMedium
Reading time5 min
Reach and readers13K

Несколько месяцев назад я делал плановую проверку кодовой базы на одном из проектов и нашёл обфусцированный код в файле vite.config.js. Он был на той же строке что и закрывающий };, но сдвинут вправо на несколько сотен пробелов — туда, куда ни один diff-вьюер не прокрутит и ни один редактор не покажет без горизонтального скролла.

Я пошёл смотреть через git log — какой коммит это принёс. Оказался merge-коммит. Не обычный коммит в ветке — именно merge. И вот тут началось интересное.

Читать далее

SIP- и Push-уведомления. Опыт с Android-устройствами

Level of difficultyHard
Reading time9 min
Reach and readers4.6K

Аннотация

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

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

Читать далее

Не соглашаясь с Большим Братом. Telegram и MTProxy

Level of difficultyMedium
Reading time10 min
Reach and readers97K

Как работает блокировка Telegram в России, что такое ТСПУ и Deep Packet Inspection, почему MTProxy с Fake TLS — это больше чем прокси, и зачем мониторить прокси-серверы, которые умирают от обновления DPI-фильтров в 3 часа ночи.

Читать далее

OpenIDE Plugin: от нуля до Bug Bounty — учимся создавать  плагины и давим баги

Reading time17 min
Reach and readers8.1K

Нас с ребятами в OpenIDE уже какое-то время спрашивают, как написать свой плагин. И вот пришла пора рассказать, как это делается.

Читать далее

После Лема: как другие фантасты «золотого века» предсказали удаленку, дипфейки и платную подписку на двери

Reading time11 min
Reach and readers8.1K

Привет, Хабр! В прошлый раз мы говорили о Станиславе Леме. Он очертил будущую философию ИИ, ролевой интеллект и симуляцию сознания. Но есть вопросы, которые он почти не трогал: а как мы будем жить среди этого всего? Как изменится быт, восприятие реальности, социальная ткань? Есть исключения — «Возвращение со звезд» или, например, «Магелланово облако», но, как было сказано в прошлом посте, бетризации мы вряд ли дождемся.

Так что в этот раз я предлагаю обсудить, что об этом думали другие авторы. 

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

Сегодня — о двух противоположностях, которые оказались весьма близки в своих прогнозах и видении. Встречайте: Клиффорд Саймак и… уже догадались? 

Читать далее

Не настраивайте локальное окружение вручную. Devcontainers — уже пора! Часть первая

Reading time15 min
Reach and readers9K

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

Всё это — девконтейнеры! Да, мы начинаем программировать прямо в контейнере. И всё это бесплатно и без необходимости развёртывания новых сущностей в вашей организации. О такой кнопке «сделать хорошо» мы и поговорим в этой статье по мотивам моего доклада для DevOps Conf

Читать далее

Рецензия на книгу «Искусство визуализации в бизнесе. Как представить сложную информацию простыми способами»

Level of difficultyEasy
Reading time6 min
Reach and readers7.1K

Книга «Искусство визуализации в бизнесе» — это второе издание известного практического руководства по визуализации данных, в свою очередь выросшего из авторского проекта FlowingData.com. В отличие от академических книг по статистике данных (с наводящими зубную боль сложными графиками) или дизайнерских альбомов с красивыми иллюстрациями, здесь акцент сделан на рабочем процессе, от поиска данных до готовой визуализации, пригодной для бизнес-отчета, презентации перед инвесторами или аналитической записки руководителю.

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

Читать далее

Как учиться? (большая статья, основанная на личном опыте)

Level of difficultyEasy
Reading time10 min
Reach and readers16K

Недавно пришло осознание, что до текущего момента большую часть своей жизни я посвятил учебе. Школа, бакалавриат, магистратура, адаптация в 2-х компаниях, курсы, книги, лекции на ютубчике. Говоря в цифрах, это заняло почти 20 лет, а если еще добавить период от рождения до школы, ведь там мы тоже учимся — говорить, ходить, взаимодействовать с окружающим миром, то вообще получается, все 26 лет своей жизни я учился.

И-и-и, знаешь, я ничего не помню :-) Ладно, что-то всё-таки помню, недаром говорят, что образование — это то, что остается после того, когда забываешь всё, но, в школьные годы я закончил музыкалку, а сейчас не могу сыграть ни одного произведения. Каждый год я берусь за изучение английского, но для понимания английской речи этих порывов не хватает. Подобных примеров я могу много привести.

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

Читать далее

Wildberries, Ozon и Сбер начали блокировать VPN-пользователей: как приложения определяют, что у вас включен VPN

Level of difficultyMedium
Reading time4 min
Reach and readers96K

Wildberries показывает «У вас включен VPN? Отключите», Ozon не грузит карточки товаров, ВкусВилл предупреждает об ошибках. Минцифры дало 20+ компаниям дедлайн до 15 апреля. Разбираю 5 методов, которыми приложение на вашем телефоне определяет VPN — от проверки tun0-интерфейса на Android до рассинхронизации GPS, IP и SIM-карты.

Читать далее

Самый простой способ устроить утечку памяти в Java

Level of difficultyEasy
Reading time12 min
Reach and readers9K

В новом переводе от команды Spring АйО рассмотрим утечки памяти в Java.

Не секрет, что GC освобождает только недостижимые объекты. Утечка в Java начинается там, где объект уже не нужен, но на него все еще есть цепочка ссылок от живого потока.

Симптомы обычно одинаковые: куча растет, GC срабатывает чаще, паузы увеличиваются, финал - java.lang.OutOfMemoryError: Java heap space.

В целом вывод такой, что нужно смотреть график heap в VisualVM/JVisualVM/JConsole, снимать heap dump (jmap), в Eclipse MAT запускать Leak Suspects и проверять цепочки удерживающих ссылок.

Читать далее

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

Level of difficultyHard
Reading time12 min
Reach and readers8K

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

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

Читать далее

Information

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