TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #1237 · преди 27 дни

В 2023 году мы с коллегой сделали доклад на DotNext по DDD и архитектуре систем. И там, в числе прочего, показали, что устройство сложного проекта, спроектированного по определённым правилам, может иметь фрактальную структуру. Но мысль эту особо не развивали. В 2024 году Влад Хононов — автор одной из самых известных книг по DDD — сделал доклад на DotNext по теме «Фрактальная геометрия в проектировании систем». Разумеется, он никаким образом на нашу идею не опирался, а работал над своей системой уже несколько лет к моменту доклада. У него там прям интересные научные обоснования, более серьёзный теоретический фундамент с введением новых понятий и принципов. Но факт близости хода мысли приятен. Типа, мы с коллегой делали систему, которая показала те же свойства, что и системы крутого эксперта в архитектуре. Прям рекомендую доклад по второй ссылке всем, кто работает в компаниях, где по какому-то странному недосмотру есть архитектура, борьба с техдолгом и попытки не допустить превращения кода в лапшу с высоким зацеплением. #dev@clockstackwheels

Hashtags

Резултати

Намерени 869 подобни публикации

Общо глобално търсене

Компания Volvo отключила россиянам свои онлайн-сервисы, в том числе мобильное приложение для взаимодействия с автомобилями, ПО для сервисных центров итд. Причём, ограничение работает даже в том случае, если вы смогли перевезти свой автомобиль в другую страну: достаточно того факта, что он изначально был поставлен в Россию. Пару лет назад мы с командой выиграли IT-хакатон от компании Volvo. По окончании нас попросили подписать документы о полной передаче нашего кода в собственность компании и отказе от любых прав на него. Не исключено, что этот код был в итоге как-то использован, и крутится где-нибудь на серверах Volvo. Если не код, то хотя бы концепция наша им тогда очень понравилась. Как говорится, можно вывезти Volvo из России, но... #dev

Hashtags

Сходил для интереса на конфу для Java-разработчиков, хотя не пишу на Java уже давно (а на хорошем уровне не писал никогда). Было много всего интересного, но особенно меня впечатлила лекция об истории развития этого языка. Java, на секундочку, вероятно самый распространённый язык программирования в мире с точки зрения количества разных устройств, на которых он присутствует. То есть буквально один из столпов современной цифровизации всего человечества. Так вот, когда он только зарождался, компания Sun Microsystems наняла себе в помощь несколько сотен разработчиков из России, бОльшая часть которых сидела у нас в Питере — это были выходцы из матмеха СПбГУ. Более того — в какой-то момент именно питерская ячейка стала крупнейшей по числу инженеров, превзойдя даже ту, которая располагалась в Калифорнии. И люди периодически ездили в США, чтобы синхронизировать свою работу с тамошним офисом (пересылали diff репозитория архивами по почте!). Потом Sun купила Oracle и постепенно ушла из России. Но вклад наши внесли, оказывается, очень существенный. #dev Перерисовал на эту тему картинку из XKCD

Hashtags

Роскосмос пару дней назад опубликовал отчёт о том, почему упала "Луна-25". Там конечно канцелярит, но можно примерно понять, что двигатель коррекции получил неверные данные от акселерометра: из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором Это очень похоже на программную ошибку, а это моя сфера, и я решил над ситуацией поразмыслить. Хейтеры сразу стали строчить комментарии в стиле "Ололо, наняли каких-то идиотов, которые простейшие тесты не провели". Тут обычно справедливо вспоминают аварию с европейской ракетой Ариан-5 в 1996 году. Там буквально из-за пары строчек кода в результате неправильного приведения числовых типов ракета за 7 млрд баксов развалилась на куски в воздухе. Бывает. Что касается Роскосмоса, при всей его сомнительной репутации, объяснение "Дураки не провели тесты" звучит лично для меня неправдоподобно. На мой личный взгляд возможны два варианта: 1. Если в описании ошибки слово "приоритет" обозначает какой-то признак внутри объекта команды, значит, на входе в приёмный модуль эти команды не были отфильтрованы. Выглядит как грубая ошибка, целый логический блок упущен. Вряд ли этот блок вообще не написан, скорее всего он не выполнился. Такое бывает, если в тестовой среде есть какое-то условие, которого нет в рабочей, и именно это условие отвечает за выполнение участка кода. Сталкивался с таким миллион раз. Самое дикое из последнего: код парсит эксель-таблицу с числами. Разработчик написал, запустил проверил, прогнал тесты, всё ок. Отправляем в прод — все числа будто бы рандомно меняются на другие. Запускаем снова — у всех разработчиков функционирует нормально, а в проде на сервере нет. Таблица одна и та же. Можете подумать, почему так. Ответ: у разработчиков стоит русская локаль и десятичный разделитесь это запятая, а на проде в докере точка. При парсинге на проде запятая уже интерпретируется как разделитель тысячных разрядов. 2. Куда вероятнее, что слово "приоритет" в описании ошибки обозначает время, а, значит, список команд просто не был отсортирован, и в обработчик уже после актуальных значений попали какие-нибудь начальные нулевые данные, сбившие логику. По косвенному описанию проблемы очень похоже именно на это. Значит, на тестах всегда порядок возникновения команд соответствовал порядку их прихода, а в реальности перестал соответствовать. Вообще, работать с железом очень сложно. Какую-нибудь схемку заглючило от холода, она задержала ответ от датчика на миллисекунду, и всё. Никто не знал, что такая проблема возможна, пока она не возникла. Мне рассказывали о таком случае: юзер логинится на сайт и иногда логин проходит, а иногда нет. Логин и пароль те же самые. Просто в случайные моменты времени ему возвращают токен авторизации, а в другие моменты времени ошибку 403. Никакой закономерности нет вообще. Нет зависимости от времени суток и даты. Сервер точно работает стабильно и не падает все 100% времени. Почему так может быть? Ответ: у сервиса авторизации два инстанса, перед которыми балансировщик нагрузки. В одном инстансе данные для авторизации есть, в другом нет. Балансировщик при примерно одинаковой нагрузке включает просто случайный выбор между ними. В общем, программисты иногда допускают такие косяки, что какая-то мелочь может привести к серьёзной аварии. Это я вам говорю как программист, который пишет для атомных станций :) #dev

Hashtags

Приехали фотки с DotNext. Как вы помните, неделю назад мы с коллегой выступили на этой конференции. В прошлом году на мой личный взгляд DotNext выдался вялым (я был там как участник): мало людей, скучноватые доклады. Злые языки заявляли, что это, во-первых, из-за ухода западных компаний: дескать, Майкрософт может рассказать что-то интересное, а МТС или Тинькофф не может; во-вторых, из-за того, что все айтишники, разумеется, уехали из страны. В этом году у конференции явно открылось второе дыхание (видимо, айтишники вернулись обратно, ага). Во-первых, людей было очень много. Так много, что организаторы, по-видимому, не рассчитывали на такой наплыв: площадка не справлялась. Это, пожалуй, единственное замечание — в залах то и дело не хватало мест, на обеде невозможно было найти себе стол, отстояв перед этим огромную очередь. С другой стороны, приятные впечатления от такой сильной востребованности конференции перевешивают любые проблемы. Во-вторых, что тоже важно, доклады офигенные, один лучше другого. Было очень трудно выбрать, на какие идти (обычно параллельно шло по три доклада в трёх залах). Узнал несколько очень интересных для себя новых вещей, да и в целом всегда любопытно посмотреть на чужой опыт. Наш доклад по DDD собрал полный зал — организаторы даже доносили стулья. Местами вышло хорошо, местами, конечно, есть куда развиваться. Получили в целом положительные отзывы. Среди критики есть обоснованная (например, мы не слишком внимательно проверяли код на слайдах), но есть и немного откровенного хейта. Его очень мало, буквально от пары человек (из нескольких сотен общей аудитории доклада), но, мне казалось, что в профессиональном сообществе народ старается вести себя, хм..., профессионально :) По слухам кое-кого не взяли выступать с примерно такой же темой, как у нас, так что источник хейта тоже понятен. Ещё любопытный момент. У нас был доклад о практическом применении DDD: мы взяли настоящую архитектуру со своей работы, заменили там названия сущностей, упростили и рассказали в виде доклада. При этом получили несколько комментариев в духе: "Так не бывает, это всё теория, на практике не применимо". Вроде и критика, а вроде и гордость берёт за то, что мы сделали так, как другие считают невозможным. В общем, очень круто. Спикерам дают проходку на все конференции сезона, так что я загляну как участник ещё на несколько. А в следующем году буду, наверное, снова подаваться докладчиком. Ещё есть, что рассказать. #dev

Hashtags

Сбер выкатил сегодня свой Гигачат на всех (до этого была только закрытая бета). Немного обидно за ребят — ещё год назад этот релиз был бы очень значимым, но сейчас разговаривать с откровенно косячащим и допускающим детские ошибки Гигачатом совершенно неинтересно, если вы видели, как работает GPT4, в том числе на русском языке. За решением практических задач тоже нет никакого смысла (пока что) ходить в русские сетки Яндекса и Сбера, потому что GPT4 просто делает лучше абсолютно всё. Он реже ошибается, у него лучше с логикой, он отвечает одинаково на одинаковые запросы (у Яндекса с этим очень большие проблемы пока что), более точен в фактах и рассуждениях. Ещё команда Гигачата ведёт очень странный маркетинг: будто бы это телепередача для домохозяек. Начиная от частых унылых инфоповодов в духе "Сегодня день резиновых уточек, спросим у гигачата что он думает про резиновых уточек" и заканчивая восторгами по поводу туповатых ответов нейросетки на попсовые запросы ("Пять отмазок не идти на работу"). Создаётся впечатление полного отсутствия product-market fit — Сбер не понимает, что это за продукт, для какой аудитории он нужен, кто будет готов за него платить и в каких обстоятельствах. Домохозяйки вряд ли будут. Впрочем, Яндекс про свою сетку запостил полторы новости и замолчал, так что я даже не знаю, что хуже. Но зато у Яндекса есть preview API, и мне удалось его погонять. Ожидаемо хуже, чем GPT4. Как я уже сказал, основная проблема в том, что пять одинаковых запросов вернут пять разных ответов, причём даже по размеру разных: объём текста может отличаться в несколько раз. #dev

Hashtags

На работе переезжаем с микросервисов на монолит. Наигрались ) Вообще, удивительно, как идея микросервисов заразила когда-то умы людей в айти сфере. Почему-то на уровне концепции действительно кажется, что это вау, офигенно, переворачивает игру и так далее. Сейчас сделаем микросервисы и заживём: масштабирование, изоляция, параллельность разработки и так далее. В общем, у нас, как лично мне кажется, повода делать микросервисы особо не было, но несколько лет назад, когда проект начинали, поддались общей моде. После трёх огромных архитектурных рефакторингов стало ясно, что каждая микросервисная фича стоит дороже, чем объём реальной пользы, которую она приносит. И, в целом, я от других разработчиков много слышу последний год-два, что лодка качнулась обратно в сторону монолитов, в том числе модульных, так что мы даже в каком-то смысле опоздали с переездом. Через полгода расскажу вам, что в итоге вышло. А в комментариях, если вы работаете в большом энтерпрайзе, можете рассказать, как у вас сделано и почему. #dev

Hashtags

Автор OpenSource библиотеки тайно ворует данные разработчиков, чтобы проверять, донатят они ему, или нет. Вообще, скандалы с опенсорс-библиотеками бывают не так уж и редко. Разработчики делают что-то бесплатно, этот труд оказывается нужен тысячам людей, включая большие корпорации, а дальше возможны варианты. За последние пару лет ожидаемо было много политических заявлений и даже вредоносного кода по признаку страны, из которой запускается софт. Просто, стартуя с какой-то версии, какая-нибудь библиотека начинает делать что-то постороннее, помимо своей основной функциональности. К чести комьюнити, такие вещи всегда очень жестко критикуют, даже если идеологические взгляды разработчика выглядят общепринятыми в той среде, где это комьюнити развивается. Вот на днях новый такой скандал. Впервые в моей жизни в такую ситуацию попала библиотека, которую используем на работе — а именно Moq для .NET. Автор написал код, который спаунит новый системный процесс и командой git config --global user.email читает почту разработчика, а затем с помощью почти зашифрованной закрытой DLL-библиотеки, помещённой в поставку Moq, отправляет данные в сервис GitHub SponsorLink, чтобы проверить, платит ли разработчик донаты. Конечно же, система безопасности на проде не даст никуда сходить этому коду и ничего плохого сделать. Но, помимо прода, рабочие проекты запускаются еще и на компьютерах разработчиков локально. Вот тут заложена настоящая опасность. Где запрос почты, там может быть следующим шагом что угодно другое — скачивание ваших интимных фото и передача вовне, чтение файла с паролями из папки браузера, поиск номера кредитки... Разумеется, всё во имя самых благих целей. В общем, комьюнити порассуждало о том, что это критический подрыв доверия, хотя автор оправдывался как мог (как moq, хе-хе). Народ просто закидал его камнями, начал массово исключать Moq из своих зависимостей, ставить дизлайки, отправлять репорты. Вроде как это вынудило мейнтейнера откатить изменения. Но на всякий случай Moq лучше не обновлять больше никогда и постепенно заменить на аналоги. Доверие — важнейший ресурс в опенсорсе. #dev

Hashtags

Впервые использовал нейросетку для реальной практической пользы в коммерческом заказе. У заказчика есть база данных, куда информация вносится кое-как. Представьте, что вы составляете каталог, например, книг, и в базе данных предусмотрены поля: "Автор книги", "Название книги", "Число страниц" и ещё десяток других полей с информацией. Но заполняют эту базу другие люди, которых вы не контролируете, поэтому информация может случайным образом лежать в любом произвольном поле, быть введена с ошибками, опечатками и так далее. В реальном заказе были не книги, я просто привожу пример такой же задачи. Вот как это может выглядеть: 1. В поле "Автор" написано "Лондон, Дж. Белый Клык", поле "Название" при этом пустое. 2. В поле "Название" написано "150-страничный сборник рецептов", поле "Число страниц" пустое 3. В поле "Название" написано "джеклондон мартин иден", поле с автором пустое 4. В поле "Автор" написано "150-стр.3изд,доп.перераб инструкция по пользованию подстанциями типа ТП-13, М.Васильев москва 98" ...и так далее. А нужно искать нормально по автору, названию, числу страниц, городу и году издания. Никакими прямыми алгоритмами это не берётся: регулярки, поиск по ключевым словам, морфология, нечёткая логика — всё это либо даёт много ложноположительных результатов, либо (если подкрутить пороговые значения) вообще перестаёт искать. И вот тут в какой-то момент мы решили попробовать запрашивать через API GPT. Нейросетке задаётся следующий промт: "Есть следующая информация: «150-страничный роман джеклондон мартин иден». Если здесь есть то, что похоже на имя автора книги, напиши мне его, иначе ответь null". И, надо сказать, даже 3.5 справляется с этой работой очень хорошо. Получилось сравнительно без ошибок разметить около 80% данных (остальные с ошибками даже после нейросетки). Но, важный нюанс. Сначала мы пытались поймать все данные одним запросом: "GPT, выведи мне JSON, в котором есть автор, название, число страниц...", но тесты показали, что значительно эффективнее будет отдельно спросить 5 раз про 5 разных типов данных. Да, это расходует больше токенов, но они и так сравнительно дёшевы. Кстати, API у OpenAI безбожно глючит даже на платном тарифе. Обещанных 3500 запросов в минуту нет даже приблизительно. По факту удаётся отправлять около 200-300 запросов в минуту, потом оно вываливается в таймауты или ошибку 429, нужно делать какие-то умные паузы, ждать итд. Над этим всем пришлось повозиться, зато результат вполне ощутимый. #dev

Hashtags

Целых две недели ничего не писал, потому что была большая загрузка по работе. Только недавно вернулся с AtomSkills этого года. Про чемпионат для профессионалов AtomSkills я вам уже рассказывал год назад. Тогда мы выиграли золото, поэтому поехать участником я не мог по правилам, так что поехал членом жюри. Было классно посмотреть изнанку. В нашу задачу входила разработка задания, определение критериев проверки, составление сценария проверки и, собственно, сама проверка с выставлением баллов. Напомню, что на обычном хакатоне можно сделать неработоспособный продукт на моках и выиграть одной презентацией с хорошими скринами. А вот на AtomSkills есть строгие критерии проверки: работу каждой команды деплоят с нуля на чистую машину и вручную прогоняют по сценариям, давая баллы за то, что программа позволяет реализовать нужные бизнес-процессы. Разработка способа справедливо и быстро оценить довольно разные работы — не самое простое дело. Да еще и в этом году были рекордные 12 команд. Сразу стали видны ошибки, которые мы, например, допустили при формировании задания; сразу понадобилась способность быстро договориться и выработать какой-то общий подход к спорным моментам. В общем, как и в любом деле, тут нужен опыт. Но было интересно, чемпионат раскрылся для меня с несколько новой стороны. Ещё не мог не обратить внимание на то, как быстро команда жюри нашла контакт друг с другом, и как согласовано работала. Да и вообще, от общения с ребятами получил много удовольствия: и на уровне деловых взаимоотношений, и на уровне шуток и приколов, и на уровне гиковых бесед — было прям очень круто. Подумал о том, что это связано с совпадением людей сразу в нескольких аспектах. Во-первых, все айтишники, и это уже какая-то первичная выборка, показывающая общие интересы. Во-вторых, все работают в похожем режиме: на постоянке в корпорации, имея сотрудников в подчинении и так далее. Потому что, например, айтишник без работы по графику уже не во всём поймёт айтишника работающего, я был в обеих ролях и знаю, о чём говорю. В-третьих, что тоже немаловажно, в жюри никого не заставляют ехать, туда попадают люди, которым интересен чемпионат, интересна организация какой-то движухи, интересно помогать коллегам в развитии и совершенствовании. Тоже нужно обладать определёнными жизненными целями и ориентирами. Посмотрим, удастся ли поехать через год, и в какой роли. #dev

Hashtags

Stackoverflow подвёл итоги ежегодного голосования разработчиков. По общим показателям ничего шибко интересного (разве что зарплата разработчиков на C# наконец-то превысила зарплату джавистов). А вот что любопытно, это новый вид графика оценки разработчиками языков и технологий. Раньше были блоки "любимые языки/технологии", "ненавистные языки/технологии". А теперь это шкала Admired & Desired. Синие точки: уровень "хайпа" (этот термин используют прямо авторы исследования) — процент разработчиков, которые хотят попробовать язык или технологию X, потому что, например, считают его интересным, популярным, востребованным и так далее. Красные точки: "почитаемость" — процент разработчиков из тех, кто попробовал X, которые хотят продолжать это делать. Таким образом, авторы исследования предлагают смотреть на ширину линии. Чем более узкая линия, по версии авторов, тем больше работы по популяризации технологии выполняет хайп, а не качество/крутость/интересность самой технологии. Хайп — синяя точка — создаёт инерцию, а красная показывает степень её роста или угасания уже после использования. Ну вот например JavaScript и Python явно перехайплены. Мой любимый C# оставляет у народа приятные впечатления, но видно влияние того, что до сих пор есть люди, которые считают его закрытым языком для разработки под Windows. Java явно теряет позиции, скорее всего из-за того, что джависты распробовали более комфортный Kotlin. Прочие языки-заменители для неудобных аналогов тоже в хорошем положении: Dart, Swift. Ожидаемо широкие линии у функциональных языков: Elixir, Clojure, F#, Scala. Если программист всё-таки дорвался до функциональщины, говорят, пути назад нет. Хотя есть на графике и показатели, которые я объяснить не могу: например, почему широкая линия у Delphi. Ну и MATLAB опустили незаслуженно. Уж точно он не такой ужасный, как какой-нибудь Objective-C. Там по ссылке дальше есть такой же график про базы данных и фреймворки. В целом очень согласуется с моими личными представлениями. Допустим, React и Nodejs перехайплены, у Svelte, ASPNET Core и Blazor одни из самых широких линий, а у jQuery — узкая. #dev

Hashtags

Осенью с коллегой выступаем на DotNext. В прошлом году впервые побывал на такой мощной айтишной конфе, как участник, а вот теперь ещё и как спикер поеду. Пройдёт в Москве 15-16 сентября. Рассказывать будем про применение DDD на практике — тема для замороченной энтерпрайз-разработки в больших корпорациях. Вряд ли многие из вас ходят на дорогие айти конференции, даже онлайн. Но если кто-то будет — заходите к нам на доклад, задавайте вопросы. https://dotnext.ru/ #dev

Hashtags

В Москве 3 июня пройдет VK Open — конференция открытых платформ. В данном случае под открытыми платформами подразумевается стек площадок для приложений и игр от самих VK и, возможно, ещё каких-то. Участие бесплатное, есть вариант онлайн. Можно как угодно относиться к VK, но организовывать мероприятия они умеют. И хакатоны и митапы у них были, на моей памяти, всегда одни из лучших, а я много где побывал. Но на самом деле этот пост — реклама — потому что там буду и я в сессии вопросов-ответов, рассказывать о своём опыте конкурсной разработки. Приходите, увидимся :) #dev

Hashtags

123456•••10•••15•••20•••25•••30•••35•••40•••45•••50•••55•••60•••65•••70•••7273