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

    • Перевод
    Хочу поделиться простым эмпирическим методом, который я использую для определения того, в каком порядке должны идти столбцы в составном индексе. Этот способ подходит не только для 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

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

          Читать дальше →
        • Немного статистики

            Поскольку на дворе выходные и есть свободное время, захотелось посчитать хабравчан, ну в смысле что они используют из браузеров и платформ, когда дома ). Поскольку я Хабром не владею и сессии мне недоступны, пришлось считать самодельным скриптом по юзер-агентам, оставленным в логе сервера после просмотра картинок и при переходе по ссылкам. Впрочем для статистики, которая, как говорят, есть дезинформация — этого достаточно. Итак, к цифрам.

            Браузеры



            Читать дальше →
          • Выбор нескольких файлов

              Ни для кого, наверно, не секрет, как в GUI Windows выделить несколько файлов. Еще с незапамятных времен это делалось путем нажатия клавишы CTRL и кликом мышью по нужным файлам. Даже пользователям файловых менеджеров, например Total Commander, в распоряжении которых есть более удобные средства, иногда приходится выделять файлы стандартным способом, например чтобы приаттачить несколько файлов к письму. Это не очень удобно, особенно если приходится выбирать из большого количества файлов. Стоит задуматься, кликнуть не так — и придется создавать набор заново. Может быть не все знают, что в Vista заметно улучшили этот интерфейс, но улучшение почему-то предпочли скрыть от пользователей.
              Читать дальше →
            • Винил возвращается?

              • Перевод

              Меломаны всегда говорили, что у виниловых записей качество звука выше, по сравнению с компакт-дисками или MP3, но их лояльность казалась не более чем ностальгией на фоне 25-летнего доминирования цифровой записи в музыкальной индустрии. Однако, в последние годы, онлайн-продажи LP (сокращение от Long Play records — долгоиграющих пластинок) более чем удвоились, благодаря новым покупателям, желающим больше, чем им дает онлайн-покупка mp3-треков за 99 центов.

              Читать дальше →
            • Залипание/дублирование символов

                Данный топик был опубликован под замком как запрос о помощи. Проблема, описанная в топике довольно специфичная и вероятно редкая, за всю жизнь сталкивался с ней два раза, а на своей машине — один раз, но зато она очень неприятная. Поскольку решение проблемы, после ряда экспериментов, найдено, а решения её в русскоязычном сегменте интернета я не нашел, то решил открыть из-под замка, возможно эта информация кому-то пригодится. Огромное спасибо хабра-товарищам Optik и YasonBy за эффективные попытки разобраться в проблеме и помочь.

                Далее топик идет практически так, как и был написан изначально.

                Некоторые символы не набираются однократным нажатием, а как бы дублируются, например «птичка» (^), «тильда» (~), кавычка (") и апостроф ('). Обычно, чтобы набрать ^ нужно нажать Shift+6, но у меня при нажатии этой комбинации не появляется ничего, зато если не отпуская Shift нажать «6» еще раз, то появляется сразу два символа "^". Если же после Shift+6 нажать какую то символьную кнопку, то появится какая-то вообще не к селу ни к городу буква.
                Под катом некоторые, более подробные примеры поведения и решение проблемы
              • Обратный отсчет 2

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

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

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

                  С новым годом, друзья!
                • В нарушении патента обвинили сразу и Google, и Microsoft, и Apple

                  • Перевод
                  Небольшая компания Cygnus Systems из штата Индиана подала в суд на тяжеловесов Microsoft, Apple и Google, заявляя, что она обладает патентом на весьма распространенную функцию предпросмотра файлов, которая используется в браузерах и операционных системах, для показа небольших превьюшек файлов без их открытия.

                  Cygnus Systems предъявила иск этим трем компаниям, утверждая, что они посягают на их патент в таких продуктах, как Windows Vista, IE8 и Google Chrome. Apple использует эту технологию в Finder-е и Cover Flow.
                  Читать дальше →
                • Конвертер зарплат от Google

                    Понадобилось тут перевести справку о зарплате для посольства Австрии на английский язык. (Для тех, кто не в курсе, но туда собирается — посольство Австрии ввело такое требование совсем недавно). Ну, дело не хитрое думаю, поскольку языком владею на твердую тройку, по сути только читаю и то технические тексты, решил воспользоваться онлайн переводчиком с мыслью подрихтовать потом результаты напильником. Запихнул текст в translate.google.com — и удивился :)

                    Читать дальше →
                  • Отмена своего голоса за карму

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

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

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

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

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

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

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

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

                        Пример:
                        image

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

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

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

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