Скрипт, вытаскивающий нужные валюты в одну строку:
#!/bin/sh
# Packages xmlstarlet and perl-libwww packages are required
USD_ID=R01235
EURO_ID=R01239
GET http://www.cbr.ru/scripts/XML_daily.asp |
xml sel -t -v '//Valute[@ID="'$USD_ID'"]/Value' -o '$' -nl -t -v '//Valute[@ID="'$EURO_ID'"]/Value' -o '€' |
xargs echo
Сохраняем скрипт в, например, /usr/local/bin/valutes.sh и делаем его запускаемым (chmod +x /usr/local/bin/valutes.sh).
Добавляем вывод на панель через аплет "Команда" (сейчас стоит Mate с русской локалью - в английском, наверное, Command).
По дефолту частота обновления стоит, кажется, одна секунда, что, конечно же, не подходит в данном случае. Поставил 600 секунд.
четверг, 11 января 2018 г.
четверг, 14 декабря 2017 г.
Webex at Arch Linux
How to join the Webex meeting for the Arch Linux 64-bit users
I did it! Installation of 32-bit browser is not required!
1. Uncomment multilib section in /etc/pacman.conf:
2. Install icedtea-web-jre32 and webex-meta from the AUR (I'm using apacman for AUR):[multilib]Include = /etc/pacman.d/mirrorlist
apacman -S icedtea-web-jre32 webex-meta
3. Install some additional packages to have sound works:4. Check sound.properties:pacman -S lib32-libcanberra-pulse lib32-alsa-plugins
5. That's all! You can connect to webex meeting! I checked this with Firefox-57 and with google-chrome. Google-chrome does not open application directly - it downloads file which should be runned with Javaws (which have been installed with the icedtea-web-jre32 package).javax.sound.sampled.Clip=org.classpath.icedtea.pulseaudio.PulseAudioMixerProviderjavax.sound.sampled.Port=org.classpath.icedtea.pulseaudio.PulseAudioMixerProviderjavax.sound.sampled.SourceDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProviderjavax.sound.sampled.TargetDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider#javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider#javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider#javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider#javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider
пятница, 31 марта 2017 г.
Запуск Hiri в Arch Linux через Docker
В виду того, что на новой работе для обмена почтой используется Microsoft Exchange, я настроил в своём Arch почтовик Evolution. Функционально вроде бы всё есть, но до MS Outlook немного не дотягивает.
Решил поискать, какие ещё программы могут работать с MS Exchange из Linux и наткнулся на неизвестную мне ранее Hiri. Судя по скриншотам, может быть чем-то интересным, но под Arch программа не запустилась. Запуск Hiri с env LIBGL_DEBUG=verbose показал, что ей чем-то не нравятся мои версии библиотек Arch.
Так как мне надо было всего лишь "на посмотреть" и как раз недавно ковырял Docker, решил немного попытать Docker на тему запуска GUI приложений. В итоге, можно считать, у меня всё получилось, хотя есть ещё косяк - Hiri не отображает картинки в письмах. Думаю, не хватает какой-то QT-либы в контейнере.
И так, для начала необходимо создать файл Dockerfile в котором пропишем:
Теперь в каталоге с Dockerfile выполняем команду
Контейнер будет создан и сразу запустится Hiri. По выходу из Hiri произвести запуск контейнера можно командой
Чтобы не проделывать самостоятельно работу по созданию контейнера можно сразу скачать и запустить его с docker-hub:
В целом Hiri показалась симпатичной программой, но для начала использования мне не хватило возможности подключить календари Гугл.
Решил поискать, какие ещё программы могут работать с MS Exchange из Linux и наткнулся на неизвестную мне ранее Hiri. Судя по скриншотам, может быть чем-то интересным, но под Arch программа не запустилась. Запуск Hiri с env LIBGL_DEBUG=verbose показал, что ей чем-то не нравятся мои версии библиотек Arch.
Так как мне надо было всего лишь "на посмотреть" и как раз недавно ковырял Docker, решил немного попытать Docker на тему запуска GUI приложений. В итоге, можно считать, у меня всё получилось, хотя есть ещё косяк - Hiri не отображает картинки в письмах. Думаю, не хватает какой-то QT-либы в контейнере.
И так, для начала необходимо создать файл Dockerfile в котором пропишем:
FROM debianНеобходимо заменить таймзону Asia/Novosibirsk на подходящую. Если этого не сделать, календарь будет показывать время неправильно, несмотря на установку таймзоны в профиле.
RUN apt-get update && apt-get install -y sudo wget libxcursor1 libxss1 libasound2 libxcomposite1 libxtst6 libxaw7 libxft2 \
libxcb-keysyms1 \
libxcb-image0 \
libxcb-shm0 \
libxcb-icccm4 \
libxcb-sync1 \
libxcb-xfixes0 \
libxcb-shape0 \
libxcb-randr0 \
libxcb-render-util0 \
libfontconfig1 \
libfreetype6 \
libx11-6 \
libxext6 \
libxfixes3 \
libxi6 \
libxrender1 \
libxcb1 \
libx11-xcb1 \
libxcb-glx0 \
xauth \
libglu1-mesa \
libxkbcommon0 \
libxcb-xkb1 \
libxslt1.1 \
libgstreamer-plugins-base0.10
# Set timezone
RUN echo "Asia/Novosibirsk" > /etc/timezone
# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
mkdir -p /home/user && \
echo "user:x:${uid}:${gid}:User,,,:/home/user:/bin/bash" >> /etc/passwd && \
echo "user:x:${uid}:" >> /etc/group && \
echo "user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/user && \
chmod 0440 /etc/sudoers.d/user && \
chown ${uid}:${gid} -R /home/user
# Install Hiri
RUN wget https://feedback.hiri.com/downloads/Hiri.tar.gz -O /tmp/Hiri.tar.gz --progress=dot:giga && \
cd /opt/ && \
tar oxf /tmp/Hiri.tar.gz && \
rm -f /tmp/Hiri.tar.gz && \
chmod -R go-w hiri
USER user
ENV HOME /home/user
WORKDIR /home/user
CMD /opt/hiri/hiri.sh
Теперь в каталоге с Dockerfile выполняем команду
docker build -t hiri .Это создаст образ с именем hiri. Теперь создадим из этого образа рабочий контейнер с именем hiri:
docker run -ti -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name=hiri hiri
Контейнер будет создан и сразу запустится Hiri. По выходу из Hiri произвести запуск контейнера можно командой
docker start hiriНе нужно опять запускать docker run!!! В этом случае вы получите исходную конфигурацию без персональных настроек.
Чтобы не проделывать самостоятельно работу по созданию контейнера можно сразу скачать и запустить его с docker-hub:
docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name=hiri ktak007/hiri
В целом Hiri показалась симпатичной программой, но для начала использования мне не хватило возможности подключить календари Гугл.
четверг, 7 апреля 2016 г.
Akregator
Вдруг нашёл устраивающую меня читалку RSS-новостей - Akregator. Она KDE-шная, а я как раз в последнее время в KDE5 сижу.
В последнее время читал RSS через Thunderbird, но "почтовость" Громоптицы накладывает отрицательный отпечаток. Да и просто глюки присутствуют - например, у меня почему-то не открываются ссылки на WEB без копипасты.
В последнее время читал RSS через Thunderbird, но "почтовость" Громоптицы накладывает отрицательный отпечаток. Да и просто глюки присутствуют - например, у меня почему-то не открываются ссылки на WEB без копипасты.
среда, 27 мая 2015 г.
Автозапуск Guard под Emacs
Настраивал тут Guard по статье на Хабре
Вспомнил, что когда-то настраивал нотификацию, в которой вроде бы ничего сложного нет (у Emacs она работает, кажется, из коробки).
Недостаток такой нотификации в том, что если появилась ошибка, в Emacs только перекрашивается mode-line в красный цвет (если всё Ок, то зелёный), а на ошибку надо смотреть в терминал, где запущен Guard. Да и предварительно необходимо его там ещё запустить.
А что если запускать guard прямо в Emacs при начале работы с проектом?
Для запуска Guard из Emacs нашёл готовую библиотеку ruby-guard. и положил её в ~/emacs/ruby-guard/
Обычно при начале работы с проектом я сначала открываю корневой каталог проекта в dired. Значит, цепляемся к Dired! Добавим это в ~/.emacs:
(add-hook 'dired-mode-hook ;; При открытии каталога в Dired
(lambda ()
;; Если найден Guardfile, запускаем Guard:
(if (file-exists-p (concat default-directory "Guardfile"))
(progn
(load-library "~/emacs/ruby-guard/ruby-guard.elc")
(ruby-guard)))
;; подкрашивать строку в dired:
(hl-line-mode)))
Теперь при открытии каталога, содержащего Guard-файл, у нас будет появляться окно с выполняющимся Guard и, как только у нас будут появляться ошибки проверки, мы сможем переходить на точку ошибки в файле, если добавим в ~/.emacs строку:
(add-hook 'shell-mode-hook 'compilation-shell-minor-mode)
Теперь, когда в guard-буффере появляется ошибка, мы можем перейти в нужный файл на строку с ошибкой просто кликом мышки на ошибке или клавишей Enter.
Вспомнил, что когда-то настраивал нотификацию, в которой вроде бы ничего сложного нет (у Emacs она работает, кажется, из коробки).
Недостаток такой нотификации в том, что если появилась ошибка, в Emacs только перекрашивается mode-line в красный цвет (если всё Ок, то зелёный), а на ошибку надо смотреть в терминал, где запущен Guard. Да и предварительно необходимо его там ещё запустить.
А что если запускать guard прямо в Emacs при начале работы с проектом?
Для запуска Guard из Emacs нашёл готовую библиотеку ruby-guard. и положил её в ~/emacs/ruby-guard/
Обычно при начале работы с проектом я сначала открываю корневой каталог проекта в dired. Значит, цепляемся к Dired! Добавим это в ~/.emacs:
(add-hook 'dired-mode-hook ;; При открытии каталога в Dired
(lambda ()
;; Если найден Guardfile, запускаем Guard:
(if (file-exists-p (concat default-directory "Guardfile"))
(progn
(load-library "~/emacs/ruby-guard/ruby-guard.elc")
(ruby-guard)))
;; подкрашивать строку в dired:
(hl-line-mode)))
Теперь при открытии каталога, содержащего Guard-файл, у нас будет появляться окно с выполняющимся Guard и, как только у нас будут появляться ошибки проверки, мы сможем переходить на точку ошибки в файле, если добавим в ~/.emacs строку:
(add-hook 'shell-mode-hook 'compilation-shell-minor-mode)
Теперь, когда в guard-буффере появляется ошибка, мы можем перейти в нужный файл на строку с ошибкой просто кликом мышки на ошибке или клавишей Enter.
вторник, 29 октября 2013 г.
Блок герконовых кнопок
Специально для Jek снял блок герконовых кнопок от какой-то советской клавиатуры. В начале 1990-ых этот блок исполнял функции джойстика при Спектруме:
На видео можно посмотреть, как магнит подъезжает к геркону (некоторые кнопки от древности залипают):
В целом ощущения от нажатия рабочих кнопок похожи на ощущения от современных механических кнопок.
На видео можно посмотреть, как магнит подъезжает к геркону (некоторые кнопки от древности залипают):
В целом ощущения от нажатия рабочих кнопок похожи на ощущения от современных механических кнопок.
понедельник, 12 августа 2013 г.
Поиск недоступных IP из cfg-файла Mrtg
Возникла задача поиска недоступного оборудования, опрашиваемого системой mrtg. Для этого написал простенький скрипт в одну строку, который просто делает один пинг на адреса, встречающиеся в Target и если пинг не успешный, то выводит адрес на экран:
for addr in `awk '/^Target/{for(i=1;i<=NF;i++){if(match($i, "[0-9]+\\\.[0-9]+\\\.[0-9]+\\\.[0-9]+", a)) print a[0]}}' mrtg.file.cfg | sort -u`; do ping -c 1 $addr > /dev/null; RET=$?; if [[ $RET == 1 ]]; then echo $addr; fi; done
for addr in `awk '/^Target/{for(i=1;i<=NF;i++){if(match($i, "[0-9]+\\\.[0-9]+\\\.[0-9]+\\\.[0-9]+", a)) print a[0]}}' mrtg.file.cfg | sort -u`; do ping -c 1 $addr > /dev/null; RET=$?; if [[ $RET == 1 ]]; then echo $addr; fi; done
Подписаться на:
Сообщения (Atom)
