Леонид Каганов
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 20 most recent journal entries recorded in Леонид Каганов's LiveJournal:

    [ << Previous 20 ]
    Monday, October 21st, 2024
    10:57 pm
    Фейковый NTP-сервер
    взято отсюда: https://lleo.me/dnevnik/2024/10/21

    UPD: Дружище Андрей Нигматуллин предложил нормальное решение через DynDNS и даже помог разобраться и настроить, спасибо ему!

    Итак, задача: у вас есть говнороутер и провайдер, который выдает ему внешний (это важно) IP, но постоянно его меняет. А вы хотите, чтобы этот IP всегда отзывался по адресу в вашем родном домене, скажем oops.lleo.me (все имена здесь и ниже условные). У вашего роутера есть раздел динамического обновления адреса DDNS, но там только 4 варианта. Но среди них есть afraid.org!

    Решение:

    Допустим, у вас домен lleo.me на CloudFlare.com (можно и без него, но с ним лучше)
    Выбираем поддоменное имя для своего lleo.me, например: govnorouter.lleo.me
    На CloudFlare.com в разделе DNS сайта lleo.me создаем новую запись типа NS:

    Type: NS
    Name: govnorouter
    Nameserver: ns1.afraid.org

    Идем на https://afraid.org и создаем бесплатную запись «Sign up Free». Поле «userID» — пишите любое латинское слово, надеюсь там такоего юзера нет. Подтвердите email, и вы залогинены. Теперь на afraid.org (дизайн там даже не 90-е, а 80-е, под браузер lynx) идем в «Domains», «Add domain» — и там прописываем свой govnorouter.lleo.me (Shared:Public я выбрал на всякий случай).
    Read more... )

    Wednesday, August 21st, 2024
    11:18 pm
    Горячие финские шрифты
    взято отсюда: https://lleo.me/dnevnik/2024/08/21

    Товарищ Анто из Хельсинки прислал дивное: https://t.me/htmlshit/3049

    Финские программисты создали шрифт для подсветки синтаксиса, который подсвечивает синтаксис сам — обрабатывает всякие там css, JS и прочие языки на уровне самого шрифта (!). Как это делается технологически — я пока разбираться не стал, видимо, какие-то таблицы взаимозависимости соседних символов. Но достаточно написать такой CSS и взять нужный код в тэг CODE:


    @font-face {
    font-family: 'Monaspace';
    src: url('https://assets.codepen.io/2585/MonaspaceKrypton-SyntaxHighlighter-Regular.woff2') format('woff2');
    }

    code {
    font-family: 'Monaspace', monospace;
    font-palette: --kung-fury;
    }

    /* а еще цвета можно настроить */
    @font-palette-values --kung-fury {
    Read more... )

    Saturday, June 8th, 2024
    8:59 pm
    PWA или "аккаунт разработчика Google"
    взято отсюда: https://lleo.me/dnevnik/2024/06/08_cordova

    UPD:

    Внезапный и неожиданный вывод: да нахер больше не нужны магазины приложений, все эти GooglePlay да AppStore с их ебучей премодерацией и заполнением бесконечных анкет и манифестов с обязательствами не собирать личные данные детей-инвалидов в регионах Парагвая. Институт разработки приложений на специальных языках (отдельно для Android, отдельно для iOS, отдельно для Android на процессорах x86) должен быть уничтожен как явление.

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

    До некоторого времени любой сайт можно было «добавить ярлык на главный экран», и это уже было немного похоже на приложение. Но года с 2018 стал внедряться формат PWA, когда сайт можно не только «добавить как ярлык», но и полноценно «установить как приложение». Да пофиг, как расшифровывается аббревиатура PWA, однако весьма любопытно, что она перекликается с WAP. Надеюсь никто уже не помнит, что такое WAP. Потому что WAP — самая уёбищная поделка той ушедшей эпохи, когда в некоторых мобильных телефонах уже кое-как стал появляться интернет. Телефоны тех времен были полным говном: с цифрами-кнопками и экранчиком на 3 строчки текста. Чтобы на этих сраных строчках можно было рассмотреть сайты новостей или афишу кинотеатра, был придуман WAP — особый сокращенный формат сайта, специально адаптированный для телефонов-инвалидов. Всем владельцам сайтов предписывалось идти в ногу со временем, делая сразу два варианта своих страниц: для нормальных компьютеров и «WAP-версия». Нахера это было нужно, никто не понимал даже тогда. Лично у меня в те годы вполне себе была Нокия-коммуникатор с нормальным экраном и нормальной клавиатурой, она отображала любые сайты не хуже десктопа, никакой WAP ей был не нужен. Владельцам дешевых звонилок WAP был тем более не нужен — эти дикие люди пока ничего не знали про интернет. В те годы они очень гордились, что их звонилки маленькие, моя Нокия их очень пугала «такой же убить можно!», хотя размерами была куда меньше современных смартфонов. Короче, WAP-версию я сделал только для сайта НАХУЙ — единственный сайт планеты, где она была реально уместна.
    Read more... )

    Thursday, February 29th, 2024
    3:17 am
    Друзья-программисты, а кто-то писал плагины под WooCommerce?
    взято отсюда: https://lleo.me/dnevnik/2024/02/29

    UPD: Друзья, спасибо всем за советы, вопрос решен. Правильный ответ (с вашими подсказками) нашел мудрый Кирилл. Итак, вопрос был, как в магазине WooCommerce фронтенд JS может обратиться к бэкенду по Ajax и получить доступ к сессии, пользователю, его корзине и номеру заказа. Правильный ответ:

    1. В магазине WooCommerce (в отличие от прочих магазинов типа OpenCart и PrestaShop) нельзя узнать номер заказа до нажатия кнопки Checkout: заказа не существует, хоть корзина уже зарегистрирована в сессии. Заказ будет создан и получит номер только в момент выполнения Checkout.

    2. Даже если вы зарегистрировали отдельный rest-эндпоинт и гоняете туда запросы аяксом, WooCommerce не сможет опознать сессию и проигнорирует авторизационные куки WooCommerce и WordPress. Чтобы сессия была опознана, необходимо при запросе делать специальные манипуляции: в дополнение к авторизационным кукам разместить в хедерах некие загадочные ключи Nonce и X-WP-Nonce. Искать их надо столь же неочевидным способом: X-WP-Nonce доступен в объекте wp.apiFetch.nonceMiddleware, а Nonce передается при загрузке страницы и затем обновляется по React, так что его актуальная версия лежит в LocalStorage 'storeApiNonce'.
    Read more... )

    Wednesday, January 10th, 2024
    4:12 pm
    Требуется совет: как интегрировать Алису с самодельными устройствами?
    взято отсюда: https://lleo.me/dnevnik/2024/01/10

    Видит бог, долго я избегал Алиса-прослушки, но в итоге добрый Паша подарил мне на новый год Яндекс-колонку :) Приходится управлять одинокой умной лампочкой в коридоре и слушать только ту музыку и те радиостанции, что нынче дозволены для прослушивания официальными стримминговыми сервисами.

    И всё бы хорошо, но тогда уж хочется как-то интегрировать Алису к своей домашней электронике. Прежде — лет 5 назад — я это делал при помощи собственного «навыка», у меня где-то есть на этот счет весьма развесистые скрипты по разнообразным ответам и управлению, и в принципе они до сих пор работают. Но неудобно каждый раз произносить голосом «алиса, запусти навык Дом Лео... активировать полив в библиотеке... стоп навык...» Я так понял, Алиса шагнула сильно вперед и уже давно это можно делать напрямую. Но вот как?
    Read more... )

    Thursday, November 30th, 2023
    9:52 am
    Пакетный менеджер Линукс
    взято отсюда: https://lleo.me/dnevnik/2023/11/30

    Линукс такой разный. Собирал одну софтинку строго по инструкции для пользователей Линукс. После установки кучи загадочных приблуд с именами типа Ninja и LSD2 дошёл до строки, где предлагалось запустить с длинными ключами какой-то пакетный менеджер pacman. Такого в системе тоже не обнаружилось, пришлось установить. Теперь у меня на компьютере есть pacman v1.0. Это вы серьезно сейчас?
    Read more... )

    Friday, October 6th, 2023
    7:21 am
    identicon
    взято отсюда: https://lleo.me/dnevnik/2023/10/05


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

    Tuesday, October 3rd, 2023
    3:33 am
    USB-руль Microsoft к ESP-32-s3
    взято отсюда: https://lleo.me/dnevnik/2023/10/02

    Я всё ещё хочу ездить на шестисотом BMW. И поэтому товарищ Макс как-то принес мне с барахолки USB-руль:

    Затем к рулю дошла неспешно заказанная из Китая ESP32s3 (это которая со слотом OTG-USB), а сегодня наконец дошли и руки разобраться со всем этим и заардуинить драйвер. Что удивительно — получилось за вечер, спасибо Чуку за советы по протоколам USB. Демку выложил на Гитхаб, кому интересно:
    Read more... )

    Saturday, September 23rd, 2023
    9:08 pm
    Простейший Чипльдуктор
    взято отсюда: https://lleo.me/dnevnik/2023/09/23

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

    Как сделать простейший Чипльдуктор?

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

    1. Дешевый одноплатный чип с Линуксом — Raspberry PI, Orange, Banana или что-то похожее.
    2. Звуковая карта USB c кнопками.
    3. USB-колонки.


    Read more... )
    Friday, April 7th, 2023
    2:30 am
    WASM-JS
    взято отсюда: https://lleo.me/dnevnik/2023/04/07

    Ещё немного про WASM и язык Rust. Современный браузер имеет в целом два языка программирования: классический JavaScript, а также браузерный ассемблер WASM. Который собственно языком программирования не является, а является сущностью, в которую можно скомпилировать код с любого другого языка. Для чего это может пригодиться?

    — Если у вас есть библиотеки на других языках — какая-нибудь обработка звука на С или блокчейн-парсеры на Rust
    — Если у вас очень дорогие вычисления, и повышение производительности от 30% вам критично.

    Чего WASM не даст? Компактного объема не даст — все процедуры компилятор туда потащит с нуля, и код раздуется на сотни кб по сравнению с JS. Бешеной производительности тоже не ждём: от 30% можно повысить производительность, ну и время старта страницы теоретически должно повыситься (хотя на практике ощущения такого нет). Никаких интересных возможностей, которых не было в JS, WASM точно не даст. Он вообще никаких возможностей не даст, более того — по всем вопросам, связанным с браузером, он будет всё равно бегать в JS. И запускать его придется тоже из JS, там специальный костыль script type='module' и еще придется отдельно объявлять все его функции.
    Read more... )

    Friday, March 10th, 2023
    5:35 am
    Подбор номиналов резисторов
    взято отсюда: https://lleo.me/dnevnik/2023/03/10



    Во чего вспомнил: как-то товарищ Юра попросил сделать ему софтинку для простой задачки: точного подбора номиналов резисторов при проектировании. Сама формула общеизвестна, а онлайн-сервисов по расчету резисторов тоже выше крыши. Но фишка именно в подборе табличных номиналов. В реальной жизни номиналы резисторов ограничены значениями таблиц E24 или E96, и если калькулятор рекомендует 234 Ома, то промышленность выпускает только 232 или 237. А здесь можно максимально наглядно выбрать пару резисторов из тех, что существуют и даже имеются в ящике стола. А можно подобрать наиболее эффективную пару — вполне вероятно, в ней уже не будет номинала, на который вы опирались, приступая к расчету.

    — Находясь в окошке сопротивлений, можно листать номиналы стрелками вверх и вниз.

    — Картинки smd-резисторов — тоже поле ввода: набрав там непонятную маркировку резистора, можно увидеть номинал.

    Read more... )

    Thursday, March 9th, 2023
    5:23 am
    Веб-разработка: wasm, rust и yew
    взято отсюда: https://lleo.me/dnevnik/2023/03/09

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

    Оказывается, в современных браузерах есть две возможности написать исполняемый код: это язык JavaScript и бинарный кроссплатформенный ассемблер WASM. Который по сути не язык, а результат компиляции с другого языка, например C++, GO или Rust.

    Поначалу я воодушевился и даже думал, не переписать ли мне движок блога на wasm. Но оказалось, что практического смысла у wasm немного: он обычно не быстрее JS, не надежнее, не экономичнее, и уж точно не компактнее. Никаких новых фич и лазеек программисту он не открывает: как и для JS, тут действуют ровно те же политики безопасности, те же ограничения на соединения и доступ к в файловой системе. Однако есть два типа задач, где WASM будет полезен. Во-первых, это могучие вычисления, которые надо производить в браузере у пользователя. Ну, не знаю, обрабатывать мегатаблицы. Или сложными алгоритмами найти на фотке лицо и подрисовать усы и рога. Во-вторых — это использование готовых библиотек, которые почему-то (почему?) были написаны не на JS, а на C или Rust. Например, какие-то обработки изображений или процедуры блокчейна.
    Read more... )

    Wednesday, December 7th, 2022
    4:19 am
    Логин на сайте по ключу NFC, банковской или транспортной карте
    взято отсюда: https://lleo.me/dnevnik/2022/12/07


    Мои читатели постоянно жалуются на проблемы с логином на сайте. Там действительно постоянные проблемы, часть из которых связана с глючащими сторонними сервисами, через которые можно логиниться Гуглем, Фейсбуком и прочей ерундой. Родная часть авторизации сайта, которую писал я сам (логин-пароль), она второе десятилетие работает без проблем, вот только мало кто использует логин-пароль. И потом не могут вспомнить. И емайл давно сменили. Тем не менее, я что-то время от времени дорабатываю и чиню. А сегодня сделал логин по банковской карточке. Шучу. В смысле — не шучу. В смысле, не по банковской карточке. Вообще по любой метке NFC. И банковская не исключение.

    Расскажу по порядку. Cовременные телефоны умеют читать поднесенные к ним метки NFC. А некоторые браузеры — в частности, Android Chrome — позволяют делать это скриптом прямо со страниц сайта. Сразу скажу, что твой браузер — хрен знает, что за зверь. Скорее всего, ты читаешь пост не на моем сайте, а в какой-нибудь соцсети, RSS или иной помойке, куда копию текста занес робот. Тогда можно дальше не читать, речь про мой сайт.
    Read more... )

    Friday, September 9th, 2022
    10:17 pm
    Назло Илону Маску: радиолюбитель из Чертаново запустил собственную спутниковую группировку
    [НЕ ПОДДЕРЖАЛ СПЕЦОПЕРАЦИЮ]

    это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2022/09/10

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

    Уверен, что освоение микрокосмоса — важный и своевременный рывок российской космонавтики, наш ответ международным санкциям и мировой русофобии, наиболее перспективное сегодня направление.
    Read more... )

    Tuesday, February 15th, 2022
    5:29 pm
    загадки m3u8 или как скачать песню с Вконтактика
    это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2022/02/15

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

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

    Принцип нынешнего устройства ВК оказался таким. Рассмотрим на песне Гребенщикова, которая во ВК после клика представляет собой некий файл вида: https://*.vkuseraudio.net/***/index.m3u8 Точный адрес файла m3u8 без особого труда выясняется в отладчике браузера. В нем перечислена песня, разбитая на кусочки вида:
    Read more... )

    Sunday, January 23rd, 2022
    2:34 am
    Строим цифровой концлагерь из подручных средств
    это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2022/01/23

    Я вот думаю: а что если мне в дневнике разрешать комментировать только при предъявлении QR-кода? Шучу. Или не шучу ;) Соорудил небольшой скрипт проверки, ему надо в камеру вашего смартфона/ноутбука показать qr-код:

    <input ... >

    Проверять годность QR я пока научился только для московских immune.mos.ru и gosuslugi.ru (двух разных форматов), поэтому прошу помочь — показать в камеру коды вакцинации из разных городов. А я у себя на сервере пособираю коллекцию ссылок и научусь проверять их годность тоже.

    Программистам, кто по работе или для баловства интересуется техническими вопросами построения цифровых концлагерей для антипрививочников, сообщаю: чтобы сделать сканирование и распознавание QR-кодов средствами браузера, я нашел чудо: https://github.com/yugasun/qrcode-decoder/ А что касается проверки годности кода immune.mos.ru, оно типа не документировано из государственной секретности, но я докопался: просто беру из ссылки id и делаю примерно так:
    Read more... )

    Wednesday, November 3rd, 2021
    5:13 pm
    Рассказы в mp3
    это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/11/03

    На спор со знакомым грелочником смастерил вчера скриптик для перегонки рассказов в mp3. Использовал речевой синтезатор Яндекса. Рассказы бил на фразы и собирал в порции по 1000 букв, потому что там такое ограничение. Рассказов больше 200, за ночь все было готово. Думал, не хватит моего ключа API - помнится, там было какое-то ограничение, не более 1000 обращений в месяц или что-то вроде того. Но ключ выдержал. Яндекс, дай мне неограниченный ключ для подобных некоммерческих экспериментов?

    Рассказы в озвучке выглядят достаточно пристойно:

    Группа 1: https://disk.yandex.ru/d/oB-3_cFYsTwNnQ
    Группа 2: https://disk.yandex.ru/d/1k94b3IgyuxDrQ
    Группа 3: https://disk.yandex.ru/d/rtGvzbFyCFrMnw
    Группа 4: https://disk.yandex.ru/d/9rDrE6uprKdd5Q
    Группа 5: https://disk.yandex.ru/d/wRp8nsbqIGw99g

    Даже "Гуси-лебеди" из второй группы. Нет, не мой. Я в этот раз не участвую - прорыв трубы и ремонт не оставил времени.

    Собственно, пишу я это пост лишь для того, чтобы выложить сюда код, который превращает всю Грелку в mp3 - он совсеми коротенький. Может, вам кому пригодится, да и мне полезно такие вещи хранить в дневнике, а то потеряется, а где потом искать, если понадобится что-то в звук перегнать:
    Read more... )

    Sunday, October 31st, 2021
    8:05 pm
    Фейсбук всё
    это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/10/31

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

    То есть — теперь уж точно бессмысленно писать мне в личку Фейсбука «Леонид, хотим вас пригласить завтра на мероприятие», я этого не увижу. Примерно так, помнится, и было у меня написано в профиле, но теперь-то уж точно коммуникация отрезана. Все необходимые контакты я заранее постарался зафрендить в Телеграме.

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

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

    Tuesday, September 21st, 2021
    7:11 am
    Живые девайсики
    это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/09/21

    Дошли руки сделать наконец админку для девайсиков — в основном поливальных станций — на lleo.me/bot Там много всякого полезного, особенно конечно удаленное администрирование девайсов. Оно неспешное, но позволяет управлять девайсом из любого места, в том числе редактировать на нем скрипты и настройки.

    Удалось это сделать потому, что девайсы пингают сервер время от времени. К сожалению, интернет-технологии пошли по неправильному пути развития, IPv6 не внедряется сознательно уже лет двадцать, и до сих пор нет никакой возможности переслать два байта к хосту, если он сидит на внутреннем IP (а за внутренним IP сидят вообще все, кроме серверов). Так что единственный способ девайсам общаться — это пингать какой-то сервер¸например (по дефолтным настройкам) мой.

    Кстати о пингах: также отдельно сделал страничку наблюдения за жизнью девайсов онлайн. Для этого пришлось освоить тип базы MEMORY, которая в памяти хранится, и научиться вести учет онлайн-событиям на сервере. Заодно сделал в дневнике список онлайн-посетителей внизу странички, но это так, баловства ради. Проверить, какие нагрузки сервер держит.
    Read more... )

    Saturday, September 11th, 2021
    6:25 pm
    Блютуз-гарнитура из старого телефона... пока не удалась
    это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/09/11

    В ожидании старта большой работы выдалась свободная минутка, и я вспомнил про свою давнюю задумку: телефон, найденный на свалке в Пулковской обсерватории, превратить в блютуз-гарнитуру для смартфонов. И даже оснастить внутренним аккумулятором, чтобы можно было носить с собой или ставить на торпеду в машину.
    Read more... )

[ << Previous 20 ]
авторский сайт Леонида Каганова   About LJ.Rossia.org