Skip to main content

Evgeny Kuznetsov

Малинки, малинки, такие вечеринки…

3 min read

Тот самый домашний сервер, о котором я уже писал, делает у меня массу полезных вещей: он и файлопомойка для жены (ей вечно не хватает места на макбуках), и 24/7 узел для «роя» Syncthing, и все автоматические бэкапы на нём, и торренты (не, не пиратские, по большей части open-source-дистрибутивы всякие), и факс (да-да, в 2020 году у меня есть факс-модем и телефонная линия; бывает надо по работе), и git-сервер для всяких непубличных вещей, и чего там ещё только нет. И ещё DLNA-сервер, чтобы на большом телевизоре всяческие home video смотреть.

Вот как раз с DLNA-сервером был затык: после миграции на «малинку» он скорее сломался, чем нет. Небольшие файлы отдавал нормально, а на более-менее крупных, с приличным битрейтом, подвисал намертво. Собственно, это — единственное, что отказалось работать на Raspberry Pi после «переезда», и я тогда ещё попытался разобраться, в чём беда, но с нахрапу не смог.

Устроено-то всё просто: физически всё лежит на RAID в коробке с винчестерами, подключенной по USB, и раздаётся через minidlna — казалось бы, чему тут ломаться? Но, понятное дело, тонких мест хватает (я больше на этот самый RAID на USB 2.0 думал), а конструктивных мыслей — не очень, хотя ещё тогда в ответ на мою жалобу любимый собутыльник мудро изрёк: «Где-то тебе, дружище, буфера не хватает…»

И тут сегодня мне понадобилось скачать оттуда залитое вчера очередное трёхгиговое home video. Запускаю scp (которым вчера успешно его залил), и… через пару сотен мегабайт передача встаёт колом! Пробую ещё раз, другой, третий — да, есть проблема: то после 10 мегабайт, то на второй сотне, но рано или поздно всё «встаёт», больше четырёх сотен мегабайт не перегнать. Светодиод «ага!» в мозгу начинает интенсивно подмигивать…

Тот же Syncthing весело гоняет туда-сюда многогигабайтные файлы без взяких вопросов, да и с торрентами проблем нет — но там-то всё передаётся небольшими кусками, а тут — сплошной поток. Как в DLNA, да. Причём «на вход» оно же залетело вчера без проблем, а «на выход» — затык. В смысле, запись этого файла прошла нормально, а читаться и выдаваться в сеть он не хочет… Чтение с винчестера быстрее записи… А не сетевая ли проблема-то?

Копирую файл с RAID на системную MicroSD, пробую выкачать — та же симптоматика. Не в RAID дело! А дело, видать, в том, что такое количество данных с такой скоростью сетевой интерфейс выдать в сеть отказывается. «Где-то тебе, дружище, буфера не хватает…» А какой, кстати, у нас MTU? А, ну да, логично, 1500 — линуксовое умолчание, никогда и ни у кого с этим проблем не было…

sudo ip link set dev eth0 mtu 1492

И-и-и… Работает! scp преспокойно скачивает эти несчастные три гигабайта. Телевизор плавно и без затыков показывает по DLNA файл в 4K HDR.

Восемь байт! Всего восемь лишних байт в MTU…

«Proper LAN on 3B+», — говорили они! «Даже в Jumbo frames умеет», — говорили они…

Evgeny Kuznetsov

Памяти много не бывает!

1 min read

У меня уже не меньше десяти лет есть домашний сервер. Ну, как «сервер»: какой-то компьютер в дальнем шкафу, который работает круглосуточно и на котором крутятся всякие нужные сервисы, файлопомойки и резервное копирование. Раньше это были старые ноутбуки, с недавнего времени — Raspberry Pi 3B+.

Разумеется, когда я вводил на эту должность «малинку», поставил я туда привычный Debian Stable (уже 10-й на тот момент), а в нём по умолчанию MoTD с логотипом и системной сводкой, не как раньше. У меня всё равно byobu автоматически запускается, этот самый MoTD я вижу долю секунды при входе по ssh, так что и трогать его не стал — пусть будет.

Так-то я далеко не каждый день на сервер по ssh хожу, а тут довелось несколько раз подряд войти, да ещё на медленном соединении… В общем, разглядел я этот MoTD поподробнее:

Debian 10 на RPi 3B+

Сколько-сколько, говорите, в Raspberry Pi 3B+ оперативной памяти?!

Evgeny Kuznetsov

Firefox: сделаем, как просили, а не как хотели

1 min read

Полез с Chrome обратно на Firefox, а то все говорят, что Firefox за те пять лет, пока я им не пользовался, сильно лучше стал. Попробовал — да, действительно, всё уже не настолько трагично, как мне помнилось, хотя синхронизации закладок пока так и не добился.

Одно поначалу резало глаз: на некоторых сайтах некоторые шрифты были прямо-таки вырвиглазными. Причём не все и не на всех сайтах; такое впечатление, что проблема была с одним только шрифтом, но очень распространённым. Все остальные шрифты — как надо, с системными настройками сглаживания, лепота, а вот этот один — прямо ужас! Стал разбираться…

Шо бы ви думали? Если в системе установлена Helvetica, и сайт просит Helvetica, этот ваш Firefox показывает именно Helvetica! А Helvetica — растровый шрифт, и выглядит, по нынешним меркам, страшновато. Но раз просили — получите!

Отключил Helvetica в системе, и всё стало радовать глаз не хуже, чем в Chrome.

Evgeny Kuznetsov

Не читайте классиков!

1 min read

Были нынче на «Дяде Ване» в театре Вахтангова. Очень качественный спектакль, и Маковецкий чудо как хорош.

Вдруг подумалось: как славно, что мало читают классиков! После вдумчивого чтения Антона Палыча всякому приличному человеку кроме самоубийства ничего не остаётся; если б его наш народ массово читал, у нас бы и людей приличных не осталось давно!

Хотя постойте...

Чехов как есть

Evgeny Kuznetsov

podsaver

1 min read

Написал маленькую полезную софтину, которая вряд ли кому кроме меня пригодится.

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

На самом деле, писалось даже больше ради процесса и освоения языка, так-то задачу наверняка можно было решить уже существующими средствами. Зато решил в процессе пару интересных и новых для себя задачек, вкурил поплотнее работу с потоками данных в Go, и ужаснулся тому, как устроен HTTP. Бесполезных знаний, как известно, не бывает…

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

подкасты — силаPhoto by William Iven on Unsplash

Evgeny Kuznetsov

Жизнь курьера и опасна и трудна

1 min read

Когда курьер, который везёт тебе еду, застревает в лифте на твоём этаже, обидно не только курьеру, но и тебе: из лифта же вкусно пахнет, а еда остывает…

Правда, толковый курьер способен за три минуты выбраться из лифта; еда в итоге остаётся горячей, аппетит только разыгрывается, и то, что могло стать трагедией, превращается в забавное приключение.

Я поэтому всегда стараюсь еду заказывать там, где курьеры толковые.

курьер в застрявшем лифте

Evgeny Kuznetsov

МегаФон: как заставить VoLTE работать

6 min read

Лет восемь назад, когда я впервые прочёл о технологии Voice over LTE (VoLTE), у меня возникло только два вопроса: почему оно не прикручено к 4G по умолчанию и когда же уже, наконец. Уже тогда было понятно, что связь — это интернет, что вшитые в стандарт GSM способы звонить и передавать текст безнадёжно устарели и никому не нужны, и что вот этот многофункциональный компьютер-коммуникатор, который мы по старинке  называем «мобильным телефоном», должен просто иметь доступ в Сеть — всё равно, через оператора или через WiFi — и уже посредством Сети обеспечивать весь остальной функционал. Тяжёлое наследие первых версий GSM, когда голосовой звонок занимает весь канал и отключает доступ в интернет, не говоря уже об SMS как технологии — это именно тяжёлое наследие тех времён, когда по-другому сделать не получалось, и от этого всего надо избавляться. В стандарте 4G/LTE голосовой связи не предусмотрено вовсе; для того, чтобы совершить звонок, телефону надо переключиться в один из «старых» режимов (3G, 2G)… Или — Voice over LTE, голос в виде интернет-трафика. А в идеале — ещё и Voice over WiFi, когда тот же звонок можно вообще без сети оператора совершить.

Кстати, этот самый Voice over WiFi в исполнении МТС я не так давно наблюдал вживую. Любимая жена, не желая тратить денег на роуминг и желая в кои-то веки действительно отдохнуть, как включила авиарежим в Домодедово, так и не отключала его всё путешествие, но WiFi, конечно, включала — куда ж без интернета-то. Видели б вы наши лица, когда в номере отеля её телефон вдруг зазвонил — с «самолётиком» на экране! Быстрый гуглёж помог удостовериться, что лишних денег это стоить не будет, с точки зрения МТС телефон всё равно что в Москве, так что там, где был доступ к WiFi, жена спокойно разговаривала по телефону при необходимости. А я, увидев будущее в действии, осерчал на МегаФон и решил разбираться…

Кажется, первым моим телефоном, который поддерживал VoLTE, был Sony Xperia Z3, и было это уже довольно давно. Помню, я сразу столкнулся с проблемой: телефон ждёт звонка через VoLTE, сеть же пытается «пропихнуть» звонок в 3G, но телефон именно в этот момент что-то шлёт через интернет — в общем, примерно в половине случаев (а при активном пользовании телефоном — так и чаще) звонок до меня просто не доходил, а доходила — секундой позже — SMSка: мол, вам вот только что звонили. Поддержка МегаФона тут же объяснила, что в VoLTE МегаФон не умеет, и неизвестно когда будет, а в 4G — активно, поэтому телефону в настройках надо этот самый VoLTE запретить, иначе в сети 4G он становится аналогом телефонной будки: позвонить куда — пожалуйста, а вот принять звонок — проблема. Ну, нет — так нет, тогда из наших операторов в VoLTE не умел никто, отключаем, ждём.

Телефон я с тех пор сменил не раз и не два, и всякий раз, получая первую SMSку про «вам секунду назад не дозвонились», хлопал себя по лбу и лез в настройки, отключать VoLTE. С телефоном, который у меня сейчас, тоже так было. И вот теперь, после наглядной демонстрации даже не VoLTE, а VoWiFi от МТС, я заглядываю в интернет и с удивлением обнаруживаю, что VoLTE-то у МегаФона (хотя бы и только в Москве) — есть! Причём уже некоторое время есть. Причём на момент появления у меня этого телефона тоже уже было. Больше того, знающие люди пишут, что с запуском VoLTE по Москве МегаФон стал активнее деприоритизировать голосовой трафик (освобождая каналы под интернет) — так вот отчего в последний год так часто вспоминаются слова Тимака:

Странное название для сотовой компании: «мегафон» — это ведь когда очень громко и ни хрена не разберёшь. Впрочем, их-то связь название оправдывает полностью.

Почему же VoLTE нет у меня?! Прямо на сайте предлагают код для проверки, годятся ли аппарат и SIM — пробуем…

SMS от Мегафона: с картой и телефоном всё хорошо

Гм. Нет, так-то у меня этот их 4G+ работает беспроблемно (я, помнится, как раз SIM менял тогда, чтобы у меня 4G завелось), но где же VoLTE? Звоню в поддержку: ну да, должно работать, попробуйте поменять SIM, она у вас несколько лет уже, могла размагнититься со временем… Кажется, я на этого деятеля матом огрызнулся даже; я когда слышу про «SIM размагничивается», у меня забрало падает моментально — я вообще некомпетеность в рамках должностных обязанностей болезненно воспринимаю, а уж когда микросхемы размагничиваются или, к примеру, «эффект памяти» в литиевых аккумуляторах возникает — вообще неадекватный становлюсь.

Как только вернулись на денёк в Москву, иду в салон. В салоне очередь на час, стойка «VIP-клиентов» вообще не работает — ну, МегаФон, представляете, бывали наверняка. В салоне тоже полчаса пытались понять, в чём проблема, даже на телефон спихнуть пытались, в итоге, опять же, ничего умнее, чем поменять SIM, не придумали. Ладно, меняем, чего уж, раз всё равно пришёл.

С заменой SIM, кстати, у МегаФона тонкость: ровно сутки SMS ходить не будут. Никакие, вообще. И не ждите, что через сутки они все скопом дойдут — нет, не дойдут, никогда, они сразу в /dev/null отправились. Сделано это, вероятно, для того, чтобы в случае неавторизованной замены успеть добежать до салона и откатить всё в исходное, пока злодеи через SMS доступ к банкам и прочим аккаунтам не получили. Такой себе выход, честно говоря, но лучше, чем ничего. Вообще SMS как фактор аутентификации — очень плохая идея, но, к несчастью, частенько — безальтернативная. Ничего, голосовую связь по GSM окончательно похороним — и до SMS доберёмся; вот уж технология, которую заждались на свалке истории!

В салоне МегаФон, кстати, тонкого предмета или даже скрепки для замены SIM не нашлось — собственно, чего мы хотели, крупный оператор, «большая тройка», откуда бы?.. Благо, как раз до дома старая SIM ещё дотянула, а дома воткнул новую. Что бы вы думали?!

индикатор работающего режима VoLTE

Бинго! Всё завелось сразу, всё работает, в самом деле в SIM было дело. Правда, как видно из SMS выше, понять это был не в состоянии даже сам МегаФон. И улучшение качества голосовой связи заметно мгновенно, что есть — то есть.

Конечно, за МКАДом этот VoLTE мгновенно превращается в тыкву. Конечно, никаким Voice over WiFi, как у МТС, в МегаФоне и не пахнет. Хотя…

Хотя чего, собственно, ждать от могучего оператора с самым быстрым интернетом, который в 2019 году никак не научится сведения о часовом поясе в GSM-сеть передавать?! Кстати, вот сколько езжу по миру, во всех остальных сетях это делается, всеми операторами, только в России приходится часовой пояс вручную выставлять. А куда деваться: будущее зависит от тебя, вот и засучи рукава…

Evgeny Kuznetsov

Суслик, suka, — личность…

4 min read

Ни для кого не секрет, что я пишу и поддерживаю апплет для панели уведомлений (или как вы там system tray переводите), управляющий MateBook-специфичными функциями. Ну, то есть если вы этим интересовались — вы в курсе. Но вам пофиг, поэтому — нет. Это нормально.

Вот тоже загадка: апплет работает (ну, должен работать… вроде бы…) на любых MateBook'ах, где есть Linux. При этом звёзд на GitHub у него почти на порядок меньше, чем у моего же гайда по установке Linux на MateBook 13! Это с учётом того, что на апплет есть ссылки и со страницы гайда, и даже со страницы драйвера для MateBook'ов. Да что там, у гайда больше звёзд, чем у драйвера! На секудночку: гайд по одной модели, драйвер поддерживает не меньше четырёх; драйвер для полноценной жизни на MateBook необходим, при этом у гайда звёзд больше… Это к вопросу о смысле кармадрочерства как концепции и логике «лайкающих» на гитхабе, да.

Ладно, Тьма с ними, со звёздами. Апплет у меня.

Я его, кстати, на Go пишу. Не, я в курсе, что Go для этого не очень предназначен, но мне нравится писать на Go. Работает, опять же… В конце концов, простите за откровенность, на Цэ-плюс-плюсе я бы такое не осилил. А так — вот, есть апплет. Работает даже. Ну, такое…

Мне Go очень нравится. Я как раз пока такие вещи пишу, заодно язык изучаю. На той неделе, вот, окончательно интерфейсы вкурил. Страшная сила — эти интерфейсы в Go, не вдруг въедешь, если до этого почти исключительно на bash да на basic (да, у меня тяжёлое детство было). Зато как врубишься — ну прямо восемь стволов и всё небо в попугаях! Сколько раз в ООП тыкался — нет, от лукавого все эти ихние наследования! А тут прям именно такой полиморфизм, как надо. Шоб работало, и шоб голову не сломать при проектировании простой программки на сотню строк. Вот прям нравится!

А ещё мне очень Test Driven Development заходит, в который Go хорошо умеет. Ну, то есть как — хорошо… Умеет, из коробки, очень прилично. Но у меня вот тут затык вышел.

Апплет мой, он же с драйвером непосредственно через файловую систему взаимодействует; и даже не только через os, а прям вот таки через ioutil. И никак не возьму я в толк: вот как мне это тестить?!

Не, afero — отличная вещь, согласен, но мне не нужна абстракция файловой системы насмерть, у меня область применения — как раз только и исключительно локальная ФС. Ну и если без зависимости не обойтись — я бы предпочёл что попроще, у меня маленький апплет для трея, а не промышленная CRM же. А делать mock файловой системы, да со всеми нужными ответами и поддержкой ioutil — я ж нарушусь, разве нет?

Понимаете, у меня задача-то — проще некуда! Апплет при инициализации должен потыкать в разные места в /sys/ и понять, с какой конфигурацией он работает, и там куча вариантов (и будет ещё больше), и очень хочется под это запилить нормальный table-driven test. Потому что

если тебе вдруг захотелось отладочной информации в консоли — здесь нужен тест, а не дебаг!

Это очень правильная мысль. Верная даже, только не помню, чья. Поэтому мне всего только надо — сделать так, чтобы для тестов симулировались разные варианты состояний в /sys/. Мне не нужно в кросс-платформенность, всё равно у меня чисто линуксовая заморочка. Мне не нужны возможности в перспективе заменить файловую систему на облако. Мне просто нужно для go test получить «песочницу» файловой системы с абсолютными путями — хоть в памяти, хоть в tmpFS, хоть на диске, хоть как.

Я реально себе сегодня всё правое полушарие об это сломал, и полинтерета обгуглил. То ли лыжи не едут…

очень озадаченный суслик

Картинка хамски попячена из презентации Francesc Campoy Flores.

Evgeny Kuznetsov

Ох, покатаемся завтра…

1 min read

Так сложилось, что толком на шоссейных велосипедах я никогда в жизни не ездил, а на гоночных и вовсе не сидел никогда. А завтра же велопробег, и Пэл Пэлыч мне дал на прокатиться вот это:

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

Evgeny Kuznetsov

O'zbekiston

2 min read

Если соберётесь в Узбекистан, стоит иметь в виду несколько вещей.

Берите с собой Visa или наличные доллары. Про существование евро здесь в целом знают, но больше теоретически. MasterCard обслуживает единственный банк во всей стране, и банкомат вы будете искать очень долго.

Не меняйте на местную валюту (и не снимайте в банкомате) больше денег, чем реально планируете потратить. Обменять местные деньги обратно на сколько-нибудь конвертируемую валюту — целая история, и сделать её успешной у нас, например, так и не вышло.

Плов надо есть около полудня, а то и раньше. К часу-двум дня в популярных местах (там, где плов вкусный, и его едят местные) плов уже кончается.

На внутренних авиарейсах нельзя возить зажигалки — вообще никакие. Вообще, досмотр при посадке на общественный транспорт дальнего следования (что наземный, что воздушный) очень дотошный и не всегда логичный в смысле запрета отдельных предметов. Аэропорт имени Бен-Гуриона отдыхает…

Не пытайтесь взять автомобиль напрокат: сами убьётесь и людей покалечите. Здесь другая логика вождения, и навыки коммуникации с соседями по дороге нужны специфичные.

Ну и главное: почитайте заранее хоть что-нибудь (чем больше — тем лучше) по истории Средней Азии, причём не только древней. Знание основных исторических вех поможет понять, почему надо пробовать кухню разных регионов, почему не надо искать в Ташкенте исторические здания, а в Самарканде — дух древнего города, и вообще поможет осознанно смотреть вокруг.

внутри мавзолея Тимура (Тамерлана)

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