Search
Write a publication
Pull to refresh
60
0

Пользователь

Send message

Двигаем биты — или как реализовать свой стандарт UUID

Reading time8 min
Views5.2K

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

Мне выпала стезя писать клиент на Golang. И всё бы было достаточно просто, если бы не сам стандарт. Для создания UUIDv7 вам нужно будет постоянно двигать различные биты в разных направлениях.

В этой статье я расскажу, с чем столкнулся, помогая с разработкой на golang.
Читать дальше →

Поиск проблемных промисов в JavaScript

Reading time10 min
Views9.7K
JavaScript — это фантастический язык для серверного программирования, так как он поддерживает асинхронное выполнение кода. Но это ещё и усложняет его использование.

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

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



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

Эти соединения что-то захватывало.

Речь идёт о кодовой базе в миллионы строк кода, которой в течение нескольких лет занимались десятки программистов. Может — проблема заключается в неразрешённых промисах? Я решил исследовать этот вопрос.
Читать дальше →

Страх и ненависть в RouterOS: что такое сетевое соединение в ядре Linux (часть 1 — теория)

Reading time6 min
Views37K

В статье рассмотрено понятие «соединение» для TCP и UDP протоколов в ядре операционной системы Linux на примере работы оборудования MikroTik. Дополнительно рассматриваются особенности работы технологии NAT в указанном контексте. Материалы носят в основном теоретический характер и предназначены для людей, тонко настраивающих Firewall, Qos и маршрутизацию, где им придётся непосредственно работать с рассматриваемыми connections.

В этой части статьи подробно описана сущность сетевого соединения глазами ядра маршрутизатора. В практической части закрепим информацию в результате рассмотрения работы прикладного протокола DNS через подсистемы RouterOS. В заключительной части речь пойдёт о диаграмме потока пакетов, при работе с которой важно понимать сущность рассматриваемого сетевого соединения, а также о не документированной в явном виде особенности работы NAT. Материала достаточно много, и чтобы читатель не потерял смысловую нить к концу статьи, она разделена на 3 части: теория, практика и особенность NAT.
Цикл статей не предназначен для новичков и может их только запутать. Полагаю, что читатель хорошо знаком с предметом разговора.
Читать дальше →

Карлсоны без пропеллера: реактивные ранцы вымышленные и реальные

Reading time8 min
Views5.7K
Джеймс Бонд покидает логово злодеев на реактивном ранце, фильм «Шаровая молния», 1964 год

В самом конце 1965 года на мировые экраны вышел четвёртый фильм о Джеймсе Бонде. Назывался он «Шаровая молния», и среди прочих гаджетов непотопляемого секретного агента 007 был ранец с реактивными двигателями. Он был одной из главных фишек, засветился даже на постере. В самом фильме Бонд с его помощью эвакуировался после успешной операции.

Конечно, в массовой культуре это средство передвижения фигурировало задолго до фильма. В августе 1928 года в американском журнале «Удивительные истории» были напечатаны повесть Филипа Нолана «Армагеддон 2419 года» и первая часть романа Эдварда Смита «Космический жаворонок». По забавному совпадению в обоих произведениях упоминались неслыханные ранее фантастические устройства — реактивные двигатели, крепящиеся на спине человека и позволяющие ему летать. Но именно успех Бонда сделал реактивный ранец атрибутом лихого и малость отмороженного персонажа. Он не встречается в художественных произведениях повсеместно, но свою нишу занимает определённо.
Читать дальше →

Как выжить после крушения?

Reading time11 min
Views31K
(www.goodfon.ru, Автор: Juliannaa)

Кораблекрушение, авиакатастрофа… Этот сюжет многократно обыгран во множестве разнообразных фильмов, игр и массовой культуре. Хотя большинство людей, так или иначе, слышали о подобном, но не имели к этому отношения (к счастью). В этой статье мы попробуем обсудить, как выжить современному человеку, в случае крушения, в безлюдном месте, а также дать знать о своей ситуации с помощью разных способов (в том числе, построив «радиопередатчик из ничего»).
Читать дальше →

Строим свою телестудию с блекджеком и…

Reading time9 min
Views9K

Жизнь системного администратора в постковидные времена — это просто особая радость. Я помню, как бегал по всем магазинам в округе, скупая последние остатки камер. Моментально сеть небольшого предприятия, расположенного в пяти зданиях, разбросанных по городу, была полностью перегружена видеотрафиком. Каждый хотел устроить видеовстречу, и каждому хотелось внимания. Скромные счета за интернет * начали становиться уже не такими скромными, и как обычно, мы сами стали тому причиной.

Ладно, подумал я. Раз такое дело, давайте подумаем, как это исправить. Мы решили сделать вот что. Никто не знал, что происходит и как жить. Поэтому давайте просто запустим наш собственный сервер для видеочата. Этот сервер мы сможем хотя бы контролировать и ограничивать в трафике.

И, более того, давайте мы сделаем что-то в виде новостей от CEO. Собираем менеджмент в одну комнату. Они сидят, обсуждают все вопросы в онлайне раз в неделю или что-то в этом роде, и вместо всех этих совещаний и планёрок, у всех сотрудников будет доступ к внутрикорпоративному “Ютубу”, на котором можно будет просто спокойно устроить одну большую видеоконференцию на этой неделе и беззаботно жить дальше.

Кто бы знал, что стенания пары системных администраторов приведут к созданию телестудии.
Читать дальше →

Ищем путь до линукс команд, как профессионалы

Reading time5 min
Views40K

Один из самых распространённых вопросов от подписчиков — как получить путь к команде Linux, которую только что установили в систему с помощью пакетного менеджера, например, команды apt или DNF. Много новых разработчиков переходит к нам из мира Windows, и для многих это первый опыт использования Linux. Некоторые используют WSL (подсистему Linux в Windows 10), а остальные работают с облачными серверами напрямую по SSH. Рассмотрим ряд распространённых команд, с помощью которых можно отобразить список команд Linux или получить к ним путь.
Читать дальше →

Разработка настоящих компонентов: блок сообщения Facebook Messenger

Reading time19 min
Views10K
Смесь любопытства и тяги к исследованиям снова привели меня к системе обмена сообщениями Facebook. Я уже изучал компоненты Facebook и писал об этом. Сейчас я обратил внимание на то, что в одни только блоки для вывода сообщений чата вложена огромная работа. На первый взгляд может показаться, что разработка компонента, реализующего чат — это просто, что у составных частей такого компонента будет не особенно много вариаций.

Если же вникнуть в тему работы с сообщениями, то окажется, что один только интерфейс чата — это такая штука, при создании которой нужно учесть невероятное количество деталей. Особенно — если это чат некоей платформы, сравнимой по масштабам с Facebook.



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

Делаем устройство для мониторинга концентрации CO₂

Reading time8 min
Views26K

Нередко мы сильно увлекаемся написанием кода настолько, что забываем подышать свежим воздухом, особенно когда нельзя держать окно постоянно открытым (ну, бывают причины). В результате этого в помещении повышается концентрация СО₂ и впоследствии начинаются неприятные побочные эффекты в виде сонливости, заторможенности и головной боли. Для решения этой проблемы существуют датчики СО₂, которые при достижении определённой концентрации скажут, что пора открыть окно. Готовые варианты конечно хорошо, но это слишком просто — сделаем своё хост-устройство для измерения и разомнём извилины.
Читать дальше →

Оптимизируем запросы ресурсов Azure с помощью Resource Graph и PowerShell

Reading time6 min
Views1.6K

Можете представить, сколько времени уйдёт на генерацию списка VM среди сотен подписок Azure? Целая вечность. Известно, что портал Azure выводит только первые 1000 подписок, что усложняет запрос ресурсов с его помощью, когда подписок у вас намного больше. К счастью, есть способ делать это гораздо быстрее и динамичнее. В этой статье мы разберём функционал Azure Resource Graph и используем эту службу с помощью PowerShell, существенно повысив гибкость управления запросами.
Читать дальше →

Как в Самаре создают будущую российскую ракету

Reading time6 min
Views26K

Новая российская ракета «Союз-5» разрабатывается с применением современной технологии — сварки трением с перемешиванием. Недавно я рассказывал, как в Подмосковье специалисты компании S7 Space для своей ракеты осваивают такую сварку. Теперь же удалось стать свидетелем первых шагов в постижении этой технологии уже на государственном ракетно-космическом предприятии РКЦ Прогресс в Самаре.
Читать дальше →

Григорий Остер — Вредные советы для писателей мануалов

Reading time9 min
Views25K
Недавно мне опять пытались продать «Тик-ток». Молодёжь заливалась песнями о том, как же прекрасна новая платформа. «Возможно» — сказал я — «И чем же она так прекрасна?»

— Ну, там можно научиться огромному количеству новых и неизвестных вещей.
— А… Правда? Ок, удиви меня.
— Вот! – наивный юнец с радостью ткнул на указатель на приборной панели своей «Хонды».
— И что же в этом такого прикольного?
— Видишь стрелку? Она показывает с какой стороны у тебя крышка бензобака, чтобы ты помнил, где останавливаться у бензоколонки.


Я тяжело вздохнул, открыл бардачок, и, к ужасу парнишки, извлёк из него потрёпанный мануал 2004 года выпуска. После 20 секунд листания оного мануала, я ткнул пальцем в ту самую иконку, которая показывает, с какой стороны у тебя бензобак.

— Ну вот, пожалуйста. Это было известно ещё до «Тик-тока», и даже до «Фэйсбука». Эх! Это было известно ещё до интернета и, возможно, до появления автоматической коробки передач. Это было известно до того, как твои родители появились на свет. Ты мануал-то читал?
— Нет.
Оно и видно.

Признайтесь, люди не читают мануалов. Давайте посмотрим, что Вам можно посоветовать, чтобы люди от них вообще избавились.
Читать дальше →

Задачки по программированию на BASIC для ZX Spectrum

Reading time2 min
Views15K
Недавно я участвовал в нескольких соревнованиях, которые проводились в Facebook-группе, посвящённой BASIC-программированию для ZX Spectrum. Там попадаются задачки разной сложности, но большинство из них можно решить, минут за 30 написав соответствующий код. Если вы хотите проверить или улучшить свои навыки программирования на BASIC — вам, возможно, будет интересно взглянуть на эти задачки.


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

Бензиновые квадрокоптеры и мультикоптеры. Краткий обзор

Reading time9 min
Views26K

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

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

Оптимизация математических вычислений и опция -ffast-math в GCC 11

Reading time9 min
Views9.5K
В этом материале речь пойдёт об оптимизациях, которые включает опция -ffast-math при компиляции кода, написанного на C или C++, с использованием GCC 11 для x86_64 Linux (при применении других языков, операционных систем, процессоров могут использоваться немного другие оптимизации).


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

Посмотрим, что внутри у нового сервера Lenovo ThinkSystem SR650 v2

Reading time6 min
Views11K

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

Последняя новинка в нашем парке — популярный двухпроцессорный 2U-сервер Lenovo ThinkSystem SR650, о которой сама Lenovo уже рассказывала на Хабре. Но там был обзор первой версии сервера, а в 2021 году Lenovo выпустила более продвинутую вторую версию, которую мы и приобрели для своего дата-центра.
Читать дальше →

Как научиться работать в Blazor, делая что-то полезное. Часть II

Reading time7 min
Views6.7K


Как я сказал в первой части этой статьи, мы решили написать систему, которая преобразует команды для отправки многочисленных инструкций на различные IoT реле на Blazor. Где по-быстрому, практически на коленке собрали отличную систему работы с этими реле. Всё было просто замечательно и быстро! Но не всё было так просто, как обещали.
Читать дальше →

Написание скриптов для tmux

Reading time3 min
Views13K
Мне, когда я пользуюсь tmux, часто надо открывать похожие рабочие пространства. Например, мне всегда нужно выводить последние строки пары файлов журналов в панели, или мне нужно открывать и vim, и mysql. Бывает, что мне нужно и что-то другое.



Если вы попробуете найти сведения об открытии рабочих пространств tmux, то почти гарантированно обнаружите советы по использованию программы-обёртки вроде tmuxinator, tmux-resurrect или tmux-continuum. Эти программы, возможно, хороши, но я предпочитаю что-нибудь попроще.
Читать дальше →

Вирусы как сборочные комплекты живой природы: репликация и мутация, но ещё не поведение

Reading time14 min
Views11K
Размножение оказалось другим выходом из тупика устойчивости неживой природы — компенсировав недостаток неубиваемости атомных связей металлов и минералов способностью к размножению и широкой распространённостью новых строительных материалов устойчивых форм организации материи — водорода и углерода, из которых древние океаны Земли практически и состояли. И металлическое ядро Земли и первые вирусы решили одну и ту же задачу организации материи в устойчивые структуры, но если структуры неживой природы были закономерным развитием свойств образующих их материи, то первые вирусы — первое же явление формы материи, к которой применимо, хоть и с оговоркой, понятие смысла существования: структура вируса — это структура, не возникшая «в результате», а ориентированная на результат: раз возникнув — не исчезать.


Фактически, вирус, не являясь формой жизни, оказался формулировкой смысла жизни — стремление к жизни, умножение жизни. Как в смысле умножения времени индивидуальной жизни, так и в смысле умножения жизни её репродукцией. В диапазоне от выживания любой ценой до экспансии — увеличения продолжительности жизни, числа форм жизни и количества живых существ. Не прекращаться несмотря ни на что, продолжать существование в любых обстоятельствах.
Читать дальше →

Сам себе РКН или родительский контроль с MikroTik (ч.2)

Reading time10 min
Views19K

Вторая и заключительная статья в цикле организации родительского контроля на оборудовании MikroTik. Ранее подробно рассмотрены организация DNS, работа Firewall Filter и Ip Kid-control. В текущей части поговорим о прикладном применении маркировки трафика посредством Firewall Mangle, а также сделаем общие за представленный цикл статей выводы, касающихся возможностей RouterOS по организации родительского контроля.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Works in
Registered
Activity