мну
Заметки обо всём, что касается /me.
Памяти друга...
Сегодня было бы 46 лет со дня рождения моего друга Павла, ушедшего два года назад.
Мы вместе учились в институте, временами я гостил у него дома, некоторое время он жил у меня... Вместе осваивали компьютерную науку, прогуливали учебные пары, учились сисадминству. У Павла дома была XT’шка, на которой я написал свою первую программу на ассемблере, поиграл в первую игру. Мама Паши очень вкусно готовит, семья очень культурная и просто они хорошие люди. Он иногда привозил мне новинки софта, иногда я с винтом ездил к нему с обновами. После защиты диплома мы стали реже видеться, он остался жить в своём городе, я живу в своём. И вот в 2016 году позвонил наш общий знакомый, сказал, что Паши не стало, благодаря ему я был на похоронах.
Павла я считаю одним из моих учителей многогранной компьютерной науке, два других, слава Богу, живы, надеюсь — всё у них будет хорошо. Мы тоже редко видимся, но связи не теряем, я им звоню, на их день рождения поздравляю.
Павел, земля тебе пухом! Ты был хорошим товарищем и учителем.
Царствия тебе небесного.
Небольшая коллекция юниксовых консольных утилит
Список из нескольких десятков утилит командной строки. Некоторые из них малоизвестны, некоторые весьма полезны, с некоторыми пока непонятно... Установка большинства из них производится штатным диспетчером пакетов вашей ОС.
Идея (и список) взята мной отсюда, творчески переработана, сгенерены новые скриншоты, переведено (с вариациями) на русский. Утилиты ставил на Debian 9 в Virtualbox’е (скрин).
Показать
dstat & sar | htop, atop & glances | |
iostat, vmstat, ifstat и мрого чего ещё в одном | Мониторинг процессов, памяти и ввода/вывода | |
slurm | ttyrec & ipbt | |
Визуализирует трафик сетевого интерфейса во времени | Запись и проигрывание терминальных сеансов | |
vim & emacs | rsync | |
Редакторы настоящих программеров | Синхронизация файлов и ФС через SSH | |
screen, dtach, tmux, byobu | mtr | |
Пусть ваши терминальные сессии остаются живы | Трассировка маршрута 2.0 | |
multitail | socat & netpipes | |
Просмотр нескольких файлов журналов в одном окне | Простое перенаправление всего в/из сокетов | |
tpp | iftop, iptraf & nethogs | |
Просмотр презентаций PowerPoint в терминале | Анализаторы сетевого трафика | |
xargs & parallel | siege & tsung | |
Планирование и выполнение задач с консольного ввода | Консольные инструменты для нагрузочного тестирования | |
duplicity & rsyncrypto | ledger | |
Инструменты шифрованного резервного копирования | Бухгалтерия в терминале | |
nethack & slash’em | taskwarrior | |
Пока что самые сложные игры на планете | Консольный todo | |
lftp | curl | |
Есть FTPS. Может зеркалить, типа как rsync | Любимый всеми HTTP-инструмент | |
ack, ag (silver searcher), pt | rtorrent & aria2 | |
Лучшие grep’ы для исходников | Торрентокачалки для командной строки | |
calcurse & remind + wyrd | ttytter & earthquake | |
Системы календарей | Модные клиенты модного Твитера | |
У меня нет (и никогда не будет) аккаунта в Твитере, поэтому картина не информативна. I do not have (and never will be) account on Twitter, so the picture is not informative. |
||
newsbeuter & rsstail | vifm & ranger | |
Читалки RSS в командной строке | Альтернативы для MC | |
powertop | cowsay & sl | |
Помощь в экономии энергии в Linux | Невозможно было удержаться :o) | |
tig | cloc | |
Консольный интерфейс для git | Подсчёт строк исходного кода | |
qalc | ipcalc | |
Лучший калькулятор (для скриптов тоже) | Для манипуляций с сетевыми настройками | |
Вышел после отпуска на работу
Ну, что у нас плохого?
Напильник для Эгеи
Как можно заметить, мой блог ведётся на бесплатном (для личных блогов) движке Эгея. Это отличный блого-движок, отличающийся своей простотой, элегантностью и дружелюбием к пользователю. Поэтому, после восстановления сбоя на сервере с моим сайтом, я опять решил настроить блог на Эгее. Правда, незадолго до сбоя я обновил систему до Debian 9, вычистив все упоминания о PHP5, остался только PHP7 (с FPM), но движок блога может работать как на пятом, так и на седьмом PHP.
Показать
Возможно, что из-за кривоватых настроек моего сервера Эгея из старого бэкапа сразу работать отказалась (нет баз, не известен пароль к базам и т. д.). Это было, вероятно, тяжкое наследие старой системы, я обновлял её через aptitude dist-upgrade.
Пришлось бэкапить MySQL-базы с наполнением блога, затем переустанавливать заново движок (скачал релиз 2.7, версию 3249), инсталлятор создал новые базы, поверх которых я вытащил из бэкапа мои блоговые статьи, комменты и прочее. Причём начальные таблицы в базе создаются с префиксом ’e2Blog’, нужно не забыть поменять на используемый мной префикс в файле system/defaut/config.php, строка
$_config['db_table_prefix'] = 'e2Blog';
Да, и user/settings.json желательно привести к такому виду
{ "db": {"server": "<узел>","user_name": "<имя>","passw": "<пароль>","name": "<база>"}, "timezone": {"offset": 10800,"is_dst": false}, "template": "plain", "language": "ru", "appearance": {"notes_per_page": 10}, "comments": {"default_on": true}, "site_title": "Блог ни о чём", "description": "Мысли, факты, цитаты, заметки.", "author": "Павел Гладилов", "user": {"email": "pavel@gladilov.org.ru"}, "notifications": {"new_comments": true} }
Затем выяснилось, что вместо статей открывается страница с ошибкой
Fatal error: Uncaught Error: Call to undefined function dl() in <файл> line <строка>
Пришлось погружать свои ручки в код движка... В результате просмотра кода было найдено решение — замена части кода в ядре движка system/core.php с
if (!extension_loaded('gd')) { if (!dl('gd.so')) { header('Content-type: image/gif'); return false; } }
на
if (!extension_loaded('gd')) { header('Content-type: image/gif'); return false; }
После этого блог заработал, но теперь пропала возможность быстрого сохранения в редакторе по комбинации клавиш Ctrl + Enter (в старых версиях — Ctrl + S) и при попытке движка сформировать или вызвать на редактирование страницу, на которой есть ссылки на несуществующие файлы картинок — открывалась страница с серым фоном и маленьким пустым квадратом посередине. Причём, если такая «кривая» страница открылась — то даже при устранении всех причин всё равно отображается ошибочная страница. Я думаю (но не проверял), что это связано с хранением сгенереных страниц (или их частей) в user/caches/*.psa. Возможно, мне повезло, что со временем истёк срок хранения кешированных «кривых» страниц, и они стали отображаться нормально. Или возникновение такой проблемы как-то связано с разными форматами таблиц старой и новой версии движка. А вообще эту проблему я обошёл с помощью прямой правки заметок в записях таблицы <префикс>Notes, затем там-же стал выставлять атрибут ’Null’ в поле «Uploads» и использовать полный путь к файлам картинок от корня.
В файле user/extras/header-pre.tmpl.php прописываю заголовок для блога — кнопки и .
В файле themes/<имя используемой темы>/templates/layout.tmpl.php рисую верхнее меню:
<?php if ($content['class'] == 'frontpage') { ?> <div id="e2-blog-description"><?= $content['blog']['description'] ?></div> <?php } ?> <br /> <table width="650"> <tbody> <tr> <td><a href="<ссылка1>"><img src="<картинка1>" style="vertical-align:middle!important" />& <пункт1></a></td> <td width="15"></td> <td><a href="<ссылка2>"><img src="<картинка2>" style="vertical-align:middle!important" />& <пункт2></a></td> <td width="15"></td> ... <td><a href="<ссылкаN>"><img src="<картинкаN>" style="vertical-align:middle!important" />& <пунктN></a></td> </tr> </tbody> </table> </div> </div>
Ну и тоже выплывшую при правке system/core.php проблему с невозможностью определить новую картинку для юзера решаю изменением в этом же файле определений DEFAULT_USERPIC_FILENAME и DEFAULT_USERPIC_PLACEHOLDER_FILENAME на путь к моей картинке.
define('DEFAULT_USERPIC_FILENAME','<soul.png>'); define('DEFAULT_USERPIC_PLACEHOLDER_FILENAME','<soul.png>');
Теперь мой блог выглядит приблизительно так:
Больничные записки, часть 10
Перед завтраком сделали рентгеновские снимки моих лёгких, надеюсь — это уже окончательное исследование перед выпиской.
Показать
Кстати, рентген-кабинет (номер 2), порадовал чистотой, светом, современной техникой, хотя не так давно тут был ремонт — местные IT-шники проморгали севшую батарейку в компе, вызывали мастера «из-за океанов»...
По сравнению с днём приёма в больницу — реально небо и земля. Тогда работал только один из пяти кабинетов, тёмный, с первого раза боковая проекция не получилась, пришлось переснимать, рентгенолог злая, грубит, ждал порядка часа в коридоре, с температурой, хорошо хоть стоять не пришлось, кресла были...
Сатурация крови кислородом 98%, норма.
Когда узнал, что меня выписывают — давление подскочило до 150-ти, врач даже каптоприл принесла, под язык.
Перед обедом отблагодарил врача, выразил восхищение её выдержкой и профессионализмом. Ну и упаковку хорошего чая плюс коробку конфет подарил, как же без этого.
Лежу на койке, жду выписки, пообедал, теперь заняться нечем... Побрился, собрал вещи, делать решительно нечего.
Еду в такси домой, до полдника не дождался )))
Огромное спасибо всем, кто меня навещал и волновался за меня! В первую очередь — моей любимой жене, тёще, тестю, моей маме и племяннице. Всем друзьям, сослуживцам, тем, кто звонил, интересовался о здоровье, ну и просто лечил и обслуживал меня — врачам, медперсоналу, работникам скорой помощи, уборщицам и всем-всем-всем!
Молочная каша с макаронами, хлеб, масло, сыр, чай.
Рассольник, тушёная капуста с фасолью и мясом, хлеб, компот.
Больничные записки, часть 9
Вчера ночью у нас умер пациент (не из нашей палаты, у нас всех пока выписывают), уже третий за то время, что я лежу в отделении пульмонологии.
Умер в туалете, тромб оторвался. Потом его вещи упаковали в мешок и унесли. Так освободилось ещё одно койко-место в соседней палате...
Sit tibi terra levis.
Показать
Хорошо, что я отказался от уколов гепарина, разжижающего кровь, очень велик риск, что какая-нибудь бляшка в сосуде оторвётся и закупорит его. Купил себе таблетки Кардиомагнила (не реклама) и пью их после еды.
Сатурация крови кислородом уже 97℅, в пределах нормы.
К нам в палату подселили ещё одного пациента, койку поставили в проходе между кроватями. Опять недостаток свободного места, как в камере...
При номинальной ёмкости в 45 коек к вечеру зарегано 78 человек, и ночью пропишут ещё двоих.
Манная каша, вареное яйцо, хлеб, масло, сыр, чай.
Борщ, перловая каша с мясом, салат с солёными огурцами, хлеб, компот.
Творог со сметаной и сахаром.
Рисовая каша, вареная рыба, капустнвй салат, хлеб.
Больничные записки, часть 8
Сегодня с утра «великая сушь». Вода из кранов не идёт, причём ни горячая, ни холодная... Медсестра на посту сказала, что «вчера предупреждали об отсутствии воды», но у нас в палате никто почему-то не был в курсе.
Воду дали только после обеда.
Показать
Народу после ужина (его дают в пять вечера) делать нечего, палаты убирают часам к восьми вечера (а потом ещё кварцевание), сидим в коридоре, читаем, звоним родным или просто разговариваем...
Вчера и сегодня у меня радость — меня навещала жена, принесла кучу яблок, апельсинов и прочих вкусностей! Спасибо ей большое!
Овсяная каша, хлеб, сыр, масло. Чая не было, т. к. нет воды.
Капустный суп, перловая каша, салат из капусты, хлеб, компот.
Кефир, печенье.
Макароны с вареной колбасой, хлеб.
Больничные записки, часть 7
Сегодня перед обедом решил не дожидаться медсестры (они очень заняты, больных куча), а самому достать иглу из вены, немного протуканил и залил своей венозной кровью кровать (((
Показать
Каждое утро вижу перед процедурным кабинетом толпы людей, которым ставят капельницы, затем они одеваются и уходят... Видимо, больница всех не может принять, некоторые болеют «на дому»...
В пульмонологическом отделении реально все места заняты, даже в коридорах больные лежат.
Манная каша, хлеб, масло, сыр, чай, яблоко.
Рассольник, тушёная капуста, венигрет, хлеб, компот.
Яблочный сок, печенье.
Пшонная каша, вареная рыба, салат из капусты, хлеб.