• 6 советов для создания сложных AJAX сайтов

    • Перевод
    • Tutorial
    Все мы знаем множество преимуществ использования AJAX: пользователям не нужно ждать загрузку новой страницы, действия выполняются в фоновом режиме, в результате чего можно обеспечить гораздо более динамичный user experience. Идеи вроде бы просты, но создать сложное AJAX веб приложение достаточно тяжело. Я создал свой блог на основе AJAX, у меня есть несколько советов и я хочу поделиться с вами своим опытом. Надеюсь я помогу вам избавиться от некоторых проблем в будущем!
    Читать дальше →
  • Как узнать, что ваш PHP сайт был взломан

    • Перевод
    Сайт моего друга недавно был взломан, на нем была запущена старая версия IP.Board, в которой есть уязвимость локального внедрения кода (local file inclusion). Этот пост не будет посвящен IP.Board или другому php коду, он покажет, как найти потенциально вредоносный php код на ваших серверах. Наконец, покажу пример того, что злоумышленники могут загрузить на взломанный сайт.

    Проверьте логи доступа


    Что бы с чего-то начать, я бы хотел поделиться некоторыми записями из журнала доступа (access log) взломанного сайта моего друга.

    IpreMOVED - - [01/Mar/2013:06:16:48 -0600] "POST /uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
    IpreMOVED - - [01/Mar/2013:06:12:58 -0600] "POST /public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
    

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

    Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.

    Рассмотрим подробнее приведенные выше строки журнала, ничего не цепляет вас?

    Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
    Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
    Читать дальше →
  • Простой пример использования библиотеки Volley

    • Перевод
    Я уверен вы, еще не слышали слово «Volley», это библиотека, представленная на Google I/O 2013 Ficus Kirkpatrick.

    Для чего библиотека Volley?


    Volley это библиотека, которая делает сетевые приложения для Android проще и, самое главное, быстрее.

    Она управляет обработкой и кэшированием сетевых запросов, и это экономит драгоценное время разработчиков от написания одного и того же кода сетевого запроса/считывания из кэша снова и снова. И еще одно преимущество, меньше кода, меньше количество ошибок :)

    Обычно мы пишем один и тот же код сетевого запроса в AsyncTask, логику обработки ответа от Web API и отображения его в View. Мы должны заботиться об отображении ProgressBar/ProgressDialog внутри OnsourceExecute() и OnPostExecute(). Я знаю, что это не трудная задача, но все же рутинная. Иногда бывает скучно, даже когда определен базовый класс для управления ProgressBar/ProgressDialog и многими другими вещами. Так что теперь можно сказать, Volley может быть мощной альтернативой AsyncTask.
    Читать дальше →
  • HttpRequest — библиотека для простой работы с HTTP протоколом

      https://github.com/Garik-/http-request

      Очень часто в коде можно встретить такие строки:

      $result = file_get_contents("http://geocode-maps.yandex.ru/1.x/?geocode=".urlencode("Москва"));
      
      $handle = fopen("http://www.example.com/", "rb");
      $result = fgets($handle);
      

      • Не важно человеку, что директива allow_url_fopen может быть отключена на сервере.
      • Не важно, что на сервере установлена библиотека cURL, которая без проблем скачает 100 МБ файл.
      • Не важно, какой ответ вернет сервер, 200, 301, может 404, может 502?
      • Не важно, то что сеть не идеальная среда и ответ может придти частично или его вовсе не будет продолжительное время. Скрипт попросту подвиснет в ожидании на неопределенное время или вернет не корректный результат.

      try {
          $http = HttpRequest::get("http://geocode-maps.yandex.ru/1.x/?format=json",array("geocode"=>$city))->acceptJson();
          $json = $http->ok() ? json_decode($http->body()) : null;
      } catch (HttpRequestException $e) {
          exit($e->getMessage());
      }
      

      Теперь это действительно не важно.

      Библиотека Http Request основана на одноименной библиотеке Kevin Sawicki, которая должна быть хорошо известна Android разработчикам, ведь её использует сам GitHub в своем приложении.
      Читать дальше →
    • Мы выпустили diafan.CMS 5.0

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

        image

        Как бы это пафосно не звучало, но мы считаем, что знакомство с нашей CMS будет полезно всем, кто так или иначе касается создания сайтов. Конечно, для разных сайтов есть разные подходящие решения, где-то достаточно ВордПресса, а где-то не обойтись без Битрикса, но мы уверены, что ниша, которую мы пытаемся занять, на рынке CMS есть, и мы там очень хорошо смотримся. Причем, если несколько лет назад мы позиционировались как простая CMS для сайтов-визиток и «даже» небольших магазинов, то сегодня наша CMS позволяет делать вообще почти все, включая серьезные магазины, а среди отзывов пользователей есть восторженные заявления, что мы гораздо лучше большинства конкурентов.
        Читать дальше →
      • Изучаем протокол MMP (Mail.ru агент) и пишем альтернативный клиент

          Не для кого не секрет, что «Mail.ru Агент» стал довольно популярным IM проектом. Здесь вам и поддержка ICQ, XMPP, голосовых звонков и даже отправка SMS, только вот компания Mail.ru совсем забыла о разработчиках.
          Официальная документация протокола обмена данными Mail.ru Агент описывает версию протокола 1.7 реализованную в 2008 году. На данный момент сервер использует протокол версии 1.24.
          Читать дальше →