В апреле на Хабре публиковалась статья «Зачем вам учить Go», в которой подробно освещались возможности языка и его преимущества.
Ну а сейчас — самое время поговорить о разработчиках Golang, пороге входа в эту отрасль и о том, чего может ожидать Go-разработчик от работодателей как в плане условий работы, так и размера заработной платы. Разобраться во всем этом «Моему кругу» поможет преподаватель курса Golang в GeekBrains Сергей Кручинин, за что ему огромное спасибо.Читать полностью »
Рубрика «golang» - 9
Golang: на что рассчитывать специалисту по Go в море IT-специальностей?
2019-12-11 в 7:36, admin, рубрики: geekbrains, Go, golang, moikrug.ru, Блог компании Мой круг, Карьера в IT-индустрии, Мой круг, управление персоналомО структуре параллельных вычислений или доводы против оператора «Go»
2019-12-10 в 14:59, admin, рубрики: async, Go, golang, python, Анализ и проектирование систем, асинхронное программирование, дейкстра, конкурентное программирование, параллельное программирование, параллельные вычисления, потоки, смена парадигмыКаждый язык, поддерживающий параллельные (конкурентные, асинхронные) вычисления, нуждается в способе запуска кода параллельно. Вот примеры из разных API:
go myfunc(); // Golang
pthread_create(&thread_id, NULL, &myfunc); /* C with POSIX threads */
spawn(modulename, myfuncname, []) % Erlang
threading.Thread(target=myfunc).start() # Python with threads
asyncio.create_task(myfunc()) # Python with asyncio
Есть много вариантов нотации и терминологии, но одна семантика — запустить myfunc
параллельно основной программе и продолжить родительский поток выполнения (англ. "Control Flow")
Reactor, WebFlux, Kotlin Coroutines, или Асинхронность на простом примере
2019-12-03 в 11:17, admin, рубрики: coroutine, golang, java, kotlin, Блог компании FunCorp, ПрограммированиеМногие сервисы в современном мире, по большей части, «ничего не делают». Их задачи сводятся к запросам к другим базам/сервисам/кешам и агрегации всех этих данных по различным правилам и разнообразной бизнес-логике. Поэтому неудивительно, что появляются такие языки, как Golang, с удобной встроенной конкурентной системой, позволяющей легко организовывать неблокирующий код.
В JVM-мире всё немного сложнее. Есть огромное количество фреймворков и библиотек, блокирующих потоки при использовании. Так и сама stdlib может делать то же самое порой. Да и в Java нет аналогичного механизма, похожего на горутины в Golang.
Тем не менее, JVM активно развивается и появляются новые интересные возможности. Есть Kotlin с корутинами, которые по своему использованию очень похожи на горутины из Golang (хоть и реализованы совершенно по-другому). Есть JEP Loom, который в будущем привнесёт fibers в JVM. Один из самых популярных веб-фреймворков — Spring — не так давно добавил возможность создавать полностью неблокирующие сервисы на Webflux. А с недавним релизом Spring boot 2.2 интеграция с Kotlin стала ещё лучше.
Предлагаю на примере небольшого сервиса по переводу денег с одной карты на другую самим написать приложение на Spring boot 2.2 и Kotlin для интеграции с несколькими внешними сервисами.
Планирование в Go: Часть I — Планировщик ОС
2019-11-30 в 15:46, admin, рубрики: cache, cpu, Go, golang, threadsПривет! Представляю вашему вниманию перевод статьи «Scheduling In Go: Part I — OS Scheduler» автора Билла Кеннеди, о том, как работает внутренний планировщик Go.
Это первый пост в серии из трех частей, который даст представление о механике и семантике, лежащей в основе планировщика в Go. Этот пост посвящен планировщику операционной системы. Начнем!
Внутренняя архитектура планировщика Go позволяет вашим многопоточным программам быть более эффективными и производительными. Важно иметь общее понимание того, как работают планировщики ОС и Go для правильного проектирования многопоточного программного обеспечения. Я опишу достаточно деталей, чтобы вы могли наглядно представить, как все работает, чтобы на практике принимать лучшие решения.
Читать полностью »
Ящик для хранения данных в go-приложениях
2019-11-23 в 14:33, admin, рубрики: Go, golang, базы данныхНебольшая заметка о встраиваемой key-value БД под названием Coffer
, написанной на Golang. Если совсем коротко: в остановленном состоянии БД данные лежат на диске, при запуске данные копируются в память. Чтение происходит из памяти. При записи изменяются данные памяти, а изменения записываются в журнал на диск. Максимальный размер хранимых данных ограничен размером оперативной памяти. API позволяет создавать хидеры для записей БД и применять их в транзакциях, сохраняя при этом консистентность данных.
Читать полностью »
Архитектура компьютерных систем 1 часть. Логические вентили
2019-11-16 в 13:41, admin, рубрики: Go, golang, Анализ и проектирование систем, архитектура компьютера, булева логика, Компьютерное железо, логические вентили, ПрограммированиеЛогические элементы
Доброго времени суток, я начинаю серию статей по написанию виртуальной машины на языке Golang. Я выбрал этот язык так как он прост для чтения и имеет в стандартной библиотеке уже необходимые функции, которые пригодятся в дальнейшем.
Эта статья не несёт в себе абсолютно никакой новой информации для тех, кто умеет составлять таблицы истинности для простых логических вентилей. Если вы это умеете, то не тратьте время и переходите ко второй части.
Читать полностью »
Как создать свое первое веб-приложение с помощью Go
2019-11-11 в 14:39, admin, рубрики: Go, golang, web-разработкаПривет! Представляю вашему вниманию статьи "How to build your first web application with Go" автора Ayooluwa Isaiah.
Это руководство к вашему первому веб-приложению на Go. Мы создадим новостное приложение, которое использует News API для получения новостных статей по определенной теме, и развернём его на продакшн сервере в конце.
Как добавить проверки в NoVerify, не написав ни строчки Go-кода
2019-11-07 в 9:58, admin, рубрики: Go, golang, linter, noverify, open source, php, Блог компании ВКонтакте, Вконтакте, Совершенный кодВ статическом анализаторе NoVerify появилась киллер-фича: декларативный способ описания инспекций, который не требует программирования на Go и компиляции кода.
Чтобы вас заинтриговать, покажу описание простой, но полезной инспекции:
/** @warning duplicated sub-expressions inside boolean expression */
$x && $x;
Эта инспекция находит все выражения логического &&
, где левый и правый операнд идентичны.
NoVerify — статический анализатор для PHP, написанный на Go. Почитать о нём можно в статье «NoVerify: линтер для PHP от Команды ВКонтакте». А в этом обзоре я расскажу о новой функциональности и том, как мы к ней пришли.
Пишем блог на микросервисах – часть 2 «API Gateway»
2019-10-28 в 17:03, admin, рубрики: Go, golang, grpc, grpc-gateway, proto3, rest, X5RetailGroup, микросервисыВ первой части нашего цикла статей «Пишем блог на микросервисах» мы описали общий подход к решению задачи.
Теперь пришла очередь API Gateway или API GW.
В нашем c ptimofeev API GW мы реализуем следующие функции:
- Конвертация REST запросов в gRPC запросы и наоборот.
- Логирование запросов.
- Аутентификация запросов.
- Присвоение каждому запросу Trace ID для дальнейшей передачи его между микросервисами по всей цепочке выполнения запроса.
Пишем блог на микросервисах – часть 1 «Общее описание»
2019-10-28 в 17:01, admin, рубрики: Go, golang, grpc, grpc-gateway, proto3, rest, X5RetailGroup, микросервисыВ этой статье хочу поделится нашими c SergeyMaslov наработками решения типовых задач с использованием микросервисной архитектуры на примере задачи «создание блога» (в надежде, что читатель представляет как устроен блог и это не должно вызывать вопросов по функциональности:)
Читать полностью »