habrahabr
Как проектировать качественные API

Основная часть работы современных разработчиков ПО1 связана с API: публичными интерфейсами для общения с программой, например, API Twilio. Я потратил кучу времени на работу с API как их разработчик и пользователь. Я писал публичные API для сторонних разработчиков, приватные API для внутреннего использования (или для потребления одной страницей фронтенда), API REST и GraphQL и даже несетевые интерфейсы, например, для инструментов командной строки.Думаю, большинство рекомендаций по проектированию…

  • вторник, 9 сентября 2025 г. в 00:00:16
habrahabr
Почему не работает VoWiFi в роуминге

Привет, Хабр!Есть у меня телефон Redmi Note 13 Pro 5G, который покупался по двум причинам — в нём есть eSIM, он поддерживается российскими операторами в плане работы VoWiFi (он же WiFi calling). И таким образом, я проживая вне РФ смог купить удаленно симку российского оператора, которая мне периодически нужна и звонить и принимать вызовы без роуминга, находясь где угодно.Приехал я тут в Турцию и достал свой телефон и обнаружил, что VoWiFi не работает, хотя он включен в настройках. Написал в под…

  • вторник, 9 сентября 2025 г. в 00:00:15
habrahabr
Где поток ненужного софта? Почему заявления об ИИ-ассистентах не сходятся

Я в бешенстве. Я реально зол. Зол настолько, что хочется сносить чужие песочные замки, зарядить Дэниэлю ЛаРуссо по физиономии и поливать его грязью перед его девушкойa.Вообще-то я не из тех, кого легко разозлить, но ситуация в индустрии достала окончательно.Я разбираюсь в разработке софта. Занимаюсь этим 25 лет1, а если считать табулирование маркетинговых исследований на янтарных монохромных экранах — то и все 28, наверное. Да, я старый. Я задрот-программист зрелого возраста. Вся моя жизнь и са…

  • вторник, 9 сентября 2025 г. в 00:00:14
habrahabr
Терминал — ваш лучший друг: 5 утилит командной строки, которые заменят вам GUI

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

  • вторник, 9 сентября 2025 г. в 00:00:13
habrahabr
7 сентября 2025 года — полное лунное затмение, видимое в России и сопредельных государствах

Друзья, в ночь с 7 на 8 сентября 2025 года произойдет полное теневое лунное затмение, которое может быть очень хорошо видимо на территории России и окружающем её географическом пространстве. Конечно, последнее слово всегда говорит погода. Но все остальное исключительно благоприятно. Я опишу видимость этого астрономического явления для Московского региона. Но в ближайших к нему локациях значительных отличий не будет.Начну с того, что еще раз отмечу, что причиной лунных затмений выступает тень Зе…

  • вторник, 9 сентября 2025 г. в 00:00:12
golang
Как мы выследили регрессию использования памяти в продакшен-сервисах на Go 1.24

Команда Go for Devs подготовила перевод статьи о том, как команда инженеров выявила регрессию использования памяти в Go 1.24. Оказалось, что всего одна оптимизация в аллокаторе памяти, случайно потерянная при рефакторинге, заставляла Go «съедать» сотни мегабайт RAM. Но сообщество Go-разработчиков быстро нашло и устранило проблему.Когда в начале 2025 года вышел Go 1.24, мы с энтузиазмом начали раскатывать его на наши сервисы. Главная новинка — новая реализация map на основе Swiss Tables — обещал…

  • вторник, 9 сентября 2025 г. в 00:00:10
golang
Часть вторая. Как я пытался засунуть gRPC в браузер — продолжение

Предыдущая частьКартина мира: почему браузер — главный блокер для «настоящего» gRPCЕсли коротко, gRPC живёт поверх HTTP/2 и активно полагается на стримы. А в браузере до сих пор нет низкоуровневого API, который позволил бы JavaScript управлять HTTP/2‑стримами на том уровне, который нужен gRPC. Даже unary‑вызов в gRPC — это частный случай стрима: открыли поток, отдали запрос, забрали ответ, закрылись. Пока браузеры не дадут этот «рычаг», все WEB‑решения — это компромиссы разной степени изящности…

  • вторник, 9 сентября 2025 г. в 00:00:09
golang
if err != nil: почему мы (не) любим обработку ошибок в Go? Обзор предложений по её улучшению

Привет, Хабр! Меня зовут Павел Агалецкий, я ведущий инженер в платформе Авито. Эта статья на одну из самых холиварных тем, о которой вы могли слышать или читать множество раз. При обсуждении Go, особенно новичками или представителями других языков программирования, камнем преткновения обычно становится проверка ошибок — if err != nil. Рассказываю, какие есть особенности и нюансы, сравниваю обработку ошибок в Go и других языках. Говорим о подходах к изменению обработки ошибок и обсуждаем последн…

  • вторник, 9 сентября 2025 г. в 00:00:08
javascript
Деструктуризация в JavaScript

Без сомнений, JavaScript — крайне популярный язык программирования. И разработчики постоянно создают обновления, которые позволяют писать код проще, короче и понятнее. Одним из таких инструментов стала деструктуризация — способ получения данныхПривет, Хабр! Меня зовут Александр Дудукало, я автор базового курса по JavaScript. В этом тексте на примерах разберемся, как работает синтаксис и как деструктуризировать массив. Подробности под катом!Что такое деструктуризацияДеструктуризация — это способ…

  • вторник, 9 сентября 2025 г. в 00:00:07