Написанно 03 марта 2012 в 09:09

Очень люблю Yii и автокомплит, долго искал способ, как сделать его поддержку для компонентов, расширений. Этот способ проверял только в PhpStorm, но должно работать и в других IDE поддерживающих PHPDoc.

Написанно 27 июля 2011 в 10:47

Задача: получить список файлов в директории и поддиректориях, отсортированный по дате изменения.

Решение:

find . -exec ls -d --full-time "{}" \; | sort -k 6

Однако данный способ работает очень долго если файлов много, т.к. ls вызывается для каждого файла, чтобы получить дату. Линуксоиды, есть еще варианты?

Написанно 03 апреля 2011 в 14:12

Наконец-то заставил себя. Сменил дизайн и перешел с WordPress'а на самописный движок на Yii.

Написанно 28 марта 2011 в 14:36

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

Написанно 03 марта 2011 в 14:17

Убил несколько часов, пытаясь разобраться почему при тестировании не пишется лог. Так вот, при тестировании PHPUnit, Yii приложение инициализируется, но не запускается. Из-за этого в конце работы не срабатывает событие onEndRequest на которое подписана функция CLogRouter::processLogs(), но она-то и сообщает всем лог-роутам, что нужно засейвить логи.

К счастью, это событие умеет генерировать CApplication::end(). Поэтому в bootstrap.php сообщаем php в конце работы скрипта тестирования вызвать эту функцию.

function shutdown(){
    Yii::app()->end();
}
register_shutdown_function('shutdown');

Теперь будут выполняться все обработчики подписанные на событие onRequestEnd.

Написанно 17 октября 2010 в 21:48

Написал компонент к Gii для генерации фикстур.

Скачать можно тут: http://dr0id.ru/downloads/gii-fixture.rar

Обсуждение: http://yiiframework.ru/forum/viewtopic.php?f=9&t=1582

Написанно 07 октября 2010 в 16:04

Качаем последнюю версию с гитхаба, распаковываем:

wget http://github.com/DmitryKoterov/dklab_realplexor/tarball/master
tar zxf *dklab_realplexor*.tar.gz
mv *dklab_realplexor* /usr/local/dklab_realplexor
Написанно 03 августа 2010 в 15:17

Добавление скрипта в автозагрузку:

    # update-rc.d имя_скрипта_в_initd defaults

Удаление скрипта из автозагрузки:

    # update-rc.d -f имя_скрипта_в_initd remove
Написанно 22 марта 2010 в 15:06
chmod -R a+X .

Команда пройдется рекурсивно по текущему (точка ".") каталогу и всем его подкаталогам, даст права на запуск только каталогам.

Написанно 17 марта 2010 в 20:30

Для задания статического IP интерфейса нужно открыть /etc/network/interfaces и вместо

auto eth0
iface eth0 inet dhcp

написать что-то типа

auto eth0
iface eth0 inet static
        address 192.168.0.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

address - нужный IP

netmask - маска подсети

network - адрес сети

broadcast - адрес широковещательных запросов

gateway - адрес шлюза

Это тот минимум, который нужно указать для задания статического IP.

Для изменения MAC адреса, нужно дописать такую строчку:

hwaddress ether xx:xx:xx:xx:xx:xx
Написанно 11 марта 2010 в 15:58

Сжатие

$ tar -zcvf project.tgz project

Распаковка

$ tar -zxvf project.tgz
Написанно 30 мая 2009 в 03:11

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

В итоге сделал так — при генерации страницы, в параметр src писать ссылку на пусткую картинку 1x1, а в alt ссылку на нужную картинку. Скрипт подставляет в src значение из alt.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 
<script type="text/javascript">
    function spoiler(id) {
        if(document.getElementById(id).style.display == "none"){
            document.getElementById(id).style.display = "";
 
            images = document.getElementById(id).getElementsByTagName('img');
            for (var i=0;i < images.length;i++) {
                if (images[i].alt != "") images[i].src = images[i].alt;
            }
 
        } else {
            document.getElementById(id).style.display = "none";
        }
    }
</script>
 
<a href="#" onclick="javascript:spoiler('spoiler')">Открыть спойлер</a>
 
<div id="spoiler" style="display: none;">
    <img src="spacer.gif" alt="medved-privet.jpg"/>
</div>
 
</body>
</html>