<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GauZ&#039;s Weblog</title>
	<atom:link href="http://gauravpandey.com/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://gauravpandey.com/wordpress</link>
	<description>Visualizing Life through Technology!</description>
	<lastBuildDate>Mon, 14 May 2012 21:50:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Restrict date range within DatePicker component</title>
		<link>http://gauravpandey.com/wordpress/?p=550</link>
		<comments>http://gauravpandey.com/wordpress/?p=550#comments</comments>
		<pubDate>Mon, 14 May 2012 21:46:13 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[DatePicker]]></category>
		<category><![CDATA[disable]]></category>
		<category><![CDATA[DisplayDateEnd]]></category>
		<category><![CDATA[DisplayDateStart]]></category>
		<category><![CDATA[range]]></category>
		<category><![CDATA[restrict]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=550</guid>
		<description><![CDATA[So I had a requirement to restrict days in the WPF DatePicker component. Only the days falling within a specific range should be available for selection and all others (past &#38; future values) should be disabled. The solution is to use the DisplayDateStart &#38; DisplayDateEnd properties on the DatePicker &#60;DatePicker Name=&#34;dtPicker&#34; DisplayDateStart=&#34;5/10/2012&#34; DisplayDateEnd=&#34;5/20/2012&#34; /&#62;]]></description>
			<content:encoded><![CDATA[<p align="justify">So I had a requirement to restrict days in the WPF DatePicker component. Only the days falling within a specific range should be available for selection and all others (past &amp; future values) should be disabled.</p>
<p align="justify">The solution is to use the DisplayDateStart &amp; DisplayDateEnd properties on the DatePicker</p>
<p> <span style="font-family: consolas; font-size: 9pt"><span style="color: red"><span style="color: blue">
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">DatePicker</span> <span class="attr">Name</span><span class="kwrd">=&quot;dtPicker&quot;</span>
    <span class="attr">DisplayDateStart</span><span class="kwrd">=&quot;5/10/2012&quot;</span>
    <span class="attr">DisplayDateEnd</span><span class="kwrd">=&quot;5/20/2012&quot;</span> <span class="kwrd">/&gt;</span></pre>
</p>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p></span></span></span></p>
<p><img alt="" src="http://gauravpandey.com/wordpress/wp-content/uploads/2012/05/051412_2145_Restrictdat1.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=550</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>N-dimensional aka N-ary Tree</title>
		<link>http://gauravpandey.com/wordpress/?p=524</link>
		<comments>http://gauravpandey.com/wordpress/?p=524#comments</comments>
		<pubDate>Sun, 13 May 2012 15:06:40 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Caching]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[insert]]></category>
		<category><![CDATA[n-ary]]></category>
		<category><![CDATA[n-dimensional]]></category>
		<category><![CDATA[nary]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[syncfusion]]></category>
		<category><![CDATA[tree]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=524</guid>
		<description><![CDATA[N-dimensional tree is used to represent the UI of any application. Buttons, ComboBoxes and various other components are assembled together in this data structure and then rendered on the screen. I had a requirement to enhance the design of a commercial Tree UI component (add improved searching features) and thought of creating my own n-ary [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">N-dimensional tree is used to represent the UI of any application. Buttons, ComboBoxes and various other components are assembled together in this data structure and then rendered on the screen.</p>
<p align="justify">I had a requirement to enhance the design of a commercial Tree UI component (add improved searching features) and thought of creating my own n-ary Tree data structure to hold the data which will be passed into the Tree UI component.</p>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<pre class="csharpcode"><span class="kwrd">class</span> Node(<span class="kwrd">object</span>):

    def __init__(self, **kwargs):
        self.<span class="kwrd">value</span>      = kwargs.get(<span class="str">'value'</span>)
        self.children   = []

    def __str__(self):
        <span class="kwrd">return</span> <span class="str">'Val: {0} Children: {1}'</span>.format(self.<span class="kwrd">value</span>, self.children)

    def __hash__(self):
        <span class="kwrd">return</span> hash([self.<span class="kwrd">value</span>, self.children])

    __repr__ = __str__

<span class="kwrd">class</span> nAryTree(<span class="kwrd">object</span>):

    def __init__(self):
        self._root = Node()

    def getRoot(self):
        <span class="kwrd">return</span> self._root

    def insert(self, data):
        self._insertValues(data, self._root)

    def _insertValues(self, data, currNode):
        <span class="kwrd">if</span> not data:
            <span class="kwrd">return</span>

        <span class="kwrd">if</span> currNode and not currNode.<span class="kwrd">value</span>:
            tmpChild = None

            <span class="kwrd">for</span> child <span class="kwrd">in</span> currNode.children:
                <span class="kwrd">if</span> data[0] == child.<span class="kwrd">value</span>:
                    tmpChild = child
                    <span class="kwrd">break</span>

            <span class="kwrd">if</span> tmpChild:
                self._insertValues(data, tmpChild)
            <span class="kwrd">else</span>:
                newNode = Node(<span class="kwrd">value</span>=data[0])
                currNode.children.append(newNode)
                self._insertValues(data, newNode)
        <span class="kwrd">else</span>:
            <span class="kwrd">if</span> len(data) &gt; 1:
                tmpChild = None

                <span class="kwrd">for</span> child <span class="kwrd">in</span> currNode.children:
                    <span class="kwrd">if</span> data[1] == child.<span class="kwrd">value</span>:
                        tmpChild = child
                        <span class="kwrd">break</span>

                <span class="kwrd">if</span> tmpChild:
                    self._insertValues(data[1:], tmpChild)
                <span class="kwrd">else</span>:
                    newNode = Node(<span class="kwrd">value</span>=data[1])
                    currNode.children.append(newNode)
                    self._insertValues(data[1:], newNode)

    def show(self):
        self.showContainer = []
        self._showTree(self._root)

    def _showTree(self, currNode):
        <span class="kwrd">if</span> currNode and not currNode.<span class="kwrd">value</span>:
            print <span class="str">'*Root'</span>
        <span class="kwrd">else</span>:
            self.showContainer.append(<span class="str">'--'</span>)
            self.showContainer.append(currNode.<span class="kwrd">value</span>)
            print <span class="str">''</span>.join(self.showContainer)
            self.showContainer.pop()
            self.showContainer.pop()

        <span class="kwrd">if</span> currNode and currNode.children:
            self.showContainer.append(<span class="str">'  |'</span>)
            print <span class="str">''</span>.join(self.showContainer)

        <span class="kwrd">for</span> child <span class="kwrd">in</span> currNode.children:
            self._showTree(child)

        <span class="kwrd">if</span> currNode.children and self.showContainer:
            self.showContainer.pop()

    def deleteNode(self, tgt=<span class="str">''</span>):
        searchContainer = []
        result          = {}
        res             = self._search(self._root, tgt, searchContainer, None, result)
        parentNode      = result.get(<span class="str">'parentNode'</span>)

        <span class="kwrd">for</span> idx <span class="kwrd">in</span> xrange(len(parentNode.children)):
            <span class="kwrd">if</span> parentNode.children[idx].<span class="kwrd">value</span> == tgt:
                del parentNode.children[idx]
                <span class="kwrd">break</span>

        <span class="kwrd">return</span> searchContainer[1:]

    def searchTree(self, tgt=<span class="str">''</span>):
        searchContainer = []
        res             = self._search(self._root, tgt, searchContainer)

        <span class="kwrd">return</span> searchContainer[1:]

    def _search(self, currNode, tgt, path=[], parentNodeOfTgt=None, result={}):
        <span class="kwrd">if</span> (not tgt and tgt.strip()) or not currNode:
            <span class="kwrd">return</span> False

        <span class="kwrd">if</span> currNode.<span class="kwrd">value</span> == tgt:
            path.append(currNode.<span class="kwrd">value</span>)
            result[<span class="str">'parentNode'</span>]    = parentNodeOfTgt
            result[<span class="str">'tgtNode'</span>]       = currNode
            print <span class="str">'Path: {0}'</span>.format(<span class="str">'&gt;'</span>.join(path))

            <span class="kwrd">return</span> True
        <span class="kwrd">else</span>:
            path.append(currNode.<span class="kwrd">value</span> <span class="kwrd">if</span> currNode.<span class="kwrd">value</span> <span class="kwrd">else</span> <span class="str">'Root'</span>)
            <span class="kwrd">for</span> child <span class="kwrd">in</span> currNode.children:
                <span class="kwrd">if</span> self._search(child, tgt, path, currNode, result):
                    <span class="kwrd">return</span> True
            <span class="kwrd">else</span>:
                path.pop()

    def nestedTuples(self):
        data = self._naryToNestedTuples(self._root)
        <span class="kwrd">return</span> data[1] <span class="kwrd">if</span> data <span class="kwrd">else</span> ()

    def _naryToNestedTuples(self, t):
        <span class="kwrd">return</span> (t.<span class="kwrd">value</span>, tuple(map(self._naryToNestedTuples, t.children)), ) <span class="kwrd">if</span> t.children and isinstance(t.children, (tuple, list,)) \
            <span class="kwrd">else</span> t.<span class="kwrd">value</span>

    def nestedLists(self):
        data = self._naryToNestedLists(self._root)
        <span class="kwrd">return</span> data[1] <span class="kwrd">if</span> data <span class="kwrd">else</span> []

    def _naryToNestedLists(self, t):
        <span class="kwrd">return</span> [t.<span class="kwrd">value</span>, map(self._naryToNestedLists, t.children)] <span class="kwrd">if</span> t.children and isinstance(t.children, (tuple, list,)) \
            <span class="kwrd">else</span> t.<span class="kwrd">value</span>

def main():
    tree = nAryTree()
    tree.insert((<span class="str">'A'</span>, <span class="str">'B'</span>, <span class="str">'C'</span>, <span class="str">'D'</span>,))
    tree.insert((<span class="str">'A'</span>, <span class="str">'B'</span>, <span class="str">'C'</span>, <span class="str">'E'</span>,))
    tree.insert((<span class="str">'A'</span>, <span class="str">'B'</span>, <span class="str">'F'</span>, <span class="str">'X'</span>,))
    tree.insert((<span class="str">'A'</span>, <span class="str">'B'</span>, <span class="str">'C'</span>, <span class="str">'Y'</span>,))
    tree.show()

    print <span class="str">'\nSearch result for {0}: {1}\n\n'</span>.format(<span class="str">'X'</span>, tree.searchTree(<span class="str">'X'</span>))

    print <span class="str">'Accounting Organizational Structure'</span>
    # http:<span class="rem">//www.chesterfield.gov/uploadedImages/Department_Information/Management_Services/Accounting/Media/Images/Accounting%20Organizational%20Structure.jpg?n=5909</span>
    tree2 = nAryTree()
    tree2.insert((<span class="str">'Director'</span>,))
    tree2.insert((<span class="str">'Director'</span>, <span class="str">'Financial Services &amp; Grants Coordinators'</span>,))
    tree2.insert((<span class="str">'Director'</span>, <span class="str">'Assistant Director-I'</span>,))
    tree2.insert((<span class="str">'Director'</span>, <span class="str">'Assistant Director-I'</span>, <span class="str">'Financial Systems Section'</span>,))
    tree2.insert((<span class="str">'Director'</span>, <span class="str">'Assistant Director-I'</span>, <span class="str">'General Accounting Section'</span>,))
    tree2.insert((<span class="str">'Director'</span>, <span class="str">'Assistant Director-II'</span>,))
    tree2.insert((<span class="str">'Director'</span>, <span class="str">'Assistant Director-II'</span>, <span class="str">'Accounts Payable Section'</span>,))
    tree2.insert((<span class="str">'Director'</span>, <span class="str">'Assistant Director-II'</span>, <span class="str">'Payroll Section'</span>,))
    tree2.insert((<span class="str">'Director'</span>, <span class="str">'Assistant Director-II'</span>, <span class="str">'Administration Section'</span>,))
    tree2.show()

    print <span class="str">'\nSearch result for {0}: {1}\n\n'</span>.format(<span class="str">'Payroll Section'</span>, tree2.searchTree(<span class="str">'Payroll Section'</span>))
    raw_input()

<span class="kwrd">if</span> __name__ == <span class="str">'__main__'</span>:
    main()</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Output &gt;&gt;</p>
<pre class="csharpcode">*Root
  |
  |--A
  |  |
  |  |--B
  |  |  |
  |  |  |--C
  |  |  |  |
  |  |  |  |--D
  |  |  |  |--E
  |  |  |  |--Y
  |  |  |--F
  |  |  |  |
  |  |  |  |--X
Path: Root&gt;A&gt;B&gt;F&gt;X

Search result <span class="kwrd">for</span> X: [<span class="str">'A'</span>, <span class="str">'B'</span>, <span class="str">'F'</span>, <span class="str">'X'</span>]

Accounting Organizational Structure
*Root
  |
  |--Director
  |  |
  |  |--Financial Services &amp; Grants Coordinators
  |  |--Assistant Director-I
  |  |  |
  |  |  |--Financial Systems Section
  |  |  |--General Accounting Section
  |  |--Assistant Director-II
  |  |  |
  |  |  |--Accounts Payable Section
  |  |  |--Payroll Section
  |  |  |--Administration Section
Path: Root&gt;Director&gt;Assistant Director-II&gt;Payroll Section

Search result <span class="kwrd">for</span> Payroll Section: [<span class="str">'Director'</span>, <span class="str">'Assistant Director-II'</span>, <span class="str">'Payroll Section'</span>]</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=524</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Achieving optimal performance in code</title>
		<link>http://gauravpandey.com/wordpress/?p=515</link>
		<comments>http://gauravpandey.com/wordpress/?p=515#comments</comments>
		<pubDate>Sat, 12 May 2012 15:07:00 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[Assembly]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[efficient]]></category>
		<category><![CDATA[faster]]></category>
		<category><![CDATA[JUMP_IF_FALSE]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[machine]]></category>
		<category><![CDATA[optimal]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=515</guid>
		<description><![CDATA[Is there any difference between the following two expressions\statements? def func1(a): return a == 'TRUE' def func2(a): return True if a == 'TRUE' else False Well, both of them do the same thing but interestingly, the former one is faster in terms of performance by atleast one CPU cycle! Let’s tear into assembly language of [...]]]></description>
			<content:encoded><![CDATA[<p>Is there any difference between the following two expressions\statements?</p>
<pre class="csharpcode">def func1(a):
    <span class="kwrd">return</span> a == <span class="str">'TRUE'</span></pre>
<pre class="csharpcode">def func2(a):
    <span class="kwrd">return</span> True <span class="kwrd">if</span> a == <span class="str">'TRUE'</span> <span class="kwrd">else</span> False</pre>
<p align="justify">Well, both of them do the same thing but interestingly, the former one is faster in terms of performance by atleast one CPU cycle! Let’s tear into assembly language of each of these funcs to see the real difference …. <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://gauravpandey.com/wordpress/wp-content/uploads/2012/05/wlEmoticon-smile.png" /></p>
<p>Assembly of Func1 &gt;&gt;</p>
<pre class="csharpcode">  2           0 LOAD_FAST                0 (a)
              3 LOAD_CONST               1 (<span class="str">'TRUE'</span>)
              6 COMPARE_OP               2 (==)
              9 RETURN_VALUE</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Assembly of Func2 &gt;&gt;</p>
<pre class="csharpcode">  2           0 LOAD_FAST                0 (a)
              3 LOAD_CONST               1 (<span class="str">'TRUE'</span>)
              6 COMPARE_OP               2 (==)
              9 JUMP_IF_FALSE            5 (to 17)
             12 POP_TOP
             13 LOAD_GLOBAL              0 (True)
             16 RETURN_VALUE
             17 POP_TOP
             18 LOAD_GLOBAL              1 (False)
             21 RETURN_VALUE</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>JUMP_IF_FALSE evaluation takes the extra cpu cycle in this case.</p>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=515</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logging in Java, C# and Python</title>
		<link>http://gauravpandey.com/wordpress/?p=509</link>
		<comments>http://gauravpandey.com/wordpress/?p=509#comments</comments>
		<pubDate>Fri, 11 May 2012 15:08:00 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[log4net]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[module]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=509</guid>
		<description><![CDATA[In Java &#38; C#, the most commonly used logging utilities are log4j and log4net. Python has it’s own inbuilt logging module which includes the exact same features as other log4X brethren! Setting up logging module in python &#62;&#62; import logging def initLogger(appName='Application', handlerType='StreamHandler', \ loggerLevel='INFO', handlerLevel='DEBUG'): ''' * There are many handler types available such [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">In Java &amp; C#, the most commonly used logging utilities are log4j and log4net. Python has it’s own inbuilt logging module which includes the exact same features as other log4X brethren!</p>
<p align="justify">Setting up logging module in python &gt;&gt;</p>
<pre class="csharpcode">import logging

def initLogger(appName=<span class="str">'Application'</span>, handlerType=<span class="str">'StreamHandler'</span>, \
    loggerLevel=<span class="str">'INFO'</span>, handlerLevel=<span class="str">'DEBUG'</span>):
    <span class="str">''</span><span class="str">'
        * There are many handler types available such as &gt;&gt;
            StreamHandler
            FileHandler
            RotatingFileHandler
            TimedRotatingFileHandler
            SocketHandler
            DatagramHandler
            SysLogHandler
            NTEventLogHandler
            SMTPHandler
            MemoryHandler
            HTTPHandler

            You may have to customize this func to use other handlers.

        * Many levels available such as &gt;&gt;
            debug
            info
            warning
            error
            critical
    '</span><span class="str">''</span>
    # Creating the logger <span class="kwrd">object</span>
    log = logging.getLogger(appName)
    log.setLevel(getattr(logging, loggerLevel))

    # Initializing logging settings <span class="kwrd">in</span> handler
    handler = getattr(logging, handlerType)()
    handler.setLevel(getattr(logging, handlerLevel))
    handler.setFormatter(logging.Formatter(
        <span class="str">'%(asctime)s - %(name)s - %(levelname)s - %(message)s'</span>))

    # binding the handler to Logger <span class="kwrd">object</span>
    log.addHandler(handler)

    <span class="kwrd">return</span> log

def main():
    logger = initLogger(<span class="str">'Test App'</span>)
    logger.info(<span class="str">'Hello World!'</span>)

    raw_input()

<span class="kwrd">if</span> __name__ == <span class="str">'__main__'</span>:
    main()</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>More information found at &gt;&gt; <a title="http://onlamp.com/pub/a/python/2005/06/02/logging.html" href="http://onlamp.com/pub/a/python/2005/06/02/logging.html">http://onlamp.com/pub/a/python/2005/06/02/logging.html</a></p>
<p>Setting up logger in C# &gt;&gt;</p>
<p align="justify">You’ll need to create a configuration file (similar to the one below) and then define a logger instance in Code mapped to the configuration.</p>
<p>More information can be found &gt;&gt; <a title="http://logging.apache.org/log4net/release/manual/configuration.html" href="http://logging.apache.org/log4net/release/manual/configuration.html">http://logging.apache.org/log4net/release/manual/configuration.html</a></p>
<pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">=&quot;1.0&quot;</span> <span class="attr">encoding</span><span class="kwrd">=&quot;utf-8&quot;</span> ?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">configuration</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">configSections</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">section</span> <span class="attr">name</span><span class="kwrd">=&quot;log4net&quot;</span>
       <span class="attr">type</span><span class="kwrd">=&quot;log4net.Config.Log4NetConfigurationSectionHandler, log4net&quot;</span> <span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">configSections</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">log4net</span><span class="kwrd">&gt;</span>

    <span class="kwrd">&lt;</span><span class="html">appender</span> <span class="attr">name</span><span class="kwrd">=&quot;LogFileAppender&quot;</span> <span class="attr">type</span><span class="kwrd">=&quot;log4net.Appender.RollingFileAppender&quot;</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;File&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;c:\LogTest2.txt&quot;</span> <span class="kwrd">/&gt;</span>

      <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;AppendToFile&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;true&quot;</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;rollingStyle&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;Size&quot;</span> <span class="kwrd">/&gt;</span>

      <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;maxSizeRollBackups&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;10&quot;</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;maximumFileSize&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;10MB&quot;</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;staticLogFileName&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;true&quot;</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">layout</span> <span class="attr">type</span><span class="kwrd">=&quot;log4net.Layout.PatternLayout&quot;</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;ConversionPattern&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;%d [%t] %-5p %c %m%n&quot;</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;/</span><span class="html">layout</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">appender</span><span class="kwrd">&gt;</span>

    <span class="kwrd">&lt;</span><span class="html">appender</span> <span class="attr">name</span><span class="kwrd">=&quot;ConsoleAppender&quot;</span> <span class="attr">type</span><span class="kwrd">=&quot;log4net.Appender.ConsoleAppender&quot;</span> <span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">layout</span> <span class="attr">type</span><span class="kwrd">=&quot;log4net.Layout.PatternLayout&quot;</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;Header&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;[Header]\r\n&quot;</span> <span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;Footer&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;[Footer]\r\n&quot;</span> <span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">param</span> <span class="attr">name</span><span class="kwrd">=&quot;ConversionPattern&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;%d [%t] %-5p %c %m%n&quot;</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;/</span><span class="html">layout</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">appender</span><span class="kwrd">&gt;</span>

    <span class="kwrd">&lt;</span><span class="html">root</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">level</span> <span class="attr">value</span><span class="kwrd">=&quot;ALL&quot;</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">appender-ref</span> <span class="attr">ref</span><span class="kwrd">=&quot;LogFileAppender&quot;</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">appender-ref</span> <span class="attr">ref</span><span class="kwrd">=&quot;ConsoleAppender&quot;</span> <span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">root</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">log4net</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">configuration</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=509</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing a Stack in python</title>
		<link>http://gauravpandey.com/wordpress/?p=528</link>
		<comments>http://gauravpandey.com/wordpress/?p=528#comments</comments>
		<pubDate>Thu, 10 May 2012 15:24:00 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[data structure]]></category>
		<category><![CDATA[Extend]]></category>
		<category><![CDATA[iter]]></category>
		<category><![CDATA[List]]></category>
		<category><![CDATA[peek]]></category>
		<category><![CDATA[push]]></category>
		<category><![CDATA[stack]]></category>
		<category><![CDATA[tos]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=528</guid>
		<description><![CDATA[To implement a Stack in python, we simply need to extend the existing list class! class Stack(list): def push(self, data): self.append(data) def tos(self): if self: return self[-1] def peek(self, index): if self and 0 &#60;= index &#60; len(self): return self[index] def __iter__(self): if self: ptr = len(self) - 1 while ptr &#62;= 0: yield self[ptr] [...]]]></description>
			<content:encoded><![CDATA[<p>To implement a Stack in python, we simply need to extend the existing list class! <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://gauravpandey.com/wordpress/wp-content/uploads/2012/05/wlEmoticon-winkingsmile.png" /></p>
<pre class="csharpcode"><span class="kwrd">class</span> Stack(list):

    def push(self, data):
        self.append(data)

    def tos(self):
        <span class="kwrd">if</span> self:
            <span class="kwrd">return</span> self[-1]

    def peek(self, index):
        <span class="kwrd">if</span> self and 0 &lt;= index &lt; len(self):
            <span class="kwrd">return</span> self[index]

    def __iter__(self):
        <span class="kwrd">if</span> self:
            ptr = len(self) - 1
            <span class="kwrd">while</span> ptr &gt;= 0:
                <span class="kwrd">yield</span> self[ptr]
                ptr -= 1

def main():
    st = Stack()
    st.push(10)
    st.push(20)
    st.push(30)
    st.push(40)
    st.push(50)

    <span class="kwrd">for</span> x, y <span class="kwrd">in</span> enumerate(st):
        print <span class="str">'Index: {0} Value: {1}'</span>.format(x, y)

    print <span class="str">'\nTop of Stack: '</span>, st.tos()

    print <span class="str">'\n'</span>
    <span class="kwrd">for</span> x <span class="kwrd">in</span> xrange(6):
        print <span class="str">'Deleting '</span>, st.pop()
        # will <span class="kwrd">throw</span> exception <span class="kwrd">in</span> the last iteration since only 5 items are <span class="kwrd">in</span> stack

    raw_input()

<span class="kwrd">if</span> __name__ == <span class="str">'__main__'</span>: main()</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Output &gt;&gt;</p>
<pre class="csharpcode">Index: 0 Value: 50
Index: 1 Value: 40
Index: 2 Value: 30
Index: 3 Value: 20
Index: 4 Value: 10

Top of Stack:  50

Deleting  50
Deleting  40
Deleting  30
Deleting  20
Deleting  10
IndexError: pop from empty list
Press any key to <span class="kwrd">continue</span> . . .</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=528</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iterating over a custom &#8216;Jagged Array&#8217; in Python</title>
		<link>http://gauravpandey.com/wordpress/?p=535</link>
		<comments>http://gauravpandey.com/wordpress/?p=535#comments</comments>
		<pubDate>Tue, 08 May 2012 18:34:00 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[dimensional]]></category>
		<category><![CDATA[generator]]></category>
		<category><![CDATA[getnext]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[hasnext]]></category>
		<category><![CDATA[iter]]></category>
		<category><![CDATA[iterator]]></category>
		<category><![CDATA[jagged]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[multi]]></category>
		<category><![CDATA[next]]></category>
		<category><![CDATA[traversal]]></category>
		<category><![CDATA[traverse]]></category>
		<category><![CDATA[yield]]></category>
		<category><![CDATA[__iter__]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=535</guid>
		<description><![CDATA[A jagged array is an array whose elements are arrays. The elements of a jagged array can be of different dimensions and sizes. A jagged array is sometimes called an &#34;array of arrays.&#34; C# natively differentiates between a jagged and a multidimensional array. To iterate over a every single element of a Jagged Array in [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">A jagged array is an array whose elements are arrays. The elements of a jagged array can be of different dimensions and sizes. A jagged array is sometimes called an &quot;array of arrays.&quot; C# natively differentiates between a jagged and a multidimensional array.</p>
<p align="justify">To iterate over a every single element of a Jagged Array in Python, you will need to override the default iterator func. I’m simply iterating over 2-levels but you can scale this up to n-levels by using conventional graph traversal algorithms.</p>
<pre class="csharpcode"><span class="kwrd">class</span> JaggedArray(list):
    <span class="str">''</span><span class="str">' An array of arrays! '</span><span class="str">''</span>

    def __iter__(self):
        <span class="kwrd">if</span> self:
            ptr     = len(self) - 1
            count   = 0

            <span class="kwrd">while</span> count &lt;= ptr:
                item = self[count]

                <span class="kwrd">if</span> isinstance(item, (tuple, list,)):
                    newPtr      = len(item) - 1
                    newCount    = 0

                    <span class="kwrd">while</span> newCount &lt;= newPtr:
                        newItem = item[newCount]
                        <span class="kwrd">yield</span> newItem
                        newCount += 1
                <span class="kwrd">else</span>:
                    <span class="kwrd">yield</span> item

                count += 1

def main():
    obj = JaggedArray()
    obj.append((1, 2, 3,))
    obj.append([4, 5, 6, 7])
    obj.append((8, 9,))

    <span class="kwrd">for</span> item <span class="kwrd">in</span> obj:
        print item,

    raw_input()

<span class="kwrd">if</span> __name__ == <span class="str">'__main__'</span>:
    main()</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Output &gt;&gt;</p>
<pre class="csharpcode">1 2 3 4 5 6 7 8 9</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=535</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go Avengers!!!</title>
		<link>http://gauravpandey.com/wordpress/?p=503</link>
		<comments>http://gauravpandey.com/wordpress/?p=503#comments</comments>
		<pubDate>Sun, 06 May 2012 00:18:19 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[Kaleidoscope]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=503</guid>
		<description><![CDATA[Wow, I&#8217;m glad I saw this movie yesterday!]]></description>
			<content:encoded><![CDATA[<p>Wow, I&#8217;m glad I saw this movie yesterday! <img src='http://gauravpandey.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/h0a7j2Eyi9o" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=503</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>read(), readline(), readlines() &amp; xreadlines() func in Python</title>
		<link>http://gauravpandey.com/wordpress/?p=507</link>
		<comments>http://gauravpandey.com/wordpress/?p=507#comments</comments>
		<pubDate>Sat, 28 Apr 2012 23:40:00 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[dat]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[line]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[read]]></category>
		<category><![CDATA[readline]]></category>
		<category><![CDATA[readlines]]></category>
		<category><![CDATA[xreadline]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=507</guid>
		<description><![CDATA[While doing a regression analysis, I had to read &#38; parse through a large .dat file. I called readline() func but was surprised to see that I was actually iterating through every single character in the first line! with open(filePath, 'r') as f: for line in f.readline(): print line Then realization dawned upon me! * [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">While doing a regression analysis, I had to read &amp; parse through a large .dat file. I called readline() func but was surprised to see that I was actually iterating through every single character in the first line!</p>
<pre class="csharpcode">with open(filePath, <span class="str">'r'</span>) <span class="kwrd">as</span> f:
    <span class="kwrd">for</span> line <span class="kwrd">in</span> f.readline():
        print line</pre>
<p>Then realization dawned upon me!</p>
<p>* read(size) &gt;&gt; size is an optional numeric argument and this func returns a quantity of data equal to size. If size if omitted, then it reads the entire file and returns it</p>
<p>* readline() &gt;&gt; reads a single line from file with newline at the end</p>
<p>* readlines() &gt;&gt; returns a list containing all the lines in the file</p>
<p>* xreadlines() &gt;&gt; Returns a generator to loop over every single line in the file</p>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=507</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convert vowels to uppercase in a string</title>
		<link>http://gauravpandey.com/wordpress/?p=498</link>
		<comments>http://gauravpandey.com/wordpress/?p=498#comments</comments>
		<pubDate>Tue, 24 Apr 2012 23:33:00 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[capitalize]]></category>
		<category><![CDATA[clean]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[stringbuilder]]></category>
		<category><![CDATA[translate]]></category>
		<category><![CDATA[uppercase]]></category>
		<category><![CDATA[vowel]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=498</guid>
		<description><![CDATA[Given a string – say “hello world”, I was interested in capitalizing the vowels in it – IN A CLEAN &#38; EFFICIENT WAY! In the first approach, I use a StringBuilder object to hold the intermediate String while in the second approach, I’m using a C# feature – Linq. In the second approach, there is [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Given a string – say “hello world”, I was interested in capitalizing the vowels in it – IN A CLEAN &amp; EFFICIENT WAY! </p>
<p align="justify">In the first approach, I use a StringBuilder object to hold the intermediate String while in the second approach, I’m using a C# feature – Linq. In the second approach, there is no lazy initialization taking place because we call the toArray() immediately &amp; pass the contents to the String constructor. Looks a lot cleaner! Third approach is simply the best but it’s in Python!</p>
<p>First approach &gt;&gt;</p>
<pre class="csharpcode">    <span class="kwrd">class</span> Program
    {
        <span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)
        {
            Console.WriteLine(<span class="str">&quot;Output: {0}&quot;</span>, CapitalizeWords(<span class="str">&quot;hello World&quot;</span>));
            Console.ReadLine();
        }

        <span class="kwrd">static</span> <span class="kwrd">string</span> CapitalizeWords(<span class="kwrd">string</span> input)
        {
            <span class="kwrd">if</span> (<span class="kwrd">string</span>.IsNullOrEmpty(input))
                <span class="kwrd">return</span> <span class="kwrd">string</span>.Empty;

            var sb = <span class="kwrd">new</span> StringBuilder();
            var lookup = <span class="kwrd">new</span> HashSet&lt;Char&gt;() {<span class="str">'a'</span>, <span class="str">'e'</span>, <span class="str">'i'</span>, <span class="str">'o'</span>, <span class="str">'u'</span>};
            <span class="kwrd">foreach</span> (var x <span class="kwrd">in</span> input)
                sb.Append(lookup.Contains(x) ?
                    Char.ToUpper(x) : x);

            <span class="kwrd">return</span> sb.ToString();
        }
    }</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Second approach &gt;&gt; much cleaner version using Linq!</p>
<pre class="csharpcode">    <span class="kwrd">class</span> Program
    {
        <span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)
        {
            Console.WriteLine(<span class="str">&quot;Output: {0}&quot;</span>, CapitalizeWords(<span class="str">&quot;hello World&quot;</span>));
            Console.ReadLine();
        }

        <span class="kwrd">static</span> <span class="kwrd">string</span> CapitalizeWords(<span class="kwrd">string</span> input)
        {
            <span class="kwrd">if</span> (<span class="kwrd">string</span>.IsNullOrEmpty(input))
                <span class="kwrd">return</span> <span class="kwrd">string</span>.Empty;

            var lookup = <span class="kwrd">new</span> HashSet&lt;Char&gt;() {<span class="str">'a'</span>, <span class="str">'e'</span>, <span class="str">'i'</span>, <span class="str">'o'</span>, <span class="str">'u'</span>};
            <span class="kwrd">return</span> <span class="kwrd">new</span> String(input.Select(x =&gt; lookup.Contains(x) ?
                Char.ToUpper(x) : x).ToArray());
        }
    }</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Third approach &gt;&gt; Python takes the cake!</p>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<pre class="csharpcode">from <span class="kwrd">string</span> import maketrans

def main():
    s = <span class="str">'hello world'</span>
    print <span class="str">'Output: {0}'</span>.format(s.translate(maketrans(<span class="str">'aeiou'</span>, <span class="str">'AEIOU'</span>)))</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=498</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error	1 error LNK1104: cannot open file </title>
		<link>http://gauravpandey.com/wordpress/?p=491</link>
		<comments>http://gauravpandey.com/wordpress/?p=491#comments</comments>
		<pubDate>Mon, 23 Apr 2012 18:16:16 +0000</pubDate>
		<dc:creator>GauZ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gauravpandey.com/wordpress/?p=491</guid>
		<description><![CDATA[I had a similar issue few years back The same solution helped me in this case as well. You simply have to turn on &#8216;Application Experience&#8217; feature under services.msc to get rid of the error!]]></description>
			<content:encoded><![CDATA[<p>I had a similar <a href="http://gauravpandey.com/wordpress/?p=291">issue</a> few years back </p>
<p>The same solution helped me in this case as well. You simply have to turn on &#8216;Application Experience&#8217; feature under services.msc to get rid of the error!</p>
]]></content:encoded>
			<wfw:commentRss>http://gauravpandey.com/wordpress/?feed=rss2&#038;p=491</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

