А вы тоже любите испытания? У нас тут есть статья, в которой описывается как поставить дистрибутив Fedora на макбук с чипом Т2.
Fedora ставится полностью рабочей, с Wi-Fi, звуком и тачпадом, если не торопиться с патчами. Для айтишников такой вызов превращается в стабильную dev-машину.
🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱3❤1👍1🤩1
Go в Data Engineering + Математика = 🚀
Go всё чаще используют для подготовки данных и высоконагруженных ML-сервисов. Но чтобы говорить на одном языке с Data Scientist'ами, нужно подтянуть математику.
Приглашаем на обновленный курс с живыми вебинарами. Разбираем линейную алгебру и алгоритмы «под капотом».
Что будет:
— работа с векторами и матрицами (база вычислений);
— реализация линейной регрессии и метода наименьших квадратов;
— SVD-разложение и снижение размерности данных.
—
Первый вебинар уже в записи, отзывы отличные.
Последний шанс попасть в поток (до 9.12):
https://clc.to/LojFzw
Go всё чаще используют для подготовки данных и высоконагруженных ML-сервисов. Но чтобы говорить на одном языке с Data Scientist'ами, нужно подтянуть математику.
Приглашаем на обновленный курс с живыми вебинарами. Разбираем линейную алгебру и алгоритмы «под капотом».
Что будет:
— работа с векторами и матрицами (база вычислений);
— реализация линейной регрессии и метода наименьших квадратов;
— SVD-разложение и снижение размерности данных.
—
Первый вебинар уже в записи, отзывы отличные.
Последний шанс попасть в поток (до 9.12):
https://clc.to/LojFzw
❤3🥱2
Если у вас уже есть REST API с OpenAPI схемой то библиотека openapi openai go позволяет почти напрямую подружить его с ChatGPT.
Она берёт описание вашего API из OpenAPI и сама превращает эндпоинты в функции которые понимает OpenAI SDK для Go.
Дальше всё выглядит так: чат генерирует вызов функции модель просит например get_pets с параметром limit равно 10 а библиотека под капотом отправляет обычный HTTP запрос к вашему сервису и возвращает ответ обратно в модель.
Вам не нужно руками описывать каждую функцию для ChatGPT достаточно поддерживать актуальную OpenAPI спецификацию.
🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤4👍2
Каналы в Go уже сами по себе маленькие очереди внутри процесса. Они дают потокобезопасную доставку сообщений между горутинами и встроенное обратное давление когда потребитель не успевает читать.
Если у вас один бинарь без отдельных независимых потребителей и не требуется хранить сообщения после падения процесса то каналы закрывают большинство сценариев. Вы можете построить пайплайн обработки данных, генератор, фильтры, воркеры через цепочку каналов.
Классический пример — конвейер обработки данных. В Go его собирают из нескольких функций каждая принимает входной канал и возвращает выходной:
func generate(nums []int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for _, n := range nums {
out <- n
}
}()
return out
}
func square(in <-chan int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for n := range in {
out <- n * n
}
}()
return out
}
func main() {
in := generate([]int{1, 2, 3, 4})
out := square(in)
for n := range out {
fmt.Println(n)
}
}Такой конвейер легко поддерживать и тестировать. Если попробовать заменить его полноценным брокером с топиками получится больше конфигурации чем кода и в маленьком сервисе это будет оверхед.
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤3🌚1
Please open Telegram to view this post
VIEW IN TELEGRAM
💯20😁13❤2
📰 Первый дайджест декабря
Новый год на 7 дней ближе, а мы пока вспомним что за эти 7 дней произошло.
— JetBrains выпустили новую IDE
Ещё одна IDE с ИИ-агентом внутри. Сейчас доступен только Claude Agent, требуется подписка Anthropic. Поставить получится только на MacOS, а версию для Windows и Linux придётся подождать.
— Go 1.26 заморозили
— Nintendo 64 на Go
— Генератор статических страниц для Git-реп
— Go 1.25.5 и 1.24.11
— Устанавливаем федору на мак
🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go-разработчика
#GoLive
Новый год на 7 дней ближе, а мы пока вспомним что за эти 7 дней произошло.
— JetBrains выпустили новую IDE
Ещё одна IDE с ИИ-агентом внутри. Сейчас доступен только Claude Agent, требуется подписка Anthropic. Поставить получится только на MacOS, а версию для Windows и Linux придётся подождать.
— Go 1.26 заморозили
— Nintendo 64 на Go
— Генератор статических страниц для Git-реп
— Go 1.25.5 и 1.24.11
— Устанавливаем федору на мак
🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👾1
Forwarded from Библиотека задач по Go | тесты, код, задания
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Go | тесты, код, задания
Anonymous Quiz
12%
Тест пройдёт успешно, выведет «Это выведется?» и «2»
51%
Тест завершится с FAILED, выведет «Это выведется?», но не выведет «2»
19%
Тест завершится с FAILED, выведет «Это выведется?», «Проверка 2» и «2»
18%
Тест завершится с FAILED, выведет «Это выведется?» и «2»
🤔8
Интересно, что хочет разработчик на Go. Может, вы хотите новый проект, повышение, апгрейд рабочего места или просто выспаться и никуда не спешить.
А кто-то мечтает о маленьком, но тёплом подарке — книге, мерче или уютном вечерке без задач из джиры.
🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня разбираемся с ежедневной задачей из литкода — нам нужно посчитать количество троек чисел
(a, b, c) от 1 до n, для которых верно a²+b²=c². Это классические Пифагоровы тройки.Идея проста: перебираем все пары
(a, b), вычисляем сумму их квадратов и проверяем, является ли корень этой суммы целым числом не больше n. Если да, значит тройка валидна, увеличиваем счётчик.Компактное решение на Go:
for a := 1; a <= n; a++ {
for b := 1; b <= n; b++ {
sum := int64(a)*int64(a) + int64(b)*int64(b)
c := int(math.Sqrt(float64(sum)))
if c <= n && int64(c)*int64(c) == sum {
count++
}
}
}Такое решение вызовет лишь вопрос по времени выполнения. Есть решение куда быстрее, но для него нужно знать математику, которую можно подтянуть у нас на курсах.
🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#ReadySetGo
Please open Telegram to view this post
VIEW IN TELEGRAM
1🥱9👍5❤1🔥1🤔1
🛠 Используем deadcode для удаления неиспользуемых функций
В больших кодовых базах часто накапливаются функции, которые ни разу не вызываются — так называемый мёртвый код. Он усложняет поддержку: непонятно, можно ли смело удалять или менять такие функции.
Eсть утилита
Для запуска сканирования проекта используйте:
Инструмент выведет список мёртвого кода с указанием файлов и строк:
Если хотите понять, почему функция оказалась мёртвой, используйте флаг -whylive, который объяснит ее связь с остальной частью кода.
➡️ Документация
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go-разработчика
#GoToProduction
В больших кодовых базах часто накапливаются функции, которые ни разу не вызываются — так называемый мёртвый код. Он усложняет поддержку: непонятно, можно ли смело удалять или менять такие функции.
Eсть утилита
deadcode, которая помогает быстро находить и чистить неиспользуемые функции. Устанавливается она простой командой:go install golang.org/x/tools/cmd/deadcode@latest
Для запуска сканирования проекта используйте:
deadcode .
Инструмент выведет список мёртвого кода с указанием файлов и строк:
internal/params.go:34:6: unreachable func: WithUserRanking
internal/wallets.go:50:35 unreachable func: Transaction.CollectionName
internal/utilx/randomx/string.go:23:6: unreachable func: RandomAlphabet
Если хотите понять, почему функция оказалась мёртвой, используйте флаг -whylive, который объяснит ее связь с остальной частью кода.
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍7
Модель ошибок в Go простая — функции возвращают error, и вызывающий решает, что с ним делать. Проблема в том, что голое «вернуть наверх как есть» редко подходит для живой системы.
Когда несколько слоев кода просто пробрасывают err без описания контекста, в логах остается только формулировка из нижнего уровня. В распределенной системе это означает, что придется гадать в каком именно месте цепочки произошел сбой.
Решение — добавлять уровень контекста в каждом слое с помощью
fmt.Errorf("doing X for id=%s: %w", id, err). Так сохраняется исходная ошибка для errors.Is и errors.As и одновременно появляется понятное человеку сообщение.Для повторяющихся состояний полезно вводить именованные значения ошибок, чтобы логика могла различать их по типу, а логи оставались говорящими. В итоге, при чтении стека ошибок складывается понятный рассказ о том, что происходило.
Развёрнутый пример:
// Общая «смысловая» ошибка
var ErrTokenInvalid = errors.New("token invalid")
// Три разных места где может что то пойти не так
func parseToken(raw string) (Token error) {
const op = "parseToken"
t err := reallyParse(raw)
if err != nil {
return Token{} fmt.Errorf("%s: parse raw token failed: %w" op ErrTokenInvalid)
}
return t nil
}
func validateClaims(t Token) error {
const op = "validateClaims"
if time.Now().After(t.ExpiresAt) {
return fmt.Errorf("%s: token expired at %s: %w" op t.ExpiresAt ErrTokenInvalid)
}
if !t.HasScope("admin") {
return fmt.Errorf("%s: missing admin scope: %w" op ErrTokenInvalid)
}
return nil
}
func lookupSession(ctx context.Context store SessionStore t Token) (*Session error) {
const op = "lookupSession"
s err := store.GetByID(ctx t.SessionID)
if err != nil {
if errors.Is(err sql.ErrNoRows) {
return nil fmt.Errorf("%s: session %q not found: %w" op t.SessionID ErrTokenInvalid)
}
return nil fmt.Errorf("%s: load session %q failed: %w" op t.SessionID err)
}
return s nil
}
Можно спорить о синтаксисе и бойлерплейте, но без хороших сообщений и контекста ни один синтаксический сахар ситуацию не спасет.
🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍7
MapStore — библиотека на Go для хранения данных в мапах прямо в файловой системе.
Поддерживает сменные кодеки сериализации, шифрование ключей через keyring ОС и полнотекстовый поиск по SQLite FTS5. Подходит для задач без внешних БД, где важна простота и локальность.
Каждый ключ сохраняется в отдельный файл с именем по UUIDv7, директории партиционированы для масштаба. Шифрование опциональное, использует системный keyring без лишних настроек.
🔹 Практический интенсив «Архитектуры и шаблоны проектирования»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4😁3
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Летим зимовать ✈️
Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.
Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!
Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:
😎 Типичный программист
🐸 Библиотека программиста
🟢 Ostrovok! Tech
Теперь осталось нажать на кнопку участия под этим постом и вы в игре!
Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.
Всем удачи!
Участников: 111
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (3 дня)
Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.
Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!
Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:
Теперь осталось нажать на кнопку участия под этим постом и вы в игре!
Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.
Всем удачи!
Участников: 111
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (3 дня)
Please open Telegram to view this post
VIEW IN TELEGRAM
Вокруг высшего образования в IT до сих пор много мифов. Одни уверяют что Go разработчику хватит пет проектов на GitHub другие советуют не выходить на рынок без корочек.
🔹 ML для старта в Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Please open Telegram to view this post
VIEW IN TELEGRAM
👾1
🎮 Ретроспектива игрового движка
Ebitengine в 2025 году показал что экосистема вокруг 2D игр на Go уже вышла из стадии эксперимента и живет как зрелый проект.
Автор движка Хадзимэ Хоси отмечает что спустя 12 лет разработки темп добавления новых фич снижается но количество вышедших игр в том числе на консолях только растет.
Экосистема вокруг движка активно живет за счет геймджемов. В июне прошел Ebitengine Game Jam 2025 двухнедельный онлайн джем где участники делали игры на скрытую тему и показывали возможности библиотеки.
➡️ Источник
🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go-разработчика
#GoLive
Ebitengine в 2025 году показал что экосистема вокруг 2D игр на Go уже вышла из стадии эксперимента и живет как зрелый проект.
Автор движка Хадзимэ Хоси отмечает что спустя 12 лет разработки темп добавления новых фич снижается но количество вышедших игр в том числе на консолях только растет.
Экосистема вокруг движка активно живет за счет геймджемов. В июне прошел Ebitengine Game Jam 2025 двухнедельный онлайн джем где участники делали игры на скрытую тему и показывали возможности библиотеки.
🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3
This media is not supported in your browser
VIEW IN TELEGRAM
От первой строчки кода — до миллионов запросов в секунду.
В VK бэкендеры решают задачи, которые действительно меняют цифровой ландшафт. Узнайте об их принципах работы и драгоценных победах. По ссылке — истории из первых рук и вакансии для тех, кто не боится вызовов.
В VK бэкендеры решают задачи, которые действительно меняют цифровой ландшафт. Узнайте об их принципах работы и драгоценных победах. По ссылке — истории из первых рук и вакансии для тех, кто не боится вызовов.
👍2👾1
🆚 Каналы против итераторов
Каналы в Go удобны для конвейеров и синхронизации, но как механизм итерации по коллекции они заметно проигрывают обычному «pull» подходу.
На больших объемах данных итерация через каналы примерно в два три раза медленнее прямого pull варианта и порождает больше аллокаций на элемент.
При маленьких коллекциях каналы иногда чуть выгоднее по памяти, но выигрыш небольшой, а оверхед по времени остается заметным.
Каналы лучше оставлять для обмена сообщениями между горутинами и обработки событий.
➡️ Посмотреть итоги бенчмарка
🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go-разработчика
#GoDeep
Каналы в Go удобны для конвейеров и синхронизации, но как механизм итерации по коллекции они заметно проигрывают обычному «pull» подходу.
На больших объемах данных итерация через каналы примерно в два три раза медленнее прямого pull варианта и порождает больше аллокаций на элемент.
При маленьких коллекциях каналы иногда чуть выгоднее по памяти, но выигрыш небольшой, а оверхед по времени остается заметным.
Каналы лучше оставлять для обмена сообщениями между горутинами и обработки событий.
🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4❤1
🔄 GoLand 2025.3
GoLand продолжает развиваться и в последних версиях получил заметный апгрейд по AI, производительности и интеграции с экосистемой.
Что нового
• JetBrains прокачали AI Assistant и объединили его с Junie в единую подписку, при этом базовые фичи вроде AI completion доступны бесплатно в IDE.
• Добавили инлайн промпты — можно просто написать запрос на английском прямо в коде и IDE преобразует его в изменения без лишних окон.
• GoLand добавил локальную инспекцию, которая в фоне ищет открытые файлы и сетевые подключения, забытые без
• Улучшили Kubernetes-интеграцию — появилось больше ресурсов в Services view и управление port forwarding прямо из IDE.
• Линтер Golangci-lint с поддержкой нового форматирования включен по умолчанию.
➡️ Источник
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go-разработчика
#GoLive
GoLand продолжает развиваться и в последних версиях получил заметный апгрейд по AI, производительности и интеграции с экосистемой.
Что нового
• JetBrains прокачали AI Assistant и объединили его с Junie в единую подписку, при этом базовые фичи вроде AI completion доступны бесплатно в IDE.
• Добавили инлайн промпты — можно просто написать запрос на английском прямо в коде и IDE преобразует его в изменения без лишних окон.
• GoLand добавил локальную инспекцию, которая в фоне ищет открытые файлы и сетевые подключения, забытые без
Close. Предупреждения появляются прямо в редакторе и помогают не тащить в прод утечки дескрипторов и коннектов. • Улучшили Kubernetes-интеграцию — появилось больше ресурсов в Services view и управление port forwarding прямо из IDE.
• Линтер Golangci-lint с поддержкой нового форматирования включен по умолчанию.
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱18❤4👍4🔥2🤔1
Попалась любопытная история о том как одна незакрытая горутина превратилась в открытый кран для протечек памяти.
История начинается с сервиса который просто стал потреблять чуть больше RAM чем ожидалось без явных пиков нагрузки, а заканчивается детальным расследованием в профайлерах и разбором ошибки в работе с горутинами и контекстами.
Вот такой простой код стал причиной утечки:
func leakyWorker(ctx context.Context, messages <-chan Message) {
for {
select {
case message, ok := <-messages:
if !ok {
return
}
ctx = context.WithValue(ctx, "id", message.Id)
processMessage(ctx, message)
case <-ctx.Done():
return
}
}
}#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7🌚2👍1
🔄 Релиз csv-go v3.3.0
Иногда релиз — это не «добавили пару фич», а признание: прежний подход был ошибкой. В csv-go v3.3.0 автор честно выкинул удобный, но прожорливый FieldWriter и заменил его на новый RecordWriter.
Что нового в csv-go
• В
• Предыдущий подход с
csv-go остаётся без внешних зависимостей, использует «обычные» подходы без магии и при этом быстрее стандартной encoding/csv.
➡️ Changelog
🐸 Библиотека Go-разработчика
#GoLive
Иногда релиз — это не «добавили пару фич», а признание: прежний подход был ошибкой. В csv-go v3.3.0 автор честно выкинул удобный, но прожорливый FieldWriter и заменил его на новый RecordWriter.
Что нового в csv-go
• В
csv.Writer добавились функции NewRecord и MustNewRecord, которые возвращают RecordWriter и позволяют собирать строку как fluent‑цепочку прямо во внутренних буферах writer’а, без лишних слайсов и временных структур.• Предыдущий подход с
FieldWriter оказался дорог по памяти и приводил к escape’ам из‑за того, как Go анализирует вариадики и слайсы, поэтому API перепроектировалиcsv-go остаётся без внешних зависимостей, использует «обычные» подходы без магии и при этом быстрее стандартной encoding/csv.
#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4