All
Dmitri
Можно пример?
ну давайте попробуем что-нибудь синтетическое сконструировать, дайте мне 5-10 минут
All
Dmitri
Тоже пока подумаю)
package main
import (
"fmt"
"log"
"math/rand"
)
func randError() error {
if rInt := rand.Int(); rInt/2 == 0 {
return fmt.Errorf("random error: %d", rInt)
}
return fmt.Errorf("random error")
}
func handleError(err error) {
log.Printf("handleError: %s", err)
}
func someFunc(someInt int) (err error) {
defer handleError(err)
for i := 0; i < someInt; i++ {
err = randError()
if err != nil {
return
}
}
return nil
}
func main() {
log.Println(someFunc(2))
}
Dmitri
видимо, что-то такое имелось в виду
Dmitri
ну, как бы, теперь в нагрузку:
а) почему оно не работает?
б) как исправить?
в) нафига эта головоломка в коде?
Dmitri
и еще бы сочинение на тему "почему так делать не стоит")
All
All
Выглядит сильно заковыристо, но я не могу сказать что это принципиально не то о чем я говорил
В целом суть то вроде та же
Dmitri
defer handleError(err) - вот тут косяк
Dmitri
в момент defer'а - err == nil
Dmitri
и вот именно с этим значением defer выполнится
Dmitri
то, что в переменной err к этому времени будет лежать что-то осмысленное - уже никого не волнуется, в вызов handleError() будет передан nil
Dmitri
для корректности - надо указатель на err, видимо, отдавать... но, а) "тут тоже есть нюансы", б) чота начинает "припахивать"
Dmitri
Dmitri
если err != nil - ну, очевидно, можно выходить из метода и начинать заниматься полезными делами
Dmitri
иначе, видимо, на функции достаточно грустно порезано
Dmitri
defer - достаточно специфический инструмент, это финализатор - гарантия исполнения куска кода, вне зависимости от результата выполнения функции.
defer rows.Close()
defer close(someChannel)
вот он для этого
All
а вот это зачем?
1) залоггировать ошибку
2) коллбек при ошибке
чтобы не городить этот под в каждом обработчике ошибки (если он дублируется)
Dmitri
к тому же, емнип, это замыкание, и он ни разу не бесплатный
Dmitri
по производительности не бесплатный
Dmitri
этот defer - эрзац замена finally в try/catch/finally, которого в го нет
Dmitri
он НЕ предназначен для обработки ошибок, он вообще не для этого
Dmitri
All
по производительности не бесплатный
ого, аж в 10 раз
BenchmarkError
BenchmarkError-10 1000000000 0.3144 ns/op
BenchmarkDeferError
BenchmarkDeferError-10 371339404 3.223 ns/op
Dmitri
All
All
Оно по сути то логично, у нас в стеке просто нарисовался еще один вызов
Dmitri
он нужен для кейсов:
file, err := os.Open("fileName")
if err != nil {...}
defer file.Close()
или
rows, err := db.Query(...)
defer rows.Close()
Ну, короче, ГАРАНТИЯ ОСВОБОЖДЕНИЯ РЕСУРСОВ, т.е. "не просрать утечку"
А для косплея java-исключений он не годится, прямо совсем не годится. И Go для косплея Java совсем не подходит)
Anastasia
Всем привет! Подскажите, пожалуйста, а с mt5 и mql кто-то сталкивался в работе? Или сможете может подсказать чатики, где более релевантно будет задать такой вопрос?
Забежал проект, связанный с этим, хотим запросить консультацию у шарящего человека. Но знакомый сказал, что это нишевая тема и мало кто с этим работал..
Естественно, консультация будет оплачиваться по предложенному вами рейту :)
Есть может быть идеи, куда обратиться с вопросом или с кем пообщаться?
Komisar
Komisar
Или chatGPT
Anastasia
Спасибо за наводки!
Daniel
#вакансия #vacancy #Go #Golang #senior #релокация #relocate #fulltime #Грузия #Тбилиси
🚀 Компания: the_covert
🔎 Вакансия: Senior golang developer
🌍 Локация: Тбилиси (любая страна кроме РФ и РБ)
🚧 Тип занятости: full-time
⏰ Формат: Remote/офис/гибрид
💵 Зп вилка: 5000- 9000 $ (по итогам собеседования)
Ссылка на вакансию на hh: https://spb.hh.ru/vacancy/76294330?hhtmFrom=employer_vacancies
🗣Сейчас мы находимся в поиске Senior golang developer, чтобы усилить команду.
💫Мы – международная группа IT-компаний. С 2006 года создаём собственные продукты, которые востебованы пользователями во всём мире. Наш продукт – это финтех платформа, предлагающая доступ к многофункциональной экосистеме для работы с финансами. Мы работаем с клиентами по всему миру, а общая аудитория насчитывает более 100 млн пользователей.
Мы ищем Senior Go Developer, который будет разрабатывать новое поколение географически распределенной low-latency платформы: проектировать архитектуру, разрабатывать компоненты и поддерживать существующую кодовую базу. Вы будете определять узкие места, оптимизировать и дорабатывать код, чтобы обеспечить надежную работу сервисов 24*365.
💰Что предлагаем:
– Помощь с релокацией в Грузию (вам и семье);
– 100% компенсация отпуска и больничных;
– Гибкий график и возможность удаленной работы (из любой страны);
– Бенефиты (компенсация спорта, обучения, медицины и т.д.);
– Возможность получения зарплаты в $;
– Индивидуальный подход к области ответственности и пулу задач;
– Команду профессионалов из лучших ВУЗов страны.
✅Что предстоит делать:
– Проектировать, внедрять и поддерживать low-latency компоненты торговой платформы;
– Выявлять узкие места и разрабатывать решения этих проблем;
– Оптимизация и рефакторинг кодовой базы;
– Участие в проектировании новых микросервисов;
– Сотрудничать с торговыми, R&D и инфраструктурными группами;
– Обучать младших сотрудников и проводить code review;
– Исследовать партнерские платформы и API.
⚠️Ожидаем от вас:
– Высшее образование в области компьютерных наук, STEM или аналогичных;
– Опыт разработки на Go от 3-х лет;
– Опыт оптимизации производительности или работы с low-latency сервисами;
– Опыт разработки многопоточных и сетевых приложений;
– Хорошее знание алгоритмов и структур данных;
– Хорошее знание Linux;
– Сильные коммуникативные навыки;
– Опыт работы с Python, NodeJS, C++, Java будет преимуществом.
✉️Контакты:
Даниил, @danpushkin
Миринговин
Кто разбирался, что там за "мировой ИТ кризис", из-за которого идут сокращения в бигтех и как пишут всякие, это тащит в яму всех остальных?
Или болтовня?
Андрей
мир жестко подсел на девайсы, наверно только ядерная война и угроза урожая (как в Интерстеллар) может погубить ойти
Владимир
Alex
сокращения в бигтехе, это где-то 5% персонала, из которых не все разработчики
Darya
🧶Nitka Technologies's looking for an experienced Go (Golang) Developer to work at DeFi blockchain startup.
Main task: Development of the Cosmos SDK based blockchain with a DeFi protocol on it.
Project is a startup with a work in the following areas:
• Blockchain protocol development (Go)
• Off-chain tools development (Go, Python, Typescript)
• CosmWasm smart contracts development (Rust)
• Web UI development (Typescript, React)
• Infrastructure configuration (GCP, Terraform)
• Monitoring tools development (Grafana, Prometheus)
Each developer is usually contributing to multiple project parts. We expect the ability to learn quickly, switch between project parts, work on multiple things in parallel, maintain the high level of communication.
Skills required:
• 5+ years of experience with Go
• Nice to have experience with Python, TypeScript
• Nice to have any DevOps skills
• Being very excited when working with algorithms and mathematics
• Strong spoken and written english skills (Intermediate level and more)
Working conditions:
• Remote work
• Full-time (8 hours/day)
• Interaction with a team from the USA (а few times a week calls're in the evening, around 19:00 - 21:00 GTM+3 (morning on the US West Coast))
• Flexible schedule without time trackers
• Salary range 5000-6000$
• Paid vacation, holidays
Contact @vchual
Stanislav
Stanislav
https://airtable.com/shrF23JdDHMQ3QDyw/tblzWFbZQv6bVjqqr
Андрей
softland
Alexey
#вакансия #vacancy #Go #Golang #senior #релокация #relocate #fulltime #Грузия #Тбилиси
🚀 Компания: the_covert
🔎 Вакансия: Senior golang developer
🌍 Локация: Тбилиси (любая страна кроме РФ и РБ)
🚧 Тип занятости: full-time
⏰ Формат: Remote/офис/гибрид
💵 Зп вилка: 5000- 9000 $ (по итогам собеседования)
Ссылка на вакансию на hh: https://spb.hh.ru/vacancy/76294330?hhtmFrom=employer_vacancies
🗣Сейчас мы находимся в поиске Senior golang developer, чтобы усилить команду.
💫Мы – международная группа IT-компаний. С 2006 года создаём собственные продукты, которые востебованы пользователями во всём мире. Наш продукт – это финтех платформа, предлагающая доступ к многофункциональной экосистеме для работы с финансами. Мы работаем с клиентами по всему миру, а общая аудитория насчитывает более 100 млн пользователей.
Мы ищем Senior Go Developer, который будет разрабатывать новое поколение географически распределенной low-latency платформы: проектировать архитектуру, разрабатывать компоненты и поддерживать существующую кодовую базу. Вы будете определять узкие места, оптимизировать и дорабатывать код, чтобы обеспечить надежную работу сервисов 24*365.
💰Что предлагаем:
– Помощь с релокацией в Грузию (вам и семье);
– 100% компенсация отпуска и больничных;
– Гибкий график и возможность удаленной работы (из любой страны);
– Бенефиты (компенсация спорта, обучения, медицины и т.д.);
– Возможность получения зарплаты в $;
– Индивидуальный подход к области ответственности и пулу задач;
– Команду профессионалов из лучших ВУЗов страны.
✅Что предстоит делать:
– Проектировать, внедрять и поддерживать low-latency компоненты торговой платформы;
– Выявлять узкие места и разрабатывать решения этих проблем;
– Оптимизация и рефакторинг кодовой базы;
– Участие в проектировании новых микросервисов;
– Сотрудничать с торговыми, R&D и инфраструктурными группами;
– Обучать младших сотрудников и проводить code review;
– Исследовать партнерские платформы и API.
⚠️Ожидаем от вас:
– Высшее образование в области компьютерных наук, STEM или аналогичных;
– Опыт разработки на Go от 3-х лет;
– Опыт оптимизации производительности или работы с low-latency сервисами;
– Опыт разработки многопоточных и сетевых приложений;
– Хорошее знание алгоритмов и структур данных;
– Хорошее знание Linux;
– Сильные коммуникативные навыки;
– Опыт работы с Python, NodeJS, C++, Java будет преимуществом.
✉️Контакты:
Даниил, @danpushkin
а почему hft на го пишут? интересно просто
All
А питон в 30 раз медленнее
Alexey
Alexey
All
Alexey
скинь бенчмарки хфт платформ, я не видел таких
Alexey
Там смысл в кастомных железках с kernel bypass драйверами и/или ebpf. Можно, конечно, с cgo побадаться, но даже с этим сборка мусора не позволит predictable latency.
All
All
Успешно работают
Alexander
D
John
Скорее всего, у них стало там все строго с этим - хотите работать - уезжайте из России
там другая проблема - а как устраивать в штат и оплачивать зп сотруднику в РФ? переводы нельзя/не получиться, т.к. спонсирование терроризма (РФ же уже стала такой?), а если узнают что деньги компании уходят в пользу РФ, то будет ощутимый штраф за 1й раз, за 2й - штраф и закрытие
в любом случае есть люди которые получают в крипте, но тут уже маячит проблема он ФНС РФ - "откуда деньги?", а чтоб этого избежать добро пожаловать в познавательный мир отмыва))))
Nikita
#вакансия #vacancy #remote #middle #senior #godeveloper #golang #go #work #удалённо
🔎Ищем middle go разработчика в международную it компанию. Пиши нам, если это про тебя :)
Компания: контакты через агентство Smart Hiring Pro
Режим работы: удаленный
График работы: 5/2
ЗП 4000-4500€ gross.
🖥 Чем предстоит заниматься:
— Создавать стабильные, эффективные, тестируемые и повторно используемые микросервисы.
— Решать зачади производительности и архитектуры.
— Участвовать в жизненном цикле разработки от стадии концепции до поставки и поддержки после запуска.
💡 Необходимые скиллы:
— Опыт работы 3 года +
— Хорошее знание GO , парадигмы, конструкции и идиомы.
— Уверенное знание SQL.
— Опыт работы с кодогенераторами.
— Способность писать чистые комментарии Godoc.
— Желательно опыт работы с колоночными БД.
— Плюсом будет опыт работы в финтехе, опыт работы с kubernetes.
Подробно расскажу тут ➡️ @Nikita_Gromik
Или тут ➡️ gromik.nn@smarthiring.pro
Alexander
👣 Задание на разработку демона, осуществляющего "Системный мониторинг"
Общее описание
Демон - программа, собирающая информацию о системе, на которой запущена, и отправляющая её своим клиентам по GRPC.
Архитектура
▪GRPC сервер;
▪допускается использование временных (/tmp) файлов;
▪статистика хранится в памяти, долговременное хранение не предусмотрено.
Требования
Необходимо каждые N секунд выдавать информацию, усредненную за последние M секунд.
Например, N = 5с, а M = 15с, тогда демон "молчит" первые 15 секунд, затем выдает снапшот за 0-15с; через 5с (в 20с) выдает снапшот за 5-20с; через 5с (в 25с) выдает снапшот за 10-25с и т.д.
N и M указывает клиент в запросе на получение статистики.
Что необходимо собирать:
▪Средняя загрузка системы (load average).
▪Средняя загрузка CPU (%user_mode, %system_mode, %idle).
▪Загрузка дисков:
-tps (transfers per second);
-KB/s (kilobytes (read+write) per second);
▪Информация о дисках по каждой файловой системе:
-использовано мегабайт, % от доступного количества;
-использовано inode, % от доступного количества.
▪Top talkers по сети:
- по протоколам: protocol (TCP, UDP, ICMP, etc), bytes, % от sum(bytes) за последние M), сортируем по убыванию процента;
-по трафику: source ip:port, destination ip:port, protocol, bytes per second (bps), сортируем по убыванию bps.
▪Статистика по сетевым соединениям:
- слушающие TCP & UDP сокеты: command, pid, user, protocol, port;
-количество TCP соединений, находящихся в разных состояниях (ESTAB, FIN_WAIT, SYN_RCV и пр.).
Разрешено использовать только стандартную библиотеку языка Go!
Команды, которые могут пригодиться:
$ top -b -n1
$ df -k
$ df -i
$ iostat -d -k
$ cat /proc/net/dev
$ sudo netstat -lntup
$ ss -ta
$ tcpdump -ntq -i any -P inout -l
$ tcpdump -nt -i any -P inout -ttt -l
Статистика представляет собой объекты, описанные в формате Protobuf.
Информацию необходимо выдавать всем подключенным по GRPC клиентам с использованием однонаправленного потока.
Выдавать "снапшот" системы можно как отдельными сообщениями, так и одним жирным объектом.
Сбор информации, её парсинг и пр. должен осуществляться как можно более конкурентно.
Конфигурация
▪Через аргументы командной строки можно указать, на каком порту стартует сервер.
▪Через файл можно указать, какие из подсистем сбора включены/выключены.
Тестирование
Юнит-тесты
▪по возможности мок интерфейсов и проверка вызовов конкретных методов;
▪тесты вспомогательных функций и пр.
Интеграционные тесты
▪потестировать факт потока статистики, можно без конкретных цифр;
▪можно посоздавать файлы, пооткрывать сокеты и посмотреть на изменение снапшота.
Клиент
Необходимо реализовать простой клиент, который в реальном времени получает и выводит в STDOUT статистику по одному из пунктов (например, сетевую информацию) в читаемом формате (например, в виде таблицы).
@golang_interview
милая задача. но я бы сразу стал обсуждать, что часть предложенных команд блокируются при проблемах. и а) мы повиснем б) да и систему забьем процессами
Oleg
Middle Go Developer
Привет, мы ищем разработчика в социальный стартап. Платим 4к евро до налогов, ищем кого-то русскоговорящего, но не находящегося в РФ\РБ.
Стэк:
* Go
* PostgreSQL\MySQL
* Ubuntu Linux, SSH, - уметь, практиковать
* Сетевые сервисы: HTTP, VPN, DNS
* Github
* Docker
* Готовность работать с системами оркестрации (Terraform, Ansible)
* Не нулевой опыт работы и с облаками, и с bare metal
Человеческое:
* Готовность делать периодически то, что нужно, а не то, что написано в JD — команда еще небольшая, поэтому четкого фронта работ не будет.
* Навык исследования и любовь находить решения за рамками стандарта — проект достаточно необычный, посему не все ответы будут в гугле. Иногда нужно будет подумать
Плюшки:
* Можем обеспечить официальное трудоустройство в ЕС => ВНЖ => Гражданство
* Можем не обеспечивать официальное трудоустройство в ЕС и платить туда, где будет меньше налогов:)
* Участие в конференциях проекта по земному шару
* Возможность нормально работать - один фиксированный митинг в день, все остальное - при редкой необходимости.
* Распределенная команда - можно работать там, где тебе удобно
* Возможность почувствовать, что ты делаешь что-то полезное в жизни:)
По всем вопросам и, в идеале, откликам - @basistyy
Привет!
Не могу отредачить, так что только так: мы закрыли сбор резюме, сейчас решаемся с тем, кого на интервью позовем. Завтра или в пн отпишемся тем, кто прошел к интервью:)
Alexey
О, прикольная вакансия была. Весь день в самолёте провёл, не заметил 🙁
Андрей
All
Alexey
Alexey
Андрей
Андрей
стыдно не знать базу