Blog
arrow
Script for creating a git repository on the server

This script creates a new directory, inits an empty git repository and suggests commands for configuring push from a local repository.

#!/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.


Set up opening all files in one instance of GVim in Ubuntu

Open root console and edit /usr/share/applications/gvim.desktop file. Find line containing Exec=gvim %F and replace it to the following:

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

Now when you open file from Nautilus, this command will be run. If this command was launched before it and gvim instance is still running, new tab with specified file will be open in it.

If you want it to work in console as well, add this command to .bashrc:

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

Set up arbitrary monitor resolution in Ubuntu

I have a monitor that give incorrect resolutions list when plugged on VGA. That's why I can't use standard Ubuntu utility to set up proper resolution. I found a way to fix it. It works with Intel video cards, and NVidia video cards with free driver. I can't find a solution for NVidia proprietary driver. Note that it will not work if your monitor truly doesn't support specified resolution.

1. Open console. Get list of video outputs and supported resolutions for each output using command:

xrandr

2. Create Modeline for needed mode:

cvt 1600 900 60

First two numbers is resolution (1600x900), the third is frequency (not required, 60 by default). Output will look like this:

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

3. Create mode:

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

(after --newmode paste csvt command output excluding 'Modeline').

4. Add new mode to proper output:

xrandr --addmode VGA1 1600x900_60.00

5. Launch xrandr and check that the mode was added. Now you can use standard utility to enable new resolution, or do it from console:

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; }

Reopen closed tabs in Google Chrome using Ctrl+Z

In Google Chrome browser you can reopen closed tab by pressing Ctrl+Shift+T. I wrote extension to make it work with Ctrl+Z - this hotkey is using in Opera. You can install the extension from here.

If text cursor is in text field while Ctrl+Z is pressed, it will undo changes, as normally. Only if nothing can be undone, the hotkey is passed to the extension.

You should restart your browser after installing this extension, otherwise it will not work on pages opened earlier.


Set up custom date and time format for Unity top bar
  1. Install dconf-tools package.
  2. Run dconf-editor.
  3. Find section com/canonical/indicator/datetime.
  4. Set value time-format = custom.
  5. Set value custom-time-format, using this table.

Autologin in tty console

If you don't want to enter your login and password in tty console, you should do the following:

Run root console and create /usr/sbin/call_bash file with the following contents:

#!/bin/bash
su - your_username

Allow execution of this file:

chmod +x /usr/sbin/call_bash

Check that call_bash command causes opening of console.

Now you should write this command in /etc/inittab. For example, if you want to set up autologin for first 3 consoles, it will look like

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 option disables asking of login; -l option replaces standard /bin/login with our new script.

After a restart changes must take effect.


Activate some window using hotkey in Ubuntu

Let's assume we need to activate Firefox window when user presses Alt+1, activate Gedit on Alt+2 etc. Any program and any hotkey can be used.

CUT

Install package wmctrl, if it isn't already installed:

sudo apt-get install wmctrl

Press icon in right bottom corner, choose 'System settings → Keyboard - Shortcuts'. Press '+' button, input name: 'Switch to Firefox', command:

wmctrl -a firefox

After save, click second column and press decided hotkey. Repeat these actions as many times as you need.

If the program specified is not currently running, nothing will happen on hotkey press. If the program is open, its window will be activated.

The string ('firefox') specified in the command must be contained by window title. For example, to activate Google Chrome or Chromium (depends on which is running), you should set command wmctrl -a chrom.


View manpages from browser address bar

In this note I will tell you, how to make your browser display manpage when you type man perl in its address bar. L:all

Chrome

Go to Settings → General → Default search → Manage → Add, then input:

  • name: man;
  • keyword: man;
  • url: http://www.opennet.ru/man.shtml?topic=%s

After you do it, you can type man perl just in address bar, the relevant manpage will be shown.

Opera

Go to http://opennet.ru/man.shtml, right-click on «Тема» search field, then "Create search". Type man in "Key" field and press OK. Input man perl in address bar to check.


Converting WAV to AU under Linux

It's quite simple, just with one command:

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

Converting TIF images from RGB to CMYK using Ubuntu

Gimp doesn't support saving images with CMYK color model. If you want to save TIF file in CMYK format, you can use convert utility from imagemagick package:

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 — текущая страница

Up