Нейросеть на Python с нуля — чистый код без фреймворков и магии
Нейросети пугают терминами, пока вы не заглянете под капот. На самом деле это математическая модель: входные данные проходят через формулы, умножаются на веса (числовые коэффициенты) и выдают предсказание. Суть обучения в автоматическом подборе правильных весов: сеть сама находит закономерности в данных и учится отличать нужные сигналы от шума.
Автор строит распознавание рукописных цифр на чистом Python. Без TensorFlow и PyTorch, только базовая математика. Каждый шаг объясняется подробно, будто вы пишете код впервые: от входных пикселей до финального ответа сети.
Если вы хотите перестать путаться в жаргоне ИИ и наконец понять, что происходит внутри настоящих моделей, начните с этого. Ноль магии, только чистый код и логика.
Нейросети пугают терминами, пока вы не заглянете под капот. На самом деле это математическая модель: входные данные проходят через формулы, умножаются на веса (числовые коэффициенты) и выдают предсказание. Суть обучения в автоматическом подборе правильных весов: сеть сама находит закономерности в данных и учится отличать нужные сигналы от шума.
Автор строит распознавание рукописных цифр на чистом Python. Без TensorFlow и PyTorch, только базовая математика. Каждый шаг объясняется подробно, будто вы пишете код впервые: от входных пикселей до финального ответа сети.
Если вы хотите перестать путаться в жаргоне ИИ и наконец понять, что происходит внутри настоящих моделей, начните с этого. Ноль магии, только чистый код и логика.
❤2
Симулятор кубиков, который учит собирать программу по частям
В этом проекте ценность не в самих кубиках, а в том, что вы проходите почти весь путь маленькой программы для терминала: спросить у пользователя число, проверить ввод, сгенерировать случайные результаты, сохранить их в список и красиво вывести на экран.
По разбору Real Python вы пишете
Хорошая тренировка, если хочется понять, как функции, циклы, списки и строки соединяются в одну работающую программу, а не живут отдельными упражнениями. Разбор идёт пошагово, так что можно собрать проект руками и потом усложнить: добавить кубики с другим числом граней или повторные броски.
#python
В этом проекте ценность не в самих кубиках, а в том, что вы проходите почти весь путь маленькой программы для терминала: спросить у пользователя число, проверить ввод, сгенерировать случайные результаты, сохранить их в список и красиво вывести на экран.
По разбору Real Python вы пишете
dice.py: функция parse_input() отсекает всё кроме чисел от 1 до 6, roll_dice() использует random.randint(), а генератор ASCII-картинок рисует грани кубиков символами. ASCII здесь — просто картинка из текста, без графики и библиотек.Хорошая тренировка, если хочется понять, как функции, циклы, списки и строки соединяются в одну работающую программу, а не живут отдельными упражнениями. Разбор идёт пошагово, так что можно собрать проект руками и потом усложнить: добавить кубики с другим числом граней или повторные броски.
#python
❤2
Первый сайт, где HTML, CSS и JavaScript собираются вместе
Есть момент в обучении, когда теги вроде понятны, стили тоже, но всё ещё непонятно, как из этого получается настоящая страница. Для такого шага хорошо подходит модуль Microsoft Learn: вы собираете небольшой веб-проект в VS Code, по ходу делаете HTML-страницу, подключаете CSS-файл со стилями, добавляете JavaScript для переключения темы и проверяете результат через инструменты разработчика в браузере.
Нормальная тренировка, если хочется не просто выучить три слова — HTML, CSS и JS, — а увидеть, как они работают вместе. Модуль короткий и идёт по шагам, так что его реально пройти за один подход.
#веб
Есть момент в обучении, когда теги вроде понятны, стили тоже, но всё ещё непонятно, как из этого получается настоящая страница. Для такого шага хорошо подходит модуль Microsoft Learn: вы собираете небольшой веб-проект в VS Code, по ходу делаете HTML-страницу, подключаете CSS-файл со стилями, добавляете JavaScript для переключения темы и проверяете результат через инструменты разработчика в браузере.
Нормальная тренировка, если хочется не просто выучить три слова — HTML, CSS и JS, — а увидеть, как они работают вместе. Модуль короткий и идёт по шагам, так что его реально пройти за один подход.
#веб
Docs
Get started with web development using Visual Studio Code - Training
Practice the beginning steps of web development by creating a simple web project in Visual Studio Code that contains a web page, a CSS file, and a JavaScript file. Learn how to use developer tools in your browser to check your work.
❤1
Генератор историй, который показывает, зачем нужны массивы и строки
Массивы и строки часто выглядят как отдельные упражнения: тут список, тут текст, тут случайное число. В челлендже MDN всё это собирается в маленькую интерактивную штуку — генератор случайных историй.
Вы берёте заготовку страницы, добавляете массивы с вариантами фраз, выбираете случайный элемент через функцию, подставляете имя из поля ввода и меняете текст после клика по кнопке. Обработчик события здесь — это просто функция, которая запускается, когда пользователь нажал кнопку.
Мне нравится такой формат: результат смешной и простой, но по дороге становится видно, как JavaScript оживляет страницу. Задание можно пройти прямо как мини-проект после базовых переменных, строк и массивов.
#javascript
Массивы и строки часто выглядят как отдельные упражнения: тут список, тут текст, тут случайное число. В челлендже MDN всё это собирается в маленькую интерактивную штуку — генератор случайных историй.
Вы берёте заготовку страницы, добавляете массивы с вариантами фраз, выбираете случайный элемент через функцию, подставляете имя из поля ввода и меняете текст после клика по кнопке. Обработчик события здесь — это просто функция, которая запускается, когда пользователь нажал кнопку.
Мне нравится такой формат: результат смешной и простой, но по дороге становится видно, как JavaScript оживляет страницу. Задание можно пройти прямо как мини-проект после базовых переменных, строк и массивов.
#javascript
MDN Web Docs
Challenge: Silly story generator - Learn web development | MDN
In this challenge you are tasked with taking some of the knowledge you've picked up in this module so far and applying it to creating a fun app that generates random silly stories. Along the way, we'll test your knowledge of variables, math, strings, and…
❤1
Тренажёр безопасности кода, который запускается в браузере
После базового синтаксиса часто непонятно, как учиться замечать дыры в коде, ведь теория без практики быстро забывается. GitHub сделал бесплатную игру, в которую можно сыграть прямо из браузера: не нужно ставить редактор или настраивать окружение.
В ней несколько уровней, у каждого своя тема. В четвёртом вы работаете с ИИ-ассистентом, который выполняет команды, ищет данные в сети и запускает скрипты. Задача — научиться находить слабые места в его поведении и закрывать их. Каждый уровень самостоятельный, так что можно начать сразу с четвёртого, даже если предыдущие не проходили.
Попробуйте Secure Code Game — уровни идут от простого к сложному, а для старта хватит любопытства: опыт в ИИ или программировании даже не обязателен.
После базового синтаксиса часто непонятно, как учиться замечать дыры в коде, ведь теория без практики быстро забывается. GitHub сделал бесплатную игру, в которую можно сыграть прямо из браузера: не нужно ставить редактор или настраивать окружение.
В ней несколько уровней, у каждого своя тема. В четвёртом вы работаете с ИИ-ассистентом, который выполняет команды, ищет данные в сети и запускает скрипты. Задача — научиться находить слабые места в его поведении и закрывать их. Каждый уровень самостоятельный, так что можно начать сразу с четвёртого, даже если предыдущие не проходили.
Попробуйте Secure Code Game — уровни идут от простого к сложному, а для старта хватит любопытства: опыт в ИИ или программировании даже не обязателен.
❤3
Forwarded from IT Юмор
Причём им сделана задняя часть, потому что он решил не тянуть легаси, а сделать нормально
❤8
Singleton в Spring не спасает от гонок в коде
Есть неприятная ловушка для тех, кто только изучает Spring: слово
В разборе на DEV показывают основные scope’ы: singleton, prototype, request и session. Scope — это правило, как долго живёт объект и когда Spring создаёт новый экземпляр. Самая полезная часть здесь не в заучивании названий, а в понимании простого правила: сервисы лучше держать без состояния, а данные запроса хранить отдельно.
Хороший материал, если уже трогали Spring и хотите понять, почему «работает локально» иногда разваливается под нагрузкой.
#spring #java
Есть неприятная ловушка для тех, кто только изучает Spring: слово
singleton звучит так, будто объект один, значит с ним всё безопасно. На деле Spring просто создаёт один bean на приложение. Если несколько запросов одновременно меняют поля этого объекта, они всё равно могут перетереть данные друг друга.В разборе на DEV показывают основные scope’ы: singleton, prototype, request и session. Scope — это правило, как долго живёт объект и когда Spring создаёт новый экземпляр. Самая полезная часть здесь не в заучивании названий, а в понимании простого правила: сервисы лучше держать без состояния, а данные запроса хранить отдельно.
Хороший материал, если уже трогали Spring и хотите понять, почему «работает локально» иногда разваливается под нагрузкой.
#spring #java
DEV Community
Bean scopes (singleton/prototype/request/session) + singleton thread-safety gotcha
Every object the container builds has to answer two quiet questions: how many copies of it should...
❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Рисовалка в браузере, которая учит управлять страницей через JavaScript
У The Odin Project есть хороший учебный проект: собрать Etch-a-Sketch прямо в браузере. Это такая простая рисовалка: наводите курсор на клетки, и они закрашиваются.
Ценность не в самой игрушке, а в том, что вы руками собираете маленький интерфейс: создаёте сетку из div’ов через JavaScript, раскладываете её с помощью Flexbox, вешаете события наведения, добавляете кнопку для нового размера поля и проверяете ввод, чтобы пользователь не сломал страницу огромной сеткой.
Такие проекты хорошо связывают HTML, CSS и JS в одну понятную штуку. После базовых упражнений это как раз тот шаг, где становится видно, зачем нужны события, DOM и DevTools. Задание можно пройти как есть, а потом добавить случайные цвета, очистку поля или постепенное затемнение клеток.
Если будет что-то непонятно, то можно посмотреть варианты реализации других участников.
#веб #javascript
У The Odin Project есть хороший учебный проект: собрать Etch-a-Sketch прямо в браузере. Это такая простая рисовалка: наводите курсор на клетки, и они закрашиваются.
Ценность не в самой игрушке, а в том, что вы руками собираете маленький интерфейс: создаёте сетку из div’ов через JavaScript, раскладываете её с помощью Flexbox, вешаете события наведения, добавляете кнопку для нового размера поля и проверяете ввод, чтобы пользователь не сломал страницу огромной сеткой.
Такие проекты хорошо связывают HTML, CSS и JS в одну понятную штуку. После базовых упражнений это как раз тот шаг, где становится видно, зачем нужны события, DOM и DevTools. Задание можно пройти как есть, а потом добавить случайные цвета, очистку поля или постепенное затемнение клеток.
Если будет что-то непонятно, то можно посмотреть варианты реализации других участников.
#веб #javascript
❤2
В JavaScript легко привыкнуть, что Number подходит для любых чисел: возраст, цена, счётчик, ID — всё вроде работает одинаково. А потом внезапно оказывается, что
В разборе freeCodeCamp объясняют safe integer limit — границу, до которой JavaScript хранит целые числа точно. Дальше начинаются потери точности: большие ID, финансовые значения и счётчики могут незаметно искажаться. Для таких случаев есть BigInt — отдельный тип для больших целых чисел.
Можете проверить это прямо в консоли браузера:
#javascript
9007199254740991 + 2 может дать совсем не тот результат, который вы ожидаете.В разборе freeCodeCamp объясняют safe integer limit — границу, до которой JavaScript хранит целые числа точно. Дальше начинаются потери точности: большие ID, финансовые значения и счётчики могут незаметно искажаться. Для таких случаев есть BigInt — отдельный тип для больших целых чисел.
Можете проверить это прямо в консоли браузера:
Number.MAX_SAFE_INTEGER, Number.isSafeInteger() и пару сложений выше лимита.#javascript
❤1
Лексер показывает, как программа начинает понимать ваш код
Когда видишь ошибку вроде
Поэтому пора познакомиться с лексерами. Лексер — это этап, где строка кода сначала режется на токены, а уже потом парсер пытается понять структуру выражения. То есть интерпретатор не читает код как человек, он сначала превращает текст в более удобный набор деталей.
Подробнее в разборе.
Когда видишь ошибку вроде
unexpected token, сложно с ходу понять на что именно ругается компилятор. На самом деле токен — это просто кусок кода, который программа уже распознала: число, имя переменной, оператор, скобка, ключевое слово.Поэтому пора познакомиться с лексерами. Лексер — это этап, где строка кода сначала режется на токены, а уже потом парсер пытается понять структуру выражения. То есть интерпретатор не читает код как человек, он сначала превращает текст в более удобный набор деталей.
Подробнее в разборе.
DEV Community
Lexers
what is lexer ? A lexer is a component that converts raw source code characters into...
❤1
Python-скрипт не обязан быть простынёй из команд сверху вниз
На старте нормально писать .py-файл как список действий: импортировали библиотеку, что-то скачали, обработали, вывели результат. Но чем длиннее такой скрипт, тем сложнее понять, где вход, где настройки, где основная логика и что вообще можно переиспользовать.
Real Python показывает, как постепенно привести скрипт к более взрослому виду: разнести импорты, вынести константы, добавить
Хороший следующий шаг после прочтения — взять свой старый скрипт и попытаться его декомпозировать. Хотя бы вынести настройки в константы, а основной запуск положить в
#python
На старте нормально писать .py-файл как список действий: импортировали библиотеку, что-то скачали, обработали, вывели результат. Но чем длиннее такой скрипт, тем сложнее понять, где вход, где настройки, где основная логика и что вообще можно переиспользовать.
Real Python показывает, как постепенно привести скрипт к более взрослому виду: разнести импорты, вынести константы, добавить
main(), использовать if __name__ == "__main__", принимать аргументы из командной строки и аккуратнее оформлять вывод.Хороший следующий шаг после прочтения — взять свой старый скрипт и попытаться его декомпозировать. Хотя бы вынести настройки в константы, а основной запуск положить в
main().#python
Realpython
How Can You Structure Your Python Script? – Real Python
Structure your Python script like a pro. This guide shows you how to organize your code, manage dependencies with PEP 723, and handle command-line arguments.
❤1
Первый парсер, который достаёт данные с реальной страницы
После базового синтаксиса часто непонятно, как перейти от упражнений к чему-то похожему на настоящую задачу. Веб-скрейпинг для этого хорошо подходит: программа открывает страницу, находит нужные элементы и сохраняет результат.
В разборе freeCodeCamp это проходит пошагово: запросить HTML, разобрать его, выбрать данные по тегам/классам и сложить их в удобный вид. HTML здесь — разметка страницы, а парсер помогает достать из неё нужные куски.
Хороший следующий шаг: взять одну простую страницу с таблицей или списком и вытащить из неё 5–10 строк. Не весь интернет, а маленький понятный кусок.
После базового синтаксиса часто непонятно, как перейти от упражнений к чему-то похожему на настоящую задачу. Веб-скрейпинг для этого хорошо подходит: программа открывает страницу, находит нужные элементы и сохраняет результат.
В разборе freeCodeCamp это проходит пошагово: запросить HTML, разобрать его, выбрать данные по тегам/классам и сложить их в удобный вид. HTML здесь — разметка страницы, а парсер помогает достать из неё нужные куски.
Хороший следующий шаг: взять одну простую страницу с таблицей или списком и вытащить из неё 5–10 строк. Не весь интернет, а маленький понятный кусок.
❤1
Перед первым сайтом лучше выбрать не фреймворк, а задачу
Когда только начинаешь делать сайты, очень легко застрять в вопросе, что брать: React, Vue, Next или что-то ещё?. Но стек — это не отправная точка, а инструмент под уже понятную задачу.
Мы на сайте разобрали, что сначала стоит понять другое: зачем нужен сайт, кто им будет пользоваться, какие страницы там будут, кто будет обновлять контент и насколько проект должен расти.
Практический шаг простой: перед выбором технологии выпишите цель сайта, список страниц, данные, которые нужно хранить, и кто будет всё поддерживать. После этого стек выбирается спокойнее.
Когда только начинаешь делать сайты, очень легко застрять в вопросе, что брать: React, Vue, Next или что-то ещё?. Но стек — это не отправная точка, а инструмент под уже понятную задачу.
Мы на сайте разобрали, что сначала стоит понять другое: зачем нужен сайт, кто им будет пользоваться, какие страницы там будут, кто будет обновлять контент и насколько проект должен расти.
Практический шаг простой: перед выбором технологии выпишите цель сайта, список страниц, данные, которые нужно хранить, и кто будет всё поддерживать. После этого стек выбирается спокойнее.
❤1
Маленький конвертер текста, где HTML, CSS и JS наконец работают вместе
Если уже знаете теги, стили и пару строк JavaScript, но не очень понятно, как собрать из этого готовую страницу, хороший следующий шаг — небольшой инструмент.
В разборе freeCodeCamp предлагают сделать case converter: поле ввода, кнопки для UPPERCASE, lowercase и Title Case, счётчик символов и слов, копирование текста в буфер и скачивание результата. Буфер обмена — это место, куда попадает текст после команды «копировать».
Проект простой, но полезный: вы связываете разметку, стили, события кнопок и обработку строки в одну работающую страницу.
Если уже знаете теги, стили и пару строк JavaScript, но не очень понятно, как собрать из этого готовую страницу, хороший следующий шаг — небольшой инструмент.
В разборе freeCodeCamp предлагают сделать case converter: поле ввода, кнопки для UPPERCASE, lowercase и Title Case, счётчик символов и слов, копирование текста в буфер и скачивание результата. Буфер обмена — это место, куда попадает текст после команды «копировать».
Проект простой, но полезный: вы связываете разметку, стили, события кнопок и обработку строки в одну работающую страницу.
❤1
Первый scatter-график в Python без лишней математики
Диаграмма рассеивания помогает увидеть связь между двумя наборами чисел. Например, как время обучения связано с результатом теста или как цена товара зависит от рейтинга.
В разборе показывают
После чтения можно взять два маленьких списка чисел и построить свой график. А потом выделить одну группу другим цветом, чтобы понять, как визуализация помогает читать данные.
Диаграмма рассеивания помогает увидеть связь между двумя наборами чисел. Например, как время обучения связано с результатом теста или как цена товара зависит от рейтинга.
В разборе показывают
plt.scatter() из Matplotlib: как передать значения по осям X и Y, поменять цвет и размер точек, добавить подписи и сетку. Matplotlib — популярная библиотека Python для графиков.После чтения можно взять два маленьких списка чисел и построить свой график. А потом выделить одну группу другим цветом, чтобы понять, как визуализация помогает читать данные.
❤1🤔1
Как поставить боту потолок шагов, чтобы не сжечь бюджет
Если пишете бота, который сам решает, что делать дальше, начните с правила: у цикла обязательно должно быть условие выхода. Агентный цикл — когда модель внутри
Поэтому перед запуском задайте предохранитель: лимит шагов и счётчик. Проверяйте их до очередного вызова модели. Главное: заранее решить, что значит «готово».
Автор собрал минимальный каркас: спецификацию задачи, предохранитель и журнал каждого шага. Посмотрите, как он устроен: пригодится для первых ботов.
Если пишете бота, который сам решает, что делать дальше, начните с правила: у цикла обязательно должно быть условие выхода. Агентный цикл — когда модель внутри
while True сама вызывает функции и решает, остановиться или идти дальше. Без условия выхода он не падает: делает то, что ему сказали, пока не кончатся деньги. В статье есть случаи, когда такие циклы сжигали десятки тысяч долларов за часы или дни.Поэтому перед запуском задайте предохранитель: лимит шагов и счётчик. Проверяйте их до очередного вызова модели. Главное: заранее решить, что значит «готово».
Автор собрал минимальный каркас: спецификацию задачи, предохранитель и журнал каждого шага. Посмотрите, как он устроен: пригодится для первых ботов.
❤2
Как большие сервисы переваривают миллионы операций в день
Свежий разбор freeCodeCamp объясняет масштабирование платформ без прыжка сразу в сложную теорию распределённых систем.
Внутри базовые, но важные кирпичи: балансировщики, кеш, очереди, реплики базы, идемпотентность, мониторинг и подготовка к пикам нагрузки.
Свежий разбор freeCodeCamp объясняет масштабирование платформ без прыжка сразу в сложную теорию распределённых систем.
Внутри базовые, но важные кирпичи: балансировщики, кеш, очереди, реплики базы, идемпотентность, мониторинг и подготовка к пикам нагрузки.
❤2🤔1
Как мы проскочили путь от первого iPhone и сложной разработки под мобильные устройства до эпохи ИИ? Что случилось и к чему это привело — в третьей части цикла об истории российского IT.
Мобильный бум застал индустрию врасплох: было непонятно, как адаптировать сайты под маленькие экраны и что делать со слабой связью. Решением стали нативные приложения — их начали разрабатывать многие компании. Так мы пришли к эпохе супераппов, где собрано всё и сразу.
Приложений, проектов и стартапов становилось больше — начался расцвет российского IT. Но разработчиков не хватало, и на сцену вышли курсы, школы и онлайн-уроки. Желающих войти в профессию оказалось огромное количество, и рынок быстро перегрелся. Теперь новичков заменяет ИИ, а найти работу — задача со звёздочкой. Сегодня гонка за лучшими программистами превратилась в гонку ИИ-инфраструктур.
Так решения порождали новые проблемы, а российская IT-индустрия вышла на новый уровень сложности. Подробнее — в материале на Tproger.
Мобильный бум застал индустрию врасплох: было непонятно, как адаптировать сайты под маленькие экраны и что делать со слабой связью. Решением стали нативные приложения — их начали разрабатывать многие компании. Так мы пришли к эпохе супераппов, где собрано всё и сразу.
Приложений, проектов и стартапов становилось больше — начался расцвет российского IT. Но разработчиков не хватало, и на сцену вышли курсы, школы и онлайн-уроки. Желающих войти в профессию оказалось огромное количество, и рынок быстро перегрелся. Теперь новичков заменяет ИИ, а найти работу — задача со звёздочкой. Сегодня гонка за лучшими программистами превратилась в гонку ИИ-инфраструктур.
Так решения порождали новые проблемы, а российская IT-индустрия вышла на новый уровень сложности. Подробнее — в материале на Tproger.
❤2
Один качественный пул-реквест лучше сырых правок
Если пока неясно, что такое пул-реквест — коротко: это запрос влить ваши изменения в чужой проект. GitHub теперь позволяет владельцу проекта задать лимит: у внешнего автора одновременно не может быть открыто больше заданного числа таких запросов. Если превысил лимит, закрой один запрос или доведи его до принятия в проект, прежде чем открывать следующий. Черновики не считаются, доверенных авторов можно внести в исключения.
Смысл для новичка: лучше взять одну маленькую задачу, разобраться и довести её до результата, чем раскидывать полуфабрикаты. Попробуйте найти в знакомом проекте одну опечатку или простую правку и сделайте пул-реквест, так быстрее почувствуете, как работают открытые проекты.
Если пока неясно, что такое пул-реквест — коротко: это запрос влить ваши изменения в чужой проект. GitHub теперь позволяет владельцу проекта задать лимит: у внешнего автора одновременно не может быть открыто больше заданного числа таких запросов. Если превысил лимит, закрой один запрос или доведи его до принятия в проект, прежде чем открывать следующий. Черновики не считаются, доверенных авторов можно внести в исключения.
Смысл для новичка: лучше взять одну маленькую задачу, разобраться и довести её до результата, чем раскидывать полуфабрикаты. Попробуйте найти в знакомом проекте одну опечатку или простую правку и сделайте пул-реквест, так быстрее почувствуете, как работают открытые проекты.
💯2🔥1🎉1🌚1