• Визуализация качества кода с PhpMetrics

    • Translation
    Недавно мне попался отличный инструмент для анализа PHP кода. Публикую перевод статьи с обзором этого инструмента.


    PhpMetrics использует D3 и несколько сложных алгоритмов для сканирования кода вашего приложения и вывода замысловатых отчетов по результатам.
    image
    Читать дальше →
  • Украшательство Android-телефона: рецепты красивых рабочих столов

      Одним из плюсов телефонов на базе Android является возможность полной кастомизации интерфейса под себя. Благо всевозможных виджетов под систему существует огромное количество. Причем, их настолько много, что пользователи гуглофонов иногда напоминают скульпторов или художников – попробуй совмести все нужное так, чтобы получилось красиво, да еще и учти все нюансы настроек. Одним словом, настройка требует времени, вкуса и недюжинного воображения.

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



      Под катом еще несколько примеров.
      Читать дальше →
    • Google: отбор результатов по времени

      • Translation
      Изменить параметры выдачи в Google, отталкиваясь от текущей даты, можно довольно простым способом. Для этого достаточно добавить в конец строки простой параметр – &as_qdr=d. После этого нажать «ввод». Появится дополнительное поле для выбора вариантов вывода результата поиска: в любое время, в последние 24 часа, в последнюю неделю, в последний месяц и т.д.



      P.S.: Есть рабочий Greasemonkey скрипт: Google Time Search (MODIFIED), чтобы не копировать каждый раз дополнительный параметр. Довольно удобная штука в домашнем хозяйстве.

      P.S.2: У меня нет никаких сомнений, что многим данный способ известен. Но друг он как-то поможет и тем, кто про него еще не знает?
    • Вышел Chameleon 1.0

        Этой весной на Хабре упоминался проект Chameleon, который на тот момент был проектом на KickStarter и представляющий из себя лаунчер для Android с любопытной идеей, которая, правда сказать, была в какой-то степени повторена функцией Google Now в летнем релизе Jelly Bean.

        Релиз был обещан в сентябре этого года и, как видно, у команды Chameleon все закончилось благополучно не только со сбором средств, а и с разработкой. Сейчас Chamelon доступен в Play Market в двух вариантах — для тех, кто поддержал проект на Kickstarter и может получить результат работы бесплатно и платная версия для всех остальных, желающих попробовать новинку (правда, средняя оценка приложения пока не радует).

        Работа лаунчера похожа на работу Google Now — приложение пытается предсказать потребности пользователя в зависимости от времени и места нахождения пользователя. Например, с утра Chameleon показывает почту, утренние новости, обновления социальных сетей, данные о пробках, авариях и тому подобное. Днём — при нахождении на работе — показываются курсы валют, цены на бензин, билеты и другая деловая информация. В вечернее время пользователю будет предлагаться всевозможная развлекательная информация вроде обновления на каналах YouTube, новые статьи Reddit и прочее. При этом все экраны и все виджеты (это HTML5-приложения, API Chameleon прилагается), которые показывают информацию, кастомизируемы пользователем по своему желанию.

        Стоимость приложения — 10$ (кстати сказать, бесплатно приложение могут получить те, кто на KickStarter перечислил создателям 5$ и более). Требуемая версия Android — от 3.2 и выше.

        Больше скринов под катом:
        Посмотреть
      • Учимся готовить Log4j + Logstash + ElasticSearch + Kibana 3 + Auth (Google OAuth2/BasicAuth/CAS Authentication)


        Задача


        Настройка удобного средства для обработки и получения логов.

        Условия


        1. Лицензия MIT или Apache 2.0
        2. Возможность приема и обработки многострочных сообщений
        3. Простота в настройке и использовании
        4. Возможность работы с логами из Log4j


        Решение


        Logstash + ElasticSearch + Kibana 3.
        Читать дальше →
      • Wi-Fi microSD Adapter: добавляем Wi-Fi модуль к фотокамере

          monoprice-wifi-microsd-adapter-product-photos09.jpg

          Ну, или любому другому девайсу, где есть слот для карт памяти формата SD. Дело в том, что на днях компания Monoprice анонсировала Wi-Fi microSD Adapter. Это — адаптер для microSD с модулем Wi-Fi.

          Сейчас есть уже фотокамеры с Wi-Fi модулем, но большинство моделей все же не оснащено таким модулем. Есть еще вариант типа Eyefi, но цена такого решения может быть достаточно высока. А девайс от Monoprice стоит меньше 35 долларов США.

          Адаптер поддерживает работу с microSD картами с емкостью вплоть до 32 ГБ. Если недостаточно — можно просто заменить карту. А в случае с тем же Eyefi пользователь ограничен размером такой карты, без вариантов.

          Читать дальше →
        • Continuous integration для php

            Эту статью написал мой добрый приятель и бывший коллега fred, работающий в команде программистов над большим и сложным проектом, который должен работать 24х7. Если кто-то решит пригласить его на хабр — с удовольствием вышлю его email по хабрапочте. Пожелания и комментарии приветствуются, а я обязуюсь передавать ответы автора в меру своих возможностей.

            Меня давно посещала мысль запустить CI-сервер для рабочего проекта. База модульных тестов уже достаточно внушительных размеров, а количество людей в проекте немного увеличилось. Можно было бы наблюдать за тем, как изменяется покрытие тестами кода и соблюдаются стандарты кодирования. И наказывать провинившихся. Шучу.
            Некоторое время назад была прочитана книжка Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска и статья Quality Assurance Tools for PHP, которые и послужили отправной точкой.
            Читать дальше →
          • Реализация быстрого импорта из Excel на PHP

              Мы продолжаем рассказывать о технологиях, используемых на нашем сервисе email-маркетинга Pechkin-mail.ru. Одной из ключевых задач любого сервиса, связанного с данными клиентов, является загрузка этих данных на сервис. Для Печкина очень важно быстро и без проблем для пользователя загружать адресные базы, содержащие email-адреса, имена, фамилии и другие дополнительные данные.

              Что использовать в качестве инструмента?


              В качестве базового стандарта, используемого при импорте адресных баз, мы взяли Microsoft Excel. Объясняется это просто:
              • это стандартный инструмент, которым на базовом уровне владеют 100% пользователей компьютеров. Более того, в бизнесе — это де-факто корпоративный стандарт и используется даже, если на рабочих компьютерах Mac или Linux.
              • Практически все CRM-, CMS-, облачные или десктопные системы имеют экспорт в Excel или CSV, который простым пересохранением приводится к формату XLS или XLSX.
              • Известно также, что “90% ошибок ПО сидит в полуметре от монитора”. Не в обиду будет сказано рядовым пользователям, но мы должны учитывать самый базовый уровень подготовки и тех. поддержке для объяснения достаточно сказать “Загрузите Excel-файл”, а не объяснять процедуру подготовки файла в нужном формате.


              Проблему пользователей при импорте адресных баз сняли. Но тут возникает уже проблема непосредственно разработки.
              Прочитать о быстрой реализации импорта из Excel на PHP и LibXL
            • Запуск OLAP-сервера на базе Pentaho по шагам


              Итак, дорогие хабровчане, хочу представить на ваше обозрение инструкцию, как нам пришлось поднимать OLAP-сервер в нашей компании. Шаг за шагом мы пройдем по пути, который был нами проделан, начиная с установки и настройки Pentaho и заканчивая подготовкой таблиц данных и публикацией olap-куба на сервере. Естественно, многое здесь может быть сумбурным/неточным/неоптимальным, но когда нам понадобилось поднять сервер и посмотреть, сможет ли Pentaho заменить нашу самописную статистику, у нас не было и такого…
              Дальше много букв и картинок...
              • +23
              • 72.4k
              • 4
            • Бан по континентам



                В одно прекрасное утро я просматривал логи и задал себе ряд вопросов:

                1. А жду ли я письма из Юго-Восточной Азии? (когда смотрел логи почты)
                2. И с какого перепугу ко мне стучатся ssh брутфорсеры из Штатов?
                3. Мне надо терпеть сетевые сканеры из Австралии?
                4. Кто мне звонит из Африки? (когда разглядывал логи asterisk)
                5. С какой стати к моему POP-серверу обращаются из Латинской Америки?


                Почему бы не забанить по континентам? Оставив только нужный континент(ы)?


                Под катом bash скрипт, который этим занимается
              • Создание надёжного хранилища раздаваемого нескольким серверам по nfs

                  При создании кластера для обработки звонков на базе CGP возникла необходимость настройки бесперебойного хранилища, монтируемого с нескольких сервров.

                  В качестве дистрибутиа для серверов был взят Ubuntu Server 10.10. Дисковое пространство было разбито на два логических диска (sda1 для установки системы, и sda2 собственно для разделяемого диска).

                  После установки базовой системы надо дополнительно установить следующие пакеты: heartbeat, pacemaker, drbd8-utils, xfs, xfsprogs, nfs-kernel-server.

                  Heartbeat и pacemaker нужны для кластеризации серверов. Хранилище сделано на основе drbd, в качестве файловой системы использовалась xfs. Раздача файловой системы серверам сделана по nfs.

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

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

                    • Tutorial
                    FightCode — это онлайн-игра для программистов, построенная по образу и подобию классической Robocode. Для программирования танков используется JavaScript, все сражения происходят прямо в браузере, а редактор кода на сайте имеет встроенную «песочницу», которая позволяет в реальном времени видеть эффект от изменений кода. В отличие от многих других подобных игр, создатели неплохо поработали над дизайном — игровое поле и весь сайт в целом выглядят привлекательно и ярко.



                    Всё это делает FightCode одним из лучших вариантов для новичков в подобных играх или для обучения программированию. Проект довольно молодой, и несмотря на то, что на сайте зарегистрировано почти 9000 игроков, пробиться в первую сотню рейтинга можно без особых усилий. Очень удобно организована система боёв со случайными соперниками — из всех доступных роботов автоматически выбираются те, чей рейтинг близок к вашему. Очки считаются по системе Эло — победа над более сильным противником даёт гораздо больше очков, чем над слабым.

                    Каждый участник может иметь сколько угодно роботов. Создание нового робота начинается с примитивного шаблона, который не делает почти никаких осмысленных действий. Добавив обработчики основных событий, таких как столкновения или попадания вражеского снаряда можно дать роботу набор «безусловных рефлексов», которые сделают его поведение более целесообразным и послужат отправной точкой для дальнейшего развития.
                    Вот как это делается:
                  • intro.js — пошаговое руководство для веб-страницы



                      Эта маленькая библиотека позволяет очень просто создать пошаговое введение для сайта или приложения. Достаточно добавить атрибуты data-intro и data-step с описанием и номером шага соответственно к нужным элементам страницы. Вот так:

                      <a href='http://google.com/' data-intro='Hello step one!' data-step='1'></a>
                      
                      Читать дальше →
                      • +129
                      • 48.6k
                      • 24
                    • SystemTap в Linux

                        Привет.

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

                        Всех интересующихся прошу под кат
                        • +37
                        • 16.9k
                        • 8
                      • Автоматическое подключение css и js файлов в Yii

                          Доброго времени суток.

                          На этот раз хочу, рассказать о способе автоматического подключения css и js файлов в Yii. Идея заключается в том, что бы к каждому файлу вида привязывать соответствующую папку с ресурсами (css, js, images). Это удобно, т.к. в большенстве случаев конкретные «assets» используются для конкретных файлов вида.
                          Читать дальше →
                        • Патч, позволяющий каждому коннекту иметь много user lock объектов

                            Привет,

                            Пока был в отпуске, написал патч для MySQL, позволяющий каждому коннекту владеть несколькими user lock объектами.
                            Патч доступен здесь:

                            https://code.launchpad.net/~kostja/percona-server/userlock

                            Это последний percona-server (5.5) + новые пользовательские локи.

                            Подробнее про патч написал в своём блоге.
                            Надеюсь, кому-то окажется полезен. Буду рад комментариям по этой фиче.
                          • AWS: IAM роли для серверов

                            • Tutorial
                            Привет! image

                            Я хочу рассказать о фиче IAM ролей для серверов в AWS. Роль — это совокупность прав доступа, которые можно применить к серверу. Можем рассмотреть на определённом примере — дать доступ серверу к S3, не забивая никаких ключей вручную.

                            Приступим к примеру.

                            1. Создадим роль с нужными правами


                            Идём в консоль IAM и там создаём роль S3.

                            Читать дальше →
                            • +12
                            • 4.2k
                            • 1
                          • Расширяем возможности Asterisk, используя PHP

                            Все слышали про мини-АТС нового поколения имя которой Asterisk. Так уж случилось что я заинтересовался этой системой и даже успел сделать пару коммерческих проектов.

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

                            Под катом я приведу примеры использования нескольких методов этого класса которые помогли мне.

                            а тут немного кода
                            • +10
                            • 51.7k
                            • 7