Обновить
1
@Vedensread⁠-⁠only

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

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

«Прикинься шлангом и не высовывайся»: главное правило работы в системе

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели11K

Именно эту фразу, чаще всего я слышал от своего начальника работая в Управлении ФНС.

Двенадцать лет назад, начиная свой карьерный путь сразу после института, я руководствовался предельно понятным принципом:

«Сначала ты работаешь на свое имя, нарабатываешь опыт и знания, а затем уже имя и опыт начинают работать на тебя».

Читать далее

Дженерики в Go: три года спустя

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.1K

Когда в феврале 2022-го вышел Go 1.18 с дженериками, сообщество разделилось на два лагеря. Первые кричали «наконец-то!» и бросились переписывать всё подряд. Вторые — «не нужны были, не нужны и сейчас». Прошло три года. Пыль улеглась. И я хочу поговорить не о том, как написать func Max[T constraints.Ordered](a, b T) T — этому посвящены тысячи туториалов. Я хочу поговорить о том, что реально прижилось, какие паттерны оказались полезными, а где дженерики только мешают.

До 1.18 у нас было два пути: дублировать код под каждый тип или использовать interface{} (а теперь any) с приведением типов в рантайме. Оба такой вот компромисс.

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

Читать далее

Российский мессенджер MAX замечен в обращении к иностранным сервисам определения IP и серверам конкурентов

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели179K

Пользователи профильного NTC‑форума (открывается только через IPv6), посвященного исследованиям интернет‑цензуры и обхода блокировок, обнаружили необычное сетевое поведение российского мессенджера MAX. Речь про официальный APK с официального сайта.

Схема была довольно прямолинейной: в одном случае использовали PCAPdroid — приложение, которое на Android‑устройстве имитирует VPN для перехвата сетевого трафика без необходимости получения root‑прав, таким образом позволяя отслеживать, анализировать и блокировать сетевые соединения, осуществляемые приложениями на устройстве. В другом случае анализировался трафик из эмулятора, причем отдельно отмечено, что образ системы в эмуляторе был «чистый», без установленных других мессенджеров и дополнительного софта.

По наблюдениям (дампы PCAPdroid выложены на форуме), мессенджер MAX регулярно дергает сразу несколько сервисов для определения внешнего IP‑адреса, причём часть из них — зарубежные. Среди доменов, которые всплыли при проверке, кроме российских сервисов, видны также иностранные сервисы.

Читать далее

Пишем свой TCP-чат на Go: пошаговый гайд на пальцах

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели5.7K

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

Цель — создание простого tcp сервера для обмена сообщениями.

Читать далее

Как мы сделали AI code review через Ollama без облака?

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели9.3K

Как запустить AI code review по git diff на своей машине через Ollama - без облака и API-ключей? Установка, конфиг и пример отчёта.

Читать далее

EXPLAIN ANALYZE: как находить узкие места в запросах PostgreSQL

Уровень сложностиПростой
Время на прочтение23 мин
Охват и читатели9.7K

В этой статье мы разберём, как PostgreSQL обрабатывает запросы, изучим работу планировщика запросов и освоим анализ отчётов EXPLAIN ANALYZE — важнейшего инструмента оптимизации запросов. Эти знания помогут вам находить и устранять узкие места в производительности, оптимизировать запросы и предотвращать проблемы, из-за которых СУБД может работать медленнее.

Читать далее

Когда 200+ бэкенд-разработчиков меняют 400 микросервисов: зачем нужно архитектурное ревью

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели9.8K

Что будет, если больше 200 бэкенд‑разработчиков запускают по 2–3 новых проекта в неделю в более чем 400 микросервисов, написанных на пяти разных языках — C++, Go, Python, Java и PHP? Ответ хорошо знаком любому, кто сталкивался с быстрорастущей распределённой системой: хаос появляется быстрее, чем успеваешь его отлавливать. И в какой‑то момент становится очевидно, что нужна надёжная точка контроля, чтобы поддерживать архитектуру в рабочем состоянии.

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

Читать далее

Как мы изобрели PHP, но в 10 раз медленнее: почему React Server Components – это архитектурный тупик

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели22K

На днях я стряхнул пыль с небольшого пет-проекта. Это простой блог, наверняка каждый из вас хотя бы думал о таком для себя.
В 2015 году я бы просто закинул файлы по FTP на хостинг за 100 рублей. Время деплоя: 30 секунд.
В 2026 году я потратил 4 часа. Я настраивал Edge Middleware, дебажил рассинхрон HTML между клиентом и сервером (hydration mismatch) и разбирался, почему облако не хочет дружить с моей базой данных из-за долгого пробуждения функций (холодного старта).

Где мы свернули не туда?
Это колесо Сансары, которое дало новый оборот.

Читать далее

Если бы я начинала свой путь в IT заново

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

Я начинала в 2018 году, будучи в 10-м классе. Моим первым системным обучением стал Яндекс Лицей, где я изучала Python и впервые увидела программирование не как учебную дисциплину, а как инструмент создания реальных решений.

Читать далее

Партиционирование PostgreSQL: опыт команды Геосервисов

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели7.7K

Всем привет! Поводом для написания этой статьи послужила ситуация, с которой мы в команде Геосервисов столкнулись.

Когда наша база данных нормализованных OSM-данных достигла размеров в 600+ ГБ, VACUUM стал занимать 6+ часов. Мы начали приближаться к пределу хранилища (600 GB из 1 TB), а производительность запросов деградировала. Стало очевидным — партиционирование неизбежно.

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

Читать далее

Что пугает лично меня в развитии искусственных помощников

Время на прочтение4 мин
Охват и читатели20K

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

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

Есть вещи, связанные с бешеным распространением ИИ в шарнармассах, которые меня по-настоящему, действительно беспокоят.

Нытьё Кассандры

Подсказка вместо мышления: как автогенерация кода меняет junior и middle за один год

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели18K

Я год наблюдал, как в нашей команде junior и middle разработчики почти полностью пересели на автогенерацию кода. Сначала это выглядело как ускорение. Через несколько месяцев начали всплывать странные эффекты: деградация архитектурного мышления, рост скрытого техдолга и зависимость от подсказок. В этой статье — не морализаторство, а практические наблюдения, конкретные примеры кода и вопросы, которые мне самому пришлось себе задать.

Читать далее

Proxy и VPN. В чём смысл этих понятий и чем они отличаются

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели26K

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

Читать далее

Получение списка и содержимого чатов Telegram с помощью TDLib (на примере Kotlin)

Уровень сложностиСредний
Время на прочтение33 мин
Охват и читатели8.7K

Когда я стал решать задачу получения сообщений из Telegram для последующего анализа, понял — не хватает простого и понятного введения во взаимодействие с Telegram в роли клиента, а не бота. Официальная документация Telegram отличается от привычной мне документации в мире Java и Rust как по подаче, так и по качеству. Большинство статьей по запросу "how to load chats from telegram" отсылают к высокоуровневым библиотекам на Python.

Главная цель статьи дать основу для разработки приложений на Telegram на среднем уровне абстракции TDLib и взаимодействие с Telegram c помощью посылки и получения сообщения MTProto. В этой статье я постарался раскрыть как надо читать документацию мессенджера, какие существуют способы взаимодействия с платформой и по каким принципам спроектировано API. Во многих местах я не буду давать детальное описание всех параметров, предоставив вместо этого ссылку на документацию. Задача статьи — дать фундамент для разработки своих сценариев. Несмотря на использование Kotlin, информация из статьи будет полезна для любого языка программирования.

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

Погрузиться в TDLib

B4 — обход DPI с веб-интерфейсом

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели144K

B4 - инструмент обхода DPI на Go с веб-интерфейсом.

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

Читать далее

Мой тимлид не пишет код 3 года. Почему он — лучший тимлид, с которым я работал

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели24K

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

Читать далее

Как я перестал «вайбкодить» с LLM и собрал процесс разработки, который не разваливает проект

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели42K

Я использую LLM в повседневной разработке уже больше года и довольно быстро упёрся в типовую проблему: модель генерирует “красивый код”, но по мере роста проекта появляется дублирование, разъезжается стиль, растёт число заглушек и отладка становится дорогой. В статье покажу процесс, который мне помог: как разделять контекст по чатам, какие артефакты требовать на каждом шаге и какими чек-листами я проверяю результат.

Читать далее

Как нам перегрузили производство из-за нейронки

Время на прочтение11 мин
Охват и читатели28K

Дано: пользователи не знают, что делать с нейросетями. Это известная проблема. Если им не дать прикладной интерфейс, они не понимают, что можно почти всё.

Мы знали, что те, кто загоняют своё селфи в модель и спрашивают, какую уходовую косметику купить, потом её часто покупают. Потому что модель фигни не посоветует. Ну и это косметика, там «Да, вы абсолютно правы, это была летальная доза, приношу извинения» не бывает. Почти.

Мы дали людям интерфейс приложить селфи. Думали, поиграем и забудем. Фредди, например, модель выдала комплимент про идеально отполированную кожу (ну а что, после такого радикального пилинга он реально блестит), а у Дарта Мола нашла тёмные круги.

В конце модель подбирает 5 пробников и дарит их.

Стоит 200 рублей. Это просто отсечь халявщиков.

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

Через месяц нам снесли мощности производства — пробники работали, люди хотели большой флакон.

Виноваты, конечно, тиктокеры.

Ночные смены, куча коробок на складе, менеджеры по логистике спрашивают, что это, и так далее.

Мы отработали почти в ноль — всё-таки пробники и токены стоят денег. Но это десятки тысяч заказов, и теперь мы знаем проблемы людей с распределением по карте. Лаборатория дико потирала руки, понимая, что эти проблемы мы легко можем решить за 2–3 года.

Читать далее

Хотел взять готовый Go-клиент для Max. Итог предсказуем

Время на прочтение6 мин
Охват и читатели45K

Если у вас есть бот в Телеграме, то наверняка уже поглядываете в сторону Max — аудитория растёт, игнорировать сложно. Первая мысль: наверняка кто-то уже написал удобный Go-клиент. Чем всё закончилось, вы уже догадались — своим клиентом.

Читать далее

Замедляем замедление: как «починить» Telegram

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели244K

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

В этой статье мы разберем, как на самом деле работает замедление Telegram, какие методы позволяют вернуть полную скорость работы мессенджера

Читать далее
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
От 230 000 ₽
Golang
Python
Pandas
SQL
Apache Spark
Apache Hadoop
Jupyter Notebook
Lua
Redis
PostgreSQL