• Спецификации протокола Scope

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

    Сегодня мы рады представить спецификации протокола Scope. Этот протокол используется для связи Оперы с отладчиком Dragonfly. Он также используется в компании Опера для автоматизированного тестирования браузера.
    Читать дальше →
  • Разворачиваем nginx + mod_wsgi на сервере

      Здрасти. Долго-долго я присматривался к замечательному фреймворку django, читал книгу, изучал статьи, пробовал писать hello world'ы (со встроенным в джангу сервером это было легко и приятно). А вчера я попробовал настроить от начала до конца боевой сервер, и как оказалось, это не так просто, и мне даже показалось, что будь я моложе и неопытнее, я бы плюнул на это дело. Вот я и решил поделиться с читателями полной инструкцией, снабдив её некоторыми рассуждениями и конфигами. Статья расчитана на начинающих, но будет интересно всем, обещаю.
      Читать дальше →
    • Брендогенератор

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

        Наш вклад в развитие профессионального нейминга — сервис Брендогенератор.

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

        Особую гордость вызывает то, что сервис написан на кохане.
      • Навигация в Ajax приложении

          Все давно знают удобный способ организации навигации в Ajax-приложениях. Способ этот довольно распространен и основан на изменении якоря (части адреса страницы после диеза #).

          Этот способ работает во многих браузерах. Но как оказалось, не везде одинаково эффективно. Применяя этот способ в эксплорере, я наткнулся на неожиданный эффект. Ниже результаты небольшого бенчмарка, который я написал специально для этого случая. Я знаю, друзья мои, вы любите всякие бенчмарки. Вот его код, он очень прост для понимания:

          var start = new Date().getTime();
          window.location.hash = url
          var stop = new Date().getTime();
          alert( stop - start );


          А вот результаты:
          Opera 10: 15 ms.
          FF2: 30 ms.
          FF3: 30 ms.
          IE6: 323 ms.
          IE7: 7825 ms.
          IE8: 7240 ms.

          Да, безусловно, структура документа очень сложна, весит он аж 240кб только в html. И на этом фоне очень хорошо заметно, что новая версия ИЕ стала работать намного быстрее, обгоняя на 8% своего младшего брата! Ура товарищи! Виват эксплорер! Да здравствует Microsoft!

          UPD: Всем спасибо, все дело во включенном Developer Toolbar. Ну так то да, что-бы по якорю пройти в режиме разработчика, дофига времени нужно. Это же столько изменений в системе нужно сделать, когда по якорю переходит разработчик, сходу в голову приходят как максимум 0 таких изменений.
        • Userjs, ускоряющий скроллинг страниц на хабре

            Заметил, что с вводом x-sidebar на хабре (это такая штука с рефрешилкой страницы и счетчиком новых комментариев скраю страницы) прокрутка страницы стала не то, чтобы тормозить, но некий дискомфорт появился. Проблема конечно-же в том, что сайдбар спозиционирован фиксированно и браузеру приходится при скроллинге перерисовывать всю страницы, а не только невидимую до этого часть. Отказываться от сайдбара на совсем не хотелось, поэтому я написал небольшой user-js, который делает позиционирование сайдбара абсолютным и иногда ставит его на свое место. Положительный эффект очень хорошо заметен в Опере.

            homm.stratero.ru/pages/user-js/habrascroll.js

            Надеюсь что вы знаете, как ставить user-js в Опере и ФФ.
          • С какой проблемой мы столкнулись на виртуальном хостинге

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

              Все началось, когда, в один прекрасный день, один сайт перестал открываться. Оказалось, что из-за загруженности сервера хостер решил перенести аккаунт на другой сервер. При этом не было уведомления ни до переноса, ни в то время, когда перенос начался. Это, конечно, было крайне некрасиво со стороны хостера, но не в этом суть. После переноса стали происходить странные вещи. Несколько дней стала наблюдаться следующая картина: при попытке отрыть любую страницу с сайта, она могла либо открыться моментально (как обычно), либо могла не открыться вовсе. Шанс на успех был примерно 50%. Я написал по этому поводу хостеру и посмотрел загрузку процессора, она оказалась феноменальной. В среднем за день выходило около 500% от отведенной мощности, а в некоторые часы загрузка была выше 1000%. До переноса среднесуточная нагрузка была в районе 50-60%.
              Читать дальше →
            • Модуль для иерархических представлений (View) для Коханы

                Речь пойдет о первом моем модуле для фреймворка Kohana.

                image
                Признаюсь честно, при первом и последующих взглядах на этот фреймворк он мне очень понравился. Но как известно нет ничего идеального. Как мне показалось, одно из самых слабых мест в Кохане — довольно примитивные представления (View). По сути они предствляют из себя plain-php файл с экспортированными в глобальную область видимости переменными и доступным по ссылке $this контроллеру. Это очень удобно, когда вам нужно представление для вывода данных, нет ничего лишнего, можно сосредоточиться на коде. Но когда нам нужно вывести макет страницы со сложным расположением элементов, которые могут меняться от раздела к разделу… Что делать? Собирать все из мелких вьюшек в контроллере? Не удобно, особенно если контроллеров много — не дай бог, например, поменяется количество столбцов в разметке, придется в каждом контроллере перераспределять блоки с контентом по столбцам. Наверное по этому в версии 2.4 появится (я надеюсь) модуль интеграции со Смарти.
                Читать дальше →
              • Maps: Гигантский смайл в Челябинске

                  Еще немного и на картах Google Maps на территории нашей родины появится еще одно интересное место.

                  Сегодня в моем городе, Челябинске, состоялась грандиозная акция, Челябинск улыбнулся миру. Многие наверное про это слышали. Гигантский смайл образовали люди нашего города на главной площади. В это время город снимал спутник Гугла. Это событие было приурочено ко дню города и было проведено совместно с администрацией города и интернет-провайдером «Интерсвязь».

                  upd: Добавил к фотоотчету видео со стационарной камеры на здании.
                  Читать дальше →
                • Неудачное нововведение на страницах с якорями в 9.5

                    На мой взгляд, один из самых больших промахов среди изменений в версии 9.5, по сравнения с девяткой, был сделан в области работы с якорями. Если раньше можно было спококойно ходить по истории вперед-назад и страницы возвращались в положение скролла, которое было до ухода с неё, то теперь это не так. Теперь если вернуться на страницу, которая содержит якорь в адресе, она скроллится в позицию этого якоря вне зависимости от положения скролла при уходе с нее.
                    Есть ли способ как-то вернуть поведение предыдущих версий?

                    В идеале хотелось бы изменить реакцию на якорь еще больше, мне очень не нравится, когда я читаю недогруженную страницу, и в этот момент Опера догружает её до конца и скролит до якоря. Мне кажется, если пользователь во время загрузки хоть немного прокрутил страницу — это уже повод не ходить по якорю.
                  • Элемент управления, TrackBar но с двумя ползунками

                      Понадобилась тут такая «штука», как TrackBar только с двумя ползунками, готового решения на jQuery не нашел, решил писать самостоятельно, правда не на jQuery а на чистом JS. Вроде от этого хуже не стало. «Штука» эта нужна была для выбора числовых значений в формах информационного киоска.
                      Читать дальше →