• Вышел релиз популярного магазина OpenCart v1.5.0 RC1

      Один из самых популярных и динамично развивающихся OpenSource проектов для электронной коммерции — OpenCart выпустил новую версию v1.5.0 RC1 для финального тестирования. Я беглым взглядом пробежался по меню настройки и выделил изменения по сравнению с версией 1.4.x.
      Читать дальше →
    • Загрузочный телефон

        У вас наверняка есть «обычный сотовый телефон», умеющий звонить, играть музыку с флеш-карты и прикидываться по случаю кардридером при подключении к «большому брату». Ну или был. Или есть у вашей второй половины/родителей/детей/бабушек/дедушек/etc. Вы никогда не думали использовать его более гиковским способом, чем просто средство связи? Я не имею в виду модификацию прошивок и получение консольного доступа к самому телефону, нет — все намного банальнее и интереснее одновременно.


        рецепт приготовления
      • Визуализация работы веб-сервера Apache — logstalgia

          image

          Logstalgia скорее порадует разработчиков и системных администраторов, которые много времени проводят на «заднем дворе» сайтов, но сам результат работы программы очень красив и видео будет интересно посмотреть всем. Данная программа визуализирует работу веб-сервера Apache используя log-файлы. По ссылке видео, а саму программу можно скачать по здесь.
        • BlueStacks — плеер приложений Android под Windows 7

            image
            На официальной странице в твитере и в FaceBook проекта BlueStacks, о котором уже писали на хабре, пару дней назад была выложена ссылка на альфа версию плеера BlueStacks.


            На сегодня плеер умеет:
            • Запускать Android приложения в полный экран и без тормозов.
            • Через облако загружать ваши приложения с телефона на Windows плеер.
            • В плеере предустановлено 10 приложений и можно поиграть в них, если нет телефона.
            • Устанавливать до 26 ваших приложений (в PRO версии это ограничение будет снято).
            • Работает действительно шустро.
            • Работает на Windows 7 (увы и только на ней).

            Читать дальше →
          • «Идеальный» www кластер. Часть 1. Frontend: NGINX + Keepalived (vrrp) на CentOS



              Этом цикле статей «Идеальный www кластер», я хочу передать базовые основы построения высокодоступного и высокопроизводительного www решения для нагруженных web проектов для неподготовленного администратора.
              Статья будет содержать пошаговую инструкцию и подойдет любому человеку кто освоил силу copy-paste
              Ошибки найденые вами, помогут в работе и мне и тем кто будет читать эту статью позже! Так что любые улучшение и правки приветствуются!

              Хочу отметить, что эта инструкция родилась в процессе миграции web-систем компании Acronis в высокодоступный кластер. Надеюсь мои заметки будут полезны и для Вас!.

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

              На frontend мы будем использоваться связку из двух службы:



              keepalived — реализации протокола VRRP (Virtual Router Redundancy Protocol) для Linux. Демон keepalived следит за работоспособностью машин и в случае обнаружения сбоя — исключает сбойный сервер из списка активных серверов, делегируя его адреса другому серверу.

              Другими словами, у нас 2 сервера на которых прописано по одному публичному адресу. Если любой из этих серверов падает, то адрес упавшего подхватывается вторым.
              Демоны keepalived общаются по протоколу VRRP, посылая друг другу сообщения на адрес 224.0.0.18.
              Если сосед не прислал свое сообщение, то по истечению периода он считается умершим и оба адреса обслуживает оставшаяся нода. Как только упавший сервер начинает слать свои сообщения в сеть, все возвращается на свои места


              nginx [engine x] — это HTTP-сервер и обратный прокси-сервер, а также почтовый прокси-сервер, написанный Игорем Сысоевым. Уже длительное время он обслуживает серверы многих высоконагруженных российских сайтов, таких как Яндекс, Mail.Ru, ВКонтакте и Рамблер. Согласно статистике Netcraft nginx обслуживал или проксировал 15.08% самых нагруженных сайтов в октябре 2013 года.

              Основная функциональность HTTP-сервера

              • Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов;
              • Акселерированное обратное проксирование с кэшированием, простое распределение нагрузки и отказоустойчивость;
              • Акселерированная поддержка FastCGI, uwsgi, SCGI и memcached серверов с кэшированием, простое распределение нагрузки и отказоустойчивость;
              • Модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, XSLT-фильтр, SSI-фильтр, преобразование изображений; несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно;
              • Поддержка SSL и расширения TLS SNI.


              Другие возможности HTTP-сервера

              • Виртуальные серверы, определяемые по IP-адресу и имени;
              • Поддержка keep-alive и pipelined соединений;
              • Гибкость конфигурации;
              • Изменение настроек и обновление исполняемого файла без перерыва в обслуживании клиентов;
              • Настройка форматов логов, буферизованная запись в лог, быстрая ротация логов;
              • Специальные страницы для ошибок 3xx-5xx;
              • rewrite-модуль: изменение URI с помощью регулярных выражений;
              • Выполнение разных функций в зависимости от адреса клиента;
              • Ограничение доступа в зависимости от адреса клиента, по паролю (HTTP Basic аутентификация) и по результату подзапроса;
              • Проверка HTTP referer;
              • Методы PUT, DELETE, MKCOL, COPY и MOVE;
              • FLV и MP4 стриминг;
              • Ограничение скорости отдачи ответов;
              • Ограничение числа одновременных соединений и запросов с одного адреса;
              • Встроенный Perl.


              Читать дальше →
            • Десятка лучших консольных команд

                imageВ данном посте я расскажу о наиболее интересных командах, которые могут быть очень полезны при работе в консоли. Однозначных критериев определения какая команда лучше другой — нет, каждый сам для своих условий выбирает лучшее. Я решил построить список команд на основе наиболее рейтинговых приемов работы с консолью от commandlinefu.com, кладовой консольных команд. Результат выполнения одной из таких команд под Linux приведен на картинке. Если заинтересовало, прошу под кат.
                Узнать больше
              • Linux pipes tips & tricks

                Pipe — что это?


                Pipe (конвеер) – это однонаправленный канал межпроцессного взаимодействия. Термин был придуман Дугласом Макилроем для командной оболочки Unix и назван по аналогии с трубопроводом. Конвейеры чаще всего используются в shell-скриптах для связи нескольких команд путем перенаправления вывода одной команды (stdout) на вход (stdin) последующей, используя символ конвеера ‘|’:
                cmd1 | cmd2 | .... | cmdN
                

                Например:
                $ grep -i “error” ./log | wc -l
                43
                

                grep выполняет регистронезависимый поиск строки “error” в файле log, но результат поиска не выводится на экран, а перенаправляется на вход (stdin) команды wc, которая в свою очередь выполняет подсчет количества строк.

                Логика


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

                Размер буфера начиная с ядра версии 2.6.11 составляет 65536 байт (64Кб) и равен странице памяти в более старых ядрах. При попытке чтения из пустого буфера процесс чтения блокируется до появления данных. Аналогично при попытке записи в заполненный буфер процесс записи будет заблокирован до освобождения необходимого места.
                Важно, что несмотря на то, что конвейер оперирует файловыми дескрипторами потоков ввода/вывода, все операции выполняются в памяти, без нагрузки на диск.
                Вся информация, приведенная ниже, касается оболочки bash-4.2 и ядра 3.10.10.

                Простой дебаг


                Утилита strace позволяет отследить системные вызовы в процессе выполнения программы:
                $ strace -f bash -c ‘/bin/echo foo | grep bar’
                ....
                getpid() = 13726                   <– PID основного процесса
                ...
                pipe([3,  4])                       <– системный вызов для создания конвеера
                ....
                clone(....) = 13727                <– подпроцесс для первой команды конвеера (echo)
                ...
                [pid 13727] execve("/bin/echo",  ["/bin/echo",  "foo"],  [/* 61 vars */] 
                .....
                [pid 13726] clone(....) = 13728    <– подпроцесс для второй команды (grep) создается так же основным процессом
                ...
                [pid 13728] stat("/home/aikikode/bin/grep",   
                ...
                
                Видно, что для создания конвеера используется системный вызов pipe(), а также, что оба процесса выполняются параллельно в разных потоках.
                Читать дальше →
              • Чистим HTML-код при вставке текста из MS Word в HTML5 WYSIWYG редактор (contenteditable)

                  Здравствуйте!

                  При написании своего WYSIWYG редактора возникла проблема копирования текста из Ворда. Собственно проблем три:
                  • Ворд вставляет много мусорного html кода, который необходимо чистить
                  • Для представления списков Ворд почему-то использует параграфы вместо тегов UL и LI
                  • Собственно как определить, что вставленный текст является вставленным из Ворда.

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

                  $(‘#editor’). msword_html_filter();

                  Плагин вешается на событие keyup и проверяет, является ли исходный код внутри редактора вставленным из Ворда, если да, то запускается функция очистки. В результирующем html прибивается все что только можно – неразрывные пробелы, атрибуты style и align, теги span, все Mso-классы, пустые параграфы.

                  Детали реализации под катом.

                  UPD Демо на CodePen

                  Читать дальше →
                • На пути к созданию безопасного веб-ресурса. Часть 1 — серверное ПО

                  • Tutorial
                  Я уже довольно долгое время хочу формализовать все свои мысли, опыт, ежедневно применяемый на практике, и многое другое в одном месте и предоставить их общественности. Уверен, многим этот материал будет полезен. Он посвящен различным моментам в конфигурации серверного ПО Linux и безопасным подходам к созданию сайтов/приложений на php (все же это до сих пор одна из самых популярных связок, хоть её успешно и подвигают другие технологии. Но советы так же легко применимы и к веб-ресурсам на других технологиях).

                  Т.е. речь идет о типичной ситуации. Проект (стартап), купили под него сервер и разворачиваем на нем сайт. Бизнесу не нужно тратить лишних денег на сервера (поэтому будут выбраны наиболее производительные связки ПО), а так же нужно, чтобы все было безопасно, при чем бесплатно :)
                  Много текста. По-другому никак
                  • +148
                  • 96.1k
                  • 47
                • Оправдание стоимости разработки сайта и защита от демпинга

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

                    Расчет себестоимости


                    Говоря о стоимости создания сайта, начать необходимо с определения его внутренней себестоимости в самой компании. До сих пор многие студии работают по фиксированным тарифам (сайт-визитка – XXX рублей, интернет-магазин – YYY и т.п.). Но, так или иначе, все агентства продают время своих сотрудников, и определение себестоимости должно отталкиваться именно от этого фактора.

                    Заказчик покупает время производящих сотрудников (дизайнеров, разработчиков, специалистов по вносу контента и пр.). Он не готов платить за время PR-менеджера, бухгалтера, уборщицы. Поэтому расчетная смета на проект отталкивается, как правило, именно от стоимости часов «производящих ресурсов».

                    Посмотрим, какую долю эти ресурсы занимают в общем пуле трат компании. Для небольшой веб-студии (специализирующейся на разработке, а не на рекламе – там закупочные бюджеты и немного другое распределение) из 15 человек распределение статей расходов, как правило, выглядит так:

                    • ФОТ сотрудников – 50%
                    • — Производящие ресурсы (30%)
                    • — Менеджеры, обслуживающий и административный персонал (20%)
                    • Условно-постоянные расходы – аренда офиса, канцелярка, расходники, еда, техника и пр. – 15%
                    • Налоги – 20%
                    • Маркетинг и реклама – 15%
                    Читать дальше →
                  • Самый простой способ использования Hulu, Pandora и т.д. безо всяких VPN

                      UPD:
                      Ребята, взамен помершего Tunlr мы подняли свой DNS Proxy для Pandora и Spotify. Работает, понянтно, на всех платформарх и практически не требует настройки — habrahabr.ru/post/215889/. Велкам!


                      Если вам, как мне, надоело подключать VPN-туннель на штаты каждый раз, когда вы хотели бы послушать знающее ваши музыкальные вкусы радио Pandora или увидеть видео по ссылке на hulu.com, вам помогут два волшебных адреса (проверьте на сайте, они периодически меняются):

                      142.54.177.158


                      209.141.56.79


                      Это адреса DNS-сервера сайта tunlr.net который проделывает хитрую магию с заголовками помогает вам избежать проверки на страну пребывания для вашего IP.

                      Сервис поддерживает только определенный список сайтов, для которых это будет работать. В случае всех остальных запросов он будет работать как обычный честный DNS-сервер.
                      Читать дальше →
                    • Групповая разработка сайтов через git — автоматическое создание/удаление сайтов из git-бранчей

                      • Tutorial
                      В этой статье я расскажу, как создать групповую среду разработки сайтов через git с помощью git-хуков. Статья рассчитана на опытных системных администраторов, я лишь опишу алгоритм.
                      Многое на эту тему уже обсуждалось, а я добавлю, как автоматически создавать или удалять сайты при создании/удалении бранчей в git-репозитории. Такая возможность может пригодиться, к примеру, если над разными частями сайта работают разные программисты и нужны разные площадки (бранчи). После основной разработки и тестирования выполняется merge в основную ветку, а бранчи и тестовые сайты удаляются или архивируются.

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

                      Предистория



                      Рано или поздно системный администратор сталкивается с необходимостью распределить трафик по нескольким каналам, при этом естественно желание чтобы каждый канал использовался по максимуму. Столкнувшись с подобной необходимостью, и решив не изобретать велосипед, обратился к помощи поисковиков. Так как сервер у меня на Ubuntu, то обратил свое внимание на статью http://help.ubuntu.ru/wiki/ip_balancing. Реализовал «Способ 1», но при тесте были замечены следующие критичные проблемы: при использовании ссылок на некоторых сайтах они не открывались (например при попытке включить музыку на ресурсе «ВКонтакте»). Причина очевидна — запрос шел через другой канал. Обдумав ситуацию, решил скомбинировать подход к балансировке. Логика проста — больше всего съедает трафика торренты и им подобные программы, поэтому разделяем трафик. В итоге трафик с портами до 11000 распределяем приблизительно равномерно по количеству абонентов — подсетями, трафиком с портами 11000-60000 выравниваем загрузку каналов.
                      Читать дальше →
                    • Комплексная подготовка сайта к Retina

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

                      Пожалуй лучшим способом адаптации на сегодняшний день является способ c background-image в CSS. Но он сложно применим к обычным изображениям в теге . Поэтому я решил определить для себя список необходимых мер по достижению результата в комплексе и продолжить поиски решения. Ниже описано два способа, каждый из которых применим к своим задачам. Показанные решения не претендуют на открытие, скорее это агрегация существующих способов, описанных ранее моими коллегами по цеху веб-разработок и небольшие собственные дополнения.
                      Читать дальше →
                    • Массовая остановка запросов

                      В качестве небольшого дополнения к статье Чистка сервера базы данных.

                      Иногда, в очереди скапливается большое количество запросов к БД, выполнение которых необходимо остановить, не перезапуская MySQL.

                      Для решения этой проблемы мы используем такой метод:

                      Получаем список долго выполняемых запросов, в данном случае — SELECTы, выполняемые дольше 100 секунд
                      SELECT CONCAT('KILL ', id, ';') 
                      FROM information_schema.processlist 
                      WHERE 
                      `info` LIKE('SELECT%') 
                      AND `time` > 100 
                      INTO OUTFILE '/tmp/killList.sql'; 
                      


                      Собственно, убиваем их:
                      SOURCE /tmp/killList.sql; 
                      


                      По желанию, можно выбирать запросы по хосту, имени пользователя, базе данных, и т.д.
                      • +22
                      • 9.9k
                      • 9
                    • Стабилизируем PHP на бою — что и почему «роняет» веб-сервер

                        Вы отвечаете за стабильность работы веб-проекта на PHP. Нагрузка постоянно растет, добавляются фичи, клиенты довольны. В один прекрасный день начинают появляться загадочные ошибки…

                        Ошибки серверного софта


                        … которые программисты не знают как исправить, т.к. «ломается» серверный софт, например связка apache-PHP — а клиент получает в ответ на запрос страницу о регламентных работах. Веб-разработчик часто не обладает глубокими знаниями в программировании на C в unix/linux, а сисадмин нередко, к сожалению, глубже bash в систему не погружается. Настоящий хардкор :-)

                        Нестабильная работа серверных скриптов


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

                        На практике я часто встречаю проекты, которые сталкиваются с подобным классом ошибок «серверного софта», и в команде не всегда знают, что делать. В логе apache часто появляются сообщения о нарушении сегментации (segmentation fault), клиенты получают страницу об ошибке, а веб-разработчик с сисадмином ломают себе голову, играются с разными версиями PHP/apache/прекомпилятора, собирают PHP из исходников с разными опциями снова и снова, пишут о багах, а им доказывают, что это баги не PHP, а их кода и так до бесконечности…

                        В статье я хочу рассказать как можно просто и быстро найти причину, почему PHP рассыпался на боевом сервере и устранить ее — не погружаясь в прекрасный мир системного программирования на C для unix :-) От вас потребуется желание и одна чашечка кофе.

                        Читать дальше →
                      • Доступ к Skype API используя PHP на *nix системах

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

                          Но недавно, просматривая официальную документацию по API скайпа, я обратил внимание на «D-BUS messaging», не знаю, почему я раньше не обращал на него внимание. Разобравшись со всем, я наконец сделал то, что давно хотел! Я получил доступ к Skype API на PHP. Об этом я и хочу рассказать в своей статье.

                          Читать дальше →
                        • Еще 12 «рецептов приготовления» MySQL в Битрикс24



                            В нашей прошлой статье — «11 «рецептов приготовления» MySQL в Битрикс24» — мы, в основном, рассматривали архитектурные решения: стоит ли использовать облачные сервисы (типа Amazon RDS), какой форк MySQL выбрать и т.п.

                            Судя по отзывам, тема грамотной эксплуатации MySQL в больших «хайлоад» проектах — очень большая и важная. Поэтому мы решили рассказать еще о некоторых нюансах настройки и администрирования БД, с которыми сталкивались при разработке «Битрикс24» и которые используем ежедневно.

                            Еще раз напомню, что эта статья (как и предыдущая) не является универсальным «рецептом» идеальной настройки MySQL на все случаи жизни. :) Такого не бывает. :) Но искренне верю, что она будет полезной для вас для решения отдельных конкретных задач.

                            А в конце статьи — сюрприз для самых терпеливых читателей. :)
                            Читать дальше →
                          • Памятка пользователям ssh

                              abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

                              Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

                              Оглавление:
                              • управление ключами
                              • копирование файлов через ssh
                              • Проброс потоков ввода/вывода
                              • Монтирование удалённой FS через ssh
                              • Удалённое исполнение кода
                              • Алиасы и опции для подключений в .ssh/config
                              • Опции по-умолчанию
                              • Проброс X-сервера
                              • ssh в качестве socks-proxy
                              • Проброс портов — прямой и обратный
                              • Реверс-сокс-прокси
                              • туннелирование L2/L3 трафика
                              • Проброс агента авторизации
                              • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
                              Читать дальше →
                            • Moqups — новый сервис для создания макетов UI

                                Как характеризуют сервис сами разработчики, Moqups — это «изящное HTML5-приложение для создания макетов, концептов пользовательского интерфейса, прототипов, в зависимости от того, как вы сами это называете».



                                Для Chrome есть отдельное приложение.

                                На данный момент доступно более 60 шаблонов элементов, экспорт в PDF и PNG, клавиатурные шорткаты, группировка объектов, привязка к сетке и проч.

                                Проект находится в стадии активной разработки и открыт для критики, помощи и предложений.