Сергей Горностаев, У меня по поводу программирования очень непопулярное мнение.
Есть ровно два типа программистов:
- "Академики", которые пишут языки программирования, компиляторы, и даже некоторые, кто пишет операционные системы. Сюда же можно прилепить и математиков, пишущих код для LLM. Хорошо бы в эту категорию ещё бы входили люди, пишущие инструменты для программистов, но сегодня там тоже вайбкодят, что плохо.
- И "сантехники" - все остальные программисты, которые часто забывают, что главная их функция - это всего-лишь решать проблемы бизнеса, а не вылизывать код на Haskell до ослепительного блеска абсолютной корректности и идемпотентности даже в случае прямого удара ядерной ракеты в сервер где программа работает. А бизнесу скорость выхода на рынок гораздо важнее правильности программы. Потому что всё то время пока программа не на рынке, деньги от неё в кошелёк не падают.
"Искусственный интеллект" - потрясающий инструмент для того, чтобы приносить пользу бизнесу. Если им уметь пользоваться. Поэтому изучать надо сразу и программирование, и работу с искусственным интеллектом. Для того чтобы не впасть в психоз, и не стать слепо доверять всему, что пишет LLM, надо подумать о дисциплине и в моменты изучения именно языка программирования применять LLM только для проверки своего кода. Ведь когда изучаешь программирование в качестве Джуна в какой-то конторе, то Сеньоры всегда тебе помогают, делают замечания, подсказки. Когда только начинаешь изучать программирование, в качестве такого сеньора можно использовать LLM.
Сергей Горностаев, Ну так а что это меняет? Останется какое-то количество людей, разбирающихся в низком уровне, которые будут по контракту заниматься оптимизацией супер-нагруженных участков архитектуры. Но сейчас для абсолютного большинства компаний и проектов гораздо проще, быстрее и дешевле завалить всё облачным "железом". А вот когда наша компания станет фейсбуком, вот тогда и понадобится такой редкий дорогущий специалист
Иван Васильев, Нельзя всё перекладывать на фронт. Программисты очень часто забывают, что подавляющее количество людей пользуется смартфонами для взаимодействия с интернетом. В результате получается монстр, который еле ворочается на мобильных устройствах, вызывая негативную реакцию пользователя, что в итоге уменьшает продажи.
Бэк хорошо скейлится, можно сделать агрессивное хеширование. Завалить железом, поднять зеркала в регионах ближе к пользователю географически. Это может значительно сократить все проблемы, связанные с server-side rendering.
Цепочка без SSR: бэк сериализует данные в JSON, фронт получает JSON, десериализует данные в объекты, сохраняет в память/кэш, реактивно обновляет виртуальный DOM, определяет изменённые части страницы, перерендерит их...
Цепочка с SSR: бэк сериализует данные сразу в HTML (те же затраты ресурсов, что и JSON). Фронт берёт этот HTML и сразу обновляет часть страницы, к которой этот HTML относится. ВСЁ!!! Такие библиотеки, как HTMX и Datastar делают это невероятно простой задачей. Причем HTML можно слать и через Websocket! Ничего этому не мешает! Datastar, например, использует SSE для этого.
to_east, Не пытайтесь писать на Питоне в Go :)
Вы снова не пишете. КАКУЮ проблему решаете, а пишете, КАК вы решаете эту загадочную проблему. Точнее, как бы вы решали эту проблему на Питоне.
Go - это язык, который по рукам бьёт за излишнее усложнение. Проблема Питона в том, что там стандартные языковые конструкции гораздо медленнее, чем библиотечные функциональные штучки. Я даже помню рекомендацию никогда не использовать цикл for на питоне, потому что он тормознутый как черепаха.
В Go же, наоборот, приветствуется использование самых простых базовых конструкций языка над всякой хитрой функциональщиной, потому что циклы в Go просто молниеносные.
Используйте просто цикл, просто if или switch и вы увидите, что код стал намного понятнее. Поймите, вам на самом деле не нужно использовать редьюсер, чтобы получить требуемую функцию из коллекции функций, а вам нужно решить какую-то конкретную задачу бизнеса: из каких-то данных на входе получить какие-то данные на выходе.
А что вы хотите сделать? Какую проблему решаете? Потому что способы сложить эти функции в слайс есть, но при имспользовании всё равно придётся выводить типы. По-моему, и проще и лучше будет использовать функции напрямую, а вызывать нужную из них через switch в зависимости от типа аргумента
Константин Б., Народ приучают к тому, что начальство может делать что угодно, не имея никаких законных оснований. Один европейский руководитель с маленькими усиками делал точно так же в середине прошлого века.
Они делают, что хотят. Без решений суда, без законных оснований. Поэтому вы не можете быть уверенными ни в чём. Вот с такой точки зрения и надо принимать решение
Refguser, Идея в том, что нужно использовать самое популярное и распространённое решение, чтобы потом не было больно. И очень многие этого не понимают, даже когда всё рассусоливать, используя много буков. И потом страдают в поисках специалиста.
Движок очень важен. Потому что если вам очень квалифицированный специалист сделает самописный движок, а через год вам надо будет делать какие-то изменения, то вы попадаете в зависимость от этого специалиста, от его планов и новых расценок. Остальные либо не возьмутся за такую работу, либо запросят большие деньги.
Поэтому, выбирайте только самые распространенные движки, специалистов по которым вы найдете в любой подворотне.
Беспроигрышный вариант - WooCommerce. WordPress занимает половину рынка CMS.
Я взял себе китайский мини-комп с пассивным охлаждением, установил на него Proxmox, роутер, Home Assistant, Adguard, пару виртуалок для работы, и всё это на 16 gb RAM.
Anton3232, Вы и папку из которой билдить программу, и куда ложить экзешник, всегда можете указать в параметрах go build.
Чтобы вы не страдали в этой операционной системе для геймеров и вирусов, я вам рекомендую установить WSL (Windows Subsystem for Linux), изучить хотя бы минимальную базу по Линуксу, и запускать команды как все нормальные люди. По-моему, новый терминал в Винде, да и сами редакторы кода поддерживают WSL. Посмотрите видосы на ютубе, как это сделать, там полно их. Дело в том, что на последнем этапе собрать экзешник для Винды будет проще, чем страдать вот так, спотыкаясь на каждом шагу.
А когда будете в Линуксе в WSL, вы сможете создать в корне проекта файл Makefile и там прописать все длинные команды в виде шорткатов. И сможете сами себе создать шорткат make todo-list, который будет запускать команду go build с кучей опций.
P.S. По-моему, какая-то пародия на команду make есть где-то и для Винды. Но это не точно.
Алексей Уколов, С другой стороны, если оно слишком быстро отработает, то мы снова столкнёмся с этой проблемой. Если у автора проблема именно с повторяющимися запросами, то лучше пусть эти 10 секунд так и пройдут, и Redis сам удалит ключ. В этом случае лучше озаботиться генерацией вот этого самого уникального ключа, чтобы он отлавливал именно те запросы, которые точно дубли с точки зрения автора, и пропускал другие. А для этого не стоит удалять ключ в случае успеха.
Зато в случае ошибки как раз и надо удалить ключ, ведь ошибка может быть вызвана не только неверными данными, но и сбоем сети и т.д. И тут ждать 10с будет неверно.
Есть ровно два типа программистов:
- "Академики", которые пишут языки программирования, компиляторы, и даже некоторые, кто пишет операционные системы. Сюда же можно прилепить и математиков, пишущих код для LLM. Хорошо бы в эту категорию ещё бы входили люди, пишущие инструменты для программистов, но сегодня там тоже вайбкодят, что плохо.
- И "сантехники" - все остальные программисты, которые часто забывают, что главная их функция - это всего-лишь решать проблемы бизнеса, а не вылизывать код на Haskell до ослепительного блеска абсолютной корректности и идемпотентности даже в случае прямого удара ядерной ракеты в сервер где программа работает. А бизнесу скорость выхода на рынок гораздо важнее правильности программы. Потому что всё то время пока программа не на рынке, деньги от неё в кошелёк не падают.
"Искусственный интеллект" - потрясающий инструмент для того, чтобы приносить пользу бизнесу. Если им уметь пользоваться. Поэтому изучать надо сразу и программирование, и работу с искусственным интеллектом. Для того чтобы не впасть в психоз, и не стать слепо доверять всему, что пишет LLM, надо подумать о дисциплине и в моменты изучения именно языка программирования применять LLM только для проверки своего кода. Ведь когда изучаешь программирование в качестве Джуна в какой-то конторе, то Сеньоры всегда тебе помогают, делают замечания, подсказки. Когда только начинаешь изучать программирование, в качестве такого сеньора можно использовать LLM.