Telegram Web Link
🎥 Что посмотреть: как Go улучшает производительность компилятора TypeScript

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

Команда разработчиков TypeScript делится опытом переноса компилятора с использованием Go. Это позволяет сократить время компиляции в десятки раз и решает множество проблем с производительностью в JavaScript.

➡️ Смотреть видео

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32👾2🔥1
Нужна ли математика программисту

Можно ли стать разработчиком, если в школе ненавидел математику? А если наоборот — тащился от алгебры и геометрии, но кодить не умеешь? Эта статья раскладывает всё по полочкам: где без математики никуда, а где можно и без неё.

➡️ Что внутри:

✓ Почему все считают, что программисты — математики

✓ В каких сферах разработки можно вообще не знать математику

✓ Где хватит готовых библиотек, а где придётся разбираться в формулах

✓ Какие области программирования требуют мощного математического бэкграунда

✓ Что делать, если математика — это боль, но хочется освоить ML или Data Science

✓ Топ книг, которые помогут понять и даже полюбить математику

🔵 Чтобы знать математику, забирайте наш курс → «Математика для Data Science»

📎 Читать статью

Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤔2😢1👾1
🔥 Go и дженерики: спасение или катастрофа

Давайте поговорим о самой противоречивой фиче последних лет – дженериках.

Go 1.18 принес нам дженерики, и с тех пор сообщество разделилось на два лагеря:

«Это было необходимо!» – наконец-то можно писать более чистый и переиспользуемый код. Ad-hoc-полиморфизм не всегда удобен, а interface{} и рефлексия – зло.

«Go потерял свою простоту!» – дженерики убили лаконичность кода. Вместо понятного Go мы получили мини-Java.

💭 Согласны ли вы с тем, что дженерики спасли Go, или же это был шаг в сторону усложнения?

🐸Библиотека Go разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱7
📰 Новости минувшей недели

Подводим итоги всего, что случилось за эти 7 дней:

🎧 Новый выпуск подкаста Cup o' Goобсуждаются релизы безопасности Go 1.24.1 и 1.23.7, обновление gopls v0.18.0, а также инициативы по переписыванию проектов на Go.

🐍 Релиз Viper v1.20.0 — улучшены API поиска файлов, добавлена поддержка привязки структур. Также прекращена поддержка Go 1.20, а устаревший slog shim удалён для упрощения кода.

🌚 Go 1.24 получил новый API — теперь разработчики могут задавать корневую директорию, ограничивая доступ приложения к файловой системе и повышая безопасность.

⚙️ Microsoft переписывает компилятор TypeScript на Go

🐸Библиотека Go разработчика #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
👨‍💻 Продвинутые трюки со слайсами

Собрали для вас парочку идей как необычно работать со слайсами:

1️⃣ Удаление элемента без сохранения порядка
s[i] = s[len(s)-1]
s = s[:len(s)-1]


2️⃣Фильтрация слайса без выделения памяти
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]


3️⃣ Расширение слайса без перевыделения памяти
if cap(s)-len(s) < n {
s = append(make([]int, 0, len(s)+n), s...)
}


🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23😁4👍21
Какой тип данных получит переменная var x = 42.5

👻 — int
🌚 — float32
⚡️ — float64
🎉 — double

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
215🌚15😁9🎉3👾3
🔑 Меньше запросов, больше скорости

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

Valet Key Pattern

1️⃣ Клиент запрашивает доступ к ресурсу.

2️⃣ Сервер выдает временный токен («valet key») с ограниченными правами.

3️⃣ Клиент напрямую использует этот токен для доступа к данным

Где используется

• Доступ к объектному хранилищу (AWS S3 Pre-Signed URLs, Azure SAS Tokens)

• Ограниченный доступ к API без полной аутентификации

• Стриминг медиафайлов с временными ссылками

➡️ Подробности про паттерн

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🐧 Пингвин, покоривший мир: история взлета Linux – ОС, управляющей 96% серверов

В 1991 году на компьютере с 4 мегабайтами памяти родилась программа, которая сегодня управляет большей частью интернета, смартфонами и даже космическими аппаратами. Это история Linux, рассказанная одним из первых свидетелей.

➡️ Читать статью
➡️ Зеркало
👍153😁3
Media is too big
VIEW IN TELEGRAM
🧑‍💻 Какой язык программирования учить в 2025 году

Proglib рассказывает базу в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱24👍8
📝 Интерактивная шпаргалка по GoLand

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

Никаких сложных настроек — просто посмотрите, выберите нужные сочетания и используйте их в своей работе.

➡️ Изучить хоткеи

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱16👍3
💬 Как оставлять комментарии в чате нашего канала

В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.

⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.

Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас.

Как присоединиться к чату, чтобы бот вас не забанил

— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат

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

❗️ Если вас все-таки забанили

— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу

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

👾 Спасибо, что активно участвуете в обсуждении наших постов!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁1
⚙️ Как сделать select с таймаутом

Чтобы не ждать данные в select бесконечно нужно реализовать таймаут. В Go сделать это можно несколькими способами:

1️⃣ Использование time.After

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

select {
case msg := <-ch:
fmt.Println("Получено:", msg)
case <-time.After(2 * time.Second):
fmt.Println("Таймаут!")
}


2️⃣ Использование context.WithTimeout

Можно передавать ctx в функции, что удобно для управления таймаутами в API-запросах или базах данных.
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case msg := <-ch:
fmt.Println("Получено:", msg)
case <-ctx.Done():
fmt.Println("Таймаут:", ctx.Err())
}


3️⃣ Использование time.NewTimer

В отличие от time.After, NewTimer можно сбрасывать timer.Reset(duration), если нужно обновить таймаут.

timer := time.NewTimer(2 * time.Second)
defer timer.Stop()

select {
case msg := <-ch:
fmt.Println("Получено:", msg)
case <-timer.C:
fmt.Println("Таймаут!")
}


4️⃣ Использование ticker для периодического опроса с таймаутом

Подходит для ожидания с периодической проверкой состояния.

ticker := time.NewTicker(500 * time.Millisecond)
defer ticker.Stop()

timeout := time.After(2 * time.Second)

for {
select {
case msg := <-ch:
fmt.Println("Получено:", msg)
return
case <-ticker.C:
fmt.Println("Ожидание...")
case <-timeout:
fmt.Println("Таймаут!")
return
}
}


5️⃣ Принудительное завершение через select с done каналом

Полезно, когда нужно дождаться завершения другой горутины, но не бесконечно.

done := make(chan struct{})

go func() {
time.Sleep(3 * time.Second)
close(done)
}()

select {
case msg := <-ch:
fmt.Println("Получено:", msg)
case <-done:
fmt.Println("Горутина завершена, но данных нет.")
case <-time.After(2 * time.Second):
fmt.Println("Таймаут!")
}


Каждый из этих вариантов хорош в своей ситуации. Какой из них вам больше подходит? 💬

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥283👍3😁2
🧩💊 Алгоритмическая самоуспокоенность: как мы разучились думать своей головой

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

Это не просто влияет на настроение, но и на способность анализировать информацию, принимать решения и, главное, не становиться частью системы манипуляций.

Если вы хотите вернуться к осознанному подходу в восприятии мира и научиться фильтровать контент, то эта тема точно для вас.

🔗 Подробнее в статье

🐸 Библиотека джависта
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁1
📔 Промт дня: компилятор с объяснениями

Вы когда-нибудь задумывались, что делает Go-компилятор с вашим кодом на самом деле? Этот промт детально разберёт процесс компиляции, покажет шаги оптимизации и объяснит, почему финальный бинарник получился таким, а не иначе:
You are an expert Go compiler, known for your deep understanding of the Go programming language and your ability to efficiently compile Go code. Your goal is to take a given Go program and compile it, optimizing the output for performance and efficiency.

Here is the format you will use to compile the Go code and provide recommendations:

---
## Compilation Process
Describe the steps you would take to compile the provided Go code, including any optimizations or techniques you would use.

## Compiled Output
Provide the compiled output of the Go code, including any relevant information such as file size, execution time, or memory usage.
---


Какими промтами пользуетесь вы? Делитесь в комментариях👇

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🌚2
🚧 Неочевидные грабли в Go – когда всё кажется простым

Go прославился своей лаконичностью, прямолинейностью и минимализмом. Вы пишете код, компилируете – и вроде бы всё отлично. Но как часто случалось, что в простом коде прятались ловушки, которые потом отомстили в самый неподходящий момент?

Делитесь в комментариях своими историями о том, как вы наступали на неочевидные грабли в Go:

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


Начнём с нашего админа:
Завернул обработку запросов в горутину, тесты проходят, ошибок нет. Выкатываем в прод – а часть запросов просто исчезает. Долго разбирался, пока не осознал: главная функция завершалась раньше, чем отрабатывали горутины, и они просто не успевали исполниться.
Теперь всегда использую sync.WaitGroup


🐸Библиотека Go разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13😁5
📄 Отчёт о покрытии тестами в браузере

Чтобы наслаждаться отчётом о покрытии тестами, сделайте три простых шага:

1. Устанавливаем gocov и gocov-html:
go install github.com/axw/gocov/gocov@latest
go install github.com/matm/gocov-html@latest


2. Генерируем покрытие тестами:
go test -coverprofile=coverage.out ./...


3. Преобразуем в красивый отчёт:
gocov convert coverage.out | gocov-html > coverage.html


Теперь открываем coverage.html в браузере —
и видим, что покрыто, а что — нет.

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥41
📉🤦 152 000 уволенных в IT за год: кому это помогло?

Корпоративная бензопила снова в деле: каждый месяц 2 миллиона американцев теряют работу из-за сокращений. Но действительно ли это помогает компаниям?

🔗 Читать статью
😁41👍1😢1🥱1
2025/07/13 21:57:38
Back to Top
HTML Embed Code: