понеділок, 1 липня 2019 р.

Игры на линухе?

Здравствуйте, похоже немножко заигрался и, соответсвенно, ничего не писал в этот блог. Зато теперь есть чем поделиться. До сих пор многие говорят, что на линуксах не наиграешься, но это не совсем правда (или совсем не правда). Были простенькие нативные игры еще до популяризации Steam, а также некоторые кросс-платформенные, к примеру игра UrbanTerror на движке Quake 3 является для меня одной из лучших стрелялок вообще. И конечно же многие виндузятные игры можно было запустить через Wine. И все же, еще 10 лет назад трудно было удовлетворить свое желание играться на линуксах и, поэтому, утверждение "линукс не для игр" было вполне справедливо. Но Steam приятно удивил и заставил меня изменить мое отношение к нему: на данный момент у меня больше сотни игр в стиме, которые работают на моей Ubuntu 16.04. Некоторые популярные игры даже бесплатные, например Dota 2. А другие таки надо будет покупать. К счастью, в Steam постоянно есть какие-то распродажи. К примеру, мне удалось купить всю коллекцию Counter-Strike всего за пару баксов. Также Humble Bundle помогает в этом. И да, Я начал покупать игры - как говорится, люди голосуют рублем. Соответсвенно, чем больше будут покупать игры, которые сделаны не только под винду, тем охотнее компании и отдельные разработчики будут пытаться сделать эти игры рабочими и на других платформах. Мало того, Steam разрабатывает систему Proton, которая позволяет запускать виндузятные игры на линуксе. И тогда Я решил, что буду покупать и виндузятные игры, если выпадет хорошая скидка, естественно. Некоторые старые игры приобретенные в стиме запускаются через DosBox и работают отлично, например Master of Orion 1 и 2. Некоторые через этот Proton - Splinter Cell, Sacred, Mirrors Edge. А вот есть некоторые старые игры, которые к сожалению, никак не хотят работать - Fallout 1, Disciples 1 и 2. Также имеются некоторые баги в некоторых играх, и может быть что их нет под виндой, но наиболее популярные игры обычно ничем не отличаются по играбельности на какой бы платформе они ни были. Возможно, в будущем все это исправится, или же мне пора поставить Ubuntu 18.04 и прикупить видеокарту, пока что играю без видеокарты. И следующий пост в блоге будет о моем выборе видеокарты, покупке и как она будет работать. Тем не менее, спектр рабочих игр довольно большой и может удовлетворить многих игроков, тем более, что очень часто люди играют постоянно всего лишь несколько игр из своего списка.
В общем, Я рад, что происходят такие улучшения и агатирую поддержать рублем тех, кто делает игры на все платформы. Также, неплохо было бы и донатить иногда в какие-то опенсорс проэкты, это тоже помогает, тем более что оно вам и воздастся потом в виде чего-то бесплатного и качественного (опенсорс обычно намного качественней закрытого софта). А пока что все, ушел играться :)

понеділок, 14 листопада 2016 р.

Cisco Webex как приложение для Google Chrome

Прошло полгода с момента моей публикации о том как настроить Cisco Webex на 64-битную Ubuntu - http://nixtravelling.blogspot.com/2016/05/cisco-webex-linux-64-bit.html, и как-то даже неожиданно (по крайней мере для меня) выходит приложение Cisco Webex для браузера Google Chrome. В поиске расширений (Extensions) нужно выбрать Cisco Webex из списка приложений (Apps), а не из расширений. И оно работает! Всё работает - даже видеокамера. Для последующих запусков этого приложения, нужно зайти в браузере в настройки самого приложения и добавить ярлык на рабочий стол. Если же у вас нет рабочего стола (окружения рабочего стола), то конечно же, тот ярлык вы запустить не сможете. Но, открыв созданный файл (что-то вроде ~/Desktop/chrome-fcaampjejlfaadkgdacpfhheknndlcjl-Default.desktop):

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Terminal=false
Type=Application
Name=Cisco WebEx
Exec=/opt/google/chrome/google-chrome --profile-directory=Default --app-id=fcaampjejlfaadkgdacpfhheknndlcjl
Icon=chrome-fcaampjejlfaadkgdacpfhheknndlcjl-Default
StartupWMClass=crx_fcaampjejlfaadkgdacpfhheknndlcjl
Копируем значение аттрибута Exec и вставляем себе в шелл-скрипт. Вот это и будет запускать приложение Cisco Webex.
Вот и всё. Наконец-то, дождались. Ещё осталось дождаться драйверов побольше и игрушек. Удачи.


пʼятницю, 26 серпня 2016 р.

Жизнь в терминале

Продолжая прошлую тему i3wm, ещё раз напомню, что с клавитурой работать быстрее и удобнее, чем с мышкой. Да, мышку всё равно приходиться брать в руки (ютубчики, фейсбучики, пострелять в UrbanTerror и т.д. и т.п.) Ну а всё остальное отлично получается делать с помощью клавиатуры и хороших утилит. Поехали.
Первое, без чего будет тяжело - файловый менеджер. Уже неоднократно упомянутый Midnight Commander чудесно с этим справляется, а также приносит настоящую радость тем, кто ещё помнит Norton и Volkov Commander. Немножко настроить, выучить пару клавиатурных комбинаций - и друзья навеки:

Есть ещё Ranger со своими интересными фичами и vim-like командами, но, как по мне, не то:

Легковесная читалка pdf/djvu - Zathura, тоже с vim-like командами, нравится очень:

Также открыл для себя простой музыкальный плеер с встроенным навигатором по файловой системе, Cmus:

Даже погуглить иногда спокойно можно с текстовым браузером w3m или elinks. Больше нравится w3m, вот как выглядит стартова страница гугла в нём:

А ещё проще можно сделать поиск с помощью утилиты surfraw, к примеру выполнив команду:
surfraw google nixtravelling

сразу получим страницу выдачи гугл:

Кстати, w3m тоже имеет много vim-like команд и комбинаций клавиш. Как видим, от изучения редактора vim одни плюсы.

Переходя теперь больше к i3wm, а значит не имея DE и привыкая делать всё с помощью терминала, нам необходимо решить ещё пару проблем. Первое - ассоциации программ по-умолчанию с типами файлов. Узнать тип (mime) файла можно с помощью команды:
xdg-mime query filetype <path_to_file>

А задать программу по умолчанию командой:
xdg-mime default <program>.desktop <mimetype>

Открыть же программой по умолчанию некий файл можно командой xdg-open (ну или уже просто ентером в файловом менеджере). Пример:
$ xdg-mime query filetype ~/Downloads/Coroutines.pdf
application/pdf
$ xdg-mime default zathura.desktop application/pdf

Следующая проблема - как монтировать/отмонтировать флешку с терминала? Конечно же, использовать команду mount/umount. Для монтирования Я себе даже скриптик накидал, ибо часто приходится вводить дополнительные опции:
#!/bin/bash

function Mount_USB()
{
    cmd="sudo mount -ouser,uid=1000,gid=1000,umask=0000 $1 $2"
    echo "$cmd"
    $cmd
}

usb_device=$1
directory=$2
if [ -z $1 ] || [ -z $2 ]; then
    echo "USAGE: mount_usb.sh <usb_device> <directory>"
    exit 1
fi
if [ -d $directory ]; then
    Mount_USB $usb_device $directory
else
    sudo mkdir $directory
    Mount_USB $usb_device $directory
fi

Здесь gid, uid равняются 1000, это идентификатор группы и пользователя меня. Для себя вы можете узнать выполнив команду id. Отмонтировать же флешку можно как по точке монтирования, так и по пути устройства флешки. Я выбираю второе. Думаю, если Вы работаете ежедневно в терминале, то с флешками проблем никак не будет. Ну и если хочется выглядеть полностью как задрот, можно ещё себе поставить пакет bsdgames - сборник классических игр в текстовом режиме, а некоторые в полутекстовом (скорее всего с библиотекой curses):

Да, это тетрис! А ещё есть даже текстовая игра MMORPG! И мало кто поймёт на работе, что вы играетесь, а не работаете :)
Чтобы в неё играть, даже не надо ничего устанавливать, просто подключаетесь через telnet:
telnet www.ateraan.com 4002

На этом всё. Возможно, по i3wm продолжение всё ещё следует...

пʼятницю, 12 серпня 2016 р.

i3wm. Впечатления и настройка

Вот уже несколько месяцев прошло как Я перешел на "оконный менеджер" вместо "окружения рабочего стола". Более техническую и точную разницу между этими двумя понятиями можете нагуглить. С точки зрения обычного пользователя (по крайней мере с того, что мне почувствовалось) - WM (оконный менеджер) лишь управляет окнами, а значит:
1) меньше жрет ресурсов;
2) основная работа будет с клавиатурой, мышкой лишь в браузере тыкать и в Gimp;
3) настройки в большей части делать нужно через терминал и конфигурационные файлы, никакой общей панели управления, хотя это сделать можно.
Для обычного пользователя это всё может показаться сложным и ненужным - ну и что, что жрет меньше ресурсов, ведь у меня 100500 ГБ оперативки и чуть меньше ядер процессора. А вот мой старый ноутбук получил вторую жизнь, голая система (Ubuntu 16.04) без DE съедает лишь чуть более чем 200 МБ оперативки. Ну и тайловый оконный менеджер i3 (i3wm - improved windows manager), которому посвящен этот пост, предоставляет ещё одну чудесную возможность - настройка нескольких мониторов с разнымы разрешениями реально проще пареной репы.
Итак, знакомство можете начинать с официального сайта - https://i3wm.org/docs/userguide.html. Для начала можно поставить его дополнительно к обычному DE и выбирать сессию i3 при логине. А когда хватит сил пересесть полностью, можно поставить голый дистрибутив линукса без DE и тогда сразу ставить этот WM. Перед загрузкой сессии i3 обязательно выпишите себе пару комбинаций клавиш и команд, ибо так и застрянете с пустым чёрным экраном и будете делать хард ресет :)
При первом запуске i3 спросит клавишу-модификатор, Я себе выбрал клавишу "win" - хоть какая-то польза и не будет перебивать другие комбинации. Теперь Вы можете запустить терминал комбинацией "win+Enter", а если есть терминал - есть всё.
Кстати, насчёт эмулятора терминала, мой выбор в i3 - urxvt, а для полного счастья нужно ставить пакет rxvt-unicode-256color. Он не такой функциональный как, например, стандартный гномовский, зато быстрее и красиво выглядит в тайловых WM. Все настройки urxvt правите в ~/.Xresources, после редактирования файла - выполнить команду:

xrdb ~/.Xresources

Следующий важный для меня шаг - настройка статусной строки, особенно хотелось иметь рабочие иконки Dropbox и Skype. Конечно же, хотелось настроить имеющуюся с коробки строку статуса - i3bar, хоть она немного багнутая. Если не понравится, ставьте что-либо другое, i3wm не будет обижаться.

Как работает i3bar: утилита i3status читает конфиг файл /etc/i3status.conf и скармливает полученные статусы в виде строки утилите i3bar. Конечно же, адекватные статусы хочется получать за приемлемое время, не более секунды. Поэтому в конфиг файле  в секции general, опции interval нужно задать значение 1. Ещё быстрее нет смысла, только лишняя нагрузка процессора. Но из-за того, что эти статусы то ли стают в очередь, то ли ещё чего, а мой старый нетбук до того тормозной, что не успевал каждую секунду обрабатывать всё и обрабатывал статус где-то за 1,1 секунды, они отображались не вовремя. Через час работы разница во времени (между настоящим и тем, что показывал в строке статуса) ставала очень велика, около 15-20 минут. Поэтому нужно было придумать что-то другое. К счастью, i3 позволяет написать свой скрипт для получения статусов и использовать его совместно со встроенным, либо даже без встроенного. Итак, первая версия скрипта:
#!/bin/sh
# shell script to prepend i3status with more stuff

i3status | while :
do
    read line
    datetime = $(date +"%Y-%m-%d %H:%M:%S")
    echo "$datetime | $line" || exit 1
done
Принцип работы скрипта простой: читаем i3status, достаём то, чего нам не хватает, и выводим эту сроку далее. В таком варианте пропадут все цвета, поскольку цвета кодируются специальными последовательностями символов и съедаются оболочкой. Но при желании можно дописать свои функции для обертки разных параметров цветами.
Чтобы этот скрипт запускался вместо стандартного i3status, нужно в ~/.config/i3/config править секцию bar:
bar {                                                                           
        status_command ~/i3status.sh                                            
        tray_output primary                                                     
        position top                                                            
}
В опции status_command нужно указать полный путь к своему скрипту (ну или поместить его по одному из путей в переменной PATH).
Следующее, что мне страшно нехватало -  отображение раскладки, языка. Опять-таки, i3wm не для новичков, придется потратить много времени и нервов. Но настроив единожды, можно легко переносить свои настройки на любую другую машину. Также можно заливать конфигурационные файлы и автоматические скрипты на GitHub и выполнять любую настройку с нуля за считанные минуты. Для управления раскладками (чтобы в каждом приложении была своя раскладка), нужно поставить kbdd. Сами же раскладки, метод переключения и  запуск kbdd настраиваем в ~/.xinitrc:
setxkbmap "us,ua,ru" ",winkeys" "grp:shift_caps_toggle"
kbdd
exec i3
Что это всё значит:
1) 3 раскладки - us, ua, ru, переключение комбинациией shift+caps lock (по аналогии можете себе настраивать всё, что угодно)
2) запуск kbdd после установления раскладок
3) запуск сесии i3

При этом это всё запустится при выполнении команды "startx". А startx придется выполнять, ибо компьютер будет грузиться в режиме без иксов и вместо окошечка с логином будет консоль с логином. Кстати, это тоже надо настроить правильно:
1) нужно поправить конфиг grub
ищем строку

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

и меняем на

GRUB_CMDLINE_LINUX_DEFAULT="text"
после чего обновить груб:

sudo update-grub

2) Для систем, которые используют systemd надо сделать дополнительные настройки:
sudo systemctl enable multi-user.target --force
sudo systemctl set-default multi-user.target
3) сам блокиратор экрана с логином тоже нужен консольный, для этого хорошо подойдет vlock, но надо ставить версию 2.2.2-3, никак не 2.2.2-5 (в этой более новой версии почему-то можно зайти без пароля с другого tty). Ну и потом надо будет сказать своему пакетному менеджеру, чтобы не обновлял vlock. Далее вешаем блокирование экрана на стандартную комбинацию (CTRL+ALT+L), для этого в ~/.config/i3/config добавляем строчку:
bindsym ctrl+Mod1+l exec vlock -an

Теперь надо настроить отображение раскладок в строке статуса, поэтому тот скрипт i3status.sh будет выглядеть примерно так:
#!/bin/sh
# shell script to prepend i3status with more stuff

i3status | while :
do
    read line
    datetime = $(date +"%Y-%m-%d %H:%M:%S")
    layouts=$(setxkbmap -query | awk '/layout/{print $2}')
    current=$(dbus-send --print-reply=literal --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.getCurrentLayout | awk '{ print $2 }')
    index=$(($current+1))
    lang=$(echo $layouts | cut -d, -f$index)
    echo "$lang | $datetime | $line" || exit 1
done
То есть, текущая раскладка будет показана перед датой/временем.

Если же Вы таки решились поставить на ноутбук i3wm, Вам скорее всего захочется в строке статуса отображать уровень заряда батареи и уровень сигнала wifi. Отображение уровня  заряда батареи можно настроить стандартными средствами в файле /etc/i3status.conf (возможно, поменять надо будет индекс  батареи с 0 на 1, или наоборот в зависимости от ноутбука):
battery 1 {
  format = "%status %percentage - %remaining"
  low_threshold = 30
  threshold_type = time
  # toggle actual capacity/design capacity
  #last_full_capacity = true
  hide_seconds = true
  integer_battery_capacity = true
}
Аналогично, возможно надо будет поиграться с индексом звукового устройства для отображения громкости:
volume master {
    format = "♪: %volume"
    format_muted = "♪: muted (%volume)"
    device = "pulse:0"
}
Саму же громкось в данном случае регулирую через программу pavucontrol (если у вас тоже Pulse, то настройки по сути те же). 

Ну а вот уровень сигнала wifi было "достать" не так просто. Лично мне удалось через CLI (Command Line Interface) Network Manager-а. Возможно, найдете лучший способ. Кстати, искать беспроводные сети и подключаться к ним можно через этот же nmcli. Итак, финальная версия скрипта i3status.sh для ноутбука:
#!/bin/sh
# shell script to prepend i3status with more stuff

i3status | while :
do
    read line
    layouts=$(setxkbmap -query | awk '/layout/{print $2}')
    current=$(dbus-send --print-reply=literal --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.getCurrentLayout | awk '{ print $2 }')
    index=$(($current+1))
    lang=$(echo $layouts | cut -d, -f$index)
    wifi=$(nmcli d wifi | grep "^\*" | grep -v "\*.*SSID" | awk '{ print $8 }')
    datetime=$(date +"%Y-%m-%d %H:%M:%S")
    echo "$lang | W: $wifi | $line | $datetime" || exit 1
done
Ах, ну и ещё отключить "клик мышки" на тачпаде, это страшно бесит. Нужно добавить строчку (# - комментарий, не обязательно добавлять, но хорошо проясняет следующую строчку) в файл ~/.config/i3/config:
# Turn off tap click (single finger, two finger, and 3 finger)
exec synclient TapButton1=0 TapButton2=0 TapButton3=0
Иконки. Почему-то именно иконка Dropbox не хочет нормально отображаться в i3bar. Оказывается, нужно запустить dbus перед стартом dropbox, но в какой только скрипт Я не пробовал это засунуть, а Dropbox по-прежнему запускался без иконки. Пока что решил эту проблему тем, что создал скрипт dropbox_fix.sh и прописал такую строчку:
dropbox stop; dbus-launch; dropbox start &
И теперь каждый раз когда вижу, что нет иконки, запускаю этот скрипт. Иногда бывают проблемы с отображением иконок Skype и даже Thunderbird. Это лечится проще - просто перезагрузкой i3 "на месте" (никак не влияет на все запущенные программы), обычно это комбинация mod+shift+r. Да, ещё раз напомню, что багов таких мелких хватает, но плюсов в i3wm Я увидел больше, да и рабочий компьютер у меня не выключается месяцами, а значит "стартовые багофиксы" выполняю очень редко.

Далее, что ещё нужно знать о настройках - в конфиг файле ~/.config/i3/config ваша выбранная клавиша-модификатор будет обозначаться как $mod, клавиша alt обозначается как Mod1, клавиша win - Mod4. Все остальные клавиши таких специальных обозначений не имеют. Настроить несколько мониторов можно в этом же файле используя команду xrandr.
И ещё одна важная вещь - скриншоты тоже надо настроить! Но и это не проблема. Сначала ставим утилиту scrot - легкая, быстрая и конфигурабельная. Обычний снимок (весь экран) вешаю на кнопку PrintScreen, а на Alt+PrintScreen - снимок текущего (активного) окна. Поскольку клавиша Alt сама является модификатором, то самый легкий способ привязать данную комбинацию - это указать альтернативное значение кнопки PrintScreen, то есть - SysRq. Итого в файл ~/.config/i3/config добавляем следующие строчки:


# Take screenshots
bindsym Print exec scrot '%Y-%m-%d_%H:%M:%S.png' -e 'mv $f ~/Pictures/'
bindsym Mod1+Sys_Req exec scrot -u '%Y-%m-%d_%H:%M:%S.png' -e 'mv $f ~/Pictures/'
В результате все скриншоты будут попадать в папку ~/Pictures. При желани можно наконфигурить ещё больше гибкости. Вот пример скриншота с i3wm:



Пока что всё. Если у Вас есть другие предложения по настройке i3wm прошу делиться. Я же по возможности буду редактировать этот пост или напишу новый если наберется много чего нового. Продолжение следует...

понеділок, 30 травня 2016 р.

Многострадальная тема - Cisco Webex на Linux 64-bit

Вот и Я столкнулся с данной проблемой при переходе на 64-битную Ubuntu. В Интернете уже есть множество вопросов, обсуждений и решений. Насколько мне удалось понять - никто делать нормальную поддержку для линуксов не будет, сделали единожды для 32-бит - и хорошо. А что касается решений - большинство из них либо устаревшие, либо очень сложные. В любом случае, универсального решения (да ещё такого, чтобы автоматический скрипт написать) можно не ждать. Придется немного поковырять самостоятельно. Единственное, что Вам нужно 100% - 32-битный браузер и библиотеки. Итак, каркас настройки берем из этой статьи (она тоже устаревшая) - https://habrahabr.ru/post/163771/
Чтоб скачать последнюю 32-битную версию firefox смотрим в этот файл:
http://ftp.mozilla.org/pub/firefox/releases/latest/README.txt
На момент написания этого поста была доступна версия 46.0.1, а формат - tar.bz2 (формат вроде не менялся). Соответственно, для красоты качаем таким образом:


wget -O firefox-46-0-1.tar.bz2 "https://download.mozilla.org/?product=firefox-latest&os=linux&lang=en-US"

Теперь распаковываем в удобную для вас директорию или же, исходя из статьи в ~/32bit/ (tar xzf, а вообще, Вы уже должны уметь работать с архивами). Далее доустанавливаем 32-битные библиотеки, коих в новых версиях убунты уже нет. Поэтому (по крайней мере на Убунте 16.04), ставим так:


sudo apt-get install lib32z1

Профили в браузере создавать не обязательно, да и неудобно будет каждый раз перезапускать браузер или ещё чего (два firefox не могут быть запущены одновременно, даже если один - 32-битный, а второй - 64-битный). Далее нужна действительно Java (JRE) от Oracle, почему-то не удалось завести вебекс с openjdk и всем прилегающим (если у Вас получится - отпишитесь в комментах). Все старые версии доступны лишь с имеющимся аккаунтом в Oracle, а на данній момент существующая 8-ая версия не подходит. К счастью, ещё можно наковырять 7-ую, которая и доступна и подходит - http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html Распаковывайте самостоятельно :)
Теперь почти как в той статье создаем ссылку на плагин (у Вас может несколько отличатся, но Вы же делаете всё сознательно, не так ли?):


cd ~/32bit/firefox/plugins
ln -s ~/32bit/jdk1.7.0_80/jre/lib/i386/libnpjp2.so .

Ну и конечно же скрипт для запуска firefox:


#!/bin/bash
export ENV_HOME=~/32bit
export FIREFOX_HOME=$ENV_HOME/firefox
export MOZ_PLUGIN_PATH=$FIREFOX_HOME/plugins
export JDK_HOME=$ENV_HOME/jdk1.7.0_80
export JAVA_HOME=$JDK_HOME/jre
export PATH=$JAVA_HOME/bin:$JDK_HOME/bin:$PATH
$FIREFOX_HOME/firefox --no-remote

Как и в статье с хабра, делаем исполняемым и будем его запускать:
chmod +x ~/32bit/firefox.sh

Также, там говорится, что в Убунту 14.04 надо будет установить еще libxmu6:i386. Не знаю, как там в 14.04, но в 16.04 этого оказалось недостаточно. Запускаем из консоли firefox, далее тот webex и смотрим в консоль какие валятся ошбики от java. Скорее всего, будет жаловаться на недостающие библиотеки или файлы. Тут уж надо смотреть Вам лично, потому как не обязательно, что у всех будет одинаково. К примеру, у меня жаловался на недостающие файлы:
libgtk-3.so.0, libXtst.so
Какие же пакеты надо установить? Для этого используем команду apt-file find (кстати, apt-file возможно тоже надо установить). Итого:


apt-file find libgtk-3.so.0
libgtk-3-0: /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
libgtk-3-0: /usr/lib/x86_64-linux-gnu/libgtk-3.so.0.1800.9
libgtk-3-0-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/libgtk-3.so.0.1800.9

а значит, надо установить libgtk-3-0:


apt-get install libgtk-3-0

И так проделайте со всеми недостающими файлами. Вроде всё - можно перезагружать браузер и пробовать. Пишите в комментах, если что-то не получается, возможно смогу чем-то помочь (но не обещаю :)) А если же нет - держитесь там, всего доброго! :)

четвер, 28 квітня 2016 р.

Очередная статья о разбивке жесткого диска

21 апреля, как и обещалось, вышла новая Ubuntu 16.04 LTS. Я решил поставить её на рабочем компе в оригинальном виде (с Unity), а на свой нетбук всё так же Xubuntu (фактически та же убунта, но с окружением рабочего стола - XFCE). Ну и конечно же, захотелось переразбить жесткие диски, так как в первый раз Я их разбивал по разных рекомендациях из сети и не имея собственного опыта. Из-за этого имел некоторые проблемы. Итак, давайте коротко пройдёмся по основным пунктам:

/ - корень (root), это должно существовать всегда, как иначе дерево будет без корня?
/home - тут будут храниться домашние каталоги пользователей; поскольку пользователи могут забить дисковое пространство под завязку, это надо закидать на отдельный раздел.
swap - это тоже надо, когда не будет хватать оперативки, своп выручает. Казалось бы, если оперативки на компе много, зачем своп? Только место занимает. Но, поэкспериментировав с компом с 8-ю гигами оперативы, увидел, что без свопа "умирает". Сегодня браузеры уже не те, да и скайп отжирает много. А если ещё какие-то виртуалки крутятся, то вообще беда. В общем, рекомендуемый своп - размер оперативки (по крайне мере, чтобы загнать ноут в спящий режим). Но, когда оперативки будет 16 гб или больше, будет немного жаль столько жесткого диска отдать. Возможно, при таких размерах оперативки и не пользуясь дополнительными режимами остановки ОС, можно своп сделать маленький - до 4 гб. С другой стороны, когда жесткий диск - 500 гб, то не жаль отдать и 16 гб на своп.

Вот для десктопа, в принципе, больше ничего и не нужно, если дать на корневой раздел - 30 гб, то должно хватить с головой. И не надо будет мучиться с LVM или ещё чем-нибудь подобным. Вот так, дешево и сердито, фактически как когда-то делали диски C: и D: для винды :)
Ну и можете смело для всех этих разделов выбирать файловую систему ext4 (возможно, потом появится ещё что-то лучше).
Если же это какой-то сервер или просто удаленная многопользовательская машина, рекомендуется сделать дополнительные разделы:

/tmp - при одновременной работе нескольких пользователей (конечно, смотря что они делают) этот каталог может расти, поэтому его надо забрать с корневого раздела и разместить отдельно.
/var - тут будут складироваться лог-файлы, если это сервер, то логи будут очень большие и расти будут очень быстро, поэтому - на отдельный раздел.
/usr - сюда обычно ставятся программы, большинство из них на серверах обновляются редко, обычно после всех проверок на стабильность, ибо сервер должен быть стабилен. И это рекомендуют даже монтировать в режиме только для чтения, чтобы никто не смог удалить какую-то важную программу. И лишь администратор при необходимости обновлений может перемонтировать в режим для чтения/записи и провести все обновления.
/etc - конфигурации всех и вся. Встречается редко, но видел даже такое, мол дополнительная защита конфигов.
И когда-то выносили /boot в отдельный маленький раздел (были на то свои причины) - этого делать уже не нужно.

Ну вот и всё. Прошу делиться своими мыслями по этому поводу. Конечно, статей и мыслей множество, и всё меняется со временем, поэтому будем пытаться идти в ногу со временем.

понеділок, 22 лютого 2016 р.

Vim kung fu

- Ты хочешь научиться кунг-фу?
- Дааааа!
- Тогда Я и есть твой мастер!

из мультфильма "Панда Кунг-Фу"


Так же, как мастер Шифу и панда По обрели новый опыт и новый взгляд на старые вещи, так и Я путем попыток и ошибок изменил в корне свою работу с Vim. И как обычно, начну с краткой предыстории.
Мой рабочий компьютер обычно остаётся включенным несколько месяцев (рекорд uptime - 112 дней), а значит и всё программы, окна, вкладки остаются на месте. И вот наконец настал тот час, когда у меня в vim открыт большой проект, нужно внести изменения в 6 файлов, чтобы реализовать нужную фичу. При этом надо было выключить компьютер, и Я вспомнил, что в vim есть возможность сохранить сессию (команда mksession). Я сохранил, закрыл, проверил - что-то пошло не так. NERDTree вообще не загрузил дерево каталогов, появилось также дополнительные пустые окна, в общем - хаос и ужас. Конечно же, Я сразу начал искать в сети что да и как. Предлагались разные варианты с дописыванием своих функций в конфиге vim. Но, в ходе поиска Я наткнулся на пост человека по имени Josh Davis http://joshldavis.com/2014/04/05/vim-tab-madness-buffers-vs-tabs/.
И вот тут до меня дошло, а ведь действительно - файлы в vim открываются в буферах, всё остальное - это для удобного размещения на экране. Следуя этой статье, ссылкам в ней и поиска в сети с новым ключевым словом - буфер, Я взялся перенастраивать свой Vim и перепрывыкать к работе с файлами (буквально два дня работы с редактором и всё отлично). Теперь табы Я использую крайне редко, соответственно, удалил плагин NERDTreeTabs, оставил только NERDTree.
Итак, приступим к новой настройке моего (если вы это всё же читате, скорее всего и вашего) любимого текстового редактора.
Порядок действий:

1) установить git, если вдруг ещё не поставлен

2) установить плагин для работы с буферами (и не только), как в блоге того Джоша:

На данном этапе у вас должно получится что-то такое:


А чтобы сделать такое красивое, как у Джоша, надо ещё поработать:
3) скачать шрифты для powerline
git clone https://github.com/powerline/fonts.git ~/.fonts

4) регистрируем шрифты в системе:
fc-cache -vf ~/.fonts/

5) выбираем в настройках терминала нужный шрифт (не все подойдут, но можно смело выбирать "Meslo LG S for Powerline")

6) добавляем строчку в .vimrc:
let g:airline_powerline_fonts = 1
Это заполнит словарь символов новым шрифтом.

И теперь у вас должно получится как-то так:


И ещё для полного счастья взгляните на плагин Tagbar https://github.com/majutsushi/tagbar (не забудьте установить exuberant-ctags перед его использованием).
Конечно же, весь этот процесс можно максимально автоматизировать, для чего можно написать скрипт вроде такого:
#!/bin/bash
# Install Pathogen plugin and runtime manager
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

# Install plugins
git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree
git clone https://github.com/ctrlpvim/ctrlp.vim.git ~/.vim/bundle/ctrlp
git clone https://github.com/vim-airline/vim-airline.git ~/.vim/bundle/airline
git clone https://github.com/vim-airline/vim-airline-themes ~/.vim/bundle/airline-themes
git clone https://github.com/majutsushi/tagbar.git ~/.vim/bundle/tagbar

# Get fonts
git clone https://github.com/powerline/fonts.git ~/.fonts
fc-cache -vf ~/.fonts/

# Get vimrc
curl https://raw.githubusercontent.com/MasterSergius/conf_files/master/.vimrc -o ~/.vimrc

Здесь Я использую Vim Pathogen для управления плагинами, а готовый vimrc качаю из своего репозитория конфигурационных файлов (рекомендую и вам завести свой репозиторий). Единственное, что придётся сделать вручную - это выбрать шрифт в Терминале, но и это можно автоматизировать при желании. К примеру, в xfce сессии все настройки графической среды лежат в домашней директории (на момент создания этого поста - директория .xfce4). Там можно найти конфигурацию терминала в обычном текстовом файле, а значит задать шрифт автоматически довольно легко. Также для продвинутого использования плагинов, написания своих скриптов и т.д. рекомендую книгу The VimL Primer - Edit Like a Pro with Vim Plugins and Scripts by Benjamin Klein.
Не забывайте, что вы можете в комментариях писать свои предложения, делиться вашими настройками, плагинами, мыслями и так далее. Чем больше мы будем расшаривать полезную информацию, тем будет легче её найти другим. А другие тоже чем-то поделятся, а значит все выиграют.
Удачного кодинга с Vim!