Saturday, April 25, 2015

ASCII canvas in Python

Python modules that allow to draw primitives using terminal as canvas. I called it ASCII canvas.
I've added support of colors. So now it is possible to draw colored ASCII-images.

Using script to convert RGB pixels from image to terminal colors, I've got terminal art:

Supported colors test table. For Linux:
Colors in terminal Linux
And for Windows:
Colors in terminal Windows

Sunday, April 5, 2015

ASCII Clock in Terminal using Python

Today I've created Python script that prints a clock in ASCII art style to the terminal.
To perform ASCII drawing a special Python class (ASCII Canvas) with several functions was created.
Source code is available on my GitHub: https://github.com/delimitry/ascii_clock
Here are the result:
Also I've provided resizing of clock. So if the size of clock if small, week day and day are hidden.
Added scale by x-axis to equalize the width and height of the clock, because fonts' height is more than their width.
For linux version added a set of standard chars to draw the clock items with. Here you can see the clock under linux:

Monday, March 30, 2015

Solving the problems with pycallgraph under Windows

I've installed Python Call Graph (pycallgraph) using pip:

pip install pycallgraph

Then I've tried to run it:

pycallgraph graphviz -- ./main.py

But I've got a message:
"pycallgraph" is not recognized as an internal or external command, operable program or batch file.

Ok, then I found pycallgraph location and executed it:

python c:\Python27\Scripts\pycallgraph graphviz -- ./main.py

But alas, I've got error message:

E:\>python c:\Python27\Scripts\pycallgraph graphviz -- ./main.py
Traceback (most recent call last):
  File "c:\Python27\Scripts\pycallgraph", line 25, in
    with __pycallgraph.PyCallGraph(config=__config):
  File "C:\Python27\lib\site-packages\pycallgraph\pycallgraph.py", line 32, in __init__
    self.reset()
  File "C:\Python27\lib\site-packages\pycallgraph\pycallgraph.py", line 53, in reset
    self.prepare_output(output)
  File "C:\Python27\lib\site-packages\pycallgraph\pycallgraph.py", line 97, in prepare_output
    output.sanity_check()
  File "C:\Python27\lib\site-packages\pycallgraph\output\graphviz.py", line 63, in sanity_check
    self.ensure_binary(self.tool)
  File "C:\Python27\lib\site-packages\pycallgraph\output\output.py", line 96, in ensure_binary
    'The command "{}" is required to be in your path.'.format(cmd))
pycallgraph.exceptions.PyCallGraphException: The command "dot" is required to be in your path.

I've installed graphviz:

pip install graphviz

But the problem remained.

Then I've downloaded current stable release of graphviz (graphviz-2.38.msi) from official site: http://www.graphviz.org/Download_windows.php

And installed it.
You can check that graphviz for python is trying to execute dot.exe tool (subprocess.Popen(cmd) in graphviz\files.py), so to solve the problem you can go to the graphviz directory and call pycallgraph:
cd c:\Program Files (x86)\Graphviz2.38\bin
c:\Program Files (x86)\Graphviz2.38\bin>python c:\Python27\Scripts\pycallgraph graphviz -o main.png -- e:\main.py

After that you'll get main.png image inside C:\Program Files (x86)\Graphviz2.38\bin\ directory.

PS. You can add graphviz directory to PATH environment variable.

Saturday, March 21, 2015

Piter Py #2

Сегодня прошла вторая ежегодная конференция Piter Py #2. Было очень много хороших докладов и интересных людей, так что было интересно и весело!
Раздаточный материал
Мне понравилось! Организаторы молодцы, что приглашают ребят из разных городов, и стран.
Удалось лично пообщаться с людьми, с которыми был знаком только по интернету и видел на их доклады с других мероприятий и конференций.
Приятно было послушать хэдлайнеров конференции - это Armin Ronacher и Hynek Schlawack (по-русски Хинек, читается всё-таки через "и").

Из всех докладов больше всего понравился доклад Армина про опенсорс, прямо заслушался. Очень много правильных советов и интересных примеров из опыта. После презентации удалось задать вопрос про лицензии собственных опенсорс наработок.
Также из тех докладов, которые слушал, запомнились доклады Hynek Schlawack, Ивана Ремизова, Кирилла Борисова, Григория Петрова и Александра Щепановского.
Со многими докладчиками удалось поговорить на обеде и в перерывах. Было очень приятно со всеми познакомится и интересно всех послушать.

В перерывах между докладами все общались, ходили смотреть затмение, фотографировались, играли в игры от спонсоров, было весело :) Ещё был прекрасный обед!

Отдельное спасибо хочу сказать Григорию Петрову за помощь и советы в подготовке собственного доклада.

Ссылки на слайды и презентации с PiterPy #2 которые спикеры уже опубликовали:

Алексей Зиновьев - Путь скользкого Python и дао толстой Pandas: дай свои данные, rRrrrrr...
http://www.slideshare.net/zaleslaw/pythons-slippy-path-and-tao-of-thick-pandas-give-my-data-rrrrr

Armin Ronacher - Developing an Open Source Library / 10 Years of Python Libraries
https://speakerdeck.com/mitsuhiko/10-years-of-python-libraries

Максим Климишин - Трансдюсеры и Python
http://www.slideshare.net/MaxKlymyshyn/piterpy-2015-python

Алексей Пирогов - Легковесный Dependency Injection
astynax.github.io/yadic

Николай Телепенин - Генерация RESTfull приложений
https://prezi.com/hj2owao9efgs/restfull/

Александр Щепановский - Метапрограммирование за гранью приличия
http://hackflow.com/slides/metaprogramming/

Михаил Кривушин - Pyenv и Pundle: альтернатива virtualenv
http://www.slideshare.net/Deepwalker/pundle-pyenv-novirtualenv

Дмитрий Алимов - Разработка фреймворка на Python для автоматизации тестирования STB (Set-Top Boxes)
http://www.slideshare.net/delimitry/framework-for-stb-testing-lightning-talk

Николай Телепенин - Похвастайся своим swaggerом
https://yadi.sk/i/EhA1ggpAfJeqD

Thursday, February 19, 2015

Chip 'n Dale in Ruby

begin 
# Ch-ch-ch-chip 'n Dale
rescue => rangers
# Ch-ch-ch-chip 'n Dale when there's danger
end

Saturday, January 31, 2015

Edward Lear's poems

Из детства ещё помню, найти бы эти записи, что показывали по ТВ, в таком переводе:

Где же где в каком искать далеке,
Зеленоликих, синеруких плывущих в дуршлаге.
Это из The Jumblies.

Чиппати флип, флиппати чип - Меня зовут Мерихлюндия Пип.
Как только его увидали все звери и тут же запели:
Клиппати чип, чиппати клип - Его зовут Мерихлюндия Пип.
Это из The Scroobious Pip.

И ещё алфавит был. Помню, про цинк:
Ц - это цинк...
Это из Alphabet Poem.

Wednesday, January 14, 2015

Статья про dict в Python 2.7

Сегодня опубликовали мою первую статью на хабре «Реализация словаря в Python 2.7».