Pull to refresh
9
0
lexabug @lexabug

User

Секс, наркотики и убийства: смысл англоязычных песен, который мало кто замечает

Возрастные ограничения — от 12+. Ну да, рановато для минета. Но и в тексте прямым текстом об этом вроде не говорится ;)

Секс, наркотики и убийства: смысл англоязычных песен, который мало кто замечает

Вот вам отличный кавер на известный трек из NFS https://youtu.be/TLeZ-NcjfkQ. Если не вдаваться в текст, то все довольно замечательно. А текст песни про минет...

CleverStyle CMS — обзор для разработчика

еще рекомендую __sleep и __wakeup сделать приватными, чтобы нельзя было копировать синглтоны при помощи сериализации

CleverStyle CMS — обзор для разработчика

А без global никак?

Работа с памятью (и всё же она есть)

Познавательно, спасибо за статью!

Какой дебаггер для PHP вы используете и почему?

Видать за время моего пользования Zend studio не довелось как-то им воспользоваться =)

Какой дебаггер для PHP вы используете и почему?

Раньше пользовался Zend debugger, т.к. он был в комплекте с Zend studio.
А теперь из-за того что в компании стараемся использовать open-source продукты (Net Beans, Eclipse) стал пользовать xdebug. Он даже как-то поудобнее мне показался:
1. Поставл точку останова, тыкнул хелпер в firefox, запустил сессию дебага и наслаждаешься
2. Более приятные var_dump и сообщение об ошибках
3. Плюс есть профилировщик

Как обрабатывать Fatal Error в PHP

Как оказалось, нужно было отключить xdebug. Он меняет html фатала =)

Как обрабатывать Fatal Error в PHP

у меня 5.2.10

Я думаю, что стоило описать полность при каких условиях работает сей код.
Указать каие именно настроки нужно включить/выключить в php.ini, чтобы получить желаемый результат

Как обрабатывать Fatal Error в PHP

html_errors On
output_buffering 4096

какие еще нужны настроки?

Как обрабатывать Fatal Error в PHP

первым же делом проверил приведенный пример через браузер.
Строчки «Program still executing....» я так и не увидел, зато "(! ) Fatal error: Call to undefined function ololo() in /home/www/test/fatal.php on line 59" светилась во весь экран

Как обрабатывать Fatal Error в PHP

Такое, как мне кажется ловит только runtime фаталы. А если будет фатал на этапе парсинга кода, то это не спасет

Квест на хабре

А еще на картинке изображено поле поиска, то что сверху справа, но кнопка на картинке похоже на Enter, а на сайте она с простой стрелкой…

Квест на хабре

Квест на хабре

Это кто-то видел в css?
/* Внутренний голос */

.i-am-your-father-luke {

display: block;

clear:both;

padding:.6em 0;

border: none;

font: normal 40px/110% Arial,sans-serif;

color: #cc9;

letter-spacing: -2px;

}

/* НЛО прилетело и написало */

.ufo-was-here {

margin-bottom: 20px;

font: normal 16px/110% Verdana,sans-serif;

color:#666;

}

Пространства имен в memcahced

Возможно, ничем, если ты не собираешься помечать в кеше целые пространства имен как недействительные одним вызовом memcached->increment(), а постоянно хранить все значения $key, чтобы потом к ним всем применить memcache-delete(), или предпологать какие ключи у тебя уже есть в кеше.

Смотри первое предложение, второго абзаца.

Пространства имен в memcahced

да реализация такого механизма на уровне самого расширения, несомненно лучше нежели выстраивать самому весь фугкционал. И меньше писанины, и работает быстрее. Но, согласитесь, если нет возможности на хостинге управлять расширениями, то о патче и речи быть не может.

Закрепляем jQuery — 25 отличных советов

Спасибо, познавательно! =)

Наследование шаблонов в Smarty

нашел еще пару интересных особенностей этого решения.
Приведу реальный пример из своей практики.

У меня есть класс Application. Он хранит сообщения об ошибках (например неправильно заполнена форма) во внутреннем массиве $_messages. Сообщения добавляются в массив следующим методом:
    public function addMessage($text, $type = 'Error') {
        if (empty($text)) return true;
        
        if (empty($type))
        $type = 'Error';
        $this->_messages[$type][] = $text;
        return true;
    }

А извлекаются следующим методом:
    public function getMessages($type = 'Error') {
        if (empty($type)) {
            $type = 'Error';
        }
        $aMessages = isset($this->_messages[$type]) ? $this->_messages[$type] : false;
        $this->_messages[$type] = null;
        return $aMessages;

    }


А выводятся эти сообщения в шаблоне _errors.tpl, который инклудится в основном шаблоне layout.tpl, таким вот образом:
{assign var="aFailureMessages" value=$Application->getMessages('Error')}
{assign var="aSuccessfulMessages" value=$Application->getMessages('Success')}
{assign var="aInformativeMessages" value=$Application->getMessages('Informative')}

{if $aFailureMessages || $aSuccessfulMessages || $aInformativeMessages}
    <table width="100%" cellspacing="0" cellspacing="0" border="0">
        {if $aFailureMessages}
        <tr>
            <td class="error_box_red">
                {section name=failure loop=$aFailureMessages}
                    {$aFailureMessages[failure]}
                {/section}
            </td>
        </tr>
        <tr><td> </td></tr>
        {/if}

        {if $aSuccessfulMessages}
        <tr>
            <td class="error_box_green">
                {section name=success loop=$aSuccessfulMessages}
                    {$aSuccessfulMessages[success]}
                {/section}
            </td>
        </tr>
        <tr><td> </td></tr>
        {/if}

        {if $aInformativeMessages}
        <tr>
            <td class="error_box_blue">
                {section name=informative loop=$aInformativeMessages}
                    {$aInformativeMessages[informative]}
                {/section}
            </td>
        </tr>
        <tr><td> </td></tr>
        {/if}
    </table>
{/if}


Т.е. логика работы этого механизма такова, что если сообщение было выведено для просмотра значит его уже не нужно выводить.

Но каково было мое удивление, когда применяя приведенный здесь механизм наследования шаблонов, я не увидел ни единого сообщения, добавленного в Application.

В ходе отладки выяснилось, что метод getMessage вызывается по 2 раза на каждый тип сообщений, т.е. шаблон рендерится дважды!!!
Если посмотреть документацию smarty по блоковым функциям, коими являются smarty_block_extends и smarty_block_block, то они вызываются по два раза, при открытии и закрытии соответствующих тегов smarty {extends} и {block}.

В случае с smarty_block_extends дважды вызовется метод $smarty->fetch!!! вот тут собака и порылась. Таким образом, родительский шаблон рендерится дважды. Но это не оптимально — раз, и приводит к печальному результату с моими сообщениями — два.

Чтобы этого избежать, нужно рендерить родительский шаблон всего лишь один раз, когда у нас имеются данные для подстановки в теги {block}, когда был обработан шаблон-потомок, а именно во время второго вызова smarty_block_extends.

Внутри функции smarty_block_extends ставим проверку вида:
    if (!is_null($content)) {
        return $smarty->fetch($params['template'], ...);
    }
    return false;


Казалось бы, проблема решена, но! Во время переназначения содержимого блоков в таком случае данные push'атся в обратном порядке, т.е. содержимое блока из шаблона-наследника будет не на ВЕРШИНЕ стека, а на его ДНЕ. Т.е при получении содержимого блока при помощи метода getBlock, мы получим значение блока из родительского шаблона.

Решение: заменить в методе setBlock
array_push($this->_blocks[$key], $value);

на
array_unshift($this->_blocks[$key], $value);

Что делать, если ваша карта выглядит так?

Есть вопрос! Нужно делать почти такое же но с областями покрытия. К примеру, области отображаются кругами (реализуется через GPolygon), естественно их размеры пропроциональны масштабу, т.е. покрывает одну и ту же площадь земной поверхности, не так как у маркеров(размер маркера всегда один и тот же не зависимо от масштаба).
Так вот, задача состоит в том если на карте нанесено огромное количество таких областей, как их объединить в группу или аппроксимировать, чтобы не нагружать пользовательскую машину. Эксперимент для 10000 областей положил браузер на 5 минут....

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity