<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEcCQHY-eCp7ImA9WhRVF0k.&quot;"><id>tag:blogger.com,1999:blog-1781703450015843710</id><updated>2012-01-16T11:27:41.850-08:00</updated><category term="apache" /><category term="scanner" /><category term="web python" /><category term="e-accelerator" /><category term="lock tables single transaction mysql mysqldump open-file-limit" /><category term="mod_wsgi" /><category term="multiple inheritance" /><category term="opcode" /><category term="python" /><category term="php" /><category term="object oriented" /><category term="wsgi" /><category term="dictionary" /><category term="oops" /><category term="skipfish" /><category term="abstract class" /><category term="caching" /><category term="xcache" /><category term="apc" /><category term="google" /><category term="web security" /><title>Insight</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://tek-insight.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://tek-insight.blogspot.com/" /><author><name>Ajay</name><uri>http://www.blogger.com/profile/02778089852049931793</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6ish-JicTI/AAAAAAAAAHc/QL-iGqyRCsM/S220/aj.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/dCfYp" /><feedburner:info uri="blogspot/dcfyp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DU4MSXgzfyp7ImA9WhRWEEQ.&quot;"><id>tag:blogger.com,1999:blog-1781703450015843710.post-1151834489253125561</id><published>2011-12-28T10:46:00.000-08:00</published><updated>2011-12-28T10:46:28.687-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T10:46:28.687-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lock tables single transaction mysql mysqldump open-file-limit" /><title>"Using Lock tables" error while taking Mysqldump</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is the comman error which we get while taking the mysqldump of large databases.&lt;br /&gt;
&lt;br /&gt;
File './databasename/tablename.MYD' not found (Errcode: 24) when using LOCK TABLES&lt;br /&gt;
&lt;br /&gt;
If you will print the system error code 24 by using perror, it will return &amp;nbsp;"OS error code &amp;nbsp;24: &amp;nbsp;Too many open files"&lt;br /&gt;
This error can be resolve in several ways -&lt;br /&gt;
1- set &lt;b&gt;open-files-limit&lt;/b&gt;=10000(or any higher number)&lt;br /&gt;
or define open-files-limit and open_files_limit in configuration files.&lt;br /&gt;
&lt;br /&gt;
Note- if you are using MySQL version &amp;lt; 5.1.52. only use open-files-limit don't use open_files_limit. In these version open_files_limit can't set limit higher than 65535. But for newer version these issues are fixed.&lt;br /&gt;
&lt;br /&gt;
2- By using &lt;b&gt;--single-transaction&lt;/b&gt; with mysqldump i.e - mysqldump --single-transactions -uroot -p database&amp;gt;database.sql&lt;br /&gt;
&amp;nbsp; &amp;nbsp; This option sends a START TRANSACTION SQL statement to the server before dumping data. It is useful only with transactional tables such as InnoDB and BDB, because then it dumps the consistent state of the database at the time when BEGIN was issued without blocking any applications.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; When using this option, you should keep in mind that only InnoDB tables are dumped in a consistent state. For example, any MyISAM or MEMORY tables dumped while using this option may still change state.(src -http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html)&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;br /&gt;
3- while taking the mysql dump, use&lt;b&gt; –-lock-tables&lt;/b&gt;=false option. But remember it is not recomended for innoDB engines&lt;br /&gt;
&lt;br /&gt;
Every dumped database, lock all tables to be dumped before dumping them. These tables locked to allow &amp;nbsp;concurrent inserts in the case of MyISAM tables with READ LOCAL . In case of Innodb (transactional) tables, --single-transaction better than --lock-tables because it does not need to lock the tables.&lt;br /&gt;
&lt;br /&gt;
Since this option locks tables for each database separately, it is not guaranteed that the tables in the dump file are logically consistent between databases. Tables in different databases may be dumped in completely different states&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-22527832-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1781703450015843710-1151834489253125561?l=tek-insight.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/q81CYB_U0VGtZMq6Ru3UKpv7iUY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q81CYB_U0VGtZMq6Ru3UKpv7iUY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/q81CYB_U0VGtZMq6Ru3UKpv7iUY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q81CYB_U0VGtZMq6Ru3UKpv7iUY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dCfYp/~4/VUkoS7TUj-E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tek-insight.blogspot.com/feeds/1151834489253125561/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://tek-insight.blogspot.com/2011/12/using-lock-tables-error-while-taking.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/1151834489253125561?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/1151834489253125561?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/dCfYp/~3/VUkoS7TUj-E/using-lock-tables-error-while-taking.html" title="&quot;Using Lock tables&quot; error while taking Mysqldump" /><author><name>Ajay</name><uri>http://www.blogger.com/profile/02778089852049931793</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6ish-JicTI/AAAAAAAAAHc/QL-iGqyRCsM/S220/aj.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tek-insight.blogspot.com/2011/12/using-lock-tables-error-while-taking.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIARnw7fCp7ImA9WhZaFU4.&quot;"><id>tag:blogger.com,1999:blog-1781703450015843710.post-1919516256704576685</id><published>2011-06-30T23:53:00.000-07:00</published><updated>2011-07-01T09:25:47.204-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-01T09:25:47.204-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wsgi" /><category scheme="http://www.blogger.com/atom/ns#" term="web python" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="mod_wsgi" /><category scheme="http://www.blogger.com/atom/ns#" term="apache" /><title>Setting up mod_wsgi for python in the web</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Mostly web servers cannot execute Python code directly. They need some kind of bridge between the program and server. The purpose of these bridges is to define how programs interact with the server.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Python Installation -&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Python Installation from Source -&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;1- Download python source from&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;http://www.python.org/getit/&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;2- tar xfz Python-3.1.tgz&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;3-cd Python-3.1&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;4-make&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;5-make install&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Python Installation on Windows -&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;1- Download python installer from&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;http://www.python.org/getit&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;2- Double click the installer&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;3- Follow the steps of installer&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;4- Once you have done, just check Start&amp;gt;&amp;gt;Programs&amp;gt;&amp;gt;Python 3.1&amp;gt;&amp;gt;IDLE (Python GUI). You will see the Python IDE&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Now Download mod_wsgi from -&lt;/b&gt;&lt;br /&gt;
http://code.google.com/p/modwsgi/downloads/list&lt;br /&gt;
Just check your Python and Apache version and download according to that.&lt;br /&gt;
&lt;b&gt;From Source code follow this step -&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;Unpack the mod_wsgi and run the usual:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;1 - untar it&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;2 ./configure&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;3 make&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;4 sudo make install&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&amp;nbsp;If you have downloaded binary Apache Module for Win32, rename to - mod_wsgi.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;5 Copy it in apache modules directory. In my case it was -&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;C:\xampp\apache\modules &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;6 Add the following line to your httpd.conf ( C:\xampp\apache\conf\httpd.conf)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&amp;nbsp; &amp;nbsp;LoadModule wsgi_module modules/mod_wsgi.so&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;7 Now restart Apache.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Write a WSGI Python code my.py and put into you htdocs/myapp&lt;/b&gt;-&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;def application(env, start_response):&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&amp;nbsp; &amp;nbsp; start_response("200 OK", [])&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&amp;nbsp; &amp;nbsp; output = "Hello World! Request: %s"&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&amp;nbsp; &amp;nbsp; output %= env['PATH_INFO']&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&amp;nbsp; &amp;nbsp; return [output]&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;b&gt;Now add following lines to httpd.conf.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;WSGIScriptAlias /myapp "C:/xampp/htdocs/myapp/"&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&lt;directory "c:="" htdocs="" myapp"="" xampp=""&gt;&lt;/directory&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&amp;nbsp; &amp;nbsp; Order deny,allow&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&amp;nbsp; &amp;nbsp; Allow from all&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Modify mime.types by adding 'py' -&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #999999;"&gt;text/html &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;html htm py&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Now restart the apache and try this in your browser -&lt;b&gt;http://localhost/myapp/my.py&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-22527832-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1781703450015843710-1919516256704576685?l=tek-insight.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2FSDxTw--_ia2LRvPspS29I07Fg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2FSDxTw--_ia2LRvPspS29I07Fg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2FSDxTw--_ia2LRvPspS29I07Fg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2FSDxTw--_ia2LRvPspS29I07Fg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dCfYp/~4/WS86wWcyjew" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tek-insight.blogspot.com/feeds/1919516256704576685/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://tek-insight.blogspot.com/2011/06/setting-up-modwsgi-for-python-in-web.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/1919516256704576685?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/1919516256704576685?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/dCfYp/~3/WS86wWcyjew/setting-up-modwsgi-for-python-in-web.html" title="Setting up mod_wsgi for python in the web" /><author><name>Ajay</name><uri>http://www.blogger.com/profile/02778089852049931793</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6ish-JicTI/AAAAAAAAAHc/QL-iGqyRCsM/S220/aj.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tek-insight.blogspot.com/2011/06/setting-up-modwsgi-for-python-in-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8ERH8_eCp7ImA9WxFXF00.&quot;"><id>tag:blogger.com,1999:blog-1781703450015843710.post-1378238569767806162</id><published>2010-05-24T03:19:00.001-07:00</published><updated>2010-05-24T04:33:25.140-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-24T04:33:25.140-07:00</app:edited><title>Cross Domain Ajax Request - Proxy, JSON style, FlXHR, XDR</title><content type="html">Same origin policy is the security measures implemented by browser to to prevent a resource loaded from one site manipulating or communicating with another site. Due to same origin policy Cross domain ajax XHR(XMLHttpRequest) is not possible.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y2VVsDldTF8/S_pS3DuNU_I/AAAAAAAAAIg/cNXMeQh_qvg/s1600/crd1.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 122px;" src="http://2.bp.blogspot.com/_Y2VVsDldTF8/S_pS3DuNU_I/AAAAAAAAAIg/cNXMeQh_qvg/s320/crd1.jpg" alt="" id="BLOGGER_PHOTO_ID_5474779402867659762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But now there are many ways to implement this. Some of them are -&lt;br /&gt;1. Proxy&lt;br /&gt;2. JSON with padding (JSONP)&lt;br /&gt;3. Flash based - FlXHR&lt;br /&gt;4. XDR XDomainRequest in Internet Explorer 8 (I have not tried this)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt; &lt;span style="font-weight: bold;"&gt;Proxy&lt;/span&gt;&lt;/span&gt; - This is the most comman approach. In this apporoach we send ajax request to our own domain and then send a backend request from our servert to another server, Now once we get a response we return it to the browser&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y2VVsDldTF8/S_pUOjw4ocI/AAAAAAAAAIo/dsiPQJyS310/s1600/crd2.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 103px;" src="http://3.bp.blogspot.com/_Y2VVsDldTF8/S_pUOjw4ocI/AAAAAAAAAIo/dsiPQJyS310/s320/crd2.jpg" alt="" id="BLOGGER_PHOTO_ID_5474780906117439938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Suppose abc.com application wants data from xyz.com in ajax look. App will send the request to abc.com server now abc.com server will send a backend request using any method to xyz.com and after getting the response it will return to the browser.&lt;br /&gt;There is one more proxy solution - using apache's mod_rewrite or mod_proxy we can request from our server to another server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;JSON - &lt;/span&gt;&lt;/span&gt;This is also one way to do cross-site scripting by On-Demand Javascript. This is very simple method in which we have to insert a new script elements into our application DOM, with dynamically created src  attributes. This look like an XMLHttpRequest().&lt;br /&gt;&lt;br /&gt;But there is a limitation in this - other party's service has to return a valid JavaScript. It should supports some kind of JSONP reply structure, Means The reponse back will load a JSON object as a parameter of the callback function that we specified in our request. For example - Yahoo has implemented this feature in their web services API's.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;http://search.yahooapis.com/ImageSearchService/V1/imageSearch?appid=YahooDemo&amp;amp;query=Madonna&amp;amp;results=2&amp;amp;output=json&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Above url will return a valid JSON object, but if I append a callback param, then it will load this object as a parameter of my callback function. See the output of this -&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;http://search.yahooapis.com/ImageSearchService/V1/imageSearch?appid=YahooDemo&amp;amp;query=Madonna&amp;amp;results=2&amp;amp;output=json&amp;amp;callback=getMyData&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, If we create an script element with this url as a source it will call the callback function with parameter of JSON output, now we have to only define the callback function and do the rest according to your need.&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;br /&gt;// Callback function&lt;br /&gt;function getMyData(jsonData) {&lt;br /&gt;alert('Titile = ' + jsonData.ResultSet.Result[0].Title + ' Summary = ' + jsonData.ResultSet.Result[0].Summary);&lt;br /&gt;head.removeChild(script);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Web service call&lt;br /&gt;var req  = 'http://search.yahooapis.com/ImageSearchService/V1/imageSearch?appid=YahooDemo&amp;amp;query=Madonna&amp;amp;results=2&amp;amp;output=json&amp;amp;callback=getMyData';&lt;br /&gt;// Create a new request object&lt;br /&gt;var head= document.getElementsByTagName('head')[0];&lt;br /&gt;var script= document.createElement('script');&lt;br /&gt;script.type= 'text/javascript';&lt;br /&gt;script.src= req;&lt;br /&gt;head.appendChild(script);&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Flash based -flXHR - &lt;/span&gt;&lt;/span&gt;flXHR is a client-based cross-browser, XHR-compatible tool for cross-domain Ajax. It utilizes an invisible flXHR.swf instance that acts as sort of a client-side proxy for requests, combined with a Javascript object/module wrapper that exposes an identical interface to the native XMLHttpRequest (XHR) browser object. I have just tried this and it is working perfectly fine. You have to do following thisngs only -&lt;br /&gt;1- Download flXHR from http://flxhr.flensed.com/download.php&lt;br /&gt;2- If you are using any library(jquery, prototype, dojo etc ) then it is good, there supports are also available.&lt;br /&gt;In my case i tested it simply-&lt;br /&gt;3- Extarct code, copy depoly folder on your app directory&lt;br /&gt;4- On your page include flXHR.js&lt;br /&gt;5 - Include this script code on your page&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;var ajobj = new flensed.flXHR();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;ajobj.onreadystatechange = ajCallback;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;ajobj.onerror = ajError;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;ajobj.loadPolicyURL = "http://staging.itimes.com/crossdomain.xml";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;function ajCallback(loadObj) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  if (loadObj.readyState == 4) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    alert(loadObj.responseXML);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    alert(loadObj.responseText);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;ajobj.open("POST","http://staging.itimes.com/flXHR-tests/xyz.php");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;ajobj.send();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;function ajError(errObj) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  alert("Error"+errObj);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;6- Thing has to remember is on thirdparty.com root directory, there should be a crossdomain.xml which defines the acess somthing like -&lt;cross-domain-policy&gt;&lt;allow-access-from domain="mysite.com"&gt;&lt;allow-http-request-headers-from domain="mysite.com" headers="*"&gt;&lt;/allow-http-request-headers-from&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;cross-domain-policy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  allow-access-from domain="mysite.com"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  allow-http-request-headers-from domain="mysite.com" headers="*"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;cross-domain-policy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Above are xml tag. Instead of mysite.com you can use * which will give access to all domain.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;XDR &lt;/span&gt;&lt;/span&gt;- XDomainRequest is Cross-domain Request in Internet Explorer 8, It is one of the way to make anonymous requests to third-party sites that support XDR and opt in to making their data available across domains. It has two components: a client side that makes a request for data to a URL across domains, and a server side that responds with the Access-Control-Allow-Origin header of either * or the exact URL of the requesting page.IE8 to request data from the domain’s server by sending an Origin header with the serialized value of the origin of the requestor and response will return if server responds with Access-Control-Allow-Origin. You can read more about XDR - &lt;a href="http://msdn.microsoft.com/en-us/library/dd573303%28VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd573303%28VS.85%29.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Practically I have not tried this but i'll try it soon.&lt;/allow-access-from&gt;&lt;/cross-domain-policy&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1781703450015843710-1378238569767806162?l=tek-insight.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SmWFua8ZkEY3zeWr6mPf8rIM7Fk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SmWFua8ZkEY3zeWr6mPf8rIM7Fk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SmWFua8ZkEY3zeWr6mPf8rIM7Fk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SmWFua8ZkEY3zeWr6mPf8rIM7Fk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dCfYp/~4/KVBLK_XU4Go" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tek-insight.blogspot.com/feeds/1378238569767806162/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://tek-insight.blogspot.com/2010/05/cross-domain-ajax-request-proxy-json.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/1378238569767806162?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/1378238569767806162?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/dCfYp/~3/KVBLK_XU4Go/cross-domain-ajax-request-proxy-json.html" title="Cross Domain Ajax Request - Proxy, JSON style, FlXHR, XDR" /><author><name>Ajay</name><uri>http://www.blogger.com/profile/02778089852049931793</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6ish-JicTI/AAAAAAAAAHc/QL-iGqyRCsM/S220/aj.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_Y2VVsDldTF8/S_pS3DuNU_I/AAAAAAAAAIg/cNXMeQh_qvg/s72-c/crd1.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://tek-insight.blogspot.com/2010/05/cross-domain-ajax-request-proxy-json.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEECQHk-eSp7ImA9WxFRFU8.&quot;"><id>tag:blogger.com,1999:blog-1781703450015843710.post-6451509885321795833</id><published>2010-04-28T23:03:00.000-07:00</published><updated>2010-04-28T23:31:01.751-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-28T23:31:01.751-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="multiple inheritance" /><category scheme="http://www.blogger.com/atom/ns#" term="abstract class" /><category scheme="http://www.blogger.com/atom/ns#" term="oops" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="object oriented" /><title>Alternate options to acheive Multiple Inheritance property to some extent in php</title><content type="html">As we all know that php does not support multiple inheritance, but we can acheive it through some extent by writing our code. suppose we have a absract class Ingredents -&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;abstract class Ingredents {  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  private $DishId;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  abstract public function requirement();  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  public function __construct($DishId) {  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    $this-&gt;DishId = $DishId;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  } &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  public function getDishId() {  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    return $this-&gt;DishId;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  }  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now If we want to make milk cake we can extend it simply -&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;class Milkcake extends Ingredents {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    private $req = array();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    public function __construct($req){  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      $this-&gt;req = $req;   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    public function requirement() {  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      return $this-&gt;req;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    }  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And if we want to make kesar rice then also we can get it simply&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;class KesarRice extends Ingredents { &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  private $req = array();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  public function __construct($req) {  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    $this-&gt;req = $req;   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  public function requirement() {  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    return $this-&gt;req;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  }  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But now if we want to make kheer then ? ok we are going to use property of Milkcake and kesar rice both.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;class Kheer {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  private $req = array();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  private $dishes = array();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  public function requirement() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    foreach ($this-&gt;dishes as $dishes) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      $this-&gt;req[] = $dishes-&gt;requirement();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  public function setDishes($dishes) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    $this-&gt;dishes = $dishes;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  public function getRequirement() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;    return $this-&gt;req ;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now Execute the code -&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$kesar_rice = new KesarRice(array('Rice','kesar'));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$kesar_rice_requirement = $kesar_rice-&gt;requirement();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;print_r($kesar_rice_requirement);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$milk_cake = new Milkcake(array('Milk','sugar'));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$milk_cake_requirement = $milk_cake-&gt;requirement();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;print_r($milk_cake_requirement);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$kheer = new Kheer();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$kheer-&gt;setDishes(array(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;'KesarRice' =&gt; new KesarRice(array('Rice','kesar')),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;'Milkcake' =&gt; new Milkcake(array('Milk','sugar'))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$kheer-&gt;requirement();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$kheer_requirement = $kheer-&gt;getRequirement();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;print_r($kheer_requirement);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1781703450015843710-6451509885321795833?l=tek-insight.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OoIMtdQ6dr9yrAbW6MzGgoTpkNs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OoIMtdQ6dr9yrAbW6MzGgoTpkNs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OoIMtdQ6dr9yrAbW6MzGgoTpkNs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OoIMtdQ6dr9yrAbW6MzGgoTpkNs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dCfYp/~4/txSZV5OsHOU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tek-insight.blogspot.com/feeds/6451509885321795833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://tek-insight.blogspot.com/2010/04/alternate-options-to-acheive-multiple.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/6451509885321795833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/6451509885321795833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/dCfYp/~3/txSZV5OsHOU/alternate-options-to-acheive-multiple.html" title="Alternate options to acheive Multiple Inheritance property to some extent in php" /><author><name>Ajay</name><uri>http://www.blogger.com/profile/02778089852049931793</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6ish-JicTI/AAAAAAAAAHc/QL-iGqyRCsM/S220/aj.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tek-insight.blogspot.com/2010/04/alternate-options-to-acheive-multiple.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQMRH4yfCp7ImA9WxFRFU8.&quot;"><id>tag:blogger.com,1999:blog-1781703450015843710.post-1123764491877829469</id><published>2010-04-20T04:16:00.001-07:00</published><updated>2010-04-28T23:26:25.094-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-28T23:26:25.094-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="scanner" /><category scheme="http://www.blogger.com/atom/ns#" term="skipfish" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="dictionary" /><category scheme="http://www.blogger.com/atom/ns#" term="web security" /><title>skipfish - web application security scanner from Google.</title><content type="html">Few days earlier I tried, skipfish - web application security scanner from Google.&lt;br /&gt;It uses dictionary- based and and recursive crawl approach. The way it displays the result is very impressing, It has rich javascript based user interface. It divides the results in several parts like - High risk, Medium risk, Low risk, Warnings, Notes, Unique children nodes.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y2VVsDldTF8/S82Nm1o7-7I/AAAAAAAAAH8/e-9zaizggLY/s1600/skip1.jpg"&gt;&lt;img style="cursor: pointer; width: 346px; height: 96px;" src="http://2.bp.blogspot.com/_Y2VVsDldTF8/S82Nm1o7-7I/AAAAAAAAAH8/e-9zaizggLY/s320/skip1.jpg" alt="" id="BLOGGER_PHOTO_ID_5462177621443607474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Skipfish is purely written in C and easily achieves 2000 requests per second. Skipfish is realy very easy to install&lt;br /&gt;Installation -&lt;br /&gt;1. Download skipfish from - &lt;a href="http://skipfish.googlecode.com/files/skipfish-1.32b.tgz"&gt;http://skipfish.googlecode.com/files/skipfish-1.32b.tgz&lt;/a&gt;&lt;br /&gt;2. Untar it.&lt;br /&gt;3. Now we need libidn, I installed it with add/remove software option on fedora. You can download it from &lt;a href="http://ftp.gnu.org/gnu/libidn/libidn-1.18.tar.gz"&gt;libidn&lt;/a&gt;.&lt;br /&gt;4. cd skipfish&lt;br /&gt;5. make&lt;br /&gt;(it does not standalone installation (make install))&lt;br /&gt;6.Copy dictionary file. According to your use you can copy any dictionary file.&lt;br /&gt;cp dictionaries/default.wl skipfish.wl&lt;br /&gt;&lt;br /&gt;Now you can test your web application using skipfish.&lt;br /&gt;&lt;br /&gt;./skipfish -o siteresult http://example&lt;br /&gt;&lt;br /&gt;Skipfish provide various option like -&lt;br /&gt;-A user:pass (for simple HTTP credentials)&lt;br /&gt;-C cookiename=cookieval (for cokkie credentials)&lt;br /&gt;-X /logout.php (matching url will not be feched)&lt;br /&gt;-I (only crawl URLs matching a substring)&lt;br /&gt;-S (ignore links on pages)&lt;br /&gt;-D (allow to specify additional domains )&lt;br /&gt;-B (prevents crawl to third-party domain)&lt;br /&gt;and so on continue... for more details you can visit - &lt;a href="http://code.google.com/p/skipfish/wiki/SkipfishDoc"&gt;http://code.google.com/p/skipfish/wiki/SkipfishDoc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;skipfish is very useful, its high risks includes -&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Server-side SQL injection (including blind vectors, numerical parameters).&lt;/li&gt;&lt;li&gt;Explicit SQL-like syntax in GET or POST parameters.&lt;/li&gt;&lt;li&gt;Server-side shell command injection (including blind vectors).&lt;/li&gt;&lt;li&gt;Server-side XML / XPath injection (including blind vectors).&lt;/li&gt;&lt;li&gt;Format string vulnerabilities.&lt;/li&gt;&lt;li&gt;Integer overflow vulnerabilities.&lt;/li&gt;&lt;li&gt;Locations accepting HTTP PUT.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Before using skipfish you make sure that you run this test on staging instance because skipfish will crawl to every link that appears on the site. It can perform any operation of insert, delete, and modify so you should not run on a production site. When I used skipfish it gives very valuable information. Detecting flaws early is surely something worth doing.&lt;br /&gt;skipfish is good quality - it updates it dictionary on run time. Before using skipfish please read skipfish/dictionaries/README-FIRST. So go ahead and use it but not on production server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1781703450015843710-1123764491877829469?l=tek-insight.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-ZAYbZldVyaawIG2KDY80iCsG3g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ZAYbZldVyaawIG2KDY80iCsG3g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-ZAYbZldVyaawIG2KDY80iCsG3g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ZAYbZldVyaawIG2KDY80iCsG3g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dCfYp/~4/eM0A7eZBEac" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tek-insight.blogspot.com/feeds/1123764491877829469/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://tek-insight.blogspot.com/2010/04/skipfish-web-application-security.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/1123764491877829469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/1123764491877829469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/dCfYp/~3/eM0A7eZBEac/skipfish-web-application-security.html" title="skipfish - web application security scanner from Google." /><author><name>Ajay</name><uri>http://www.blogger.com/profile/02778089852049931793</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6ish-JicTI/AAAAAAAAAHc/QL-iGqyRCsM/S220/aj.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_Y2VVsDldTF8/S82Nm1o7-7I/AAAAAAAAAH8/e-9zaizggLY/s72-c/skip1.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://tek-insight.blogspot.com/2010/04/skipfish-web-application-security.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIHQX8yeyp7ImA9WxFRFU8.&quot;"><id>tag:blogger.com,1999:blog-1781703450015843710.post-3100575817745269547</id><published>2010-03-23T02:22:00.000-07:00</published><updated>2010-04-28T23:28:50.193-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-28T23:28:50.193-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="caching" /><category scheme="http://www.blogger.com/atom/ns#" term="opcode" /><category scheme="http://www.blogger.com/atom/ns#" term="apc" /><category scheme="http://www.blogger.com/atom/ns#" term="e-accelerator" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="xcache" /><title>APC - Alternative PHP Cache</title><content type="html">I am working on a heavy traffic social networking site (build in php), we are already using Memcache and some other file based caching techniques. Our team decided to use any opcode cahing which can cache compiled code, we decided to use APC.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;APC (Alternative PHP Cache)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We all know that php is an interpreted Language, when we request for any page, following process happens -&lt;br /&gt;1. Load the script.&lt;br /&gt;2. Parse the script.&lt;br /&gt;3. Compile into opcode.&lt;br /&gt;4. Execute the script.&lt;br /&gt;When we use any opcode caching(here is APC), it cache the compile code in memory. So when this page will again accessed it reads the compile code from memory and execute it. This process saves the step #1,#2,#3. So it saves time and computer resources both.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing APC&lt;/span&gt; - APC is free open source package by PECL,. It is actively maintained and most probably will be include in php6. Here are the easy steps to install it -&lt;br /&gt;1. Download the package from &lt;a href="http://pecl.php.net/package/APC"&gt;http://pecl.php.net/package/APC&lt;/a&gt;&lt;br /&gt;2. Untar it&lt;br /&gt;$ tar -xzvf APC-3.1.3p1.tgz&lt;br /&gt;3. Go in APC folder&lt;br /&gt;$ APC-3.1.3p1&lt;br /&gt;4. $ phpize&lt;br /&gt;5. $ ./configure --enable-apc --enable-apc-mmap --with-apxs --with-php-config=/usr/local/bin/php-config (check your php config path it may be /usr/bin/php-config also)&lt;br /&gt;6.$ make&lt;br /&gt;7.$ make test&lt;br /&gt;8.$ make install&lt;br /&gt;9 Insert following entry in your php.ini&lt;br /&gt;extension=apc.so&lt;br /&gt;6. Move apc.so in your php modules folder&lt;br /&gt;$ mv /usr/local/lib/php/extensions/no-debug-non-zts-20060613/apc.so /usr/lib/php/modules/&lt;br /&gt;7. Now restart your apache.&lt;br /&gt;&lt;br /&gt;Once the APC has installed you can configure it. APC has vast range of run time configuration option( lke setting segments, segments size, file ttl, user ttl etc). You can find full list here - &lt;a href="http://in3.php.net/manual/en/apc.configuration.php"&gt;http://in3.php.net/manual/en/apc.configuration.php&lt;/a&gt;&lt;br /&gt;With the use of APC_UPLOAD_PROGRESS you can create progress meter also.&lt;br /&gt;&lt;br /&gt;After configuration move apc.php in your root directory. Now run apc.php, it will show you all the valuable information, Even it shows the memory usage and fragmentation graph, all the files and user variable cached etc.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6iWXRdAN2I/AAAAAAAAAHM/-Lv_rJj8-sI/s1600-h/ac1.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 186px;" src="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6iWXRdAN2I/AAAAAAAAAHM/-Lv_rJj8-sI/s320/ac1.jpg" alt="" id="BLOGGER_PHOTO_ID_5451772675498194786" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6iXFLxFdEI/AAAAAAAAAHU/eYiI5T5Lgw4/s1600-h/ac2.jpg"&gt;&lt;img style="cursor: pointer; width: 229px; height: 186px;" src="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6iXFLxFdEI/AAAAAAAAAHU/eYiI5T5Lgw4/s320/ac2.jpg" alt="" id="BLOGGER_PHOTO_ID_5451773464245793858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have not use eAccelerator but i read at several places that in performance eAccelerator is little better than APC, but eAccelerator is not stable. eAccelerator produce regular fatal errors, needing to restart Apache. Please read these links -&lt;br /&gt;&lt;a href="http://drupal.org/node/323736"&gt;http://drupal.org/node/323736&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.simplemachines.org/community/index.php?topic=364083.0"&gt;http://www.simplemachines.org/community/index.php?topic=364083.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since APC is stable, actively maintained, undergoing with quick development and most probably will include in php 6 so, i recommend APC. But definately i'll test eAccelerator and Xcache also to compare the result with APC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1781703450015843710-3100575817745269547?l=tek-insight.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PagNyZoonyFHzc0vV2buf7x83rg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PagNyZoonyFHzc0vV2buf7x83rg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PagNyZoonyFHzc0vV2buf7x83rg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PagNyZoonyFHzc0vV2buf7x83rg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dCfYp/~4/MetQ0-LVP1s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tek-insight.blogspot.com/feeds/3100575817745269547/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://tek-insight.blogspot.com/2010/03/apc-alternative-php-cache.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/3100575817745269547?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1781703450015843710/posts/default/3100575817745269547?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/dCfYp/~3/MetQ0-LVP1s/apc-alternative-php-cache.html" title="APC - Alternative PHP Cache" /><author><name>Ajay</name><uri>http://www.blogger.com/profile/02778089852049931793</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6ish-JicTI/AAAAAAAAAHc/QL-iGqyRCsM/S220/aj.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Y2VVsDldTF8/S6iWXRdAN2I/AAAAAAAAAHM/-Lv_rJj8-sI/s72-c/ac1.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://tek-insight.blogspot.com/2010/03/apc-alternative-php-cache.html</feedburner:origLink></entry></feed>

