Логирование js-ошибок на сервере
Подсмотрел у разработчиков Yandex простое как пень логирование ошибок клиентской части на сервер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function logError( Message, Url, Line ) { new Image().src = '/monitoring.php?msg=' + encodeUriComponent( Message ) + '&url=' + encodeUriComponent( Url ) + '&line=' + Line; } window.onerror = function ( Message, Url, Line ) { logError( Message, Url, Line ); }; try { // ... } catch ( e ) { logError( e ); } |
Ещё ссылка про логирование ошибок через google analytics — http://blog.gospodarets.com/track_javascript_angularjs_and_jquery_errors_with_google_analytics/ (у меня несколько иная реализация, но идея примерно та же).
БЭМ — система модулей (виджетов) от Яндекс
Интересная реализация клиентских модулей, которая предполагает определённую файловую структуру для шаблонов, css, js и любых других нужных технологий. Естественно, повторное использование. Декларации для автоматической сборки модулей (css, js, шаблонов) написаны на javascript. Есть скрипты для автоматической сборки модулей в страницы. Пример построения сайта от разработчиков — http://video.yandex.ru/users/ya-events/view/302/?ncrnd=6362 Вот ещё видео — тут рассказывается про то, …
Конвертирование проекта из 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/.
Chrome Developer Tools
Решил попробовать сменить браузер разработки с firefox на chrome. Почитал статью про возможности Chrome Developer Tools. Оказывается, там столько интересного есть :)
С чего начать изучение Ruby on Rails
http://net.tutsplus.com/tutorials/ruby/the-best-way-to-learn-ruby-on-rails/ — по шагам рассказывается, как подняться от уровня «никакой» до уровня «могу писать код самостоятельно».
Игры воображения с новыми API для JavaScript
Хороший доклад Гайдара Магданурова про новые возможности бразуеров (Application Cache, Web Workers, Web Sockets, File API, History API, Indexed DB). Ничего революционно нового он не поведал, просто вкратце перечислил и показал примеры. Мне понравилось. Видео — http://vimeo.com/34086427. Слайды — http://www.slideshare.net/gaidar/api-javascript. Дополнительные ссылки: https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
WebDav и Nginx
WebDav и Nginx — централизованное хранение файлов на удалённом сервере без тяжёлого софта на нём.