Roman
Здравствуйте, подскажите, а удалённую работу на go джуниором реально найти?
а можно ли джуну вообще где либо найти удалёнку? мне кажется что это невозможно, потому-что работодателю сложно отследить твою деятельность и мотивацию
Daniel
на js можно, на них спрос ажиотажный
Roman
Джуну голенг думаю сложно
джун он и а фрике джун, это от языка особо не зависит
Anonymous
джун он и а фрике джун, это от языка особо не зависит
Еще как зависит, правильно подметил одмен
Anonymous
От востребованности зависит, а не от языка
Anonymous
Если точнее
Roman
ну хрен знает
Roman
может в России иначе, в Германии это практически невозможно
Anonymous
может в России иначе, в Германии это практически невозможно
В России можно работать не только на российскую компанию, как и в Германии, если что
Anonymous
Но это не точно насчет Германии
Roman
В России можно работать не только на российскую компанию, как и в Германии, если что
в Германии работая на иностранную контору всё-равно шанс маленький даже не-джуну на удалёнку устроиться.
Roman
имеется ввиду конторы с представительством в Германии
Aleksander baltazor
Здравствуйте. Кто то наблюдал снижение скорости вызова функции time.Now() в версии go 1.11?
Aleksander baltazor
после обновления Go с версии 1.10 до версии 1.11 проект стал кушать процессора в 2 раза больше
Aleksander baltazor
По pprof на 2 месте по потреблению процессора - time.Now
Roman
https://github.com/golang/go/issues/22876 тоже предлагает implicit conversion from mutable to immutable
Roman
но я по прежнему не уверен хорошо ли это
Dmitry
Мейк фейл, символичненько
Опечатка по гейтсу
Bogdan (SirEdvin)
runtime производительность, память, многопоточность, отсутствие compile-time гарантий.
Это все меркнет перед удобством. Ну и очень сильная потеря скорости разработки, потому что вместо dsl, который обычно довольно прост, надо будет учить го. А еще в го система типов прямо кремень по сравнению с скриптовыми языками.
Bogdan (SirEdvin)
А садить девов игру скриптовать, ну такое)
Bogdan (SirEdvin)
Стоит так же помнить, что большинство тормозов в игре от движка и нехватке времени на оптимизацию, а не от скриповых языков.
🏁Александр
хмхм
🏁Александр
я тут думаю, а не сделать ли у хедлера еще один метод register куда скормить экземляр роутаера
🏁Александр
что бы регистрировать "не отходя от кассы"
Мерль
Все видосы с GopherCon 2018 https://www.youtube.com/playlist?list=PL2ntRZ1ySWBdatAqf-2_125H4sGzaWngM
🏁Александр
@onokonem мне бы конечно интересно было ваше мнение по этому вопросу
Aleksandr
что бы регистрировать "не отходя от кассы"
что ты там регистрировать собрался?
Daniel
не дал себе труда, если честно
🏁Александр
type MyHandler struct { ... } func (h *MyHandler) RegisterRoute(router *httprouter.Router) { router.GET("/users", h.Collection) router.GET("/users/:GUID", h.Get) }
Aleksandr
это подроуты будут или как?
🏁Александр
в main: router := httprouter.New() myHandler := handlers.NewMyHandler(...) myHandler.RegisterRoute(router)
🏁Александр
тобишь вообще изюавиться от регистрации в main
Aleksandr
что-то странное
🏁Александр
ну просто "полотно" из 50 строк на регистрацию
🏁Александр
такое себе
🏁Александр
(когда очень много мелких хедлеров)
Daniel
зато все очевидно
Daniel
я бы оставил полотно
🏁Александр
я хотел хотя бы CRUD туда завернуть
🏁Александр
что бы не мешался
Aleksandr
ну сделай так хотя бы: router := httprouter.New() module.RegisterRoutes(router) хэндлер то зачем этим занимается?
🏁Александр
а что за модуль то?
Aleksandr
просто. функция
Aleksandr
конфигурирующая роутер
🏁Александр
ну просто тогда полотно перекочует просто в другое место
Aleksandr
ну просто тогда полотно перекочует просто в другое место
так ты с этого начал. оно у тебя перекочевало в хэндлер
Daniel
неееее
🏁Александр
в КАЖДЫЙ из хедлеров по 3-4 строчки
Aleksandr
не, я вас не понимаю
Daniel
теперь это уже не полотно, а клочки его
Aleksandr
у меня есть роутер, есть 30 эндпойнтов. чего где у меня в каждом будет? 30 хэндлеров
🏁Александр
Aleksandr
если у тебя проект на модули по бизнес-задачам разбит, сделай несколько registerRoutes например
🏁Александр
router := httprouter.New() myHandler := handlers.NewMyHandler(...) myHandler.RegisterRoute(router) myHandlerTwo := handlers.NewMyHandlerTwo(...) myHandlerTwo.RegisterRoute(router)
🏁Александр
ну я так и хотел
Aleksandr
ну да. но только не хэндлеры это должны делать
🏁Александр
ну там вся регистрация это три строчки
🏁Александр
можно конечно фабрику сделать еще одну
Aleksandr
ну там вся регистрация это три строчки
да причем тут кол-во строчек? семантику соблюдай и все.
Aleksandr
router := httprouter.New() module1.RegisterRoutes(router) module2.RegisterRoutes(router) module3.RegisterRoutes(router) module4.RegisterRoutes(router)
🏁Александр
у меня хедлеры в одном пакете все
🏁Александр
я их просто по файлами внутри разбил
Aleksandr
тогда возвращаемся сюда
Aleksandr
ну сделай так хотя бы: router := httprouter.New() module.RegisterRoutes(router) хэндлер то зачем этим занимается?
🏁Александр
ну я просто не придумал куда впихнуть
🏁Александр
если делать на уровне пакета- будет полотно
🏁Александр
потом забываешь поправить полотно когда в хедлеры что-то добавил
🏁Александр
начинается жесть
🏁Александр
да и main хотелось бы в три строчки уместить
Roman
@onokonem https://github.com/romshark/Go-2-Proposal---Immutability#3-immutability-by-default-go--2x как-то так
Илья
ноу, сенкью, серьезно, нет, не надо так
Roman
ноу, сенкью, серьезно, нет, не надо так
1. либо постоянно писать много const 2. либо постоянно писать мало mut 3. либо постоянно писать много много копирования и for циклов 4. либо постоянно резаться об острое лезвие pointer aliasing'а выбирайте сами, я выберу 1 в случае Go 1, в Go 2 я выберу 2
Илья
какая же это обратная совместимость то? весь код полетит в ад, и дальше осталось только дойти до copy on write, чтобы вообще никто уже ничего не понял
Roman
какая же это обратная совместимость то? весь код полетит в ад, и дальше осталось только дойти до copy on write, чтобы вообще никто уже ничего не понял
с const обратная совместимость гарантирована, он может быть добавлен в Go 1.x без последствий с mut - нет, это возможно только с кардинально новым подходом в теоретическом Go 2.x
Илья
я мельком видел вашу войну за иммутабельность, даже теоретически понимаю, где это поможет (допустим передача аргументов в интерфейс отправляет их на хип, тк кто знает, то там в интерфейсе будет, с конст станет лучше), но by default == плохая идея