Обновить
11
Виктор Куприянов@vkomp

Fullstack + Golang-разработчик

3
Подписчики
Отправить сообщение

Давно гоняю json-чики, и есть имхо по теме:
1. В json всегда кладу структуры с тегами, вместо map[string]any. И в проекте есть строго одно место где формирую map[string]any - и это не про json, а потом вставляю в html-шаблон. Еще можно парсить данные из бд в мапу - sqlx. Но зачем?! Кроме того, структуру можно подшить в доку openApi. То есть пример с мапой считаю вредным. Разве что полезно знать, что мапу тоже можно сериализовать...
2. В моем net/http сначала надо писать данные, а потом писать 200 OK. Иначе браузер закончит промис, не прочитав данные. Но эта тема не по свежим следам, просто пишу, что порядок важен.
3. Понимаю, что пример с "pages" - это способ натянуть сову на глобус, но почему так сложно вместо `[]byte(fmt.Sprintf("%s pages", pages))`?!

Впечатление от статьи, что автор ждет комментариев. И вот наследю.
Конкретно наблюдаю наброс на "перфекционизм" - профессионалы задрачивают на долю процента. То же самое в профессиональном спорте - доля секунды решает всё, а обывателям ход на минуты. И такой перфекционизм выставляется нездоровым по психологии. Ему противопоставляется норма - обывательское "а мне больше и не надо".
Но вспомним другое значение слова "перфекционизм", на этот раз из философии - https://ru.wikipedia.org/wiki/Перфекционизм_(философия)
И как-то красок в руке становится больше одной!

Я топлю за tailwind + ui-radix/primitives => свой kit. Но по скорости это скорее неторопливо, потому что в kit влезаю, когда тошнит от бэкенда.
Начинал со стилей в ms word и css в dreamweaver. На современном react юзал bootstrap, но без компонентов - всырую шпаклевал классами из bootstrap. В принципе работало. Потом последовательно узнал shadcn, radix-ui и tailwind. На этом этапе уже понял, что tailwind мне по душе. И нравились radix-ui/themes, но они плюсут свой контекст css-классов, и у меня продукт включает два набора css, что заметно полнит. Сейчас выпиливаю themes, оставляю tailwind+redix-ui/primitives по примеру shadcn.
Длиннющие перечни классов tailwind лечатся переносом строк "x "+"y" или cn(...), которая join'ит строки. Пример посмотрите в shadcn.
И еще там же есть cva(), которая позволяет пропсами настраивать компоненты - а логика из primitives.

Обработка ошибки в враппере - интуитивно понятный подход, я тоже так делаю, хоть и через структуру в контексте - кроме 200 бывает 204, и обрабатываю случай, когда закомментил логику в обработчике. Тогда выбрасываю 418.
А вот добавление ошибки к сигнатуре `func (w,r)` - тупиковый путь, ИМХО. Хотя бы потому, что сильно ломается совместимость, и появляются новые костыли. И мне очень нравится оригинальная сигнатура без ошибки - она СИЛЬНО отличает код http-обработчика от обычного модуля. Подробнее писал здесь: https://habr.com/ru/articles/901938/
Вкратце: обработчику доступны разные http-коды, бизнес-логика знает только error. И выходит, что какой-то слой должен отделять мух от котлет - мне зашло оставить в обработчике, теперь "умный обработчик" знает часть логики (статья об этом).
Были возражения типа "этот слой не для этого". Здесь наверно надо определить термины. Выделяю http-слой, который реально транспорт и легко заменяется шиной данных. А есть http-слой, который обслуживает web-клиент со своей логикой и ресурсами, и который никогда не будет принимать данные из других протоколов. Это две большие разницы!

Да. Видел "сетевую папку". Поторопился с выводом ;)

либра работает, иногда запускаю, чтобы поплакать. Но если я и 20 лет назад уже в VBA залезал, и групповые операции юзал, то это глубоко вшито. Потому пока запускаю мс-офис.
Наверно, про aimp 2 версии - я 3-ей давно пользуюсь. Переключаюсь из фонотеки в плейлисты один раз - все настройки.
Выше уже ссылку дали, консоль и gui к нему. Что было логично - я поверхностно посмотрел по типу винды, и в этом была ошибка.
Утилит полно, все не узнать. ЖПТ хорошо подсказывает с линуксом

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

Юзал WSL точно больше года, и очень хотел нормальный линукс:
- ДВЕ файловых системы, и когда ставишь что-то новое, то иногда не понимаешь, где и какие файлы лежат.
- проблемы с разными видами русской win-кодировки умножаются, что стреляет редко, но метко.
- потихоньку накапливается ДВЕ системы без четкой границы, и начинаешь жить по принципу "работает - не трогай", что неприемлемо, когда хочется "пошатать", почистив "ненужные" файлы.
Основной проблемой является то, что это уже Линукс в руках того, кто хочет пользоваться и знает только Винду. Сейчас я полгода на Линуксе, и до этого 10 админил VDS:
- жить норм. Перешел на переключение раскладки по CapsLock и уже неудобно в Винде.
- dev-инструменты работают очень четко. Нет никакого желания вернуться в винду для разработки!
- не привык к LibreOffice, и жду когда aimp сделают кроссплатформенным (под wine не торт). При переключении в винду кайфую от FarManager - здесь он тоже не торт. И скучаю по ImageViewer.
И все равно переключаюсь в Винду, потому что офис от мелкомягких - это эталон. И еще есть лайтрум с фотошопом. Дополнительно держу VirtualBox для мелких вопросов. Винда и Линукс на разных разделах одного ssd - это танцы с бубном. За полгода надоело, едет второй ssd.
И мне очень не нравилась верхняя строка убунты, поставил Panel-to-Dash - жить резко приятнее.

З.Ы. в Линуксе нет синхронизации папки Яндекс.Диска и Гугла, но можно прикольно монтировать удаленные хранилища. Например, замонтировал продуктовое s3-хранилище, и шаришь по файлам как на домашнем компе.

Я юзаю ":id" в реакт-роутере. Поднимаю из useParams. Но вот нифига не понимаю, зачем это на беке. В статье под "входящие данные" более многословно расписано, что это лишнее. Выглядит эффектно, но... и всё!

Верю, а зачем?! Ну будет /v1/users/123 или /v1/users/58f65b99-7a61-43ca-87f0-d0ae3359728e - реально удобно пользоваться?

Согласен. У всех решений есть границы. Я точно не буду двигать собственное как единственное. Валидатор v10 описан неявно в параграфе "входящие данные" - юзается после парсинга. Не наблюдаю сложностей прикрутить swagger, не писал про него. Хотя, пожалуй, в теме про API стоило бы. Тут аргумент, что это будет статья о людях в команде, а не про http-обработчик.

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

В статье описываю более подробно как "/users/:id кардинально упрощают жизнь" ;) Если коротко, то не упрощают, а перекидывают головняк на фронтенд - у него запрлата меньше, потому их можно взять больше - "по рублю за пучок".

Нормально вы так накинули. Я даже с ходу не могу понять, от чего отбиваться.
1. Я топлю за голый http/net + обертки.
2. Я видел обработчики, где вообще входящие данные не валидируются. CORS сейчас сложно не юзать, у меня мидлваря для этого. Компромиссы везде! Потому сплю спокойно.
3. REST и API-дока - две разные темы. Здесь критикую только пути "а-ля REST".

Люблю я это дело... иначе как пялиться в них из года в год!

Согласен. Поэтому я не привожу свой личный код хелперов, а только сигнатуру. В целом, я на стороне их использования, потому что свой локальный код всегда проще, чем внешняя зависимость.

То есть вам сначала накосячили, не хотят исправлять. И вы всё равно требуете исполнения, чтобы... они снова накосячили, боюсь спросить?!
Косячат все, но опытные знают где можно оступиться, и как подстраховаться.

Не наблюдаю противоречия. Мой тезис, что он не для всех задач. А такие призывы присутствуют.

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

Да. Вот прямо да! Во-первых, то была первая цифромыльница. Техническое совершенство не стоит на месте. Сотню лет назад народ не знал про RAW, но как-то жил и не тужил. Через сколько-то лет появится новый формат, который лучше сегодняшнего. Но пленка с зерном находит себе место и сейчас.
Во-вторых, уровень вкуса потребителей тоже важен. Мне нравятся десятки из моих фоток, но их не сделать без тысяч других - последние не мусор, а добавляют ценности в истории. И вот тут всплывает, что большинству реально не нужны идеальные снимки. Это про практику.
Заострю момент - "большинству не нужны" в смысле, что чел хочет идеальную фотку - но дождется ли вообще!
Восприятие фотки мало зависит от глубины проработки ворсинок на одежде. Париться по цветопередаче, когда у всех разное зрение, разные мониторы или мобилки - ну это точно не для меня.
Потому я сосредотачиваюсь, чтобы процесс приносил больше энергии, чем забирал - это основной критерий выбора технологий.

Вы были категоричны в своих словах, что неприемлемо для конструктивного столкновения разных точек зрения. Вы красиво описываете свою позицию, но не оставляете места для других. Потому я также резковато ответил, что по количеству jpeg-файлы сильно превышает количество raw-файлов.
А так да, raw предоставляет больше возможностей чем jpeg. Но это недешевое, и не всем надо - типа на крузаке в булошную, а на матизе не комильфо.

Ситуация, когда клиент учит как работать... как бы это без мата - чуть реже чем ежегодно! Пипец, как выбешивают эти "я клиент, ты мне должен". Но всё заглаживают хорошие заказчики - и их больше!

Информация

В рейтинге
6 046-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность