• Определяем порядок столбцов в составном индексе

    • Перевод
    Хочу поделиться простым эмпирическим методом, который я использую для определения того, в каком порядке должны идти столбцы в составном индексе. Этот способ подходит не только для MySQL, он также применим к любым СУБД, в которых используются b-tree индексы.

    Давайте начнем с запроса, который возвращает пустой результат, но при этом делает полный скан таблицы. EXPLAIN покажет на нем, что нет доступных индексов (т.е. possible_keys = NULL)

    SELECT * FROM tbl
    WHERE
      status='waiting' AND
      source='twitter' AND
      no_send_before <= '2009-05-28 03:17:50' AND
      tries <= 20
    ORDER BY date ASC LIMIT 1;
    Читать дальше →
  • Современная отладка JavaScript

    • Перевод
    В связи с достаточно широким выбором неплохих отладчиков, JavaScript-программисты могут получить достаточно много пользы, изучая то как их можно использовать. Их пользовательские интерфейсы становятся все более совершенными, более стандартизированными между собой и более легкими в использовании, что делает их полезными как для экспертов так и новичков в отладке JS. В этой статье мы обсудим передовые методы отладки для диагностики и анализа ошибок, используя типичное веб-приложение.

    В настоящее время средства отладки доступны для всех основных браузеров.
    • Firefox имеет хорошо известное расширение Firebug
    • IE8 выпускается со встроенными Developer Tools
    • Опера 9.5+ поддердивает отладчик Dragonfly
    • У Safari есть JS-отладчик Drosera и DOM-вьювер WebInspector. В более свежих версиях отладчик интегрирован в WebInspector.

    На данный момент Firebug и Dragonfly наиболее стабильны. Утилиты IE8 иногда игнорируют контрольные точки, а во время написания этой статьи WebInspector имеет некоторые проблемы совмстимости с последними билдами Webkit.

    Изучите несколько средств отладки — вы никогда не знаете, в котором браузере возникнет следующая ошибка. Так как отладчики примерно сопоставимы в функциональных возможностях, между ними легко переключиться, как только вы разберетесь как использовать хотя бы один.

    Читать дальше →
  • CSS counters


      Одной из редко используемых возможностей CSS2.1 являются счетчики. Описаны они в разделе спецификации, посвященной генерации контента. Что же это такое?

      Приведу пример из спецификации, эмулирующий обычный нумерованый список с помощью счетчика и свойства content:
      OL { counter-reset: item }
      LI { display: block }
      LI:before { content: counter(item) ". "; counter-increment: item }
      

      Первым правилом мы назначаем элементам OL счетчик с именем «item», затем для всех LI меняем значение свойства display на block, вместо значения по умолчанию (list-item), чем отключаем стандартные маркеры-цифры. Наконец, в последнем правиле, мы инкрементируем счетчик для каждого элемента списка, а само его значение показываем перед элементом c помощью функции counter() и свойства content. Всё просто.

      Но это еще далеко не всё
    • Давно проверялись на вирусы/adware/spyware?

        В процессе подсчета вот этой статистики по Хабру обнаружил, что как минимум у 950 хабралюдей (~2.5% от всех читающих Хабр, если считать, что распределение равномерно) в системе живет Adware-вредитель под называнием AdCentriaIM. Он оставляет след в user-agent браузера, что и позволило его обнаружить. Полное описание, и как избавиться написано — здесь. Подавляющая часть болеющих — Windows/Firefox.

        Вот так выглядит типичный user-agent:
        Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.13) Gecko/20080311 AdCentriaIM/1.7 Firefox/2.0.0.13

        Я не знаю правильно ли я поступаю, написав этот топик, но просто так сидеть сложа руки тоже как-то не могу, как еще донести это до людей?

        Читать дальше →
      • Обратный отсчет 2

          Тут товарищ написал программку(автор уже удалил топик) показывающую обратный отсчет до нового года. Но это так неудобно — скачивать программу, запускать какие-то файлики… Эпоха Веб 2.0 как-никак

          И хотя новый год на носу (чуть больше часа осталось), захотелось свой такой, но в привычном окружении браузера. Ну вот и написалось. Учитывая, что я js скорее увлекаюсь, чем программирую, очень маленькое количество оставшегося времени (минут 40 ушло, больше всего на подбор позиций у циферок, жена чуть не убила) и не совсем трезвое состояние — на безошибочный супер-код не претендую, вылизывать некогда. Скажу лишь, что это только HTML,CSS и JS, нет картинок, не используются фреймворки, и оно работает. Может кому и пригодится когда-нибудь в новом году :)

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

          С новым годом, друзья!
        • Отмена своего голоса за карму

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

            Если я кому-то — человеку, топику — поставил плюс в карму (или наоборот, не важно), а потом передумал — почему нет возможности отменить свой голос, не ставя ему при этом минус? Получается что сначала есть три варианта (-,0,+), а потом только два (-,+) — разве это нормально? А ведь можно и случайно надавить…

            P.S. В связи с очевидностью моего вопроса — меня совершенно не удивило бы, если такой вопрос уже поднимался. Если это так — дайте ссылку и я уберу свой топик.

            Upd. Поскольку мнения на текущий момент, примерно разделились поровну, приведу еще один аргумент в свою пользу (из комментария):
            Бывает ситуация ровно противоположная. Я сам иногда сгоряча ставлю человеку минус в карму. А потом остываю и передумываю. Но это совсем не значит, что я хочу ему карму плюсануть! С вами такого не бывает, хабравчане?
          • Обновления в ленте комментариев

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

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

              Не знаю как другие хабрапользователи, но я за комментариями, в которых я учавствую, слежу здесь %username%.habrahabr.ru/comments/, так как часто проще помнить перепалки обсуждения по своим словам, чем по названиям тех топиков, где они случились. Отсюда вопрос — нельзя ли показывать топики в ленте комментариев так же, как они показываются на всех дугих страницах сайта, т.е. со счетчиком новых ответов?

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

              Пример:
              image

              72 — всего комментариев (как и везде)
              +10 новых (тоже как и везде)
              + есть ответ на мой комментарий (upd. или ответ ниже, в ветке, в которой есть мой комментарий, это даже лучше)
            • Hello, спамеры!

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

                Сразу скажу — не люблю спам, он плох всем, и тем что людям приходится ворошить большие объемы ненужной им информации, и тем, что приходится настраивать спам-фильтры и тем, что вообще об этой проблеме приходится думать и говорить, вместо того, чтобы просто пользоваться почтой. И даже тем, что ведет нас, среди прочих факторов, к глобальному потеплению (энергия то тратится). Но с другой стороны я не считаю, что сильно пострадал от спама, так как не свечу свои ящики и в проектах по возможности перехожу на веб-сервисы вместо почты, чего и вам желаю.
                Но тем не менее спам не обходит и меня стороной. Так случилось и в этот раз…

                Читать дальше →