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