but a network starts with a node.
Recently, a lot of new non-relational databases have cropped up both inside and outside the cloud. One key message this sends is, “if you want vast, on-demand scalability, you need a non-relational database”.
and then you must also read The dark side of NoSql
I quickly evaluated 5 bug tracking systems and picked up BugGenie.
Trac - No multi-project support out of the box, (& I failed to integrate it with Mercurial).
Redmine - Supports multiple projects and looks pretty good. Hard to install & therefore maintain, I tried the Bitnami Stack but, failed to integrate Mercurial Repositories (Need to revisit this though)
Mantis - Looked as primitive as a dinosaur after looking at Trac/Redmine and there is no ready help any where within, you need to visit external manuals/help pages to actually use it.
Fossil - I love this one, I am impressed, very good to manage a project or 2 with a bunch of people involved (Would be my first choice for personal projects). What’s lacking is the ability to manage multiple projects requiring me to add & manage users separately for each project, Has RSS feeds but I need email notifications, It also doesnt support attaching files to tickets at this point of time (this is needed for attaching logs/screenshots).
BugGenie - Easy to setup, is intutive to use, ajax based UI (doesnt make you hop pages to do things), supports multiple projects and it is easy to manage (Users, Projects, Issues, …). I almost never had to visit an external manual/help pages to get going with this one.
A day after my struggle to integrate Mercurial with Trac & Redmine my friend sent me a link to Fossil and boy! it is a beauty. You just have one file to download (just one executable file) and that’s it you have a DVCS, Wiki, Ticketing & Source Browser working out of the box seamlessly, it is simple & beautiful.
After evaluating it for a day these are a few things I wish Fossil had:
Some interesting Fossil links:
http://www.fossil-scm.org/index.html/doc/tip/www/qandc.wiki
http://www.fossil-scm.org/index.html/doc/tip/www/stats.wiki
http://www.ericsink.com/entries/dbts_fossil.html
…and some interesting other links (if you haven’t clicked the last link above):
Got a hang of how to control read/write access to repositories & users through hgrc configuration.
Enabled digest authentication on Apache for repository access, so Apache authenticates users before allowing access to repositories.
Now I need to be able to manage things like:
user1 has ‘read access’ to repo1
user2 ha ‘readwrite access’ to repo1
etc. but how? That’s what I got to figure out.
Using mod_rewrite rules of Apache and corresponding changes to hgweb.config file I am able to hide the hgwebdir.cgi from the URL. Next is to configure fine-grained access control to repositories.
I wanted to publish Mercurial repositories over HTTP using hgwebdir & I just got it working for me.
I struggled for a while with this & I thought a post on how I got it working (however narrow it might be) could be of some help to some. I write this without any assurances and being fully aware that this info can become stale pretty quickly.
System Info: Windows 7, Apache 2.2, Python 2.5, Mercurial 1.4.2 (Windows binary distribution)
Assuming you have Apache 2+ server up & running and you also have Python 2.5 installed (Python 2.6 dint work for me, it caused some magic number errors), I list the steps to get it working.
Steps:
1. Download the mercurial binary distribution 1.4.2 from http://mercurial.selenic.com and install it. (I installed it under “C:\Program Files\Mercurial” and I’ll refer to this path as Mercurial Installation Path or MIP). Make sure mercurial is properly installed and is working, check by typing the hg command at the command prompt.
2. Notice library.zip under MIP, extract it to a folder called library in MIP.
You should also find a folder called Templates under MIP, just copy the Templates folder to the library folder. (this being a HOW-TO & not a WHY-TO, don’t worry why)
3. Now you need hgwebdir.cgi script but, unfortunately the binary distribution doesn’t have it. You need to get it from source for which you can download the tar.gz or you could clone the mercurial repository (like I did) with the command:
hg clone http://selenic.com/repo/hg
4. You will find the script under the root folder, decide where you want to have your cgi script and place it there. For instance I created a folder called webdir under C drive and copied the hgwebdir.cgi script to that.
5. You need to make appropriate changes to the script similar to what I have done:
First line should have the path to python.exe my line looks like this:
#!c:/Python25/python.exe
Then I uncommented the following lines :
#import sys
#sys.path.insert(0, “/path/to/python/lib”)
and changed them to
import sys
sys.path.insert(0, “C:\Program Files\Mercurial\library”)
I also uncommented the following lines for debugging purpose (this is optional)
#import cgitb
#cgitb.enable()
6. You need to create the hgweb.config file and add the paths to the repositories. I added just the 2 lines listed below to the file hgweb.config which I have placed under C:\webdir (where I have my hgwebdir.cgi). Note that hgwebdir.cgi shows other patterns of specifying repositories.
[paths]
repos = C:\Users\Rajeev\RND\*
(I am exposing the repositories under C:\Users\Rajeev\RND)
7. Configuring Apache is the last mile. There are many ways that you can configure it but, I am just showing what I done. To httpd.conf file I added the following:
Alias /hg “C:/webdir”
<Directory “C:/webdir”>
Options +ExecCGI
AddHandler cgi-script .cgi
Order deny,allow
Allow from all
</Directory>
Note that I haven’t taken care of access control and I am not yet bothered by the ugly URL that I use to access the repositories.
8. Thats it, when I access the URL http://localhost:8080/hg/hgwebdir.cgi it lists me the repositories under my RND folder. I cloned my helloworld repository using the command:
hg clone http://localhost:8080/hg/hgwebdir.cgi/repos/helloworld
P.S. I still need to figure out how to manage access rights to repositories and how to avoid hgwebdir.cgi in the URL.
Able to publish Mercurial Repositories over HTTP using hgwebdir.cgi
I need to figure out how to manage access rights to published repositories.
(via: techpost)
I am wondering if we can do REST without HTTP!!
I was just thinking about plug-ins for an application that we are developing. Very desirably:
Thinking about the second point what came to my mind effortlessly was REST but, following that is this question:
Can we do REST without HTTP?
It would be great if my application can call all the plug-ins in a standard fashion, transparently, irrespective of what language a plug-in is implemented in.
(The link above deals with the same question.)
“At Google we believe that open systems win. They lead to more innovation, value, and freedom of choice for consumers, and a vibrant, profitable, and competitive ecosystem for businesses. …..
… Open will win. It will win on the Internet and will then cascade across many walks of life: The future of government is transparency. The future of commerce is information symmetry. The future of culture is freedom. The future of science and medicine is collaboration. The future of entertainment is participation. Each of these futures depends on an open Internet. ….”.
Click the link to read The entire blog-post.
Python, Ruby, Scala & Groovy are all unexplored frontiers to me. I’m wondering what is worth giving a shot during tea-time for a few days. I have a friend who swears by Python but, going by my first impressions about these languages I just left out, Groovy and Python (I may be wrong but, It doesn’t matter much to me).
Now I need to choose between Ruby & Scala.
Any Suggestions?
Incidentally, Ubuntu Netbook Remix 9.10 turns out to be the winner according to this benchmark tests, and the all new Chromium OS needs to catchup.
B.t.w no MS OS is in the scene here. Where is Windows 7?