AngularJS: реагируем на изменение состояния объекта
Категории:
Разработка
Допустим У нас есть часть шаблона, которая может быть либо отображена, либо скрыта. Нам нужно правильно реагировать на это и рассылать оповещения в скоуп (надо так).
Тогда мы просто берем и начинаем следить за состоянием нужного элемента.
angular.module('app')directive('watchState', function($rootScope) {
return {
restrict: 'A',
controller: function($scope, $element) {
// show. that state was changed by outer source.
// prevent action when no changes in $digest cycle
var toggled = false
$scope.$watch(function() {
if ($element.hasClass('ng-hide')) {
if (!toggled) {
toggled = true
$rootScope.$broadcast('log', 'text is hidden')
}
} else {
if (toggled) {
toggled = false
$rootScope.$broadcast('log', 'text is visible')
}
}
})
}
}
})
Теперь мы можем следить за состоянием отображения любого элемента.
<p ng-hide="hidden" watch-state>some text</p>
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)
Категории:
HowTo
var decoded = $("<div/>").html(encodedStr).text();
JS: аналог str_repeat
Категории:
Разработка
HowTo
function str_repeat($string, $multiplier) {
return new Array($multiplier+1).join($string)
}
Named: обновляем список корневых dns
Категории:
HowTo
Для Fedora/Red Hat
dig +bufsize=1200 +norec NS . @a.root-servers.net > /var/named/named.ca