<?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-5528127709430843385</id><updated>2012-02-19T05:19:15.389-08:00</updated><category term='matrix manipulation'/><category term='clustering'/><category term='setup'/><category term='vodafone (spain)'/><category term='R programming'/><category term='repeating chunks'/><category term='rsync'/><category term='web'/><category term='latex'/><category term='perl'/><category term='system admin'/><category term='Cisco'/><category term='graph'/><category term='bibentry'/><category term='Router'/><category term='3G'/><category term='c programming'/><category term='IOS'/><category term='configuration'/><category term='wildcards'/><category term='python'/><category term='bibtex'/><category term='polynomials'/><category term='vodafone (telsim)'/><category term='backup'/><category term='apache'/><category term='linux'/><category term='scripting'/><category term='ant'/><category term='parallel programming'/><category term='pbs'/><category term='mysql'/><category term='php'/><category term='programming'/><category term='sequence'/><category term='tutorial'/><category term='modem'/><category term='synchronization'/><category term='ssh'/><category term='editors'/><category term='multivariables'/><category term='tcl'/><category term='Algebraic geometry'/><category term='text processing'/><category term='queue'/><category term='beowulf'/><category term='tutorials'/><category term='GNU R'/><category term='svn'/><title type='text'>Memo's Island Blog : Mehmet Süzen</title><subtitle type='html'>Technical Blog 
by 
&lt;a href="http://sites.google.com/site/msuzen/"&gt;Mehmet Suzen&lt;/a&gt;

&lt;br&gt;
&lt;br&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-4845119827757585286</id><published>2011-09-18T05:48:00.000-07:00</published><updated>2011-09-18T06:11:12.918-07:00</updated><title type='text'>XML and command line parsing in C++/C</title><content type='html'>Dynamic languages like python, tcl or alike are taking over in driving many C/C++ codes I/O operations and option parsing  due to quick and easy implementation, however it is still possible to use libraries/APIs for parsing options via command line (or XML ) quite efficiently in C/C++. Here is the list of some API/libraries:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://xerces.apache.org/xerces-c/"&gt;Xerces&lt;/a&gt; is Apache's XML parser for C++.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gccxml.org"&gt;GCCXML&lt;/a&gt; is gcc extention for XML parsing in C++.&lt;/li&gt;&lt;li&gt;&lt;a href="http://commons.apache.org/cli/"&gt;Commons CLI&lt;/a&gt; is Apache's command line parsing API.&lt;/li&gt;&lt;li&gt;&lt;a href="http://argtable.sourceforge.net/"&gt;Argtable&lt;/a&gt; is ANSI C command line parser.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gnu.org/software/hello/manual/libc/Getopt.html"&gt;getop&lt;/a&gt; is gnu's commang line parser.&lt;/li&gt;&lt;li&gt;&lt;a href="http://tclap.sourceforge.net/"&gt;tclap&lt;/a&gt; is templatized C++ command line parser.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-4845119827757585286?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/4845119827757585286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=4845119827757585286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4845119827757585286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4845119827757585286'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2011/09/xml-and-command-line-parsing-in-cc.html' title='XML and command line parsing in C++/C'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-5021674472308712389</id><published>2011-05-14T05:23:00.001-07:00</published><updated>2011-11-24T15:17:21.644-08:00</updated><title type='text'>Operating in Multiple Repository within ant</title><content type='html'>Ant script can not change its base directory after it is invoked, for that reason if you are handling two repositories under same directory it would be wise to write a secondary wrapper script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-5021674472308712389?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/5021674472308712389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=5021674472308712389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5021674472308712389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5021674472308712389'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2011/05/operating-in-multiple-repository-within.html' title='Operating in Multiple Repository within ant'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-400286100684421794</id><published>2011-04-16T12:29:00.001-07:00</published><updated>2011-11-24T15:12:35.276-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R programming'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU R'/><category scheme='http://www.blogger.com/atom/ns#' term='graph'/><title type='text'>R Package install order automation</title><content type='html'>&lt;span style="font-size:85%;"&gt;There is a bioconductor tool to generate install order for packages [&lt;a href="http://www.bioconductor.org/packages/release/bioc/html/pkgDepTools.html"&gt;here&lt;/a&gt;].&lt;br /&gt;Initially tool generates graph of CRAN package dependencies (ignoring suggests, because otherwise graph will be acyclic).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Usage Example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;source("&lt;/span&gt;&lt;a style="font-family: courier new;" href="http://www.bioconductor.org/biocLite.R" target="_blank"&gt;http://www.&lt;wbr&gt;bioconductor.org/biocLite.R&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;biocLite("pkgDepTools")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;require('pkgDepTools')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;deps &amp;lt;- makeDepGraph("&lt;/span&gt;&lt;a style="font-family: courier new;" href="http://cran.r-project.org/" target="_blank"&gt;http://cran.r-&lt;wbr&gt;project.org&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;", type="source")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;a&amp;lt;-getInstallOrder("plyr",&lt;/span&gt;&lt;/span&gt;&lt;div id=":3r"&gt;&lt;wbr  style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;deps,needed.only=FALSE)&lt;br /&gt;a$packages&lt;br /&gt;[1] "iterators" "itertools" "plyr"&lt;/span&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/5528127709430843385-400286100684421794?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/400286100684421794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=400286100684421794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/400286100684421794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/400286100684421794'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2011/04/r-package-install-order-automation.html' title='R Package install order automation'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-461685120526403712</id><published>2011-04-09T04:54:00.000-07:00</published><updated>2011-04-09T04:58:14.616-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='editors'/><category scheme='http://www.blogger.com/atom/ns#' term='R programming'/><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU R'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>R-plugin for vim</title><content type='html'>vim is a powerful text editor and R is a powerful environment for statistical computing task. To harness both powers a &lt;a href="http://www.vim.org/scripts/script.php?script_id=2628"&gt;plug-in&lt;/a&gt; for vim is developed. One needs python enabled vim and &lt;a href="http://code.google.com/p/conque/"&gt;conqueterm&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-461685120526403712?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/461685120526403712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=461685120526403712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/461685120526403712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/461685120526403712'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2011/04/r-plugin-for-vim.html' title='R-plugin for vim'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-6693800285251089015</id><published>2011-04-08T02:23:00.000-07:00</published><updated>2011-04-09T04:36:37.971-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildcards'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Ant task with wildcard expansion for svn.</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;a href="http://ant.apache.org/"&gt;Ant &lt;/a&gt;is a popular tool among Java developers but one can use it for some other generic tasks. For example using svn as a task inside an ant script is provided by a &lt;a href="http://ant.apache.org/antlibs/svn/"&gt;library&lt;/a&gt;. However wildcard expansion won't work under this task. One way to over come this to use an exec task as follows (in windowz):&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;exec executable="cmd.exe"&amp;gt;&lt;br /&gt;  &amp;lt;arg line=" /C svn --force delete pathtofiles\*.dat&lt;br /&gt;             --username=username --password=password"&amp;gt;&lt;br /&gt;  &amp;lt;/arg&amp;gt;&lt;br /&gt;&amp;lt;/exec&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-6693800285251089015?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/6693800285251089015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=6693800285251089015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/6693800285251089015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/6693800285251089015'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2011/04/ant-task-with-wildcard-expansion-for.html' title='Ant task with wildcard expansion for svn.'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-3594778065460447342</id><published>2011-01-18T17:09:00.000-08:00</published><updated>2011-01-20T05:06:26.584-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python Crash tutorial  for experienced programmers</title><content type='html'>Phython has already became a de-facto scripting language, even taking over Perl (depends who do you ask, of course). Recently I have began to use it and like its approach to OO/D. Here is my very short crash Python notes [&lt;a href="https://sites.google.com/site/msuzen/file-cabinet/crash_tutorial_python.txt"&gt;txt&lt;/a&gt;], in 10 minutes, you can learn the basic facilities.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-3594778065460447342?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/3594778065460447342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=3594778065460447342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/3594778065460447342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/3594778065460447342'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2011/01/python-crash-tutorial-for-experienced.html' title='Python Crash tutorial  for experienced programmers'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-4417620598039291703</id><published>2011-01-05T23:57:00.000-08:00</published><updated>2011-01-06T00:02:37.412-08:00</updated><title type='text'>Monitoring IP traffic on a host against denial of service</title><content type='html'>Long time ago I have given some tips for Cisco routers IoS capability to limit SYN half-open TCP connections [&lt;a href="http://sites.google.com/site/msuzen/file-cabinet/qos_ios_dos_suzen2005.pdf"&gt;here&lt;/a&gt;]. Recently a nice python script [&lt;a href="http://www.ddosattack.info/"&gt;here&lt;/a&gt;], provides a mechanism to monitor similar information on regular bases and block IP addresses for a certain period of time automatically. It uses combination of tools : netstat, iptables and python modules. However, tuning thresholds must be done carefully to prevent blocking legitimate traffic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-4417620598039291703?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/4417620598039291703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=4417620598039291703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4417620598039291703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4417620598039291703'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2011/01/monitoring-ip-traffic-on-host-against.html' title='Monitoring IP traffic on a host against denial of service'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-3262726370760060145</id><published>2010-12-25T04:49:00.000-08:00</published><updated>2010-12-25T05:16:39.694-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bibentry'/><category scheme='http://www.blogger.com/atom/ns#' term='bibtex'/><title type='text'>Package Bibentry</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;font-family:times new roman;" &gt;Bibtex is a powerful tool for referencing in scientific publications and many other type of academic documents. One nice package (&lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/"&gt;bibentry&lt;/a&gt;&lt;span style="font-family: arial;font-family:times new roman;" &gt;) that enables us to use bibtex entries within the text. Simply add the package as follows:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;\usepackage{bibentry}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;font-family:times new roman;" &gt;When you need to refer to needed bibtex key information, just use:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;\bibentry{needed_bibtex_key}&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/5528127709430843385-3262726370760060145?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/3262726370760060145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=3262726370760060145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/3262726370760060145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/3262726370760060145'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2010/12/package-bibentry.html' title='Package Bibentry'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-6319300713515956995</id><published>2010-09-27T16:13:00.000-07:00</published><updated>2010-09-28T13:46:52.619-07:00</updated><title type='text'>Reverse 32-bit Hexadecimal Value (with C)</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:arial;"&gt;A 32-bit hexadecimal value such as 0xABCD1234 may need to be reversed as 0x4321DCBA. This might be needed. The following is a naive implementation of reversing a hexadecimal. It would be interesting quiz for undgrad CS student to write a n-bit version of this.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;signed int reverse_hex(signed int num) {&lt;br /&gt;/* stupid reverse hex */&lt;br /&gt;  int rev=   0x00000000;&lt;br /&gt;  int digit= 0x00000000;&lt;br /&gt;   int mask1=0x0f000000;&lt;br /&gt;   int mask2=0x00f00000;&lt;br /&gt;   int mask3=0x000f0000;&lt;br /&gt;   int mask4=0x0000f000;&lt;br /&gt;   int mask5=0x00000f00;&lt;br /&gt;   int mask6=0x000000f0;&lt;br /&gt;   int mask7=0x0000000f;&lt;br /&gt;&lt;br /&gt;   digit=num &lt;&lt; 28;&lt;br /&gt;   rev=num &lt;&lt; 20;&lt;br /&gt;   rev=rev &amp;amp; mask1;&lt;br /&gt;   rev=digit+rev;&lt;br /&gt;    digit=(num &lt;&lt; 12) &amp;amp; mask2;&lt;br /&gt;    rev=digit+rev;&lt;br /&gt;     digit=(num &lt;&lt; 4) &amp;amp; mask3;&lt;br /&gt;     rev=digit+rev;&lt;br /&gt;      digit=(num &gt;&gt; 4) &amp;amp; mask4;&lt;br /&gt;      rev=digit+rev;&lt;br /&gt;      digit=(num &gt;&gt; 12) &amp;amp; mask5;&lt;br /&gt;      rev=digit+rev;&lt;br /&gt;       digit=(num &gt;&gt; 20) &amp;amp; mask6;&lt;br /&gt;       rev=digit+rev;&lt;br /&gt;        digit=(num &gt;&gt; 28) &amp;amp; mask7;&lt;br /&gt;        rev=digit+rev;&lt;br /&gt; return(rev);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;However, the above procedure is not so usual while it is reversed by chunks of 4-bit. More realistic situation is reversing from between big and little endian representation. Such as, 0xABCD1234 would be reversed as 0x3412CDAB, so byte ordering matters. The following is the C function doing this. Similarly n-byte version of&lt;br /&gt;this function will be left as a further exercise.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;signed int reverse_hex_byte(signed int num) {&lt;br /&gt;/* stupid reverse hex */&lt;br /&gt;  int rev=   0x00000000;&lt;br /&gt;  int digit= 0x00000000;&lt;br /&gt;   int mask1=0x000000ff;&lt;br /&gt;   int mask2=0x0000ff00;&lt;br /&gt;   int mask3=0x00ff0000;&lt;br /&gt;   int mask4=0xff000000;&lt;br /&gt;&lt;br /&gt; /* Move 1st byte */&lt;br /&gt;   digit=num &gt;&gt; 24;&lt;br /&gt;   rev=digit &amp;amp; mask1;&lt;br /&gt; /* Move 2nd byte */&lt;br /&gt;   digit=  num &gt;&gt;8;&lt;br /&gt;   digit=digit &amp;amp; mask2;&lt;br /&gt;   rev=digit+rev;&lt;br /&gt; /* Move 3rd byte */&lt;br /&gt;   digit=  num &lt;&lt;8;&lt;br /&gt;   digit=digit &amp;amp; mask3;&lt;br /&gt;   rev=digit+rev;&lt;br /&gt; /* Move 4rd byte */&lt;br /&gt;   digit=  num &lt;&lt;24;&lt;br /&gt;   digit=digit &amp;amp; mask4;&lt;br /&gt;   rev=digit+rev;&lt;br /&gt; return(rev);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&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/5528127709430843385-6319300713515956995?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/6319300713515956995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=6319300713515956995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/6319300713515956995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/6319300713515956995'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2010/09/reverse-32-bit-hexadecimal-value-with-c.html' title='Reverse 32-bit Hexadecimal Value (with C)'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-8362544188682419669</id><published>2010-08-25T05:31:00.000-07:00</published><updated>2010-12-25T05:20:02.950-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modem'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='vodafone (telsim)'/><category scheme='http://www.blogger.com/atom/ns#' term='3G'/><title type='text'>Vodafone (telsim Cyprus) 3G with Ubuntu</title><content type='html'>&lt;span style="font-size:85%;"&gt;Sometime ago I have given some instructions on how to connect to movistar,Spain&lt;br /&gt;3G network [&lt;a href="http://memosisland.blogspot.com/2009/08/chrash-notes-for-connecting-t30-running.html"&gt;here&lt;/a&gt;]. The similar connection can be made for Vodafone (telsim Cyprus)&lt;br /&gt;with the following changes:&lt;br /&gt;&lt;br /&gt;1. Modem USB settings command should be read:&lt;br /&gt;&lt;pre&gt;modprobe usbserial vendor=0x12d1 product=0x1001&lt;br /&gt;&lt;/pre&gt;2. In wvdial.conf entry for telsim should look like:&lt;br /&gt;&lt;pre&gt;[Dialer telsim]&lt;br /&gt;Init1 = ATZ&lt;br /&gt;Init2 = ATQ0 V1 E1 S0=0 &amp;amp;C1 &amp;amp;D2 +FCLASS=0&lt;br /&gt;Init3 = AT+CGDCONT=1,"IP","edge.kktctelsim.com"&lt;br /&gt;Modem Type = Analog Modem&lt;br /&gt;Baud = 115200&lt;br /&gt;New PPPD = yes&lt;br /&gt;Modem = /dev/ttyUSB0&lt;br /&gt;ISDN = 0&lt;br /&gt;Dial Command = ATDT&lt;br /&gt;Phone = "*99***1#"&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-8362544188682419669?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/8362544188682419669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=8362544188682419669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/8362544188682419669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/8362544188682419669'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2010/08/vodafone-telsim-cyprus-3g-with-ubuntu.html' title='Vodafone (telsim Cyprus) 3G with Ubuntu'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-5846026299115133242</id><published>2010-04-23T05:06:00.000-07:00</published><updated>2010-12-25T05:18:26.396-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matrix manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='R programming'/><title type='text'>More efficient diag() function</title><content type='html'>&lt;span style="font-size:85%;"&gt;GNU R's diag() function provides a tool to produce diagonal matrices, however for&lt;br /&gt;large vectors this is quite memory inefficient. Here is a version which uses at least&lt;br /&gt;25% less memory;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;mydiag&lt;- function(A) { &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;&lt;br /&gt;#&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;# Given a a vector generate&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;#  a diagonal matrix&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;# (Consume at least 1/4 less memory then R's diag)&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;#&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;A &lt;- as.vector(A) ;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;    B &lt;- matrix(0,nrow=length(A),ncol=length(A)) &lt;/span&gt;&lt;span style="font-size:78%;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;     row &lt;- nrow(B) ;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;     col &lt;- ncol(B) ;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;     size &lt;- col*row ;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;     row &lt;- row+1 ;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;    B[seq(1,size,row)] &lt;- A &lt;/span&gt;&lt;span style="font-size:78%;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt; return(B)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&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/5528127709430843385-5846026299115133242?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/5846026299115133242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=5846026299115133242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5846026299115133242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5846026299115133242'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2010/04/more-efficient-diag-function.html' title='More efficient diag() function'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-1504505955380227264</id><published>2010-03-17T07:25:00.000-07:00</published><updated>2010-03-17T07:57:53.214-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sequence'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU R'/><category scheme='http://www.blogger.com/atom/ns#' term='repeating chunks'/><title type='text'>Repeat chunks of a sequence arbitrary times with GNU R</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Repeating arbitrary size chunks multiple times in a given sequence with preserving order of chunks would be needed in certain computations. For example in matrix multiplication that is reduced to a 1D problem. Mapping your sequence into a matrix and repeating certain column or generating another sequence in the appropriate loop are straight forward solutions indeed. However these approaches will suffer immensely in memory consumption with increasing sequence size and would generate the original problem it seek to solve. More efficient and the general way to achieve repeating chunks is solved with the following R code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;manyrep &lt;-function(a,f,n) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   i &lt;- as.integer(length(a)/f);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   q &lt;- f&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   for(j in 1:i) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     a&lt;-append(a,a[(q-f+1):q],after=q);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     q&lt;-q+2*f&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     p &lt;- 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     while(p &lt;= (n-1)) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       a&lt;-append(a,a[(q-2*f+1):(q-f)],after=(q-f));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       q&lt;-q+f ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       p&lt;-p+1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; return(a)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For example if sequence a = {1,2,3,4}, frequency or chunk size f=2 and number of repetition n=1, hence manyrep(1:4,2,1) the output should look like {1,2,1,2,3,4,3,4}. If n was 2 output would be {1,2,1,2,1,2,3,4,3,4,3,4}.&lt;br /&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/5528127709430843385-1504505955380227264?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/1504505955380227264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=1504505955380227264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/1504505955380227264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/1504505955380227264'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2010/03/repeat-chunks-of-sequence-arbitrary.html' title='Repeat chunks of a sequence arbitrary times with GNU R'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-5878419758869720</id><published>2010-03-10T12:29:00.000-08:00</published><updated>2010-12-25T05:19:06.264-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='text processing'/><category scheme='http://www.blogger.com/atom/ns#' term='R programming'/><category scheme='http://www.blogger.com/atom/ns#' term='sequence'/><title type='text'>Append to a vector in regular intervals efficiently in R</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;In many instances one may need to append a character or a value in a given sequence, usually represented as a vector or array. It is pretty easy to achieve this naively. However, the point is not to consume any more memory.  This is one of the simple solutions I can propose in GNU R. &lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;# This function appends a word into vector a in every f element&lt;br /&gt;appendfreq&lt;-function(a,f,word) { i &lt;- as.integer(length(a)/f-1);  q&lt;-f; for(j in 1:i) { a&lt;-append(a,word,after=q); q&lt;-q+f+1; } ;return(a);  }&lt;/span&gt;&lt;br /&gt;&lt;/span&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/5528127709430843385-5878419758869720?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/5878419758869720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=5878419758869720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5878419758869720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5878419758869720'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2010/03/append-to-vector-in-regular-intervals.html' title='Append to a vector in regular intervals efficiently in R'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-3499955446576367508</id><published>2010-01-12T03:27:00.000-08:00</published><updated>2010-01-12T03:46:54.847-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R programming'/><title type='text'>GNU R Garbage Collection</title><content type='html'>On &lt;a href="http://www.r-project.org/"&gt;GNU R&lt;/a&gt; if you delete your objects by &lt;br /&gt;&lt;br&gt; rm(list=ls()) &lt;br&gt; &lt;br /&gt;This action won't free any memory associated with those objects. For this reason, R provides a utility for garbage collection, simply apply &lt;br /&gt;&lt;br&gt; gc() &lt;br&gt;&lt;br /&gt;This will free not used allocations. If you like to apply this whenever R allocates memory, apply this: &lt;br /&gt;&lt;br&gt; gctorture(on = TRUE) &lt;br&gt;&lt;br /&gt;Consult with R Internals manual for further details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-3499955446576367508?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/3499955446576367508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=3499955446576367508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/3499955446576367508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/3499955446576367508'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2010/01/gnu-r-garbage-collection.html' title='GNU R Garbage Collection'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-1813841889498277995</id><published>2009-12-10T00:47:00.000-08:00</published><updated>2010-12-25T05:20:52.368-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='polynomials'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebraic geometry'/><category scheme='http://www.blogger.com/atom/ns#' term='multivariables'/><title type='text'>Groebner Bases and Cryptography</title><content type='html'>You may have already heard the &lt;span style="font-style: italic;"&gt;brilliant&lt;/span&gt; technique called Groebner bases to solve multivariate system of equations. But unfortunately it is pointed out that it isn't possible to use this in cryptography: [&lt;a href="http://www.ricam.oeaw.ac.at/Groebner-Bases-Bibliography/gbbib_files/publication_186.pdf"&gt;Why you cannot even hope to use Groebner Bases in Public Key Cryptography?&lt;/a&gt;].&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-1813841889498277995?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/1813841889498277995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=1813841889498277995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/1813841889498277995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/1813841889498277995'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2009/12/groebner-bases-and-cryptography.html' title='Groebner Bases and Cryptography'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-2163761623300794733</id><published>2009-08-05T04:08:00.000-07:00</published><updated>2010-12-25T05:21:31.449-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='vodafone (spain)'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='3G'/><title type='text'>Crash Notes for Connecting T30 running Ubuntu 8.04.3 to MoviStar (Spain) 3,5G Network (GPRS)</title><content type='html'>&lt;span style="font-size:85%;"&gt;Short description on how to connect Spanish movistar 3.5G service with your ubuntu, &lt;a href="http://sites.google.com/site/msuzen/file-cabinet/movi.txt"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-2163761623300794733?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/2163761623300794733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=2163761623300794733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/2163761623300794733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/2163761623300794733'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2009/08/chrash-notes-for-connecting-t30-running.html' title='Crash Notes for Connecting T30 running Ubuntu 8.04.3 to MoviStar (Spain) 3,5G Network (GPRS)'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-465513231806356677</id><published>2008-10-15T18:33:00.000-07:00</published><updated>2010-12-25T05:24:32.116-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synchronization'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='system admin'/><title type='text'>Deleting extraneous files from destination: rsync</title><content type='html'>There were some reported non-functioning --delete flag when using rsync in syncronizing two filesystems/locations. This may occur due to failures or errors during rsync tries to sync zero size files. One simple work around for this is using --ignore-errors flag. Some examples for taking backup of user directory:&lt;br /&gt;&lt;br /&gt;rsync -vaz -e ssh --delete  --ignore-errors user@host:/home/user/ local_dir/&lt;br /&gt;rsync -vaz --delete  --ignore-errors  /home/user/ /media/disk/backup_dir/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-465513231806356677?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/465513231806356677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=465513231806356677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/465513231806356677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/465513231806356677'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/10/deleting-extraneous-files-from.html' title='Deleting extraneous files from destination: rsync'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-4173440335246760094</id><published>2008-08-14T04:18:00.001-07:00</published><updated>2010-12-25T05:25:02.270-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='tcl'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>TCL Bad Code Error</title><content type='html'>Using &lt;a href="http://www.tcl.tk/doc/tea/"&gt;tcl extension&lt;/a&gt; would be quite reasonable to write a flexable code. How ever if you use &lt;a href="http://www.tcl.tk/man/tcl8.4/TclLib/ParseCmd.htm"&gt;parse command set &lt;/a&gt;and TCL_OK as a return, be sure that type of your function is &lt;span style="font-style: italic;"&gt;int&lt;/span&gt;, otherwise tcl complains with a strange run time error, saying bad code. So, be sure about the correct return type.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-4173440335246760094?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/4173440335246760094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=4173440335246760094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4173440335246760094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4173440335246760094'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/08/tcl-bad-code-error.html' title='TCL Bad Code Error'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-987037025901056508</id><published>2008-07-21T18:21:00.000-07:00</published><updated>2008-07-24T10:08:02.290-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Router'/><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Traffic Utilization on router high CPU usage.</title><content type='html'>&lt;span style="font-size:85%;"&gt;Long time ago, I was trying to address traffic utilization issues on border routers. This is the summary of my communication with nsp mailing list [&lt;a href="http://mehmet.suzen.googlepages.com/traffic_limit_and_high_cpu_utilizati.txt"&gt;Traffic Utilization Summary&lt;/a&gt;].&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-987037025901056508?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/987037025901056508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=987037025901056508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/987037025901056508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/987037025901056508'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/07/traffic-utilization-on-router-high-cpu.html' title='Traffic Utilization on router high CPU usage.'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-4426055527792189444</id><published>2008-07-21T16:34:00.000-07:00</published><updated>2008-07-21T18:19:40.464-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Crash LAMP Installation: Apache 2.2.6, PHP 5.2.6, mod_perl 2.0</title><content type='html'>&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;Recently I need to install LAMP on my laptop to brush up my LAMP skills. Actually, LAMP compilation on *nix like system is not that difficult&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;. I've tried to compile&lt;/span&gt; &lt;span style="font-family:times new roman;"&gt;almost bare minimum things one must to &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;do in order to have running web server with php, perl, mod_perl and MySQL support.  Here is the short document titled &lt;a href="http://mehmet.suzen.googlepages.com/lamp_suzen_2_july2008.txt"&gt;Crash Notes on installing LAMP System &lt;/a&gt;with Apache 2.2.6, PHP 5.2.6, mod_perl 2.0. Notes contain installation instructions, configuration and minimum testing. Example (&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://mehmet.suzen.googlepages.com/httpd.conf"&gt;httpd.conf&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;) &lt;a href="http://mehmet.suzen.googlepages.com/httpd.conf"&gt;&lt;/a&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/5528127709430843385-4426055527792189444?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/4426055527792189444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=4426055527792189444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4426055527792189444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4426055527792189444'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/07/crash-lamp-installation-apache-226-php.html' title='Crash LAMP Installation: Apache 2.2.6, PHP 5.2.6, mod_perl 2.0'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-1088948472164262172</id><published>2008-03-18T12:01:00.000-07:00</published><updated>2010-12-25T05:25:37.897-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Prototype Codes: memoproto</title><content type='html'>&lt;span style="font-size:85%;"&gt;There are many nice books out there on Programming, such as ANSI C programming by Kernigan &amp;amp; Richie.  Usually they lack complete working examples, and rather they tend to give parts of codes that are related to topic they describe. For that reason, I've just started to collect many working full examples in various languages. It is located on Google's code repository. [&lt;a href="http://code.google.com/p/memoproto/"&gt;link&lt;/a&gt;]&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-1088948472164262172?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/1088948472164262172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=1088948472164262172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/1088948472164262172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/1088948472164262172'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/03/prototype-codes-memoproto.html' title='Prototype Codes: memoproto'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-4892291945711160123</id><published>2008-03-06T18:31:00.000-08:00</published><updated>2010-12-25T05:26:15.991-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synchronization'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='rsync'/><title type='text'>Simple syncronization via ssh with rsync.</title><content type='html'>&lt;span style=";font-family:arial;font-size:85%;"  &gt;One can syncronize two different locations by using rsync via ssh or without ssh.&lt;br /&gt;Here are the steps:&lt;br /&gt;&lt;br /&gt;1. get from the other location&lt;br /&gt;     rsync -avuzb  dir/mydir/ .&lt;br /&gt;&lt;br /&gt;2. put into other location&lt;br /&gt;    rsync -Cavuzb . dir/mydir/&lt;br /&gt;&lt;br /&gt;If one of the location is reachable via ssh then one ca write&lt;br /&gt;&lt;br /&gt;    rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/&lt;br /&gt;&lt;br /&gt;Look at the man pages for more details. Actually -e flag is not needed. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-4892291945711160123?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/4892291945711160123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=4892291945711160123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4892291945711160123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/4892291945711160123'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/03/simple-syncronization-via-ssh-with.html' title='Simple syncronization via ssh with rsync.'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-5047357268275852379</id><published>2008-02-20T08:45:00.000-08:00</published><updated>2008-02-20T09:44:17.387-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c programming'/><title type='text'>CPU Timing in a C code</title><content type='html'>Examine this simple example :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;#include &lt; stdio.h &gt;&lt;br /&gt;#include &lt; stdlib.h &gt;&lt;br /&gt;#include &lt; time.h &gt;&lt;br /&gt;#include &lt; math.h &gt;&lt;br /&gt;&lt;br /&gt;int main();&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;  long int i,a;&lt;br /&gt;  clock_t cputime,cputime1;&lt;br /&gt;  double timing,timing0;&lt;br /&gt;   cputime= clock();&lt;/span&gt;&lt;br /&gt;    for(i=0;i&lt;10000000;i++){&lt;br /&gt;       a=pow(4,2);&lt;/span&gt;&lt;br /&gt;       a=pow(4,2);&lt;/span&gt;&lt;br /&gt;       a=pow(4,2);&lt;/span&gt;&lt;br /&gt;       a=pow(4,2);&lt;/span&gt;&lt;br /&gt;       a=pow(4,2);&lt;/span&gt;&lt;br /&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   cputime1= clock();&lt;/span&gt;&lt;br /&gt;   timing0=((double) cputime1-cputime);&lt;br /&gt;   timing=((double) cputime1-cputime) / CLOCKS_PER_SEC;&lt;br /&gt;   printf("timing =%12.9f clock per sec=%d timing0=%12.9f\n",&lt;br /&gt;          timing,CLOCKS_PER_SEC,timing0);&lt;br /&gt;   exit(0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-5047357268275852379?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/5047357268275852379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=5047357268275852379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5047357268275852379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5047357268275852379'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/02/cpu-timing-in-c-code.html' title='CPU Timing in a C code'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-5044008887632471551</id><published>2008-02-14T04:03:00.000-08:00</published><updated>2010-12-25T05:28:30.105-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='text processing'/><title type='text'>Latex Poster: A working full example</title><content type='html'>You must use Latex to generate your posters, because it looks beautiful. Here is fully working and self contained example [&lt;a href="http://mehmet.suzen.googlepages.com/plain_poster.tar.bz2"&gt;latex_poster&lt;/a&gt;].&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-5044008887632471551?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/5044008887632471551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=5044008887632471551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5044008887632471551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/5044008887632471551'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/02/latex-poster-working-full-example.html' title='Latex Poster: A working full example'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-6722588483734777395</id><published>2008-02-13T05:54:00.000-08:00</published><updated>2010-12-25T05:29:07.267-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beowulf'/><category scheme='http://www.blogger.com/atom/ns#' term='queue'/><category scheme='http://www.blogger.com/atom/ns#' term='pbs'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='system admin'/><title type='text'>Simple scripts: Compressing Files &amp; Cluster Queue Jobs Termination</title><content type='html'>If you would like to compress your data files or any type recursively you can use this simple perl script [&lt;a href="http://mehmet.suzen.googlepages.com/datcompress.pl"&gt;datcompress&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;Sometimes it is annoying to delete all your PBS jobs one by one, so simple perl script helps [&lt;a href="http://mehmet.suzen.googlepages.com/deletealljobs.pl"&gt;deleteall&lt;/a&gt;].&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-6722588483734777395?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/6722588483734777395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=6722588483734777395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/6722588483734777395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/6722588483734777395'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/02/simple-scripts-compressing-files.html' title='Simple scripts: Compressing Files &amp; Cluster Queue Jobs Termination'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5528127709430843385.post-8375029395836973366</id><published>2008-02-12T03:12:00.000-08:00</published><updated>2010-12-25T05:30:42.288-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beowulf'/><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='clustering'/><title type='text'>How to benchmark communication cost in the beowulf (parallel system)</title><content type='html'>Quite long time ago, I've proposed one simple way of estimating&lt;br /&gt;communication cost of an MPI program (or multiple-instruction) &lt;br /&gt;appeared in the beowulf mailing list. Here is the outline of &lt;br /&gt;the procedure. &lt;br /&gt;[&lt;a href="http://www.mirrorservice.org/sites/www.beowulf.org/archive/2002-November/008759.html"&gt;original post&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;Definition Communication cost (Comm) is the ratio between the real&lt;br /&gt;time used by all processors (processes actually if you use MPI)&lt;br /&gt;and global real cpu time (GRU).&lt;br /&gt;&lt;pre&gt; Comm=GRU/GR = (GR-GU-GS)/GR &lt;/pre&gt;&lt;br /&gt;Undefined symbols are as follows:&lt;br /&gt;&lt;pre&gt;Comm= Communication cost&lt;br /&gt;GR=global real time&lt;br /&gt;LR=local worked real time &lt;br /&gt;LU=local user&lt;br /&gt;LS=local system&lt;br /&gt;GS=global system&lt;br /&gt;GU=global user&lt;br /&gt;n=# of procs&lt;br /&gt;GU=n*LU&lt;br /&gt;GS=n*LS&lt;br /&gt;GR=n*LR &lt;/pre&gt;&lt;br /&gt;In the actual MPI program this measure's implementation could be outlined&lt;br /&gt;as follows&lt;br /&gt;&lt;pre&gt; BEGIN PROGRAM Myprogram&lt;br /&gt;      begin distribution&lt;br /&gt;       initial_timings=timings;&lt;br /&gt;                ...do whatever is your distributed computing....&lt;br /&gt;       end_timings=timings;&lt;br /&gt;      end distribution&lt;br /&gt;       if(myrank == 0) {compute communication cost}        &lt;br /&gt;END Myprogram&lt;br /&gt;&lt;br /&gt;BEGIN PROC timings&lt;br /&gt;    for(n=0;n &lt; numproc;numproc) {&lt;br /&gt;       if(n==myrank) { measure timing of myrank and send to rank 0 }&lt;br /&gt;     }&lt;br /&gt;END PROC &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5528127709430843385-8375029395836973366?l=memosisland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memosisland.blogspot.com/feeds/8375029395836973366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5528127709430843385&amp;postID=8375029395836973366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/8375029395836973366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5528127709430843385/posts/default/8375029395836973366'/><link rel='alternate' type='text/html' href='http://memosisland.blogspot.com/2008/02/how-to-benchmark-communication-cost-in_12.html' title='How to benchmark communication cost in the beowulf (parallel system)'/><author><name>msuzen</name><uri>http://www.blogger.com/profile/06434797231632063088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_ig5OJEGclEc/TT6Oq78DvxI/AAAAAAAAAYI/v-I_szuAvQc/s1600/Mehmet-Suzen_web.jpg'/></author><thr:total>0</thr:total></entry></feed>
