<?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: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-7123906406701274151</id><updated>2011-04-22T13:53:13.406+10:00</updated><category term='ruby'/><category term='dev'/><category term='python'/><category term='blog'/><category term='tool'/><title type='text'>notebook</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-5372269202871374219</id><published>2008-12-08T12:53:00.003+11:00</published><updated>2008-12-08T12:55:51.760+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python: changing the class of an instance</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;blockquote&gt;So it happens often that i while i’m in ipython, i want to edit the display methods and test them without reloading the data.I tried pickling the data but pickle complained about it for somereason, so my only option was to edit the methods in place and whileipython is great, i prefer my editor, besides i want to store the codein case it, you know, works.So i type reload Module then foo.__class__ = Module.Foo and voila!all the methods change but the instance variables remain the same so idon’t have to reload the data!!&lt;/blockquote&gt;&lt;a href="http://www.philhassey.com/blog/2008/06/11/learning-python-by-reinventing-wheels/#comments" target="_blank"&gt;Source.&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-5372269202871374219?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/5372269202871374219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=5372269202871374219&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/5372269202871374219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/5372269202871374219'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2008/12/python-changing-class-of-instance.html' title='Python: changing the class of an instance'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-3687084518434380684</id><published>2008-03-18T15:04:00.001+11:00</published><updated>2008-03-18T15:04:20.831+11:00</updated><title type='text'>print the content of the clipboard as text (Windows)</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;getclip.cpp&lt;br /&gt;&lt;br /&gt;&lt;textarea rows='10' cols='60' class='cpp' name='code'&gt;&lt;br /&gt;#include "Windows.h"&lt;br /&gt;#include "stdio.h"&lt;br /&gt;&lt;br /&gt;#define CB_SUCCESS    0&lt;br /&gt;#define CB_GET_FAILED 1&lt;br /&gt;#define CB_CANT_OPEN  2&lt;br /&gt;&lt;br /&gt;int main(int argc, char* argv[])&lt;br /&gt;{&lt;br /&gt;	if ( !OpenClipboard(NULL) )&lt;br /&gt;		return CB_CANT_OPEN;&lt;br /&gt;&lt;br /&gt;	HANDLE hData;&lt;br /&gt;	if (hData = GetClipboardData( CF_TEXT ))&lt;br /&gt;	{&lt;br /&gt;		printf("%s", (char *)hData);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	CloseClipboard();&lt;br /&gt;&lt;br /&gt;	return (hData == NULL) ? (CB_GET_FAILED):(CB_SUCCESS);&lt;br /&gt;}&lt;br /&gt;&lt;/textarea&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-3687084518434380684?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/3687084518434380684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=3687084518434380684&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/3687084518434380684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/3687084518434380684'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2008/03/print-content-of-clipboard-as-text.html' title='print the content of the clipboard as text (Windows)'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-7910446901094197071</id><published>2008-01-31T13:22:00.000+11:00</published><updated>2008-01-31T13:27:01.208+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Ruby and VIM</title><content type='html'>&lt;a href="http://www.akbarhome.com/2007/6/6/ruby-on-vim"&gt;Article&lt;/a&gt;, &lt;a href="http://vimdoc.sourceforge.net/htmldoc/if_ruby.html#if_ruby.txt"&gt;documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I had only one problem (on Windows). gVim comes with Ruby support, but the included console version of Vi doesn't. The solition is on &lt;a href="http://hasno.info/2008/1/28/windows-vim-7-1-212"&gt;hasno.info&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-7910446901094197071?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/7910446901094197071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=7910446901094197071&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7910446901094197071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7910446901094197071'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2008/01/ruby-and-vim.html' title='Ruby and VIM'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-710551049458106969</id><published>2007-04-23T11:07:00.001+10:00</published><updated>2007-04-23T11:07:25.646+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Windows Freeware Diff/Merge application</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I started a discussion about Diff/Merge tools on &lt;a href='http://programming.reddit.com/info/1je83/comments'&gt;reddit&lt;/a&gt;.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;I collected together the candidates on this list:&lt;br&gt;&lt;/br&gt;&lt;a href='http://www.listible.com/list/windows-freeware-diff2Fmerge-application'&gt;http://www.listible.com/list/windows-freeware-diff2Fmerge-application&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;The only one which was able to handle long lines is the &lt;a href='http://www.componentsoftware.com/Products/CSDiff/index.htm'&gt;CS-Diff&lt;/a&gt;. A few supports word wrapping, but none of them are flawless:&lt;br&gt;&lt;/br&gt;&lt;ul&gt;&lt;li&gt;KDiff3 have the functionality, but breaks the lines randomly, useless.&lt;br&gt;&lt;/br&gt;&lt;/li&gt;&lt;li&gt;WinMerge does the word wrapping good, but turning it on breaks keyboard navigation, and no word wrapping in the DiffPane.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-710551049458106969?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/710551049458106969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=710551049458106969&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/710551049458106969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/710551049458106969'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2007/04/windows-freeware-diffmerge-application.html' title='Windows Freeware Diff/Merge application'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-3491400239657496485</id><published>2007-04-18T11:49:00.000+10:00</published><updated>2007-04-18T22:26:13.673+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><title type='text'>Processing Tag files with Ruby</title><content type='html'>&lt;textarea name="code" class="ruby" cols="60" rows="10"&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def proctag(tagline)&lt;br /&gt;  # {tagname}&lt;Tab&gt;{tagfile}&lt;Tab&gt;{tagaddress}[;"&lt;Tab&gt;{tagfield}..]&lt;br /&gt;  # "A tagfield has a name, a colon, and a value: "name:value".&lt;br /&gt;  # The name of the "kind:" field can be omitted.  A program reading the&lt;br /&gt;  # tags file can recognize the "kind:" field by the missing ':'.&lt;br /&gt;&lt;br /&gt;  ret = Array.new&lt;br /&gt;  &lt;br /&gt;  # tagname&lt;br /&gt;  idxb   = 0&lt;br /&gt;  idxe   = tagline.index("\t")&lt;br /&gt;  ret[0] = tagline[idxb..idxe-1]&lt;br /&gt;  &lt;br /&gt;  # tagfile&lt;br /&gt;  idxb   = idxe+1&lt;br /&gt;  idxe   = tagline.index("\t",idxb)&lt;br /&gt;  ret[1] = tagline[idxb..idxe-1]&lt;br /&gt;  &lt;br /&gt;  # tagaddress&lt;br /&gt;  idxb = idxe+1&lt;br /&gt;  idxe = tagline.index(";\"",idxb)&lt;br /&gt;  idxe = -1 if idxe == nil&lt;br /&gt;  ret[2] = tagline[idxb..idxe-1]&lt;br /&gt;  &lt;br /&gt;  # tagfields&lt;br /&gt;  ret[3] = nil&lt;br /&gt;  ret[4] = nil&lt;br /&gt;  if idxe != -1&lt;br /&gt;    fldlst = tagline[idxe+1..-1].strip.split("\t")&lt;br /&gt;    for act in fldlst&lt;br /&gt;      # handle kind&lt;br /&gt;      if !act.include?(':')&lt;br /&gt;        ret[3] = act&lt;br /&gt;      else&lt;br /&gt;        ret[4] = Hash.new if ret[4] == nil&lt;br /&gt;        hm = act.split(':')&lt;br /&gt;        ret[4][hm[0]]=hm[1]&lt;br /&gt;        ret[3] = hm[1] if hm[0] == 'kind'&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  return ret&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;while gets&lt;br /&gt;  next if $_[0] == ?!&lt;br /&gt;  m = proctag($_.chomp)&lt;br /&gt;  print m[3]," ",m[0],"\n"&lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-3491400239657496485?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/3491400239657496485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=3491400239657496485&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/3491400239657496485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/3491400239657496485'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2007/04/test.html' title='Processing Tag files with Ruby'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-7329157206317398328</id><published>2007-03-02T15:39:00.001+11:00</published><updated>2007-04-18T11:20:07.180+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Mercurial - status produces wrong slashes on Windows</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;If you don't like it, then a quick fix (for 0.9.3):&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Line 768 in C:\Python24\Lib\site-packages\mercurial\util.py:&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;blockquote&gt;def localpath(path):&lt;br&gt;&lt;/br&gt; return path.replace('/', '\\')&lt;br&gt;&lt;/br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;/br&gt;Replace it with:&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;blockquote&gt;def localpath(path):&lt;br&gt;&lt;/br&gt; return path&lt;br&gt;&lt;/br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-7329157206317398328?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/7329157206317398328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=7329157206317398328&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7329157206317398328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7329157206317398328'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2007/03/mercurial-status-produces-wrong-slashes.html' title='Mercurial - status produces wrong slashes on Windows'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-7684341704105982200</id><published>2007-03-01T17:31:00.001+11:00</published><updated>2007-04-18T11:20:02.960+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Mercurial - kdiff3 - hgmerge</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Context:&lt;/b&gt; Windows, MSYS, Mercurial installed from source&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;b&gt;Problem:&lt;/b&gt; hgmerge will use "merge" to merge even if kdiff3 is present&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;b&gt;Solution:&lt;/b&gt; edit x:/Python24/Scripts/hgmerge and remove the following line (and the corresponding fi should be eliminated too): &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;if [ -n "$DISPLAY" ]; then&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-7684341704105982200?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/7684341704105982200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=7684341704105982200&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7684341704105982200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7684341704105982200'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2007/03/mercurial-kdiff3-hgmerge.html' title='Mercurial - kdiff3 - hgmerge'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-120398332261332731</id><published>2007-02-19T12:06:00.001+11:00</published><updated>2007-04-18T11:20:02.961+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>bzrvss</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I am using &lt;a href='http://www.selenic.com/mercurial/wiki/'&gt;Mercurial&lt;/a&gt; since a month, so I abandoned my bzrvss project.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Mercurial + &lt;a href='http://kdiff3.sourceforge.net/'&gt;kdiff3&lt;/a&gt; + &lt;a href='http://qct.sourceforge.net/'&gt;qct&lt;/a&gt; + some custom python scripts are doing the job for me well enough.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-120398332261332731?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/120398332261332731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=120398332261332731&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/120398332261332731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/120398332261332731'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2007/02/bzrvss.html' title='bzrvss'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-7583034837926027959</id><published>2007-02-19T12:02:00.001+11:00</published><updated>2007-04-18T11:20:14.964+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>SPE - python ide download link</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;It's not so easy to find it, so here is the project page's link: &lt;a href='http://developer.berlios.de/projects/python'&gt;http://developer.berlios.de/projects/python&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-7583034837926027959?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/7583034837926027959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=7583034837926027959&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7583034837926027959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7583034837926027959'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2007/02/spe-python-ide-download-link.html' title='SPE - python ide download link'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-3346428729824784342</id><published>2007-01-16T14:28:00.001+11:00</published><updated>2007-04-18T11:20:02.962+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>bazaar merge plugin: extmerge</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a href='http://erik.bagfors.nu/bzr-plugins/extmerge/index.html'&gt;http://erik.bagfors.nu/bzr-plugins/extmerge/index.html&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Makes my life much easier, really cool.&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-3346428729824784342?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/3346428729824784342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=3346428729824784342&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/3346428729824784342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/3346428729824784342'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2007/01/bazaar-merge-plugin-extmerge.html' title='bazaar merge plugin: extmerge'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-7337315589606436553</id><published>2007-01-15T12:25:00.001+11:00</published><updated>2007-04-18T11:20:02.963+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>bazaar, Mercurial, darcs</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Update 16/01:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;bazaar: merge problem solved, see the next post.&lt;/li&gt;&lt;li&gt;Mercurial: found a way to query changes.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;_____________________________________________&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I played with Mercurial and darcs on the weekend. Environment: win32, python 2.5, &lt;a href="http://sourceforge.net/projects/console/"&gt;console&lt;/a&gt; + sh from MSYS.&lt;br /&gt;&lt;br /&gt;My observations:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://abridgegame.org/darcs/"&gt;darcs&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Pros:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I really liked the interactive style of workflow.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It gave me enough informations about what I needed.&lt;/li&gt;&lt;li&gt;Merging was easy.&lt;/li&gt;&lt;li&gt;I's really cool.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Cons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They were too creative during the command naming. Almost totally new command set is not a deal breaker, but uncool.&lt;/li&gt;&lt;li&gt;I's strange that the latest available windows binary is not the latest stable version. However It is possible to download the latest binary from an external site.&lt;/li&gt;&lt;li&gt;Hard to extend.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;What makes it totally unusable for me&lt;/i&gt;: &lt;a href="http://darcs.net/DarcsWiki/WindowsConsoles"&gt;WindowsConsoles&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;During the evaluation I got several error messages complaining about my console being out of sync.&lt;br /&gt;I will try to overcome on this somehow. Maybe disabling the interactive features makes it possible to use it, or just use the cmd.exe.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.selenic.com/mercurial/"&gt;Mercurial&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It is similar to bazaar.&lt;br /&gt;&lt;br /&gt;Pros:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;More fine grained control than in bazaar (pull/update/merge are separate steps).&lt;/li&gt;&lt;li&gt;Merge is more easy than in bazaar (easy to configure external diffs).&lt;/li&gt;&lt;li&gt;Written in python, easy to extend.&lt;/li&gt;&lt;/ul&gt;Cons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Installation from the sources is working well, but the windows binary installer is trying to install the msvcrt71.dll into the windows/system32. This is totally unacceptable.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;What makes it totally unusable for me&lt;/i&gt;: &lt;strike&gt;I weren't able to query file status changes between two branches.&lt;/strike&gt; If I would like to see what changes I have made, I have to query the changes from the upstream's repository and specify my working branch in a parameter. It's logical but not practical.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bazaar-vcs.org/"&gt;&lt;b&gt;bazaar&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pros:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Written in python, easy to extend.&lt;/li&gt;&lt;li&gt;Provides every information what I need. Easy to query changes between branches.&lt;/li&gt;&lt;li&gt;Easy to install, working well with my my console.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Cons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strike&gt;Merging is not too user friendly. On conflict it just put the 3 versions to the filesystem, and you have to do the merging manually. (darcs and mercurial provides nice way to define a merge tool)&lt;/strike&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-7337315589606436553?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/7337315589606436553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=7337315589606436553&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7337315589606436553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/7337315589606436553'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2007/01/bazaar-mercurial-darcs.html' title='bazaar, Mercurial, darcs'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-405606809007114272</id><published>2006-12-21T14:37:00.001+11:00</published><updated>2007-04-18T11:20:02.964+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>bzr-gtk</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;blockquote&gt;I tried out the &lt;b&gt;bzr-gtk&lt;/b&gt; gui for Bazaar, but it took too long time to get it working, and it doesn't do too much. I am thinking on a wxPython based gui for it. I think it would be much more widely usable than a pygtk app.&lt;br&gt;&lt;/br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;/br&gt;It actually have nice features, but I would prefer to have a wxPython version. It could work on OSX too, and it is much easier to install.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;I used &lt;a href='http://www.wincvs.org/'&gt;WinCvs&lt;/a&gt; for a long time and then &lt;a href='http://www.syntevo.com/'&gt;SmartCVS&lt;/a&gt;. They are really good programs and made my life a lot easier.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;What I miss from bzr-gtk:&lt;br&gt;&lt;/br&gt;&lt;ul&gt;&lt;li&gt;file level informations (I just would like to see the history of a file.)&lt;/li&gt;&lt;li&gt;the file listing window doesn't have a column header, it is not possible to order by status&lt;/li&gt;&lt;li&gt;flat view: view all files recursively in a directory&lt;/li&gt;&lt;li&gt;visual diff (or to be able to use an external one)&lt;/li&gt;&lt;li&gt;I really like the visualization but no it would be nice to show the changed file list too&lt;br&gt;&lt;/br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-405606809007114272?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/405606809007114272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=405606809007114272&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/405606809007114272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/405606809007114272'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2006/12/bzr-gtk.html' title='bzr-gtk'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-2710908590479390819</id><published>2006-12-20T16:30:00.001+11:00</published><updated>2007-04-18T11:20:02.965+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Bazzar in practice, WinMerge patch, bzr-gtk</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I am now using &lt;b&gt;Bazaar&lt;/b&gt; to store my working copy. I didn't have the opportunity to try out the syncing (no commits for today).&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;In the same time I made a little modification on my favorite merge application (&lt;a href='http://winmerge.org/'&gt;WinMerge&lt;/a&gt;) and I used Bazaar to create the patch. It was a good mini learning project. I had only one problem. The &lt;b&gt;diff&lt;/b&gt; on the console looked good, but when I redirected the output to a file there were &lt;b&gt;extra line breaks&lt;/b&gt; in it. I don't know why this happens, I weren't able to avoid it, but I had to remove them with tr.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;I made a &lt;b&gt;mistake&lt;/b&gt;. I created a branch and then moved the directory. It worked well till I tried to do a pull. I got a nice exception. The exception came from a filename converting function, and the filename was empty. I moved on because the merge operation worked, and didn't have time to bother with it, but today I checked the .brv directory for any kind of easy solution, and it was there. There is a file called &lt;b&gt;parent&lt;/b&gt; which contained something like this: &lt;b&gt;../../../.&lt;/b&gt; I moved the directory one level up, so I just had to remove a &lt;b&gt;../&lt;/b&gt; and everything became fine.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;I tried out the &lt;b&gt;bzr-gtk&lt;/b&gt; gui for Bazaar, but it took too long time to get it working, and it doesn't do too much. I am thinking on a wxPython based gui for it. I think it would be much more widely usable than a pygtk app.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-2710908590479390819?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/2710908590479390819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=2710908590479390819&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/2710908590479390819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/2710908590479390819'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2006/12/bazzar-in-practice-winmerge-patch-bzr.html' title='Bazzar in practice, WinMerge patch, bzr-gtk'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-8816257087718050478</id><published>2006-12-08T16:31:00.001+11:00</published><updated>2007-04-18T11:20:02.966+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>VSS -&gt; Bazaar</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I hate MS Visual SourceSafe, but must use it, so it is time to do something.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;b&gt;The idea:&lt;/b&gt; use &lt;a href='http://bazaar-vcs.org/'&gt;bazaar&lt;/a&gt; as a proxy between me and VSS.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;b&gt;Goals:&lt;/b&gt;&lt;br&gt;&lt;/br&gt;&lt;ul&gt;&lt;li&gt;keep my working source up2date without too much effort&lt;/li&gt;&lt;li&gt;use branches to separate independent tasks and to be able to track them&lt;/li&gt;&lt;li&gt;I don't want to commit into VSS through bazaar, I will merge changes manually back, but I need help to check-out the required files&lt;br&gt;&lt;/br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;/br&gt;&lt;b&gt;Workflow:&lt;/b&gt;&lt;br&gt;&lt;/br&gt;&lt;ol&gt;&lt;li&gt;import project from VSS into Bazaar&lt;/li&gt;&lt;li&gt;check-out, create branch, work on it, commit, add new files, remove files ...&lt;/li&gt;&lt;li&gt;if it is needed update from VSS [vss get latest version, commit changes into bazaar]&lt;br&gt;&lt;/br&gt;&lt;/li&gt;&lt;li&gt;merge back manually to VSS [need a good report about the changes, vss check-out, manual merge, compile, commit, update bazaar main branch]&lt;/li&gt;&lt;/ol&gt;The corresponding doc from the bazaar homepage: &lt;a href='http://bazaar-vcs.org/TrackingUpstream'&gt;http://bazaar-vcs.org/TrackingUpstream&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-8816257087718050478?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/8816257087718050478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=8816257087718050478&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/8816257087718050478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/8816257087718050478'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2006/12/vss-bazaar.html' title='VSS -&amp;gt; Bazaar'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7123906406701274151.post-5221939545177639483</id><published>2006-11-08T16:36:00.000+11:00</published><updated>2006-12-08T16:39:04.220+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>Initial post</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I decided to start an english development blog, mainly because I would like to practice the language.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;My interests: c, c++, python, php, html, js, win, linux&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7123906406701274151-5221939545177639483?l=tekidev.repcsi.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tekidev.repcsi.com/feeds/5221939545177639483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7123906406701274151&amp;postID=5221939545177639483&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/5221939545177639483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7123906406701274151/posts/default/5221939545177639483'/><link rel='alternate' type='text/html' href='http://tekidev.repcsi.com/2006/12/initial-post.html' title='Initial post'/><author><name>teki</name><uri>http://www.blogger.com/profile/03314826645359727561</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
