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

Read the rest of this entry »

Tags:

Apache. SetEnv.

Hints Февраль 4th, 2010

Если в httpd.conf вписать

SetEnv HELLO 'WORLD'

то код

echo $_SERVER['HELLO'];

напечатает «WORLD». А если, кроме или вместо этого, в .htaccess вписать

SetEnv HELLO 'HELLO'

то на экране будет «HELLO». Как и ожидалось.

Вот такая полезняшка может использоваться, например, для следующего случая.

if (!empty($_SERVER['ENV']))
{
     require_once('conf.' . ($_SERVER['ENV'] == 'test' ? 'test' : 'dev') . '.php');
}
else
{
     require_once('conf.prod.php');
}

Только SetEnv нужно писать в httpd.conf, чтобы случайно не перенести кривой .htaccess на рабочий сервер.

Tags:

Wildflower – CakePHP CMS

CakePHP Январь 30th, 2010

Wildflower - CakePHP CMS

Wildflower - CakePHP CMS

Из всех найденных cms на CakePHP, эту считаю самой самой классной. 12 января вышел релиз 1.3 версии. Предыдущая бета версия была, вроде, в мае прошлого года. Относительно регулярно поглядывал не появился ли релиз и вот он есть. Хорошо, что еще раз глянул на первое предложение гугла по запросу «cakephp». Она и в гугле первая.

Минуту назад хотел продолжать писать чем мне так понравилась эта цмска, но так уж лень, что капец. Суббота сегодня – это раз. На тренировку пора выходить, нужно порезвиться – это два. Посему, просто пообещаю поделиться каким-нибудь самописным плагином. Если не поделюсь, то я ж*опа.

Tags:

1. http://docs.google.com/
2. Upload
3. File -> Download as -> Word

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

Tags:

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

function getTasksFromFile($file)
{
    // TODO: filemtime(); test:)

    $tasks = array();

    $lines = file($file); // не всегда что надо. как чинить?

    foreach ($lines as $n=>$line)
    {
        $p = stripos($line, 'todo' . ':');
        if ($p !== false)
        {
            $task = trim(substr($line, $p + 5));
            $file = str_replace($this->basePath, '', $file);
            $tasks[] = array('file' => $file, 'line' => $n+1, 'task' => $task);
        }
    }

    return $tasks;
}

Как-то так. Оформил ее в виде плагина для CakePHP 1.2 и дарю вам: cakephp-todo-plugin :) В файл routes.php добавляем строку

Router::connect('/admin/todo/*', array('controller' => 'todo', 'plugin' => 'todo', 'admin' => true));

И смотрим что еще осталось поправить в скриптах.

Удачи!

Tags: ,