• Создание GUI приложений на PHP

    • Tutorial

    Темой о разработке GUI приложений на PHP сегодня, пожалуй, уже никого не удивишь. Для этого существует не одно решение, есть как развивающиеся проекты, так и умершие. Но этот пост будет не о тех и не о других, а о новом расширении для PHP — библиотеке PHPQt5, а точнее о её более продвинутой реинкарнации — о PQEngine.

    P.S. PHPQt5 не имеет ничего общего с более известной библиотекой php-qt!
    Читать дальше →
  • Кастомные социальные кнопки

    Недавно участвовал в разработке одного проекта — фото конкурса. По задумке, рейтинг фото альбомов должен формироваться из суммы всех публикаций в социальных сетях: Facebook, Вконтакте, Twitter. Т.е. общий рейтинг фотоальбома расчитывается:
    Рейтинг фотоальбома = кол-во «Share» в Facebook + кол-во «Сохранить» в Вконтакте + кол-во «Retweet» в Twitter

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

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

    Итак:
    • количество лайков будем получать от REST сервисов каждой социалки
    • кнопки рисуем свои и обрабатываем событие click

    Читать дальше →
  • Релиз KPHP и движков

      Довольно часто, выступая на различных конференциях, мы делились желанием выпустить под открытой лицензией KittenPHP, согласно традиции, заложенной крупными IT-компаниями, такими как Google и Facebook.

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

      В связи с этим под катом вас ждет более подробный рассказ о внутреннем устройстве ВКонтакте и тех инструментах, которые сегодня стали доступны opensource-сообществу.


      Читать дальше →
    • Хэширование паролей в PHP 5.5 с использованием нового API

      Использование BCrypt является общепринятым и лучшим способом для хэширования паролей, но большое количество разработчиков по-прежнему используют старые и слабые алгоритмы, вроде MD5 и SHA1. Некоторые разработчики даже не используют соль для хэширования. Новый API хэширования в PHP 5.5 ставит своей целью привлечь внимание к BCrypt, упрощая работу с ним. В этой статье я расскажу об основах использования нового API для хеширования в PHP.

      Новый API хэширования паролей предоставляет четыре простых функции:
      • password_hash() — используется для хэширования пароля.
      • password_verify() — используется для проверки пароля на соответствие хэшу.
      • password_needs_rehash() — используется для проверки необходимости создать новый хэш.
      • password_get_info() — возвращает имя алгоритма хеширования и различные параметры, используемые при хэшировании.

      Читать дальше →
    • «Новости по теме» с помощью PHP, phpmorphy и MySQL

        Хочу поделиться методом определения «похожих» записей. Думаю, будет полезно для блогов или новостных ресурсов.
        Цель данного поста показать принцип, имплементация может быть не совсем комильфо, так как автор не проф. программист, а любитель.

        Читать дальше →
      • Удачная модель ветвления для Git

        • Перевод
        Перевод статьи Vincent Driessen: A successful Git branching model

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



        В качестве инструмента управления версиями всего исходного кода она использует Git.

        Читать дальше →
      • Разработка web API

        • Перевод

        Интро


        Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

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

        Собираем API-интерфейсы, которые понравятся другим разработчикам


        Понятные URL для вызовов API

        Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

        Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
        /dogs для работы со списком собак
        /dogs/12345 для работы с отдельной собакой
        Дальше
      • Бесплатный click-2-call виджет для вашего сайта

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



          В качестве демонстрации нашей платформы мы решили предоставить возможность бесплатно и без регистрации установить на сайт виджет голосовой обратной связи с вашим городским номером. Есть, конечно, некоторые ограничения, про это ниже.
          Читать дальше →
        • Распознаём retina-дисплеи джаваскриптом

          • Перевод
          • Tutorial
          Я отыскивал способ выяснить DPI устройства для употребления в мобильном дизайне. Я ещё не обнаружил его, зато нашёл приём для выяснения того, пользуется ли читатель сайта сетчаточным дисплеем. Вот как без хлопот достичь этого:
          var retina = window.devicePixelRatio > 1 ? true : false;
          

          Теперь переменная retina примет значение true, если у читателя сетчаточный дисплей. В дальнейшем можно использовать простой оператор if, чтобы выполнить тот или иной код в зависимости от типа дисплея.

          if (retina) {
              // у читателя дисплей типа retina
          }
          else {
              // у читателя дисплей не типа retina
          }
          

          Зачем?

          Читать дальше →
        • Мониторинг сайта с помощью Google Docs



            Автор блога Digital Inspirations Амид Агарвал (Amit Agarwal) опубликовал скрипт для Google Docs, который опрашивает статус сайта и заносит ответ в ячейку таблицы. Таким образом, можно сделать сервис мониторинга своими руками. Google Docs позволяет запускать скрипт с минутным интервалом и получать уведомления на email.
            Читать дальше →
          • Плагин для получения всеобъемлющей статистики о текущей страничке

              Это мой первый сколько-нибудь крупный опыт в программировании. И я очень надеюсь, плоды труда окажутся кому-либо съедобными.

              Что ж, прошу любить и жаловать: StatisFire — хромо-плагин для быстрого отображения кучи различной статистики.
              На что плагин способен сейчас?
            • Как правильно сортировать контент на основе оценок пользователей

              • Перевод


              В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

              Постановка проблемы


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

              Неправильное решение №1

              Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)
              

              Читать дальше →
            • Гайд по созданию Facebook Welcome Page и других кастомных табов

                Facebook — самая большая социальная сеть и один и самых посещаемых сайтов в мире. В ней можно не только постить веселые статусы и лайкать фотографии, но и
                использовать, как мощный маркетинговый инструмент. Все логично — миллиард пользователей, возможность таргетинга на определенную аудиторию, мгновенные объявления, ну и масса других
                полезных штук, которые недоступны для оффлайна. На сегодняшний день сложно найти компанию без собственной бизнес-страницы или популярную личность без фан-пейджа. В этой статье постараюсь
                подробно разобрать техническую сторону этого вопроса со стороны фронт-енд разработки.
                Речь в посте пойдет не о создании самой страницы, потому что это довольно тривиальная процедура, а о пользовательских вкладках, которые можно добавить самостоятельно и наполнить нужным контентом.
                Любой, даже начинающий веб-разработчик, может сделать с десяток таких табов за один вечер, зная некоторые принципы и нюансы их создания.
                Я имею в виду подавляющее большинство всякого рода welcome-страниц, страниц-анонсов и страниц со всяким информационным текстово-графическим контентом. На страницы посложнее с динамическими элементами, формами и прочим функционалом времени уйдет, конечно, побольше.


                Читать дальше →
              • Установка и настройка SVN (сервер+клиент)

                  По просьбам трудящихся, а так же учитывая, что есть статья по установке SVN (правда +Trac) под Linux, решил написать краткое описание установки и настройки SVN для Windows.
                  Ничего нового для людей, хорошо знающих и работающих с SVN, здесь не будет. Цель статьи — помочь некоторому проценту новичков, пребывающих на Хабре, таки осилить изучение этой системы контроля версий.
                  Читать дальше →
                • Вы еще не авторизуетесь по ключам? Тогда мы идем к вам

                  Этой заметкой я хочу показать, что использовать ключи для авторизации это просто.

                  Начнем с того, что нам понадобится PuTTY.
                  Идем на http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html и качаем следующее:
                  PuTTY — ssh-клиент
                  Pageant — агент для хранения ключей (зачем объясню позже)
                  PuTTYgen — генератор ключей
                  Читать дальше →
                • Работаем с jQuery Templates

                    Введение


                    Плагин jQuery Templates – это «движок шаблонов», работающий на стороне клиента как расширение jQuery.

                    Этот плагин помогает показать в браузере данные, которые находятся в объектах и массивах JavaScript, избавляя вас от рутинных операций по созданию HTML-кода, экранированию специальных символов и т.п. Кроме того, он обладает очень интересными возможностями – например, позволяет обновлять созданный с его помощью HTML-код при изменении исходных данных.

                    Разумеется, jQuery Templates – не единственный и не первый «движок шаблонов», но у него есть большое преимущество перед альтернативными вариантами – поддержка со стороны jQuery Team. Это позволяет нам не бояться того, что этот плагин окажется заброшенным, и различные проблемы, возникающие при выходе новых версий браузеров, придется решать своими силами.

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

                    Читать дальше →
                  • Инструменты для дизайнеров и разработчиков

                    • Перевод


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

                    Смотрим
                  • Регистрация своей фирмы собственными руками, туду-лист

                      Дисклаймер: описываю только свой личный опыт и мнения автора могут не совпадать с мнением автора. Статья огромная, читать много.

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

                      Эта статья адресована тем, кто уже «на грани». Она почти лишена философии и туманных ссылок, просто тупо туду-лист. Бери и делай. Намеренно избавляю тебя от объяснений, зачем молодому проекту нужна госрегистрация, такая ли уж это свобода – быть собственником и от куда взять деньги на госпошлину. Статья адресована московским стартаперам, гео-патчи от других городов приветствуются в комментариях.
                      Будем считать, что с формой собственности определились — это ООО и упрощенка 6%. Если кому нужно ИП – там проще, справишься и без этой статьи.

                      Для создания фирмы необходимо:

                      Минимальный реквизит для создания своей компании
                      Подробности под кОтом.
                    • Google Analytics: Определение позиции сайта по ключевому слову в поисковой системе Google

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

                        К сожалению, большинство поисковых систем не предоставляют возможности отследить, с какой позиции поисковой выдачи был осуществлен переход на сайт. Однако такую возможность предоставляет поисковая система Google. Единственное условие — возможность определить позиции можно только у тех пользователей, которые были авторизованны в Google.

                        image
                        Читать дальше →
                      • Список полезных PHP классов и библиотек

                          Email


                          • Swift Mailer
                            Swift Mailer легко интегрируется в любое PHP-приложение. Это гибкий и элегантный ООП-подход к отправке писем с множеством функций: отправка эл.почты, используя SMTP, SendMail, Postfix, поддержка серверов и др.
                          • PHPMailer
                            Лучший класс для работы с эл. почтой. Поддерживает сообщения в цифровой форме, S/MIME шифрование, текстовые и HTML-письма, изображения, поддерживает несколько Email’ов, SMTP-аутентификация.

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