Mar 17

Сегодня вышел Zend Framework версии 1.5. Почитать про этот релиз поподробнее можно здесь. Самые полезные нововведения, на мой взгляд, это Zend_Form и Zend_Layout (насколько я помню, до этого в релизах его не было).

Параллельно появилось два туториала для начинающих - Getting Started with Zend Framework 1.5 (до этого туториал покрывал лишь версию 1.0, насколько я помню) и Zend Framework QuickStart. К сожалению, обещанный именно к этому релизу Zend_Build в сам релиз не попал, но в инкубаторе он есть, так что надежда на скорый выпуск этого компонента всё же остается. Посмотрим, посмотрим.

PS. Сайт Zend Framework’а также обновился. :) 

written by FX Poster \\ tags:

Mar 14

Отжиг

Дима отжег!

written by FX Poster \\ tags:

Mar 12

С момента прочтения Design Patterns прошло уже довольно много времени и сейчас я вам хочу рассказать о книге, которую читал довольно долгое время (у меня чтение книг обычно происходит, когда я засыпаю - читаю по пол часа в кровати уже), и которая мне очень понравилась - это “Рефакторинг с использованием шаблонов” Джошуа Кериевски:

Как можно понять из названия - книга рассказывает о рефакторингах, в которых используются шаблоны, а именно о том, в каких случаях можно (или нужно) использовать определенный шаблон, и, самое главное, как его ввести в существующую систему. Каждый рефакторинг описывается следующим образом:

  • Описывается ситуация, которая существует к некоторому моменту разработки системы, описываются проблемы, и в чем может помочь определенный шаблон в данном случае
  • Описывается введение шаблона в систему (т.е. применение рефакторинга) как последовательность более мелких (очевидных или описанных в книге Мартина Фаулера “Рефакторинг”) рефакторингов
  • Приводится пример, в котором эта последовательность выполняется
  • Приводятся плюсы и минусы данного рефакторинга

Мне книга очень понравилась - всё просто, понятно (для тех кто в теме про шаблоны ;)) и очень интересно. Читается на ура. И хотя многие рефакторинги, на первый взгляд, выглядят достаточно очевидными, всегда можно допустить где-нибудь ошибку, а благодаря точным последовательностям применения рефакторингов - вероятность ошибки становится очень мала.

В общем и целом, книгу - однозначно себе в коллекцию!

written by FX Poster \\ tags:

Mar 11

В общем, сегодня купил билеты - значит точно поеду. Надеюсь повстречать как можно больше читателей моего блога. ;) В частности, хотелось бы увидеть местных (киевлян), которых я заочно знаю - DM и Piranha.

written by FX Poster

Mar 10

Нежданно-негаданно мой блог дорос до PR5!

PS. Помню, где-то месяца 4 назад мне сказали буквально следующее: “PR4 - это еще ладно, а вот PR5 - это нужно уже сильно постараться. Вряд ли ты его просто так получишь.”. Тем не менее, это произошло, и для достижения этого рейтинга я специально ничего не делал.

written by FX Poster \\ tags:

Mar 09

IE6 очень плохо работает с изображениями в PNG-формате, которые имеют альфа-канал (проще говоря, прозрачность) - он просто не учитывается. Решить проблему довольно просто, самый удобный вариант - воспользоваться “библиотекой” jQuery.ifixpng, которая сделает всё за вас. Единственный недостаток (хотя, кому как) - зависимость от jQuery. Тем, кто пользуется другими библиотеками, в частности, PrototypeJS (а именно она по умолчанию используется в таких фреймворках как RubyOnRails и Symfony), воспользоваться этой “библиотекой” не получится. Именно для них я и попытался переписать эту библиотеку.

Prototype.Browser.Version = (navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1];
Prototype.FixPNG = { Pixel: 'images/pixel.gif' };

Element.addMethods({
  fixpng: (Prototype.Browser.IE && Prototype.Browser.Version < 7) ? function(element) {
    function fixPosition(element) { if(element.style.position != 'absolute') element.style.position == 'relative'; }
    function filter(src) { return "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='" + src + "')"; }
    var elementName = element.nodeName.toLowerCase();
    if(elementName == 'img' || elementName == 'input') {
      if(element.src && element.src.match(/.*\.png([?].*)?$/i)) {
        element.setStyle({
          filter: filter(element.src),
          width: element.getWidth(),
          height: element.getHeight()
        });
        element.src = Prototype.FixPNG.Pixel;
        fixPosition(element);
      }
    } else {
      var image = element.currentStyle.backgroundImage;
      if (image.match(/^url\(["']?(.*\.png([?].*)?)["']?\)$/i)) {
        element.setStyle({
          filter: filter(RegExp.$1),
          backgroundImage: "none"
        });
        element.children().each(fixPosition);
      }
    }
  } : function(element) {}
});

Зависимости:

  • Библиотека PrototypeJS
  • В директории images должен лежать “пустой” файл pixel.gif (его можно взять здесь, или, если вас не устраивает такое расположение файла - просто измените переменную Prototype.FixPNG.Pixel)

Пример использования:

Event.observe(window, 'load', function() {
  $$('.test, #test').each(function(element){ element.fixpng() });
}, false);

PS. Также советую почитать раздел Known Limitations на странице jQuery.ifixpng.

written by FX Poster \\ tags: , ,

Mar 08

Милейшие девушки! Поздравляю вас с вашим праздником! Желаю одного - чтобы вы почаще радовали нас, мужчин! :)

written by FX Poster

Mar 08

Вчера откуда ни возьмись у меня на блоге стали появляться новые посетители, причем так, что счетчик яндекса она перевалил за отметку в 350 посетителей (обычно в день ко мне приходит ~150)… Т.к. за яндексом уже замечено перевирание данных - проверил всё в Google Analytics. Как ни странно, но оказалось, что да - яндексовский счетчик не врет, причем довольно много переходов было с… news2.ru, чем я был очень удивлен - ничего никуда не писал, в блоге никаких суперинтересных заметок не было (как мне кажется) в последнее время… Как оказалось, кому-то понравилась моя заметка про IE8 и я попал на news2.ru и мой пост отметили аж 34 человека :).

written by FX Poster

Mar 07

Позавчера вот вышла бета IE8, а сегодня мне вот хочется поделится с вами впечатлениями об этом продукте… Для начала можно почитать про его новые функции (перевод статьи). Могу отметить, что лично мне пока что не сильно понятно, чем их WebSlices отличаются от RSS, а также то, что Activities при должной поддержке (добавления туда сервисов Google, Flickr и иже с ними) будут пользоваться, я думаю, достаточно большим спросом.

Мне же, как web-разработчику, больше интересно то, как IE8 будет поддерживать стандарты и будет ли нужно под него “дорабатывать” верстку, как мы сейчас это делаем с IE6/7. Для этого обратимся к “тестам”, которые провел Вадим Макеев (как, впрочем и абсолютное большинство поставивших IE8, наверное). Итак:

CSS 3 Selectors Test

IE8 проходит 335 из 578 тестов (табличка результатов остальных браузеров, с тех пор мало что изменилось). Т.е. немного больше, чем IE7, но меньше чем мой любимый FF (2.0). Стоит отметить поддержку селекторов :before и :after - теперь они поддерживаются полностью, что, несомненно, радует. Больше, лично для меня, этот тест ни о чем не говорит. Не поддерживает IE8 селекторы - ну и фиг с ними, я их и так почти не использую (в смысле - экзотические), к тому же у остальных браузеров картина хоть и лучше, но всё равно не особенно радужная.

ACID2

Для меня на данный момент - это самый главный тест. Заметим себе заранее - FF2 этот тест не проходит вообще. Так вот, IE8 этот тест проходит замечательно (Вадим, тестить нужно вот здесь). Из этого можно сделать следующие выводы:

  • Поддержка стандартов движком IE8 очень неплоха
  • Скорее всего насчет хаков под следующие версии IE можно будет не беспокоится (хотя, кто знает…)

ACID3

Как мы все уже знаем, этот тест тестирует не только (и не столько) HTML + CSS, а еще и поддержку нововведений в JS, работу с SVG и XML. Т.е. ориентирован на будущее. Здесь IE8 не белещет способностями (но хоть рендерит картинку начальную более-менее правильно), но… На мой взгляд, это не столько минус, сколько “не плюс”… Пусть к стандартам в IE проложен, остальное только дело времени.

Подождем - увидим.

PS. Результаты тестов (картинки всякие) можно посмотреть у Вадима в посте - не хотелось дублировать это всё.

written by FX Poster \\ tags:

Mar 07

… статья под названием “За что я не люблю С++“. Лично мне как человеку знающему язык C++ достаточно хорошо статья очень понравилась и я практически во всем согласен с её автором. C++ действительно очень сложный язык, который к тому же является очень негибким на этапе выполнения (да, да, скорость работы, я понимаю…), и имеющий просто потрясающе огромное количество мелких ловушек, при встрече с которыми можно стать в ступор на долгое время.

PS. Линк на статью нашел у Bolk’а.

PPS. А есть ли аналоги C++, кроме D? Я имею ввиду, которые бы компилировались в нативный код и были такими же эффективными (или хотя бы похожими по эффективности).

written by FX Poster \\ tags: