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>

Пример на jsFiddle

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