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

Не знаю как так.. Вообще последние версии чем дальше тем больше расстраивают. То тут то там отваливаются всякие примитивные вещи. Вот в новой сборке какого-то рожна отвалился свич включения-выключения тачпада. Лечится это например таким способом:
touchpad.sh
synclient TouchpadOff=$(synclient -l | grep -i -c 'touchpadoff.*=.*0')
if [ $(synclient -l | grep "TouchpadOff" | grep -Eo "[0-1]") = 0 ];
then
  notify-send -t 5000 "Touchpad is enabled now" -i input-touchpad-symbolic;
else
  notify-send -t 5000 "Touchpad is disabled now" -i touchpad-disabled-symbolic;
fi
Дальше прописываем вызов этого чуда в глобальные хоткеи и на этом всё.


Рвется ssh соединение? Лечится так:
sudo vim /etc/ssh/sshd_config
# добавляем строки
ClientAliveInterval 30
ClientAliveCountMax 2
Здесь написано что раз в 30 секунд будет отправлен "пустой" пакет для того чтобы удерживать живым соединение.
Теперь тестируем конфиг
sudo /usr/sbin/sshd -t
Ели все в порядке, то ошибок тест не покажет.
Теперь перезапускаем сервис и на этом всё.
sudo service ssh restart

Со стороны клиента удержания коннекта можно добиться добавив строки
Host *
ServerAliveInterval 45
В файл конфигурации ~/.ssh/config


Задача: реализовать функцию копирования в буфер обмена ссылки на опубликованный на Я.Диске файл.
Вообще в природе есть готовые решения, но меня они как-то не впечатлили.
Будем пользоваться
  1. yandex-disk - Собственно сам консольный клиент Yandex.Disk
  2. xclip - утилитка для копирования всякого в буфер обмена
  3. notify-send - утилита для отправки оповещений на уровне оконного менеджера (здесь xfce)
Ставим клиент Я.Диск-а, ставим xclip из репозитория. Дальше открываем Thunar -> Edit -> Configure custom actions..
Добавляем новое действие. Вот такой командой пользуемся для публикации выбранного файла, копирования ссылки в буфер и отправки нотиса о завершении процедуры
mm=`yandex-disk publish %f`;echo -n $mm | xclip -sel clip;notify-send $mm
Выглядеть новая команда будет примерно так (иконку можно взять тут).


Для быстрого постинга скриншотов, думаю вполне подойдет Shutter (ставится из репозиториев). Его можно настроить для сохранения скриншотов сразу в папке Я.Диск-а, настроить качество и формат скриншотов. В нем же есть небольшой графический редактор который позволяет кропать изображения, рисовать рамки-стрелки и т.д. Правда чтобы активировать редактор в Shutter нужно поставить ещё кое-что (по состоянию на сегодня это всё ещё требуется, странно что не ставится всё сразу).
sudo apt-get install libgoo-canvas-perl gnome-web-photo
Как установить Shutter дефолтным инструментом в XFCE можно почитать например тут. Кажется это всё. Закончили упражнение.


Для того, чтобы не ползать править постоянно /etc/hosts при каждом заведении нового проекта на локалке хорошо бы заставить машину ломится по определенному домену на локальную машину всегда. Я как-то уже писал на эту тему, но решение там мягко говоря не самое простое. Я тут и там слышал про dnsmasq но как-то все не доходили руки разобраться. В общем, это совсем-совсем просто.
  1. sudo apt-get install dnsmasq (ну или brew install dnsmasq, кстати с brew была какая-то проблема небольшая, сейчас не вспомню на ходу)
  2. Идем открываем редактором файл конфигурации /etc/dnsmasq.conf (внутри конфига все расписано, но все опции закоменчены; в случае с brew конфиг лежит /usr/local/etc/dnsmasq.conf)
  3. Добавляем (или ищем и раскоментируем+правим то что уже есть в конфиге) две строки
    address=/.dev/127.0.0.1   # прибиваем гвоздями домен к ip
    listen-address=127.0.0.1 # слушать будем на этом ип
    
    Создаем папку (если нет)
    sudo mkdir /etc/resolver
    
    Создаем такой файлик под зону
    sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/dev'
    
    Теперь все хосты вида *.dev будут завернуты на 127.0.0.1
    Любопытные граждане гуглят и читают комментарии в конфиг файле.
  4. Последний штрих, идем в свойства текущего сетевого соединения и в его свойствах указываем дополнительный DNS как свой локальный 127.0.0.1 (в формах настройки есть разница, но я думаю это просто и пояснения не нужны)
  5. И совсем последний штрих - перезапускаем dnsmasq
    sudo service dnsmasq restart
    
    Как это делается на маке я не помню, нужно поглядеть brew info dnsmasq
Вот собственно и все. Теперь /etc/hosts можно оставить в покое и прописывать везде локальные хосты в домене .dev
Жаль я забыл что у меня там с brew сломалось, но фикс нагуглился минут за 20, ничего серьезного.

P.S.:

А если ещё в nginx добавить что-то вида
server {

  server_name ~^(.*)\.my\.dev$;
  set $projectFolder $1;

  root /home/luke/projects/php/$projectFolder/public;
  index index.php;
  
  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php$ {
    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}
то ещё и в конфиги сервера можно будет ползать значительно реже.
В этом примере будет достаточно просто размещать проекты на диске вот так
/home/luke/projects/php/project-one/public -> http://project-one.my.dev
/home/luke/projects/php/project-two/public -> http://project-two.my.dev
/home/luke/projects/php/project-three/public -> http://project-three.my.dev
/home/luke/projects/php/project-four/public -> http://project-four.my.dev


На самом деле эта заметка почти никакого отношения к node.js не имеет, сам по себе такой перезапуск может быть чего угодно и вообще есть другие варианты, но я как совсем ленивый гражданин не мог не воспользоваться такой халявой.
Суть такая: есть приложение которое должно автоматом взлетать после перезагрузки и поскольку в некоторых случаях (весьма неприятных) проконтролировать перезагрузку невозможно, надо прописать это приложение где-то на автозапуск. Использовать для этой цели (оказывается!) можно тот самый crontab. Я вожусь с линуксом уже лет 6-7 и понятия не имел о такой замечательной возможности. Есть два момента
  1. Нужно выбрать cron того пользователя от которого должно заработать ваше приложение
  2. Нужно воспользоваться простой как двери в милиции инструкцией @reboot
Итак, идем редактировать crontab для выбраннорого пользователя так
crontab -e -u user_login
Теперь добавляем наше распоряжение на действия после перезагрузки, например так
@reboot sleep 20; /home/user_login/restart-app.sh
В примере через 20 секунд после перезагрузки будет запущен выбранный скрипт. И вся любовь. Задержка взята по причине того, что какие-то сервисы у меня не стартовали до запуска искомого приложения и оно валилось не находя нужной для себя фигни. С такой задержкой все взлетает на ура.


aghr