Pull to refresh
1
@tron_lineread⁠-⁠only

User

Send message

HTTP/3 от А до Я: основные концепции. Часть 1

Reading time20 min
Reach and readers113K

image
Фото Florencia Viadana, Unsplash.com


После почти пятилетних разработок протокол HTTP/3 наконец приближается к окончательному выпуску. Предыдущие итерации уже доступны как экспериментальная функция, но в 2021 году мы ждём широкого распространения протокола. Что такое HTTP/3? Зачем выпускать его так рано после HTTP/2? Как его можно или нужно использовать? Как он влияет на производительность?

Читать дальше →

Секреты observability. Часть 3: распределённая трассировка с Jaeger и OpenTelemetry

Reading time8 min
Reach and readers30K

image
Фото Bertrand Bouchez, Unsplash.com


В прошлой статье мы с помощью Prometheus AlertManager настроили правила, чтобы отправлять уведомления через Slack при срабатывании алертов. И хотя алерты и уведомления — это удобно и полезно, сами по себе метрики не до конца объясняют проблему. Они просто показывают, что значения одного экземпляра вышли за установленные лимиты, но в распределённых системах метрики не могут отследить запрос, который проходит через несколько компонентов. С распространением микросервисов системы усложняются, поэтому мы должны проследить весь путь запроса, чтобы понять, что пошло не так. Для этого можно использовать распределённую трассировку, которая записывает действия, выполняемые в связи с запросом, и дает контекст, который мы не найдем в метриках и логах.


В этой статье мы расширим возможности observability (наблюдаемости) приложения — создадим спаны (span) и экспортируем их в распределённую опенсорс-систему Jaeger. Но сначала разберемся, что такое трейс.

Читать дальше →

Ускорение процесса разработки под Embedded Linux

Reading time11 min
Reach and readers14K

Любой программист, решивший заняться разработкой под Embedded Linux, придя буть-то из высокоуровневых языков программирования, либо из программирования микроконтроллеров на С/С++, неизбежно оказывается удивлен крайней недружелюбностью embedded linux. Текстовый блокнот и консольные утилиты вместо столь привычных IDE, и отладка по логам вместо отладки программатором сильно замедляют процесс разработки. В статье описывается, как мне удалось снизить время доставки изменений до целевого железа при кросс-компиляции в 10 раз.

Читать далее

Как в восемь раз уменьшить количество DNS-запросов в Go

Reading time6 min
Reach and readers16K

Привет, Хабр. Меня зовут Рустам. Я работаю в Ozon: админю Kubernetes и пишу на Go.

У нас очень много сервисов на Go — их количество исчисляется тысячами. Запускаются они внутри кластеров Kubernetes. А я плотно работаю с Kubernetes и заметил, что при запуске кода внутри Kubernetes для резолва одного адреса делается до десяти DNS-запросов. Это, конечно, влияет на производительность.

Я решил разобраться, как Go делает DNS-запросы. В результате мне удалось уменьшить их количество в наших проектах до одного-двух. Как у меня это получилось и можно ли использовать мой опыт в вашем проекте, я расскажу в статье.

Узнать больше про Go+DNS

SerenityOS: Unix-подобная операционная система с кастомным ядром и графическим интерфейсом в стиле 90-х

Reading time5 min
Reach and readers29K

Пару лет назад в сети появилась информация о проекте Serenity — Unix-подобной операционной системе для архитектуры x86 с собственным ядром и винтажным интерфейсом. При этом возможности операционной системы заявлялись вполне современные.

Это ОС, написанная с нуля, которая не базируется на коде уже существующих операционных систем. Авторы SerenityOS активно работали над поставленной целью — создание новой операционной системы, пригодной для выполнения большинства привычных нам задач. Код системы пишется на С++. Сейчас проект достиг нового уровня развития — в среде ОС уже можно поработать, составив собственное мнение о SerenityOS. Подробности о новинке — под катом.

Создаем и запускаем в облаке мощный и главное бесплатный сервер Minecraft

Reading time8 min
Reach and readers45K

Пару месяцев назад, когда Oracle представила в своем публичном облаке двухсокетные серверы с 80-ядерными ARM-процессорами, в англоязычном блоге Тодда Шарпа появилась статья о том, как запустить сервер Minecraft в облаке. Теперь, когда Oracle добавил эти процессоры в Always Free Tier, все стало еще интереснее — вы можете совершенно бесплатно и неограниченно создавать и использовать виртуальные машины, использующие в общей сложности 4 ядра и 24GB памяти. Однако за два месяца изменился интерфейс Публичного Облака Oracle и версии программ, которые применяются для запуска сервера Minecraft. Поэтому сегодня я хочу поделиться своим опытом прохождения этого же пути — с учетом изменений и подводных камней, а также в русскоязычным интерфейсом. Всех любителей Minecraft, а также заинтересованных в создании бесплатных виртуальных серверов, прошу под кат!

Читать далее

Очередная китай-камера с бэкдором

Level of difficultyMedium
Reading time8 min
Reach and readers21K

Как можно догадаться, на этот раз речь пойдёт об очередном поделии китайского IoT-гения, а именно о цифровой камере для третьего "глаза" микроскопа (можно ли назвать камеру для микроскопа IoT-ом?). Не знаю, может у них там сверху наказ такой: в каждую камеру по бэкдору совать (и чем больше, тем лучше), но это в самом деле треш.

За какую камеру ни возьмись: будь она для видеонаблюдения, либо, как в моём случае, для вывода картинки с микроскопа на монитор/смартфон - по факту вы получаете не только девайс, выполняющий свои основные функции, но и как "премиум-фичу" - потенциально следящее (конечно же, за Вами) устройство. Об одном таком девайсе я и хочу рассказать.

Читать далее

Демонстрация виртуального дисплея без задержки с DXGI. Или как получить второй монитор из ноутбука/телефона/планшета

Level of difficultyMedium
Reading time6 min
Reach and readers3.6K

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

Читать далее

Простой и универсальный способ чтения логов в терминале

Level of difficultyEasy
Reading time6 min
Reach and readers17K

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

Читать далее

Модель OSI

Level of difficultyEasy
Reading time6 min
Reach and readers20K

В этой статье вы узнаете об основных понятиях модели Open Systems Interconnections (OSI) в простой и доступной форме.

Многие, вероятно, знают основы того, что такое интернет и как он работает. Есть клиент и сервер, и они «общаются» друг с другом с помощью чего-то, называемого HTTP или HTTPS?

В этой статье вы узнаете как компьютеры общаются друг с другом по сети.

Читать далее

Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки

Level of difficultyMedium
Reading time12 min
Reach and readers19K

Каждый раз, в течение многих лет, собирая пилотную версию мизерного проекта или простой утилиты, мне кажется, что уж в этот раз точно обойдусь обычным скриптом для сборки, и никакие сборщики проекта мне не понадобятся. Но суровая реальность приводит меня в чувство уже в течение первых нескольких минут работы. Сначала оказывается, что до невозможности простая программка нуждается в JSON-парсере, HTTP-запросах CURL и прочих библиотеках. А по мере возбуждения хотелок эти все зависимости нарастают как снежный ком. И все мечты быстро скомпилировать страничку кода встречают на каждом шаге всё новые и новые проблемы.

Вот сегодня и расскажу о том, какие бывают способы борьбы с зависимостями и сборки проекта из множества файлов на Си++. Заодно те, кто не любят Си++, смогут порадоваться «прелестям» этого процесса. И хоть тема очень важная для программистов, но я обратил внимание, что даже многолетний опыт не гарантирует понимания этих процессов. Но сразу предупреждаю — история длинная даже с учетом всех попыток не убегать на смежные темы.
Читать дальше →

Динамические структуры данных на Си: Введение. Список — простой вариант

Reading time8 min
Reach and readers25K

Эта статья призвана резюмировать приобретенные знание полученные в процессе обучения программированию. Так вышло, что я попал на обучение на программиста, скажем так, "по-взрослому". Поэтому первым языком стал Си. Основы языка дались легко благодаря опыту работы с языками программирования PHP, JavaScript, C# и Python. Но позднее процесс обучения вышел на новый уровень, связанный со структурами данных. И начались мои страдания.

Оказалось, что моего опыта "кодинга" всякой мелочи недостаточно, опытные пользователи бы сказали, что в интернете существует множество статей по реализации тех же списков, но они мне не подходили. В конечном итоге до всего пришлось доходить самостоятельно, лишь используя имеющиеся статьи. Теперь в этой серии статей я попытаюсь зафиксировать свой опыт. Я всего лишь еще учусь, поэтому в решениях возможны некорректность в реализации, поэтому советам по улучшениям буду рад. А быть может мои статьи помогут еще кому-нибудь.

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

Условия реализации следующие. Все программы будут реализовываться для работы в ОС Ubuntu. Возможен их запуск в Unix-подобных системах. Другие специфические особенности будут мной указаны непосредственно в самой статье по конкретному решению.

Читать далее

Деление беззнаковых 8-битных чисел

Level of difficultyMedium
Reading time13 min
Reach and readers4K

Деление — достаточно затратная операция. Например, на CPU Cannon Lake задержки 32-битного деления находятся в интервале 10-15 тактов, а на Zen4 — 9-14 тактов. Задержки 32-битного умножения на обоих CPU составляют 3-4 такта.

Ни в одном из популярных ISA SIMD (SSE, AVX, AVX-512, ARM Neon, ARM SVE) нет целочисленного деления, оно есть только в RISC-V Vector Extension. Однако во всех этих ISA есть деление с плавающей запятой.

В этой статье мы представим два подхода к реализации SIMD-деления 8-битных беззнаковых чисел.

Читать далее

Python: неочевидное и вероятное

Level of difficultyMedium
Reading time5 min
Reach and readers11K

Python известен своей простотой и предсказуемостью, но за этой доступностью скрываются интересные и неочевидные особенности, способные удивить программистов с базовым опытом(а если повезет, то и опытных). В этой статье мы рассмотрим несколько таких «фокусов» и тонкостей, чтобы глубже понять внутреннюю логику и философию языка.

Читать далее

О программировании промышленного ПЛК на C++

Level of difficultyMedium
Reading time31 min
Reach and readers8.1K

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

Для любителей промышленной автоматизации

Делаем звонок из браузера в игре на движке Godot 4

Level of difficultyEasy
Reading time12 min
Reach and readers2.1K

Делаем звонок из браузера в игре на движке Godot 4

Представим ситуацию, вам очень хочется необычно поздравить человека, ну или сделать маркетинговую акцию. В голове уже созрел сценарий – пользователь открывает ссылку, выполняет простые действия и затем прямо из браузера звонит на определенный номер. А мы на том конце сообщаем ему какую-нибудь приятную новость. Чудеса да и только!

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

К счастью в активе есть жгучее желание делать игры на бесплатном движке Godot, пара свободных часов и аккаунт в МТС Exolve.

Не будем терять ни минуты и начнем эту задачу решать.

Читать далее

Адаптивный UI в движке Godot

Level of difficultyEasy
Reading time11 min
Reach and readers6.9K

Пользователи играют в игры на устройствах с разными размерами экранов, так что при разработке игр очень важен адаптивный пользовательский интерфейс (User Interface, UI). Продуманный адаптивный UI обеспечивает идеальный внешний вид на любом экране. В Godot Engine есть широкий выбор настроек и нодов, упрощающих создание адаптивного UI.

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

Читать далее

Что такое Blueprint в Unreal Engine 5. Плюсы и минусы

Level of difficultyEasy
Reading time3 min
Reach and readers18K

Unreal Engine - один из самых мощных игровых движков, который широко используется в индустрии разработки видеоигр. Его главное преимущество заключается в возможности создания высококачественных игровых проектов с помощью визуального программирования. Одной из ключевых составляющих Unreal Engine является Blueprint – интуитивная система визуального программирования, которая облегчает разработку игровой логики без необходимости в глубоких знаниях программирования.

Читать далее

Асинхронность в blueprints и Unreal Engine

Level of difficultyEasy
Reading time3 min
Reach and readers1.6K

Если вы давно работаете с unreal engine, то точно должны знать, что в движке есть различные ноды, которые можно вызвать сейчас, а получить результат функции потом, да еще и продолжить логику, когда функция выполнится.

Читать далее

Библиотека начинающего ООП программиста — ваши советы

Reading time1 min
Reach and readers3.9K
Я так понимаю, многие сейчас страдают от неорганизованности знаний. Нахватавшись по верхам и того и этого, не имея базы, основы, пытаешься разбираться с вопросами и проблемами по ходу их возникновения. От этого беспорядочность только увеличивается. Так вот и я — вроде бы программирую, а получается быдлокод.

Решил с этим бороться и начать изучать все заново, по порядку.

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

Основы программирования, основы ООП, создание удобного и расширяемого кода и т.д. и т.п. Движусь, в основном, в сторону PHP и Adobe Flex, но параллельно приходится знать и Javascript и объектно-ориентированные базы данных и C++ и многое другое.

В комментарии приглашаются все, кто может подсказать полезную литературу, сайты, туториалы и FAQ'и. Думаю, что топик окажется полезным для многих людей. А по результатам попытаюсь составить библиотечку «must have».

Ваше слово :)

Information

Rating
Does not participate
Registered
Activity

Specialization

Десктоп разработчик, Разработчик игр
Python
ООП
C++
Unreal Engine
Шейдеры
Разработка игр
Разработка под AR и VR