Yii: поведения (behaviors)

Поведения в yii позволяют применять некоторые методы к уже существующему объекту из другого класса. Для чего могут понадобиться поведения? Рассмотрим “жизненный” пример. Нужно получить какие-то данные по залогиненному пользователю. Можно, конечно, использовать что-то вроде: User::model()->findByPk(Yii::app()->user->id); А можно использовать поведения и добавить метод в Yii::app()->user protected/components/WebUser.php class WebUser extends CBehavior { public function getData() { if ($this->getOwner()->id) { return User::model()->findByPk($this->getOwner()->id); } else { return FALSE; } } } Добавляем в конфиг protected/config/main.

Read More

Проект в utf8, mysql-база в cp1251

Бывает так, что исходники проекта в utf8, а данные в базе хранятся в cp1251. Чтобы MySQL сам занимался переводом в другую кодировку, но после коннекта выполнить команды: $db->query('SET NAMES cp1251'); $db->query('SET CHARACTER SET utf8');

Read More

Голосовое напоминание в Ubuntu Gnu/Linux

Сидя за компом забываешь кое-что сделать, например, выключить плиту. В линуксе это можно реализовать так: echo "нужная комманда" | at 07:00 Примеры: Сказать голосом через 10 минут, что нужно выключить плиту: $ echo "espeak -v ru 'Выключи плиту'" | at `date -d '+10 minute' +%H:%M` Пора выходить: $ echo "espeak -v ru 'Пока выходить'" | at 20:00 Весело получается ;)

Read More

3G интернет в Ubuntu

Хочу показать насколько просто настраивать 3G интернет в Ubuntu. Имеется huawei E1550 от МТС и Ubuntu 10.10. Хочу обратить внимание, что это всё работает “из коробки”. Всё, интернет подключен ;)

Read More

Расширение для Google Chrome: local database storage

Продолжаем осваивать плагинописание для браузеров на основе chromium и ,соответственно, для google chrome. Текущая тема: научиться использовать local database storage. Local database storage - это база данных, использумая из javascript. Представляет она собой SQLite внутри. Синтаксис привычный для SQL баз. Я буду использовать базу для запоминания всех полученных цитат. Логически все действия можно разделить на 4 операции: Открытие базы и получение коннекта к ней Создание таблицы Запись в таблицу Чтение из таблицы Открытие базы и получение коннекта

Read More

Пишем расширение под Google Chrome

В связи с последними тенденциями в вебе (в том числе и недавний запуск webstore), возникла идея попрактиковаться в написании плагина под Google Chrome. Решил написать плагин, который бы показывал цитаты с сайта Forismatic.com, после прочтения статьи о написании аналогичного апплета для gnome. Страница установки плагина. Требования: показ уведомлений через всплывающее окошко. двуязычность: русский и английский, причём язык должен подцепляться автоматически в зависимости от выставленного в браузере. Но при этом оставлять выбор на каком языке получать цитаты.

Read More

Настройка Netbeans для yii с поддержкой xdebug, тестов phpunit и selenium

После прочтения книги Agile Web Application Development with Yii 1.1 and PHP5 захотелось рассказать о настройке NetBeans для работы с yii, включая поддержку unit-тестов + тесты через selenium. Selenium позволяет проводить тесты, почти полностью эмулируя действия через браузер: кликать по ссылкам, вводить текст. Это очень мощно! Имеются: - Сервер (ip: 192.168.0.3) Debian или другой linux-сервер с настроенным nginx, php5-fpm, xdebug - Компьютер разработчика (ip: 192.168.0.2) Ubuntu 10.10 с установленным NetBeans 7.

Read More

MySQL запросы через консоль

Обнаружил очень простой способ выполнения MySQL запросов в Debian. Причём без указания логина и пароля. В Debian’е создаётся системный пользователь debian-sys-maint, от которого и будут идти запросы. Например выборка: echo "SELECT * FROM database.table WHERE id > 10" | mysql --defaults-file=/etc/mysql/debian.cnf -Bs Можно мониторить нагрузку: watch 'echo "show full processlist" | mysql --defaults-file=/etc/mysql/debian.cnf -Bs'

Read More

Apt: управление приоритетами пакетов из stable, testing, unstable, experimental

Есть несколько “виртуальных” релизов у debian: stable - на текущий момент это 5 версия (lenny), testing - squeeze (когда он будет выпущен, то перейдёт в релиз stable). Unstable и experimental - экспериментальные релизы, не для продакшена!. Пакет проходит путь из experimental => unstable => testing => stable. Иногда бывают ситуации, когда нужно установить пакеты поновее. Можно, конечно, скачать отдельно deb-пакет и установить его, но в этом случае одни минусы: возможно требуются удовлетворения зависимостей и лишаемся обновлений.

Read More

Bash completion - расширенная автоподстановка

Очень нужная тулза для ленивых админов. Может работать автодополнением для разных консольных программ: aptitude, git, invoke-rc.d, ssh и других. Список поддерживающих программ находиться в директории /etc/bash_completion.d По желанию можно самому расширить этот список. Не забудьте прислать ваши труды мейнтейнеру пакета. aptitude install bash-completion Добавляем в ~/.bashrc # Use bash-completion, if available if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi

Read More