Антон Жиянов
курсы
блог
контакты
en
Все записи блога
Пишу о программировании и данных.
Обновленный go fix
Утечки горутин в Go 1.24+
Курс: Знакомство с Go
Выразительные тесты без testify/assert
Интерактивный тур по Go 1.25
Опыт с книгой
Метод-значение в Go
Скукоживание карт в Go
Тур по Go 1.24
Пруфридинг и перевод в VS Code
Как стать дата-сатанистом, не выходя из VS Code
Say It in Russian
Ранний возврат
Статический HTTP-сервер
Канал завершения в Go
Тур по Go 1.23
Курс «Многозадачность в Go»
Полносрезное выражение в Go
Пустой срез vs. nil-срез в Go
Запускаем 100К горутин
Приемчики форматирования в Go
Интерфейсы и nil в Go
STRICT-таблицы в SQLite
Замыкание = гибкость
Метод на значении / указателе в Go
Интерактивная API-документация
Пишем менеджер пакетов
Язык Odin
Как установить расширение для SQLite
Встроенные функции в Go 1.21
Виды JOIN в SQL
Мне не нужен ваш язык запросов
Покрывающий индекс в SQL
Больше текстовых функций в SQLite
SQL-рецепт: сравнение с соседями
Base64 и другие кодировки в SQLite
LIMIT и FETCH в SQL
SQL-рецепт: сегментация данных
Выпуск «Подлодки» про SQL
SQL-шпаргалка
SQL-рецепт: ранжирование строк
ИИ-бот на Python
Чтение и запись файлов в SQLite
Сводные таблицы в SQLite
Избранные фичи Go 1.20
Регулярные выражения в SQLite
Композиция атомиков в Go
Идемпотентный Close в Go
Пользовательские функции в SQLite
Многозначительное многоточие в Python
Летающая свинья, или протоколы в Python
Случайные числа и последовательности в Python
Временные таблицы в SQLite
JSON и виртуальные столбцы в SQLite
Компактные объекты в Python
Вычисляемые столбцы в SQLite
Постраничный итератор в Python
Закешировать результат вычислений в Python
Гибкие типы данных в SQLite
Все расширения для SQLite
Быстрый поиск похожих слов на SQL
Скорость алгоритмов и котики
Как устроен список в Python
Табличные выражения SQL
Вы являетесь дизайнеру в страшном сне
SQLite-песочница в браузере
Как хранят данные в браузере
Признать проблему
Почтовые адреса в интерфейсе
Что должно быть в письме о заказе
Дурная кровь
Найти группы похожих объектов с помощью SQL
Критерии хорошего кода
Поэлементно сравнить коллекции в Python
«Отнаследовать» функцию от существующей в Python
Оконные функции SQL: скользящие агрегаты
Видение, эмпатия, смелость
Оконные функции SQL: агрегация
Оконные функции SQL: смещение
Книга по визуализации данных
Оконные функции SQL: ранжирование
Начни с примера
Зачем нужны оконные функции
Оконные функции SQL
Собираем открытые данные с GitHub Actions
Слишком простое решение
Простое против легкого
Кросс-платформенная сборка с GitHub Actions
Медиана вместо среднего
Как создать таблицу на 1М записей одним запросом
Дизайн интерфейсов для нормальных людей
Сила комментария
SQLite для аналитики
Задачка об итераторе на Python
Python. Грамотно работать с любым диапазоном
Python. Проверить, входит ли элемент в коллекцию
Зачем читать исходники стандартной библиотеки
Python. Прочитать произвольную строку из файла
Python. Отрезать строке голову и хвост
Красавица и чудовище. Обработка ошибок в Go
Как человек решает задачи в интерфейсе
Не законы, а говно
Что делает интерфейс простым
Автоматизация задач в Python-проекте
Юлия → Iuliia. Всё о транслитерации
Python. Создать словарь по списку ключей
Python. Пронумеровать элементы коллекции
Быстрый язык ≠ быстрый код
Python. Cортировать в конце или держать отсортированным?
Python. Быстро найти элемент коллекции
Python. Узнать день недели 40 лет назад
Python. Создать полный дубль коллекции
О продуктоводстве
Python. Сегодня == сейчас
Python. Обработать заявки с учётом приоритетов
Открытка несовершенным людям
Тарифный план «свяжитесь с нами»
Python. Выбрать топ-k элементов списка
Python. Объединить отсортированные списки в один
Python. Кортеж здорового человека
Python. Из десятичной дроби — в обычную
Python. Хранить последние N объектов
Python. Подвох в функции sum()
Python. Операции со статистикой
Python. Посчитать количество объектов каждого типа
Python. Умолчательные значения настроек
Python. Enum здорового человека
Python. Исходники стандартной библиотеки
Дизайн — это здравый смысл
Чистый код. Единообразие в именах
Python. Шаблонизатор для бедных
Python. Разбить строку на слова с учётом кавычек
Чистый код. Похожие названия методов
Обращение к JavaScript-разработчикам
Python. Кратко напечатать развесистую структуру
Python. Сравнить строки на похожесть
Как стать умнее на порядок
Python. Простое сравнение с шаблоном
Python. Все слова с прописной буквы
Python. Отформатировать текст для консоли
Python. Сделать превьюшку длинного текста
Тестировщики не должны находить баги
Премиальный и золотой тарифы
Секта свидетелей раздутой конверсии
Уберите капчу при оплате
Как понять рекурсию
О кодах подтверждения
Не надо заканчивать фичи
Автокомплит и проверка данных
Пароли в СМС и пушах
Если нет награды, прогресс бесполезен
Прощание с пользователем
Не моя проблема
Обратить необратимое
Регистрация и оплата как необходимое зло
По техническим причинам
Я медленно снимаю твои деньги с карты
Сила частичных решений
Сломается всё
Вредные привычки: mind maps
Днище ИТ-безопасности
Угадайка и неленивый интерфейс
Приём «показать все»
Пейджинг, ещёкалка и бесконечный скрол
Рейтинг как обратная связь
Персоны, Jobs-to-Be-Done и здравый смысл
Хватит сортировать по алфавиту
Запас доверия
Человеческого фактора не существует
Хороший продукт «прокачивает» пользователей
Главное правило выбора в интерфейсе
Что-то пошло не так
Сделайте себе интересно
Как упростить пользователю жизнь
Надмозги в метро: конечная станция
Бизнес как игра
Ричард Хипп и SQLite
«Психбольница» Купера 20 лет спустя: цели и сценарии
«Психбольница» Купера 20 лет спустя
Законы робототехники в интерфейсе
Пристрелите фичу
Бэклогом управляют пользователи
Донат — зло
Как не написать простыню
По техническим причинам
Специалисты, которых никто не любит
Чиним объявление про эскалатор в метро
Миф о сложности Oracle Database
Храним состояние в URL
Ваш лучший друг, анонимус