Category: it

Category was added automatically. Read all entries about "it".

Перевод содержимого буфера обмена по горячей клавише при помощи сервиса google

Наткнулся на статью о работе с буфером обмена в Linux. Скрипт


xclip -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "translate.google.com/translate_t?hl=ru#en|ru|" $1}' | xargs firefox -new-tab

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


Немного погуглив, я совершенно случайно увидел страницу со скриптом вывода перевода в консоль. Еще одна особенность скрипта заключается в том, что можно выбирать направление перевода. Мне такой такой вариант кажется более гибким.


И вот, что из этого я вынес:

этот скрипт сохраняем под именем gctranslate.sh

#!/bin/bash
# access translate.google.com from terminal

help='translate <text> [[<source language>] <target language>]
if target missing, use DEFAULT_TARGET_LANG
if source missing, use auto'

# adjust to taste
DEFAULT_TARGET_LANG=en

if [[ $1 = -h || $1 = --help ]]
then
echo "$help"
exit
fi

if [[ $3 ]]; then
source="$2"
target="$3"
elif [[ $2 ]]; then
source=auto
target="$2"
else
source=auto
target="$DEFAULT_TARGET_LANG"
fi

result=$(curl -s -i --user-agent "" -d "sl=$source" -d "tl=$target" --data-urlencode "text=$1" http://translate.google.com)
encoding=$(awk '/Content-Type: .* charset=/ {sub(/^.*charset=["'\'']?/,""); sub(/[ "'\''].*$/,""); print}' <<<"$result")
#iconv -f $encoding <<<"$result" | awk 'BEGIN {RS="<div"};/<span[^>]* id=["'\'']?result_box["'\'']?/ {sub(/^.*id=["'\'']?result_box["'\'']?(>| [^>]*>)([ \n\t]*<[^>]*>)*/,"");sub(/<.*$/,"");print}' | html2text -utf8
iconv -f $encoding <<<"$result" | awk 'BEGIN {RS="</div>"};/<span[^>]* id=["'\'']?result_box["'\'']?/' | html2text -utf8
exit


а этот скрипт я вызываю горячей клавишей


#!/bin/bash

TEXT=$(xclip -o)
TRANSLATED_TEXT=$(gctranslate.sh "$TEXT" en ru)
if [ ${#TEXT} -lt 120 ]; then
notify-send "$TRANSLATED_TEXT"
else
echo "$TRANSLATED_TEXT" | zenity --title="Перевод" --text-info
fi


в нем, в зависимости от длины исходного текста отображается нотификационное сообщение, которое быстро читается и исчезает, или отображается в окне zenity, т.к. длинный текст дольше читается.


Для работы скрипта нужны пакеты notify-send, html2text и zenity. Скрипт тестировался на Ubuntu 10.04 LTS в GNOME.


Конечно и этот скрипт не лишен недостатков. И один из них наиболее очевиден: хотя, далеко не всегда приходится переводить с разных языков, в этом скрипте нет возможности интерактивного выбора направления перевода.

Решение проблемы разных IP-адресов в локальной сети при использовании Linux и Windows

Подключение к серверу локальный сети провайдера происходит по DHCP. При подключении к сети из Linux, сервер выдает один IP, а при подключении - другой IP. С обоих IP-адресов выход в интернет возможен, но все-таки это создает неудобства.
Для решения проблемы нужно посмотреть имя хоста и MAC-адрес в Windows, и
добавить строки в файл /etc/dhcp3/dhclient.conf:

send host-name "имя-хоста-windows.";
send dhcp-client-identifier 1:0:01:5b:e1:7e:16; // MAC сетевой карты


в конце имени хоста обязательно должна присутствовать точка.

Дополнительно можно почитать здесь: http://usebuntu.ru/redi-dhcp-daet-raznye-ip-vendoiubuntoi-resheno

периодическая смена обоев рабочего стола

 Этот способ в основном используется для простых оконных менеджеров.
Для установки обоев я использовал feh - программа просмотра изображений, которая также может управлять фоном рабочего стола.
 Напишем скрипт:

#!/bin/bash
# вывести на рабочий стол случайное изображение из директории

# найти все файлы с расширением JPG в одну строку | выбрать случайную строку, т.е. один файл
feh --bg-scale "$(find '/mnt/GEEK/Pictures/Anime/The Best Anime Wallpapers HD' -name *.jpg | shuf -n1)"
 

 Для смены фона рабочего стола в XFCE можно воспользоваться командой xfdesktop --reload, которая сменит обои при условии, что в насройках рабочего стола указан список обоев и их случайный выбор при загрузки XFCE.
Для периодичности смены обоев нужно повесить скрипт в cron.
#!/bin/bash
if ps ax | grep /usr/bin/xfce4-session | grep -vq grep
then
DISPLAY=:0.0 /usr/bin/xfdesktop --reload
fi

Для обновления каждые 5 минут в крон нужно записать:
*/5 * * * * /usr/loval/bin/update-xfce-wallpaper

будильник в Debian 6.0

Пост для многих будет до смешного простым, но пишу я все-таки, чтобы не забыть самому.
Итак, редактируем cron:

30 08 * * * mpc play 1

Собственно включаем воспроизведение командой mpc первого трека в списке воспроизведения.
mpc нужно будет доустановить из репозитория. Это программа консольного управления mpd.

gdm3 в Debian 6

 Многим не нравится gdm3 своим минималистичным интерфейсом. Местами он даже не удобен. К счастью в репозиториях системы осталась старая версия менеджера экранов, которая позволяет использовать темы для экранов входа, а также настраивать режимы авторизации.
 Поэтому многие посчитали правильным, и я в том числе, удалить gdm3 и поставить gdm.
 Надеемся, разработчики следующей версии учтут пожелания пользователей.

Монтирование разделов в Debian 6

 В новой версии Debian заметно упрощена работа с разделами жесткого диска. Теперь, при попытке открытия раздела жесткого диска не указанного в файле fstab выдается окно ввода пароля root, после удачной авторизации предоставляется возможность работы с жестким диском - чтение, запись.
 Едиственное неудобство может возникнуть, если данные с этого раздела используются сразу после загрузки системы. Поэтому нужно просто прописать монтирование раздела в fstab. Ранее требовалось отменять автомонтирование диска как указано в статье.
 Для монтирования NTFS разделов нужно установить ntfs-3g - драйвер для FUSE с возможностью чтения и записи в NTFS.
 В fstab добавить раздел для монтирования:
# my mount drive BIG_GEEK
/dev/sda4 /mnt/GEEK ntfs-3g defaults 0 0

Отключение ненужных служб в Debian

По умолчанию система загружает множество служб, которые возможно, не нужны пользователю. Это конечно делается для удобства пользователя, чтобы все работало "из коробки". Но, много служб могут загружать систему и неоправданно тратить процессорное время.
Ненужные службы можно отключить, но делать это нужно осторожно. Некоторые службы после отключения невозможно будет заново запустить. Перед выполнением процедуры желательно ознакомиться со службой - узнать, какую функцию она выполняет и постараться выявить зависимости от других служб.
Вообще, существует множество споров о правильности отключения служб в Debian.
В файле /etc/rc*.d/README описан способ, которым я воспользовался.

Первое, что нужно нам узнать, это уровень загрузки системы. Уровень загрузки - это уровень доступа пользователя к ресурсам системы при авторизации. Для этого нужно с правами администратора выполнить команду runlevel. Как правило результат выполнения команды будет N 2 - т.е. второй уровень загрузке.

В директории /etc/rcN.d (где N - уровень загрузки) находятся ссылки на службы которые выполняются в соответствующем уровне.

Имена файлов ссылок имеют формат : SНомерИмяслужбы.

Для отключения службы нужно переименовать ссылку на файл изменив S на К, остальную часть имени оставить прежней.

Возможно, этот способ будет работать не со всеми службами. :)
  • Current Mood
    angry angry

установка пакетов .tgz , .tar.gz

Для Vector Linux, на мой взгляд лучше подходят два варианта установки программ:
1. Из исходников, которые обычно содержатся в архивах .tar.gz
2. Из уже готовых пакетов .tgz

Обы варианта имеют схожие методы установки. Рассмотрим их в отдельности.

Установка программ из исходников.
По сути все очень просто. Порядок таков:
 1. Распаковываем программу
    В общем, в этом деле вам поможет MidnightCommander. Я распаковываю и вхожу в распакованную папку. Делее       закрываем mc и переходим к следующему шагу.
 2. Собираем программу
    - ./configure
    - make
 3. Подготавливаем пакет для устанвки
    - checkinstall -S --pakdir=/tmp/install
    Тут нужно немного пояснить. После компиляции программы нам нужно сделать пакет для устаноки. Это и         делает команда checkinstall. В отличие от команды make install устанавливаемая программа будет зарегистрирована в системе, и ее можно будет легко удалить.
Аргумент -S говорит, что мы создаем пакет для Slackware. А pakdir указывает в какую папку будет записан файл пакета. После запуска команды будет предложено ввести имя программы. Также в интерактивном режиме можно ввести дополнительную информацию о пакете.
Такую как: архитектура процессора, версия, описание и т.д.
 4. Установка пакета
    - installpkg имя_пакета

Преимещество такого варианта установки программы заключается в том, что программу можно будет легко удалить при помощи программы GSlapt или slapt-get.

Установка из готовых пакетов:
  - installpkg имя_пакета

ЗЫ

По сути .tgz и .tar.gz это архивы. Только .tgz содержит откомпилированную программу и скрипт с инструкциями по ее установке, который выполняет программа installpkg. В обоих архивах можут находится такие файлы:
Authors
Bugs
Changes
Install - краткая инструкция по установке
Readme
Todo
Version

Перед установкой настоятельно рекомендую ознакомится с файлом Install.

руссификация Vector Linux

Собственно говоря, в интернете есть достаточно документации по русификации Slackware. И она вполне подходит для Вектора. Покопавшись в инете я нашел пакадж руссификации и пользуюсь им по сей день. Он подходит для русификации всех версий Вектора.
Пакет локализации 0.2 взял отсюда
Русские маны взяты здесь

Вниманиие! Публикуя данные ссылки я не хочу нарушать чьи-либо авторские права. Поэтому я указал источники, откуда я брал ссылку. Что советую делать всем, кто публикует информацию взятую с других источников.
  • Current Music
    Yello