Yellow Leaf
41 subscribers
243 photos
118 links
Всякое около IT-шное.

Связь с автором: @moose_kazan
Download Telegram
Образование здорового человека

В Казанском университете на базе факультета журналистики работает студенческий телеканал "Универ ТВ". Не единственный, но один из немногих в России. У меня большое уважение вызывает ещё один факт: частные компании обеспечивают трансляцию этого канала сильно за пределами университета. Например Таттелеком транслирует его в составе основного пакета КТВ. Причём сразу в SD и HD.

А Радиотелеком добавил "Универ ТВ" в свой пакет эфирных каналов в DVB-T, транслируемый в крупных городах Татарстана. По-моему тут два уникальных для РФ факта: частный эфирный мультиплекс и студенческий канал в нём. Подозреваю что второе отчасти связано с тем что учредитель Радиотелекома сам начинал с факультета журналистики.

Т.е. у студенческого канала есть зрители сильно за пределами университета. Студенты не просто делают программы, они их делают для реального зрителя. По-моему всё это очень круто.

Считаю что таким и должно быть образование.
👍2
GNOME Commander 2

Некоторое время назад воскрес gnome-commander. Его переписали на rust, перенесли на GTK4, добавили плагинов. И неожиданно стало хорошо. Мне очень понравилось.

Обычно использую Krusader, но он выглядит как-то уж очень громоздко. Хотя конечно поддержка KIO и KPart это приятно. Но в GNOME Commander есть поддержка сетевых соединений в виде отдельного диалога с закладками. Мне этого достаточно. Ну и встроенный просмотрщик вполне функционален и без KPart.

Готовый пакет нашёл только в Сизифе (ребята из Базальт - молодцы), так что в Debian пришлось собирать из исходников. Но никаких проблем со сборкой не возникло и всё работает хорошо.

Вобщем рекомендую.
👀1
Midninght Commander и архивы

Я немного знаю как устроена работа с архивами в Midninght Commander. В разное время я добавлял поддержку форматов WIM и Brotli, а так же исправлял поддержку ARJ и ALZ. Так что думаю что могу рассказать про всё это.

За работу с архивами отвечают скрипты, которые на большинстве дистрибутивов расположены в /usr/lib/mc/extfs.d. Эти скрипты имеют довольно простой интерфейс:

script list $arcname

script copyout $arcname $filename $dest

script copyin $arcname $filename $src

script rm $arcname $filename

script rmdir $arcname $dirname

script run $arcname $filename

script mkdir $arcname $dirname


Если какой-то метод не поддерживается то скрипт возвращает код возврата, отличный от нуля.

Хорошая новость в том что скрипты можно писать на любом языке. И сейчас есть скрипты на shell, python, perl, awk. Отсюда такой список зависимостей у mc.

Плохая: файлы в/из архива копируются по одному. Для solid-архивов (например rar, 7zip) на большом количестве файлов это приводит к заметному замедлению операций.

Ещё одна плохая новость: если архиватор запрашивает пароль или выдаёт ещё какой-то запрос - с большой долей вероятности получается дедлок.
❤2
Хитрые планы сотовых операторов

Есть у российского МТС такая довольно удобная штука: "Группа Семья". Идея в том что связь оплачивает один человек ("глава семьи"), а остальные участники ("члены семьи") пользуются услугами из пакета основного участника и сами ничего не оплачивают.

Случайно выяснил что если участник группы подаст заявление на перенос номера к другому оператору то он автоматически исключается из группы и переводится на тариф с помегабайтной(!) оплатой трафика.

Если вспомнить что процедура MNP занимает около восьми суток и требует чтобы в момент переноса баланс абонента был положительным получаем интересную историю: возможность отказать в переносе по техническим причинам (ноль или минус на балансе).

Восхищён находчивостью того кто это придумал.
😁2
PWA это хорошо

Даже будучи тимлидом команды мобильных разработчиков я говорил что во многих случаях мобильные приложения - зло. Как минимум в тех случаях когда они являются по сути фронтендами для некоторого API: интернет-магазины, сервисы доставки и т.д. Их вполне можно заменить на PWA (Progressive Web App): по сути сайты в браузере, адаптированные к мобильным экранам.

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

И вот тут снова на сцену выходят PWA. Для доставки их пользователям не нужны каталоги и значит и удаление из каталогов не так уж страшно. А ещё такие приложения не привязаны к конкретной ОС. И наши российские сервисы к этому приходят, хотя и не совсем по своей воле. Сначала веб-версии банковских приложений были адаптированы для мобильных браузеров. А теперь вот и наш национальный мессенджер стал работать в мобильных браузерах.
👏1
Немного на злобу дня

Тут в чате родного жилого массива стали обсуждать то что 281-ФЗ запрещает рекламировать. Не удержался и высказался по этому поводу:

Самый лучший VPN будут раздавать 20-го сентября на избирательных участках. По паспорту. Называется "Бюллетень". Если в нём ручкой проставить правильные настройки и опустить в урну то возможно все необходимые сервисы со временем заработают.


К сожалению все остальные варианты так или иначе со временем перестанут работать...
👍3😁1
WebDAV-сервер на коленке

Понадобился мне WebDAV-сервер и я опять столкнулся с тем что выбор готовых решений довольно ограничен. В итоге нагуглил dufs (название меня позабавило) и он мне понравился. Для себя увидел только один недостаток: отсутствие маппинга пользователей. Т.е. вот под каким uid/gid запустил - так под ним и будет читать/писать. Но в моих сценариях это не критично.

Запустил в контейнере. Если кому вдруг надо то вот мой docker-compose.yml:

services:
dufs:
image: sigoden/dufs
restart: always
ports:
- 5000:5000
environment:
DUFS_CONFIG: "/cfg/config.yaml"
user: "1999:1999"
volumes:
- "./logs:/logs"
- "./cfg:/cfg"
- "/volume1/Films:/data/Films"



И config.yaml:

serve-path: '/data'
bind: 0.0.0.0
port: 5000
path-prefix: /
hidden:
- 'tmp'
- '*.log'
- '*.lock'
- '.*'
auth:
- 'moose:[CENSORED]@/:rw'
allow-all: false
allow-upload: true
allow-delete: true
allow-search: true
allow-symlink: true
allow-archive: false
allow-hash: false
enable-cors: false
render-index: true
render-try-index: true
render-spa: true
log-format: '$remote_addr "$request" $status $http_user_agent'
log-file: /logs/dufs.log
compress: low


Можно ещё добавить SSL, но в моём случае за это отвечает отдельный фронтенд.
👍2🔥1
htop и zswap

Обнаружил что начиная с версии 3.3 htop поддерживает zswap и отображает сжатые данные отдельным цветом (по умолчанию - серым). Интересно видеть как файл подкачки свободен, хотя до сжатия данных там почти на весь файл.
👍1
Простой мониторинг

Есть у меня потребность мониторить доступность всяких личных железок. Буквально проверять доступность по ICMP. В ряде случаев проверять TCP-порт. Долго использовал Zabbix, но для моих задач он казался слишком громоздким.

В итоге нашёл Uptime Kuma. Проект открытый. Написан преимущественно на JS. Можно скачать пакет для популярных дистрибутивов или docker-compose.yml. Я выбрал последнее.

Сам сервис умеет проверять доступность TCP-порта, отправлять HTTP/HTTPS-запросы и проверять ответы, и многое другое. Оповещения о доступности/недоступности так же может отправлять самыми разными способами. Есть даже поддержка нашего национального мессенджера. Я для себя настроил отправку сообщений в VK Messenger. Хосты можно объединять в группы, назначать им тэги.

Вобщем если требуется что-то простое то стоит попробовать.
👍1🔥1
Exclave Proxy client

Захотелось мне странного: аналог ocproxy на телефон. Морально приготовился писать своё решение, но в недрах F-Droid нашёл Exclave Proxy client. Это ровно то что нужно: умеет подключаться к различным серверам, поддерживая множество протоколов.

При этом умеет работать в режиме "Только SOCKS5-прокси", без перенаправления всего трафика устройства в туннель. Порт можно указать в настройках.

Т.е. можно подключаться к офисному серверу через какой-нибудь wireguard, указывать в настройках браузера локальный SOCKS5-прокси и ходить на внутренние ресурсы браузером, а весь остальной трафик будет ходить напрямую. При этом приложения, которые почему-то просят выключить VPN, не будут этого делать, так как он по сути не включен.
👍1
IPv6 и будущее

Прошла новость что Китай к 2030-му году планирует 38% своего трафика гнать через IPv6. Беглый поиск в интернет дал такие результаты: в целом по миру 40-60% трафика идёт через IPv6. При этом в РФ на IPv6 приходится по разным оценкам от 10 до 15%.

Насколько я знаю в РФ из крупных провайдеров "из коробки" IPv6-адреса предоставляет только МТС и только на мобильном интернете. Протокол teredo в РФ не работает: соединение устанавливается, но трафик не ходит.

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

Это я к чему: если смотреть в будущее то возможен такой сценарий: весь мир переходит на IPv6, а отдельная страна остаётся на IPv4 и оказывается в изоляции, формально имея доступ к глобальному интернету, но не имея доступа к IPv6-only ресурсам. И даже всякие блокировки не нужны.

Очень хочется чтобы этот сценарий не случился.
Некоторые нюансы внедрения IPv6

Иногда кажется что IPv6 внедрить легко: получаем адреса, поднимаем у себя на сервере и добавляем AAAA-записи в DNS. Но это только начало.

В процессе внедрения IPv6 вылезает много всякого интересного. Например задача: рейт-лимиты в API с привязкой к IP-адресу. Для IPv4 тут проблем особых нет (ну кроме боли у тех кто сидит через провайдерский NAT). В случае IPv6 как минимум следует учитывать что:

- Teredo: не просто позволяет получить IPv6-адрес, но и на каждый IPv4-адрес предоставляет подсеть /96, которую разумно считать за один адрес.
- 6to4: так же позволяет получить IPv6-адрес, предоставляет сеть /48 на каждый IPv4. И здесь так же разумно будет при расчёте лимитов считать всю подсеть как один адрес.

Хранение в БД:

- В MySQL функция INET_ATON не поддерживает IPv6, вместо неё можно использовать INET6_ATON, которая поддерживает и IPv4 и IPv6, но возвращает уже не INT, а VARBINARY(16).
- В PostrgreSQL к счастью есть тип inet, созданный как раз для хранения сетевых адресов

Ну и отдельный привет тем кто хранит адреса как строки. У этих людей свой путь)
🤓1
Полезная утилита: zswap-cli

При использовании zswap рано или поздно становится интересно оценить эффективность работы zswap. При использовании debugfs какую-то информацию можно получить командой:

grep -r . /sys/kernel/debug/zswap


Но как минимум не хватает информации о степени сжатия.

Вобщем поиск в интернет привёл меня к zswap-cli. В репозиториях Debian и AltLinux не нашёл, но сборка из исходников не вызвала каких либо проблем. Утилита позволяет настраивать zswap и смотреть статистику. В том числе о степени сжатия, реальном размере не сжатых данных в пуле и т.д.

Ссылка на github: https://github.com/xvitaly/zswap-cli
👍1
Qt Book Reader 0.1.1

Опубликовал небольшое обновление своего пет-проекта. Это баг-фикс релиз. Из изменений могу отметить:

* Поправлены баги с оглавлением для некоторых FB2 и EPUB-файлов
* Небольшие исправления в диалоге настроек
* Корректное отображение версии приложения при сборке из пакетов
* Исправлено несколько утечек памяти
* Добавлена поддержка Qt 6.10+
* По просьбам пользователей с Ubuntu Forum изображения выравниваются по центру
* Небольшие оптимизации

Ссылки:
* github: https://github.com/moose-kazan/qbr
* PPA для LTS-версий Ubuntu: https://launchpad.net/~bulvinkl/+archive/ubuntu/ppa
👍4
Книги для взрослых

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

Сильно повеселила метка "18+" на книге. Что этим хочет сказать цензор? Что разработка фронтенда полна наркомании? Или что фронтенд - удел содомитов? Или что React.JS это не православно и вообще бездуховно?

Теряюсь в догадках...
😁1
451 градус по Фаренгейту

Обнаружил что если зайти из РФ на сайт каталога свободного ПО для Android F-Droid и попробовать открыть страницу приложения Outline или Tinc Mesh VPN то страница не открывается с ошибкой 451.

При желании можно найти и другие подобные страницы в этом каталоге. Но в мобильном приложении F-Droid такой цензуры нет и всё можно вполне успешно скачать и установить.

В 21-м веке книги не жгут. Пожароопасно и не экологично. Поэтому теперь просто блокируют доступ к ним.
🔥1😁1👀1
Интересная идея

Понадобилось мне тут для себя написать небольшую утилиту. Надо было запустить демона с правами суперпользователя и время от времени посылать ему команды от простого пользователя.

Сначала стал думать над разделением инструмента на два бинарника: собственно демон и клиент, и организовывать взаимодействие между ними через D-Bus. Но моя лень очень настаивала что я не хочу разбираться с D-Bus и вообще делать его зависимостью.

В итоге переспав с задачей я пришёл к очень хорошему на мой взгляд решению: прикрутить веб-интерфейс к демону и слать команды через него. Не надо тянуть D-Bus, не надо писать отдельный UI. Сначала я подумал "чего ж никто раньше так не делал?", а потом вспомнил CUPS, который управляется через веб-интерфейс.

Вобщем на мой взгляд хорошая идея. Запомню и буду использовать.
👍2🔥1
Ещё один облом с ReactOS

Попробовал использовать ReactOS для сборки кода на Go. Формально Go поддерживает кросс-компиляцию, но только чистый Go. А при использовании CGO возникают проблемы. Решения есть, но самое простое это не использовать кросс-компиляцию и сразу собирать на целевой платформе.

Попробовал вместо Windows использовать ReactOS для сборки и споткнулся на том что go.exe не запускается из-за отсутствия функции WerSetFlags в kernel32.dll. Что не удивительно, так как эта функция появилась в Windows Vista, а ReactOS всё-таки пока нацелена на совместимость с XP/2003.

Но я не отчаиваюсь и надеюсь что смогу найти практическое применение для ReactOS.
😭1👀1
Простой почтовый сервер

Уже год использую бесплатную версию Axigen Mail Server. Бесплатная лицензия даётся на год и её можно так же бесплатно продлевать каждый год. Из ограничений бесплатной версии:

* До десяти доменов (но можно добавлять алиасы)
* До десяти аккаунтов (алиасы - без ограничений)
* Ограничена интеграция с внешними сервисами (LDAP, Outlook)

Запустил на NAS в докере. Для фильтрации спама добавил spamassassin, которого в купе со встроенным в Axigen грейлистингом вполне хватает. Есть ещё и мобильное приложение. По итогам почти года использования могу сказать что для персонального использования очень хорошо. Рекомендую.
❤‍🔥2
Снова отпуск

Приехал в Пермь. Ближайшие две недели буду тут. Ехал из Казани через Елабугу, Можгу, Агрыз, Воткинск, Очёр и Нытву. Интересно было посмотреть как работает связь вдоль дороги. Тест довольно простой: в дороге слушаем музыку через стриминговый сервис.

В Татарстане всё было идеально. В Удмуртии до Воткинска тоже. А после Воткинска связь кончилась. Совсем. И сразу у всех операторов. И дальше время от времени появлялась, но до самого Краснокамска ехал практически в тишине. В Краснокамске связь снова появилась и в Перми работает нормально.

Ну и не могу обойти стороной вопрос топлива: чем дальше от Казани - тем хуже. Но в целом ДТ и 92-й найти проблемы нет. 95-й пришлось поискать. Под Очёром заправился по 92.29р/л. И в целом в Пермском крае цена где-то на этом уровне. Понял что 75р/л в Казани это очень хорошая цена)
💯1
Linux и WiFi Captive Portal

Есть RFC 8910 описывающий механизм Captive Portal. Идея довольно простая: при получении адреса по DHCP в ответе прилетает дополнительный параметр с типом 114 (DHCP Option 114), содержащий URL страницы авторизации. Пользователь должен открыть этот URL в браузере и авторизоваться (способ авторизации в спецификации не описан, так что всё ограничивается полётом фантазии владельца точки доступа и локальным законодательством).

И вот в Linux до сих пор это дело не работает как надо. Казалось бы чего проще: в том же Network Manager при виде 114-й опции пихни этот URL куда-нибудь в D-Bus, а на другом конце поставь обработчик, который при получении URL запустит x-www-browser, передав ему этот URL. Но похоже что не просто.

На Arch Linux Wiki есть целый раздел с костылями для Captive Portal. Я уже подумываю для себя написать свой ещё один. ИМХО вот такие мелочи как раз и стоят на пути Linux к десктопам.
😭1