PHP: метрика времени выполнения функции
Как нам узнать, сколько времени работает функция? Pinba, xhprof, xdebug?
Да, но их нужно ставить на сервер и последние два модуля вносят немалый оверхед. Поэтому использовать их в продакшне нежелательно.
Пинба классная, но нам нужно “вчера” и пока админ раскатывает модуль php нужно как-то извернуться.
Вспомним, что в php все неиспользуемые переменные будут удалены при выходе из функции. Ага!
class Timer {
private $time = 0;
function __construct() {
$this->time = microtime(true);
}
function __destruct() {
$executionTime = microtime(true) - $this->time;
// делаем все, что нам надо: логгируем или еще чего
}
}
Интегрируем в проект.
function foo() {
$timer = new Timer();
// что-то делаем
sleep(5);
// на выходе будет вызван Time::__destructor().
// Так как все объекты уничтожаются
}
foo();
Р? (Декодируем html-entities при помощи jQuery)
javascript; gutter: true; first-line: 1; highlight: []
var decoded = $("<div/>").html(encodedStr).text();
JS: аналог str_repeat
javascript; gutter: true; first-line: 1; highlight: []
function str_repeat($string, $multiplier) { return new Array($multiplier+1).join($string) }
Named: обновляем список корневых dns
Для Fedora/Red Hat
bash; gutter: true; first-line: 1; highlight: []
dig +bufsize=1200 +norec NS . @a.root-servers.net > /var/named/named.ca
AngularJS: Динамический диапазон для select
С сервера приходит максимальное и минимальное значение в выпадающем списке. Нам нужно построить по этим значениям сам список.
Делаем фильтр
angular.module('app').filter('range', function() {
return function(input, min, max) {
min = parseInt(min, 10);
max = parseInt(max, 10);
for (var i = min; i < max; i++)
input.push(i);
return input;
};
});
И делаем динамический селект.
<select ng-model="value" ng-options="item for item in [] | range:min:max"></select>