Category Archives: Administration
Конвертирование проекта из SVN в Git
В fedora linux:
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo yum install git-svn $ cd ~/git-svn-repo $ git svn clone http://[url]/main/trunk/[source] $ git config svn.authorsfile ~/users $ git ~/git-svn-repo ~/git-repo $ cd ~/git-repo $ git remote set-url --push origin [name]@[site]:[repo] // gitorious@git.uncc:mosfm/mos-fm-site.git $ git push origin master |
После этого в ~/git-repo будет «чистый» git-репозиторий. Ссылки: http://www.johnclarkemills.com/2011/01/01/migrate-from-svn-to-git-with-history/ http://gitready.com/beginner/2009/02/04/converting-from-svn.html http://redlinesoftware.com/blog/2008/2/24/converting-subversion-repositories-to-git http://stackoverflow.com/questions/79165/how-to-migrate-svn-with-history-to-a-new-git-repository http://www.jonmaddox.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/ http://stackoverflow.com/questions/7784951/how-to-begin-committing-via-git-to-bitbucket-not-seeing-changes http://lists.debian.org/debian-devel/2011/07/msg00522.html http://git.or.cz/course/svn.html Чтобы слить несколько свн-репозиториев в один, можно воспользоваться советом про subtree merge — http://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories
Конвертирование проекта из SVN в Mercurial
В fedora linux:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ sudo yum install mercurial $ cd ~/converted $ hg convert $ hg help extensions $ hg help config $ sudo nano /etc/mercurial/hgrc [--пишем--] [extensions] convert = $ hg convert http://[url]/main/trunk/source $ cd ~/hg-repo $ hg init $ hg clone ~/converted |
Баги в библиотеке memcached (getMulti)
Долго боролись с багом при использовании Memcached::getMulti в php 5.3.8. Как это было: Сначала данные складываются в кэш под некоторыми ключами, потом происходит считывание
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$cached = cache->getMulti( $cacheKeys ); foreach ( $actions as &$action ) { $actionCacheKey = self::getCacheKey( $action ); if ( array_key_exists( $actionCacheKey, $cached ) ) { $action = $cached[$actionCacheKey]; } else if ( in_array( $actionCacheKey, array_keys( $cached ) ) ) { die( '!!' ); } else { $action = self::factory( $action ); } } |
Так вот, if ( array_key_exists( $actionCacheKey, $cached ) ) не отрабатывает никогда (равно как isset и ! empty). При этом условие else if ( in_array( $actionCacheKey, array_keys( $cached ) ) …
Отчёты о рассылках на ящики mail.ru
http://postmaster.mail.ru/. Небольшое описание — http://habrahabr.ru/company/mailru/blog/138107/.
WebDav и Nginx
WebDav и Nginx — централизованное хранение файлов на удалённом сервере без тяжёлого софта на нём.
Полезные ссылки по capistrano
Официальная wiki мне не понравилась, половина ссылок — битые (тут — основные переменные) Подробная презентация, как сделать свой конфиг shared_path Описание переменных (variables) Лучше лишний раз уточнить, в чём разница между current_path и release_path
Познавательное обсуждение о том, почему всё нужно собирать руками
Тут у человека систематически виснет fpm, попытки это вылечить и самый дельный совет — «собирать нужный софт для production-сервера нужно руками». http://phpclub.ru/talk/threads/%D0%B7%D0%B0%D0%B2%D0%B8%D1%81-fpm.66810/
Проверка dns-записей домена из командной строки
1 |
dig 3dnews.ru ANY |
Выводит все dns-записи, относящиеся к домену. Возились с spf-записями для валидации писем — нужный заголовок выглядит примерно так:
1 |
3dnews.ru. 674 IN TXT "v=spf1 a:3dnews.ru mx ~all" |
DKIM для подтверждения, что почта отправлена с указанного домена
Для борьбы со спам-фильтрами gmail и яндекса, и чтобы доказать, что не верблюд, можно заморочаться и добавить дополнительный заголовок к письму и дополнительную запись в dns. Называется это всё DomainKeys Identified Mail. Очень понятно написано здесь: http://habrahabr.ru/blogs/spam/106589/, генерация ключей: http://www.port25.com/support/support_dkwz.php
Kyoto Tycoon: интересное noSQL хранилище/кэш
Kyoto Tycoon в общем-то аналог MemcacheDB, но некоторые утверждают, что Kyoto Tycoon лучше. Думаем использовать. Там всё просто (через API Memcached):
1 2 3 4 5 6 |
$kyoto = new Memcached();// для persistent: $kyoto = new Memcached( 'heyhey' ); $kyoto->addServer( '127.0.0.1', '22122' );// kyoto // $kyoto->addServer( '127.0.0.1', '11211' );// memcached $kyoto->set( 'my_key', array( 'key1' => array( 1 ), 'key2' => null ) ); $kyoto->get( 'my_key' ); |
Здесь про более старую версию (связка Tokyo cabinet и tokyo tyrant). http://sameerparwani.com/posts/tokyo-tyrant-with-php, http://sameerparwani.com/posts/installing-tokyo-cabinet-and-tokyo-tyrant