Точка входа в программирование
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
Один невидимый символ в терминале может сломать ссылку

Автор маленького сокращателя ссылок заметил, что друзьям приходят битые адреса на файлы из облачного хранилища S3. Дело оказалось в знаке перевода строки, который утилита jq добавляла к результату, а терминальный мессенджер gurk переводил в букву j на конце URL.

Выход — флаг jq --join-output (или -j): он убирает завершающий перевод строки, и скопированный адрес получается чистым. Это хороший повод проверить свои скрипты в терминале, потому что неочевидные символы в выводе часто ломают то, что вы передаёте дальше.

Если только начинаете работать с командной строкой, почитайте разбор, это экономит часы отладки.
1
Соберите свой USB-WiFi из Raspberry Pi Pico и поймите, как железо разговаривает с компьютером

Если после базового Python хочется потрогать, как код превращается в физическое действие, вот проект, который даёт такой шаг. Автор baiyibai выложил на GitLab репозиторий pico-usb-wifi: он превращает недорогую плату Raspberry Pi Pico в USB WiFi-адаптер.

Это хороший способ увидеть, как микроконтроллер подключается к компьютеру по USB и выходит в сеть. Не нужно сразу разбираться во всех протоколах — можно начать с прошивки, проверить, что система видит устройство, а потом уже копать глубже. README и CHANGELOG в репозитории помогут не потеряться в первых шагах.

Сначала попробуйте просто собрать и запустить. Когда получится — станет понятнее, зачем изучать работу с периферией и низкоуровневый ввод-вывод.
2
Каким может быть роадмап для QA в 2026 году?

Пять лет назад тестирование начиналось с ручного: чек-листы, клики, результат. Сегодня в тех же вакансиях — Kafka, Kubernetes и автотесты на Java. «Вкатиться через мануальное» больше не работает, но что же делать? Собирать базу, с которой можно будет работать и двигаться дальше!

Что по-настоящему пригодится:
— Архитектура микросервисов;
— HTTP/REST, SQL и брокеры сообщений;
— Чтение логов;
— Язык программирования для автоматизации;
— Инженерное мышление вместо «кнопка не работает».

Подробнее обо всём в новой статье на Tproger.
2
Мем смешной, а ситуация — страшная. AI внедряют в найм повсеместно, но часто совсем не думают о кандидатах. Поделитесь своими болями на тему AI-найма в комментариях и небольшом опросе!
6
Как использовать Dart для серверной части, если вы знаете Flutter

Если вы уже освоили базовый Dart или пробовали Flutter, серверная разработка может оказаться ближе, чем кажется. Автор туториала делает серверное приложение для управления пользователями и профилями на Dart и фреймворке Shelf — той же паре, что используется в мобильной разработке.

Материал ведёт от проекта до запуска в контейнере Docker с базой данных PostgreSQL, проверкой пользователей через JWT-токены и размещением на платформе Fly.io. Не нужно учить новый язык: вы берёте знакомый Dart и смотрите, как он работает без виджетов — принимая сетевые запросы, общаясь с базой данных и отправляя ответы клиентам.

Это удобный способ увидеть, как язык, который вы уже знаете, устроен за пределами экрана приложения.
2
Как подойти к первому проекту на Rust, не утонув в синтаксисе

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

Графовая база — это просто набор узлов со связями. Узел хранит данные, а стрелки показывают, кто с кем связан. Такой проект учит работать со структурами данных и видеть программу не как набор переменных, а как систему связанных объектов.

В статье много деталей про Rust, но главный урок универсален: перед тем как писать на новом языке, соберите прототип на том, который уже знаете. Это позволит сосредоточиться на логике, а не на синтаксисе.
🔥21
Соберите галерею на чистом JavaScript: от циклов до событий

Упражнение MDN даёт готовый скелет: вы добавляете переключение миниатюр, кнопку затемнения и обработку кликов.

Здесь собраны почти все базовые куски JavaScript: выборка элементов через document.querySelector, перебор коллекции, обработчик клика и изменение атрибутов. Главное — увидеть, как отдельные конструкции складываются в один работающий механизм.

Совет: не копируйте готовое решение. Сначала попробуйте вывести одну миниатюру в большое изображение, потом добавьте остальные, а кнопку затемнения оставьте на последок.
🤔21
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