<?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: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-1074101741472197351</id><updated>2011-11-27T16:21:54.901-08:00</updated><category term='dup'/><category term='google app engine'/><category term='CPD-Result'/><category term='systemcalls'/><category term='Image'/><category term='asterisk 1.4'/><category term='nusoap'/><category term='sugarcrm'/><category term='tropo'/><category term='xargs'/><category term='conversion'/><category term='Bitmap'/><category term='unique random number'/><category term='sip'/><category term='events capture'/><category term='tiff'/><category term='awk'/><category term='find'/><category term='dup2'/><category term='c examples'/><category term='python'/><category term='Conference'/><category term='header to source tree conversion'/><category term='string comparision'/><category term='click to call'/><category term='urlfetch tutorial'/><category term='random unlimited'/><category term='wcf'/><category term='linux'/><category term='clicktocall'/><category term='perl compatible regular expressions example'/><category term='dialplan'/><category term='/dev/null'/><category term='src'/><category term='cloud computing'/><category term='appscript'/><category term='mysql'/><category term='total crap'/><category term='php'/><category term='external voicemail'/><category term='random'/><category term='voip'/><category term='utf-8'/><category term='AMI'/><category term='Resolved'/><category term='File Lock Problem'/><category term='rr'/><category term='ruli'/><category term='TIFFtoPDF'/><category term='file string replace'/><category term='pdf'/><category term='pattern matching'/><category term='asterisk'/><category term='appengine'/><category term='funny cloud computing'/><category term='urlfetch example'/><category term='dns srv'/><category term='libpcre'/><category term='directory string replace files'/><category term='string replace'/><category term='netborder call progress analyzer'/><category term='new call through call'/><category term='cloud telephony'/><category term='random unlimited length'/><category term='sample incoming call flow'/><category term='iax'/><category term='google'/><title type='text'>Kannaiyan's Code for the Day</title><subtitle type='html'>Get a new code everyday and enjoy with it.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-3838326062913485075</id><published>2011-05-16T10:27:00.000-07:00</published><updated>2011-05-16T10:27:18.460-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='appscript'/><category scheme='http://www.blogger.com/atom/ns#' term='urlfetch example'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='urlfetch tutorial'/><title type='text'>Google AppScript URLFetch and Spreasheet Example to Extract Information</title><content type='html'>Code which pulled all information through urlfetch and load it to spreadsheet.&lt;br /&gt;Simple and cute.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-js"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;function AddViewCount()&lt;br /&gt;{&lt;br /&gt;  var sheet = SpreadsheetApp.getActiveSheet();&lt;br /&gt;  var prevcount = sheet.getRange(2, 8).getValue();&lt;br /&gt;  prevcount = prevcount + 1;&lt;br /&gt;  sheet.getRange(2, 8).setValue(prevcount);&lt;br /&gt;  SpreadsheetApp.flush();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function CollectAllElectionDetails() {&lt;br /&gt;  var sheet = SpreadsheetApp.getActiveSheet();  &lt;br /&gt;  var consttotalcount = 234;&lt;br /&gt;  var rowcount = 1;&lt;br /&gt;  for(var constcount = 1; constcount &lt;= consttotalcount; constcount++)&lt;br /&gt;  {&lt;br /&gt;  var response = UrlFetchApp.fetch("http://eciresults.nic.in/ConstituencywiseS22" + constcount + ".htm");&lt;br /&gt;  var xmldoc = Xml.parse(response.getContentText(), true);&lt;br /&gt;  var root = xmldoc.getElement(); &lt;br /&gt;  var child1 = root.getElements();&lt;br /&gt;  var bodychilds = child1[1].getElements();&lt;br /&gt;  var bodychilds1 = bodychilds[0].getElements(); &lt;br /&gt;  var bodychilds11 = bodychilds1[1].getElements();&lt;br /&gt;  var bodychilds111 = bodychilds11[0].getElements();  &lt;br /&gt;  var contestants = bodychilds111[4].getElements();&lt;br /&gt;  var contestantdetails = contestants[0].getElements();&lt;br /&gt;  var call1 = contestantdetails[3].getElements();&lt;br /&gt;  var call11 = call1[1].getElements();&lt;br /&gt;  var call111 = call11[0].getElements("table");&lt;br /&gt;  var cleardetails = Xml.parse(call111[0].toXmlString(), false);&lt;br /&gt;  var rowinfo =  cleardetails.table.tr.td.div.getElements()&lt;br /&gt;  var rowinfo1 =  rowinfo[0].getElements("tr");   &lt;br /&gt;  var constname = rowinfo1[0].td.getText().replace("Tamil Nadu - ","");&lt;br /&gt;  var totalcandidates = rowinfo1.length - 3;&lt;br /&gt;  for(var count=0; count &lt; totalcandidates; count++ )&lt;br /&gt;  {&lt;br /&gt;    var candiname = rowinfo1[count+3].td[0].getText();&lt;br /&gt;    var partyname = rowinfo1[count+3].td[1].getText();&lt;br /&gt;    var totalvotes = rowinfo1[count+3].td[2].getText();&lt;br /&gt;    sheet.getRange(rowcount+1, 1).setValue(constcount);&lt;br /&gt;    sheet.getRange(rowcount+1, 2).setValue(constname);&lt;br /&gt;    sheet.getRange(rowcount+1, 3).setValue(candiname);&lt;br /&gt;    sheet.getRange(rowcount+1, 4).setValue(partyname);&lt;br /&gt;    sheet.getRange(rowcount+1, 5).setValue(totalvotes);&lt;br /&gt;    rowcount++;&lt;br /&gt;  }&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-3838326062913485075?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/3838326062913485075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=3838326062913485075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/3838326062913485075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/3838326062913485075'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2011/05/google-appscript-urlfetch-and.html' title='Google AppScript URLFetch and Spreasheet Example to Extract Information'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-7362440734273472607</id><published>2011-05-09T10:08:00.000-07:00</published><updated>2011-05-09T10:08:11.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TIFFtoPDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Resolved'/><category scheme='http://www.blogger.com/atom/ns#' term='File Lock Problem'/><category scheme='http://www.blogger.com/atom/ns#' term='Image'/><category scheme='http://www.blogger.com/atom/ns#' term='Bitmap'/><title type='text'>TIFFtoPDF conversion -  Image Bitmap File Lock Problem - Resolved</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;pre class="prettyprint lang-cs"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;   string[] files = Directory.GetFiles(faxpath, "*.tif");&lt;br /&gt;            foreach (string infilename in files)&lt;br /&gt;            {&lt;br /&gt;                PdfDocument document = new PdfDocument();                &lt;br /&gt;                StreamReader imgstreamer = new StreamReader(infilename);                &lt;br /&gt;                Bitmap bm = new Bitmap(imgstreamer.BaseStream);&lt;br /&gt;                int total = bm.GetFrameCount(FrameDimension.Page);                &lt;br /&gt;                _logger.Log("TIFtoPDFConversion", LogEntryType.Debug, "Converting TIF File: " + infilename);&lt;br /&gt;                for (Int32 k = 0; k &lt; total; k++)&lt;br /&gt;                {&lt;br /&gt;                    Bitmap bm2 = new Bitmap(infilename);&lt;br /&gt;                    bm2.SelectActiveFrame(FrameDimension.Page, k);&lt;br /&gt;                    XImage image = XImage.FromGdiPlusImage(bm2);&lt;br /&gt;                    PdfPage page1 = document.AddPage();&lt;br /&gt;&lt;br /&gt;                    // Get Image width, Height and Resolution and Set output document Width and Height in Inches&lt;br /&gt;                    page1.Width = XUnit.FromInch(image.PixelWidth / image.HorizontalResolution);&lt;br /&gt;                    page1.Height = XUnit.FromInch(image.PixelHeight / image.VerticalResolution);&lt;br /&gt;                    XGraphics gfx = XGraphics.FromPdfPage(page1, XGraphicsPdfPageOptions.Append);&lt;br /&gt;                    gfx.DrawImage(image, 0, 0);&lt;br /&gt;                    gfx.Dispose();&lt;br /&gt;                    image.Dispose();&lt;br /&gt;                    page1.Close();&lt;br /&gt;                    bm2.Dispose();&lt;br /&gt;                }&lt;br /&gt;                string pdffilename = infilename.Substring(0, infilename.ToLower().LastIndexOf(".tif") - 1) + ".pdf";&lt;br /&gt;                _logger.Log("TIFtoPDFConversion", LogEntryType.Debug, "Completed Converting TIF File: " + infilename);&lt;br /&gt;                // Save the PDF&lt;br /&gt;                document.Save(pdffilename);&lt;br /&gt;                imgstreamer.Close();&lt;br /&gt;            }       &lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;So Simple as that. Add pdfsharp in the reference nothing else to install.&lt;br /&gt;Pdfsharp can be obtained from &lt;a href="http://pdfsharp.com/PDFsharp/"&gt;PDFSharp&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-7362440734273472607?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/7362440734273472607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=7362440734273472607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/7362440734273472607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/7362440734273472607'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2011/05/tifftopdf-conversion-image-bitmap-file.html' title='TIFFtoPDF conversion -  Image Bitmap File Lock Problem - Resolved'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-8526237392266015705</id><published>2011-05-06T09:27:00.001-07:00</published><updated>2011-05-06T09:27:50.572-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utf-8'/><category scheme='http://www.blogger.com/atom/ns#' term='wcf'/><category scheme='http://www.blogger.com/atom/ns#' term='nusoap'/><title type='text'>Call a WCF Service from Linux Nusoap</title><content type='html'>&lt;pre class="prettyprint lang-php"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;include('lib/nusoap.php');&lt;br /&gt;&lt;br /&gt;$client = new nusoap_client('http://url.svc?wsdl', 'wsdl',&lt;br /&gt;                $proxyhost, $proxyport, $proxyusername, $proxypassword);&lt;br /&gt;$err = $client-&gt;getError();&lt;br /&gt;if ($err) {&lt;br /&gt;echo "Constructor error";&lt;br /&gt;exit;&lt;br /&gt;}&lt;br /&gt;$client-&gt;soap_defencoding = 'UTF-8';&lt;br /&gt;$result = $client-&gt;call('DoWork');&lt;br /&gt;echo $result['DoWorkResult'];&lt;br /&gt;//echo $client-&gt;debug_str;&lt;br /&gt;echo "\n";&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-8526237392266015705?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/8526237392266015705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=8526237392266015705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/8526237392266015705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/8526237392266015705'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2011/05/call-wcf-service-from-linux-nusoap.html' title='Call a WCF Service from Linux Nusoap'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-3233644865326149344</id><published>2011-04-20T12:42:00.000-07:00</published><updated>2011-04-20T12:44:35.695-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='tiff'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><title type='text'>TIFF to PDF Conversion using .Net - Free</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;pre class="prettyprint lang-cs"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;            string infilename = "c:\\temp\\faxsample.tif";&lt;br /&gt;            PdfDocument document = new PdfDocument();&lt;br /&gt;            Bitmap bm = new Bitmap(infilename);&lt;br /&gt;            int total = bm.GetFrameCount(FrameDimension.Page);&lt;br /&gt;            for (Int32 k = 0; k &amp;lt; total; k++)&lt;br /&gt;            {&lt;br /&gt;                Bitmap bm2 = new Bitmap(infilename);&lt;br /&gt;                bm2.SelectActiveFrame(FrameDimension.Page, k);&lt;br /&gt;                XImage image = XImage.FromGdiPlusImage(bm2);&lt;br /&gt;                PdfPage page1 = document.AddPage();&lt;br /&gt;                &lt;br /&gt;                // Get Image width, Height and Resolution and Set output document Width and Height in Inches&lt;br /&gt;                page1.Width = XUnit.FromInch(image.Width / image.HorizontalResolution);&lt;br /&gt;                page1.Height = XUnit.FromInch(image.Height / image.VerticalResolution);&lt;br /&gt;                XGraphics gfx = XGraphics.FromPdfPage(page1, XGraphicsPdfPageOptions.Append);&lt;br /&gt;                gfx.DrawImage(image, 0, 0);&lt;br /&gt;                gfx.Dispose();&lt;br /&gt;                image.Dispose();&lt;br /&gt;                page1.Close();&lt;br /&gt;                bm2.Dispose();&lt;br /&gt;            } &lt;br /&gt;            document.Save("c:\\temp\\faxsample.pdf");&lt;br /&gt;            Console.WriteLine("Total Pages: " + total);&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;So Simple as that. Add pdfsharp in the reference nothing else to install.&lt;br /&gt;Pdfsharp can be obtained from &lt;a href="http://pdfsharp.com/PDFsharp/"&gt;PDFSharp&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-3233644865326149344?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/3233644865326149344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=3233644865326149344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/3233644865326149344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/3233644865326149344'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2011/04/tiff-to-pdf-conversion-using-net-free.html' title='TIFF to PDF Conversion using .Net - Free'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-5709093052620777642</id><published>2011-04-18T10:21:00.000-07:00</published><updated>2011-04-18T10:22:31.956-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tropo'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud telephony'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='clicktocall'/><title type='text'>Tropo ClicktoCall with Conference in PHP - Cloud Telephony</title><content type='html'>&lt;pre class="prettyprint lang-php"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;$calloptions['onAnswer'] = 'secondCallInitiator';&lt;br /&gt;$calloptions['callerID'] = 'Calleridhere';&lt;br /&gt;call('+1'.$numbertodial, $calloptions);&lt;br /&gt;&lt;br /&gt;function secondCallInitiator($event)&lt;br /&gt;{&lt;br /&gt;$confid = $conferenceid;&lt;br /&gt;$confoptions['mute'] = false;&lt;br /&gt;$confoptions['playTones'] = true;&lt;br /&gt;$confoptions['leaveprompt'] = 'beep';&lt;br /&gt;$sleep(2);&lt;br /&gt;Say('Please hold');&lt;br /&gt;Conference($confid,$confoptions);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Pass two variables, numbertodail &amp; conferenceid as POST parameters.&lt;br /&gt;ClicktCall with Conference, That is so Simple to a Complex Infrastructure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-5709093052620777642?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/5709093052620777642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=5709093052620777642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/5709093052620777642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/5709093052620777642'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2011/04/tropo-clicktocall-with-conference-in.html' title='Tropo ClicktoCall with Conference in PHP - Cloud Telephony'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-6779748622306469712</id><published>2011-04-18T09:13:00.000-07:00</published><updated>2011-05-05T10:04:26.595-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tropo'/><category scheme='http://www.blogger.com/atom/ns#' term='click to call'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='clicktocall'/><title type='text'>Tropo ClicktoCall PHP Script - Cloud Internet Telephony Made Easy !</title><content type='html'>&lt;pre class="prettyprint lang-php"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;$aftercalloptions['onAnswer'] = 'onAnswerCB';&lt;br /&gt;call('+1'. agentnumber, $aftercalloptions);&lt;br /&gt;&lt;br /&gt;function onAnswerCB($event)&lt;br /&gt;{&lt;br /&gt;    global $customernumber;&lt;br /&gt;    Sleep(3);&lt;br /&gt;    transfer('+1' . $customernumber);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Cool and Pretty for a Complex Need !&lt;br /&gt;&lt;br /&gt;Initiate a call with the following URL&lt;br /&gt;https://api.tropo.com/1.0/sessions?action=create&amp;token=yourtoken&amp;agentnumber=agentnum&amp;customernumber=custnum&lt;br /&gt;&lt;br /&gt;Ensoy !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-6779748622306469712?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/6779748622306469712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=6779748622306469712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/6779748622306469712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/6779748622306469712'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2011/04/tropo-clicktocall-php-script-cloud.html' title='Tropo ClicktoCall PHP Script - Cloud Internet Telephony Made Easy !'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-7460306414728817183</id><published>2010-09-27T09:46:00.000-07:00</published><updated>2010-09-27T09:46:26.033-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new call through call'/><category scheme='http://www.blogger.com/atom/ns#' term='sugarcrm'/><title type='text'>Adding a New Call to the SugarCRM through Code</title><content type='html'>Ass a new Call to the SugarCRM through Code.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-php"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;                    $call = new Call();&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;direction = 'Outbound';&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;status = 'Planned';&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;contact_id = $contactid;&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;duration_hours = '0';&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;duration_minutes = '15';&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;date_start = $date; // (mm/dd/yyyy hh:mmTT) format&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;name = $subjectstring;&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;assigned_user_id = $current_user-&amp;gt;id;&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;team_id = '1';&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;team_set_id = '1';&lt;br /&gt;&lt;br /&gt;                    $call-&amp;gt;save();&lt;br /&gt;&lt;br /&gt;                // Create the relationship to Contact to appear in the Contact Subpanel&lt;br /&gt;&lt;br /&gt;                    $contact = new Contact();&lt;br /&gt;&lt;br /&gt;                    $contact-&amp;gt;retrieve($call-&amp;gt;contact_id);&lt;br /&gt;&lt;br /&gt;                    $contact-&amp;gt;load_relationship('calls');&lt;br /&gt;&lt;br /&gt;                    $contact-&amp;gt;calls-&amp;gt;add($call-&amp;gt;id);&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-7460306414728817183?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/7460306414728817183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=7460306414728817183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/7460306414728817183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/7460306414728817183'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2010/09/adding-new-call-to-sugarcrm-through.html' title='Adding a New Call to the SugarCRM through Code'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-6108114730315466506</id><published>2010-06-02T15:44:00.000-07:00</published><updated>2010-06-03T08:04:55.205-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='events capture'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk 1.4'/><category scheme='http://www.blogger.com/atom/ns#' term='sample incoming call flow'/><title type='text'>Asterisk Events with Timestamp 1.4</title><content type='html'>The below events is the incoming call to asterisk and Plays a prompt and does a Echo after that. &lt;br /&gt;&lt;br /&gt;Event: Newchannel&lt;br /&gt;Privilege: call,all&lt;br /&gt;Timestamp: 1261277764.070399&lt;br /&gt;Channel: SIP/broadvox-0a7bde90&lt;br /&gt;State: Down&lt;br /&gt;CallerIDNum: &lt;unknown&gt;&lt;br /&gt;CallerIDName: &lt;unknown&gt;&lt;br /&gt;Uniqueid: 1261277764.44&lt;br /&gt;&lt;br /&gt;Event: Newcallerid&lt;br /&gt;Privilege: call,all&lt;br /&gt;Timestamp: 1261277764.070456&lt;br /&gt;Channel: SIP/broadvox-0a7bde90&lt;br /&gt;CallerID: &lt;unknown&gt;&lt;br /&gt;CallerIDName: &lt;unknown&gt;&lt;br /&gt;Uniqueid: 1261277764.44&lt;br /&gt;CID-CallingPres: 0 (Presentation Allowed, Not Screened)&lt;br /&gt;&lt;br /&gt;Event: Newstate&lt;br /&gt;Privilege: call,all&lt;br /&gt;Timestamp: 1261277765.729062&lt;br /&gt;Channel: SIP/broadvox-0a7bde90&lt;br /&gt;State: Up&lt;br /&gt;CallerID: &lt;unknown&gt;&lt;br /&gt;CallerIDName: &lt;unknown&gt;&lt;br /&gt;Uniqueid: 1261277764.44&lt;br /&gt;&lt;br /&gt;Event: OriginateResponse&lt;br /&gt;Privilege: call,all&lt;br /&gt;Timestamp: 1261277765.729085&lt;br /&gt;Response: Success&lt;br /&gt;Channel: SIP/broadvox-0a7bde90&lt;br /&gt;Context: broadvoxcontext&lt;br /&gt;Exten: 13038598130&lt;br /&gt;Reason: 4&lt;br /&gt;Uniqueid: 1261277764.44&lt;br /&gt;CallerID: &lt;unknown&gt;&lt;br /&gt;CallerIDNum: &lt;unknown&gt;&lt;br /&gt;CallerIDName: &lt;unknown&gt;&lt;br /&gt;&lt;br /&gt;Event: Newexten&lt;br /&gt;Privilege: call,all&lt;br /&gt;Timestamp: 1261277765.729144&lt;br /&gt;Channel: SIP/broadvox-0a7bde90&lt;br /&gt;Context: broadvoxcontext&lt;br /&gt;Extension: 13038598130&lt;br /&gt;Priority: 1&lt;br /&gt;Application: Answer&lt;br /&gt;AppData: 4&lt;br /&gt;Uniqueid: 1261277764.44&lt;br /&gt;&lt;br /&gt;Event: Newexten&lt;br /&gt;Privilege: call,all&lt;br /&gt;Timestamp: 1261277765.729187&lt;br /&gt;Channel: SIP/broadvox-0a7bde90&lt;br /&gt;Context: broadvoxcontext&lt;br /&gt;Extension: 13038598130&lt;br /&gt;Priority: 2&lt;br /&gt;Application: Read&lt;br /&gt;AppData: DESTNO|vm-enter-num-to-call&lt;br /&gt;Uniqueid: 1261277764.44&lt;br /&gt;&lt;br /&gt;Event: Newexten&lt;br /&gt;Privilege: call,all&lt;br /&gt;Timestamp: 1261277778.705334&lt;br /&gt;Channel: SIP/broadvox-0a7bde90&lt;br /&gt;Context: broadvoxcontext&lt;br /&gt;Extension: 13038598130&lt;br /&gt;Priority: 3&lt;br /&gt;Application: SayDigits&lt;br /&gt;AppData: 12345&lt;br /&gt;Uniqueid: 1261277764.44&lt;br /&gt;&lt;br /&gt;Event: Newexten&lt;br /&gt;Privilege: call,all&lt;br /&gt;Timestamp: 1261277781.847347&lt;br /&gt;Channel: SIP/broadvox-0a7bde90&lt;br /&gt;Context: broadvoxcontext&lt;br /&gt;Extension: 13038598130&lt;br /&gt;Priority: 4&lt;br /&gt;Application: Echo&lt;br /&gt;AppData:&lt;br /&gt;Uniqueid: 1261277764.44&lt;br /&gt;&lt;br /&gt;Event: Hangup&lt;br /&gt;Privilege: call,all&lt;br /&gt;Timestamp: 1261277785.813339&lt;br /&gt;Channel: SIP/broadvox-0a7bde90&lt;br /&gt;Uniqueid: 1261277764.44&lt;br /&gt;Cause: 16&lt;br /&gt;Cause-txt: Normal Clearing&lt;br /&gt;&lt;/unknown&gt;&lt;/unknown&gt;&lt;/unknown&gt;&lt;/unknown&gt;&lt;/unknown&gt;&lt;/unknown&gt;&lt;/unknown&gt;&lt;/unknown&gt;&lt;/unknown&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-6108114730315466506?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/6108114730315466506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=6108114730315466506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/6108114730315466506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/6108114730315466506'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2010/06/asterisk-events-with-timestamp-14.html' title='Asterisk Events with Timestamp 1.4'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-1490587893777221767</id><published>2010-05-01T22:10:00.000-07:00</published><updated>2010-05-01T22:10:01.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='total crap'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>Unusable Google App Engine - Time wasting efforts with Google App Engine</title><content type='html'>ok. I tried to inserted the data somehow each record with a new request and that worked fine. Now I tried to delete the data.&lt;br /&gt;&lt;br /&gt;Tried to delete all at once. Did not work. Tried 100 at a time, Did not work.&lt;br /&gt;Tried even 10 at a time, did not work. Deleting one by one that worked. Stupid Stuff !&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt; javax.jdo.Query q = pm.newQuery(Agent.class);&lt;br /&gt;&lt;br /&gt;        Collection results = (Collection) q.execute();&lt;br /&gt;&lt;br /&gt;        int deletecount =0;&lt;br /&gt;&lt;br /&gt;        Iterator iter = results.iterator();&lt;br /&gt;&lt;br /&gt;           while (iter.hasNext()) {&lt;br /&gt;&lt;br /&gt;               if( deletecount &amp;gt; 1 )&lt;br /&gt;&lt;br /&gt;                   break;&lt;br /&gt;&lt;br /&gt;               pm.deletePersistent(iter.next());             &lt;br /&gt;&lt;br /&gt;               deletecount++;&lt;br /&gt;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;If I try to delete one by one, then my quota got over. :)&amp;nbsp; I used to delete millions of records at a time with the existing Databases. Google Datastore or Big Table (I would say funny table) it is a total crap here and totally unusable for enterprise.&lt;br /&gt;&lt;br /&gt;I use Microsoft Windows just for browsing and playing games. (Sometimes it is not even worth to play games). Same here too. So far felt comfortable with Google technologies, the app engine is a total crap and the datastore is too crappy. So if you want to use cloud computing and don't deal with huge data at the same time, just like writing personal home based applications, then I would say, opt for Google Appengine. Otherwise keey away and don't waste your time.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_HE69wLphdQA/S90GhdTPBJI/AAAAAAAABEs/KkSKhO1K1X4/s1600/quotadashboard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="403" src="http://4.bp.blogspot.com/_HE69wLphdQA/S90GhdTPBJI/AAAAAAAABEs/KkSKhO1K1X4/s640/quotadashboard.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;More over from the above graph I have still lot of CPU hours left in Datastore CPU Time, I don't know what is the fun of limitation out there. So Daily quota is not Daily Quote, it is per second Quota. Just for marketing purposes they come with the big numbers above.&lt;br /&gt;&lt;br /&gt;With the above facts, it becomes unusable for me to work with except to host static files and funny websites. Not yet ready for enterprise and not so reliable though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-1490587893777221767?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/1490587893777221767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=1490587893777221767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/1490587893777221767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/1490587893777221767'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2010/05/unusable-google-app-engine-time-wasting.html' title='Unusable Google App Engine - Time wasting efforts with Google App Engine'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HE69wLphdQA/S90GhdTPBJI/AAAAAAAABEs/KkSKhO1K1X4/s72-c/quotadashboard.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-2319049365052350517</id><published>2010-05-01T16:31:00.000-07:00</published><updated>2010-05-01T16:31:20.027-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='appengine'/><title type='text'>Experience with Google App Engine Data Store</title><content type='html'>Tried the Google's cloud platform with a simple example to store data.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;package com.musugundan;&lt;br /&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;import javax.jdo.PersistenceManager;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;@SuppressWarnings("serial")&lt;br /&gt;public class MusugundanServlet extends HttpServlet {&lt;br /&gt; public void doGet(HttpServletRequest req, HttpServletResponse resp)&lt;br /&gt;   throws IOException {&lt;br /&gt;  resp.setContentType("text/plain");&lt;br /&gt;  resp.addHeader("Refresh", "0; URL=/musugundan");&lt;br /&gt;  resp.getWriter().println("Adding 100 records, Starting time " + new Date());&lt;br /&gt;  PersistenceManager pm = PMF.get().getPersistenceManager();&lt;br /&gt;  resp.flushBuffer();&lt;br /&gt;        // &lt;br /&gt;                int maxrecords = 1000;&lt;br /&gt;  for(long i=1;i&lt;1000; i++)&lt;br /&gt;  {&lt;br /&gt;   Agent ag = new Agent("firstname" + i ,"lastname" + i,new Date());&lt;br /&gt;   resp.getWriter().println("Writing Record :" + i );&lt;br /&gt;   resp.flushBuffer();&lt;br /&gt;            pm.makePersistent(ag);&lt;br /&gt;  }    &lt;br /&gt;        resp.getWriter().println("Added 100  records, Ending time " + new Date());&lt;br /&gt;        resp.flushBuffer();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;When I set the maxrecords to 1000. It is error always. Means I cannot create 1000 records at a stretch. &lt;br /&gt;&lt;br /&gt;I changed to 100. The timing went to 12 seconds to 25 seconds.&lt;br /&gt;&lt;br /&gt;Change it to 1 and open multiple browsers with the instance of 100. It went on smoothly. Creating single record in a single request is pretty fast.&lt;br /&gt;&lt;br /&gt;In Cloud computing make big things in a simpler way. That way it can work fast for its distributed nature of resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-2319049365052350517?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/2319049365052350517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=2319049365052350517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/2319049365052350517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/2319049365052350517'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2010/05/experience-with-google-app-engine-data.html' title='Experience with Google App Engine Data Store'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-962531838230696386</id><published>2009-07-15T13:17:00.001-07:00</published><updated>2009-07-15T13:36:04.182-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='AMI'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><title type='text'>Asterisk Manager Interface to Python</title><content type='html'>I was thinking bit strange about python String Handling and doing advanced operations. It is very hunger for strings and handle things in a neat way.&lt;br /&gt;&lt;br /&gt;Eventhough there are python libraries available for Asterisk. Handling it in our code natively gives us more comfort.&lt;br /&gt;&lt;br /&gt;Below is the code connects to AMI (Asterisk Manager Interface) and prints all the events which it receives from asterisk.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-python"&gt;&lt;code&gt;#!/usr/bin/env python&lt;br /&gt;&lt;br /&gt;import socket&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;s.connect((&amp;quot;127.0.0.1&amp;quot;,5038))&lt;br /&gt;s.settimeout(.5)&lt;br /&gt;file = s.makefile(&amp;quot;rw&amp;quot;,8096)&lt;br /&gt;file.write(&amp;quot;Action: Login\r\nUsername: username\r\nSecret: secret\r\nEvents: On\r\n\r\n&amp;quot;)&lt;br /&gt;file.flush()&lt;br /&gt;print &amp;quot;Starting to Receive ...\n&amp;quot;&lt;br /&gt;AVDict = {}&lt;br /&gt;&lt;br /&gt;while 1:&lt;br /&gt;  try:&lt;br /&gt;          data = file.readline()&lt;br /&gt;          results = data.strip().split(&amp;quot;: &amp;quot;)&lt;br /&gt;&lt;br /&gt;          try:&lt;br /&gt;                AVDict[results[0]].append(results[1])&lt;br /&gt;          except KeyError:&lt;br /&gt;                AVDict[results[0]] = results[1];&lt;br /&gt;          except AttributeError:&lt;br /&gt;                continue;&lt;br /&gt;          except:&lt;br /&gt;                print &amp;quot;[1001] &amp;quot;, sys.exc_info()[0]&lt;br /&gt;&lt;br /&gt;  except IndexError:&lt;br /&gt;          try:&lt;br /&gt;                  print &amp;quot;AVDict is:&amp;quot;, AVDict&lt;br /&gt;                  AVDict.clear()&lt;br /&gt;                  continue&lt;br /&gt;          except:&lt;br /&gt;                  try:&lt;br /&gt;                        del AVDict[:]&lt;br /&gt;                  except TypeError:&lt;br /&gt;                        continue;&lt;br /&gt;                  except:&lt;br /&gt;                        print &amp;quot;[1003]  &amp;quot;, sys.exc_info()[0]&lt;br /&gt;                        continue;&lt;br /&gt;  except:&lt;br /&gt;        #print &amp;quot;[1004]  &amp;quot;, sys.exc_info()[0]&lt;br /&gt;        continue;&lt;br /&gt;&lt;br /&gt;file.close()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Enjoy !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-962531838230696386?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/962531838230696386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=962531838230696386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/962531838230696386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/962531838230696386'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2009/07/asterisk-manager-interface-to-python.html' title='Asterisk Manager Interface to Python'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-6088289654687559495</id><published>2009-06-24T11:27:00.000-07:00</published><updated>2009-06-24T11:35:23.718-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CPD-Result'/><category scheme='http://www.blogger.com/atom/ns#' term='dialplan'/><category scheme='http://www.blogger.com/atom/ns#' term='netborder call progress analyzer'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><title type='text'>Getting the result of  Netborder Call Progress Analyzer to an Asterisk variable</title><content type='html'>/* Parse contact header for continued conversation */&lt;br /&gt;            /* When we get 200 OK, we know which device (and IP) to contact for this call */&lt;br /&gt;            /* This is important when we have a SIP proxy between us and the phone */&lt;br /&gt;            if (outgoing) {&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  int cpdstart=0;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt; const char *cpdresult = __get_header(req,"CPD-Result",&amp;amp;cpdstart);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  if (!ast_strlen_zero(cpdresult))&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;pbx_builtin_setvar_helper(p-&gt;owner, "CPDRESULT", cpdresult);&lt;/span&gt;&lt;br /&gt;                    update_call_counter(p, DEC_CALL_RINGING);&lt;br /&gt;&lt;br /&gt;Add the above bold code in chan_sip.c and you will get the Call Progress Detection result in asterisk Dial plan.&lt;br /&gt;&lt;br /&gt;If you originate a call through AMI,  with the dialplan,&lt;br /&gt;&lt;br /&gt;exten =&gt; _8.,1,Answer&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;exten =&gt; _8.,2,Noop(${CPDRESULT})&lt;/span&gt;&lt;br /&gt;exten =&gt; _8.,3,Echo&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You will see in the asterisk console similar to this,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    -- Executing [8dfgdfgdfgdfgdgdgdfgd@something:1] Answer("SIP/963258-10058d50", "") in new stack&lt;br /&gt;    -- &lt;span style="font-weight: bold;"&gt;Executing [8dfgdfgdfgdfgdgdgdfgd@something:2] NoOp("SIP/963258-10058d50", "Answering-Machine") in new stack&lt;/span&gt;&lt;br /&gt;    -- Executing [8dfgdfgdfgdfgdgdgdfgd@something:3] Echo("SIP/963258-10058d50", "") in new stack&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In this case it is Answering-Machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-6088289654687559495?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/6088289654687559495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=6088289654687559495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/6088289654687559495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/6088289654687559495'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2009/06/getting-result-of-netborder-call.html' title='Getting the result of  Netborder Call Progress Analyzer to an Asterisk variable'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-6337309208317269486</id><published>2009-06-24T09:45:00.000-07:00</published><updated>2009-06-24T09:46:49.428-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='events capture'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><title type='text'>Asterisk How to Capture Events and Handle it with PHP easily, works with all 1.2, 1.4 &amp; 1.6</title><content type='html'>PHP makes the life easily when it comes to string parsing. Just enjoy to handle the events from asterisk.&lt;br /&gt;&lt;br /&gt;#!/usr/bin/php -q&lt;br /&gt;&lt;br /&gt;ob_implicit_flush(false);&lt;br /&gt;&lt;br /&gt;$socket = fsockopen("hostname or ip","port", $errornum, $errorstr);&lt;br /&gt;if(!$socket) {&lt;br /&gt;       print "Couldn't open socket. Error #" . $errornum . ": " . $errorstr;&lt;br /&gt;} else {&lt;br /&gt;       fputs($socket, "Action: Login\r\n");&lt;br /&gt;       fputs($socket, "UserName: username\r\n");&lt;br /&gt;       fputs($socket, "Secret: password\r\n\r\n");&lt;br /&gt;       fputs($socket, "Action: Events\r\n");&lt;br /&gt;       fputs($socket, "EventMask: on\r\n\r\n");&lt;br /&gt;&lt;br /&gt;       fgets($socket); // Ignore the welcome message&lt;br /&gt;&lt;br /&gt;       $change = false;&lt;br /&gt;       $agentid = NULL;&lt;br /&gt;       $agentchannel = NULL;&lt;br /&gt;       $login = NULL;&lt;br /&gt;&lt;br /&gt;       while(true)&lt;br /&gt;       {&lt;br /&gt;               while(!feof($socket) )&lt;br /&gt;               {&lt;br /&gt;&lt;br /&gt;                       $readbuf = "";&lt;br /&gt;                       $resp = fread($socket,8192);&lt;br /&gt;                       $readbuf .= $resp;&lt;br /&gt;                       $allevents = split("\r\n\r\n",$readbuf);&lt;br /&gt;                       foreach($allevents as $event)&lt;br /&gt;                       {&lt;br /&gt;                               $eventdetails = split("\r\n",$event);&lt;br /&gt;                               $event_assoc = "";&lt;br /&gt;                               foreach($eventdetails as $value ) {&lt;br /&gt;                                       $namevalue = split(": ",$value);&lt;br /&gt;                                       $event_assoc[$namevalue[0]] = $namevalue[1];&lt;br /&gt;                               }&lt;br /&gt;                               switch( $event_assoc['Event'] )&lt;br /&gt;                               {&lt;br /&gt;                                       case 'Link':  // Calls getting bridged&lt;br /&gt;                                        break;&lt;br /&gt;&lt;br /&gt;                                       default:&lt;br /&gt;                                       if( !empty($event_assoc['Event']) )&lt;br /&gt;                                               print_r($event_assoc);&lt;br /&gt;                               }&lt;br /&gt;                       }&lt;br /&gt;               fputs($socket, "Action: Ping\r\n\r\n");&lt;br /&gt;               usleep(1000000);&lt;br /&gt;               }&lt;br /&gt;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-6337309208317269486?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/6337309208317269486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=6337309208317269486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/6337309208317269486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/6337309208317269486'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2009/06/asterisk-how-to-capture-events-and.html' title='Asterisk How to Capture Events and Handle it with PHP easily, works with all 1.2, 1.4 &amp; 1.6'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-271711725700899629</id><published>2009-04-21T13:32:00.000-07:00</published><updated>2009-04-21T14:17:22.981-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='external voicemail'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><title type='text'>Asterisk 1.2 , 1.4 &amp; 1.6 Mp3 Voicemail using lame</title><content type='html'>Google Code checkout:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;svn co http://codeoftheday.googlecode.com/svn/trunk/21April2009 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line in voicemail.conf&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;externnotify=/var/lib/asterisk/agi-bin/sendvoicemail.php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;i&gt;#!/usr/bin/php&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;/*&lt;br /&gt;Released under Public Domain. Feel Free to modify and use it.&lt;br /&gt;*/&lt;br /&gt;mb_language('uni');&lt;br /&gt;mb_internal_encoding('UTF-8');&lt;br /&gt;require("class.phpmailer.php");&lt;br /&gt;&lt;br /&gt;@mysql_connect("localhost","sqlusername","sqlpassword");&lt;br /&gt;$dbselect = @mysql_select_db("asterisktable");&lt;br /&gt;&lt;br /&gt;$voicemaildir = "/var/spool/asterisk/voicemail/" . $argv[1] . "/";&lt;br /&gt;&lt;br /&gt;$sfilename = sprintf($voicemaildir .&lt;br /&gt;"%s/INBOX/msg%04d.wav",$argv[2],$argv[3]-1);&lt;br /&gt;&lt;br /&gt;$dfilename = sprintf($voicemaildir .&lt;br /&gt;"%s/INBOX/msg%04d.mp3",$argv[2],$argv[3]-1);&lt;br /&gt;&lt;br /&gt;$infofilename = sprintf($voicemaildir .&lt;br /&gt;"%s/INBOX/msg%04d.txt",$argv[2],$argv[3]-1);&lt;br /&gt;&lt;br /&gt;system("lame -V2 $sfilename $dfilename");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$stmt = sprintf("Select * from voicemail_users where mailbox='%s' and&lt;br /&gt;context='%s'",$argv[2],$argv[1]);&lt;br /&gt;$result = mysql_query($stmt);&lt;br /&gt;if( mysql_num_rows($result) == 0 )&lt;br /&gt;{&lt;br /&gt;exit;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$row = mysql_fetch_assoc($result);&lt;br /&gt;$rcptemail = $row['email'];&lt;br /&gt;$rcptname = $row['fullname'];&lt;br /&gt;&lt;br /&gt;$msginfo = parse_ini_file($infofilename);&lt;br /&gt;$mail = new PHPMailer();&lt;br /&gt;$mail-&amp;gt;From = "noreply@voicetoemail.com";&lt;br /&gt;$mail-&amp;gt;FromName = "VoicetoEmail";&lt;br /&gt;$mail-&amp;gt;AddAddress($rcptemail, $rcptname);&lt;br /&gt;$mail-&amp;gt;AddReplyTo("noreply@voicetoemail.com", "VoicetoEmail");&lt;br /&gt;$mail-&amp;gt;WordWrap = 50; // set word wrap to 50 characters&lt;br /&gt;$mail-&amp;gt;AddAttachment($dfilename); // add attachments&lt;br /&gt;$mail-&amp;gt;IsHTML(true); // set email format to HTML&lt;br /&gt;&lt;br /&gt;$mail-&amp;gt;Subject = "Voicemail from " . $msginfo['callerid'];&lt;br /&gt;$mail-&amp;gt;Body = "Dear " . $rcptname . ",\n&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Attached is the voice received&lt;br /&gt;from " . $msginfo['callerid'] . "\n&amp;lt;br&amp;gt;Date &amp;amp; Time:" . $msginfo['origdate'] .&lt;br /&gt;"\n\n&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Support,&amp;lt;br&amp;gt;\nhttp://www.CalltoEmail.com";&lt;br /&gt;$mail-&amp;gt;AltBody = $mail-&amp;gt;Body;&lt;br /&gt;$mail-&amp;gt;Send();&lt;br /&gt;&lt;br /&gt;system("rm -rf $sfilename");&lt;br /&gt;system("rm -rf $dfilename");&lt;br /&gt;system("rm -rf $infofilename");&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt; &lt;/i&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-271711725700899629?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/271711725700899629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=271711725700899629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/271711725700899629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/271711725700899629'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2009/04/asterisk-12-14-16-external-voicemail.html' title='Asterisk 1.2 , 1.4 &amp; 1.6 Mp3 Voicemail using lame'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-7676822694731876670</id><published>2008-10-30T10:13:00.000-07:00</published><updated>2008-10-30T10:18:26.686-07:00</updated><title type='text'>.spec file for sqlite3 for RPM or LTIB</title><content type='html'>Was searching for sqlite3 .spec file for LTIB and here is one. If there are anything need to be changed to make it generic, please share it across.&lt;br /&gt;&lt;br /&gt;%define pfx /opt/freescale/rootfs/%{_target_cpu}&lt;br /&gt;%define __os_install_post %{nil}&lt;br /&gt;&lt;br /&gt;Summary : SQLite is a C library that implements an embeddable SQL database engine&lt;br /&gt;Name : sqlite&lt;br /&gt;Version : 3.6.4&lt;br /&gt;Release : 1&lt;br /&gt;License : Public Domain&lt;br /&gt;Vendor : Sqlite&lt;br /&gt;Packager : Kannaiyan&lt;br /&gt;Group : System/Libraries&lt;br /&gt;Source : %{name}-%{version}.tar.gz&lt;br /&gt;BuildRoot : %{_tmppath}/%{name}&lt;br /&gt;Prefix : %{pfx}&lt;br /&gt;&lt;br /&gt;%Description&lt;br /&gt;SQLite is a software library that implements a self-contained, serverless,&lt;br /&gt;zero-configuration, transactional SQL database engine.&lt;br /&gt;Programs that link with the SQLite library can have SQL database access&lt;br /&gt;without running a separate RDBMS process. The distribution comes with a&lt;br /&gt;standalone command-line access program (sqlite) that can be used to&lt;br /&gt;administer an SQLite database and which serves as an example of how to&lt;br /&gt;use the SQLite library.&lt;br /&gt;&lt;br /&gt;%Prep&lt;br /&gt;%setup&lt;br /&gt;&lt;br /&gt;%Build&lt;br /&gt;export BUILD_CC=/usr/bin/gcc&lt;br /&gt;./configure --prefix=%{_prefix} --host=$CFGHOST --build=%{_build} --mandir=%{_mandir} --infodir=%{_infodir}&lt;br /&gt;make&lt;br /&gt;&lt;br /&gt;%Install&lt;br /&gt;rm -rf $RPM_BUILD_ROOT&lt;br /&gt;make install DESTDIR=$RPM_BUILD_ROOT/%{pfx}&lt;br /&gt;rm -f $RPM_BUILD_ROOT/%{pfx}/%{_prefix}/lib/*.la&lt;br /&gt;&lt;br /&gt;%Clean&lt;br /&gt;rm -rf $RPM_BUILD_ROOT&lt;br /&gt;&lt;br /&gt;%Files&lt;br /&gt;%defattr(-,root,root)&lt;br /&gt;%{pfx}/*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-7676822694731876670?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/7676822694731876670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=7676822694731876670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/7676822694731876670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/7676822694731876670'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2008/10/spec-file-for-sqlite3-for-rpm-or-ltib.html' title='.spec file for sqlite3 for RPM or LTIB'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-2577809726748446635</id><published>2007-08-21T15:35:00.000-07:00</published><updated>2007-08-21T15:47:04.420-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libpcre'/><category scheme='http://www.blogger.com/atom/ns#' term='string comparision'/><category scheme='http://www.blogger.com/atom/ns#' term='c examples'/><category scheme='http://www.blogger.com/atom/ns#' term='pattern matching'/><category scheme='http://www.blogger.com/atom/ns#' term='perl compatible regular expressions example'/><title type='text'>Pattern Matching with PCRE Library</title><content type='html'>Pattern matching is wonderful with Perl and when it is comes to C it is nice to build wonderful applications.&lt;br /&gt;&lt;br /&gt;#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;time.h&amp;gt;&lt;br /&gt;#include &amp;lt;locale.h&amp;gt;&lt;br /&gt;#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;#include &amp;lt;pcre.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main(int argc,char *argv[])&lt;br /&gt;{&lt;br /&gt;    pcre *re;&lt;br /&gt;    char cgets[250];&lt;br /&gt;    const char *error;&lt;br /&gt;    int erroffset;&lt;br /&gt;    int retexec;&lt;br /&gt;    re = pcre_compile("^(gnayiru|thingal|chevvai|budhan|viyazhan|velli|sani)$",0,&amp;error,&amp;amp;erroffset,NULL);&lt;br /&gt;    if( re )&lt;br /&gt;    {&lt;br /&gt;    while(1){&lt;br /&gt;    printf("Enter the details you wish to match:");&lt;br /&gt;    fgets(cgets,250,stdin);&lt;br /&gt;    cgets[strlen(cgets)-1] = '\0';&lt;br /&gt;    retexec = pcre_exec(re,NULL,cgets,strlen(cgets),0,PCRE_PARTIAL,NULL,0);&lt;br /&gt;       switch( retexec)&lt;br /&gt;       {&lt;br /&gt;       case PCRE_ERROR_NOMATCH:&lt;br /&gt;           printf("No Matches\n");&lt;br /&gt;           break;&lt;br /&gt;       case PCRE_ERROR_PARTIAL:&lt;br /&gt;           printf("Partial Match\n");&lt;br /&gt;           break;&lt;br /&gt;       case 0:&lt;br /&gt;           printf("Perfect Match\n");&lt;br /&gt;           break;&lt;br /&gt;       default:&lt;br /&gt;           printf("Error Code: %d\n",retexec);&lt;br /&gt;           break;&lt;br /&gt;       }&lt;br /&gt;    }&lt;br /&gt;    } else  {&lt;br /&gt;           printf("Error in Regex Compilation");&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Output here:&lt;br /&gt;&lt;br /&gt;[root@localhost 21Aug2007]# ./nkans.out&lt;br /&gt;Enter the details you wish to match:thi&lt;br /&gt;Partial Match&lt;br /&gt;Enter the details you wish to match:thing&lt;br /&gt;Partial Match&lt;br /&gt;Enter the details you wish to match:thingal&lt;br /&gt;Perfect Match&lt;br /&gt;Enter the details you wish to match:fldjlsjfl&lt;br /&gt;No Matches&lt;br /&gt;Enter the details you wish to match:&lt;br /&gt;&lt;br /&gt;Google Code checkout:&lt;br /&gt;&lt;br /&gt;svn co http://codeoftheday.googlecode.com/svn/trunk/21Aug2007&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-2577809726748446635?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/2577809726748446635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=2577809726748446635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/2577809726748446635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/2577809726748446635'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2007/08/pattern-matching-with-pcre-library.html' title='Pattern Matching with PCRE Library'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-2847114643268458211</id><published>2007-08-19T00:04:00.000-07:00</published><updated>2007-08-19T08:19:46.878-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iax'/><category scheme='http://www.blogger.com/atom/ns#' term='sip'/><category scheme='http://www.blogger.com/atom/ns#' term='dns srv'/><category scheme='http://www.blogger.com/atom/ns#' term='rr'/><category scheme='http://www.blogger.com/atom/ns#' term='voip'/><category scheme='http://www.blogger.com/atom/ns#' term='ruli'/><category scheme='http://www.blogger.com/atom/ns#' term='src'/><title type='text'>Getting DNS SRV Records for voip through PHP</title><content type='html'>It is important for the internet service to automatically locate the services at the moment. Just use this code to get the voip protocols service records from the DNS servers.&lt;br /&gt;&lt;br /&gt;#!/usr/bin/php&lt;br /&gt;&lt; ?php&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$domain = "pulver.com";&lt;br /&gt;&lt;br /&gt;$voipprotocol =  array("sip","iax");&lt;br /&gt;$transportproto = array("udp","tcp");&lt;br /&gt;&lt;br /&gt;foreach($voipprotocol as $voipprot)&lt;br /&gt;{&lt;br /&gt;   foreach($transportproto as $trprot)&lt;br /&gt;   {&lt;br /&gt;        $voipdomain = "_" . $voipprot . "._" . $trprot  . "." .  $domain;&lt;br /&gt;        echo "Searching $voipdomain\n";&lt;br /&gt;        $rootinfo = dns_get_record($voipdomain,DNS_ALL, $nsinfo, $addinfo);&lt;br /&gt;        //print_r($rootinfo);&lt;br /&gt;        foreach($rootinfo as $srootinfo)&lt;br /&gt;                echo  strtoupper($voipprot) . " " . strtoupper($trprot) . " HOST: " .&lt;br /&gt;                 $srootinfo['target'] . ":" . $srootinfo['port'] . "\n";&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;You can download using svn with the following command,&lt;br /&gt;&lt;br /&gt;svn co http://codeoftheday.googlecode.com/svn/trunk/18Aug2007&lt;br /&gt;&lt;br /&gt;Do Let me know if there are any improvements done, will keep updated.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;If you want to get this done under C, you can look into the ruli library.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nongnu.org/ruli/"&gt;Ruli - DNS SRV Resolver&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-2847114643268458211?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/2847114643268458211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=2847114643268458211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/2847114643268458211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/2847114643268458211'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2007/08/getting-dns-srv-records-through-php.html' title='Getting DNS SRV Records for voip through PHP'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-451033170366509943</id><published>2007-08-07T08:01:00.000-07:00</published><updated>2007-08-07T18:15:01.361-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xargs'/><category scheme='http://www.blogger.com/atom/ns#' term='awk'/><category scheme='http://www.blogger.com/atom/ns#' term='find'/><category scheme='http://www.blogger.com/atom/ns#' term='header to source tree conversion'/><title type='text'>Convert header file tree to source file tree - Shell Script</title><content type='html'>It is usual practice to write header files first and then the source code. We usually need to go back an forth to get the header file name to start to go with the coding for enterprise projects.&lt;br /&gt;&lt;br /&gt;Using the following command, you can convert the header tree to source tree.&lt;br /&gt;&lt;br /&gt;find ./include -ls | awk '{print($3,$11);}' | cut -c1,11- | awk '{print($2,$1)}' | sed -e 's/^\.\/include//g' | awk '{if( $2 != "" ) print($1,$2);}' | awk '{if($2 == "d") printf("\"mkdir -p ./src%s\"\n",$1); else{ sub(/\.h$/,".cpp",$1); printf("\"touch ./src%s\"\n",$1);}}' | xargs | /bin/sh&lt;br /&gt;&lt;br /&gt;replace .cpp with the extension you want.&lt;br /&gt;&lt;br /&gt;It looks like&lt;br /&gt;&lt;br /&gt;./include&lt;br /&gt;   |----dir1&lt;br /&gt;        |------- dir2&lt;br /&gt;        |-----------file.h&lt;br /&gt;            etc.,&lt;br /&gt;&lt;br /&gt;./src&lt;br /&gt;   |--------dir1&lt;br /&gt;             |-----------dir2&lt;br /&gt;             |------------ file.cpp&lt;br /&gt;&lt;br /&gt;All header files will replaced with their equivalent name in .c or .cpp with the extension you supply in the command.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-451033170366509943?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/451033170366509943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=451033170366509943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/451033170366509943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/451033170366509943'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2007/08/convert-header-file-tree-to-source-file.html' title='Convert header file tree to source file tree - Shell Script'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-5649566770639181143</id><published>2007-08-06T23:27:00.000-07:00</published><updated>2007-08-07T15:06:25.830-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='directory string replace files'/><category scheme='http://www.blogger.com/atom/ns#' term='string replace'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='file string replace'/><title type='text'>Find and Replace string in files under linux directory tree - Linux Shell Script</title><content type='html'>This is one of most used command in linux to replace the string in files.&lt;br /&gt;&lt;br /&gt;find . -name "*.cpp" | xargs grep -l stringtofind | xargs  sed -i  s/stringtofind/stringtoreplace/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-5649566770639181143?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/5649566770639181143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=5649566770639181143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/5649566770639181143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/5649566770639181143'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2007/08/find-and-replace-in-file-in-directory.html' title='Find and Replace string in files under linux directory tree - Linux Shell Script'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-797522462828301781</id><published>2007-08-03T16:40:00.000-07:00</published><updated>2007-08-03T16:56:17.688-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random unlimited'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='unique random number'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='random unlimited length'/><title type='text'>Code to generate Unique Random Numbers - PHP</title><content type='html'>I was looking for a Unique Random Number with different length to use it for one of the calling card company. This PHP script just rocks. Enjoy, download the code from svn rather than copy and paste.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#!/usr/bin/php&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function generateuniquenumbers($len,$count,$includezero=1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;  if( strlen($count) &gt; $len )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        echo "Looks something funny in the parameter which you have supplied. \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  echo "Generating " . $count . " numbers with length " . $len . "\n";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  $mult = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  $fract = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  $numbers[] = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  mt_srand(10);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  if( $len &gt; 9 )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      $mult = (int)($len/9);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      $fract = (int) $len % 9;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      $fract = $len;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  if( $fract &gt; 0 )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $minfract = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $maxfract = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        for($m=0; $m&lt;$fract; $m++)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          if($includezero)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;           $minfract = "0";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;           $minfract .= "1";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;           $maxfract .= "9";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  for($numcount=0;$numcount&lt;$count;$numcount++)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     $curnumber = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          for($i=0;$i&lt;$mult;$i++)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                if( $includezero )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        $currand = mt_rand(0,999999999);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        $currand = mt_rand(111111111,999999999);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                if( strlen($currand) &lt;&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        $templen = strlen($currand);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        for( $pad = 9 - $templen; $pad &gt; 0; $pad--)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                $curnumber .= "0";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                $curnumber .= $currand;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          if( $fract &gt; 0 )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                $currand = mt_rand($minfract,$maxfract);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                if( strlen($currand) &lt;&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        $templen = strlen($currand);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        for( $pad=strlen($maxfract)-$templen;$pad &gt; 0;$pad--)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                $curnumber .= "0";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                $curnumber .= $currand;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      if( !in_array($curnumber,$numbers) )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                $numbers[] = $curnumber;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                $numcount --;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   return $numbers;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ncount = 20;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$nlength = 20;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$numbers = generateuniquenumbers($nlength,$ncount,0);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;for($k=1;$k&lt;=$ncount;$k++)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   echo  $numbers[$k] . "\n";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;?&gt;&lt;br /&gt;&lt;br /&gt;Here is the output:&lt;br /&gt;&lt;br /&gt;[root@kansdevhost devel]# ./kansrand.php&lt;br /&gt;Generating 20 numbers with length 20&lt;br /&gt;16181070355240094632&lt;br /&gt;35133279664046683582&lt;br /&gt;56683089348828603637&lt;br /&gt;61797018627269033641&lt;br /&gt;32242637617039241045&lt;br /&gt;53775119541769589123&lt;br /&gt;98009706424319286130&lt;br /&gt;67830750255154478737&lt;br /&gt;4554441961805820434&lt;br /&gt;24613857566557562252&lt;br /&gt;86485415760605734578&lt;br /&gt;30890354240158234429&lt;br /&gt;12549747923000041677&lt;br /&gt;85786735955666425870&lt;br /&gt;44706552566779852177&lt;br /&gt;41866325246584913132&lt;br /&gt;61537972143640201927&lt;br /&gt;52078343311552209047&lt;br /&gt;53657534152010051142&lt;br /&gt;74283518264934633688&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;You can download using svn  with the following command,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;svn co http://codeoftheday.googlecode.com/svn/trunk/03Aug2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Do Let me know if there are any improvements done, will keep updated.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-797522462828301781?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/797522462828301781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=797522462828301781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/797522462828301781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/797522462828301781'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2007/08/code-to-generate-unique-random-numbers.html' title='Code to generate Unique Random Numbers - PHP'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-2137646194401691693</id><published>2007-08-02T15:29:00.001-07:00</published><updated>2007-08-02T15:41:15.446-07:00</updated><title type='text'>Forming main with a macro</title><content type='html'>A cute simple program forming "main" with a macro. Have fun.&lt;br /&gt;&lt;br /&gt;#include &amp;#60;stdio.h&amp;#62;&lt;br /&gt;&lt;br /&gt;#define decode(s,t,u,m,p,e,d) m##s##u##t&lt;br /&gt;#define begin decode(a,n,i,m,a,t,e)&lt;br /&gt;&lt;br /&gt;int  begin()&lt;br /&gt;{&lt;br /&gt;printf("hello");&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;You can download from svn using,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;svn checkout http://codeoftheday.googlecode.com/svn/trunk/02Aug2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;/stdio.h&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-2137646194401691693?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/2137646194401691693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=2137646194401691693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/2137646194401691693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/2137646194401691693'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2007/08/forming-main-with-macro.html' title='Forming main with a macro'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1074101741472197351.post-3166013551149886721</id><published>2007-08-01T17:09:00.000-07:00</published><updated>2007-08-02T15:42:13.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dup2'/><category scheme='http://www.blogger.com/atom/ns#' term='dup'/><category scheme='http://www.blogger.com/atom/ns#' term='/dev/null'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='systemcalls'/><title type='text'>Mangling with fd and  /dev/null</title><content type='html'>When doing the code faced a problem with the SSL Libraries doing error output and want to ignore it. Just got a nice idea from my friend Michael Waters. Here it is.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#include  &amp;#60;iostream&amp;#62;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#include  &amp;#60;fcntl.h&amp;#62;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using namespace std;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;int main(int argc,char *argv[])&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   int devnullfd = open("/dev/null",O_RDWR);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   int stderrfd = dup(2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   dup2(devnullfd,2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   cerr &lt;&lt; "Am I out?" &lt;&lt;&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   dup2(stderrfd,2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   cerr &lt;&lt; "Am I In?" &lt;&lt;&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   close(devnullfd);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;svn also has the example in C.&lt;br /&gt;&lt;br /&gt;You can download from svn with the command below.&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;svn checkout &lt;b&gt;&lt;i&gt;http&lt;/i&gt;&lt;/b&gt;://codeoftheday.googlecode.com/svn/trunk/01Aug2007&lt;br /&gt;&lt;br /&gt;Enjoy. Will try to get something out tomorrow.&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1074101741472197351-3166013551149886721?l=kanscode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kanscode.blogspot.com/feeds/3166013551149886721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1074101741472197351&amp;postID=3166013551149886721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/3166013551149886721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1074101741472197351/posts/default/3166013551149886721'/><link rel='alternate' type='text/html' href='http://kanscode.blogspot.com/2007/08/mangling-with-fd.html' title='Mangling with fd and  /dev/null'/><author><name>Kannaiyan</name><uri>http://www.blogger.com/profile/13968338910539657546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
