• Оптимизация сложных запросов MySQL

    Введение


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

    Прежде всего хотелось бы ограничить круг рассматриваемых проблем оптимизации «широкими» и большими таблицами. Скажем до 10m записей и размером до 20Gb, с большим количеством изменяемых запросов к ним. Если в вашей в таблице много миллионов записей, каждая размером по 100 байт, и пять несложных возможных запросов к ней — это статья не для Вас. NB: Рассматривается движок MySQL innodb/percona — в дальнейшем просто MySQL.
    Читать дальше →
  • Fluid UI: прототипирование мобильных интерфейсов

      Fluid UI: очень удобное HTML5-приложение для создания прототипов мобильных интерфейсов в браузере (Chrome или Safari). Буквально за пару минут можно сделать приличный набросок.



      Поддерживает жесты, действия на прикосновения, драг-н-дроп, переходы между страницами, дублирование шаблона на несколько страниц, библиотеки iPhone и Android, загрузку пользовательских изображений и скриншотов. Ссылку на созданный дизайн можно быстро отправить коллеге или протестировать на мобильном устройстве. Можно экспортировать в PDF, HTML или графический формат.
    • Принцип «уверенности» высококачественного веб-дизайна

      Краткий синопсис

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

      image

      Под катом примерно 1.1 Мб трафика.
      Читать дальше →
    • PHP process manager

      image

      Всем привет!

      На Хабре было много статей, о том как писать демоны на PHP и другие fork-нутые вещи. Хочу поделится с вами своими наработками на схожую, но все-таки несколько другую тему — управление несколькими PHP процессами.
      Читать дальше →
    • Шаблонные сайты VS эксклюзивные сайты



        Говоря о шаблонных сайтах, мы нередко слышим, что такие проекты не живут дольше нескольких месяцев. Потенциальные клиенты, услышав слово «шаблонный», не хотят продолжать разговор и делают обиженные лица. Студии, которые делают «шаблонные» решения – часто лишены должного уважения в профессиональном сообществе. И, наконец, сайты, которые дешевле 20 000 руб часто называют, простите, «говносайтами». Вы тоже так думаете? Давайте разберемся насколько это действительно так и восстановим мировой баланс (если он существует).
        Читать дальше →
      • Как работает усилитель звуковой частоты

          Введение


          Добрый день уважаемый хабраюзер, я хочу рассказать тебе о основах построения усилителей звуковой частоты. Я думаю эта статья будет интересна тебе если ты никогда не занимался радиоэлектроникой, и конечно же она будет смешна тем кто не расстаётся с паяльником. И поэтому я попытаюсь расказать о данной теме как можно проще и к сожалению опуская некоторые нюансы.

          Усилитель звуковой частоты или усилитель низкой частоты, что бы разобраться как он всё таки работает и зачем там так много всяких транзисторов, резисторов и конденсаторов, нужно понять как работает каждый элемент и попробовать узнать как эти элементы устроены. Для того что бы собрать примитивный усилитель нам понадобятся три вида электронных элементов: резисторы, конденсаторы и конечно транзисторы.
          Читать дальше →
        • Цитаты о разработке программного обеспечения

          • Translation
          Несколько цитат о дизайне и разработке программ. Думаю, каждый найдет что-нибудь себе по вкусу. В дополнение к этому топику.

          Простота — дух эффективности. // A. Freeman
          Читать дальше →
        • Оптимизация связки Nginx, Apache, PHP, MySql

            Неожиданно поступила задача разобраться почему определенный сайт не работает столь быстро сколь хочется. В основе его CakePHP, в связке с Apache и MySQL. В статье описание процесса поиска узких мест и приведение в порядок на столько, на сколько это возможно.

            Название сайта светить не буду — думаю, программисты сами узнают. Скажу лишь, что это приложение для социальной сети нагрузкой 70-150 тысяч посетителей в обычное время. Все усложняется тем, что периодически производится рекламная рассылка, которая привлекает около 200-300 тысяч посетителей за пару часов.

            Итак, под катом описание всей борьбы на протяжении 4 дней.
            Читать дальше →
          • За гранью Хабра (список изданий)

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

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

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



              Читать дальше →
            • ikSelect — идеальный плагин для стилизации селектов

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

                Недавно на хабре проскакивал Selectik — довольно неплохой плагин, но не без недостатков. Работа над ним, судя по GitHub, ещё идёт, но пока он не очень удобен, и его основные проблемы ещё имеют место быть.

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

                В двух словах: он умеет практически всё, что умеет стандартный селект, при этом отлично стилизируется и подстраивается под особенности реализации селектов разных браузеров. Плагин полностью копирует внешний вид родного селекта Mac OS X, но его без проблем можно стилизировать через css.

                Вот так он выглядит в закрытом виде:

                Вот так в открытом:
                Чем же он лучше остальных?
              • Демоны на PHP

                Памятка начинающему экзорцисту.

                Прежде, чем начать: я знаю, что такое phpDaemon и System_Daemon. Я читал статьи по этой тематике, и на хабре тоже.

                Итак, предположим, что вы уже определились, что вам нужен именно демон. Что он должен уметь?
                • Запускаться из консоли и отвязываться от неё
                • Всю информацию писать в логи, ничего не выводить в консоль
                • Уметь плодить дочерние процессы и контролировать их
                • Выполнять поставленную задачу
                • Корректно завершать работу

                Отвязываемся от консоли


                // Создаем дочерний процесс
                // весь код после pcntl_fork() будет выполняться двумя процессами: родительским и дочерним
                $child_pid = pcntl_fork();
                if ($child_pid) {
                    // Выходим из родительского, привязанного к консоли, процесса
                    exit();
                }
                // Делаем основным процессом дочерний.
                posix_setsid();
                
                // Дальнейший код выполнится только дочерним процессом, который уже отвязан от консоли
                

                Читать дальше →
              • PhoneGap — решение проблем в первом приложении

                  PhoneGap — HTML5 платформа для разработки приложений под 7 существующих мобильных платформ. На днях они обновились до версии 1.2.0 и переехали под крыло Апачи. Адрес репозитория также обновился. На сайте в документации замечательная пошаговая инструкция для создания первого приложения, так что на вводной части больше не будем останавливаться, об этом уже писали. Мелкие проблемы начинаются, когда немножко выходишь за рамки стандартных возможностей платформы, но все решаемо.

                  Постановка задачи


                  Захотел я сделать нидерландско-русский словарь под Андроид за неимением приличного на рынке. Мне попался словарь отсканированный с хорошего бумажного. Процесс извлечения информации с картинок заслуживает отдельной статьи. Поэтому пропустим эту часть. В качестве первого этапа сделал словарь в виде html странички. По инструкции по созданию «hello world» сделал приложение и оно успешно запустилось. Дальше надо было обработать напильником и довести до ума детали.
                  ручная работа - резьба по дереву
                • Бесплатный комплект значков «Aroma»: 150 обычных пиктограмм и чуть больше сотни изображений клавиш клавиатуры

                    Вчера (17 ноября 2011 г.) в «Smashing Magazine» был опубликован комплект бесплатных значков «Aroma», созданный Оливером Твардовским.

                    Бóльшая часть его — полторы сотни пиктограмм и идеограмм 24×24 пиксела:

                    [предпросмотр]

                    Остальные значки (я насчитал их 103) изображают клавиши клавиатуры.

                    Скачать их можно в ZIP-архиве (≈полтора мегабайта), прямую ссылку на который есть просьба не приводить за пределами «Smashing Magazine» (так сказано в readme.txt ко значкам). Мне кажется, эта просьба автора разумна, так как позволяет ему в случае чего оперативно переменить предлагаемую закачку и пресечь дальнейшее распространение прежних версий архива из разошедшихся по Сети копий и переводов блогозаписи.
                  • Упрощение жизни разработчика с помощью сторонних сервисов

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

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

                      Google Fusion Tables


                      Позволяет развернуть реляционную базу данных на серверах гугла с обращениями с помощью библиотеки Visualization или JSONP.
                      Статья на хабре: habrahabr.ru/blogs/webdev/116035
                      Ссылка: www.google.com/fusiontables/Home

                      Минусы: количество обращений в секунду равно пяти с одно IP адреса и столько же при обращении с аккаунта (используя авторизацию). То есть развернуть сайт с хорошей посещаемостью и работать с сервисом с помощью сервера не получится. Стоимость увеличения лимита — от 10 тысяч долларов в год (см. Maps API Premier). Кроме того, отсутствуют джойны, которые заменяются представлениями (view), создаваемыми через интерфейс.
                      Читать дальше →
                    • Получаем бесплатный SSL сертификат

                      • Tutorial
                      Привет, хабр!

                      О StartSSL я узнал от небезызвестного lissyara, в связи с чем ему очень благодарен.

                      Для начала расскажу, что же за зверь это. Как известно, SSL сертификаты выдаются центрами сертификации, чьи корневые сертификаты хранятся в хранилище сертификатов браузера\ОС (либо другого ПО, использующего SSL). Цена на большинство сертификатов зашкаливает, и платить приходится за каждый сертификат. Но у StartSSL весьма интересный подход — сами сертификаты у них бесплатные, вы платите только за проверку вашей личности.

                      Так же не может не радовать наличие русскоязычной поддержки.
                      Читать дальше →
                    • Keymaster.js: простая микро-библиотека для «горячих клавиш»

                        На guthub'е появилась библиотека keymaster.js, с помощью которой можно добавить клавиатурные сокращения (shortkuts) на любую страничку. Конечно, для тех же целей предназначен модуль jQuery Hotkeys, но у keymaster.js есть свои преимущества: эта библиотека не имеет никаких зависимостей, она очень легковесная (всего 60 строчек кода) и лишена известных багов jQuery Hotkeys. В общем, определённо полезная вещь.

                        В ближайшее время для keymaster.js добавят ещё селектор INPUT / SELECT / TEXTAREA, это тоже будет полезное дополнение.
                        Пример скрипта
                      • Что делать, если некогда писать бизнес-план

                        Детальный бизнес-план или «на салфетке»?


                        Бизнес план — это документ, который инвесторы заставляют написать, но который они не читают" — Стив Бланк (Steve Blank)

                        Детальный бизнес-план новой идеи, проработанный, на нескольких десятках страниц, конечно, выглядит солидно. И, возможно, некоторым внушает больше доверия — ведь стопка бумаги предполагает, что есть не только идея, но уже было проведено и исследование рынка (вопрос качества этого исследования не затрагивается), конкурентов, в конце концов вложены силы и время!
                        Читать дальше →
                      • Рисуем графики (диаграммы) в Django

                          django-google-charts

                          Многие веб-разработчики время от времени сталкиваются с необходимостью визуализировать сравнительно большое количество данных при помощи диаграмм (далее я буду называть их графиками, хоть это и не совсем верно). Задача не нова, и в сети есть множество готовых решений: работающие на стороне сервера и на стороне клиента, использующие изображения, Canvas, SVG, Flash, Silverlight…

                          В этой статье я расскажу про django-google-charts и некоторые особенности использования Google Chart Tools для построения графиков на сайте под управлением Django.

                          Часто, когда нужно добавить график на страницу, разработчик идет по пути наименьшего сопротивления: копирует JavaScript из примера в интернете и как-нибудь выводит в него данные из приложения. Получается что-то наподобие:

                          var chart_data = [
                              {% for row in chart_data %}
                              [{{ row.0 }}, {{ row.1 }}],
                              {% endfor %}
                          ];
                          

                          Почему это плохо?
                        • Обработка входящей почты на PHP

                            Хочу поделиться рецептом, как совместить php-скрипт и почтовый сервер Postfix для автоматической обработки входящей почты.

                            С помощью такой связки мы собираем статистику по количеству возвратов bounce-писем:Undelivered Mail Returned to Sender.

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

                            Как это сделать...