XP RIP

Apr. 10th, 2019 10:07 am
vitus_wagner: My photo 2005 (Default)
Тут вот пишут что прекращена поддеркжка версии Windows XP для банкоматов.

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

Впрочем мы поддержку XP прекратили уже довольно давно. Так что померла и хрен с ней.

Но вот в день прекращения поддержки RedHat 6 точно нужно будет в офис пиццу заказать.
vitus_wagner: My photo 2005 (Default)
Приделал бэкап на базе rsync (msys-овского) к ирининому ноутбуку с 10-й виндой. В смысле, оно бэкапит нужные каталоги по rsync-овскому протоколу (т.е. без использования ssh) на десктоп, туда же где бэкапятся виртуальный сервер на хостинге, роутер на banana pi и т.д.. А потом в процессе бэкапа десктопа оно уже уезжает на съемные USB-диски.
И иерархия снапшотов создается уже там. А здесь только синхронная копия.

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

То есть задача:

1. Определить находимся ли мы в моей домашней сети или нет.
2. Если в домашней, то используем хостнейм в домене wagner.home
3. Если не в домашней, то проверяем, поднята ли openvpn.
4. Если не поднята, поднимаем
5. Используем хостнейм в VPN.
6. Запускаем rsync хостнеймом выбранном на шаге 2 или 5.
7. Если мы openvpn поднимали, ее за собой и опускаем.

Возможен еще вариант что перед п.3 проверяем наличие в той сети, куда подключены, ipv6. и бэкапимся по ipv6 Но что-то мне не верится в полезность этой опции. Во-первых, бэкапимые файлы будут по публичным сетям незашифрованными бегать, во-вторых пока у нас ipv6 не настолько надежно работает. Так что лучше все равно vpn.

Вот как это решить средствами Windows по возможности не прикручивая ничего лишнего (python, правда, есть).

В голову не приходит ничего лучше, чем парсить вывод ipconfig (который, кстати весь из себя русифицированный). Потому что netsh interface show interface показывает замечательно красивый и удобный для парсинга вывод, но в нем нет ни dns-суффикса подключения ни диапазона ip. И как я отличу в этом выводе свою сеть от чужой?

Upd. Кстати, независимо от данного конкретного ноутбука. Пришла в голову мысль переписать свой бэкапный скрипт так, чтобы он конфиг rsnapshot-а при бэкапе на съемный носитель брал из корня этого самого носителя. Это позволит использовать носители разной емкости, на которые будет бэкапиться разное подмножество файлов.

Недостаток такого решения в том, что бэкапных носителей много. И если я вдруг на серии попеременно используемых носителей решу поменять конфиг, то придется его на всех менять.
vitus_wagner: My photo 2005 (Default)
Ник Горькавый (который автор "Астровитянки", "100 научных сказок" а также большой противник теории темной энергии и образования Луны путем мегаимпакта) написал тут
рассказик про регрессоров.
vitus_wagner: My photo 2005 (Default)
Что-то эта история напомниля мне цитату из Раткевич:

— Вот именно, — отрезал Эннеари. — Впервые в жизни мне жаль, что эльфам запретна некромантия. Я бы хотел поднять эту мразь... чтобы убить еще раз.
vitus_wagner: My photo 2005 (Default)
Вот тут недавно я доказывал [livejournal.com profile] wim_winter что диски нынче стали большими и забивать их стало не так просто. И Асы (А может йотуны, а может гремлины, хрен ихний хильдуфолк разберешь) покарали меня за эти неосторожные слова.

Всего лишь годичные логи билдфарма забили нафиг все свободное место на 2Тб разделе (нет, кроме логов там еще дохренадцать контейнеров, но 700 Гб логов за год это все-таки многовато). И ровно таки в субботу билдфармовский сервер встал, и результаты билдов пошли прямохонько в /dev/null.

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

Попутно узнал что на один билд в среднем приходится 34 стадии, на каждую из которых в базе сохраняется лог.
А всего разных стадий бывает 68. При этом до конца за последнюю неделю доходит в среднем 2/3 билдов. (но ни одного билда, у которого бы было более 62 стадий в базе не обнаружено).
vitus_wagner: My photo 2005 (Default)
Что-то мне текущая моя работа напоминает управление даже не цепеллином или супертанкером, а солнечным парусником - выполнил маневр и часов 6-8 ждешь результата. То ли ждешь, пока 30 постгресов в дженкинсе соберутся, то ли - пока regression test suite под валгриндом пройдет.
vitus_wagner: My photo 2005 (Default)
Когда я уже больше 20 лет назад купил о'рейлиевскую книжку "Programming with Curses", я ей долго хвастался по всей летней школе IIASA, Мол, это про такое страшное программирование что в ходе него нельзя удержаться от матерной ругани.

Так вот, к чему я это - тут вчера тряхнул стариной и написал тул с curses-интерфейсом. Правда, не на C, а на Python. Лет десять ничего подобного не писал.

Почему не GUI, а curses? А чтобы удобнее было запускать, зайдя по ssh через три VPN-а и 4 firewall-а.

Правда непортабельно получилось, потому что куда ж в event-driven программе без select-а.
Хотя в данном случае на селекте у меня сделана задержка. И можно для недо-ос сделать busy wait с проверкой kbhit, благо оно тоже в стандартной библиотеке есть.
vitus_wagner: My photo 2005 (Default)
Удиввительно, насколько народ разучился разрабатывать кроссплатформные приложения.
Все эти современные инструменты continuous integration и прочие средства контейнеризации совершенно не рассчитаны на то, что нужно работать с несколькими десятками РАЗНЫХ операционных систем (даже разных дистрибутивов Linux), разных архитектур и так далее.

Ну и читать люди тоже разучились. Спрашиваешь БОЛЕЕ НИЗКОУРОВНЕВОЕ средство, чем reprepro, предлагают заметно более высокоуровенвый aptly.

В общем идея понятна, если хочешь менеджить pool репозиторий так как тебе удобно - берешь выдачу apt-ftparchive pacvkages и самостоятельно раскидывааель по архитектурам и дистрибутивам.
vitus_wagner: My photo 2005 (Default)
Скрипт обработки электронных книг для помещения в библиотеку, превратил имя "автора" The Rust Team в
Team The.
vitus_wagner: My photo 2005 (Default)
Ирину сегодня, видимо, йольский кот (в лице Лизки) покусал. Так как она наконец собралась потащить в ремонт свой ноутбук, в котором еще в августе сломался и остался в разъеме штекер от наушников. Попутно, естественно. из ноутбука извлекли воз лизкиной рыжей шерсти и вообще помыли-почистили. И сказали что блок питания, который не хочет заряжать аккумулятор, это не лечится, надо менять.

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

Заодно сдали оба смартфона на замену треснутых стекол. С большим трудом выцарапал правда, оттуда симку - мол, завтра все сделаем, а до завтра и без телефона проживете. Не, не проживу. Завтра в школе у ребенка родительское собрание. Аргумент "Ну как же я вам звонить и узнавать когда готово буду?", был отвергнут словами "Я вам по емейлу напишу".

Ну посмотрим, что у нас завтра будет. Меня в принципе устроит, если телефон сделают не завтра, а, скажем после завтра. Поскольку подменный аппарат у меня есть. Вот только книжки на него засинкуаются..
vitus_wagner: My photo 2005 (Default)
Ребенку надоел майнкрафт, и он теперь увлекся Kerbal Space Program. Сначала пробовал виндовый под Wine запускать, потом поставил нативный и решил, что нативный все же лучше.

А виндовые игры он обозвал "Диониссийскими", поскольку без wine не запускаются.
vitus_wagner: My photo 2005 (Default)
Вот такую странную картину я тут наблюдаю:

Debian testing, gcc 8.2.0. Имеется вот такой C-шный код:
static void log (int elevel,  const char *fmt, va_list args)
{
 bool write_to_file, write_to_stderr, write_somewhere_else;
 va_list error_args, std_args;
.... здесь вычисляем куда надо писать
if (write_to_file && write_to_stderr) 
  va_copy(std_args,args);

.... некоторое количество кода, заведомо не меняющего флагов write_to
if (write_to_file) {
   vfprintf(f,fmt, args);
}
if (write_to_stderr) {
   if (write_to_file) {
      vfprintf(stderr, fmt, std_args);
   } else {
      vfprintf(stderr,fmt,args);
   }
   ffush(stderr);
}


В 64-битной системе компилятор кушает этот код без вопросов. В 32-битной ругается

error: ‘std_args’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
vfprintf(stderr, fmt, std_args);

Нет, я понимаю, что макросы для va_* могут быть реализованы по разному в зависимости от архитектуры процессора, но не до такой же степени...
vitus_wagner: My photo 2005 (Default)
Завел себе новый GPG-ключ.
А то как-то в 2018 году пользоваться ключом с 1024-битным DSA (который по определению для хэширования только sha-1 может использовать) некузяво.

fingerprint 146E 1042 1041 F57D 8A85 8B8E 2CA8 1D40 F4AA 65EC

Новый ключ опубликован на keys.gnupg.net подписанный старым. Чтобы цепочка доверия хоть как-то выстраивалась.
vitus_wagner: My photo 2005 (Default)
Ненавижу укушенных Гослингом программистов, которые в проекте из десятка файлов создают дерево директорий трех уровней вложенности.
vitus_wagner: My photo 2005 (Default)
Tab2QR.
Позволяет передавать URL с десктопа на мобильник не используя в этом процессе ничего лишнего. Никаких сторонних серверов, ни чужих, ни своих.

Хотя почему-то мне кажется более осмысленным обратная задача - перекинуть URL, которую набраузил на мобильнике/планшете на десктоп, где с найденным работать можно.

Впрочем, задача "я хочу вот это дочитать валяясь в кровати/едучи в метро" тоже бывает.

davmarks

Oct. 6th, 2018 06:18 pm
vitus_wagner: My photo 2005 (Default)
Совершенно случайно наткнулся на расширение к файрфоксу, которое умеет синхронизировать букмарки без наличия на сервере специальной навронченной фигни. Просто через WebDav.

Правда, оказалось что оно не работает с моим dav-сервером. Потому что реализует только Basic authentication, а у меня там Digest - из-за 10-й винды которая как раз не любит без правки реестра Basic. И я считаю, что она в данном случае совершенно права.

Ну вот как можно писать нечто что делает http-запросы посредством файрфокса, и при этом сделать так, чтобы оно не работало с digest authentication?

Как оказалось, по сети бродит куча всяких хаутушек для javascript-разработчиков, которые рекомендуют реализовывать аутентификацию через XMLHttpRequest путем ручного добавления заголовка Authorization в запрос.
В то время как вообще-то у XMLHttpRequest.open есть 4 и пятый параметр username и password, и если их задать, то он все сделает правильно - сходит на сервер, спросит какой метод аутентификации ему надо, и пошлет имя и пароль ровно тем методом, который сервер поддерживает.

Я в этом вашем javascript ничего не понимаю, но даже моего ничего хватило, чтобы выкинуть лишнее и у меня все заработало. Благо исходники доступны на гитхабе и я их себе форкнул.

Теперь вопрос - а как это себе задеплоить? Файрфокс не любит неподписанных расширений (и правильно делает). Ставить расширение на всех машинах через about:debugging мне кажется унизительным. На двух для реальной отладки поставил - хватит. Все рекомендации, которые я нашел выглядят как "загрузите расширение на addons.mozilla.org и мы его подпишем". Но на addons.mozilla.org уже есть расширение оригинального автора без моих патчей.

Вот интересно, как
1. Подписать xpi-файл (подозреваю, что jarsigner-ом, но не пробовал)
2. Добиться того, чтобы файрфокс моей подписи поверил не хуже чем подписи с addons.mozilla.org? Достаточно ли при импорте соответствующего CA -сертификата поставить галочку "Trust this CA to identify software developers" или разработчики туда гвоздями прибили список тех, кому можно верить? (ну то есть как прибили, так и оторвать можно, хотя рыться в коде мозиллы... брр...)

P.S. Issue я разработчику написал, pull request пока нет. Надо там еще кое-что подшлифовать, а то у меня впечатление что onload функция взлетает два раза - при получении 401 и при успешном выполнении запроса. Поэтому оно сначала ругается, что все плохо, а потом молчит, что все получились.
vitus_wagner: My photo 2005 (Default)
А вот слабо вам запостить в ЖЖ исходник на C с директивами препроцессора так, чтобы
ЖЖ-шный препроцессор к этой записи не прилепил хэштэг #include?

Например, вот так:
#include <stdio.h>

int main(int argc, char argv[]) 
{
   printf("Hello, Livejournal!\n");
   return 0;
}
vitus_wagner: My photo 2005 (Default)
коллеги, а кто посоветует дешевую машинку на 64-битном arm,

А то у меня сейчас единственным arm64 в билдферме работает Raspberry PI 3 с Debian buster.
Так вчера ей пришлось таймаута на выполнение всего задания увеличить с 6 часов до 8.
Поскольку за 6 часов не укладывается.

В то же время при обсуждении проблем переносимости в pgsql-hackers народ тут же начинает реагировать "а у меня на arm64 это не воспроизводится". На телефонах они что ли компилируют?
(хотя у меня на телефоне 26.0 BogoMIPS, а на Raspberry Pi 3 - 38.4)

А может что-нибудь с SATA есть, чтобы туда вместо тормозных microsd еще и ноутбучный винт поставить?
vitus_wagner: My photo 2005 (Default)
https://forum.openwrt.org/t/tp-link-mr3020-v3-build-problems/10273/111

Оказывается, все-таки кто-то добился работоспособности openwrt на TP-link mr-3020v3.
Научиться что-ли openwrt собирать. А то тупость родной прошивки TP-Link-а меня уже достала.

Чтобы иметь в деревне роутер с нормальным локальным DNS-ом и tcpdump-ом.

ipv6 к сожалению, видимо пока там работать не будет, потому что симка Tele2. Хотя может ребенок уговорит меня на возврат в Мегафон (У мегафона связь просто гораздо лучше работает в Селижаровском районе). Тогда все равно надо будет весь трафик прокидывать через свой хост где-то снаружи, чтобы от клика по ссылке случайно не подключилась контент-услуга.

Вот потянет ли оно VPN на мощностях роутера? Вряд ли.

Что еще полезного может быть на роутере в деревне?

SMS-ки и USSD через веб-интерфейс?

Вебкамеру или usb-диск не предлагать - единственный порт будет модемом занят.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

April 2019

S M T W T F S
  1 2 3 456
789 10 11 12 13
14 15 16 17181920
21222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 19th, 2019 01:09 pm
Powered by Dreamwidth Studios