Saturday, September 8, 2012

Installing MS SQL Server driver on Ubuntu Linux

Although making connection to sql server can be done by using unixODBC and  FreeTDS, it is not working with some collations on sql server 2008. Microsoft released an ODBC driver for Linux recently which works on 64-bit systems only.Installing the driver is somehow tricky. I begin by install the build-essential  which is required for compiling from source. checkinstall can be install if you want to add following application to package manager.

 sudo apt-get install build-essential

 Download unixODBC-2.3.0 and Microsoft ODBC dirver and extract.

sudo wget
tar xvf unixODBC-2.3.0.tar.gz 

tar xvf sqlncli-11.0.1790.0.tar.gz 

 Install the unixodbc using following commands:

./configure --disable-gui --disable-drivers --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE
sudo make install

libssl is required by driver

sudo apt-get install libssl-dev libssl1.0.0 libssl1.0.0-dbg

Make the following symbolic links(first make sure, exist in the path

sudo ln -s /lib/x86_64-linux-gnu/ /usr/lib/
sudo ln -s /lib/x86_64-linux-gnu/ /usr/lib/

Use following command to find out if there are other missing dependency.

ldd sqlncli-11.0.1790.0/lib64/

make sure "/usr/local/lib" is in dynamic linker search path if it is not use the following command to add it temporarily.

sudo ldconfig /usr/local/lib

Almost done:

sudo bash ./ install --force

Try to see if it is working:

sqlcmd -S localhost

If you are using pyodbc, the connection string should be like the following example.


import pyodbc
conn=pyodbc.connect('DRIVER={SQL Server Native Client 11.0};DATABASE=dbnamw;Server=host;UID=username;PWD=password')
curs = conn.cursor()
curs.execute('select name from sysobjects')
print (curs.fetchone())

Tuesday, July 31, 2012

جستجوی املاک روی نقشه برای خرید و فروش و اجاره ، خانه و آپارتمان

دودوتا وب سایت  جستجوی املاک آن لاین با قابلیت های بسیار زیاد از جمله جستجوی پیشرفته املاک روی نقشه و غربال سازی چند بعدی می با شد تمام امکانات این وب سایت رایگان است و کاربر می تواند مستقیما با آگهی دهنده و یا مالک در ارتباط باشد. این وب سایت تمام معاملات املاک از جمله فروش و خرید ، اجاره و رهن، معاوضه و پیش فروش را پشتیبانی می کند همچنین تمام انواع املاک  از جمله: آپارتمان، خانه، ویلا، زمین، مغازه دفتر کار و تمامی انواع مستغلات در دودوتا به طور مجزا قابل جستجو و طبقه بندی است.  

 اگر به دنبال خرید خانه یا آپارتمان ویا اجاره خانه هستید از طریق دودوتا به آسانی میتوانید ملک مورد نظر خود را با جستجو خرید خانه  از روی نقشه بیابید. اگر هم از اینترنت کم سرعت استفاده می کنید بهتر است از خرید یا اجاره خانه  از روی لیست استفاده کنید.

سپردن ملک و درج آگهی در دودوتا کاملا رایگان است. برای فروش آپارتمان و یا خانه می توانید به فروش خانه مراجعه کنید و برای رهن و اجاره خانه  باید به اجاره خانه  بروید.

Thursday, May 24, 2012

Deploying Django 1.3 on IIS using PyISAPIe 64 bit on Python 2.7

I compiled PyISAPIe on Python 2.7.2, 64 bit I have test it myself and it is working.
If also need to use pyodbc in project, download  and use this link "pyodbc-3.0.5 amd64" otherwise on most other versions you will get ImportError. Instruction on how to deploy django on IIS can be found on this post

Installing pyodbc on ubuntu

Installing pyodbc is straight forward but if getting  "error: command 'gcc' failed with exit status 1" when installing pyodbc, make sure you have installed requirements as below.
sudo apt-get install unixODBC-dev g++
pip install pyodbc

Installing Python Imaging Library(PIL) on ubuntu

Install required packages
sudo apt-get install libjpeg8 libjpeg62-dev libfreetype6 libfreetype6-dev python-dev
Fixing the lib path
sudo ln -s /usr/lib/x86_64-linux-gnu/ /usr/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/ /usr/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/ /usr/lib
Install the PIL
pip install pil
If getting "ImportError: No module named PIL" on importing Image module also try
from PIL import Image

If not using virtualenv "$ sudo apt-get install python-imaging" will also install pil for the system.

Wednesday, January 25, 2012

Javascript Memoization Pattern

It happens sometime that you need to cache some data which has produced by a complex operation. Caching data helps you not to do repeat the complex operation. Caching the results of an operation is also known as Memoization. Followings are too example of this pattern.

var setCache = function (param,val) {

       setCache.cache[param] =val;
       return setCache.cache[param];

or you can just save the result of a function inside the  function:

var setCache = function (param) {
       if (!setCache.cache[param]){
          var res;

          //do the complex and heavy operation 
          //here and assign the  result to 'res'

          setCache.cache[param] =res;
       return setCache.cache[param];

Also its possible to serialize the complex structure to string with JSON.

Wednesday, January 4, 2012

Chaining Pattern

With Chaining Pattern you can call object methods one after the others without assigning the result to other variables or break them in multiple statement or lines.

For example:


This pattern is only useful when object functions do not have to special return so, this pattern can  implemented by returning this in each object function.

For example:

var myelm={
        hide: function(second){
                //code for hiding
                 return this;

        fadeIn: function(second){
                //code for fading
                 return this;