Pull to refresh
15
0

Go горе-программист

Send message

Глубокое погружение в Linux namespaces, часть 4

Reading time10 min
Views27K

Часть 1
Часть 2
Часть 3
Часть 4


В завершающем посте этой серии мы рассмотрим Network namespaces. Как мы упоминали в вводном посте, network namespace изолирует ресурсы, связанные с сетью: процесс, работающий в отдельном network namespace, имеет собственные сетевые устройства, таблицы маршрутизации, правила фаервола и т.д. Мы можем непосредственно увидеть это на практике, рассмотрев наше текущее сетевое окружение.

Читать дальше →
Total votes 2: ↑2 and ↓0+2
Comments3

Имитируем сетевые проблемы в Linux

Reading time15 min
Views32K
Всем привет, меня зовут Саша, я руковожу тестированием бэкенда. У нас, как и у многих, реализована сервис-ориентированная архитектура. С одной стороны, это упрощает работу, т.к. каждый сервис проще тестировать по отдельности, но с другой — появляется необходимость тестировать взаимодействие сервисов между собой, которое часто происходит по сети.

В этой статье я расскажу о двух утилитах, с помощью которых можно проверить базовые сценарии, описывающие работу приложения при наличии проблем с сетью.


Читать дальше →
Total votes 55: ↑54 and ↓1+66
Comments17

Как отлаживать bash-script-ы по шагам или, возможно, самая короткая статья о программировании/отладке на Хабре

Reading time1 min
Views42K

Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.

Читать далее
Total votes 158: ↑157 and ↓1+188
Comments37

Как отправлять SMS через МТС Exolve и Go

Level of difficultyEasy
Reading time5 min
Views1.9K

В одной из московских компаний решили расширить функции системы на Golang, и заказчик попросил внедрить в неё SMS и прочие каналы для уведомлений клиентов. В этой статье пошагово разберём, как отправлять SMS с использованием сервиса МТС Exolve и популярного языка программирования Golang.

Читать далее
Total votes 5: ↑4 and ↓1+5
Comments2

Как за один день сделать месячный объем работы и перестать тревожиться — пошаговая инструкция

Level of difficultyEasy
Reading time3 min
Views51K

Меня зовут Слава Усов. В 20 лет я уехал в экспедицию в Антарктиду и с тех пор пожил и поработал практически на всех континентах. От ученого до операционного менеджера в Африке и на Ближнем Востоке. Очень разный опыт. Самоорганизацией я увлекся лет восемь назад — триста писем в день, пару сотен сотрудников, мне было на чем практиковаться.

Читать далее
Total votes 69: ↑60 and ↓9+62
Comments115

А в чем проблема работать с файлами?

Level of difficultyMedium
Reading time53 min
Views31K

Данные - это важный компонент системы. Приложение может хранить их где угодно, но в результате все сводится к файлам. Файлы - это хорошая абстракция, но она протекает: если не знать того, как работают ОС или гарантии файловой системы, то легко выстрелить себе в ногу.

Меня увлекла тема отказоустойчивости, а конкретно - отказоустойчивой работы с файлами. В этой статье я попытался соединить все полученные знания:

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

Читать далее
Total votes 141: ↑140 and ↓1+169
Comments23

Нейронные сети для планирования движения беспилотных автомобилей

Reading time16 min
Views15K

Планировщик движения беспилотного автомобиля — это алгоритм-помощник, который общается с другими участниками движения посредством манёвров. То есть он действует так, чтобы другим было понятно, куда поедет беспилотник, и сам по действиям других пытается определить, кто куда будет двигаться и почему.

В диалоговых системах совсем недавно произошла революция из-за появления ChatGPT. В беспилотных автомобилях революции, к сожалению, пока не произошло, но если это случится, то как раз в той области, про которую будет мой рассказ.

Под катом — детальный разбор логики движения беспилотника, примеры свёрточных и трансформерных архитектур моделей для предсказания движения и много формул для расчёта вероятных траекторий других машин и пешеходов. А ещё я расскажу, в чём преимущества машинного обучения перед эвристиками и чем может помочь Reinforcement Learning.

Читать далее
Total votes 55: ↑55 and ↓0+55
Comments10

Языковая механика профилирования памяти

Reading time11 min
Views4.4K

Прелюдия


Это третья из четырех статей в серии, которая даст представление о механике и дизайне указателей, стеков, куч, escape analysis и семантики значения/указателя в Go. Этот пост посвящен профилированию памяти.

Оглавление цикла статей:

  1. Language Mechanics On Stacks And Pointers (перевод)
  2. Language Mechanics On Escape Analysis (перевод)
  3. Language Mechanics On Memory Profiling
  4. Design Philosophy On Data And Semantics

Посмотрите это видео, чтобы увидеть демонстрацию этого кода:
DGopherCon Singapore (2017) — Escape Analysis

Вступление


В предыдущем посте я обучил основам escape analysis, используя пример, который разделяет значение в стеке горутины. Я не показал вам других сценариев, которые могут привести к переносу значений в кучу. Чтобы помочь вам с этим я собираюсь отладить программу, которая делает аллокации неожиданным образом.
Читать дальше →
Total votes 3: ↑2 and ↓1+5
Comments0

Потрошим golang: как устроена память

Reading time18 min
Views25K


Привет, меня зовут Стас Иванкевич, и я работаю в VK Cloud над разработкой облачных сервисов в команде Data Masters. Сервисы, запрошенные клиентами, так или иначе должны развернуться в том виде, в котором клиенты их запросили, в адекватные сроки и без ошибок. Существует множество механизмов, позволяющих этого достичь, и еще больше существует ошибок и проблем, которые мешают в достижении этих целей.

Для любого специалиста, наверное, самой грустной ошибкой будет та, которая рождается из его незнания используемого инструмента. Наверняка практически каждый разработчик со сколь-нибудь большим опытом работы не раз сталкивался с такими проблемами хотя бы раз.

Единственным надежным решением таких проблем является глубокое погружение в теорию и исследования инструмента, которым решаются поставленные проблемы. В нашем случае таким инструментом является язык Go. И как же замечательно, что исследование его внутренностей — совсем легкое дело. В том числе когда дело касается использования памяти.
Читать дальше →
Total votes 50: ↑48 and ↓2+55
Comments17

Когнитивные искажения, о которых стоит помнить

Reading time15 min
Views84K

Из-за когнитивных искажений мы иногда принимаем иррациональные решения, а также выносим суждения на основе информации, которую мы обрабатываем. Фактически, когнитивные искажения — это запрограммированная ошибка в нашем мозге.

Также их можно представить как простые правила, которым следует мозг, чтобы обрабатывать поступающую информацию с минимальными затратами.

Когнитивных искажений существует большое множество, и о них полезно знать. В этой статье мы сделаем обзор 151 искажения, которые часто встречаются в повседневной жизни: как в личной, так и в профессиональной.

Читать далее
Total votes 84: ↑76 and ↓8+79
Comments36

Мапы в Go: уровень Pro

Reading time16 min
Views26K

Подробный туториал по процессам записи и чтения данных в мапах Go. Объясняем проблемы переполнения, эвакуации элементов; важность передачи количества элементов при создании мапы. Рассказываем, почему в Go нельзя обращаться к ключу или значению по адресу.

Читать далее
Total votes 14: ↑12 and ↓2+15
Comments11

Сравниваем форматы сериализации на Go: скорость и удобство

Reading time6 min
Views8.9K

Дмитрий Королёв, бэкенд-разработчик в Авито, разобрал на примерах, чем отличаются друг от друга форматы сериализации данных, и как выбрать самый удобный.

Читать далее
Total votes 9: ↑8 and ↓1+8
Comments9

Ory Kratos — коробочный SSO

Level of difficultyMedium
Reading time9 min
Views7.1K

Ory Kratos - современный cloud native сервер идентификации с поддержкой PassKeys, MFA, FIDO2, TOTP, WebAuthn, с возможностью управления профилями, схемами пользователей, входом через внешние сервисы, регистрацией, восстановлением аккаунта, с поддержкой passwordless входа. Написан на Go, headless, API-first.

Целью этой статьи не является сравнение с другими популярными сервисами идентификации, которые дальше будут упомянуты, но будет рассмотрен основной функционал и мой опыт использования в пет-проектах.

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments6

Визуализация результатов escape-анализа в VS Code

Level of difficultyMedium
Reading time8 min
Views2.5K

В Go есть возможность получить отчёт о выполняемом escape-анализе: go build -gcflags '-m=3 -l'. В этой статье я расскажу, как можно визуализировать этот отчёт в VS Code. Дополнительно приведу способ, как в несколько кликов проверить теорию (escape-анализ) практикой (профилирование).


Читать дальше →
Total votes 12: ↑10 and ↓2+11
Comments0

Как работает видеокодек. Часть 1. Основы

Reading time11 min
Views46K

Вторая часть: Принципы работы видеокодека




Любое растровое изображение можно представить в виде двумерной матрицы. Когда речь заходит о цветах, идею можно развить, рассматривая изображение в виде трехмерной матрицы, в которой дополнительные измерения используются для хранения данных по каждому из цветов.

Если рассматривать итоговый цвет как комбинацию т.н. основных цветов (красного, зеленого и синего), в нашей трёхмерной матрице определяем три плоскости: первая для красного цвета, вторая для зеленого и последняя для синего.
3D матрица RGB

Будем называть каждую точку в этой матрице пикселем (элементом изображения). Каждый пиксель содержит информацию об интенсивности (обычно в виде числового значение) каждого цвета. Например, красный пиксель означает, что в нём 0 зеленого цвета, 0 синего и максимум красного. Пиксель розового цвета может быть сформирован с помощью комбинации трех цветов. Используя числовой диапазон от 0 до 255, розовый пиксель определяется как Красный = 255, Зелёный = 192 и Синий = 203.
Total votes 58: ↑58 and ↓0+58
Comments13

Еще раз о видеонаблюдении, камерах, RTSP, onvif. И «велосипед»!

Reading time16 min
Views186K
Информация уже была на хабре: habrahabr.ru/post/115808 и habrahabr.ru/post/117735
Там описывается Motion-JPEG (MJPEG).
Мир не стоит на месте и видео наблюдение тоже. Всё чаще и чаще используются другие кодеки.
Тут описываю свой опыт в этом «мире».
Профессионалы ничего нового не узнают, другим может будет просто интересно.
Разрабатывалось всё в качестве обучения и тренировки.
Речь пойдет о RTP, RTSP, h264, mjpeg, onvif и всём вместе.
Перед прочтением обязательно прочитать статьи другого автора, указанные выше.
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments11

Руководство по FFmpeg libav

Reading time24 min
Views90K

Долго искал книгу, в которой было бы разжёвано, как использовать FFmpeg-подобную библиотеку, известную как libav (название расшифровывается как library audio video). Обнаружил учебник «Как написать видеоплеер и уложиться в менее чем тысячу строк». К сожалению, информация там устаревшая, так что пришлось создавать мануал своими силами.

Большая часть кода будет на C, однако не волнуйтесь: Вы легко всё поймёте и сможете применить на любимом языке. У FFmpeg libav уйма привязок ко многим языкам (в том числе и к Python и к Go). Но даже если Ваш язык прямой совместимости не имеет, всё равно можно привязаться через ffi (вот пример с Lua).

Начнём с краткого экскурса о том, что такое видео, аудио, кодеки и контейнеры. Затем перейдем к ускоренному курсу, посвященному использованию командной строки FFmpeg, и, наконец, напишем код. Не стесняйтесь переходить сразу в раздел «Тернистый путь изучения FFmpeg libav».

Есть мнение (и не только моё), что потоковое интернет-видео уже приняло эстафету от традиционного телевидения. Как бы то ни было, FFmpeg libav точно достоин изучения.

Оглавление


Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments13

Учимся применять Semaphore и Worker Pool на Go

Level of difficultyEasy
Reading time9 min
Views17K

Привет, Хабр! Я Артём Чаадаев из команды ассортимента размещения в Туту и занимаюсь разработкой на языке Go. Здесь мы посмотрим как решить распространенную практическую задачу применяя паттерны Semaphore и Worker Pool.

Хотите научиться конкуретной разработке на Go? Значит, вам сюда.

Добро пожаловать под кат!

Читать далее
Total votes 13: ↑12 and ↓1+15
Comments22

Эффективная работа с битами при помощи Go

Level of difficultyHard
Reading time12 min
Views13K

Это статья познакомит вас с использованием возможностей Go для выполнения манипуляций с битами. Здесь мы разберём установку, очистку, инвертирование, сдвиг битов, использование техники SWAR, эффективную обработку Юникода и прочие приёмы, позволяющие повысить продуктивность программирования.
Читать дальше →
Total votes 35: ↑31 and ↓4+39
Comments8

Jaeger для трассировки в микросервисной архитектуре

Level of difficultyMedium
Reading time15 min
Views15K

 Меня зовут Алексей Мясников, я тимлид на проекте YDB в Яндекс Облаке. А ещё — старший ментор на курсе «Go-разработчик» в Яндекс Практикуме и кандидат технических наук. В коммерческой разработке более 15 лет, стек — C++, Java, Go, TypeScript, а пробовал около 20 языков программирования, в том числе в продакшн. 

Эта статья про Go и микросервисную архитектуру написана на основе вебинара для Практикума.

Рассмотрим, как работает Jaeger, один из популярных инструментов, который помогает расследовать инциденты и находить узкие места в производительности в микросервисной архитектуре. Разберём, как правильно настроить трассировку и с какими проблемами можно столкнуться в процессе.

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Middle