Ох и провозился я тут с удалением/установкой TensorFLow. Со вчера был запущен один тестовый нейро-проектик, но сегодня решил его стопорнуть — закралось подозрение, что у меня все только на CPU работатает, а не на GPU. Как-то не хватает привычного громкого жужжания всех кулеров, как было тогда, когда я раньше на ноуте tensorflow гонял.
Открыл System Information в “Process Hacker” - в разделе GPU нулевая активность. И это при том, что CPU дико нагружен - даже система стала не особо отзывчивая.
Итак, пока я тут доделал парсер-конвертер html-статей в набор предложений (с помощью BeautifulSoup4, различных регулярок и NLTK.tokenize - для подачи на вход нейросети на TensorFlow) и доволен чистотой результата, решил сделать паузу и, все-таки, написать эту забавную и поучительную историю.
Программерский детектив Приятно наблюдать как недавно собранный компьютер “перемалывает” всеми 8(16) ядрами нужную мне задачу. Вот только я не ожидал, что придется перезапускать это так много раз.
В последний раз так мозг закипал, наверное, только когда нужно было сделать динамический пересчет релокейшенов загруженного модуля win32.
Сижу такой, настраиваю на удаленном сервере работу скрипта, который через ssh-туннель делает запрос к сервису, который у меня дома локально под WSL работает.
Так вот, запускаю lynx 127.0.0.1:port, чтобы проверить, что туннель выключился. Но он, почему-то, работает…
Делаю netstat -lntp|grep port, получаю PID, затем kill PID. lynx 127.0.0.1:port … Хм. Все еще работает…
Повторяю действие несколько раз, убиваю каждый раз новый ID процесса. Тоннель все еще работает. Чешу репу…
И тут осознаю всю ржачность ситуации.
Вчера вдруг осознал, насколько удобней будет переключать RUS/ENG не привычным CTRL+SHIFT, а клавишей CAPS LOCK, учитывая, что я использую слепой 10-типальцевый метод и для русского, и для английского текста. (Тогда пальцы не нужно будет центрировать заново каждый раз)
Как оказалось, в Windows 10 нельзя выбрать такой вариант. Но есть некоторые сторонние программки для этого дела. И тут мне захотелось самому быстренько такую зафигачить.
Сначала кое-как вымучил такую утилитку на Go. Офигел от кривости этого всего кода, с кучей обвязок для Win32 API.
Столкнулся с такой проблемой при подключении PC->DVI->HDMI к телевизору Philips - какое бы я разрешение не выставил, после перезагрузки телевизор мне пишет “разрешение не поддерживается” (или “нет сигнала). Тестировал и под Linux Mint/Ubuntu - все идентично глючит.
И после некоторого гугления обнаружил, что многим известна такая проблема. Вроде бы, это все как-то связано именно с NVIDIA картами и Philips TV. И решений каких-то не существует. Кто-то вообще телевизор в магазин возвращал.
Настраивал сеqчас линукс-терминал “Terminator”. А настройки там на русском языке сами включились. И вот смотрел я на чекбокс “Копирование на выбор” и думу думал…
Вот что это могло бы быть? :) Даже мысль появилась - вдруг при копировании какие-то варианты будут предлагаться… хотя это чуднО как-то было бы.
А после того, как понял, что теперь нормально заработало авто-копирование в буфер при выделении мышкой - осенило! :)
Это так чудно перевели “Copy on selection”.
Офигеть. Башку чуть не сломал, пытаясь понять почему у меня сервер игнорит запись в /etc/hosts и резолвит домен напрямую через сетевой интерфейс. Даже не выдержал - ребутнул сервак :) Не помогло.
Смотрю дальше, смотрю. Дай-ка, думаю, заменю табуляцию на пробел в строчке типа:
127.0.0.1 <-->some.domain.com И охреневаю. У меня где-то при копировании \t заменился на набор символов “<–>“. :))) Во делаааа…
Тестирую вторую версию полностью автоматического новостного Django-агрегатора , где не только короткая выжимка “сути” новости в виде анонса, но и HTML страница со статьей (из любого источника), из которой выкушен весь мусор, но остается основное HTML форматирование. А по содержанию это 30% от оригинала.
В этот раз взял для теста хайповую тематику - криптовалюты. :) bitcoin.icexp.com (udp: уже выключил). Правда, тут получаются слишком короткие “выжимки”, потому блок твиттера надо поменьше ставить.
Добавил вчера “исправляльщик пингера” на сайт (+ бинарник под Windows)
Ну и на GitHub исходник на GO тоже. :)
Заодно попробовал сбилдить и потестить под Linux на VPS-ке. Все работает так, как и задумывалось. Это радует.
Кстати, хорошо, что я еще вовремя вспомнил про то, что под Windows и Linux разные сепараторы путей в переменной $PATH - точка с запятой и двоеточие, соответственно.
Наконец, спустя много лет заменил заглушку на http://privacy-formula.com/ на что-то интересное. :)
Теперь там автоматический агрегатор новостей на тему “privacy”. Парсятся разные источники. Сначала одна библиотека извлекает главный контент со страницы (ищет саму статью), потом другая делает text summarizing - короткую выжимку именно значимых предложений.
Ну а сам сайт на Django в виде 1 страницы в анонсами статей, где по ссылке “подробнее” отправляет на нужный ресурс.
Кстати, повесил еще плагин от Google для автоперевода.