LINUX.ORG.RU
ФорумTalks

Не программист

 , ,


0

2

В процессе разработки пет-проекта возникла необходимость слабать простенькую web-морду для железки на базе микро-контроллера. Причем «простенькую» – это не фигура речи, задача реально элементарная, для школьника (см. ниже).

А так как на вебню у меня стойкая аллергия с риском летального исхода, то решил поручить я это дело искусственному идиоту от гитхаба. Выбрал его потому что по логике он должен быть максимально натренирован именно под задачи кодинга, а не, скажем, психоанализа (как некоторые другие).

Так вот, задача. Сделать html-страницу с двумя выпадающими полями выбора даты/времени (начало и окончание временного отрезка, только прошедшее время, минимальная разница – одна минута); кнопками «вперед» и «назад», которые синхронно изменяют содержимое полей даты/времени на заданное константой смещение; чекбокс, который блокирует обе кнопки и второе поле выбора даты, предварительно записав в него текущее время. По возможности без внешних фреймворков.

ИИ бодро выкатил мне первый вариант кода, в котором поля ввода даты/времени были браузерозависимыми, страшными, и крайне неудобными. Разрешил взять каку-нибудь легкую либу для пикеров. Он решил использовать flatpickr, я не возражал, т.к. в сортах джаваскриптовых фекалий все равно не разбираюсь.

Второй вариант кода внешне был презентабельнее, но скриптовые действия не работали вообще: можно было выбрать будущее, минимальный интервал не соблюдался, чекбокс ничего не отключал и т.д.

Указал ему на ошибки. ИИ с неуместной радостью в стиле «как хорошо что ты подметил недочеты», выкатывает мне третий вариант кода, где почти ничего не меняется. Кнопки и второй пикер по-прежнему не блокируются, с ограничениями по датам творится вообще полная фигня (поведение пикеров совершенно неадекватное).

Снова указываю на ошибки, четвертый вариант. Неадекватность пикеров вроде починил, кнопки и второй пикер по-прежнему не блокируются при установке чекбокса. Снова указываю на проблемы.

Пятый вариант. Кнопки блокируются, пикер все еще нет. И сломал ограничения на прошедшее время (снова можно выбрать что угодно). Пытаюсь объяснять ему уже не как человеку, а перехожу на псевдокод, что-то среднее между человеческими предложениями и языком программирования. Начинаю понимать, что уже по факту сам пишу логику, пусть пока и на птичьем языке.

Шестой вариант. Ограничания по датам починил, кнопки блокируются, второй пикер, мать его за ногу, не блокируется! Указываю на это. Долго думает. Очень долго. Так долго, что появляется желтая плашка с текстом «something wrong, try again». Засылаю запрос еще трижды. Наконец выдает мне ответ, что все должно работать, смотри внимательнее.

На этой ноте я решил вдуматься, что же там написано, и очень быстро нашел причину.

Этот долбень пытался отключить свой flatpickr путем вызова метода .set(«disable», true), который вообще не для этого. Он предназначен для блокировки интервала дат в выпадающем окне, и вторым параметром ожидает массив дат для блокировки, а от true при выполнении этого вызова он бросает исключение и последующие строки за этим .set() тоже не выполняются (от чего не срабатывала и блокировка кнопок, пока он не перенес ее выше).

Кроме того, в ходе анализа кода обнаружил, что кнопка «вперед» игнорирует ограничение на будущее время и весело инкрементит даты хоть на год вперед.

Сам код крайне корявый, много копипасты. Например, формат даты «Y.m.d H:i» в коде встречается десяток раз, но в константу так и не вынесен. Работа с датами – дикая лапша, но тут скорее вина ущербного жаба-скрипта, не имеющего в своем составе даже самых элементарных методов обработки даты и времени.

Итого. Он сам выбрал библиотеку, сработать с которой корректно не смог. Плюс игнор ТЗ на начальных этапах. Плюс регулярные регрессии в процессе доработки. Плюс не обработал граничные случаи.

Все это сильно напоминает новичка-раздолбая, с которым объяснять/проверять/тыкать_носом приходится дольше, чем сделать самому.

В итоге почти весь код все равно пришлось переписать, оставив от ИИ только шаблон html/css и инициализирующий код. Однако надо отдать должное, страница выглядит нормально, и, вероятно, в html/css он не натворил такого ада как в скриптах, хотя в этом деле для объективной оценки моей квалификации явно не достаточно.

Вот такие пироги. Ладно, он про антенны и волны нихрена не знает, это меня не удивило в свое время, все-таки нишевая область знаний. Но чтобы в самом попсовом ИТ-направлении так лажать, я, честно говоря, не ожидал. Так что пока сабж.



Последнее исправление: quwy (всего исправлений: 2)

А давай через Гопатыча5 попробуешь? Его рыло, правда, тоже очугунело, в сравнении с 4 версией, но все же.

deep-purple ★★★★★
()

там нужны минимальные знания. проси на vue/react сделать ту форму и будет тебе синхронное изменение всего, а через axios запрос на бек сделаешь

rtxtxtrx ★★★
()

Один мужик пришел к другу в гости. Сидят, выпивают. Гость замечает, что хозяин периодически заглядывает под стол.

  • Что там у тебя? - спрашивает он.
  • Мини-теннис, - отвечает хозяин, - хочешь, посмотри сам. Гость заглядывает под стол и видит теннисный корт, человечки маленькие в теннис играют. Все это размером где-то 30 сантиметров.
  • Откуда у тебя это? - удивляется гость.
  • У меня Джин есть. Я его попросил, и он мне сделал.
  • Слушай, а можешь мне Джина одолжить на одно желание? - просит гость.
  • Бери, конечно, только предупреждаю: Джин старый и глухой. Взял мужик Джина домой и загадывает ему желание:
  • Хочу, чтобы на меня с неба посыпались баксы, целая куча баксов. На беднягу начинают сыпаться факсы. Тот еле жив остался, прибегает к своему другу и говорит:
  • Слушай, твой Джин меня чуть не убил, вместо баксов факсы на меня высыпал.
  • А ты что, думаешь я у него 30-сантиметровый ТЕННИС заказывал?
bdrbt
()
Ответ на: комментарий от sanyo1234

Ну да, любой ИИ это как эрудированный джун, всё знает - применить не может, советам следует, но очень тупо. Всё надо разжёвывать подробно, код перепроверять и рефачить. Ну и самое стрёмное - не обучаем.

bdrbt
()
Ответ на: комментарий от bdrbt

Зато очень быстро находит правильные ключевые слова для поиска в поисковике и даже нередко сам выдаёт неплохие прямые линки на хорошие источники.

sanyo1234
()
Ответ на: комментарий от sanyo1234

Вот это кстати бомбезная фича. И краткую вводную даст и ссылок накидает и даже в не особо понятных ситуациях становится понятно в каком направлении копать.

bdrbt
()
Ответ на: комментарий от sanyo1234

В таких ситуациях всегда вспоминается рассказ «Верный вопрос» от Шекли. - «чтобы задать верный вопрос, нужно знать бОльшую часть ответа».

Paka_RD
()
Ответ на: комментарий от bdrbt

А ты что, думаешь я у него 30-сантиметровый ТЕННИС заказывал?

Интересно, каким должен был быть запрос, чтобы теннис оказался под столом?

rupert ★★★★★
()

В процессе разработки пет-проекта возникла необходимость слабать простенькую web-морду для железки на базе микро-контроллера.

О! Я тоже этим собираюсь заняться. Текущий опыт генерации кода на микропитоне для r pi pico с помощью deepseek - в целом очень положительный. Парсит картинки со (не сложными) схемами, пишет в основном вменяемый код, всё подробно объясняет, даже к каким пинам что подключать. Бывают ошибки, которые не сложно исправить. Когда-нибудь до вэб морды руки дойдут. Предыдущий опыт приделывания sqlite базы к сайту на html+css+php при помощи claude sonnet тоже был положительный, хотя я нифига не вэб погромист, всё заработало как надо с минимальными усилиями.

yvv1
()

Это потому, что ты не умеешь пользоваться ИИ, но выводы уже делаешь.

Я, кстати, тоже не умею, но успехов чуть больше. Вчера написал утилиту на go, принимает HTTP-запросы и логгирует их. Полностью с помощью claude code. Ушло $5 на API, я потратил два часа. Сам бы написал примерно за столько же, может даже чуть быстрей. Но результатом доволен. Сгенерированный код меня устроил.

Уверен, что мог бы справиться быстрей, но пока учусь.

Вот, если кому интересно.

package main

import (
	"fmt"
	"io"
	"log"
	"net/http"
	"os"
	"sync/atomic"
)

var requestCounter uint64
var serverPort string

func main() {
	port := os.Getenv("PORT")
	if port == "" {
		port = "8080"
	}
	serverPort = port

	logFileName := fmt.Sprintf("output_%s.log", port)
	logFile, err := os.OpenFile(logFileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		log.Fatalf("Failed to open log file: %v", err)
	}
	defer logFile.Close()

	multiWriter := io.MultiWriter(os.Stdout, logFile)
	log.SetOutput(multiWriter)

	log.Printf("HTTP sink server starting on port %s", port)
	if err := http.ListenAndServe(":"+port, http.HandlerFunc(sinkHandler)); err != nil {
		log.Fatalf("Server failed to start: %v", err)
	}
}

func sinkHandler(w http.ResponseWriter, r *http.Request) {
	requestID := atomic.AddUint64(&requestCounter, 1)
	log.Printf("[%d] %+q %+q", requestID, r.Method, r.RequestURI)
	
	for name, values := range r.Header {
		for _, value := range values {
			log.Printf("[%d] %+q: %+q", requestID, name, value)
		}
	}
	
	requestFileName := fmt.Sprintf("request_%s_%d", serverPort, requestID)
	requestFile, err := os.OpenFile(requestFileName, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
	if err != nil {
		log.Printf("[%d] Failed to create request file: %v", requestID, err)
	} else {
		log.Printf("[%d] Saving request body to %s", requestID, requestFileName)
	}
	defer requestFile.Close()
	
	buffer := make([]byte, 64)
	for {
		n, err := r.Body.Read(buffer)
		if n > 0 {
			log.Printf("[%d] %+q", requestID, string(buffer[:n]))
			if requestFile != nil {
				if _, writeErr := requestFile.Write(buffer[:n]); writeErr != nil {
					log.Printf("[%d] Failed to write to request file: %v", requestID, writeErr)
				}
			}
		}
		if err == io.EOF {
			break
		}
		if err != nil {
			log.Printf("[%d] Body read error: %v", requestID, err)
			break
		}
	}
	
	w.WriteHeader(http.StatusOK)
}

А вот git история, по которой видно все шаги: pastebin

vbr ★★★★★
()

он должен быть максимально натренирован именно под задачи кодинга

Не, у майкрософта нет своей LLM, у них партнерство с openAi (наверное в том числе в плане разрешения потрошить гитхаб), но можно выбрать модели openAi, anthropic и гугл. Вы бы указали конкретную модель, которая использовалась, в основном все зависит от нее.

goingUp ★★★★★
()

Хз, я, не далее как вчера, получил задачку показать табличку из БД через веб с некоторыми нюансами. Мне Алиса накостылила на Flask за пару-тройку промптов. Причём, рабочий вариант дала почти сразу, уточнения потребовались для того, чтобы красиво страничку оформить.

Alden ★★★★
()
Ответ на: комментарий от Alden

Кстати да, Алиса Яндексовна неплохо так с кодингом справляется :) Рабочий вариант реально за два-три прохода получается.

yars068 ★★★★★
()

Выбрал его потому что по логике он должен быть максимально натренирован именно под задачи кодинга, а не, скажем, психоанализа (как некоторые другие).

Там немного другая логика, заточен он может и под код, но главное требование, чтобы он минимум ресурсов расходовал при работе.

praseodim ★★★★★
()

Ты сделал мой день! 😁

sparkie ★★★★★
()
Ответ на: комментарий от bdrbt

Анекдот прикольный, только он джинн, а не джин. Джин — это напиток.

CrX ★★★★★
()
Ответ на: комментарий от yars068

Кстати да, Алиса Яндексовна неплохо так с кодингом справляется :) Рабочий вариант реально за два-три прохода получается.

Я прямо даже не ожидал, потому что обычно она – бедный родственник, а тут достойно справилась

Alden ★★★★
()
Ответ на: комментарий от Alden

Я прямо даже не ожидал, потому что обычно она – бедный родственник, а тут достойно справилась

Ну почему бедный родственник? Последние версии YandexGPT и GigaChat - модели класса ChatGPT-4, т.е. не самый топ, но и не устаревший хлам. Даже бенчмарки можно найти. А GPT-4 - дефолтная модель в микрософтовском copilot, который в тот самый гитхаб встроен.

yvv1
()
Ответ на: комментарий от yvv1

GPT4 в разных вариантах можно много где встретить, в том числе и на Яндексе, на duck.ai…

yars068 ★★★★★
()
Ответ на: комментарий от bdrbt

Отличная аналогия! Старый анекдот замечательно подходит в тему обсуждения запросов к ИИ!

anc ★★★★★
()
Ответ на: комментарий от Paka_RD

В таких ситуациях всегда вспоминается рассказ «Верный вопрос» от Шекли. - «чтобы задать верный вопрос, нужно знать бОльшую часть ответа».

Народное «Правильно сформулированный вопрос содержит бОльшую часть ответа» как-то приблизительно так.

anc ★★★★★
()
Ответ на: комментарий от rupert

Интересно, каким должен был быть запрос, чтобы теннис оказался под столом?

Место расположения тенниса тут не играет роли, в различных вариациях он может быть на столе, под столом, в шкафу, на шкафе, может вообще не указываться его местоположения.

anc ★★★★★
()
Ответ на: комментарий от yvv1

Предыдущий опыт приделывания sqlite базы к сайту на html+css+php при помощи claude sonnet тоже был положительный, хотя я нифига не вэб погромист, всё заработало как надо с минимальными усилиями.

А потом вам его поломают, используют «не по назначению» и сидеть будете Вы, а не ИИ.

anc ★★★★★
()

От читаю я эту тему и что вижу: «вэб» и «ИИ» для его производства. И вспоминаю, что наиболее часто ломаемое в этом мире это вэб, началось оно с появлением готовых фрэймворков и как следствие нахождения в них уязвимостей. Т.е. если до этого был индивидуальный подход к каждому сайту, то после стали в пром масштабах действовать. Вот после этого представляется картина, что на более других сайтегах обсуждают как ИИ помог поломать сайтики созданные ИИ...

anc ★★★★★
()

Мне гопота максимальный импакт выдает когда я название для функции или компонента прошу придумать. Именно с языком она отлично работает.
Разок реально помогла обновить легаси-какашку, по древней версии которой мне было лень искать документацию.
Какая-то сложная логика - ни разу не было успеха, всегда нужно было доделывать ключевые места, часто были регрессии, забывались важные требования итд.

vazgen05 ★★★
()
Ответ на: комментарий от vbr

Полностью с помощью claude code. Ушло $5 на API

Гопота номер пять тебе бы это сделала за рубль, а Диппик вообще бы за десять копеек отдался.

rupert ★★★★★
()
Ответ на: комментарий от rupert

Гопота номер пять тебе бы это сделала за рубль, а Диппик вообще бы за десять копеек отдался.

Я не доверяю дешёвым решениям. Умный человек за копейки работать не будет. С ИИ то же самое. За гопоту я вообще-то плачу $200 в месяц. И она мне реально помогает. Вот буквально 10 минут назад навела на решение проблемы с android ble API, который делали проклятые макаки.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от vbr

Это потому, что ты не умеешь пользоваться ИИ

Вчера написал утилиту на go, принимает HTTP-запросы и логгирует их.

Лучше бы ты палкой крапиву п**дил, ей-богу. Всем лучше, и мне, и ЛОРу, и тебе, и планете.

thesis ★★★★★
()

А так как на вебню у меня стойкая аллергия с риском летального исхода

Выяснилось, что бывают вещи похуже вебни, ага?

Вебня плоха раздутыми стандартами и мириадами макак. Но вебня несет много пользы и удобства, даже будучи отданной на откуп макакам.

А вот этот сраный «программирующий ИИ» - это уже какое-то абсолютное, совершенное зло, устройство по переработке энергии в мусор и страдания.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

абсолютное, совершенное зло, устройство по переработке энергии в мусор и страдания.

Это вы по своему опыту, или лорчик напел?)

goingUp ★★★★★
()
Ответ на: комментарий от thesis

ЛОРчик и другие напели.

Ну не все так плохо, как пишет лорчик. Лично мне уже поднадоело донкихотство по разоблачению всякой фигни, но тем, кто пишет эту фигню это не надоедает, потому что ее пишут, чтобы выпустить пар) Да, чет у народа бомбит от ИИ)

goingUp ★★★★★
()
Ответ на: комментарий от vbr

Плохо проработана легенда. Недостаточно.

thesis ★★★★★
()
Ответ на: комментарий от goingUp

Лично у меня бомбит от того, что истории успеха мне попадаются как на подбор в жанре «некомпетентный чувак смог вымолить у ИИ три экрана говнокода, который сто раз был написан ранее на куче языков и есть в открытом доступе». Или вообще не смог, см. топик.

thesis ★★★★★
()
Ответ на: комментарий от thesis

четыре чая за этот комментарий.

люди пытаются генератором бреда создать блоатварь для вебни. и ещё ожидают, что что-то вменяемое получится. мир веб-разработки скатился куда-то гораздо ниже плинтуса. и очень давно. я даже не уверена, остались ли там ещё вменяемые разработчики. потому что судя по видимым результатам и сетевому трафику там таковых нет совсем.

Iron_Bug ★★★★★
()
Ответ на: комментарий от vbr

Умный ИИ за копейки работать не будет.

А китайский будет. За миску риса.

rupert ★★★★★
()

так ты их разные пробуй
они не похожи, каждый со своими особенностями
может какой-то будет тебя понимать и делать как надо
а может и нет

для нормальной работы ИИ нужна, во-первых, вводная
человек, знаешь ли, без ТЗ тоже может только медную табличку со словом из трех букв запилить
а во-вторых если уж люди не телепаты, то железяки тем более
а в-третьих, что самое ужасное, они необучаемые
а в-четвертых память как у золотой рыбки
а в пятых они не понимают примерно нихрена

но если ты запасешься терпением и будешь водить этого дебила за ручку, то временами он будет весело угукать и даже радовать тебя внезапными прозрениями, и даже, может быть, результатами

olelookoe ★★★
()
Ответ на: комментарий от anc

как будто бы без электронного болванчика не могут поломать. Да и вообще, куда безопасники смотрели!)

Подумал что вот такая фигня прекрасное подспорье для использование внутри компании, например саппорту дать нормальную морду. На одной из работ клиентский саппорт по некоторым вопросам вынужден был мучаться с pl/sql developer и сильно ограниченными запросами в базу, а ща можно было бы сделать веб морду с ro учетной в базе и все были бы довольны

user_undefined ★★
()
Ответ на: комментарий от Iron_Bug

Меня пугает не только блотварный аспект, а то, что болваны хором твердят мантру про «ИИ это просто инструмент».

Хочется сказать каждому лично: «Нет, чувак, отныне инструмент - это ты, причем весьма тупой и легко заменяемый, просто ты этого еще не понял», но их же дохрена. Люди всерьез верят, что они теперь незаменимые спецы на основе умения кое-как разговаривать!!

Вот взять топик: такая полезная физкультурка для мозгов, как неглубокое погружение в незнакомую тему, заменяется на уламывание болвана путем уродования человеческой речи. Попробуй тут не отупей. И нет, тот факт, что ТСу таки пришлось занырнуть в код и пошевелить руками, не сильно меня греет. Я имел опыт сдачи переделанных чужих программ в универе, и точно помню, что чувство уверенности типа «я разобрался, как оно работает, значит, при случае сам напишу не хуже» - очень приятное, но абсолютно ложное.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

А вот этот сраный «программирующий ИИ» - это уже какое-то абсолютное, совершенное зло, устройство по переработке энергии в мусор и страдания.

Очень печально это читать от неглупых людей… Но это ваш выбор предмета слепого хейта.

К сожалению, голова человека это такая штука, что с ней сложно, и чем она лучше варит, тем становится сложнее.

James_Holden ★★★★★
()
Ответ на: комментарий от thesis

Я понял одно - что тема ИИ на этом форуме, по срачегонности и нездоровости становится в один ряд с темой танцпола.

Проще ее табуировать для себя и все.

James_Holden ★★★★★
()
Ответ на: комментарий от thesis

да проблема в том, что генератор бреда даже макаку заменить не может. от слова совсем. потому что у макаки какой-никакой, а всё-таки интеллект. пусть совсем слабенький, но присутствует. а генератор бреда - это просто генератор бреда. там интеллекта ноль. и использовать сгенерённый им мусор где либо - это стрельба себе даже не в ногу, а сразу контрольный выстрел себе в голову. как можно такое где-то использовать - я хз. это просто за гранью логики и нормального человеческого разума.

Iron_Bug ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)