среда, 4 апреля 2012 г.

С днем веб-мастера!



Сегодня, 4.04 день веб-мастера.

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

Сегодняшняя дата, кстати, выбрана не случайна, как вы уже наверное заметили, — 4 апреля (4.04) похоже на 404 ошибку, именно в честь нее выбрана эта дата. 
Так же, сегодня международный день Интернета, в России он празднуется 30 апреля, но международный — именно сегодня.

С праздником!

Всячина.Полезная утилита для разработчиков Ubuntu-софта



Обнаружил в интернете интересную утилиту Hello Unity, которая могла бы быть полезна разработчикам, чья цель — полноценно интегрировать своё приложение в оболочкуUnity.

Hello Unity в реальном времени отображает все изменения, а так же тут же отображает код (с подсветкой синтаксиса), который и нужно прописывать в своей программе. Как мне кажется — это очень удобно!

Предлагаю ознакомится с двумя видеозаписями с демонстрацией Hello Unity:






Скачать Hello Unity можно со странички проекта: launchpad.net/hello-unity.


Управление пользователями
Список пользователей:


mysql> SELECT User,Host FROM mysql.user;

Список прав у пользователя root@localhost

mysql> SHOW GRANTS FOR root@localhost;

Создание нового пользователя:

mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'secret';

Добавим выбранные привилегии для всех таблиц БД dbname пользователю ‘user’@'localhost’

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX ON dbname.* TO 'user'@'localhost';

Добавим все привилегии для всех таблиц БД dbname пользователю ‘user’@'localhost’

mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost';

Удаление прав пользователя ‘user’@'localhost’ для БД dbname:

mysql> REVOKE ALL ON dbname.* FROM 'user'@'localhost';

Удалить пользователя ‘user’
mysql> USE mysql;
mysql> DELETE FROM user WHERE User='user';

Перезагрузка привилегий:

mysql> FLUSH PRIVILEGES;

Новый пароль для root:

$ mysqladmin -uroot password 'secret'

Управление базой данных
Создание базы данных:

mysql> CREATE DATABASE dbname COLLATE utf8_general_ci;

Создание базы данных из консоли

$ mysqladmin -u root -p create dbname

Удаления базы данных из консоли:

mysqladmin -u root -p drop dbname

Мониторинг и статистика

Список всех баз данных:

mysql> SHOW DATABASES;

Список всех таблиц в выбранной базе данных:

mysql> SHOW TABLES;

Статистика по работе сервера:

mysql> SHOW GLOBAL STATUS;

так же можно воспользоваться утилитой mytop — мониторинг процессов Mysql в реальном времени

Оптимизация баз данных
При помощи команды
mysqlcheckможно выполнять проверку, оптимизацию и исправление ошибок.
Поверка на ошибки БД dbname:

$ mysqlcheck -p dbname

Восстановление и оптимизация всех БД:

$ mysqlcheck -Aor -p

Описание аргументов
-p – использовать пароль
-A – проверять все базы данных
-r – ремонтировать БД
-o – оптимизировать БД
Скрипт простой оптимизации БД, можно добавить в крон для выполнение раз в сутки:

mysqlcheck --repair --analyze --optimize --all-databases --auto-repair -u root -pSECRET

Дамп (резервная копия)
Дамп базы данных:

$ mysqldump -uroot -p dbname > dump.sql

Дамп выбранных баз:

$ mysqldump -uroot -p -B dbname1 dbname2 > dump.sql

Дамп всех баз

$ mysqldump -uroot -p -A > dump.sql

Дамп только структуры, без данных:

$ mysqldump -uroot -p --no-data dbname > database.sql

Другие опции
—add-drop-table — добавляет команду DROP TABLE перед каждой командой CREATE TABLE
—add-locks — добавляет команду LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы
—no-create-db, -n — не добавлять команду CREATE DATABASE, которая добавляется при использовании параметров —databases и —all-databases
—no-data, -d — дампить только структуру таблиц
—no-create-info, -t — не создавать команду CREATE TABLE
—skip-comments — не выводить комментарии.
—compact — использовать компактный формат
—create-options — добавляет дополнительную информацию о таблице в команду CREATE TABLE: тип, значение AUTO_INCREMENT и т.д. Не нужные опции можно вырезать с помощьюsed.
—extended-insert, -e — применение команды INSERT с многострочным синтаксисом (повышает компактность и быстродействие операторов ввода)
—tables — дампить только таблицы из списка, следующего за этим параметром, разделитель — пробел
Применение дампа:

$ mysql -uroot -p dbname1 < dump.sql

Изменение кодировка при импорте с дампа
Определение кодировки файла:

file --mime-encoding dump.sql

Конвертирование из кодировки latin1 в utf8:

mysqldump --add-drop-table -uroot -p dbname | replace CHARSET=latin1 CHARSET=utf8 | iconv -f latin1 -t utf8 | mysql -uroot -p dbname
Восстановление root-пароля
$ service mysqld stop
$ mysqld_safe --skip-grant-tables &
$ mysql
mysql> UPDATE mysql.user SET Password=PASSWORD('secret') WHERE User='root';
mysql> FLUSH PRIVILEGES;
$ service mysqld restart

Linux.Ubuntu 12.04.Инструмент управления конфиденциальной информацией



В следующей версии Linux-дистрибутива Ubuntu — 12.04 «Precise Pangolin» (релиз состоится 26 апреля 2012 года) — появится инструмент для управления некоторой конфиденциальной пользовательской информацией.

Настройки конфиденциальности в Ubuntu 12.04

Новое приложение для Ubuntu («Privacy») позволяет удалять сведения о пользовательской деятельности в рабочей среде GNOME (за выбранный временной интервал) и отключать журналирование событий, связанных с определенными файлами и приложениями. Впрочем, все эти возможности относятся только к логам, наблюдаемым средствами операционной системы и GNOME, т.е. настройки не распространяются на механизмы логирования, реализованные в самих приложениях (например, на ведение истории посещённых сайтов в Firefox или хранение истории бесед в Pidgin).
По этой причине нынешнее средство для настройки параметров конфиденциальности весьма ограничено в возможностях. Однако можно ожидать, что со временем разработчики будут наращивать число поддерживаемых настроек / логов, определяемых различными прикладными приложениями (не только в GNOME).

Linux.Кеширующий прокси сервер apt-cacher.Ubuntu



Итак, первый вопрос, зачем все это собственно надо? 
Если у Вас один домашний компьютер под управлением Ubuntu, то эту статью можно сразу не читать и пойти заниматься другими более полезными делами. Хотя, если Вы рекламируете данную ОС своим друзьям и они периодически к Вам захаживают за новой установкой, то я бы порекомендовал все таки разобраться с установкой и потом пользоваться в своё удовольствие.
Что оно дает?
apt-cacher создает локальное хранилище репозитариев, используемых на компьютерах сети. Тем самым во-первых достигается ускорение загрузок, а во-вторых экономится интернетный трафик, ведь пакеты приходится качать только один раз.
Чем данное решение выгодно отличается от аналогичных зеркал
тем что apt-cahcer, в отличие от apt-mirror и его аналогов не скачивает все пакеты из сети, а только те, что были хотя бы раз задействованы в ЛВС.

Ну, раз с целями и задачами определились, приступим. В сети находим комп, который будет нашим сервером, пусть его ip будет 192.168.0.254, а как он там называется нам не важно. Настройку сделаем так, что подменив этот адрес только в одном месте мы можем поменять эти сервера. Это нужно, например, если установка была сделана в одном месте, а использоваться система будет в другом.
Устанавливаем на нем наш кэшер.

sudo apt-get install apt-cacher

как всегда сразу не заработает, лезем в конфиг  /etc/apt-cacher/apt-cacher.conf
apt-cacher настраивается на порт 3142, можно оставить его, можно выбрать любой по усмотрению. Я оставил стандартный.

Находим строку
allowed_hosts=* и указываем подсеть в которой мы работаем, в нашем случае это будет выглядеть так

allowed_hosts=192.168.0.0/24

Замечу, что этим мы разрешили все подсети из адресов 192.168.х.х

строка generate_reports разрешает кэшеру создавать ежедневные отчеты о эффективности кэша. Если не будете пользоваться можно отключить указав generate_reports=0

path_map отвечает за алиасы. Дело в том, что обычно в sources.list содержится не один адрес, а несколько, а мы все эти адреса перепишем на один - наш кэшер. Так вот, чтоб система знала куда конкретно ползти за определенным ресурсом и существует этот параметр.

Например в sources.list есть две строки:

deb http://ru.archive.ubuntu.com/ubuntu natty main restricted
deb http://security.ubuntu.com/ubuntu natty-security main restricted universe

тогда наша строка будет выглядеть так
path_map = archive ru.archive.ubuntu.com/ubuntu; security security.ubuntu.com/ubuntu;

Что мы такое сделали? Мы создали алиас, теперь если к нашему репозитарию обратится по нему кэшер будет знать адрес, который нужно будет подставить. Если в sources.list будет прописано
http://192.168.0.254:3142/archive чтототам
то кэшер обратиться к ru.archive.ubuntu.com/ubuntu чтототам

Но мы так писать не будем  
Настройка практически завершена, осталось пара штрихов.
Во-первых укажем что кэшер должен стартовать сам, для этого идем в /etc/default/apt-cacher и ищем AUTOSTART=1

Во-вторых перезапустим его чтобы он считал наши настройки.
                                                                                                                 
sudo /etc/init.d/apt-cacher restart                                                                                            

думали все? Афихтам! В убунте 11.04 (а может и в 11.10) и более ранних версий есть проблема, связанная с перловкой. Её текущая версия 5.10.1-17, так вот в ней отсутствует каталог /usr/lib/perl/5.10.1/asm который нужен для нормальной работы кэшера.

Получить его можно скачав архив более новой версии перла, например вот эту

Устанавливать его не надо, поэтому на архитектуру не обращайте внимания, просто откройте его миднайт_коммандером и скопируйте файлы в соответствующие директории.
После этой процедуры кэшер станет полностью функционален, осталось настроить клиентов.
Замечу, что наш кэшер - тоже клиент! Поэтому и начнем с него.
                                                                                                                        
sudo nano /etc/apt/sources.list                                                                                         

и правим его по следующему шаблону: все строки содержащие 
ru.archive.ubuntu.com/ubuntu четататам
заменим на http://apt-cacher:3142/archive четататам
а строки содержащие
security.ubuntu.com/ubuntu четататам
заменим на http://apt-cacher:3142/security четататам

теперь осталось указать нашему компу что это за "apt-cacher"
                                                                                                                           
sudo nano /etc/hosts                                                                                                         

добавим
192.168.0.254     apt-cacher
Заценили всю красоту? Поменяв один адрес в hosts мы можем менять наш кешер как угодно!
сделаем на нашем кешере апдейт и загрузку обновлений, но для начала импортируем что есть в локальном репозитарии
                                                                                                                            
sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives                                                                                                                                                          

Не работает? Вот и у меня не работает. Воспользуемся ключем -r чтобы локальные пакеты остались в хранилище.
                                                                                                                                
sudo /usr/share/apt-cacher/apt-cacher-import.pl -r /var/cache/apt/archives                                                                                                                                                         

ну а теперь уже можно
                                                                                                                                 
sudo apt-get update                                                                                                        
sudo apt-get upgrade                                                                                                               
                                                                                                              
первый раз может грузится долго но затем... Вобщем все увидите сами.    
Для примера мне потребовалось установить несколько ОС Ubuntu за раз. Первым делом я отключил сеть от компьютера, т.к. линух шибко умный и находит тырнет сам, пытаясь скачать все пакеты с сети, что есть не гуд, вставил флешку и произвел установку(минут 15), затем подключил сеть и скачал файл sources.list с сети произведя замену

sudo cp ~/sources.list /etc/apt/sources.list                                                                              

и указал в hosts адрес кэшера как написано выше.
ну и как обычно  -  update/upgrade
На все про все у меня ушло еще 15 минут - и вся система была полностью русифицирована, осталось поставить доппакеты, но и они ставятся оч.быстро, одним словом ляпота