37.1K subscribers
1.46K photos
33 videos
5 files
1.62K links
加入频道
👣 Подробное руководство по тестированию в Go

Вы начнете с простой функции тестирования и поработаете с другими инструментами и стратегиями, которые помогут вам освоить тестирование в Go.

Статья

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Zmap-ProxyScanner - быстрый способ поиска прокси. Поможет найти 2000-5000 рабочих http, socks4, socks5 прокси за одно сканирование.

⚙️ GitHub

#github #soft #Go

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Hilbish – интерактивная Unix-подобная оболочка написанная на Go с возможностью конфигурации на языке Lua

🖥 GitHub

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 usql

usql – универсальный командный интерфейс для работы с SQL и NoSQL базами данных

$ brew install xo/xo/usql

🖥 Github
✔️ Установка

#github #Go

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Hashmap по версии Golang вместе с реализацией на дженериках

Привет. Сегодня рассмотрим такую интересную структуру данных как hashmap, а именно ее реализацию в Go. Вкратце разберем что такое hashmap, как это выглядит под капотом Go 1.19. Посмотрим отличия реализации с Java и Python. Реализуем hashmap из-под капота с помощью дженериков.

➡️ Читать дальше

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Dolt is Git for Data!

Dolt – инструмент, который позволяет превратить SQL-базу в аналог git-репозитория и работать с альтернативными git-командами (clone, push, pull, merge и т.д.)

dolt $ du -h /Users/timsehn//go/bin/dolt
68M /Users/timsehn/go/bin/dolt


🖥 Github

#Data #Go

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 26 основных паттернов микросервисной разработки

Несмотря на достоинства микросервисов, при их внедрении можно столкнуться с множеством проблем.

Изучение общих закономерностей в решении этих проблем привело к появлению паттернов микросервисной разработки (Microservices Patterns), или шаблонов проектирования микросервисов. Основная цель — предоставить проверенные временем решения для таких задач, как разработка микросервисной архитектуры, организация взаимодействия микросервисов друг с другом, клиентскими приложениями, базами данных, обеспечение их отказоустойчивости.

Рассмотрим несколько основных паттернов, разделив их на условные группы в зависимости от решаемой задачи.

➡️ Читать дальше

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔧 HTTPLoot — инструмент на Go для исследования безопасности веб-приложений. HTTPLoot может автоматически сканировать, определять технический стек, заполнять формы, извлекать секреты из страниц ошибок/отладки и JavaScript-кода сайтов.

Свою результативность он уже доказал, найдя 1 676 634 секретов в результате двух этапов глубокого тестирования.

🖥 Github
✔️ Video

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 GopherJS - A compiler from Go to JavaScript

Транспилятор, который помогает преобразовать код на Go в JavaScript.

go install github.com/gopherjs/[email protected]

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 chatgpt: Консольный клиент Chat GPT на Golang

Как вы, наверное, знаете, на днях OpenAI выпустила языковую нейросеть ChatGPT. Этот текстовый ИИ уже побил все рекорды по хайпу. Он набрал 1 млн зарегистрированных пользователей меньше чем за неделю. Для сравнения, у Twitter достижение этой цифры заняло 2 года, у Facebook — 10 месяцев.

ChatGPT основан на предыдущем текстовом генераторе OpenAI, GPT-3. Компания строит свои модели генерации текста, тренируя алгоритмы машинного обучения на книгах, новостных статьях, страницах Википедии и миллионах веб-сайтов. Обрабатывая такие большие объемы данных, модели изучают шаблоны и структуру языка и приобретают способность интерпретировать желаемый результат запроса пользователя.

go get -u -x github.com/kkdai/chatgpt

🖥 Github
✔️ Впечатляющие достижения ChatGPT
😂ChatGPT решает задачи
🖥 Скрипт который выведет и обьяснит ошибку в вашем коде.

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Portainer-Community-Edition – платформа для контейнерных приложений, которая используется для управления средами Docker, Swarm, Kubernetes и ACI

Позволяет управлять всеми ресурсами (контейнеры, образы, тома, сети и многое другое) с помощью графического интерфейса и/или удобного API.

🖥 Github
📝 Документация

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Яндекс это же сайт, что я там буду делать?

Разговор с тимлидом команды Serverless Yandex Cloud про продуктовые исследования, фичеборды, виртуальные команды и топ-качества разработчиков.

Смотрите выпуск на YouTube канале Yandex Cloud ➡️

00:00 Приветствие
01:19 Как держать темп разработки в распределенной команде?
03:29 Про то, как работают виртуальные команды
07:50 Как получается удержать экспертизу в команде?
10:04 Про продуктовые исследования
15:04 Про работу с сообществом и custdev
19:23 Про фичеборд и голосование
23:35 Продукт для разработчиков
24:24 Про вклад стажёров в развитие продукта
28:18 "Яндекс это же сайт, что я там буду делать?" путь Андрея в Яндексе
30:45 Топ-качества разработчиков команды Serverless
35:02 Про плов и то, что объединяет
👣 Тестовое задание для стажера в юнит Merchant Experience

Задача разработать сервис, через который продавцы смогут передавать нам свои товары пачками в формате excel (xlsx). UI делать не нужно, достаточно только API.

Сервис принимает на вход ссылку на файл и id продавца, к чьему аккаунту будут привязаны загружаемые товары. Сервис читает файл и сохраняет, либо обновляет товары в БД. Обновление будет происходить, если пара (id продавца, offer_id) уже есть у нас в базе. В ответ на запрос выдаёт краткую статистику: количество созданных товаров, обновлённых, удалённых и количество строк с ошибками (например цена отрицательная, либо вообще не число).

Для проверки работоспособности сервиса нужно так же реализовать метод, с помощью которого можно будет достать список товаров из базы. Метод должен принимать на вход id продавца, offer_id, подстрока названия товара (по тексту "теле" находились и "телефоны", и "телевизоры"). Ни один параметр не является обязательным, все указанные параметры применяются через логический оператор "AND".

В каждой строке скачанного файла будет содержаться отдельный товар. Колонки в файле и соответствующие значения полей товара следующие:

- offer_id уникальный идентификатор товара в системе продавца
- name название товара
- price цена в рублях
- quantity количество товара на складе продавца
- available true/false, в случае false продавец хочет удалить товар из нашей базы

Наши ожидания
- язык программирования Go
- предоставлена инструкция по запуску приложения. В идеале (но не обязательно) – использовать контейнеризацию с возможностью запустить проект командой docker run/docker-compose up
- в качестве БД использована Postgres
- код выложен на github

Усложнения
- написаны тесты

- проведено нагрузочное тестирование с целью понять, с какой скоростью сервис может переваривать файлы

- реализована асинхронная схема работы, т.е. сервис принимает запрос, сразу возвращает id задания и в отдельной горутине начинает его выполнять. Клиент может узнать статус задания отдельным запросом.

ставьте ❤️, если подобный контент вам полезен

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Тестовое задание на позицию Golang разработчика.

Необходимо создать HTTP-сервис, способный ограничивать количество запросов (rate limit) из одной подсети IPv4. Если ограничения отсутствуют, то нужно выдавать одинаковый статический контент.

Требования:
язык: Go
код должен быть выложен на GitHub
ответ должен соответствовать спецификации RFC 6585
IP должен извлекаться из заголовка X-Forwarded-For
подсеть: /24 (маска 255.255.255.0)
лимит: 100 запросов в минуту
время ожидания после ограничения: 2 минуты

Пример: после 20 запросов с IP 123.45.67.89 и 80 запросов с IP 123.45.67.1 сервис возвращает 429 ошибку на любой запрос с подсети 123.45.67.0/24 в течение двух последующих минут.

Усложнения:

- покрытие тестами
- контейнеризация, возможность запустить с помощью docker-compose up
- размер префикса подсети, лимит и время ожидания можно задавать при старте сервиса
- отдельный handler для сброса лимита по префиксу

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Разработка Airflow с помощью Docker

Airflow должен быть легким в работе и развитии.

Новый инструмент astro-cli от астрономов предназначен для помощи пользователям в работе с облаком и не охватывает все рабочие процессы разработки.

Это не очень хорошо работает с докером, потому что для докера недостаточно подготовки в докер-коммуникациях.

➡️ Читать дальше

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 og


Go Инструмент для исправления опечаток.

go install github.com/sheepla/og@latest

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Тестовое задание на позицию Golang разработчика.

Задача
Необходимо создать сервис для хранения и подачи объявлений. Объявления должны храниться в базе данных. Сервис должен предоставлять API, работающее поверх HTTP в формате JSON.

Требования
- Язык программирования Go
- Финальную версию нужно выложить на github.com (просьба не делать форк этого репозитория, дабы не плодить плагиат);
- Простая инструкция для запуска (в идеале — с возможностью запустить через docker-compose up, но это необязательно);
- 3 метода: получение списка объявлений, получение одного объявления, создание объявления;
- Валидация полей: не больше 3 ссылок на фото, описание не больше 1000 символов, название не больше 200 символов;

Если есть сомнения по деталям — решение принять самостоятельно, но в своём README.md рекомендуем выписать вопросы и принятые решения по ним.

Детали
Метод получения списка объявлений

- Пагинация: на одной странице должно присутствовать 10 объявлений;
- Cортировки: по цене (возрастание/убывание) и по дате создания (возрастание/убывание);
- Поля в ответе: название объявления, ссылка на главное фото (первое в списке), цена.

Метод получения конкретного объявления
- Обязательные поля в ответе: название объявления, цена, ссылка на главное фото;
- Опциональные поля (можно запросить, передав параметр fields): описание, ссылки на все фото.

Метод создания объявления:
- Принимает все вышеперечисленные поля: название, описание, несколько ссылок на фотографии (сами фото загружать никуда не требуется), цена;
- Возвращает ID созданного объявления и код результата (ошибка или успех).

Усложнения
Не обязательно, но задание может быть выполнено с любым числом усложнений:

- Юнит тесты: постарайтесь достичь покрытия в 70% и больше;
- Контейнеризация: есть возможность поднять проект с помощью команды docker-compose up;
- Архитектура сервиса описана в виде текста и/или диаграмм
- Документация: есть структурированное описание методов сервиса.

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 $ Qrcp

Qrcp – инструмент для передачи файлов по Wi-Fi с компьютера на мобильное устройство, по QR-коду, не выходя из терминала

При вызове команды qrcp поднимается автоматически на случайном порте.

go get github.com/claudiodangelis/qrcp

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Бесплатные онлайн-курсы Golang для начинающих в 2023 году

Эта статья содержит бесплатные онлайн-курсы по изучению Golang на таких сайтах, как freeCodecamp, YouTube, Udemy и Coursera, так же мы порекомендуем вам полезные телеграм каналы для изучения Go.

➡️ Читать дальше

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 lo - Iterate over slices, maps, channels...

Пакет с Набором тривиальных функций, которые могут упростить жизнь при написание кода.

go get github.com/samber/lo@v1

🖥 Github
✔️ Docs

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Решаем задачи с codewars

Начнем с простой задачи

Where my anagrams at?

Что такое анаграмма?
Aнаграмма – перестановка букв в слове или словосочетании, вследствие чего возникает другое слово или словосочетание. Два слова являются анаграммами друг друга, если они оба содержат одни и те же буквы.
Нппример:

'abba' & 'baab' == true

'abba' & 'bbaa' == true

'abba' & 'abbba' == false

'abba' & 'abca' == false


Напишите функцию, которая найдет все анаграммы слова из списка. Вам будет дано слово и массив со словами. Вы должны вернуть массив всех анаграмм для этого слова или пустой массив, если их нет. Например:

anagrams('abba', ['aabb', 'abcd', 'bbaa', 'dada']) => ['aabb', 'bbaa']

anagrams('racer', ['crazer', 'carer', 'racar', 'caers', 'racer']) => ['carer', 'racer']

anagrams('laser', ['lazing', 'lazy', 'lacer']) => []

Решение:

package kata

import (
"sort"
)

type Word string
type Words []string


func Anagrams(word string, words []string) []string {
sorted := Word(word).Sorted()

areAnagrams := func(b Word) bool {
return sorted == b.Sorted()
}

return Words(words).Filter(areAnagrams)
}

func (ctx Word) Sorted() Word {
sorted := []rune(ctx)

sort.SliceStable(sorted, func(i, j int) bool {
a := sorted[i]
b := sorted[j]

return a < b
})

return Word(sorted)
}

func (ctx Words) Filter(predicate func(x Word) bool) Words {
var filtered Words

for _, x := range ctx {
if predicate(Word(x)) {
filtered = append(filtered, x)
}
}

return filtered
}


@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM