Блог
arrow
Скрипт для быстрого создания git-репозитория на сервере

Скрипт создает новую папку, инициализирует пустой репозиторий и предлагает команды для настройки push из локального репозитория.

#!/bin/bash

set -e

if [[ $# -eq 0 ]] ; then
  echo "Usage:"
  echo "$0 path-to-new-dir"
  exit 1
fi

mkdir "$1"
git init --bare "$1"

echo "Run these commands in the local repository:"
echo
echo "git remote add origin ssh://$USER@`hostname``readlink -f "$1"`"
echo "git push --set-upstream origin master"

Установка MS Office 2010 в wine

В данной заметке описывается последовательность действий, приводящая к успешной установке Word, Excel и Power Point из пакета Office Professional Plus SP1 x86 RU на Ubuntu 12.10 с wine 1.4.1. Скорее всего, эта инструкция действует для версий wine с 1.3.35 по 1.5.6. Для более полной и актуальной информации обратитесь к соответствующей странице на WineHQ.

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

1. Конфигурируем консоль для нового префикса. Укажите здесь папку, в которую хотите поставить MS Office.

export WINEPREFIX=/home/ri/.msoffice 
export WINEARCH=win32

Все дальнейшие действия нужно выполнять в этой же консоли. При открытии новой консоли эти команды надо выполнить повторно.

2. Монтируем установочный диск или его образ, например, в папку /tmp/cdrom. Теперь запускаем в консоли winecfg и на вкладке "Диски" добавляем диск d:\ типа CRDOM, указываем папку, в которой примонтирован диск.

3. Удаляем msxml6.dll:

rm .msoffice/drive_c/windows/system32/msxml6.dll

4. Загружаем MS XML 6 с сайта Microsoft. На данный момент он доступен по этой ссылке.

5. Запускаем установку MS XML 6 из консоли:

wine msiexec /i  /path/to/msxml6_x86.msi

6. Устанавливаем Mono:

winetricks mono210

7. Копируем из рабочей установки Windows файл machine.config:

mkdir $WINEPREFIX/drive_c/windows/Microsoft.NET/Framework/v2.0.50727/CONFIG
cp /media/windows_system_disc/Windows/Microsoft.NET/Framework/v2.0.50727/CONFIG/machine.config \
  $WINEPREFIX/drive_c/windows/Microsoft.NET/Framework/v2.0.50727/CONFIG/

8. Запускаем установку:

wine d:\\setup

9. После успешного завершения установки снова запускаем winecfg. Удаляем установочный диск из списка дисков. Переходим на вкладку "Библиотеки", вводим в текстовое поле riched20, нажимаем "Установить", выделяем в списке появившийся пункт, нажимаем "Изменить" и выбираем опцию "Сторонняя, затем встроенная". Нажимаем "OK".

10. Проверяем работу приложений:

wine $WINEPREFIX/drive_c/Program\ Files/Microsoft\ Office/Office14/EXCEL.EXE
wine $WINEPREFIX/drive_c/Program\ Files/Microsoft\ Office/Office14/WINWORD.EXE
wine $WINEPREFIX/drive_c/Program\ Files/Microsoft\ Office/Office14/POWERPNT.EXE

У меня Excel и Power Point работают нормально, а Word при запуске пытается настроить какие-то компоненты. Операцию настройки можно прервать, а можно дождаться ее завершения, затем через некоторое время Word запускается и работает нормально. Других сложностей пока замечено не было.

11. Делаем резервную копию папки $WINEPREFIX.

12. Настраиваем удобный запуск программ.

В моей Xubuntu (а скорее всего, и в других оболочках) после установки в главном меню появляются пункты для запуска установленных приложений. Прописанная там команда для Word выглядит следующим образом:

env WINEPREFIX="/home/ri/.msoffice" wine C:\\windows\\command\\start.exe /Unix /home/ri/.msoffice/dosdevices/c:/users/ri/Start\ Menu/Programs/Microsoft\ Office/Microsoft\ Word\ 2010.lnk

Если же по каким-то причинам у вас этих пунктов нет, создайте файл примерно такого содержания (для Word):

/!bin/bash
export WINEPREFIX=/home/ri/.msoffice 
export WINEARCH=win32
wine $WINEPREFIX/drive_c/Program\ Files/Microsoft\ Office/Office14/WINWORD.EXE

Сделайте его исполняемым и поместите в /usr/bin/msword.


Настройка открытия всех файлов в одном экземпляре GVim в Ubuntu

Откройте рутовскую консоль и отредактируйте файл /usr/share/applications/gvim.desktop. Найдите строчку Exec=gvim %F и замените ее на следующее:

Exec=gvim --servername GVIM --remote-tab %F

Теперь при открытии файлов через Nautilus будет выполняться соответствующая команда. Если эта команда уже выполнялась ранее и экземпляр gvim еще запущен, в нем откроется новая вкладка с указанным файлом.

Чтобы это работало и в консоли, добавьте в .bashrc:

alias gvim='gvim --servername GVIM --remote-tab'

Установка произвольного разрешения монитора в Ubuntu

Так сложилось, что имеющийся у меня монитор при подключении к VGA неправильно выдает список поддерживаемых разрешений. Поэтому в стандартной утилите настройки дисплея я могу поставить разрешение не больше 1024x768. Я же хотел поставить разрешение 1600x900. Найденный мной способ проверен на видеокартах Intel, а также на видеокартах NVidia со свободными драйверами. Решения проблемы для проприетарных драйверов NVidia я не нашел. Также следует отметить, что этот способ не работает, если монитор действительно не поддерживает такое разрешение.

1. Открываем консоль. Узнаем список видеовыходов и поддерживаемых разрешений для каждого выхода командой

xrandr

У меня выходы назывались LVDS1 (монитор ноутбука) и VGA1 (внешний монитор).

2. Создаем Modeline для нужного режима:

cvt 1600 900 60

Первые два числа — разрешение, третье — частота обновления экрана (можно не задавать, по умолчанию будет 60). Команда выдаст примерно следующее:

Modeline "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync

xrandr  --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync

(после --newmode вставляем вывод команды cvt без слова Modeline).

4. Добавляем новый режим к нужному выходу:

xrandr --addmode VGA1 1600x900_60.00

5. Вводим xrandr и видим, что режим добавился. Теперь можно запустить стандартную утилиту (Система → Параметры → Экран) и выбрать новое разрешение, либо поменять разрешение из консоли:

xrandr --output VGA1 --mode 1600x900_60.00

Памятка о полезных настройках Firefox

Чтобы окно не закрывалось при закрытии последней вкладки, нужно указать на странице about:config:

browser.tabs.closeWindowWithLastTab = false 

Чтобы работал BackSpace:

browser.backspace_action = 0 

Чтобы на последней оставшейся вкладке была кнопка закрытия, в профиле в файле chrome/userChrome.css нужно дописать:

.tab-close-button { display: -moz-box !important; }

Восстановление последних закрытых вкладок в Chrome по Ctrl+Z

В Хроме последние закрытые вкладки можно открыть, нажав комбинацию Ctrl+Shift+T. Я написал расширение, которое позволит делать это по Ctrl+Z — такая комбинация используется в Опере. Установить расширение можно здесь.

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

После установки расширения следует перезапустить браузер, иначе оно не будет работать на страницах, открытых ранее.


Установка произвольного формата даты и времени для верхней панели Unity
  1. Установите пакет dconf-tools.
  2. Запустите dconf-editor.
  3. Перейдите в раздел com/canonical/indicator/datetime.
  4. Установите значение time-format = custom.
  5. Установите значение custom-time-format, пользуясь [этой таблицей][1].

Автологин в tty-консоли

Чтобы после загрузки системы в консоли вам не пришлось вводить логин и пароль, нужно сделать следующее:

Откройте консоль рута и создайте файл /usr/sbin/call_bash, содержащий:

#!/bin/bash
su - your_username

Дайте этому файлу права на исполнение:

chmod +x /usr/sbin/call_bash

Проверьте, что команда call_bash открывает консоль.

Пропишите в /etc/inittab эту команду. Например, у меня автологин прописан для 3 первых консолей, выглядит это так:

c1:2345:respawn:/sbin/agetty -nl /usr/sbin/call_bash -8 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -nl /usr/sbin/call_bash -8 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -nl /usr/sbin/call_bash -8 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux

Ключ -n указывает, что не нужно спрашивать логин, ключ -l заставляет agetty запустить наш скрипт вместо стандартного /bin/login.

После перезагрузки эффект должен быть заметен.


Активация определенного окна по хоткею в Ubuntu

Допустим, нам надо, чтобы по нажатию Alt+1 активировалось окно Firefox, при нажатии Alt+2 - Gedit и т. д. Как программы, так и хоткеи могут быть любыми.

Ставим пакет wmctrl, если он не установлен:

sudo apt-get install wmctrl

В Unity: нажимаем на иконку в правом верхнем углу, выбираем Свойства системы → Клавиатура → Комбинации клавиш.

В Gnome2: выбираем пункт меню Система → Параметры → Комбинации клавиш клавиш клавиатуры.

Нажимаем кнопку "Добавить". Вводим название: "Switch to Firefox", команду:

wmctrl -a firefox

Сохраняем, щелкаем по правой колонке и указываем хоткей. Повторяем столько раз, сколько нужно. Если нужная программа закрыта, при нажатии хоткея ничего не произойдет. Если она открыта, то ее окно выйдет на первый план.

Строка, указываемая в команде, должна полностью содержаться в заголовке окна. Например, чтобы активировать Google Chrome или Chromium (в зависимости от того, что запущено), достаточно указать команду wmctrl -a chrom.


Просмотр manpages из командной строки браузера

В этой заметке я расскажу, как сделать так, чтобы при вводе, например, man perl в адресной строке браузера появлялась соответствующая страница мануала.

Chrome

Чтобы читать страницы манов из браузера Chrome, зайдите в параметры → основные → поиск по умолчанию → управление → добавить, затем введите:

  • имя: man;
  • ключевое слово: man;
  • url: http://www.opennet.ru/man.shtml?topic=%s

После этого можно прямо в адресной строке вводить man perl, будет открываться соответствующий ман. На опеннете маны хорошо форматированы, к тому же расставлены ссылки на другие страницы манов.

Opera

Зайдите на http://opennet.ru/man.shtml, нажмите правой кнопкой на поле ввода «Тема», затем «создать поиск», в поле «клавиша» введите man, нажмите OK. Введите в адресной строке man perl для проверки.


Конвертирование WAV в AU под Linux

Это делается довольно просто одной командой:

sox sound.wav  -V -t au -b 16 -c 1 sound.au 

Конвертирование изображений формата TIF из RGB в CMYK средствами Ubuntu

Gimp не поддерживает сохранение изображений в формат TIF CMYK. Чтобы пересохранить TIF в формат CMYK, можно воспользоваться утилитой convert из пакета imagemagick:

convert 1.tif -colorspace CMYK 1-cmyk.tif

Справочник селекторов CSS для diary.ru

Общая информация

Селектор определяет, для каких объектов будут применяться указанные свойства.
В коде CSS это записывается так:
селектор { свойства }


Полужирным шрифтом выделены основные селекторы, за ними следуют описания соответствующих им объектов.


После описания в скобках могут быть указаны селекторы для внутренних элементов объекта. В случае, если основной селектор не производит нужный эффект, стоит попробовать задать стиль для селектора внутреннего элемента.


Надпись (input, label) после селектора #id для управляющего элемента означает, что можно использовать селекторы #id input и #id label для доступа к переключателю и надписи соответственно.


Настоятельно рекомендую научиться использовать FireBug и не париться с поиском нужных селекторов.

Запись и комментарий

Внешняя оболочка поста

.singlePost — любой пост
.first — первый пост на странице
.countFirst — нечетные посты
.countSecond — четные посты
#post0 — эпиграф
.singleComment — комментарий

Cледующие классы относятся и к постам, и к комментариям.
.postTitle — заголовок поста
.postTitle span — время
.opac6 — значок закрытой записи
Информация об авторе

.communityName — название сообщества (.communityName a)
.authorName — автор записи (.authorName a)
.postContent — блок с аватаркой, подписью и текстом
.commentAuthor — блок с аватаркой и подписью
.avatar — аватарка (.avatar img)
.sign — подпись под аватаркой
.postInner — оболочка текста и тегов
.paragraph — текст и теги
Текстовое содержимое
.paragraph div — текст
.smile — смайлы в тексте
.LinkMore — ссылки MORE
.voting — блок голосования
.atTag — темы
.atTag span — надпись "@темы:"
.atTag a — ссылки на темы
.atMusic — музыка
.atMusic span — надпись "@музыка:"
.atMood — настроение
.quote_text — цитированный текст
.eot — оффтопик

.postLinksBackg — ссылки внизу поста
.urlLink — URL (.urlLinks a)
.postLinks — остальные ссылки
Ссылки

.lastLink — последняя из ссылок (.lastLink a)
.addToQuote — в цитатник (.addToQuote a)
.subscribe — подписаться (.subscribe a)
.unsubscribe — отписаться (.unsubscribe a)
.quote_post — написать у себя (.quote_post a)
.umail — u-mail (.quote_post a)
.diary — дневник (.quote_post a)
.profile — профиль (.quote_post a)
.comments — комментарии (.comments a)
.comments_count_link — скобки, запятые в к-ке комментариев
.comments_count_link a — к-во комментариев (ссылка)

.prevnext — предыдущая и следующая записи

.prevPostLink — предыдущая (.prevPostLink a)
.nextPostLink — следующая (.nextPostLink a)

Служебные страницы

.tagsulall — список тем на отдельной странице

.tags_header — надписи "название" и "количество"
.tags_ul_all a — ссылка на тему
.tags_ul_all span — количество

#JournalCalendar — календарь записей

.calHeader — заголовок "календарь записей"
#JournalCalendar a — ссылки
#JournalCalendar a b — ссылка на не текущий год
.calnd — календарь на месяц
.cal-mnth — название месяца
.cal-head — дни недели
.cal-head small — числа
.cal-head a small — числа, для которых есть записи
.flwin — всплывающая подсказка
.flwin strong — заголовок подсказки
.flwin em — текст подсказки

Форма добавления комментария

#addCommentAreatitle — заголовок "добавить комментарий"
#formcontainer — оболочка формы
#msgform — форма
#from_form — переключатель, от кого добавлять комментарий

#fromMyself_box — от себя
#fromMrX_box — анонимно
#fromMrX3_box — OpenID
#fromAnother_box — от другого пользователя (input, label)
#open_id_com — оболочка поля ввода OpenID и двоеточия перед ним
#open_id_com input — поле ввода OpenID
#from_another — форма ввода логина и пароля для комментирования от другого аккаунта
#fromAnotherName — логин
#fromAnotherPass — пароль

#changebgarea_comm — галочка "прозрачные поля" (input, label)
#forTextarea — редактор и смайлы
#htmlbox — редактор
#javabut — кнопки
#codebuttons — тоже кнопки
#message — текст сообщения
#shsmile — смайлы

#favSmilesGroups — выбор группы смайлов и любимые смайлы
#EditFavSmileysLink — ссылка на редактирование любимых смайлов
#SelectSmileGroup — выпадающий список групп смайлов
#favSmiles — список смайлов
.SmilePanelElement — смайл с надписью
.SmilePanelElement small — надпись
.SmilePanelElement img — картинка смайла

Опции комментария

#ReplaceBrDiv — не заменять переносы строки на <br> (input, label)
#change_avatar_box — использовать аватар (input, label) (платный сервис "аватары")
#change_avatar_box a — выбор другого аватара
#AvatarSelector — выбранный аватар
#subscribeToComments_box — подписаться на комментарии
#doNotSmile_box — не заменять текстовые смайлы на графические
#addPicture_box — прикрепить изображение
#addPictureSection — форма выбора файла изображения

#btSubmit — кнопка отправки комментария

Дополнительные элементы

#addblock1, #addblock2, ... #addblock7 — блоки для вставки дополнительных изображений
#extratop, #extrabottom — дополнительные блоки сверху и снизу
.postDate — дата (.postDate span)
.countFirstDate — дата у нечетного поста
.countSecondDate — дата у четного поста
#commentsAreatitle — надпись "комментарии"
#newCommentsArea .header — надпись "Новые комментарии с последней страницы"
#cc — всплывающий блок "вставить цитату"
#msgWin — сообщение об ошибке

#msgTitle — заголовок
#msgTitleText — текст в заголовке
#msgWin .std_submit — кнопка закрытия
.msgErr — блок текста ошибки (в фоне прописана картинка)
#msgTextContent — текст ошибки
#msgWinCloseBt — OK

Меню

.menuSection — все секции
.menuSection ul — фон выпадающего меню
.menuSection li — все элементы меню
.menuSection a — все ссылки меню
.menuSection_title — все заголовки меню
#thisDiaryOwner — меню владельца дневника

#thisDiaryOwner ul — фон выпадающего меню
#thisDiaryOwner_title — записи
#writeToAuthor — написать на U-mail
#subscribeEmail — подписаться на дневник
#unsubscribeEmail — отписаться от дневника
#addToFav — добавить в избранное
#delFromFav — удалить из избранного
#tagslistlink — темы записей
#postsCalendar — календарь записей
#rssLink — RSS дневника
#upInChart — поднять в списке

#thisDiaryLinks — меню текущего дневника

#thisDiaryLinks ul — фон выпадающего меню
#thisDiaryLinks_title — дневник
#authorFav — избранное автора
#authorQuot — цитатник автора
#authorLinks — ссылки автора
#authorAlbum — альбом автора
#joinThisCommunity — вступить в сообщество
#writeThisCommunity — написать в сообщество
#communityDraftLink — мои черновики в сообществе
#communityMyPosts — мои записи в сообществе
#communityFav — избранное сообщества
#communityQuote — цитатник сообщества
#communityAlbum — альбом сообщества
#leaveThisCommunity — покинуть сообщество

#myDiaryLinks — меню моего дневника

#myDiaryLinks ul — фон выпадающего меню
#myDiaryLinks_title — мой дневник (заголовок)
#headlineList — список заголовков
#tagslistlink — темы записей
#myDiaryLink — мой дневник
#writeThisDiary — новая запись
#myDraftLink — черновики
#umailLink — u-mail
#myNotepadLink — блокнот
#myFavLink — избранное
#myQuotLink — цитатник
#discussionLink — дискуссии
#myLinksLink — мои ссылки
#myProfileLink — мой профиль
#albumLink — альбом
#optionsLink — настройки
#photolibLink — библиотека изображений
.count_box — количество новых комментариев или черновиков, с тире и скобками
.count_box span — количество новых комментариев, только цифра

#globalLinks — главное меню

#globalLinks ul — фон выпадающего меню
#globalLinks_title — главное меню
#allDiaryLink — все дневники
#mainpageLink — главная страница
#favListLink — список избранных
#pchListLink — список ПЧ
#communityCatalogueLink — каталог сообществ
#myCommunitiesLink — мои сообщества
#myCommunityLink — моe сообществo
#randomDiaryLink — случайный дневник
#diarySpiritLink — @дневники: изнутри
#diarySupportLink — техподдержка
#faqLink — FAQ

#lastComments — последние комментарии (если включены)
#pchs — ПЧ

#pchs ul — фон выпадающего меню
#pchs_title — ПЧ, заголовок (#pchs_title b)
#pchs li — список ПЧ с запятыми
#pchs a — ссылки на ПЧ

#myLinks — мои ссылки (#myLinks li, #myLinks a)

#myLinks ul — фон выпадающего меню
#all_links — заголовок "ссылки"
#myLinks a — каждая ссылка
#myLinks li:nth-child(3) a — вторая из ссылок (цифре 1 соответствует заголовок); не поддерживается в IE и FF<3.5

#Stats — статистика дневника
#iAmQuit — секция выхода и перелогинки

#iAmQuit b — выход
#more_login — войти под другим именем (#more_login a)
#login_change — форма перелогинки
#usrlog — логин
#usrpass — пароль
#open_uri — OpenID
#save — запомнить
.std_submit — войти

#side h1 — название дневника (#side h1 a)
#YaSearch — блок поиска по дневнику

#YaSearch_title b — фраза "Поиск"
#YaSearchForm_title b — фраза "Поиск по дневнику"
#YaSearchForm — форма поиска
#yaquery — строка поиска

#thisDiaryInfo — владелец дневника

#authorName — логин (#authorName span)
#thisDiaryPhoto — фотография

#TagsList — список тем
#TagsList span — число постов в теме
#TagsList a — название темы


Оболочки и дополнительные элементы

body — вся страница
#side — оболочка меню
#page-c — оболочка постов
#page-t — внутренняя оболочка постов
#postsArea — еще более внутренняя оболочка постов
#epigraph — оболочка эпиграфа
#commentsArea — оболочка комментариев
#newCommentsArea — новые комментарии (появляется, если вы отправляете комментарий, находясь не на последней странице комментариев)
#addCommentArea — оболочка формы добавления комментария

Разные стили для разных типов страниц

Если вы хотите, чтобы некоторые стили применялись только на некоторых
типах страниц, вставьте перед их селекторами следующие:
#Journal — дневник, а также редактирование записи или комментария
#JournalComments — комментарии
#JournalDraft — черновики
#JournalFavorite — избранное
#JournalAlbum — альбом
#JournalCalendar — календарь записей
#JournalLinks — страница моих ссылок
Например: #JournalComments a { color:green } — изменяет цвет ссылок на странице комментариев.

Элементы управления

.order_button — кнопки сортировки записей

#sortFromBegin — сортировать в порядке следования
#sortFromEnd — сортировать в обратном порядке
#sortFromLastComment — сортировать по последним комментариям

#bottomNav — ссылки навигации внизу страницы

#bottom_up — наверх
#bottom_mainlink — на главную
#bottom_randomlink — случайный дневник
#bottom_spiritlink — дневники: изнутри
#bottom_faqlink — FAQ
#Stats — статистика (находится внизу, если меню вверху)

#topNav — ссылки навигации вверху страницы

#top_up — наверх
#top_mainlink — на главную
#top_randomlink — случайный дневник
#top_spiritlink — дневники: изнутри
#top_faqlink — FAQ

.postActionLinks — кнопки управления постом

.upPostLink — поднять
.delPostLink — удалить
.editPostLink — редактировать
.tonotepadPostLink — перенести в блокнот
.fromnotepadPostLink — перенести в черновики из блокнота

Для доступа к ссылке внутри блока: #(id) a
Для доступа к изображению на кнопке: #(id) img
#pageBar — переключатель страниц

.pages_str — предыдущая, следующая
#pageBar a — все ссылки переключателя страниц
#pageBar strong — текущая страница

Наверх