RU EN

Русские шрифты в wine

 

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

wget http://ubuntologia.ru/article_files/wine/notes_69.tar.gz \
&& tar xvfz notes_69.tar.gz \
&& cp ~/fonts-cyr-win311/*TTF ~/.wine/drive_c/windows/Fonts \
&& chmod 644 ~/.wine/drive_c/windows/Fonts/*.TTF \
&& rm -rf ~/fonts-cyr-win311/ \
&& rm notes_69.tar.gz

После этого нужно установить в консоли локаль cp1251:

LC_ALL=ru_RU.cp1251

Если в системе при установке не была добавлена локаль CP1251, установить её можно в любой момент командой:

sudo dpkg-reconfigure locales

После этого в консоли можно запускать программы через wine:

cd ~/Distrib/Games/Space\ Rangers/Космические\ Рейнджеры\ 2\ -\ Перезагрузка/ \
&& sudo mount -t iso9660 -o loop SRDR.mdf /home/alex/.cd \
&& cd ~/.cd \
&& wine Autorun.exe &

Дальнейшая настройка wine:

# Устанавливаем winetricks
wget http://winetricks.googlecode.com/svn/trunk/src/winetricks

# Установка виндошных библиотек
sh winetricks vb5run
sh winetricks vb6run
sh winetricks 7zip
sh winetricks dotnet11
sh winetricks dotnet20
sh winetricks vcrun2005
sh winetricks directx9
sh winetricks devenum
Комментариев: 0
06.04.2012 21:47


Desktop background, Greetings background

 

Desktop background

Чтобы поменять цвет бэкграунда рабочего стола (debian squeeze, GNOME), нужно отредактировать файл:

nano ~/.gconf/desktop/gnome/background/%gconf.xml

За цвет отвечают следующие строки:

<entry name="primary_color" mtime="1331955722" type="string">
    <stringvalue>#1bcd319a4426</stringvalue>
</entry>
<entry name="secondary_color" mtime="1331955722" type="string">
    <stringvalue>#6666baba0000</stringvalue>
</entry>

Greetings background

Чтобы поменять цвет бэкграунда экрана приветствия, нужно отредактировать файл:

# Предварительно делаем копию!
sudo cp /var/lib/gdm3/.gconf.mandatory/%gconf-tree.xml \
    /var/lib/gdm3/.gconf.mandatory/%gconf-tree.xml.bkp
sudo nano /var/lib/gdm3/.gconf.mandatory/%gconf-tree.xml

За настройки цвета отвечают следующие строки:

<entry name="primary_color" mtime="1276168926" type="string">
    <stringvalue>#01011b1b3636</stringvalue>
</entry>
<entry name="secondary_color" mtime="1276168926" type="string">
    <stringvalue>#01011b1b3636</stringvalue>
</entry>
Комментариев: 0
17.03.2012 08:39


CodeSniffer

 

PEAR расширение CodeSniffer отличный способ для проверки соответствия кода проекта определённому стандарту. Устанавливается следующим образом:

pear install PHP_CodeSniffer
# Если PHP был установлен по нестандартному пути:
sudo ln -s /usr/local/php/bin/phpcs /usr/local/bin/phpcs

Конечно, такой способ установки требует, чтобы PHP был собран сключом --with-pear. После установки можно для удобства прописать следующий алиас в ~/.bashrc:

alias phpcs='phpcs --standard=PEAR --encoding=utf-8'

Для того, чтобы создать свой стиль, нужно создать в папке

/usr/local/php/lib/php/PHP/CodeSniffer/Standards

папку с названием совоего стиля, например MegaStyle :). В этой папке создать файл ruleset.xml. Например, чтобы создать стиль содержащий PEAR-стандарты, но добавить uppercase ключевые слова, TODO предупреждения и убрать стандарты комментирования нужно прописать:

<?xml version="1.0"?>
<ruleset name="MegaStyle">
 <description>A custom coding standard</description>

 <!-- Include the whole PEAR standard except LowerCaseConstant and FileComment -->
 <rule ref="PEAR">
  <exclude name="Generic.PHP.LowerCaseConstant"/>
  <exclude name="PEAR.Commenting.FileComment"/>
 </rule>

 <!-- Include some additional sniffs from the Generic standard -->
 <rule ref="Generic.PHP.UpperCaseConstant"/>
 <rule ref="Generic.Commenting.Todo"/>

</ruleset>
Комментариев: 0
17.01.2012 06:59


Собираем PHP 5.3.9 на OpenBSD под AMD64

 

Из PECL-библиотек использую bbcode-1.0.2, crack-0.4, eaccelerator-0.9.6.1, svn-1.0.1, translit-0.6.1. После скачивания, распаковки и переименования папок этих расширений устанавливаем переменные окружения:

export PHP_AUTOCONF=/usr/local/bin/autoconf-2.13
export PHP_AUTOHEADER=/usr/local/bin/autoheader-2.13
export PHP_AUTOMAKE=/usr/local/bin/automake-1.4
export CFLAGS="-O3 -march=k8 -fomit-frame-pointer -pipe"
export CXXFLAGS="-O3 -march=k8 -fomit-frame-pointer -pipe"

Далее конфигурируем PHP:

rm configure config.cache && ./buildconf --force
./configure --disable-debug --build=amd64-server-openbsd4.9 --target=amd64-server-openbsd4.9 --host=amd64-server-openbsd4.9 --disable-short-tags --with-pear --with-bz2=/usr/local/lib --with-curl --with-libdir=lib --with-jpeg-dir=/usr --with-png-dir=/usr/local --with-freetype-dir=/usr/local/lib --with-xpm-dir=/usr/X11R6 --with-t1lib=/usr --enable-gd-native-ttf --with-gmp --with-openssl --with-openssl-dir=/usr --with-kerberos=/usr/local --with-pspell --with-enchant --with-zlib --enable-re2c-cgoto --with-layout=GNU --enable-exif --enable-calendar --without-sqlite --enable-mbregex --enable-cli --enable-fpm --with-fpm-user=www --with-fpm-group=www --disable-magic-quotes --enable-bcmath --enable-ftp --with-gd --enable-mbstring --with-mcrypt --with-mysql=/usr/local --with-mysql-sock=/var/run/mysql/mysql.sock --disable-embedded-mysqli --with-mysqli=/usr/local/bin/mysql_config --with-pdo-mysql=/usr/local --with-snmp --enable-soap --enable-wddx --enable-sockets --with-tidy --with-xsl --enable-zip --enable-zend-multibyte --with-gettext --with-mhash --enable-bbcode --with-svn --with-crack --enable-translit --with-ldap --with-ldap-sasl --enable-intl --enable-eaccelerator --with-eaccelerator-shared-memory --with-eaccelerator-userid=www --with-iconv=/usr/local

Собираем:

make && make install

На случай, если потом понадобится вручную удалить вот  пути установки:

Installing PHP SAPI module:       fpm
Installing PHP CLI binary:        /usr/local/bin/
Installing PHP CLI man page:      /usr/local/man/man1/
Installing PHP FPM binary:        /usr/local/sbin/
Installing PHP FPM config:        /usr/local/etc/
Installing PHP FPM man page:      /usr/local/man/man8/
Installing PHP FPM status page:      /usr/local/share/php/fpm/
Installing build environment:     /usr/local/lib/php/build/
Installing header files:          /usr/local/include/php/
Installing helper programs:       /usr/local/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/share/pear/
[PEAR] Archive_Tar    - installed: 1.3.7
[PEAR] Console_Getopt - installed: 1.3.0
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util       - installed: 1.2.1
[PEAR] PEAR           - installed: 1.9.4
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/share/pear to your php.ini include_path
/home/web/src/php-5.3.9/build/shtool install -c ext/phar/phar.phar /usr/local/bin
ln -s -f /usr/local/bin/phar.phar /usr/local/bin/phar
Installing PDO headers:          /usr/local/include/php/ext/pdo/
Комментариев: 0
15.01.2012 03:50


Git + Doxygen + progect version

 

В svn есть возможность при коммите подменять ключевые слова $Log$, $Date$, $Author$ на соответствующие значения текущего коммита. Во многих случаях использование этого функционала очень удобно. К сожалению, git реализация подобного функционала связана  с некоторыми сложностями. Поэтому возникла идея написания скрипта, который перед  заливкой файлов git-проекта на хостинг произведёт замены ключевых слов на соответствующие значения. Например:

\author
\date
\version

после обработки становились:

\author A.Yancharuk 
\date 05.01.2012 09:15:05
\version v.1.003RC1

Так же было бы удобно чтобы в коде определённой переменной присваивалось значение текущей версии проекта. Например, для PHP:

// Current progect version
$progect_version = "";

после обработки скриптом:

// Current progect version
$progect_version = "v.1.003RC1";

Так же было бы здорово не ограничивать функционал скрипта только PHP. Чтобы подобную замену легко можно было использовать и в С, С++, shell и т.д.

Результат можно скачать по ссылке.

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

git_keywords.sh all  # Обработка всех файлов проекта
git_kyewords.sh      # Обработка файлов предыдущего коммита

Пример использования скрипта:

# Делаем коммит
git commit -ae

# Используем тег для обозначения версии проекта
git tag -a v.1.32

# Замена всех ключевых слов в файлах предыдущего коммита
git_keywords.sh

# Удаляем старую и генерим новую документацию по проекту
rm -rf ~/documentation && doxygen ~/doxygen.progect.cfg

# Заливаем новую версию проекта на хостинг
rsync -avr -e "ssh" /home/user/www/* user@host:/home/user/www/

# Откатываем все изменения произведённые скриптом
git reset --hard HEAD

Несколько предусловий для корректной работы скрипта:

  • Пользователь, от имени которого запускается скрипт, должен иметь 'Full name'.
  • В файлах проекта должны присутствовать следующие шаблоны: '\date', '\author', '\version',  'precommit_version = ' (без "'" символов).
  • Шаблоны замены должны располагаться в конце строки т.к. замена будет произведена от совпадения до EOL.
  • Перед использованием скрипта нужно убедиться, что в проекте используются git tags. Номер версии берётся именно из тегов.
  • Скрипт должен запускаться в корневой директории проекта. Запуск из других папок не предусмотрен.
  • При необходимости нужно добавить расширения файлов, в которых будет вести поиск соответствий. По-умолчанию проверяются файлы: *.c *.cpp *.h *.hpp *.php *.inc *.zx
Комментариев: 0
05.01.2012 10:57