Все потоки
Поиск
Написать публикацию
Обновить
1011.4

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

COPY в PostgreSQL: грузим данные быстро, безопасно и без сюрпризов

Время на прочтение8 мин
Количество просмотров6.1K

Привет, Хабр.

Сегодня разбираем COPY в PostgreSQL. Это рабочая лошадка для массовой загрузки и выгрузки данных.

Читать далее

Топ-5 алгоритмов из курса матана, которые реально пригодятся в работе

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

Всем привет. Сегодня хочу затронуть тему матана, чтобы показать как его можно применять на реальных задачах. Думаю каждый, кто учил матан часто задавался вопросами: «Где это вообще пригодится?», «Зачем это нужно?», «Как это может помочь?» и т. д. Так вот, чтобы эти вопросы отпали раз и навсегда предлагаю свой топ-5 алгоритмов из курса матана с конкретными примерами их применения в работе.

Читать далее

Мифы и легенды о производительности Python

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

Антонио Куни — инженер, давно занимающийся повышением производительности Python, а также разработчик PyPy. Он провёл на EuroPython 2025 в Праге презентацию «Мифы и легенды о производительности Python». Как можно догадаться из названия, он считает многие общепринятые сведения о производительности Python как минимум вводящими в заблуждение. На множестве примеров он показал, где, по его мнению, таятся истинные проблемы. Инженер пришёл к выводу, что управление памятью в конечном итоге наложит ограничения на возможности повышения производительности Python, но у него есть проект SPy, который, возможно, станет способом реализации сверхбыстрого Python.

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

Читать далее

SOLID: Шпаргалка для собеседования и работы

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

Краткая шпаргалка с определениями принципов. Под катом плюсы/минусы SOLID, чтоб пройти собеседование на мидла\сеньора\архитектора, а в работе принять осознанное решение: «Применять ли здесь SOLID?»

Читать далее

Пользовательские аннотации PVS-Studio теперь и в Java

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров933

Начиная с версии PVS-Studio 7.38, Java анализатор вслед за двумя братьями C# и C++ поддерживает пользовательские аннотации в формате JSON. Зачем они нужны и что с ними можно делать, рассмотрим в этой статье.

Читать далее

TY — не thank you, а быстрый type checker для Python

Время на прочтение7 мин
Количество просмотров2.7K

Всем привет! Меня зовут Иван, я программирую на Python, а в свободное время пишу для блога МТС. В прошлый раз поделился опытом, как я осваивал Go и с чем у меня были сложности. Спасибо всем, кто читал и комментировал! Сегодня хочу обсудить мегабыстрый инструмент для проверки типов данных Python — ty: как он устанавливается и используется, какие есть правила и нюансы, а еще посмотрим, как можно его применять. Приступим!

Читать далее

Как научиться программированию разрабатывая игры

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

Если вы учились программировать в конце 80x-начале 90х, то наверняка делали это на ZX Spectrum, БК-0010 или MSX. Во всех этих компьютерах был встроенный язык програмирования. Кто-то начинал сразу с машинных кодов Радио-86РК. В любом случае первыми программами скорее всего были игры.

Но любительское программирование началось задолго до 90х. Посмотрим, какие игры предлагались раньше для начинающих программистов и что из этого мы могли бы извлечь для себя сегодня.

Читать далее

Telegram Web App. Всё о Mini Apps

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

В прошлой статье я уже рассмотрел основные возможности Web App. Cегодня же подведём итоги, расскажем все особенности и нюансы работы с Web App в Telegram и соберём простенькое веб-приложение.

Читать далее

Как не багнуться: почему плавание — лучший спорт для тех, кто сидит за компьютером

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров14K

Работа в IT может быть по-настоящему вредной. Не из-за дедлайнов, багов или багрепортов. Главная угроза — сидячий образ жизни. По 8 и более часов в день мы находимся в одном и том же положении, что негативно сказывается на осанке, кровообращении, работе мышц и даже когнитивных способностях. Чтобы ум оставался продуктивным, тело должно быть в порядке. Ведь даже самый продвинутый искусственный интеллект не будет работать без надежного железа, а человеческий интеллект работает только в здоровом теле.

Одним из лучших видов физической активности для «сидячих» профессионалов считается плавание. Почему? Давайте разбираться.

Читать далее

Хотите эффективнее программировать? Учитесь строить в уме пошаговые доказательства

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров13K

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

Когда вы работаете над чем-то сложным, формируйте в уме некое подтверждение, что ваш код будет делать именно то, что вам нужно. Звучит вроде просто, но на деле всё оказывается сложнее. Чтобы начать делать это «на лету», не прерывая рабочий поток, потребуется упорная практика. Зато, когда вы освоите эту технику, то удивитесь, насколько чаще ваш код будет полноценно работать с первой или второй попытки. Невероятно впечатляет.

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

Читать далее

Эзотерический язык Whitespace: что это, зачем создан и как работает

Время на прочтение4 мин
Количество просмотров4.9K

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

Читать далее

Как я слетал в Лиссабон на летнюю школу по машинному обучению LxMLS 2025

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.9K

Лиссабонская летняя школа по машинному обучению (LxMLS) ежегодно проходит в Лиссабоне. Многие по ошибке думают, что её организуют в Луховицах, ведь только в Луховицах loss-функция включает в себя реальные потери — например, урожая кабачков из-за переобучения модели. 2025 год стал для LxMLS юбилейным — в 15-й раз собирая энтузиастов из мира Computer Science и Machine Learning. Мне повезло стать участником этого, без преувеличения, масштабного события, а потому в этой статье я поделюсь с Вами своим опытом:

Читать далее

Архитектура сервера: статические residential-прокси и reverse-proxy

Время на прочтение3 мин
Количество просмотров2.5K

Архитектура Сервера — это не только набор серверов и сервисов, это контракт о том, как компоненты взаимодействуют и кто за что отвечает. В сетевой части этот контракт делится на две очевидные зоны ответственности: ingress (входящий трафик) и egress (исходящий). Reverse-proxy (NGINX/Envoy/Traefik и им подобные) — стандартный элемент ingress-слоя: TLS-терминация, кеш, балансировка и фильтрация трафика. На уровне egress мы часто используем прокси-слой, который формирует «внешний вид» наших исходящих соединений; среди опций для egress ключевую роль играют статические residential-прокси — IP от реальных провайдеров, закреплённые за сессией на время операции.

Читать далее

Ближайшие события

Впадаю в детство с ZX Spectrum

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

Обычный, пятничный, вечер... Сижу, ни кого не трогаю (с) смотрю ютюбчик, отдыхаю... Попадаю на просмотр прохождения игры Oberon 69, в процессе рассказа об игре, выясняется, что на Spectrum она была только на Испанском и только на кассете, была дискетная версия от Max Iwamoto, полу англифицированная... И такА вдруг тоска ностальгия меня взяла и переживание за несправедливость... Решаю, что раз никто, тогда Я! Будем а) дискетизировать, б) англифицировать, в) русифицировать.

Наливаем горячего и погружаемся

Lock-free код и шахматы: где LLM показывают свою несостоятельность

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров6.4K

Все мы привыкли к тому, что нейросети творят чудеса. Suno генерирует музыку неотличимую от человеческой, Flux рисует картины лучше многих художников, Claude переводит тексты так, что даже носители языка не сделают это лучше. Создается впечатление, что искусственный интеллект вот-вот заменит нас во всех сферах деятельности.

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

Читать далее

Протокол HTTP совсем не прост

Время на прочтение7 мин
Количество просмотров14K

Часто доводится слышать, будто протокол HTTP прост. Естественно, чаще всего — от тех, кто не слишком поднаторел в обращении с ним и слабо представляет, как именно этот протокол реализован. Думаю, сам я тоже мыслил в таком ключе, когда ещё только начинал работать с HTTP.

К настоящему времени я уже без малого три десятка лет усердно пишу клиентский код, взаимодействующий с HTTP. Я участвую в работе IETF и приложил руку ко всем спецификациям HTTP, составленным примерно с 2008 года. Поэтому полагаю, что вполне имею право развёрнуто высказаться об этом протоколе. Протокол HTTP не прост. Далеко не прост. Даже если предположить, что те, кто отмечает его простоту, имеют в виду лишь HTTP/1.

Читать далее

simstr — ещё одна строковая библиотека

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров7.8K

Работа со строками в С++ - зачастую больная боль.

Однако за 25 лет я сумел найти лекарство от этой боли и после 13 лет разработки и испытаний готов поделиться им со всеми страждущими.

simstr — библиотека для использования строк в C++, в которой пишется легко и удобно, а выполняется быстро и оптимально.

Читать далее

Думай как компилятор: позиции и значения в Rust

Время на прочтение10 мин
Количество просмотров2.9K

Некоторое время назад мне попался в Интернете вопрос о таком синтаксисе в Rust:

*pointer_of_some_kind = blah;

Автору вопроса было интересно, как компилятор понимает такой код, особенно, если в данном случае используется не ссылка, а умный указатель. Я написал ему пространный ответ, но потом подумал, что стоило бы ещё развернуть этот текст и переработать в статью для блога, на случай, если такой вопрос интересует и более широкую аудиторию.

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

Читать далее

Отгадай слово дня: от ручного поиска к автоматизации

Время на прочтение8 мин
Количество просмотров1.5K

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

Читать далее

Rust 1.89.0: явный вывод аргументов для константных обобщений, проверка синтаксиса времён жизни, i128 и u128 в extern C

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.4K

Команда Rust рада сообщить о новой версии языка — 1.89.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.

Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.89.0 вам достаточно выполнить команду:

$ rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.

Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Что стабилизировано в 1.89.0

Вклад авторов