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

TGINSIGHT CHAT

Такты, стеки, два колеса

@clockstackwheels

Технологии

О технологиях, научной фантастике, программировании и схемах. Навигация по каналу: https://t.me/clockstackwheels/3 Чат канала: https://t.me/joinchat/VNhNF1NF70dkFgUX

Абонати1,330Текущи абонати
Публикации894Индексирани публикации
Скорошен обхват9,755Прегледи на скорошни публикации
Последни публикации

Последни публикации

Таг: #dev · 127 публикации

当前筛选 #dev清除筛选

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

746 views

Hashtags

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

882 views

Hashtags

Платформа для разработки игр Unity в своё время совершила революцию. Это, кстати, хороший способ запустить успешный проект: нужно с помощью цифровизации упростить какой-то сложный процесс. Например, Uber упростил заказ такси, Arduino упростил вхождение в любительскую электронику, Тинькофф упростил многие банковские операции и так далее. Вот Unity значительно упростил работу с игровыми движками — сделал простой и логичный конструктор поверх движка, который позволил создавать объекты, анимации, задавать физические параметры и так далее. Это было настолько нужным и удачным решением, что половина игровой индустрии, кроме дорогих высокобюджетных проектов, с тех пор подсела на Unity. Инди-игры и мобильные игры практически целиком на нём, и даже некоторые AAA-компании активно его юзают: например, на нём сделан Hearthstone. И вот несколько дней назад компания объявила, что с 2024 года начнёт взимать с разработчиков деньги за каждую установку каждой игры (до этого были разные уровни платной подписки на движок). Ну, то есть, у тебя уже написан огромный и дорогой проект на движке, существующий много лет, и автор движка, как оказалось, имеет право в какой-то момент сказать: плати мне миллионы долларов или отключай свой проект. Для многих это не просто удар, это полный крах всего бизнеса, построенного на играх. Здесь можно было бы понудеть ещё раз о зависимости от корпораций, но любопытно другое. Игровая индустрия поехала массово хоронить и бойкотировать Unity, а само решение действительно кажется предельно абсурдным. Unity и так зарабатывал очень много, причем, для поддержки движка не нужны значительные траты. Выяснилось, что члены совета директоров, и даже сам генеральный, за последние пару лет продали десятки тысяч своих акций Unity, а новых не купили. Это реально по куче признаков выглядит, как убийство компании изнутри и попытка дожать остатки. Говорят, что проект решил не ввязываться в конкуренцию с растущим по популярности Unreal Engine, у которого вроде как появляется вменяемый инструментарий для людей. Если студии, которые сейчас выражают протесты, не сольются и массово откажутся от использования движка, то коллективно они вполне могут обвалить Unity. Хорошее в этом тоже есть: надеюсь, что подобные события стимулируют развитие опенсорсной альтернативы — Godot. #dev#games

669 views

Hashtags

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

883 views

Hashtags

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

966 views

Hashtags

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

1,170 views

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

1,040 views

Hashtags

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

656 views

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

785 views

Hashtags

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

778 views

Hashtags

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

589 views

Hashtags

Написал новую статью на Хабр. Она одновременно с сетованием на то, что разработчики упускают интересные возможности, и с рассказом о каких-то нюансах на основе моего многолетнего конкурсного опыта. #dev https://habr.com/ru/articles/729998/

591 views

Hashtags