Eugene
Почему?
Оторванность от повседневных задач, по сути искуственная фигня. Которая мало что показывает
🦧
Оторванность от повседневных задач, по сути искуственная фигня. Которая мало что показывает
Как минимум, способность кандидата в голове отдебажить пять с половиной строк кода
Eugene
слабое утверждение
🦧
Почему? Видно, как человек вообще оперирует базовыми структурами, а не просто знаком с теорией. Недавно проводил собеседование, кандидат оч хорошо рассказывал про синхронизацию, а добавить вг в обычный цикл так и не смог
🦧
Так хотя бы видно, что человек хотя бы работал с кодом и использовал на деле структуры
Eugene
Сколько людей, столько и мнений. Хочешь посмотреть как пишет человек — зайди на его гит
🦧
А вот это как раз не показатель)
Eugene
Максимум на собесе давать SQL запрос написать
🦧
Человек может сидеть копипастить из разных проектов и пушить к себе в гитик
Akim
По лайвкоду можно в принципе понять как человек подходит к решению задач. Хороший пример: дать изначально не до конца сформулированную задачу и ждать будет ли кандидат уточнять требования. Если он решил задачу с неясными требованиями, додумав что то от себя, может быть красным флажком
🦧
По лайвкоду можно в принципе понять как человек подходит к решению задач. Хороший пример: дать изначально не до конца сформулированную задачу и ждать будет ли кандидат уточнять требования. Если он решил задачу с неясными требованиями, додумав что то от себя, может быть красным флажком
Именно. Тут можно смотреть и продуктовый подход, решил ли в лоб или в начале спросил исходные данные, чтобы обработать все корнеркейсы. Это показывает, в целом, подойдет ли человек. Будет ли он просто в лоб решать или будет думать о бизнесе
Akim
Еще если в проекте важна производительность, то будет полезно дать кусок кода и предложить его оптимизировать, попутно слушая его рассуждения и выводы
🦧
🥲
A
Всем привет! у меня сложности с пакетами. Постоянно возникают циклические импорты.. Например, у меня есть два паркета: 1. logger содержит в себе структуру и методы логгера. и уровни логов Константы (LOG_LEVEL_ERROR, и т.д.). один из методов логгера - pushHandler - который на вхол принимает хендлер - из второго паркета handler. 2. handler содержит в себе структуру хендлера и его методы. методы хендлеров могут принимать в аргументы уровни логов из первого пакета - logger. После чего, если я хочу создать объект хендлера, то получается циклический импорт. Не понимаю, что делаю не так? Вроде архитектурно - все логично...
Akim
Звучит как один пакет, т.к. сильно связаны сущности между собой
A
А зачем тебе циклично в логи хэндлер в хэндлер уровни передавать?
это популярная реализация логгера. например есть реализация на php. суть в том, что логгер может принимать хендлеры. да, логгер про хендлер ничего не знает, а лишь в аргументах своих методов, например в методе pushHandler(h handler.HandlerInterface) имеет интерфейс. а сами хендлеры могут принимать уровни логирования. уровни логирования описаны там, где им место - в пакете логгера.
Артем
Чет я честно не понимаю зачем в логгер хэндлеры отдавать, где почитать про это?
A
например один логгер может иметь несколько хендлеров, один пишет в файл ошибки уровня debug второй шлет уведемления в телегу при ошибких уровня error
Артем
Ну если я правильно понимаю то для уровней отдельный тут пакет, level
Akim
Если ты пишешь CustomHandler, то логгер стаф и интерфейс для CustomHandler в пакете логгер. Отдельно у тебя пакет custom-handler, который реализует интерфейс ICustomHandler из logger. То есть pushHandler принимает на вход только интерфейс из своего пакета
Yegor
Сколько людей, столько и мнений. Хочешь посмотреть как пишет человек — зайди на его гит
Ну у меня там помойка , но можно наблюдать как качество кода растет
Yegor
А на Хабр карьере есть которые сразу тестовое дают прям в вакансии?
Yegor
и такие бывают
А есть ссылки?
Артемий
например вот https://career.habr.com/vacancies/1000108633
Артемий
сейчас на Go не набирают, но есть тестовое
Александр
Х
Maks
Парни. Подскажите как лучше сделать страницу в гите с полезностяпи
Maks
типо сниппетом?
Maks
я хочу туда вынести туда алиас для композера
Maks
и другие плюшки
Maks
кстати в пхпшторм когда ты говоришь что у тебя интерпритатор внутри докер-комозера и стоит последняя версия докера - он ругается что не может найти docker-compose команду, потому что она теперь docker compose
Andrey
Как получить дату, зная день года. Например дата 50го дня
Vladislav
Как получить дату, зная день года. Например дата 50го дня
определи високосный год или нет, а дальше просто листай месяцы
Maks
ну вообще тут есть проблема одна)))
Maks
на сколько я помню, високосные года появились не сразу
Maks
хотя я хз
Maks
да, там сложная система)))
Maks
Сначала правила были одни, потом другие
Maxim
Как получить дату, зная день года. Например дата 50го дня
Ставишь год, дальше add 86400*days. Или я не так понял ?
Maks
воодится день от рождества христова если я правильно понял, и нужно выдать дату которая была в этот день. С учетом високосных годов. Я верно понял?
Maks
Зашел вкинул и потерялся. Бесит. Нам же интересно
Ilya
думаю, что вполне приемлемо. Но я полагал, что если такое умеешь, то это хотя бы 100к/мес
Согласен, но видимо сейчас столько желающих, что могут себе позволить
Maks
этого не было заявлено
Там ничего не было заявлено) условие супер размыто) а так надо брать старое формирование високосного года, новое формирование високосного года, исходя из них считать дату. Это типо довольно не тривиально будет. По этому условие не ясно
Юрий
А может лучше найти библиотеку на жс которая это считает? 😎
Юрий
И запустить отдельный микросервис под это
Артем
лол
Юрий
на nodejs?
Конечно
Юрий
Ток надо гигов 60 ОЗУ под нее
Юрий
Шоб вот прям хорошо было
Null
👣 Тестовое задание для Golang разработчика Тестовое задание для кандидата на должность Golang разработчика. Описание Есть внешний сервис, который обрабатывает некие абстрактные объекты батчами. Данный сервис может обрабатывать только определенное количество элементов n в заданный временной интервал p. При превышении ограничения, сервис блокирует последующую обработку на долгое время. Задача заключается в реализации клиента к данному внешнему сервису, который позволит обрабатывать максимально возможное количество объектов без блокировки. Приводить реализацию внешнего сервиса необязательно! Определение сервиса: package main import ( "context" "errors" "time" ) // ErrBlocked reports if service is blocked. var ErrBlocked = errors.New("blocked") // Service defines external service that can process batches of items. type Service interface { GetLimits() (n uint64, p time.Duration) Process(ctx context.Context, batch Batch) error } // Batch is a batch of items. type Batch []Item // Item is some abstract item. type Item struct{} Требования - язык программирования Golang. - решение должно быть в git-репозитории (можно прислать архив или опубликовать на github, gitlab, bitbucket...). Пожелания - документирование кода; - тесты; - использование статического анализатора (конфигурацию положить в репозиторий). Варианты решений можно присылать в комментарии. ❤️, если нравится такие задачи. @Golang_google
bagardavidyanisntreal
👣 Тестовое задание для Golang разработчика Тестовое задание для кандидата на должность Golang разработчика. Описание Есть внешний сервис, который обрабатывает некие абстрактные объекты батчами. Данный сервис может обрабатывать только определенное количество элементов n в заданный временной интервал p. При превышении ограничения, сервис блокирует последующую обработку на долгое время. Задача заключается в реализации клиента к данному внешнему сервису, который позволит обрабатывать максимально возможное количество объектов без блокировки. Приводить реализацию внешнего сервиса необязательно! Определение сервиса: package main import ( "context" "errors" "time" ) // ErrBlocked reports if service is blocked. var ErrBlocked = errors.New("blocked") // Service defines external service that can process batches of items. type Service interface { GetLimits() (n uint64, p time.Duration) Process(ctx context.Context, batch Batch) error } // Batch is a batch of items. type Batch []Item // Item is some abstract item. type Item struct{} Требования - язык программирования Golang. - решение должно быть в git-репозитории (можно прислать архив или опубликовать на github, gitlab, bitbucket...). Пожелания - документирование кода; - тесты; - использование статического анализатора (конфигурацию положить в репозиторий). Варианты решений можно присылать в комментарии. ❤️, если нравится такие задачи. @Golang_google
а почему интервал задан как time.Duration? сервис типа шлет метку времени в будущем?
Артем
Господа, если кто то работал с redis, скажите, пожалуйста, там есть возможность ttl обновлять с каждым запросом и если да то каким образом? Просто expire каждый раз обновлять?
Артем
с каждым получением? Я делал через expire
ну да, допустим get сделал, и чтоб обновился ttl
Артем
Я прост услышал что есть авторесет, стало интересно, но не нашел
bagardavidyanisntreal
👣 Тестовое задание для Golang разработчика Тестовое задание для кандидата на должность Golang разработчика. Описание Есть внешний сервис, который обрабатывает некие абстрактные объекты батчами. Данный сервис может обрабатывать только определенное количество элементов n в заданный временной интервал p. При превышении ограничения, сервис блокирует последующую обработку на долгое время. Задача заключается в реализации клиента к данному внешнему сервису, который позволит обрабатывать максимально возможное количество объектов без блокировки. Приводить реализацию внешнего сервиса необязательно! Определение сервиса: package main import ( "context" "errors" "time" ) // ErrBlocked reports if service is blocked. var ErrBlocked = errors.New("blocked") // Service defines external service that can process batches of items. type Service interface { GetLimits() (n uint64, p time.Duration) Process(ctx context.Context, batch Batch) error } // Batch is a batch of items. type Batch []Item // Item is some abstract item. type Item struct{} Требования - язык программирования Golang. - решение должно быть в git-репозитории (можно прислать архив или опубликовать на github, gitlab, bitbucket...). Пожелания - документирование кода; - тесты; - использование статического анализатора (конфигурацию положить в репозиторий). Варианты решений можно присылать в комментарии. ❤️, если нравится такие задачи. @Golang_google
Кажется разобрался 😀
Melbourne Channel
anyone tried this before? anything faster or more space saving or better zero alloc? https://github.com/dghubble/trie
Melbourne Channel
building a radix tree is impossible with zero-allocations
Hmm... I think maybe some big companies will be crazy enough to do c to asmgo? There are some translation stuff like bytedance sonic for golang json parser I think.
Илья
anyone tried this before? anything faster or more space saving or better zero alloc? https://github.com/dghubble/trie
Actually it is zero allocation only during the reading. Golang provides you with benchmarking, so you can compare all variants
Илья
Don't optimize beforehand
Melbourne Channel
Actually it is zero allocation only during the reading. Golang provides you with benchmarking, so you can compare all variants
Yup. Just wondering if anyone got anything better coz sometimes... good things happen.
Melbourne Channel
Don't optimize beforehand
Just tired of optimizing all the time. If I can have something zero alloc, then I dont think I want think this forever.
Кіт ✙
Yup. Just wondering if anyone got anything better coz sometimes... good things happen.
radix "branches" are linked lists, that cannot be implemented without referencing to the next node. And this makes compiler allocate them on heap
Илья
Yup. Just wondering if anyone got anything better coz sometimes... good things happen.
In particular, "ZERO ALLOCATION" framework doesn't mean that it really allocates zero memory, because it is impossible.