Thursday, December 21, 2006

distributing compilation

Everyone knows how long does it take to transform c++ sources into binary code, but there are several tools in the googleworld that can cut down compilation time: Xoreax IncrediBuild for Microsoft Visual Studio, and BuilderBooster for Borland C++ Builder and Borland Turbo C++.
We use first for some time and find it really usefull - installed on 10 computers (two developer and eight other office computers), it cuts down compilation time of eight megabytes c++ project from 40 minutes to about 5 mins!
Since our projects divides into two parts - server-side that uses ACE+TAO, STL, Boost, and written with Visual Studio. And client-side, written with Borland C++ Builder 5 (for historical reasons), so IncrediBuild can't satisfy all our needs, and it would be nice to speed up compilation of client-side software too. But it is not. BuilderBooster sucks - it has some bugs (which were revealed after only first 20 mins of using!), its Delphi-style GUI is awful!
What a pity! even google doesn't know any good distributed compiling tool for BCB.
So, hope our migration from BCB to Qt4 doesn't take too much time :(

Read More...

Thursday, November 16, 2006

Microsoft released PowerShell (ex-"Monad") - powerfull shell for Windows.

Does they think unix-like shell is obsolete? ("Introducing Windows PowerShell: UNIX Administrators Won’t Be Laughing Anymore")
Command-line tools which operate objects instead of strings maybe very usefull, but what about the-main-unix-approach "every think is a string"?

Have to try it in real-life work...

Read More...

Wednesday, November 15, 2006

Google Desktop 4.5


yep, another shiny Google Desktop is out: transparency support, firefox 2.0 support.
i'm loving it :)

Read More...

Friday, October 27, 2006

Trac to Jira migration

Some days ago I spent few hours to migrate our corporate issue tracking system from Trac to Jira. For this task I've written some scripts that automate the migration process.

Just to remember, in case I will need them again some day, I publish them here ... on Google Code. Will see if Google Code is comparable enough with sourceforge to use.

comments.py extracts and reformats all trac comments.

export.py saves ticket and extracted comments to a csv file.

Example of using these scripts: trac2jira.sh

Jira import configuration: jira.config


And the script to update subversion commit messages. It simply replaces links to Trac tickets (ex: #1) to Jira-style issue links (ex: COR-1): repo_update.sh

Read More...

hello, world

Just to mark beginning of blog usage, here are my hello-s:

Elisp


(while t
(message "Hello, all")
(message ""))


Python

def hello_world_generator(msg):
for i in range(0, len(msg)):
yield msg[i]

if __name__ == '__main__':
for char in hello_world_generator('Hello, world'):
print char,



And of course, the C++


#include <string>
#include <algorithm>
#include <iterator>
#include <iostream>

using namespace std;

class hello_world_iterator : public iterator<forward_iterator_tag, char>
{
static const string msg;
string::const_iterator msg_i;
bool end_;
public:
hello_world_iterator(bool end=false) : msg_i(msg.end()), end_(end) { }

char operator* () const
{
return (msg_i == msg.end()) ? '\0' : *msg_i;
}
hello_world_iterator& operator++ ()
{
if (msg_i == msg.end() && !end_)
msg_i = msg.begin();
else
msg_i++;
if (msg_i == msg.end())
end_ = true;
return *this;
}

bool operator== (const hello_world_iterator &rhs) const
{
return msg_i == rhs.msg_i && end_ == rhs.end_;
}
bool operator!= (const hello_world_iterator &rhs) const
{
return !(*this == rhs);
}
};

const string hello_world_iterator::msg = "Hello, world";

int main(int argc, char* argv[])
{
copy(hello_world_iterator(), hello_world_iterator(true),
ostream_iterator<char>(cout));
return 0;
}

(c++ version was written very fast, so sorry, it may contain some flaws).

Read More...

Denis Dzyubenko shadone