Как завершить работу Горутин
в Go: Эффективные методы и примеры
Пишите свои примеры завершения Горутин с кодом в комментариях 👇
@Golang_google
в Go: Эффективные методы и примеры
Пишите свои примеры завершения Горутин с кодом в комментариях 👇
@Golang_google
📌 Задача расшифровка строки
Сложность: Средняя
Условие задачи: дана строка в формате:
Пример:
Ввод:
Ввод:
Решение:
func decodeString(s string) string {
_,answer := decode(s,0)
return strings.Join(answer, "")
}
func decode(s string,i int) (int,[]string){
num := 0
st := []string{}
for i < len(s){
char := string(s[i])
if val, err := strconv.Atoi(char); err == nil {
num = num*10+val
}else if char == "["{
k,l := decode(s,i+1)
for j:=0;j<num;j++{
st = append(st,l...)
}
i = k
num = 0
}else if char == "]"{
return i, st
}else{
st = append(st,char)
}
i+=1
}
return i,st
}
Пишите свое решение в комментариях👇
@Golang_google
Сложность: Средняя
Условие задачи: дана строка в формате:
k[encoded_string]
, где k
- число повторений зашифрованной строки. Необходимо вывести результирующую строку, которая соответствует расшифровке исходной строки. Пример:
Ввод:
s = "3[a]2[bc]"
Вывод: "aaabcbc"Ввод:
s = "3[a2[c]]"
Вывод: "accaccacc"Решение:
_,answer := decode(s,0)
return strings.Join(answer, "")
}
func decode(s string,i int) (int,[]string){
num := 0
st := []string{}
for i < len(s){
char := string(s[i])
if val, err := strconv.Atoi(char); err == nil {
num = num*10+val
}else if char == "["{
k,l := decode(s,i+1)
for j:=0;j<num;j++{
st = append(st,l...)
}
i = k
num = 0
}else if char == "]"{
return i, st
}else{
st = append(st,char)
}
i+=1
}
return i,st
}
Пишите свое решение в комментариях👇
@Golang_google
Библиотека для удобного преобразования golang AST(Abstract Syntax Tree, абстрактное синтаксическое дерево) в JSON и JSON в AST.
go install github.com/asty-org/asty
asty -h
▪Github
▪Asty
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Репозиторий, который создан для того, чтобы готовиться к собеседованию на Go на практике.
В данном репозитории находится рабочее CRUD-приложение, которое содержит множество ошибок, противоречащих современным стандартам, а также серьезные проблемы с безопасностью. Хороший вариант, чтобы попрактиковаться и исправить все ошибки.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Большой список сайтов с практическимим задачами для программистов.
Operation Go — практика написания кода на Go в форме браузерной игры.
Codeforces — платформа для алгоритмических соревнований. Проводит контесты и раунды с 5 задачами на 2 часа. Есть система рейтинга и два дивизиона. Задачи можно решать и проверять после соревнования. Также есть доступ к тренировкам с задачами с прошлых соревнований.
HackerRank - сайт будет больше интересен продвинутым программистам, которые уже многое умеют. На этом сайте собрано множество задач на самые разные разделы Computer Science: традиционная алгоритмика, ИИ, машинное обучение и т.д. Если вы решите много задач, то вами могут заинтересоваться работодатели, регуляторно мониторящие эту платформу.
Codewars — популярный cборник задач на разные темы, от алгоритмов до шаблонов проектирования.
LeetCode — известный сайт с задачами для подготовки к собеседованиям. Можно пообщаться и посмотреть решения других программистов.
Timus Online Judge — русскоязычная (хотя английский язык также поддерживается) платформа, на которой более тысячи задач удачно отсортированы по темам и по сложности.
TopCoder - популярная американская платформа. Она проводит алгоритмические контесты, а также соревнования по промышленному программированию и марафоны, где задачи требуют исследования и нет единого верного алгоритма. Участникам даются недели на решение таких задач.
informatics.mccme.ru - платформа с теоретическим материалом и задачами, удобно разделенными по категориям. Большая база задач с олимпиад школьников также доступна.
SPOJ - большой англоязычный сайт с 20000+ задачами на разные темы: DP, графы, структуры данных и др. Иногда проводят неинтересные контесты, если не из страны их проведения.
CodeChef — менее крупный аналог Codeforces и TopCoder, тоже с огромным архивом задач и регулярными контестами.
Project Euler - сборник 500 задач, проверяющих знание математических алгоритмов. Часто используется на собеседованиях, чтобы оценить алгоритмическую подготовку кандидата.
Kaggle - соревнования по анализу данных.
Golang tests - канал с тестами по Go
CodinGame - сайт для программистов и геймеров, предлагающий большую коллекцию видеоигр, оформленных в виде задач на программирование.
Al Zimmermann’s Programming Contests — платформа, на которой регулярно проводятся контесты с задачами на исследование и оптимизацию. Интересен тем, что писать программу необязательно — даются только тестовые данные. Ответы можно расчитывать вручную, или просто гадать их на кофейной гуще.
Programming Praxis — сайт, где можно найти много интересных задач.
CheckIO — сайт с задачами для программистов всех уровней, который вы проходите в виде игры.
Ruby Quiz — сайт с задачами для программистов на Ruby, но решения можно писать и на других языках.
Prolog Problems — Подборка задач для программистов, использующих Prolog.
Сборник задач от СppStudio - задачи на С++, но их можно и на других языках.
Empire of Code — сайт для программистов, где необходимо писать код, реализующий стратегию и тактику виртуальных бойцов.
@Golang_google
Operation Go — практика написания кода на Go в форме браузерной игры.
Codeforces — платформа для алгоритмических соревнований. Проводит контесты и раунды с 5 задачами на 2 часа. Есть система рейтинга и два дивизиона. Задачи можно решать и проверять после соревнования. Также есть доступ к тренировкам с задачами с прошлых соревнований.
HackerRank - сайт будет больше интересен продвинутым программистам, которые уже многое умеют. На этом сайте собрано множество задач на самые разные разделы Computer Science: традиционная алгоритмика, ИИ, машинное обучение и т.д. Если вы решите много задач, то вами могут заинтересоваться работодатели, регуляторно мониторящие эту платформу.
Codewars — популярный cборник задач на разные темы, от алгоритмов до шаблонов проектирования.
LeetCode — известный сайт с задачами для подготовки к собеседованиям. Можно пообщаться и посмотреть решения других программистов.
Timus Online Judge — русскоязычная (хотя английский язык также поддерживается) платформа, на которой более тысячи задач удачно отсортированы по темам и по сложности.
TopCoder - популярная американская платформа. Она проводит алгоритмические контесты, а также соревнования по промышленному программированию и марафоны, где задачи требуют исследования и нет единого верного алгоритма. Участникам даются недели на решение таких задач.
informatics.mccme.ru - платформа с теоретическим материалом и задачами, удобно разделенными по категориям. Большая база задач с олимпиад школьников также доступна.
SPOJ - большой англоязычный сайт с 20000+ задачами на разные темы: DP, графы, структуры данных и др. Иногда проводят неинтересные контесты, если не из страны их проведения.
CodeChef — менее крупный аналог Codeforces и TopCoder, тоже с огромным архивом задач и регулярными контестами.
Project Euler - сборник 500 задач, проверяющих знание математических алгоритмов. Часто используется на собеседованиях, чтобы оценить алгоритмическую подготовку кандидата.
Kaggle - соревнования по анализу данных.
Golang tests - канал с тестами по Go
CodinGame - сайт для программистов и геймеров, предлагающий большую коллекцию видеоигр, оформленных в виде задач на программирование.
Al Zimmermann’s Programming Contests — платформа, на которой регулярно проводятся контесты с задачами на исследование и оптимизацию. Интересен тем, что писать программу необязательно — даются только тестовые данные. Ответы можно расчитывать вручную, или просто гадать их на кофейной гуще.
Programming Praxis — сайт, где можно найти много интересных задач.
CheckIO — сайт с задачами для программистов всех уровней, который вы проходите в виде игры.
Ruby Quiz — сайт с задачами для программистов на Ruby, но решения можно писать и на других языках.
Prolog Problems — Подборка задач для программистов, использующих Prolog.
Сборник задач от СppStudio - задачи на С++, но их можно и на других языках.
Empire of Code — сайт для программистов, где необходимо писать код, реализующий стратегию и тактику виртуальных бойцов.
@Golang_google
Внимание, Open Source 🚀
Ребята из PaaS-команды СберМаркета решили подарить миру крутой инструмент для интеграционного тестирования сервисов. Он будет полезен для тестировщиков и бэкендеров.
Кодовое название — grpc-wiremock. Это надстройка для мок-сервера Wiremock, позволяющая поддерживать gRPC, MultiAPI, TLS/SSL и роутинг по домену. А ещё отслеживать изменения в контрактах.
Подробнее об инструменте и том, как мы используем его внутри, читайте на Хабре!
Ребята из PaaS-команды СберМаркета решили подарить миру крутой инструмент для интеграционного тестирования сервисов. Он будет полезен для тестировщиков и бэкендеров.
Кодовое название — grpc-wiremock. Это надстройка для мок-сервера Wiremock, позволяющая поддерживать gRPC, MultiAPI, TLS/SSL и роутинг по домену. А ещё отслеживать изменения в контрактах.
Подробнее об инструменте и том, как мы используем его внутри, читайте на Хабре!
Шаблон фасад (англ. Facade) — структурный шаблон проектирования, позволяющий скрыть сложность системы путём сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы.
Как вы используете шаблон проектирования фасад в своей работе?
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
hydrapp - это небольшой Go-фреймворк, похожий на Electron с уникальной особенностью: Он может использовать (почти) любой браузерный движок для рендеринга фронтенда.
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансии направления Go – разрабатывай внутренние и B2B в Kaspersky!
Чем будете заниматься:
● Golang developer (Sandbox) – разрабатывать микросервисы на Go, участвовать в создании нового функционала проекта и подготовке релизов новых версий продукта;
● Go Developer (MSAP) – участвовать в разработке и поддержка бекенд сервисов под Linux/Kubernetes на Go;
● Golang developer – участвовать в разработке микросервисов, работать с имеющимися проектами;
● Golang developer (OSMP) – создавать бекенд сервисы под Linux/Kubernetes на Go, развивать микро-сервисный подход, писать тесты, проводить код-ревью.
Основные требования:
● опыт от 2х лет разработки на GO или другом языке (С++, С#, Java);
● опыт разработки микросервисов;
● опыт разработки под Linux;
● понимание принципов ООП.
Откликайтесь, даже если опыт частично отвечает требованиям. Возможно, у вас есть именно нужные нам навыки.
Чем будете заниматься:
● Golang developer (Sandbox) – разрабатывать микросервисы на Go, участвовать в создании нового функционала проекта и подготовке релизов новых версий продукта;
● Go Developer (MSAP) – участвовать в разработке и поддержка бекенд сервисов под Linux/Kubernetes на Go;
● Golang developer – участвовать в разработке микросервисов, работать с имеющимися проектами;
● Golang developer (OSMP) – создавать бекенд сервисы под Linux/Kubernetes на Go, развивать микро-сервисный подход, писать тесты, проводить код-ревью.
Основные требования:
● опыт от 2х лет разработки на GO или другом языке (С++, С#, Java);
● опыт разработки микросервисов;
● опыт разработки под Linux;
● понимание принципов ООП.
Откликайтесь, даже если опыт частично отвечает требованиям. Возможно, у вас есть именно нужные нам навыки.
Наблюдатель (англ. Observer) — поведенческий шаблон проектирования. Также известен как «подчинённые» (англ. Dependents). Реализует у класса механизм, который позволяет объекту этого класса получать оповещения об изменении состояния других объектов и тем самым наблюдать за ними.
Паттерн Наблюдатель определяет зависимость "один-ко-многим" между объектами так, что при изменении состояния одного объекта все зависящие от него объекты уведомляются об этом и обновляются автоматически.
Пример 1: Простое уведомление о событии
Пример 2: Тикер фондового рынка
Пример 3: Погодная станция
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
▪Создание собственного локального прокси с помощью Tor.
Пример в изображении 1.
▪Использование коммерческого сервиса прокси-пулов SmartProxy.
Пример в изображении 2.
▪Создание собственного HTTP-клиента с прокси-функцией.
Пример в изображении 3.
▪ После настройки Tor-клиента мы можем проверить IP-адрес запроса. Затем мы вызываем NewIP, чтобы изменить IP-адрес нашего клиента.
Изображение 4.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🧑💻 PLOW
Plow инструмент, который предназначен для нагрузочного тестирования HTTP-серверов.
Он основан на Go-библиотеке fasthttp, которая до десяти раз быстрее стандартной реализации, что делает его каким‑то аномально быстрым.
Plow может отдавать статистику в реальном времени не только в окне терминала, но и в браузере (по стандарту встроенный сервер доступен на 18888-м порте).
Запуск возможен из Docker или установкой из исходников:
Альтернатива:
Аргументы в целом ничего необычного собой не представляют: тут у нас стандартная для таких программ настройка количества потоков (-c), желаемого количества запросов (-n), времени теста (-d 30s или -d 5m, например) и HTTP-метода (--method="GET"). Про другие параметры можно подробно прочитать в справке программы (--help). Цель передается без специальных параметров.
▪ Github
@Golang_google
Plow инструмент, который предназначен для нагрузочного тестирования HTTP-серверов.
Он основан на Go-библиотеке fasthttp, которая до десяти раз быстрее стандартной реализации, что делает его каким‑то аномально быстрым.
Plow может отдавать статистику в реальном времени не только в окне терминала, но и в браузере (по стандарту встроенный сервер доступен на 18888-м порте).
Запуск возможен из Docker или установкой из исходников:
go install github.com/six-ddc/plow@latest
plow <args>
Альтернатива:
docker run --rm --net=host ghcr.io/six-ddc/plow <args>
Аргументы в целом ничего необычного собой не представляют: тут у нас стандартная для таких программ настройка количества потоков (-c), желаемого количества запросов (-n), времени теста (-d 30s или -d 5m, например) и HTTP-метода (--method="GET"). Про другие параметры можно подробно прочитать в справке программы (--help). Цель передается без специальных параметров.
▪ Github
@Golang_google