Русский
Открыть в Telegram
ННервный программист

Нервный программист

@nervous_programmer · канал · Технологии · в индексе с 2026-08-25
174подписчиков
142средний охват поста
81.6%ER — охват к подписчикам
3постов за 30 дней
Н
Нервный программист
Фотография
нажмите — покажем
Отличная идея! И другая ллмка отрисует экран чисто по наитию форме ответа👍 А пользователь пойдет нахер
2 · 320 ·
Нервный программист
удар в псину 🐶 от вардампа! вардамп был выбран для hell2shape, потому что он * есть у всех * провайдит типы И, казалось бы, все хорошо. Но я не знаю, как так получилось, но мы с клодом пропустили капец важный корнер кейс. аж стыдно!😢 дело в том, что вардамп не экранирует двойные кавычки. и получается как-то так. $v = ['k' => 'v"v']; var_dump($v); array(1) { ["k"]=> string(3) "v"v" } ну и как бы все! лексер сломан! идея о том, что мы одной регуляркой распарсим все на токены сразу идет в очко. И если щас кто-то скажет "да ты просто не умеешь готовить регулярки" (что в целом правда), то как вам такое $a = [ 'govno' => 'жопа" ["лох"]=> string(8) "тигр', ]; $b = ['govno' => 'жопа', 'лох' => 'тигр']; var_dump($a, $b); array(1) { ["govno"]=> string(46) "жопа" ["лох"]=> string(8) "тигр" } array(2) { ["govno"]=> string(8) "жопа" ["лох"]=> string(8) "тигр" } разница только в цифрах в скобочках. и получается, что надо по-хорошему добавлять препроцессор, и только потом уже в лексер все это пихать😔 и удивительно, что сколько я не пользовался сам hell2shape, я ни разу с этой багой не столкнулся. но мне открыли issue, и я такой "блять как это можно было пропустить" и буквально на следующий день я уже сам это словил. сук. пока закинул фикс с positive lookahead на пустую строку после кавычки. ну теперь лексер ломается только если кавычка с переносом строки. но блэт, как так! мне кажется это охереть, как показательно, что если ты тест кейсы отдаешь на откуп ллмке, то в итоге, можно обнаружить себя в очке. Потому что, вот честно, я вообще не включал голову, когда мне клод тесты генерил. Ток мельком читал их, за что и получил удар в кабину. С другой стороны, может быть, если бы я об этом кейсе знал, я бы до сих пор ничо не выпустил😂
1 · 403 ·
Н
о! кстати, а знаете, еще в чем показательность этого кейса. я ж поделился со своим напраником, клодом, нашим фиаско. говорю, мол, так и так, двойные кавычки сгубили. И клод мне как давай накидывать решения! какие-то страшные регулярки подсовывать со словами "вот это точно все зафиксит! нет? а может вот эта регулярка? ща-ща, еще че нить придумаю" так и не смог пацан смириться, что задача не решается регулярками😔 и самое главное, клод даже не смог никакого альтернативного решения предложить. впал в регулярный цикл между регулярками и все. убеждал меня и себя, что вот эта-то регулярка точно окончательно решит все проблемы. так шо, кожанные, мы все еще нужны иногда!
2 · 451 ·
Н
Нервный программист
Фотография
нажмите — покажем
Это как java и javascript, да? P.S. Сравнение с pornhub было бы более корректным, если бы там можно было принимать PR (porn request)
4 · 362 ·
Н
Нервный программист
Ссылка
нажмите — покажем
Сегодня немного пололировал с поста на реддите, где до чувака на собесе по golang докопались с вопросом о том, как реализовать перегрузку методов. Вот уж реально, когда на собесах не знают, как бы изъебнуться, чтоб... а я даже не знаю, чтобы что 🤷хуже только вопрос, почему канализационные люки круглые. Но меня это навело на определенные мысли. Когда-то давно я начинал свой путь в айти с книги Брюса Эккеля про java. И я прям помню, как там много говорили про перегрузку методов, и как это круто. Ну я тогда ваще ничо не понимал в погромировании. Даже меньше, чем щас 😱 раз сказали, что это круто, значит круто. а. ну мы еще лабы на плюсах писали в универе с перегрузкой операторов. С джавой у меня так и не задалось. Но код писать продолжил. И все это время писал на ЯП, которые не поддерживают перегрузку. А это кстати все популярные скриптовые языки. И даже не скриптовые (типа go, rust). И вот щас будет наброс. Че то я не особо ощущаю какой-то дискомфорт от отсутствия перегрузки в бизнес коде. Мне кажется, это вообще самая переоцененная фича в ЯП. Один пример, который можно набросить в качестве удобства перегрузки - это перегрузка конструктора. Ну типа, было бы удобно иметь у агрегата разные конструкторы - как разные источники происхождения агрегата. Но в целом, эта проблема решается через наследование. С точки зрения типов, перегрузка это так называемы ad-hoc полиморфизм: конкретная реализация выбирается в зависимости от типов. И кажется, что это збс. Но по факту, хуйня. Ну используем мы одно и тоже слово в названии метода, и чо. Сэкономили на записи. Как это читать потом? Поди потом разберись, какая реализация тут отработала. В языках без перегрузки у нас параметрический полимфорфизм, т.е. мы принимаем пачку типов на вход, на выходе также пачка типов, а реализация уже там разбирается, чо к чему. На первый взгляд кажется, что такой подход это больший пиздейшн. Но у нас же есть тулинг. Например, typescript поддерживает перегрузку функций. В phpstan есть conditional
2 · 321 ·
Н
Нервный программист
Приношу заранее извинения за пост о ллм. Сам от этого устал🫠но разок-то можно🙏 По моим ощущениям, большиство разработчиков используют агентов в TUI. Потому что почти каждый из них предоставляет TUI версию. И это типа универсально. Я же продал очко душу ide от jetbrains, поэтому сразу искал решение - плагин. Поэтому когда-то давно я выбрал cline, ибо у них был адекватный плагин. И таким образом, я выбрал DX, который трудно найти, легко потерять и довольно тяжело повторить. 3го дня все ide от jetbrains обновились на мажорную версию. Из-за этого cline плагин перестал работать. И тут я понял, что время TUI версии пришло. И охерел от того, что там все не то и не так. Прежде всего стоит отметить, что я использую ллм в режиме "ты конечно генерируй, но я блэт все чекаю". Потому что я тот еще контрол фрик. В ide это видно как diff после каждого изменения. Пока я не заапрувлю diff, дальше ничо не двигается. Обычно изменения ллм делает разумными чанками, и это все реально просмотреть (ну кроме тестов, там пиздейшн портянка обычно). Есть ли что-то похожее в Cline TUI? вообще нет! все, что там можно сделать - это поставить аппрув на каждый tool call. но это просто ужас как заебывает. Потому что, сюрприз-сюрприз, под капотом агент делает десятки таких вызовов даже для простых задач. И, главное, он не показывает дифф🤷короче это вообще не то. в TUI ты должен просто проверять в конце все. Кроме того, когда я смотрю диффы, я ж могу еще и сам код менять. Потому что это все-таки редактор! и если я че то поменяю, то ллм чекнет мои изменения, и дальше уже с учетом их будет действовать. В TUI это просто невозможно. Другой момент, заключается в том, что плагин "видит" все ошибки ide. То есть фактически он использует стат анализатор, который уже есть в ide (а он то крутой). TUI агенты обычно предлагают еще lsp прикрутить рядом. В целом можно, но зачем? В ide у меня не только стат анализ для основного языка, но и для всего сопутствующего. Например, если ide показывает ошибку в sql, аг
263 ·
Н
Нервный программист
текст ещё не в индексе
3 · 293 ·
Н
Нервный программист
Фотография
нажмите — покажем
Никак не можете найти в себе силы поменять работу? Просто выполните этот sql запрос, и за вами скоро придут
9 · 315 ·
Н
Нервный программист
текст ещё не в индексе
4 · 266 ·
Н
Нервный программист
текст ещё не в индексе
1 · 266 ·
Нервный программист
Вчера прилетел код на ревью от фронтенда. А там цепочки вложенных тернарников. Кучи их🫠 И я поймал себя на мысли, что эти цепочки мне капец как тяжело воспринимать. Я прям все мыслетопливо на них сжег и устал. Вот сравните это const buttonText = action === 'manage' && selectedProductId === purchasedPlan?.subscriptionProduct ? strings.manage_button : action === 'downgrade' ? strings.downgrade_button : strings.upgrade_button; или это let buttonText; if (action === 'manage' && selectedProductId === purchasedPlan?.subscriptionProduct) { buttonText = strings.manage_button; } else if (action === 'downgrade') { buttonText = strings.downgrade_button; } else { buttonText = strings.upgrade_button; } И это относительно легкая цепочка, в которой я намеренно упростил айдишники строк. По факту, там больше буков. При этом сам я тоже пишу такое, када приходится на фронте че то ковырять. Потому что так принято, и потому что так избегают появления let в коде. Но че то вчера у меня так мозгулька вспотела, пока я пытался это все понять, что я усомнился в догмах. Мне кажется, это одна из тех вещей, которые как раз легче писать, но тяжелее воспринимать. Но по идее должно быть наоборот, ведь читаем мы код чаще чем пишем. Кроме того, цепочки тернарников работают по разному в разных ЯП. И если в js цепочки правоассоциативные (если условие false, то весь хвост - это новое выражение), то в той же пыхе до версии 8 они были левоассоциативные. А щас так вообще вложенные тернарники без скобок запрещены. Может быть это меня и травмировало🤔 А в питоне смарите какая красота 😀 score = 85 grade = "A" if score >= 90 else "B" if score >= 80 else "C" print(grade) # Хуй знает че тут будет че думаете? лучше старый проверенный if - else или тернарники зато const?
3 · 363 ·
Н
Кароче, в комментах пришли к выводу, что я лох, и надо было добавить switch - case в опросник, ибо это единственный норм варик (с чем не поспорить). Но что ж фронтендщики вообще его не используют?🤔 (получается, что в итоге лох не я, а фронтендщики)
404 ·
Н
Нервный программист
Фотография
нажмите — покажем
Внатуре
6 · 379 ·
Н
Нервный программист
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Я тут путешествую. Вчера заехал в Воронеж, и, кажется, нашел там место, где пыхарей приводят в порядок🤩 ну либо это замаскированный офис @sergei_predvoditelev. Других вариков нет.
33 · 2.1K ·
Н
Нервный программист
Видео
IMG_3649.mp4 · 1.4 МБ · нажмите — покажем
8 · 249 ·
Н
Нервный программист
текст ещё не в индексе
1 · 241 ·
Н
Нервный программист
Ссылка
нажмите — покажем
Херасе! Скорости закрытия тикета на отъебись у jetbrains даже дед из phpunit может позавидовать!⚡
1 · 304 ·
Н
Нервный программист
Фотография
нажмите — покажем
Не вижу ничего смешного. Он предложил создавать PRы с помощью AI. Но он не обещал, что будет их мержить.
4 · 226 ·
Н
Нервный программист
текст ещё не в индексе
3 · 291 ·
Н
Нервный программист
Фотография
нажмите — покажем
И потом сам бы не нашел никогда
1 · 230 ·
Н
Нервный программист
текст ещё не в индексе
5 · 188 ·
Н
Нервный программист
Ссылка
нажмите — покажем
А кстати, зачем нам в век ллм вообще изучать DDD. Ведь весь код пишет агент. Не пофиг ли, как там оно будет в итоге с DDD или без DDD? Последние месяца 3-4 из каждого утюга говорят про Spec-Driven-Development (SDD). Появляются тулзы типы OpenSpec, SpecKit и миллионов аналогов. Вариации подхода разные. Но суть идеи в том, чтоб хорошенько пошевелить мозгулькой на этапе планирования, родить тонну md файлов, а затем скормить их агенту, и спокойно идти пить кофеек, пока клод перемалывает ваши спеки в рабочий код. Также среди преимуществ данного подхода выделяют возможность разделить планирования разного уровня по разным агентами, чтоб бороться с разрастанием контекста. Типа совсем высокоуровневую архитектуру одному агенту, чуть пониже другому (а на вход то, что первый агент родил), и т.д. В конце концов реализацию можно оставить агенту со слабой моделью, но с очень классной спекой. Зачем же нам тогда DDD?🤔 Во-первых, как я уже отмечал в предыдущем посте, использование "единого языка" в спеке помогает ЛЛМке не запутываться. Доказательство от обратного: если у вас одна и та же вещь называется по-разному, агенту будет тяжело все это собирать. Возможна путанница и в спеках, и в коде. Во-вторых, стратегическое проектирование будто бы работает вообще на другом уровне. Выделение ключевых поддоменов и ограниченных контекстов должно проводиться до привлечения ЛЛМ. Не, посовещаться то с ней можно. Но вот чтоб просто отдать архитектуру на откуп агентам - тут че-то хз. И в третьих, если говорить про тактическое проектирование, я не уверен, что вот эти спеки в виде md файлов (и человеческий язык в целом) хорошо подходят для описания сложной бизнес логики. Конечно, требования собираются с использованием человеческого языка. Но мой опыт показывает, что этот процесс итеративный, и итерация как раз возникает, когда на этапе реализации ты утыкаешься в конкретный кейс. Поэтому не особо верится в возможность как подготовить всю спеку сразу (у меня не вышло), так и в саму возможность
3 · 138 ·
Н
Нервный программист
Фотография
нажмите — покажем
Единственный чистый код, который ты можешь позволить себе в 2к26🥲
2 · 99 ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем