Точка входа в программирование
18.1K subscribers
1.69K photos
293 videos
4 files
3.23K links
Фундаментальные знания по основам программирования

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/zrgj
Download Telegram
Forwarded from Zen of Python
Отправка почты из Python: stdlib, локальный SMTP и сторонние библиотеки

В стандартной библиотеке Python для работы с почтой есть пакет email и модуль для SMTP-соединений: формируете сообщение, добавляете вложения и адресатов, подключаетесь к серверу и отправляете. Для отладки удобно поднять локальный SMTP-сервер — письма не уйдут в интернет, но вы увидите, как они собираются.

Явное лучше неявного, но ручная сборка писем со временем утомляет. Статья разбирает сторонние инструменты вроде Yagmail и transactional email-сервисов, чтобы вы могли выбрать между «всё под контролем» и готовым решением.

Кому полезно: тем, кто отправляет уведомления, рассылки или отчёты из Python и хочет сравнить подходы.
🔥21
Соберите чат-бота на Python и потренируйте его на своих сообщениях

Туториал по ChatterBot предлагает собрать настоящего собеседника: сначала бот повторяет простые фразы, потом вы чистите выгрузку переписки из WhatsApp регулярными выражениями, и учите бота отвечать на ваши примеры. В финале можно подключить локальную языковую модель, которая работает на вашем компьютере, через Ollama, чтобы ответы звучали по делу, а не по шаблону.

Это учебный проект, который связывает ввод-вывод, строки и работу с библиотекой в одну работающую программу. Разбор с примерами кода — попробуйте пройти его и изменить тему бота под себя.
2
Forwarded from Веб-страница
Тестируйте Vue-компоненты в браузере, без Node и сборки

Мне давно не хватало лёгкого способа гонять фронтенд-тесты без тяжёлого Node-окружения. Playwright хорош, но новый процесс браузера на каждый тест и Node-оркестрация быстро утомляют. Автор jvns.ca пошёл другим путём: вместо отдельного браузера запускает интеграционные тесты Vue-компонентов прямо в открытой вкладке.

Взял QUnit, встроил тесты в страницу и получил кнопку для перезапуска одного теста. Это удобно, когда в тестах много сетевых запросов и отлаживать хочется по одному. Для проектов без сборки так можно проверить компоненты в реальном DOM, не поднимая отдельный браузер.

Если у вас небольшой Vue-проект без Node-сборки, я бы попробовал такую схему в QA перед релизом. Подробности в заметке.
1
Что такое Unix timestamp и зачем он вам понадобится

Когда сервер присылает дату не строкой вроде «1 июня 2024», а числом вроде 1717200000 — это Unix timestamp. Простыми словами: количество секунд с полуночи 1 января 1970 года по Гринвичу. Так компьютеры хранят момент времени одним целым числом, не связываясь с часовыми поясами и форматами.

Новичку это встречается в API, логах и базах данных. Сначала кажется странной математикой, но именно timestamp удобно сравнивать, считать интервалы и переводить в любой часовой пояс.

Попробуйте в консоли браузера: new Date(1717200000 * 1000) и сравните с new Date(). В статье разобраны примеры для Python, Java и других языков — чтобы вы могли переводить timestamp в привычную дату в своих проектах.
2
Forwarded from Типичный программист
KolibriOS 0.7.7: ОС, которая влезает на дискету

Представьте: в 2026 году ОС целиком лезет на 3,5-дюймовую дискету и загружается быстрее, чем вы допиваете кофе. Это не демо и не эмулятор: KolibriOS 0.7.7 существует, и редактор Hackaday Дженни Лист проверила его на ThinkPad.

Это российский форк MenuetOS, ядро написано на FASM, плоском ассемблере, образ около 1 МБ, а требования смешны: процессор класса i586, 8 МБ ОЗУ, 1 МБ на диске. При этом внутри браузеры, игры, эмуляторы, графические редакторы и среда разработки.

Без HTTPS в повседневное использование не пойдёт, но для старого железа, тонких клиентов и разбора того, как ОС может быть маленькой, находка, которую стоит сохранить.
👍4😱3😁2
Forwarded from Типичный программист
Разработчик превратил зубдробилку Vim в игру про доставку мороженого

Marcus Michaels из Лондона сделал Vim Scoops — браузерную игру, где фургон мороженого ездит по карте исключительно Vim-движениями. Сначала hjkl, потом прыжки по словам w и начала строк 0. Цель на каждом уровне — добраться до клиента за минимальное число ходов.

Автор пользуется Vim ежедневно и сделал игру PWA, чтобы тренировать память в мёртвых зонах связи по дороге на работу. Если вам тоже скучно запоминать motion'ы в Vim обычным способом, то попробуйте этот.
👀3
Почему ваш пет-проект ещё не бизнес, а вы — не предприниматель

У каждого второго разработчика в столе лежит проект, который «вот-вот станет бизнесом». Осталось дописать пару фич — и дальше всё поедет само. Спойлер: не поедет. Разбираемся, где заканчивается код и начинается бизнес: почему всё стартует не с технологии, а с чужой проблемы, чем фаундер отличается от тимлида и почему рабочий сервис с первыми пользователями и MRR — это не бизнес, а промежуточный результат.

Простой тест: уйдите в отпуск на две недели, и если без вас всё встало — поздравляем, у вас пока не бизнес, а вы сами и есть главный «производственный ресурс».

Внутри ещё и про AR-очки на трамвайном заводе, которые зарубили сами рабочие: история о том, как ценность решения определяете не вы.
1👍1
ИИ для автоматизации рассчётно-кассового обслуживания: как убрать ручной ввод паспортов

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

Что под капотом:
— Разворот паспорта распознаётся меньше чем за секунду — даже с бликами, тенями и если снято под углом. Тянет 103 языка, паспорта РФ и СНГ, права, рукописный текст и штампы;
— Всё крутится on-premise, документы не уходят на сторону. На одном сервере без всякой GPU — до 125 разворотов в секунду, точность 99,9%.

Самое интересное: распознавание можно запускать прямо в браузере через WebAssembly, то есть на устройстве пользователя, без отправки данных на сервер и обратно. Встраивается в интернет-банк и в мини-аппы Telegram и MAX.

Плюс антифрод: 600+ признаков подделки, проверка NFC-чипа, детект дипфейков.

Из живого кейса — в РНКО «Металлург» ручного ввода стало меньше минимум в 4 раза.
1
Git игнорирует файлы на трёх уровнях, не только через .gitignore

Если вы только начинаете с Git, вы уже встречали .gitignore — файл, в котором перечисляют, что Git не должен отслеживать: node_modules/, .env, логи. Но иногда правило нужно только вам, и править общий .gitignore ради одного файла не хочется.

Тут помогают ещё два уровня. .git/info/exclude работает только в вашей локальной копии репозитория. Это идеально для личных заметок или экспериментальных скриптов. А ~/.config/git/ignore задаёт правила сразу для всех репозиториев на вашей машине, например для системных файлов.

Чтобы проверить, почему конкретный файл не попадает в git status, запустите git check-ignore -v filename. Команда покажет, какой именно список его скрыл. Разбираем каждый уровень в статье.
7
19 учебных проектов на Python, которые помогают перейти от синтаксиса к работающей программе

Если после переменных, условий и циклов непонятно, куда двигаться, подборка Mimo даёт готовый маршрут: 19 проектов для начинающих — от списка дел и угадайки слова до чат-бота и классификатора изображений. К каждому проекту приложены исходный код и пошаговые инструкции, чтобы можно было собрать программу, а не только прочитать про неё.

Начните с малого: список дел или игра «угадай слово» тренируют ввод данных, проверку условий и работу с циклами. Это не абстрактные упражнения, а конкретные программы, в которых видно, как отдельные темы соединяются в работающий код.

Когда база будет увереннее, можно взяться за проекты посложнее — получение данных через API Звёздных войн или классификатор картинок. В материале всё разложено по уровню, так что удобно выбрать следующий шаг под себя.
4
Как собрать разрозненный Python в одну картинку

Real Python предлагает проверить понимание концепций языка тремя шагами: объяснить концепцию своими словами, найти ей знакомый аналог и применить в маленькой задаче.

Суть — не зубрить, а увидеть, как идея работает в коде. Возьмите тему, которую пока не чувствуете, и опишите её так, будто соседу по парте. Да, тот самый метод утёнка. Потом дайте себе пять минут и сравните её с похожей. Разница, которую вы сформулируете словами, лучше конспекта покажет, где остались дыры.
2
Ваша память ещё работает или нейронки уже и помнят всё за вас?

Чтобы это проверить мы приготовили для вас «Меморину» — игру, которая поможет проверить вашу память.

Всё просто: нужно запомнить и выбрать одинаковые карточки. Если память плохая, то рано или поздно вы всё равно справитесь. А если хорошая, то сможете увидеть ваш потолок скорости.

Ну что, готовы проверить? Тогда переходите по ссылке: https://tprg.ru/ha7S
🔥2🤗1
Git изнутри: можно не зубрить команды, а собрать свой

Когда Git кажется набором магических слов вроде commit и branch, сложно понять, что происходит на самом деле. Туториал Никиты Лешенко предлагает собрать Git своими руками: вы пишете крошечные версии команд и видите, как хранилище проекта содержит файлы, историю изменений и разницу между версиями.

Это хороший следующий шаг после базовых команд. Не нужно проходить весь материал сразу — достаточно попробовать первую часть и увидеть, что за каждой командой стоит простая механика, а не тёмная магия.
2
Forwarded from Zen of Python
Метакласс: не магия, а ещё один уровень явности Python

Если класс — фабрика объектов, то метакласс играет роль фабрики самих классов. В Python 3 это не опция, а дефолт: любой ваш класс является экземпляром type, а class Foo: pass раскрывается в type('Foo', (), {}).

Свой метакласс наследуется от type и переопределяет __new__ или __init__. Он позволяет собирать, изменять или регистрировать классы программно, но в Python явность важнее изящества. В большинстве случаев ту же задачу решают наследование или декоратор класса.

Отсюда следует, почему в Python всё есть объект, включая само определение класса. Разбираемся в деталях.
😁2👍1
Почему DuckDB обгоняет Spark на одной машине

Разбор от endjin объясняет, как встраиваемая база DuckDB превращает ноутбук в инструмент для аналитики на миллиардах строк: скорость здесь — не в масштабе, а в бережном использовании железа. Колоночное хранилище читает только нужные столбцы, векторизованное выполнение обрабатывает данные пачками по 1024–2048 значений, умещаясь в кэш процессора, а min-max-индексы пропускают целые группы строк по фильтрам. Всё параллелится на все ядра.

В тесте TPC-H DuckDB на одной машине справилась за 1 минуту 16 секунд, Spark на 32 узлах — около 8 минут. Распределённые накладные расходы дороже выигрыша от кластера.

Это не замена PostgreSQL или Kafka: один писатель, одна нода, petabyte уйдут в распределённые системы. Статья полезна тем, кто строит ETL и хочет понять, где сидит производительность.

Сохраните, если выбираете инструменты для аналитики.
2😘2👍1
80% корпоративных программ геймификации ломаются на одном и том же месте

По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80% корпоративных программ геймификации не достигают целей. Спрос огромный, качество — низкое, а причина проста: делать это берутся не те люди.

В статье разбирают, как корпоративные клоны механик упускают баланс и контекст, и что делать, чтобы прогрессия не превращалась в цифровой пендель. Для геймдевелоперов это отличная ниша, где есть и деньги, и возможность применить свои скиллы на практике.
2🙏2😐1