LINUX.ORG.RU

Сообщения Novator

 

Как перекомпилировать языковые пакеты (переводы, файлы *.po)?

Я изменил Си-программу, причем изменил как *.h, *.c файлы, так и *.po.

При этом команды:

make
make install
компилируют и обновляют только *.h, *.c.

Как скомпилировать *.po файлы?

Может менять опции конфигуратора? Я делал так:

./configure --prefix=/usr

P.S. Приложение mc, если чо.

 , , , ,

Novator
()

Просмотр логов в реальном времени

Нашёл такие команды мониторинга логов:

tail -f /var/log/{messages,kernel,dmesg,syslog}
dmesg -w -T -x
journalctl -kf
watch -n 1 'dmesg -T -x | tail -50'

Как сейчас (во времена systemd) пацаны на раёне смотрят логи в режиме реального времени?

Научите дедушку модно-молодёжным фишкам!

 , ,

Novator
()

Рацуха по аве

1. Разрешать менять аву раз в квартал (завести в базе дату смены).
2. Если модераторы забраковали аву, то её видит только пациент.
3. Хэши забаненных ав заносить в блэклист, такие авы показывать только владельцам - пусть каждый считает себя героем.

Это сведёт на нет возможность политического протеста через авы.

Если трех пунктов мало, вот ещё (опционально):
4. У кого меньше 3х звезд, показ другим новой авы только после одобрения модеров (можно добавлять авы в белый хэш-лист).
5. Умная периодичность: 1-2 звезды - раз в пол года, 3-4 - раз в квартал, 5 звезд - раз в месяц.
6. В весенние месяцы период удваивать :)

 , ,

Novator
()

Список последних 10 видео YouTube-канала по команде в терминале

Методом тыка нашёл такую команду:

yt-dlp --flat-playlist --playlist-end 10 --print title --print " %(duration_string)s %(id)s" https://www.youtube.com/c/DmitriiWest/videos
- она отображает последние свежие 10 видео с ютуб-канала.

Сделал скрипт /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>

 , , ,

Novator
()

midnight commander не умеет сразу удалять файлы при переносе по F6

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

Даже досовские nc и vc удаляли файлы по мере переноса!

ПОЗОР!

Вопросы:
1) есть ли какая-то настройка в mc, которая включает правильный перенос?
2) умеют ли другие коммандеры (Gnome Commander или Double Commander) переносить правильно?
3) доколе?!

 , ,

Novator
()

Какой Slackware лучше: 32-bit vs. 64-bit?

Вот здесь:
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Гб образа, чтобы все пакеты были у меня на диске? (готовлюсь к чебурнету)

 , ,

Novator
()

Иностранная VPN/VPS с оплатой за крипту и поддержкой OpenVPN - какая?

Посоветуйте:
1) иностранная VPN с оплатой за крипту и поддержкой OpenVPN
2) иностранная VPS с оплатой за крипту
3) они не должны быть заблокированы в РФ - ни оттуда, ни отсюда.

P.S. Сейчас попробовал бесплатный тариф от ProtonVpn, но он начал впаривать какой-то блоб (хотя внизу есть приписка, что он вроде как поддерживает OpenVPN - кто пробовал, мины есть?)

 , ,

Novator
()

Retroshare: не могу «Создать новую личность» в список «Участники»

После переноса профиля из портативной Windows-версии RetroShare (работала под Wine) на Linux-версию (AppImage) в домашнюю папку вида /home/user/.retroshare программа запустилась, запросила пароль ключа, появились соединения в «Журнале», пошёл сетевой трафик, есть старые письма на вкладке «Почта», есть узлы на вкладке «Сеть», есть список «Чатов», но остальные вкладки оказались пустые!

В частности, стал пустым список «Участников», при попытке добавить («Создать новую личность»), запрашивает данные, пароль ключа, данные принимает, форма закрывается, и ничего не происходит.

Где RetroShare хранит участников? В каком файле? Куда копать?

P.S. Вайновая версия работает, но хочется запускать нативную.

 , , , ,

Novator
()

Как программно перезапустить веб-приложение Nginx+Bottle

Приложение меняет параметр и перезаписывает ini-файл.
Но на сайте это изменение не отражается, пока вручную не перезапустишь nginx.

Вопрос: как программно перезапустить веб-python-bottle-приложение, запущенное через nginx, причем чтоб метод работал и линуксе и в винде?

 , ,

Novator
()

Проброс порта: ssh держит порт на сервере при обрыве соединения

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 освобождать порт на сервере сразу же после обрыва?

 , , ,

Novator
()

Вторая секция в самоподписанном сертификате на сервере HTTPS

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 - должен быть сертификат с подписью, но в нём всего лишь ОДНА СЕКЦИЯ вместо двух!

Вопрос: где взять вторую секцию в цепочке сертификатов?

 , , , ,

Novator
()

Как Youtube формирует список форматов

Если дать команду:

youtube-dl -F iZ4tYhmtoM0
то отображается список форматов (599, 600, 249, 250 и т.д.).

Если посмотреть список у другого ролика, например:

youtube-dl -F S8uNoZ7PLqU
то отображается другой список форматов (249, 250 и т.д.).

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

 , ,

Novator
()

SQL: как пропустить колонку INSERT INTO (col1, col2, dummy, col4)

При добавлении данных в таблицу нужно пропустить колонку, которая в новой таблице больше не существует (перестала существовать, т.к. была удалена). Пример ниже не работает:

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»)

 , ,

Novator
()

Offline аналог Google-транслейт

Под Linux есть шикарный свободный электронный оффлайн-словарь StarDict с кучей словарей на все языки и любой тематики.

Под виндой есть офф-лайн переводчик текстов Promt, но он проприетарный с закрытым кодом и несвободный.

Есть ли свободный офф-лайн переводчик текстов?

Чтоб я поставил его на комп, накачал словарей и он переводил мне тексты как гугл-транслейт (можно чуть похуже)?

 , , , ,

Novator
()

Как рисовать текст на картинке (не через PIL)

Нужна простая в-одном-файле графическая библиотека:

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, не удовлетворяющий ни одному из перечисленных пунктов, не предлагать.

 ,

Novator
()

Как сжать linux-бинарник (запускаемый файл)

Написал в 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 лучше не использовать, всё остальное - желательно.
Также рекомендую подробный мануал по рантайму, статическому и динамическому связыванию.

 , , ,

Novator
()

Анонимус возмущен гугл-капчой ЛОРа

Анонимус передаёт своё возмущение гугл-капчой ЛОРа - неужели, говорит, на java нельзя сделать самодельную капчу (ведь была какое-то время нормальная капча)?!

Анониму обязательно нужно разгадывать 10 мозаик Гугля, перед написанием своего важного сообщения?

Второе: зачем-то запрашивается поле «Пароль», но какой пароль можно требовать с анонимуса? Это же явный баг!

P.S. Я когда-то сам просил капчу для анонимов и ограничения количества анонимных сообщений в день с одного IP - но то, что сделано сейчас - меня самого разочаровало, и я понимаю чувства анонимуса.

 , ,

Novator
()

Что нужно этому гадкому qMake?!

Пытаюсь сконпилировать 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-морды?

 , , ,

Novator
()

Выбор Slackware с LXDE: Porteus или Zenwalk?

Так как Lubuntu 12.04 устаревает, а новые лубунты окончательно испохабились вслед за основной убунтой, то встал вопрос выбора нового дистрибутива с LXDE.

Я принял решение попробовать Slackware, но его iso-образ слишком жирный (4 Гб), поэтому ищу что-то полегче. Нашлось Porteus-LXDE-v4.0-x86_64.iso (280Мб, уже качаю) и Zenwalk-current_180419.iso (1,1 Гб).

Помогите с выбором Slackware-дистрибутива.

Мои критерии:
1. Работа в Live-USB режиме и установка с флешки.
2. В Live-USB режиме наличие Gparted или подобного.
3. LXDE в комплекте или легко ставится.
4. Хорошие шрифты.
5. Поддержка русской раскладки без плясок с бубном.
6. Беспроблемная работа LibreOffice.
7. Желательно, графический инсталлер пакетов (типа Synaptic).
8. Добрый, умный, честный лидер - отсутствие зондов АНБ/ЦРУ.
9. Никаких свистоперделок.
10. Никаких автоматических обновлятелей/апдейтеров и т.п.

 , , , ,

Novator
()

Туннель SSH -R поднимается, но не работает

Мне надо чтоб при подключении к удалённому хосту (серверу) 222.222.222.222 на порт 3333, соединение приходило ко мне на локальную машину на порт тоже 3333 (адрес 127.0.0.1).

На локальной машине запускаю под root'ом:

ssh -4 -g -f -N -R 222.222.222.222:3333:127.0.0.1:3333 novator@222.222.222.222

Команда отрабатывает и процесс ssh висит.
На сервере порт становится занятым.
Локальная служба на 3333 работает.

Но соединения на наружный порт при этом ко мне не пробрасываются - проверяю telnet 222.222.222.222 3333.

На локальной машине фаервол (iptables) полностью открыт.

В чем ещё может быть проблема?

 , ,

Novator
()

RSS подписка на новые темы