Forwarded from Библиотека Go для собеса | вопросы с собеседований
💬Go — язык программирования, который отлично подходит для разработки облачных приложений. Что облачные технологии и облачные приложения из себя представляют теоретически?
📌Так звучат определения по мнению Cloud Native Computing Foundation:
• Облачные технологии позволяют создавать и запускать масштабируемые приложения в современных динамических окружениях — общедоступных, частных и гибридных облаках.
• Облачные технологии делают слабосвязанные системы устойчивыми, управляемыми и наблюдаемыми. В сочетании с надежной автоматизацией они позволяют разработчикам часто и предсказуемо вносить важные изменения с минимальными усилиями.
📝Исходя из этого, облачные приложения — больше, чем просто приложения, которые работают в облаке. Они также должны отвечать некоторым требованиям/атрибутам:
👉Масштабируемость — способность показывать ожидаемое поведение в условиях значительных колебаний спроса вверх и вниз.
👉Слабая связанность — свойство системы и стратегия проектирования, согласно которой компоненты системы знают лишь самый минимум о любых других компонентах.
👉Устойчивость — способность системы восстанавливаться после ошибок и сбоев.
👉Управляемость — простота (или ее отсутствие), с которой можно изменить поведение системы для обеспечения безопасности, бесперебойной работы и соответствия меняющимся требованиям.
👉Наблюдаемость — способность определения внутреннего состояния системы по наблюдаемым результатам.
📌Так звучат определения по мнению Cloud Native Computing Foundation:
• Облачные технологии позволяют создавать и запускать масштабируемые приложения в современных динамических окружениях — общедоступных, частных и гибридных облаках.
• Облачные технологии делают слабосвязанные системы устойчивыми, управляемыми и наблюдаемыми. В сочетании с надежной автоматизацией они позволяют разработчикам часто и предсказуемо вносить важные изменения с минимальными усилиями.
📝Исходя из этого, облачные приложения — больше, чем просто приложения, которые работают в облаке. Они также должны отвечать некоторым требованиям/атрибутам:
👉Масштабируемость — способность показывать ожидаемое поведение в условиях значительных колебаний спроса вверх и вниз.
👉Слабая связанность — свойство системы и стратегия проектирования, согласно которой компоненты системы знают лишь самый минимум о любых других компонентах.
👉Устойчивость — способность системы восстанавливаться после ошибок и сбоев.
👉Управляемость — простота (или ее отсутствие), с которой можно изменить поведение системы для обеспечения безопасности, бесперебойной работы и соответствия меняющимся требованиям.
👉Наблюдаемость — способность определения внутреннего состояния системы по наблюдаемым результатам.
👍10❤1
🧰 Константин Соколов и Сергей Мачульскис, бэкенд-разработки в Positive Technologies, делятся опытом работы с пакетом context в Go
На их взгляд, он идеально выражает философию Go: образцовый интерфейс, постоянное развитие пакета и использование самых распространенных приемов Go.
🔗 Читать
На их взгляд, он идеально выражает философию Go: образцовый интерфейс, постоянное развитие пакета и использование самых распространенных приемов Go.
🔗 Читать
🔥16👍5
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💪👨💻 6 сервисов для подготовки к техническим собеседованиям
Мы не понаслышке знаем, какие глупые вопросы иногда задают на собеседованиях — этими историями с нами поделились вы. А теперь рассказываем, где готовиться к нормальным техническим собеседованиям, на которых вас не попросят заполнить бегемотами комнату. Подборка сервисов ждет вас в нашей статье👇
🔗Читать статью
🔗Зеркало
Мы не понаслышке знаем, какие глупые вопросы иногда задают на собеседованиях — этими историями с нами поделились вы. А теперь рассказываем, где готовиться к нормальным техническим собеседованиям, на которых вас не попросят заполнить бегемотами комнату. Подборка сервисов ждет вас в нашей статье👇
🔗Читать статью
🔗Зеркало
👍9🔥1
С какого языка программирования, по вашему мнению, проще всего перейти на Go? Если хотите, можете выбрать несколько вариантов.
Anonymous Poll
24%
С Go лучше начать свой путь в разработку ПО
22%
Python
13%
PHP
7%
JavaScript
10%
C#
2%
Ruby
32%
C
31%
C++
13%
Java
5%
Другой ЯП (напишу в комментарии)
👍5
🔐Выпуск включают исправления безопасности для cmd/go и директивы "//line" (CVE-2023-39323).
🔈Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
📌Anthony De Meulemeester:
#матчасть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥2
Forwarded from Библиотека Go для собеса | вопросы с собеседований
💬В Go есть такое понятие, как «затенение» (англ. shadowing) переменной. Что оно из себя представляет?
🔹В Go происходит «затенение», когда переменная, объявленная во внутренней области видимости, имеет то же имя, что и переменная во внешней области видимости.
🔹В результате внутренняя переменная «затеняет» внешнюю, делая её недоступной в своей области видимости.
📌Пример:
🔹«Затенение» может быть особенно запутывающим, когда оно происходит с результатами функций, такими как err. Например, часто в Go вы можете видеть следующий код:
Если вы случайно используете := вместо =, когда присваиваете результат anotherFunction(), вы создадите новую переменную err, которая «затенит» внешнюю переменную err. Это может привести к тому, что ошибки будут проигнорированы или обработаны неправильно.
📌Как обнаружить shadowing в коде? Есть не сколько способов: использовать встроенные инструменты Go или линтеры.
1.
2.
3.
$
$
🔹В Go происходит «затенение», когда переменная, объявленная во внутренней области видимости, имеет то же имя, что и переменная во внешней области видимости.
🔹В результате внутренняя переменная «затеняет» внешнюю, делая её недоступной в своей области видимости.
📌Пример:
package main
import (
"fmt"
)
func main() {
x := 10
if true {
x := 5
// здесь происходит затенение внешней переменной x fmt.Println(x)
// выводит 5, т. к. используется внутренняя переменная x }
fmt.Println(x)
// выводит 10, т. к. используется внешняя переменная x}
🔹«Затенение» может быть особенно запутывающим, когда оно происходит с результатами функций, такими как err. Например, часто в Go вы можете видеть следующий код:
value, err := someFunction()
if err != nil {
// обработка ошибки}
// ...
value2, err := anotherFunction()
// здесь может произойти «затенение», если использовать := вместо =if err != nil {
// обработка ошибки}
Если вы случайно используете := вместо =, когда присваиваете результат anotherFunction(), вы создадите новую переменную err, которая «затенит» внешнюю переменную err. Это может привести к тому, что ошибки будут проигнорированы или обработаны неправильно.
📌Как обнаружить shadowing в коде? Есть не сколько способов: использовать встроенные инструменты Go или линтеры.
1.
go vet -shadow ./...
2.
golangci-lint run --enable shadow
3.
$
go get -u golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
$
go vet -vettool=$(which shadow)
👍36🌚3
• kong,
• req,
• echo,
• worker,
• sqlite3 driver,
• ginkgo,
• golangci-lint,
• lo,
• log/slog.
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Jtarchie
My Preferred Go Stack
Explore my preferred collection of Go libraries that ergonomically enhance my coding style and streamline the development of Go applications, allowing for efficient and organized coding.
🤔6👍2🥱1
Boxes and Glue — Go-библиотека для рендеринга PDF с использованием алгоритмов TeX. Основные фичи:
🏎 Высокая скорость
👌 Высокое качество вывода
🔩 Расширяемость
🚀 Возможности OpenType и формирование шрифта с помощью harfbuzz
Пример кода поможет понять используемую концепцию более подробно.
🔗GitHub
🏎 Высокая скорость
👌 Высокое качество вывода
🔩 Расширяемость
🚀 Возможности OpenType и формирование шрифта с помощью harfbuzz
Пример кода поможет понять используемую концепцию более подробно.
🔗GitHub
GitHub
GitHub - boxesandglue/boxesandglue: PDF rendering library for Go using TeX algorithms.
PDF rendering library for Go using TeX algorithms. - boxesandglue/boxesandglue
🔥10👍4⚡1🙏1
Как-то мы упустили из виду, что ребята из Evrone пообщались с Робом Пайком о карьере, охватывающей четыре десятка лет, об эволюции языка Go за последние 10 лет и перспективах на будущее.
👉 Читать интервью
👉 Читать интервью
👍35
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱33👍4🤔3❤2
В Go 1.20 завезли возможность сбилдить приложение с флагом
cover
: go build -cover
. После запуска приложения будет собираться статистика, показывающая, какие части кода были выполнены, а какие — нет.Это, конечно, было сделано для интеграционных тестов, когда приложение запускается целиком в каких-то сценариях (а не через
go test
), но, вероятно, можно попробовать использовать этот кейс и по-другому: запустить прямо в проде, подождать и посмотреть, какие участки кода в реальности никогда не запускаются.👉 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🤔3❤1🥱1
encoding/json
? На GitHub началось обсуждение, цель которого — создание официального предложения по улучшению или, возможно, замене пакета
json
для устранения недостающей функциональности, недостатков API, ограничений производительности и поведенческих изъянов. 💬Список недостатков достаточно длинный, впрочем как и список предлагаемых улучшений. А вы что думаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🙏4
Writing_a_Netflix_Disney_Movie_Recommender_with_Go_by_Movie_o.pdf
5 MB
🎥 Написание сервиса рекомендаций к фильмам Netflix/Disney+ на Go
Под катом — пошаговый гайд по разработке простого веб-сервиса REST API на Go, который принимает от пользователя некоторую информацию (страна, подписки, жанр, ключевое слово и тип фильма) и предлагает рекомендации с соответствующими ссылками. Код — на GitHub, а готовый продукт — на reccio.com.
Под катом — пошаговый гайд по разработке простого веб-сервиса REST API на Go, который принимает от пользователя некоторую информацию (страна, подписки, жанр, ключевое слово и тип фильма) и предлагает рекомендации с соответствующими ссылками. Код — на GitHub, а готовый продукт — на reccio.com.
🔥9👍4❤2
📌Обновления популярных Go-инструментов:
• Mods 1.0.0 — CLI ИИ-инструмент от создателей Charm
• Viper 1.17 — мощное и гибкое решение для конфигурации Go-приложений
• requests 0.23.5 — удобная библиотека HTTP-запросов для Go
• task 3.31.0 — простой в использовании инструмент для запуска/сборки задач
• Roaring 1.6 — реализация растровой структуры данных Roaring
• Betteralign 0.3.1 — инструмент для обнаружения структур, элементы которых можно лучше выровнять
• Ginkgo 2.13 – современный фреймворк для тестирования
#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Words from Shane
Threads and Goroutines
So after several years of reading oversimplified and flat out incorrect comments about threads and fibers/goroutines/async/etc and fighting this reaction:
I’ve decided to write my own still-over-simplified all in one guide to the difference between a couple…
I’ve decided to write my own still-over-simplified all in one guide to the difference between a couple…
👍2