К основному контенту

Сообщения

Сообщения за август, 2008

Про налоги немного

Вот в ленте РБК чего нашел: Вопрос о снижении НДС может быть решен в течение месяца Вопрос о возможности снижения налога на добавленную стоимость (НДС) до 12% должен быть решен в течение месяца. Как сообщила журналистам министр экономического развития РФ Эльвира Набиуллина по итогам совещания по вопросам долгосрочного развития РФ в Новоогарево, соответствующее поручение дал сегодня профильным ведомствам премьер-министр РФ Владимир Путин. По словам Э.Набиуллиной, по итогам рассмотрения проекта Стратегии социально-экономического развития России до 2020г. "дан один месяц на доработку... Читать далее > РБК. Финансы Снижение НДС – это, конечно, хорошо. Но лучше бы они про ЕСН чего-нибудь придумали. А то рассказывать всем, что у нас один из самых низких подоходных налогов (НДФЛ) все могут, а про то, что предприятие, чтоб эту зарплату заплатить отчисляет государству еще 30% в виде Е...

Значение именованного параметра

Совсем крошечный метод, который можно поместить в AppController. Возвращает значение именованного параметра, или null , если такого параметра нет. Просто чтоб не повторять одинаковый код в разных методах. /************************************ * Returns a value of named parameter * or null if it isn't exists ************************************/ protected function named($paramName) { if (!array_key_exists($paramName, $this->params['named'])) { return null; } return $this->params['named'][$paramName]; }

Яндекс изменил принцип подсчета количества показов рекламных объявлений

В новостях Яндекс.Директа вот что написано: С 21 августа 2008 года на сайтах-партнерах Рекламной сети Яндекс учитывает показы только реально увиденных пользователями блоков объявлений Яндекс.Директа. То есть, если блок объявлений Яндекс.Директа расположен, например, внизу страницы, показ объявления будет засчитан при условии, что пользователь не только загрузил страницу, но и реально просмотрел страницу до самого низа. Это, несомненно, хорошая новость. Вот только интересно – а как? Как они отслеживают, что блок показан? Будет время, поковыряюсь файрбагом. :-)

Составные первичные индексы и CakePHP

Общеизвестный факт: CakePHP не поддерживает составные первичные индексы. Разработчики предлагают добавить в качестве первичного индекса поле id, а составной индекс из нескольких полей просто сделать уникальным. Это, в общем-то, разумно — первичный индекс используется в моделях для установления и проверки связей, поэтому добавление процедур для работы с составными индексами неплохо увеличит объем кода, что, в свою очередь, скажется на производительности. Более того, использование составных индексов в качестве первичных — редкое явление, хотя я сходу придумал пару ситуаций когда это оправданно. Схема с добавлением еще одного поля, предлагаемая разработчиками Cake неплохо функционирует, однако контроль за уникальностью составного индекса перекладывается на веб-разработчика. Для определения, вставляется-ли новая запись (INSERT…) или обновляется старая (UPDATE…) при вызове из метода save(), Cake поступает очень просто: продеряет наличие в элемента массива $this->data[‘Model’][‘id’]...

Используем TreeBehavior в CakePHP 1.2

Это вовсе не полное руководство, а пара замечаний к практическому использованию. TreeBehavior – весьма полезный компонент CakePHP, реализующий паттерн Nested Sets для указанной модели. Если что-то непонятно, то вот ссылки: Про паттерны древовидных структур Что такое Behavior в CakePHP 1.2 TreeBehavior TreeBehavior позволяет хранить несколько корневых элементов, у которых родительский id равен NULL. Не поддавайтесь искушению – для себя сделайте отдельный корневой элемент. Большинство функций, например Model::children не работают с идентификатором записи равной NULL. Поэтому, если возникнет необходимость получить всех потомков корня, придется сначала выбрать самостоятельно все элементы с parent_id=NULL, а потом для каждого из них вызвать Model::children(). То есть, если создается, скажем, структурированный каталог сайтов, не надо поддаваться искушению добавить основные разделы, как корневые – создайте сначала “совсем-совсем” корневой элемент с именем, скажем, ROOT,...