Это полное изложение замечательного доклада Роба Пайка "Concurrency is Not Parallelism". Иллюстрации и диаграммы воссозданы, исходный код взят дословно со слайдов, за исключением комментариев, которые в некоторых местах были расширены.ВведениеМир параллелен: начиная с основ вычислительной техники, таких как многоядерные процессоры, и заканчивая реальными объектами, людьми, планетами и Вселенной в целом - всё происходит одновременно. Однако имеющиеся у нас вычислительные средства не оче…
В этой статье мы рассмотрим, как дебажить программы, написанные на Golang, с помощью Delve. Delve — это сторонний отладчик для Go, скачать на github по ссылке. Это хорошая альтернатива отладчику GDB golang, так как Delve куда больше возможностей для работы. Delve лучше, чем GDB, понимает среду выполнения Go, структуры данных и выражения. В настоящее время Delve поддерживает Linux, OSX и Windows в версии amd64. Наиболее актуальный список поддерживаемых платформ приведен в документации Delve.Вы…
Всем привет! Я – Влад, руководитель группы поисковой оптимизации в Ozon. Go повсюду. И, конечно, ни при каких обстоятельствах мы не могли пройти мимо него в самом крупном направлении компании – разработке маркетплейса.Направление отвечает за разработку инструментов, которыми активно пользуются наши покупатели и продавцы. Сюда входит абсолютно всё, что нужно для того, чтобы продавец смог предложить товар или услугу, а покупатель — сделать заказ.И нам есть чем поделиться. Приглашаем на открытый…
Привет, Хаброжители! Язык Go — это простой и понятный язык для создания высокопроизводительных систем будущего. Используйте Go в реальных производственных системах. В новое издание включены такие темы, как создание серверов и клиентов RESTful, знакомство с дженериками Go и разработка серверов и клиентов gRPC. Третье издание «Golang для профи» исследует практические возможности Go и описывает такие продвинутые темы, как параллелизм и работа сборщика мусора Go, использование Go с Docker, разр…
В статье мы рассмотрим, как подступиться к миру Kubernetes в первый раз — развернуть кластер под управлением платформы Deckhouse, разработать и подготовить приложение, развернуть его с помощью утилиты werf, предназначенной для построения рабочего процесса по принципам CI/CD, а также настроить сертификаты для доступа по HTTPS.Развертывание кластера Вводные данные Подготовка конфигурации Настройка кластера Проверка работоспособности Включение HTTPS для компонентов кластера Наст…
В рамках данного текста я попробую ответить вам и себе на вопрос из заголовка. Будет честно, если также я обозначу, что далее вы не найдете ответа на вопрос: стоит ли идти на IT-курсы учиться.Я решил написать этот текст после четырех лет чтения лекций. Я вел лекции в Otus по курсу GO и несколько раз появлялся на курсе "Архитектор высоких нагрузок". Сейчас я преподаю уже не так часто, но меня еще можно услышать/увидеть на курсе Golang.”Почему я пошел читать лекцииКогда-то у меня было мн…
Ошибки - это просто значенияЯ долго думал над тем, как лучше всего обрабатывать ошибки в программах на языке Go. Мне очень хотелось, чтобы существовал единый способ обработки ошибок, которому можно было бы научить всех программистов на Go, как учат математике или алфавиту.Однако я пришёл к выводу, что единого способа обработки ошибок не существует. Вместо этого я считаю, что работу с ошибками в Go можно разделить на три основные стратегии.Дозорные ошибкиПервая категория обработки ошибок - это …
Ранее: 1 частьПроверка ошибокОбщим договором для функций, возвращающих значение интерфейсного типа error, является то, что вызывающая сторона не должна ничего предполагать о состоянии других значений, возвращаемых в результате этого вызова, без предварительной проверки ошибки.В большинстве случаев значения ошибок, возвращаемые функциями, должны быть непрозрачными для вызывающей стороны. То есть проверка на то, что ошибка равна nil, указывает на успешность или неуспешность вызова, и не более то…
Сборник реальных советов по написанию сопровождаемых программ на языке Go. Автор - Dave Cheney, опытный разработчик на Go и один из его ведущих пропагандистов.Любопытные каналыКаналы являются характерной особенностью языка программирования Go. Каналы предоставляют мощный способ рассуждать о потоке данных от одной горутины к другой без использования блокировок или критических секций.Я хочу рассказать о двух важных свойствах каналов, которые делают их полезными для управления не только потоком д…