Какие из перечисленных хард скиллов, по вашему мнению, наиболее важны для разработчика? Можно выбрать несколько вариантов.
Anonymous Poll
53%
Знание языков программирования
66%
Понимание алгоритмов и структур данных
51%
Работа с базами данных и SQL
35%
Опыт работы с системами контроля версий
26%
Опыт работы с фреймворками и библиотеками
18%
Понимание принципов DevOps
67%
Знание основных принципов проектирования и архитектуры ПО
23%
Опыт тестирования ПО
12%
Знание математики
4%
Свой вариант (напишу в комментарии)
🧠Решаем задачи по Go и практикуемся на квизах
Напоминаем, что у нас появился новый канал с задачами по Go, квизами и кодом. Подписывайтесь, чтобы практиковаться вместе с нами.
👉Перейти в канал
Напоминаем, что у нас появился новый канал с задачами по Go, квизами и кодом. Подписывайтесь, чтобы практиковаться вместе с нами.
👉Перейти в канал
👍3😁1
Go 1.21 включает предварительную версию изменения области видимости цикла for, которое команда Go планирует добавить в Go 1.22, устраняя одну из наиболее распространенных ошибок Go.
🤔 В чем сыр-бор?
• На первом скрине код должен вывести "a,b,c", верно?
• На самом деле мы получаем "c,c,c". Причины такого поведения описаны здесь.
• Эту проблему также можно воспроизвести без конкурентности (второй пример).
• Ошибка такого рода вызвала проблемы в проде у многих компаний, включая публично задокументированную проблему в Lets Encrypt.
📌В Go 1.22 команда Go планирует измененить циклы for, чтобы они имели область видимости для каждой итерации, а не для каждого цикла.
• Чтобы обеспечить обратную совместимость с существующим кодом, новая семантика будет применяться только в пакетах, содержащихся в модулях, которые объявляют go >= 1.22 в файлах go.mod.
• Go 1.21 включает предварительный просмотр изменения области видимости. Если вы скомпилируете свой код с переменной окружения GOEXPERIMENT=loopvarset, новая семантика будет применена ко всем циклам.
• На первом скрине код должен вывести "a,b,c", верно?
• На самом деле мы получаем "c,c,c". Причины такого поведения описаны здесь.
• Эту проблему также можно воспроизвести без конкурентности (второй пример).
• Ошибка такого рода вызвала проблемы в проде у многих компаний, включая публично задокументированную проблему в Lets Encrypt.
📌В Go 1.22 команда Go планирует измененить циклы for, чтобы они имели область видимости для каждой итерации, а не для каждого цикла.
• Чтобы обеспечить обратную совместимость с существующим кодом, новая семантика будет применяться только в пакетах, содержащихся в модулях, которые объявляют go >= 1.22 в файлах go.mod.
• Go 1.21 включает предварительный просмотр изменения области видимости. Если вы скомпилируете свой код с переменной окружения GOEXPERIMENT=loopvarset, новая семантика будет применена ко всем циклам.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💯20🤔8👍6🔥5
Go-разработчик Ильдар Карымов делится опытом разработки Telegram-бота, который автоматически достаёт свежие новости и статьи про Go из разных источников, генерирует для них саммари с помощью ChatGPT, после чего публикует их в Telegram-канал.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍2😁1
Таненбаум vs Торвальдс (микроядро vs монолит)
Старый добрый профессиональный спор, который перерос в холивар. Первыми его начали известные разработчики Эндрю Таненбаум и Линус Торвальдс в начале 90-х в одной из новостных групп «Юзнета».
Таненбаум и Торвальдс холиварили из-за архитектуры ядра ОС. Первый утверждал, что лучше использовать микроядра, второй — монолитное ядро. И сколько раз они не возвращались к публичному обсуждению архитектуры ядра, каждый оставался при своём мнении.
А что сейчас? Да ничего не изменилось. Холивар разгорается при обсуждении абсолютно любой темы.
Любите холиварить?
👍 — конечно — в споре рождается истина
🤔 — ненавижу — только мешает работать
💯 — смотря где и при каких обстоятельствах
#холивар
Старый добрый профессиональный спор, который перерос в холивар. Первыми его начали известные разработчики Эндрю Таненбаум и Линус Торвальдс в начале 90-х в одной из новостных групп «Юзнета».
Таненбаум и Торвальдс холиварили из-за архитектуры ядра ОС. Первый утверждал, что лучше использовать микроядра, второй — монолитное ядро. И сколько раз они не возвращались к публичному обсуждению архитектуры ядра, каждый оставался при своём мнении.
А что сейчас? Да ничего не изменилось. Холивар разгорается при обсуждении абсолютно любой темы.
Любите холиварить?
👍 — конечно — в споре рождается истина
🤔 — ненавижу — только мешает работать
💯 — смотря где и при каких обстоятельствах
#холивар
💯70👍38🥱16🤔11
Profiling_Go_Applications_in_the_Right_Way_with_Examples_by_Abdulsamet.pdf
5.5 MB
Правильное профилирование приложений с примерами: гайд для Go-разработчика
Профилирование — важный метод анализа приложений и выявления узких мест, снижающих производительность приложения.
Узнайте, как определить, какие части кода выполняются слишком долго или потребляют слишком много ресурсов.
👀 Читать
Профилирование — важный метод анализа приложений и выявления узких мест, снижающих производительность приложения.
Узнайте, как определить, какие части кода выполняются слишком долго или потребляют слишком много ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🤔 Конкурентность — это не параллелизм
Перед вами полное изложение доклада Роба Пайка Concurrency is Not Parallelism. Иллюстрации и диаграммы воссозданы, исходный код взят дословно со слайдов, за исключением комментариев, которые в некоторых местах были расширены.
🤩 Читать
Перед вами полное изложение доклада Роба Пайка Concurrency is Not Parallelism. Иллюстрации и диаграммы воссозданы, исходный код взят дословно со слайдов, за исключением комментариев, которые в некоторых местах были расширены.
🤩 Читать
👍15🔥4
Ловите плейлист с мини-лекциями от Go-разработчика Ильдара Карымова или смотрите интересующую тему отдельно:
🌐 Тесты: что нужно знать разработчику
🌐 Всё про конкурентность в Go
🌐 Туториал по дженериками Go
🌐 Golangci-lint: повышаем качество кода на Go
🌐 Туториал по интерфейсам в Go
🌐 Завершаем программы изящно: graceful shutdown в Go
🌐 Туториал по работе с пакетом Context в Go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22💯2🌚1
Это не реклама, а обзор книги «Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд.»
Третье издание «Golang для профи» исследует практические возможности Go и описывает такие продвинутые темы, как конкурентность и работа сборщика мусора Go, использование Go с Docker, разработка мощных утилит командной строки, обработка данных в формате JSON и взаимодействие с базами данных.
Кроме того, книга дает дополнительные сведения о работе внутренних механизмов Go, знание которых позволит оптимизировать код на Go и использовать типы и структуры данных новыми и необычными способами.
👀 Читать
Третье издание «Golang для профи» исследует практические возможности Go и описывает такие продвинутые темы, как конкурентность и работа сборщика мусора Go, использование Go с Docker, разработка мощных утилит командной строки, обработка данных в формате JSON и взаимодействие с базами данных.
Кроме того, книга дает дополнительные сведения о работе внутренних механизмов Go, знание которых позволит оптимизировать код на Go и использовать типы и структуры данных новыми и необычными способами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤2🌚1
python -m SimpleHTTPServer <port>
, только на Go.Развернуть статический файловый сервер на Go всегда было просто:
package main
import "net/http"
func main() {
port := ":8080"
handler := http.FileServer(http.Dir("."))
http.ListenAndServe(port, handler)
}
Но у Eli Bendersky есть другой способ. Стоит попробовать:
$
go run github.com/eliben/static-server@latest
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - eliben/static-server: A simple, zero-configuration HTTP server CLI for serving static files
A simple, zero-configuration HTTP server CLI for serving static files - eliben/static-server
👍19
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
🔝 Приоритизация задач по методу MoSCoW: как за 5 минут научиться грамотно расставлять приоритеты
Читать статью
#туториал
Читать статью
#туториал
👍3⚡1🔥1🤔1🥱1
📌Внутри следующие категории:
• Algorithms
• Data
• Drivers
• File systems
• Getting and/or Setting
• Implementation
• Membership
• Parsing
• Process control
• Protocols
• Reading and/or Writing
• Representation
• Subtypes
🔗 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Gist
Categorizing Go Interfaces from the StdLib.md
Categorizing Go Interfaces from the StdLib.md. GitHub Gist: instantly share code, notes, and snippets.
🔥13👍5
Скорее всего, вы слышали о книге Teiva Harsanyi 100 Go Mistakes and How to Avoid Them. Возможно, вы не знаете, что в общем доступе есть сокращенная версия книги. В ней собраны все ошибки из книги.
🔗GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17
Битва за производительность: SparseMap vs GenerationsMap
Пока Искандер Шарипов занимался своими геймдев-задачами, натолкнулся на то, что get и set у sparse map из статьи Расса Кокса довольно медленные. Из-за чего преимущество быстрого reset иногда перекрывались.
То есть: что банальный слайс, что sparse map, давали +/- одинаковое время исполнения. В одном случае reset занимал больше времени, а в другом — время исполнения росло из-за более дорогих get+set.
А вот штука, описанная в статье, умеет и в мгновенный reset, и в более эффективные get+set.
🔗 Читать
Пока Искандер Шарипов занимался своими геймдев-задачами, натолкнулся на то, что get и set у sparse map из статьи Расса Кокса довольно медленные. Из-за чего преимущество быстрого reset иногда перекрывались.
То есть: что банальный слайс, что sparse map, давали +/- одинаковое время исполнения. В одном случае reset занимал больше времени, а в другом — время исполнения росло из-за более дорогих get+set.
А вот штука, описанная в статье, умеет и в мгновенный reset, и в более эффективные get+set.
🔗 Читать
Хабр
Битва за производительность: SparseMap vs GenerationsMap
Есть такая занимательная структура данных, описанная в статье Russ Cox — sparse map. Она используется, например, в недрах компилятора Go . А ещё в некоторых пакетах его стандартной библиотеки . У неё...
🔥12❤1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🦸⚡ 9 способов настройки градиента цели для поддержания мотивации
Разбираемся, как настроить себя идти до конца, преодолевая препятствия и лень.
Читать статью
#саморазвитие
Разбираемся, как настроить себя идти до конца, преодолевая препятствия и лень.
Читать статью
#саморазвитие
🔥1🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
🧰fx долгое время был полезным инструментом для просмотра JSON-файлов, но за дело взялся SRE из Google Антон Медведев.
👨🔧Антон переписал fx с нуля, добавив новый тематический вид TUI, поиск по регулярным выражениям, нечеткий поиск и поддержку «даже самых массивных JSON-файлов».
🤩Поистине крутой инструмент и отличный пример использования преимуществ Go.
🔗fx 30.0.0
👨🔧Антон переписал fx с нуля, добавив новый тематический вид TUI, поиск по регулярным выражениям, нечеткий поиск и поддержку «даже самых массивных JSON-файлов».
🤩Поистине крутой инструмент и отличный пример использования преимуществ Go.
🔗fx 30.0.0
👍21🔥8
Практический взгляд на пакет slogtest
В пакете slog есть обработчик, который определяет формат вывода логов по умолчанию: один выводит JSON, а другой key=value. В дополнение к ним slog позволяет относительно легко создать кастомные обработчики. Если хотите погрузиться в тему подробнее, есть целое руководство по написанию последних.
Но как протестировать этот самый кастомный обработчик? На помощь приходит пакет testing/slogtest. Он очень прост в использование и помогает среди прочего убедиться, что ваш обработчик соблюдает все необходимые правила. Под катом — практический взгляд на достоинства и недостатки тестирования обработчика с помощью slogtest👇
🔗 Читать
В пакете slog есть обработчик, который определяет формат вывода логов по умолчанию: один выводит JSON, а другой key=value. В дополнение к ним slog позволяет относительно легко создать кастомные обработчики. Если хотите погрузиться в тему подробнее, есть целое руководство по написанию последних.
Но как протестировать этот самый кастомный обработчик? На помощь приходит пакет testing/slogtest. Он очень прост в использование и помогает среди прочего убедиться, что ваш обработчик соблюдает все необходимые правила. Под катом — практический взгляд на достоинства и недостатки тестирования обработчика с помощью slogtest👇
🔗 Читать
GitHub
example/slog-handler-guide/README.md at master · golang/example
Go example projects. Contribute to golang/example development by creating an account on GitHub.
👍10🤔1
💬Есть ли у вас собственный проект на Go с открытым исходным кодом? Неважно, где и как вы его используете: для рабочих проектов или в личных целях. Это в любом случае интересно. Если их несколько, расскажите об одном, который больше всего достоин внимания.
🫶Ждем ваши проекты в комментариях👇
#инструменты
🫶Ждем ваши проекты в комментариях👇
#инструменты
👍13🌚1