Category Archives: Programming
Контролируемое скачивание (ограничение скорости отдачи файлов)
Наткнулся в сети на интересную статью о том, как ограничить скорость скачивания файлов с сервера. Код на Python (Django), но если язык не знаком, то в качестве алгоритма почитать тоже полезно. Ссылка.
Трассировка PHP-приложений с помощью xdebug
Вот достаточно подробная статья на эту тему. В принципе достаточно написать
1 2 3 4 |
xdebug_start_trace('<Путь-к файлу>.html', XDEBUG_TRACE_HTML); ... ... xdebug_stop_trace(); |
Greasemonkey-скрипт для Redmine
Redmine, конечно, настраиваемый и гибкий, но иногда очень не удобный. Захотелось сделать кнопочку «Взять в работу», которая появлялась бы на странице тикета. Делать плагин долго, просто подключить яваскрипт в шаблон — плохо, проблемы при обновлении Redmine. В итоге решил написать Greasemonkey-скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// ==UserScript== // @name Redmine Ticket // @namespace hc // @include [урл к Redmine]/issues/* // ==/UserScript== var tt = document.createElement('DIV'); tt.innerHTML = "<script>\ var linkInWork = '<a href=\"javascript:void(0);\" onclick=\"setInWork(); return false;\" class=\"icon\">In work</a>';\ $A( $$( '#content .contextual a.icon-del' ) ).each( function( Elem ) {\ Elem.insert( {'after': linkInWork} );\ });\ function setInWork()\ {\ var t = $('loggedas').innerHTML;\ var userId = /\\/users\\/([0-9]*)/.exec(t);\ if ( userId !== null ) {\ userId = userId[1];\ }\ var statusValue = 2;\ setSelectOptionSelected( 'issue_assigned_to_id', userId );\ setSelectOptionSelected( 'issue_status_id', statusValue );\ $('issue-form').submit();\ }\ function setSelectOptionSelected( SelId, Value )\ {\ var sel = $( SelId );\ $A( sel.options ).find( function( option, index ) {\ if( option.value == Value ) {\ sel.selectedIndex = index;\ }\ });\ }\ </script>"; document.getElementById('content').appendChild(tt); |
Добавляет ссылки «In work» в список ссылок вверху и внизу страницы.
Как написать плагин для jQuery
Перепечатка статьи, ссылка на оригинал в конце статьи. За последнее время было много просьб рассказать о том, как написать свой собственный плагин к jQuery. Идя навстречу пожеланиям трудящихся бескрайних полей Интернета – выполняю эти просьбы… Для того, чтобы лучше понять принципы, поставим себе какую-нибудь несложную задачу, имеющую хотя бы минимальную практическую пользу. Давайте вместе напишем …
Полезные вещи в phpUnit
Ниже приведён код теста
PostgreSQL EXPLAIN
При работе с MySql’овским EXPLAIN’ОМ всё просто (а может просто привычно). Postgres предоставляет больше информации, но с ним сложнее разобраться. Далее — вольный перевод статьи про PostgreSQL EXPLAIN (ссылка на оригинал в конце статьи).
Генерация моделей в Symfony 1.4
Я пользуюсь Doctrine. Генерация из созданного ранее файла /config/doctrine/schema.yml состоит из трёх команд:
1 2 3 |
symfony doctrine:build --model symfony doctrine:build --sql symfony doctrine:insert-sql |
Если изменялись названия моделей, то надо запустить ещё и
1 |
symfony doctrine:clean-model-files |
Кстати, при генерации может выводиться ошибка There are no tasks defined in the «doctrine» namespace. Нигде толком не написано, отчего она возникает. Возникает она (по крайней мере, у меня, в Windows) …
Внутренняя переадресация в nginx (красивые урлы)
В апаче есть есть замечательная библиотека — mod_rewrite. При переносе проекта на nginx для сохранения интерфейса и структуры сайта необходимо использовать что-то подобное. Соответствующий модуль для nginx называется ngx_http_rewrite_module. Вот пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
location ~ \.php { if ( !-e $request_filename ) { rewrite ^(.+)$ /index.php break; } fastcgi_pass 127.0.0.1:9900; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME <DOCUMENT_ROOT>$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location = /index.php { fastcgi_pass 127.0.0.1:9900 fastcgi_param SCRIPT_FILENAME <DOCUMENT_ROOT>$fastcgi_script_name; include /etc/nginx/fastcgi_params; } |
Почитать: Официальная документация модуля ngx_http_rewrite_module Пример конфигурации Куча примеров
Создание Excel-файла на php
Допустим, есть массив значений $exportData.
Увеличиваем скорость загрузки сайта используя lazy-load изображений
http://habrahabr.ru/blogs/client_side_optimization/87083/