суббота, 29 декабря 2012 г.

Adding sphinx generated documentation into Qt Assistant

If you want to see documentation for your applications in Qt Assistant

1. Add qthelp section in your Makefile (replace MyAppName with your own, "IPython" for example) :


qthelp:
mkdir -p build/qthelp
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) build/qthelp
@echo
@echo "Build finished; now you can run qcollectiongenerator" with the" \
     ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/IPython.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/IPython.qhc"

2. Run :
make qthelp
qcollectiongenerator build/qthelp/MyAppName.qhcp


3. You can preview created documentation:
assistant -collectionFile build/qthelp/MyAppName.qhc

4. Close Assistant and run it from your desktop environment menu or type in terminal:
assistant

5. Add created collection file in Edit - Preferences - Documentation. That should look like this :

6. Click "Add" button and select your .qhc file that was created before. You will see your application's documentation in "Contents" field. Search tool will be working too.

P.S. If you want to use Twitter Bootstrap theme in your sphinx documentation, you can use http://pypi.python.org/pypi/sphinx-bootstrap-theme (I'm not developer of that).

суббота, 15 декабря 2012 г.

Отзыв об одном из магазинов Техно в Уфе

Довелось мне несколько раз связаться с магазином Техно, который находится на ул. Дагестанская, 2. Обычно я злюсь на магазины бытовой техники и ничего не говорю, но в этот раз уже накипело.


Случай 1. "Радио"

Решили с женой купить будильник с радио. Пришли, выбрали, оформили. Пошел к кассе оплачивать, а жена ушла смотреть что-то там еще. Отдал карту и карту "Копилка". Стоит рядом женщина, спросила у меня по поводу "Копилки", для чего нужна и где получить можно. Я объяснил, что там накапливаются всякие бонусы и т.п. Кассирша со злостью бросила мне устройство для ввода пин-кода. Я не обратил внимания. Тут женщина спросила про карту "Техно". Такой карты у меня не было и как ее получать я уже не знал.
- "Про карты Техно я ничего сказать не могу. Спросите вот у девушки."
Ну женщина и задала вопрос кассирше. Та гневно посмотрела на нее, просьбу проигнорировала и ничего ей объяснять не стала. Типа задолбали вы все уже. Вернула мне чек и карту, я ушел.

Случай 2. "Ночная распродажа"

При получении "Копилки" по привычке написал свой номер телефона и стал получать разные sms с акциями от магазинов. Обычно просто игнорирую, но как-то действительно потребовалось съездить в магазин бытовой техники. "Техно" устраивал ночную распродажу:

Подумал и решил поехать. Приехал в магазин в 23:00, а он закрыт. Ну, думаю, может вход с другой стороны открыли. Походил вокруг, но так и не нашел открытой двери. Магазин попросту забил на покупателей.

Случай 3. "Конвектор"

На улице наступили морозы и дома стало холодно. Вместе с женой решили купить конвектор. Подумал, что далеко ездить не хочется, решил зайти в интернет-магазин Техно. Присмотрел Scarlett SC-2159. В том же интернет-магазин предлагают сэкономить порядка 600 рублей. В интернет-магазине стоит 1928, в магазине - 2590.

Так как нести такую технику на руках тяжеловато, а заодно хотелось посмотреть на обогреватель вживую, решили с тестем съездить на машине. Приехали, посмотрели, позвали консультанта.
- "Здравствуйте, мы хотели заказать вот такой конвектор через Интернет-магазин. Правда, что будет стоить дешевле? Как правильно это сделать?"
- "Ой, я точно вам сказать не могу. Знаю, что там должно быть на 10% дешевле. Давайте я уточню у администратора."

Идем к администратору. Консультант зашел куда-то в служебную дверь, подождали его немного.
- "Знаете, в Интернет-магазине действительно должно быть чуть дешевле. Вам нужно будет зарегистрироваться на сайте, оформить заказ и вам позвонят. Оплачивать надо будет на Чернышевского и забирать тоже там. Если хотите доставку на дом с оплатой у дома, то надо сделать заказ на 5000 рублей."
Меня это ввело в ступор. Почему нельзя было сделать сразу оплату карточкой? А если у меня сумма заказа меньше 5000, то я еще должен поехать через пол-города в определенный магазин и оплачивать там. Так же подумал и тесть, задал эти же вопросы.
- "Не знаю. Давайте я позову администратора."
Уходит за администратором. А я стою и смотрю, как на столе выдачи недовольные покупатели жалуются другим консультантам по поводу неработающей техники.
Выходит администратор.
- "Здравствуйте, какой у вас вопрос?"
- "Хотели купить через интернет-магазин конвектор. Посмотрели цену на сайте, там на 600 рублей дешевле, чем в магазине. Это так?"
- "Нууу... Наверно. Я знаю, что там должно быть на 5% дешевле."
- "Ваш консультант только что говорил 10%. А по факту вообще 600/2950=20%".
- "Вы точно на нашем сайте смотрели?"
- "Да."
- "Ну давайте посмотрим".
Тут начинается самое веселое. Подошли к компьютеру и администратор так долго пытался найти этот бедный конвектор, что сложилось впечатление, что он интернет-магазин видит в первый раз. Дабы избавить его от титанических усилий в поиске конвектора, тесть показал какие кнопки нажимать. Администратор, рассматривая цены на конвектор, явно недоумевал.
- "Нуу, может это какие-то старые цены. Вообще вам лучше съездить уточнить в магазин на Чернышевского. Или позвонить в службу поддержки."
В общем, ушли из магазина, решив все-таки оформить заказ в интернет-магазине. Пришли домой, оформили. Не дожидаясь, когда позвонят нам, мы решили позвонить в службу поддержки сами. Но естественно там было занято. Я попытался позвонить пару раз, но быстро понял, что это гиблое дело. Решил ждать звонка.
На следующий день после обеда мне все же позвонили. Шла лекция, я решил взять трубку и сказать, чтобы перезвонили чуть позже. Раздраженный голос:
- "Здравствуйте, это вы делали заказ в Техно?".
- "Здравствуйте, да. Мне неудобно сейчас разговаривать, вы не могли бы перезвонить чуть позднее, через 10-15 минут?"
- "Ну хорошо, если я не забуду".
Ответ оператора вообще шокировал. Ни через 10 минут, ни через полчаса, ни через N дней мне конечно же не перезвонили.

Конвектор в итоге мы купили в другом магазине. Дома стало тепло и уютно.

А всем прочитавшим я советую десять раз подумать, прежде, чем что-то покупать в магазине с хамским отношением к покупателям.

пятница, 14 декабря 2012 г.

Сохранение прочитанных страниц в Adobe Reader

Если вы хотите, чтобы Adobe Reader запоминал последнюю прочитанную страницу в документах, включите вот эту галочку в настройках:


How to make Adobe Reader to remember last read page

If you want to make Adobe Reader to restore last read page after reopening document (like in Sumatra PDF Reader), then you need to check this option in Preferences:


суббота, 17 ноября 2012 г.

Отчет о прочитанных книгах 2011-2012

За авторством Бориса Акунина (да-да, его прочитал опять большего всего):
  • "Алмазная колесница" 2 тома
  • "Любовник смерти"
  • "Весь мир - театр"
  • "Коронация, или Последний из Романов"
За авторством Джорджа Оруэлла:
  • "1984" - Ну очень впечатляющая книга. Меняет представление о свободе и ценностях.
За авторством Евгения Замятина:
  • "Мы" - После Дж. Оруэлла не впечатлила. Написана интересно, но сложным языком.
За авторством Ивана Тургенева:
  • "Отцы и дети" - Подумываю о том, чтобы перечитать школьный курс. Понравилось читать, но извлечь из книги уже нечего, к сожалению. Разве что пару интересных фраз, которые точно отражают современный мир.
За авторством Бернара Вербера:
  • "Энциклопедия абсолютного и относительного знания" - Очень интересная книга про разные факты из науки, культуры, быта, психологии и прочего. Стоит положить на полочку рядом и периодически открывать на случайной странице. Не соскучишься! :)

Py2Exe and PyQt4 loading pixmap from file

If you run py2exe build and there are widgets with empty pixmaps then you need to read this (got from http://www.py2exe.org/index.cgi/Py2exeAndPyQt) :


PyQt4 and image loading (JPG, GIF, etc)

PyQt4 uses plugins to read those image formats, so you'll need to copy the folder PyQt4\plugins\imageformats to <appdir>\imageformats. Like in the above cases, you can use data_files for this. This won't work with bundle_files on.
If the plugins are not reachable, then QPixmap.load/loadFromData will return False when loading an image in those formats.
This will work with bundle_files as well, but you need to exclude the Qt DLLs from bundle (using the dll_excludes option) and add them to the directory with the executable through some other mechanism (such as data_files).

четверг, 25 октября 2012 г.

Ubuntu 12.10 Enable segmentation fault

Hello.
Upgrading my ubuntu from 12.04 to 12.10 bring problem with enable/chaco/kiva applications. Apps crash with memory corrupt or segmentation fault.
It seems that Kiva doesn't work with libfreetype6 v2.4.10 (ubuntu 12.04 has v2.4.8). To make ETS work, you must :
1. Get old libfreetype6 packages from Ubuntu 12.04 and install them. This archive must contain both x86 and x64 deb packages http://dl.dropbox.com/u/14792418/freetype.zip
2. Delete all build folders inside of each folder in ets repository, delete all ets files from dist-packages.3. Run python ets.py build and sudo python ets.py install



Here is the link to the issue:

https://github.com/enthought/enable/issues/74

суббота, 13 октября 2012 г.

Интересные рассуждения

Сидел за чашкой чая после рабочего дня и задумался: что будет, если внезапно вода станет легче воздуха?

Рассказал жене и начали думать вместе. Наши предположения:
1. Вода из чайника весело растечется по потолку.
2. Вода из кранов будет течь вверх
3. Океаны начнут "всплывать" до верхних слоев атмосферы, замерзать и падать обратно. Может быть и нет, т.к. неясно какой плотности будет лёд.
4. Человек сразу станет во много раз легче.
5. Вся моча ударит в голову. Да-да.
6. Кухонные плиты надо перевернуть вверх ногами. Иначе как сварить изделия из воды? Ну а картошка так вообще из перевернутых 
7. Мы не сможем попить воды. Ну или придется в рот набирать воды и вставать вверх ногами, чтобы сглотнуть. И надеяться, что желудок не отпустит свое содержимое обратно.
8. Станет весьма проблематично принять душ.
9. Трудно затопить соседей снизу.
10. В общем, ПОЛНЫЙ ХАОС!

пятница, 21 сентября 2012 г.

Gtk2 and Gtk3 themes


In my opinion Gnome 3 is rather slow. I've tried to use the Xfce as my desktop environment but the gtk2 applications were ugly there. If you'll try to change the gtk2 theme it'll lead to the gtk3 theme changing so in this case the gtk3 apps would be ugly too.

I've found the solution for the themes which has both the gtk2 and gtk3 versions (i.e. Atolm):

1. Select the gtk2 theme in Xfce Appearance configuration window. 
2. Create a symbolic link like this :
     ln -s /usr/share/themes/my-gtk3-theme/gtk-3.0 ~/.config/

For example :
   
ln -s /usr/share/themes/Atolm-gtk3/gtk-3.0 ~/.config/

That's it.

воскресенье, 12 августа 2012 г.

ProjectBuild v0.2

I am proud to say that ProjectBuild plugin for Sublime Text 2 was updated to version 0.2!
ILYA Borisov (http://github.com/BorisPlus) helped me to improve build system. Now, we use native Sublime build. You must just create file inside project root folder and Sublime build file. After that bind your hotkey, and you're on go!
Get new version at http://github.com/Snegovikufa/ProjectBuild

четверг, 9 августа 2012 г.

День родов


Решил я написать про то, как прошел у меня и жены день родов. Забылись мелкие ненужные детали, но память еще свежа :)

16 мая.

    Лиза разбудила в 6 утра. Она сказала: "Рустам, началось". Я проснулся моментально, нахлынула волна радости. Беспокойство пришло не сразу. Схватки были несильные, потому решили, что пока нет особой нужды вызывать скорую помощь. Начали постепенно собирать вещи в роддом. На фоне радостного и долгожданного события быстро пролетело 2 часа. Частота схваток сократилась до 1 минуты и по лицу жены я понял, что пора бы уже и скорую вызвать.
    Звонок в скорую, недолгие переговоры с диспетчером. На вопрос: "В какой роддом везти?" уже не задумываясь, ответил: "В шестой". Демский родильный дом тогда был закрыт на ремонт. "Поездка будет долгой. Надеюсь, что в пробках не увязнем", - думал я тогда.
    Бригада скорой приехала довольно быстро, ждали не больше 10 минут. К этому времени как раз подтянули пакеты с вещами к двери. Быстрый осмотр врача, и вот мы уже спускаемся по лестнице вниз. Делаем остановки на время схваток. Держу Лизу за руку.
    На "ГАЗели" пришлось проехать весь этот маршрут: http://goo.gl/maps/jfjxw . И всё бы ничего, но даже на ровной дороге машину трясло так, что словами не описать. Сидел я на неудобном месте, возле кушетки, постоянно долбился коленями в металлические крепления. У жены место было повыгоднее, но тряска сказывалась и на ней. Доехали примерно за 25 минут, миновав две пробки по встречной полосе с мигалками. У водителя были явно стальные нервы.
    В приёмном покое 6 роддома прождали еще примерно минут 10, пока жену не приняли. Я остался за дверьми, ожидал вердикта судей врачей. Еще через 10 минут вышла Лиза, передав слова врачей: "У вас предвестники. В предродовых палатах мест нет. Положить мы вас можем, но  если только на кушетке в коридоре. Учтите, что в обществе неродивших матерей вы можете начать симулировать. Так что лучше езжайте домой."
    Приняли решение возвращаться домой. Вышли из приемного покоя, двинулись в сторону остановки. Чтобы доехать обратно в Дёму, нужно было дойти до остановки на проспекте Октября. Пешком минут 10, да еще и в гору. Через 2-3 минуты по лицу жены я понял, что не дойдём. Вспомнилось, что возле роддома живёт наша хорошая подруга и одногруппница Юля. Позвонил, объяснил ситуацию, напросился посидеть какое-то время в гостях. Минут 5 мне пришлось побегать в поисках дома, жену оставил на месте, чтобы не напрягать. Вскоре нужный дом был найден и мы направились к спасительному дому.
    Подруга уже не спала и с радостью приняла нас, даже сходила в аптеку за лекарством (но-шпа, если не ошибаюсь).  Позвонили отцу Лизы, узнав сможет ли он забрать нас на машине. "Не раньше 12", - ответил он. Ждать так ждать. Схватки каждые 2 минуты, усилились.
    Около 11 снова тесть перезвонил, сказав, что заберет нас через 5-10 минут. Собрались, вышли. Едем домой. Перед домом заехали в женскую консультацию, Лиза хотела у своего врача спросить про то, как отличить настоящие схватки и предвестники. Неопределённый ответ врача. Я в это время стою в коридоре и слушаю фантастические рассказы женщин о том, как рожали они. Лиза вернулась, поехали домой. Все так же держу её за руку.
    Дома схватки усилились ещё. Время около 12 часов. Стараюсь быть рядом и сдерживать свои нервы. Проходит еще часа два, схватки постепенно становятся всё сильнее. Лиза не отходит от дивана, в основном сидит или на коленях нагнувшись, лежать не получалось. Особо помочь я не мог, поэтому сел за компьютер и стал читать про то, как же облегчить её муки. Многое написано про дыхание.
    Вспомнилось, как меня в лагере учили особой технике дыхания, которая помогает снять приступ астмы. На столе стоял прибор, от которого тянулись провода с электронными липучками. Липучки цеплялись на грудь. Дышать надо было животом, при этом фиксируя положение грудной клетки. Вдыхаешь носом, выдыхаешь ртом. Выдох примерно в 1.5-2 раза дольше вдоха. Если всё делать правильно, то приборчик начинает исполнять приятную мелодию. Как только сбиваешься, то мелодия портится и искажается. Имеется у этого прибора несколько уровней сложности. За 2 недели добраться и исполнить на самом тяжелом уровне сложности мелодию так и не получилось.
    Около 14:00 сел возле Лизы, начал объяснять, как правильно выполнять дыхание. Слушать она явно не хотела, ей без меня было хреново. Получив отпор, я ушел.
    Тем не менее она всё-таки попробовала и ей стало легче. Намного легче. Сила схваток оставалась той же, частота примерно раз  в 2-3 минуты. Лицо же явно преобразилось в лучшую сторону. Так прошло еще 4 часа. Схватки стали еще сильнее, силы у жены подходили к концу. В 6 часов вечера к нам заехал отец Лизы и мы приняли решение всё-таки отвезти её в роддом и оставить там. При принятии решения учли тот факт, что у тещи схватки и роды уместились в один день.
    В машине комфортно и без пробок доехали до роддома. Снова минут 10 ждали в приёмном покое, пока врачи примут. Держу Лизу за руку. Врачи сказали, что пока всё еще идут предвестники, но все же жену оставили. Мы с тестем уехали.
    Началось томительное ожидание. На звонки Лиза не отвечала, я подумал о том, что в роддоме могут запретить пользоваться телефоном. Около 9 часов я всё-таки получил новости. Жена лежала в коридоре на кушетке, схватки стали еще сильнее, пользовать телефоном запрещают.
    Позвонила подруга Олеся и сказала, что скоро приедет вместе с парнем ко мне домой поддержать. Приехали они около 11 часов, сидели, общались и пытались разрядить нервную обстановку. Покурили кальян, выпили чаю.

17 мая.

    В 00:20 звонок от Лизы. Беру трубку. Резкий детский плач и у меня слёзы счастья. Все стало ясно без слов. Через пару секунд услышал обессиленный голос Лизы, сообщающий о том, что родила она в 23:30, что сын здоровый и что чувствует себя вполне хорошо.
    Квартира наполнилась всеми оттенками положительных эмоций. На меня нахлынула усталость. Выпили немного вина.
    Обзвонил родственников и близких друзей. Уснуть смог только в 3:00

Надо ли говорить, что все последующие дни я летал на крыльях? :)

среда, 8 августа 2012 г.

Terminal Nyan Cat

Today I've found interesting project http://miku.acm.uiuc.edu/ 
You can run this command:
telnet miku.acm.uiuc.edu
or:
nc -T miku.acm.uiuc.edu 23
And you will see Nyan Cat in your terminal!





Nyan nyan nyan! ^_^

суббота, 4 августа 2012 г.

Project build plugin for Sublime Text 2

Recently I've started using Sublime Text 2 editor and there was a problem for me that I cannot create project builds with various arguments. So, I've started reading Sublime API Reference and created ProjectBuild plugin (https://github.com/Snegovikufa/ProjectBuild).

Install and Configuring

In a few days it must be available at http://wbond.net/sublime_packages/community website. So, you can use PackageControl tool for automatic installation.

How it works

When you press hotkey for build, Sublime shows you what build you want to create (each build has it own arguments).


OmniBackup Gannt diagrams

One man asked me to create interactive chart using omnirpt tool. He uses Hp Data Protection Manager that has really awfull "Device flow" and "Sessions" reports. They show you just when your backups created and were them succesfull or not. Nothing else.


So, I created OmniBackup Gannt project https://github.com/Snegovikufa/OmniBackupGantt that grabs logs with omnirpt tool and shows you interactive Gantt plots.
For example :
Device Flow Report in OmniBackupGantt
There was a ploblem, that Windows version of omnirpt tool is bugged and very often freeze after start. So, I decided to get logs from Linux version of omnirpt, but that mean that I need to implement ssh connection to server with omnirpt. So, I used paramiko ssh library.


Currently project has a lot of restrictions such as that you need to manage keys before starting this tool or I haven't created translations for different languages or I've create Windows builds with old Chaco version.


I don't know if I can continue development for a long time, because I really don't have enough time (university, work and small kid are getting all of it). But if someone will sponsor project or can help me with patches on Github then project will live!


If you want to try this tool, read usage : https://github.com/Snegovikufa/OmniBackupGantt#using-
Also, I've created Windows build https://dl.dropbox.com/u/14792418/OmniBackupGantt_v0.1.zip

воскресенье, 25 марта 2012 г.

Инструкция к стиральной машине

Ну раз начал делиться инструкциями к старой технике, поделюсь и инструкцией к старой такой стиральной машине Zanussi TA 833

http://dl.dropbox.com/u/14792418/Zanussi-TA_833_V-Pdf-Rus.Pdf

Инструкция к газовой плите Брест 1457-01

Недавно переехали в другую квартиру, где стоит старая, но довольно хорошая плита Брест 1457-01. Жена попросила к ней инструкцию. После получасового рысканья в Интернете, с трудом нашел скан. Для облегчения поиска другим товарищам, делюсь :)

http://dl.dropbox.com/u/14792418/Gas-cooker_Brest_1457.pdf

четверг, 26 января 2012 г.

Google Mail Checker Plus

Для тех, у кого пропал Google Mail Checker Plus для Chrome:
1. Кликаем ссылку https://github.com/AndersSahlin/MailCheckerPlus/downloads
2. Кликаем по "Download as zip"
3. Распаковываем скачанный архив в любое место
4. Открываем "Инструменты - Расширения"
5. Отмечаем галочку "Режим разработчика"
6. Жмем кнопку "Загрузить распакованное расширение" и указываем ту папку, куда распаковали архив
7. Пользуемся!

Configuring Jenkins for C# projects

Steps in my build configuration Restore nuget packages chcp 1251 .nuget\nuget.exe restore Swag.sln Build solution chcp 1251 cmd.e...