Почему ваш пет-проект ещё не бизнес, а вы — не предприниматель
У каждого второго разработчика в столе лежит проект, который «вот-вот станет бизнесом». Осталось дописать пару фич — и дальше всё поедет само. Спойлер: не поедет. Разбираемся, где заканчивается код и начинается бизнес: почему всё стартует не с технологии, а с чужой проблемы, чем фаундер отличается от тимлида и почему рабочий сервис с первыми пользователями и MRR — это не бизнес, а промежуточный результат.
Простой тест: уйдите в отпуск на две недели, и если без вас всё встало — поздравляем, у вас пока не бизнес, а вы сами и есть главный «производственный ресурс».
Внутри ещё и про AR-очки на трамвайном заводе, которые зарубили сами рабочие: история о том, как ценность решения определяете не вы.
У каждого второго разработчика в столе лежит проект, который «вот-вот станет бизнесом». Осталось дописать пару фич — и дальше всё поедет само. Спойлер: не поедет. Разбираемся, где заканчивается код и начинается бизнес: почему всё стартует не с технологии, а с чужой проблемы, чем фаундер отличается от тимлида и почему рабочий сервис с первыми пользователями и MRR — это не бизнес, а промежуточный результат.
Простой тест: уйдите в отпуск на две недели, и если без вас всё встало — поздравляем, у вас пока не бизнес, а вы сами и есть главный «производственный ресурс».
Внутри ещё и про AR-очки на трамвайном заводе, которые зарубили сами рабочие: история о том, как ценность решения определяете не вы.
❤1👍1
ИИ для автоматизации рассчётно-кассового обслуживания: как убрать ручной ввод паспортов
В банках оператор до сих пор часто перепечатывает паспортные данные руками. Долго, дорого и с ошибками. В статье показывают, как это чинят с помощью OCR и компьютерного зрения.
Что под капотом:
— Разворот паспорта распознаётся меньше чем за секунду — даже с бликами, тенями и если снято под углом. Тянет 103 языка, паспорта РФ и СНГ, права, рукописный текст и штампы;
— Всё крутится on-premise, документы не уходят на сторону. На одном сервере без всякой GPU — до 125 разворотов в секунду, точность 99,9%.
Самое интересное: распознавание можно запускать прямо в браузере через WebAssembly, то есть на устройстве пользователя, без отправки данных на сервер и обратно. Встраивается в интернет-банк и в мини-аппы Telegram и MAX.
Плюс антифрод: 600+ признаков подделки, проверка NFC-чипа, детект дипфейков.
Из живого кейса — в РНКО «Металлург» ручного ввода стало меньше минимум в 4 раза.
В банках оператор до сих пор часто перепечатывает паспортные данные руками. Долго, дорого и с ошибками. В статье показывают, как это чинят с помощью OCR и компьютерного зрения.
Что под капотом:
— Разворот паспорта распознаётся меньше чем за секунду — даже с бликами, тенями и если снято под углом. Тянет 103 языка, паспорта РФ и СНГ, права, рукописный текст и штампы;
— Всё крутится on-premise, документы не уходят на сторону. На одном сервере без всякой GPU — до 125 разворотов в секунду, точность 99,9%.
Самое интересное: распознавание можно запускать прямо в браузере через WebAssembly, то есть на устройстве пользователя, без отправки данных на сервер и обратно. Встраивается в интернет-банк и в мини-аппы Telegram и MAX.
Плюс антифрод: 600+ признаков подделки, проверка NFC-чипа, детект дипфейков.
Из живого кейса — в РНКО «Металлург» ручного ввода стало меньше минимум в 4 раза.
❤1
Git игнорирует файлы на трёх уровнях, не только через .gitignore
Если вы только начинаете с Git, вы уже встречали .gitignore — файл, в котором перечисляют, что Git не должен отслеживать:
Тут помогают ещё два уровня.
Чтобы проверить, почему конкретный файл не попадает в
Если вы только начинаете с 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 Звёздных войн или классификатор картинок. В материале всё разложено по уровню, так что удобно выбрать следующий шаг под себя.
Если после переменных, условий и циклов непонятно, куда двигаться, подборка Mimo даёт готовый маршрут: 19 проектов для начинающих — от списка дел и угадайки слова до чат-бота и классификатора изображений. К каждому проекту приложены исходный код и пошаговые инструкции, чтобы можно было собрать программу, а не только прочитать про неё.
Начните с малого: список дел или игра «угадай слово» тренируют ввод данных, проверку условий и работу с циклами. Это не абстрактные упражнения, а конкретные программы, в которых видно, как отдельные темы соединяются в работающий код.
Когда база будет увереннее, можно взяться за проекты посложнее — получение данных через API Звёздных войн или классификатор картинок. В материале всё разложено по уровню, так что удобно выбрать следующий шаг под себя.
❤4
Как собрать разрозненный Python в одну картинку
Real Python предлагает проверить понимание концепций языка тремя шагами: объяснить концепцию своими словами, найти ей знакомый аналог и применить в маленькой задаче.
Суть — не зубрить, а увидеть, как идея работает в коде. Возьмите тему, которую пока не чувствуете, и опишите её так, будто соседу по парте. Да, тот самый метод утёнка. Потом дайте себе пять минут и сравните её с похожей. Разница, которую вы сформулируете словами, лучше конспекта покажет, где остались дыры.
Real Python предлагает проверить понимание концепций языка тремя шагами: объяснить концепцию своими словами, найти ей знакомый аналог и применить в маленькой задаче.
Суть — не зубрить, а увидеть, как идея работает в коде. Возьмите тему, которую пока не чувствуете, и опишите её так, будто соседу по парте. Да, тот самый метод утёнка. Потом дайте себе пять минут и сравните её с похожей. Разница, которую вы сформулируете словами, лучше конспекта покажет, где остались дыры.
❤1
Ваша память ещё работает или нейронки уже и помнят всё за вас?
Чтобы это проверить мы приготовили для вас «Меморину» — игру, которая поможет проверить вашу память.
Всё просто: нужно запомнить и выбрать одинаковые карточки. Если память плохая, то рано или поздно вы всё равно справитесь. А если хорошая, то сможете увидеть ваш потолок скорости.
Ну что, готовы проверить? Тогда переходите по ссылке: https://tprg.ru/ha7S
Чтобы это проверить мы приготовили для вас «Меморину» — игру, которая поможет проверить вашу память.
Всё просто: нужно запомнить и выбрать одинаковые карточки. Если память плохая, то рано или поздно вы всё равно справитесь. А если хорошая, то сможете увидеть ваш потолок скорости.
Ну что, готовы проверить? Тогда переходите по ссылке: https://tprg.ru/ha7S
❤1🔥1🤗1
Git изнутри: можно не зубрить команды, а собрать свой
Когда Git кажется набором магических слов вроде
Это хороший следующий шаг после базовых команд. Не нужно проходить весь материал сразу — достаточно попробовать первую часть и увидеть, что за каждой командой стоит простая механика, а не тёмная магия.
Когда Git кажется набором магических слов вроде
commit и branch, сложно понять, что происходит на самом деле. Туториал Никиты Лешенко предлагает собрать Git своими руками: вы пишете крошечные версии команд и видите, как хранилище проекта содержит файлы, историю изменений и разницу между версиями.Это хороший следующий шаг после базовых команд. Не нужно проходить весь материал сразу — достаточно попробовать первую часть и увидеть, что за каждой командой стоит простая механика, а не тёмная магия.
❤2
Forwarded from Zen of Python
Метакласс: не магия, а ещё один уровень явности Python
Если класс — фабрика объектов, то метакласс играет роль фабрики самих классов. В Python 3 это не опция, а дефолт: любой ваш класс является экземпляром
Свой метакласс наследуется от
Отсюда следует, почему в Python всё есть объект, включая само определение класса. Разбираемся в деталях.
Если класс — фабрика объектов, то метакласс играет роль фабрики самих классов. В Python 3 это не опция, а дефолт: любой ваш класс является экземпляром
type, а class Foo: pass раскрывается в type('Foo', (), {}).Свой метакласс наследуется от
type и переопределяет __new__ или __init__. Он позволяет собирать, изменять или регистрировать классы программно, но в Python явность важнее изящества. В большинстве случаев ту же задачу решают наследование или декоратор класса.Отсюда следует, почему в Python всё есть объект, включая само определение класса. Разбираемся в деталях.
❤1👍1😁1
Forwarded from Сохранёнки программиста
Почему DuckDB обгоняет Spark на одной машине
Разбор от endjin объясняет, как встраиваемая база DuckDB превращает ноутбук в инструмент для аналитики на миллиардах строк: скорость здесь — не в масштабе, а в бережном использовании железа. Колоночное хранилище читает только нужные столбцы, векторизованное выполнение обрабатывает данные пачками по 1024–2048 значений, умещаясь в кэш процессора, а min-max-индексы пропускают целые группы строк по фильтрам. Всё параллелится на все ядра.
В тесте TPC-H DuckDB на одной машине справилась за 1 минуту 16 секунд, Spark на 32 узлах — около 8 минут. Распределённые накладные расходы дороже выигрыша от кластера.
Это не замена PostgreSQL или Kafka: один писатель, одна нода, petabyte уйдут в распределённые системы. Статья полезна тем, кто строит ETL и хочет понять, где сидит производительность.
Сохраните, если выбираете инструменты для аналитики.
Разбор от endjin объясняет, как встраиваемая база DuckDB превращает ноутбук в инструмент для аналитики на миллиардах строк: скорость здесь — не в масштабе, а в бережном использовании железа. Колоночное хранилище читает только нужные столбцы, векторизованное выполнение обрабатывает данные пачками по 1024–2048 значений, умещаясь в кэш процессора, а min-max-индексы пропускают целые группы строк по фильтрам. Всё параллелится на все ядра.
В тесте TPC-H DuckDB на одной машине справилась за 1 минуту 16 секунд, Spark на 32 узлах — около 8 минут. Распределённые накладные расходы дороже выигрыша от кластера.
Это не замена PostgreSQL или Kafka: один писатель, одна нода, petabyte уйдут в распределённые системы. Статья полезна тем, кто строит ETL и хочет понять, где сидит производительность.
Сохраните, если выбираете инструменты для аналитики.
❤3😘1
Forwarded from GameDev: разработка игр
80% корпоративных программ геймификации ломаются на одном и том же месте
По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80% корпоративных программ геймификации не достигают целей. Спрос огромный, качество — низкое, а причина проста: делать это берутся не те люди.
В статье разбирают, как корпоративные клоны механик упускают баланс и контекст, и что делать, чтобы прогрессия не превращалась в цифровой пендель. Для геймдевелоперов это отличная ниша, где есть и деньги, и возможность применить свои скиллы на практике.
По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80% корпоративных программ геймификации не достигают целей. Спрос огромный, качество — низкое, а причина проста: делать это берутся не те люди.
В статье разбирают, как корпоративные клоны механик упускают баланс и контекст, и что делать, чтобы прогрессия не превращалась в цифровой пендель. Для геймдевелоперов это отличная ниша, где есть и деньги, и возможность применить свои скиллы на практике.
❤2🙏1😐1
GameDev: разработка игр
80% корпоративных программ геймификации ломаются на одном и том же месте По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80%…
Открыли игру или тест на сайте. Что решает, доиграете вы или закроете вкладку через 20 секунд? 👇
Anonymous Poll
22%
Коротко: вся игра на 2–3 минуты
4%
Результатом можно красиво поделиться — как квадратики Wordle
24%
Есть приз за прохождение
15%
Виден рейтинг — хочу обогнать других
43%
Тема цепляет лично меня — про профессию, про своё
14%
С каждым днём новый уровень — есть причина вернуться
42%
Просто красиво и залипательно сделано
35%
Ничего — закрываю почти всегда
👎1🆒1
itertools: не хранить то, что можно перебирать по одному
Когда начинаешь писать циклы, легко собрать промежуточный список там, где он не нужен. Модуль itertools из стандартной библиотеки Python помогает обходиться без этих лишних коллекций: элементы создаются по запросу, не накапливаясь в памяти. Это особенно удобно для больших файлов и последовательностей, которые могут быть бесконечными.
В нём три группы инструментов: бесконечные итераторы вроде
В статье разобрали, где itertools помогает, а где лучше обойтись без него.
Когда начинаешь писать циклы, легко собрать промежуточный список там, где он не нужен. Модуль itertools из стандартной библиотеки Python помогает обходиться без этих лишних коллекций: элементы создаются по запросу, не накапливаясь в памяти. Это особенно удобно для больших файлов и последовательностей, которые могут быть бесконечными.
В нём три группы инструментов: бесконечные итераторы вроде
count, конечные вроде chain и islice, и комбинаторные, которые перебирают варианты. Например, islice(count(1), 5) выдаст первые пять чисел, не собирая список.В статье разобрали, где itertools помогает, а где лучше обойтись без него.
✍1❤1
Forwarded from Веб-страница
Деструктуризация в JS: когда она мешает, а не помогает
Мэтт Смит разобрал, почему перестал разбивать объекты на переменные по первой же возможности. Привычка вроде
Его правило: оставляйте точку.
Такой подход упрощает поддержку кода: меньше магических переменных, меньше когнитивной нагрузки, проще читать спустя месяцы. Разобрался Смит здесь.
Мэтт Смит разобрал, почему перестал разбивать объекты на переменные по первой же возможности. Привычка вроде
const { status } = project экономит пару символов, но в длинной функции status превращается в магическую переменную: приходится листать вверх, чтобы вспомнить, откуда она взялась.Его правило: оставляйте точку.
project.status сразу говорит, из какого объекта значение, а голая status — нет. То же с post.title или user.name: повторять объект не страшно, если контекст остаётся на виду. Деструктурируйте только когда объект уже очевиден из окружения — например, внутри короткого колбэка.Такой подход упрощает поддержку кода: меньше магических переменных, меньше когнитивной нагрузки, проще читать спустя месяцы. Разобрался Смит здесь.
❤1👍1
Forwarded from Zen of Python
OpenCode: ИИ-агент для Python в терминале, который не уводит код в облако
Если вы предпочитаете командную строку графическим IDE, OpenCode может оказаться удобнее: он работает как TUI прямо в консоли, понимает контекст Python-проекта и рефакторит код с учётом всей кодовой базы, а не вставленного фрагмента.
Для питониста тут два полезных момента. Первый — локальность: провайдер подключается из вашей среды, файлы остаются на вашей машине. Второй: встроенный Pyright и режимы Plan/Build, которые либо показывают план правок, либо применяют его сразу. Ещё AGENTS.md позволяет явно прописать правила проекта: от стиля до команд запуска.
Для старта достаточно бесплатного ключа Gemini. Подробности в обзоре.
Если вы предпочитаете командную строку графическим IDE, OpenCode может оказаться удобнее: он работает как TUI прямо в консоли, понимает контекст Python-проекта и рефакторит код с учётом всей кодовой базы, а не вставленного фрагмента.
Для питониста тут два полезных момента. Первый — локальность: провайдер подключается из вашей среды, файлы остаются на вашей машине. Второй: встроенный Pyright и режимы Plan/Build, которые либо показывают план правок, либо применяют его сразу. Ещё AGENTS.md позволяет явно прописать правила проекта: от стиля до команд запуска.
Для старта достаточно бесплатного ключа Gemini. Подробности в обзоре.
❤2
Forwarded from Веб-страница
React.iss.onemo не спасает, если в пропсы летят inline-объекты
Поисковая строка тормозит список, Profiler рисует 200 лишних рендеров, а вы уже обернули всё в
Меня убедили цифры из эксперимента: 200 memoизированных строк на один keystroke рендерились 243,9 мс, после стабилизации ссылок — 6 мс. Поэтому статические объекты выносите за пределы компонента, а
Полный разбор с примерами
Поисковая строка тормозит список, Profiler рисует 200 лишних рендеров, а вы уже обернули всё в
React.iss.onemo и добавили useCallback на обработчики. Виноват обычно один JSX-паттерн: style={{ padding: 16 }} или колбэк прямо в разметке. memo сравнивает пропсы через Object.is, а для объектов и функций это проверка по ссылке: каждый рендер родителя создаёт новую ссылку, и React снова рисует дочерний компонент.Меня убедили цифры из эксперимента: 200 memoизированных строк на один keystroke рендерились 243,9 мс, после стабилизации ссылок — 6 мс. Поэтому статические объекты выносите за пределы компонента, а
useCallback добавляйте только там, где колбэк реально уходит в memoизированного потомка. Хуки «на всякий случай» не помогут: сначала меряйте в Profiler.Полный разбор с примерами
❤1
Соберите первую консольную утилиту (CLI) на Go, которая понимает команды
Если вы уже пробовали Go и хотите, чтобы программа реагировала на ввод в терминале, попробуйте Cobra. Это библиотека, которая берёт на себя разбор команд, их аргументов и справки, поэтому ваш скрипт ведёт себя как настоящая утилита.
Автор статьи шаг за шагом строит CLI
После прохождения добавьте команду
Если вы уже пробовали Go и хотите, чтобы программа реагировала на ввод в терминале, попробуйте Cobra. Это библиотека, которая берёт на себя разбор команд, их аргументов и справки, поэтому ваш скрипт ведёт себя как настоящая утилита.
Автор статьи шаг за шагом строит CLI
k8s-info с командами version и cluster. Главное здесь не название, а принцип: отдельный файл под каждую команду, общий корневой файл и main.go, который запускает Execute(). Повторите за автором, чтобы увидеть, как куски кода складываются в работающую программу.После прохождения добавьте команду
hello сами — это лучший способ понять, почему такая структура масштабируется.❤1