PostgreSQL coub express.js freeware git jquery laravel links linux macos mysql node.js php powershell python ubuntu vim virtualbox анекдот блог игры интересно стихи цитаты

Мне это понадобилось для автоматического подъема сервиса после внештатной перезагрузки сервера.
Как всегда, все просто:
su USER -c '/home/USER/folder/script.sh'
Собственно man su рассказывает всё в примерах.
su man -c catman
# Runs the command catman as user man.  You will be asked for man's password unless your real UID is 0.

su man -c 'catman /usr/share/man /usr/local/man'
# Same as above, but the target command consists of more than a single word and hence is quoted for use 
# with the -c option being passed to the shell.  (Most shells expect the argument to -c to be a single word).

su -l foo
# Simulate a login for user foo.

su - foo
# Same as above.


Наконец это случилось и со мной. Я умудрился забыть пароль от ноута.
Слава зайцам восстановить доступ в убунте довольно просто. Я раза с третьего нагуглил нормальное решение.
На всякий случай здесь тоже напишу.
  • При загрузке системы удерживая Shift попадаем в меню Grub, из него входим в режим восстановления (он же "recovery mode", через "доп параметры" в 12.10 на других могут быть различия)
  • Далее при загрузке появится меню режима восстановления, в нем выбираем строку root (в 12.10 "root - Drop to root shell prompt")
  • Откроется рутовая консоль, теперь чтобы изменить пароль надо перемонтировать файловую систему для записи, выполняем команду
    mount -rw -o remount /
  • Если забыли ещё и логин то можно выполнить
    cat /etc/passwd
    В появившемся выводе поискать знакомые имена пользователей :)
  • Теперь собственно меняем пароль
    passwd userName
    Где UserName - логин пользователя, для которого меняется пароль.
  • Теперь перезагружаемся
    shutdown -r now
  • Profit!




Очень удобная фишка скрина. Скрин вообще здорово упрощает жизнь двуногим. Стоит освоить, тем более что осваивать совсем не много. Если диагональ экрана позволяет можно одновременно смотреть несколько tail-ов логов и чего-нибудь ещё править, выкатывать тут же и т.п. Остается только снять шляпу перед разработчиками этой замечательной штуки.

Может быть кому-то будет полезен мой набор шоткатов, не идеально (как и все в этом мире), но мне хватает:

Ctrl+a - c - создаст новую "вкладку", ещё один терминал
Ctrl+a - n - переход к следующей вкладке
Ctrl+a - 1..0 - переход к вкладке по её номеру, т.е. если я хочу перейти ко второй вкладке то я должен выполнить Ctrl+a - 2
Clrl+a - a - переход к предыдущей открытой вкладке, то есть вы в пятой а предыдущая была вторая, так можно быстро перейти без ввода номера вкладки
Ctrl+a - " - выбор активного терминала для текушей "вкладки" (двойная кавычка через шифт)
Ctrl+a - Shift+a - переименование текущей вкладки, бывает удобно именовать вкладки
Ctrl+a - k - "убить" текущую вкладку, в случае если по каким-то причинам сеанс завис или сломался вывод например
Ctrl+d - это стандартный выход из сеанса, "вкладка" скрина тоже будет закрыта
Ctrl+a - ? - шпаргалка по хоткеям

Ctrl+a - Esc - перемещение по выводу screen, оно же режим копирования, скроллим вверх и вниз стрелками или PgUp/PgDn
В режиме копирования/скроллинга:
q - выход в нормальный режим
0 - переход в начало строки
$ - переход в конец строки
Ctrl+b - на страницу вверх
Ctrl+d - на страницу вниз
Space - первое нажатие - начало выделения, второе нажатие после перемещения скопирует выделенное в буфер обмена screen
Ctrl+] - вставить содержимое буфера screen
Копирование происходит в некий "внутренний" буфер screen, а не в глобальный клипборд вашей OS. Если у вас macos или linux, то есть варианты.

Разделения экрана (из видео)
Ctrl+a - Shift+s - разделяем по горизонтали
Ctrl+a - | - разделяем по вертикали (пайп вводится с шифтом конечно, посмотрите на свою клавиатуру)
Ctrl+a - Shift+x - удалить текущее разделение (ту зону, в которой сейчас находится курсор)
Ctrl+a - Tab - перейти к следующей области разделения
С этими функциями нужно поэкспериментировать чтобы до конца понять принцип действия.


Ставим скрин (если вдруг его нет):
sudo apt-get install screen

Запускаем screen:
tatuin@luke# screen

Выходим из screen, но оставляем его в процессах, чтобы при следующем заходе на сервер снова подключиться к нему (это по-модному называется detach):
Ctrl+a - d

Подключаемся к оставленному включенным на сервере screen:
tatuin@luke# screen -x

Уже этого небольшого набора мне хватает чтобы полностью отказаться от вкладок терминала с разными переключениями от системы к системе, если они вообще предусмотрены в клиенте :)
Если знаете ещё что-то полезное - пишите в комментариях - я дополню заметку.

P.S.: ещё хорошо бы для удобства немного донастроить скрин, чтобы показывать вкладки, для этого нужно добавить в файл ~/.screenrc следующие настройки:
startup_message off
caption always
caption string "%{kw}%-w%{wr}%n %t%{-}%+w"
defutf8 on
defscrollback 5000
Все пока. Настройки легко гуглятся, как обычно :) Большая дока есть например тут, надеюсь будет живо.


Спрайт (в вебмастерской терминологии) есть фиговина призванная уменьшить количество запросов к серверу путем аккамулирования в себе кучи картинок которые используются в верстке. При помощи "хитрых" приемов верстки в нужном месте появляется нужный кусочек изображения из спрайта и выглядит как полагается, но при этом на 100 показанных картинок (например) реально у сервера запрашивается только одна - спрайт который всю эту мелочевку содержит. Как ими правильно пользоваться, как верстать и как не злоупотреблять ими - читайте у настоящих Верстальщиков. "Я не настоящий сварщик" ©

Я тут хочу написать о другом. Допустим есть у нас NN картинок для спрайта. Как спрайт сделать. Ну как, берём открываем там фотошоооп или гимп или ещё какой-нибудь графический редактор и начинаем все засовывать туда и записывать координаты где чего лежит. Теоретически все так и должно быть, профессионалы я думаю так примерно и делают. Я не профессионал-верстальщик и вообще не верстальщик, но зато я большой лентяй. Поэтому рассмотрим лентяйский пример ниже :)

Вообще-то для этой цели есть ещё куча онлайн генераторов спрайтов, но все что я нашел мне не понравилось, а то что понравилось - просило денег. Они легко гуглятся - решайте сами как быть.

В общем суть примера. Есть NN картинок одинакового разрешения и типа. У меня это было 4 png-шки 128x128. Когда я поставил и открыл Gimp мне сделалось нехорошо. Опять надо все это вспоминать, считать, двигать подгонять.. Пошел гуглить на предмет того как бы это в гимпе сделать автоматически а нагуглил вот что. Есть консольная утилитка convert, часть пакета imagemagick, я даже когда-то давно ей пользовался но забыл уже про это. Она замечательно с этой задачей справляется.

ставим imagemagick
sudo apt-get install imagemagick
это у нас ман по конверту, ага
man convert
идем в папку с файлами из которых будем лепить спрайт
cd 4sprite-test/
ls
facebook.png  github.png  google.png  twitter.png
теперь берем и все эти файлы склеиваем вот так
convert *.png +append sp-big.png
ls
facebook.png  github.png  google.png  sp-big.png  twitter.png
если надо ещё и изменить размер исходных файлов то делаем так
convert *.png -resize 64x64 +append sp-med.png
Думаю даже не надо пояснять что к чему, все понятно из ключей к конверту. Единственное что в примере под маску попадают все файлы *.png в папке. И если оттуда не убрать сгенеренный спрайт то при повторном запуске в новый созданный спрайт он попадет тоже. Повнимательнее с рекурсией и маской:)

з.ы. Ещё стоит помнить что конверт умный, по расширению результирующего файла определяет результирующий тип файла, соот-но если вы например из png склеите jpg то логично потеряете прозрачность.


Это полная ерунда понятное дело, но я забываю постоянно. Поэтому законспектирую.
# для файла совсем просто
md5sum file.txt

# для строки чуть замороченнее
echo -n 'string ololo jj' | md5sum
Чтобы понять почему так и что за ключи смотрим man md5sum и man echo.


aghr