Posts

Showing posts from 2014

Кастомізація setuptools в Python

Зіткнувся з необхідністю реалізації власної логіки встановлення пакету. Пошукавши занйшов рішення, яке ґрунтується на перевизначенні метода інсталяції: setup( ..., cmdclass={ 'install': ....., } ) Як видно зі зразка коду власний встановник визначається в секції cmdclass - install і приймає клас (об'єкт класу). Ось повний зразок: def get_fonts_loader(): def run(self): install.do_egg_install(self) package_dir = os.getcwd() os.chdir("src/captcha/") subprocess.call(["git", "clone", "https://github.com/epadyachok/fonts.git"]) os.chdir(package_dir) return type('CustomInstaller', (install, object,), {'run' : run}) setup( name='captcha', version='4.0', packages=['captcha'], package_dir={'captcha':'src/captcha'}, install_requires =[ ...

Аліас що приймає параметри

При вивченні  Hadoop зіткнувся з проблемою запуску MapReduce завдань великою і страшною командою: hadoop -jar /повний_шлях_до_jar_бібліотеки_haddop_streaming -map файл_маппер -reduce файл_ред'юсер -file файл_маппер -file файл_ред'юсер -input папка_з_даним_що_тре_опрацювати -output папка_для_результатів Я бачите команда довга та страшна :), можна легко заробити помилку. Складність команди змусила мене звернутися до alias, проте вони не приймають параметрів. Трошки погугливши знайшов рішення тут та тут . Отже, рішення просте написати функцію, яка опрацьовує передані параметриб та призначити їй алас. Ось зразок мого коду: export HADOOP_STREAMING="/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.3.0-mr1-cdh5.0.0.jar" hadoop_task() { if [ $# -ne 4 ]; then echo "Please provide all data"; echo "Usage hs [mapper_file_name] [reducer_file_name] [input_dir] [output_di...

PicklingError: Can't pickle : attribute lookup __builtin__.instancemethod failed

При роботі з пітонівським модулем multiprocessing  зіштовхнувся з pickling error, яка з’явилася при виклку метода map об’єкта класу Pool.  Проблема полягала в тому, що я передавав акгументом (обробник) - метод класу, а оскільки класс не серіалізований, то і виникла помилка. Хінт про який я прочитав тут , значно допоміг, проте не ідеальний. Є ще варіант - copy_reg Загалом про проблему можна почитати тут .

Проблеми доступу до бази MySQL з інших хостів

При спробі налаштування кластеру OpenStack зіткнувся з проблемою - неможливо отримати доступ до сервера бази даних на іншому хості. На щастя, проблема вирішується просто. Варто відкрити файл /etc/mysql/my.cnf на закоментувати наступний рядок: bind-address = 127.0.0.1 Потім перезавантажуємо сервер MySQL: sudo service mysql restart Більше інформації тут

Перегляд історії комітів у деревоподібному вигяді

Для того, щоб переглянути історію комітів git в деревоподібному вигляді слід виконати команду: git log --graph --oneline --all Більше інформації тут

How set Ubuntu server console resolution and font size

First of all, let`s start from resolution: Resolution setting 1. While system booting press C. You will prompt in the grub console. The command vbeinfo can help you to find out what resolutions are supported. vbeinfo 2. Open file /etc/default/grub and add next variables (if not exist): GRUB_GFXMODE =1152x864x32 #this is supported value on my machine, # yours can be different GRUB_GFXPAYLOAD_LINUX =1152x864x32 3. Open file /etc/grub.d/00_header and set new values for: if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE= 1152x864x32 ; fi if [ "x${GRUB_GFXPAYLOAD}" = "x" ]; then GRUB_GFXPAYLOAD= 1152x864x32 ; fi set gfxmode=${GRUB_GFXMODE} set gfxplayload=${GRUB_GFXPAYLOAD} It is possible you will need to add lines with GFXPAYLOAD - don`t hesitate:) 4. Update grub: sudo update-grub 5. Reboot: sudo shutdown -r now Console font setting: To set font try ...

VirtualBox same UUID error

Some times when I trying create a new VM from existing virtual drive occured same UUID error. Solution is simple:  $ VBoxManage internalcommands sethduuid [path to the copied virtual drive file]

Troubles running run_tests.sh in OpenStack Nova

I`ve got an error messages while going to run tests in Nova. So solution is next: 1. Create a development environment.     Run: sudo apt-get install python-dev libssl-dev python-pip git-core libxml2-dev libxslt-dev pkg-config libffi-dev     Than (for Ubuntu): sudo apt-get build-dep python-mysqldb 2. Create a virtual environment and install dependencies: ./run_tests.sh In case of an error: source .venv/bin/activate Than: pip install -r requirements.txt && pip install -r test-requirements.txt It is possible receive error related to PostgreSQL module absence in some cases. So run: sudo apt-get install libpq-dev That`s all:)

OpenStack Networking

Image
Почав створювати відео презентацію "OpenStack Networking. Vlan Creation" Частина перша:   Частина друга:

Визначення розміру файлу

1  import os  2  file_size = os.stat("some_file.name").st_size  :)

Gerrit Workflow

Опишу лише частину пов'язану з rebasing. Якщо ви працюєте в великому проекті, де код часто змінюєтья і над одним файлом може працювати декілька людей потрібно освоїти механізм rebase. Умова перша - ви маєте коміт який потрібно поравити. Умова друга - після останнього вашого коміту відбулися зміни в master. Що робити? По-перше, завантажуємо останні зміни в master (pull, fetch); По-друге, переходимо в гілку нашого коміту і викoнати:         git rebase -i master        Якщо команда вернула помилку, тобто деякі файли потрібно мержири вручну. Для цього використовуємо утиліту git mergetool (команди diffg RE,  diffg BA, diffg LO). Більше інформації - читати тут . Далі виконуємо команду:        git rebase --continue       Якщо не маємо конфліктів, виконуємо:        git review                       От і все

Запуск python проекту в хмарі

При запуску проекту слід вірно вказати ІР інстансів в налаштуваннях складових проекту, інакше можлива недоступність цих складників. Так, наприклад, інстанс 1 ( 11.11.11.3 ) - містить застосунок написаний на вебфрейворку Bottle. Інстанс 2 ( 11.11.11.4 ) - MySQL-server. Запускаємо bottle - застосунок, вказуємо хост "11.11.11.3" В файлі конфігурацїї MySQL ( /etc/mysql/my.cnf ) вказуємо: bind-address = 11.11.11.4 (може бути і 0.0.0.0) Важлливо також створити користувача, який має право роботи з таблицями і доступ до таблиць з будь-якого хоста: mysql > CREATE USER 'vatti' @ '%' IDENTIFIED BY 'some_pass' ; mysql > GRANT ALL PRIVILEGES ON *.* TO 'vatti' @ '%' WITH GRANT OPTION ;

Нестабільна робота WiFi мережевих карт Intel в Ubuntu

Після встановлення Ubuntu на  Lenovo z510 з мережевою картою Intel Corporation Wireless 7260 зауважив, що бездротовий інтернет не піднімається. Погугливши взнав, що потрібно встановити пропрієтарні драйвери. Отже, йдемо сюди і завантажуємо архів драйверів. Що це таке? --> Читати тут . Далі заходимо в розархівовану папку драйверів і компілюємо: make defconfig-iwlwifi make  sudo make-install Власне прийшов час йти за самим драйвером WiFi - нам сюди . Копіюємо вміст папки: sudo cp Папка/iwlwifi-7260-7.ucode /lib/firmware/  Для того щоб WiFi працював стабільно слід змінити налаштування по замовчуванню драйвера. Виконуємо: echo "options iwlwifi 11n_disable=1 power_level=5 " > /etc/modprobe.d/intel-wifi.conf Далі встановлюємо драйвери: sudo modprobe -r iwldvm sudo modprobe -r iwlwifi sudo modprobe iwlwifi

locale.Error: unsupported locale setting

Це можливо ознначає, що дана локаль, недоступна або локаль взагалі не прописана в налаштуваннях. Можливий варіант рішення встановити дефолтну англійську локаль: export LANGUAGE=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 locale-gen en_US.UTF-8 sudo dpkg-reconfigure locales   Більше тут , тут  або тут

Проблеми з мережевими інтерфейсами при клонуванні віртуальних машин

Вся справа в тому, що в Убунту процесом динамічного відслідковування встановлених пристроїв займається демон udev , який заносить в каталог dev лише підключені пристрої. Файли пристроїв зберігаються в /lib/udev Конфігурація мережевих інтерфейсів збегігається в  /etc/udev/rules.d/70-persistent-net.rules Проблема викликана однаковими МАС-адресами мережевих інтерфейсів різних хостів, тому МАС адреси клона варто змінити - це можна зробити просто очистивши файл:  /etc/udev/rules.d/70-persistent-net.rules При перзавантаженні шнтерфейси інстанса отримають нові МАС адреси 

Помилкка з"єднання сервісів Nova з RabbitMQ

За певний час після вдалого встановлення OpenStack Nova сервісів виявив, що остання не може з"єднатися з брокером, хоча адреса і пароль вказані вірно. Дивувало також створення nova.sqlite   файлу при синхронізації бази даних за допомогою nova-manage. Після тривалих спроб вдалося виявити причину помилки. Справа в тому, що з метою ясності я вніс логічні розділювачі типу: [ SQL ] ...... [RABBIT] ........ Хоча подібні розділювачі є в файлах конфігурації в мануалах на офіційному сайті, проте саме вони генерують помилку заважаючи читати nova.conf парсеру файла конфігурації.

System program problem detected :(

Якщо набридли виринаючі віконичка з повідомленнями про помилки системних проблем від Убунту - вихід є. Варто відредагувати файл  /etc/default/apport  і замість enabled=1 поставити гарну цифру 0.

Not authorized error OpenStack

Часом при спробі взаємодії з певним сервісом OpenStack з"являється наступне повідомлення від сервісу: The request you have made requires authentication. (HTTP 401) Це може дивувати адже щойно все працювало з іншим сервісом.  Тут слід уважно поглянути, які користувачі мають право взаємодіятиз даним сервісом, і чи в даний момент ви дієте від імені одного з даних користувачів. Як відомо в OpenStack замінні необхідні для авторизації можна встановлювати, як змінні середовища, або передавати в командній строці. На мою думку змінними середовища варто зробити змінні сервісу або проекту, який найчастіше викликається з командної строки. Решта передавати в в командгій строці. Наприклад так: glance --os_username=glance --os_password=q --os_tenant_name=service   --os_auth_url=http://127.0.0.1:5000/v2.0  image-create --name="CirrOS 0.3.1" --disk-format=qcow2  --container-format=bare  --is-public=true < cirros-0.3.1-x86_64-disk.img перша-друга строки -...

OpenStack + Neutron on Ubuntu

Пробував різні варіанти інсталяції DevStack і Neutron - нажаль, нічого путнього не вийшло. Ось тут знайшов хороше рішення

Error loading MySQLdb module: No module named MySQLdb

Часто з"являється така помилка при роботі з модулями/ фреймворками, які під"єднуються до MySQL. Проблему лего вирішити встановивши модуль mysql-python ( read ). Можливо додатково потрібно буде встановити пакет libmysqlclient-dev : sudo apt-get -y install libmysqlclient-dev Можливо додатково слід буде встановити пакет libmysqlclient18 . У всякому випадку перед установкою слід перевірити чи не відключині оновлення системи (часта причина помилок при установці) та виконати: sudo apt-get update

Gnome restart

sudo killall gnome-panel