ch
Feedback
dev notes

dev notes

前往频道在 Telegram

Пишу про Go, Vim, и про то, как я медленно ползу в сторону FAANG. Веду @digest_golang С предложениями: @junsenpub

显示更多
1 396
订阅者
无数据24 小时
-37
-730

数据加载中...

吸引订阅者
六月 '26
六月 '260
在0个频道中
五月 '26
+1
在0个频道中
Get PRO
四月 '26
+4
在0个频道中
Get PRO
三月 '26
+3
在0个频道中
Get PRO
二月 '26
+2
在0个频道中
Get PRO
一月 '26
+8
在0个频道中
Get PRO
十二月 '25
+4
在0个频道中
Get PRO
十一月 '25
+62
在0个频道中
Get PRO
十月 '25
+20
在0个频道中
Get PRO
九月 '25
+2
在0个频道中
Get PRO
八月 '25
+2
在0个频道中
Get PRO
七月 '25
+3
在0个频道中
Get PRO
六月 '25
+2
在0个频道中
Get PRO
五月 '25
+8
在0个频道中
Get PRO
四月 '25
+5
在0个频道中
Get PRO
三月 '25
+16
在0个频道中
Get PRO
二月 '25
+3
在0个频道中
Get PRO
一月 '250
在0个频道中
Get PRO
十二月 '240
在0个频道中
Get PRO
十一月 '240
在0个频道中
Get PRO
十月 '240
在0个频道中
Get PRO
九月 '240
在0个频道中
Get PRO
八月 '240
在0个频道中
Get PRO
七月 '240
在0个频道中
Get PRO
六月 '240
在0个频道中
Get PRO
五月 '240
在0个频道中
Get PRO
四月 '240
在0个频道中
Get PRO
三月 '240
在0个频道中
Get PRO
二月 '240
在0个频道中
Get PRO
一月 '240
在0个频道中
Get PRO
十二月 '230
在0个频道中
Get PRO
十一月 '230
在0个频道中
Get PRO
十月 '230
在0个频道中
Get PRO
九月 '230
在0个频道中
Get PRO
八月 '230
在0个频道中
Get PRO
七月 '230
在0个频道中
Get PRO
六月 '23
+2
在0个频道中
Get PRO
五月 '23
+4
在0个频道中
Get PRO
四月 '23
+1
在0个频道中
Get PRO
三月 '23
+3
在0个频道中
Get PRO
二月 '23
+2
在0个频道中
Get PRO
一月 '23
+1
在0个频道中
Get PRO
十二月 '22
+5
在0个频道中
Get PRO
十一月 '22
+9
在0个频道中
Get PRO
十月 '22
+3
在0个频道中
Get PRO
九月 '22
+2
在0个频道中
Get PRO
八月 '22
+5
在0个频道中
Get PRO
七月 '22
+7
在0个频道中
Get PRO
六月 '220
在0个频道中
Get PRO
五月 '220
在0个频道中
Get PRO
四月 '22
+7
在0个频道中
Get PRO
三月 '22
+7
在0个频道中
Get PRO
二月 '22
+5
在0个频道中
Get PRO
一月 '22
+150
在0个频道中
Get PRO
十二月 '21
+3
在0个频道中
Get PRO
十一月 '21
+2
在0个频道中
Get PRO
十月 '21
+5
在0个频道中
Get PRO
九月 '21
+12
在0个频道中
Get PRO
八月 '21
+9
在0个频道中
Get PRO
七月 '21
+9
在0个频道中
Get PRO
六月 '21
+2
在0个频道中
Get PRO
五月 '21
+4
在0个频道中
Get PRO
四月 '21
+6
在0个频道中
Get PRO
三月 '21
+5
在0个频道中
Get PRO
二月 '21
+8
在0个频道中
Get PRO
一月 '21
+11
在0个频道中
Get PRO
十二月 '20
+2 634
在0个频道中
日期
订阅者增长
提及
频道
11 六月0
10 六月0
09 六月0
08 六月0
07 六月0
06 六月0
05 六月0
04 六月0
03 六月0
02 六月0
01 六月0
频道帖子
LLM, конечно, страшные вещи делает. Купил подписку на google, включающую помимо всего прочего расширенные лимиты для antigravity, и решил набросать небольшой проектик, где на фронте будет отображаться большая 2D карта мира с разной красивой анимацией. Первым промптом gemini развернул мне backend на go и frontend на react, и набросал базовую версию. Запускаю, открываю браузер - карта вывелась, но анимации на основе данных с бэка нет. Второй промпт: запусти агента, который в визуальном режиме поймет в чем проблема и поправит ее. Antigravity открывает окно хрома, начинает ползать указателем по интерфейсу, выгребать DOM, после чего вносит пачку правок. Проверяю - все работает. Затем еще переключил модель на Claude Opus и тот делает ревью и правит баги, и только потом я иду читать код. В целом - мне особо придраться не к чему, все написано красиво, и главное - все завелось за 30 минут. Думаю в течении пары недель допилю проектик и, помимо прочего, поделюсь тут ссылкой, там должно быть интересно. А с агентами, которые визуально умеют понимать, что происходит (конечно, никто там ничего визуально не понимает - они просто ходят по DOM и тыкают в js, но все же) - отрыв башки. Знаете, кстати, что еще заметил, пока ходил по собесам и разгребал вакансии? Многие компании, которые раньше нанимали фронтов - теперь нанимают fullstack разрабов в лучшем случае, и даже моя перешла к такой политике несколько месяцев назад. Чисто фронтовых позиций стало в разы меньше. Рынок меняется, и меняется несколько быстрее, чем многие предполагали.

2
Тут две недели назад приняли пропозал в Go от Robert Griesemer - это, на минуточку, один из создателей языка. Пропозал добавляет возможность объявлять типы-параметры у дженерик-методов, а не только у структур и обычных функций. На простом примере: допустим, есть у нас структура ответа c дженерик-типом: type Response[T any] struct { Data T Err error } И получая ответ для типа User, мы хотим его замапить в другой тип - UserDTO. Если ты не знаком с дженериками, то интуитивно хочется сделать что-то такое: func (Response[T]) Map[U any] funcname... Но так сделать нельзя. Сейчас Go позволяет на структуру навешивать методы только с тем типом, который определен для структуры. Чтобы решить проблему с маппером выше сейчас нужно определять глобальную функцию: func MapResponse[T any, U any](r Response[T], f func(T) U) Response[U] { if r.Err != nil { return Response[U]{Err: r.Err} } return Response[U]{Data: f(r.Data)} } и вызывать ее потом следующим образом: resp := GetUserFromDB(1) dtoResp := MapResponse(resp, func(u User) UserDTO { return UserDTO{Name: u.Name} }) Когда пропозал завезут в новую версию, дженерик-структуры получат возможность навешивать методы с собственными параметрами: type Response[T any] struct { Data T Err error } func (r Response[T]) Map[U any](f func(T) U) Response[U] { if r.Err != nil { return Response[U]{Err: r.Err} } return Response[U]{Data: f(r.Data)} } // использование: dtoResp := GetUserFromDB(1).Map(func(u User) UserDTO { return UserDTO{Name: u.Name} }) Куда это красиво ляжет? Например, на обработку коллекций или потоков данных. Можно будет использовать цепочку вызовов: mySlice.Map(transform).Filter(check).Collect() В целом, после первичной стадии отторжения дженериков пару лет назад - я плавно перешел в стадию их принятия, особенно когда на работе появился проект, где мы их начали использовать. Сейчас же, когда их использование стало совсем привычной вещью - этот пропозал выглядит очень полезным и явно двигает систему дженериков в Go в нужную сторону.
0