Flash сообщения 2

Как и обещал, вернулся к flash сообщениям. Переделаем его на статические методы. Итак, немножко теории.
Статические методы могут вызываться без создания экземпляра класса (объекта), при объявлении метода указывается ключевое слово static. Точно так же объявляется и статический атрибут класса. Continue reading

Как найти BOM

Если Вы используете utf, то встречались с таким символом, как BOM (Метка порядка байтов).  Довольно бессмысленный символ при использовании utf-8, к которому неприемлим этот самый порядок.

Всё бы ничего, но этот лишний символ в начале файла приносит много проблем, когда попадает в вывод скрипта и происходит бом на сайте: не работает js, проблемы с куками и сессиями, просто непонятный символ на экране…. А уж редакторов, любителей вставить сей злосный символ куда не надо, предостаточно. Всегда проклинал блокнотоподобные редакторы, но изредко для быстрой правки использую notepad++. Уже сотню раз собирался выбросить его из-за дурацкого автокомплита, который даже тег <?php не позволяет нормально писать. Но злосный BOM стал его окончательным преговором, надо же при редактировании плагина сей злосный символ попал в плагин контактной формы, а в итоге у меня отвалился javascript в редакторе, я долго не мог понять, пока не включил консоль ошибок в любимом Operaи не вычислил злоумышлинника. Даль любимый Total Commnder и поиск файлов с текстом \xEF\xBB\xBF , для этого нужно отметить RegEx (2).

Asta la vista baby

Новая версия Zend Framework — 1.7

Официальный список обновлений:

  • Zend_Amf with support for AMF0 and AMF3 protocols
  • Dojo Toolkit 1.2.1
  • Support for dijit editor available in the Dojo Toolkit
  • Zend_Service_Twitter
  • ZendX_JQuery in extras library
  • Metadata API in Zend_Cache
  • Google book search API in Zend_Gdata
  • Preliminary support for GData Protocol v2 in Zend_Gdata
  • Support for skip data processing in Zend_Search_Lucene
  • Support for Open Office XML documents in Zend_Search_Lucene indexer
  • Performance enhancements in Zend_Loader, Zend_Controller, and server components
  • Zend_Mail_Storage_Writable_Maildir enhancements for mail delivery
  • Zend_Tool in incubator
  • Zend_Text_Table for formatting table using characters
  • Zend_ProgressBar
  • Zend_Config_Writer
  • ZendX_Console_Unix_Process in the extras library
  • Zend_Db_Table_Select support for Zend_Paginator
  • Global parameters for routes
  • Using Chain-Routes for Hostname-Routes via Zend_Config
  • I18N improvements
    • Application wide locale for all classes
    • Data retrieving methods are now static
    • Additional cache handling methods in all I18N classes
    • Zend_Translate API simplified
  • File transfer enhancements
    • Support for file elements in subforms
    • Support for multifile elements
    • Support for MAX_FILES_SIZE in form
    • Support for breaking validation chain
    • Support for translation of failure ,messages
    • New IsCompressed, IsImage, ExcludeMimeType, ExcludeExtension validators
    • Support for FileInfo extension in MimeType validator
  • Zend_Db_Table_Select adapater for Zend_Paginator
  • Support for custom adapters in Zend_Paginator
  • More flexible handling of complex types in Zend_Soap

Радует появление ZendX_JQuery, неужели будет поддержка jQuery. Ну и обязательно попробую Zend_ProgressBar — прогрес бар для загрузки файлов, наверняка реализовано через apc, посмотрим что разработчикам насоветовали сами создатели php. Добавили поддержку пэйджинга в Zend_Table, ура товарищи, жаль что до этого так долго доходили.

Фреймворк двигается, только неизвестно куда. Даже на сайте в шапке до сих пор висит 1.6, как всегда, на детали плевать :(

Свой шаблонизатор 2

В первой части мы по всем правилам ООП создали шаблонизатор, теперь наростим его мощь, будем делать это двумя способами:

  1. Расширая класс Amdy_Templater
  2. С помощью классов-помощников.

Continue reading

Свой шаблонизатор

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

Обределимся с минимумом:

  1. Передать переменную в шаблонизатор
  2. Взять переменную из шаблонизатора
  3. Отобразить шаблон

Continue reading

Кросбраузерная вёрстка

Я не верстальщик и никогда им не был, но периодически приходитсядобавлять разметку в существующую вёрстку. Есть катигория вёрсток, в которой добавления нового превращается в ад. А избежать этого в большинстве случаев очень легко.

Каждый браузер обладает своими багами-фичами и норовит отобразить элемент по своему. Бороться с этим не так трудно, если всё нужное было сделано на первоначальном этапе. Как заставить отображать одинково и не использовать видеье браузера? Нужно запретить отображать по своему и сказать как.

Итак запрещаем. ДЛя этого используем «ластик», который сбрасывает спорные моменты. В css прописываем:

* {magin: 0px; padding:0px; }

Так мы избавляемся от основной проблемы — разных отступов.

img {border: none; }

А так, фиксим отображение картинок.

Теперь можно продолжать магию, но важно помнить, что довёрстывать возможно будет человек не знакомый с вашими планами. Прописывая стили нужно стараться как можно уже описать круг их применения.

Например, p {padding-left:10px;}, вроде удобно, но если затем придётся вставлять абзац без отступа, то сложно догадаться, а почему это отступ слева появился. Куда нагляднее p.paddingLeft10 {padding-left:10px;}

А ещё здорово помогают заготовки типо

pl10 {padding-left:10px;}
pr15{padding-right:15px;}
<p class="pl10 pr15">text</p>

Вот с таким минимумом куда приятнее иметь дело и скорость возрастает вразы.

Flash сообщения

Часто бродя по сайтам и заполняя формы встречаю некоторые типичные недоработки при обработке форм.
Например, после обработки забывают сделать редирект, в итоге при нажатии «Обновить», данные посылаются повторно, что очень неприятно.
Поэтому, не забываем

header('Location: ' . $url);

Continue reading

Чёрный пиар. Сокрытие доходов и неуплата налогов гражданами белоруси.

Недавно на Хабре прочёл пост о девушке, которая решила бороться с незаконными доходами фрилансеров и предлагает сдавать сих бандитов. Естественно на блог ломанулись кучи народа в основном чтобы обидеть ангелочка.
И практически сразу начали появляться ссылки, в том числе на фрилансерские сайты и на скачку фильмов. Плюс была интересная статья о единстенном «чесном» фрилансере, зайдя по ссылке полез посмотреть форму обратной связи, оказалось «обязательные» поля не такие уж и обязательные, о чём я оставил комментарий. Видимо я был не один и статью побыстренькому убрали. На этом этапе я убедился, что проект носит вовсе не моральный характер, а желание пропиариться. Не знаю, девушка это или группа людей, но акция явно удалась. Игра на нелюбви к государству и нежелании делиться сработала.
В вопросе налогообложения блогерша явно не разбирается и привела компрометирующий пример с братом (Оплата налогов с суммы, полученной “оттуда”), который якобы делает переводы и при оплате через Wester Union у него снялись налоги и всё, он святой фрилансер. У меня был неприятный опыт с налоговой по данному вопросу. Пришлось покататься и пообщаться с работниками данного органа. Плюс была парочка замечательных комментариев на эту тему. Официально её брат не только не платит налоги, но и к тому же, незаконно занимается предпринимательской деятельностью.
На этом пиарщица решила не останавливаться, ведь постепенно блог стал остывать, и она бросила новую кость. Как известно, белорусский президент, не смотря, на 87% голосов на выборах является непопулярным героем, вот Вам и новая статья – «Президента не смейте трогать!».

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

Все, а мне пора заняться незаконным зарабатываением денег.