Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🐳 Делаем конкурента DeepSeek R1-Zero на домашней пекарне: метод GRPO в Unsloth
Обычно LLM требуют мощных GPU, но теперь даже на видеокарте с ограниченной памятью можно обучать модели логического рассуждения.
💡 Фишка — новый алгоритм GRPO, который позволяет моделям развивать логическое мышление без вмешательства человека.
Подробнее в нашей статье: https://proglib.io/sh/MyBCbq9is5
Обычно LLM требуют мощных GPU, но теперь даже на видеокарте с ограниченной памятью можно обучать модели логического рассуждения.
💡 Фишка — новый алгоритм GRPO, который позволяет моделям развивать логическое мышление без вмешательства человека.
Подробнее в нашей статье: https://proglib.io/sh/MyBCbq9is5
👍4❤2
🌳 Бинарное дерево поиска (BST) в Go
BST — это бинарное дерево, где:
• Значение в левой ветви меньше значения в узле.
• Значение в правой ветви больше значения в узле.
Такое свойство обеспечивает эффективный поиск, вставку и удаление — в среднем за O(log n).
Пример реализации:
Как это работает?
1️⃣ Вставка:
• Если значение меньше текущего узла, идём в левое поддерево.
• Если больше — в правое.
• Если узел пуст, создаём новый.
2️⃣ Поиск:
• Сравниваем искомое значение с текущим.
• Меньше — идём влево, больше — вправо, равное — нашли.
3️⃣ Обход:
• In-order обход (LNR) обходит узлы в отсортированном порядке.
💬 А вы уже реализовали BST? Делитесь опытом и вопросами в комментариях!
🐸 Библиотека Go разработчика
BST — это бинарное дерево, где:
• Значение в левой ветви меньше значения в узле.
• Значение в правой ветви больше значения в узле.
Такое свойство обеспечивает эффективный поиск, вставку и удаление — в среднем за O(log n).
Пример реализации:
// Node — узел бинарного дерева
type Node struct {
Value int
Left *Node
Right *Node
}
// Insert — вставка нового значения в дерево
func (n *Node) Insert(value int) {
if value < n.Value {
if n.Left == nil {
n.Left = &Node{Value: value}
} else {
n.Left.Insert(value)
}
} else if value > n.Value {
if n.Right == nil {
n.Right = &Node{Value: value}
} else {
n.Right.Insert(value)
}
}
}
// Search — поиск значения в дереве
func (n *Node) Search(value int) *Node {
if n == nil {
return nil
}
if n.Value == value {
return n
} else if value < n.Value {
return n.Left.Search(value)
} else {
return n.Right.Search(value)
}
}
// InOrderTraversal — обход дерева в порядке (LNR)
func (n *Node) InOrderTraversal() {
if n == nil {
return
}
n.Left.InOrderTraversal()
fmt.Print(n.Value, " ")
n.Right.InOrderTraversal()
}
Как это работает?
• Если значение меньше текущего узла, идём в левое поддерево.
• Если больше — в правое.
• Если узел пуст, создаём новый.
• Сравниваем искомое значение с текущим.
• Меньше — идём влево, больше — вправо, равное — нашли.
• In-order обход (LNR) обходит узлы в отсортированном порядке.
💬 А вы уже реализовали BST? Делитесь опытом и вопросами в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍17🥱4😁2
⚠️ В машинном обучении, как в любви: слишком идеальные предсказания – это подозрительно!
Когда модель слишком прилипчива к тренировочным данным, результат оказывается… ну, как в отношениях, когда всё кажется идеальным, но реальность ломает сердце.
❌ Оверфиттинг (Overfitting) – модель так хорошо запомнила тренировочные данные, что на реальных данных начинает путаться.
💔 В любви: «Я выбрал идеального партнёра по профилю, а в жизни выяснилось, что его «идеальность» – всего лишь иллюзия!»
❌ Андерфиттинг (Underfitting) – модель обучена настолько поверхностно, что предсказывает мэтчи случайным образом.
💔 В любви: «Мне нравятся только люди с именем Александр, а всех остальных я даже не замечаю – бедный фильтр!»
❌ Неправильный выбор фичей (Feature Selection Fail) – если модель опирается на неважные признаки, она предсказывает мэтчи хуже случайности.
💔 В любви: «Ты любишь авокадо? Значит, мы созданы друг для друга!» – а потом оказывается, что это вовсе не про важное.
🎯 На вебинаре мы разобрали, как избежать этих ошибок и создать работающую модель для speed dating, которая на самом деле помогает находить любовь! Вчера мы не просто говорили о любви – мы её предсказывали!
🔥 Спасибо всем, кто был с нами и участвовал!
💘 Как же это было?
Если ты пропустил вебинар или хочешь пересмотреть запись – просто перейди по [ссылке] и получи видео 😉
Когда модель слишком прилипчива к тренировочным данным, результат оказывается… ну, как в отношениях, когда всё кажется идеальным, но реальность ломает сердце.
❌ Оверфиттинг (Overfitting) – модель так хорошо запомнила тренировочные данные, что на реальных данных начинает путаться.
💔 В любви: «Я выбрал идеального партнёра по профилю, а в жизни выяснилось, что его «идеальность» – всего лишь иллюзия!»
❌ Андерфиттинг (Underfitting) – модель обучена настолько поверхностно, что предсказывает мэтчи случайным образом.
💔 В любви: «Мне нравятся только люди с именем Александр, а всех остальных я даже не замечаю – бедный фильтр!»
❌ Неправильный выбор фичей (Feature Selection Fail) – если модель опирается на неважные признаки, она предсказывает мэтчи хуже случайности.
💔 В любви: «Ты любишь авокадо? Значит, мы созданы друг для друга!» – а потом оказывается, что это вовсе не про важное.
🎯 На вебинаре мы разобрали, как избежать этих ошибок и создать работающую модель для speed dating, которая на самом деле помогает находить любовь! Вчера мы не просто говорили о любви – мы её предсказывали!
🔥 Спасибо всем, кто был с нами и участвовал!
💘 Как же это было?
Если ты пропустил вебинар или хочешь пересмотреть запись – просто перейди по [ссылке] и получи видео 😉
🥱4👾4
Forwarded from Библиотека питониста | Python, Django, Flask
📢 Где «выстрелит» твой стартап: 8 площадок для запуска и продвижения IT-проекта
Собрали для тебя проверенные места, где можно бесплатно показать свой продукт первым пользователям и даже найти инвестора. Работает как для зарубежного, так и для российского рынка.
👍 Ссылка на статью: https://proglib.io/sh/LrcFGsnuyU
Собрали для тебя проверенные места, где можно бесплатно показать свой продукт первым пользователям и даже найти инвестора. Работает как для зарубежного, так и для российского рынка.
👍 Ссылка на статью: https://proglib.io/sh/LrcFGsnuyU
👍3
🎧 Подкаст Cup o' Go #100 — вечеринка в честь релиза Go 1.24
Обсудили ключевые изменения в Go 1.24, работу с SQL NULL и компиляцию shell-скриптов в бинарники.
Не обошлось без докладов с GopherCon и новостей об окончании поддержки Go 1.14-1.19.
🖇 Слушать обсуждение новостей
🐸 Библиотека Go разработчика #подкаст
Обсудили ключевые изменения в Go 1.24, работу с SQL NULL и компиляцию shell-скриптов в бинарники.
Не обошлось без докладов с GopherCon и новостей об окончании поддержки Go 1.14-1.19.
🖇 Слушать обсуждение новостей
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Forwarded from Proglib.academy | IT-курсы
Многие говорят о лидерстве, коммуникации и умении презентовать себя. Но будущее требует других навыков. Разбираем неочевидные soft skills, которые помогут прокачаться в IT и за рубежом.
▪️ Эмоциональный интеллект
▪️ Умение упрощать
▪️ Антихрупкость
▪️ Мультикультурность
▪️ Предпринимательское мышление
Эти навыки решают. Кто хочет оставаться в топе — развиваемся уже сейчас.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱5❤2👍2🔥1
🏭 WebAssembly: новые возможности в Go 1.24
Go 1.24 добавляет директиву
Теперь можно создавать WASI-реакторы для многократных вызовов без переинициализации — идеально для долгоживущих WASM-приложений.
➡️ Подробнее на go.dev
🐸 Библиотека Go разработчика
Go 1.24 добавляет директиву
go:wasmexport
, упрощая экспорт функций в WebAssembly и улучшая взаимодействие с WASI. Теперь можно создавать WASI-реакторы для многократных вызовов без переинициализации — идеально для долгоживущих WASM-приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤3
🔠 Погружение в UTF-8
Раньше ASCII поддерживал только 128 символов. UTF-8 решил эту проблему, используя 1–4 байта для кодирования символов Unicode. Go, ориентированный на современные веб-приложения, встроил поддержку UTF-8 на базовом уровне.
➖ Работа с UTF-8 в Go:
В Go строки — это срезы байтов. Это значит, что функция
Результат покажет, что
➖ Ошибки и подводные камни:
Одна из распространённых ошибок — неверное предположение, что каждый символ занимает 1 байт. При обрезке строк или подсчёте символов важно использовать utf8-функции.
Также стоит помнить о валидации. Функция
📎 Подробнее про UTF-8 в Go
🐸 Библиотека Go разработчика
Раньше ASCII поддерживал только 128 символов. UTF-8 решил эту проблему, используя 1–4 байта для кодирования символов Unicode. Go, ориентированный на современные веб-приложения, встроил поддержку UTF-8 на базовом уровне.
В Go строки — это срезы байтов. Это значит, что функция
len()
покажет длину в байтах, а не количество символов. Чтобы правильно работать с UTF-8, Go предоставляет пакет unicode/utf8:import "unicode/utf8"
func main() {
str := "Hello, 世界"
fmt.Println("Bytes:", len(str))
fmt.Println("Runes:", utf8.RuneCountInString(str))
}
Результат покажет, что
len()
выдаст 13 байтов, хотя символов всего 9. Это потому, что 世界 занимает по 3 байта каждый.Одна из распространённых ошибок — неверное предположение, что каждый символ занимает 1 байт. При обрезке строк или подсчёте символов важно использовать utf8-функции.
Также стоит помнить о валидации. Функция
utf8.Valid()
поможет убедиться, что данные корректны:if !utf8.Valid(data) {
log.Fatal("Invalid UTF-8 data")
}
📎 Подробнее про UTF-8 в Go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤3
TCP обеспечивает передачу данных без потерь — идеальный выбор для чата. В Go есть встроенный пакет net, который работает с TCP-соединениями.
Основные шаги:
net.Listen()
для ожидания подключений.TCP-чат на Go — отличный проект, чтобы понять сетевое программирование, горутины и каналы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥7🥱6
Многоточие (
...
) в Go — инструмент, который делает язык более гибким и удобным для работы с функциями, принимающими переменное количество аргументов. Разберемся, как и где его использовать.
Основное применение многоточия в Go — это определение вариативных функций. Такие функции могут принимать любое количество аргументов. Пример:
func example(args ...int) {
for _, arg := range args {
fmt.Println(arg)
}
}
Вызывать эту функцию можно с разным количеством аргументов:
example(1, 2, 3)
example(4, 5, 6, 7, 8)
Многоточие позволяет передавать срезы в вариативные функции. Это удобно, когда у вас уже есть срез, и вы хотите передать его элементы в функцию. Пример:
slice := []int{1, 2, 3}
example(slice...)
В командной строке Go многоточие используется как подстановочный знак, обозначающий "всё в этой директории и всех поддиректориях". Это упрощает выполнение команд для всех файлов в проекте.
Многоточие можно использовать с интерфейсами для создания вариативных интерфейсов, что позволяет функциям принимать аргументы различных типов.
Пример:
func printAll(args ...interface{}) {
for _, arg := range args {
fmt.Println(arg)
}
}
Вызов функции:
printAll(1, "string", 3.14)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥4❤2😁1👾1
🔐 Google OAuth 2.0 в Go и React.js
OAuth 2.0 — популярный протокол аутентификации, который позволяет безопасно работать с аккаунтами Google. Сейчас разберём как настроить проект с его использованием.
➖ Настройка Google Cloud:
Создайте OAuth-клиент в Google Cloud Console. Сохраните client_id и client_secret.
➖ Бэкенд на Go:
Используйте пакет
Настройте маршруты: /login, /callback, /logout.
Храните access_token и refresh_token в httpOnly cookies.
Пример:
➖ Фронтенд на React:
Создайте AuthProvider с контекстом.
Настройте Axios-интерцепторы для обновления токенов:
➖ Ошибки и нюансы:
• Используйте httpOnly cookies для безопасности.
• Не храните client_secret на фронтенде.
• Обновляйте токены до их истечения, чтобы избежать разлогина пользователей.
📎 Подробный гайд с кодом
🐸 Канал Go-разработчика
OAuth 2.0 — популярный протокол аутентификации, который позволяет безопасно работать с аккаунтами Google. Сейчас разберём как настроить проект с его использованием.
Создайте OAuth-клиент в Google Cloud Console. Сохраните client_id и client_secret.
Используйте пакет
golang.org/x/oauth2
.Настройте маршруты: /login, /callback, /logout.
Храните access_token и refresh_token в httpOnly cookies.
Пример:
conf := &oauth2.Config{ClientID: "...", RedirectURL: "..."}
url := conf.AuthCodeURL("state")
Создайте AuthProvider с контекстом.
Настройте Axios-интерцепторы для обновления токенов:
axios.interceptors.response.use(resp => resp, async error => { ... });
• Используйте httpOnly cookies для безопасности.
• Не храните client_secret на фронтенде.
• Обновляйте токены до их истечения, чтобы избежать разлогина пользователей.
📎 Подробный гайд с кодом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3👏2
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
👍4
Starskey – это key-value хранилище, написанное на Go. Оно основано на концепции LSM-дерева (log-structured merge tree).
Преимущества:
Пример:
package main
import (
"fmt"
"log"
"github.com/starskey-io/starskey"
)
func main() {
// Открываем или создаём новую базу
db, err := starskey.Open("data.db", nil)
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Записываем данные
err = db.Put([]byte("username"), []byte("admin"))
if err != nil {
log.Fatal(err)
}
// Читаем данные
value, err := db.Get([]byte("username"))
if err != nil {
log.Fatal(err)
}
fmt.Println("Username:", string(value))
}
Starskey подходит для встроенных решений, кеширования, локального хранения данных и даже небольших NoSQL-баз.
Please open Telegram to view this post
VIEW IN TELEGRAM
👾10👍3
🎮 Minecraft на Go
Мы нашли полноценную игру в стиле Minecraft, написанную на Go с OpenGL.
Этот проект – пример чистого кода и глубокого понимания 3D-графики, физики и генерации мира.
➖ Как запустить
1. Склонируйте репозиторий
2. Запустите
Это не просто игра, а учебный материал для тех, кто хочет изучить разработку 3D-игр без движков.
➡️ Репозиторий проекта на GitHub
🐸 Канал Go-разработчика
Мы нашли полноценную игру в стиле Minecraft, написанную на Go с OpenGL.
Этот проект – пример чистого кода и глубокого понимания 3D-графики, физики и генерации мира.
1. Склонируйте репозиторий
git clone https://github.com/GianlucaP106/minecraft && cd minecraft
2. Запустите
go run .
Это не просто игра, а учебный материал для тех, кто хочет изучить разработку 3D-игр без движков.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👾14👍7
В Go 1.24 map реализован с использованием швейцарской таблицы (Swiss Table). Разберёмся, что это значит для разработчиков и как это влияет на производительность.
Швейцарская таблица – это продвинутый алгоритм хеш-таблиц, разработанный Google для библиотеки Abseil. Она отличается высокой плотностью хранения данных и уменьшенной нагрузкой на кеш процессора.
• Компактное представление — хранит метаданные ключей рядом с хешами, что сокращает использование памяти.
• Эффективное разрешение коллизий — используется пробирование с SIMD: процессор обрабатывает сразу несколько элементов одновременно.
• Быстрое сканирование — поиск ключей стал намного быстрее за счёт оптимизированных операций.
Мапа в Go теперь занимает на 15-25% меньше памяти, а производительность ускорилась на 5-15%. Если в вашем коде активно используется map, он автоматически станет быстрее, потому что внешне ничего не поменялось.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🔥12❤3
👉👈 Алгоритм двух указателей
Алгоритм двух указателей – это метод оптимизированного перебора данных с использованием двух индексов, которые двигаются навстречу друг другу, в одном направлении или с разной скоростью.
Как это работает
1️⃣ Два указателя устанавливаются в разные точки структуры данных (например, на начало и конец массива).
2️⃣ Они перемещаются в зависимости от условий задачи, например:
• Навстречу друг другу — для поиска пар, например, в задачах на сумму двух чисел.
• В одном направлении, но с разной скоростью — для удаления дубликатов или поиска подстроки.
3️⃣ Процесс продолжается, пока указатели не пересекутся или не выполнится нужное условие.
Виды двух указателей
➡️ Два указателя навстречу друг другу
Пример: Проверка, является ли строка палиндромом.
1. Один указатель (i) начинает с начала, другой (j) – с конца строки.
2. Если s[i] == s[j], двигаем оба указателя к центру.
3. Если где-то символы не совпадают – это не палиндром.
➡️ Два указателя в одном направлении
Пример: Удаление дубликатов из отсортированного массива.
1. Один указатель (i) двигается по массиву, второй (j) отслеживает уникальные элементы.
2. Если встречаем новый элемент, перемещаем его вперед.
➡️ Быстрый и медленный указатели
Пример: Нахождение цикла в связном списке (алгоритм Флойда).
1. Медленный указатель движется по одному шагу, быстрый на два шага.
2. Если fast догоняет slow, значит, есть цикл.
3. Если fast достиг конца (nil), цикла нет.
Алгоритм двух указателей – это оптимальный способ обработки массивов и списков, уменьшая сложность O(N²) → O(N).
🐸 Канал Go-разработчика
Алгоритм двух указателей – это метод оптимизированного перебора данных с использованием двух индексов, которые двигаются навстречу друг другу, в одном направлении или с разной скоростью.
Как это работает
• Навстречу друг другу — для поиска пар, например, в задачах на сумму двух чисел.
• В одном направлении, но с разной скоростью — для удаления дубликатов или поиска подстроки.
Виды двух указателей
Пример: Проверка, является ли строка палиндромом.
func isPalindrome(s string) bool {
i, j := 0, len(s)-1
for i < j {
if s[i] != s[j] {
return false
}
i++
j--
}
return true
}
1. Один указатель (i) начинает с начала, другой (j) – с конца строки.
2. Если s[i] == s[j], двигаем оба указателя к центру.
3. Если где-то символы не совпадают – это не палиндром.
Пример: Удаление дубликатов из отсортированного массива.
func removeDuplicates(nums []int) int {
if len(nums) == 0 {
return 0
}
j := 0
for i := 1; i < len(nums); i++ {
if nums[i] != nums[j] {
j++
nums[j] = nums[i]
}
}
return j + 1
}
1. Один указатель (i) двигается по массиву, второй (j) отслеживает уникальные элементы.
2. Если встречаем новый элемент, перемещаем его вперед.
Пример: Нахождение цикла в связном списке (алгоритм Флойда).
type ListNode struct {
Val int
Next *ListNode
}
func hasCycle(head *ListNode) bool {
slow, fast := head, head
for fast != nil && fast.Next != nil {
slow = slow.Next
fast = fast.Next.Next
if slow == fast {
return true
}
}
return false
}
1. Медленный указатель движется по одному шагу, быстрый на два шага.
2. Если fast догоняет slow, значит, есть цикл.
3. Если fast достиг конца (nil), цикла нет.
Алгоритм двух указателей – это оптимальный способ обработки массивов и списков, уменьшая сложность O(N²) → O(N).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥11❤3🤔1🤩1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁44👍2🔥2🌚1
Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/7af8c5cc
🧐 Кому подойдет?
Разработчикам, которые знают любой объектно-ориентированный язык программирования и хотят углубиться в архитектурные паттерны.
🎮 Как проходит обучение?
В течение всего интенсива вы будете создавать игру «Звездные войны» и применять ключевые архитектурные паттерны. В процессе изучите:
– Как строить гибкую архитектуру, которая не замедляет разработку
– Как применять IoC-контейнеры и писать модульные тесты
– Как использовать SOLID за пределами ООП
– Как внедрять CI/CD и снижать технический долг
👉 Подробная программа обучения
А по промокоду
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🥱3🌚1
В версии Go 1.24 появилась новая функция для управления зависимостями инструментов разработки.
Теперь вы можете добавлять, обновлять и удалять такие инструменты, как staticcheck, govulncheck и другие, используя флаг
-tool
с командой go get
.Чтобы добавить инструмент, выполните команду:
go get -tool путь_к_пакету@версия
Например, для добавления stringer и govulncheck:
go get -tool golang.org/x/tools/cmd/stringer
go get -tool golang.org/x/vuln/cmd/govulncheck
После этого в файле go.mod появится секция tool, содержащая добавленные инструменты.
Запуск инструментов осуществляется через команду go tool:
go tool имя_инструмента [аргументы]
Для обновления инструмента до последней версии используйте:
go get -tool путь_к_пакету
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤6🎉2🌚2👾1
🍋 Запоздалый #самыйсок за январь
Собрали для вас самые интересные статьи за прошедший месяц!
💡 Хотите порешать задачи?
📝 NoCopy Convention в Go: оптимизация работы с памятью
👨💻 Почему Go-разработчикам полезны тренировки на LeetCode (и почему нет)
🔄 Обновление Revive
🐸 Библиотека Go разработчика
Собрали для вас самые интересные статьи за прошедший месяц!
💡 Хотите порешать задачи?
📝 NoCopy Convention в Go: оптимизация работы с памятью
🔄 Обновление Revive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👾1
🎧 Новый выпуск подкаста о Go
В свежем выпуске подкаста Cup o' Go ведущие обсудили актуальные темы из мира Go и провели интервью с Карлосом Беккером.
➖ Предстоящие обновления безопасности: анонсированы обновления для пакетов
➖ Анализ рынка труда: обзор статьи Гергеля Ороса "State of the startup and scaleup hiring markets", где рассматриваются текущие тенденции найма в стартапах и растущих компаниях.
➖ Тестирование конкурентного кода: обсуждение блога Дэмиена Нила "Testing concurrent code with testing/synctest", посвященного методам тестирования конкурентных программ в Go.
➖ Предложения по улучшению: рассмотрение возможного принятия предложения о поддержке контентной неготации в пакете net/http.
➖ Интересные проекты: упоминание проектов "Minecraft from scratch" и "MyNav" в рамках короткого обзора.
🖇 Слушать обсуждение новостей
🐸 Библиотека Go разработчика #подкаст
В свежем выпуске подкаста Cup o' Go ведущие обсудили актуальные темы из мира Go и провели интервью с Карлосом Беккером.
golang.org/x/oauth2
и golang.org/x/crypto
, которые планируются на понедельник, 24 февраля.🖇 Слушать обсуждение новостей
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1