<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3450537947067648487</id><updated>2021-12-04T08:15:33.581+06:00</updated><category term="current development trend (web)"/><category term="zce"/><category term="zend certification preparation"/><category term="jquery"/><category term="zend syllabus"/><category term="facebook"/><category term="information security management"/><category term="online payment"/><category term="codeigniter"/><category term="datepicker"/><category term="ebook"/><category term="fabien"/><category term="fabpot"/><category term="map"/><category term="php"/><category term="phpXperts"/><category term="potencier"/><category term="project management"/><category term="python"/><category term="seminar"/><category term="symfony"/><category term="tutorial"/><category term="ui"/><category term="validation"/><category term="web design"/><title type='text'>... Inverting Things ...</title><subtitle type='html'>--- just another naive tech talk</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-4553464855410329751</id><published>2015-06-23T11:48:00.001+06:00</published><updated>2016-02-11T12:00:04.486+06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ebook"/><category scheme="http://www.blogger.com/atom/ns#" term="fabien"/><category scheme="http://www.blogger.com/atom/ns#" term="fabpot"/><category scheme="http://www.blogger.com/atom/ns#" term="potencier"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>MarkDown to PDF ::: creating pdf e-book from series of markdown</title><content type='html'>I was looking for an easy way to read the &#39;&lt;i&gt;famous&lt;/i&gt;&#39; series of articles of &lt;b&gt;Fabien Potencier&lt;/b&gt; (&lt;a href=&quot;https://github.com/fabpot/Create-Your-Framework&quot;&gt;https://github.com/fabpot/Create-Your-Framework&lt;/a&gt;). They are &lt;a href=&quot;http://fabien.potencier.org/create-your-own-framework-on-top-of-the-symfony2-components-part-1.html&quot; target=&quot;_blank&quot;&gt;series of blog posts of him&lt;/a&gt; and later stored at github as *.rst aka markdown.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I thought and searched for quite a bit for some tools to get them all into single e-book like pdf e-book because I became lazy enough to retrieve them from bookmark every time I need them.&lt;br /&gt;&lt;br /&gt;I came across&amp;nbsp;&lt;a href=&quot;http://engineeredweb.com/blog/2014/convert-markdown-pdf-using-php&quot;&gt;http://engineeredweb.com/blog/2014/convert-markdown-pdf-using-php&lt;/a&gt;. &amp;nbsp;An wonderfully written tutorial for similar purposes. While looking into the code - I remember an old `&lt;i&gt;codelet&lt;/i&gt;` of mine which actually can solve lots of similar problems. It was using &#39;&lt;a href=&quot;https://packagist.org/packages/knplabs/knp-snappy-bundle&quot; target=&quot;_blank&quot;&gt;KnpSnappy&lt;/a&gt;&#39; bundle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I got some code copied from &lt;a href=&quot;http://mattfarina.com/&quot; target=&quot;_blank&quot;&gt;Matt Farina&lt;/a&gt;&amp;nbsp;from above mentioned blog post and modified my codeblock a bit -- which managed to build up a solution for my problem.&lt;br /&gt;&lt;br /&gt;I will go step by step for my own record:&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;b&gt;&lt;u&gt;&lt;i&gt;&lt;span style=&quot;font-size: large;&quot;&gt;(1) Bootstrapping:&lt;/span&gt;&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;a)&lt;/i&gt;&lt;/b&gt; Lets create a new project at our webroot. Let&#39;s name it &quot;&lt;b&gt;&lt;i&gt;MarkDownToPdf&lt;/i&gt;&lt;/b&gt;&quot;.&lt;br /&gt;&lt;b&gt;&lt;i&gt;b)&lt;/i&gt;&lt;/b&gt; Now inside the project let&#39;s create the files we will require:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;himel@/var/www/MarkDownToPdf$ touch index.php autoload.php composer.json .gitignore&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;c)&lt;/i&gt;&lt;/b&gt; Now let&#39;s open the project with a suitable IDE (or one can use any tools at comfort) - in my case I am using PHPStorm.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;d)&lt;/i&gt;&lt;/b&gt; After that we will edit the &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;composer.json&lt;/pre&gt;with our required libraries (like as follows):&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;{&lt;br /&gt;  &quot;require&quot; :  {&lt;br /&gt;    &quot;neurosys/file-merger&quot;: &quot;dev-master&quot;,&lt;br /&gt;    &quot;h4cc/wkhtmltopdf-i386&quot;: &quot;0.12.x&quot;,&lt;br /&gt;    &quot;h4cc/wkhtmltopdf-amd64&quot;: &quot;0.12.x&quot;,&lt;br /&gt;    &quot;knplabs/knp-snappy&quot;: &quot;0.3.*@dev&quot;,&lt;br /&gt;    &quot;dompdf/dompdf&quot;: &quot;0.6.*&quot;,&lt;br /&gt;    &quot;michelf/php-markdown&quot;: &quot;1.4.*&quot;,&lt;br /&gt;    &quot;querypath/querypath&quot;: &quot;3.*&quot;,&lt;br /&gt;    &quot;masterminds/html5&quot;: &quot;1.*&quot;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;e)&lt;/i&gt;&lt;/b&gt; Now it&#39;s time for running the composer update. But before that we need to have composer in our system. To download composer we will run the following:&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;himel@/var/www/MarkDownToPdf$ curl -sS https://getcomposer.org/installer | php&lt;br /&gt;&lt;/pre&gt;Then run composer: &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;himel@/var/www/MarkDownToPdf$ php composer.phar install&lt;br /&gt;&lt;/pre&gt;All the libraries will be at the &quot;vendor&quot; folder. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;f)&lt;/i&gt;&lt;/b&gt; Now as the vendors are downloaded it will be better to create the &quot;&lt;b&gt;&lt;i&gt;.gitignore&lt;/i&gt;&lt;/b&gt;&quot; file to avoid future problems when we will be adding this to git. My &quot;&lt;b&gt;&lt;i&gt;.gitignore&lt;/i&gt;&lt;/b&gt;&quot; contains: &lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;/vendor/&lt;br /&gt;/composer.phar&lt;br /&gt;/composer.lock&lt;br /&gt;/.idea&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;g)&lt;/i&gt;&lt;/b&gt; Now it&#39;s time to write the ``&lt;b&gt;autoload.php&lt;/b&gt;``. It will be used to autoload the vendors - it puts a direct require to the autoload file inside the Vendor folder. &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;require_once __DIR__ . &#39;/vendor/autoload.php&#39;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;b&gt;&lt;u&gt;&lt;i&gt;(2) Downloading the files:&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;Now I will download the files and for this I will create a ``files`` folder. Point to be noted that we can use any files at any location but to make it a complete solution - I am keeping the files inside the tiny app. &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;himel@/var/www/MarkDownToPdf$ mkdir files&lt;br /&gt;himel@/var/www/MarkDownToPdf$ cd files&lt;br /&gt;himel@/var/www/MarkDownToPdf/files$ git clone git@github.com:fabpot/Create-Your-Framework.git fabpot&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So the books are downloaded at &quot;/fabpot/book&quot; inside &quot;files&quot; folder. &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;(3) The Code:&lt;/h2&gt;&lt;br /&gt;The code will first include the required libraries into it. So let&#39;s start like: &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;require_once __DIR__ . &#39;/autoload.php&#39;;&lt;br /&gt;&lt;br /&gt;use NeuroSys\FileMerger\Merger;&lt;br /&gt;use NeuroSys\FileMerger\Driver\PdfTkDriver;&lt;br /&gt;use NeuroSys\FileMerger\Transformer\ImageTransformer;&lt;br /&gt;use Knp\Snappy\Pdf;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now I will take the path of the folder where the markdown files are in - as input from command line: &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;$handle = fopen(&quot;php://stdin&quot;,&quot;r&quot;);&lt;br /&gt;echo &quot;Path to markdown files (upto folder without trailing slash &#39;/&#39; ):&quot; . PHP_EOL;&lt;br /&gt;$dir = rtrim(fgets($handle, 1024));&lt;br /&gt;fclose($handle);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now as we do have the folder path - we can read all the files in there. &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;$files = scandir($dir);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So let&#39;s process the files one by one &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;$pdfs = array();&lt;br /&gt;$domain_name = &#39;http://fabien.potencier.org/&#39;;&lt;br /&gt;&lt;br /&gt;$index = 1;&lt;br /&gt;foreach ($files as $file){&lt;br /&gt;    if (!in_array($file, array(&#39;.&#39;, &#39;..&#39;))) { // as scandir() returns file list with dots which actually specifies parent directory&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Inside the loop I will convert &lt;b&gt;markdown&lt;/b&gt; files to &lt;b&gt;html&lt;/b&gt; first: &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;// md to html&lt;br /&gt;$markdown = file_get_contents( $dir.&#39;/&#39;.$file );&lt;br /&gt;$markdownParser = new \Michelf\MarkdownExtra();&lt;br /&gt;$html = $markdownParser-&amp;gt;transform( $markdown );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For the output &lt;b&gt;html&lt;/b&gt; we need to do some cleanup and modify links in the html if there&#39;s any: &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;// html clean up and clean up links by assigning absolute path to them&lt;br /&gt;$dom = \HTML5::loadHTML( $html );&lt;br /&gt;$links = htmlqp( $dom, &#39;a&#39; );&lt;br /&gt;&lt;br /&gt;foreach ( $links as $link ) {&lt;br /&gt;    $href = $link-&amp;gt;attr( &#39;href&#39; );&lt;br /&gt;    if ( substr( $href, 0, 1 ) == &#39;/&#39; &amp;amp;&amp;amp; substr( $href, 1, 1 ) != &#39;/&#39; ) {&lt;br /&gt; $link-&amp;gt;attr( &#39;href&#39;, $domain_name . $href );&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$html = \HTML5::saveHTML( $dom );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now to initiate KnpSnappy Bundle and its PDF feature - we need to install &quot;wkhtmltopdf&quot;. We can do this by: &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;himel@/var/www/MarkDownToPdf$ sudo apt-get install wkhtmltopdf&lt;br /&gt;&lt;/pre&gt;or&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;himel@/var/www/MarkDownToPdf$ sudo apt-get install xfonts-base xfonts-75dpi&lt;br /&gt;himel@/var/www/MarkDownToPdf$ wget http://sourceforge.net/projects/wkhtmltopdf/files/0.12.2.1/wkhtmltox-0.12.2.1_linux-wheezy-amd64.deb&lt;br /&gt;himel@/var/www/MarkDownToPdf$ sudo dpkg -i wkhtmltox-0.12.2.1_linux-wheezy-amd64.deb&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then we will use this bundle to convert html to pdf. We are saving the output pdf file in &quot;pdf&quot; folder inside the given path.&lt;br /&gt;We will store the path of the pdf file in an array which will help us combining them. &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;// html to pdf&lt;br /&gt;$snappy = new Pdf( &#39;/usr/bin/wkhtmltopdf&#39; );&lt;br /&gt;$snappy-&amp;gt;generateFromHtml( $html, $dir . &#39;/pdf/&#39; . $index . &#39;.pdf&#39; );&lt;br /&gt;$pdfs[$index] = $dir . &#39;/pdf/&#39; . $index . &#39;.pdf&#39;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;We have to install &quot;pdftk&quot; for the merging task.  &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;himel@/var/www/MarkDownToPdf$ sudo apt-get install pdftk&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now outside the loop we will iterate over the pdf file path array and combine them and give the final path as output: &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;// merging all files&lt;br /&gt;$driver = new PdfTkDriver(&quot;/usr/bin/pdftk&quot;);&lt;br /&gt;$merger = new Merger($driver);&lt;br /&gt;$merger-&amp;gt;addTransformer(new ImageTransformer($snappy));&lt;br /&gt;&lt;br /&gt;foreach ($pdfs as $pdf) {&lt;br /&gt;   $merger-&amp;gt;addFile($pdf);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$merger-&amp;gt;merge($dir . &#39;/pdf/CreateYourOwnFrameWork-FabPot.pdf&#39;);&lt;br /&gt;echo PHP_EOL;&lt;br /&gt;echo &quot;Combined e-book is: &quot; . $dir . &#39;/pdf/CreateYourOwnFrameWork-FabPot.pdf&#39;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;(4) Running:&lt;/h2&gt;&lt;br /&gt;Now we will run our file: &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;himel@/var/www/MarkDownToPdf$ php index.php &lt;br /&gt;Path to markdown files (upto folder without trailing slash &#39;/&#39; ):&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We will input the path of the folder as: /var/www/MarkDownToPdf/files/fabpot/book &lt;br /&gt;&lt;h2&gt;(5) The Output:&lt;/h2&gt;&lt;br /&gt;The output is: &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&lt;br /&gt;&lt;b&gt;Combined e-book is: /var/www/MarkDownToPdf/files/fabpot/book/pdf/CreateYourOwnFrameWork-FabPot.pdf&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The book is under &lt;a href=&quot;https://github.com/fabpot/Create-Your-Framework/blob/master/LICENSE.md&quot; target=&quot;_blank&quot;&gt;Creative Common License&lt;/a&gt; so this permits me sharing the final output.&lt;br /&gt;&lt;br /&gt;Slideshare link of the final output is:&lt;br /&gt;&lt;div style=&quot;marign: 0 auto;&quot;&gt;&lt;iframe frameborder=&quot;0&quot; height=&quot;400&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;https://www.slideshare.net/slideshow/embed_code/key/CiBFAcYRflXt3g&quot; width=&quot;476&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The codebase is in github (&lt;a href=&quot;https://github.com/himelnagrana/MarkDownToPdf&quot;&gt;https://github.com/himelnagrana/MarkDownToPdf&lt;/a&gt;) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;And a thousand thanks to &lt;a href=&quot;http://mattfarina.com/&quot; target=&quot;_blank&quot;&gt;Matt Farina&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/4553464855410329751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2015/06/markdown-to-pdf-creating-pdf-e-book.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/4553464855410329751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/4553464855410329751'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2015/06/markdown-to-pdf-creating-pdf-e-book.html' title='MarkDown to PDF ::: creating pdf e-book from series of markdown'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total><georss:featurename>Dhaka, Bangladesh</georss:featurename><georss:point>23.810332 90.412518099999943</georss:point><georss:box>23.577844499999998 90.089794599999948 24.0428195 90.735241599999938</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-1098659584081805181</id><published>2010-05-17T12:34:00.005+06:00</published><updated>2014-12-12T17:35:35.574+06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="current development trend (web)"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Experiencing Facebook Javascript SDK with graph API - II</title><content type='html'>&lt;h3 class=&quot;post-title entry-title&quot; style=&quot;font-weight: normal; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Previous post:&lt;/span&gt;&lt;/b&gt;&lt;/i&gt; &lt;/span&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot; style=&quot;font-weight: normal; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;a href=&quot;http://nagbaba.blogspot.com/2010/05/experiencing-facebook-javascript-sdk.html&quot;&gt;http://nagbaba.blogspot.com/2010/05/experiencing-facebook-javascript-sdk.html&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt; &lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;Here goes the link of the first part. In this post I will share (or better to say note down about further experience in FB Javascript API).&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;Here I will try to focus on :::&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;(2)&lt;span style=&quot;font-weight: normal;&quot;&gt; get fans count and their feed on page&#39;s wall to promote and to share the page.&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;(3) &lt;span style=&quot;font-weight: normal;&quot;&gt;post to wall (to my page or profile) from my site.&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;&lt;u&gt;&lt;b&gt;Steps for task (2) &lt;/b&gt;&lt;/u&gt;: &lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;&lt;b&gt;[1]&lt;/b&gt; Facebook fan pages are awesome tools for marketing or promotion. They are attached to facebook open graph. SO it is very much easy to access their public info like feed stream and fan count. But for the other info there should be nneded to logging in.&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;&lt;b&gt;[2]&lt;/b&gt; If we hit to &lt;i&gt;https://graph . facebook. com/ &lt;page-id&gt;&lt;/page-id&gt;&lt;/i&gt; we will get all the public info like -- id, name, username(if any), page profile picture, link, location, hours open. For other info we have to use &lt;b&gt;metdata&lt;/b&gt; tag. for this purpose we may hit&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;&lt;i&gt; https://graph . facebook. com/ &lt;page-id&gt; ? metadata= 1. &lt;/page-id&gt;&lt;/i&gt;We may find links for feed, posts, tagged, statuses, links, notes, photos, albums, events and videos. Among them feed, posts, photos and albums are publicly accessible.&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;&lt;b&gt;[3]&lt;/b&gt; So using this protocol we can find and fulfil our needs as mentioned above.&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;&lt;b&gt;[4]&lt;/b&gt; We have called javascript api for getting fancount and for feeds we have used php as this is easy to maintain a multilevel data structure like array in php than javascript.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;&lt;b&gt;[5]&lt;/b&gt; So the frame of our code goes like as below :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class=&quot;brush: html&quot; name=&quot;code&quot;&gt;&amp;lt;!doctype html&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;  &amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/head&amp;gt;&lt;br /&gt;  &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;div id=&quot;user-info&quot; style=&quot;display: none;&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;div id=&quot;fb-root&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://connect.facebook.net/en_US/all.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;            $(document).ready(function(){&lt;br /&gt;                FB.init({ apiKey: &#39;XXXXXXXXXXXXXXXXXXX&#39; });&lt;br /&gt;            });&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;[6]&lt;/b&gt; Here the FB.init is used to initiate the api call. Now to get the fan count we will add the following function after&amp;nbsp;document.ready block and call the function from document.ready.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: js&quot; name=&quot;code&quot;&gt;function getUpdate () {&lt;br /&gt;var htmls = &#39;&amp;lt;div style=&quot;background-color:#77A1CD:color:#EAAA00;&quot;&amp;gt;&#39;;&lt;br /&gt;&lt;br /&gt;FB.api(&#39;/224365082363&#39;, function(response1) {&lt;br /&gt;                        total_members = response1.fan_count;&lt;br /&gt;                        name = response1.name;&lt;br /&gt;                        link = response1.link;&lt;br /&gt;                        htmls += &#39;Total &amp;lt;i&amp;gt;&#39;+total_members+&#39;&amp;lt;/i&amp;gt; persons likes &#39;+&#39;&amp;lt;a href=&quot;&#39;+link+&#39;&quot;&amp;gt;&#39;+name+&#39;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&#39;;&lt;br /&gt;                        htmls += &#39;&amp;lt;/div&amp;gt;&#39;;&lt;br /&gt;                        $(&#39;#user-info&#39;).show();&lt;br /&gt;                        $(&#39;#user-info&#39;).attr(&quot;style&quot;,&quot;width:450px;height:auto;background-color:#E4E9EE&quot;);&lt;br /&gt;                        $(&#39;#user-info&#39;).html(htmls);&lt;br /&gt;               });&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;[7]&lt;/b&gt; Now to find the lates feeds we have used php. From php we have called the same graph protocol and used &lt;i&gt;file_get_contents&lt;/i&gt;. the returned datatype is json. SO we used &lt;i&gt;json_decode&lt;/i&gt; to parse the data. Then the data type becomes an &lt;i&gt;stdclassobject&lt;/i&gt;. The code goes as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&amp;lt;?php&lt;br /&gt; $myObj = json_decode(file_get_contents(&quot;https://graph.facebook.com/224365082363/feed&quot;));&lt;br /&gt;echo &quot;&amp;lt;br&amp;gt;&quot;;&lt;br /&gt;$i = 0;&lt;br /&gt;        foreach ($myObj-&amp;gt;data as $aData){&lt;br /&gt;                $user[$i][&#39;from&#39;] = $from = &quot;&amp;lt;a href=\&quot;http://www.facebook.com/profile.php?id=&quot;.$aData-&amp;gt;from-&amp;gt;id.&quot;\&quot; &amp;gt;&quot;.$aData-&amp;gt;from-&amp;gt;name.&quot;&amp;lt;/a&amp;gt;&quot;;&lt;br /&gt;                $user[$i][&#39;msg&#39;] = $message = $aData-&amp;gt;message;&lt;br /&gt;                $created = $aData-&amp;gt;created_time;&lt;br /&gt;                &lt;br /&gt;                &lt;br /&gt;                $html  = &quot;&amp;lt;div style=\&quot;background-color:#F9F9F9;color:#000000;height:auto;width:500px;\&quot;&amp;gt;&quot;;&lt;br /&gt;                $html .= $from.&quot;: &quot;.$message;&lt;br /&gt;                $html .= &quot;&amp;lt;font size=\&quot;1\&quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;.$created.&quot;&amp;lt;/font&amp;gt;&quot;;&lt;br /&gt;                $html .= &quot;&amp;lt;hr style=\&quot;border-style:dotted; border-color:#6D84B4\&quot;/&amp;gt;&quot;;&lt;br /&gt;                $html .= &quot;&amp;lt;/div&amp;gt;&quot;;&lt;br /&gt;                echo $html;&lt;br /&gt;                $i++;&lt;br /&gt;        }&lt;br /&gt;?&amp;gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;[8] &lt;/b&gt;Here the time returned is on &#39;&lt;i&gt;yyyy-mm-ddThh:mm:ss&lt;/i&gt;&#39; format but normally and specially our application demands time difference from now liek as how many mniutes ago the feed was posted. So for these reason we have used a function that calculates the time difference in days, hours and miniutes. the code block for the function and the calling will be as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&amp;lt;?php&lt;br /&gt; $myObj = json_decode(file_get_contents(&quot;https://graph.facebook.com/224365082363/feed&quot;));&lt;br /&gt;echo &quot;&amp;lt;br&amp;gt;&quot;;&lt;br /&gt;$i = 0;&lt;br /&gt;        foreach ($myObj-&amp;gt;data as $aData){&lt;br /&gt;                $user[$i][&#39;from&#39;] = $from = &quot;&amp;lt;a href=\&quot;http://www.facebook.com/profile.php?id=&quot;.$aData-&amp;gt;from-&amp;gt;id.&quot;\&quot; &amp;gt;&quot;.$aData-&amp;gt;from-&amp;gt;name.&quot;&amp;lt;/a&amp;gt;&quot;;&lt;br /&gt;                $user[$i][&#39;msg&#39;] = $message = $aData-&amp;gt;message;&lt;br /&gt;                $created = $aData-&amp;gt;created_time;&lt;br /&gt;                $createdtime = date(&#39;Y-m-d h:i:s&#39;, strtotime($created));&lt;br /&gt;                $now = date(&#39;Y-m-d h:i:s&#39;, time());&lt;br /&gt;                $user[$i][&#39;ago&#39;] = $difference = get_time_difference($createdtime, $now);&lt;br /&gt;                &lt;br /&gt;                $html  = &quot;&amp;lt;div style=\&quot;background-color:#F9F9F9;color:#000000;height:auto;width:500px;\&quot;&amp;gt;&quot;;&lt;br /&gt;                $html .= $from.&quot;: &quot;.$message;&lt;br /&gt;                $html .= &quot;&amp;lt;font size=\&quot;1\&quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;.$created.&quot;&amp;lt;/font&amp;gt;&quot;;&lt;br /&gt;                $html .= &quot;&amp;lt;hr style=\&quot;border-style:dotted; border-color:#6D84B4\&quot;/&amp;gt;&quot;;&lt;br /&gt;                $html .= &quot;&amp;lt;/div&amp;gt;&quot;;&lt;br /&gt;                echo $html;&lt;br /&gt;                $i++;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;function get_time_difference($start, $end){&lt;br /&gt;&lt;br /&gt;        $tempstart1 = explode(&#39;-&#39;,$start);&lt;br /&gt;        $startyr = $tempstart1[0];&lt;br /&gt;        $startmon = $tempstart1[1];&lt;br /&gt;        $tempstart2 = explode(&#39; &#39;,$tempstart1[2]);&lt;br /&gt;        $startday = $tempstart2[0];&lt;br /&gt;        $tempstart3 = explode(&#39;:&#39;,$tempstart2[1]);&lt;br /&gt;        $starthr = $tempstart3[0];&lt;br /&gt;        $startmin = $tempstart3[1];&lt;br /&gt;        $startsec = $tempstart3[2];&lt;br /&gt;&lt;br /&gt;        $tempend1 = explode(&#39;-&#39;,$end);&lt;br /&gt;        $endyr = $tempend1[0];&lt;br /&gt;        $endmon = $tempend1[1];&lt;br /&gt;        $tempend2 = explode(&#39; &#39;,$tempend1[2]);&lt;br /&gt;        $endday = $tempend2[0];&lt;br /&gt;        $tempend3 = explode(&#39;:&#39;,$tempend2[1]);&lt;br /&gt;        $endhr = $tempend3[0];&lt;br /&gt;        $endmin = $tempend3[1];&lt;br /&gt;        $endsec = $tempend3[2];&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;        $start1 = mktime($starthr, $startmin, $startsec, $startmon, $startday, $startyr);&lt;br /&gt;        $end1 = mktime($endhr, $endmin, $endsec, $endmon, $endday, $endyr);&lt;br /&gt;&lt;br /&gt;        $dateDiff = $end1 - $start1;&lt;br /&gt;        $fullDays = floor($dateDiff/(60*60*24));&lt;br /&gt;        $fullHours = floor(($dateDiff-($fullDays*60*60*24))/(60*60));&lt;br /&gt;        $fullMinutes = floor(($dateDiff-($fullDays*60*60*24)-($fullHours*60*60))/60);&lt;br /&gt;        &lt;br /&gt;        $ret = &quot;&quot;;&lt;br /&gt;        if($fullDays &amp;gt; 0){&lt;br /&gt;                $ret .= &quot;$fullDays Days &quot;;&lt;br /&gt;        }&lt;br /&gt;        if($fullHours &amp;gt; 0){&lt;br /&gt;                $ret .= &quot;$fullHours Hours &quot;;&lt;br /&gt;        }&lt;br /&gt;        if($fullMinutes &amp;gt; 0){&lt;br /&gt;                $ret .= &quot;$fullMinutes Minutes &quot;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if($ret!= &#39;&#39;){&lt;br /&gt;                $ret .= &quot;ago&quot;;&lt;br /&gt;        } else {&lt;br /&gt;                $ret .= &quot;A Few Moments ago&quot;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return $ret;&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;[9]&lt;/b&gt; so the final out put will be as the following screenshot -&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_UcoPErOKqTY/S_Di67BsbpI/AAAAAAAACvc/1F41annFPyU/s1600/fbfeed.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;231&quot; src=&quot;http://2.bp.blogspot.com/_UcoPErOKqTY/S_Di67BsbpI/AAAAAAAACvc/1F41annFPyU/s400/fbfeed.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;So we will be back soon with posting to wall steps. &lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;;-)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/1098659584081805181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2010/05/experiencing-facebook-javascript-sdk_17.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1098659584081805181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1098659584081805181'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2010/05/experiencing-facebook-javascript-sdk_17.html' title='Experiencing Facebook Javascript SDK with graph API - II'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_UcoPErOKqTY/S_Di67BsbpI/AAAAAAAACvc/1F41annFPyU/s72-c/fbfeed.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-3172558559383740488</id><published>2010-05-11T18:13:00.006+06:00</published><updated>2014-12-12T17:38:06.255+06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="current development trend (web)"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Experiencing Facebook Javascript SDK with graph API - I</title><content type='html'>This is the first time I am using Facebook Javascript API. In fact this is the first time I am using any facebook api. So I am excited to some extend. I have heard that the api and documentations are easy enough to understand. I read the facebook release of &lt;b&gt;graph api&lt;/b&gt; and &lt;b&gt;f8&lt;/b&gt; and they looked coooooool to work with.&lt;br /&gt;&lt;br /&gt;The basic purpose of my work was three things -&lt;br /&gt;&lt;b&gt;(1)&lt;/b&gt; Get Home page feeds and present them as scrolling in my site&lt;br /&gt;&lt;b&gt;(2)&lt;/b&gt; create custom buttons with friends and/or fans count to promote&lt;br /&gt;&lt;b&gt;(3) &lt;/b&gt;post to wall (to my page or profile) from my site.&lt;br /&gt;&lt;br /&gt;To the experts these are definitely piece-of-cake but for a first timer like me they are the basic things to work with.&lt;br /&gt;&lt;br /&gt;So in this post I will discuss&amp;nbsp; how i learned to get the home page feeds.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Steps for &lt;/b&gt;&lt;b&gt;(1) Get Home page feeds and present them as scrolling in my site&lt;/b&gt;&lt;/u&gt;&lt;u&gt;&lt;b&gt;:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[a]&lt;/b&gt;&lt;/i&gt; I have created an canvas application called &lt;i&gt;testfbapp&lt;/i&gt; (this is just to get an api key) from &lt;a href=&quot;http://developers.facebook.com/setup/&quot;&gt;http://developers.facebook.com/setup&lt;/a&gt; . I have set my site name as &lt;i&gt;testfbapp &lt;/i&gt;and my site url as&lt;i&gt; http://localhost/testfbapp&lt;/i&gt; (as i am planning to test my codes on localhost).&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[b]&lt;/b&gt;&lt;/i&gt; Now from the next page that comes after creating the application I have clicked the &lt;i&gt;developer dashboard&lt;/i&gt; link. There all the application that just  have been created will be shown. I have copied the API Key, the secret key and the application ID for the app and kept that somewhere.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[c]&lt;/b&gt;&lt;/i&gt; Then I have searched for Javascript SDK and found it on &lt;a href=&quot;http://github.com/facebook/connect-js/&quot;&gt;http://github.com/facebook/connect-js/&lt;/a&gt; . I have downloaded the sdk and copied that to my local directory which is &lt;i&gt;testfbapp &lt;/i&gt;under my web root&lt;i&gt;.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[d]&lt;/b&gt;&lt;/i&gt; In order to get used to it i have roamed around the files I have downloaded and found that it the sdk supports a lot variety of popular javascript libraries like &lt;i&gt;dojo&lt;/i&gt;, &lt;i&gt;jquery&lt;/i&gt;, &lt;i&gt;mootools&lt;/i&gt;, &lt;i&gt;prototype&lt;/i&gt;, &lt;i&gt;yui2&lt;/i&gt;. Because of previous little experience in &lt;i&gt;jquery&lt;/i&gt; I have chosen that.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[e]&lt;/b&gt;&lt;/i&gt; Now I have created a file named index.php at the project root. I have copied contents from the login.html from examples/jquery directory and pasted it into the index.php page.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[f]&lt;/b&gt;&lt;/i&gt; Then I have removed the contents of handleSessionResponse() after the following code block&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: js&quot; name=&quot;code&quot;&gt;if (!response.session) {&lt;br /&gt;          clearDisplay();&lt;br /&gt;          return;&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So the page looks like as follows:&lt;br /&gt;&lt;pre class=&quot;brush: html&quot; name=&quot;code&quot;&gt;&amp;lt;!doctype html&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;  &amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/head&amp;gt;&lt;br /&gt;  &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;div&amp;gt;&lt;br /&gt;      &amp;lt;button id=&quot;login&quot;&amp;gt;Login&amp;lt;/button&amp;gt;&lt;br /&gt;      &amp;lt;button id=&quot;logout&quot;&amp;gt;Logout&amp;lt;/button&amp;gt;&lt;br /&gt;      &amp;lt;button id=&quot;disconnect&quot;&amp;gt;Disconnect&amp;lt;/button&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;div id=&quot;user-info&quot; style=&quot;display: none;&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;div id=&quot;fb-root&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://connect.facebook.net/en_US/all.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;      // initialize the library with the API key&lt;br /&gt;      FB.init({ apiKey: &#39;.....&#39; });&lt;br /&gt;&lt;br /&gt;      // fetch the status on load&lt;br /&gt;      FB.getLoginStatus(handleSessionResponse);&lt;br /&gt;&lt;br /&gt;      $(&#39;#login&#39;).bind(&#39;click&#39;, function() {&lt;br /&gt;        FB.login(handleSessionResponse);&lt;br /&gt;      });&lt;br /&gt;&lt;br /&gt;      $(&#39;#logout&#39;).bind(&#39;click&#39;, function() {&lt;br /&gt;        FB.logout(handleSessionResponse);&lt;br /&gt;      });&lt;br /&gt;&lt;br /&gt;      $(&#39;#disconnect&#39;).bind(&#39;click&#39;, function() {&lt;br /&gt;        FB.api({ method: &#39;Auth.revokeAuthorization&#39; }, function(response) {&lt;br /&gt;          clearDisplay();&lt;br /&gt;        });&lt;br /&gt;      });&lt;br /&gt;&lt;br /&gt;      // no user, clear display&lt;br /&gt;      function clearDisplay() {&lt;br /&gt;        $(&#39;#user-info&#39;).hide(&#39;fast&#39;);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      // handle a session response from any of the auth related calls&lt;br /&gt;      function handleSessionResponse(response) {&lt;br /&gt;        // if we dont have a session, just hide the user info&lt;br /&gt;        if (!response.session) {&lt;br /&gt;          clearDisplay();&lt;br /&gt;          return;&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[g]&lt;/b&gt;&lt;/i&gt; Now I have read about the graph api of facebook from &lt;a href=&quot;http://developers.facebook.com/docs/api&quot;&gt;http://developers.facebook.com/docs/api&lt;/a&gt; and for our purpose (i.e. to get home page feeds) I found that&lt;br /&gt;&lt;i&gt;https://graph.facebook.com/&lt;user_id or=&quot;&quot; user_name=&quot;&quot;&gt;user-name/&lt;b style=&quot;font-weight: normal;&quot;&gt;home &lt;/b&gt;&lt;/user_id&gt;&lt;/i&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;link is helpful. So I have tested on the browser address bar putting my FB user name and some of my friends FB user name and found that it works only for current user that the logged in user. but &lt;/b&gt;&lt;i&gt;https://graph.facebook.com/&lt;user_id or=&quot;&quot; user_name=&quot;&quot;&gt;user-name&lt;/user_id&gt;&lt;/i&gt;&lt;i&gt;&lt;user_id or=&quot;&quot; user_name=&quot;&quot;&gt; &lt;/user_id&gt;&lt;/i&gt;works for self and friends information&lt;i&gt;. &lt;/i&gt;It fetches only publicly viwable information. So our next step should bego through the javascript api reference to utilize the graph api.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[h]&lt;/b&gt;&lt;/i&gt; I have gone through &lt;a href=&quot;http://developers.facebook.com/docs/reference/javascript&quot;&gt;http://developers.facebook.com/docs/reference/javascript&lt;/a&gt; and found that &lt;i&gt;FB.api&amp;nbsp; &lt;/i&gt;API call is the right method to use as it can directly call to graph API.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[i]&lt;/b&gt;&lt;/i&gt; I have put my API key for my application in the &lt;i&gt;FB.init()&lt;/i&gt; method and following &lt;a href=&quot;http://developers.facebook.com/docs/reference/javascript/FB.api&quot;&gt;this guide&lt;/a&gt; I have written the following code in the &lt;i&gt;handleSessionResponse()&lt;/i&gt; method. I have checked &lt;i&gt;https://graph.facebook.com/&lt;user_id or=&quot;&quot; user_name=&quot;&quot;&gt;user-name?metadata=1&lt;/user_id&gt;&lt;/i&gt;&lt;user_id or=&quot;&quot; user_name=&quot;&quot;&gt; url in my browser to find the proper link for &lt;i&gt;home&lt;/i&gt;&lt;/user_id&gt;&lt;i&gt;&lt;user_id or=&quot;&quot; user_name=&quot;&quot;&gt;&lt;/user_id&gt;&lt;/i&gt; feeds. I have used &lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: html&quot; name=&quot;code&quot;&gt;for(property in response){&lt;br /&gt;   alert(property);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;to check the properties of the response object. And then for output I have written --&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: js&quot; name=&quot;code&quot;&gt;var user_id = FB.getSession().uid;&lt;br /&gt;FB.api(&#39;/&#39;+user_id+&#39;/home&#39;, function(response) {&lt;br /&gt;  var total_feed = response.data.length;&lt;br /&gt;   var htmls = &#39;&amp;lt;ul style=&quot;list-style-image: none; list-style-position: outside; list-style-type: none;&quot;&amp;gt;&#39;;       &lt;br /&gt; for(var x = 0; x &amp;lt; total_feed; x++) {       &lt;br /&gt;  name = response.data[x].from.name;       &lt;br /&gt;  id = response.data[x].from.id;       &lt;br /&gt;  message = response.data[x].message;       &lt;br /&gt;  created_time = response.data[x].created_time;              &lt;br /&gt;  htmls += &quot;&quot;;&amp;nbsp;&lt;br /&gt;  htmls += &#39;&lt;b&gt;&amp;lt;a href=&quot;http&lt;/b&gt;&lt;b&gt;://www.facebook.com/profile .php ?id=&#39;+id+&#39;&amp;gt;&#39;+  name+&#39;&amp;lt;/a&amp;gt;:&lt;/b&gt;&#39;;&lt;br /&gt;  htmls += message;&lt;br /&gt;  htmls += &quot;&lt;span style=&quot;font-size: xx-small;&quot;&gt; created at ::: &quot;+created_time+&quot;&lt;/span&gt;&quot;;&amp;nbsp;&lt;br /&gt; htmls += &quot;&quot;;   &lt;br /&gt;}      &lt;br /&gt;htmls += &quot;&amp;lt;/ul&amp;gt;&quot;;&lt;br /&gt;  $(&#39;#user-info&#39;).show();&lt;br /&gt;  $(&#39;#user-info&#39;).attr(&quot;style&quot;,&quot;width:450px;height:auto;background-color:#E4E9EE&quot;);&lt;br /&gt;  $(&#39;#user-info&#39;).html(htmls);&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[j]&lt;/b&gt;&lt;/i&gt; Here &lt;i&gt;FB.getSession()&lt;/i&gt; holds all the session variables after authentication. If some user visiting my page is not logged in the &lt;i&gt;FB.getSession() &lt;/i&gt;is null and it will not return any feed. To login there is a login button at the top of the page (at the top of my code). After clicking that button there will be an iFrame dialogue box appeared and will ask permission from the user to login and then to allow the application to fetch&amp;nbsp; profile data. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[k]&lt;/b&gt;&lt;/i&gt; Now if we run &lt;i&gt;http://localhost/testfbapp&lt;/i&gt; and login using FB credential and allow this application we will see the recent homepage feeds.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;[l]&lt;/b&gt;&lt;/i&gt; Now to automate this script that is to get live updates we may modify the codes like as follows and this is  our final version of this code.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: html&quot; name=&quot;code&quot;&gt;&amp;lt;html&amp;gt;&lt;br /&gt;  &amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/head&amp;gt;&lt;br /&gt;  &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;div&amp;gt;&lt;br /&gt;      &amp;lt;button id=&quot;login&quot;&amp;gt;Login&amp;lt;/button&amp;gt;&lt;br /&gt;      &amp;lt;button id=&quot;logout&quot;&amp;gt;Logout&amp;lt;/button&amp;gt;&lt;br /&gt;      &amp;lt;button id=&quot;disconnect&quot;&amp;gt;Disconnect&amp;lt;/button&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;div id=&quot;user-info&quot; style=&quot;display: none;&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;div id=&quot;fb-root&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://connect.facebook.net/en_US/all.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;      // initialize the library with the API key&lt;br /&gt;      FB.init({ apiKey: &#39;XXXXXXXXXXXX&#39; });&lt;br /&gt;&lt;br /&gt;      // fetch the status on load&lt;br /&gt;      FB.getLoginStatus(handleSessionResponse);&lt;br /&gt;&lt;br /&gt;      $(&#39;#login&#39;).bind(&#39;click&#39;, function() {&lt;br /&gt;        FB.login(handleSessionResponse);&lt;br /&gt;      });&lt;br /&gt;&lt;br /&gt;      $(&#39;#logout&#39;).bind(&#39;click&#39;, function() {&lt;br /&gt;        FB.logout(handleSessionResponse);&lt;br /&gt;      });&lt;br /&gt;&lt;br /&gt;      $(&#39;#disconnect&#39;).bind(&#39;click&#39;, function() {&lt;br /&gt;        FB.api({ method: &#39;Auth.revokeAuthorization&#39; }, function(response) {&lt;br /&gt;          clearDisplay();&lt;br /&gt;        });&lt;br /&gt;      });&lt;br /&gt;&lt;br /&gt;      // no user, clear display&lt;br /&gt;      function clearDisplay() {&lt;br /&gt;        $(&#39;#user-info&#39;).hide(&#39;fast&#39;);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      // handle a session response from any of the auth related calls&lt;br /&gt;      function handleSessionResponse(response) {&lt;br /&gt;        // if we dont have a session, just hide the user info&lt;br /&gt;        if (!response.session) {&lt;br /&gt;          clearDisplay();&lt;br /&gt;          return;&lt;br /&gt;&lt;br /&gt;        var user_id = FB.getSession().uid;&lt;br /&gt;        var access_token = FB.getSession().access_token;&lt;br /&gt;&lt;br /&gt;        getUpdate();&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      function getUpdate () {&lt;br /&gt;              var user_id = FB.getSession().uid;&lt;br /&gt;              //alert(user_id);&lt;br /&gt;              var access_token = FB.getSession().access_token;&lt;br /&gt;              //alert(access_token);&lt;br /&gt;              FB.api(&#39;/&#39;+user_id+&#39;/friends&#39;, function(response) {&lt;br /&gt;                 var total_friend = response.data.length;&lt;br /&gt;                 //alert(total_friend);&lt;br /&gt;&lt;br /&gt;              });&lt;br /&gt;              FB.api(&#39;/&#39;+user_id+&#39;/home&#39;, function(response) {&lt;br /&gt;                        var total_feed = response.data.length;&lt;br /&gt;                        var htmls = &#39;&amp;lt;ul style=&quot;list-style-image: none; list-style-position: outside; list-style-type: none;&quot;&amp;gt;&#39;;                         &lt;br /&gt;for(var x = 0; x &amp;lt; total_feed; x++) {        &lt;br /&gt;name = response.data[x].from.name;        &lt;br /&gt;id = response.data[x].from.id;        &lt;br /&gt;message = response.data[x].message;        &lt;br /&gt;created_time = response.data[x].created_time;               &lt;br /&gt;htmls += &quot;&quot;;&amp;nbsp; htmls += &#39;&lt;b&gt;&amp;lt;a href=&quot;http&lt;/b&gt;&lt;b&gt;://www.facebook.com/profile .php ?id=&#39;+id+&#39;&amp;gt;&#39;+ name+&#39;&amp;lt;/a&amp;gt;:&lt;/b&gt;&#39;;&lt;br /&gt;htmls += message;&lt;br /&gt;htmls += &quot;&lt;span style=&quot;font-size: xx-small;&quot;&gt; created at ::: &quot;+created_time+&quot;&lt;/span&gt;&quot;;&amp;nbsp;&lt;br /&gt;htmls += &quot;&quot;;   &lt;br /&gt;}&lt;br /&gt;                        htmls += &quot;&quot;;&lt;br /&gt;                        $(&#39;#user-info&#39;).show();&lt;br /&gt;                        $(&#39;#user-info&#39;).attr(&quot;style&quot;,&quot;width:450px;height:auto;background-color:#E4E9EE&quot;);&lt;br /&gt;                        $(&#39;#user-info&#39;).html(htmls);&lt;br /&gt;                });&lt;br /&gt;               &lt;br /&gt;&lt;br /&gt;                t = setTimeout(getUpdate,15000);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;     &amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now this will be the ned of part 1 getting FB homepage feed.&lt;br /&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;[cont...]&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/3172558559383740488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2010/05/experiencing-facebook-javascript-sdk.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/3172558559383740488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/3172558559383740488'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2010/05/experiencing-facebook-javascript-sdk.html' title='Experiencing Facebook Javascript SDK with graph API - I'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-885529157093021817</id><published>2010-04-27T23:24:00.000+06:00</published><updated>2014-12-12T17:39:44.402+06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="current development trend (web)"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Experiencing Python :: Part I</title><content type='html'>&lt;span style=&quot;font-size: small;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;I&lt;/span&gt;&lt;/b&gt;&lt;/i&gt; was getting bored with working on similar tasks/projects. I had a drive in my mind to do something that can get myself charged up and on the other hand a new thing will be learned. Thinking about programming languages the first two things came in my mind was - Python and Ruby on Rails. I decided to start with python.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Installing :&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;[&lt;i&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;I am on Red Hat Linux. I will add to this post or on a separate post the experience on my ubuntu and windows&lt;/span&gt;&lt;/i&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;(1)&lt;/b&gt; I visited &lt;a href=&quot;http://www.python.org/download/&quot;&gt;http://www.python.org/download/&lt;/a&gt;&amp;nbsp; and downloaded &lt;/span&gt;Python 2.6.5 as it was told there that if I was not sure of which version to get it will be the choice.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(2)&lt;/b&gt; After downloading, I have placed the Python-2.6.5.tar.bz2 to home/myUser folder and extracted it there. The folder name will be Python-2.6.5&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(3)&lt;/b&gt; now in the terminal, i wrote the necessary commands and waited for them to be executed like as follows --&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: sql&quot; name=&quot;code&quot;&gt;[root@localhost nagbaba]# cd Python-2.6.5&lt;br /&gt;[root@localhost Python-2.6.5]# ./configure&lt;br /&gt;... ... ... &lt;br /&gt;[root@localhost Python-2.6.5]# make&lt;br /&gt;... ... ...&lt;br /&gt;[root@localhost Python-2.6.5]# make install&lt;br /&gt;... ... ...&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;(4)&lt;/b&gt; Now the installation has been completed. To go back, i typed -&lt;br /&gt;[root@localhost Python-2.6.5]# exit&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(5)&lt;/b&gt; Now python is installed and ready for use. To check the installation location&lt;br /&gt;&lt;pre class=&quot;brush: sql&quot; name=&quot;code&quot;&gt;[root@localhost ~]# which python&lt;br /&gt;&lt;/pre&gt;it yields ---&lt;br /&gt;/usr/local/bin/python&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(6)&lt;/b&gt; To run python from command prompt we type --&lt;br /&gt;&lt;pre class=&quot;brush: sql&quot; name=&quot;code&quot;&gt;[root@localhost ~]# python&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;(7)&lt;/b&gt; Then I opened my Eclipse 3.4.2. I went to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Help &amp;gt;&amp;gt; Software Updates &amp;gt;&amp;gt; Available Softwares&lt;br /&gt;In the textbox, i have written python and the IDE searched the available pydev plugins for eclipse. I checked the check boxes and installed them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(8)&lt;/b&gt; Then in the &quot;navigator perspective&quot; i created a python project, but it wanted the path of the interpreter. I showed the path browsing (the path is &lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;/usr/local/bin/python&lt;/i&gt;&lt;/span&gt; as we have found it earlier).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(9)&lt;/b&gt; Then I right-clicked on the project icon at the navigator and clicked&lt;br /&gt;new &amp;gt;&amp;gt; pydev module&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(10)&lt;/b&gt; I left the package name blank and select src as the package. I named my project as &#39;testPY&#39;. After creating the module, i searched google for &quot;hello world&quot; type code in python and luckily found one. I typed the following code and saved the file as testPY.py&lt;br /&gt;&lt;pre class=&quot;brush: python&quot; name=&quot;code&quot;&gt;def add(a,b):&lt;br /&gt;     return a+b&lt;br /&gt;&lt;br /&gt;print add(1,2)&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;(11)&lt;/b&gt; Then I right clicked the file on navigator and clicked&lt;br /&gt;run as &amp;gt;&amp;gt; python run&lt;br /&gt;&lt;br /&gt;in the small output window it gives the output&lt;b&gt; 3&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;I will be posting stuffs as I will be approaching to learn things. But for my irregular nature I guess it will not be an easy stuff.</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/885529157093021817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2010/04/experiencing-python-part-i.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/885529157093021817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/885529157093021817'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2010/04/experiencing-python-part-i.html' title='Experiencing Python :: Part I'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-4212214254784384712</id><published>2010-03-15T17:49:00.003+06:00</published><updated>2014-12-12T17:33:10.076+06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Using Fpdf library with Codeigniter</title><content type='html'>&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;I &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;am back with&amp;nbsp;codeigniter! Now I have to use pdf generation for reporting purpose. Previously I have used&amp;nbsp;&lt;a href=&quot;http://www.digitaljunkies.ca/dompdf&quot;&gt;Dom Pdf&lt;/a&gt;&amp;nbsp;library with &lt;a href=&quot;http://codeigniter.com/&quot;&gt;Codeigniter&lt;/a&gt;. For paper size and some other issues I got help form &lt;a href=&quot;http://sajjadhossain.com/category/dompdf/&quot;&gt;Sajjad Vai&#39;s blog&lt;/a&gt;. It worked nicely and my primary purpose was solved. But unfortunately it was not working for large amount of data which is being pulled from multiple table. Say for example, if I try with sample populated data with 180 rows it works fine, but for 35 rows fetched with my reporting query it messes things up! May be my query needs &amp;nbsp;some scaling. But as we are on verge of delivery, the team decides to complete the task first and then think on the scaling issue as we have separate planning for that. So My manager did some R&amp;amp;D and found Fpdf runs well with larger dataset. Now as out project is on Caodeigniter framework, I am trying to implement this on Codeignter. I am tracking down the steps as this is new to me and this may help for future cases.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1)&lt;/b&gt; Download the latest stable version of Fpdf library from &lt;a href=&quot;http://www.fpdf.org/&quot;&gt;here&lt;/a&gt;. We are using fpdf1.6 here.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2) &lt;/b&gt;Extract the zip file and put it&amp;nbsp;folder named&amp;nbsp;&lt;b&gt;fpdf&lt;/b&gt; and&amp;nbsp;Copy that to &quot;system/plugins&quot; folder.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3) &lt;/b&gt;Copy the file &quot;tutorial/tut5.php&quot; [as we are talking about huge amount of data and data may exceed single page, this may vary from requirement to requirement] to plugins folder and rename it to &quot;fpdf_pi.php&quot;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4)&lt;/b&gt; Open the file and change the line&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;require(&#39;../fpdf.php&#39;);&lt;br /&gt;&lt;/pre&gt;to&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;require(&#39;fpdf/fpdf.php&#39;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;5)&lt;/b&gt; There are many examples in the &quot;&lt;b&gt;tutorial&lt;/b&gt;&quot; folder depicting many features like &lt;i&gt;tables&lt;/i&gt;, &lt;i&gt;fancy tables&lt;/i&gt;, &lt;i&gt;paginations&lt;/i&gt;, etc. So you can cutomize the class and the functions as your application requires. Like in our application, we have modified the header and footer functions and customized the pagination by putting the table header into every page front. The basic principle on which FPDF works is they consider every element into cells. And the properties of the cells has to be fixed to get a visually better output.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6)&lt;/b&gt; Now at the end of the class there are some codes to call and manipulate the class and gets output. pdf. Just copy the class and put in the required controller function where the data will be fed to it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7)&lt;/b&gt; Now in the controller replace the &quot;include&quot; line before&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;$pdf = new PDF();&lt;br /&gt;&lt;/pre&gt;with the following&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;$this-&amp;gt;load-&amp;gt;plugin(&#39;fpdf&#39;);&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;8)&lt;/b&gt; Here we are trying to printing an tour pan of a tourism company. We will change the header in the controller now where the header() is called as &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$header = array(&#39;start&#39;,&#39;Name&#39;,&#39;end&#39;,&#39;stay&#39;,&#39;Id&#39;,&#39;where&#39;);&lt;br /&gt;&lt;br /&gt;&lt;b&gt;9) &lt;/b&gt;There is a way of loading data in to system is &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;$data=$pdf-&amp;gt;LoadData(&#39;countries.txt&#39;);&lt;br /&gt;&lt;/pre&gt;as mentioned in the tutorial. We are overloading this line with sample data reading the format of the &#39;countries.txt&#39;.&lt;br /&gt;&lt;br /&gt;So our code becomes --&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;$data = array(&lt;br /&gt;                   array(&#39;Austria&#39;,&#39;Vienna&#39;,&#39;83859&#39;,&#39;8075&#39;),&lt;br /&gt;                   array(&#39;Belgium&#39;,&#39;Brussels&#39;,&#39;30518&#39;,&#39;10192&#39;),&lt;br /&gt;                   array(&#39;Denmark&#39;,&#39;Copenhagen&#39;,&#39;43094&#39;,&#39;5295&#39;),&lt;br /&gt;                   array(&#39;Finland&#39;,&#39;Helsinki&#39;,&#39;304529&#39;,&#39;5147&#39;),&lt;br /&gt;                   array(&#39;France&#39;,&#39;Paris&#39;,&#39;543965&#39;,&#39;58728&#39;),&lt;br /&gt;                   array(&#39;Germany&#39;,&#39;Berlin&#39;,&#39;357022&#39;,&#39;82057&#39;)&lt;br /&gt;     );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;10)&lt;/b&gt; We have customized two functions called &quot;&lt;b&gt;SetReportFirstPageHead&lt;/b&gt;&quot; and &quot;&lt;b&gt;SetReportGeneralPageHead&lt;/b&gt;&quot;. The first one is for setting the first page because while printing there will be letterhead and then the data table. but in the other pages there will be only datatable header.&lt;br /&gt;&lt;br /&gt;the skeletons of the functions to be resided in the fpdf_pi.php are as follows :&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;function SetReportFirstPageHead($report_name, $print_date, $optional_text = &#39;&#39;)&lt;br /&gt;{&lt;br /&gt;      $this-&amp;gt;Image(&#39;logo.png&#39;,20,13,60,0,&#39;&#39;); &lt;br /&gt;      $this-&amp;gt;SetFont(&#39;Arial&#39;,&#39;&#39;,15);&lt;br /&gt;      $this-&amp;gt;Cell(170,10,&#39;abc tourism,&#39;,&#39;&#39;,0,&#39;R&#39;);&lt;br /&gt;      $this-&amp;gt;Ln(7);&lt;br /&gt;      $this-&amp;gt;SetFont(&#39;Arial&#39;,&#39;&#39;,12);&lt;br /&gt;      $this-&amp;gt;Cell(170,10,&#39;address 1,&#39;,&#39;&#39;,0,&#39;R&#39;);&lt;br /&gt;      $this-&amp;gt;Ln(5);&lt;br /&gt;      $this-&amp;gt;Cell(170,10,&#39;address 2,&#39;,&#39;&#39;,0,&#39;R&#39;);&lt;br /&gt;      $this-&amp;gt;Ln(5);&lt;br /&gt;      $this-&amp;gt;Cell(170,10,&#39;address 3 &#39;,&#39;&#39;,0,&#39;R&#39;);&lt;br /&gt;      $this-&amp;gt;Ln(7);&lt;br /&gt;      $this-&amp;gt;SetFont(&#39;Arial&#39;,&#39;&#39;,10);&lt;br /&gt;      $this-&amp;gt;Cell(170,10,&#39;phone&#39;,&#39;&#39;,0,&#39;R&#39;);&lt;br /&gt;      $this-&amp;gt;Ln(5);&lt;br /&gt;      $this-&amp;gt;Cell(170,10,&#39;mail&#39;,&#39;&#39;,0,&#39;R&#39;);&lt;br /&gt;      $this-&amp;gt;Line(20, 48, 190, 48);&lt;br /&gt;      $this-&amp;gt;Ln(9);&lt;br /&gt;&lt;br /&gt;      $this-&amp;gt;SetFont(&#39;Arial&#39;,&#39;&#39;,12);&lt;br /&gt;      $this-&amp;gt;Cell(140,8,$report_name,&#39;&#39;,0,&#39;L&#39;);&lt;br /&gt;      $this-&amp;gt;SetFont(&#39;Arial&#39;,&#39;&#39;,10);&lt;br /&gt;      $this-&amp;gt;Cell(30,9, &quot;Printed On: &quot;.$print_date,&#39;&#39;,0,&#39;R&#39;);&lt;br /&gt;&lt;br /&gt;      $this-&amp;gt;Line(20, 55, 190, 55);&lt;br /&gt;&lt;br /&gt;      if ($optional_text != &#39;&#39;)&lt;br /&gt;      {&lt;br /&gt;        $this-&amp;gt;Ln(10);&lt;br /&gt;        $this-&amp;gt;WriteHTML($optional_text);&lt;br /&gt;        $this-&amp;gt;Ln(15);&lt;br /&gt;      }&lt;br /&gt;      else &lt;br /&gt;      {&lt;br /&gt;        $this-&amp;gt;Ln(15);&lt;br /&gt;      }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function SetReportGeneralPageHead($report_name, $print_date)&lt;br /&gt;{&lt;br /&gt;       $this-&amp;gt;SetFont(&#39;Arial&#39;,&#39;&#39;,11);&lt;br /&gt;       $this-&amp;gt;Cell(140,8,$report_name,&#39;&#39;,0,&#39;L&#39;);&lt;br /&gt;       $this-&amp;gt;SetFont(&#39;Arial&#39;,&#39;&#39;,9);&lt;br /&gt;       $this-&amp;gt;Cell(30,9,$print_date,&#39;&#39;,0,&#39;R&#39;);&lt;br /&gt;       $this-&amp;gt;Line(20, 20, 190, 20);&lt;br /&gt;&lt;br /&gt;       $this-&amp;gt;Ln(15);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;11)&lt;/b&gt; Now at the controller, we are calling the pdf output like as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;function pdfTest()&lt;br /&gt;{&lt;br /&gt;      $this-&amp;gt;load-&amp;gt;plugin(&#39;fpdf&#39;);&lt;br /&gt;      $pdf = new PDF();&lt;br /&gt;&lt;br /&gt;      $header = array(&#39;start&#39;,&#39;Name&#39;,&#39;end&#39;,&#39;stay&#39;,&#39;Id&#39;,&#39;where&#39;);&lt;br /&gt;      &lt;br /&gt;      $data = array(&lt;br /&gt;                     array(&#39;Austria&#39;,&#39;Vienna&#39;,&#39;83859&#39;,&#39;8075&#39;),&lt;br /&gt;                     array(&#39;Belgium&#39;,&#39;Brussels&#39;,&#39;30518&#39;,&#39;10192&#39;),&lt;br /&gt;                     array(&#39;Denmark&#39;,&#39;Copenhagen&#39;,&#39;43094&#39;,&#39;5295&#39;),&lt;br /&gt;                     array(&#39;Finland&#39;,&#39;Helsinki&#39;,&#39;304529&#39;,&#39;5147&#39;),&lt;br /&gt;                     array(&#39;France&#39;,&#39;Paris&#39;,&#39;543965&#39;,&#39;58728&#39;),&lt;br /&gt;                     array(&#39;Germany&#39;,&#39;Berlin&#39;,&#39;357022&#39;,&#39;82057&#39;)&lt;br /&gt;                    );&lt;br /&gt;&lt;br /&gt;      //First page&lt;br /&gt;      $pdf-&amp;gt;AddPage();&lt;br /&gt;      $pdf-&amp;gt;SetLeftMargin(20);&lt;br /&gt;      $pdf-&amp;gt;SetReportFirstPageHead(&#39;Tour Plan&#39;, date(&#39;F j, Y&#39;), &#39;Start Date : 03-01-2010 End Date : 04-30-2010&#39;);&lt;br /&gt;        $pdf-&amp;gt;FancyTable($header, $pdf-&amp;gt;SplitInPages($data, 0, 30));&lt;br /&gt;&lt;br /&gt;      //other pages&lt;br /&gt;      $len = count($data);&lt;br /&gt;      for ($k=30; $k &amp;lt;= $len; $k+=40)        &amp;nbsp;&lt;br /&gt;{            &amp;nbsp;&lt;br /&gt;$pdf-&amp;gt;AddPage();&lt;br /&gt;         $pdf-&amp;gt;SetReportGeneralPageHead(&#39;Tour Plan&#39;, date(&#39;F j, Y&#39;));&lt;br /&gt;         $pdf-&amp;gt;FancyTable($header,$pdf-&amp;gt;SplitInPages($data, $k, 40));&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      $pdf-&amp;gt;Output();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So the final out put is here after running the function. The pdf looks like the following &lt;b&gt;screenshot&lt;/b&gt;----&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_UcoPErOKqTY/S54ckz06eLI/AAAAAAAACu4/0f3Dfxk3TIM/s1600-h/pdf_screen_shot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_UcoPErOKqTY/S54ckz06eLI/AAAAAAAACu4/0f3Dfxk3TIM/s640/pdf_screen_shot.png&quot; height=&quot;368&quot; width=&quot;620&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Bye for now.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;stay tuned :)&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/4212214254784384712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2010/03/using-fpdf-library-with-codeigniter.html#comment-form' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/4212214254784384712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/4212214254784384712'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2010/03/using-fpdf-library-with-codeigniter.html' title='Using Fpdf library with Codeigniter'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_UcoPErOKqTY/S54ckz06eLI/AAAAAAAACu4/0f3Dfxk3TIM/s72-c/pdf_screen_shot.png" height="72" width="72"/><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-1515894818915481741</id><published>2010-01-29T17:40:00.004+06:00</published><updated>2014-12-12T17:41:06.361+06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="datepicker"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="ui"/><title type='text'>Disabling Specific Dates in JQuery Datepicker plugin</title><content type='html'>&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;I&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt; was looking for a way to hack the JQery UI Datepicker plugin to make it functioning application specific. While searching I found a great solution with a nice at&amp;nbsp;&lt;a href=&quot;http://davidwalsh.name/jquery-datepicker-disable-days&quot;&gt;David Walsh Blog&lt;/a&gt;. He depicted the total solution on the basis of making an array of the days he wanted to restrict the users to select. The demo was just superb!&lt;br /&gt;&lt;br /&gt;But unfortunately my application requires something similar but not the same which restricted me to just use &lt;a href=&quot;http://davidwalsh.name/&quot;&gt;Mr. David&lt;/a&gt;&#39;s code or solution. I have a reservation site to work on and I have to restrict users to ask for booking a house in a date when it is already booked. So I started to use &lt;a href=&quot;http://davidwalsh.name/&quot;&gt;Mr. David&lt;/a&gt;&#39;s code and tried to match with my requirements. I used &lt;b&gt;php&lt;/b&gt; as my server side scripting Language.&lt;br /&gt;&lt;br /&gt;Here are the steps :::&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;(i)&lt;/span&gt;&lt;/b&gt; First I fetched the specifics date ranges from database when the houses are booked. The format is &lt;b&gt;starting date&lt;/b&gt; and &lt;b&gt;duration. &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;(ii) &lt;/span&gt;&lt;/b&gt;Then I ran loops to get the explicit dates when the house is booked already.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&amp;lt;?php&lt;br /&gt;$sql = &quot;SELECT arrivaldate, duration FROM tbl_booking WHERE houseID = 1 AND bookingstatus = 1&quot;;&lt;br /&gt;$res = mysql_query($sql);&lt;br /&gt;$i = 0;&lt;br /&gt;while($row = mysql_fetch_array($res))&lt;br /&gt;{&lt;br /&gt;  $arrivaldate = $row[&#39;arrivaldate&#39;];&lt;br /&gt;  $duration = $row[&#39;duration&#39;];&lt;br /&gt;&lt;br /&gt;  for($j = 0; $j&amp;lt;$duration; $j++)&lt;br /&gt;  {&lt;br /&gt;     if($j == 0)&lt;br /&gt;     {&lt;br /&gt;      $date[$i] = $arrivaldate;&lt;br /&gt;     }&lt;br /&gt;     else&lt;br /&gt;     {&lt;br /&gt;        $cd = strtotime($arrivaldate);&lt;br /&gt;        $retDAY = date(&#39;Y-m-d&#39;, mktime(0,0,0,date(&#39;m&#39;,$cd),date(&#39;d&#39;,$cd)+$j,date(&#39;Y&#39;,$cd)));&lt;br /&gt;        $date[$i] = $retDAY;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     $i++;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;(iii)&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt; &lt;/span&gt;Now feeding the php array to javascript because the final calculation will take place within javascript while calling the datepicker function.  &lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&amp;gt;&lt;br /&gt;    var disabledDays = new array();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;     $totaldates = count($date);&lt;br /&gt;&lt;br /&gt;     for($k = 0; $k &amp;lt;$totaldates; $k++)&lt;br /&gt;     {&lt;br /&gt;?&amp;gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&amp;gt;&lt;br /&gt;     disabledDays[$k] = &amp;lt;?php echo $date[$k]; ?&amp;gt;&lt;br /&gt;  &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;      }&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;(iv)&lt;/span&gt;&lt;/b&gt; Mr. David set a function that reply true or false when the passed date is a holiday or not. But in our case we don&#39;t need that as we are thinking about blocking the already booked dates. &lt;br /&gt;&lt;br /&gt;But we have to setup a function in order to check the disabled array. So the code will be like:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: js&quot; name=&quot;code&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&amp;gt;&lt;br /&gt;     function ifDisabled(date) &lt;br /&gt;     {&lt;br /&gt; var m = date.getMonth();&lt;br /&gt;        var d = date.getDate();&lt;br /&gt;        var y = date.getFullYear();&lt;br /&gt; &lt;br /&gt; for (i = 0; i &amp;lt; disabledDays.length; i++) &lt;br /&gt;        {&lt;br /&gt;     if($.inArray((m+1) + &#39;-&#39; + d + &#39;-&#39; + y,disabledDays) != -1 || new Date() &amp;gt; date) &lt;br /&gt;            {&lt;br /&gt;  return [false];&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt; return [true];&lt;br /&gt;     }       &lt;br /&gt; &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;(v)&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt; &lt;/span&gt;Now we have to right another function which will call the above function while populating the date and which will send each and every date to the above function and if the response is true it will allow to select the date and if the response is false it will restrict to select the date.&lt;br /&gt;&lt;br /&gt;The function will be like as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: js&quot; name=&quot;code&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&amp;gt;&lt;br /&gt;     function checkDisabled(date) &lt;br /&gt;     {&lt;br /&gt; return ifDisabled(date);&lt;br /&gt;     }&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;(vi) &lt;/span&gt;&lt;/b&gt;Finally we will call the datepicker plugin and pass parameters like minimum date and maximum date and the disabled dates. The code will be as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: js&quot; name=&quot;code&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&amp;gt;&lt;br /&gt;$(document).ready(function(){&lt;br /&gt;        var today  = new Date();&lt;br /&gt;        var d = today.getDate();&lt;br /&gt;        var m = today.getMonth();&lt;br /&gt;        var y = today.getFullYear();&lt;br /&gt; &lt;br /&gt; jQuery(&#39;#date&#39;).datepicker({&lt;br /&gt;  minDate: new Date(y, m, d),&lt;br /&gt;  maxDate: new Date(y, 11, 31),&lt;br /&gt;  dateFormat: &#39;yy-mm-dd&#39;,&lt;br /&gt;  constrainInput: true,&lt;br /&gt;  beforeShowDay: checkDisabled&lt;br /&gt; });&lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;(vii) &lt;/span&gt;&lt;/b&gt;So if we sum this up, we can have the total code as mentioned below.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: html&quot; name=&quot;code&quot;&gt;&amp;lt;link type=&quot;text/css&quot; href=&quot;styles/ui.all.css&quot; rel=&quot;stylesheet&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;link type=&quot;text/css&quot; href=&quot;styles/ui.datepicker.css&quot; rel=&quot;stylesheet&quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;script type=&quot;text/javascript&quot; src=&quot;scripts/jquery.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;script type=&quot;text/javascript&quot; src=&quot;scripts/ui.core.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;script type=&quot;text/javascript&quot; src=&quot;scripts/ui.datepicker.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;$sql = &quot;SELECT arrivaldate, duration FROM tbl_booking WHERE houseID = 1 AND bookingstatus = 1&quot;;&lt;br /&gt;$res = mysql_query($sql);&lt;br /&gt;$i = 0;&lt;br /&gt;while($row = mysql_fetch_array($res))&lt;br /&gt;{&lt;br /&gt;  $arrivaldate = $row[&#39;arrivaldate&#39;];&lt;br /&gt;  $duration = $row[&#39;duration&#39;];&lt;br /&gt;&lt;br /&gt;  for($j = 0; $j&amp;lt;$duration; $j++)&lt;br /&gt;  {&lt;br /&gt;     if($j == 0)&lt;br /&gt;     {&lt;br /&gt;      $date[$i] = $arrivaldate;&lt;br /&gt;     }&lt;br /&gt;     else&lt;br /&gt;     {&lt;br /&gt;        $cd = strtotime($arrivaldate);&lt;br /&gt;        $retDAY = date(&#39;Y-m-d&#39;, mktime(0,0,0,date(&#39;m&#39;,$cd),date(&#39;d&#39;,$cd)+$j,date(&#39;Y&#39;,$cd)));&lt;br /&gt;        $date[$i] = $retDAY;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     $i++;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&amp;gt;&lt;br /&gt;    var disabledDays = new array();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;     $totaldates = count($date);&lt;br /&gt;&lt;br /&gt;     for($k = 0; $k &amp;lt;$totaldates; $k++)&lt;br /&gt;     {&lt;br /&gt;?&amp;gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&amp;gt;&lt;br /&gt;     disabledDays[$k] = &amp;lt;?php echo $date[$k]; ?&amp;gt;&lt;br /&gt;  &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;      }&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&amp;gt;&lt;br /&gt;     function ifDisabled(date) &lt;br /&gt;     {&lt;br /&gt; var m = date.getMonth();&lt;br /&gt;        var d = date.getDate();&lt;br /&gt;        var y = date.getFullYear();&lt;br /&gt; &lt;br /&gt; for (i = 0; i &amp;lt; disabledDays.length; i++) &lt;br /&gt;        {&lt;br /&gt;     if($.inArray((m+1) + &#39;-&#39; + d + &#39;-&#39; + y,disabledDays) != -1 || new Date() &amp;gt; date) &lt;br /&gt;            {&lt;br /&gt;  return [false];&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt; return [true];&lt;br /&gt;     }       &lt;br /&gt;  &lt;br /&gt;     function checkDisabled(date) &lt;br /&gt;     {&lt;br /&gt; return ifDisabled(date);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     $(document).ready(function(){&lt;br /&gt;        var today  = new Date();&lt;br /&gt;        var d = today.getDate();&lt;br /&gt;        var m = today.getMonth();&lt;br /&gt;        var y = today.getFullYear();&lt;br /&gt; &lt;br /&gt; jQuery(&#39;#date&#39;).datepicker({&lt;br /&gt;  minDate: new Date(y, m, d),&lt;br /&gt;  maxDate: new Date(y, 11, 31),&lt;br /&gt;  dateFormat: &#39;yy-mm-dd&#39;,&lt;br /&gt;  constrainInput: true,&lt;br /&gt;  beforeShowDay: checkDisabled&lt;br /&gt; });&lt;br /&gt;    });&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;(viii) &lt;/span&gt;&lt;/b&gt;And that worked perfectly! Three cheers to &lt;a href=&quot;http://davidwalsh.name/&quot;&gt;Mr. David Walsh&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/1515894818915481741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2010/01/disabling-specific-dates-in-jquery.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1515894818915481741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1515894818915481741'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2010/01/disabling-specific-dates-in-jquery.html' title='Disabling Specific Dates in JQuery Datepicker plugin'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-9170576759430094814</id><published>2009-12-03T13:39:00.004+07:00</published><updated>2009-12-03T13:46:39.884+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="current development trend (web)"/><category scheme="http://www.blogger.com/atom/ns#" term="project management"/><title type='text'>Project Management Tools Comparison</title><content type='html'>&lt;div&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;i&gt;&lt;b&gt;I&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; was working on selecting a good project management tool for our company. Previously I have used &lt;b&gt;&lt;a href=&quot;http://www.basecamphq.com/&quot;&gt;&lt;span style=&quot;color: #6fa8dc;&quot;&gt;BaseCamp&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&amp;nbsp;and other project leaders of our office use something they are used to (such as &lt;a href=&quot;http://docs.google.com/&quot;&gt;&lt;span style=&quot;color: #6fa8dc;&quot;&gt;g&lt;b&gt;oogle docs&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;). But there was a need for a standard system for the whole office and I was assigned to make a review about the popular and viable systems. I created an email ID for this purpose and signed up for almost 8/9 project management systems [&lt;i&gt;I created the ID as I didn&#39;t wanna get any newsletters at my regular addresses&lt;/i&gt;].&lt;br /&gt;&lt;br /&gt;Now as ours is a small web development firm, according to our need and afford-ability I reviewed some of the top project management tools online. The report is here for share. This is solely my own review and some may differ or argue for their own.&lt;br /&gt;&lt;br /&gt;Hope this may help someone ;-)&lt;br /&gt;&lt;br /&gt;Have a nice Day.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;object data=&quot;http://viewer.docstoc.com/&quot; height=&quot;420&quot; id=&quot;_ds_18396061&quot; name=&quot;_ds_18396061&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;590&quot;&gt; &lt;param name=&quot;FlashVars&quot; value=&quot;doc_id=18396061&amp;mem_id=802652&amp;doc_type=doc&amp;fullscreen=0&amp;showrelated=0&amp;showotherdocs=0&amp;showstats=0 &quot;/&gt;&lt;param name=&quot;movie&quot; value=&quot;http://viewer.docstoc.com/&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;/object&gt; &lt;br /&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;a href=&quot;http://www.docstoc.com/docs/18396061/Project%20management%20tools%20comparison&quot;&gt; Project management tools comparison&lt;/a&gt; - &lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/9170576759430094814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/12/project-management-tools-comparison.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/9170576759430094814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/9170576759430094814'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/12/project-management-tools-comparison.html' title='Project Management Tools Comparison'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-5206714408906774640</id><published>2009-08-28T13:36:00.008+07:00</published><updated>2015-06-23T14:16:11.392+06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="map"/><title type='text'>IP to Location Map</title><content type='html'>&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;S&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;ometimes we need to show to visitors of our sites where are they from. In one of my sites, I am using an widget or gadget or something like that to show the location of visitor in map by his/her IP address. I know there are several APIs and several sites offering this service for free or for some credit. For application specific reason I have used &#39;IPinfodb&#39; api and jmap plugin for&amp;nbsp;jquery. The details are listed as below.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Prerequisites :&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;b&gt;1.)&lt;/b&gt; CURL or &#39;allow_url_fopen&#39; be enabled in apache and php.ini&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;b&gt;2.)&lt;/b&gt; Google or Yahoo map api key. [Here I have used google map]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;b&gt;3.)&lt;/b&gt; Download jquery.js file from here &lt;a href=&quot;http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js&quot;&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;b&gt;4.)&lt;/b&gt; Download jmap polugin for jquery from &lt;a href=&quot;http://github.com/digitalspaghetti/jmaps/tree/master&quot;&gt;here&lt;/a&gt; .&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Steps :&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;b&gt;(1.)&lt;/b&gt; Taking the visitor&#39;s IP address by&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&amp;lt;?php&lt;br /&gt;    $remote_ip = $_SERVER[&#39;REMOTE_ADDR&#39;];&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;b&gt;(2.)&lt;/b&gt; Now put the following code to call the API. It returns a formatted xml output.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;$request_url = &quot;http://ipinfodb.com/ip_query.php?ip=&quot;.$remote_ip;&lt;br /&gt;$xml = simplexml_load_file($request_url) or die(&quot;url not loading&quot;);&lt;/pre&gt;&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px; white-space: pre;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(3.)&lt;/b&gt; If we print the variable &amp;nbsp;$xml , we can find the returned xml structure. It is something like following -&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: xml&quot; name=&quot;code&quot;&gt;SimpleXMLElement Object&lt;br /&gt;(&lt;br /&gt;    [Ip] =&amp;gt; [...The returned IP...]&lt;br /&gt;    [Status] =&amp;gt; OK&lt;br /&gt;    [CountryCode] =&amp;gt; BD&lt;br /&gt;    [CountryName] =&amp;gt; Bangladesh&lt;br /&gt;    [RegionCode] =&amp;gt; [... The Map Region Code ...]&lt;br /&gt;    [RegionName] =&amp;gt; Dhaka&lt;br /&gt;    [City] =&amp;gt; Dhaka&lt;br /&gt;    [ZipPostalCode] =&amp;gt; SimpleXMLElement Object&lt;br /&gt;        (&lt;br /&gt;        )&lt;br /&gt;&lt;br /&gt;    [Latitude] =&amp;gt; 23.7231&lt;br /&gt;    [Longitude] =&amp;gt; 90.4086&lt;br /&gt;    [Gmtoffset] =&amp;gt; 6.0&lt;br /&gt;    [Dstoffset] =&amp;gt; 6.0&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;(4.)&lt;/b&gt; As from no#3 we find that this xml object is single dimensional. So we can access its attributes by simple object call. Thus the&amp;nbsp;latitude&amp;nbsp;and longitude can be derived by the following lines -&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;$lat = $xml-&amp;gt;Latitude;&lt;br /&gt;    $lng = $xml-&amp;gt;Longitude;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;(5.) &lt;/b&gt;Now we will geocode the co-ordinates using &#39;jmap&#39; plugin of jQuery and google map API. The following code do that all.&lt;br /&gt;&lt;br /&gt;echo &quot;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&amp;lt;script src=\&quot;http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;key=&lt;br /&gt;[... ... Your google map API key ... ...]\&quot; type=\&quot;text/javascript\&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;script src=\&quot;js/jquery.js\&quot; type=\&quot;text/javascript\&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;script src=\&quot;js/jquery.jmap.min.js\&quot; type=\&quot;text/javascript\&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;div id=\&quot;map\&quot; style=\&quot;width: 640px; height: 480px\&quot; align=\&quot;center\&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;script type=\&quot;text/javascript\&quot;&amp;gt;&lt;br /&gt;            (function($){&lt;br /&gt;                $(&#39;#map&#39;).jmap(&#39;init&#39;, {mapCenter:[&quot;.$lat.&quot;,&quot;.$lng.&quot;]}, function(el,&lt;br /&gt;options){&lt;br /&gt;                    $(el).jmap(&#39;addMarker&#39;, {pointLatLng:[&quot;.$lat.&quot;,&quot;.$lng.&quot;], pointHTML:&lt;br /&gt;\&quot;&amp;lt;div style=&#39;height:25px;width:200px;font-weight:bold;padding:5px;text-align:center;&#39;&amp;gt;&quot;.&lt;br /&gt;&#39;[... ... The Text You want to display when people click on the marker ... ...]&#39;.&quot;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;\&quot;});&lt;br /&gt;                });&lt;br /&gt;            })(jQuery);&lt;br /&gt;        &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&quot;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(6.) &lt;/b&gt; So the final code for the page / gadget /widget is as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot; name=&quot;code&quot;&gt;&amp;lt;?php&lt;br /&gt;    $remote_ip = $_SERVER[&#39;REMOTE_ADDR&#39;];&lt;br /&gt;    $request_url = &quot;http://ipinfodb.com/ip_query.php?ip=&quot;.$remote_ip;&lt;br /&gt;    $xml = simplexml_load_file($request_url) or die(&quot;url not loading&quot;);&lt;br /&gt;    $lat = $xml-&amp;gt;Latitude;&lt;br /&gt;    $lng = $xml-&amp;gt;Longitude;&lt;br /&gt;&lt;br /&gt;    echo &quot;&lt;br /&gt;&amp;lt;script src=\&quot;http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;key=&lt;br /&gt;[... ... Your google map API key ... ...]\&quot; type=\&quot;text/javascript\&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;script src=\&quot;js/jquery.js\&quot; type=\&quot;text/javascript\&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;script src=\&quot;js/jquery.jmap.min.js\&quot; type=\&quot;text/javascript\&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;div id=\&quot;map\&quot; style=\&quot;width: 640px; height: 480px\&quot; align=\&quot;center\&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;script type=\&quot;text/javascript\&quot;&amp;gt;&lt;br /&gt;            (function($){&lt;br /&gt;                $(&#39;#map&#39;).jmap(&#39;init&#39;, {mapCenter:[&quot;.$lat.&quot;,&quot;.$lng.&quot;]}, function(el, &lt;br /&gt;options){&lt;br /&gt;                    $(el).jmap(&#39;addMarker&#39;, {pointLatLng:[&quot;.$lat.&quot;,&quot;.$lng.&quot;], pointHTML:&lt;br /&gt;\&quot;&amp;lt;div style=&#39;height:25px;width:200px;font-weight:bold;padding:5px;text-align:center;&#39;&amp;gt;&quot;.&#39;&lt;br /&gt;[... ... The Text You want to display when people click on the marker ... ...]&#39;.&quot;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;\&quot;});&lt;br /&gt;                });&lt;br /&gt;            })(jQuery);&lt;br /&gt;        &amp;lt;/script&amp;gt;&lt;br /&gt;&quot;;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;(7.) &lt;/b&gt;Now save the file and host it to server. Whenever you open the page you can find the map and your location is marked in the map.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Opinions and easier ways if there are cordially welcome.&lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/5206714408906774640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/08/ip-to-location-map.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/5206714408906774640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/5206714408906774640'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/08/ip-to-location-map.html' title='IP to Location Map'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-9162057326152068152</id><published>2009-08-04T21:45:00.001+07:00</published><updated>2009-08-04T21:45:56.421+07:00</updated><title type='text'>First experience to wimax :-)</title><content type='html'>The word that is bubling around in the media and a large number of known people for quite a long time is &#39;WIMAX&#39;. I&#39;ve heard of it but never had a chance to use it as it is not open for all till now and the test transmission at my office area (panthopoth) requires a laptop with wi-fi connection which i don&#39;t have. This evening i got a chance to use it accidentally. I&#39;m sharing the story now. As I am posting from my &#39;vanga&#39; nokia 3110c, there may be some problem with text format. I will fix them soon.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I had to sit for some urgent personal project delivery this evening with my buddy &#39;zanin&#39;. He bought a nice compaq lappy recently. We sat at a staircase near s@ifur&#39;s at panthopoth. No longer we started working, a baloon popup just came saying that we had an active network connection. curiously i clicked the wi-fi button and found 2 active connection. i recognize one of them to be an WI-MAX provider (IT CONNECT) as one of my frnd (http://kousikroy.blogspot.cod) work there. immedietly i called him asking what to do. he told me that they are one test untill 8th of august and only sign up will connect me. as soon as i click connect there site opened with browser asking me to sign up or log in. i signed up. they have an &#39;on the fly&#39; service i.e. no unlimited line and you have to select speed everytime you log in. they charge 0.01tk per kb. (it&#39;s pain and i swear i won&#39;t use them paying). however, i choose 512kbps i.e. 64kBps and i was on. the speed was without congestion and no disconnection (i used for almost one hour). frankly speaking i am satisfied with the performance but not with the offer of course.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;surely i will use wi-max frequently in near future. but the first time deserves special treat. that&#39;s why i shared it here.</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/9162057326152068152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/08/first-experience-to-wimax.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/9162057326152068152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/9162057326152068152'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/08/first-experience-to-wimax.html' title='First experience to wimax :-)'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-1428354834924117367</id><published>2009-07-09T10:53:00.006+07:00</published><updated>2009-10-09T17:30:38.582+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="current development trend (web)"/><category scheme="http://www.blogger.com/atom/ns#" term="web design"/><title type='text'>A Nice Article About Principles of Beautiful Web Designs</title><content type='html'>&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:x-large;&quot;&gt;&lt;i&gt;R&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;ecently I was searching for a new look to my project and to some good tips regarding web design. I found a beautiful article about principles of good web designs. I thought it is worth sharing. Even if nobody reads it in my blog, it can be useful for future reference for my self.&lt;br /&gt;&lt;br /&gt;The original link goes here -&lt;br /&gt;&lt;a href=&quot;http://www.sitepoint.com/print/principles-beautiful-web-design&quot;&gt;http://www.sitepoint.com/print/principles-beautiful-web-design&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The article is by Jason Beaird. Jason Beaird has written 2 articles for SitePoint with an average reader rating of 9. He is a good designer and has dual-majored in graphic design and digital media at the University of Central Florida.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The Article covers areas like &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&gt;&gt; The design process&lt;/div&gt;&lt;div&gt;&gt;&gt; Definition of good design&lt;/div&gt;&lt;div&gt;&gt;&gt; Web page anatomy&lt;/div&gt;&lt;div&gt;&gt;&gt; Grid Theory&lt;/div&gt;&lt;div&gt;&gt;&gt; Balance&lt;/div&gt;&lt;div&gt;&gt;&gt; Unity&lt;/div&gt;&lt;div&gt;&gt;&gt; Emphasis&lt;/div&gt;&lt;div&gt;&gt;&gt; Bread-and-butter Layouts&lt;/div&gt;&lt;div&gt;&gt;&gt; Getting Inspired&lt;/div&gt;&lt;div&gt;&gt;&gt; Fresh Trends&lt;/div&gt;&lt;div&gt;&gt;&gt; Screen Resolution&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;... ... ... ... ... ... ... ... ... ...... ... ... ... ... ... ... ... ... ... ... and so many tricky things.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can have a look at the article right from below:-&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align=&quot;center&quot; style=&quot;margin:0 auto;&quot;&gt;&lt;br /&gt;&lt;object id=&quot;_ds_8243540&quot; name=&quot;_ds_8243540&quot; width=&quot;450&quot; height=&quot;360&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://viewer.docstoc.com/&quot;&gt; &lt;param name=&quot;FlashVars&quot; value=&quot;doc_id=8243540&amp;amp;mem_id=802652&amp;amp;doc_type=pdf&amp;amp;fullscreen=0&amp;amp;showrelated=0&amp;amp;showotherdocs=0&amp;amp;showstats=0 &quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://viewer.docstoc.com/&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/object&gt;&lt;br /&gt;&lt;span style=&quot;font-size:78%;&quot;&gt;&lt;a href=&quot;http://www.docstoc.com/docs/8243540/The%20Principles%20of%20Beautiful%20Web%20Designs&quot;&gt; The Principles of Beautiful Web Designs&lt;/a&gt; - &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/1428354834924117367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/07/r-ecently-i-was-searching-for-new-look.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1428354834924117367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1428354834924117367'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/07/r-ecently-i-was-searching-for-new-look.html' title='A Nice Article About Principles of Beautiful Web Designs'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-6572241372077962669</id><published>2009-06-30T17:35:00.012+07:00</published><updated>2009-07-01T12:21:34.886+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="zce"/><category scheme="http://www.blogger.com/atom/ns#" term="zend certification preparation"/><category scheme="http://www.blogger.com/atom/ns#" term="zend syllabus"/><title type='text'>zend certification preparation ::: Arrays and functions</title><content type='html'>&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:x-large;&quot;&gt;I&lt;/span&gt;&lt;/b&gt;t&#39;s been a long time since I am posting something about ZCE. Just because of enormous pressure of thesis work and office works .. i couldn&#39;t managed time for taking preparation.&lt;br /&gt;&lt;br /&gt;However I am starting again now. I will now try to concentrate about php arrays and functions and try to find answers about some tricky questions.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;In php a class is declared using the &lt;i&gt;class&lt;/i&gt; construct&lt;/li&gt;&lt;li&gt; &lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;class my_class&lt;br /&gt;{&lt;br /&gt;var $myVar;&lt;br /&gt;function my_class ($var)&lt;br /&gt;{&lt;br /&gt;$this-&amp;gt;my_var = $var;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Object is instantiated by &lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;$obj = new my_class (“something”);&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;So for previous class example &lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;$obj-&amp;gt;my_var; &lt;/pre&gt;can fetch the value&lt;/li&gt;&lt;br /&gt;&lt;li&gt;For using any of the methods of the class, we can use &quot;namespace&quot; concept. Let us consider we have a class called &#39;myclass&#39; and it has a method named calc(). So now to access the method we can use the following code:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;class myclass&lt;br /&gt;{&lt;br /&gt;var $var1;&lt;br /&gt;function myclass ($value)&lt;br /&gt;{&lt;br /&gt;  $this-&gt;var1 = $value;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function calc($val)&lt;br /&gt;{&lt;br /&gt;  $val = pow($val,2);&lt;br /&gt;  return $val;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;echo myclass::calc(16);&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This code will yield 256.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A class is a blueprint of an object, which is an instance of a class.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Object-oriented pattern used to implement a class that must be instantiated only once for the entire lifespan of a script is  ---- Singleton Pattern&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Constructor that can be used for a class ---- in php5 both &lt;i&gt;classname()&lt;/i&gt; and &lt;i&gt;__classname()&lt;/i&gt; can be used. But in php4 only &lt;i&gt;classname()&lt;/i&gt; is supported&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;In php4 the following  code will output 5 as there objects are treated as scalar ways and copying object like &quot;$b=$a&quot; makes only another copy so the later assignment does not make sense.&lt;br /&gt;&lt;br /&gt;But in php5, the output will be 10.&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;class my_class&lt;br /&gt;{&lt;br /&gt;var $value;&lt;br /&gt;}&lt;br /&gt;$a = new my_class;&lt;br /&gt;$a-&amp;gt;my_value = 5;&lt;br /&gt;$b = $a;&lt;br /&gt;$b-&amp;gt;my_value = 10;&lt;br /&gt;echo $a-&amp;gt;my_value;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In php parent constructors are not automatically called from a child class’ constructor—they have to be executed explicitly. This is true of any other class member (variables etc.).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To sort an array in ascending order by value while preserving key&lt;br /&gt;associations the PHP sorting function in action will be --- &quot;asort&quot;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The name of a function used to convert an array into a string is --- &quot;serialize&quot; .... &quot;implode&quot; can also be used for this purpose&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&quot;natsort()&quot; function uses a “natural ordering” algorithm to sort the contents of an array,rather than a simple binary comparison between the contents of each element&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&quot;array_flip()&quot; swaps each element of the array with its index&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&quot;rsort()&quot; and &quot;array_reverse()&quot; reorder an array in reverse order that is if we consider &lt;pre name=&quot;code&quot; class=&quot;php&quot; &gt;$a = array(&#39;x&#39;,&#39;y&#39;,&#39;z&#39;);&lt;/pre&gt; as a reference, &lt;pre name=&quot;code&quot; class=&quot;php&quot; &gt;rsort($a);&lt;/pre&gt; and &lt;pre name=&quot;code&quot; class=&quot;php&quot; &gt;array_reverse($a);&lt;/pre&gt; gives us the same output which is &lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;array(&#39;z&#39;,&#39;y&#39;,&#39;x&#39;)&lt;/pre&gt;&lt;pre name=&quot;code&quot; class=&quot;php&quot; &gt;&lt;br /&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;The &quot;array_sum()&quot; function calculates the sum of all the elements of an array.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;Only integer numbers and strings can be used as keys of an array; floating point numbers are converted to integers like 1.2 and 1.5 as keys of and array will result the array as having only 1 element with key 1 and it will take the value of last index that is the the value of index 1.5&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;To be continued .... [&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:x-small;&quot;&gt;until tomorrow :P&lt;/span&gt;]&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/6572241372077962669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/06/zend-certification-preparation-arrays.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/6572241372077962669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/6572241372077962669'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/06/zend-certification-preparation-arrays.html' title='zend certification preparation ::: Arrays and functions'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-1381706146572380230</id><published>2009-05-31T21:58:00.020+06:00</published><updated>2009-06-30T17:35:17.774+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="information security management"/><category scheme="http://www.blogger.com/atom/ns#" term="online payment"/><title type='text'>Preparing Research Paper on &quot;Information Security Management in Online Payment Systems&quot; [Part -2]</title><content type='html'>&lt;span style=&quot;font-weight: bold; font-style: italic;font-size:180%;&quot;&gt;I&lt;/span&gt;n step 2, My task will be prepare a demo report keeping the format of a final report and show it to the supervisor for approval. The later events are not possible to put in this article. I will focus on the preparing demo report.&lt;br /&gt;&lt;br /&gt;Identifying the key chapters:::&lt;br /&gt;(1.) Letter of Transmittal&lt;br /&gt;(2.) Supervisor&#39;s certification&lt;br /&gt;(3.) Acknowledgment&lt;br /&gt;(4.) Executive Summary&lt;br /&gt;(5.) Literature Review&lt;br /&gt;(6.) Data and Analysis&lt;br /&gt;(7.) Findings and Summary&lt;br /&gt;(8.) Recommendations and Conclusion&lt;br /&gt;(9.) References and Conclusion&lt;br /&gt;(10.) Appnendix&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the Executive summary part, I described shortly how a online payment system is similar to everyday buying and selling and then where and how the problems occur. I put the basic finidings of our study here to enrich the executive summary which are --&lt;br /&gt;&lt;meta name=&quot;ProgId&quot; content=&quot;Word.Document&quot;&gt;&lt;meta name=&quot;Generator&quot; content=&quot;Microsoft Word 12&quot;&gt;&lt;meta name=&quot;Originator&quot; content=&quot;Microsoft Word 12&quot;&gt;&lt;link rel=&quot;File-List&quot; href=&quot;file:///C:%5CDOCUME%7E1%5Cnag%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml&quot;&gt;&lt;link rel=&quot;themeData&quot; href=&quot;file:///C:%5CDOCUME%7E1%5Cnag%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx&quot;&gt;&lt;link rel=&quot;colorSchemeMapping&quot; href=&quot;file:///C:%5CDOCUME%7E1%5Cnag%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml&quot;&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val=&quot;Cambria Math&quot;&gt;    &lt;m:brkbin val=&quot;before&quot;&gt;    &lt;m:brkbinsub val=&quot;--&quot;&gt;    &lt;m:smallfrac val=&quot;off&quot;&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val=&quot;0&quot;&gt;    &lt;m:rmargin val=&quot;0&quot;&gt;    &lt;m:defjc val=&quot;centerGroup&quot;&gt;    &lt;m:wrapindent val=&quot;1440&quot;&gt;    &lt;m:intlim val=&quot;subSup&quot;&gt;    &lt;m:narylim val=&quot;undOvr&quot;&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate=&quot;false&quot; defunhidewhenused=&quot;true&quot; defsemihidden=&quot;true&quot; defqformat=&quot;false&quot; defpriority=&quot;99&quot; latentstylecount=&quot;267&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;0&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Normal&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;heading 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 7&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 8&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 9&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 7&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 8&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 9&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;35&quot; qformat=&quot;true&quot; name=&quot;caption&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;10&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Title&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;1&quot; name=&quot;Default Paragraph Font&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;11&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Subtitle&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;22&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Strong&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;20&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Emphasis&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;59&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Table Grid&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Placeholder Text&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;1&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;No Spacing&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Revision&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;34&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;List Paragraph&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;29&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Quote&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;30&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Intense Quote&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;19&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Subtle Emphasis&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;21&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Intense Emphasis&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;31&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Subtle Reference&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;32&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Intense Reference&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;33&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Book Title&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;37&quot; name=&quot;Bibliography&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; qformat=&quot;true&quot; name=&quot;TOC Heading&quot;&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:&quot;Cambria Math&quot;; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face 	{font-family:Georgia; 	panose-1:2 4 5 2 5 4 5 2 3 3; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:647 0 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:&quot;&quot;; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:&quot;Times New Roman&quot;; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&quot;Times New Roman&quot;; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:&quot;Times New Roman&quot;; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&quot;Times New Roman&quot;; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:&quot;Times New Roman&quot;; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&quot;Times New Roman&quot;; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:&quot;Times New Roman&quot;; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&quot;Times New Roman&quot;; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:&quot;Times New Roman&quot;; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&quot;Times New Roman&quot;; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:&quot;Times New Roman&quot;; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&quot;Times New Roman&quot;; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:894242838; 	mso-list-type:hybrid; 	mso-list-template-ids:-980512682 1276381014 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 	{mso-level-text:&quot;\(%1\)&quot;; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-.25in;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:&quot;Table Normal&quot;; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:&quot;&quot;; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;text-align: justify; text-indent: -0.25in; line-height: normal;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;&lt;span style=&quot;&quot;&gt;(a)&lt;span style=&quot;;font-family:&amp;quot;;&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;Lack of consciousness of secure and non-secure connection&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: -0.25in; line-height: normal;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;&lt;span style=&quot;&quot;&gt;(b)&lt;span style=&quot;;font-family:&amp;quot;;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;Lack of consciousness about up gradation of technology in course of time&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: -0.25in; line-height: normal;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;&lt;span style=&quot;&quot;&gt;(c)&lt;span style=&quot;;font-family:&amp;quot;;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;&lt;span style=&quot;&quot;&gt; &lt;/span&gt;Lack of knowledge in choosing popular payment gateways&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: -0.25in; line-height: normal;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;&lt;span style=&quot;&quot;&gt;(d)&lt;span style=&quot;;font-family:&amp;quot;;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;Carelessness while clicking any link&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: -0.25in; line-height: normal;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;&lt;span style=&quot;&quot;&gt;(e)&lt;span style=&quot;;font-family:&amp;quot;;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;Visiting Scam sites (which can install malware in user pc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: -0.25in; line-height: normal;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;&lt;span style=&quot;&quot;&gt;(f)&lt;span style=&quot;;font-family:&amp;quot;;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;Lack of security while configuring payment gateway&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;text-align: justify; text-indent: -0.25in; line-height: normal;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;&lt;span style=&quot;&quot;&gt;(g)&lt;span style=&quot;;font-family:&amp;quot;;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;Above all, putting malicious third party content in the web lessens security of that site.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;In literature review chap 1, I have written sub-topics like&lt;/span&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt; &gt;&gt; Introduction&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &gt;&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt; Scope of the study &gt;&gt;&lt;/span&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt; objectives&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&quot;;font-family:&amp;quot;;font-size:100%;&quot;&gt;&gt;&gt; Methodology&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=&quot;;font-family:Wingdings;font-size:100%;&quot;&gt;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;;font-family:&amp;quot;;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:12;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; &gt;&gt; Limitation of the study&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;In chap 2 , i am discussing about different payment gateways (4 mainly - paypal, authorize dot net, google checkout and 2 checkout) - their flow, merits, flaws, poplarity etc [Chap Name -- payment gateway benchmarks].&lt;br /&gt;&lt;br /&gt;in chap 3, i will consider theory of info secu management to relate them here.&lt;br /&gt;&lt;br /&gt;In chap 4,  i am discussing security articles fromdifferent journals and find out some ocommon scenario to analyze them.&lt;br /&gt;&lt;br /&gt;In chap 5, perspective bangladesh&lt;br /&gt;&lt;br /&gt;In chap 6, Data collection [primary and secondary] and analysis&lt;br /&gt;&lt;br /&gt;In chap 7, Findings and Summary&lt;br /&gt;&lt;br /&gt;In chap 8, recomendation for common people usage, for administratiors, for decisionmakersof bangladesh.&lt;br /&gt;&lt;br /&gt;In chap 9, all the referneces and colcusions&lt;br /&gt;&lt;br /&gt;In chap 10, appendix&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In my next post I will provide the complete view of the paper and provide download links for paper.&lt;br /&gt;&lt;br /&gt;So loooonnnnngggggggg &lt;3&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/1381706146572380230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/05/preparing-research-paper-on-information_31.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1381706146572380230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1381706146572380230'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/05/preparing-research-paper-on-information_31.html' title='Preparing Research Paper on &quot;Information Security Management in Online Payment Systems&quot; [Part -2]'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-4605411606765773471</id><published>2009-05-20T02:13:00.001+06:00</published><updated>2009-06-30T17:34:27.727+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="information security management"/><category scheme="http://www.blogger.com/atom/ns#" term="online payment"/><title type='text'>Preparing Research Paper on &quot;Information Security Management in Online Payment Systems&quot; [Part -1]</title><content type='html'>&lt;span style=&quot;font-size:180%;&quot;&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;A&lt;/span&gt;&lt;/span&gt;s a part of my MBA study at Faculty of Business Administration, MBA (Evening Program), I have to submit a research paper. As I am working with e-commerce web applications for the last two and a half years and in my mind i cherish to have further study or courses on Information Security and as there heard to be a chance of opening e-commerce transactions in Bangladesh --- I decided to catch the opportunity to present a contemporary issue for Bangladesh. This issue may not be contemporary with the rest of the world. And I chose &quot;Information Security Management in Online Payment Systems&quot;as the topic.&lt;br /&gt;&lt;br /&gt;My basic focus was in finding out managerial decision regarding information security. Moreover,  about measures should be taken, awareness among the probable community members, data base modification for using FOSS, etc should be a part of the report.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A small part of this qualitative task is a survey on which data regarding the behavior tendency takes place. I have used &lt;a href=&quot;http://www.surveymonkey.com/s.aspx?sm=_2bWaUSRBe662ZQQ4b6lE3VQ_3d_3d&quot;&gt;SurveyMonkey&lt;/a&gt; to store the questions and host the survey and do some pre-configurations to analyze or view data. I have received a lot of response and they are fair enough.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;According to the result, The following pattern is found ---&lt;br /&gt;&lt;br /&gt;(1) People who use internet for a long time, makes less mistake.&lt;br /&gt;(2) People who looks for &#39;https&#39; in the site, makes less mistake, instead who looks for known sites or reputed site makes comparatively more mistakes and becomes victim of fraud.(!!!)&lt;br /&gt;&lt;br /&gt;I think the reason for the second one is usually people don&#39;t pay much attention while being in and paying in a known or reputed sites. So more chance of become a victim of spoofing.&lt;br /&gt;But I came to know that by a technique called &quot;SSL Sniff&quot; even real &quot;https&quot; sites can be made unsafe. The survey result is just some comon pattern not a whole image as the population is a big in the e-commerce facility consumers.&lt;br /&gt;&lt;br /&gt;So, bye for now. I will be back soon with the paper itself whenever it is ready.</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/4605411606765773471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/05/preparing-research-paper-on-information.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/4605411606765773471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/4605411606765773471'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/05/preparing-research-paper-on-information.html' title='Preparing Research Paper on &quot;Information Security Management in Online Payment Systems&quot; [Part -1]'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-1719208077875135550</id><published>2009-05-18T02:59:00.001+06:00</published><updated>2009-06-30T17:34:02.377+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="current development trend (web)"/><category scheme="http://www.blogger.com/atom/ns#" term="phpXperts"/><category scheme="http://www.blogger.com/atom/ns#" term="seminar"/><title type='text'>PhpXperts Seminar on &quot;Latest Development Trends&quot; ::: My Experience</title><content type='html'>&lt;span style=&quot;font-size:180%;&quot;&gt;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;W&lt;/span&gt;&lt;/span&gt;ith so much excitement i was at the phpXperts seminar 2009 titled &quot;Current Development Trends&quot;. Though whatever you can call me, you can&#39;t call me an expert ... I just achieved the benefit of being too much enthusiastic about the meet by signing up early and then confirm my presence very early. The experience was in a word warm and inspiring.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Through the internet community many of the developers are almost known to each other, either by name or by nick name. I guess nick naming is a smart and catchy style. Following the leaders, someone like me also use nickname. &#39;Ajib&#39;, isn&#39;t it? The seminar offered everyone a chance to meet the &#39;name&#39; or the &#39;nick&#39; perosnally. It was very much enjoyable.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It was a work day. I told my boss earlier on that i have to leave. So I arrived at the seminar before time with &lt;a href=&quot;http://talk.cmyweb.net/&quot;&gt;shiplu&lt;/a&gt;. As always I loved to be almost a back-bencher. I met my old colleague curzon vai , debashish at the premises of BU. Then came to meet &lt;a href=&quot;http://www.zend.com/store/education/certification/authenticate.php?ClientCandidateID=ZEND008874&amp;amp;RegistrationID=&quot;&gt;shoeb&lt;/a&gt;, &lt;a href=&quot;http://arafatbd.net/&quot;&gt;arafat vai&lt;/a&gt; , &lt;a href=&quot;http://hungrycoder.xenexbd.com/&quot;&gt;raju vai&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/_shuman&quot;&gt;Jobaer Shuman vai&lt;/a&gt;. After that It was over whelming to hear the names of people whose mail addresses and mail names or twitter names or FB names were familiar to me.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The main proceeding of the function started unusually punctually. Hasin sir, Mr. emran, Mr. Junal, Mr Hasan, Mr Anis, Mr Mizan, Mr Mahmud and my ex-colleague Bijon vai were the presenters. Each and every person there worked hard for there preparation for presentation, it was obvious from there attitude or it may be their experience speaking, not them ;-) The presentation slides are available &lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;a href=&quot;http://slides.phpxperts.net/&quot;&gt;here&lt;/a&gt;.&lt;/span&gt;   I am not someone smart or expert enough to comment on those people, but particaularly I enjoyed mostly 3 presentations . They are &lt;a href=&quot;http://hasan.we4tech.com/&quot;&gt;hasan vai&lt;/a&gt; , &lt;a href=&quot;http://junalontherun.com/&quot;&gt;junal vai&lt;/a&gt; and &lt;a href=&quot;http://blog.ofhas.in/&quot;&gt;hasin vai&lt;/a&gt;. Hasan vai was just extraordinary and for his throwing in natural style -  tough things like &lt;span style=&quot;font-style: italic;&quot;&gt;Quality Applition Development &lt;/span&gt;became easy enough to a stupid like me. Junal vai just showed us how to eat rice ... his presentation was straight enough (may be because of the topic and familiarity of the topic) to get the whole thing and I am pretty much sure almost 50% of teh audience have tried to develope simple FB apllication after taht evening [actually i am being on the safe side as I am one of them].  Very soon I will be posting on my tryon that ;-) The topic covered by hasin vai was a little bit advanced level issue but the depth and beadth of his lecture was scalable itself :D . Well just leave the kidding, it was just enough for the beginners to get teh idea of scalability and for the inermediarries it was of perfect understanding.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The &lt;span style=&quot;font-style: italic;&quot;&gt;best moderator&lt;/span&gt; section was cool enough, and the photo session of the moderators were formal enough. I enojoyed that as much as I enjoyed the snacks.&lt;br /&gt;&lt;br /&gt;With a dream, spread by the seminar left BU to home, that someday not vary far we will have a meet up like a camp and we will be developing something for our country there. I gained a confidence that if I work a bit harder I can be an expert.  I think that is the success of the seminar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some moments are caught by my &#39;sosta&#39; nokia 3110c ..........&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_UcoPErOKqTY/ShCWAT2gN-I/AAAAAAAACOM/l0lgPYNeQDM/s1600-h/nag000.jpg&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 341px; height: 261px;&quot; src=&quot;http://4.bp.blogspot.com/_UcoPErOKqTY/ShCWAT2gN-I/AAAAAAAACOM/l0lgPYNeQDM/s400/nag000.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5336930490507081698&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_UcoPErOKqTY/ShCWAvUbedI/AAAAAAAACOc/3gtWzPfUeVk/s1600-h/nag002.jpg&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 338px; height: 288px;&quot; src=&quot;http://4.bp.blogspot.com/_UcoPErOKqTY/ShCWAvUbedI/AAAAAAAACOc/3gtWzPfUeVk/s400/nag002.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5336930497880357330&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_UcoPErOKqTY/ShCWAUPPu9I/AAAAAAAACOU/uyoWBtRmz0s/s1600-h/nag001.jpg&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 311px; height: 251px;&quot; src=&quot;http://3.bp.blogspot.com/_UcoPErOKqTY/ShCWAUPPu9I/AAAAAAAACOU/uyoWBtRmz0s/s400/nag001.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5336930490610858962&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;      &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_UcoPErOKqTY/ShCWAyAlSZI/AAAAAAAACOk/5hwRtcYQ3xI/s1600-h/nag022.jpg&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 320px; height: 400px;&quot; src=&quot;http://3.bp.blogspot.com/_UcoPErOKqTY/ShCWAyAlSZI/AAAAAAAACOk/5hwRtcYQ3xI/s400/nag022.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5336930498602420626&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/1719208077875135550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/05/phpxperts-seminar-on-latest-development.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1719208077875135550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/1719208077875135550'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/05/phpxperts-seminar-on-latest-development.html' title='PhpXperts Seminar on &quot;Latest Development Trends&quot; ::: My Experience'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_UcoPErOKqTY/ShCWAT2gN-I/AAAAAAAACOM/l0lgPYNeQDM/s72-c/nag000.jpg" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-7686378609501317548</id><published>2009-05-13T09:23:00.001+06:00</published><updated>2009-06-30T17:33:42.721+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="validation"/><title type='text'>Form Validation By JQuery [Learning JQuery]</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:x-large;&quot;&gt;S&lt;/span&gt;&lt;/span&gt;ince web applications are born, the question of validating input data in a form also raised. A form validation can be done in many ways -- Server side validations or Client side validations or a mixture of this two. Here we will check client side validation using &lt;a href=&quot;http://jquery.com/&quot;&gt;JQuery&lt;/a&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We will be using validator plugin of JQuery.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We will be doing this by a step-by-step process.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:large;&quot;&gt;Steps:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;&quot;&gt;(1)&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; Let us consider a login form with only two inputs --- user name and password.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_UcoPErOKqTY/Sgp0Lei3K1I/AAAAAAAACNE/HkEqnw-kCtA/s320/1.png&quot; style=&quot;text-align: center;float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 440px; height: 132px; &quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5335204449100442450&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;(2)&lt;/span&gt; Now we have to include both include the &lt;a href=&quot;http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.1.min.js&amp;amp;downloadBtn=&quot;&gt;the jQuery library&lt;/a&gt; and the &lt;a href=&quot;http://bassistance.de/jquery-plugins/jquery-plugin-validation/&quot;&gt;validation plugin&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_UcoPErOKqTY/Sgp2q9BqJsI/AAAAAAAACNU/Bu6yyGFmpRo/s400/2.png&quot; style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 100px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5335207188881876674&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;(3)&lt;/span&gt; Now we have to deciede which type of validation we will use -- only required validation or something else. Like now a days in most of the cases we use email address as login ID as uniqeness issue can easily be handled. So in that case we can introduce &#39;email&#39; verification. Again to block sql injection or such ype of issue we can introduce custom validation criteria.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here we will check both the required check and one of our custom check to barr sql injection.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;There is a built-in option for checking required input in jquery validate plugin. For custom option we will go to the jquery.validate.js in our script folder as mentioned above. Then we will look for &#39;classRuleSettings&#39; option. There we can see the built in validation parameters.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_UcoPErOKqTY/SgqLiJV8qKI/AAAAAAAACNc/gfhqbAdHPTE/s400/3.png&quot; style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 190px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5335230127313561762&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;(4)&lt;/span&gt; Now we will put our own validation parameter. Let us name it &#39;restrictchar&#39; as we are going to restrict some characters to bar sql injection. Now we will place the &#39;restrictchar&#39; rule just as the image below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_UcoPErOKqTY/SgqLokGEN8I/AAAAAAAACNk/enHwYW0Wy_M/s400/4.png&quot; style=&quot;cursor:pointer; cursor:hand;width: 330px; height: 217px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5335230237573920706&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;(5)&lt;/span&gt; We will look for methods then. In the methods section we will get to see definitions for the rules described earlier. we will place definition for our own rule &#39;restrictchar&#39;. For blocking suspicious characters we will use regular expression. From any regular expression generator or by own anyione can write the necessary exression. For our purpose we will con&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;sider &#39;allow&#39; techniqe that is we will allow certain characters and disallowed any other. So the desired expression will be something like &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;/^[a-zA-Z0-9_.\-\/ &amp;amp;@!*%$,# \s]+$/. &lt;/span&gt;Now let&#39;s put that as the figure below.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_UcoPErOKqTY/SgqMG2aJ0gI/AAAAAAAACNs/2K9vqYmynT4/s400/5.png&quot; style=&quot;cursor:pointer; cursor:hand;width: 450px; height: 293px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5335230757886087682&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;(6) &lt;/span&gt;Now we are set for using the rule. Let us move to our view page where our form is located. There we will write the function for validation. It will be like the figure below.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_UcoPErOKqTY/SgqMo0hnyVI/AAAAAAAACN0/AA5s39-yDNQ/s400/6.png&quot; style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 450px; height: 288px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5335231341496093010&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;(7) &lt;/span&gt;Now in application, if someone put any of the restricted character in the input box, he will be notified to check that and the form will not be submitted.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_UcoPErOKqTY/SgqNHbuGkUI/AAAAAAAACN8/NxzX7W08mtc/s400/7.png&quot; style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 258px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5335231867413500226&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This way we can validate our forms by any of the regular expression check.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As I am still learning, update on this topic is needed and I will modify if I get updated knowledge on this. So, more to come next.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/7686378609501317548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/05/form-validation-by-jquery-learning.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/7686378609501317548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/7686378609501317548'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/05/form-validation-by-jquery-learning.html' title='Form Validation By JQuery [Learning JQuery]'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_UcoPErOKqTY/Sgp0Lei3K1I/AAAAAAAACNE/HkEqnw-kCtA/s72-c/1.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-3364860930337579409</id><published>2009-02-25T22:38:00.006+06:00</published><updated>2009-06-30T17:32:40.493+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="zce"/><category scheme="http://www.blogger.com/atom/ns#" term="zend certification preparation"/><category scheme="http://www.blogger.com/atom/ns#" term="zend syllabus"/><title type='text'>PHP Basics : Part I</title><content type='html'>Talking about the basics of a programming language the things that come into minds at a glance may be  --&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Syntax, &lt;/li&gt;&lt;li&gt;Language Construct, &lt;/li&gt;&lt;li&gt;Data Types, &lt;/li&gt;&lt;li&gt;Variables, &lt;/li&gt;&lt;li&gt;Constants, &lt;/li&gt;&lt;li&gt;Operators, &lt;/li&gt;&lt;li&gt;Control Structure, &lt;/li&gt;&lt;li&gt;Errors and Errors Management, etc.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Syntax:      &lt;/span&gt;The syntax of php is taken from many common language, most dominantly from C and then Perl. Now as the object oriented system is introduced, java like syntax is adjusted too.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;&gt;&gt;Tags&lt;/span&gt; -- Php is used as pure programming language. But most often this can be used as&lt;br /&gt;text processor or scripting language. For this, php code can be inserted directly into text or&lt;br /&gt;markup languages using special sets of tags. Tags are to indicate starting and ending of a&lt;br /&gt;code block. They can be like -&lt;br /&gt;Standard Tags&lt;br /&gt;       &lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;         &lt;br /&gt;         &amp;lt;?php echo $code;?&amp;gt;&lt;br /&gt;&lt;br /&gt;       &lt;/pre&gt;&lt;br /&gt;Short Tags&lt;br /&gt;       &lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;&lt;br /&gt;          &amp;lt;?=$sdf?&amp;gt;&lt;br /&gt;&lt;br /&gt;       &lt;/pre&gt;&lt;br /&gt;Script Tags&lt;br /&gt;       &lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;&lt;br /&gt;         &amp;lt;script language=&quot;“php”&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;              ... code&lt;br /&gt;&lt;br /&gt;         &amp;lt;/script&amp;gt;&lt;br /&gt;     &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here among the tag conventions,&lt;span style=&quot;font-style: italic;&quot;&gt; standard tags&lt;/span&gt; are best too use. Because they are available&lt;br /&gt;always and by default. And there need no extra configuration to enable them. &lt;span style=&quot;font-style: italic;&quot;&gt;Short tags&lt;/span&gt;&lt;br /&gt;have some advantage like - they can be used to print the result of an expression directly to&lt;br /&gt;the script output. But they have major disadvantages like, the tags may be conflicting with&lt;br /&gt;those of xml headers. &lt;span style=&quot;font-style: italic;&quot;&gt;Script tags &lt;/span&gt;are used in HTML like javascript is used, as so many&lt;br /&gt;browsers and editors just ignored javascipt and php standard codes.&lt;br /&gt;&lt;br /&gt;There is another tag called &lt;span style=&quot;font-style: italic;&quot;&gt;Asp tag&lt;/span&gt;.  Starting with &quot;&quot;. No specific&lt;br /&gt;reason is found why this tag was introduced.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But using short tags, script tags and asp tags are not counted among &quot;GOOD&quot; programming&lt;br /&gt;practice.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;&gt;&gt;Newline Character&lt;/span&gt; -- Every character outside the php tags are interpreted as-is. So&lt;br /&gt;there comes a new line character at the finising of the php tag. But newline character is used&lt;br /&gt;as sperator between web servers HTTP request and actual data. So there raises some&lt;br /&gt;conflicts regarding that issue. So the first new line after the closing tag of php is handled by&lt;br /&gt;the parser. But to avoid conflict or errors, there is an easy way to omit the closing tag (?&gt;) .&lt;br /&gt;That is not risky because the parser allows this as perfectly legal.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;&gt;&gt;Comments&lt;/span&gt; --  Comments is an important and common part of any programming&lt;br /&gt;language. Php supports a variety of commenting style and pattern.&lt;br /&gt;They can be given as follows -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;// Single line comment&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;# Single line comment&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;/* Multi-line&lt;/li&gt;&lt;/ul&gt;              comment&lt;br /&gt;*/&lt;br /&gt;&lt;ul&gt;&lt;li&gt;/**&lt;/li&gt;&lt;/ul&gt;           * API Documentation Example&lt;br /&gt;*&lt;br /&gt;* @param string $param&lt;br /&gt;*/&lt;br /&gt;function f($param) { }&lt;br /&gt;&lt;br /&gt;Both the types of single line commenting should be ended by newline (\r or \n or \r\n) or&lt;br /&gt;by ending current php code block tag. But the later one is not encouraged to use as tehy can&lt;br /&gt;create unexpected result.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;       &gt;&gt;White Spaces Rules&lt;/span&gt; -- PHP is whitespace-insensitive, other than in some key areas.&lt;br /&gt;Actually there are no requirement to use some whitespace characters but there are some&lt;br /&gt;limitations instead. They can be stated as:&lt;br /&gt;•  No whitespace between &lt; ? and php&lt;br /&gt;•  No whitespace between keywords (e.g.: whi le, fo r, and funct ion)&lt;br /&gt;•  No whitespace between variable names and function names, (e.g.: $var name&lt;br /&gt;and function foo bar())&lt;br /&gt;&lt;br /&gt;[CONTINUED]</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/3364860930337579409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/02/php-basics-part-i.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/3364860930337579409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/3364860930337579409'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/02/php-basics-part-i.html' title='PHP Basics : Part I'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-3838014998135343895</id><published>2009-02-24T00:52:00.001+06:00</published><updated>2009-06-30T17:31:59.886+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="zce"/><category scheme="http://www.blogger.com/atom/ns#" term="zend certification preparation"/><category scheme="http://www.blogger.com/atom/ns#" term="zend syllabus"/><title type='text'>The Zend Certification Syllabus and Others</title><content type='html'>The &lt;span style=&quot;font-weight: bold;&quot;&gt;syllabus&lt;/span&gt; comes prior to the preparation. It actually defines the scope, how far or how deep we wanna go through the &lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;topics.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Before comes the syllabus, there is something to say about the question pattern. In the Exam 70 questions has to be answered in 90 minutes. There can be three major types of questions - (1.) Objective type question (only one right answer), (2.) Multiple-choice question with multiple correct answers. (3.) Questions whose answer has to be typed in. &lt;span style=&quot;font-size:85%;&quot;&gt;[&lt;a href=&quot;http://ferdous.wordpress.com/2008/07/25/all-about-zce/&quot;&gt;&lt;i&gt;source&lt;/i&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;The major question categories are 12 in numbers (till date). The categories are --&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;strong&gt;Php Basics&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Object Oriented Programming&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Strings and Patterns&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Streams and Network Programming&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Functions&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Databases and SQL&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;PHP 4/5 Differences&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Arrays&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;XML and Web Services&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Design and Theory&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Web Features&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;In the next posts, I will go through the topics, their elaborations and their study materials and my preparations about those things. The very next post will be about php basics and my preparation regarding that.&lt;br /&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/3838014998135343895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/02/zend-certification-syllabus-and-others.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/3838014998135343895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/3838014998135343895'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/02/zend-certification-syllabus-and-others.html' title='The Zend Certification Syllabus and Others'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3450537947067648487.post-3456161830358066269</id><published>2009-02-08T12:08:00.000+06:00</published><updated>2009-02-25T22:43:26.458+06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="zce"/><category scheme="http://www.blogger.com/atom/ns#" term="zend certification preparation"/><title type='text'>About Zend Certification</title><content type='html'>&lt;strong&gt;I am appearing for&lt;span style=&quot;color: rgb(204, 0, 0);&quot;&gt; &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style=&quot;color: rgb(204, 0, 0);&quot;&gt;zend certification&lt;/span&gt;&lt;span style=&quot;color: rgb(204, 0, 0);&quot;&gt; &lt;/span&gt;test &lt;/strong&gt;&lt;strong&gt;in a few days. So I wanna share my preparation docs with you. Please contribute to enrich the docs.&lt;br /&gt;&lt;br /&gt;I will gradually share the topics &lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;and how I am getting prepared for this exam.&lt;br /&gt;&lt;br /&gt;The first entry will be about syllabus and topics covered. They will be on the next post.&lt;br /&gt;&lt;br /&gt;Thank You.&lt;br /&gt;&lt;/strong&gt;</content><link rel='replies' type='application/atom+xml' href='http://nagbaba.blogspot.com/feeds/3456161830358066269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nagbaba.blogspot.com/2009/02/about-zend-certification.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/3456161830358066269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3450537947067648487/posts/default/3456161830358066269'/><link rel='alternate' type='text/html' href='http://nagbaba.blogspot.com/2009/02/about-zend-certification.html' title='About Zend Certification'/><author><name>Himel Nag Rana</name><uri>http://www.blogger.com/profile/01518546858552983207</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>