неділя, 3 вересня 2017 р.

SSHFS - мережевий диск через SSH


При налаштуванні серверів по SSH часто виникає потреба редагування файлів. Для цього існують консольні редактори. Та їхній функціонал часто недостатній, функції пошуку і заміни часто не очевидні або неповноцінні. Також трапляються ситуації, коли необхідно обмінятися файлами між віддаленим сервером і локальним ПК. Таке переписування теж не дуже зручне, бо потребує набирання команд в консолі і необхідною умовою є необхідність однозначно вказувати шляхи до файлів.

Значно зручніше підключити файлову систему сервера як мережевий диск. Для цього існує спеціальна файлова система SSHFS (до речі, для Windows теж є рішення з підключення SSHFS, але тут ми його не розглядатимемо).

Почнемо, як завжди, зі встановлення необхідного пакету:

$ sudo apt-get install sshfs

Це, власне, і все. Можна користуватися. Для одноразового підключення можна використати команду на кшталт:

$ sudo sshfs -o allow_other,defer_permissions user@host:/remote_dir /mnt/local_dir

На Ubuntu опція defer_permissions, схоже, відсутня і викликає помилку "fuse: unknown option `defer_permissions'", але її не так вже й треба. Тому її слід забрати. В результаті можливі проблеми з правами доступу, якщо UID власника файлу на сервері не відповідає UID локального користувача. Втім, опція "-o uid=NNN" вирішить ймовірні проблеми з правами доступу до отриманих файлів.

Для регулярного підключення до сервера за допомогою SSHFS краще використати файл /etc/fstab і налаштувати перманентні правила монтування. Для цього додаємо у /etc/fstab рядочок типу:

sshfs#user@host:/remote_dir /mnt/local_dir fuse defaults,allow_other 0 0

Після цього підключення до сервера можливе простою командою:

$ sudo mount /mnt/local_dir

А відключення відповідно:

$ sudo umount /mnt/local_dir

Звичайно, для будь-якого підключення необхідно знати і ввести пароль користувача SSH.

Джерела:
https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh

субота, 26 серпня 2017 р.

Одного разу... не стало WiFi

Давно вже я не перевстановлював Linux з нуля. Все оновлення та й оновлення. Та ось трапилася халепа. Після одного чищення системи від непотребу (навіть не знаю коли саме) у мене пропала іконка під'єднання до мережі WiFi. В менеджері мережевих з'єднань навіть не було опції "увімкнути WiFi".

Я вже було подумав, що згорів модуль. Але перевірив налаштування BIOS - там все гаразд. Потім подивився:

$ lspci | grep Network
06:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)

Виглядає так, що контролер на місці і ядро навіть успішно його розпізнало.

У чому ж річ?

Виявляється я випадково знищив пакет драйверів для бездротових адаптерів Broadcom. Можливо це сталося в результаті одного з оновлень. В будь-якому разі відновлення роботи WiFi в такому випадку не надто складне:

$ sudo apt-get install bcmwl-kernel-source

Після встановлення варто перезапустити систему.

Джерела:

пʼятниця, 25 серпня 2017 р.

gobby - спільне редагування текстів

Спільна розробка текстових файлів - популярний сервіс в інтернеті (найвідомішим є, мабуть, GoogleDocs). Сервіс також вмонтований в деякі офісні редактори (AbiWord).

Та ось я знайшов редактор, який може працювати автономно в локальній мережі. А за наявності правильно підготовленого в мережі сервера (можливо, колись опишу, як його налаштувати) може працювати незалежно від робочих станцій користувачів, адже сервер завжди доступний і може надавати доступ для розробників документів в зручний для них час.

Називається цей редактор gobby.

По суті це звичайний редактор коду з підсвіткою багатьох типів синтаксису. Основною його перевагою є спільне редагування (одночасно кілька осіб працюють в одному документі і кожен бачить зміни інших в реальному часі). Дуже схоже на GoogleDocs.

Переважно цей редактор розрахований на спільне редагування коду, але думаю, що ним можна розробляти багато інших документів, які не потребують жодних картинок, а лише текст. Це можуть бути крім коду документи в стилі переліків необхідних робіт, засобів, планів виконання завдань чи навіть законопроектів, над якими працює ціла команда одночасно.

В редактор інтегровано чат, тож можна переписуватися з колегами, які працюють з тим самим документом.
Процедура встановлення gobby:

$ sudo apt-get install gobby

Джерела:

неділя, 13 серпня 2017 р.

ooofbtools - створюємо fb2 книгу


У попередньому дописі я описав, як використовувати автоматичне розпізнавання djvu файлів за допомогою tesseract.

Після кропіткої роботи по вичитуванню розпізнаного тексту і виправлення помилок настав час створити з нього електронну книгу.
Для цього існує непоганий і доволі легкий у використанні додаток до LibreOffice. Називається він fbtools або по-старому OOoFBTools. Його встановлення просте, як двері - за допомогою Extension Manager. Навіть не описуватиму.

Використання ще простіше. Адже всі функції зібрані в меню OOoFBTools:
  • Є стандартні секції. Треба лише позначити назви розділів як заголовки, а також правильно розділити абзаци.
  • Можна вставляти картинки.  Правда варто слідкувати за їхнім розміром, щоб кінцевий fb2 не вийшов занадто великим.
  • Є можливість редагувати мета-параметри (автор, редактор, жанр тощо)
  • Також є можливість створення зносок. Та я цієї функції не перевіряв.
  • І, зрештою, найголовніша опція - експорт у файл fb2.
В результаті отримуємо цілком придатну для читання електронну книжку формату fb2:

пʼятниця, 28 липня 2017 р.

tesseract - читаємо друковані тексти (OCR)

Розпізнавання текстів та автоматизація цього процесу цілком легко вирішується в Linux. Існує дві поширені програми розпізнавання: cuneiform та tesseract. Вони призначені для роботи в терміналі, але них для використання в графічному середовищі існує агрегатор yagf, який вміє працювати з обидвома двигунами.

А все почалося з того, що я знайшов книжку у форматі djvu, яку хотів дати дітям почитати на електронній книжці. Нажаль пошуки електронного варіанту в fb2, txt або інших форматах електронних книг були неуспішні.

Я вирішив виправити цей недолік, адже книжка цікава. І у мене був сканований  україномовний її варіант.

Відразу зауважу, що з cuneiform у мене не склалося через помилки при запуску, хоча я точно пам'ятаю, що колись давно користувався саме нею і при тому дуже успішно. Yagf теж не вдалося запустити. Та я й не розбирався чому саме. Адже в консолі все вирішується за лічені хвилини.

Що ж. Почнемо. Для початку слід встановити необхідне ПЗ. Це - система управління файлами djvu (упаковка-розпаковка), а також система tesseract-ocr та український мовний пакет:

$ sudo apt-get install djvulibre-bin tesseract-ocr tesseract-ocr-ukr

Наступним кроком  потрібно поділити djvu файл на окремі графічні файли сторінок:

$ ddjvu -format=tiff -eachpage filename.djvu page%d.tiff

Тепер ми матимемо 260 (у моєму випадку) окремих файлів - по одному на кожну сторінку. Залишилося натравити на них розпізнавач і об'єднати результати у текстовому файлі. Для цього я написав мікроскрипт (кількість сторінок слід поправити в тілі скрипта):

#!/bin/bash
        for i in `seq 1 260`;
        do
  tesseract ./page$i.tiff stdout -psm 6 -l ukr >> book.txt
        done

Запустивши його, йдемо пити чай-каву. Після coffe-break отримуємо txt файл. Залишилося дрібничка - прочитати і скоригувати помилки розпізнавання. А далі скрутити все це в гарну електронну книжку формату fb2. Але це вже інша історія, якою, сподіваюся, незабаром поділитися.

Джерела:

пʼятниця, 21 липня 2017 р.

debootstrap - розгортаємо ARM середовище Debian Jessie


Нещодавно я писав про NanoPI - малюсінькій комп'ютер за порівняно смішну ціну. І ось настав момент написання програми для нього. Звичайно, найпростіше - перекинути код на нього і прямо на ньому зібрати. Та для великих проектів компіляторові треба доволі багато пам'яті. А вона є на більших x86 комп'ютерах. Та й вони більш поширені, ніж ARM-базовані. Тож частіше можуть трапитися під рукою.

Дистрибутив Debian чудово порається з розгортанням різних його версій на одній машині, а за допомогою QEMU можна навіть працювати з дистрибутивами різних архітектур. Саме це нам і потрібно. Процес розгортання, як виявилося, доволі простий.

Встановлюємо утиліту debootstrap
sudo apt-get install debootstrap

Встановлюємо пакети архітектури armhf з дистрибутиву jessie у каталог jessie-armhf без виконання другої фази (second-stage) розгортання системи
sudo debootstrap --foreign --arch=armhf jessie jessie-armhf

Встановлюємо QEMU
sudo apt-get install qemu-user-static

Копіюємо qemu для імітації arm процесора в каталог встановлення дистрибутиву
sudo cp /usr/bin/qemu-arm-static jessie-armhf/usr/bin/

Для доступу до інтернету
sudo cp /etc/resolv.conf jessie-armhf/etc/

Переходимо в каталог дистрибутиву в режимі chroot
sudo chroot jessie-armhf/

Запускаємо другу фазу розгортання системи. Тут пакети довстановлюються в режимі arm
debootstrap/debootstrap --second-stage

Оновлюємо джерела для apt
cat > /etc/apt/sources.list << EOF
deb http://ftp.de.debian.org/debian jessie main contrib non-free
deb http://ftp.de.debian.org/debian jessie-updates main contrib non-free
deb http://security.debian.org/debian-security jessie/updates main contrib non-free
EOF

Оновлюємо щойно розгорнуту систему
apt-get update  && apt-get dist-upgrade

Якщо побачили таке при переході в chroot
I have no name!@host$
то є два варіанти
chmod 0644 /etc/passwd
а якщо не допомогло, то
rm /etc/passwd-

Ну далі налаштовуємо компілятори, бібліотеки і решту непотребу, щоб забезпечити роботу gcc.
apt-get install build-essential

Джерела:

неділя, 2 липня 2017 р.

Palemoon - браузер для non SSE2 процесорів


У попередньому дописі я описав один з дистрибутивів, які підходять для використання на застарілому залізі. Та якщо у вас процесор, що не підтримує інструкції SSE2, то з веб серфінгом періодично матимете негаразди. Адже всі сучасні браузери розробляються з розрахунку лише на процесори з підтримкою команд SSE2. Чи не всі? Виявляється є ентузіасти, які все ж думають про старе залізяччя. Браузер palemoon - одне з їхніх творінь.
Але спершу визначимо, чи варто нам взагалі шукати SSE only браузер. В консолі введемо

$ lscpu

Побачимо купу інформації про наш процесор. Але нас цікавить лише поле Flags. У ньому вказано перелік типів інструкції, які підтримує процесор. Якщо в переліку є sse2, то цей допис вам не потрібен. Ось, що я побачив у себе:

Architecture:          i686
CPU op-mode(s):        32-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
Vendor ID:             AuthenticAMD
CPU family:            6
Model:                 8
Model name:            AMD Sempron(tm)
Stepping:              1
CPU MHz:               1197.000
CPU max MHz:           1197,0000
CPU min MHz:           747,0000
BogoMIPS:              2405.37
Hypervisor vendor:     (null)
Virtualization type:   full
L1d cache:             64K
L1i cache:             64K
L2 cache:              256K
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mp mmxext 3dnowext 3dnow vmmcall



Як бачимо з SSE2 мені не повезло (у переліку є лише sse, але немає sse2). Оце і є причина "бочки меду в ложці дьогтю". І онаками її при роботі є не так повільна робота браузера, як періодичні безпричинні аварійні завершення програми. Це так дратує! Різні браузери збоять на різних сайтах. І якщо глянути в логи, то часом можна помітити повідомлення "Illegal instruction". Пошукавши в інтернеті, чи є браузери для старих CPU натрапив на palemoon SSE версію. Його немає в офіційних репозитаріях дистрибутивів. Але на офіційному сайті програми є готова збірка під 32 бітну ОС Linux. Це просто архів, розміром майже 40 Мб. Розпаковуємо його, де зручно, і користуємося. Можна встановлювати для всіх користувачів системи. Дії після скачування приблизно такі:

$ sudo tar -C /opt -xvf palemoon-27.3.0SSE.linux-i686.tar.bz2
$ sudo ln -s /opt/palemoon/palemoon /usr/bin/palemoon

PS. Поки готував цей допис мій palemoon жодного разу не гепнувся.

Джерела:
https://forum.palemoon.org/viewtopic.php?f=40&t=13530
ftp://ftp.palemoon.org/SSE-Linux/
http://palemoon.org