How to Start Programming with Python


What is Python?

In the official Python website they say that

Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together. Python’s simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance. Python supports modules and packages, which encourages program modularity and code reuse. The Python interpreter and the extensive standard library are available in source or binary form without charge for all major platforms, and can be freely distributed.

Often, programmers fall in love with Python because of the increased productivity it provides. Since there is no compilation step, the edit-test-debug cycle is incredibly fast. Debugging Python programs is easy: a bug or bad input will never cause a segmentation fault. Instead, when the interpreter discovers an error, it raises an exception. When the program doesn’t catch the exception, the interpreter prints a stack trace. A source level debugger allows inspection of local and global variables, evaluation of arbitrary expressions, setting breakpoints, stepping through the code a line at a time, and so on. The debugger is written in Python itself, testifying to Python’s introspective power. On the other hand, often the quickest way to debug a program is to add a few print statements to the source: the fast edit-test-debug cycle makes this simple approach very effective.

How to install Python?

Installing Python is as easy as drinking a coffee. Follow these instructions to install Python

  1. At first provide a coffee for yourself
  2. Download the version you like  from the official website (Python 2 or 3)
  3. Run  the setup
  4. Install it the root drive ( for instance C:\Python )
  5. Start drinking your coffee while it is installing on your computer
  6. Setup will finish before your coffee finishes

That’s all about Python installation but I myself rather to use it in command line wherever in windos so that I have to add its path to windows variables. To do this open the Advanced System Settings (former System Properties) and add Python path to it like the following picture

Add Python Path to windows Environment Variables
Add Python Path to windows Environment Variables

How to Write Hello World Application in Python

Python syntax is ridiculously easy to learn. To write your first application in Python you have two options.

          First : use Windows Command Line

          Second : Use Python Editor (IDLE)

To code within the windows command prompt First Open Command Prompt

Write python and press enter

Python command line will appear and you can start coding. To write first command write
print (“Hello World”) // write print in lower case

and press enter then you will see the result in the next line

Python Hello World with Windows Command Prompt
Python Hello World with Windows Command Prompt

To write your application in IDLE you have to open the editor from Start Menu>Python x.x>IDLE
Then again write print (“hello world”) and press enter

Python Hello World Using Python IDLE Editor
Python Hello World Using Python IDLE Editor

As you can see coding in Python is a peace of cake and I strongly recommend you to start programming in Python for your daily usages if you have such a need. It helped me a lot and I learned a lot from its concept in a short time. It worth to try it even once. You can share your experiences with Python or Ruby or other similar tools here.

How to Build your Solution with Visual Studio Command Prompt

Working with command prompt always been a nice job, it helps you to schedule your routines and gives you more understanding of what’s going on the background. You will give more and on-time information; you can check the result as they happen. You can create a batch fileto build your solutions one after another and many other advantages.Visual Studio command prompt gives you all of the simple windows command prompt abilities plus some tools to control build and publish your source codesand many other abilities which you can find here. You can run Visual Studio command prompt from

[source code=””xml””]
Start Menu \ Visual Studio [2005|2008|2010] \ Visual Studio Tools \ Visual Studio 2008 Command Prompt

You can use other prompts like – Visual Studio 2008 x64 Cross Tools Command Prompt – for general x64 system. None of them are different; the only difference is that they are provided for different platforms. As it is hard to run Visual Studio Command Prompt from Windows Task manager, you have to call it from a simple Command Prompt; it means that you have to run the following command in your Command Prompt. After that Visual Studio tools will include into your simple command prompt.

[source code=””xml””]
call "C:\Program Files (x86) \ Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64

x86_amd64 will call x64 Cross Tools. To build your solutions you can use following commands

[source code=””xml””]
MSBuild YourSolution.sln /p:Configuration=Release

Note that you can use a path like MSBuild D:\src\YourSolution.sln for your projects. As you all know .NET provide two different type of output for each project, Debug & Release. To specify the type of output you can use following code

[source code=””xml””]
MSBuild D:\src\YourSolution.sln /p:Configuration=Release

How to publish Asp web sites with command prompt

I wanted to run a Continues Integration for my company and I set up Team City at first. It is a great application which works very nice and I configured it easily. Unfortunately our portal is one of the old website so that I couldn’t use Team City to publish my website because it work just with Web Application.

Then I try to use MSBuild for compiling and publishing my website and it wasn’t a good solution in order to the type of projects. Finally I had to use AspNetCompiler. It is a compiler to publish and build website and you have to customize it to work with your project. Here are steps in which I did to publish my website via command line.

1 – Create a XML file with desire name next to your Portal Solution (portal.sln). I use this name “AutomateBuildConfiguration.xml”.

2 – Then you have to configure this XML file with this instruction. For me following configuration was enough:

[source code=”xml”]
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="">
<Target Name="PrecompileWeb">
FixedNames="True" />

3 – You have to open one of the visual studio command line from this path :

StartMenu > All Programs > Microsoft Visual Studio 2008 > Visual Studio Tools > Visual Studio 2008 x64 Cross Tools Command Prompt.exe

I used a x64 system and chose above command line, you are free to use your own.

4 – change your path up to your XML file

5 – Use below command to publish your website

MSBuild AutomateBuildConfiguration.xml /p:Configuration=Release

6 – Enjoy your coffee, and after a while, It’s finished you already publish your website.

Unicode 6.0 Released

Unicode Logo
Unicode Logo

Two days ago Unicode 6.0.0 was released and it has important changes. There are also some changes that Iranian developers should be aware of, or is better to be aware. I try to summarize the changes base on what Roozbeh Pournader said in Persian Computing Community, and I also add some other information that mentioned in Unicode Official Website. I will post two article for this, the first one (this article) includes Unicode 6.0 information and the second one is some description about whatever is important for Iranian developers.

Note: Most of the text that you are going to read is copied from Unicode Official Website and Roozbeh Pournader text, so that the main writers are them. I just summarized and categorized text for complete information and revise it in some parts.

What is inside of Unicode 6.0

Version 6.0 of the Unicode Standard consists of the core specification, the delta and archival code charts for this version, the Unicode Standard Annexes, and the Unicode Character Database (UCD).

The core specification gives the general principles, requirements for conformance, and guidelines for implementers.

The code charts show representative glyphs for all the Unicode characters.

The Unicode Standard Annexes supply detailed normative information about particular aspects of the standard.

The Unicode Character Database supplies normative and informative data for implementers to allow them to implement the Unicode Standard.

“The links for most Version 6.0.0 chapters, and the front and back matter of the core specification are not yet active, because that text is still undergoing its last stage of editorial reviewUnicode Official Website said. “These links will be activated over the next several months, once the editorial review is complete”.

For Unicode 6.0.0 in particular two additional sets of code chart pages are provided:

  •    A set of delta code charts showing only the new blocks for Unicode 6.0.0 and any existing blocks for which new characters were added in Unicode 6.0.0. All new characters are visually highlighted in those charts.
  •    A set of archival code charts that represent the entire set of characters, names and representative glyphs at the time of publication of Unicode 6.0.0.

The delta and archival code charts are a stable part of this release of the Unicode Standard. They will never be updated.

What is new in Unicode 6.0?

1  –  2088 new characters have been added, including

  •    Over 1,000 additional symbols—chief among them the additional Emoji symbols, which are especially important for mobile phones.
  • The new official Indian currency symbol: the Indian Rupee Sign.
  • 222 additional CJK Unified Ideographs in common use in China, Taiwan, and Japan.
  • 603 additional characters for African language support, including extensions to the Tifinagh, Ethiopic, and Bamum scripts.
  • Three additional scripts: Mandaic, Batak, and Brahmi.

2  – Some new properties and data files have been added including

  •    A data file, EmojiSources.txt, which maps the Emoji symbols to their original Japanese telco source sets
  •    Two provisional properties for support of Indic scripts: IndicMatraCategory and IndicSyllabicCategory
  •    Provisional script extension data for use in segmentation, regular expressions, and spoof detection

3  – Some character properties for existing characters have been corrected including

  •    Property value updates to 36 non-CJK characters
  •    Numerous improvements to provisional properties for CJK Unified Ideographs
  •    Format updates for many normative IRG source tags, to better synchronize with ISO/IEC 10646 (see UAX #38, Unicode Han Database, for details)

4  – Amends the text of the Standard

  •    Many changes to the core specification, listed in D. Textual Changes and Character Additions
  •    Small clarifications of the conformance clauses in UAX #9, The Unicode Bidirectional Algorithm, but no significant changes to conformance requirements
  •    Major editorial revisions of UAX #44, Unicode Character Database, and UAX #15, Unicode Normalization Forms, but no significant changes to conformance requirements

5  – Provides format improvements, including

  •    Charts for CJK Compatibility Ideographs are now laid out in a multicolumn format showing sources, comparable to the structure of the charts for the CJK Unified Ideographs

UTS #10, Unicode Collation Algorithm, and UTS #46, Unicode IDNA Compatibility Processing, maintained in synchrony with the Unicode Standard, and have updates for Version 6.0.

The repertoire for Unicode Version 6.0 includes all the characters of the Second Edition, plus one additional character U+20B9 INDIAN RUPEE SIGN, which is still in the process of addition to 10646.

Character Assignment Overview

230 characters have been added to the BMP, while 1,858 characters have been added in the supplementary planes. For the first time in the history of the Unicode Standard, the majority of the regular encoded characters (graphic and format) are not in the BMP.

Most character additions are in new blocks, but there are also character additions to a number of existing blocks.

The following table shows the allocation of code points in Unicode 6.0, by character type. It highlights the numbers for the BMP and the supplementary planes separately. For more information on the specific characters newly assigned in Unicode 6.0, see the file DerivedAge.txt in the Unicode Character Database. For more details regarding character counts, see Appendix D, Changes from Previous Versions.

Type BMP Supplementary Total
Graphic 54,495 54,852 109,242
Format 37 105 142
Control 65 0 65
Private Use 6,400 131,068 137,468
Surrogate 2,048 0 2,048
Noncharacter 34 32 66
Reserved 2,457 862,624 865,081

New Blocks

The newly-defined blocks in Version 6.0 are:

0840..085F Mandaic
1BC0..1BFF Batak
AB00..AB2F Ethiopic Extended-A
11000..1107F Brahmi
16800..16A3F Bamum Supplement
1B000..1B0FF Kana Supplement
1F0A0..1F0FF Playing Cards
1F300..1F5FF Miscellaneous Symbols And Pictographs
1F600..1F64F Emoticons
1F680..1F6FF Transport And Map Symbols
1F700..1F77F Alchemical Symbols
2B740..2B81F CJK Unified Ideographs Extension D

Text Changes and Additions

Numbers indicate the chapter or section in the Unicode 6.0 core specification where there are some significant changes or additions. This list is not exhaustive. Select changes for Chapter 3, Conformance, are listed separately under E. Conformance Changes. Many figures have been updated or added throughout.

  •    Preface: Rewrote extensively
  •    5.17: Updated shift/rotate in UTF8/UTF16 binary order algorithm
  •    6.2: Documented dandas
  •    7.1: Added new text on Latvian (and Sorbian) letters in Latin Extended-D
  •    8.2: Updates to Arabic, including Arabic pedagogical symbols (nuktas) and Kashmiri additions for Arabic
  •    9: Various updates to Indic, including additions to tables of vowel letters
  •    9.1: Updates to Devanagari, including Kashmiri additions for Devanagari
  •    9.5: Added text on Oriya fraction signs
  •    9.6: Improvements to Tamil
  •    9.9: Added text on new Malayalam characters, including Dot Reph
  •    10.2: Various updates to Tibetan
  •    11.13: Various updates to Balinese
  •    11.14: Various updates to Javanese
  •    12.1: Various updates to Han; added new section on CJK Extension D
  •    12.4: Added new subsection on Kana Supplement in Hiragana and Katakana
  •    12.6: Various updates to Hangul
  •    13.1: New text on Ethiopic additions in Ethiopic Extended-A
  •    13.4: Added new text on Tifinagh bi-consonants
  •    13.7: Added new text for Bamum Supplement
  •    15: New text on Emoji affecting the description of the following code ranges:
          o    2300-23FF Miscellaneous Technical
          o    2700-27BF Dingbats
          o    1F0A0-1F0FF Playing Cards
          o    1F100-1F1FF Enclosed Alphanumeric Supplement
          o    1F300-1F5FF Miscellaneous Symbols And Pictographs
          o    1F600-1F64F Emoticons
          o    1F680-1F6FF Transport And Map symbols
  •    15.1: New text on U+20B9 INDIAN RUPEE SIGN
  •    15.8: New subsection on Alchemical Symbols
  •    16.8: Updates regarding annotation characters and bidi
  •    17.2: Updated to note the new presentation format for compatibility ideographs
  •    Appendices and Back Matter: various updates
  •    Han Radical-Stroke Index now online only; introductory material moved to chapter 12

Unicode Character Database changes

  •    A general category change to two Kannada characters (U+0CF1, U+0CF2), which has the effect of making them newly eligible for inclusion in identifiers
  •    A general category change to one New Tai Lue numeric character (U+19CA), which would have the effect of disqualifying it from inclusion in identifiers unless grandfathering measures are in place for the defining identifier syntax
  •    Changes to ten characters affecting the determination of script runs
  •    The formal deprecation of one Arabic character
  •    Reversal of the default grapheme cluster boundary determination for Thai and Lao to the behavior specified in Unicode 5.0

Other significant changes include:

  •    Addition of the EmojiSources.txt data file, detailing source mapping information for the Emoji characters
  •    Addition of the provisional ScriptExtensions.txt data file, providing information about use of certain characters with multiple scripts
  •    Addition of new provisional properties related to the structure of syllables in Indic scripts
  •    Deprecation of several derived properties related to Unicode normalization
  •    Improvement of the LineBreakTest.txt and BidiTest.txt files

Unicode 6.0.0 Standard Annexes

UAX #9: The Bidirectional Algorithm
UAX #11: East Asian Width
UAX #14: Line Breaking Properties
UAX #15: Unicode Normalization Forms
UAX #24: Script Names
UAX #29: Text Boundaries
UAX #31: Identifier and Pattern Syntax
UAX #34: Unicode Named Character Sequences
UAX #38: Unicode Han Database (Unihan)
UAX #41: Common References for Unicode Standard Annexes
UAX #42: An XML Representation of the UCD
UAX #44: Unicode Character Database

Related Links

Unicode Official Website

Unicode 6.0.0 Information

Latest Code Chart

Archive Code Chart

Delta Code Charts Unicode 6.0 additions are highlighted

Unicode 5.2.0 Core Specifications

What is Reporting Services and How to create a server-side Report

SQL Server 2008

As you all know nowadays reporting is one of the important sections of each application, specially official and financial ones. So that there are lots of reporting services which provide some feature for developers to create custom reports. Most of you are aware of some reporting services in each programming language like Crystal Report, Jasper Report and etc. most of these reports create xml document from your custom reports and show it to users with a report viewer which compile the xml and show the result.

In order to creating powerful and robust reports, since 2005 SQL Server provides a Reporting Service which formerly named SSRS or SQL Server Reporting Services. So to use SSRS you have to buy a Developer or Enterprise edition. After installation you’ll have a ‘SQL Server Business Intelligence Development Studio’ which allows you create Server-side reports.

SSRS 2005 used schema 2005 and SSRS 2008 using schema 2008 for creating server-side reports. I wrote many posts about SSRS before so if you are a fan of this blog, you’re aware of these schemas and differences. Visual Studio has a built-in reporting system which allows you to create client-reports (RDLC) and it use schema 2005 to do its job.

When we use SSRS instead of VS Reports

Client reports which provided by VS are suitable for available data. For example you have a list of users or asset and you want to get a report from it.

Server reports which provided by SQL Server, use for reports which need calculation and in some cases take some minutes to generate, cause data have to generate based on some parameters.

SSRS (schema) 2005 has lots of issues with RTL and Unicode but SSRS 2008 resolve most of them and there are only a few problems that can be neglected.

Upgrading reports from schema 2005 to schema 2008 is a real nightmare that I wrote about it and its solution, but you have to know that it’s not an easy job.

How to create a server side report in SSRS 2008

  • Open Visual Studio
  • Create a new project and choose Business Intelligent Projects from the left pane and then select Report Server Project
  • Give a Name to your project
Creating a Reporting Services Report Project
Creating a Reporting Services Report Project

Your server-side project is ready, now you have toad a new server reports to it to do this

Add a new Item and select Report (note to format of the report, it is RDL)

Now you have an empty report and you can design it with Toolbox items and bind it to your database with Store procedure or via a simple query

What is Database Mail and How To Configure it

We all get some SMS from our internet banks whenever we logging to an Internet bank. Many developers think that they have to send e-mails (or sms) from their own applications but it’s not a good idea to do such a work. SQL Server has a functionality to do such a thing. In fact whenever a transaction Commits or Rollbacks after that SQL Server can send SMS or e-Mail to anybody with any limitation.

Database Mail Architecture
Database Mail Architecture

What is Database Mail? In a short answer, Database Mail is a feature of SQL Server which let Database sends Mail or SMS to anybody after a transaction.

Database Mail run outside of SQL Server so it is not pressure on your SQL Server Engine. It also is support clustered environment and can use SMTP Servers. On the other hand it sends mails asynchronously with Service broker so there will be no waste time and it has some security maintenance which let you filter messages.

So with this background it is necessary to know that when we have to use this functionality. The best example to send SMS is after a Backup procedure it doesn’t matter that it is commit or rollback, you will receive SMS (mail) after the procedure and you can remotely run the backup procedure after a rollback. It is very good for DBAs. Another good example is bank Transactions. Those are important and customers have to know about the result of transaction no matter what.

How to Configure Database Mail

Database Mail is disabled by default and you have to enable it. To enabling it you have three options.

1 –  First one is to use Database Mail Configuration Wizard.

To use Database Mail Configuration Wizard, connect to an instance of SQL Server, and then from the Object Explorer expand the Management key. Then right click on the Database Mail and select Configure Database Mail.

Connect to an Instance of SQL Server > from the Object Explorer expand Management > right click on Configure database Mail
Connect to an Instance of SQL Server > from the Object Explorer expand Management > right click on Configure database Mail

At the first time you have to select Setup database Mail and create a new one. Then you can choose between – Manage Database Mail accounts and profilesManage profile securityView or change system parameters.

The important note is that Service Broker should be enabled first. SQL Server Service broker is an extension mechanism that allows you to queue events for asynchronous processing. There is no intrinsic harm in enabling the broker, if it’s not used it will just be idle. In fact Service Broker is a messaging system built into the SQL server db engine.

So enabling SQL Server Service Broker in any database requires a database lock. If Service Broker was deactivated in msdb, to enable Database Mail, first stop SQL Server Agent so that Service Broker can obtain the necessary lock.

2 –  The Second solution to configure Database Mail, is to use Store procedures.

Mail & SMS
Mail & SMS

It has a long story and you can read about the store procedures here in MSDN.

3 –  The third solution is using the Surface Area Configuration facet of Policy-Based Management.

With above information you can guess that what the Database Mail requirements are.

  1.   SQL Server (2005 – 2008) – SQL Express don’t have Database Mail.
  2.   Enabling Service Broker
  3.   Enabling Database Mail
  4.   A Mail Server (Usually Exchange Server) to send Mails.
  5.   Configuring Database Mail to use it.

I also recommand you to take a look at these articles 123 – 4

Essential Tools for Software Developing Companies

It’s a long time which I’m working as a software developer for some Persian companies. In these years I face with some issues and also feel some happiness because of available tools in different companies. So I decided to provide a list of essential tools which every software company should have and without them, there would be some problem.


GNU Logo
GNU Logo

‪Title : Essential Tools for Software Developing Companies

‪Publish Date : 05/05/2010

‪Version : 1.0

‪Author : Nasser Hadjloo

‪Author Mail :

‪Copyright (c) 2010 Nasser Hadjloo.

‪Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;

‪with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.



Source Control – It is the most important tool which a software developer companies should have. It is no matter you have only ONE or two developer, you have to own a source control, I wrote an article on how to select a source control before. (I prefer Team Foundation Server)

Test Tool – these tools help you to create robust codes.

Cruise Control .Net
Cruise Control .Net

Continuous Integration (CI) – A CI is a set of tools which let you create nightly build. (I prefer Cruise Control (.net))

In-House Framework – There are always many same classes in rest of your applications, so try to make an in-house framework and put those over there.

Clear and Complete Documentation – this help you and your new developers to easily join the team and know that what’s happen before? Or How to use a method?


Issue Tracker – It is another good tool which helps managers to manage their developers. These types of tools, give you a completely clear view of your current status of your applications. (I prefer JIRA)

Service Desk – This software separate Developers from Support team and let them work with free mind. They are only responsible for the issues which included in Issue Trackers and this let your developers be sure that those are not supporter but a real developer. (I prefer OTRS)

Monthly Calendar – A monthly calendar help developers to be aware of companies worksheet and free their time up when company needs them.

Fast Computer – It is an old famous subject so I don’t talk about it anymore.

Two Monitors – This is the same as fast pc.

Separate File, Domain, SQL, Source Control and Build Server – It is always a good Idea to have separate server for each mentioned servers. Those are really important in a software developing company and any latency in responding will make your developer angry.

Good Work Condition – This is another famous issue to have a good and silent room which has a good air conditioner and blah blah blah.

Weekly Session – This let your developers know about each other and work progress.

You can extend these tools with some others but in my opinion these are essentials and there is no excuse for these Items, if you lose one item you will pay for it ASAP.

How to force Menu to rendered as UL instead of TABLE

CSS Friendly Adapter
CSS Friendly Adapter

If you are a web designer or heard about Menu, you heard about rendering of this control more. Unfortunately this control rendered as html table tag so it generate large and un-standard code. In this article we take a look at a solution to change rendering of this control to standard html ul tag.


GNU Logo
GNU Logo

‪Title : How to force Menu to rendered as UL instead of TABLE

‪Publish Date : 18/04/2010

‪Version : 1.0

‪Author : Nasser Hadjloo

‪Author Mail :

‪Copyright (c) 2010 Nasser Hadjloo.

‪Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;

‪with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.


As you know every server-side controls rendered as html and interpret by client browser (e.g. IE, FireFox, Opera, etc) for example every ASP TextBox rendered as html input tag and etc. in some cases this rendering implemented by standards and is some of them we are facing with un-standard rendering.

CSS friendly control adapters for ASP.NET 2.0. “A control adapter can “teach” the Menu how to produce this kind of CSS friendly HTML without sacrificing the power and flexibility of the original Menu control.” Official site said. The good news about CSS Friendly isthat this adaptor is free and open source And you can fiond it on codeplex

There is an example on official CSS friendly control adapters for ASP.NET 2.0 website which display two menus, one with CSS Friendly adapter and one Standard Menu. MenuItems for both are same but rendered html is totally different. In a quick look you can find that Standard Menu rendered 451 lines of html code [which rendered as table] and CSS Friendly Menu which rendered 269 lines of html code [which rendered as ul].

This decreases your lines of code, and will reduce page size and on the other hand will rendered standard html tag which let your menu display in a same type in different browser.

Fortunately we passed from 2.0 and now 4.0 render MenuItems as standard html ul tag, so you don’t need this adapter any more, but if you are still using 2.0 Menu, don’t miss this good adapter.

Fortunately you can use this adapter for TreeView, DetailsView, FormView, GridView, DataList and MembershipControls [Login – ChangePassword – PasswordRecovery – CreateUser – LoginStatus]

There are good tutorials on official CSS friendly control adapters for ASP.NET 2.0 website, so read those and I just give you a download link, to download CSS Adapter from codeplex.

Download CSS friendly control adapters for ASP.NET 2.0

Considerations to select a Source Control

Using a Source Control is a requirement for software developer companies. There are too many source control available which store your data in a repository. In this article we will take a look at considerations to select a source control.


GNU Logo
GNU Logo

‪Title : Considerations to select a Source Control

‪Publish Date : 06/04/2010

‪Version : 1.0

‪Author : Nasser Hadjloo

‪Author Mail :

‪Copyright (c) 2010 Nasser Hadjloo.

‪Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;

‪with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.


First of all you need a list of available source control for your platform. Surely you cannot use a Windows application in you Red Hat.


The next step is to remove some items from the provided list. Everybody can have different idea about removing attribute. For example for someone, using on the net is a must but for another one is not. So remove some item from your list to garble your list.


Now you have a list with 3 – 5 items. The next step is to specify your cost range. There are some expensive and some open source (free) item in your list. So decide to use remove some item with the cost range. Probably your list contains some fee and some free items.


Now you should take a look at your IDE and check if these items support your IDE or not. In some cases there are some third party add-ons for your source control which may integrate the source control with your IDE. So go and search for it.


The next step is to compare remained items feature.


If there are some items in your list yet, check for those communities on the web. And see which one/ones are used more in your similar case.


The next step is to attention to ease of use.


If there are some items in your list yet, you can ask your developers experience about remained item, and check what those think about remained items.


Finally you have to use remained Items in a test lab, and check if are those really good enough for you?


This is no matter which item you selected for your Source Control. The key point is that you really Garble some items and currently selected item is your choice. So learn it yourself and then learn it completely to your team. If your developers can not work with it change it, because you will face serious problems ASAP.


I check the web and Found GITTFSSVN – useful and with above steps for me TFS was better than others. Because TFS (2010) is integrated with Visual Studio, is light (2010 version), has a large community, is easy to use, has a web port, Microsoft is supporting it. The minus point for TFS is that it’s expensive which this issue resolved in VS2010, cause it installs with VS2010 and whenever you install VS2010, you install it.


I wish TFS became open source one day and became a category killer in it’s category. After TFS I suggest GIT and after that you can use from SVN.

How to install ISIRI 9147 in Windows Seven

This is my lat post in this Persian year (1388) and I want to describe about a solution to install ISIRI 9147 in Windows Seven. Persian Standard Keyboard Layout (ISIRI 9147) cannot be installed in Windows Seven. In This Post We will take a look at this issue and its dependants.


GNU Logo
GNU Logo

‪Title : How to install ISIRI 9147 in Windows Seven Pages

‪Publish Date : 03/13/2010

‪Version : 1.0

‪Author : Nasser Hajloo

‪Author Mail :

‪Copyright (c) 2010 Nasser Hajloo.

‪Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;

‪with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.


ISIRI 9147 created by Farsi Web Sharif company and a group of talented Persian engineers in order to Institute of Standard and Industrial Research of Iran‘s (ISIRI) request, to Standardize Persian Keyboard Layout and providing a way to implement ISIRI 6219. I wrote many article about this in Persian, and do not want to describe it in English in this post.

Most of Persian users, using default windows keyboard layout which provided by Microsoft, This keyboard did not implement based on ISIRI 9147, so it’s not a standard keyboard, and you have to change it (it is important but optional and unfortunately most of Persian users do not do this because their not aware of its issues).

Latest Microsoft Windows didn’t use this keyboard layout too, so we have to ignore it and use ISIRI 9147. The bad news is that Farsi Web Sharif (who was the responsible to implement a keyboard layout based on the ISIRI 9147 documentation,) only provides a 32 bit version of this keyboard layout which just works fine with Windows Vista and its father’s family. So it doesn’t work with Windows Seven. The other bad news is that Farsi Web Sharif does not provide a standard keyboard layout based on ISIRI 9147 documentation, and the funniest part of this news is that this documentation provided by Farsi Web Sharif and a group of engineers which works for/in order of Farsi Web Sharif.

So what’s the problem with Farsi Web Sharif provided keyboard Layout? Based on the documentation there is a ZWNJ (Zero With Non Joiner) character with combination of Shift + Space which didn’t implement. I mailed to Farsi Web a few times but I never took an appropriate answer so I completely ignored it.

Luckily, recent Persian developers working a lot, to resolve this issues, Ehsan Akhgari is one of the active developers who works to resolve this issues. At past, he provide a 64 bit version of ISIRI 9147, and also resolve Shift + Space issue in both of them. So his keyboard layout was more standard than Farsi Web one.

After releasing Windows Seven, Ehsan provides another version of ISIRI 9147 in both 32 and 64 bit version which also include Shift + Space (ZWNJ) character.

If you are using Windows Seven or any other Windows operating systems, I strongly suggest you to install Ehsan’s ISIRI 9147 keyboard. To download these layouts you can use following links or take a look at Ehsan Akhgari website and download them, there.

Happy Nowruz (New Persian year)

 Download Itanium 64-bit from Ehsan Akhgari Website

 Download Windows x64 from Ehsan Akhgari Website

 Download WoW64 from Ehsan Akhgari Website

 Download ISIRI 9147 Keyboard layout 32 bit from Ehsan Akhgari Website

 Download Original ISIRI 9147 which provided by Farsi Web Sharif

 Standard Persian Keyboard article written by Ehsan

 Update fo Standard Persian Keyboard article written by Ehsan Akhgari