<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEYMQ34zfCp7ImA9WxBVEk8.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514</id><updated>2010-02-15T11:29:42.084+02:00</updated><title>Developer's world</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.develworld.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.develworld.net/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/develworld" /><feedburner:info uri="develworld" /><entry gd:etag="W/&quot;DkQBR307fSp7ImA9WxNRFUU.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-7118492622688440956</id><published>2009-07-22T01:09:00.004+03:00</published><updated>2009-09-10T15:05:56.305+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-10T15:05:56.305+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Exploration" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="Rails" /><title>Agile Web Development with Rails 2nd edition, Chapter 9.3 (highlighting)</title><content type="html">Hello,&lt;br /&gt;
I was trying to create my “depot” and just stuck with a problem at this chapter. I've always gotten that:&lt;br /&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;NoMethodError in Store#add_to_cart

Showing app/views/store/add_to_cart.rjs where line #3 raised:

undefined method `[]' for #&lt;Enumerable::Enumerator:0x7f91ce056f60&gt;

Extracted source (around line #3):

1: page.replace_html( "cart", :partial =&gt; "cart", :object =&gt; @cart )
2: 
3: page[ :current_item ].visual_effect 
4:    :highlight, 
5:    :startcolor =&gt; "#88ff88", 
6:    :endcolor =&gt; "#114411"&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Thank G-d the solution was found here: http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg528878.html&lt;br /&gt;
&lt;br /&gt;
It happens with Ruby 1.8.7 because it has String#chars as Enumerator but Rails expects an ActiveSupport::Multibyte::Chars object.&lt;br /&gt;
&lt;br /&gt;
It has been starting to work after adding the following code into config/environment.rb:&lt;br /&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;
unless '1.9'.respond_to?(:force_encoding)
  String.class_eval do
    begin
      remove_method :chars
    rescue NameError
      # OK
    end
  end
end&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-7118492622688440956?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/7118492622688440956/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=7118492622688440956" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7118492622688440956?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7118492622688440956?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/XLwnlN6bsP8/agile-web-development-with-rails-2nd.html" title="Agile Web Development with Rails 2nd edition, Chapter 9.3 (highlighting)" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/07/agile-web-development-with-rails-2nd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcCQnwyfip7ImA9WxJSGEs.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-9056394100630632045</id><published>2009-05-09T14:04:00.000+03:00</published><updated>2009-05-09T14:04:23.296+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-09T14:04:23.296+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ISAPI_Rewrite" /><category scheme="http://www.blogger.com/atom/ns#" term="Stuff" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Have you checked NTFS permissions?</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_PemOVzX4DfU/SgVjBk6Uq8I/AAAAAAAABAE/cLKzAdWanQA/s1600-h/have_you_checked_ntfs_permissions.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_PemOVzX4DfU/SgVjBk6Uq8I/AAAAAAAABAE/cLKzAdWanQA/s400/have_you_checked_ntfs_permissions.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-9056394100630632045?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/9056394100630632045/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=9056394100630632045" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/9056394100630632045?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/9056394100630632045?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/-pLzYJIEHfU/have-you-checked-ntfs-permissions.html" title="Have you checked NTFS permissions?" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_PemOVzX4DfU/SgVjBk6Uq8I/AAAAAAAABAE/cLKzAdWanQA/s72-c/have_you_checked_ntfs_permissions.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/05/have-you-checked-ntfs-permissions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcBSXY-fSp7ImA9WxJTGUk.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-7576546290534799087</id><published>2009-04-28T21:40:00.000+03:00</published><updated>2009-04-28T21:40:58.855+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-28T21:40:58.855+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Stuff" /><title>Happy birthday, Opera!</title><content type="html">I'm happy Opera user and wish &lt;a href="http://www.opera.com/"&gt;Opera Software&lt;/a&gt; to get the largest market piece ;)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_PemOVzX4DfU/SfdNjISyjWI/AAAAAAAAA_I/NvWIXK8caW4/s1600-h/468x60opera15.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_PemOVzX4DfU/SfdNjISyjWI/AAAAAAAAA_I/NvWIXK8caW4/s400/468x60opera15.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-7576546290534799087?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/7576546290534799087/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=7576546290534799087" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7576546290534799087?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7576546290534799087?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/Ktj-3XIyX2o/happy-birthday-opera.html" title="Happy birthday, Opera!" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_PemOVzX4DfU/SfdNjISyjWI/AAAAAAAAA_I/NvWIXK8caW4/s72-c/468x60opera15.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/04/happy-birthday-opera.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QESXc8cSp7ImA9WxJTEk8.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-5583074023876104524</id><published>2009-04-20T14:57:00.004+03:00</published><updated>2009-04-20T15:08:28.979+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-20T15:08:28.979+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Exploration" /><category scheme="http://www.blogger.com/atom/ns#" term="Nginx" /><title>Nginx on Windows</title><content type="html">Nginx - light and fast web-server currently available on Windows. &lt;a href="http://sysoev.ru/en"&gt;Official site&lt;/a&gt; says that it's only &lt;i&gt;beta&lt;/i&gt; now and doesn't recommend to use it for production.&lt;br /&gt;
&lt;br /&gt;
Anyway the news are great ;) Nginx doesn't use Cygwin but runs with Win32 API. Method &lt;i&gt;select&lt;/i&gt; is using for connections processing, so the performance on Windows currently will be less than on Unix systems. All features available except IPv6, XSLT-filter and built-in Perl.&lt;br /&gt;
&lt;br /&gt;
Installation is quite simple:&lt;br /&gt;
- &lt;a href="http://sysoev.ru/nginx/nginx-0.7.52.zip"&gt;Download Nginx&lt;/a&gt;&lt;br /&gt;
- Run commands:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;cd c:\
unzip nginx-0.7.52.zip
ren nginx-0.7.52 nginx
cd nginx
start nginx
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
If Nginx don't start you should discover &lt;i&gt;logs/error.log&lt;/i&gt; file. I've successfully ran the server on Windows Vista x64 :&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_PemOVzX4DfU/SexittoN24I/AAAAAAAAA-4/9K7lsgEfbEQ/s1600-h/nginx_process.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_PemOVzX4DfU/SexittoN24I/AAAAAAAAA-4/9K7lsgEfbEQ/s400/nginx_process.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_PemOVzX4DfU/Sexi5LuBYZI/AAAAAAAAA_A/rF2MLPOOQl0/s1600-h/nginx_on_windows.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_PemOVzX4DfU/Sexi5LuBYZI/AAAAAAAAA_A/rF2MLPOOQl0/s400/nginx_on_windows.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Nginx on Windows isn't a service. Here are the commands to control web-server process:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;nginx -s stop           fast shutdown
nginx -s quit           smooth shutdown
nginx -s reload         configuration reset, new worker processes with 
                        new configuration, smooth shutdown of old worker 
                        processes.
nginx -s reopen         reopen log-files
&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-5583074023876104524?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/5583074023876104524/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=5583074023876104524" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/5583074023876104524?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/5583074023876104524?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/1z6uPoiYQLg/nginx-on-windows.html" title="Nginx on Windows" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_PemOVzX4DfU/SexittoN24I/AAAAAAAAA-4/9K7lsgEfbEQ/s72-c/nginx_process.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://www.develworld.net/2009/04/nginx-on-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQFRn84cCp7ImA9WxVaFEU.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-4729032457234559268</id><published>2009-04-12T00:44:00.001+03:00</published><updated>2009-04-12T00:45:17.138+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-12T00:45:17.138+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mod_cache" /><category scheme="http://www.blogger.com/atom/ns#" term="mod_gzip" /><category scheme="http://www.blogger.com/atom/ns#" term="mod_setenvif" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Helicon Ape: One-string configuration</title><content type="html">&lt;a href="http://www.helicontech.com/ape"&gt;Helicon Ape&lt;/a&gt; configuration is easy and powerful. One string can make a lot of things. For example:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;SetEnvIf MIME text/.* OR MIME application/javascript gzip=9 cache-enable=mem&lt;/code&gt;&lt;/pre&gt;It enables GZIP compression and web-caching for text-files and JavaScript scripts. Easy and useful. Little but powerful. It's &lt;a href="http://www.helicontech.com/ape"&gt;Helicon Ape&lt;/a&gt; ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-4729032457234559268?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/4729032457234559268/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=4729032457234559268" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4729032457234559268?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4729032457234559268?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/CCl9OpP7E60/helicon-ape-one-string-configuration.html" title="Helicon Ape: One-string configuration" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/04/helicon-ape-one-string-configuration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYBQn06fyp7ImA9WxVbGU8.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-7761243225383716571</id><published>2009-04-05T12:19:00.000+03:00</published><updated>2009-04-05T12:19:13.317+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-05T12:19:13.317+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="Point of view" /><title>Time.mktime</title><content type="html">&lt;p&gt;It is sad that programming languages designers often don't think about code logic. They invent many strange method names or class names and as the result&amp;nbsp;&amp;#151;&amp;nbsp;a lots of developers have to write this things on their left hemisphere.&lt;br /&gt;
For example, here is the Ruby code:&lt;br /&gt;
&lt;/p&gt;&lt;pre&gt;&lt;code class="ruby"&gt;t = Time.mktime( 2009, 5, 4 )&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Class &lt;i&gt;Time&lt;/i&gt; provides tools for time manipulation. So I'm waiting from the class only the methods interacted with time. But why this class has method &lt;i&gt;mktime&lt;/i&gt;? It expands to &amp;#147;make time&amp;#148; and Time.mktime expands to &amp;#147;Time make time&amp;#148;. It looks like tautology, doesn't it? I think the method should has name &lt;i&gt;make&lt;/i&gt;. It would be simpler:&lt;/p&gt;&lt;pre&gt;&lt;code class="ruby"&gt;t = Time.make( 2009, 5, 4 )&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Is it so hard to think before make it? I'm surprised I've not found method with name &lt;i&gt;Time.make_time&lt;/i&gt; or even &lt;i&gt;Time.make_the_time_specified_in_parentheses&lt;/i&gt; ;-) Whether the &lt;i&gt;Time&lt;/i&gt; class is able to create some other objects? Is the following code acceptable?&lt;br /&gt;
&lt;/p&gt;&lt;pre&gt;&lt;code class="ruby"&gt;t = Time.mkpeace( 2009, 5, 4 )&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;However the same class has pretty adequate methods like &lt;i&gt;Time.now&lt;/i&gt;. Is it mistake? Whether it should has name like &lt;i&gt;Time.now_time&lt;/i&gt;.&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;Who knows maybe &lt;i&gt;Time.mktime&lt;/i&gt; is the worship to C.&lt;br /&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-7761243225383716571?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/7761243225383716571/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=7761243225383716571" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7761243225383716571?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7761243225383716571?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/oHOnqmqZWT8/timemktime.html" title="Time.mktime" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.develworld.net/2009/04/timemktime.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAMQns7eip7ImA9WxVbF0w.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-3948027229589166017</id><published>2009-04-03T02:09:00.000+03:00</published><updated>2009-04-03T02:09:43.502+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-03T02:09:43.502+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Stuff" /><title>Safari Browser</title><content type="html">It seems Safari has been designed only for the one thing&amp;nbsp;—&amp;nbsp;to make pretty screenshots:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_PemOVzX4DfU/SdVFkNRLTaI/AAAAAAAAAl8/OLAFoAdsaAQ/s1600-h/dw_in_safari.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_PemOVzX4DfU/SdVFkNRLTaI/AAAAAAAAAl8/OLAFoAdsaAQ/s400/dw_in_safari.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-3948027229589166017?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/3948027229589166017/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=3948027229589166017" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3948027229589166017?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3948027229589166017?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/39BJXUGAZV4/safari-browser.html" title="Safari Browser" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_PemOVzX4DfU/SdVFkNRLTaI/AAAAAAAAAl8/OLAFoAdsaAQ/s72-c/dw_in_safari.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/04/safari-browser.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MMSXg7fip7ImA9WxVbE0w.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-892283102595117642</id><published>2009-03-29T12:38:00.000+03:00</published><updated>2009-03-29T12:38:08.606+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-29T12:38:08.606+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Helicon Ape wildcard mapping in Windows 2003 (IIS6)</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_PemOVzX4DfU/Sc9BXjrGiqI/AAAAAAAAAlk/nz8FjVkjA2A/s1600-h/ape_wildcard_mapping_under_IIS6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_PemOVzX4DfU/Sc9BXjrGiqI/AAAAAAAAAlk/nz8FjVkjA2A/s400/ape_wildcard_mapping_under_IIS6.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-892283102595117642?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/892283102595117642/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=892283102595117642" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/892283102595117642?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/892283102595117642?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/e0KUNUoo8-Q/helicon-ape-wildcard-mapping-in-windows.html" title="Helicon Ape wildcard mapping in Windows 2003 (IIS6)" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_PemOVzX4DfU/Sc9BXjrGiqI/AAAAAAAAAlk/nz8FjVkjA2A/s72-c/ape_wildcard_mapping_under_IIS6.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/03/helicon-ape-wildcard-mapping-in-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUDRnw4fCp7ImA9WxVbEko.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-1304283114567392924</id><published>2009-03-28T17:22:00.002+02:00</published><updated>2009-03-28T23:04:37.234+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-28T23:04:37.234+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Point of view" /><title>“Spice” of Microsoft</title><content type="html">I'm already tired of Microsoft web-sites. The great company creates repulsive sites and the same foul browser.&amp;nbsp;I wanna say you guys perhaps have never thought about flexibility and usability. It seems the sites of Microsoft were created for robots or some kind of iron things (maybe for cyborgs?). So when I want to learn Silverlight, I'm faced with this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_PemOVzX4DfU/Sc49nTB7tPI/AAAAAAAAAk8/NpXwgML0B5U/s1600-h/silverlight_site.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_PemOVzX4DfU/Sc49nTB7tPI/AAAAAAAAAk8/NpXwgML0B5U/s400/silverlight_site.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I have a useful recommendation for Microsoft&amp;nbsp;—&amp;nbsp;&lt;a href="http://www.artlebedev.com/mandership/"&gt;Mandership by Artemy Lebedev&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
P.S.: Anyway I like to use some of Microsoft software, e.g. Visual Studio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-1304283114567392924?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/1304283114567392924/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=1304283114567392924" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/1304283114567392924?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/1304283114567392924?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/wLcQt_9_hcA/spice-of-microsoft.html" title="“Spice” of Microsoft" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_PemOVzX4DfU/Sc49nTB7tPI/AAAAAAAAAk8/NpXwgML0B5U/s72-c/silverlight_site.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/03/spice-of-microsoft.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ADRn84eip7ImA9WxVbEUk.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-4716761421269188973</id><published>2009-03-27T12:28:00.001+02:00</published><updated>2009-03-27T12:29:37.132+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-27T12:29:37.132+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mod_authz_host" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>mod_authz_host blocks China</title><content type="html">Here are the rules for &lt;a href="http://www.helicontech.com/ape/doc/mod_authz_host.htm"&gt;mod_authz_host&lt;/a&gt; sent by our customer:&lt;br /&gt;
&lt;pre&gt;&lt;code class="apache"&gt;# Total Networks: 1,549
# Total Subnets:  187,840,256
&amp;lt;Limit GET HEAD POST&amp;gt;
order allow,deny
deny from 95.134.20.245
deny from 12.233.143.165
deny from 58.14.0.0/15
deny from 58.16.0.0/16
deny from 58.17.0.0/17
deny from 58.17.128.0/17
deny from 58.18.0.0/16
deny from 58.19.0.0/16
deny from 58.20.0.0/16
deny from 58.21.0.0/16
deny from 58.22.0.0/15
deny from 58.24.0.0/15
deny from 58.30.0.0/15
deny from 58.32.0.0/13
deny from 58.40.0.0/15
deny from 58.42.0.0/16
deny from 58.43.0.0/16
deny from 58.44.0.0/14
deny from 58.48.0.0/13
deny from 58.56.0.0/15
deny from 58.58.0.0/16
deny from 58.59.0.0/17
deny from 58.59.128.0/17
deny from 58.60.0.0/14
deny from 58.66.0.0/15
deny from 58.68.128.0/17
deny from 58.82.0.0/15
deny from 58.87.64.0/18
deny from 58.99.128.0/17
deny from 58.100.0.0/15
deny from 58.116.0.0/14
deny from 58.128.0.0/13
deny from 58.144.0.0/16
deny from 58.154.0.0/15
deny from 58.192.0.0/15
deny from 58.194.0.0/15
deny from 58.196.0.0/15
deny from 58.198.0.0/15
deny from 58.200.0.0/13
deny from 58.208.0.0/12
deny from 58.240.0.0/15
deny from 58.242.0.0/15
deny from 58.244.0.0/15
deny from 58.246.0.0/15
deny from 58.248.0.0/13
deny from 59.32.0.0/13
deny from 59.40.0.0/15
deny from 59.42.0.0/16
deny from 59.43.0.0/16
deny from 59.44.0.0/14
deny from 59.48.0.0/16
deny from 59.49.0.0/17
deny from 59.49.128.0/17
deny from 59.50.0.0/16
deny from 59.51.0.0/17
deny from 59.51.128.0/17
deny from 59.52.0.0/14
deny from 59.56.0.0/14
deny from 59.60.0.0/15
deny from 59.62.0.0/15
deny from 59.64.0.0/14
deny from 59.68.0.0/14
deny from 59.72.0.0/15
deny from 59.74.0.0/15
deny from 59.76.0.0/16
deny from 59.77.0.0/16
deny from 59.78.0.0/15
deny from 59.80.0.0/14
deny from 59.107.0.0/17
deny from 59.107.128.0/17
deny from 59.108.0.0/15
deny from 59.110.0.0/15
deny from 59.151.0.0/17
deny from 59.155.0.0/16
deny from 59.172.0.0/15
deny from 59.174.0.0/15
deny from 59.191.0.0/17
deny from 59.191.240.0/20
deny from 59.192.0.0/10
deny from 60.0.0.0/13
deny from 60.8.0.0/15
deny from 60.10.0.0/16
deny from 60.11.0.0/16
deny from 60.12.0.0/16
deny from 60.13.0.0/18
deny from 60.13.64.0/18
deny from 60.13.128.0/17
deny from 60.14.0.0/15
deny from 60.16.0.0/13
deny from 60.24.0.0/14
deny from 60.28.0.0/15
deny from 60.30.0.0/16
deny from 60.31.0.0/16
deny from 60.55.0.0/16
deny from 60.63.0.0/16
deny from 60.160.0.0/15
deny from 60.162.0.0/15
deny from 60.164.0.0/15
deny from 60.166.0.0/15
deny from 60.168.0.0/13
deny from 60.176.0.0/12
deny from 60.194.0.0/15
deny from 60.200.0.0/14
deny from 60.204.0.0/16
deny from 60.205.0.0/16
deny from 60.206.0.0/15
deny from 60.208.0.0/13
deny from 60.216.0.0/15
deny from 60.218.0.0/15
deny from 60.220.0.0/14
deny from 60.232.0.0/15
deny from 60.235.0.0/16
deny from 60.245.128.0/17
deny from 60.247.0.0/16
deny from 60.252.0.0/16
deny from 60.253.128.0/17
deny from 60.255.0.0/16
deny from 61.4.80.0/22
deny from 61.4.176.0/20
deny from 61.8.160.0/20
deny from 61.28.0.0/20
deny from 61.28.16.0/20
deny from 61.28.32.0/19
deny from 61.28.64.0/18
deny from 61.29.128.0/18
deny from 61.29.192.0/19
deny from 61.29.224.0/20
deny from 61.29.240.0/20
deny from 61.45.128.0/18
deny from 61.47.128.0/18
deny from 61.48.0.0/14
deny from 61.52.0.0/15
deny from 61.54.0.0/16
deny from 61.55.0.0/16
deny from 61.87.192.0/18
deny from 61.128.0.0/15
deny from 61.130.0.0/15
deny from 61.132.0.0/16
deny from 61.133.0.0/17
deny from 61.133.128.0/17
deny from 61.134.0.0/18
deny from 61.134.64.0/19
deny from 61.134.96.0/19
deny from 61.134.128.0/18
deny from 61.134.192.0/18
deny from 61.135.0.0/16
deny from 61.136.0.0/18
deny from 61.136.64.0/18
deny from 61.136.128.0/17
deny from 61.137.0.0/17
deny from 61.137.128.0/17
deny from 61.138.0.0/18
deny from 61.138.64.0/18
deny from 61.138.128.0/18
deny from 61.138.192.0/18
deny from 61.139.0.0/17
deny from 61.139.128.0/18
deny from 61.139.192.0/18
deny from 61.140.0.0/14
deny from 61.144.0.0/14
deny from 61.148.0.0/15
deny from 61.150.0.0/15
deny from 61.152.0.0/16
deny from 61.153.0.0/16
deny from 61.154.0.0/15
deny from 61.156.0.0/16
deny from 61.157.0.0/16
deny from 61.158.0.0/17
deny from 61.158.128.0/17
deny from 61.159.0.0/18
deny from 61.159.64.0/18
deny from 61.159.128.0/17
deny from 61.160.0.0/16
deny from 61.161.0.0/18
deny from 61.161.64.0/18
deny from 61.161.128.0/17
deny from 61.162.0.0/16
deny from 61.163.0.0/16
deny from 61.164.0.0/16
deny from 61.165.0.0/16
deny from 61.166.0.0/16
deny from 61.167.0.0/16
deny from 61.168.0.0/16
deny from 61.169.0.0/16
deny from 61.170.0.0/15
deny from 61.172.0.0/14
deny from 61.176.0.0/16
deny from 61.177.0.0/16
deny from 61.178.0.0/16
deny from 61.179.0.0/16
deny from 61.180.0.0/17
deny from 61.180.128.0/17
deny from 61.181.0.0/16
deny from 61.182.0.0/16
deny from 61.183.0.0/16
deny from 61.184.0.0/14
deny from 61.188.0.0/16
deny from 61.189.0.0/17
deny from 61.189.128.0/17
deny from 61.190.0.0/15
deny from 61.232.0.0/14
deny from 61.236.0.0/15
deny from 61.240.0.0/14
deny from 110.6.0.0/15
deny from 110.16.0.0/14
deny from 110.40.0.0/14
deny from 110.48.0.0/16
deny from 110.51.0.0/16
deny from 110.52.0.0/15
deny from 110.56.0.0/13
deny from 112.0.0.0/10
deny from 112.64.0.0/15
deny from 112.66.0.0/15
deny from 112.73.0.0/16
deny from 112.74.0.0/15
deny from 112.80.0.0/13
deny from 112.88.0.0/13
deny from 112.96.0.0/15
deny from 112.98.0.0/15
deny from 112.100.0.0/14
deny from 112.109.128.0/17
deny from 112.111.0.0/16
deny from 112.112.0.0/14
deny from 112.116.0.0/15
deny from 112.122.0.0/15
deny from 112.124.0.0/14
deny from 112.128.0.0/14
deny from 112.132.0.0/16
deny from 112.192.0.0/14
deny from 112.224.0.0/11
deny from 113.0.0.0/13
deny from 113.8.0.0/15
deny from 113.11.192.0/19
deny from 113.12.0.0/14
deny from 113.16.0.0/15
deny from 113.18.0.0/16
deny from 113.24.0.0/14
deny from 113.31.0.0/16
deny from 113.44.0.0/14
deny from 113.48.0.0/14
deny from 113.52.160.0/19
deny from 113.54.0.0/15
deny from 113.56.0.0/15
deny from 113.58.0.0/16
deny from 113.59.0.0/17
deny from 113.62.0.0/15
deny from 113.64.0.0/11
deny from 113.96.0.0/12
deny from 113.112.0.0/13
deny from 113.120.0.0/13
deny from 113.128.0.0/15
deny from 113.130.96.0/20
deny from 113.130.112.0/21
deny from 113.132.0.0/14
deny from 113.136.0.0/13
deny from 113.194.0.0/15
deny from 113.200.0.0/15
deny from 113.202.0.0/16
deny from 113.204.0.0/14
deny from 113.208.96.0/19
deny from 113.208.128.0/17
deny from 113.209.0.0/16
deny from 113.212.0.0/18
deny from 113.213.0.0/17
deny from 113.214.0.0/15
deny from 113.218.0.0/15
deny from 113.220.0.0/14
deny from 113.224.0.0/12
deny from 113.240.0.0/13
deny from 113.248.0.0/14
deny from 114.28.0.0/16
deny from 114.54.0.0/15
deny from 114.60.0.0/14
deny from 114.64.0.0/14
deny from 114.68.0.0/16
deny from 114.80.0.0/12
deny from 114.96.0.0/13
deny from 114.104.0.0/14
deny from 114.110.0.0/20
deny from 114.110.64.0/18
deny from 114.111.0.0/19
deny from 114.111.160.0/19
deny from 114.112.0.0/14
deny from 114.116.0.0/15
deny from 114.118.0.0/15
deny from 114.132.0.0/16
deny from 114.135.0.0/16
deny from 114.138.0.0/15
deny from 114.141.128.0/18
deny from 114.196.0.0/15
deny from 114.208.0.0/14
deny from 114.212.0.0/15
deny from 114.214.0.0/16
deny from 114.215.0.0/16
deny from 114.216.0.0/13
deny from 114.224.0.0/12
deny from 114.240.0.0/12
deny from 115.24.0.0/14
deny from 115.28.0.0/15
deny from 115.32.0.0/14
deny from 115.44.0.0/15
deny from 115.46.0.0/16
deny from 115.47.0.0/16
deny from 115.48.0.0/12
deny from 115.84.0.0/18
deny from 115.84.192.0/19
deny from 115.85.192.0/18
deny from 115.100.0.0/14
deny from 115.104.0.0/14
deny from 115.120.0.0/14
deny from 115.124.16.0/20
deny from 115.148.0.0/14
deny from 115.152.0.0/15
deny from 115.154.0.0/15
deny from 115.156.0.0/15
deny from 115.158.0.0/16
deny from 115.159.0.0/16
deny from 115.168.0.0/14
deny from 115.172.0.0/14
deny from 115.180.0.0/14
deny from 115.192.0.0/11
deny from 115.224.0.0/12
deny from 116.1.0.0/16
deny from 116.2.0.0/15
deny from 116.4.0.0/14
deny from 116.8.0.0/14
deny from 116.13.0.0/16
deny from 116.16.0.0/12
deny from 116.52.0.0/14
deny from 116.56.0.0/15
deny from 116.58.128.0/20
deny from 116.58.208.0/20
deny from 116.60.0.0/14
deny from 116.66.0.0/17
deny from 116.69.0.0/16
deny from 116.70.0.0/17
deny from 116.76.0.0/15
deny from 116.78.0.0/15
deny from 116.89.144.0/20
deny from 116.90.80.0/20
deny from 116.90.184.0/21
deny from 116.95.0.0/16
deny from 116.112.0.0/14
deny from 116.116.0.0/15
deny from 116.128.0.0/10
deny from 116.192.0.0/16
deny from 116.193.16.0/20
deny from 116.193.32.0/19
deny from 116.194.0.0/15
deny from 116.196.0.0/16
deny from 116.198.0.0/16
deny from 116.199.0.0/17
deny from 116.199.128.0/19
deny from 116.204.0.0/15
deny from 116.207.0.0/16
deny from 116.208.0.0/14
deny from 116.212.160.0/20
deny from 116.213.64.0/18
deny from 116.213.128.0/17
deny from 116.214.32.0/19
deny from 116.214.64.0/20
deny from 116.214.128.0/17
deny from 116.215.0.0/16
deny from 116.216.0.0/14
deny from 116.224.0.0/12
deny from 116.242.0.0/15
deny from 116.244.0.0/15
deny from 116.246.0.0/15
deny from 116.248.0.0/15
deny from 116.252.0.0/15
deny from 116.254.128.0/17
deny from 116.255.128.0/17
deny from 117.8.0.0/13
deny from 117.21.0.0/16
deny from 117.22.0.0/15
deny from 117.24.0.0/13
deny from 117.32.0.0/13
deny from 117.40.0.0/14
deny from 117.44.0.0/15
deny from 117.48.0.0/14
deny from 117.53.48.0/20
deny from 117.53.176.0/20
deny from 117.57.0.0/16
deny from 117.58.0.0/17
deny from 117.59.0.0/16
deny from 117.60.0.0/14
deny from 117.64.0.0/13
deny from 117.72.0.0/15
deny from 117.74.64.0/20
deny from 117.74.128.0/17
deny from 117.75.0.0/16
deny from 117.76.0.0/14
deny from 117.80.0.0/12
deny from 117.100.0.0/15
deny from 117.103.16.0/20
deny from 117.103.128.0/20
deny from 117.106.0.0/15
deny from 117.112.0.0/13
deny from 117.120.64.0/18
deny from 117.120.128.0/17
deny from 117.121.0.0/17
deny from 117.121.128.0/18
deny from 117.121.192.0/21
deny from 117.122.128.0/17
deny from 117.124.0.0/14
deny from 117.128.0.0/10
deny from 118.24.0.0/13
deny from 118.64.0.0/15
deny from 118.66.0.0/16
deny from 118.67.112.0/20
deny from 118.72.0.0/13
deny from 118.80.0.0/15
deny from 118.84.0.0/15
deny from 118.88.32.0/19
deny from 118.88.64.0/18
deny from 118.88.128.0/17
deny from 118.89.0.0/16
deny from 118.91.240.0/20
deny from 118.102.16.0/20
deny from 118.112.0.0/13
deny from 118.120.0.0/14
deny from 118.124.0.0/15
deny from 118.126.0.0/16
deny from 118.132.0.0/14
deny from 118.144.0.0/14
deny from 118.178.0.0/16
deny from 118.180.0.0/14
deny from 118.184.0.0/13
deny from 118.192.0.0/14
deny from 118.196.0.0/14
deny from 118.200.0.0/15
deny from 118.202.0.0/15
deny from 118.204.0.0/14
deny from 118.212.0.0/16
deny from 118.213.0.0/16
deny from 118.224.0.0/14
deny from 118.228.0.0/15
deny from 118.230.0.0/16
deny from 118.239.0.0/16
deny from 118.242.0.0/16
deny from 118.244.0.0/14
deny from 118.248.0.0/13
deny from 119.0.0.0/15
deny from 119.2.0.0/19
deny from 119.2.128.0/17
deny from 119.3.0.0/16
deny from 119.4.0.0/14
deny from 119.8.0.0/15
deny from 119.10.0.0/17
deny from 119.15.136.0/21
deny from 119.16.0.0/16
deny from 119.18.192.0/20
deny from 119.18.208.0/21
deny from 119.18.224.0/20
deny from 119.18.240.0/20
deny from 119.19.0.0/16
deny from 119.20.0.0/14
deny from 119.27.64.0/18
deny from 119.27.160.0/19
deny from 119.27.192.0/18
deny from 119.28.0.0/15
deny from 119.30.48.0/20
deny from 119.31.192.0/19
deny from 119.32.0.0/14
deny from 119.36.0.0/16
deny from 119.37.0.0/17
deny from 119.37.128.0/18
deny from 119.37.192.0/18
deny from 119.38.0.0/17
deny from 119.38.128.0/18
deny from 119.38.192.0/20
deny from 119.38.208.0/20
deny from 119.38.224.0/19
deny from 119.39.0.0/16
deny from 119.40.0.0/18
deny from 119.40.64.0/20
deny from 119.40.128.0/17
deny from 119.41.0.0/16
deny from 119.42.0.0/19
deny from 119.42.136.0/21
deny from 119.42.224.0/19
deny from 119.44.0.0/15
deny from 119.48.0.0/13
deny from 119.57.0.0/16
deny from 119.58.0.0/16
deny from 119.59.128.0/17
deny from 119.60.0.0/16
deny from 119.61.0.0/16
deny from 119.62.0.0/16
deny from 119.63.32.0/19
deny from 119.75.208.0/20
deny from 119.78.0.0/15
deny from 119.80.0.0/16
deny from 119.81.0.0/16
deny from 119.84.0.0/14
deny from 119.88.0.0/14
deny from 119.96.0.0/13
deny from 119.108.0.0/15
deny from 119.112.0.0/13
deny from 119.120.0.0/13
deny from 119.128.0.0/12
deny from 119.144.0.0/14
deny from 119.148.160.0/20
deny from 119.161.128.0/17
deny from 119.162.0.0/15
deny from 119.164.0.0/14
deny from 119.176.0.0/12
deny from 119.232.0.0/15
deny from 119.235.128.0/18
deny from 119.248.0.0/14
deny from 119.253.0.0/16
deny from 119.254.0.0/15
deny from 120.0.0.0/12
deny from 120.24.0.0/14
deny from 120.30.0.0/16
deny from 120.31.0.0/16
deny from 120.32.0.0/13
deny from 120.40.0.0/14
deny from 120.44.0.0/14
deny from 120.48.0.0/15
deny from 120.52.0.0/14
deny from 120.64.0.0/14
deny from 120.68.0.0/14
deny from 120.72.32.0/19
deny from 120.72.128.0/17
deny from 120.76.0.0/14
deny from 120.80.0.0/13
deny from 120.90.0.0/15
deny from 120.92.0.0/16
deny from 120.94.0.0/16
deny from 120.95.0.0/16
deny from 120.128.0.0/14
deny from 120.132.0.0/17
deny from 120.132.128.0/17
deny from 120.133.0.0/16
deny from 120.134.0.0/15
deny from 120.136.128.0/18
deny from 120.137.0.0/17
deny from 120.192.0.0/10
deny from 121.0.16.0/20
deny from 121.4.0.0/15
deny from 121.8.0.0/13
deny from 121.16.0.0/13
deny from 121.24.0.0/14
deny from 121.28.0.0/15
deny from 121.30.0.0/16
deny from 121.31.0.0/16
deny from 121.32.0.0/14
deny from 121.36.0.0/16
deny from 121.37.0.0/16
deny from 121.38.0.0/15
deny from 121.40.0.0/14
deny from 121.46.0.0/18
deny from 121.46.128.0/17
deny from 121.47.0.0/16
deny from 121.48.0.0/15
deny from 121.51.0.0/16
deny from 121.52.160.0/19
deny from 121.52.208.0/20
deny from 121.52.224.0/19
deny from 121.55.0.0/18
deny from 121.56.0.0/15
deny from 121.58.0.0/17
deny from 121.58.144.0/20
deny from 121.59.0.0/16
deny from 121.60.0.0/14
deny from 121.68.0.0/14
deny from 121.76.0.0/15
deny from 121.79.128.0/18
deny from 121.89.0.0/16
deny from 121.100.128.0/17
deny from 121.101.208.0/20
deny from 121.192.0.0/16
deny from 121.193.0.0/16
deny from 121.194.0.0/15
deny from 121.196.0.0/14
deny from 121.201.0.0/16
deny from 121.204.0.0/14
deny from 121.224.0.0/12
deny from 121.248.0.0/14
deny from 121.255.0.0/16
deny from 122.0.64.0/18
deny from 122.0.128.0/17
deny from 122.4.0.0/14
deny from 122.8.0.0/13
deny from 122.48.0.0/16
deny from 122.49.0.0/18
deny from 122.51.0.0/16
deny from 122.64.0.0/11
deny from 122.96.0.0/15
deny from 122.102.0.0/20
deny from 122.102.64.0/20
deny from 122.102.80.0/20
deny from 122.112.0.0/14
deny from 122.119.0.0/16
deny from 122.136.0.0/13
deny from 122.144.128.0/17
deny from 122.152.192.0/18
deny from 122.156.0.0/14
deny from 122.192.0.0/14
deny from 122.198.0.0/16
deny from 122.200.64.0/18
deny from 122.204.0.0/14
deny from 122.224.0.0/12
deny from 122.240.0.0/13
deny from 122.248.48.0/20
deny from 123.0.128.0/18
deny from 123.4.0.0/14
deny from 123.8.0.0/13
deny from 123.49.128.0/17
deny from 123.52.0.0/14
deny from 123.56.0.0/13
deny from 123.64.0.0/11
deny from 123.96.0.0/15
deny from 123.98.0.0/17
deny from 123.99.128.0/17
deny from 123.100.0.0/19
deny from 123.101.0.0/16
deny from 123.103.0.0/17
deny from 123.108.128.0/20
deny from 123.108.208.0/20
deny from 123.112.0.0/12
deny from 123.128.0.0/13
deny from 123.136.80.0/20
deny from 123.137.0.0/16
deny from 123.138.0.0/15
deny from 123.144.0.0/14
deny from 123.148.0.0/16
deny from 123.149.0.0/16
deny from 123.150.0.0/15
deny from 123.152.0.0/13
deny from 123.160.0.0/14
deny from 123.164.0.0/14
deny from 123.168.0.0/14
deny from 123.172.0.0/15
deny from 123.174.0.0/15
deny from 123.176.80.0/20
deny from 123.177.0.0/16
deny from 123.178.0.0/15
deny from 123.180.0.0/14
deny from 123.184.0.0/14
deny from 123.188.0.0/14
deny from 123.196.0.0/15
deny from 123.199.128.0/17
deny from 123.206.0.0/15
deny from 123.232.0.0/14
deny from 123.242.0.0/17
deny from 123.244.0.0/14
deny from 123.249.0.0/16
deny from 123.253.0.0/16
deny from 124.6.64.0/18
deny from 124.14.0.0/15
deny from 124.16.0.0/15
deny from 124.20.0.0/16
deny from 124.21.0.0/20
deny from 124.21.16.0/20
deny from 124.21.32.0/19
deny from 124.21.64.0/18
deny from 124.21.128.0/17
deny from 124.22.0.0/15
deny from 124.28.192.0/18
deny from 124.29.0.0/17
deny from 124.31.0.0/16
deny from 124.40.112.0/20
deny from 124.40.128.0/18
deny from 124.42.0.0/17
deny from 124.42.128.0/17
deny from 124.47.0.0/18
deny from 124.64.0.0/15
deny from 124.66.0.0/17
deny from 124.67.0.0/16
deny from 124.68.0.0/14
deny from 124.72.0.0/16
deny from 124.73.0.0/16
deny from 124.74.0.0/15
deny from 124.76.0.0/14
deny from 124.88.0.0/16
deny from 124.89.0.0/17
deny from 124.89.128.0/17
deny from 124.90.0.0/15
deny from 124.92.0.0/14
deny from 124.108.8.0/21
deny from 124.108.40.0/21
deny from 124.112.0.0/15
deny from 124.114.0.0/15
deny from 124.116.0.0/16
deny from 124.117.0.0/16
deny from 124.118.0.0/15
deny from 124.126.0.0/15
deny from 124.128.0.0/13
deny from 124.147.128.0/17
deny from 124.156.0.0/16
deny from 124.160.0.0/16
deny from 124.161.0.0/16
deny from 124.162.0.0/16
deny from 124.163.0.0/16
deny from 124.164.0.0/14
deny from 124.172.0.0/15
deny from 124.174.0.0/15
deny from 124.192.0.0/15
deny from 124.196.0.0/16
deny from 124.200.0.0/13
deny from 124.220.0.0/14
deny from 124.224.0.0/16
deny from 124.225.0.0/16
deny from 124.226.0.0/15
deny from 124.228.0.0/14
deny from 124.232.0.0/15
deny from 124.234.0.0/15
deny from 124.236.0.0/14
deny from 124.240.0.0/17
deny from 124.240.128.0/18
deny from 124.242.0.0/16
deny from 124.243.192.0/18
deny from 124.248.0.0/17
deny from 124.249.0.0/16
deny from 124.250.0.0/15
deny from 124.254.0.0/18
deny from 125.31.192.0/18
deny from 125.32.0.0/16
deny from 125.33.0.0/16
deny from 125.34.0.0/16
deny from 125.35.0.0/17
deny from 125.35.128.0/17
deny from 125.36.0.0/14
deny from 125.40.0.0/13
deny from 125.58.128.0/17
deny from 125.61.128.0/17
deny from 125.62.0.0/18
deny from 125.64.0.0/13
deny from 125.72.0.0/16
deny from 125.73.0.0/16
deny from 125.74.0.0/15
deny from 125.76.0.0/17
deny from 125.76.128.0/17
deny from 125.77.0.0/16
deny from 125.78.0.0/15
deny from 125.80.0.0/13
deny from 125.88.0.0/13
deny from 125.96.0.0/15
deny from 125.98.0.0/16
deny from 125.104.0.0/13
deny from 125.112.0.0/12
deny from 125.169.0.0/16
deny from 125.171.0.0/16
deny from 125.208.0.0/18
deny from 125.210.0.0/16
deny from 125.211.0.0/16
deny from 125.213.0.0/17
deny from 125.214.96.0/19
deny from 125.215.0.0/18
deny from 125.216.0.0/15
deny from 125.218.0.0/16
deny from 125.219.0.0/16
deny from 125.220.0.0/15
deny from 125.222.0.0/15
deny from 125.254.128.0/18
deny from 125.254.192.0/18
deny from 134.196.0.0/16
deny from 159.226.0.0/16
deny from 161.207.0.0/16
deny from 162.105.0.0/16
deny from 166.111.0.0/16
deny from 167.139.0.0/16
deny from 168.160.0.0/16
deny from 169.211.1.0/24
deny from 192.83.122.0/24
deny from 192.83.169.0/24
deny from 192.124.154.0/24
deny from 192.188.170.0/24
deny from 198.17.7.0/24
deny from 202.0.110.0/24
deny from 202.0.176.0/22
deny from 202.4.128.0/19
deny from 202.4.252.0/22
deny from 202.8.128.0/19
deny from 202.10.64.0/20
deny from 202.14.88.0/24
deny from 202.14.235.0/24
deny from 202.14.236.0/23
deny from 202.14.238.0/24
deny from 202.20.120.0/24
deny from 202.22.248.0/22
deny from 202.22.252.0/22
deny from 202.38.0.0/23
deny from 202.38.2.0/23
deny from 202.38.4.0/22
deny from 202.38.8.0/21
deny from 202.38.64.0/19
deny from 202.38.96.0/19
deny from 202.38.128.0/23
deny from 202.38.130.0/23
deny from 202.38.132.0/23
deny from 202.38.134.0/24
deny from 202.38.135.0/24
deny from 202.38.136.0/24
deny from 202.38.137.0/24
deny from 202.38.138.0/24
deny from 202.38.140.0/23
deny from 202.38.142.0/24
deny from 202.38.143.0/24
deny from 202.38.146.0/23
deny from 202.38.149.0/24
deny from 202.38.150.0/23
deny from 202.38.152.0/23
deny from 202.38.154.0/23
deny from 202.38.156.0/24
deny from 202.38.158.0/23
deny from 202.38.160.0/23
deny from 202.38.164.0/22
deny from 202.38.168.0/24
deny from 202.38.169.0/24
deny from 202.38.170.0/24
deny from 202.38.171.0/24
deny from 202.38.172.0/24
deny from 202.38.173.0/24
deny from 202.38.174.0/24
deny from 202.38.175.0/24
deny from 202.38.176.0/23
deny from 202.38.184.0/21
deny from 202.38.192.0/18
deny from 202.41.152.0/21
deny from 202.41.240.0/20
deny from 202.43.144.0/20
deny from 202.46.32.0/19
deny from 202.46.224.0/20
deny from 202.60.112.0/20
deny from 202.63.248.0/22
deny from 202.69.4.0/22
deny from 202.69.16.0/20
deny from 202.70.0.0/19
deny from 202.74.8.0/21
deny from 202.75.208.0/20
deny from 202.85.208.0/20
deny from 202.90.0.0/22
deny from 202.90.224.0/20
deny from 202.90.252.0/22
deny from 202.91.0.0/22
deny from 202.91.128.0/22
deny from 202.91.176.0/20
deny from 202.91.224.0/19
deny from 202.92.0.0/22
deny from 202.92.252.0/22
deny from 202.93.0.0/22
deny from 202.93.252.0/22
deny from 202.95.0.0/22
deny from 202.95.4.0/22
deny from 202.95.8.0/21
deny from 202.95.16.0/20
deny from 202.95.252.0/22
deny from 202.96.0.0/18
deny from 202.96.64.0/21
deny from 202.96.72.0/21
deny from 202.96.80.0/20
deny from 202.96.96.0/21
deny from 202.96.104.0/21
deny from 202.96.112.0/20
deny from 202.96.128.0/21
deny from 202.96.136.0/21
deny from 202.96.144.0/20
deny from 202.96.160.0/21
deny from 202.96.168.0/21
deny from 202.96.176.0/20
deny from 202.96.192.0/21
deny from 202.96.200.0/21
deny from 202.96.208.0/20
deny from 202.96.224.0/21
deny from 202.96.232.0/21
deny from 202.96.240.0/20
deny from 202.97.0.0/21
deny from 202.97.8.0/21
deny from 202.97.16.0/20
deny from 202.97.32.0/19
deny from 202.97.64.0/19
deny from 202.97.96.0/20
deny from 202.97.112.0/20
deny from 202.97.128.0/18
deny from 202.97.192.0/19
deny from 202.97.224.0/21
deny from 202.97.232.0/21
deny from 202.97.240.0/20
deny from 202.98.0.0/21
deny from 202.98.8.0/21
deny from 202.98.16.0/20
deny from 202.98.32.0/21
deny from 202.98.40.0/21
deny from 202.98.48.0/20
deny from 202.98.64.0/19
deny from 202.98.96.0/21
deny from 202.98.104.0/21
deny from 202.98.112.0/20
deny from 202.98.128.0/19
deny from 202.98.160.0/21
deny from 202.98.168.0/21
deny from 202.98.176.0/20
deny from 202.98.192.0/21
deny from 202.98.200.0/21
deny from 202.98.208.0/20
deny from 202.98.224.0/21
deny from 202.98.232.0/21
deny from 202.98.240.0/20
deny from 202.99.0.0/18
deny from 202.99.64.0/19
deny from 202.99.96.0/21
deny from 202.99.104.0/21
deny from 202.99.112.0/20
deny from 202.99.128.0/19
deny from 202.99.160.0/21
deny from 202.99.168.0/21
deny from 202.99.176.0/20
deny from 202.99.192.0/21
deny from 202.99.200.0/21
deny from 202.99.208.0/20
deny from 202.99.224.0/21
deny from 202.99.232.0/21
deny from 202.99.240.0/20
deny from 202.100.0.0/21
deny from 202.100.8.0/21
deny from 202.100.16.0/20
deny from 202.100.32.0/19
deny from 202.100.64.0/21
deny from 202.100.72.0/21
deny from 202.100.80.0/20
deny from 202.100.96.0/21
deny from 202.100.104.0/21
deny from 202.100.112.0/20
deny from 202.100.128.0/21
deny from 202.100.136.0/21
deny from 202.100.144.0/20
deny from 202.100.160.0/21
deny from 202.100.168.0/21
deny from 202.100.176.0/20
deny from 202.100.192.0/21
deny from 202.100.200.0/21
deny from 202.100.208.0/20
deny from 202.100.224.0/19
deny from 202.101.0.0/18
deny from 202.101.64.0/19
deny from 202.101.96.0/19
deny from 202.101.128.0/18
deny from 202.101.192.0/19
deny from 202.101.224.0/21
deny from 202.101.232.0/21
deny from 202.101.240.0/20
deny from 202.102.0.0/19
deny from 202.102.32.0/19
deny from 202.102.64.0/18
deny from 202.102.128.0/21
deny from 202.102.136.0/21
deny from 202.102.144.0/20
deny from 202.102.160.0/19
deny from 202.102.192.0/21
deny from 202.102.200.0/21
deny from 202.102.208.0/20
deny from 202.102.224.0/21
deny from 202.102.232.0/21
deny from 202.102.240.0/20
deny from 202.103.0.0/21
deny from 202.103.8.0/21
deny from 202.103.16.0/20
deny from 202.103.32.0/19
deny from 202.103.64.0/19
deny from 202.103.96.0/21
deny from 202.103.104.0/21
deny from 202.103.112.0/20
deny from 202.103.128.0/18
deny from 202.103.192.0/19
deny from 202.103.224.0/21
deny from 202.103.232.0/21
deny from 202.103.240.0/20
deny from 202.104.0.0/15
deny from 202.106.0.0/16
deny from 202.107.0.0/17
deny from 202.107.128.0/17
deny from 202.108.0.0/16
deny from 202.109.0.0/16
deny from 202.110.0.0/18
deny from 202.110.64.0/18
deny from 202.110.128.0/18
deny from 202.110.192.0/18
deny from 202.111.0.0/17
deny from 202.111.128.0/19
deny from 202.111.160.0/19
deny from 202.111.192.0/18
deny from 202.112.0.0/16
deny from 202.113.0.0/20
deny from 202.113.16.0/20
deny from 202.113.32.0/19
deny from 202.113.64.0/18
deny from 202.113.128.0/18
deny from 202.113.192.0/19
deny from 202.113.224.0/20
deny from 202.113.240.0/20
deny from 202.114.0.0/19
deny from 202.114.32.0/19
deny from 202.114.64.0/18
deny from 202.114.128.0/17
deny from 202.115.0.0/19
deny from 202.115.32.0/19
deny from 202.115.64.0/18
deny from 202.115.128.0/17
deny from 202.116.0.0/19
deny from 202.116.32.0/20
deny from 202.116.48.0/20
deny from 202.116.64.0/19
deny from 202.116.96.0/19
deny from 202.116.128.0/17
deny from 202.117.0.0/18
deny from 202.117.64.0/18
deny from 202.117.128.0/17
deny from 202.118.0.0/19
deny from 202.118.32.0/19
deny from 202.118.64.0/18
deny from 202.118.128.0/17
deny from 202.119.0.0/19
deny from 202.119.32.0/19
deny from 202.119.64.0/20
deny from 202.119.80.0/20
deny from 202.119.96.0/19
deny from 202.119.128.0/17
deny from 202.120.0.0/18
deny from 202.120.64.0/18
deny from 202.120.128.0/17
deny from 202.121.0.0/16
deny from 202.122.0.0/21
deny from 202.122.32.0/21
deny from 202.122.64.0/19
deny from 202.122.112.0/21
deny from 202.122.128.0/24
deny from 202.123.96.0/20
deny from 202.125.176.0/20
deny from 202.127.0.0/23
deny from 202.127.2.0/24
deny from 202.127.3.0/24
deny from 202.127.4.0/24
deny from 202.127.5.0/24
deny from 202.127.6.0/23
deny from 202.127.12.0/22
deny from 202.127.16.0/20
deny from 202.127.40.0/21
deny from 202.127.48.0/20
deny from 202.127.112.0/20
deny from 202.127.128.0/20
deny from 202.127.144.0/20
deny from 202.127.160.0/21
deny from 202.127.192.0/23
deny from 202.127.194.0/23
deny from 202.127.196.0/22
deny from 202.127.200.0/21
deny from 202.127.208.0/24
deny from 202.127.209.0/24
deny from 202.127.212.0/22
deny from 202.127.216.0/21
deny from 202.127.224.0/19
deny from 202.130.0.0/19
deny from 202.130.224.0/19
deny from 202.131.16.0/21
deny from 202.131.48.0/20
deny from 202.131.208.0/20
deny from 202.136.48.0/20
deny from 202.136.208.0/20
deny from 202.136.224.0/20
deny from 202.141.160.0/19
deny from 202.142.16.0/20
deny from 202.143.16.0/20
deny from 202.148.96.0/19
deny from 202.149.160.0/19
deny from 202.149.224.0/19
deny from 202.150.16.0/20
deny from 202.152.176.0/20
deny from 202.153.48.0/20
deny from 202.158.160.0/19
deny from 202.160.176.0/20
deny from 202.164.0.0/20
deny from 202.164.25.0/24
deny from 202.165.96.0/20
deny from 202.165.176.0/20
deny from 202.165.208.0/20
deny from 202.168.160.0/20
deny from 202.168.176.0/20
deny from 202.170.128.0/19
deny from 202.170.216.0/21
deny from 202.173.8.0/21
deny from 202.173.224.0/19
deny from 202.179.240.0/20
deny from 202.180.128.0/19
deny from 202.181.112.0/20
deny from 202.189.80.0/20
deny from 202.192.0.0/13
deny from 202.200.0.0/14
deny from 202.204.0.0/14
deny from 203.18.50.0/24
deny from 203.79.0.0/20
deny from 203.80.144.0/20
deny from 203.81.16.0/20
deny from 203.83.56.0/21
deny from 203.86.0.0/19
deny from 203.86.32.0/19
deny from 203.86.64.0/20
deny from 203.86.80.0/20
deny from 203.88.32.0/19
deny from 203.88.192.0/19
deny from 203.89.0.0/22
deny from 203.90.0.0/22
deny from 203.90.128.0/19
deny from 203.90.160.0/19
deny from 203.90.192.0/19
deny from 203.91.32.0/19
deny from 203.91.96.0/20
deny from 203.91.120.0/21
deny from 203.92.0.0/22
deny from 203.92.160.0/19
deny from 203.93.0.0/22
deny from 203.93.4.0/22
deny from 203.93.8.0/24
deny from 203.93.9.0/24
deny from 203.93.10.0/23
deny from 203.93.12.0/22
deny from 203.93.16.0/20
deny from 203.93.32.0/19
deny from 203.93.64.0/18
deny from 203.93.128.0/21
deny from 203.93.136.0/22
deny from 203.93.140.0/24
deny from 203.93.141.0/24
deny from 203.93.142.0/23
deny from 203.93.144.0/20
deny from 203.93.160.0/19
deny from 203.93.192.0/18
deny from 203.94.0.0/22
deny from 203.94.4.0/22
deny from 203.94.8.0/21
deny from 203.94.16.0/20
deny from 203.95.0.0/21
deny from 203.95.96.0/20
deny from 203.95.112.0/20
deny from 203.99.16.0/20
deny from 203.99.80.0/20
deny from 203.100.32.0/20
deny from 203.100.80.0/20
deny from 203.100.96.0/19
deny from 203.100.192.0/20
deny from 203.110.160.0/19
deny from 203.118.192.0/19
deny from 203.118.248.0/22
deny from 203.119.24.0/21
deny from 203.119.32.0/22
deny from 203.128.32.0/19
deny from 203.128.96.0/19
deny from 203.130.32.0/19
deny from 203.132.32.0/19
deny from 203.134.240.0/21
deny from 203.135.96.0/20
deny from 203.135.112.0/20
deny from 203.135.160.0/20
deny from 203.142.219.0/24
deny from 203.148.0.0/18
deny from 203.152.64.0/19
deny from 203.156.192.0/18
deny from 203.158.16.0/21
deny from 203.161.192.0/19
deny from 203.166.160.0/19
deny from 203.171.224.0/20
deny from 203.174.7.0/24
deny from 203.174.96.0/19
deny from 203.175.128.0/19
deny from 203.175.192.0/18
deny from 203.176.168.0/21
deny from 203.184.80.0/20
deny from 203.187.160.0/19
deny from 203.190.96.0/20
deny from 203.191.16.0/20
deny from 203.191.64.0/18
deny from 203.191.144.0/21
deny from 203.191.152.0/21
deny from 203.192.0.0/19
deny from 203.196.0.0/21
deny from 203.207.64.0/18
deny from 203.207.128.0/17
deny from 203.208.0.0/20
deny from 203.208.16.0/22
deny from 203.208.32.0/19
deny from 203.209.224.0/19
deny from 203.212.0.0/20
deny from 203.212.80.0/20
deny from 203.222.192.0/20
deny from 203.223.0.0/20
deny from 210.2.0.0/20
deny from 210.2.16.0/20
deny from 210.5.0.0/19
deny from 210.5.144.0/20
deny from 210.12.0.0/18
deny from 210.12.64.0/18
deny from 210.12.128.0/18
deny from 210.12.192.0/18
deny from 210.13.0.0/18
deny from 210.13.64.0/18
deny from 210.13.128.0/17
deny from 210.14.64.0/19
deny from 210.14.112.0/20
deny from 210.14.128.0/19
deny from 210.14.160.0/19
deny from 210.14.192.0/19
deny from 210.14.224.0/19
deny from 210.15.0.0/19
deny from 210.15.32.0/19
deny from 210.15.64.0/19
deny from 210.15.96.0/19
deny from 210.15.128.0/18
deny from 210.16.128.0/18
deny from 210.21.0.0/17
deny from 210.21.128.0/17
deny from 210.22.0.0/16
deny from 210.23.32.0/19
deny from 210.25.0.0/16
deny from 210.26.0.0/15
deny from 210.28.0.0/14
deny from 210.32.0.0/14
deny from 210.36.0.0/14
deny from 210.40.0.0/13
deny from 210.51.0.0/16
deny from 210.52.0.0/18
deny from 210.52.64.0/18
deny from 210.52.128.0/17
deny from 210.53.0.0/17
deny from 210.53.128.0/17
deny from 210.56.192.0/19
deny from 210.72.0.0/17
deny from 210.72.128.0/19
deny from 210.72.160.0/19
deny from 210.72.192.0/18
deny from 210.73.0.0/19
deny from 210.73.32.0/19
deny from 210.73.64.0/18
deny from 210.73.128.0/17
deny from 210.74.0.0/19
deny from 210.74.32.0/19
deny from 210.74.64.0/19
deny from 210.74.96.0/19
deny from 210.74.128.0/19
deny from 210.74.160.0/19
deny from 210.74.192.0/18
deny from 210.75.0.0/16
deny from 210.76.0.0/19
deny from 210.76.32.0/19
deny from 210.76.64.0/18
deny from 210.76.128.0/17
deny from 210.77.0.0/16
deny from 210.78.0.0/19
deny from 210.78.32.0/19
deny from 210.78.64.0/18
deny from 210.78.128.0/19
deny from 210.78.160.0/19
deny from 210.78.192.0/18
deny from 210.79.64.0/18
deny from 210.79.224.0/19
deny from 210.82.0.0/15
deny from 210.87.128.0/20
deny from 210.87.144.0/20
deny from 210.87.160.0/19
deny from 210.185.192.0/18
deny from 210.192.96.0/19
deny from 211.64.0.0/14
deny from 211.68.0.0/15
deny from 211.70.0.0/15
deny from 211.80.0.0/16
deny from 211.81.0.0/16
deny from 211.82.0.0/16
deny from 211.83.0.0/16
deny from 211.84.0.0/15
deny from 211.86.0.0/15
deny from 211.88.0.0/16
deny from 211.89.0.0/16
deny from 211.90.0.0/15
deny from 211.92.0.0/15
deny from 211.94.0.0/15
deny from 211.96.0.0/15
deny from 211.98.0.0/15
deny from 211.100.0.0/16
deny from 211.101.0.0/18
deny from 211.101.64.0/18
deny from 211.101.128.0/17
deny from 211.102.0.0/16
deny from 211.103.0.0/17
deny from 211.103.128.0/17
deny from 211.136.0.0/14
deny from 211.140.0.0/15
deny from 211.142.0.0/17
deny from 211.142.128.0/17
deny from 211.143.0.0/16
deny from 211.144.0.0/15
deny from 211.146.0.0/16
deny from 211.147.0.0/16
deny from 211.148.0.0/14
deny from 211.152.0.0/15
deny from 211.154.0.0/16
deny from 211.155.0.0/18
deny from 211.155.64.0/19
deny from 211.155.96.0/19
deny from 211.155.128.0/17
deny from 211.156.0.0/14
deny from 211.160.0.0/14
deny from 211.164.0.0/14
deny from 218.0.0.0/16
deny from 218.1.0.0/16
deny from 218.2.0.0/15
deny from 218.4.0.0/15
deny from 218.6.0.0/16
deny from 218.7.0.0/16
deny from 218.8.0.0/15
deny from 218.10.0.0/16
deny from 218.11.0.0/16
deny from 218.12.0.0/16
deny from 218.13.0.0/16
deny from 218.14.0.0/15
deny from 218.16.0.0/14
deny from 218.20.0.0/16
deny from 218.21.0.0/17
deny from 218.21.128.0/17
deny from 218.22.0.0/15
deny from 218.24.0.0/15
deny from 218.26.0.0/16
deny from 218.27.0.0/16
deny from 218.28.0.0/15
deny from 218.30.0.0/15
deny from 218.56.0.0/14
deny from 218.60.0.0/15
deny from 218.62.0.0/17
deny from 218.62.128.0/17
deny from 218.63.0.0/16
deny from 218.64.0.0/15
deny from 218.66.0.0/16
deny from 218.67.0.0/17
deny from 218.67.128.0/17
deny from 218.68.0.0/15
deny from 218.70.0.0/15
deny from 218.72.0.0/14
deny from 218.76.0.0/15
deny from 218.78.0.0/15
deny from 218.80.0.0/14
deny from 218.84.0.0/14
deny from 218.88.0.0/13
deny from 218.96.0.0/14
deny from 218.104.0.0/17
deny from 218.104.128.0/19
deny from 218.104.160.0/19
deny from 218.104.192.0/21
deny from 218.104.200.0/21
deny from 218.104.208.0/20
deny from 218.104.224.0/19
deny from 218.105.0.0/16
deny from 218.106.0.0/15
deny from 218.108.0.0/16
deny from 218.109.0.0/16
deny from 218.185.192.0/19
deny from 218.192.0.0/16
deny from 218.193.0.0/16
deny from 218.194.0.0/16
deny from 218.195.0.0/16
deny from 218.196.0.0/14
deny from 218.200.0.0/14
deny from 218.204.0.0/15
deny from 218.206.0.0/15
deny from 218.240.0.0/14
deny from 218.244.0.0/15
deny from 218.246.0.0/15
deny from 218.249.0.0/16
deny from 219.72.0.0/16
deny from 219.82.0.0/16
deny from 219.128.0.0/12
deny from 219.144.0.0/14
deny from 219.148.0.0/16
deny from 219.149.0.0/17
deny from 219.149.128.0/18
deny from 219.149.192.0/18
deny from 219.150.0.0/19
deny from 219.150.32.0/19
deny from 219.150.64.0/19
deny from 219.150.96.0/20
deny from 219.150.112.0/20
deny from 219.150.128.0/17
deny from 219.151.0.0/19
deny from 219.151.32.0/19
deny from 219.151.64.0/18
deny from 219.151.128.0/17
deny from 219.152.0.0/15
deny from 219.154.0.0/15
deny from 219.156.0.0/15
deny from 219.158.0.0/17
deny from 219.158.128.0/17
deny from 219.159.0.0/18
deny from 219.159.64.0/18
deny from 219.159.128.0/17
deny from 219.216.0.0/15
deny from 219.218.0.0/15
deny from 219.220.0.0/16
deny from 219.221.0.0/16
deny from 219.222.0.0/15
deny from 219.224.0.0/15
deny from 219.226.0.0/16
deny from 219.227.0.0/16
deny from 219.228.0.0/15
deny from 219.230.0.0/15
deny from 219.232.0.0/14
deny from 219.236.0.0/15
deny from 219.238.0.0/15
deny from 219.242.0.0/15
deny from 219.244.0.0/14
deny from 220.101.192.0/18
deny from 220.112.0.0/14
deny from 220.152.128.0/17
deny from 220.154.0.0/15
deny from 220.160.0.0/11
deny from 220.192.0.0/15
deny from 220.194.0.0/15
deny from 220.196.0.0/14
deny from 220.200.0.0/13
deny from 220.231.0.0/18
deny from 220.231.128.0/17
deny from 220.232.64.0/18
deny from 220.234.0.0/16
deny from 220.242.0.0/15
deny from 220.248.0.0/14
deny from 220.252.0.0/16
deny from 221.0.0.0/15
deny from 221.2.0.0/16
deny from 221.3.0.0/17
deny from 221.3.128.0/17
deny from 221.4.0.0/16
deny from 221.5.0.0/17
deny from 221.5.128.0/17
deny from 221.6.0.0/16
deny from 221.7.0.0/19
deny from 221.7.32.0/19
deny from 221.7.64.0/19
deny from 221.7.96.0/19
deny from 221.7.128.0/17
deny from 221.8.0.0/15
deny from 221.10.0.0/16
deny from 221.11.0.0/17
deny from 221.11.128.0/18
deny from 221.11.192.0/19
deny from 221.11.224.0/19
deny from 221.12.0.0/17
deny from 221.12.128.0/18
deny from 221.13.0.0/18
deny from 221.13.64.0/19
deny from 221.13.96.0/19
deny from 221.13.128.0/17
deny from 221.14.0.0/15
deny from 221.122.0.0/15
deny from 221.129.0.0/16
deny from 221.130.0.0/15
deny from 221.133.224.0/19
deny from 221.136.0.0/16
deny from 221.137.0.0/16
deny from 221.172.0.0/14
deny from 221.176.0.0/13
deny from 221.192.0.0/15
deny from 221.194.0.0/16
deny from 221.195.0.0/16
deny from 221.196.0.0/15
deny from 221.198.0.0/16
deny from 221.199.0.0/19
deny from 221.199.32.0/20
deny from 221.199.48.0/20
deny from 221.199.64.0/18
deny from 221.199.128.0/18
deny from 221.199.192.0/20
deny from 221.199.224.0/19
deny from 221.200.0.0/14
deny from 221.204.0.0/15
deny from 221.206.0.0/16
deny from 221.207.0.0/18
deny from 221.207.64.0/18
deny from 221.207.128.0/17
deny from 221.208.0.0/14
deny from 221.212.0.0/16
deny from 221.213.0.0/16
deny from 221.214.0.0/15
deny from 221.216.0.0/13
deny from 221.224.0.0/13
deny from 221.232.0.0/14
deny from 221.236.0.0/15
deny from 221.238.0.0/16
deny from 221.239.0.0/17
deny from 221.239.128.0/17
deny from 222.16.0.0/15
deny from 222.18.0.0/15
deny from 222.20.0.0/15
deny from 222.22.0.0/16
deny from 222.23.0.0/16
deny from 222.24.0.0/15
deny from 222.26.0.0/15
deny from 222.28.0.0/14
deny from 222.32.0.0/11
deny from 222.64.0.0/13
deny from 222.72.0.0/15
deny from 222.74.0.0/16
deny from 222.75.0.0/16
deny from 222.76.0.0/14
deny from 222.80.0.0/15
deny from 222.82.0.0/16
deny from 222.83.0.0/17
deny from 222.83.128.0/17
deny from 222.84.0.0/16
deny from 222.85.0.0/17
deny from 222.85.128.0/17
deny from 222.86.0.0/15
deny from 222.88.0.0/15
deny from 222.90.0.0/15
deny from 222.92.0.0/14
deny from 222.125.0.0/16
deny from 222.126.128.0/17
deny from 222.128.0.0/14
deny from 222.132.0.0/14
deny from 222.136.0.0/13
deny from 222.160.0.0/15
deny from 222.162.0.0/16
deny from 222.163.0.0/19
deny from 222.163.32.0/19
deny from 222.163.64.0/18
deny from 222.163.128.0/17
deny from 222.168.0.0/15
deny from 222.170.0.0/15
deny from 222.172.0.0/17
deny from 222.172.128.0/17
deny from 222.173.0.0/16
deny from 222.174.0.0/15
deny from 222.176.0.0/13
deny from 222.184.0.0/13
deny from 222.192.0.0/14
deny from 222.196.0.0/15
deny from 222.198.0.0/16
deny from 222.199.0.0/16
deny from 222.200.0.0/14
deny from 222.204.0.0/15
deny from 222.206.0.0/15
deny from 222.208.0.0/13
deny from 222.216.0.0/15
deny from 222.218.0.0/16
deny from 222.219.0.0/16
deny from 222.220.0.0/15
deny from 222.222.0.0/15
deny from 222.240.0.0/13
deny from 222.248.0.0/16
deny from 222.249.0.0/17
deny from 222.249.128.0/19
deny from 222.249.160.0/20
deny from 222.249.176.0/20
deny from 222.249.192.0/18
allow from all
&amp;lt;/Limit&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
It seems they block all Chinese users :-)&lt;br /&gt;
P.S.: With tolerance to any nation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-4716761421269188973?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/4716761421269188973/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=4716761421269188973" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4716761421269188973?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4716761421269188973?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/nh_cna7NBOY/modauthzhost-blocks-china.html" title="mod_authz_host blocks China" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.develworld.net/2009/03/modauthzhost-blocks-china.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04BQ38zfSp7ImA9WxVbEUk.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-4324916242947558287</id><published>2009-03-26T22:52:00.002+02:00</published><updated>2009-03-27T12:32:32.185+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-27T12:32:32.185+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Pretty nice advantage of Helicon Ape</title><content type="html">We have written &lt;a href="http://www.helicontech.com/ape/"&gt;Ape&lt;/a&gt; using C# and .NET Framework. It is a pretty funny subject for arguments but I'm going to dismiss this thought and tell you about one important advantage of Ape. When you use .NET Framework you get a “managed code”. Your application isn't executed on &lt;a href="http://en.wikipedia.org/wiki/CPU"&gt;CPU&lt;/a&gt; directly. Instead it goes through the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Common_Language_Runtime"&gt;CLR&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;img border="0" src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/CLR_diag.svg/500px-CLR_diag.svg.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
It gives you 99.9% of confidence that you are protected from “buffer overflow errors” - most popular hacker method for attaks on Apache server. When a program has too small buffer for some data saving and there aren't any incoming data length checking. So the buffer is overflowed and an attacker gets opportunity to execute some code on attacked machine.&lt;br /&gt;
The same error in managed application (Ape is 100% managed) leads to exception with detailed report. Every exception in Ape gives 500 HTTP code and a record in error.log&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-4324916242947558287?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/4324916242947558287/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=4324916242947558287" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4324916242947558287?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4324916242947558287?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/IlBB4kYd-rw/pretty-nice-advantage-for-helicon-ape.html" title="Pretty nice advantage of Helicon Ape" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/03/pretty-nice-advantage-for-helicon-ape.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQBRnc_cSp7ImA9WxVUGU8.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-7373045215488100960</id><published>2009-03-24T22:25:00.000+02:00</published><updated>2009-03-24T22:25:57.949+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-24T22:25:57.949+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mod_cache" /><category scheme="http://www.blogger.com/atom/ns#" term="mod_deflate" /><category scheme="http://www.blogger.com/atom/ns#" term="mod_gzip" /><category scheme="http://www.blogger.com/atom/ns#" term="mod_setenvif" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>mod_cache and mod_gzip preset</title><content type="html">We've compiled the most popular configurations for mod_cache and mod_gzip in one single code. It is a bomb with power to speed your traffic (&lt;a href="http://www.helicontech.com/ape/doc/mod_cache.htm"&gt;mod_cache&lt;/a&gt;) and reduce its size (&lt;a href="http://www.helicontech.com/ape/doc/mod_gzip.htm"&gt;mod_gzip&lt;/a&gt;). Catch it! ;)&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;# By file extension
SetEnvIfNoCase request_uri \.mdb$ gzip=9
SetEnvIfNoCase request_uri \.bmp$ gzip cache-enable=mem
SetEnvIfNoCase request_uri \.(?:jpg|gif|png|swf|avi|rm)$ no-gzip                        

# By MIME type
SetEnvIfNoCase mime text/.* gzip=9 cache-enable=mem
SetEnvIfNoCase mime audio/wav gzip cache-enable=mem
SetEnvIfNoCase mime image/bmp gzip cache-enable=mem
SetEnvIfNoCase mime message/rfc822 gzip

SetEnvIfNoCase mime application/msword gzip
SetEnvIfNoCase mime application/postscript gzip
SetEnvIfNoCase mime application/vnd.ms-excel gzip
SetEnvIfNoCase mime application/vnd.ms-powerpoint gzip
SetEnvIfNoCase mime application/vnd.ms-works gzip
SetEnvIfNoCase mime application/x-javascript gzip cache-enable=mem
SetEnvIfNoCase mime application/x-msaccess gzip
SetEnvIfNoCase mime application/pdf gzip

# Exceptions for old browsers
#BrowserMatchNoCase \bOpera(?:\s5\.|/5) and \
#    mime application/.* no-gzip vary-agent !cache-enable
#BrowserMatchNoCase \bMozilla/4\.[67] and \
#    (mime application/.* or mime image/.*) no-gzip vary-agent !cache-enable
#BrowserMatchNoCase \bNetscape(?:6/6\.|/) and \
#    mime application/.* no-gzip vary-agent !cache-enable
#BrowserMatchNoCase \bFirefox/1 and \
#    mime application/pdf no-gzip vary-agent !cache-enable

SetEnvIfNoCase (mime text/css) or (mime image/jpeg) vary-agent
BrowserMatchNoCase \bMSIE\s[567]\. and \
    (mime text/css or mime image/jpeg) no-gzip vary-agent !cache-enable

# Vary header should be properly set for caching
Header merge Vary User-Agent env=vary-agent

# Set expiry delta for static content
# Dynamic pages should set expiry delta by oneself
Header merge Cache-Control max-age=86400 env=cache-enable
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
More info you can find on &lt;a href="http://helicontech.blogspot.com/2009/03/guide-how-to-enable-modgzip-compression.html"&gt;our blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-7373045215488100960?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/7373045215488100960/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=7373045215488100960" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7373045215488100960?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7373045215488100960?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/53WT8VakUWA/modcache-and-modgzip-preset.html" title="mod_cache and mod_gzip preset" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/03/modcache-and-modgzip-preset.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4MQXY7eyp7ImA9WxVUGU8.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-2162178306159943712</id><published>2009-03-24T21:58:00.001+02:00</published><updated>2009-03-24T22:03:00.803+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-24T22:03:00.803+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mod_setenvif" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Multiplication table with mod_setenvif</title><content type="html">Hello everybody!&lt;br /&gt;
We've already &lt;a href="http://helicontech.blogspot.com/2009/03/helicon-ape-11015-what-risen-minor.html"&gt;told about new features&lt;/a&gt; in Ape. One of them is &lt;a href="http://www.helicontech.com/ape/doc/mod_setenvif.htm"&gt;mod_setenvif extended expressions syntax&lt;/a&gt;. It allows you to write powerful conditions and unite their results with other modules. It allows you to get another approach in server configuring. The approach based on environment variables is similar to primitive programming.&lt;br /&gt;
I'm going to show you a little joke: multiplication table based on mod_setenfiv. The code below looks like a program! Of course not so powerful because we weren't going to create programming language and so on. More than our primary goal is compatibility with Apache mod_setenvif. But we didn't make backward compatibility.&lt;br /&gt;
So let's look on the code:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class="apache"&gt;# INPUT
SetEnvIf query_string a=(\d+)&amp;amp;b=(\d+) a=$1 b=$2

# COMPUTE

# generic situations
SetEnvIf a 1 result=%{b}e
SetEnvIf b 1 result=%{a}e
SetEnvIf (a 0) or (b 0) result=0

# in general case prepare the results like associated array
SetEnvIf a 2  2=4   3=6   4=8   5=10  6=12  7=14  8=16  9=18
SetEnvIf a 3  2=6   3=9   4=12  5=15  6=18  7=21  8=24  9=27
SetEnvIf a 4  2=8   3=12  4=16  5=20  6=24  7=28  8=32  9=36
SetEnvIf a 5  2=10  3=15  4=20  5=25  6=30  7=35  8=40  9=45
SetEnvIf a 6  2=12  3=18  4=24  5=30  6=36  7=42  8=48  9=54
SetEnvIf a 7  2=14  3=21  4=28  5=35  6=42  7=49  8=56  9=53
SetEnvIf a 8  2=16  3=24  4=32  5=40  6=48  7=56  8=64  9=72
SetEnvIf a 9  2=18  3=27  4=36  5=45  6=54  7=63  8=72  9=81

# get result from associated array using 'b' as key
SetEnvIf (result !.) and (b ([2-9]+)) result=%{$1}e

# error case: result hasn't been computed yet
SetEnvIf result !. error

# OUTPUT
Header onsuccess set RESULT %{result}e env=!error
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
To view it in action you should save the code in some .htaccess file and make a request like &lt;strong&gt;/?a=3&amp;amp;b=4&lt;/strong&gt;. Also you need to see response HTTP headers to see the result.&lt;br /&gt;
&lt;br /&gt;
P.S.: Our primary goal in Ape is flexibility in configuration. That is the main reason urged us to extend mod_setenvif syntax.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-2162178306159943712?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/2162178306159943712/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=2162178306159943712" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/2162178306159943712?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/2162178306159943712?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/BO8Lg00UwAY/multiplication-table-with-modsetenvif.html" title="Multiplication table with mod_setenvif" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/03/multiplication-table-with-modsetenvif.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cBQH0_eCp7ImA9WxVUGU8.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-3422986110686378583</id><published>2009-02-15T15:51:00.003+02:00</published><updated>2009-03-24T22:04:11.340+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-24T22:04:11.340+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Exploration" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Database drivers in Ruby</title><content type="html">Hello!&lt;br /&gt;
Recently I’ve faced with a problem during programming on Ruby on Rails platform.&lt;br /&gt;
I’m a newbie and just tried to follow the lessons described in my book. I had to make database migration using&lt;br /&gt;
&lt;i&gt;rake db:migrate&lt;/i&gt; command. I’ve written a migration class before the action according to the book example:&lt;br /&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;class CreatePhotos &amp;lt; ActiveRecord::Migration
    def self.up
        create_table :cars do |photo|
            photo.column "model", :string
        end
    end

    def self.down
        drop_table :cars
    end
end
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
But unfortunately “&lt;u&gt;undefined method `each' for #&amp;lt;Mysql:0x3874b20&amp;gt;”&lt;/u&gt; message has appeared after the command execution. Also ruby had crashed occasionally.&lt;br /&gt;
After little exploration I’ve got the reason of the problem. Ruby MySQL driver which I’ve installed using &lt;i&gt;gem install mysql&lt;/i&gt; command didn’t correspond to my MySQL server version. Actually I’ve installed &lt;b&gt;MySQL v5.1.31&lt;/b&gt; and &lt;b&gt;mysql gem v2.7.3&lt;/b&gt;. After server version downgrading down to &lt;b&gt;5.0&lt;/b&gt; I’ve got it working!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-3422986110686378583?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/3422986110686378583/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=3422986110686378583" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3422986110686378583?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3422986110686378583?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/utmH8p3v1tA/database-drivers-in-ruby.html" title="Database drivers in Ruby" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/02/database-drivers-in-ruby.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0INR3czeip7ImA9WxVQFE0.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-7604850061326870645</id><published>2009-01-31T15:46:00.001+02:00</published><updated>2009-01-31T15:46:36.982+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-31T15:46:36.982+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="HeliconTech" /><title>HeliconTech in Las Vegas!</title><content type="html">&lt;p&gt;Dear Friends,&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="event-logo" border="0" alt="event-logo" src="http://lh5.ggpht.com/_PemOVzX4DfU/SYRWK63pHWI/AAAAAAAAAfQ/vwE5J607EOM/event-logo%5B12%5D.png?imgmax=800" width="240" height="141" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Parallels&lt;/strong&gt; company holds a summit in &lt;u&gt;Las Vegas&lt;/u&gt; at &lt;strong&gt;2-4&lt;/strong&gt; of &lt;strong&gt;February&lt;/strong&gt; and I’m glad to tell you that our company &lt;strong&gt;HeliconTech&lt;/strong&gt; takes part in this event!&lt;/p&gt;  &lt;p&gt;Please refer to &lt;a title="http://www.parallels.com/summit" href="http://www.parallels.com/summit"&gt;http://www.parallels.com/summit&lt;/a&gt; to get more information about the event.&lt;/p&gt;  &lt;p&gt;We will offer our software, especial &lt;strong&gt;Helicon Ape&lt;/strong&gt; – technology peacemaker. You can get free DVD with new versions of all our products.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_PemOVzX4DfU/SYRWMp0Zl_I/AAAAAAAAAfU/hXaENfX53mo/s1600-h/booklet%5B10%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="booklet" border="0" alt="booklet" src="http://lh6.ggpht.com/_PemOVzX4DfU/SYRWO_hOnqI/AAAAAAAAAfY/kVFQHGPi7nA/booklet_thumb%5B7%5D.png?imgmax=800" width="237" height="320" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Welcome to Las Vegas! ;-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-7604850061326870645?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/7604850061326870645/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=7604850061326870645" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7604850061326870645?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/7604850061326870645?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/TQt9UDpt78I/helicontech-in-las-vegas.html" title="HeliconTech in Las Vegas!" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/01/helicontech-in-las-vegas.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMMQ3s-fyp7ImA9WxVRGEU.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-193313487326117332</id><published>2009-01-25T14:36:00.001+02:00</published><updated>2009-01-25T14:44:42.557+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-25T14:44:42.557+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mod_gzip" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>mod_gzip in two strings</title><content type="html">&lt;p&gt;Good day dear &lt;strong&gt;Helicon Ape&lt;/strong&gt; users!&lt;/p&gt;  &lt;p&gt;I’m going to show easy way how to enable &lt;strong&gt;mod_gzip&lt;/strong&gt;. Upcoming articles should give you more extended information, but now lets start from a little.&lt;/p&gt;  &lt;p&gt;Here is our goal: to enable &lt;strong&gt;mod_gzip&lt;/strong&gt; for text based content ONLY. To simplify I will accept text files if their MIME starts with&lt;em&gt; &lt;/em&gt;&lt;u&gt;‘text/’&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Please run Helicon Ape Manager (&lt;em&gt;Start –&amp;gt; &lt;/em&gt;&lt;em&gt;All programs –&amp;gt; Helicon –&amp;gt; Manager&lt;/em&gt;)&lt;/p&gt; Select ‘IIS Web Sites’ to edit the server configuration. The editor for &lt;u&gt;httpd.conf&lt;/u&gt; file is opened. Now please uncomment this line:   &lt;pre&gt;&lt;code&gt;&lt;br /&gt;LoadModule gzip_module		modules/mod_gzip.so&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This action points to &lt;strong&gt;Ape &lt;/strong&gt;that &lt;strong&gt;mod_gzip &lt;/strong&gt;module should be loaded. Then please select your site (I selected ‘Default Web Site’). The editor for the root .htaccess file is opened. Now please write these strings: &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;mod_gzip_on yes&lt;br /&gt;mod_gzip_item_include mime ^text/.*$&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Save the file and THAT’S ALL! ;-) To test whether &lt;strong&gt;mod_gzip &lt;/strong&gt;is enabled and working well I used &lt;strong&gt;WFetch&lt;/strong&gt; tool from Microsoft IIS Resources. Here is WFetch output: &lt;a target="_blank" href="http://lh6.ggpht.com/_PemOVzX4DfU/SXxeKOghKVI/AAAAAAAAAeI/7_qxJ_VnH8s/s1600-h/2%5B29%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WFetch output" border="0" alt="WFetch output" src="http://lh6.ggpht.com/_PemOVzX4DfU/SXxeLWKA2eI/AAAAAAAAAeM/EYpUGwpFpPo/2_thumb%5B25%5D.png?imgmax=800" width="442" height="480" /&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-193313487326117332?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/193313487326117332/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=193313487326117332" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/193313487326117332?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/193313487326117332?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/2kvlmgiixk4/modgzip-in-two-strings.html" title="mod_gzip in two strings" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/01/modgzip-in-two-strings.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYAR309eyp7ImA9WxVRF0Q.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-4595097866597279646</id><published>2009-01-23T15:10:00.003+02:00</published><updated>2009-01-24T13:22:26.363+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T13:22:26.363+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mod_deflate" /><category scheme="http://www.blogger.com/atom/ns#" term="mod_gzip" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Introduction to mod_gzip</title><content type="html">&lt;p&gt;Every day millions of web-servers around the world receive billions of bytes of network traffic. Each year the speed of Internet connections increases. Hosting providers offer perfect tariffs. It seems the mankind is going to forget about traffic saving problem and sink it to oblivion. But even with HDD volume growth the users still haven&amp;#8217;t forgotten about archivers. The same thought can be applied to web traffic. You can say: &amp;#8220;I have 10 Mbit unlimited connection and the problem with traffic saving isn&amp;#8217;t mine&amp;#8221;.  Yeah, 10 Mbit is very well. But what will you say if you get to know that it is possible to save more than &lt;strong&gt;60% &lt;/strong&gt;of the traffic? First of all lots of users have less than 10 Mbit connection. Indeed the growing popularity of mobile devices selects a main role for the traffic saving. A lot of PDA, cellphone and smartphone users would say &amp;#8216;thank you&amp;#8217; if your web-server is saving their traffic and money. To sum up I&amp;#8217;d like to say that traffic saving is timely and important process in modern web-server technologies.&lt;/p&gt;&lt;p&gt;Until recently HeliconTech had one specialized solution for content compression - &lt;a href="http://www.helicontech.com/HeliconJet/"&gt;HeliconJet&lt;/a&gt;. We have decided to include its functionality to our new product - &lt;a href="http://www.helicontech.com/ape/"&gt;Helicon Ape&lt;/a&gt; , accounting for its importance. So far as &lt;strong&gt;Ape&lt;/strong&gt; stands for &lt;strong&gt;AP&lt;/strong&gt;ache &lt;strong&gt;E&lt;/strong&gt;mulation, it&amp;#8217;s very important not to invent new syntax  nd directives but use existing Apache assets.&lt;/p&gt;&lt;p&gt;There are 2 popular compression modules - conventional &lt;strong&gt;mod_deflate&lt;/strong&gt; and &lt;strong&gt;mod_gzip&lt;/strong&gt;. The last one is written by third party developer and is not supplied with Apache. We have decided to implement both modules because users are using them to the equal degree. At the moment only basic&lt;br /&gt;&lt;strong&gt;mod_gzip&lt;/strong&gt; functionality is realized but we are planing to extend it in the nearest future. Technically &lt;strong&gt;Ape&lt;/strong&gt; will have one compression module which will be able to support both &lt;strong&gt;mod_gzip&lt;/strong&gt; and &lt;strong&gt;mod_deflate&lt;/strong&gt; syntaxes. Our primary goal is to give you an ability to easily use existing Apache configuration without any changes.&lt;/p&gt;&lt;p&gt;Let&amp;#8217;s have a look at basic content compression principles and  &lt;strong&gt;mod_gzip&lt;/strong&gt; operation. This module applies &lt;a href="http://www.ietf.org/rfc/rfc1952.txt"&gt;GZIP format&lt;/a&gt; which uses &lt;a href="http://www.ietf.org/rfc/rfc1951.txt"&gt;Deflate compression algorithm&lt;/a&gt;. The module is based on .NET version of the popular library &lt;strong&gt;ZLib&lt;/strong&gt;. &lt;em&gt;Please note, Helicon Ape is written in managed code only!&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Web-client (browser) exchanges technical information (so-called HTTP headers) with web-server. These headers contain important information helping client and server get mutual understanding. Client can point to accessible data type and needed content. Taking into account client abilities the server prepares and sends the content. After that technical information helps client understand what to do with the server response.&lt;/p&gt;&lt;p&gt;But we are not gonna dive deep into HTTP protocol subtleties as there are tons of info on this topic in the Internet. Lets recur to &lt;strong&gt;mod_gzip&lt;/strong&gt; . General scheme of its operation is given below:&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PemOVzX4DfU/SXmrmPIhPwI/AAAAAAAAAcU/I9r8bms4xU8/s1600-h/scheme1.png"&gt;&lt;img style="display:block; margin: 1em; cursor:pointer; cursor:hand;width: 400px; height: 160px;" src="http://1.bp.blogspot.com/_PemOVzX4DfU/SXmrmPIhPwI/AAAAAAAAAcU/I9r8bms4xU8/s400/scheme1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5294451510336372482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;As you can see not only server takes part in considering whether to compress content or not. It is easy to understand &amp;#8217;cause if browser isn&amp;#8217;t capable of uncompressing GZIP, then all &lt;strong&gt;mod_gzip &lt;/strong&gt;operation will be senseless and the user will get rubbish. Web-client must send &lt;strong&gt;&lt;em&gt;Accept-Encoding&lt;/em&gt;&lt;/strong&gt; header with gzip, x-gzip or deflate value to let &lt;strong&gt;mod_gzip&lt;/strong&gt; know whether the client supports compression.&lt;/p&gt;&lt;p&gt;In its turn, if the module makes a decision to compress content, it sets &lt;strong&gt;&lt;em&gt;Content-Encoding&lt;/em&gt;&lt;/strong&gt;: gzip header to inform the client that GZIP uncompression must be used. So, each chain on the scheme above plays&lt;br /&gt;important role.&lt;/p&gt;&lt;p&gt;But to better understand &lt;strong&gt;mod_gzip&lt;/strong&gt; logic, please have a look at this flowchart:&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PemOVzX4DfU/SXmrmSp8jFI/AAAAAAAAAcc/3li4DweKBgw/s1600-h/scheme2.png"&gt;&lt;img style="display:block; margin:1em;cursor:pointer; cursor:hand;width: 262px; height: 400px;" src="http://1.bp.blogspot.com/_PemOVzX4DfU/SXmrmSp8jFI/AAAAAAAAAcc/3li4DweKBgw/s400/scheme2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5294451511281880146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;The sequence is used by mod_gzip to make compress/not compress decision. We&amp;#8217;ll now give a brief explanatin of each stage:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;When request comes to the server &lt;strong&gt;mod_gzip&lt;/strong&gt; (if it&amp;#8217;s ON) can start its &amp;#8220;dirty&amp;#8221;&lt;br /&gt;work.&lt;/li&gt;&lt;li&gt;Firstly, the module defines whether the content is already compressed. If it is, &lt;strong&gt;mod_gzip&lt;/strong&gt;&lt;br /&gt;leaves things as is.&lt;/li&gt;&lt;li&gt;If it&amp;#8217;s not, the module analyses request headers sent by the client. &lt;strong&gt;mod_gzip&lt;/strong&gt;&lt;br /&gt;can move on only if there&amp;#8217;s &lt;strong&gt;&lt;em&gt;Accept-Encoding&lt;/em&gt;&lt;/strong&gt; header with gzip, x-gzip&lt;br /&gt;or deflate value.&lt;/li&gt;&lt;li&gt;On the next step the module performs check set by&lt;br /&gt;specific directives inside configuration files. Based on results of these&lt;br /&gt;checks decision about content compressino is made.&lt;/li&gt;&lt;li&gt;If it&amp;#8217;s necessary to use GZIP, the module will SET &lt;em&gt;&lt;strong&gt;Content-Encoding&lt;/strong&gt;&lt;/em&gt;: gzip header, &amp;#8217;cause&lt;br /&gt;otherwise the client may fail to process server response correctly.&lt;/li&gt;&lt;li&gt;Besides, there&amp;#8217;s a special&lt;em&gt;&lt;strong&gt; Vary&lt;/strong&gt;&lt;/em&gt; header in which mod_gzip specifies what its actions depend on&lt;br /&gt;(&lt;strong&gt;&lt;em&gt;Vary&lt;/em&gt;&lt;/strong&gt;: Accept-Encoding). This header is used for caching, so it&amp;#8217;s detailed description will appear in the&lt;br /&gt;upcoming articles.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It&amp;#8217;s possible that in next versions will have slightly different logic, but we&amp;#8217;ll surely inform you about that.&lt;/p&gt;&lt;h4&gt;Resume&lt;/h4&gt;&lt;p&gt;This article is just a brief introduction to &lt;strong&gt;Helicon Ape &lt;/strong&gt;&lt;strong&gt;mod_gzip&lt;/strong&gt; module.&lt;br /&gt;We are thinking of writing much more material on that and other topics to help you use our little agile monkey (&lt;strong&gt;Ape&lt;/strong&gt;) easily and efficiently.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Best wishes,&lt;br /&gt;HeliconTech Team&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Originally is posted on &lt;a href="http://www.helicontech.blogspot.com/"&gt;HeliconTech official web-log&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-4595097866597279646?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/4595097866597279646/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=4595097866597279646" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4595097866597279646?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4595097866597279646?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/ky-2C36tKkw/introduction-in-modgzip.html" title="Introduction to mod_gzip" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_PemOVzX4DfU/SXmrmPIhPwI/AAAAAAAAAcU/I9r8bms4xU8/s72-c/scheme1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/01/introduction-in-modgzip.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYFQ3Y6fyp7ImA9WxVSGUo.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-4662819004017900309</id><published>2009-01-15T00:53:00.004+02:00</published><updated>2009-01-15T01:01:52.817+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-15T01:01:52.817+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="HeliconTech" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Helicon Ape will be released soon...</title><content type="html">Hi there! &lt;a href = "http://www.helicontech.com/ape" /&gt;Helicon Ape&lt;/a&gt; has already got down from palm and he is going to see you soon!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PemOVzX4DfU/SW5uzkI07JI/AAAAAAAAAa0/eYAyziONAuw/s1600-h/ape-fun.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_PemOVzX4DfU/SW5uzkI07JI/AAAAAAAAAa0/eYAyziONAuw/s400/ape-fun.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5291288444359994514" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-4662819004017900309?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/4662819004017900309/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=4662819004017900309" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4662819004017900309?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/4662819004017900309?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/JTMPGSSB6E0/helicon-ape-will-be-released-soon.html" title="Helicon Ape will be released soon..." /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_PemOVzX4DfU/SW5uzkI07JI/AAAAAAAAAa0/eYAyziONAuw/s72-c/ape-fun.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/01/helicon-ape-will-be-released-soon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMNQHk_eSp7ImA9WxVRF0Q.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-3773796109017856338</id><published>2009-01-10T16:14:00.004+02:00</published><updated>2009-01-24T13:28:11.741+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T13:28:11.741+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Stuff" /><title>Perfect tool for guitar fans!</title><content type="html">Hi,&lt;br/&gt;&lt;br /&gt;Our developer, &lt;a title="Ruslan Keba" href="http://rukeba.com" target="_blank"&gt;Ruslan Keba&lt;/a&gt;, has developed very nice tool for guitar fans. It is web-based chords fingering which should help you easily find needed chord.&lt;br/&gt;&lt;br /&gt;Here is the tool view:&lt;br/&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PemOVzX4DfU/SWiwOURne7I/AAAAAAAAAas/8jSUiwVob0o/s1600-h/123.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 358px;" src="http://3.bp.blogspot.com/_PemOVzX4DfU/SWiwOURne7I/AAAAAAAAAas/8jSUiwVob0o/s400/123.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5289671522353904562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;The tool avaliable here: &lt;a title="http://rukeba.com/chords/" href="http://rukeba.com/chords/" target="_blank"&gt;http://rukeba.com/chords/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-3773796109017856338?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/3773796109017856338/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=3773796109017856338" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3773796109017856338?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3773796109017856338?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/gkhHntD0lcM/perfect-tool-for-guitar-fans.html" title="Perfect tool for guitar fans!" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_PemOVzX4DfU/SWiwOURne7I/AAAAAAAAAas/8jSUiwVob0o/s72-c/123.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/01/perfect-tool-for-guitar-fans.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYMRnw9cCp7ImA9WxVRF0Q.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-1623343364107526003</id><published>2009-01-06T18:27:00.005+02:00</published><updated>2009-01-24T13:23:07.268+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T13:23:07.268+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mod_gzip" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Compression levels in mod_gzip</title><content type="html">&lt;div&gt;I develop &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;mod_gzip&lt;/span&gt; module for &lt;a href="http://www.helicontech.com/ape"&gt;Helicon Ape&lt;/a&gt; product. Can say to you approximately 100% is prepared already. I'm testing it now and writing the documentation.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;mod_gzip &lt;/span&gt;uses ZLib for GZIP compression and I've implemented &lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;mod_gzip_compression_level&lt;/span&gt; directive to configure compression level. You have a range between 0 and 9 (it comes from ZLib). The levels are different what you can see on the picture below:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://nqg4da.bay.livefilestore.com/y1pSOxavgl58XUjAIHDqHQOAyN1RIphkiCERyWP7zfdZdVNAP8OuHTfEdnq8TxlsALxOL7g0w4Qi3Q2mGCyC7KJ8A/gzip_levels.png" style="text-decoration: none;"&gt;&lt;img src="http://4.bp.blogspot.com/_PemOVzX4DfU/SWOLCg7oWcI/AAAAAAAAAak/fdlQxTGrK_g/s400/gzip_levels.png" style="text-decoration: underline;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 109px; " border="0" alt="" id="BLOGGER_PHOTO_ID_5288223262779136450" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope I will write a few articles and blog posts about mod_gzip in Helicon Ape.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;P.S.: Dear customers I wait your suggestions and wishes for mod_gzip! You are free to use this blog.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-1623343364107526003?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/1623343364107526003/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=1623343364107526003" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/1623343364107526003?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/1623343364107526003?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/ipMIXoZI5-g/compression-levels-in-modgzip.html" title="Compression levels in mod_gzip" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_PemOVzX4DfU/SWOLCg7oWcI/AAAAAAAAAak/fdlQxTGrK_g/s72-c/gzip_levels.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2009/01/compression-levels-in-modgzip.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUEQn85fSp7ImA9WxVRF0Q.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-1235458724307429911</id><published>2008-12-27T21:30:00.011+02:00</published><updated>2009-01-24T13:23:23.125+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T13:23:23.125+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mod_headers" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Helicon Ape hacks: Pretend as Apache</title><content type="html">Hi,&lt;p&gt;I'm going to show you a simple way how to pretend your IIS web-server as Apache. The way based on &lt;a href="http://www.helicontech.com/ape/"&gt;Helicon Ape&lt;/a&gt; tool. I will remind you Helicon Ape is &lt;strong&gt;Ap&lt;/strong&gt;ache &lt;strong&gt;e&lt;/strong&gt;mulator under IIS execution environment. It emulates some Apache modules and HeliconTech is going to extend Ape functionality in the future.&lt;/p&gt;&lt;p&gt;Now we need only one Helicon Ape module - &lt;strong&gt;&lt;a href="http://www.helicontech.com/ape/doc/mod_headers.htm"&gt;mod_headers&lt;/a&gt;&lt;/strong&gt;. It helps you to manage request and response HTTP headers. But you have to know, there are a few technical differences between mod_headers for Apache and for Helicon Ape. Apache doesn't allow to modify some basic headers and the way described here isn't appropriate for.&lt;/p&gt;&lt;p&gt;Ok. Let's do it.&lt;/p&gt;&lt;p&gt;I told  supra I'm going to modify HTTP headers. If we want pretend a server we have to modify response headers. I've requested &lt;u&gt;http://localhost:80/index.html&lt;/u&gt; under IIS7 and I've got these response headers:&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 277px; height: 153px;" src="http://2.bp.blogspot.com/_PemOVzX4DfU/SVa4Y_m6LzI/AAAAAAAAAY8/UiBIzlvcHpw/s400/1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5284613952296857394" /&gt;The same request under Apache gives me these headers:&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 276px; height: 151px;" src="http://1.bp.blogspot.com/_PemOVzX4DfU/SVa4ZFXASTI/AAAAAAAAAZE/awdaGwPgfE4/s400/2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5284613953840761138" /&gt;You can see &lt;u&gt;Server&lt;/u&gt; and &lt;u&gt;X-Powered-By&lt;/u&gt; headers are giving my IIS server away. What can we do for that? I think we have to remove X-Powered-By header and set for Server header a new value.&lt;/p&gt;&lt;p&gt;Here is the rule for .htaccess file which sets &lt;u&gt;Server&lt;/u&gt; header&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;Header set Server "Apache/2.2.9 (Win32) PHP/5.2.6"&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;To remove X-Powered-By we could use this rule:&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;Header unset X-Powered-By&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But unfortunately it's not possible for X-Powered-By because the thing which sets it operates after Helicon Ape. You can remove the header manually in IIS Manager:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 263px;" src="http://4.bp.blogspot.com/_PemOVzX4DfU/SVeg0j0IzEI/AAAAAAAAAZM/lPl0KkEfnP4/s400/3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5284869512570129474" /&gt;&lt;br /&gt;Finally the response should looks like:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 276px; height: 135px;" src="http://3.bp.blogspot.com/_PemOVzX4DfU/SVeh8GoNehI/AAAAAAAAAZU/u_4lqsF7yhA/s400/4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5284870741686057490" /&gt;and this is what I wanted.&lt;/p&gt;&lt;p&gt;P.S.: This notice hasn't security context, because there are a lot of smart hacker tools, e.g. nmap,  is able to tell much more about your web-server. I just wanted to show how it possible to use Helicon Ape.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-1235458724307429911?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/1235458724307429911/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=1235458724307429911" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/1235458724307429911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/1235458724307429911?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/U91GXhUkfG0/helicon-ape-hacks-pretend-as-apache.html" title="Helicon Ape hacks: Pretend as Apache" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_PemOVzX4DfU/SVa4Y_m6LzI/AAAAAAAAAY8/UiBIzlvcHpw/s72-c/1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2008/12/helicon-ape-hacks-pretend-as-apache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIESXw-fSp7ImA9WxVRF0Q.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-3435970141550541782</id><published>2008-12-27T19:19:00.004+02:00</published><updated>2009-01-24T13:28:28.255+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T13:28:28.255+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Stuff" /><title>No chance to survive ;)</title><content type="html">&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PemOVzX4DfU/SVZkcK8rFPI/AAAAAAAAAY0/jkkNG8t__VU/s1600-h/123.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 293px;" src="http://4.bp.blogspot.com/_PemOVzX4DfU/SVZkcK8rFPI/AAAAAAAAAY0/jkkNG8t__VU/s400/123.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5284521647903806706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Screen shot from my CS battle ;)  You can see me on the left.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-3435970141550541782?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/3435970141550541782/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=3435970141550541782" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3435970141550541782?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3435970141550541782?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/N2VF3skH_H0/no-chance-to-survive.html" title="No chance to survive ;)" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_PemOVzX4DfU/SVZkcK8rFPI/AAAAAAAAAY0/jkkNG8t__VU/s72-c/123.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.develworld.net/2008/12/no-chance-to-survive.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUCRXw9fCp7ImA9WxVRF0Q.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-3861430135932790536</id><published>2008-12-19T13:39:00.008+02:00</published><updated>2009-01-24T13:24:24.264+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T13:24:24.264+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ISAPI_Rewrite" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>The same file name with another extension</title><content type="html">Hi,&lt;br /&gt;These simple rules seek for FileName.aspx if you request FileName.shtml and if .aspx file will be found - you get it, otherwise you get .shtml file :&lt;br /&gt;&lt;pre&gt;&lt;code&gt;RewriteCond %{REQUEST_FILENAME} ^(.*)\.shtml$ [NC]&lt;br /&gt;RewriteCond %1\.aspx -f [NC]&lt;br /&gt;RewriteRule ^(.*)\.shtml$ $1.aspx [NC,L]&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-3861430135932790536?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/3861430135932790536/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=3861430135932790536" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3861430135932790536?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/3861430135932790536?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/BrDFXaCcLoY/same-file-name-with-another-extension.html" title="The same file name with another extension" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.develworld.net/2008/12/same-file-name-with-another-extension.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQEQngzfip7ImA9WxVRF0Q.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-599454627350858361</id><published>2008-12-18T21:11:00.007+02:00</published><updated>2009-01-24T13:25:03.686+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T13:25:03.686+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ISAPI_Rewrite" /><category scheme="http://www.blogger.com/atom/ns#" term="Helicon Ape" /><title>Simple explanation for ISAPI_Rewrite users</title><content type="html">As far as some ISAPI_Rewrite users don't understand the basic conception they occasionally ask strange questions on support.&lt;br /&gt;I've decided to write a simple notice which should make an explanation for ISAPI_Rewrite users.&lt;br /&gt;&lt;br /&gt;Rules allow to link a real request with request which will be seen by user.&lt;br /&gt;You can use regular expressions and some conditions to get more flexibility.&lt;br /&gt;If you want to use the request like /destination-url.html, &lt;br /&gt;ISAPI_Rewrite should know what real URL corresponds to it. And it should be &lt;br /&gt;pointed in the rules.&lt;br /&gt;&lt;br /&gt;There are many ways to write rules and each of them depends on specific situation.&lt;br /&gt;For example if you have these pages:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/index.php?q=444 =&gt; /page.html&lt;br /&gt;/index.php?q=345 =&gt; /another-page.html&lt;br /&gt;/index.php?q=999 =&gt; /about.html&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You would write these rules:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;RewriteRule     ^/page\.html$         /index.php?q=444 [NC,L]&lt;br /&gt;RewriteRule     ^/another-page\.html$     /index.php?q=345 [NC,L]&lt;br /&gt;RewriteRule     ^/about\.html$         /index.php?q=999 [NC,L]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In addition it is advisable to use map-files feature there.&lt;br /&gt;In this case you are creating the text document (e.g. map.txt) with the content:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;page 444&lt;br /&gt;another-page 345&lt;br /&gt;about 999&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And you are writing the following rules in .htaccess:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;# Get access to map-file using map variable&lt;br /&gt;RewriteMap map txt:map.txt&lt;br /&gt;&lt;br /&gt;# Use internal function tolower for getting string&lt;br /&gt;# in lower case&lt;br /&gt;RewriteMap lower int:tolower&lt;br /&gt;&lt;br /&gt;# Get requested file&lt;br /&gt;RewriteCond %{REQUEST_URI} ^/([^/.]+)\.html$ [NC]&lt;br /&gt;&lt;br /&gt;# Seek in map-file&lt;br /&gt;RewriteCond ${map:${lower:%1}|NOT_FOUND} !NOT_FOUND&lt;br /&gt;&lt;br /&gt;# Make rewriting if the record was found&lt;br /&gt;RewriteRule .? /index.php?q=${map:${lower:%1}} [NC,L]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To write the rules I have to know what SE-friendly URLs&lt;br /&gt;you want to use and what real URLs should correspond to them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-599454627350858361?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/599454627350858361/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=599454627350858361" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/599454627350858361?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/599454627350858361?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/yHd-XUHE2po/simple-explanation-for-isapirewrite.html" title="Simple explanation for ISAPI_Rewrite users" /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2008/12/simple-explanation-for-isapirewrite.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQAR3s-fSp7ImA9WxRaFUQ.&quot;"><id>tag:blogger.com,1999:blog-3383512760442123514.post-743662192952197096</id><published>2008-12-18T11:29:00.002+02:00</published><updated>2008-12-18T11:42:26.555+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-18T11:42:26.555+02:00</app:edited><title>Little bit jokes about programming languages...</title><content type="html">Hi,&lt;br /&gt;I just found a couple of funny articles about programming languages.&lt;br /&gt;Please find them here:&lt;br /&gt;&lt;a href="http://www.cs.caltech.edu/~mvanier/hacking/rants/cars.html"&gt;If programming languages were cars...&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.aegisub.net/2008/12/if-programming-languages-were-religions.html"&gt;If programming languages were religions...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3383512760442123514-743662192952197096?l=www.develworld.net' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.develworld.net/feeds/743662192952197096/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3383512760442123514&amp;postID=743662192952197096" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/743662192952197096?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3383512760442123514/posts/default/743662192952197096?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/develworld/~3/j10u7GzMLC4/little-bit-jokes-about-programming.html" title="Little bit jokes about programming languages..." /><author><name>Slava</name><uri>http://www.blogger.com/profile/04288572256440129026</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06718869905850969714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.develworld.net/2008/12/little-bit-jokes-about-programming.html</feedburner:origLink></entry></feed>
