<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3676749714345703284</id><updated>2011-07-07T23:41:53.513+02:00</updated><title type='text'>alexandru toth</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-1718413135231341690</id><published>2011-05-25T08:41:00.001+02:00</published><updated>2011-05-25T08:42:42.517+02:00</updated><title type='text'>PHP Proxy for QlikView sever</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial; color: rgb(99, 99, 99); font-size: 12px; "&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;It is quite counter-intuitive that the server-settings for QVS have to be configured in Internet Explorer's settings page, using the same account that is used to run QVS service. Not to mention that whenever the account decides to configure itself as "roaming profile", or the domain policy for Internet explorer is changed, or .. the settings are lost = maps don't work.&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;Here is another way , where there is a local Apache web server running PHP and acting getting the Google maps thry the same proxy that is configured in Internet Explorer. It uses Windows authentication for the proxy server.&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;Probaly you can write the equivalent in other webserver (ex IIS ) and other programming language .&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;/strong&gt;&lt;/p&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;$usr = 'user:password';&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;$proxy = '10.11.12.13:8080';&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;//force header to JPEG&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;header("Content-type: image/jpeg\n\n");&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;//same GET parameters as with Google Maps&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;$url = '&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://maps.google.com/staticmap?center=" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: initial; outline-style: none; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 127, 192); text-decoration: none; background-position: initial initial; background-repeat: initial initial; "&gt;http://maps.google.com/staticmap?center=&lt;/a&gt;&lt;span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;' . $_GET['center'] .&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;    '&amp;amp;zoom=' . $_GET['zoom'] .&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;    '&amp;amp;maptype=' . $_GET['maptype'] .&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;    '&amp;amp;size=' . $_GET['size'] .&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;    '&amp;amp;key=' . $_GET['key'];&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;// create a new cURL resource&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;$ch = curl_init();&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;// set URL and other appropriate options&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;curl_setopt($ch, CURLOPT_URL, $url);&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;curl_setopt($ch, CURLOPT_HEADER, 0);&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;//curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;curl_setopt($ch, CURLOPT_PROXY, $proxy);&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;curl_setopt($ch, CURLOPT_PROXYUSERPWD, $usr);&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;// grab URL and pass it to the browser&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;curl_exec($ch);&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 8pt; height: 8pt; background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;// close cURL resource, and free up system resources&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;curl_close($ch);&lt;/strong&gt;&lt;/p&gt;&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 1em; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;?&amp;gt;&lt;/strong&gt;&lt;/p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-1718413135231341690?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/1718413135231341690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=1718413135231341690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/1718413135231341690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/1718413135231341690'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2011/05/php-proxy-for-qlikview-sever.html' title='PHP Proxy for QlikView sever'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-188699870089621752</id><published>2011-05-09T14:25:00.002+02:00</published><updated>2011-05-09T14:25:54.896+02:00</updated><title type='text'>video about Reverse Snowflake Joins</title><content type='html'>Hi,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a nice video about RevJ : http://www.youtube.com/watch?v=UPZctPW9Nmc&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-Alex&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-188699870089621752?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/188699870089621752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=188699870089621752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/188699870089621752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/188699870089621752'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2011/05/video-about-reverse-snowflake-joins.html' title='video about Reverse Snowflake Joins'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-4078812391067451160</id><published>2010-09-10T01:23:00.006+03:00</published><updated>2010-09-17T17:55:50.481+03:00</updated><title type='text'>QVPR as a directed graph - part 2</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(115, 115, 115); font-family: arial, verdana, sans-serif; font-size: 13px; line-height: 20px; "&gt;The QlikView 9 management console does not show complex dependencies between tasks , triggers, source documents. Also when deleting tasks there might be "orphaned" categories etc, not visible otherwise.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(115, 115, 115); font-family: arial, verdana, sans-serif; font-size: 13px; line-height: 20px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(115, 115, 115); font-family: arial, verdana, sans-serif; font-size: 13px; line-height: 20px; "&gt;Let's render it with old and reliable &lt;a href="http://graphviz.org"&gt;Graphviz&lt;/a&gt;. So how does a big graph look like? For example like &lt;a href="http://snowflakejoins.com/static/blog.svg"&gt;this &lt;/a&gt;(with names removed, due to usual non disclosure agreements)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(115, 115, 115); font-family: arial, verdana, sans-serif; font-size: 13px; line-height: 20px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(115, 115, 115); font-family: arial, verdana, sans-serif; font-size: 13px; line-height: 20px; "&gt;In case you wonder why it looks small, you probably are using Internet Explorer and it's built-in Adobe SVG  viewer. Those lack scrollbars when rendering SVG files, but one can right click and "zoom out" few times. Highly recommend to use any normal browser capable of rendering SVG such as Firefox, or Safari, or Chrome.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   &gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(115, 115, 115); font-family: arial, verdana, sans-serif; font-size: 13px; line-height: 20px; "&gt;-Alex&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-4078812391067451160?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/4078812391067451160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=4078812391067451160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/4078812391067451160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/4078812391067451160'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2010/09/qvpr-as-directed-graph-part-2.html' title='QVPR as a directed graph - part 2'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-8058749569315310776</id><published>2010-09-07T15:27:00.004+02:00</published><updated>2010-09-07T15:30:40.537+02:00</updated><title type='text'>reload metadata</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;One is able to parse the *.qvw.log files for statements loading from database tables, Excel files or reading / writing to QVD files. again, rendering with &lt;a href="http://www.graphviz.org/"&gt;Graphviz &lt;/a&gt;gives a nice directed graph&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_3AvgYhIXDNw/TIY-YNsHmtI/AAAAAAAAAEY/3fGBz7rxKr8/s320/meta.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 123px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5514163379474242258" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-8058749569315310776?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/8058749569315310776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=8058749569315310776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/8058749569315310776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/8058749569315310776'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2010/09/reload-metadata.html' title='reload metadata'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3AvgYhIXDNw/TIY-YNsHmtI/AAAAAAAAAEY/3fGBz7rxKr8/s72-c/meta.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-7751752025032408934</id><published>2010-09-07T12:23:00.009+02:00</published><updated>2010-09-07T12:32:05.225+02:00</updated><title type='text'>QVPR as a directed graph</title><content type='html'>&lt;div&gt;&lt;p class="MsoNormal"&gt;It takes 11 clicks to get QEMC open the “indented” task dependency. And you still don’t see it properly .. &lt;/p&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3AvgYhIXDNw/TIYTkb-nz7I/AAAAAAAAAEQ/-4GNfB7MCEs/s1600/qemc.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 97px;" src="http://1.bp.blogspot.com/_3AvgYhIXDNw/TIYTkb-nz7I/AAAAAAAAAEQ/-4GNfB7MCEs/s320/qemc.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5514116310468382642" /&gt;&lt;/a&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3AvgYhIXDNw/TIYTkb-nz7I/AAAAAAAAAEQ/-4GNfB7MCEs/s1600/qemc.png"&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;Wouldn’t a directed graph be easier to understand?&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The one bellow is made by extracting task dependencies from Trigger.xml , task names from ExternalProgramTask.XML, PauseTask.xml, DocumentTask.xml; document names from Sourcedocument.xml; categories from Category.xml . &lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;Rendering with &lt;a href="http://www.graphviz.org/"&gt;Graphviz &lt;/a&gt;.&lt;/p&gt;&lt;img src="http://1.bp.blogspot.com/_3AvgYhIXDNw/TIYTDakro6I/AAAAAAAAAEA/U87uib4KnR0/s320/x.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 171px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5514115743155463074" /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;p class="MsoNormal" style="text-align: left;"&gt;It looks as there are 3 reload tasks for same document. Adding also source document confirms it.&lt;/p&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3AvgYhIXDNw/TIYTe08yDkI/AAAAAAAAAEI/7WbxNOIORuc/s1600/dq.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 146px;" src="http://2.bp.blogspot.com/_3AvgYhIXDNw/TIYTe08yDkI/AAAAAAAAAEI/7WbxNOIORuc/s320/dq.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5514116214092336706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3AvgYhIXDNw/TIYTDakro6I/AAAAAAAAAEA/U87uib4KnR0/s1600/x.png"&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;Tasks bellow do the same thing. It is easier to replace two external tasks with one (and make the calls from the batch file)&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3AvgYhIXDNw/TIYTAQJmX1I/AAAAAAAAAD4/vw2pHD2VDBg/s1600/y.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 258px;" src="http://4.bp.blogspot.com/_3AvgYhIXDNw/TIYTAQJmX1I/AAAAAAAAAD4/vw2pHD2VDBg/s320/y.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5514115688817909586" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;Adding the source documents will not create a mess.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3AvgYhIXDNw/TIYS9vHETcI/AAAAAAAAADw/Tkzec0GFuNE/s1600/z.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 157px;" src="http://3.bp.blogspot.com/_3AvgYhIXDNw/TIYS9vHETcI/AAAAAAAAADw/Tkzec0GFuNE/s320/z.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5514115645589179842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-7751752025032408934?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/7751752025032408934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=7751752025032408934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/7751752025032408934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/7751752025032408934'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2010/09/qvpr-as-directed-graph.html' title='QVPR as a directed graph'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3AvgYhIXDNw/TIYTkb-nz7I/AAAAAAAAAEQ/-4GNfB7MCEs/s72-c/qemc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-2589435752466483350</id><published>2010-03-04T10:11:00.001+02:00</published><updated>2010-03-04T10:11:31.061+02:00</updated><title type='text'>QlikView : memory limits</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(115, 115, 115); font-family: arial, verdana, sans-serif; font-size: 13px; line-height: 20px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;My client has several large machines ( 128+ Gb memory, 16+ processor cores) for developer use. There can be tens of instances of qv.exe developer tool running fine at the same time. &lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;That is, until somebody makes a loop in the script, and loads several millions rows, and consumes all available virtual memory. In that case programs (and Windows services) will randomly fail with variations of "out of memory" and "not enough resources". In rare cases memory shortage is so bad that Windows will corrupt disk and registry .&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;Here is a very good remedy, inspired from Unix "&lt;a title="ulimit" href="http://www.google.fi/search?rlz=1C1GGLS_enFI360FI360&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=man+ulimit" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 127, 192); text-decoration: none; cursor: pointer; background-position: initial initial; background-repeat: initial initial; "&gt;ulimit&lt;/a&gt;": kill all processes consuming more than X amount of memory. Of course it is hard to say a correct limit. With current amounts of data, well behaved documents use up 30 Gb memory, and bad scripts consume in excess of 100 Gb memory and crash. There must be a sanity limit somewhere in between.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 30px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;b style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;powershell -command "&amp;amp; {get-process qv | Where-Object {$_.PeakVirtualMemorySize64 -gt 50000000000 } | Stop-Process } "&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a title="Powershell" href="http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 127, 192); text-decoration: none; cursor: pointer; background-position: initial initial; background-repeat: initial initial; "&gt;Powershell &lt;/a&gt;is not particularly fast, but other command line tools (ex from &lt;a title="Sysinternals" href="http://technet.microsoft.com/en-us/sysinternals/default.aspx" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 127, 192); text-decoration: none; cursor: pointer; background-position: initial initial; background-repeat: initial initial; "&gt;Sysinternals&lt;/a&gt;) do not display correctly memory usage for 64 bit processes.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;Script above is scheduled every 10 minutes, and has improved a lot the availability of the servers. Of course, here and there some developer starts yelling, but so far there was always something wrong with those QVW files. My favourite so far: Export 50 million rows (with calculated columns) to Excel ..&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: top; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;-Alex&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-2589435752466483350?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/2589435752466483350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=2589435752466483350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2589435752466483350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2589435752466483350'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2010/03/qlikview-memory-limits.html' title='QlikView : memory limits'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-2337899607644767496</id><published>2008-11-11T09:03:00.002+02:00</published><updated>2008-11-11T09:09:25.453+02:00</updated><title type='text'>link to revj from Canada</title><content type='html'>Dr. Dwight Deugo from School of Computer Science, Carleton, Canada kindly mentions Reverse Snowflake Joins in his COMP5900 course on Open Source Software (Fall 2008). Link is &lt;a href="http://www.scs.carleton.ca/%7Edeugo/comp5900/presentations/slidy/graphviz.pdf"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-2337899607644767496?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/2337899607644767496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=2337899607644767496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2337899607644767496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2337899607644767496'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/11/link-to-revj-from-canada.html' title='link to revj from Canada'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-4336277725626687568</id><published>2008-09-26T11:14:00.000+02:00</published><updated>2008-09-26T11:15:31.040+02:00</updated><title type='text'>Link from Pyparsing site</title><content type='html'>There is a link from &lt;a href="http://pyparsing.wikispaces.com/WhosUsingPyparsing"&gt;Pyparsing&lt;/a&gt; to revj&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-4336277725626687568?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/4336277725626687568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=4336277725626687568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/4336277725626687568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/4336277725626687568'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/09/link-from-pyparsing-site.html' title='Link from Pyparsing site'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-1880423741106621762</id><published>2008-09-12T21:33:00.001+02:00</published><updated>2008-09-12T21:33:53.290+02:00</updated><title type='text'>Digg</title><content type='html'>Posted a link on &lt;a href="http://digg.com/software/Reverse_Snowflake_Joins"&gt;Digg&lt;/a&gt;, hope that somebody will care to vote it up&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-1880423741106621762?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/1880423741106621762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=1880423741106621762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/1880423741106621762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/1880423741106621762'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/09/digg.html' title='Digg'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-79188128465663676</id><published>2008-09-10T17:13:00.001+02:00</published><updated>2008-09-10T17:14:12.524+02:00</updated><title type='text'>online demo</title><content type='html'>Finally managed to put an online demo of &lt;a href="http://www.snowflakejoins.com/revj"&gt;Reverse Snowflake Joins&lt;/a&gt; .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-79188128465663676?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/79188128465663676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=79188128465663676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/79188128465663676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/79188128465663676'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/09/online-demo.html' title='online demo'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-1279542681072316190</id><published>2008-09-06T21:54:00.001+02:00</published><updated>2008-09-06T21:54:56.807+02:00</updated><title type='text'>Link from Graphviz</title><content type='html'>Reverse Snowflake Joins was linked from &lt;a href="http://graphviz.org/Resources.php"&gt;Graphviz&lt;/a&gt; site&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-1279542681072316190?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/1279542681072316190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=1279542681072316190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/1279542681072316190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/1279542681072316190'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/09/link-from-graphviz.html' title='Link from Graphviz'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-3263065027802197688</id><published>2008-08-27T12:57:00.003+03:00</published><updated>2008-08-27T13:00:40.520+03:00</updated><title type='text'>Link from MonetDB</title><content type='html'>MonetDB site posted a link to Reverse Snowflake Joins, their link is &lt;a href="http://monetdb.cwi.nl/"&gt;http://monetdb.cwi.nl/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-3263065027802197688?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/3263065027802197688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=3263065027802197688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/3263065027802197688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/3263065027802197688'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/08/link-from-monetdb.html' title='Link from MonetDB'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-8129504379395804120</id><published>2008-08-05T14:57:00.001+03:00</published><updated>2008-08-05T14:57:44.232+03:00</updated><title type='text'>Wikipedia</title><content type='html'>And a link on &lt;a href="http://en.wikipedia.org/wiki/Snowflake_schema"&gt;Wikipedia &lt;/a&gt;:-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-8129504379395804120?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/8129504379395804120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=8129504379395804120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/8129504379395804120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/8129504379395804120'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/08/wikipedia.html' title='Wikipedia'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-9025501348547682340</id><published>2008-08-04T22:21:00.001+03:00</published><updated>2008-08-04T22:22:42.115+03:00</updated><title type='text'>Reverse Snowflake Joins</title><content type='html'>Now the project is on SourceForge, at &lt;a href="http://sourceforge.net/projects/revj/"&gt;http://sourceforge.net/projects/revj/&lt;/a&gt; . And a presentation at &lt;a href="http://revj.sourceforge.net/"&gt;http://revj.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-9025501348547682340?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/9025501348547682340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=9025501348547682340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/9025501348547682340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/9025501348547682340'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/08/reverse-snowflake-joins.html' title='Reverse Snowflake Joins'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-6282558940450948996</id><published>2008-08-01T14:52:00.005+03:00</published><updated>2008-11-13T23:41:33.292+02:00</updated><title type='text'>Reverse Snowflake Joins</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3AvgYhIXDNw/SJL9CUnCGuI/AAAAAAAAAA0/31qVpphtJnY/s1600-h/sample.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_3AvgYhIXDNw/SJL9CUnCGuI/AAAAAAAAAA0/31qVpphtJnY/s320/sample.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5229520333664557794" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="  line-height: 16px; font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Just subbmited to Sourceforge.net a new project, called "Reverse Snowflake Joins" (revj). The description:&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 16px;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 16px; font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;A tool that parses SQL Select statements and generates a diagram. In addition to joins, the diagram shows parts of the underlying SQL directly in the diagram. For example x=30 , GROUP BY (year), SUM(profit), HAVING MIN(age) &gt; 18 &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 16px;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 16px;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;And a sample diagram with some random column names, WHERE conditions and GROUP BYs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 16px;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 16px;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;-Alex &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  line-height: 16px;font-family:arial;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  line-height: 16px;font-family:arial;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-6282558940450948996?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/6282558940450948996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=6282558940450948996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/6282558940450948996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/6282558940450948996'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/08/just-subbmited-to-sourceforge.html' title='Reverse Snowflake Joins'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3AvgYhIXDNw/SJL9CUnCGuI/AAAAAAAAAA0/31qVpphtJnY/s72-c/sample.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-3345243401401437804</id><published>2008-07-30T20:15:00.004+03:00</published><updated>2008-07-30T20:24:04.140+03:00</updated><title type='text'>Practical usage of "Tangible Functional Programming"</title><content type='html'>Just watched the Google Talk about " &lt;a href="http://www.youtube.com/watch?v=faJ8N0giqzw"&gt;Tangible Functional Programming"&lt;/a&gt; by &lt;a href="http://conal.net/"&gt;Conal Elliott&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Got the idea of using it in practice by wrapping up existing applications and offering them inside the framework. For example a "transformation" around say, Firefox, that takes as input a string and represents as output the webpage (maybe of primitive type image) . An example application would be: input text box  "www.google.com/search?q=" , another input text box with the actual query, say "Python", and the transformation "browse with Firefox"&lt;br /&gt;&lt;br /&gt;Or  a transformation for mysql command line utility, that would take inputs: database + username + password + SQL statement and return the query result as text.&lt;br /&gt;&lt;br /&gt;Many applications , including GUIs, can be accessed on the simple command line + parameters paradigm, and as such could be wrapped up as TV transformations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-3345243401401437804?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/3345243401401437804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=3345243401401437804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/3345243401401437804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/3345243401401437804'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2008/07/practical-usage-of-tangible-functional.html' title='Practical usage of &quot;Tangible Functional Programming&quot;'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-2056141728568982412</id><published>2007-05-27T20:19:00.000+03:00</published><updated>2007-05-27T20:25:08.884+03:00</updated><title type='text'>Cubulus and bitmap indexes opinion</title><content type='html'>&lt;a href="http://homepage.mac.com/s_lott/iblog/architecture/C20070522153704/E20070525211441/index.html"&gt;S. Lott&lt;/a&gt; has written a short note regarding Cubulus. Quote: &lt;i&gt;"It may be that this technique helps a lot with an RDBMS that doesn't support the star schema via bit-mapped indexes.  It may be that this technique only helps a little with a more modern RDBMS." &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Somewhat true, haven't measured GROUP BY versus range-queries with bitmap indexes (say, in Oracle), and neither in MonetDB. Time will tell if simpler and "embarrasingly parallel" SQL is better..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-2056141728568982412?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/2056141728568982412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=2056141728568982412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2056141728568982412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2056141728568982412'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/05/s.html' title='Cubulus and bitmap indexes opinion'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-2528084803065357957</id><published>2007-05-27T10:02:00.000+03:00</published><updated>2007-05-27T10:04:09.075+03:00</updated><title type='text'>Daily Python URL</title><content type='html'>Cubulus mentioned in Pythonware's &lt;a href="http://www.pythonware.com/daily/"&gt;Daily Python URL&lt;/a&gt;on 2007-05-25&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-2528084803065357957?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/2528084803065357957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=2528084803065357957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2528084803065357957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2528084803065357957'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/05/daily-python-url.html' title='Daily Python URL'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-5809543200233370739</id><published>2007-05-27T09:59:00.000+03:00</published><updated>2007-05-27T10:02:21.703+03:00</updated><title type='text'>Cubulus mentioned by pyparsing</title><content type='html'>Pyparsing is an easy to use parser for Python. The notice link: &lt;a href="http://pyparsing.wikispaces.com/WhosUsingPyparsing"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-5809543200233370739?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/5809543200233370739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=5809543200233370739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/5809543200233370739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/5809543200233370739'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/05/cubulus-mentioned-by-pyparsing.html' title='Cubulus mentioned by pyparsing'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-3789334042647000578</id><published>2007-05-16T00:00:00.000+03:00</published><updated>2007-05-16T00:02:57.240+03:00</updated><title type='text'>compiling MonetDB python libraries on the Mac</title><content type='html'>MonetDB is a "think different" kind of database. Link: http://monetdb.cwi.nl&lt;br /&gt;&lt;br /&gt;Here are some notes  for the builtin python2.3 for Mac OS X 10.4.9 . It builds correctly, and it works after manually moving some libs .&lt;br /&gt;-headers: /usr/include/python2.3/&lt;br /&gt;-libs: /usr/lib  (/usr/lib/libpython.dylib ,   /usr/lib/libpython2.dylib , /usr/lib/libpython2.3.dylib )&lt;br /&gt;-site-packages: /usr/lib/python2.3/site-packages/&lt;br /&gt;-dynamic libs: /usr/lib/python2.3/lib-dynload/&lt;br /&gt;&lt;br /&gt;It is easy to get readline from www.darwinports.org (sudo port install readline):&lt;br /&gt;-Headers: /opt/local/include/readline&lt;br /&gt;-Libs: /opt/local/lib/libreadline.5.0.dylib    /opt/local/lib/libreadline.a   /opt/local/lib/libreadline.5.dylib      /opt/local/lib/libreadline.dylib&lt;br /&gt;&lt;br /&gt;Swig also from darwinports , installed as:  /opt/local/bin/swig . (Get it with: sudo port install swig)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;./configure --with-python=python2.3 --with-python-library=/usr/lib --with-python-incdir=/usr/include/python2.3/ --with-swig=/opt/local/bin/swig&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This still DOES NOT copy MonetSQLdb under python2.3 site-packages, and places dynamic libs under /usr/local/lib/python2.3/site-packages/lib/ instead of usr/lib/python2.3/lib-dynload/&lt;br /&gt;&lt;br /&gt;Fixed with:&lt;br /&gt;cp /usr/local/lib/python2.3/site-packages/lib/_* ~/Desktop/clients/src/python/Cimpl/MonetSQLdb&lt;br /&gt;cp /usr/local/lib/python2.3/site-packages/lib/_* ~/Desktop/clients/src/python/Cimpl&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-3789334042647000578?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/3789334042647000578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=3789334042647000578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/3789334042647000578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/3789334042647000578'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/05/compiling-monetdb-python-libraries-on.html' title='compiling MonetDB python libraries on the Mac'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-2860314107096929287</id><published>2007-04-28T12:17:00.000+03:00</published><updated>2007-04-28T12:20:58.620+03:00</updated><title type='text'>waiting for Sun's Try &amp; Buy</title><content type='html'>Cubulus can scale (tested on 1 and 2 cores computers = we can call this "theory" with regards to real servers)  horizontally and vertically. I just can't wait for the Sun Ultra T1000 server from Try &amp; Buy programme. &lt;br /&gt;&lt;br /&gt;24 threads (or 32, depending on config), now that's scaling !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-2860314107096929287?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/2860314107096929287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=2860314107096929287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2860314107096929287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2860314107096929287'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/04/waiting-for-suns-try-buy.html' title='waiting for Sun&apos;s Try &amp; Buy'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-5935217709750374723</id><published>2007-04-27T13:53:00.000+03:00</published><updated>2007-04-27T13:54:58.686+03:00</updated><title type='text'>links to "new kid on the block"</title><content type='html'>Another link from John Sequeira &lt;a href="http://www.jsequeira.com/blog/"&gt;here&lt;/a&gt;:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-5935217709750374723?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/5935217709750374723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=5935217709750374723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/5935217709750374723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/5935217709750374723'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/04/links-to-new-kid-on-block.html' title='links to &quot;new kid on the block&quot;'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-6999508842195895615</id><published>2007-04-27T10:10:00.002+03:00</published><updated>2007-04-27T10:11:17.607+03:00</updated><title type='text'>Cubulus OLAP mentioned on SoftPedia</title><content type='html'>New links on &lt;a href="http://linux.softpedia.com/get/Database/Administrative-frontents/Cubulus-OLAP-26495.shtml"&gt;Softpedia&lt;/a&gt;:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-6999508842195895615?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/6999508842195895615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=6999508842195895615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/6999508842195895615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/6999508842195895615'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/04/cubulus-olap-mentioned-on-softpedia_27.html' title='Cubulus OLAP mentioned on SoftPedia'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-7046006024966251827</id><published>2007-04-24T06:41:00.000+02:00</published><updated>2007-04-25T18:07:43.367+02:00</updated><title type='text'>Cubulus OLAP mentioned on Teleinteractive and Technorati</title><content type='html'>One more post here: &lt;a href="http://press.teleinteractive.net/oss/2007/04/23/cubulus_presentation"&gt;http://press.teleinteractive.net/oss/2007/04/23/cubulus_presentation&lt;/a&gt; , and tagged on &lt;a href="http://technorati.com/tag/OLAP"&gt;Technorati&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-7046006024966251827?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/7046006024966251827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=7046006024966251827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/7046006024966251827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/7046006024966251827'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/04/cubulus-olap-mentioned-on.html' title='Cubulus OLAP mentioned on Teleinteractive and Technorati'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-8954960887928480105</id><published>2007-04-23T06:38:00.000+02:00</published><updated>2007-04-25T18:10:35.545+02:00</updated><title type='text'>Cubulus OLAP mentioned by Gobán Saor</title><content type='html'>Submitting Cubulus on Freshmeat was very succesfull: people started noticing it, and writing about it. For example &lt;br /&gt;&lt;a href="http://gobansaor.wordpress.com/2007/04/22/new-open-source-olap/"&gt;Goban Saor&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-8954960887928480105?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/8954960887928480105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=8954960887928480105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/8954960887928480105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/8954960887928480105'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/04/cubulus-olap-mentioned-by-gobn-saor.html' title='Cubulus OLAP mentioned by Gobán Saor'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-5475882973325647083</id><published>2007-04-22T08:02:00.000+02:00</published><updated>2007-04-22T09:05:52.550+02:00</updated><title type='text'>Cubulus OLAP mentioned in Chris Webb's blog</title><content type='html'>Cubulus OLAP mentioned in Chris Webb's blog:&lt;br /&gt;http://cwebbbi.spaces.live.com/blog/cns!7B84B0F2C239489A!1132.entry&lt;br /&gt;&lt;br /&gt;Hurray!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-5475882973325647083?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/5475882973325647083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=5475882973325647083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/5475882973325647083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/5475882973325647083'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/04/cubulus-olap-mentioned-in-chris-webbs.html' title='Cubulus OLAP mentioned in Chris Webb&apos;s blog'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-6087235840408570849</id><published>2007-04-20T09:19:00.000+02:00</published><updated>2007-04-24T06:43:55.614+02:00</updated><title type='text'>Python and multiple processes</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;Somebody was wondering about locking in Python (and CherryPy), link: http://groups.google.com/group/cherrypy-users/browse_thread/thread/bbc2800aa0f329c4?hl=en&lt;br /&gt;&lt;br /&gt;Why not running running multiple python processes for CherryPy ? That would ease the GIL . You can "load balance" requests with Apache's mod_proxy . &lt;br /&gt;&lt;br /&gt;If you need sessions, try  web reverse proxy + state-full balancer called Pound : http://www.apsis.ch/pound/&lt;br /&gt;&lt;br /&gt;From the docs: "a load balancer: it will distribute the requests from the client browsers among several back-end servers, while keeping session information." ... "Five possible ways of detecting a session have been implemented in Pound (hopefully the most useful ones): by client address, by Basic authentication, by URL parameter, by cookie and by header value" &lt;br /&gt;&lt;br /&gt;Cheers, Alex&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-6087235840408570849?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/6087235840408570849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=6087235840408570849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/6087235840408570849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/6087235840408570849'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/04/hi-somebody-was-wondering-about-locking.html' title='Python and multiple processes'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-535377536179624002</id><published>2007-04-04T12:06:00.000+02:00</published><updated>2007-04-12T10:39:44.350+02:00</updated><title type='text'>digest authentication with CherryPy</title><content type='html'>For the authorizations, Trac project elegantly delegates authentication to Apache , see  &lt;a href="http://trac.edgewall.org/wiki/TracAuthenticationIntroduction"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unaware of Trac solution, I was fighting problem on my own:&lt;br /&gt;&lt;br /&gt;CherryPy has built-in support for authorization. "Digest" and "ldap" are the ones that make most sense in practice.&lt;br /&gt;&lt;br /&gt;I've been wondering if CherryPy is the right place for doing authorization. Because instead of _coding_ authorization it is easier to _declare_ it in the front web servers. Instead of re-inventing the wheel, let the right tool handle the job.&lt;br /&gt;&lt;br /&gt;IMHO it is the Right Thing (TM) to do, since it also makes sense to use a reverse proxy (apache/lighttpd/squid) in front of CherryPy to deal with buffer overflows, malformed URLs and other nasty things.&lt;br /&gt;&lt;br /&gt;This allows CherryPy to run in session-less mode, which allows for easier fail-over or load balancing. Another benefit Windows users: one could use "Integrated Windows Authorization" with IIS.&lt;br /&gt;&lt;br /&gt;I tried to deploy this with Apache mod_proxy and mod_digest. Unfortunately, mod_proxy "eats" all extra headers (see &lt;a href="http://allafrica.com/tools/apache/mod_proxy"&gt;http://allafrica.com/tools/apache/mod_proxy&lt;/a&gt; ). On Webfaction &lt;a href="http://forum.webfaction.com/viewtopic.php?pid=1853#p1853"&gt;forum&lt;/a&gt;, Remi Delon suggested to try mod_rewrite. Well,  Apache mod_rewrite is "&lt;span style="font-weight: bold;"&gt;voodoo&lt;/span&gt;" (quote from http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html).. If someone manages to get it work, please let me know.&lt;br /&gt;&lt;br /&gt;Instead, here is quick-and-dirty solution with .. lighttpd. Relevant lines from lighttpd.conf are :&lt;br /&gt;server.modules  = (&lt;br /&gt;                             "mod_access",&lt;br /&gt;                             "mod_auth",&lt;br /&gt;                             "mod_proxy",&lt;br /&gt;                             "mod_accesslog" )&lt;br /&gt;server.port  = 8090&lt;br /&gt;proxy.server = ( "" =&gt; ( ( "host" =&gt; "127.0.0.1", "port" =&gt; 8080 ) ) )&lt;br /&gt;auth.backend  = "plain"&lt;br /&gt;auth.backend.plain.userfile = "/opt/local/etc/lighttpd/lighttpd.user"&lt;br /&gt;auth.require = (  "/" =&gt; (&lt;br /&gt;                             "method" =&gt; "digest",&lt;br /&gt;                             "realm" =&gt; "cubulus",&lt;br /&gt;                             "require" =&gt; "valid-user"&lt;br /&gt;             ) )&lt;br /&gt;&lt;br /&gt;CherryPy receives header 'Authorization' with content 'Digest username="a", realm="cubulus", nonce=.., uri=.. qop="auth"  ..... '&lt;br /&gt;&lt;br /&gt;Easy thing is that if authorization fails, CherryPy receives.. nothing, so it's enough to look for Digest username="XXX"&lt;br /&gt;&lt;br /&gt;Cheers, Alex&lt;br /&gt;links: &lt;a href="http://tools.cherrypy.org/wiki/ExternalAuth"&gt;CherryPy wiki&lt;/a&gt;  , &lt;a href="http://forum.webfaction.com/viewtopic.php?pid=1853"&gt;Webfaction forum&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-535377536179624002?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/535377536179624002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=535377536179624002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/535377536179624002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/535377536179624002'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/04/digest-authentication-in-cherrypy_04.html' title='digest authentication with CherryPy'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-2478288708760131519</id><published>2007-04-02T10:42:00.001+02:00</published><updated>2007-04-02T10:42:34.320+02:00</updated><title type='text'>digest authentication in CherryPy</title><content type='html'>Apache already has mod_digest (and mod_ldap), and IMHO it is better to delegate security to Apache (rather than re-implement digest in CherryPy). Also, it might be safer to _configure_ security declaratively than code it.&lt;br /&gt;&lt;br /&gt;Has anyone deployed CherrPy behind mod_digest (or mod_ldap), and retrieved the "Authorization-Info" ?&lt;br /&gt;&lt;br /&gt;Or, is it a wrong question? I am trying a parallel with MS IIS , where is possible to set Directory Security to "Windows Integrated". The CGI or ASP pages retrieve the "authenticated user" server variable, or headers.&lt;br /&gt;&lt;br /&gt;When deploying CherryPy (3.0.1) behind Apache (Apache/1.3.33-Darwin with mod_digest and mod_proxy), CherryPy only receives these headers, and there is no username...&lt;br /&gt;&lt;br /&gt;Request Headers:&lt;br /&gt;  X-FORWARDED-SERVER: local&lt;br /&gt;  REFERER: http://local/index&lt;br /&gt;  ACCEPT-LANGUAGE: en&lt;br /&gt;  HOST: localhost:8080&lt;br /&gt;  ACCEPT: */*&lt;br /&gt;  USER-AGENT: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3&lt;br /&gt;  CONNECTION: close&lt;br /&gt;  Remote-Addr: 127.0.0.1&lt;br /&gt;  X-FORWARDED-HOST: local&lt;br /&gt;  X-FORWARDED-FOR: 192.168.255.3&lt;br /&gt;  ACCEPT-ENCODING: gzip, deflate&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-2478288708760131519?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/2478288708760131519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=2478288708760131519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2478288708760131519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2478288708760131519'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/04/digest-authentication-in-cherrypy.html' title='digest authentication in CherryPy'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-4800588668941153448</id><published>2007-03-31T10:13:00.000+02:00</published><updated>2008-11-13T23:41:33.494+02:00</updated><title type='text'>mySQL slow on MacOS, most of CPU time is  %nice</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3AvgYhIXDNw/Rg4Z7mi9YSI/AAAAAAAAAAM/nGiLvYrzOc0/s1600-h/mysql_slow.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_3AvgYhIXDNw/Rg4Z7mi9YSI/AAAAAAAAAAM/nGiLvYrzOc0/s400/mysql_slow.png" alt="" id="BLOGGER_PHOTO_ID_5048000744079057186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Most of the time mySQL appears "blue" in Activity Monitor, meaning that CPU time is mostly spent as "nice".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This happens with mysql-standard-4.1.13-apple-darwin8.1.0-powerpc (the one that comes with  OS X 10.4.9), and same with mysql-5.1.16-beta-osx10.4-powerpc&lt;br /&gt;&lt;br /&gt;First I thought that I'm running "wrong queries" (generated by Cubulus, work in progress), but today it happened during standard operations ex: "alter table fact drop column dim_4;" (MyISAM table with 2 500 000 rows)&lt;br /&gt;&lt;br /&gt;Computer is an iMac G5 1.8 Ghz with 1.5 Gb memory (table fits in memory, there is no waiting due to disk). At the time of screen capture there was no other task doing anything relevant, except for Activity Monitor. There was no other query for mySQL.   &lt;br /&gt;&lt;br /&gt;Configuration /etc/my.cnf file is:&lt;br /&gt;[mysqld]&lt;br /&gt;port            = 3306&lt;br /&gt;socket          = /tmp/mysql.sock&lt;br /&gt;skip-locking&lt;br /&gt;key_buffer = 256M&lt;br /&gt;max_allowed_packet = 1M&lt;br /&gt;table_cache = 1024&lt;br /&gt;sort_buffer_size = 1M&lt;br /&gt;read_buffer_size = 4M&lt;br /&gt;read_rnd_buffer_size = 4M&lt;br /&gt;myisam_sort_buffer_size = 64M&lt;br /&gt;thread_cache = 8&lt;br /&gt;query_cache_size= 0M&lt;br /&gt;#lowered in order to minimize OS X context switching overhead&lt;br /&gt;thread_concurrency = 2&lt;br /&gt;&lt;br /&gt;#OS X recommended setting&lt;br /&gt;skip-thread-priority&lt;br /&gt;&lt;br /&gt;skip-networking&lt;br /&gt;&lt;br /&gt;log-bin&lt;br /&gt;&lt;br /&gt;server-id       = 1&lt;br /&gt;&lt;br /&gt;[mysqldump]&lt;br /&gt;quick&lt;br /&gt;max_allowed_packet = 16M&lt;br /&gt;&lt;br /&gt;[mysql]&lt;br /&gt;no-auto-rehash&lt;br /&gt;&lt;br /&gt;[isamchk]&lt;br /&gt;key_buffer = 128M&lt;br /&gt;sort_buffer_size = 128M&lt;br /&gt;read_buffer = 2M&lt;br /&gt;write_buffer = 2M&lt;br /&gt;&lt;br /&gt;[myisamchk]&lt;br /&gt;key_buffer = 128M&lt;br /&gt;sort_buffer_size = 128M&lt;br /&gt;read_buffer = 2M&lt;br /&gt;write_buffer = 2M&lt;br /&gt;&lt;br /&gt;[mysqlhotcopy]&lt;br /&gt;interactive-timeout&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-4800588668941153448?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/4800588668941153448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=4800588668941153448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/4800588668941153448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/4800588668941153448'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/03/mysql-slow-on-macos-most-of-cpu-time-is.html' title='mySQL slow on MacOS, most of CPU time is  %nice'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3AvgYhIXDNw/Rg4Z7mi9YSI/AAAAAAAAAAM/nGiLvYrzOc0/s72-c/mysql_slow.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-8483012568807494787</id><published>2007-03-29T12:09:00.000+02:00</published><updated>2007-03-29T12:11:00.480+02:00</updated><title type='text'>Cubulus OLAP post on Partha's blog</title><content type='html'>The post about Cubulus OLAP appeared in &lt;a href="http://ralpartha.blogspot.com/2006/12/mysql-51-partitioning-part-3.html"&gt;Partha's BLOG&lt;/a&gt; about partitioning in MySQL 5&lt;br /&gt;&lt;br /&gt;Hurray!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-8483012568807494787?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/8483012568807494787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=8483012568807494787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/8483012568807494787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/8483012568807494787'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/03/cubulus-olap-post-on-parthas-blog.html' title='Cubulus OLAP post on Partha&apos;s blog'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-787949106482665304</id><published>2007-03-29T07:37:00.000+02:00</published><updated>2007-03-29T07:38:46.238+02:00</updated><title type='text'>live demo at Webfaction</title><content type='html'>There is a live demo of &lt;a href="http://alxtoth.webfactional.com/"&gt;Cubulus&lt;/a&gt;. Webfaction offers free hosting for Open Source projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-787949106482665304?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/787949106482665304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=787949106482665304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/787949106482665304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/787949106482665304'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/03/live-demo-at-webfaction.html' title='live demo at Webfaction'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-4939576960640469854</id><published>2007-03-26T20:27:00.001+02:00</published><updated>2007-03-26T20:32:14.888+02:00</updated><title type='text'>if you must use Win**, use ipfw firewall</title><content type='html'>Windows firewalls usually all suck. They have a complicated interface where you can see the alerts, flash when there i traffic.. &lt;br /&gt;&lt;br /&gt;Anyway, use &lt;a href="http://wipfw.sourceforge.net/"&gt;wipfw&lt;/a&gt;, which is a port of the FreeBSD ipfw firewall (also used in Darwin and Mac OS).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-4939576960640469854?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/4939576960640469854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=4939576960640469854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/4939576960640469854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/4939576960640469854'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/03/if-you-must-use-win-use-ipfw-firewall_26.html' title='if you must use Win**, use ipfw firewall'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-2333857027432316750</id><published>2007-03-18T20:50:00.000+02:00</published><updated>2007-03-18T20:54:13.122+02:00</updated><title type='text'>Cubulus Olap</title><content type='html'>I have an Open Source project at &lt;a href="http://sourceforge.net/projects/cubulus"&gt;http://sourceforge.net/projects/cubulus&lt;/a&gt; . Who knows, maybe someone will read this blog, and click there&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-2333857027432316750?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/2333857027432316750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=2333857027432316750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2333857027432316750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2333857027432316750'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/03/cubulus-olap.html' title='Cubulus Olap'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-2908355300452022105</id><published>2007-03-18T20:27:00.000+02:00</published><updated>2007-03-19T23:10:20.386+02:00</updated><title type='text'>OS X firewall</title><content type='html'>There is a nice article about improving OS X security http://www.tuaw.com/2007/03/12/make-os-x-more-secure-now/&lt;br /&gt;. I am interested in closing some ports I don't need (no DNS server in my machine, no Bonjour, no printing..) in such way that fw rules will stay after reboot.&lt;br /&gt;&lt;br /&gt;I have a script to delete un-needed ports. Since I can't figure a better way to modify the default rules of ipfw2, I will follow Sebastiaan de With's advice to use &lt;a href="http://lingon.sourceforge.net/"&gt;Lingon&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is the script, the Lingon job is easy: create new "User Daemon", put the path (no command line params needed) , set "Run at load", and reboot to see if it works. It Does ! &lt;br /&gt;&lt;br /&gt;-----------------------------------------------&lt;br /&gt;/sbin/ipfw show &gt; /tmp/origrules&lt;br /&gt;&lt;br /&gt;awk '/dst-port 137 in/ {print "/sbin/ipfw del", substr($1,0,5)}' /tmp/origrules &gt; /tmp/newrules&lt;br /&gt;awk '/dst-port 427 in/ {print "/sbin/ipfw del", substr($1,0,5)}' /tmp/origrules &gt;&gt; /tmp/newrules&lt;br /&gt;awk '/dst-port 631 in/ {print "/sbin/ipfw del", substr($1,0,5)}' /tmp/origrules &gt;&gt; /tmp/newrules&lt;br /&gt;awk '/dst-port 5353 in/ {print "/sbin/ipfw del", substr($1,0,5)}' /tmp/origrules &gt;&gt; /tmp/newrules&lt;br /&gt;awk '/67 to me in/ {print "/sbin/ipfw del", substr($1,0,5)}' /tmp/origrules &gt;&gt; /tmp/newrules&lt;br /&gt;awk '/5353 to me in/ {print "/sbin/ipfw del", substr($1,0,5)}' /tmp/origrules &gt;&gt; /tmp/newrules&lt;br /&gt;&lt;br /&gt;chmod +x /tmp/newrules&lt;br /&gt;sh /tmp/newrules&lt;br /&gt;&lt;br /&gt;rm /tmp/origrules&lt;br /&gt;rm /tmp/newrules&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-2908355300452022105?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/2908355300452022105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=2908355300452022105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2908355300452022105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/2908355300452022105'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/03/os-x-firewall.html' title='OS X firewall'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-3246707750102507906</id><published>2007-02-17T16:59:00.000+02:00</published><updated>2007-02-17T17:21:33.549+02:00</updated><title type='text'>memcached ssslllooowww on Mac OS X</title><content type='html'>The purpose of &lt;a href="http://www.danga.com/memcached/"&gt;memcached&lt;/a&gt; is .. to be fast .. . Unfortunately the default &lt;a href="http://memcached.darwinports.com/"&gt;port&lt;/a&gt; (Darwinports) is really slow (slow as in 3 seconds of doing nothing on a 1.8GHz PowerPC G5), and somebody figured out a &lt;a href="http://blog.segment7.net/articles/2006/03/02/fast-memcached-on-os-x"&gt;fix&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now here are few notes on how to recompile it (quick and dirty):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;find the source &lt;span style="color: rgb(51, 102, 255);"&gt;/opt/local/var/db/dports/distfiles/memcached/&lt;/span&gt;&lt;span style="font-family: arial; color: rgb(51, 102, 255);"&gt;memcached-1.1.11.tar.gz&lt;/span&gt; . Unpack it (ex: on Desktop)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;as suggested in &lt;a href="http://blog.segment7.net/articles/2006/03/02/fast-memcached-on-os-x"&gt;fix&lt;/a&gt;., edit the &lt;span style="color: rgb(51, 102, 255);"&gt;memcached.c&lt;/span&gt; file, adding &lt;span style="color: rgb(51, 102, 255);"&gt;#undef TCP_NOPSH &lt;span style="color: rgb(0, 0, 0);"&gt;on line 105&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;find the location of &lt;span style="color: rgb(51, 102, 255);"&gt;libevent&lt;/span&gt; (which came as part of &lt;span style="color: rgb(51, 102, 255);"&gt;port install&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;in the folder with patched memcached run&lt;/li&gt;&lt;ul&gt;&lt;li&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;.&lt;span style="color: rgb(51, 102, 255);"&gt;/configure --with-libevent=/opt/local/var/db/dports/software/libevent/1.1a_0/opt/local/&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="color: rgb(51, 102, 255);"&gt;make&lt;/li&gt;&lt;li&gt;take a look at the original permissions&lt;br /&gt;&lt;/li&gt;&lt;li&gt;copy new file into it's original location by: &lt;span style="color: rgb(51, 102, 255);"&gt;sudo mv memcached   /opt/local/bin/memcached&lt;/span&gt;&lt;/li&gt;&lt;li&gt;restore original permissions : &lt;span style="color: rgb(51, 102, 255);"&gt;sudo chown root:admin /opt/local/bin/memcached&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Now start memcached frm command line (&lt;span style="color: rgb(51, 102, 255);"&gt;memcached -vv&lt;/span&gt; for verbose logging), and test as it says in the README (from &lt;span style="color: rgb(51, 102, 255);"&gt;python&lt;/span&gt;):&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;import memcache&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;mc = memcache.Client(['127.0.0.1:11211'], debug=0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;mc.set("some_key", "Some value")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;value = mc.get("some_key")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now it will not wait 3 seconds&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-3246707750102507906?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/3246707750102507906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=3246707750102507906' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/3246707750102507906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/3246707750102507906'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/02/memcached-ssslllooowww-on-mac-os-x.html' title='memcached ssslllooowww on Mac OS X'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3676749714345703284.post-912445209463332146</id><published>2007-02-17T16:36:00.000+02:00</published><updated>2007-02-17T16:57:55.189+02:00</updated><title type='text'>threadsafe CheryPy</title><content type='html'>Using &lt;a href="http://www.cherrypy.org/"&gt;CherryPy&lt;/a&gt; is so easy, like everything in &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;. But when running some pages  with  heavy SQL  processing time, there are a lot of funny errors (malloc.. double free). Ooops, looks as something is not theadsafe.  &lt;a href="http://mysql-python.sourceforge.net/MySQLdb.html"&gt;mySQLdb&lt;/a&gt; is not necessarily threadsafe, but cherrypy.engine.on_start_thread_list&lt;span class="p_identifier"&gt; should handle this as &lt;a href="http://tools.cherrypy.org/wiki/Databases"&gt;suggested&lt;/a&gt; . Instead of digging deep into debugging, here is an alternative fix, using &lt;a href="http://www.python.org/pypi/DBUtils/"&gt;DBUtils&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Yipee, my code got posted into CherryPy:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="p_word"&gt;import&lt;/span&gt; &lt;span class="p_identifier"&gt;cherrypy&lt;/span&gt;&lt;br /&gt;&lt;span class="p_word"&gt;import&lt;/span&gt; &lt;span class="p_identifier"&gt;MySQLdb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="p_word"&gt;from&lt;/span&gt; &lt;span class="p_identifier"&gt;DBUtils&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;PersistentDB&lt;/span&gt; &lt;span class="p_word"&gt;import&lt;/span&gt; &lt;span class="p_identifier"&gt;PersistentDB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="p_word"&gt;class&lt;/span&gt; &lt;span class="p_classname"&gt;HomePage&lt;/span&gt;&lt;span class="p_operator"&gt;:&lt;/span&gt;&lt;br /&gt;   @&lt;span class="p_identifier"&gt;cherrypy&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;expose&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span class="p_word"&gt;def&lt;/span&gt; &lt;span class="p_defname"&gt;index&lt;/span&gt;&lt;span class="p_operator"&gt;(&lt;/span&gt;&lt;span class="p_identifier"&gt;self&lt;/span&gt;&lt;span class="p_operator"&gt;):&lt;/span&gt;&lt;br /&gt;       &lt;span class="p_identifier"&gt;sql&lt;/span&gt; &lt;span class="p_operator"&gt;=&lt;/span&gt; &lt;span class="p_string"&gt;"select max(whatever) from bigtable;"&lt;/span&gt; &lt;span class="p_commentline"&gt;#long running query&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span class="p_identifier"&gt;c&lt;/span&gt; &lt;span class="p_operator"&gt;=&lt;/span&gt; &lt;span class="p_identifier"&gt;persDb&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;connection&lt;/span&gt;&lt;span class="p_operator"&gt;().&lt;/span&gt;&lt;span class="p_identifier"&gt;cursor&lt;/span&gt;&lt;span class="p_operator"&gt;()&lt;/span&gt;&lt;br /&gt;       &lt;span class="p_identifier"&gt;c&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;execute&lt;/span&gt;&lt;span class="p_operator"&gt;(&lt;/span&gt;&lt;span class="p_identifier"&gt;sql&lt;/span&gt;&lt;span class="p_operator"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span class="p_identifier"&gt;res&lt;/span&gt; &lt;span class="p_operator"&gt;=&lt;/span&gt; &lt;span class="p_identifier"&gt;c&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;fetchone&lt;/span&gt;&lt;span class="p_operator"&gt;()&lt;/span&gt;&lt;br /&gt;       &lt;span class="p_identifier"&gt;c&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;close&lt;/span&gt;&lt;span class="p_operator"&gt;()&lt;/span&gt;&lt;br /&gt;       &lt;span class="p_word"&gt;return&lt;/span&gt; &lt;span class="p_character"&gt;' '&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;join&lt;/span&gt;&lt;span class="p_operator"&gt;(&lt;/span&gt; &lt;span class="p_operator"&gt;[&lt;/span&gt;&lt;span class="p_character"&gt;'&amp;lt;html&amp;gt;'&lt;/span&gt;&lt;span class="p_operator"&gt;,&lt;/span&gt; &lt;span class="p_identifier"&gt;repr&lt;/span&gt;&lt;span class="p_operator"&gt;(&lt;/span&gt;&lt;span class="p_identifier"&gt;res&lt;/span&gt;&lt;span class="p_operator"&gt;),&lt;/span&gt; &lt;span class="p_character"&gt;'&amp;lt;/html&amp;gt;'&lt;/span&gt;&lt;span class="p_operator"&gt;]&lt;/span&gt; &lt;span class="p_operator"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="p_identifier"&gt;cherrypy&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;tree&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;mount&lt;/span&gt;&lt;span class="p_operator"&gt;(&lt;/span&gt;&lt;span class="p_identifier"&gt;HomePage&lt;/span&gt;&lt;span class="p_operator"&gt;())&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="p_word"&gt;if&lt;/span&gt; &lt;span class="p_identifier"&gt;__name__&lt;/span&gt; &lt;span class="p_operator"&gt;==&lt;/span&gt; &lt;span class="p_character"&gt;'__main__'&lt;/span&gt;&lt;span class="p_operator"&gt;:&lt;/span&gt; &lt;br /&gt;   &lt;span class="p_identifier"&gt;persDb&lt;/span&gt;&lt;span class="p_operator"&gt;=&lt;/span&gt;&lt;span class="p_identifier"&gt;PersistentDB&lt;/span&gt;&lt;span class="p_operator"&gt;(&lt;/span&gt;&lt;span class="p_identifier"&gt;MySQLdb&lt;/span&gt;&lt;span class="p_operator"&gt;,&lt;/span&gt; &lt;span class="p_number"&gt;10000&lt;/span&gt;&lt;span class="p_operator"&gt;,&lt;/span&gt; &lt;span class="p_identifier"&gt;host&lt;/span&gt;&lt;span class="p_operator"&gt;=&lt;/span&gt;&lt;span class="p_character"&gt;'localhost'&lt;/span&gt;&lt;span class="p_operator"&gt;,&lt;/span&gt; &lt;span class="p_identifier"&gt;db&lt;/span&gt;&lt;span class="p_operator"&gt;=&lt;/span&gt;&lt;span class="p_character"&gt;'db'&lt;/span&gt;&lt;span class="p_operator"&gt;,&lt;/span&gt; &lt;span class="p_identifier"&gt;passwd&lt;/span&gt;&lt;span class="p_operator"&gt;=&lt;/span&gt;&lt;span class="p_character"&gt;'****'&lt;/span&gt;&lt;span class="p_operator"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span class="p_identifier"&gt;cherrypy&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;config&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;update&lt;/span&gt;&lt;span class="p_operator"&gt;({&lt;/span&gt;&lt;span class="p_character"&gt;'server.thread_pool'&lt;/span&gt;&lt;span class="p_operator"&gt;:&lt;/span&gt; &lt;span class="p_number"&gt;10&lt;/span&gt;&lt;span class="p_operator"&gt;})&lt;/span&gt;&lt;br /&gt;   &lt;span class="p_identifier"&gt;cherrypy&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;server&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;quickstart&lt;/span&gt;&lt;span class="p_operator"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span class="p_identifier"&gt;cherrypy&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;engine&lt;/span&gt;&lt;span class="p_operator"&gt;.&lt;/span&gt;&lt;span class="p_identifier"&gt;start&lt;/span&gt;&lt;span class="p_operator"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3676749714345703284-912445209463332146?l=alexandrutoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexandrutoth.blogspot.com/feeds/912445209463332146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3676749714345703284&amp;postID=912445209463332146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/912445209463332146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3676749714345703284/posts/default/912445209463332146'/><link rel='alternate' type='text/html' href='http://alexandrutoth.blogspot.com/2007/02/threadsafe-cherypy.html' title='threadsafe CheryPy'/><author><name>Alexandru Toth</name><uri>http://www.blogger.com/profile/13538381382868025642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
