Category Archives: Programming

Борьба с утечками памяти в php

$limit = 512; $thresholdDelta = 10; ini_set(‘memory_limit’, $limit . ‘m’); … $memoryThresholdReached = false; $memoryThreshold = ( $limit — $thresholdDelta ) * 1024 * 1024; … while ( $user = $db->plain_fetch( $result ) ) { … // тут работа с данными … // проверка на превышение опасного порога использования памяти if ( ! $memoryThresholdReached && …

Read more

Что такое IIFE

IIFE (Immediately-Invoked Function Expression, «iffy») — немедленно выполняемый функтор. Если не ругаться, то это функция, которая выполняется сразу после объявления. Примеры: (function(){ /* code */ }()); (function(){ /* code */ })(); !function(){ /* code */ }(); // facebook style Очень удобны тем, что не захламляют глобальное пространство переменных, могут использоваться для создания замыканий и т. …

Read more

Очередь на js

Нужно было сделать простенькую очередь, чтобы добавить много колбэков, а потом выполнить последний из очереди по таймауту, отсчитываемому от времени последнего добавления. Очередь получилась простенькая (за полчаса много и не сделаешь). Использование: //опциональное время в милисекундах — таймаут от последнего события var queue = queueFactory( 5000 ); // у меня дёргается скрипт по определённому событию, …

Read more

Как настроить Smarty для удобной работы (+наследование)

Smarty — странноватый и глючноватый шаблонизатор, если сравнивать с Django. Но под php ничего под руку не попалось, чтобы работало из коробки, было просто в настройке, и, к тому же, когда-то давно я его уже ковырял. В общем, нужно было срочно прикрутить шаблонизатор — сделал следующее. В классе, ответственном за вывод: private static function getSmarty( …

Read more

jQuery.deferred

В jQuery 1.5 была полностью переработана модель асинхронных запросов. Теперь они возвращают deferred-объект, содержащий promise-объект, который содержит методы, позволяющие узнать состояние запроса или навесить дополнительные обработчики. promise-Объект содержит методы then, done, fail, isResolved и isRejected. Суть нового подхода состоит в следующем: $.when($.ajax(«/page1.php»), $.ajax(«/page2.php»)).done(function(a1, a2){ // a1 и a2 — аргументы, отвечающие соответственно за запросы к …

Read more

jQuery.delegate

jQuery.delegate и jQuery.undelegate появились в jQuery 1.4.2. Это аналоги .live и .die(). У .live и .die() есть проблемы с, к примеру, вложенными объектами, с встраиванием в цепочки и много ещё. Синтаксис .delegate отличается от .live и, соответственно, .click и т.п. Пример использования: // Using .live() $(«table»).each(function(){ $(«td», this).live(«hover», function(){ $(this).toggleClass(«hover»); }); }); // Using .die() …

Read more

Работа с событиями в jQuery-ui

Если нужно из виджета стриггерить событие, это сделать это можно двумя способами: this.element.trigger( ‘my_event_element’, { option1: true } ); this._trigger( ‘_my_event_widget’, null, { option1: true } ); Допустим, что наш виджет называется MyCoolWidget. Тогда поймать наши события можно так: $( ‘#div’ ).MyCoolWidget(); $( ‘#div’ ). bind( ‘my_event_element’, function( Event, Ui ) { console.dir( Ui ) …

Read more

Способ узнать, какие события забиндены на элементе в jQuery

console.log( $( selector ).data(‘events’) ); Выдаст все события, которые слушаются обработчиками на элементе.

Организация очередей на PHP

Решили использовать Pheanstalk, который представляет собой PHP-клиента для Beanstalk. Простой, чётко работает, всё построено на иерархии исключений, т.е. легко применять. Всё сводится к следующему: $this->queueManager = new Pheanstalk( ‘127.0.0.1’ ); $this->queueManager->useTube(‘my_jobs_1’)->put( $JobData ); $this->job = $this->queueManager->watch(‘my_jobs_1’)->ignore(‘default’)->reserve( 0 ); // 0 — чтобы не ждать, когда появятся новые джобы (чтобы запускать php-скрипт кроном, а не требовать …

Read more

Что почитать, чтобы повысить свой уровень JavaScript

От переводчика: Я думаю многие читали статью Rey Bango — What to Read to Get Up to Speed in JavaScript, но до хабра обсуждение так и не докатилось. Предлагаю закрыть этот пробел и поговорить о хороших книгах, блогах, тренингах и конференциях, посвященных в первую очередь клиентскому JavaScript и клиентской веб-разработке. Чтобы не копипастить оформляю статью в …

Read more