SILLYFEED

Программирование — страница 12

Лента темы

Уголок о комьюнити | коллега Саша
Пока я всеми силами собираю дайджест интересных событий в IT-бренде, покажу, что меня порадовало на сайте конференции от Яндекса, команды городских сервисов.На конференции DAY & NIGHT анонсировали формат клубов и варианты для живого общения. Думаю, многие из нас видели посты и видео о том, что форматы конференций устарели и нужно что-то менять. Много полезного уже можно найти в интернете и собрать какое-то решение с армией ИИ-агентов, а живое общение и социализацию пока никто не заменит.Меня зацепило два блока.🔘Отдельный блок про общение:настольные игры, профессиональные дискуссии и совместное решение задач.🔘Клубы:клуб музыки и винила (!) — отдельный лайк за то, что можно познакомиться не только по профессиональному признаку, но и по творческим интересам и хобби. Ну и разные клубы про ML, бэкенд и т. д.Конечно, многие уже делали похожие форматы, и весь прошлый год на лендингах всё чаще появлялись описания чего угодно, только не докладов. И сейчас на сайте ещё нет докладов, но понятные и удобные форматы для общения уже описаны!Сюда же как пример можно привести конференцию t-sync conf, на которой докладов не было вообще! Вдохновиться и посмотреть, как проходила конференция Т-банка без докладов, можно тут.А через две недели уже будет дайджест IT-событий за три месяца!! Ждёте?
MADTeacher | Станислав Чернышев
Мы в жопе… 🫠В последнее время ловлю себя на мысли, что под обучением и отдачей своего мышления на аутсорс LLM-агенту люди понимают одно и тоже 🤬Студент еще не умеет нормально читать код, искать и править баги, понимать архитектурные ограничения и отличать хорошее решение от плохого, но уже открывает IDE с встроенным агентом, пишет ему «Дверь мне запили!» и с чувством выполненного долга идет хвастаться в сети какой он охеренный разработчик 😄Вот тут-то и кроется главная загвоздка!!!Да, возможно, написанный агентом код выглядит кошерно, что-то даже запускается и не падает после 5 минут использования. Но это порождает лишь иллюзию быстрого роста в профессии, когда на самом деле человек либо стоит на месте, либо деградирует… 👀Обучение – это не тот процесс, когда ты вбил пару промтов и на выходе получил кусок кода. Это путь боли и страданий, пройдя через который, разработчик начинает понимать как, черт подери, на молитвах и чьей-то матери держится эта кодовая база, почему решение устроено именно так, где у него слабые места, на каких допущениях оно держится и в какой момент развалится. 🤔Раньше, если ты не понимал, что делаешь – довольно быстро упирался в стену, после чего шел читать документацию, экспериментировать, ошибаться, переписывать, тупить, испытывать моменты озарения в самых неожиданных ситуациях и т.д. Это был не самый приятный процесс, но именно он заставлял мозг работать. 😏Сейчас же наличие LLM делает эту стену невидимой!!! Из-за чего многим начинает казаться, что они растут как специалисты, хотя, на самом деле, просто научились быстрее получать правдоподобный результат от агента 🤩А потом эти люди сталкиваются с суровой жизнью – им прилетает не учебная, а реальная задача. Со своей историей превозмоганий, ограничениями, кучей легаси, side-эффектами, странным поведением системы и самое главное – необходимостью отвечать за последствия. И вот тут внезапно выясняется, что «уметь получить ответ» и «уметь решить проблему» – не одно и то же 👀Именно это меня и напрягает больше всего. Если все так и продолжится, мы вполне можем вырастить поколение людей, которые отлично умеют пользоваться костылем, но очень плохо ходят на своих двоих 🫠10 бомбящих Стасиков из 5
Kashkin.me
Пятничная история.Человек принял оффер в компании, но ему выдали ноутбук с Windows и он просто отказался от оффера.Винда для разработчика является очень неудобной платформой. В отличии от тех кто работает с графикой, звуком, видео. Плюс на Винде очень много всякого корпоративного софта который следит, проверяет, делает какие-то репорты. В общем анальные зонды. Я много лет работал на Windows и помню, что в какой-то момент замерял сколько времени я трачу на донастройку компьютера, как основного рабочего инструмента, под себя. В тот момент это было что-то около 3-4 часов в неделю. Просто чтобы оставаться на месте: поставь антивирус, подчисти реестр, перенеси папки, что-то включи или выключи.На macOS у меня эти траты свелись практически к нулю. Плюс стоимость переноса своего рабочего окружения на новый ноутбук занимает около часа. Купил новый ноут, нажал кнопку "миграция" и все, у тебя работает и можно продолжить работу. Даже переход между Intel и Silicon архитектурой был практически безболезненным.Я иногда чищу какие-то старые файлы и бывает вижу файл настроек программы которую я использовал в 2010 году. Плюс архитектурно Unix системы более открыты. Я могу пользоваться коммандной строкой для множества вещей. Когда работал в Винде мне этого оказывается не хватает как воздуха.Ну и про деньги. У нас сейчас в ящике стола лежит мой старый ноут. Я его купил как раз в Таиланде, это была модель 2012 года на которой я работал кажется лет 7. Как подросла дочка я отдал его ей как личный ноутбук. В прошлом году я подарил новый Air жене, а она свой ноут отдала старшей и модель 12 года ушла на покой. Хотя это полностью рабочий ноутбук с хорошей клавиатурой. В нем кажется была замена аккумулятора. 13 лет этот ноубук прослужил как хороший и качественный рабочий инструмент. Я на нем сделал кучу рабочих проектов, тягал за собой по всему миру, смотрел сериалы в ванной. Он очень легкий и удобный. Сейчас его батарейки хватает разве что переподключить ноут из розетки в соседней комнате, но во всем остальном он прекрасно справился со всеми задачами.Про свои Windows компьютеры я даже не хочу вспоминать. В общем очень понимаю человека со скриншота.
Стас Ильин | Flutter
😯 Писать UI и end-to-end тесты теперь можно без знаний в программировании 💪 Фреймворк Maestro помогает создать простые интеграционные тесты используя только симулятор и мышку 🤨 Все что вам нужно: открыть Maestro Studio и ваше приложение на симуляторе, открыть инспектор (штука которая подсвечивает активные для нажатия области на экране приложения) и потыкать в нужные кнопочки 😮Проделанные вами нажатия, свайпы и скролы сохранятся в специальный yaml-файлик как конфигурация теста И вуаля! Теперь у вас есть готовый тест 🥳👩‍💻 Работает эта штука с Android, iOS, web, Flutter, React Native и всеми другими популярными и не очень фреймворками Ссылкой поделился СергейА узнать про фреймворк подробнее можно на сайте
IT Cloud Materials
Fence, Gate, Railing & Wall Generator v1.1Процедурный генератор заборов, ворот, перил и стен• 250+ процедурных объектов, созданных с помощью этого генератора• 220+ объектов материалов, созданных с использованием 6 процедурных материалов(кирпич, цемент, мрамор, металл, камень и дерево включены)🖼 Подробнее⬇️ Скачать#addon #Blender
Антон Рожков. Интернет-маркетинг и управление командой
Как я за вечер сделал бота, который ловит 404 в рекламеОшибаются все. Специалисты, клиенты, подрядчики. Страницы удаляют, адреса меняют, UTM-метки прописывают криво. Вопрос не в том, как исключить ошибки — а в том, как быстро их находить.У нас в агентстве типичная картина: у клиента 15–20 кампаний в Директе. В них — 300 объявлений. Кто-то на стороне клиента удалил страницу, ничего нам не сказал — а реклама продолжает крутиться. Деньги льются на 404.Проверить руками — час на одного клиента. А клиентов много. Специалистам некогда — они занимаются оптимизацией и аналитикой. Эта задача всегда в конце списка. Пока кто-нибудь случайно не заметит, что бюджет льётся в пустоту.Я решил это автоматизировать.Сначала описать, потом сделатьЯ не начал с кода (я не программист). Сел описывать задачу — PRD. Что бот должен делать, какие ограничения у API Директа, как защитить данные клиентов друг от друга.PRD писал не один. Я накидывал структуру, а Claude Code помогал формировать — задавал уточняющие вопросы, предлагал формат ответов, продумывал неочевидные сценарии. Получился документ на 5 страниц. Архитектура, формат сообщений, безопасность. Всё — до первой строчки кода.Чем точнее опишешь ЧТО нужно, тем лучше AI справится с реализацией.Claude Code пишет кодСкормил готовый PRD. Claude Code изучил существующие модули — и за один подход написал 11 файлов. Бот, URL-чекер, обработчики Telegram-сообщений, авторизация, rate limiter. Я ревьюил, тестировал, давал обратную связь.Первый деплой — тишинаЗапускаю. Пишу боту. Ноль реакции.Говорю Claude Code — «бот молчит, разберись». Он добавил дебаг-логирование, перезапустил — в логах видно: бот получает сообщения, но моментально отбрасывает. Сравнил chat_id из конфига с тем, что приходит от Telegram — оказалось, Telegram для супергрупп добавляет префикс -100 к ID. В конфиге был ID без него. Починил — ожил.Второй баг: внутренний обработчик перехватывал все сообщения, включая /check. Поменяли порядок обработчиков — заработало.Два бага за вечер. Оба — не в логике, а в инфраструктуре. Это нормально.66 URL за 60 секундПервая полная проверка: 12 кампаний, 18 «Мастер кампаний», 66 URL. Специалист тегает бота — получает отчёт за 10 секунд. Красный — крутится и ведёт на 404. Жёлтый — остановлено, но URL битый. Серый — архив.Без этой разбивки бот паниковал бы на каждом архивном объявлении. А их бывает сотни.Неожиданная находкаНа одном из клиентов (гостиничный бизнес) бот нашёл интересную штуку. Базовый URL страницы — работает. Та же страница с UTM-метками — 404.То есть site.com/page/ — ОК. А site.com/page/?utm_source=yandex — ошибка. Рекламная ссылка ведёт на 404, а если проверять руками — всё выглядит нормально.Баг на стороне сайта. Без бота его бы никто не поймал — потому что никто не проверяет ссылки в том виде, в котором они реально крутятся в рекламе.Что я вынесРаньше протестировать такую гипотезу — недели. Я потратил вечер. Написал PRD с Claude Code, получил рабочий код, задеплоил, починил два бага — и у команды появился инструмент 24/7.Главное — не умение писать код. Главное — знать ЧТО нужно. PRD важнее навыка программирования. Порог входа изменился. И это меняет правила.
The Art Of Programming
На эту пятницу 13-го у меня была запланирована заметка про Null Reference, но когда я сел перепроверить фактаж, понял, что придется ее отложить.5 марта умер Чарльз Энтони Ричард Хоар, зимой писал про его работу Hints on Programming Language Design.Чарльз был создателем алгоритма «быстрой сортировки», которую сейчас осваивает любой начинающий программист, да и вообще оставил значительный след в нашем общем компьютерном мире. В тему постов про простоту хочу процитировать часть его выступления по случаю получения премии Тьюринга:I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.The first method is far more difficult. It demands the same skill, devotion, insight, and even inspiration as the discovery of the simple physical laws which underlie the complex phenomena of nature. It also requires a willing-ness to accept objectives which are limited by physical, logical, and technological constraints, and to accept a compromise when conflicting objectives cannot be met. No committee will ever do this until it is too late.Я пришел к выводу, что есть два подхода к разработке программного обеспечения: первый — сделать его настолько простым, чтобы в нем не было очевидных недостатков, а второй — сделать его настолько сложным, чтобы в нем не было очевидных достоинств. Первый подход гораздо сложнее. Это требует тех же навыков, преданности делу, проницательности и даже вдохновения, что и открытие простых физических законов, лежащих в основе сложных явлений природы. Кроме того, это требует готовности принять цели, ограниченные физическими, логическими и технологическими факторами, а также пойти на компромисс, если конфликтующие цели недостижимы. Ни один комитет не сделает этого, пока не станет слишком поздно.
Сиолошная
Cursor написали в своём блоге о том, как отслеживают качество моделей в написании кода. Они используют гибридный онлайн-офлайн процесс.Оффлайн — это обычный бенчмарк на внутреннем наборе тестов, основанном на сессиях работы инженеров компании. В среднем решение требует гораздо больше строк кода в решении, нежели публичные бенчмарки: изменение 352 строк в ~8 файлах.Сравнение с другими бенчмарками приведено на второй картинке — откуда также видно, что входное описание куда короче других бенчмарков, то есть в промпте не прописывают каждую маленькую деталь (но детали прописаны в рубрике для автоматической проверки).Онлайн-часть — это контролируемый анализ на реальном живом трафике. Такие онлайн-оценки помогают выявлять регрессии, например, когда результат работы агента выглядит правильным для проверяющего, но воспринимается хуже самим разработчиком, использующим продукт.Онлайн-оценка позволяет измерить, действительно ли улучшения помогают разработчикам на практике. Cursor отслеживают набор высокоуровневых прокси-метрик (косвенных показателей) результативности агента на основе действий пользователя.Онлайн и офлайн бенчмарк очень скоррелированы и имеют одинаковое ранжирование моделей (третья картинка) — в топе GPT-5.4, чуть ниже Opus 4.6 на уровне с GPT-5.2, а собственная модель компании Composer 1.5 обходит Sonnet 4.5 (при том что она гораздо быстрее за счёт инференса на чипах Cerebras).Приятно удивлён, что пользователи Cursor так высоко оценивают модели OpenAI — но ещё здорово и то, что они требуют меньше токенов для решения задач.Задачи CursorBench решаются в рамках одной сессии, но компания ожидает, что в течение следующего года подавляющее большинство задач по разработке будет передано агентам с длинным горизонтом планирования, работающим на своих собственных мощностях где-то в облаке — и бенчмарк придётся адаптировать к этому.
Авва
Понравилась задача для предварительного интервью программиста (phone screen), которую увидел в Твиттере с пометкой "самая сложная задача предварительного интервью, что я когда-либо видел". Автор поста написал,. что ему 30 минут на нее дали, и интервью он не прошел.Все числа от одного до N, кроме одного, перемешаны в случайном порядке и записаны подряд без пробелов. Вы получаете эту длинную строку и должны найти, какого числа не хватает. Я когда прочитал, сначала немного подумал и решил, что напишу запись, мол, прикольно, но не слишком тяжело, надо немного креативно подумать. Потом подумал еще и сел написать код, а когда написал, решил, что да, в качестве предварительного интервью это очень брутально.P.S. Рад обсуждениям возможных решений, но не надо длинных цитат из ИИ, мы и так все понимаем, что можно его спросить.
ЭТО БАЗА
Когда мы только задумывали VICV, мы даже примерно не представляли, сколько всего предстоит сделать 😝 Да мы и сейчас не понимаем, если честно. Снаружи выглядит просто: есть идея ➡️есть разработка➡️есть запуск. Есть мы с разным опытом, который покрывает верхнеуровневые задачи. Кажется: «собрали за пару недель и полетели». Но реальность оказалась немного другойКонечно, вайбкодинг — это правда очень круто. Я вообще — адвокат lovable. Но как только мы вышли за рамки демки, начался дивный мир разработки.Вот для этого по-прежнему, нам понадобились ручки:— верификация пользователей— автоматические проверки на спам и rules violation — работа с платежами— связь с несколькими базами данных— безопасность— интеграции с внешними сервисами— админ-панели— логика отмен, возвратов, изменений— обработка ошибок— аналитика …. И это еще до запуска 😭Каждый из этих пунктов — это отдельная система со своей логикой.Поэтому, когда говорят:«Сделай приложение за 3 дня» — ну пока нет.Но при этом, я всё равно адвокатирую за то, что каждому стоит научиться хотя бы базовому использованию инструментов вайбкодинга. Особенно если вы маркетолог или владелец бизнеса — это сильно расширяет ваши возможности.❤️Почему✔️Вы можете делать прототипы сами.Проверять идеи, собирать лендинги, маленькие сервисы и тестировать гипотезы без долгих согласований и разработки.✔️Нужно меньше людей на старте.Иногда вместо команды из 4–5 человек достаточно одного сильного специалиста плюс базовые навыки работы с ИИ.✔️Скорость становится в разы выше.✔️Вы лучше понимаете продукт.Когда вы сами собираете интерфейсы и логику, вы начинаете иначе мыслить о продукте и точнее ставите задачи разработчикам.✔️ИИ развивается очень быстроЕсли не начать сейчас, есть риск просто сильно отстать.✒️В общем, полноценный продукт всё ещё требует экспертизы.Но как инструмент для прототипирования, теста идей и ускорения работы — вайбкодинг — ТОП!
Андрей Созыкин
Как использовать OpenRouter в PythonНа RealPython опубликовали руководство по использованию OpenRouter API на Python.Сейчас OpenRouter, на мой взгляд, предоставляет самый удобный API для работы с разными языковыми моделями. Он очень полезен, например, когда в приложении нужно дать пользователю возможность выбора модели для решения задачи. В том числе LLM от разных производителей.RealPython я очень люблю, у них самые понятные и полезные руководства по различным темам, связанным с Python. По OpenRouter руководство получилось как всегда замечательное, смело его рекомендую!
Робот Fleksa | Нейросети - новости, обучение, лайфхаки
🔥Полезный гайд для вайбкодеровГайд по вайбкоддингу Claude Code именно на него перешли многие ребята с ЧатаГПТ и пилят свои прилажухи считая этот инструмент самым умным и подвинутым на рынке.108 тем, которые превращают хаотичные запросы в систему.Что внутри:• Быстрый вход — как начать работать с Claude Code без боли и тупиков.• Workflow — как строить задачи так, чтобы ИИ реально писал рабочий код.• Навыки — какие скиллы прокачивают разработчики, чтобы выжимать максимум.• Шорткаты — десятки маленьких трюков, экономящих часы работы.• Субагенты — как делить задачи между ИИ-ассистентами.• Хуки, автоматизация и продвинутые сценарии.Гайд тут
Гуманитарии в цифре
🖥 Никаких больше инструментов?Долгое время DH-исследователи работали с определенным набором программ: выбирали из доступных инструментов те, которые лучше всего подходили для решения их задач. Что меняется сейчас?Тед Роланд описывает свой эксперимент: используя генеративный ИИ, он за несколько дней создал собственные исследовательские приложения – от инструментов визуализации данных до пайплайна, который преобразует OCR-распознанные тексты в разметку TEI. А ведь раньше на разработку подобных решений уходили недели или даже месяцы. «Нас больше не ограничивает старая проблема «чужого программного обеспечения». Если в популярном программном пакете вашей области не хватает нужной функции или структура данных оказывается неудобной – просто перепишите. Если для работы программы требуется утомительное переформатирование данных – создайте программу, которая сделает это за вас».Автор уверен: если инструменты можно создавать по запросу, меняется и роль исследователя. Важным становится не столько умение работать с конкретными программами, сколько способность формулировать исследовательскую задачу, описывать данные и представлять результат. 🔜 Читать «No more tools»
Пост Лукацкого
На грядущей через 10 дней RSA Conference, судя по программе и комментариям, будут не раз поднимать тему нормальной культуры разбора взломов. Компании обычно раскрывают об инцидентах минимум деталей или вообще стараются замолчать их, но эксперты считают, что это мешает реально снижать риск в целом по отрасли или даже стране. Их главный тезис заключается в том, что утечки и взломы надо рассматривать не только как юридическую проблему и удар по репутации, но и как источник уроков для всей отрасли, примерно так, как авиация или медицина разбирают аварии и смертельные ошибки.Перед конференцией начинает понемногу разгоняться тема, что в кибербезопасности почти нет формализованных "разборов полетов" после крупных инцидентов: компаниям стыдно, они боятся обвинений, исков, и потому не рассказывают, что именно и как у них сломалось. При этом реальные атаки редко происходят из-за одной причины. Обычно это цепочка мелких провалов: пропущенные патчи, неверные настройки, слабый мониторинг, плохое тестирование и организационные сбои. Если такие детали скрывать, другие компании не смогут учиться на чужих ошибках.Отдельный акцент эксперты делают на конфликте между инженерной и юридической логикой. Юристы советуют говорить как можно меньше, чтобы снизить риск исков и претензий. Но с инженерной точки зрения это вредно: в других технологически сложных сферах аварии разбирают открыто именно для того, чтобы не допустить повторения. В кибербезопасности же до сих пор нет устойчивого механизма такого коллективного обучения. И судя по дискуссии в "Молчаливом CISO" у многих отечественных CISO тоже нет мотивации делиться такими кейсами.У нас законодательство не только не требует раскрытия данных об инцидентах в публичной сфере (уведомление НКЦКИ, РКН, ЦБ или Минцифры не в счет), но и прямо ограничивает такую возможность (достаточно вспомнить требования ЦБ и ФСБ по нераскрытию данных об инцидентах в государственных, военных, финансовых и иных организациях). Но даже в США правила раскрытия инцидентов разрозненны, а публичные компании обязаны сообщать о крупных инцидентах в Комиссию по ценным бумагам (SEC) только если те "существенно" повлияли на бизнес (и эксперты до сих спорят, что такое "существенно"). Попыткой создать более системный подход был Cyber Safety Review Board, аналог кибер-NTSB, но после смены президентской администрации его работа фактически остановилась: членов совета уволили, когда он, в частности, занимался кейсом Salt Typhoon и взломом американских телекомов в прошлом году.И тут можно согласиться, что без улучшения прозрачности отрасль ИБ, не только в США, но и в России, рискует тратить деньги на "булшит-бинго", инструменты и compliance-активности, которые выглядят полезно, но не обязательно снижают реальные риски и не допускают недопустимых событий. Поэтому американские эксперты предлагают строить институциональные механизмы прозрачности: анонимизированную отчетность, отложенное раскрытие деталей, safe harbor для добросовестного раскрытия. То есть идея не в публичной порке жертв, а в том, чтобы превратить каждый серьезный инцидент в учебный материал для всей отрасли.Готов ли к этому рынок покажет время... Ну а нам остается только наблюдать за тем, что происходит за океаном, – наш рынок не готов к публичности в делах инцидентных...#антикризис #управлениеинцидентами
/dev/AlphaSierra
Наброски #24: DIY R-2R ЦАП #2 На Ali нет резисторов точнее 0.1%, значит больше 16 бит мы не получим. Даже для 20 бит нужна точность 0.01%. Поэтому можно сильно упростить конструкцию. Поставить 6 сдвиговых регистров (LVC595A) — тогда нужно всего 18 пинов…
Pythonist.ru - образование по питону
🔥 Операторы Python1️⃣ if else в Python. В этой статье на примерах разбираются основы работы с операторами if, if...else и elif.2️⃣ Блок else в циклах. Многие теряются при виде блока else в циклах. А между тем в Python он используется не только в условных конструкциях. 3️⃣ Подробный разбор цикла while в Python. Всё, что касается цикла while, — с примерами и схемами.4️⃣ Как работает функция return() в Python? В статье рассмотрены различные способы использования return.5️⃣ Сравнение операторов yield и return в Python (с примерами). Разбор основных различий между yield и return.6️⃣ Оператор assert в Python: объяснение на примерах. Оператор assert – это встроенный оператор или ключевое слово в Python, используемое для отладки кода. В этой статье на примерах разбираются принципы его работы.7️⃣ Инструкция match-case — аналог switch-case в Python. Эта статья познакомит вас с инструкцией match-case. Вы узнаете, как она применяется и какие ошибки можно допустить при ее использовании.
Ещё один канал про QA
✨ Уже давно прочитала книгу про тестирование устройств Apple, но никак не могла найти время, чтобы написать для вас отзыв. Исправляюсь😊Книга называется "Тестируем яблоко: смартфоны, планшеты и часы", написали её два автора - Мария Осина и Роберт Гадеев. Сама я мобилку почти не тестирую, изредка бывают такие задачи. Но решила для общего развития прочесть их книгу, познакомиться с основами. И она полностью оправдала мои ожидания. В книге практически нет воды, сразу даются конкретные рекомендации, и даже по шагам прописано, что и где нажать в программе. Но при этом я бы не сказала, что если прочтешь эту книгу, то будешь знать всё про тестирование мобильных приложений. Думаю дополнительно надо будет все равно еще много чего изучить. Но для знакомства с темой, я бы её рекомендовала. 🔥 Ну и конечно, хочется такую же книгу про тестирование андроида!❓ А вы тестируете мобилки?#отзыв_книга
Продуктовошная Михаила Грекова
Год 2030. ИИ заменил программистов, дизайнеров и всех ИТшников. * Минцифры расформировано* Для строителей, дворников, грузчиков введена отсрочка от армии* Такси с живым водителем остались только в музее Такси* Женщины мечтают выйти замуж за строителя, военного или грузчика* СтройСтар запустил новые онлайн курсы: Кладка камня и Тонкости асфальтирования* Самый частый вопрос в ЧатЖПТ — Как стать сварщиком на удалёнке* Фитнес-центры запускают новые программы: качаем мышцы, полезные для нахлёсточной сварки* В регионах открываются центры реабилитации дизайнеров* Никто не может вспомнить вкус смузи
дата инженеретта
ДатаклассыНаконец-то спустя год дошли руки написать про датаклассы 🌷 Меня спросили на собесе в ламоду, и тогда я про них либо краем уха слышала, либо вообще не слышала. Но точно не использовала. Посмотрим, что с ними можно делатьЗачем?Датакласс описывает данные, но без кучи лишних методов. Он сам вместо нас добавит __init__, __repr__, __eq__ по дефолту. Набор методов можем сами менять с помощью флаговКак создать?Чтобы датаклассы заработали, нужно их импорнуть и добавить в виде аннотации:from dataclasses import dataclass@dataclassclass SparkParams: """Dataclass для параметров spark-submit команды.""" name: str deploy_mode: str driver_cores: int driver_memory: str executor_cores: int executor_memory: str num_executors: intГотово! Никакие методы добавлять не нужноКак использовать?spark_params = SparkParams("test_app", "cluster", 2, "4g", 4, "32g", 8)Другие фишкиЗапрещаем менять поля:@dataclass(frozen=True)Задаем дефолтные значения:@dataclassclass Team: description: str | None = None emails: list[str] = field(default_factory=list) # для list/dict/setЧуть подробнее можно прочитать в короткой статье@data_engineerette
Kotlin
🐘 Ловушка MVI: Как мы превратили ViewModel в God-objectВсе мы читали туториалы по MVI (Unidirectional Data Flow). Идея звучит безупречно: у вас есть один Intent (событие от юзера), один Reducer и один State (дата-класс, описывающий весь экран).На экране авторизации это выглядит как поэзия. Но потом вы приходите на реальный прод.Вам дают Главный Экран приложения: здесь лента постов, фильтры, баннеры, статус сети, профиль юзера в шапке и плеер в свернутом виде.И тут начинается MVI-ад:data class DashboardState( val isLoading: Boolean = false, val feed: List<Post> = emptyList(), val searchQuery: String = "", val activeFilters: Set<Filter> = emptySet(), val userProfile: Profile? = null, val unreadNotificationsCount: Int = 0, val miniPlayerState: PlayerState = PlayerState.Idle, // ... и еще 20 полей)В чем боль такого подхода?1. Адские copy(): Пользователь вводит текст в строку поиска. На каждый символ вы делаете _state.value = _state.value.copy(searchQuery = newText). Вы пересоздаете гигантский объект состояния ради одного символа.2. Конфликты Reducer'ов: Разные корутины грузят профиль, ленту и нотификации. Они начинают драться за актуальный state.value, затирая copy друг друга, если не использовать update { } (а с ним код становится еще более громоздким).3. God-object ViewModel: Ваша ViewModel разрастается до 1500 строк, потому что она вынуждена имплементить интерфейсы плеера, пагинации, аналитики и поиска.🛠 Как это чинят Сеньоры? Декомпозиция.Прагматичный подход гласит: Не будьте догматиками. Один экран НЕ обязан иметь ровно один StateFlow.Паттерн 1: Раздельные потоки (State Decomposition)Вместо одного монолитного стейта, разбейте его на логические блоки внутри одной ViewModel:class DashboardViewModel : ViewModel() { val searchState: StateFlow<SearchState> = ... val feedState: StateFlow<FeedState> = ... val playerState: StateFlow<PlayerState> = ...}UI (Compose или Fragment) просто подписывается на нужные куски. Ввод текста в поиск больше не триггерит пересоздание списка постов.Паттерн 2: Компонентный подход (Множественные ViewModel)Кто сказал, что на Fragment/Activity может быть только одна ViewModel?Если у вас на экране есть сложный независимый блок (например, Mini Player), дайте ему свою PlayerViewModel. Пусть она живет в скоупе Activity и отвечает только за плеер. Главный экран будет чище.MVI это паттерн, а не религия. Умейте дробить стейт, когда он начинает пахнуть.✍️ @kotlin_lib
Мысли Рвачева
📚 Бесплатная дорожная карта по изучению Claude Code - 108 тем от основ до продвинутых воркфлоу.Нужно желание, базовое знание английского, немного усидчивости и минимальная подписка. Есть даже AI tutor, который помогает по каждой теме.P.S. На GitHub у проекта roadmap.sh 350к звезд.https://roadmap.sh/claude-code#ai #claudecode #coding #roadmap—————————Мысли Рвачева—————————
Душный интерпрайз
Я уперся в самого себя. В период клодофомо меня посещала мысль, мол, The Sky Is The Limit. Я могу все. Щас наебашу своих проектов кучу и буду инди, мать его, хаккером. Гормоны счастья переполняли мой мозг и на этом коктейле я держался несколько недель. Много чего в своей жизни действительно автоматизировал -- рабочие процессы, подкастерскую рутину, плеер нафигачил в вебе, облако свое прокачал, процесс обучения выстроил. Но ничего по-настоящему крутого я так и не создал. Проанализировав свой кожаный мозг, я набрел на следующие размышления. Я устаю. Работать с клодом/агентом над 3-10 задачами в параллель -- это пиздец как энергозатратно. Переключений контекста с приходом ИИ в мою жизнь стало в разы больше. И это первая проблема. Помимо увеличения переключений я столкнулся с еще одним феноменом, ранее невиданным -- у меня забрали время. Мокрому интеллекту нужно время для того, чтобы запроцессить информацию. Прежде я писал код и процессил информацию во время программирования. Темп был естественный. И я с ним справлялся. Сейчас кремний херачит с такой скоростью, что химические реакции в моей голове просто не вывозят. Это вторая проблема. А еще интерфейса нормального нет. Не работает слак/тг/джира/гх для параллельного ебошилова. Я устаю от ориентирования во вкладках, тредах, окнах. По субъективным ощущениям, процентов 30 моего внимания тратится на поиск нужного элемента в UI. Агент отработал, ждет ответа, а я не могу найти этот тред с ним! Потому что параллельно у меня еще 6 таких! Так и живу пока.
Илья Шишков: код, собесы, IT
Блеск и нищета автоматического управления памятью в PostgreSQL, часть 2 — нищетаНачало в предыдущем постеПредставим более приземлённую ситуацию. Я модифицирую какую-то функцию в коде PostgreSQL. Функция раньше не выделяла память, а я добавляю туда небольшой буфер:char *buf = palloc(1024);И тут возникает простой вопрос: должен ли я эту память освобождать? В обычной программе ответ очевиден: если ты сделал malloc, ты должен сделать free. В PostgreSQL всё сложнее.Память может быть освобождена:— внутри этой функции— в вызывающей функции— или вообще где-то намного выше по стеку, когда удаляется какой-то временный memory contextА в коде PostgreSQL очень распространён стиль с ранними выходами из функции:if (...) return NULL;if (...) return NULL;Если я решу освобождать память явно, мне придётся делать pfree(buf) перед каждым return. Код быстро превращается в кашу из служебных деталей.Если я этого не делаю, то надеюсь, что память будет освобождена вместе с каким-то контекстом выше по стеку. Но это уже риск утечки, если предположение окажется неверным. И самое неприятное — исходный код редко помогает быстро понять, какой вариант правильный.Есть и вторая проблема, на которую я несколько раз натыкался в реальности. Когда пишешь palloc, память выделяется в CurrentMemoryContext. Но в самом месте вызова почти никогда не видно, что это за контекст.Он может оказаться чем угодно:— TopMemoryContext, который живёт весь процесс— контекст портала— контекст выполнения запроса— или временный контекст, созданный на пару функцийИногда ты рассчитываешь, что выделенная структура проживёт долго — например, её вернут наружу и будут использовать дальше. А потом оказывается, что где-то выше был создан временный контекст, который удаляется сразу после завершения операции. И вместе с ним исчезает вся память, которую ты только что выделил.В результате при работе с кодом PostgreSQL часто приходится делать дополнительное расследование: искать, какой сейчас CurrentMemoryContext, кто его создаёт и когда он будет удалён.Если это неясно, у разработчика остаётся два типичных выхода. Первый — перестраховаться и переключиться в TopMemoryContext, чтобы память точно пережила всё остальное. Но тогда она живёт слишком долго и может копиться. Второй — создать собственный контекст, со всей сопутствующей инфраструктурой: переключениями, очисткой, управлением временем жизни.И в какой-то момент ловишь себя на мысли, что одна маленькая строка palloc требует понимания нескольких уровней стека выше.Так и получается, что memory contexts в PostgreSQL — это одновременно и блестящая инженерная идея, и источник постоянных головных болей. Они позволяют управлять тысячами аллокаций одной операцией и делают сложные структуры невероятно удобными в обращении. Но цена за это удобство — неочевидное время жизни памяти и необходимость держать в голове гораздо больше контекста, чем хотелось бы.ИтогиЧем больше я работаю с кодом PostgreSQL, тем больше мне нравится идея memory contexts. Это действительно красивая абстракция: одна строка MemoryContextDelete() — и исчезают сотни аллокаций.Но она хорошо показывает важную вещь про программирование:абстракции не уничтожают сложность — они переносят её в другое место системы. Memory contexts убирают тысячи free(), но взамен требуют держать в голове время жизни памяти на несколько уровней стека выше.Интересно, какие абстракции у вас вызывают похожее ощущение — сначала «гениально», а потом начинаешь видеть, какую цену за это платишь?
Репетитор IT men
👩‍💻 Перевод из 10-чной системы счисления в систему счисления с основание base ∈ [2; 16]# Перевод из десятичной в двоичную# Пример: вход: x = 589 и base = 16# выход: 24Ddef dec_to_base(x, base): digits = ['0','1','2','3','4','5','6', '7','8','9','A','B','C','D','E','F'] copy = x s = '' while copy > 0: rest = copy % base copy = copy // base s = digits[rest] + s return sx = 589base = 16print(f'{x} в {base}-чной СС: {dec_to_base(x,base)}')👩‍💻 OUTPUT: 589 в 16-чной СС: 24D#разбор_задач #программирование #информатика #python #code #computer_science 💡 Репетитор IT men // @mentor_it
whaley пишет
почитал статью от n чувака об агентивной разработкев какой раз убеждаюсь, если человек додумался написать статью - это ДАЛЕКО не значит что он нормально разбирается в топике о котором он пишетвот скажите, зачем мне собирать франкенштейна из кодекса + антигравити (с их дырявыми лимитами и пососной моделью, когда есть курсор где я могу выбрать ЛЮБУЮ) и клод кодакак мне нормально синхронизировать контекстное окно? непонятненько.чувак также говорит что вообще в целом ide можно не использовать. что?!?!? то есть ты хочешь сказать, что твой слоп который ты даже нормально поредачить не можешь юзая ТОЛЬКО cli клод код/кодекс будет нормально работать?!конечно же нет, зачастую ии совершает столько ошибок на бэке что приходится весь бэк вручную переписывать, да и архитектуру выбирает не самую лучшую зачастую.единственный его аргумент это харнесс - у cli клода/кодекса свой харнесс от девов поэтому они работают лучше. я этого не отрицаю, но если ты хоть немного понимаешь что пишешь вообще в своем коде (а без этого ты вообще далеко никуда уедешь), то тебе хватит обыкновенного курсора с про подпиской20 баксов в месяц и минимум геморая не порицаю использование cli агента + нормальной ide (вим/вскод/на крайняк курсор)но как можно в статье писать на серьезке что “можно обойтись и без ide”?ИИ в руках программиста - инструмент который может бустить продуктивность х10если ИИ твой автопилот - ты не добьешься никакого успеха, потому что:а) ты будешь х10 медленнее нормального программистаб) со временем тебе будет тяжелее решать алгоритмические задачи и дебажить в связи с деградацией нейронных связей, это физиологияв) тебя в любой момент заменит такой же болванв общем-то не будьте ведомыми и думайте своей головой, криптапирожок даже репостнул эту статью к себе в лайф каналхотя ну имхо то что там написано - лютейший оверкиллплатишь больше за менее удобный воркфлоу, спрашивается зачем?—————————спасибо за прочтение, погнал я дальше лепить свой проект.сделал пока пивот на полимаркет, потому что на опинионе торгуют три калеки - очень неудобно собирать данные, потом просто интегрирую опинион.всех обнял, see you soon!
Руслан Куянец | Reactify
Отдельно стоит сказать про тренд на vibe-coding стартапы, где люди без опыта разработки пытаются собрать продукт полностью через ИИ. На короткой дистанции это может работать. За месяц можно собрать прототип или даже небольшой сервис.Но дальше начинается реальность: код растёт, появляются баги, усложняется поддержка, начинают конфликтовать части системы. И без понимания разработки человек довольно быстро начинает стрелять себе в колено.Поэтому вся текущая истерия вокруг ИИ во многом похожа на обычный технологический хайп. Когда появляется новая технология, её сначала пытаются применить везде. Все экспериментируют, пробуют, проверяют границы возможностей.А потом рынок постепенно приходит к более трезвому пониманию.Скорее всего, с ИИ будет так же. Он не заменит разработчиков, но станет ещё одним инструментом — примерно как когда-то стали Google, StackOverflow или Copilot.Очень мощным инструментом. Но всё ещё инструментом.
Канал Ильи Бирмана
Программирование с Кодексом ЧатаГПТ: гит и левые заметкиПара примеров того, с чем Кодекс очень помогает.Во-первых, это всякие фокусы с гитом. Я знаю гит плохо, поэтому пользуюсь в основном линейно, редко завожу ветки и ощущаю всё это очень хрупким. Даже просто поискать что-то в истории, вспомнить ход мысли вызывает много сопротивления. А особенно мне трудно, когда приходится что-то сложное мёрджить: всегда мучительно долго разбираться в истории двух веток, чтобы понять, какую часть из какой нужно взять.Вот примеры того, что я спрашиваю в связи с этим у Кодекса:• Я хочу добавить такую-то фичу, но вижу, что код для неё тут есть, но он почему-то закомментирован. Видимо, я когда-то начал это делать, но столкнулся с проблемой и забил. Найди, когда это появилось, когда было закомментировано, посмотри какие ещё правки были сделаны в это время. Как ты думаешь, почему я закомментировал?• Кажется, я когда-то сто лет назад я удалил код, который делал то-то, потому что это стало ненужно. Но теперь мне снова нужно подобное. Найди, где это было, вытащи в отдельный файл рядом под таким-то названием.• Тут в комментарии написано что-то странное, вроде код делает другое. Найди, когда появился этот код и когда комментарий, объясни, почему они расходятся, или наоборот, почему тут на самом деле всё правильно.• Я пытаюсь смёрджить две ветки и вижу вот такой конфликт. Объясни, как корректно смёрджить вот такую функцию, когда и почему в ней возникло расхождение. Что я пытался сделать в каждой из веток после точки ветвления?То есть я здесь ничего не прошу программировать за меня, но я использую Кодекс как в миллион раз более удобный интерфейс гита, чем все гит-клиенты вместе взятые.Во-вторых, это просто попытка осмыслить какие-то багрепорты или даже собственные заметки. Иногда даже просто искать по текущему слепку кода что-то сложно, потому что у тебя нет в голове конкретной строчки кода:• Мне пришла вот такая жалоба от пользователя: (текст) Вникни и оцени, насколько это верно. В каких файлах у меня это происходит?• Я нашёл у себя тудушку трёхлетней давности сделать такой-то рефакторинг. Посмотри, это ещё имеет смысл?• Я нашёл библиотеку, которая делает то-то. Кажется, мне это может быть полезно там-то. Что думаешь?Вообще, если у вас запрос в духе «прочитай мои мысли», то кажется, что это просто не может сработать. Но это очень часто срабатывает. Во всяком случае, точно стоит попробовать.
Юля, Фёдор и Тропы
Считайте это просто обетом, иначе и не скажешь. Но в моём блоге никогда не будет ни одного слова, написанного ии. Ни одного. Ни одной идеи, поданной машиной. Пусть плоское, пусть скудоумное, пусть вторичное, пусть хоть банальное. Но своё.
Balobanius | IT, Стройка, Мысли
Мое отношение к Российскому ПОЯ горд, что наша компания ПСС поставляет продукты Нанософт, CSoft, Renga Software, Vitro, Signal, Sarex и тд.Разрабатывает и поставляет наши ИИ и Роботов.Но я также горд, что ПСС продает зарубежный софт! И то, что продавала Autodesk.И я скажу, что нам российским производителям стоит поучиться у западных - посмотрите на это видео о проектировании в BIM Шанхай Тауэр…есть ли такие видео у Российских производителей?Нет, таких нет. Потому что российские производители считают , что «они слишком хороши»! Или «зачем выпячиваться», «о нас и так все знают». Зачем нам такое продвижение?))Не знаю, коллеги. Не знают так, как знают Autodesk.