37.1K subscribers
1.46K photos
33 videos
5 files
1.62K links
加入频道
👣 go DiskUsage()

Довольно быстрый анализатор использования диска, написанный на Go.

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Вопросы и ответы для собеседования Back-end/Golang разработчика и не только

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

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 WRP«Прокси-сервер» на Go, который позволяет использовать старые браузеры в современной сети

Он работает путем рендеринга веб-страницы в изображение GIF или PNG с интерактивной картой изображений.

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 12 приёмов Go, которые помогут в работе

Работая над производственными проектами, я заметил, что часто дублирую код и использую одни и те же определённые методы, не осознавая этого до тех пор, пока не перепроверю свой код.

Чтобы избавиться от этой проблемы, я собрал небольшие скрипты, которые оказалось весьма полезным для меня. Я также подумал, что они могут быть полезными и для других.

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

Читать

@Golang_google
🖥 Шпаргалка по командам Git на русском

echo "# название" >> README.md - создание файла README.md
git init - инициализация репозитория
git add README.md - добавления файла README.md в проект
git commit -m "first commit" - получает проиндексированный снимок состояния и выполняет его коммит в историю проекта
git remote add origin https://github.com/stanruss/название.git - команда, которой устанавливается подключение к удаленному серверу и git репозиторию, размещающемуся на нем.
git push -u origin master - кзменения отправляются на удаленный сервер

git log --oneline - посмотреть все коммиты.
git checkout . - восстановить все.
git checkout "код коммита" - вернуть до состояния этого коммита.
git checkout master - вернуться в ветку мастер.

Восстановить файлы на локальном компьютере:
```git fetch --all
git reset --hard origin/master или git reset --hard origin/<название_ветки>

```git add text.txt - Добавить файл в репозиторий
git rm text.txt - Удалить файл
git status - Текущее состояние репозитория (изменения, неразрешенные конфликты и тп)
git commit -a -m "Commit description" - Сделать коммит
git push origin - Замерджить все ветки локального репозитория на удаленный репозиторий
git push origin master - Аналогично предыдущему, но делается пуш только ветки master
git push origin HEAD - Запушить текущую ветку, не вводя целиком ее название
git pull origin - Замерджить все ветки с удаленного репозитория
git pull origin master - Аналогично предыдущему, но накатывается только ветка master
git pull origin HEAD - Накатить текущую ветку, не вводя ее длинное имя
git fetch origin - Скачать все ветки с origin, но не мерджить их в локальный репозиторий
git fetch origin master - Аналогично предыдущему, но только для одной заданной ветки
git checkout -b some_branch origin/some_branch - Начать работать с веткой some_branch (уже существующей)
git branch some_branch - Создать новый бранч (ответвится от текущего)
git checkout some_branch - Переключиться на другую ветку (из тех, с которыми уже работаем)
git branch # звездочкой отмечена текущая ветвь - Получаем список веток, с которыми работаем
git branch -a # | grep something - Просмотреть все существующие ветви
git merge some_branch - Замерджить some_branch в текущую ветку
git branch -d some_branch - Удалить бранч (после мерджа)
git branch -D some_branch - Просто удалить бранч (тупиковая ветвь)
git show d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4 - Изменения, сделанные в заданном коммите
git push origin :branch-name - Удалить бранч из репозитория на сервере
git reset --hard d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4 - Откатиться к конкретному коммиту и удалить последующие (хэш смотрим в «git log»)
git push -f - залить на сервер измененные коммиты
git clean -f - Удаление untracked files

#git #github #doc #cheatsheet

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🧾 Алгебра анонимных сетей

В настоящее время существует огромное количество всеразличного рода анонимных (скрытых) сетей, начиная с теоретически доказуемых (DC-сети, Queue-сети, Entropy-сети) и заканчивая практически используемыми (Tor, I2P, Mixminion).

При таком количестве реализаций было бы очень удобно обобщить структуру всех таковых систем и привести их к общим составляющим. В результате подобных действий, мы сможем не только лучше понять то, как строятся современные анонимные сети, но и то, как их можно улучшать.

Читать

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Testcontainers для Go

Библиотека Go, упрощающая создание и очистку зависимостей на основе контейнеров для автоматизированных интеграционных/smoke тестов.

Она позволяет разработчикам программно определять контейнеры, которые следует запускать как часть теста, и очищать эти ресурсы после завершения теста.

🖥 Github

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

Проект на Go для работы с Linux-контейнерами,кль управляемые искусственным интеллектом.

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Bob — билдер SQL-запросов для Go с поддержкой PostgreSQL, MySQL и SQLite.

https://github.com/stephenafamo/bob

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 pgx - PostgreSQL Driver and Toolkit

Эта библиотека предоставляет возможность взаимодействия с базами данных PostgreSQL на языке Go с помощью быстрого и эффективного драйвера, позволяющего с легкостью выполнять SQL-запросы, транзакции и массовые операции.

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 7 интересных библиотек Go, с помощью которых вы сможете улучшить свой следующий проект

Вы когда-нибудь обнаруживали, что застряли в середине проекта, пытаясь решить сложную проблему? Что ж, вы не одиноки. Многие разработчики сталкиваются с такими проблемами при создании программного обеспечения, и именно в данных ситуациях пригождаются библиотеки.

Они помогают вам легко создавать сложные и трудоёмкие программы, экономя ваше время и усилия. С таким количеством библиотек может быть трудно решить, какую из них использовать. Итак, я составил список из 7 библиотек Go, которые обязательно помогут вам на вашем пути разработчика.

Читать

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Тестовое задание дорожки в парке

Составьте программу, реализующую алгоритм Крускала для вычисления минимальной суммарной длины дорожек в парке аттракционов. Дорожки должны быть проложены таким образом, чтобы между любыми двумя аттракционами существовал маршрут.

Программа должна считывать со стандартного потока ввода количество аттракционов и их координаты. При этом координаты каждого аттракциона задаются парой целых чисел (в декартовой системе).

Программа должна выводить в стандартный поток вывода минимальную суммарную длину дорожек с точностью до двух знаков после запятой.

Например, для входных данных

12
2 4
2 5
3 4
3 5
6 5
6 6
7 5
7 6
5 1
5 2
6 1
6 2


программа должна выводить число 14.83.

👉 Пишите ваше решение в комментариях👇

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Решаем задачи. Реализуем алгоритм «Посмотри-и-скажи» (Count and Say).

«Посмотри-и-скажи» — это последовательность чисел, начинающаяся следующим образом:

1, 11, 21, 1211, 111221, 312211, 13112221, 1113213211,… (последовательность A005150 в OEIS).

Каждое последующее число генерируется из предыдущего путём конкатенации цифры, из которой состоит группа одинаковых цифр и количества цифр в этой группе, для каждой группы одинаковых цифр в числе.

Решим задачу с leetcode: https://leetcode.com/problems/count-and-say

Пример1:
Input: n = 1
Output: '1'


Пример2:
Input: n = 4
Output: '1211'
Explanation:
countAndSay(1) = '1'
countAndSay(2) = say '1' = one 1 = '11'
countAndSay(3) = say '11' = two 1's = '21'
countAndSay(4) = say '21' = one 2 + one 1 = '12' + '11' = '1211'


Ограничения:

- 1 <= n <= 30

Решение:

func countAndSay(n int) string {
dp := make([]string, n + 1)
dp[1] = '1'
var current, next string
counter := 1

for i := 2; i <= n; i++ {
current = dp[i - 1]
next = ''

counter = 1

for j := 1; j < len(current); j++ {
if current[j - 1] == current[j] {
counter++
} else {
next += strconv.Itoa(counter) + string(current[j - 1])
counter = 1
}
}

next += strconv.Itoa(counter) + current[len(current) - 1:]

dp[i] = next
}

return dp[n]
}


👉 Пишите свое решение в комментариях👇

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

HTTP-фреймворк Go с высокой производительностью для создания микросервисов.

🖥 GIthub

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

Go-клиент для взаимодействия с OpenAI API, который поддерживает ChatGPT
GPT-3/GPT-4, DALL·E 2 и Whisper.

https://github.com/sashabaranov/go-openai

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Что выведет код ?

func foo(a []int) {
a = append(a, 7)
a[1] = 7
}

func bar(a *[]int) {
*a = append(*a, 7)
}

func main() {
a := []int{1, 2, 3, 4, 5, 6}
fmt.Printf("a[1]=%d\n", a[1])

b := a[1:3]
b[0] = 10
fmt.Printf("1. a[1]=%d\n", a[1]) // что выведет?

b = append(b, a...)
b[0] = 100
fmt.Printf("2. a[1]=%d\n", a[1]) // что выведет?

foo(a)
fmt.Printf("3. a[1]=%d\n", a[1]) // что выведет?

bar(&a)
fmt.Printf("4. a=%v\n", a) // что выведет?
}


Ответ

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 conc — набор инструментов для структурированной конкурентности в Go, которые делают обычные задачи проще и безопаснее.

conc - позиционирется как “better structured concurrency for go”

Пакет поможет сократить кучу шаблонного кода

#golang

https://github.com/sourcegraph/conc

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Benthos — инструмент для обработки данных, который может помочь вам преобразовать, фильтровать, отправлять и принимать данные из различных sources и sinks.

Он прост в развертывании и мониторинге и готов к внедрению в ваш пайплайн в виде статического бинаря, Docker-образа или бессерверной функции.

Небольшой конфиг на yml и полетели

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Conc: новая библиотека для управления конкурентностью в Go

Одной из главных фишек языка Go является удобная работа с конкурентностью. Однако, в больших проектах всё равно возникают некоторые проблемы:

утечка горутин

некорректная обработка паник в горутинах

плохая читаемость кода

необходимость писать повторяющийся код из раза в раз

Как указывает автор библиотеки в своей статье, он часто сталкивается с ошибками при работе с горутинами, что побудило его создать новую библиотеку conc.

Читать дальше
🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Задачка по циклам на проверку совпадения цифр в двух числах

Даны два числа. Определить цифры, входящие в запись как первого, так и второго числа. Программа получает на вход два числа.

Гарантируется, что цифры в числах не повторяются. Числа в пределах от 0 до 10000. Программа должна вывести цифры, которые имеются в обоих числах, через пробел. Цифры выводятся в порядке их нахождения в первом числе.

Пример: Ввод: 564 8954 Вывод: 5 4

package main
import "fmt"
func main(){
var a, b, x , y int
fmt.Scan(&a, &b)
j:=10000
for a > 0{
x = a / j
a = a % j
y = b
for y > 0 && x > 0{
if y%10 == x {
fmt.Print(x, " ")

}
y = y/10
}
j = j/10
}
}



Вариант2
package main

import "fmt"
import "strconv"

func main() {

var (
sum string
a, b int
)
for true {
fmt.Println("Enter two nums 0 <= num <= 10000")
fmt.Scan(&a, &b)
if a < 0 || a > 10000 || b < 0 || b > 10000 {
fmt.Println("Enter correct nums")
continue
} else {
break
}
}
for _, n := range strconv.Itoa(a) {
for _, k := range strconv.Itoa(b) {
if n == k {
sum += string(n) + " "
}
}
}
fmt.Println(sum)
}


👉 Пишите свое решение в комментариях👇

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
#проектирование_систем

Бесплатная книга по системному проектированию

Бесплатная книга от ByteByteGo.

📚 книга

@Golang_google