Pull to refresh
8
0.4
Дмитрий @khajiit

Программист, железячник.

Send message

TOTP без смартфона

Level of difficultyEasy
Reading time5 min
Views14K

Когда я решил избавиться от необходимости постоянно носить с собой смартфон, одной из проблем оказалась двухфакторная аутентификация (2FA, приложение Google Authenticator). Остаться без возможности авторизации на множестве сервисов было неприемлемо, нужна была альтернатива.

Беглый поиск вывел меня на утилиту oathtool: командная строка, POSIX, OSS — всё, как я люблю, проблема в принципе решена. Но, как и большинство CLI утилит, её удобно использовать в сочетании с другими утилитами, а для этого полезно написать скриптовую обвязку. Собственно этой обвязкой, а также опытом использования, я и решил поделиться.

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

Самое понятное объяснение Специальной теории относительности

Level of difficultyMedium
Reading time13 min
Views97K

Специальная теория относительности - удивительная теория, которая опровергла многие представления о мире, в которых человечество не сомневалось всю историю своего существования.

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

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

Для иллюстраций я написал интерактивный визуализатор СТО, работающий в браузере. Ссылка на него и исходники проекта в конце статьи.

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

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Level of difficultyMedium
Reading time45 min
Views134K

Поскольку блокировки интернета в РФ в последние недели и месяцы многократно активизировались, а маразм все крепчает и крепчает, стоит еще раз поднять тему обхода этих самых блокировок (и делаем ставки, через сколько дней на эту статью доброжелатели напишут донос в РКН чтобы ограничить к ней доступ на территории страны).

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее
Total votes 506: ↑498 and ↓8+490
Comments351

Итак, вы думаете, что знаете Git? Часть вторая: новое в Git

Level of difficultyEasy
Reading time4 min
Views27K

Автор оригинала Скотт Чакон — сооснователь GitHub и основатель нового клиента GitButler. Этот клиент ставит во главу угла рабочий процесс и удобство разработки, в том числе код-ревью, и не является просто очередной обёрткой над CLI git.


Далее в нашей серии постов из трёх частей у нас новые фичи! Здесь я расскажу про пять относительно новых вещей в git, о которых вы могли не слышать, потому что ну почему вы?


Мы взглянем на:


Погружаемся!
Total votes 42: ↑41 and ↓1+40
Comments84

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

Reading time15 min
Views77K

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

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

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

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

Итак, вы думаете, что знаете Git? Часть первая: старый добрый Git

Level of difficultyEasy
Reading time4 min
Views15K

Автор оригинала Скотт Чакон — сооснователь GitHub и основатель нового клиента GitButler. Этот клиент ставит во главу угла рабочий процесс и удобство разработки, в том числе код-ревью, и не является просто очередной обёрткой над CLI git.


В первом посте из этой короткой серии по Git я хотел начать с вещей, уже существующих какое-то время. При этом кажется, что многие люди о них не знают или не умеют ими пользоваться. В них нет ничего нового, но я нахожу их полезными и, возможно, не совсем освещёнными. Я просто хочу рассказать о:



Давайте покопаемся!
Total votes 25: ↑24 and ↓1+23
Comments6

Разбираемся с Bluetooth Low Energy на примере превращения USB-клавиатуры в беспроводную

Level of difficultyMedium
Reading time16 min
Views15K


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

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

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

Данная статья ставит целью на примере разработки собственной Bluetooth-клавиатуры помочь разобраться в базовых понятиях Bluetooth, так как чтение скучных спецификаций и статей с введением в технологию даёт мало пользы.
Читать дальше →
Total votes 76: ↑74 and ↓2+72
Comments76

Скрытые возможности элемента <input>

Level of difficultyMedium
Reading time8 min
Views17K

Элемент <input> в HTML самый интересный.

Большинство его собратьев вне зависимости от своих атрибутов ведут себя одинаково. При этом атрибут type элемента <input> может принимать 22 разных значения, которые не только меняют его поведение, но и влияют на внешний вид (зачастую в ущерб стилистике).

Элемент <input> отвечает за всё, начиная с текстового ввода и чекбоксов, заканчивая переключателями и кнопкой для сброса всех полей в форме. В этой статье я опишу не только различные типы <input>, но и сопутствующие атрибуты, о которых вы могли не знать, и которые делают этот элемент более удобным и применимым в различных ситуациях. Приступим!
Читать дальше →
Total votes 103: ↑102 and ↓1+101
Comments22

Курс «PostgreSQL для начинающих»: #3 — Сложные SELECT

Level of difficultyMedium
Reading time12 min
Views26K

Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В этой лекции углубимся в расширенные возможности команды SELECT : как можно "сложить" и "вычесть" выборки (UNION/INTERSECT/EXCEPT), или запомнить и использовать в рекурсивных запросах (CTE), что дают оконные функции (WINDOW) и соединения (JOIN).

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

Читать далее
Total votes 36: ↑35 and ↓1+34
Comments7

Сам себе мобильный интернет. Запускаем базовую станцию стандарта 4G LTE

Level of difficultyHard
Reading time13 min
Views80K
Приветствую всех!

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



Итак, в сегодняшней статье поговорим о том, что детально в нашем сообществе не описывал практически никто — о том, как запустить базовую станцию самого нового из поддерживаемых большинством телефонов этой страны стандартов. Поговорим об особенностях её работы и о трудностях, с которыми, возможно, придётся столкнуться при запуске. Традиционно будет много интересного.
Читать дальше →
Total votes 370: ↑369 and ↓1+368
Comments156

In RISC-V Rust

Level of difficultyMedium
Reading time16 min
Views9.7K

Превращаем простой пример распознавания нот из лабораторных работ Школы синтеза цифровых схем в Enterprise. Используем компилятор Rust для RISC-V микроконтроллера YRV-Plus.

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

Графические оболочки FFmpeg

Level of difficultyEasy
Reading time6 min
Views27K


Считается, что работа в консоли эффективнее GUI по нескольким причинам. Во-первых, там быстрее набирать команды, чем двигать курсором. Во-вторых, на CPU, память и GPU не ложится лишнее бремя графической оболочки, так что любые процессы быстрее выполняются в консоли.

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

FFmpeg — изначально консольная утилита. Но её популярность крайне высока. Поэтому появляются всё новые варианты графических оболочек для FFmpeg, чтобы доступ к инструменту получили абсолютно все пользователи.
Читать дальше →
Total votes 107: ↑107 and ↓0+107
Comments76

Decky Notifications: как переизобрести KDE Connect и перенести уведомления в Steam Deck

Reading time12 min
Views3.2K

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

Хочу играть и не проверять телефон, но при этом боюсь пропустить что-то важное. И я нашел способ решение этой задачи. В этой статье расскажу, как мне пришлось полностью перебрать протокол KDE Connect, чтобы написать плагин, который переносит уведомления в Steam Deck. Подробности под катом!
Читать дальше →
Total votes 44: ↑44 and ↓0+44
Comments10

Zabbix, PostgreSQL и pg_stat_statements

Level of difficultyHard
Reading time43 min
Views9.7K

Я хочу поделиться своим опытом использования Zabbix для анализа проблем с производительностью PostgreSQL, используя расширение pg_stat_statements.

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

Что ты такое, dhclient?

Reading time19 min
Views37K

Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.

Чтобы лишний раз не дёргать ядро прерываниями, придумали DMA — Direct Memory Access. И это дало жизнь классу софта с режимом работы kernel bypass: например при DPDK (Intel Data Plane Development Kit). Потом был BPF. А за ним — eBPF. 

Но даже помимо хаков работы с ядром есть такие штуки, как sk_buff, в которой хранятся метаданные всех миллионов протоколов. Есть NAPI (New API), которая призвана уменьшить число прерываний. Есть 100500 вариантов разных tables.

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

Начать погружение
Total votes 223: ↑222 and ↓1+221
Comments61

Стек протоколов BLE 5 -физический уровень

Level of difficultyEasy
Reading time9 min
Views4.4K

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

Рабочая частота BLE составляет 2,4 ГГц. Он использует частотную модуляцию GFSK и использует механизм скачкообразной смены частоты для решения проблемы перегрузки канала.

Существует три схемы реализации для физического уровня BLE 5, а именно некодированный физический уровень со скоростью 1 Мb/s, некодированный физический уровень со скоростью 2 Мb/с и кодированный физический уровень со скоростью 1 Мb/s. Среди них некодированный физический уровень со скоростью 1 Mb/s совместим с физическим уровнем протокола серии BLE v4, в то время как два других физических уровня увеличивают скорость связи и расстояние связи соответственно.

Читать далее
Total votes 20: ↑18 and ↓2+16
Comments12

Сверхмассивные чёрные дыры поглощают материю быстрее, чем мы думали

Reading time5 min
Views4.7K

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

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

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

Читать далее
Total votes 23: ↑21 and ↓2+19
Comments17

Модуль Terraform для Proxmox VM

Level of difficultyMedium
Reading time14 min
Views10K

Это вторая статья по провайдеру  terraform-provider-proxmox. Здесь первая статья. В общем не буду ходить вокруг да около. Читайте документацию.

Описание ресурса VM Qemu

Этот ресурс позволяет управлять виртуальными Proxmox VM Qemu машинами.

Create a Qemu VM resource

Вы можете запускать виртуальные машину либо с помощью ISO образа, либо с загрузкой через PXE, либо клонировать существующую виртуальную машину или шаблон ВМ.

Оптимальный вариант использования это использовать базовый шаблон.

При создании ресурса VM Qemu, вы описываете блок ресурса proxmox_vm_qemu.

Для режимов клонирования или загрузки с ISO образа обязательными параметрами являются только имя name и узел на котором необходимо развернуть VM target node.

Для режима загрузки по сети  PXE, в директиве boot в очереди загрузки должно содержаться значение Network (имя интерфейса).  

Обычно для виртуальных машин загружаемых по сети, qemu агент НЕ должен быть включен. Для загрузки посредством PXE требуется инфраструктура поддерживающая запросы на загрузку по сети для данной технологии.

Далее
Total votes 5: ↑5 and ↓0+5
Comments0

Мой любимый файл в кодовой базе Chromium

Reading time6 min
Views86K
Код Хромиума весьма обширен, там каждому найдётся что-то по вкусу. А я вот решил рассказать о своём любимом файле в нём (а у вас есть такой?). Этот файл отражает всё: боль, разочарование, надежду, упорство, силу воли, ответственность за чужие провалы и самопожертвование. Я иногда читаю его и плачу и проникаюсь пониманием, какая же огромная часть айсберга скрыта под водой. Это, в общем, даже не файл с кодом. Это файл с конфигом, описывающим баги видеокарт, которые Хромиуму приходится обходить для нормального отображения своих страниц на разных платформах. Вот он: https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list.json

О чём вообще идёт речь? Давайте вспомним, как работает браузер: вы набираете какой-то адрес в адресной строке, браузер загружает контент и отображает его. Чуть детальнее об этом рассказывает хорошая статья «What happens when you type google.com into your browser and press enter?» (и сразу несколько её переводов на Хабре). В ней одним из последних пунктов упоминается, мол, «а теперь, когда всё готово, отрисовываем картинку на экране». Ага, вот так берём и отрисовываем, конечно.
Читать дальше →
Total votes 186: ↑185 and ↓1+184
Comments179

Опус о могучем UEFI, страшном SecureBoot и загадочном TPM

Level of difficultyMedium
Reading time7 min
Views3.4K

Жил-был я. И как-то я задумался, почему у Windows есть BitLocker с шифровамние раздела, а в Linux эта тема не сильно освещена? Очевидно, что это достаточно нишевая задача. Нишевая - потому что не только лишь каждому нужно шифровать разделы. А те, кому надо тискают LUKS. Монтирование этого самого пресловутого LUKS через crypttab не составляет трудностей. А вот системный раздел обычно не шифруют. Потому что при включении будет требоваться ввод пароля от системного раздела...

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

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

Отказаться от выходных
Total votes 3: ↑3 and ↓0+3
Comments2
1
23 ...

Information

Rating
1,712-th
Location
Россия
Registered
Activity