Из-за дефицита памяти на рабочем компе пришлось заменить Fedora на Ubuntu. При установке стандартного набора прог на этапе установки Twisted вылетела ошибка Python.h: No such file or directory Пролема была решена быстро установкой пакета с загаловками для разработки на Питоне
sudo apt-get install python-dev
понедельник, 12 октября 2009 г.
пятница, 2 октября 2009 г.
Compas - css-framework
Недавно в очередном рейде по web-ресурсам наткнулся на забавный инструмент для верстки.
Css-фреймворк Compas. Зверь представляет из себя консольный инструмент написанный на Ruby. Инструмент обрабатывает специальные файлы, где верстальщик описывает стили на специальном языке Sass. Говорить о каком-то полноценном CSS OOP не приходится, скорее имеет место иерархическое описание с наследованием, объявлением переменных, вычисляемыми значениями и еще некоторыми прелестями. Потом Ruby-инструмент превращает или переводит этот файл в традиционный файл css. Мысли прагамтика: ЗА - инструмент может реально сократить время верстки, ПРОТИВ - инструмент явно не тяготеет к экономии записей, он не знает о коротких записях стилей, а в случае наследования, насколько я заметил, тупо будет прописывать у всех наследников требующиеся значения. На самом деле "против" скорее говорит не о слабостях инструмента, а о необходимости верстальщика больше работать головой и думать стоит ли плодить сущности.
Css-фреймворк Compas. Зверь представляет из себя консольный инструмент написанный на Ruby. Инструмент обрабатывает специальные файлы, где верстальщик описывает стили на специальном языке Sass. Говорить о каком-то полноценном CSS OOP не приходится, скорее имеет место иерархическое описание с наследованием, объявлением переменных, вычисляемыми значениями и еще некоторыми прелестями. Потом Ruby-инструмент превращает или переводит этот файл в традиционный файл css. Мысли прагамтика: ЗА - инструмент может реально сократить время верстки, ПРОТИВ - инструмент явно не тяготеет к экономии записей, он не знает о коротких записях стилей, а в случае наследования, насколько я заметил, тупо будет прописывать у всех наследников требующиеся значения. На самом деле "против" скорее говорит не о слабостях инструмента, а о необходимости верстальщика больше работать головой и думать стоит ли плодить сущности.
P.S. Инструмент удачно стыкуется с другим фреймворком Blueprint
пятница, 19 июня 2009 г.
Устанавливаем PIL
Установка PIL на CentOS тоже оказалось не простым занятием, почему-то не нашлось необходимых кодеков для JPEG. Из-за этого поле ImageField не переваривало jpeg-овские файлы.
Для начала easy_install pil ничего кроме "увы" не дало. Больший успех дало:
#~: easy_install --find-links http://www.pythonware.com/products/pil/ Imaging
Однако после инсталляции Django все равно pil не находил. Скачал исходный архив pil. Попробовал отсетапить.
Проблема с jpeg кодеком не рещилась не хватало библиотек. Если вы уже отбильдили - первое - удалите бильд.
Разахивируйте заново и дальше по шагам
yum install freetype freetype-devel jpeg jpeg-devel libpng libpng-devel
cd Imaging-1.1.6
В setup.py прописываем пути к jpeg библиотекам.
python setup.py build_ext -i
python selftest.py
python setup.py install
Для начала easy_install pil ничего кроме "увы" не дало. Больший успех дало:
#~: easy_install --find-links http://www.pythonware.com/products/pil/ Imaging
Однако после инсталляции Django все равно pil не находил. Скачал исходный архив pil. Попробовал отсетапить.
Проблема с jpeg кодеком не рещилась не хватало библиотек. Если вы уже отбильдили - первое - удалите бильд.
Разахивируйте заново и дальше по шагам
yum install freetype freetype-devel jpeg jpeg-devel libpng libpng-devel
cd Imaging-1.1.6
В setup.py прописываем пути к jpeg библиотекам.
python setup.py build_ext -i
python selftest.py
python setup.py install
четверг, 18 июня 2009 г.
Маунтим ресурс на Samba
По тем или иным причинам бывает необходимо подмаунтить на свою систему папку с расшаренного ресурса Samba. Возможно это ваш девелоперский сервак c вашей пакой чекаута и каждый день вводить команду крайне утомительно. Открываем /etc/fstab и вводим туда следующую строчку.
//resorce/folder /your/machine/folder cifs uid=502,gid=504,credentials=/your/home/dir/.mysmbcredentials,dir_mode=0777,file_mode=0777 0 0
Список вполне прозрачен: подключаемый ресурс папка к которой вы маунтите, сетевая система, id пользователя, id группы, файлик куда мы положим наш логи и пароль(вместо этого мы моглибы прямо в fstab прописать логи и пароль), режим работы с папками, режим работы с файлами. Последние два параметра для нас сейчас не представляют большого интереса, просто поставьте их значение 0 0.
Возможно в другом рецепте вместо сетевой системы cifs вы увидете smbfs. smbfs считается устаревшим о чем скорее всего система вам напомнит сообщением вроде smbfs deprecated.
Последнишаг создаем в совей домашней директории тот самы файл для идентификации и просто вписываем:
username=ваш_логин_к_самба_ресурсу
password=ваш_пароль_к_самба_ресурсу
Перезапускаем и получаем удовольтсвие.
//resorce/folder /your/machine/folder cifs uid=502,gid=504,credentials=/your/home/dir/.mysmbcredentials,dir_mode=0777,file_mode=0777 0 0
Список вполне прозрачен: подключаемый ресурс папка к которой вы маунтите, сетевая система, id пользователя, id группы, файлик куда мы положим наш логи и пароль(вместо этого мы моглибы прямо в fstab прописать логи и пароль), режим работы с папками, режим работы с файлами. Последние два параметра для нас сейчас не представляют большого интереса, просто поставьте их значение 0 0.
Возможно в другом рецепте вместо сетевой системы cifs вы увидете smbfs. smbfs считается устаревшим о чем скорее всего система вам напомнит сообщением вроде smbfs deprecated.
Последнишаг создаем в совей домашней директории тот самы файл для идентификации и просто вписываем:
username=ваш_логин_к_самба_ресурсу
password=ваш_пароль_к_самба_ресурсу
Перезапускаем и получаем удовольтсвие.
пятница, 12 июня 2009 г.
Включаем InnoDb под Linux
Открываем /etc/my.cnf
Добавляем
Убираем skip-innodb.
Перезагружаем - пользуемся.
Добавляем
[mysqld]
# InnoDB settings
innodb_data_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:100M:autoextend
set-variable = innodb_buffer_pool_size=100M
set-variable = innodb_additional_mem_pool_size=10M
innodb_flush_log_at_trx_commit=1
Убираем skip-innodb.
Перезагружаем - пользуемся.
воскресенье, 24 мая 2009 г.
CentOS - SFTP доступ
Некоторым пользователям предпочтительней дать не полный доступ, а только права на перенос файлов. FTP...? Несекьюрное решение. С точки зрения поставленной задачи и безопасности оптимальным было бы решение на базе SFTP. Оригинальное решение тут
Для реализации воспользуемся rssh - оболочкой работающей на базе OpenSSH.
Качаем свежий пакет отсюда. Инсталлируем
rpm -ivh rssh-2.3.2-1.2.el5.rf.i386.rpm
Открываем файл конфигурации
/etc/rssh.conf
раскомментируем строку
allowsftp
Создадим пользователя с оболочкой rssh
useradd -m -d /home/test -s /usr/bin/rssh test
passwd test
Заходим через доступный нам клиент по sftp и радуемся жизни.
суббота, 23 мая 2009 г.
пятница, 22 мая 2009 г.
CentOS PHPUnit
Не захотел сразу становиться PHPUnit
[root@xxx ~]# pear install phpunit/PHPUnit
phpunit/PHPUnit requires PHP extension "dom"
phpunit/PHPUnit can optionally use PHP extension "json"
phpunit/PHPUnit can optionally use PHP extension "xdebug" (version >= 2.0.0)
Собственно для решения вполне достаточно победить первую зависимость
Под CentOS вводим
yum -y install php-xml
Таким образом, мы установили расширение dom.
[root@xxx ~]# pear install phpunit/PHPUnit
phpunit/PHPUnit requires PHP extension "dom"
phpunit/PHPUnit can optionally use PHP extension "json"
phpunit/PHPUnit can optionally use PHP extension "xdebug" (version >= 2.0.0)
Собственно для решения вполне достаточно победить первую зависимость
Под CentOS вводим
yum -y install php-xml
Таким образом, мы установили расширение dom.
Memcached on Cent OS
Установка memcached тоже прошла не без приключений. Оригинал решения здесь.
Итак скачали и установили libevent
Скачали и устанавливаем memcached
Скорее всего конфигурационный скрипт не нашел libevent и нам приходится указывать дополнительным параметром его нахождение
./configure --with-libevent=/usr/local/lib/
Пытаемся запустить
memcached
Получаем ошибку
error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
По каким-то соображениям новый libevent не зарегистрировал себя в системе. Исправляем этот косяк.
Создаем следующий файл
# vi /etc/ld.so.conf.d/libevent-i386.conf
В нем прописываем путь находения файла libevent-1.4.so.2
В моем случае
/usr/local/lib
файл сохраняем и закрываем.
Для обновления информации вводим
ldconfig
И запускаем memcached!
Итак скачали и установили libevent
Скачали и устанавливаем memcached
Скорее всего конфигурационный скрипт не нашел libevent и нам приходится указывать дополнительным параметром его нахождение
./configure --with-libevent=/usr/local/lib/
Пытаемся запустить
memcached
Получаем ошибку
error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
По каким-то соображениям новый libevent не зарегистрировал себя в системе. Исправляем этот косяк.
Создаем следующий файл
# vi /etc/ld.so.conf.d/libevent-i386.conf
В нем прописываем путь находения файла libevent-1.4.so.2
В моем случае
/usr/local/lib
файл сохраняем и закрываем.
Для обновления информации вводим
ldconfig
И запускаем memcached!
mysql - изменить пароль
Итак, продолжаем гид по работе с свежекупленным серваком.
Первое что я заметил при запуске top, что mysqld уже запущен. Стандартный пустой пароль не подошел. Для смены пароля пришлось малец похимичить. Оригинал метода путем отшелушивания зерен от плевел можно найти здесь.
1. Останавливаем сервис
/sbin/service mysqld stop
2. Запускаем без проверки таблиц прав:
/usr/bin/mysqld_safe --skip-grant-tables &
3. Заходим без пароля под root-ом
mysql -u root
4. Меняем пароль SQL коммандой
UPDATE mysql.user SET Password=PASSWORD('новый пароль') WHERE User='root';
5. Рестартуем сервис
/sbin/service mysqld restart
Первое что я заметил при запуске top, что mysqld уже запущен. Стандартный пустой пароль не подошел. Для смены пароля пришлось малец похимичить. Оригинал метода путем отшелушивания зерен от плевел можно найти здесь.
1. Останавливаем сервис
/sbin/service mysqld stop
2. Запускаем без проверки таблиц прав:
/usr/bin/mysqld_safe --skip-grant-tables &
3. Заходим без пароля под root-ом
mysql -u root
4. Меняем пароль SQL коммандой
UPDATE mysql.user SET Password=PASSWORD('новый пароль') WHERE User='root';
5. Рестартуем сервис
/sbin/service mysqld restart
четверг, 21 мая 2009 г.
Беды на Cent OS продолжаются
При попытке установки ez_setup.py вылетел exception
zipimport.ZipImportError: can’t decompress data; zlib not available stemming from python ez_setup.py.
Помогло следующее решение установил zlib-devel. Перекомпилили python.
Заработало!
zipimport.ZipImportError: can’t decompress data; zlib not available stemming from python ez_setup.py.
Помогло следующее решение установил zlib-devel. Перекомпилили python.
Заработало!
update kernel-headers на CentOS
Цитирую полезную статью, оказался в точно такой же ситуации при покупке VPS на Agawa
Установка GCC
Сразу после регистрации сервера вам может потребоваться установить GNU C++ Compiler. Когда я первый раз настраивал аккаунт на Агаве, он был уже установлен, однако на новом аккаунте он почему-то отсутствовал. Поэтому его потребовалось установить:
yum install gcc-c++
При установке может возникнуть ошибка Error: Missing Dependency: kernel-headers >= 2.2.1 is needed by package
. В этом случае необходимо обновить пакет kernel-headers. Я его ставил отсюда:
wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.2/os/i386/CentOS/kernel-headers-2.6.18-92.el5.i386.rpm
rpm -i kernel-headers-2.6.18-92.el5.i386.rpm
После этого все должно ставиться нормально.
пятница, 15 мая 2009 г.
redirect 301
Иногда вам приходится переименовывать страницы своего сайта. Но предположим у ваших страниц под предыдущим названием был очень хороший рейтинг и терять его очень не хочется. Для сохранения тяжело заработанного рейтинга нам надо как-то сообщить поисковикам, что мы перенесли страницу. Открываем энциклопедию юного сурка - rfc 2616
и находим
10.3.2 301 Moved Permanently
The requested resource has been assigned a new permanent URI and any
future references to this resource SHOULD use one of the returned
URIs. Clients with link editing capabilities ought to automatically
re-link references to the Request-URI to one or more of the new
references returned by the server, where possible. This response is
cacheable unless indicated otherwise.
The new permanent URI SHOULD be given by the Location field in the
response. Unless the request method was HEAD, the entity of the
response SHOULD contain a short hypertext note with a hyperlink to
the new URI(s).
If the 301 status code is received in response to a request other
than GET or HEAD, the user agent MUST NOT automatically redirect the
request unless it can be confirmed by the user, since this might
change the conditions under which the request was issued.
Note: When automatically redirecting a POST request after
receiving a 301 status code, some existing HTTP/1.0 user agents
will erroneously change it into a GET request.
Ага, значит при обращении поисковика по старому URL нам нужно произвести редирект со статусом 301.
Для этого в файлике .htaccess прописываем
redirect 301 /old/path.html /new/path.html
Не забудьте заменить пути из примера на ваши страницы ;)
и находим
10.3.2 301 Moved Permanently
The requested resource has been assigned a new permanent URI and any
future references to this resource SHOULD use one of the returned
URIs. Clients with link editing capabilities ought to automatically
re-link references to the Request-URI to one or more of the new
references returned by the server, where possible. This response is
cacheable unless indicated otherwise.
The new permanent URI SHOULD be given by the Location field in the
response. Unless the request method was HEAD, the entity of the
response SHOULD contain a short hypertext note with a hyperlink to
the new URI(s).
If the 301 status code is received in response to a request other
than GET or HEAD, the user agent MUST NOT automatically redirect the
request unless it can be confirmed by the user, since this might
change the conditions under which the request was issued.
Note: When automatically redirecting a POST request after
receiving a 301 status code, some existing HTTP/1.0 user agents
will erroneously change it into a GET request.
Ага, значит при обращении поисковика по старому URL нам нужно произвести редирект со статусом 301.
Для этого в файлике .htaccess прописываем
redirect 301 /old/path.html /new/path.html
Не забудьте заменить пути из примера на ваши страницы ;)
Подписаться на:
Сообщения (Atom)
Linux: генерация рандомной строки для пароля
cat /dev/urandom | tr -dc '[:alnum:]' | fold -w ${1:-20} | head -n 1
-
Решение проблемы: npx browserslist@latest --update-db
-
# this is a comment VAR="value" # comment VAR=value # comment https://github.com/vlucas/phpdotenv#comments
-
Обнаружив, что в программу необходимо добавить новую функциональность, но код программы не структурирован удобным для добавления этой функци...