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
⚔️ Поздравляем защитников Go-разработки:
▪️ горутины — элитный спецназ параллельного выполнения. Бросаешь в бой тысячи бойцов одной командой go.
▪️ встроенный форматтер — безжалостный диктатор стиля кода. Забудь свой любимый отступ в 2 пробела.
▪️ panic/recover — группа быстрого реагирования. Когда всё летит в тартарары, они тут как тут.
Признавайтесь, кто ваш любимый защитник кода? 👇
▪️ горутины — элитный спецназ параллельного выполнения. Бросаешь в бой тысячи бойцов одной командой go.
▪️ встроенный форматтер — безжалостный диктатор стиля кода. Забудь свой любимый отступ в 2 пробела.
▪️ panic/recover — группа быстрого реагирования. Когда всё летит в тартарары, они тут как тут.
Признавайтесь, кто ваш любимый защитник кода? 👇
👍26😢10🌚9😁5🤔1
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
Документация PostgreSQL — лучший источник знаний о СУБД. Но она отличается огромным объемом: не каждый разработчик осилит 3024 страницы формата А4.
Опытный бэкендер составил список самых важных сведений, которые ему самому хотелось бы знать перед началом работы с PostgreSQL. Эта подборка сэкономит вам несколько недель изучения документации, и скорее всего, пригодится для работы с другими СУБД.
👉 Список самого важного
Опытный бэкендер составил список самых важных сведений, которые ему самому хотелось бы знать перед началом работы с PostgreSQL. Эта подборка сэкономит вам несколько недель изучения документации, и скорее всего, пригодится для работы с другими СУБД.
👉 Список самого важного
🥱9🔥5❤1
🌐 Как ускорить API
#инфографика про основные методы улучшения производительности API
💬 Какой из методов вы уже используете? Делитесь в комментариях! 👇
🐸 Библиотека Go разработчика
#инфографика про основные методы улучшения производительности API
💬 Какой из методов вы уже используете? Делитесь в комментариях! 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1🔥1👾1
Forwarded from Proglib.academy | IT-курсы
Big Data и Data Science применяются не только в IT-гигантах, но и в некоммерческом секторе, где технологии анализа данных помогают оптимизировать работу организаций, собирать средства и оказывать помощь эффективнее.
▪️ Как некоммерческие организации используют Data Science.
▪️ Оптимизация фондов и финансирования с помощью аналитики.
▪️ Роль прогнозных моделей в благотворительности.
▪️ Кейсы Amnesty International, Khan Academy и DataKind.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👾1
В Go 1.24 появилась экспериментальная библиотека
testing/synctest
, которая упрощает тестирование конкурентных программ. Теперь можно контролировать время в тестах и управлять синхронизацией асинхронных операций, делая тесты более надежными и предсказуемыми.📌 Что умеет
testing/synctest
• Позволяет тестам управлять временем с фиктивными часами.
• Упрощает тестирование горутин и асинхронных процессов.
• Делает тесты стабильнее за счет детерминированной синхронизации.
Чтобы попробовать, нужно включить экспериментальную фичу:
GOEXPERIMENT=synctest go test
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17💯3❤1
🤯 Побитовые операции в Go
Побитовые операторы работают с битами (0 и 1) и применяются к целочисленным переменным с одинаковой длиной битовой последовательности. Форматная строка %b используется для представления числа в бинарном формате.
Основные побитовые операторы в Go:
1.
2.
3.
4.
5.
6.
Пример использования побитового оператора AND для проверки чётности числа:
В этом примере проверяется младший значащий бит числа. Если он равен 1, число нечётное; если 0 — чётное.
Практическое применение побитовых операторов:
➖ Криптография: шифрование данных часто требует манипуляций на уровне битов для обеспечения безопасности.
➖ Сетевые технологии: управление правами доступа и настройка сетевых протоколов могут включать операции с битовыми масками.
➖ Оптимизация производительности: побитовые операции позволяют эффективно выполнять задачи, такие как умножение или деление на степени двойки, сдвигая биты влево или вправо.
➡️ Подробнее про побитовые операторы в источнике
🐸 Библиотека Go разработчика
Побитовые операторы работают с битами (0 и 1) и применяются к целочисленным переменным с одинаковой длиной битовой последовательности. Форматная строка %b используется для представления числа в бинарном формате.
Основные побитовые операторы в Go:
1.
&
: Побитовое AND2.
|
: Побитовое OR3.
^
: Побитовое XOR4.
&^
: AND NOT (сброс бита)5.
<<
: Сдвиг влево6.
>>
: Сдвиг вправоПример использования побитового оператора AND для проверки чётности числа:
package main
import "fmt"
func main() {
x := 125
if x&1 > 0 {
fmt.Println("Нечётное")
} else {
fmt.Println("Чётное")
}
}
В этом примере проверяется младший значащий бит числа. Если он равен 1, число нечётное; если 0 — чётное.
Практическое применение побитовых операторов:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤7👾1
Работа мечты в один клик 💼
💭 Мечтаешь работать в Сбере, но не хочешь проходить десять кругов HR-собеседований? Теперь это проще, чем когда-либо!
💡 AI-интервью за 15 минут – и ты уже на шаг ближе к своей новой работе.
Как получить оффер?
📌 Зарегистрируйся здесь
📌 Пройди AI-интервью
📌 Получи обратную связь сразу же!
HR больше не тянут время – рекрутеры свяжутся с тобой в течение двух дней! 🚀
Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzquscAwp
💭 Мечтаешь работать в Сбере, но не хочешь проходить десять кругов HR-собеседований? Теперь это проще, чем когда-либо!
💡 AI-интервью за 15 минут – и ты уже на шаг ближе к своей новой работе.
Как получить оффер?
📌 Зарегистрируйся здесь
📌 Пройди AI-интервью
📌 Получи обратную связь сразу же!
HR больше не тянут время – рекрутеры свяжутся с тобой в течение двух дней! 🚀
Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzquscAwp
👍6😁5🤔3🤩2😢1