• JavaScript аналог функций php base64_decode и base64_encode

    Этот JavaScript код используется для кодирования / декодирования данных с использованием base64 (кодировка эта разработана, чтобы можно было перегонять двоичные данные через текстовые транспортные слои, которые не являются 8-битными, к примеру, http). Сценарий полностью совместим с UTF-8 кодировкой. Вы можете использовать формат base64 как очень простой механизм шифрования. Разумеется, это не является шифрованием, но скрыть от любопытных глаз что-то, к примеру в cookie сойдет. Для php аналогичные функции base64_encode и base64_decode встроены в ядро, для js же пока приходится использовать самописные функции. Если вы планируете использовать кодировку UTF-8 в проекте, не забудьте установить кодировку страницы на UTF-8 .  

  • PHP класс для быстрой пакетной обработки изображений

    Представляю Вашему вниманию класс для пакетной обработки файлов jimage. Класс позволяет делать тумбики изображений, создавать коллаж из десятка картинок, и применять различные gd эффекты к изображениям. А также комбинировать все эти действия.

    Класс написан мной для конкретного проекта, и с тех пор успешно применяется во других. Исходный код на гитхабе.

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

    <?php 
    define('ROOT',dirname(__FILE__)); // для работы скрипта должна быть объявлена
    // эта константа содержащая корень сайта
    include "class.jimage.php";
    $ji = new jimage();
    $ji->thumb(ROOT.'/img/1.png',ROOT.'/img/mini_1.png',100);

    элементарно и просто. У метода есть ряд настроек, первой идет путь до изображения. Второй путь до итогового тумбика, 3 и 4 это размеры по ширине и высоте соответственно, 5 - ый параметр это флаг, который может иметь несколько значений 

    USE_HOWSET или '' - и ширина и высота должны быть заданы, размер итогового тумбика задается строго, изображение обычно искажается
    USE_WIDTH или 'w' - задается только ширина итогового тумбика, высота считается пропорционально по заданному изображению
    USE_HEIGHT или 'h' - тоже только по высоте
    USE_AUTO или 'a' - по умолчанию, задаем и высоту и ширину, если входящее изображение вертикальное то размеры тумбика расчитываются так, чтобы все изображение влезло в заданные пределы.

    Поясню все варианты на примерах, возьмем за основу изображение красавицы Хайден Панеттьери

  • PHP Универсальный RSS Генератор (поддерживает RSS 1.0, RSS 2.0 и ATOM)

    RSS канал на свой блог я прикрутил давно, взяв php скрипт  из Danneo CMS. Вот только радость моя была не долгой, скрипт не давал валидный rss, и любимая Opera кричала что-то невразумительное об ошибке XML. Тогда я решил написать rss генератор сам,  но так как не очень люблю строить велосипеды, сперва я решил поискать готовое решение.

    Попробовав кучу скриптов мой выбор пал на скрипт из phpclasses.org, также можете скачать на моем сайте

    Скрипт поддерживает генерацию:

    • RSS 1.0 
    • RSS 2.0
    • ATOM 1.0

     

  • strtotime в нужном формате

    В php есть замечательная функция работы со временем strtotime. Она преобразует строковое представление даты в UNIXTIME формат(количество секунд, прошедшее с 1-го января 1970-го года). Удобна она прежде всего тем, что в нее можно подавать данные, введенные пользователем в форме, к примеру, дату рождения. На выходе мы получим удобный unixtime, с помощью которого можно проводить различные валидные сортировки по дате.

    Приведу пример:

    echo strtotime('8-12-1986'); // вернет 534366000

    что эквивалентно

    echo mktime(0,0,0,12,8,1986);

    Но что если ваш пользователь пришлет на вход функции такой формат '8 12 1986'. В этом случае 

    echo strtotime('8 12 1986'); // вернет false

    Функции просто не понятно, что здесь день, что здесь месяц, а что год. Как решить данную проблему? Как показать php формат введенной даты? 

  • Автоматический переводчик текста на PHP через Google Translate

    Не так давно Google закрыл API для своего Google Translate, в результате множество скриптов для автоматического перевода текста просто перестали работать. Программисты вынуждены были написать скрипт, который парсит переведенный текст из самого переводчика. Этот класс может переводить тексты между двумя языками с помощью Google Translate. Он может послать HTTP  запрос  на  сайт и перевести текст между двумя заданными языками.
    Класс парсит возвращенную Google Translate страницу результата и возвращает переведенный текст извлеченный из страницы.

  • Добавление кнопок социальных сетей на сайт

    В мире WEB2.0 окончательную и бесповоротную победу в распространении информации одержали социальные сети и сервисы. В том же facebook информации сейчас столько, что google нервно подрагивает в надежде спарсить весь этот объем к себе в базу. Не так давно представители  facebook намекнули о покупке браузера Opera, со всеми вытекающими. С такими темпами развития социальные сети в частности такие гиганты, как фейсбук или вконтакте могут создать нечто вроде интернета в интернете. Уже сейчас для большинства людей интернет представляет из себя лишь браузер с контактом на домашней страничке, по умолчанию.  Присоединиться к этому успеху и поможет данная статья. 

  • Добавляем в jQuery $.browser

    jQuery Browser  В jQuery плагин $.browser устарел, и его удалили. Разработчикам советуют использовать для этих целей специальные инструменты типа Modernizr. Беда в том, что браузеров становится очень и очень много. Следить за всеми ними уже не так важно, новые версии jQuery не поддерживают ie6-7, что правильно. 

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

  • Как определить преобладающий цвет в изображении

    Сортировки фотографий по содержанию - задача совсем не тривиальная, и в большей мере играет роль качество распознавания содержания, с которым Вам нужно отсортировать изображение. Конечно о системе интеллектуального распознавания изображения речи не идет, но получить инструмент, с которым можно было бы сортировать более менее похожие фото, вполне реально. К примеру фотосет Джессики Альбы, который каким-то образом смешался с 1000 фото других актрис. Часто отличить такой фотосет от остальных можно по набору цветов, которые доминируют в фото, так как съемки обычно ведутся в одних и тех же декорациях, и лишь модель меняет позу. Этому занятию и посвящен данный пост.

    Вы наверное видели в Яндекс картинках поиск по цвету. Как было бы здорово если бы у Вас была возможность сортировать фото таким же образом на своем сайте.

  • Как перелить из article в news в Danneo CMS

    Модули article и news в Danneo CMS очень похожи. Практически, отличаются только таблицы pref_articele и pref_news и то, лишь одним полем. В одном проекте встала задача перелить данные со всеми категориями и статьями в другой, из article в news. Выкладываю небольшой скрипт созданный для этих целей.

    Пользоваться им достаточно просто.

    Заливаем в корень сайта с Danneo CMS скрипт migration.php, в нем находим эти строчки

    $k = 0;
    $items = array();
    $p = moveCat('news',0,&$items);
    echo 'Статей перенесено:'.$k.', категорий перенесено:'.$p;

    Если вы хотите перенести из Главной категории(catid=0) в ту же категорию, то ничего не меняем. Теперь, если вдруг нам захотелось перенести все в категорию с catid = 15, меняется одна строчка

    $p = moveCat('news',15,&$items);

    Если Ваш модуль сделан на основе news или article, то эту же строчку меняем, к примеру, на

    $p = moveCat('firms',15,&$items);

    Если в скрипте есть ошибки, буду рад вашим комментариям.

  • как проверить пересекаются ли два прямоугольника

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

    варианты пересечений двух прямоугольников