Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.

Сообщения - el guahiro

1
Потом окажется, что это простенький скриптик на OpenCV+Python, а все уже хайпнули про нейросети.
2
По вопросу интереса к Linux ситуация парадоксальная. Лично наблюдаю, что офисным планктонам проще трахаться с неудобными Windows-инструментами при решении многих задач, но найти новый инструмент, а уж тем более пересесть на новую платформу (Linux, ChromeOS) - ужас дикаря перед молнией.
Причин много, прежде всего незаинтересованность IT отделов в чём-то отличном от Windows (т.к. надо переучиваться и антивирусы не нужны и непонятно, как бюджет изменится т.д. и т.п.). И инерция мышления. Увы, научившись на Windows, не хотят люди вникать. Вопрос "какую кнопку нажать" не праздный. Пока не будет кнопок, как в Андроиде, юзеры будут бояться.
Мне Linux удобен, позволяет быстрее решать поставленные задачи.
Аналогично, как у коллеги denkin, мой вклад скормен : юзаю систему, что-то придумываю, пишу бигрипорты, скриптики, делаю тесты утилит, пишу разрабам. Пересадил одно предприятие на Linux (не персональные компы, иное оборудование), в итоге подрядчик провалил запуск оборудования, хотя Linux был в ТЗ. Полагаю, причина проста - подрядчик не нашёл дешёвых фрилансеров, хорошо знакомых с Linux (хотел получить сто рублей и за десять нанять студентов для исполнения).
В общем грустно всё. Да и ладно. Меньше юзеров - меньше вирусов.
Что касаемо форумов - то на русских информации крайне мало, только основная. Поэтому и народу мало, только новички.

3
ПКМ Thunar, чтоб вынуть звуковую дорожку из видеоролика.
Команда:
bash -c 'ffmpeg -i "$0" -map 0:1 -c:a copy "${0%%.*}".m4a' %fУсловия появления: Видео-файлы
Иконка любая.
Вынимает звук мгновенно. Формат файла : *.m4a.
Второй вариант этого ПКМ, команда:
fmpeg -i %F -f mp3 -ab 192000 -vn %n.mp3 ; rename 's/.[a-z].mp3$/mp3/gi' %n.mp3 ; rename 's/.[a-z].mp3$/.mp3/gi' %n.mp3 Вынимает звук медленнее. Формат файла : *.mp3.
4
Привет всем!
Долго отсутствовал, т.к. был на даче в самоизоляции. Плодотворно рубил мачете кусты на участке. Участок большой, кусты (точнее лианы/вьюны) были толщиной в мизинец. Потом выдирал домкратом старые столбы забора, ставил новые, варил электросваркой каркас забора под сетку и т.д. После такой пахоты к вечеру писать ничего уже не хотелось и не моглось.
В ноутбуке успешно копилась служебная переписка, справки, прОтоколы, докУменты...  Сегодня обнаружил, что место на жестком диске катастрофически уменьшилось. Причина - дублирование всех сообщений  по нескольку раз, от разных адресатов (специфика работы в крупной корпорации). Итог : на глаз около 15 Gb лишних данных за период самоизоляции.
Все сообщения от всех адресатов сохраняю. Так надо. Но для очистки места на диске использую трюк:
Превращаю дубликаты файлов в хардлинки (спасибо, Linux, за эту функцию!)
# Turn duplicate files into hardlinks to free up space on your computer's hard drive
Устанавливаю утилиту hardlink, в терминале:
sudo apt install hardlinkПотом:
hardlink -v /Директория/которую/чистим/
Освободилось 15 Gb. И это хорошо.

На этом пока прощаюсь. Наше вам с кисточкой! Искренне ваш, el
5
Извлечь страницы из файла PDF. Помогает, когда файл огромный и в редакторах не открывается или тормозит.
Сейчас с таким столкнулся....
ПКМ Thunar на команду
str=`zenity --entry --title="Картинки в PDF" --text="Введите номер страницы или несколько - через тире или запятую" --entry-text="10-15"`; qpdf %n --pages %n $str -- стр."$str".pdf ; notify-send "извлекли страницы"Условия: галка на "Другие", *.pdf;*PDF
Надо доустановить qpdf, которая есть в оф. репозитории xUbuntu:
sudo apt install qpdf

Искренне ваш, el
6
Цитата: xub от мая 15, 2020, 14:10:25<property name="<Primary><Super>apostrophe" type="string" value="sh -c "echo -n 'find . -maxdepth 1 -type d,f -regex "\""^\.\/.*"\""|sed '\''s:\.\/::'\''|rename -n '\''s:^:sprintf("\""./%03d_"\"", $^R+=1):e'\''|nl'|xsel -pi;sleep 0.4;xdotool mousemove 960 540;xdotool click 2""/>Вид в файле ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
позволит переименовать файлы и директории с добавлением номера в начало.
2020 May 15; 07:10 AM
Это реально круто! Только куда добавлять эту строку? В xfce4-keyboard-shortcuts.xml?

Насчёт ситуации в мире: для тех, у кого руки и голова на месте, будет всё нормально. Говорю, как человек, переживший 90-е. Надо прогнозировать только на базе участия в движухе (а не по советам в  газетах/интернетах), быть осторожным, но не бояться, держать язык за зубами, но уметь сказать слово, держать нос по ветру, но не совать его куда не следует. И всегда помнить: если кто-то затирает тебе персонально о чём-то дольше минуты, и это не дружеская беседа - то это развод.
7
Хоткей для поиска выделенного текста
Whisker Menu>Все настройки (в самом низу)>Клавиатура>вкладка Комбинации клавиш>+Добавить (в самом низу)>пришем команду:
bash -c 'x-www-browser https://yandex.ru/search/?text="$(xclip -o)"' и жмём выбранную нами комбинацию клавиш. Я пока назначил Alt+Ctrl.
Важно, чтоб комбинация клавиш не дублировалась в хоткеях какой-нибудь команды (Gimp. Vim и т.п.)
Теперь, выделив текст, например в Libreoffice, я нажимаю Alt+Ctrl, открывается поиск Яндекса в браузере по умолчанию и выдаёт результаты по выделенному фрагменту текста.
У кого Яндекс не работает, команда:
bash -c 'x-www-browser http://www.google.com/search?q="$(xclip -o)"'
8
Простенький календарик на панели задач в Xubuntu, позволяющий скопировать любую дату в буфер обмена
Создаю текстовый файл с названием True calendar.desktop. Содержание файла True calendar.desktop:
[Desktop Entry]
Version=1.0
Type=Application
Name=True calendar
Comment=копирует дату в буфер обмена
Exec=bash -c 'date=$(zenity  --width 500 --height 200 --calendar --text "                          Выберите указателем мыши в нужную дату" --title "выбираем дату"); echo "$date"|tr -d "\r\n"|xclip -selection clipboard'
Icon=/usr/share/icons/el_guahiro/google-calendar-icon.png
Path=
Terminal=false
StartupNotify=false
Значку даю в GUI права на выполнение:ПКМ на файл> Ствойства>Разрешить как программу
Отправляю его на панель следующим методом:
Из меню Whisker на любую программу>Отправить на панель
Потом на панели на эту программу:Свойства>в открытое окно перетягиваю этот desktop файл>удаляю ярлык первоначальной программы.
Значение
Icon=/usr/share/icons/el_guahiro/google-calendar-icon.pngнадо поправить, прописав ваш путь до иконки значка.
Иконку прикрепляю (видно зарегистрированным пользователям)
9
Цитата: xub от мая 06, 2020, 13:24:43чтобы быстро уменьшать, оптимизировать размер.
У меня есть скрипт, который объединяет аж 5 способов сжатия PDF.
Сжатие меньше, чем в 7 раз, меня обычно не удовлетворяет. Причина - ограничение на вес почтового вложения 10 mb.
Попробуйте перегнать альбом чертежей при таком ограничении! Только сжатие и выручает.
Такое экстремальное сжатие возможно так:
- Распаковываешь PDF на картинки (или на webp).
- Жмёшь картинки, возможно убираешь лишние пиксели - по ситуации.
- Собираешь назад.
- Прогоняешь результирующий gs'ом (а точнее его питоновской версией)
всё это запаковано в скрипт, т.к. я ленив и люблю, чтоб всё делалось одним нажатием.
---
Напишу в ближайшее время.
10
Цитата: xub от мая 06, 2020, 02:14:31Жаль но на сегодняшний день качественно произвести OCR особенно не английского текста только Windows+FineReader
Распознавание можно сделать с помощью программы MasterPDFEditor, российского разработчика с  г. Воронеж.
Эта функция в MasterPDFEditor платная*. Перед распознаванием страницы файла PDF можно подровнять в MasterPDFEditor или с помощью действия ПКМ, о котором я писал постом выше - если документ сильно многостраничный, то лучше через ПКМ. Качество распознавания (попадание в символ) отличное. Распознаёт отлично и русский и английский язык. Есть украинский, татраский и казахский.
Программа работает на QT. Есть у разработчиков версии на GTK, но почему-то их нет на оф. сайте.
Бесплатный MasterPDFEditor бесплатный с очень богатым функционалом.
* Не забываем, что FineReader тоже платный.
Видео, как это работает
----
Можно запилить скрипт по разбору на картинки >OCR на Python-tesseract>склейке PDF назад. Но работу скрипта надо отлаживать, распознавалку обучать. Это время. Поэтому, если сделаю что-то такое, то позже.
11
Насколько понимаю, слетают настройки до дефолтных. Попробуйте изменить и их, чтоб настройки от юзера совпадали с настройками от рута:
sudo su
gsettings list-recursively org.xfce.mousepad.preferences
или в GUI:
sudo su
dconf-editor
12
Автовыравнивание криво отсканированных и многостраничных PDF в Linux.
Пригодится для фрилансеров на обработке сканов, студентам, инженерам, юристам и т.п. - всем, кто массово работает с документами в формате PDF.
Всплывающее окно выбора между двумя способами основано на скрипте (все скрипты у меня в ~./local/bin). Скрипт correct_screw_PDF_2_methods.sh такого содержания:
#!/bin/bash
IFS=$'\#'
OPTION1=$(zenity --list --radiolist  --width 700 --height 300\
       --title="Исправляем поворот страниц PDF" \
       --text="Выберите способ" \
       --column="Отметка выбора" --column="способ" \
       TRUE "Python" FALSE "Unpaper")
if [ "$OPTION1" = "Python"  ] ; then OPTION=correct_skew_pdf.sh ;
 else  OPTION=rovny_pdf2.sh ; fi
myArray=( "$@" )
for i in "$@"; do
 "$OPTION"  "$i" ; done
 exit
                 fi)
Автовыравнивание на базе утилиты Unpaper основано на скрипте rovny_pdf2.sh такого содержания:
#!/bin/bash
IFS=$'\#'
for a in "$@" ; do
cp  "$a" /tmp/"$a"
cd /tmp
pdftoppm -jpeg "$a"  1 | zenity --progress --width=400 --height=100 --title="Выравниваю PDF" --text "работаю." --auto-close --pulsate;
done
convert  1-*.jpg  %02d.pnm
rm 1-*.jpg
for i in *.pnm ; do unpaper -v --deskew-scan-deviation 3.0  -dd 1.0 --dpi 600 "$i"  "$i".pnm; mv -v "$i".pnm "$i"
done
img2pdf -o $OLDPWD/rovny.pdf  -S A4 --auto-orient *.pnm
mv $OLDPWD/rovny.pdf "$a"
rm  /tmp/*.pnm
Для работы этого скрипта надо установить утилиту pdftoppm и zenity, которые есть в репозитории xUbuntu 18.04. Утилита Imagemagick (команда convert) в xUbuntu 18.04 предустановлена.
Можно использовать скрипт rovny_pdf.sh, т.к. он основан на более стандартных утилитах:
#!/bin/bash
IFS=$'\#'
for a in "$@" ; do
cp  "$a" /tmp/"$a"
cd /tmp
pdftoppm -jpeg "$a"  1 | zenity --progress --width=400 --height=100 --title="Выравниваю PDF" --text "работаю." --auto-close --pulsate;
done
convert  1-*.jpg  %02d.pnm
rm 1-*.jpg
for i in *.pnm ; do unpaper -v --deskew-scan-deviation 3.0  -dd 1.0 "$i"  "$i".pnm; mv -v "$i".pnm "$i"
done
convert  *.pnm $OLDPWD/rovny.pdf
mv $OLDPWD/rovny.pdf "$a"
rm  /tmp/*.pnm
-------------
Чтобы сделать автоповорот на Python (OpenCV) надо два скрипта.
Сводный correct_skew_pdf.sh имеет содержание:
#!/bin/bash
IFS=$'\#'
for f in $@; do  pdftoppm -png "$f" /tmp/1 ;
done
for i in /tmp/1*.png ; do python /home/user/.local/bin/correct_skew.py -i "$i" ; mv rotated.png "$i"
done
 convert  /tmp/1*.png  "$f"
 rm /tmp/1*.png
Скрипт correct_skew.py,  который я, подсмотрев здесь, чуть доработал, можно скачать или посмотреть по ссылке https://cloud.mail.ru/public/Hqrs/57KN599yT, имеет такое содержание:
# import the necessary packages
import numpy as np
import argparse
import cv2
# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
help="path to input image file")
args = vars(ap.parse_args())
# load the image from disk
image = cv2.imread(args["image"])
# convert the image to grayscale and flip the foreground
# and background to ensure foreground is now "white" and
# the background is "black"
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.bitwise_not(gray)
# threshold the image, setting all foreground pixels to
# 255 and all background pixels to 0
thresh = cv2.threshold(gray, 0, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
# grab the (x, y) coordinates of all pixel values that
# are greater than zero, then use these coordinates to
# compute a rotated bounding box that contains all
# coordinates
coords = np.column_stack(np.where(thresh > 0))
angle = cv2.minAreaRect(coords)[-1]
# the `cv2.minAreaRect` function returns values in the
# range [-90, 0); as the rectangle rotates clockwise the
# returned angle trends to 0 -- in this special case we
# need to add 90 degrees to the angle
if angle < -45:
angle = -(90 + angle)
# otherwise, just take the inverse of the angle to make
# it positive
else:
angle = -angle
# rotate the image to deskew it
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated = cv2.warpAffine(image, M, (w, h),
flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)
# show the output image
cv2.imwrite("rotated.png", rotated)
cv2.waitKey(0)
----------
Видео, как это работает:
13
Марка ноутбука одной строчкой:
sudo dmidecode | less |grep "Product Name" | sort -r | head -1Производителя прочитаете на крышке ноутбука.
 Нужда в определении этого возникла для регулировки скорости вентиляторов. На Dell - это хоррор. Но об этом - позднее.
14
По причине грядущей тёплой погоды решил сквозануть на дачу. Модем-флешка зимует на даче и неизвестно, заработает ли, да и не помню где её на даче оставил. Интернет нужен - у младшего учёба, у меня работа, у жены - Whatsapp и иже с ними. Надо настраивать связь.
Нашёл где-то старый Мегафоновский свисток ZTE, котрый традиционно сразу не заработал.
Делаю в терминале:
lsusbВыхлоп, среди прочего:
Bus 001 Device 007: ID 19d2:1403 ZTE WCDMA Technologies MSM Далее, редактирую конфиг подключения:
sudo mousepad /etc/usb_modeswitch.confСтрочку, где DisableSwitching приводим к виду:
DisableSwitching=1Потом в терминале:
lsusbВыхлоп, среди прочего:
Bus 001 Device 007: ID 19d2:1405 ZTE WCDMA Technologies MSM Исправляею через web интерфейс (предварительно отключив другие интернет-соединения на компьютере) настройки модема:
exo-open --launch WebBrowser http://192.168.0.1/goform/goform_set_cmd_process?goformId=SET_CONNECTION_MODE&ConnectionMode=auto_dialВытаскиваю модем, по новой вставляю. Всё подключается -  как проводное соединение или автоматический ethernet.
---
На одном из ноутов у меня было настроено pppoe соединение, ноут не коннектлся к USB модему. Удалил это соединение через Network-manager - всё соединилось.
15
ПКМ Thunar "Скачать с YouTube в этот каталог"
Команда:
youtube-dl --rm-cache-dir ; youtube-dl  $(xclip -o) ; ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././' ; ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././'Условия появления: галка на Каталоги.
Иконка - любая, я поставил лого Youtube dl GUI (есть такая программка на Linux)
Как работает: копируем URL видео с YouTube>Тыкаем мышкой в выбранный каталог>ПКМ  "Скачать с YouTube в этот каталог"> в каталоге появляется видео.
Здесь команда:
ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././'служит, чтобы удалить непонятный набор букв, который присутствует в именах файлов, скачанных с YouTube