-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
401 lines (298 loc) · 24.2 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><![CDATA[Coding, Design and Agile Processes]]></title>
<link href="http://rendykstan.github.com/atom.xml" rel="self"/>
<link href="http://rendykstan.github.com/"/>
<updated>2013-04-05T18:53:24+08:00</updated>
<id>http://rendykstan.github.com/</id>
<author>
<name><![CDATA[Rendy Tan]]></name>
</author>
<generator uri="http://octopress.org/">Octopress</generator>
<entry>
<title type="html"><![CDATA[Postgresql Vacuum and Analyze, Maintenance and Performance]]></title>
<link href="http://rendykstan.github.com/blog/2013/04/04/postgresql-vacuum-and-analyze-maintenance-and-performance/"/>
<updated>2013-04-04T23:18:00+08:00</updated>
<id>http://rendykstan.github.com/blog/2013/04/04/postgresql-vacuum-and-analyze-maintenance-and-performance</id>
<content type="html"><![CDATA[<p>I have been using Postgresql for a couple of years now and I am very happy with its performance and growth as a open source relational database. Today I will like to share with you how Vacuum and Analyze can help your database perform better.</p>
<p><a href="http://www.postgresql.org/docs/9.1/static/sql-vacuum.html">VACUUM</a> frees the disk space occupied by your database deletes and updates. When you delete or update a record in your table, it does not get removed and it remains until a VACUUM is done. For frequently-updated tables, VACUUM is highly recommended.</p>
<p><a href="http://www.postgresql.org/docs/9.1/static/sql-analyze.html">ANALYZE</a> helps improve your queries by collecting statistics about the contents of tables in the database. The results of the analysis are stored in the <em>pg_statistic</em> system catalog. With these statistics, the query planner use it to determine the most efficient execution plans, thus improve the performance of your queries.</p>
<!-- more -->
<p>During routine maintenance, VACUUM ANALYZE are used together to free up storage and improve the performance of your queries.</p>
<p>VACUUM FULL ANALYZE is recommended for tables that have just went through a bulk delete or update. Do note that when you run VACUUM FULL, the affected tables will be locked until the process is done and extra storage space is required as a temp store. Normal VACUUM do not lock the tables, but does has its overheads while running along side a live database.</p>
<p><a href="http://www.postgresql.org/docs/9.1/static/routine-vacuuming.html#AUTOVACUUM">The Autovacuum Daemon</a> is turned on by default and it is optimized to suit most scenarios. The daemon determines if the table requires VACUUM or ANALYZE or BOTH and run it in the background. Even though it is turned on, you will noticed that tables with lesser records are not part of the Autovacuum and Autoanalyze routine.</p>
<p>How do we know?</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>SELECT relname, last_analyze, last_vacuum, last_autoanalyze, last_autovacuum FROM pg_stat_all_tables
</span><span class='line'>WHERE schemaname = 'public'
</span><span class='line'>ORDER BY relname;</span></code></pre></td></tr></table></div></figure>
<p>Here is the python script that VACUUM ANALYZE the tables not covered by the daemon. You can set the number of days you want to check if Postgresql has already done a Autovacuum.</p>
<div><script src='https://gist.github.com/5318027.js?file=vacuum_analyze.py'></script>
<noscript><pre><code>#!/usr/bin/python
import psycopg2
import sys
con = None
query = ''
try:
if len(sys.argv) == 6:
host = sys.argv[1]
database = sys.argv[2]
user = sys.argv[3]
password = sys.argv[4]
days = sys.argv[5]
con = psycopg2.connect(host=host, database=database, user=user, password=password)
cur = con.cursor()
cur.execute('SELECT relname ' +
'FROM pg_stat_all_tables ' +
"WHERE schemaname = 'public' " +
'AND ((last_analyze is NULL ' +
'AND last_autoanalyze is NULL)' +
'OR ((last_analyze < last_autoanalyze OR last_analyze is null) ' +
"AND last_autoanalyze < now() - interval %s) " +
'OR ((last_autoanalyze < last_analyze OR last_autoanalyze is null) ' +
"AND last_analyze < now() - interval %s));", [days + ' day', days + ' day'])
rows = cur.fetchall()
con.set_isolation_level(0)
for row in rows:
query = 'VACUUM ANALYZE %s;' % (row[0])
cur.execute(query)
else:
print 'This script needs 5 arguments [host] [database] [user] [password] [days]'
except psycopg2.DatabaseError, e:
print 'Error: %s' % e
sys.exit(1)
finally:
if con:
con.close()</code></pre></noscript></div>
<p>Schedule the python script to run at 4am (low peak) using Crontab.</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$crontab -e
</span><span class='line'>00 04 * * * /python/path/python /script/path/vacuum_analyze.py [host] [database] [user] [password] [days]</span></code></pre></td></tr></table></div></figure>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Exploring Leveldb embedded database with Python Part 1]]></title>
<link href="http://rendykstan.github.com/blog/2013/03/28/exploring-leveldb-embedded-database-with-python-part-1/"/>
<updated>2013-03-28T00:25:00+08:00</updated>
<id>http://rendykstan.github.com/blog/2013/03/28/exploring-leveldb-embedded-database-with-python-part-1</id>
<content type="html"><![CDATA[<p>I got to know about <a href="https://code.google.com/p/leveldb/">LevelDB</a> from the guys of <a href="http://nodeup.com/">Nodeup</a>, a podcast program for node.js and they shared load of goodness about the project and it really got me excited to start exploring. You can heard the podcast <a href="http://nodeup.com/fortyone">here</a>. In short, <a href="http://google-opensource.blogspot.sg/2011/07/leveldb-fast-persistent-key-value-store.html">LevelDB</a> is an open source on-disk key-value store written by <a href="https://plus.google.com/118227548810368513262/about">Jeffrey Dean</a> and <a href="https://plus.google.com/105332691637769400620/about">Sanjay Ghemawat</a> of Google.</p>
<!-- more -->
<p>Check out the <a href="http://leveldb.googlecode.com/svn/trunk/doc/benchmark.html">benchmarks</a>. LevelDB performs very well for sequential writes, bulk reads and writes. Not as good for random reads.</p>
<p><a href="http://basho.com/riak/">Riak</a> another on-disk key-value database adopted LevelDB through <a href="https://github.com/basho/eleveldb">ElevelDB</a> as an alternative storage engine.</p>
<p>Now let’s get our hands dirty!</p>
<p><a href="https://code.google.com/p/leveldb/downloads/list">Download</a> LevelDB and follow the commands below for installation. <em>Do note that the installation location is not specified</em>.</p>
<figure class='code'><figcaption><span>Install LevelDB</span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ make
</span><span class='line'>$ sudo cp libleveldb.a /usr/local/lib
</span><span class='line'>$ sudo cp -r include/leveldb /usr/local/include</span></code></pre></td></tr></table></div></figure>
<p><a href="https://github.com/wbolster/plyvel">Plyvel</a> is the python wrapper for LevelDB and it is very well <a href="https://plyvel.readthedocs.org/">documented</a>.</p>
<figure class='code'><figcaption><span>Install Plyvel</span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ sudo apt-get install libleveldb1 libleveldb-dev
</span><span class='line'>$ pip install plyvel
</span><span class='line'>$ python -c 'import plyvel'</span></code></pre></td></tr></table></div></figure>
<p>With a couple of lines you can create the DB, write a record, retrieve it and print it out.</p>
<figure class='code'><figcaption><span>test_script.py </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='py'><span class='line'><span class="kn">import</span> <span class="nn">plyvel</span>
</span><span class='line'><span class="n">db</span> <span class="o">=</span> <span class="n">plyvel</span><span class="o">.</span><span class="n">DB</span><span class="p">(</span><span class="s">'/tmp/hello_world/'</span><span class="p">,</span> <span class="n">create_if_missing</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
</span><span class='line'><span class="n">key</span> <span class="o">=</span> <span class="s">'hello world'</span>
</span><span class='line'><span class="n">db</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">b</span><span class="s">'<html><body><h1>Hello World</h1></body></html>'</span><span class="p">)</span>
</span><span class='line'><span class="k">print</span> <span class="n">db</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
</span></code></pre></td></tr></table></div></figure>
<p>As you can see LevelDB is a very modular, it can be coupled with other technologies to handle different storage needs.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Install Android USB driver on Windows 8]]></title>
<link href="http://rendykstan.github.com/blog/2013/03/20/install-android-usb-driver-on-windows-8/"/>
<updated>2013-03-20T23:29:00+08:00</updated>
<id>http://rendykstan.github.com/blog/2013/03/20/install-android-usb-driver-on-windows-8</id>
<content type="html"><![CDATA[<p>With a broken power button on my Nexus S running Jelly Bean, the only way I can do a screen capture for the app we are releasing to the play store is to use Dalvik Debug Monitor Server (DDMS) tool in the Android SDK.</p>
<p>In the latest Android SDK, Google deprecated DDMS and introduced a new tool call Monitor as a replacement. Enabling “USB Debugging” on my Nexus S, it fails to show up on the device list.</p>
<!-- more -->
<p>After some troubleshooting, we found out that the problem is because of a missing usb driver that I need to install on Windows 8. Here comes the problem. Windows is unable to search for a suitable driver online. The Samsung USB driver is only for Windows 7 and below. There are complex solutions that are more than a page long and many brick their phones trying.</p>
<p><strong>The solution:</strong></p>
<blockquote><p>If your device is one of the Android Developer Phones (ADP), a Nexus One, or a Nexus S, then you need the Google USB Driver, instead of an OEM driver. The Galaxy Nexus driver, however, is distributed by Samsung (listed as model SCH-I515).</p><footer><strong>developer.android.com</strong> <cite><a href='http://developer.android.com/tools/extras/oem-usb.html'>OEM USB Drivers</a></cite></footer></blockquote>
<p><strong>How to install the driver on Windows 8:</strong></p>
<ol>
<li>Connect your Android-powered device to your computer’s USB port.</li>
<li>Right-click on Computer from your desktop or Windows Explorer, and select Properties.</li>
<li>Select Device Manager in the left pane.</li>
<li>Locate and expand Other device in the list.</li>
<li>Right-click the device name (such as Nexus S) and select Update Driver Software. This will launch the Hardware Update Wizard.</li>
<li>Select Browse my computer for driver software and click Next.</li>
<li>Click Browse and locate the USB driver folder. (The Google USB Driver is located in \extras\google\usb_driver.)</li>
<li>Click Next to install the driver.</li>
</ol>
<p>After installing the driver, Nexus S will appear in the device list.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Remove trailing dot in domain name]]></title>
<link href="http://rendykstan.github.com/blog/2013/03/19/remove-trailing-dot-in-domain-name/"/>
<updated>2013-03-19T21:26:00+08:00</updated>
<id>http://rendykstan.github.com/blog/2013/03/19/remove-trailing-dot-in-domain-name</id>
<content type="html"><![CDATA[<p>Yesterday, I read an <a href="http://saynt2day.blogspot.ru/2013/03/danger-of-trailing-dot-in-domain-name.html">article</a> talking about <a href="http://en.wikipedia.org/wiki/Fully_qualified_domain_name">fully qualified domain names</a> and its possible issues. Each domain name in fact has a dot at the end. The internet browser can either load rendykstan.github.com or <a href="http://rendykstan.github.com.">rendykstan.github.com.</a>. As you can see rendykstan.github.com. loads a 404.</p>
<!-- more -->
<p>The workaround introduced by the article requires you to have some knowledge in configuring Apache and enabling mod_rewrite.</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>ravi@taraka:~$ sudo a2enmod rewrite
</span><span class='line'>Enabling module rewrite.
</span><span class='line'>Run '/etc/init.d/apache2 restart' to activate new configuration!
</span><span class='line'>ravi@taraka:~$ sudo service apache2 restart
</span><span class='line'> * Restarting web server apache2 ... waiting . [ OK ]</span></code></pre></td></tr></table></div></figure>
<p>If you are like me, uses a vhost. You will need to go to the <em>sites-available</em> directory to locate your vhost file and add the block of code below under your vhost. Change <em>google</em> to your domain.</p>
<figure class='code'><figcaption><span>/etc/apache2/sites-available/vhost</span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>Options +FollowSymLinks
</span><span class='line'>RewriteEngine on
</span><span class='line'>RewriteCond %{HTTP_HOST} !^google\.com$
</span><span class='line'>RewriteRule ^(.*)$ http://google.com$1 [L,R=301]</span></code></pre></td></tr></table></div></figure>
<p>A quick check to see if it is working using *curl.</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>ravi@taraka:~$ curl -I http://google.com.
</span><span class='line'>HTTP/1.1 301 Moved Permanently
</span><span class='line'>Location: http://www.google.com/
</span><span class='line'>Content-Type: text/html; charset=UTF-8
</span><span class='line'>Date: Tue, 19 Mar 2013 16:43:45 GMT
</span><span class='line'>Expires: Thu, 18 Apr 2013 16:43:45 GMT
</span><span class='line'>Cache-Control: public, max-age=2592000
</span><span class='line'>Server: gws
</span><span class='line'>Content-Length: 219
</span><span class='line'>X-XSS-Protection: 1; mode=block
</span><span class='line'>X-Frame-Options: SAMEORIGIN</span></code></pre></td></tr></table></div></figure>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Running rbenv and pythonbrew side by side]]></title>
<link href="http://rendykstan.github.com/blog/2013/03/16/running-rbenv-and-pythonbrew-side-by-side/"/>
<updated>2013-03-16T17:36:00+08:00</updated>
<id>http://rendykstan.github.com/blog/2013/03/16/running-rbenv-and-pythonbrew-side-by-side</id>
<content type="html"><![CDATA[<p>Today, I went into a problem running pythonbrew after installing ruby using rbenv for setting up this blog last week. It took me awhile to figure out that rbenv was the problem. ~/.bashrc and ~/.profile were the only shell initialization files before rbenv came into the picture.</p>
<figure class='code'><figcaption><span>~/.profile</span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>if [ -n "$BASH_VERSION" ]; then
</span><span class='line'> # include .bashrc if it exists
</span><span class='line'> if [ -f "$HOME/.bashrc" ]; then
</span><span class='line'> . "$HOME/.bashrc"
</span><span class='line'> fi
</span><span class='line'>fi</span></code></pre></td></tr></table></div></figure>
<!-- more -->
<p>When installing rbenv, ~/.bash_profile is created to point to the path ~/.rbenv where ruby is installed.</p>
<figure class='code'><figcaption><span>~/.bash_profile</span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>export PATH="$HOME/.rbenv/bin:$PATH"
</span><span class='line'>eval "$(rbenv init -)"</span></code></pre></td></tr></table></div></figure>
<p>Later I found out that if ~/.bash_profile exist, files ~/.bash_login and ~/.profile will not be included.</p>
<p>Only one of the files below will be included in the following order.</p>
<ol>
<li>.bash_profile</li>
<li>.bash_login</li>
<li>.profile</li>
</ol>
<p>Including ~/.bashrc in ~/.bash_profile resolved the issue.</p>
<figure class='code'><figcaption><span>~/.bash_profile</span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>export PATH="$HOME/.rbenv/bin:$PATH"
</span><span class='line'>eval "$(rbenv init -)"
</span><span class='line'>[ -r ~/.bashrc ] && source ~/.bashrc</span></code></pre></td></tr></table></div></figure>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Creating My Github Pages Blog with Octopress]]></title>
<link href="http://rendykstan.github.com/blog/2013/03/09/creating-my-github-pages-blog/"/>
<updated>2013-03-09T18:57:00+08:00</updated>
<id>http://rendykstan.github.com/blog/2013/03/09/creating-my-github-pages-blog</id>
<content type="html"><![CDATA[<p>Hi there, let me introduce myself. I am Rendy, currently working at <a href="http://humannetworklabs.com">Human Network Labs</a>. We help connect me, you and everything around us with my precise positioning technology. Ever since Github introduced <a href="http://pages.github.com/">Pages</a>, I wanted to start my product management and technology blog. Today I finally found some time to work on it.</p>
<p>One of the ways to create Github Pages is to use Jekyll, a static site generator that generates a static version of the blog. Instead of using a dynamic scripting language (such as PHP, Python) that renders your blog posts as you load the website. Jekyll generate an html only version of your site.</p>
<p>Since I am new to Jekyll, I did a quick search for ways to get started and I found <a href="http://octopress.org/">Octopress</a> a blogging framework for Github Pages! Very well <a href="http://octopress.org/docs/">documented</a>, following the instructions are a breeze except for one problem during <strong>bundle install</strong>.</p>
<!-- more -->
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>ravi@taraka:sudo gem install RedCloth
</span><span class='line'>[sudo] password for ravi:
</span><span class='line'>Building native extensions. This could take a while...
</span><span class='line'>ERROR: Error installing RedCloth:
</span><span class='line'> ERROR: Failed to build gem native extension.
</span><span class='line'>
</span><span class='line'> /usr/bin/ruby1.9.1 extconf.rb
</span><span class='line'>/usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
</span><span class='line'> from /usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
</span><span class='line'> from extconf.rb:1:in `<main>'
</span><span class='line'>
</span><span class='line'>Gem files will remain installed in /usr/lib/ruby/gems/1.9.1/gems/RedCloth-4.2.9 for inspection.
</span><span class='line'>Results logged to /usr/lib/ruby/gems/1.9.1/gems/RedCloth- 4.2.9/ext/redcloth_scan/gem_make.out</span></code></pre></td></tr></table></div></figure>
<p>Solution:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>sudo apt-get install ruby1.9.1-dev</span></code></pre></td></tr></table></div></figure>
<p>To get started with Octopress, you need to install Git and Ruby. If you are not a Ruby programmer I will recommed the light-weight and more flexible rbenv instead of RVM.</p>
<p>This is how a blog post look like in Jekyll:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>---
</span><span class='line'>title: Title Of Post
</span><span class='line'>layout: post
</span><span class='line'>date:
</span><span class='line'>comments: true
</span><span class='line'>categories:
</span><span class='line'>---
</span><span class='line'>Simple markdown syntax. *italic*, **bold**, [click here](http://github.com), #header1, ##header2 etc.</span></code></pre></td></tr></table></div></figure>
<p>To conclude a day’s work. I highly recommend all programmers who have interest to showcare their work to be on Github Pages.</p>
]]></content>
</entry>
</feed>