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

Привет, Хабр.
Сегодня разбираем COPY в PostgreSQL. Это рабочая лошадка для массовой загрузки и выгрузки данных.
Искусство создания компьютерных программ
Привет, Хабр.
Сегодня разбираем COPY в PostgreSQL. Это рабочая лошадка для массовой загрузки и выгрузки данных.
Всем привет. Сегодня хочу затронуть тему матана, чтобы показать как его можно применять на реальных задачах. Думаю каждый, кто учил матан часто задавался вопросами: «Где это вообще пригодится?», «Зачем это нужно?», «Как это может помочь?» и т. д. Так вот, чтобы эти вопросы отпали раз и навсегда предлагаю свой топ-5 алгоритмов из курса матана с конкретными примерами их применения в работе.
Антонио Куни — инженер, давно занимающийся повышением производительности Python, а также разработчик PyPy. Он провёл на EuroPython 2025 в Праге презентацию «Мифы и легенды о производительности Python». Как можно догадаться из названия, он считает многие общепринятые сведения о производительности Python как минимум вводящими в заблуждение. На множестве примеров он показал, где, по его мнению, таятся истинные проблемы. Инженер пришёл к выводу, что управление памятью в конечном итоге наложит ограничения на возможности повышения производительности Python, но у него есть проект SPy, который, возможно, станет способом реализации сверхбыстрого Python.
Он начал своё выступление с просьбы: «Если вы считаете Python медленным или недостаточно быстрым, поднимите руку»; поднялось много рук, в отличие от презентации на PyCon Italy, где руку не поднял почти никто из присутствующих. «Совершенно другая аудитория», — сказал он с улыбкой. Антонио уже много лет работает над производительностью Python, он общался с множеством разработчиков на Python и слышал кучу устоявшихся мифов, которые захотел развеять.
Краткая шпаргалка с определениями принципов. Под катом плюсы/минусы SOLID, чтоб пройти собеседование на мидла\сеньора\архитектора, а в работе принять осознанное решение: «Применять ли здесь SOLID?»
Начиная с версии PVS-Studio 7.38, Java анализатор вслед за двумя братьями C# и C++ поддерживает пользовательские аннотации в формате JSON. Зачем они нужны и что с ними можно делать, рассмотрим в этой статье.
Всем привет! Меня зовут Иван, я программирую на Python, а в свободное время пишу для блога МТС. В прошлый раз поделился опытом, как я осваивал Go и с чем у меня были сложности. Спасибо всем, кто читал и комментировал! Сегодня хочу обсудить мегабыстрый инструмент для проверки типов данных Python — ty: как он устанавливается и используется, какие есть правила и нюансы, а еще посмотрим, как можно его применять. Приступим!
Если вы учились программировать в конце 80x-начале 90х, то наверняка делали это на ZX Spectrum, БК-0010 или MSX. Во всех этих компьютерах был встроенный язык програмирования. Кто-то начинал сразу с машинных кодов Радио-86РК. В любом случае первыми программами скорее всего были игры.
Но любительское программирование началось задолго до 90х. Посмотрим, какие игры предлагались раньше для начинающих программистов и что из этого мы могли бы извлечь для себя сегодня.
В прошлой статье я уже рассмотрел основные возможности Web App. Cегодня же подведём итоги, расскажем все особенности и нюансы работы с Web App в Telegram и соберём простенькое веб-приложение.
Работа в IT может быть по-настоящему вредной. Не из-за дедлайнов, багов или багрепортов. Главная угроза — сидячий образ жизни. По 8 и более часов в день мы находимся в одном и том же положении, что негативно сказывается на осанке, кровообращении, работе мышц и даже когнитивных способностях. Чтобы ум оставался продуктивным, тело должно быть в порядке. Ведь даже самый продвинутый искусственный интеллект не будет работать без надежного железа, а человеческий интеллект работает только в здоровом теле.
Одним из лучших видов физической активности для «сидячих» профессионалов считается плавание. Почему? Давайте разбираться.
В этой статье я коротко опишу один приём, который помогает мне писать код быстрее и с меньшим числом ошибок. Я говорю «приём», но по факту это просто практика, которой я начал следовать с опытом, сам того не замечая.
Когда вы работаете над чем-то сложным, формируйте в уме некое подтверждение, что ваш код будет делать именно то, что вам нужно. Звучит вроде просто, но на деле всё оказывается сложнее. Чтобы начать делать это «на лету», не прерывая рабочий поток, потребуется упорная практика. Зато, когда вы освоите эту технику, то удивитесь, насколько чаще ваш код будет полноценно работать с первой или второй попытки. Невероятно впечатляет.
Добиться этого можно по-разному, и я не хочу давать какие-то категоричные рекомендации. Просто приведу несколько примеров тех вещей, о которых я сам рассуждаю «на лету», чтобы вы могли сформировать общее представление.
Whitespace — необычный язык программирования, где код состоит только из пробелов, табуляций и переводов строк. Видимые символы — буквы, цифры, знаки — интерпретатор игнорирует, воспринимая их как комментарии. То есть программы, написанные на Whitespace, невидимы. Они выглядят как пустые файлы, но при этом работают как обычно. С их помощью можно выполнять сложные задачи — от вывода текста до вычислений. В статье разберем, как устроен этот язык, кто его создал, для чего он нужен и почему стал относительно популярным среди энтузиастов.
Лиссабонская летняя школа по машинному обучению (LxMLS) ежегодно проходит в Лиссабоне. Многие по ошибке думают, что её организуют в Луховицах, ведь только в Луховицах loss-функция включает в себя реальные потери — например, урожая кабачков из-за переобучения модели. 2025 год стал для LxMLS юбилейным — в 15-й раз собирая энтузиастов из мира Computer Science и Machine Learning. Мне повезло стать участником этого, без преувеличения, масштабного события, а потому в этой статье я поделюсь с Вами своим опытом:
Архитектура Сервера — это не только набор серверов и сервисов, это контракт о том, как компоненты взаимодействуют и кто за что отвечает. В сетевой части этот контракт делится на две очевидные зоны ответственности: ingress (входящий трафик) и egress (исходящий). Reverse-proxy (NGINX/Envoy/Traefik и им подобные) — стандартный элемент ingress-слоя: TLS-терминация, кеш, балансировка и фильтрация трафика. На уровне egress мы часто используем прокси-слой, который формирует «внешний вид» наших исходящих соединений; среди опций для egress ключевую роль играют статические residential-прокси — IP от реальных провайдеров, закреплённые за сессией на время операции.
Обычный, пятничный, вечер... Сижу, ни кого не трогаю (с) смотрю ютюбчик, отдыхаю... Попадаю на просмотр прохождения игры Oberon 69, в процессе рассказа об игре, выясняется, что на Spectrum она была только на Испанском и только на кассете, была дискетная версия от Max Iwamoto, полу англифицированная... И такА вдруг тоска ностальгия меня взяла и переживание за несправедливость... Решаю, что раз никто, тогда Я! Будем а) дискетизировать, б) англифицировать, в) русифицировать.
Все мы привыкли к тому, что нейросети творят чудеса. Suno генерирует музыку неотличимую от человеческой, Flux рисует картины лучше многих художников, Claude переводит тексты так, что даже носители языка не сделают это лучше. Создается впечатление, что искусственный интеллект вот-вот заменит нас во всех сферах деятельности.
Но есть одна маленькая проблема. Как только задача требует настоящего размышления, а не воспроизведения заученных паттернов, LLM начинают творить такую дичь, что становится стыдно, что знаком с ними.
Часто доводится слышать, будто протокол HTTP прост. Естественно, чаще всего — от тех, кто не слишком поднаторел в обращении с ним и слабо представляет, как именно этот протокол реализован. Думаю, сам я тоже мыслил в таком ключе, когда ещё только начинал работать с HTTP.
К настоящему времени я уже без малого три десятка лет усердно пишу клиентский код, взаимодействующий с HTTP. Я участвую в работе IETF и приложил руку ко всем спецификациям HTTP, составленным примерно с 2008 года. Поэтому полагаю, что вполне имею право развёрнуто высказаться об этом протоколе. Протокол HTTP не прост. Далеко не прост. Даже если предположить, что те, кто отмечает его простоту, имеют в виду лишь HTTP/1.
Работа со строками в С++ - зачастую больная боль.
Однако за 25 лет я сумел найти лекарство от этой боли и после 13 лет разработки и испытаний готов поделиться им со всеми страждущими.
simstr — библиотека для использования строк в C++, в которой пишется легко и удобно, а выполняется быстро и оптимально.
Некоторое время назад мне попался в Интернете вопрос о таком синтаксисе в Rust:
*pointer_of_some_kind = blah;
Автору вопроса было интересно, как компилятор понимает такой код, особенно, если в данном случае используется не ссылка, а умный указатель. Я написал ему пространный ответ, но потом подумал, что стоило бы ещё развернуть этот текст и переработать в статью для блога, на случай, если такой вопрос интересует и более широкую аудиторию.
В настоящее время я не работаю над компилятором Rust и, в сущности, никогда не работал, но семантику языка я знаю хорошо. Если вы корифей Rust, то этот пост может быть вам не слишком интересен, разве что вы хотели бы подробнее разобраться с категориями значений в Rust. Но, если вы не так много времени тратите на изучение тонких нюансов языков программирования — надеюсь, вам понравится одним глазочком заглянуть в этот мир.
На прошлой неделе наткнулся на забавную игру в слова – contexto.me, смысл прост: нужно отгадать секретное слово. При этом после каждой попытки видно, насколько близко по смыслу ваше слово было к ответу. Поиграв пару дней, захотелось написать такую игру самому, а также автоматизировать процесс решения, про что и данная статья.
Команда Rust рада сообщить о новой версии языка — 1.89.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup
, то для обновления до версии 1.89.0 вам достаточно выполнить команду:
$ rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta
) или nightly (rustup default nightly
). Пожалуйста, сообщайте обо всех встреченных вами ошибках.