Tuesday, May 22, 2012

XDMCP в Ubuntu

1. Ставим дисплейный менеджер wdm (gdm работает некорректно)
sudo apt-get install wdm
2. Необходимо открыть порт для wdm. Для этого в файле /etc/X11/wdm/wdm-config комментируем следующую строку так
! DisplayManager.requestPort 0
3. Перезагружаемся

Wednesday, May 16, 2012

11 ключей к истинной цели

1. Думайте письменно. Цель, которой нет на бумаге, не существует.
2. Задавайте цель определенно, отвечая на вопросы: что, где, когда и как?
3. Ограничьте цель во времени: цель без времени - это просто мечта.
4. Подумайте, кому достижение Вашей цели принесет пользу, кроме Вас?
5. Формулируйте цель в утвердительной форме в настоящем времени.
6. Делите цели на подцели, готовьте подробный сценарий достижения цели.
7. Возьмите на себя ответственность за свои действия на пути к цели.
8. Определите промежуточные результаты достижения цели.
9. Думайте о цели, а не о средствах ее осуществления. Задайте конечный пункт назначения и идите.
10. Создайте образ будущего, где Вы достигли цели, и зафиксируйте этот образ.
11. Ведите себя так, как если бы успех был Вам гарантирован.

Monday, April 9, 2012

Иконки вместо текста в раскладке

mkdir ~/.iconsmkdir ~/.icons/flagscd ~/.icons/flags
wget http://suservice.net/icons/flags2/{ru,us}.pnggsettings set org.gnome.libgnomekbd.indicator show-flags true

Saturday, February 11, 2012

We're sorry, but something went wrong



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

#heroku config:add RACK_ENV=development

У меня все заработало. Но в официальной документации советуют использовать модуль hassle.

Для этого нужно в файле environment.rb добавить следующий код
 

require 'hassle'

Rails::Initializer.run do |config|

     config.middleware.use Hassle
end

Thursday, February 9, 2012

extconf.rb failed

Данная ошибка исправляется до безумия просто
#sudo apt-get install libpq-dev
#gem install pg

ActiveRecord::ConnectionNotEstablished

Такая ошибка возникает как правило в самом начале. Для устранения ее необходимо выполнить следующие действия

rake db:create # для создания базы данных
rake db:migrate # для создания таблиц миграций

Friday, August 26, 2011

SVN. Перенос репозитория

1. Делаем дамп старого проекта
#svnadmin dump myrepo > myrepo.dump
2. Разворачиваем дамп
#svnadmin create myrepo
#svnadmin load myrepo < myrepo.dump

Wednesday, August 24, 2011

Django + JSON

Потребовалось недавно передавать обработанные данные в Django с помощью json. Меньше слов, покажу как эти данные передавать ниже
from django.http import HttpResponse
from django.utils import simplejson
response = {'result': 'true'}
json = simplejson.dumps(response, ensure_ascii=False)
return HttpResponse(json, mimetype='application/json')

Wednesday, August 10, 2011

Django+nginx

  Всем привет. Сегодня будем ставить высоконагруженный веб-сервер на слабенькое железо. Итак начнем. Что нам нужно будет для работы.


Предварительная работа над системой.
1. Я ставлю на Ubuntu Server 11.04 (вы можете легко адаптировать под свою ОС)
2. Пользователь с нужными правами. Мой пользователь - kir
3. Ему необходимо передать рутовые права приблизительно вот так:
  • заходим в файл /etc/sudoers
  • выставляем такие права kir ALL=(ALL) ALL
4. Устанавливаем django. Описано тут
5. Устанавливаем nginx
#sudo apt-get install nginx
6. Устанавливаем дополнительные библиотеки для python
#sudo apt-get install build-essential python-dev python-setuptools
7. Наконец устанавливаем daemotools
#sudo apt-get install daemontools
8. Создадим папку /etc/service выполнив следующую команду
#sudo mkdir /etc/service

Теперь переходим к настройке daemontools.
1. Создаем настроечный файл для daemontools с названием /etc/init/svscanboot со следующим содержимым
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
exec /usr/bin/svscanboot
2. Запустим daemontools
#sudo initctl start svscanboot

Настройка виртуальной среды для Python
1. Мы будем использовать virtualenv для создания изолированной среды для нашего приложения
#sudo easy_install virtualenv
2. Теперь настроим новую виртуальную среду
#mkdir ~/virtualenvs
#virtualenv ~/virtualenvs/mysite
3. Начнем использовать нашу виртуальную среду и установим pip для удобства инсталляции питоновских пакетов
#source ~/virtualenvs/mysite/bin/activate
#easy_install pip
4. Установим flup. Это требования Django для того, чтобы была возможность запускать fcgi через команду runfcg
#pip install flup
5. Для того, чтобы спользовать адаптеры базы данных, графические библиотеки или xml парсеры, инсталлированные по системному пути Питона, мы должны убедиться, что они доступны из нашей виртуальной среды. Для этого мы добавляем .pth файл в директорию виртуальной среды site-packages
#echo "/usr/lib/python2.7/dist-packages/" > ~/virtualenvs/mysite/lib/python2.7/site-packages/fix.pth
6. Теперь любым удобным способом перетащите свой проект Django в директорию ~/virtualenvs/mysite
7. Доставим несколько библиотек для дальнейшей оптимизации
#pip install simplejson python-memcached

Связываем Daemontools c FastCGI
1. Daemontools будет смотреть во ве поддиректории /etc/service и в каждой из них он будет искать исполняемый файл run. Итак, создаем mysite-директорию
#sudo mkdir /etc/service/mysite
2. Теперь делаем скрипт /etc/service/mysite/run, который будет запускать fastcgi-сервер
#!/usr/bin/env bash
source /home/kir/virtualenvs/mysite/bin/activate
cd /home/kir/mysite
exec envuidgid kir python manage.py runfcgi method=threaded host=127.0.0.1 port=8080 pidfile=mysite.pid minspare=4 maxspare=30 daemonize=false
3. Сделаем созданный скрипт исполняемым
#sudo chmod +x /etc/service/mysite/run

Настраиваем nginx для работы с нашим сервером
1. Для начала изменим файл /etc/nginx/fastcgi_params на такое содержание
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
2. Теперь создадим настройку под наш хост /etc/nginx/sites-available/mysite
server {
    listen 80;
    server_name mysite;
    access_log /var/log/nginx/mysite.access.log;
    location /media {
        autoindex on;
        index index.html;
        root /home/mysite/mysite;
        break;    }
   
    location / {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:8080;
        break;
    }
}
3. Теперь подключим его через symlink
#sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/mysite
4. Теперь перезапустим сайт, чтобы все настройки вступили в силу
#sudo /etc/init.d/nginx restart

Радуемся результату. Удачи!

Tuesday, June 21, 2011

Java. printStackTrace to String

Решил написать только код. Думаю по нему все понятно сразу

StringWriter writerStr = new StringWriter();
PrintWriter myPrinter = new PrintWriter(writerStr);
ex.printStackTrace(myPrinter);
String stackStr = writerStr.toString());

Friday, March 25, 2011

Error under version control

Частенько выпадает сообщение, когда хочу закоммитить уже коммиченные файлы в другую директорию
[dir] is already under version control
Чтобы исправить данную ошибку необходимо просто удалить все старые настроечные файлы .svn
Для этого необходимо выполнить комманду
find ./ -name ".svn"|xargs rm -Rf

Monday, January 10, 2011

Grub2. Загрузка ОС

1. В параметре GRUB_DEFAULT (/etc/default/grub) ставим ту ОС, которую нужно загружать по умолчанию
2. Посмотреть список всех ОС можно в файле /boot/grub/grub.cfg
3. Обновляем sudo update-grub

Sunday, December 12, 2010

const char * to LPCWSTR

Когда только начинал изучать WinAPI на VisualStudio 2010, меня постоянно мучила ошибка преобразования строк. А именно сообщение об ошибке
a value of type "const char *" cannot be assigned to an entity of type "LPCWSTR" 
Перечитал кучу форумов и перепробовал кучу способов обхода этой проблемы, пока случайно не зашел на VS2010 Tips & Triks, где объяснялась ситуация возникновения этой ошибки. А решается это очень просто
Project -> Properties -> Configuration Properties -> General
И в поле Character Set меняет параметр Use Unicode Character Set на Use Multi-Byte Character Set

Friday, December 10, 2010

Apache и мониторинг виртуальных хостов

1. Включаем модуль
$ sudo a2enmod status
$ apache2ctl graceful


2. Редактируем файл мониторинга /etc/apache2/mods-available/status.conf
ExtendedStatus On

SetHandler server-status
#Order deny,allow
#Deny from all
#Allow from localhost ip6-localhost


3. Бывает так, что при переходе на какой-нибудь сайт появляется ошибка "You don’t have permission to access /server-status on this server". Чтобы исправить эту ошибку нужно заменить строчку в файле /etc/hosts
127.0.0.1 localhost.localdomain localhost
на 127.0.0.1 localhost servername

MySQL и кодировка

Чтобы изменить кодировку по умолчанию для MySQL, необходимо выполнить следующие действия:

1. Открыть файл любыми доступными способами 
/etc/mysql/my.cnf

2. Добавить следующие строки
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
[client]
default-character-set=utf8

3. Перезапустить mysql 
/etc/init.d/mysql restart