четвер, 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.

Джерела: