В статье я хочу поделиться своими попытками сделать стримминг видео через websockets без использования сторонних плагинов браузера типа Adobe Flash Player. Что из этого получилось читайте далее.
Читать полностью »
Рубрика «Go» - 20
Как я сделал (почти) бесполезный стриминг вебкамеры на Javascript
2019-07-30 в 14:32, admin, рубрики: Go, javascript, websocketsРазработка гибридных PHP-Go приложений с использованием RoadRunner
2019-07-30 в 10:25, admin, рубрики: Go, golang, golangconf, php, phprussia, roadrunner, Блог компании Конференции Олега Бунина (Онтико), высокая производительность, гибридные приложения, Разработка веб-сайтов, сервер приложенийКлассическое PHP-приложение — однопоточность, тяжелая загрузка (если вы конечно не пишите на микрофреймворках) и неизбежная смерть процесса после каждого запроса… Такое приложение тяжелое и медленное, но мы можем дать ему вторую жизнь гибридизацией. Чтобы ускорить — демонизируем и оптимизируем утечки памяти, чтобы добиться большей производительности — внедрим собственный сервер РНР-приложений RoadRunner на Golang, чтобы добавить гибкости — упростим PHP-код, расширим стек и разделим ответственность между сервером и приложением. По сути, заставим наше приложение работать, как если бы мы писали его на Java или другом языке.
Благодаря гибридизации ранее медленное приложение перестало страдать 502 ошибками под нагрузками, уменьшилось среднее время ответа на запросы, производительность увеличилась, а деплой и сборка стали проще за счет унификации приложения и избавления от лишней обвязки в виде nginx + php-fpm.
Антон Титов (Lachezis) — технический директор и соучредитель SpiralScout LLC с опытом активной коммерческой разработки на PHP в 12 лет. Последние несколько лет активно внедряет Golang в стек разработки компании. Об одном из примеров Антон рассказал на PHP Russia 2019.
Читать полностью »
Пример создания Makefile для Go-приложений
2019-07-26 в 10:25, admin, рубрики: bash, Go, golang, makefile, переводВ этом руководстве мы рассмотрим, как разработчик Go может использовать Makefile при разработке собственных приложений.
Что такое Makefile-ы?
Makefile — невероятно полезный инструмент автоматизации, который можно использовать для запуска и сборки приложений не только на Go, но и на большинстве других языков программирования.
Его часто можно увидеть в корневом каталоге множества Go приложений на Github и Gitlab. Он широко используются в качестве инструмента для автоматизации задач, которые часто сопровождают разработчиков.
Если вы используете Go для создания веб-сервисов, то Makefile поможет решить следующие задачи:
- Автоматизация вызова простых команд, таких как: compile, start, stop, watch и т. д.
- Управление специфичными для проекта переменными окружения. Он должен подключать файл .env.
- Режим разработки, который автоматически компилируется при изменении.
- Режим разработки, который показывает ошибки компиляции.
- Определение GOPATH для конкретного проекта, чтобы мы могли хранить зависимости в папке vendor.
- Упрощенный мониторинг файлов, например, make watch run = «go test. / ...»
Модели дженериков и метапрограммирования: Go, Rust, Swift, D и другие
2019-07-25 в 17:41, admin, рубрики: D, generics, Go, Rust, swift, Анализ и проектирование систем, Блог компании Mail.Ru Group, никто не читает теги, Программирование
В некоторых сферах программирования нормально хотеть написать такую структуру данных или алгоритм, которые могут работать с элементами разных типов. Например, список дженериков или алгоритм сортировки, которому нужна только функция сравнения. В разных языках предложены всевозможные способы решения этой задачи: от простого указания программистам на подходящие общие функции (С, Go) до таких мощных систем дженериков, что они стали полными по Тьюрингу (Rust, C++). В этой статье я расскажу о системах дженериков из разных языков и их реализации. Начну с решения задачи в языках без подобной системы (вроде С), а затем покажу, как постепенное добавление расширений приводит к системам из других языков.
Читать полностью »
GoLand 2019.2: поддержка вызовов функций во время отладки, улучшенные цветовые схемы, кастомные Postfix Completion
2019-07-25 в 15:58, admin, рубрики: Go, GoLand, golang, jetbrains, Блог компании JetBrains, ПрограммированиеСегодня мы выпустили GoLand 2019.2 и спешим рассказать вам о том, что появилось в новой версии.
Поддержка вызовов функций во время отладки
Теперь можно выяснить, что происходит с выражением в любой момент выполнения программы.
Обратите внимание, что эта функциональность создана на основе экспериментальной поддержки вызовов функций в Delve и Go Runtime.
Если вы столкнетесь с ошибками или проблемами, связанными с поддержкой вызовов функций, сообщайте о них в нашем трекере.
Улучшенные цветовые схемы Default и Darcula
В версии 2019.2 мы разнообразили семантическую подсветку кода в цветовых схемах Default и Darcula.
Изменение помогает быстрее разобраться в коде и вникнуть в его логику. Теперь легче отличать имена пакетов от переменных, встроенные конструкции кода — от ваших собственных, а преобразования типов — от вызовов функций.
Кроме того, ресиверы методов и вызовы функций получили отдельные цвета. Как обычно, вы можете настроить схемы на свой вкус в меню Settings/Preferences | Editor | Color Scheme.
Golang: специфические вопросы производительности
2019-07-25 в 11:04, admin, рубрики: Go, golang, golangconf, Блог компании Конференции Олега Бунина (Онтико), высокая производительность, Программирование, Разработка веб-сайтовЯзык Go набирает популярность. Настолько уверенно, что появляется все больше конференций, например, GolangConf, а язык входит в десятку самых высокооплачиваемых технологий. Поэтому уже имеет смысл разговаривать о его специфических проблемах, например, производительности. Кроме общих для всех компилируемых языков проблем, у Go есть и свои собственные. Они связаны с оптимизатором, стеком, системой типов и моделью многозадачности. Способы их решения и обхода иногда бывают весьма специфическими.
Даниил Подольский, хоть и евангелист Go, тоже встречает в нем много странного. Все странное и, главное, интересное собирает и тестирует, а потом рассказывает об этом на HighLoad++. В расшифровке доклада будут цифры, графики, примеры кода, результаты работы профайлера, сравнение производительности одних и тех же алгоритмов на разных языках — и все остальное, за что мы так ненавидим слово «оптимизация». В  расшифровке не будет откровений — откуда они в таком простом языке, — и всего, о чем можно прочесть в газетах.
Как создать простой микросервис на Golang и gRPC и выполнить его контейнеризацию с помощью Docker
2019-07-25 в 8:35, admin, рубрики: docker, Go, golang, grpc, Microservices, protobuf, микросервисы, ПрограммированиеПривет! представляю вашему вниманию перевод статьи «Go, gRPC and Docker» автора Mat Evans.
Существует множество статей о совместном использовании Go и Docker. Создавать контейнеры, способные взаимодействовать с клиентами и между собой, очень легко. Далее следует небольшой пример того, как это делается на базовом уровне.
Читать полностью »
Какой язык — D, Go или Rust имеет лучшие перспективы заменить C и почему?
2019-07-24 в 9:16, admin, рубрики: D, dlang, Go, Rust, Программирование, системное программирование, флейм и провокацияНесмотря на мой статус и очевидную предвзятость как одного из создателей D, я постараюсь отвечать откровенно; Я следовал путям Go и Rust, и я абсолютно точно знаю, где стирают грязное белье в D. Я поощряю людей на аналогичных позициях в сообществах Rust и Go чтобы и они делились своим мнением. Так вот.
Для начала, где то в вопросе должен фигурировать и C++. Должен ли он быть заменен вместе с С, или же он один из кандидатов на замещение С, но в любом случае С++ это ключевой элемент уравнения. Это ближайший язык к С и очевидный шаг вперед. Учитывая возраст С++, я в дальнейшем полагаю в этом вопросе что С++ вместе с С является целью для замены.
Читать полностью »
LLVM IR и Go
2019-07-22 в 4:01, admin, рубрики: Go, LLVM, llvm ir, open source, Компиляторы, ПрограммированиеВ этой статье мы рассмотрим, как построить программу на Go, такую, как компилятор или статический анализатор, которая взаимодействует с фреймворком компиляции LLVM, используя язык ассемблера LLVM IR.
TL;DR мы написали библиотеку для взаимодействия с LLVM IR на чистом Go, см. ссылки на код и на пример проекта.
Делать хорошо, делая плохо: написание «злого» кода с помощью Go, часть 1
2019-07-19 в 9:58, admin, рубрики: Go, golang, перевод, юморВредные советы для Go-программиста
После десятилетий программирования на Java, последние несколько лет я в основном работал на Go. Работать с Go — здорово, прежде всего потому, что за кодом очень легко следовать. Java упростила модель программирования C ++, удалив множественное наследование, ручное управление памятью и перегрузку операторов. Go делает то же самое, продолжая двигаться к простому и понятному стилю программирования, полностью удаляя наследование и перегрузку функций. Простой код — читаемый код, а читаемый код — поддерживаемый код. И это здорово для компании и моих сотрудников.
Как и во всех культурах, у разработки программного обеспечения есть свои легенды, истории, которые пересказываются у кулера для воды. Все мы слышали о разработчиках, которые вместо того, чтобы сосредоточиться на создании качественного продукта, зацикливаются на защите собственной работы от посторонних. Им не нужен поддерживаемый код, потому что это означает, что другие люди смогут его понять и доработать. А возможно ли такое на Go? Можно ли сделать код на Go настолько сложным? Скажу сразу – дело это непростое. Давайте рассмотрим возможные варианты.
Читать полностью »