Нашёл такие команды мониторинга логов:
tail -f /var/log/{messages,kernel,dmesg,syslog}
dmesg -w -T -x
journalctl -kf
watch -n 1 'dmesg -T -x | tail -50'
Как сейчас (во времена systemd) пацаны на раёне смотрят логи в режиме реального времени?
Научите дедушку модно-молодёжным фишкам!
1. Разрешать менять аву раз в квартал (завести в базе дату смены).
2. Если модераторы забраковали аву, то её видит только пациент.
3. Хэши забаненных ав заносить в блэклист, такие авы показывать только владельцам - пусть каждый считает себя героем.
Это сведёт на нет возможность политического протеста через авы.
Если трех пунктов мало, вот ещё (опционально):
4. У кого меньше 3х звезд, показ другим новой авы только после одобрения модеров (можно добавлять авы в белый хэш-лист).
5. Умная периодичность: 1-2 звезды - раз в пол года, 3-4 - раз в квартал, 5 звезд - раз в месяц.
6. В весенние месяцы период удваивать :)
Методом тыка нашёл такую команду:
yt-dlp --flat-playlist --playlist-end 10 --print title --print " %(duration_string)s %(id)s" https://www.youtube.com/c/DmitriiWest/videos
Сделал скрипт /usr/bin/yt-list
#!/bin/sh
exec python3 "/usr/bin/yt_dlp/__main__.py" --flat-playlist --playlist-end 10 --print title --print " %(duration_string)s %(id)s" "$1"
Теперь, не запуская браузер, я вижу список свежих видосиков по команде:
yt-list https://www.youtube.com/c/DmitriiWest/videos
yt-dlp -f 18 <id-of-video>
Кто ещё как автоматизирует получение видосиков с пока ещё не забаненого ютуба?
В идеале должно по cron'у качать свежие видосики в нужную папку - кто так сделал?
UPD. Для скачивания картинки (превьюшки) сделал второй скрипт /usr/bin/yt-img
#!/bin/sh
exec python3 "/usr/bin/yt_dlp/__main__.py" --write-thumbnail --convert-thumbnails jpg --no-download "$1"
Превьюшку глядеть так:
yt-img <id-of-video>
Больше 15 лет пользуюсь mc и только сегодня споткнулся о проблему:
при переносе каталога по F6, оказывается, тупой mc сначала копирует всё содержимое на новое место, а только потом в конце удаляет файлы и подкаталоги на старом месте.
Даже досовские nc и vc удаляли файлы по мере переноса!
ПОЗОР!
Вопросы:
1) есть ли какая-то настройка в mc, которая включает правильный перенос?
2) умеют ли другие коммандеры (Gnome Commander или Double Commander) переносить правильно?
3) доколе?!
Вот здесь:
https://mirrors.slackware.com/slackware/slackware-iso/
есть 2 новых iso:
slackware-15.0-install-dvd.iso
slackware64-15.0-install-dvd.iso.
По моему опыту с 14й версией у 64 битов много проблем:
1) не работает Wine
2) не работает Qemu
и так далее.
Поэтому я щас качаю 32-битную версию.
Правильно ли я понимаю, что нормальные слакварщики 64 битами не пользуются?
P.S. Попутно вопрос к слакварщикам: что мне ещё скачать, кроме 3,6Гб образа, чтобы все пакеты были у меня на диске? (готовлюсь к чебурнету)
Посоветуйте:
1) иностранная VPN с оплатой за крипту и поддержкой OpenVPN
2) иностранная VPS с оплатой за крипту
3) они не должны быть заблокированы в РФ - ни оттуда, ни отсюда.
P.S. Сейчас попробовал бесплатный тариф от ProtonVpn, но он начал впаривать какой-то блоб (хотя внизу есть приписка, что он вроде как поддерживает OpenVPN - кто пробовал, мины есть?)
После переноса профиля из портативной Windows-версии RetroShare (работала под Wine) на Linux-версию (AppImage) в домашнюю папку вида /home/user/.retroshare программа запустилась, запросила пароль ключа, появились соединения в «Журнале», пошёл сетевой трафик, есть старые письма на вкладке «Почта», есть узлы на вкладке «Сеть», есть список «Чатов», но остальные вкладки оказались пустые!
В частности, стал пустым список «Участников», при попытке добавить («Создать новую личность»), запрашивает данные, пароль ключа, данные принимает, форма закрывается, и ничего не происходит.
Где RetroShare хранит участников? В каком файле? Куда копать?
P.S. Вайновая версия работает, но хочется запускать нативную.
Приложение меняет параметр и перезаписывает ini-файл.
Но на сайте это изменение не отражается, пока вручную не перезапустишь nginx.
Вопрос: как программно перезапустить веб-python-bottle-приложение, запущенное через nginx, причем чтоб метод работал и линуксе и в винде?
1. Пробрасываю порт через SSH такой командой:
ssh user@site.com -4 -N -g -f -M -R 127.0.0.1:8888:127.0.0.1:8888
Какое-то время работает, потом соединение умирает.
Убиваю на клиенте (на этой стороне) «ssh» командой «kill».
2. Запускаю ssh проброс снова, но ругается в консоль:
Warning: remote port forwarding failed for listen port
На сервере ничего подозрительного не висит.
Через минут 5 сервер всё-таки освобождает порт.
Вопрос: Как принудить ssh освобождать порт на сервере сразу же после обрыва?
HTTPS-хостинг требует 3 файла сертификатов:
1) Сертификат (FILE, .crt)
2) Приватный ключ (KeyFile, .key или .pem)
3) Цепочка сертификатов (ChainFile, сертификаты по порядку, коневой сертифкат идет последним)
Делаю самоподписанный сертификат скриптом create-ssl.sh:
#!/bin/sh
MYSITE=jarevo-porevo.ru
openssl req -new -x509 -sha256 -newkey rsa:2048 -days 3650 -subj '/CN='$MYSITE -nodes -keyout $MYSITE.ssl.key -out $MYSITE.ssl.crt
openssl x509 -x509toreq -days 3650 -in $MYSITE.ssl.crt -signkey $MYSITE.ssl.key -out $MYSITE.ssl.req
openssl x509 -signkey $MYSITE.ssl.key -in $MYSITE.ssl.req -days 3650 -req -out $MYSITE.ssl.pem
На выходе получаю 4 файла:
jarevo-porevo.ru.ssl.crt 1131
jarevo-porevo.ru.ssl.key 1704
jarevo-porevo.ru.ssl.pem 1009
jarevo-porevo.ru.ssl.req 3337
req - ненужен.
key - ключ
crt - сертификат
pem - должен быть сертификат с подписью, но в нём всего лишь ОДНА СЕКЦИЯ вместо двух!
Вопрос: где взять вторую секцию в цепочке сертификатов?
Если дать команду:
youtube-dl -F iZ4tYhmtoM0
Если посмотреть список у другого ролика, например:
youtube-dl -F S8uNoZ7PLqU
Внимание вопрос:
Почему Ютуб у разных роликов предлагает разный набор доступных форматов? И самое главное - как можно влиять на этот набор, например при загрузке ролика на ютую?
(я попробовал загрузить свой ролик, у меня получился очень скудный набор форматов).
Проект TFC (Tinfoil Chat) предложил аппаратное устройство с 3-мя USB-портами для соединения 3-х компьютеров и создания параноидально-защищённой системы обмена сообщениями.
Первый компьютер выступает шлюзом для подключения к сети и запуска скрытого сервиса Tor, он манипулирует уже зашифрованными данными.
Второй компьютер имеет ключи для расшифровки и используется только для расшифровки и отображения полученных сообщений.
Третий компьютер имеет ключи для шифрования и используется только для шифрования и отправки новых сообщений.
USB-сплиттер работает на оптронах по принципу «диод данных» и физически пропускает данные только в заданных направлениях: отправку данных в сторону второго компьютера и приём данных от третьего компьютера.
Компрометация первого компьютера не позволит получить доступ к ключам шифрования, к самим данным и не даст возможность продолжить атаку на оставшиеся устройства.
При компрометация второго компьютера злоумышленник прочитает сообщения и ключи, но не сможет передать их во внешний мир, так как данные только принимаются снаружи, но не отправляются вовне.
В случае компрометации третьего компьютера злоумышленник может выдавать себя за абонента и писать от его имени сообщения, но не сможет читать поступающие извне данные (т.к. они идут на второй компьютер и там расшифровываются).
Шифрование выполнено на базе 256-разрядного алгоритма XChaCha20-Poly1305, для защиты ключей паролем применяется медленная хеш-функция Argon2id. Для обмена ключами применяется X448 (протокол Диффи — Хеллмана на базе Curve448) или PSK-ключи (pre-shared). Каждое сообщение передаётся в режиме совершенной прямой секретности (PFS, Perfect Forward Secrecy) на базе хэшей Blake2b, при котором компрометация одного из долговременных ключей не позволяет расшифровать ранее перехваченный сеанс.
Интерфейс приложения предельно прост и включает окно, разбитое на три области - отправка, получение и командная строка с логом взаимодействия со шлюзом. Управление производится через специальный набор команд.
Программный код проекта написан на языке Python и доступен под лицензией GPLv3. Схемы сплиттера прилагаются (PCB) и доступны под лицензией GNU FDL 1.3, сплиттер можно собрать из подручных деталей.
>>> Подробности
При добавлении данных в таблицу нужно пропустить колонку, которая в новой таблице больше не существует (перестала существовать, т.к. была удалена). Пример ниже не работает:
INSERT INTO tab(col1, col2, @dummy, col4) VALUES(1,2,3,4);
Нашел такое решение:
INSERT INTO tab(col1, col2, col4)
SELECT
с1, с2, с4
FROM
(VALUES(1, 2, 3, 4)) AS x(с1, с2, с3, с4);
Может есть способ проще?
Можно ли подсунуть какую-то временную переменную?
(NULL и 0 не канает - я проверял)
P.S. Если добавлять по-старому:
INSERT INTO tab(col1, col2, col3, col4) VALUES(1,2,3,4);
MySQL error: (1054, «Unknown column 'col3' in 'field list'»)
Если указать существующую колонку дважды:
INSERT INTO tab(col1, col2, col4, col4) VALUES(1,2,3,4);
MySQL error: (1110, «Column 'col4' specified twice»)
Под Linux есть шикарный свободный электронный оффлайн-словарь StarDict с кучей словарей на все языки и любой тематики.
Под виндой есть офф-лайн переводчик текстов Promt, но он проприетарный с закрытым кодом и несвободный.
Есть ли свободный офф-лайн переводчик текстов?
Чтоб я поставил его на комп, накачал словарей и он переводил мне тексты как гугл-транслейт (можно чуть похуже)?
Нужна простая в-одном-файле графическая библиотека:
1) использующая только struct или другие базовые модули
2) работающая и в Linux, и в Windows
3) позволяющая выводить текст безо всяких шрифтов (т.е. либо встроенные матрицы букв, либо прилагающийся битмап с буквами).
Работать она должна примерно так:
import coolbitmap
img = CoolBitmap(400, 250, 'white')
img.draw_text(10, 10, 'C', 'black')
img.draw_text(20, 10, 'ool', 'blue')
img.draw_pixel(25, 15, 'red')
img.save_to('cool.bmp')
img.close()
Сраный говно-комбайн PIL, не удовлетворяющий ни одному из перечисленных пунктов, не предлагать.
Представлена новая версия RetroShare 0.6.5.
Что нового:
1. Новая подсистема распределения данных (GXS) позволяет искать, подписываться и синхронизировать каналы не подписанные прямыми друзьями. В планах также перевод форумов.
2. Создатель форума может назначать модераторов, которые смогут править (но не удалить) сообщения.
3. Создатель форума может закреплять (pin) записи.
4. Переписаны форумы, теперь они работают быстрее и потребляют меньше памяти.
5. Приложения для скрытых (tor, i2p) и стандартных узлов, разделенные в версии 0.6.4, снова объединены в одну программу.
6. Улучшена работа через Tor, теперь IP не отправляются вовне. Также упрощен интерфейс для Tor.
7. Реализован JSON API, который автоматически синхронизируется с действующими Си-модулями RetroShare и предоставляет полный и актуальный набор функций, в том числе для мобильных приложений на Android.
Теперь любой новичок в JavaScript , Python, Lua может задействовать RetroShare для разработки своего собственного децентрализованного приложения (а некоторые уже делают это).
8. Добавлена поддержка IPv6, что в перспективе позволит улучшить преодоление NATов.
9. Реализовано автоматическое добавление друзей друзей в список контактов, что позволит новичкам видеть друг друга в чатах и почте.
Также исправлены ошибки в файло-обмене, форумах, кругах и соединениях через OpenSSL1.1plus.
В планах:
1) разработчики начали переделывать веб-интерфейс с помощью нового API и планируют доделать его в 2019 году;
2) теперь, когда есть API для общения с libretroshare, открылось много интересных возможностей, например, сделать социальную сеть, которая будет работать в браузере во время общения с фоновым приложением RetroShare (по типу ZeroNet);
3) 2019 год также станет годом, когда RetroShare войдет в Debian, что является условием для участия в Tails . Это следующая задача, над которой разработчики планируют работать после релиза.
Основные разработчики (Cyril & Gio) выражают благодарность разработчикам G10h4ck (за JSON API), Phenom, Sehraf, hubernd, RetroPooh, Chelovechisko, Zapek, San-Josep и тестерам Ghibli, ASmith, Jolavillette.
Написал в Lazarus простенькое приложение, но после конпиляции запускаемый файл получился слишком большой - размер 20Мб.
Чтобы уменьшить выходной размер, как советуют в интернете, в свойствах проекта (Проект - Параметры проекта) включил 4 опции компилятора:
1) Вкладка Генерация кода: установить флажок "Умная компоновка" (-СХ);
2) Вкладка Компоновка: установить флажок "Умная компоновка" (-ХХ);
3) Вкладка Компоновка: установить флажок "Использовать внешний файл отладочных символов GDB" (-Xg);
4) Вкладка Компоновка: установить флажок "Вырезать символы из исполняемого файла" (-Xs);
5) Вкладка Компоновка: снять флажок "Выдавать номера строк в ошибках времени выполнения"(-gl).
Кроме того, можно поставил галочку «использовать текущие параметры по умолчанию для новых проектов», чтобы Lazarus запомнил эти настройки для следующих проектов.
После компилирования бинарь стал размером 4Мб. Вроде неплохо.
Затем утилита strip вырезала еще немного отладочной информации:
strip --strip-all ./mybinary
Дальше я попробовал сжать zip`ом, размер стал 1,7Мб, но файл перестал быть запускаемым (это логично).
Внимание вопрос: есть ли в линуксе какие-то утилиты, сжимающие запускаемый файл, но так, чтобы он при этом оставался запускаемым (аналог виндового UPX)?
UPD. Нашлись команды сжатия:
upx -k -9 ./mybinary
gzexe ./mybinary
Теперь второй вопрос: не скажется ли upx/gzexe на кроссплатформенности/совместимости? Ну например на i386 работает, а на x64 уже нет, или наоборот. Какая из них принесет меньше подобных проблем?
UPD2. Обновил пост, чтобы он остался в истории как мануал.
(Кстати, все опции и утилиты актуальны и для уменьшения exe-файлов в Windows)
И да, upx лучше не использовать, всё остальное - желательно.
Также рекомендую подробный мануал по рантайму, статическому и динамическому связыванию.
Анонимус передаёт своё возмущение гугл-капчой ЛОРа - неужели, говорит, на java нельзя сделать самодельную капчу (ведь была какое-то время нормальная капча)?!
Анониму обязательно нужно разгадывать 10 мозаик Гугля, перед написанием своего важного сообщения?
Второе: зачем-то запрашивается поле «Пароль», но какой пароль можно требовать с анонимуса? Это же явный баг!
P.S. Я когда-то сам просил капчу для анонимов и ограничения количества анонимных сообщений в день с одного IP - но то, что сделано сейчас - меня самого разочаровало, и я понимаю чувства анонимуса.
Пытаюсь сконпилировать RetroShare и вот что выдаёт:
user@comp:/mnt/data/github/RetroShare$ qmake
fatal: No tags can describe '617ed25a19333f3f147b28a9465018f6c6b87787'.
Try --always, or create some tags.
Project WARNING: Determining RetroShare version via git failed plese specify it trough qmake command line arguments!
Project MESSAGE: QMAKE: You have disabled deprecated warnings.
Project MESSAGE: QMAKE: You have disabled C preprocessor warnings.
Что нужно этому гадкому qMake?!
Можно ли как-то сконпилировать Ретру без Qt-морды?
следующие → |