• Вышла третья бета PIE 1.0

    • Translation
    Предисловие переводчика.  «Костыль» PIE, позволяющий легко и уверенно обеспечить поддержку целого ряда свойств CSS3 во браузерах IE6, IE7 и IE8 (которые в этом смысле без «костыля» оказываются «хромыми» до убожества), давно заслужил горячую, страстную приязнь со стороны многих передовых сайтооформителей, и в этом качестве не раз на Хабрахабре упоминался (последний раз — 13 января 2011 г.). Я решил перевести нижеследующее, пускай и не новое, объявление (выход PIE 1.0 beta 3 состоялся 6 декабря 2010 г.) для того, чтобы в явном виде лишний раз донести до всех заинтересованных читателей весть о том, что в этот год PIE вступает обновлённым и улучшенным. Всем тем, кто впервые начал использовать PIE прошлой осенью или летом, настало время крепко призадуматься, во-первых, об апгрейде PIE (во имя ускорения работы сайтов), а во-вторых, об освоении новых, декабрьских свойств и возможностей PIE.
    [CSS3 PIE]Она подготавливалась долгое время, но вот третья бета PIE 1.0 наконец вышла! Этот выпуск содержит множество изменений; вот некоторые из крупных улучшений в нём:
    • Скорость! — Крупнейшим и легкозаметнейшим улучшением в этом выпуске стала скорость. По итогам обширного профилирования были найдены наиболее медленные участки исполнения кода PIE, и многие из них подверглись оптимизации. Результаты ошеломляют: скорость PIE выросла до четырёх раз в сравнении со второй бетою, особенно заметно — в IE8. И это принесёт ускорение обработки страниц и вам, и читателям ваших сайтов!
       
    • Ленивая инициализация — Даже с учётом всех улучшений скорости, если ваша страница весьма длинна, она может содержать сотни PIEфицированных элементов, которые суммарно приведут к заметной задержке. Однако есть шанс, что лишь немногие из них видны в окне просмотра изначально (после загрузки страницы), чего же тогда тратить время на обработку остальных элементов, прямо сейчас не видимых? Теперь вы можете задавать специальное свойство -pie-lazy-init: true в CSS, и тем самым откладывать инициализацию всех PIEфицированных элементов за пределами видимой области загруженной страницы. Они будут проинициализированы и отображены после того, как читатель до них допрокручивает страницу.
       
    • PIE.js: отдельная версия на джаваскрипте — Теперь есть два способа использования PIE: традиционный (PIE.htc и behavior) и новый (отдельный джаваскриптовый файл PIE.js). Хотя указание файла .htc и свойства behavior останется рекомендуемым подходом, JS-версия позволяет употреблять PIE в некоторых таких ситуациях, в которых behavior не в состоянии сработать. Поглядите в документации по PIE.js подробности о том, когда и как вы можете пожелать прибегнуть к JS-версии.
       
    • Работает с табличными элементами — Теперь применение PIE к элементам <table>, <th> и <td> приводит к корректной обработке и впредь не грозит бесконечным циклом.
       
    • Работает с изображениями — Теперь вы можете использовать PIE для закругления уголков элементов <img>.
       
    • -pie-png-fix — Теперь вы можете использовать PIE в качестве общего исправления альфа-прозрачности PNG для IE6, используя новое специальное CSS-свойство -pie-png-fix: true. Подробности изложены в документации по -pie-png-fix. Эту функциональность обеспечил Felix Gnass.
       
    • Отключено в IE9 — Так как IE9 самостоятельно поддерживает множество тех же свойств и значений CSS3, что и PIE, и так как ещё не ясно, что IE9 будет поддерживать в окончательной версии, то на время PIE будет отключаться при работе в IE9; это временное решение будет пересмотрено по мере дальнейшего развития событий.
       
    • position:fixed — Теперь PIE располагает свои элементы отображения корректно, когда применяется к элементам со свойством position:fixed (это никак не касается IE6, поскольку IE6 не поддерживает свойство position:fixed самостоятельно).
       
    • Печать — Теперь PIE самостоятельно устраняет все свои элементы во время печати страницы. Помимо исключения целого ряда проблем с отображением, такое самоустранение также не пренебрегает пользовательскими настройками о непечатании фонов и обеспечивает экономию чернил.
       
    • Множество других исправлений и улучшений — см. логи правок кода.
    Скачайте PIE 1.0 beta 3 прямо сейчас!

    Читать дальше →
  • Обзор jQuery-плагинов для стилизации селектов

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

      Не секрет, что стандартные селекты имеют крайне слабый уровень стилизации средствами CSS. В каком-то браузере они чуть лучше, в каком-то чуть хуже, но общая картина складывается весьма грустной. Как обычно, там, где не справляется чистый HTML+CSS, на помощь приходит jQuery.

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

      Стандартный select



      Достоинства:
      • работает на всех устройствах, в том числе на мобильных телефонах
      • автоматически подстраивает ширину
      • без проблем контролируется с помощью jQuery
      • открывается всегда на видимую часть страницы (так называемое «умное позиционирование»)
      • сам определяет оптимальную высоту для выпадающего списка
      • позволяет группировать опции
      • позволяет выделять сразу несколько пунктов (если, конечно, прописать необходимые атрибуты)
      • реагирует на переход Tab'ом
      • имеет подбор по первой букве
      • поддерживает скролл колёсиком мышки
      Недостатки:
      • выглядят во всех браузерах по разному
      • не имеет возможности быть нормально стилизованным
      Посмотрим что же могут остальные
    • Конференция JavaOne Oracle Develop Россия

        Конференция JavaOne (ex. TechDays) пройдет в этом году в Москве, 12-13 Апреля, в здании Российской Академии Наук. В конференции три потока: JavaEE, JavaSE, JavaME и мастер-классы. Возможно небольшое отклонение от заданной темы в тех или иных докладах.
        С программой конференции можно ознакомиться здесь: www.oracle.com/ru/javaonedevelop/javaone-agenda-ru-302317-ru.html

        На конференцию, поделиться знаниями и опытом, приедут специалисты из США, Европы, Азии и конечно из Санкт-Петербургского Центра Высоких Технологий Oracle. Пленарный доклад конференции будет состоять из двух частей: Стив Харрис (главный человек в Oracle по JavaEE) расскажет по перспективах технологии JavaEE7, а Хенрик Шталь о том, как Oracle видит развитие JavaSE. Джером Доше (архитектор Glassfish) расскажет, как наиболее эффективно пользоваться своим детищем.

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

        Во второй день конференции в дополнение к стандартным трекам, откроется небольшой зал Lightning talk где вы сможете послушать 20 минутные выступления от российского Java сообщества

        Регистрация на конференцию по ссылке: www.oracle.com/ru/javaonedevelop/index.html

        Если есть какие-то вопросы или пожелания, задавайте на все отвечу
      • Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

          Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
          Вы заказчик. Как убедиться, что работа выполнена качественно?
          Как оценить качество вёрстки?

          Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

          Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

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

          Итак что же это за список?

          Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

          История обновлений:
          • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
          • 2015/08/10: актуализирован список исключений для CSSLint
          • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
          • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
          • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
          • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
          • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
          • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
          • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
          • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


          Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
        • Ещё два открытых проекта от Opera Software

            image


            Сегодня мы обнародовали два новых проекта, входящих в наш Open Source портфолио — OperaWatir и OperaDriver. Как и Opera Dragonfly, оба проекта относятся к средствам разработки, облегчающим несладкую жизнь веб-программиста. Если говорить кратко, то данные инструменты позволяют создавать автоматические тесты, имитирующие действия бешеного пользователя, зашедшего на ваш веб-сайт и без какой-либо чёткой цели кликающего ссылки, вводящего всякую тарабарщину в текстовые поля или заполняющего любые формы, подвернувшиеся под руку. В общем, в реале подобного уникума вряд ли встретишь, но на всякий случай лучше проверить свою работу на стойкость — наша жизнь, знаете ли, всякие фокусы любит выкидывать.
            Читать дальше →
          • Google упрощает контрактное программирование

              Google выпустил открытую библиотеку Contracts for Java, которая упрощает реализацию методов контрактного программирования в Java. С помощью библиотеки Contracts for Java предусловия, постусловия и инварианты можно добавлять в Java как булевые выражения внутри аннотаций.

              Как сказано в официальном анонсе, библиотека разработана двумя программистами Google в свободное от основной работы время (20% на личные проекты) и основана на Modern Jass и сделана под впечатлением от языка Эйфель, в котором впервые был реализован метод контрактного программирования.
              Читать дальше →
            • Разоблачение алгоритмов растеризации шрифтов (2/2)

              • Translation
              (вторая часть перевода статьи Разоблачение алгоритмов растеризации шрифтов)

              Linux


              Наследуя худшее


              Windows растеризует шрифты плохо, Linux ещё хуже. Во всех Linux-системах, которые я видел, используется FreeType [10] Дэвида Тёрнера, Роберта Вильгельма и Вернера Лемберга. Это отличная библиотека, но способ её использования, к сожалению, нельзя назвать удачным. Типичный скриншот Linux выглядит так:



              Вот полный скриншот:
              ссылка

              Сразу заметна проблема — чёрные пятна в скругленных углах, образовавшиеся в результате сглаживания. Вцелом, можно сказать, что косые штрихи выглядят тяжелее чем вертикальные, что в регультате производит впечатление «грязи». Вы можете возразить, что FreeType и Linux могли бы использовать схожую с ClearType субпиксельную растеризацию, но по мне это не даёт заметных преимуществ.
              Читать дальше →
            • Создание m4b из mp3 аудиокниг для ipod

                Захотелось давеча прослушать аудиокнижку одну, проблема в том, что прослушать ее захотелось на ipod, а в m4b формате нигде найти не смог, только mp3.

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

                Суть в том, что .m4b это файл AAC в контейнере mp4, но с закладками и переименованный. Следовательно, необходимо все mp3 перегнать в aac и сгенерировать файл закладок (chapters), в quicktime формате, после чего запихнуть все это дело в mp4 контейнер.
                Читать дальше →
              • Автоматический контроль структуры класса

                imageУ каждой компании есть свой стандарт оформления кода и важно придерживаться его. Встроенные в IDE форматеры кода решают это задачу частично, так как они в основном позволяют лишь добиться простого выравнивая кода. Помимо этого хочется еще и порядка в последовательности объявления как полей, методов, так и вложенных классов. Причин, по которым код-стандарт не соблюдается масса: программист перед отправкой кода в репозиторий может не заметить отклонение от стандарта; новый разработчик недостаточно внимательно прочитал документ; в погоне за хот фиксом о формате забыли; либо из-за банальной усталости или лени программиста; автоматического рефакторинга и так далее. Регулярный код-ревью не решает суть проблемы, так как занимает слишком много времени и тормозит разработку — нужна автоматизация проверки соответствия кода в момент его написания!

                Частые проблемы:
                • конструктор неожиданно появляется в середине класса;
                • внутренний класс объявлен где-то в середине внешнего класса;
                • абстрактный метод объявлен где-то в середине большого абстрактного класса;
                • @Autowired метод тоже расположен где угодно но только не на самом видном месте;
                • статические билдер методы разбросаны по коду класса;
                • поле класса затерялось где-то между внутренним классом и методами.

                Надоело такое терпеть в коде?
                Читать дальше →
              • Творим оригинальный подарок при помощи химии физики и электроники: часть 3

                  Третья, заключительная часть моей статьи о создании светящегося кристаллического сувенира. В ней описывается программная часть, то бишь прошивка микроконтроллера ATTiny13 из славного рода AVRок.
                  Читать дальше →
                • OpenID, OAuth и другие плюшки

                  • Tutorial

                  Зачем нужен OpenID



                  Вот бывает так, заходишь на сайт любимый, а там ссылка на другой сайт, а там статья ну очень интересная и главное – полезная – и хочется добавить комментарий, типа «Молодцы!» и чтобы добавить комментарий, нужно зарегистрироваться, а чтобы зарегистрироваться нужно ввести «Имя», «Фамилия», «Логин», «Email», «Email еще раз», «Пароль», «Снова Пароль», «Прочитал правила и согласен со всем что тут будет происходить» и «Капчу». И жмакаешь «Зарегистрироваться», а тут бац – «Логин» — занят, и поля «Пароль», «Снова Пароль», «Капча» — стерты. Ну вот так. Вводишь другой свой логин (который второй, и не главный и не любимый) и снова пароль, снова снова пароль (постите) и капчу, и бац – всё ок, только забыл снова поставить галку «Прочитал правила...». Ну ладно, прошел еще раз круги ада, на мыло вышло письмо, активировал аккаунт, так, а где там была статья, да и ну их, не молодцы они, ну т.е. молодцы ну и хрен с этим, знают и так.
                  Проведите эксперимент, в вашей любимой почте сделайте поиск по слову «activate» — вот примерно столько вы регистрировались на сайтах.
                  А с другой стороны думаешь, а давайте упростим, и делаешь простое добавление комментария: «Имя», «Email», «Сообщение» — причем «Email» можно не вводить. Через 3 месяца заходишь, а там – СПАМ! Ладно, почистил – и ноль эффекта, спам продолжает, добавил капчу – ну вроде ок, но потом снова как-то они ее обходят. И внимание(!) – вводим регистрацию… Ой!
                  Но есть (УРА!) – OpenID.
                  Читать дальше →
                • Бестселлер Amazon'а «Машина смерти» лицензирован под Creative Commons

                  • Translation
                  imageЭто случалось раньше с музыкальными альбомами, когда выкладывание произведения открытый доступ не вредило текущим продажам товара. Авторы Машины смерти чётко поняли это. Они объяснили почему антология научно-фантастических рассказов о людях, которые знают как они умрут (но не знают когда), была сделана доступной в сети по CC BY-NC-ND:

                  Почему мы делаем это? Разве мы не беспокоимся о том, что это повредит продажам этой книги?

                  Одним словом: нет. Вы доказали снова и снова, что вы готовы платить за контент, который вы находите ценным. Вы показали, что вы готовы делиться материалом, в который вы влюбились. И мы стремимся к тому, чтобы гарантировать, что вы можете познакомиться с нашим произведением вне зависимости от того есть у вас возможость купить книгу или нет; вне зависимости от того живёте ли вы в стране куда доставляет Amazon или нет; вне зависимости от того есть у ли в вашей жизни место для кучи бумаги или нет.

                  Пожалуйста, скачивайте, читайте, копируйте и наслаждайтесь!


                  Кроме того, некоторые отдельные рассказы выпущены под лицензией CC BY-NC-SA
                  Читать дальше →
                • Разработка web-приложений на языке Common Lisp (часть третья)

                    Данный обзор является небольшим путеводителем для тех, решился (или решается) доверить этому чудесному языку будущее своего стартапа. Несмотря на то, что основной акцент будет ставиться на web-разработке, я постараюсь осветить также и более общие темы, так или иначе связанные с Common Lisp. Материал почерпнут из собственного опыта разработки web-сервиса AlterMoby.

                    Третья часть этого обзора будет посвящена web-серверу Hunchentoot. Рассмотрим его архитектуру и базовые возможности. Кроме того, затронем некоторые смежные вопросы, в частности, генерацию HTML/XML.

                    image
                    Читать дальше →
                  • Что такое Хабрахабр?

                      Сегодня мы приготовили нечто особенное – выпуск Рунетологии с Денисом Крючковым, создателем Хабрахабра.

                      Не ждите откровений и раскрытия хабрасекретов. Программа интересна другим – впервые вы увидите, как Хабр видит его администрация. Какие у автора представления о собственном детище, каким бы он хотел его видеть, и как у Дениса складываются отношения с его вполне самостоятельным творением.

                      Ведь как и все социальные-медиа последних лет, Хабрахабр был создан случайно, рос помимо воли авторов и в общем стал тем, чего никто не ожидал. Это хорошо видно по программе — каждый раз, когда Крючков отвечает «не знаю, как-то так получилось».

                      Так что же вообще получилось? Коллективный блог? Новостной сайт? Социальное медиа? Социальная сеть? MMORPG?

                      Смотрите и решайте сами.



                      Напоминаем, что видеоверсия программы Рунетология выходит с лета 2010 года при поддержке компании StartupIndex. Все выпуски доступны на нашем сайте в специальном разделе.
                    • Загрузка классов в Java. Теория



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

                        В статье рассмотрены базовые понятия, аспекты и принципы модели динамической загрузки кода. В следующей статье будет рассмотрена реализация собственного загрузчика классов, как основного механизма приложения с плагино-модульной архитектурой.

                        Читать дальше →
                      • Вувузела фильтр

                          В этом посте хочу рассказать, о том, как справиться с «роем мух», как его называет aguares, в трансляциях с Чемпионата Мира по футболу 2010. Звук этот появляется из противных южноафриканских дудок — название которым — Вувузелы.

                          Постановка инженерной задачи следующая:
                          Отфильтровать частоты звучания Вувузел в реальном времени из аудио потока онлайн трансляции, не применяя записи сигнала на жесткий диск.

                          Данная проблема разбивается на следующие подзадачи:
                          1) Считать поток аудио до вывода его на колонки
                          2) Произвести подавление основных частот вувузел
                          3) Подать обработанный звук на аудио выход
                          + все это в режиме реального времени.

                          Из методов цифровой обработки аудио сигналов, доступных для Windows 7, мною была выбрана концепция VST.
                          Читать дальше →
                        • Torrent-Search — сервис быстрого поиска торрентов



                            Здравствуйте, Хабравчане.
                            Однажды мне пришла идея создать сайт для поиска торрентов. Ведь, очень не удобно искать, по очереди, на большом количестве трекеров.
                            Итак, представляю Вам — Torrent-Search.
                            Читать дальше →
                          • Еще один сервис поиска иконок

                              В данном русском ресурсе (iconsearch.ru) приведено достаточно много иконок (133673 штук в png-формате), причем на различных фонах (белый, прозрачный) и разных размеров. Иконки довольно симпатичные. Все они разбиты по тегам и наборам. Теги позволяют еще быстрее найти нужную Вам иконку. Теги можно добавлять самому (без регистрации, с применением AJAX). Также присутствует облако тегов. Каждая иконка на этом сайте защищена одной из списка лицензий. Также есть на сайте возможность разработки уникальных иконок. Сайт был создан в 2007, однако на Хабре про него ничего нет, кроме нескольких комментариев.
                            • Настраиваем Tomcat для работы с JSF2 и другими компонентами Java EE 6

                                Данная статья описывает по шагам как настроить Tomcat (на текущий момент версия 6.0.26) на работу с разными компонентами Java EE 6.Вы можете пропустить чтение этой статьи и сразу получить настроенный Tomcat и пример приложения.
                                подробности
                              • Mantis + Subversion у себя на компьютере с Windows XP. Пошаговая инструкция для удобной организации работы с кодом


                                  Исторически сложилось, что багтрекер в нашей команде – это Mantis. Для работы над ошибками очень хорошая и простая в обучении система. Буквально садись и работай. Но для удобной организации работы ей явно не хватает связки с Subversion. В связке Subversion+Mantis помогают организовать работу с кодом небольшой команды программистов. Более подробно про организацию работы у нас я описал в прошлой статье.
                                  А сейчас давайте поговорим, как установить Subversion у себя на компьютере и связать его с Mantis на сервере.
                                  Читать дальше →