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

TGINSIGHT CHAT

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

@clockstackwheels

Технологии

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

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

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

Стр. 10 от 75 · 894 публикации

Нейросеть очень не любит соблюдать DRY, поэтому её частенько нужно заставлять отдельной командой обернуть повторяющуюся логику в методы, вынести константы в конфиги итд. Но вот еще забавная вещь. Я тут делаю софт для чтения данных по ModbusRTU, и кодом на питоне эмулирую устройство, чтобы читать его потом кодом на сишарпе. У устройства есть 16-битные регистры. Если нужно записать int32 или float, используются два последовательных регистра. В общем, пишу в эмулятор, а при чтении какая-то чушь, все числа другие. Поменял порядок байт, всё равно чушь. Несколько часов отладки. Описываю нейросети проблему, она всякое пытается сделать, и нифига. В основном тоже байты местами меняет, то туда, то обратно. Нет результата. Потом я вычитал сразу пару десятков регистров подряд и вижу, что они смещены на единицу. Проверил: и правда, в эмуляторе пишешь в регистр 2277, а при чтении это число в регистре 2278. Проверил внешней программой: ошибка именно в эмуляторе, читается правильно. Лезу в гитхаб той питоновой библиотеки, которую нейросеть предложила. Нахожу старый закрытый issue с такой же жалобой, а там в ответ: "as intended due to historical reasons...". Сетка даже предположить не могла, что кожаные мешки просто хрень сделали. Даже не смотрела в эту сторону, с её точки зрения библиотека должна была работать без ошибок. Так что пока нейронки не могут, так сказать, думать за пределами коробки, а мы можем. Но когда-нибудь научатся, конечно. #dev

1,010 views

Hashtags

Мне очень нравится монолог детектива из фильма «Достать ножи: Стеклянная луковица». По сюжету эксцентричный миллиардер, «непонятый гений» Майлс Брон собирает своих друзей на личном острове на вечеринку, и закручивается дело. Детектив Бенуа Бланк, оказавшийся там же, проводит с этими мажорами несколько дней, и ближе к концу рассказывает им, как его осенило, и он нашёл ключ к делу. Классический детективный сюжет, но сам монолог очень проникновенный, потому что Бланк эмоционально сокрушается, рассказывая о том, как у него в голове что-то не сходилось, как нечто постоянно не давало ему покоя. Приводит в пример различные мелочи: миллиардер выдумывал несуществующие слова, неверно применял другие слова, ошибался в фактах, не самостоятельно делал всякие крутые вещи, которыми хвастается, а то, что сделал или придумал он сам, оказалось неработоспособно. И он приходит к такому выводу: Майлс Брон на самом деле идиот. Он глупый. Заработанные им деньги и миллиардная корпорация объясняются как-то ещё (в итоге сюжет даёт ответы на это), а чел просто тупой. И с помощью принятия этой гипотезы куча деталей встали на свои места. Вот и в жизни можно применять. Если ты слишком долго не можешь объяснить поведение какого-то человека, попробуй предположить, что он тупой. Почти Бритва Хэнлона, но более персонализированная. Бывший игрок в интеллектуальную игру несёт отборнейшую неадекватную ересь? Возможно, он просто тупой, а навык игры это единственное, что он в себе развивал. Автор хороших текстов становится наглухо отбитым пропагандистом сомнительной политической позиции? Возможно, он просто тупой, а способность сочинять тексты не даёт умение адекватно видеть вещи вокруг. Опытный специалист в какой-то сфере отрицает профессиональные подходы? Возможно, он просто тупой, а годы работы не сказались значимо на росте навыков. Знаменитый владелец крупного сервиса придумывает неправдоподобные кринжовые оправдания своих косяков? Возможно,... хотя не, в этом случае обычно идёт игра на публику и вера в то, что тупые как раз зрители. Но тоже так себе. И всё равно, в большом подмножестве случаев метод, кажется, работает.#life

1,190 views

Hashtags

Новый (седьмой) сезон «Чёрного зеркала» реабилитировал для меня сериал после откровенно проходных предыдущих двух. В своё время шестой сезон я досмотрел с трудом: из пяти серий три вообще мимо сериала. А вот в седьмом, разве что, чуть проваливается эпизод о съёмках кино, но и в нём есть любопытные моменты. Остальное очень хорошо, в духе сериала. И ещё куча мелких отсылок к предыдущим сезонам. Наверное с точки зрения высказывания самая интересная серия — первая, обыгрывающая зависимость от корпораций. Кажется, убеждённым сторонникам капитализма и нынешней экономический модели человечества нужно побольше такого смотреть, чтобы мы в какой-то момент не оказались в мире, который там показан. Хотя, вполне возможно, что уже оказались. По эмоциям очень сильная пятая, о мужчине, который вспоминал давние отношения. Проникновенно, грустно. И технологии, которые там показаны, уже у нас на носу. По крайней мере делать трёхмерную сцену из фотографии мы уже умеем. Понравилась задумка в серии про девушку-кондитера. Посмотрел бы побольше такого. Можно целый сериал даже: как разные люди справляются с такими способностями. Причём, сериал можно сделать очень мрачный, под лозунгом «бойся своих желаний». В серии о роевом интеллекте было приятно увидеть Капальди, но сюжетный ход я разгадал с первых минут. Слишком много читаю и смотрю фантастики. Нечто подобное было в одном из эпизодов «The Outer Limits» (к слову, «Чёрное зеркало» не впервые почти дословно цитирует его). Ну и продолжение Каллистера — очень в тему. Не так много серий «Зеркала» было бы уместно продолжать, выбор считаю крайне удачным. Конечно, никаких хитрых сюжетных флипов и глубоких мыслей там нет, но во многом от этого даже проще после в целом тяжёлых предыдущих эпизодов. Короче, либо там кому-то настучали по голове после низких оценок предыдущих сезонов, либо сменились шоураннеры, но вера в сериал восстановилась. #fiction

1,010 views

Hashtags

Вышел трейлер «Киллербота» по серии книг, о которой я вам рассказывал. Выглядит прямо очень многообещающе. Apple TV+ весьма неоднозначный стриминг, потому что часть вещей он сильно испоганил по сравнению с первоисточником (например, «Основание», о чём я тоже писал), а часть вещей вышли превосходными («Silo» очень хорош, хотя, говорят, что книги ещё на голову круче, у меня уже в очереди на прочтение). В «Киллерботе», как в продукте современной западной писательницы, и так хватает повестки и порой странноватого юмора и странноватых же намёков (возьмём взаимоотношения главного героя с кораблём, например). Так что Apple TV+ не смогут сделать что-то сильно хуже за счёт woke-надстроек — в этом смысле современный роман устойчивее к издевательствам, чем классический труд Азимова полувековой давности. А всё остальное Apple делает хорошо: дорого, со вкусом, с хорошей постановкой. Ждём выхода 16-го мая, в общем. #fiction https://www.youtube.com/watch?v=vEioDeOiqEs

934 views

Hashtags

В общем, была задача на оптимизацию плана работ: есть набор заказов, и в каждом N тасков. Таски могут зависеть друг от друга или нет, имеют длительность и тип. Ещё есть M работников, каждый из которых может выполнять таски только определённых типов, причём, у каждого своя скорость. Если все таски в заказе выполнены, фирма получает сколько-то денег. У заказа есть дедлайн, за просрочку штраф (за каждый день просрочки), который вычитается из цены заказа. И ещё фирма тратит деньги за каждый день своей работы независимо от того, как загружены её сотрудники (то есть просто платит зарплаты по сути). Ещё важен учёт праздников и выходных. Нужно заработать на определённом наборе заказов и работников как можно больше денег. Полный текст задачи и код программы проверки есть в репозитории. Эта задача является изменённым заказом, который мы с напарником решали в реальной жизни: оптимизация работы печатных станков для типографии. Правда, тогда и мы справились так себе, и заказчик в итоге сначала захотел всё вручную сам делать, а потом и вовсе похоронил проект при смене директора. !!! Не читайте дальше, если хотите сначала попробовать решить самостоятельно, потому что я сейчас опишу эффективные подходы и результаты. ________________________________________ Так вот. Мы с другим экспертом Андреем сразу сели и написали разные варианты, чтобы задать шкалу, по которой будем оценивать решения команд. За пару часов я собрал примитивный жадный алгоритм, который сортировал заказы по прибыльности и укладывал в сетку кое-как, это дало нам нижнюю оценку. Мой алгоритм заработал ~75 млн виртуальных рублей, мы решили для оценки поставить нижней границей 40 млн. То есть всё, что ещё ниже, оценивалось в ноль баллов за качество оптимизации. Затем Андрей закрылся дома на три дня и вышел на свет со сложным жадным алгоритмом, который очень хитро сортировал заказы и очень хитро укладывал их в сетку, попутно выбирая разные способы этой укладки в зависимости от конкретного заказа. Это позволило заработать ~275 млн рублей. Мы сделали верхней границей для оценки 280 млн. К сожалению, в итоге только две команды из десяти прошли нижнюю границу, заработав, соответственно, ~91 и ~105 млн. К верхней границе не приблизился никто. И у четырёх команд алгоритм вообще не смог уложить без нарушений задачи в сетку (то есть, например, произвольно менял длительности, накладывал задачи друг на друга, давал одному работнику две задачи в один момент и так далее). Важной ошибкой команд, на мой взгляд, являлся тот факт, что никто не воспользовался возможностью запустить алгоритм на несколько минут и дать ему поработать. По условиям задания, можно было тянуть до 5 минут на одну оптимизацию, но по факту решения команд отрабатывали за единицы и десятки секунд. На самом конкурсе, пока команды работали, я решил попробовать сделать быстрое (по времени написания) но эффективное решение. Сначала попробовал жадную сортировку + доведение до лучшего варианта методом имитации отжига. В качестве нового состояния я просто менял местами заказы целиком. Этот вариант работал пару минут и дал мне около ~200 млн дохода. К слову, команда-лидер использовала такой же подход, просто не докрутила число итераций и температуру. Ну и потом я взял готовую либу по реализации классической генетики с особями и скрещиванием. Особью был массив с приоритетами заказов (которые конечно же нужно было аккуратно уложить чистым алгоритмом). Тип скрещивания: scattered. Всего 15 поколений по 20 особей, и это за минуту-полторы давало ~230-240 млн. Считаю, что для конкурса это самый лучший выбор: пишется одним человеком за день и даёт почти максимум, при этом легко настраивается на нужную длительность работы, легко параллелится. Ну а потом уже дома я посидел и накодил свой вариант сложного жадного с плавающим окном перебора отсортированных заказов и плавающей же укладкой по работникам. Такая штука за две минуты зарабатывает ~281 млн. Но за три дня в условиях стресса я бы такое не сделал, скорее всего. #dev

853 views

Hashtags

Ух, очень продуктивная была поездка. Наши взяли золото, причём, в этом году организаторы решили наградить в том числе экспертов по подготовке, чьи команды выиграли. Не надеялся я, что когда-нибудь ещё раз (после победы в 2022) поднимусь на эту сцену и получу медаль, а оно вот как сложилось. Наверное, по эмоциям от AtomSkills один из самых сильных эффектов. С ним соперничают, разве что, мой первый хакатон VK Hack 2018, и крупнейший в мире хакатон «Цифровой Прорыв», сильно изменивший мою последующую жизнь. В любом случае, каждый год AtomSkills это очень масштабное и классно срежиссированное мероприятие с большим количеством впечатлений, интереса, опыта. А сейчас вот был юбилейный чемпионат — десятый, и такой подгон. Два года не брали медалей, и никогда раньше в нашей компетенции не награждали тех, кто привёз команды. Видимо, мои хакатонные боги-покровители решили, что я засиделся. В задание тоже удалось привнести некоторую новизну. В целом схема такая: эксперты совместно делают задание, придумывают шкалу оценки и критерии. Но при проверке решений каждую команду смотрят только те, кто к этой команде не имеет отношения. При этом критерии оценки это в большинстве своём объективные предикаты, на которые решение проверяется. Например, в критериях может быть фраза «Система позволяет создать нового пользователя: да (3 очка) / нет (0 очков)». Де-факто споров почти не возникает, коллегия экспертов почти всегда сразу видит и понимает, засчитывается тот или иной критерий или нет. Субъективные части в оценке тоже есть, но их влияние на результат в разы меньше, чем в обычных хакатонах. И да, важнейшее ключевое отличие: на AtomSkills решение каждой команды обязательно разворачивается независимо на пустом компьютере и прогоняется через бизнес-сценарии. Нельзя наврать в презентации, будто бы ты что-то сделал, чего нет. Нельзя сделать решение на моках или фейковое. Нельзя вытащить только на харизме и софт-скиллах. В этом году мы, как авторы задания, к обычной энтерпрайз-части добавили алгоритмическую задачу. Стандартно командам предлагается сделать мини-CRM или нечто подобное в заданном домене, что увеличивает влияние заготовок. Если принести с собой слишком много подготовленных форм, CRUD'ов, конфигов и так далее, это экономит тебе много времени, и ты в итоге просто выигрываешь из-за форы. Сейчас же в мини-CRM была специальная функция: написать алгоритм оптимизации расписания работ. Детали задачи я расскажу завтра, но в целом никакие заготовки не помогали решить это эффективно, если не знать задачу заранее (а она до конкурса скрыта, и разглашение карается дисквалификацией). В итоге лично на мой взгляд итоговый балл получился очень взвешенным: — Если команда сделала хороший алгоритм и не провалилась при этом по обычной не-алгоритмической части, она набирала много баллов (как наши) — Если команда сделала неэффективный, но работоспособный алгоритм, у неё был шанс вывезти за счёт супер идеального вылизанного исполнения не-алгоритмической работы (такие получили серебро и бронзу) — Если алгоритм у команды не заработал вообще, то даже при супер идеальном остальном решении в тройку она не попала — Если алгоритм у команды был хороший, но имелся сильный провал во всём остальном — она вообще оказывалась ниже середины В общем, не знаю, попаду ли в следующий раз, но воспоминания и опыт невероятные. #dev

697 views

Hashtags

В эти дни я в Екатеринбурге на застройке площадки под AtomSkills. И вот только сейчас увидел, что у подъёмников-то управление шасси тоже из корзины. Из-за этого кажется, будто едет она сама, как робот, а человек наверху просто ждёт своего часа, когда его уже поднесут к чему-то, и он сделает, что нужно. Человек, как вариант манипулятора для машины. Насадка. #gadgets

951 views

Hashtags

Известно, что один из самых надёжных способов починки любого устройства это «выключить и включить». Совершенно не шучу. Страшно вспомнить, как много раз именно этот принцип меня выручал. Поломка это, как правило, попадание устройства в нетипичное состояние, и легче всего вывести из этого состояния перезагрузкой. Второй надёжный способ, кстати, «разобрать и собрать», но речь сейчас не о нём. В устройствах с разной степенью успешности внедряют автоматический перезапуск. Бывают решения типа BSOD, когда система просто говорит: «Человек, убей перезапусти меня, я так больше не могу». Смартфоны в ряде случаев умеют перезагружаться самостоятельно, хотя человек обычно такое своеволие не любит и воспринимает как серьёзный косяк. Серьёзнее, чем если телефон зависнет, и юзеру придётся перезапускать его вручную. В микроконтроллерах частенько встроен watchdog: специальный таймер, который основные мозги должны сбрасывать. Если они зависли и не сбросили, то таймер сам уже производит перезагрузку. «Кнопка мертвеца», да. Тоже не слишком приятно, хотя другого способа как-то повлиять на зависший микроконтроллер обычно нет. Но бывают устройства, чей перезапуск почти незаметен. Холодильник можно перезапускать без проблем, он и так постоянно включается и выключается. Какой-нибудь кондиционер тоже. И вот умную колонку. Большую часть времени умная колонка стоит, ничего не делая. Почему же при пропадании сети Алиса сама себя не перезапускает? Сеть иногда пропадает именно у самой колонки (редко, раз в несколько месяцев, но бывает). Даже у наиболее новых моделей это встречается. И лечится только выдёргиванием её из розетки и повторным включением. Почему электроника Алисы не может после длительного отсутствия сети сама себя передёрнуть? Это же так очевидно. Не понимаю. #gadgets

1,150 views

Hashtags

Попробовал этот ваш Cursor. Мне прям несколько человек независимо советовали. Ну, что могу сказать, да, вполне впечатляет. Точнее так: автокомплит хоть и хитрый, но лично у меня восторга не вызвал. Иногда угадывает очень круто, иногда очень плохо. А вот режим агента — это да. Я бы сказал, что это новый значительный качественный шаг в программировании. Большим моделям как раз и не хватало какой-то пристройки, которая позволяет им не только выдавать текст, но и совершать действия. У вас как бы под рукой есть джун, который хорошо знает теорию и делает всё очень быстро. Он не понимает, зачем, не умеет проектировать, склонен к шаблонным решениям. Но всё равно теперь ваша работа состоит в том, чтобы аккуратно объяснять ему задачу обычной человеческой речью (в том числе на русском языке) и указывать на ошибки. Вся утомительная, но когнитивно простая рутина теперь делается за секунды вместо десятков минут. А рутины в разработке очень много, особенно если это продуктовая или заказная разработка на многословном энтерпрайз языке. Стоит сказать, что Cursor, конечно, как и все форки VS Code, остаётся просто текстовым редактором, и ощущается соответственно. Если вы пишете настоящую программу на серьёзном языке, а не текстовый файл, то для надёжной работы вам всё равно параллельно нужно открыть взрослую IDE. Тем не менее, Cursor умеет читать структуру каталогов и учитывать устройство вашего проекта, а к контексту запроса в LLM можно вручную присоединять любое подмножество файлов. Можно ли назвать это явным шагом к исчезновению работы программиста? Я искал информацию о том, какие профессии были уничтожены автоматизацией, и наткнулся на статью, где упоминались кучер и колёсник (тот, кто делал колёса для карет). Один из популярных комментариев: «Буквально вчера заказывал кучера, потому что свою карету отдал колесникам на ремонт помятого диска». Но это шутки, конечно. А так, есть профессии, где увеличение степени автоматизации в конце концов полностью исключает человека (расстановщик кеглей в боулинге, телефонистка, фонарщик), а есть те, где автоматика просто упрощает людям жизнь и помогает выполнять свою работу эффективнее (компьютер помогает математикам, экскаватор строителям, телескоп астрономам). В чём же отличие первых и вторых? Я бы сказал, что у вторых профессий есть факторы непредсказуемости, вызванные необходимостью создания нового. В расстановке кеглей новых задач не появляется, как и в переключении телефонных линий. А в программировании появляется, и вот почему: у человечества возникают как новые процессы, требующие автоматизации, так и видоизменяются старые. И это, по всей видимости, бесконечный процесс. Да, разумеется, сильный ИИ с сознанием и способностью принимать решения будет уметь всё, что умеет человек, и даже больше. Но до этой технологии нам далеко, и нейросети не являются тропинкой к ней. Другое дело, что джуны теперь не нужны, простите. Там, где раньше требовалась команда из сеньора, пары мидлов и пары джунов, теперь справится один сеньор, ну может ещё с одним мидлом, и всё. Советую всем начинающим программистам учить не то, как делать, а то, почему нужно делать именно так. Архитектуру, паттерны, принципы, лучшие практики. Тогда в уходящий айти-поезд ещё можно заскочить. #dev

1,310 views

Hashtags

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

985 views

Hashtags

Первоначально я очень скептически относился к написанию кода нейросетками. Но при этой оценке я допустил ошибку: пробовал технологию на сишарпе, который, во-первых, знаю хорошо, во-вторых, на котором пишут в основном всякий энтерпрайз, где важна архитектура. Нейросети раскрываются, когда тебе нужно закодить чисто утилитарную вещь на малознакомом языке. Архитектуру ты всё равно строишь сам, да и проверить существующий код в большинстве случаев можешь без проблем. Но при этом не обязан помнить, как там в какой-то популярной библиотеке называется нужный метод, или какие есть в этом языке нюансы синтаксиса. Программирование это разговор человека с компьютером на языке компьютера. Нейросети делают шаг в сторону языка человека, но не так, как думают авторы новостных заголовков. Пока ещё в основном нельзя сказать «Сделай мне программу, которая посчитает деньги». Ты всё ещё должен иметь представление о структурах данных, алгоритмах, и, в общем-то, должен быть способен за вменяемое время написать такую программу самостоятельно. Поэтому и с нейросетью ты общаешься соответственно: «Два метода, в первый на вход поступает словарь с таким-то ключом, вытащи из него значения и отсортируй вот этим вот лямбда-выражением, второй метод проверяет пересечение таких-то двух выборок на непустоту и возвращает булев ответ, затем...». И вот это работает очень круто, потому что ты труба шатал помнить, что в этих ваших питонах None вместо Null или как там в каком языке инициализируется список. А так можно написать проект в два-три раза быстрее и с тем же уровнем качества, что и сам. #dev

1,050 views

Hashtags

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

1,170 views
12•••5•••89101112•••15•••20•••25•••30•••35•••40•••45•••50•••55•••60•••65•••70•••7475