неділя, 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

четвер, 29 червня 2017 р.

Бодін лінукс - краса і мінімалізм

Однією з проблем масового переходу на лінукс є те, що користувачі старих ПК лякаються погіршення швидкодії своїх систем через перехід на нове ПЗ.

Ось і я давно шукав лінукс для своїх старих ПК. Перепробував декілька варіантів (Xubuntu, Lubuntu, Debian з різними середовищами, Puppy тощо). Всі вони мають добрі й погані риси. З кожним оновленням старому комп'ютерові стає все тяжче і тяжче. Втім, тяжчими стають програми для доступу в інтернет (firefox, chromium). 

І от нещодавно примітив щось нове - Бодін Лінукс (Bodhi Linux). Дистрибутив - заснований на тому ж Ubuntu LTE. Але як виявилося доволі гарний і зручний. А найголовніше - мінімалістичний. В ньому не знайдеш купу сервісів, які невідомо чим займаються. Він не завантажує море бібліотек про всяк випадок. Він використовує кеш в ОЗП для пришвидшення роботи. І, найголовніше, він використовує стандартні репозитарії Ubuntu. А це означає, що всі існуючі в ньому програми доступні для встановлення через apt-get.

Відразу зауважу, що цей текст я пишу з Bohdi Linux + Firefox.

Вводимо uname -a і бачимо:
Linux username 3.16.0-4-586 #1 Ubuntu 3.16.7-ckt25-2 (2016-04-08) i686 athlon i686 GNU/Linux

Подивимося cat /etc/lsb-release:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Bodhi Linux"


Я свідомо взяв Legacy варіант, щоб він краще працював на старенькому Atlon з 512Мб ОЗП. І працює від доволі непогано.

Центр керування пакетами теж специфічний - це просто веб-сайт, на якому є ссилки на рекомендовані пакети з кожної категорії. А, оскільки в центрі керування використовується браузер Midori, то клацнувши на ссилку можна відразу встановити пакет. На сайті почитати опис пакету, побачити знімки з екрану, а також відразу можна проголосувати за улюблений пакет, таким чином піднявши рейтинг більш корисних пакетів. І працює цей механізм на кілька порядків краще, ніж центр управління пакетами Ubuntu. Нічого зайвого, а найкорисніше зверху.

Після встановлення ви не матимете більшості програм. Всі їх треба доставляти. Але собі ви поставите лише те, що треба саме вам. Плюс є можливість створити свій дистрибутив відразу зі свого робочого ПК як зріз встановлених програм. Щоправда я ще не випробував цей механізм. Як робочий стіл використовується середовище Moksha - дуже легеньке, доволі приємне і з можливістю одним кліком змінювати оформлення. Це вражає. Єдине, чого не підтримує Moksha - це іконки на робочому столі, але трішки призвичаївшись помічаєш, що вони не такі вже й потрібні, бо є QuickLauncher, клавіатурні скорочення, Автозапуск і пошук серед усіх програм.

Програми, яких немає в центрі керування пакетами можна спокійно встановити через термінал за допомогою apt-get чи dpkg.

Де ложка дьогтю? Періодичні збої браузерів через невідповідність процесора. Тут допоможе лише Gentoo, коли все скомпільовано під потрібний процесор. Але в цілому Бодін Лінукс, схоже, вдихнув нове життя в старе залізо.

Джерела:

субота, 17 червня 2017 р.

wxHexEditor та доктор Уотсон

Розробникам часто потрібен нормальний редактор шістнадцядкового коду. Чи є такий інструмент в Лінуксі? Відповідь на це питання дасть команда:

sudo apt-get install wxhexeditor

Та оскільки він написаний на WxWidgets, то, я певен, він є і для Windows, й для MacOS.
Серед особливостей:
  • підтримка величезних файлів (2 ексабайт)
  • зручні пошук та заміна
  • декодування в різних системах числення
  • дизасемлювання
  • історія з можливістю відкату.

Але до чого тут доктор Уотсон?

Історія така: була в мене старенька програма (не буду рекламувати), написана під DOS, яка працювала з LPT портами. Але лише стандартними на адресах 0x0378 (LPT1), 0x0278 (LPT2), 0x03B8 (LPT3). Та ноутбуків з LPT портом вже не зустрінеш. Замість них використовуються різні перехідники USB-LPT, PCMCIA-LPT. А у них адреси портів вже зовсім не стандартні (В моєму випадку 0xFFD8).

Як же заставити працювати цю стару програму з нестандартними портами? Елементарно, Уотсоне, - за допомогою wxHexEditor.

1. Знаючи, що для керування LPT викристовуються адреси 0x0278-0x027F, 0x0378-0x037F було вирішено відшукати в коді всі звернення до цих адрес. Я обмежився лише основними регістрами. Вийшла табличка типу:

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

3. Робимо заміну для прикладу всі послідовності 78 03 на D8 FF (у нашого пристрою діапазон адрес 0xFFD8-0xFFDF), а також 79 03 на D9 FF і 7A 03 на DA FF.

4. Зберігаємо результат, пробуємо запускати і... вуаля! Воно працює. Сподіваюся, що не зачепив нічого зайвого.

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

Джерела:

вівторок, 30 травня 2017 р.

NanoPI первинний запуск

Послав мені Бог до рук МініПК за 10$ (в Україні, нажаль, трохи дорожче) NanoPi Neo 512M. Це повноцінний ПК з RAM=512M, що працює під керуванням ОС Linux і має розміри плати лише якихось 40х40 мм. Але він без відеовиходу і Flash-пам'яті. Тож до нього довелося докупити microSD (16Gb). Для роботи необхідно записати зображення ОС на microSD. Для цього в Linux виконуємо такі нехитрі команди:
$ unzip nanopi-neo_debian-nas-jessie_4.11.2_20170525.img.zip | dd bs=1M of=/dev/mmcblk0 status=progress
$ sync

Вставляємо отриману microSD у відповідний слот NanoPI, подаємо живлення і насолоджуємося блиманням світлодіода, що відповідає за індикацію роботи. Підключивши прилад до мережі я виявив, що він не прописаний на DHCP сервері (а прив'язка у ньому зроблена до MAC-адрес), тому постала задача визначити, яка ж ця MAC-адреса в цього екземпляра NanoPI. З боку DHCP сервера я вирішив переглянути, кому в мережі не вдалося отримати IP-адресу. Команда перегляду логів:
$ cat /var/log/syslog | grep DHCPDISCOVER
Видала вона щось схоже на:
May 30 08:57:08 nvcamc dhcpd: DHCPDISCOVER from 00:11:2f:82:e2:a2 via eth0 May 30 10:06:03 nvcamc dhcpd: DHCPDISCOVER from 02:81:ca:d4:e6:44 via eth0: network 192.168.0.0/24: no free leases May 30 10:13:58 nvcamc dhcpd: DHCPDISCOVER from 02:81:ca:d4:e6:44 via eth0: network 192.168.0.0/24: no free leases May 30 10:14:02 nvcamc dhcpd: DHCPDISCOVER from 02:81:ca:d4:e6:44 via eth0: network 192.168.0.0/24: no free leases May 30 10:14:12 nvcamc dhcpd: DHCPDISCOVER from 02:81:ca:d4:e6:44 via eth0: network 192.168.0.0/24: no free leases May 30 10:14:21 nvcamc dhcpd: DHCPDISCOVER from 02:81:ca:d4:e6:44 via eth0: network 192.168.0.0/24: no free leases

Тепер зрозуміло, хто "незаконно" підключився до мережі і хоче мати IP. Після внесення необхідних зміна на DHCP сервері мініПК успішно отримав IP-адресу і став доступний для роботи по мережі. Перевіряємо, його роботу через веб-інтерфейс за адресою http://xxx.xxx.xxx.xxx:8888:
Так! Воно працює. Доступ до мальоти є також по ssh, та через openmediavault (який працює на 80-му порті веб-сервера NanoPI).

четвер, 11 травня 2017 р.

OSM tile server

GoogleMaps візуалізація - гарна річ для вашого веб проекту. Але що робити тим, хто хоче скористатися мапами в локальній мережі без доступу до інтернет? openstreetmap.org - відкрита мапа світу - проект, де кожен може внести свій вклад у її розвиток, а також скористатися результатами роботи спільноти. Та на сайті застерігають від грубої закачки великих об'ємів даних через непомірне навантаження на сервери. Натомість рекомендують створити власний tile-сервер. Це може бути будь-який веб-сервер, з розміщеними на ньому картинками - шматочками мапи з різними рівнями деталізації або повноцінна рендер-система. Розгортання одного з таких tile-серверів попри не складний процес змарнувало мені купу часу. Розмістивши його в локальній мережі я отримав можливість використання мап без доступу до інтернет. Ось послідовність кроків для Xubuntu 16.04 LTS.

Я обійшовся звичайним ноутбуком з ОЗП=2Гб, HDD>120Гб та 2-ядерним процесором.

1. Скачуємо останню версію необхідної нам вибірки з цілої планети із сайту http://download.geofabrik.de/europe/ukraine.html

wget http://download.geofabrik.de/europe/ukraine-latest.osm.pbf

2. Встановлюємо необхідне ПЗ, створюємо БД та імпортуємо дані. Саме так - вся інформація для побудови мапи будь-якої деталізації міститиметься в нашій базі даних PostgreSQL.

sudo apt install postgresql postgresql-contrib postgis postgresql-9.5-postgis-2.2 openstreetmap-carto osm2psql
sudo -u postgres -i
createuser osm
createdb -E UTF8 -O osm gis
psql -c "CREATE EXTENSION hstore;" -d gis psql -c "CREATE EXTENSION postgis;" -d gis 
su - osm
/usr/share/openstreetmap-carto-common/get-shapefiles.sh 
osm2pgsql --slim --flat-nodes tempnodes.bin -C 1000 ukraine-latest.osm.pbf
 
3. Фіксаємо помилки недостаючих шрифтів:
sudo sed -i 's|<Font face-name="Arundina Sans Bold"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="Arundina Sans Italic"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="Arundina Sans Regular"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="Droid Sans Fallback Regular"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="gargi Medium"/>||g' /usr/share/openstreetmap-carto-common/style.xml sudo sed -i 's|<Font face-name="Mallige Bold"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="Mallige Normal"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="Mallige NormalItalic"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="Mukti Narrow Bold"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="Mukti Narrow Regular"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="Tibetan Machine Uni Regular"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="TSCu_Paranar Bold"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="TSCu_Paranar Italic"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="TSCu_Paranar Regular"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="Unifont Medium"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|<Font face-name="unifont Medium"/>||g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|minzoom|minimum-scale-denominator|g' /usr/share/openstreetmap-carto-common/style.xml
sudo sed -i 's|maxzoom|maximum-scale-denominator|g' /usr/share/openstreetmap-carto-common/style.xml
 
4. Корегуємо параметри генерації у файлі generate_tiles.py:
bbox = (22.1288, 44.3904, 40.2181, 52.3754)
style = /usr/share/openstreetmap-carto-common/style.xml

 
5. Створюємо tile_dir:
mkdir ~/osm/tiles -p
 
6. Запускаємо генерацію тайлів:
python ./generate-tiles.py


 
Процес, як виявилося, не такий вже й швидкий. На створення zoomlevel від 0 до 12 у мене пішло 4 доби. Згенеровано близько 150Мб даних. Запускав генерацію частинами для різних рівнів деталізації, але майже без зупинок.

Хто не хоче проходити весь процес, може скористатися вже згенерованими даними, скачавши торент. Максимальної деталізація zoomlevel=12 і є приклад використання OpenLayers.

OpenLayers - JavaScript фреймворк, що дозволяє використовувати дані OpenStreetMap, GoogleMaps та інші у веб-проектах. Власне саме на цій бібліотеці зроблений приклад, що міститься в роздачі.

Побіжно скажу кілька слів про проект OpenStreetMap. На основі даних цього проекту засновано кілька цікавих проектів. Варто звернути увагу на opencyclemap.org - топографічна карта (з ізолініями висот) для туристів. OsmAnd~ - автомобільний навігатор для пристроїв з Andoid, що використовує offline векторні мапи імпортовані з проекту OpenStreetMap.

Джерела:
http://hcmc.uvic.ca/blogs/index.php?blog=11&p=13959&more=1&c=1&tb=1&pb=1
https://github.com/openstreetmap/mapnik-stylesheets
http://bboxfinder.com 
https://f-droid.org/repository/browse/?fdfilter=osmand&fdid=net.osmand.plus 

пʼятниця, 21 квітня 2017 р.

vokoscreen - Краще один раз побачити, ніж 100 разів почути

Запис відео з екранів - один з найкращих методів наочно показати дії оператора ПК. Одна з найзручніших і безкоштовних програм для Linux в цьому плані - vokoscreen. Простий та зрозумілий інтефейс, повноекранна робота, робота з довільною областю екрану, або з певним вікном, підказка операцій з клавіатурою, збільшення та запис звуку вигідно виділяють цю програму серед інших. Є можливість увімкнути камеру і показати автора в окремому вікні. Відсутні обмеження на час запису. Що ще треба для створення повноцінних екранних роликів?
Правильно - лише встановити потрібну програму. А це робиться, як завжди, тривіально:

$ sudo apt-get install vokoscreen

Поки записував демонстрацію, знайшов один мінус: підказка клавіатури не працює з кирилицею. Та оскільки проект розміщений на github, Ви можете самостійно внести корекції в нього.
Джерела:
https://github.com/vkohaupt/vokoscreen
http://www.kohaupt-online.de/hp/

вівторок, 28 лютого 2017 р.

Словничок, що завжди під рукою

Хто не користувався Google Translate? Гарний сервіс, та має недолік. Не може підказувати окремі слова з вашого документу прямо в тексті. В Linux є чудова утилітка - GoldenDict. Вона допомагає перекладати окремі слова при подвійному кліку на них в будь-якій програмі. Встановлення тривіальне:


$ sudo apt-get install goldendict

Трішки налаштувань - і вона задовільнить більшість потреб з перекладу окремих слів. Програмка може працювати з веб-сайтами словниками, а також з вікіпедією (щоправда останнім часом є проблеми з підключенням googletranslate та й wiki викидає помилки). Втім, можна скачати готові офлайн словники і не залежати від інтернету.

Ось, до прикладу, налаштування на тлумачний словник української мови:

UKRLIT-SUM = http://ukrlit.org/slovnyk/%GDWORD%

А офлайн словники знайдете на сайті:


Там є і й англо-український, українсько-англійський та інші. Відеоінструкція з підключення словника:

четвер, 23 лютого 2017 р.

Крос-компіляція Windows програм з-під Linux

Якщо ви вже перейшли на Лінукс, але ваші клієнти ще на Windows і  ви пишете для них програми, то для компіляції цих програм під платформу Windows зовсім не обов'язково використовувати віртуальні машини, окремі ПК чи інші хитрощі. Цілком можливо застосовувати крос-компіляцію в Linux.

Встановлюємо пакет mingw, який уособлює крос-компілятор і необхідні інструменти: 

sudo apt-get install mingw-w64

Компілюємо за допомогою mingw нашу програму:

i686-w64-mingw32-g++  hello.cpp
В результаті ваша програма буде залежати від кількох dll. Залежності кінцевої програми від mingwm10.dll, libstdc++6.dll та інших можна позбутися, підключивши ці бібліотеки статично. А статичне підключення цих бібліотек здійснюється ключами компілятора:

-static-libstdc++
-static-libgcc

Кінцевий exe може бути доволі значним по величині. Оптимізації розміру кінцевого exe можна досягнути, виключивши інформацію відлагодження (ключ -s) та стиснувши exe утилітою upx. Встановлення утиліти очевидне:

sudo apt-get install upx

Використання утиліти теж не створює складнощів:

upx hello.exe

Джерела:

вівторок, 31 січня 2017 р.

Joomla-bla-bla-bla


Lamp: linux apache, mysql, php-perl-python
Встановлення середовища для розробки веб сайтів у Windows - доволі проста річ. Є готові збірки, які дуже легко встановити і адмініструвати.

В Linux все, виявляється, навіть простіше. Хоча є деякі застереження. Нещодавно довелося мені встановити Joomla на локальному ПК.

1. Встановлюємо пакети середовища розробки в одну (!) команду:
$ sudo apt-get install lamp-server^

Відразу після цього можна перевірити, що веб-сервер дійсно запустився. Для цього скеровуємо браузер на адресу http://127.0.0.1

2. Встановлюємо Joomla. Скачуємо і розпаковуємо в каталозі /var/www/html архів з останньою версією CMS. І починаємо інсталяцію http://127.0.0.1/index.php

І тут може виникнути проблема у вигляді повідомлення:
PHP Fatal error:  Uncaught Error: Call to undefined function simplexml_load_file()

Для виправлення її додатково встановлюємо php-xml:
$  sudo apt-get install php-xml

Після цього встановлення відбувається без критичних помилок. Але на етапі перевірки необхідних модулів може виявитися, що відстутній модуль MCrypt. Його теж легесенько довстановлюємо:
$ sudo apt-get install php-mcrypt

Тепер можна працювати з Joomla без доступу до інтернет.
 
Джерела: