Выполнить php скрипты из контекстного меню.

01.01.2011

Продолжая тему автоматизации при помощи контекстного меню (см. Быстрая загрузка файлов на сервер) обработаем действие Выполнить как PHP. Не важно много ли у вас PHP скриптов на жестком диске, но если вы их используете, то вам не удобно каждый раз прописывать полный путь в URL или предварительно копировать скрипты в директорию виртуального сервера. Это поправимо: у нас в контекстном меню будет пункт, который будет выполнять скрипт независимо от того где он у нас находиться. Если он уже в директории сервера, то путь URL будет преобразован к виду http://localhost/путь/скрипт , если же он вне сервера, то он будет подключен (include) к файлу сервера, HTML код и все инклюды этого файла потянуться за ним.

Создание фильтра в opencart (1.4.8)

31.12.2010
В этой записи я описал инструкцию как в магазинном движке opencart версии 1.4.8 добавить возможность фильтровать записи по определенному полю, в инструкции это возраст (для магазина детских игрушек).

Быстрая загрузка файлов на сервер.

30.12.2010
Часто бывает что нужно поделиться с человеком файлом и каждый раз приходиться повторять однотипные действия, ждать, видеть раздражительную рекламу на файлообменниках... Почему бы не автоматизировать это насколько возможно? Это должно обходится парой кликов мышью.
Так как мой файловый менеджер nautilus (стандартный убунтовский), для того чтобы добавить действие в его контекстное меню я воспользовался утилитой Параметры->Настройка действий Nautilus
nautilus ftp
...

Маленькая неприятность с TP-Link на linux

28.12.2010
Купил железяку TL-WN722N - адаптер wi-fi для третьего компа, а оказалось что компания TP-Link не уважает альтернативные операционные системы и делает свои собственные драйверы только под Windows.
На компе стоит ОС Ubuntu. На другом компе с такой же убунтой работает wi-fi адаптер от D-Link, причем работает без всякого бубна, даже с live-cd - просто вставил и подключился...
Естественно что я попробовал разобраться в вопросе и найти способы заставить работать этот TL-WN722N. Для Linux существует проект madwifi (пакет драйверов) и второй вариант - NDISwrapper, который позволяет использовать драйверы написанные под виндовс.....

Сервис разгадывания кроссвордов

06.10.2010
Мой дед увлекается разгадыванием кроссвордов, причем наперегонки с ровесниками. Часто звонит и говорит вопрос, я полминуты гуглю и даю ответ... Бывает что искать приходится дольше, а совсем редко бывает что ответа вообще нет.
Быстренько написал скрипт, который позволяет искать слова с учетом того, что известны не все буквы, а только часть. В качестве базы спарсил орфографический словарь русского языка. Все это сделал доступным в виде онлайн-сервиса: http://phpblog.biz/tools/words.php. В реализации скрипта ничего сложного и интересного нет, поэтому выкладывать не буду (а еще чтоб не появились копии сервиса на других сайтах).

php5shop и uamarkets.com

26.09.2010
Недавно узнал что есть такая контора uamarkets.com , которая несмотря на ужасную убогость и корявость кода имеет достаточно много клиентов. Именно имеет. Мне довелось посмотреть на админскую сторону и даже поюзать ее (мне заказали автоматизацию заполнения магазина товарами). Это кошмар! Юзабилити на нуле, куча багов, которые не дают системе правильно работать... Цены ($) все с двумя нулями...
Решил провести небольшое сравнение по функционалу между uamarkets, php5shop и oscommerce. Во внимание не беру, что заплатить 300$ в uamarkets или 20$ за хостинг поставив туда бесплатную CMS это большая разница в бюджете, что uamarkets берут по 150$ даже за рассылку Ваших писем клиентам Вашего же магазина, что они напишут дополнительный модуль за 100$, а я от 5$... Не беру также во внимание объективную оценку таких характеристик как скорость, читабельность и размер кода, эффективность и тд, так как сейчас я не соревнуюсь с oscommerce, а для начала уведу только всех клиентов у uamarkets =) До oscommerce, magneto и остальных дело еще дойдет.

слежка за статусом icq пользователя

19.09.2010
Если хочется проследить когда пользователь включает-выключает аську (следовательно режим доступа к ПК) или определить насколько человек "пропал", можно сделать это на PHP + crontab. Скрипт выложу, но на страницу скриптов добавлять не буду (70% взято готовое) и разжевывать как пользоваться или что такое крон тоже не буду.

php curl multithread

19.09.2010
Пару недель назад на ачате видел такой пост, якобы curl multithread это для галочки и никакого прироста в скорости оно не дает... причем пост от человека с репой...
Специально для таких скептиков и по собственному интересу (насколько полезны мультизапросы) потратил время на тестирование 3 вариантов:
  1. php curl + javascript (искусственные мультизапросы)
  2. php curl и цикл foreach
  3. php multithread curl

Создание поиска по сайту

18.09.2010
Решил переделать поиск в своем движке магазина. Так как строки названий товаров малы, создавать поисковый индекс нет смысла, а простой LIKE %слово% не даст хороших результатов. Написал небольшой алгоритм, но достаточно эффективный для поиска по магазину.

Обход ограничения 30 секунд

17.09.2010
//заметка на полях...
Актуальный вопрос - ограничение времени выполнения скриптов на хостингах. Когда нужно проводить длительные операции в фоновом режиме, нужно быть уверенным, что процесс не оборвется на половине.
По идее, решение crontab, но не всегда он есть, не всегда пользователь скрипта сможет его настроить и далеко не всегда есть возможность создать задачу для крона из PHP, а потом еще и удалить. Да и достаточно много головняка...
Вариант решения вопроса:
...

движок интернет магазина

29.08.2010
Мой релиз: движок интернет магазина php5shop. Экземпляр в качестве демо установлен на http://php5shop.com. (Пока скачивать нельзя)
Функционал:
Многоуровневая структура категорий большой вложенности
Поддержка нескольких валют
Регистрация покупателей и возможность заказа без регистрации
Добавление товаров в корзину одним щелчком без перезагрузки страницы
Поддержка выбора количества едениц товара (без перезагрузки страницы)
Удобная навигация по сайту
Дополнительные страницы для информации о адресах магазина, почетных клиентах и т.д.
Функция новостей магазина в виде блога
RSS лента новостей магазина или продуктов (если функция блога отключена)
Оповещение менеджера о новых заказах через email и jabber
Редактирование пользователем контактной информации своего аккаунта
Функция восстановления пароля по email
Несколько дополнительных блоков, в которые можно вставить любую информацию (рекомендуемый товар, объявления, рекламу)
Возможность установки в каталог сайта, а не в корень
Функция просмотра изображения в большом размере (без перезагрузки страницы)
Быстрый поиск товаров (без перезагрузки страницы)
Возможность использования водяных знаков на фотографии
Возможность создания групп клиентов c системой скидок
Статистика заказов и продаж
Импорт товаров из xls (файла программы Microsoft Office Excel) или HTML таблиц

Регулярное выражение (perl\php) для извлечения содержимого html тэгов

22.08.2010
#<' . $tagname . '[^>]*>(.+?)(</' . $tagname . '>)#ism
Переменная $tagname содержит имя тэга (например, a или strong).

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

Посчитать количество строк php файлов

21.08.2010
Стало мне интересно сколько строк в php файлах проекта, над которым работаю...
Написал небольшой скрипт, который это считает:
<?php
/**
 * Считает количество строк в php файлах каталога
 */

$timestart = microtime();
$count = 0;

function start($dirname) {

    global $count;

    $dir = opendir ($dirname);
    while ( $file = readdir ($dir))
    {
        if ( $file != "." && $file != "..")
        {
            if(is_file($dirname . '/' . $file) && substr($file, -3, 3) == 'php')
            {
                $strings = count(file($dirname . '/' . $file));
                $count += $strings;
                echo $dirname . '/' . $file . ' - ' . $strings . '<br>';
            }
            else
                if(is_dir($dirname . '/' . $file))
                    start($dirname . '/' . $file);
                else
                    echo '<s>'.$dirname . '/' . $file . '</s><br>';
        }
    }
    closedir ($dir);
}

start($_SERVER['DOCUMENT_ROOT'] . '/application'); //каталог
$count -= count(file($_SERVER['SCRIPT_FILENAME']));//если скрипт в том же каталоге, в котором считаем
echo '<br>Итого:<h2>' . $count . '</h2>';

echo 'Сколько это заняло времени: ' . round(microtime() - $timestart,5);