<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8404509726009905633</id><updated>2026-02-27T08:19:36.362+02:00</updated><category term="debian"/><category term="security"/><category term="python"/><category term="linux"/><category term="network"/><category term="tools"/><category term="test"/><category term="troubleshooting"/><category term="kerberos"/><category term="django"/><category term="freebsd"/><category term="openssl"/><category term="ssh"/><category term="ldap"/><category term="benchmark"/><category term="dns"/><category term="pam"/><category term="wheezy.web"/><category term="apache"/><category term="iptables"/><category term="performance"/><category term="apt"/><category term="kernel"/><category term="kvm"/><category term="lxc"/><category term="svn"/><category term="tricks"/><category term="vim"/><category term="virtualbox"/><category term="cron"/><category term="dhcp"/><category term="wheezy.core"/><category term="windows"/><category term="algorithms"/><category term="backup"/><category term="mail"/><category term="bash"/><category term="ext3"/><category term="grub"/><category term="nginx"/><category term="revision control"/><category term="wheezy.template"/><category term="audio"/><category term="exim4"/><category term="ntp"/><category term="setuptools"/><category term="uwsgi"/><category term="buildbot"/><category term="dovecot"/><category term="memcached"/><category term="postgresql"/><category term="qemu"/><category term="shell"/><category term="tar"/><category term="xfs"/><category term="azure"/><category term="bugzilla"/><category term="gnome"/><category term="jabber"/><category term="nfs"/><category term="nssdb"/><category term="pxe"/><category term="samba"/><category term="sftp"/><category term="tftp"/><category term="xmpp"/><title type='text'>Mind Reference</title><subtitle type='html'>Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated. — Edsger W. Dijkstra</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>212</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-2713042401346269798</id><published>2022-08-27T11:29:00.003+03:00</published><updated>2022-08-27T11:30:36.165+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apt"/><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><title type='text'>Debian: Clean up dpkg rc packages </title><summary type="text">rc  means that the package is not completely removed.


dpkg --list | grep &quot;^rc&quot; | cut -d &quot; &quot; -f 3 | \
	xargs sudo dpkg --purge
</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/2713042401346269798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2022/08/debian-clean-up-dpkg-rc-packages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/2713042401346269798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/2713042401346269798'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2022/08/debian-clean-up-dpkg-rc-packages.html' title='Debian: Clean up dpkg rc packages '/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-7979811058243501214</id><published>2022-08-22T10:58:00.006+03:00</published><updated>2022-08-22T11:00:54.276+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel"/><title type='text'>Debian: Possible missing firmware</title><summary type="text">If you encounter issue like the following, you need to download/update firmware files.


W: Possible missing firmware /lib/firmware/i915




The script below recursively downloads all available firmware for i915, (as example) copies files related to kernel 5.19 and updates initramfs which should now be without warnings.


wget -r --no-parent https://anduin.linuxfromscratch.org/sources/</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/7979811058243501214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2022/08/debian-possible-missing-firmware.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/7979811058243501214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/7979811058243501214'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2022/08/debian-possible-missing-firmware.html' title='Debian: Possible missing firmware'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-5810124195289407273</id><published>2020-08-29T13:30:00.005+03:00</published><updated>2020-08-29T14:06:04.405+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.template"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.web"/><title type='text'>Wheezy Projects Update</title><summary type="text">All libraries related wheezy.web and wheezy.template have been recently migrated from bitbucket to github.



As a part of this migration there have been provided the following major benefits:


  Established build process with travis-ci
  Dependecy updates with dependabot
  Integrated with covereall.io, 100% test coverage
  Release process to pypi per tags with github actions
  Replaced Makefile</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/5810124195289407273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2020/08/wheezy-projects-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/5810124195289407273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/5810124195289407273'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2020/08/wheezy-projects-update.html' title='Wheezy Projects Update'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-8454095931679044815</id><published>2020-08-01T15:00:00.007+03:00</published><updated>2020-08-01T18:04:11.851+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="benchmark"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><title type='text'>Python ASGI CLI</title><summary type="text">Call ASGI Python application module from command line (without an application server), just like CURL. Interested?



You need to install asgi-cli package:


pip install asgi-cli


Usage

asgi-cli --help
usage: asgi-cli [-h] [--version] [-X COMMAND] [-I] [-H HEADER] [-d DATA] [-b]
                [-n NUMBER] [-v]
                app [url]

positional arguments:
  app                   an </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/8454095931679044815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2020/08/python-asgi-cli.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/8454095931679044815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/8454095931679044815'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2020/08/python-asgi-cli.html' title='Python ASGI CLI'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-4555413197749618979</id><published>2020-07-09T14:00:00.000+03:00</published><updated>2020-07-09T15:17:17.445+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="azure"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type='text'>Authorization in Microservices Landscape</title><summary type="text">Overview
This article outlines a high-level design of authentication and
authorization options in Azure per a typical SPA use case interacting with
multiple microservices. Compares API gateway pattern versus a direct
client-to-API communication in microservices environment.

Use Case

A user should be able to request the following information:


 User profile via Azure Graph API.
 User documents </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/4555413197749618979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2020/07/authorization-in-microservices-landscape.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/4555413197749618979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/4555413197749618979'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2020/07/authorization-in-microservices-landscape.html' title='Authorization in Microservices Landscape'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-2301877459770505015</id><published>2015-05-27T16:00:00.000+03:00</published><updated>2015-05-27T18:48:25.413+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.web"/><title type='text'>Asynchronous Python in Web Applications</title><summary type="text">Asynchronous or non-blocking IO allows worker to process other requests before current request has finished. That is possible in case a processing of current web request is related to an operation that is IO bound.


Prerequisites

What is important to understand about applicability of async pattern for IO bound operations, they must:


Utilize the same event loop, in this case worker&#39;s event </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/2301877459770505015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2015/05/asynchronous-python-in-web-applications.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/2301877459770505015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/2301877459770505015'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2015/05/asynchronous-python-in-web-applications.html' title='Asynchronous Python in Web Applications'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-4066803882897401061</id><published>2015-04-04T15:00:00.001+03:00</published><updated>2015-04-04T15:06:59.233+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.template"/><title type='text'>wheezy template: static website generator</title><summary type="text">Sometimes you need a quick way to generate a static web site and put it up on a server. Here is how you can generate a static website with wheezy.template.

Let&#39;s suppose the following structure of the site:

 content/
 `- index.html
  - main.html
  shared/
  `- master.html
   snippet/
   `- script.html
    - widget.html




shared/master.html:

&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/4066803882897401061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2015/04/wheezy-template-static-website-generator.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/4066803882897401061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/4066803882897401061'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2015/04/wheezy-template-static-website-generator.html' title='wheezy template: static website generator'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-5607717232105561992</id><published>2014-10-29T17:00:00.000+02:00</published><updated>2014-10-29T17:18:36.632+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.web"/><title type='text'>wheezy web: RESTful API Design</title><summary type="text">In this article we are going to explore a simple RESTful API created with wheezy.web framework. The demo implements a CRUD for tasks. Includes entity validation, content caching with dependencies and functional test cases. The source code is structured with well defined actors (you can read more about it here). 

Design
The following convention is used with respect to operation, HTTP method (verb</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/5607717232105561992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2014/10/wheezy-web-restful-api-design.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/5607717232105561992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/5607717232105561992'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2014/10/wheezy-web-restful-api-design.html' title='wheezy web: RESTful API Design'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-1827130883898952622</id><published>2014-08-04T20:30:00.000+03:00</published><updated>2014-08-04T20:43:54.214+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="memcached"/><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="uwsgi"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.web"/><title type='text'>wheezy web: deploy nginx + uwsgi + memcached</title><summary type="text">wheezy.web is a lightweight, high performance, high concurrency WSGI web framework with the key features to build modern, efficient web. Here we will deploy quick start with nginx, uwsgi and memcached to clean debian stable installation.




Before proceeding ensure you have quick start empty or quick start i18n up and running. We will use the following names for installation:

master - a user </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/1827130883898952622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2014/08/wheezy-web-deploy-nginx-uwsgi-memcached.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/1827130883898952622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/1827130883898952622'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2014/08/wheezy-web-deploy-nginx-uwsgi-memcached.html' title='wheezy web: deploy nginx + uwsgi + memcached'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-425205573409468903</id><published>2014-03-15T07:30:00.000+02:00</published><updated>2014-08-26T16:40:26.301+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="memcached"/><title type='text'>memcached statistics status</title><summary type="text">Here is a &quot;top&quot; emulator for memcached statistics:


watch -n 5 &quot;echo stats | socat unix-connect:/var/tmp/memcached.sock -&quot;


The screen will be refreshed every 5 seconds and display results of memcached stats command.

Here is a sample output:

STAT pid 16779
STAT uptime 131077
STAT time 1394862592
STAT version 1.4.13
STAT libevent 2.0.19-stable
STAT pointer_size 64
STAT rusage_user 667.997747
</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/425205573409468903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2014/03/memcached-statistics-status.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/425205573409468903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/425205573409468903'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2014/03/memcached-statistics-status.html' title='memcached statistics status'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-8312344604380363619</id><published>2013-11-14T19:00:00.000+02:00</published><updated>2013-11-15T12:49:05.694+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apt"/><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>How to build Python deb package from source</title><summary type="text">You need a newer python version that is not available with the Debian package management system. You can compile it from source and install but that usually takes a lot of time. It would be better to build a deb instead and install it on as many machines as you need. You can use checkinstall for this.


apt-get install checkinstall


The instruction how to compile python from source is here. Once</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/8312344604380363619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/11/python-deb-from-source.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/8312344604380363619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/8312344604380363619'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/11/python-deb-from-source.html' title='How to build Python deb package from source'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-2509704903912839633</id><published>2013-10-23T16:00:00.000+03:00</published><updated>2014-03-26T20:04:37.113+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="postgresql"/><category scheme="http://www.blogger.com/atom/ns#" term="troubleshooting"/><title type='text'>PostgreSQL Streaming Replication Hot Standby</title><summary type="text">Streaming replication allows a standby server to stay up-to-date with primary. The standby connects to the primary, which streams WAL records to the standby as they&#39;re generated.

Hot standby is the term used to describe the ability to connect to the server and run read-only queries.

This method of replication is completely transparent to the client, it doesn&#39;t require any changes to database, </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/2509704903912839633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/10/postgresql-replication-hot-standby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/2509704903912839633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/2509704903912839633'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/10/postgresql-replication-hot-standby.html' title='PostgreSQL Streaming Replication Hot Standby'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-5611762461217877418</id><published>2013-10-13T14:00:00.000+03:00</published><updated>2013-10-19T16:51:00.264+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="algorithms"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.core"/><title type='text'>Python HTTP Client API</title><summary type="text">The modern web services expose public API to the world and JSON is de-facto standard in this communication. Here is a simple use case that integrates with buildbot public API.

Lets setup a virtual environment and install wheezy.core package:


virtualenv env
env/bin/easy_install wheezy.core


Launch python from virtual environment (env/bin/python) and try this:


&gt;&gt;&gt; from wheezy.core.httpclient </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/5611762461217877418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/10/python-http-client-api.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/5611762461217877418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/5611762461217877418'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/10/python-http-client-api.html' title='Python HTTP Client API'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-6320586557355546015</id><published>2013-10-08T17:00:00.000+03:00</published><updated>2013-12-05T18:36:04.008+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="freebsd"/><title type='text'>Keep FreeBSD up to date with subversion</title><summary type="text">The freebsd ports tree is quite big and sometimes you need just few packages. You can do that with subversion sparse checkouts.

pkg_add -r subversion


Checkout only immediate top level. The list of svn mirrors is here.

svn checkout --depth=immediates \
    http://svn0.eu.freebsd.org/ports/head /usr/ports


Update tree on as needed basis:

cd /usr/ports
# common
svn up --set-depth=infinity Mk </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/6320586557355546015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/10/freebsd-svn-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/6320586557355546015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/6320586557355546015'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/10/freebsd-svn-update.html' title='Keep FreeBSD up to date with subversion'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-100822536281927149</id><published>2013-10-03T09:00:00.000+03:00</published><updated>2013-10-04T08:45:02.121+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="security"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh"/><title type='text'>Convenient Remote Access with SSH Config</title><summary type="text">If you are working with a lot of remote ssh hosts it becomes hard to remember all that host specific information: username, ip address, identity file, non-standard port or local/remote port forwarding. ssh_config to rescue. Here is a sample to give you an idea (file ~/.ssh/config):


Compression yes
IdentityFile ~/.ssh/id_rsa
LogLevel ERROR
Port 22

Host h1
    HostName 192.168.91.57
    User </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/100822536281927149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/10/ssh-config.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/100822536281927149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/100822536281927149'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/10/ssh-config.html' title='Convenient Remote Access with SSH Config'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-6243163948220796649</id><published>2013-10-02T09:30:00.000+03:00</published><updated>2013-10-02T09:59:29.678+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><title type='text'>How to manage Git or Mercurial repositories</title><summary type="text">Managing version control repositories can be a challenge in multi-user environment especially when simplification of user collaboration is your goal. There are usually two primary concerns while considering enterprise deployment for version control repositories: access control and safety of your data. Both are not directly addressed by version control itself, thus a sort of security facade is </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/6243163948220796649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/10/how-to-manage-git-or-mercurial.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/6243163948220796649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/6243163948220796649'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/10/how-to-manage-git-or-mercurial.html' title='How to manage Git or Mercurial repositories'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-4995712350380010644</id><published>2013-09-10T18:00:00.000+03:00</published><updated>2015-05-08T16:07:52.698+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.web"/><title type='text'>wheezy web: Actors</title><summary type="text">The application design of wheezy.web application consists of several actors, each playing its unifying role. Actors are grouped into packages, e.g. models, repository, service, web, content, tests, etc. These packages (or layers) shape a subsystem.

The diagram below visualizes relations between actors, boundaries between packages, subsystems and application, giving a better picture of whole:



</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/4995712350380010644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/09/wheezy-web-actors.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/4995712350380010644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/4995712350380010644'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/09/wheezy-web-actors.html' title='wheezy web: Actors'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYPn6y80YQFXzaCKNcOwcl64iLH2wr9HgoVH0aKBe0U9TzoVhB8am52_64J0cN4q6dQ0n2TZHd6vyJXT6izum9LCp1vns-XSpwD2SdmQYm7qoZC_0aL1DUz7SWjJZ0KzeoJqjAO9_GH0tK/s72-c/wheezy.web-actors.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-1248493015208968868</id><published>2013-02-06T14:30:00.000+02:00</published><updated>2013-02-06T18:36:58.667+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.core"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.web"/><title type='text'>Thoughts on SQL vs ORM</title><summary type="text">The question of persistence implementation arise often. I found repository pattern very valuable due to separation of concerns, mediate between domain model and data source (mock, file, database, web service, etc). The database data source is somewhat specific since you can proceed with SQL functions or ORM. Here are some thoughts why you might prefer SQL functions over ORM in your next project:
</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/1248493015208968868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/02/sql-vs-orm.html#comment-form' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/1248493015208968868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/1248493015208968868'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/02/sql-vs-orm.html' title='Thoughts on SQL vs ORM'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-250365355946995838</id><published>2013-01-16T17:00:00.000+02:00</published><updated>2013-01-16T17:25:21.564+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.web"/><title type='text'>wheezy web: Quick Start i18n Project</title><summary type="text">wheezy.web is a lightweight, high performance, high concurrency WSGI web framework with the key features to build modern, efficient web. Here we will use an i18n (multilingual internationalization) project quick start to build a new project.



Download quickstart-i18n.zip and extract.


Rename extracted directory `quickstart-i18n` to meet your project name, e.g. mysite and open terminal in that </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/250365355946995838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/01/wheezy-web-quick-start-i18n-project.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/250365355946995838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/250365355946995838'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/01/wheezy-web-quick-start-i18n-project.html' title='wheezy web: Quick Start i18n Project'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-6985447282786963213</id><published>2013-01-15T20:00:00.000+02:00</published><updated>2013-01-15T20:11:32.305+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.web"/><title type='text'>wheezy web: Quick Start Empty Project</title><summary type="text">wheezy.web is a lightweight, high performance, high concurrency WSGI web framework with the key features to build modern, efficient web. Here we will use an empty project quick start to build a new project.



Download quickstart-empty.zip and extract.


Rename extracted directory `quickstart-empty` to meet your project name, e.g. mysite and open terminal in that directory.



The empty project </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/6985447282786963213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2013/01/wheezy-web-quick-start-empty-project.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/6985447282786963213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/6985447282786963213'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2013/01/wheezy-web-quick-start-empty-project.html' title='wheezy web: Quick Start Empty Project'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-7273923490663102948</id><published>2012-12-11T21:30:00.000+02:00</published><updated>2012-12-11T22:16:01.428+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="freebsd"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type='text'>How to create Jail in FreeBSD </title><summary type="text">Operating system virtualization is the most effective way to utilize your system resources, jails let you setup isolated mini-systems. Jails are explains well in handbook however, from practical standpoint of view, the presented material is incomplete. Here we will setup few scrips that follow handbook&#39;s &#39;Application of Jails&#39; article and enhance with few missing features. Let note preliminary </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/7273923490663102948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2012/12/freebsd-jail.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/7273923490663102948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/7273923490663102948'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2012/12/freebsd-jail.html' title='How to create Jail in FreeBSD '/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-5195612948061883643</id><published>2012-12-03T22:30:00.000+02:00</published><updated>2014-06-12T13:36:19.487+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="algorithms"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.core"/><title type='text'>How to Send Mail in Python</title><summary type="text">There are several use cases how you can send an email message using Python:


Plain Mail: an email message with plain text or html content.
Mail with Attachment: an email message with attached document.
Alternative Mail Views: you provide a convenient way to email recipients to view your message in plain text or html with optional rich content including images, etc.


Here is an example of </summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/5195612948061883643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2012/12/python-mail.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/5195612948061883643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/5195612948061883643'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2012/12/python-mail.html' title='How to Send Mail in Python'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPbNB6XsK8Waef4WSXnNRn6EcC8oVPkwM_Ddq77X3ruHOiphUV6h9-2989ZnI1-CAk1IzL5VNqjO5ysNheYfRrOMrUTjl953-tQi74Ol8syeF5877XLqvEWFmo5NO0QQ4WW3C2SFT7-gZ_/s72-c/python-alternative-mail.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-9123540027014001216</id><published>2012-11-28T20:00:00.000+02:00</published><updated>2012-11-28T20:20:54.657+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="setuptools"/><category scheme="http://www.blogger.com/atom/ns#" term="tricks"/><title type='text'>How to ship eggs with pyo files only in Python</title><summary type="text">There is sometimes a need to ship python egg distribution with pyo files only. There is confusion using bdist_egg command since it doesn&#39;t have any options to do that; instead, you can instruct install_lib command. Here is what you need in setup.cfg file:


[install_lib]
compile = 0
optimize = 2

[bdist_egg]
exclude-source-files = 1


Issue the following command to build egg.


python setup.py -q</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/9123540027014001216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2012/11/python-egg-pyo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/9123540027014001216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/9123540027014001216'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2012/11/python-egg-pyo.html' title='How to ship eggs with pyo files only in Python'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-910826835935929467</id><published>2012-11-20T19:30:00.000+02:00</published><updated>2013-11-24T18:01:54.074+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="benchmark"/><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Python Web Frameworks Excessive Complexity</title><summary type="text">Cyclomatic (or conditional) complexity is a metric used to indicate the complexity of a source code. In this post we will take a look at web frameworks source code and estimate excessive complexity, something that is beyond recommended level of 10 (threshold that points to the fact the source code is too complex and refactoring is suggested). Here is a list of web frameworks examined:


bottle
</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/910826835935929467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2012/11/python-web-excessive-complexity.html#comment-form' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/910826835935929467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/910826835935929467'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2012/11/python-web-excessive-complexity.html' title='Python Web Frameworks Excessive Complexity'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG6pRsn7J9o-7HtgOx6E_GPzgEKK5uv5lw08IeH08biJYBL0EoaD27oWIOgxqEmNgiFRMADMv9cAAGQ6PHrIoPFDrPiKIihDPlAC58xVHoWya__1bk1GWgu3dP1eS0msjCK48afKKnDiyf/s72-c/python-web-excessive-complexity.png" height="72" width="72"/><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8404509726009905633.post-2692561528968248338</id><published>2012-11-15T21:00:00.000+02:00</published><updated>2012-11-15T21:24:07.024+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="algorithms"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="wheezy.core"/><title type='text'>Lazy Attribute in Python</title><summary type="text">A lazy attribute is an attribute that is calculated on demand and only once. Here we will see how you can use lazy attribute in your Python class. Setup environment before you proceed:


$ virtualenv env
$ env/bin/pip install wheezy.core


Let assume we need an attribute that is display name of some person

Place the following code snippet into some file and run it:


from wheezy.core.descriptors</summary><link rel='replies' type='application/atom+xml' href='http://mindref.blogspot.com/feeds/2692561528968248338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mindref.blogspot.com/2012/11/python-lazy-attribute.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/2692561528968248338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8404509726009905633/posts/default/2692561528968248338'/><link rel='alternate' type='text/html' href='http://mindref.blogspot.com/2012/11/python-lazy-attribute.html' title='Lazy Attribute in Python'/><author><name>Andriy Kornatskyy</name><uri>http://www.blogger.com/profile/04890869628175359888</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FLsvs3lDhk7SOKFG8ELuzuaeFJwl4SmRotZE-RgpK4XZBdJ6vWwMGMZmKE7fLkBVwSrateEmN4kwUwITNykSxNMT80eabkvz3InSHzv4zB1YtbJDqaTi4QxXNHb-O2I/s220/DSC00132.JPG'/></author><thr:total>2</thr:total></entry></feed>