Вы начнете с простой функции тестирования и поработаете с другими инструментами и стратегиями, которые помогут вам освоить тестирование в Go.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
The JetBrains Blog
Comprehensive Guide to Testing in Go | The GoLand Blog
This article will cover everything you need to know about Go testing. You will start with a simple testing function, and work through more tools and strategies to help you master testing in Go.
Please open Telegram to view this post
VIEW IN TELEGRAM
Hilbish – интерактивная Unix-подобная оболочка написанная на Go с возможностью конфигурации на языке Lua
🖥 GitHub
@Golang_google
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
usql – универсальный командный интерфейс для работы с SQL и NoSQL базами данных
$ brew install xo/xo/usql
✔️ Установка
#github #Go
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет. Сегодня рассмотрим такую интересную структуру данных как hashmap, а именно ее реализацию в Go. Вкратце разберем что такое hashmap, как это выглядит под капотом Go 1.19. Посмотрим отличия реализации с Java и Python. Реализуем hashmap из-под капота с помощью дженериков.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Dolt – инструмент, который позволяет превратить SQL-базу в аналог git-репозитория и работать с альтернативными git-командами (clone, push, pull, merge и т.д.)
dolt $ du -h /Users/timsehn//go/bin/dolt
68M /Users/timsehn/go/bin/dolt
#Data #Go
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Несмотря на достоинства микросервисов, при их внедрении можно столкнуться с множеством проблем.
Изучение общих закономерностей в решении этих проблем привело к появлению паттернов микросервисной разработки (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
Свою результативность он уже доказал, найдя 1 676 634 секретов в результате двух этапов глубокого тестирования.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Транспилятор, который помогает преобразовать код на Go в JavaScript.
go install github.com/gopherjs/[email protected]
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как вы, наверное, знаете, на днях OpenAI выпустила языковую нейросеть ChatGPT. Этот текстовый ИИ уже побил все рекорды по хайпу. Он набрал 1 млн зарегистрированных пользователей меньше чем за неделю. Для сравнения, у Twitter достижение этой цифры заняло 2 года, у Facebook — 10 месяцев.
ChatGPT основан на предыдущем текстовом генераторе OpenAI, GPT-3. Компания строит свои модели генерации текста, тренируя алгоритмы машинного обучения на книгах, новостных статьях, страницах Википедии и миллионах веб-сайтов. Обрабатывая такие большие объемы данных, модели изучают шаблоны и структуру языка и приобретают способность интерпретировать желаемый результат запроса пользователя.
go get -u -x github.com/kkdai/chatgpt
✔️ Впечатляющие достижения ChatGPT
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Позволяет управлять всеми ресурсами (контейнеры, образы, тома, сети и многое другое) с помощью графического интерфейса и/или удобного API.
📝 Документация
@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 Про плов и то, что объединяет
Разговор с тимлидом команды 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 Про плов и то, что объединяет
YouTube
Команда Serverless в Yandex Cloud, топ-качества разработчиков
Сегодня говорим про продуктовые исследования, фичеборды, виртуальные команды и топ-качества разработчиков команды бессерверных вычислений в Yandex Cloud.
Смотрите новый выпуск подкаста "Про людей".
00:00 Приветствие
01:19 Как держать темп разработки в…
Смотрите новый выпуск подкаста "Про людей".
00:00 Приветствие
01:19 Как держать темп разработки в…
Задача разработать сервис, через который продавцы смогут передавать нам свои товары пачками в формате 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
Необходимо создать 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 должен быть легким в работе и развитии.
Новый инструмент 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
Go Инструмент для исправления опечаток.
go install github.com/sheepla/og@latest
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Задача
Необходимо создать сервис для хранения и подачи объявлений. Объявления должны храниться в базе данных. Сервис должен предоставлять 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 – инструмент для передачи файлов по Wi-Fi с компьютера на мобильное устройство, по QR-коду, не выходя из терминала
При вызове команды qrcp поднимается автоматически на случайном порте.
go get github.com/claudiodangelis/qrcp
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Эта статья содержит бесплатные онлайн-курсы по изучению Golang на таких сайтах, как freeCodecamp, YouTube, Udemy и Coursera, так же мы порекомендуем вам полезные телеграм каналы для изучения Go.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Пакет с Набором тривиальных функций, которые могут упростить жизнь при написание кода.
go get github.com/samber/lo@v1
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Начнем с простой задачи
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