• Профили пользователей: плюсы, минусы, подводные камни

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

      Извращаться приходилось всем: не только пользователям джанги, но и самим её core-разработчикам. Помните, например, как в Django 1.2 внезапно стало возможно использовать в поле username символы собаки (@) и точки? Знаете зачем? Чтобы в качестве логинов можно было использовать адреса e-mail.

      Нам, простым пользователям, тоже жилось несладко. Для того, чтобы изменить профиль пользователя, добавив ему какие-нибудь интересных полей — обычная, казалось бы, вещь, да? — приходилось действовать разными способами.
      Интересно?
    • Релиз Django 1.2.2 — security-обновление

        8 сентября 2010 года разработчики Django выпустили релиз 1.2.2 чтобы закрыть уязвимости, позволяющие злоумышленникам устраивать XSS-атаки. По злой иронии, уязвимость к XSS оказалась в коде системы, выполняющем защиту от другого типа атак – CSRF. Система эта принципиально изменилась в версии 1.2 (в предыдущих версиях защита от CSRF не являлась частью ядра фреймворка и была всего лишь подключаемым слоем).
        Читать дальше →
      • Вышел релиз Django 1.2

          Свершилось, товарищи! Несмотря на почти двухмесячную задержку и постоянные переносы даты релиза, сегодня, 17 мая 2010 года, финальная версия 1.2 великолепного фреймворка увидела свет.

          Кратко напомню, какие же произошли самые заметные изменения и дам ссылку на более подробную информацию.

          Читать дальше →
        • Smarty обновился до версии 2.6.22

            В связи с некоей ошибкой в библиотеке PCRE из PHP 5.2, скоропостижно (спустя всего 15 дней после выхода 2.6.21, в котором, наконец, сподобились ввести method chaining) зарелизилась версия 2.6.22 шаблонизатора Smarty. Проблемы, возникающие при «some versions of PCRE» (ц), решились гениально и просто — выкидыванием нафиг самого вкусного изменения прошлого релиза :)

            Официальный CHANGELOG на офсайте.
          • jQuery не спешит признать Google Chrome?

              С момента последнего стабильного релиза jQuery, который состоялся в конце мая сего года, произошло много значительных событий, таких, к примеру, как выход браузеров Firefox 3 и Google Chrome.

              В jQuery есть встроенный объект browser, который выполняет определение сами понимаете чего. На текущий момент (в транке) browser реализуется вот так:

              var userAgent = navigator.userAgent.toLowerCase();
              
              // Figure out what browser is being used
              
              jQuery.browser = {
              	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
              	safari: /webkit/.test( userAgent ),
              	opera: /opera/.test( userAgent ),
              	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
              	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
              };

              Никакого упоминания о Chrome. Нет, я понимаю, конечно, что хром ещё не вышел из глубокой беты, да и в случае чего расширить browser нет никакой проблемы. Непонятно другое: почему сэр Ресиг игнорирует один из самых перспективных браузеров.
            • PHP 5.2.8 Released

                Как все помнят, с релизом PHP 5.2.7 вышла некоторая лажа, версия была убрана, а на официальном сайте рекомендовалось подождать версии 5.2.8. Дождались, товарищи, поздравляю :)

                Справедливости ради надо отметить, что, как обнаружил symbix, исходники PHP 5.2.8 выложили в свободный доступ несколько раньше, чем появился официальный релиз.

                Хотелось бы, кстати, напомнить, что это не первый крупный косяк с релизом PHP5. В прошлый раз версия PHP 5.1.3 в качестве критического обновления вышла в тот же день, что и PHP 5.1.2.

                Так и живём :)
              • Вышел alpha-релиз Smarty 3

                  Оказывается, третьего дня, то есть 17 октября сего года, вышел альфа-релиз многими любимого (и многими же презираемого) шаблонизатора Smarty.

                  Интерфейс шаблонизатора особо не изменился. Это всё те же display(), fetch() и assign(), которые покрывают процентов 99 всех потребностей. Монструознное assign_by_ref() почило в бозе. Туда ему и дорога ;)

                  Внутренности же претерпели более существенные изменения:
                  Читать дальше →
                • День смайлика

                    26 лет назад, 19 сентября 1982 года, программист Скотт Фальман впервые предложил использовать сочетание двоеточия, дефиса и скобок для обозначения эмоций. С днём рождения, смайлики! :-)
                  • Наследование шаблонов в Smarty

                      Когда-то, давным-давно, мне пришлось использовать небезызвестный шаблонизатор Smarty. Сначала я, понятное дело, возмущался и кричал, какая же гадость эта заливная рыба Smarty, а потом «распробовал» и втянулся. Те удобства, которые он давал, с лихвой компенсировали мысли о том, что есть и более быстрые шаблонные движки.

                      Шаблоны я обычно строил с помощью инклюдов: в начале подключался header.tpl, в конце — footer.tpl, в середине ещё что-нибудь нужное. В целом разметка получалась довольно аккуратной, но не проходило ощущение, что не хватает чего-то важного. Окончательно понимание этого чего-то появилось, когда мне случилось написать простенькое приложение на Django. И это «что-то», как все поняли, оказалось наследованием шаблонов. Простая, как и всё гениальное, идея позволяла существенно упростить шаблоны и избавиться от дублирующих блоков.

                      А почему бы не реализовать подобный механизм в Smarty?