Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Site updated at 2014-02-02 18:49:15 UTC

  • Loading branch information...
commit fc0b10d6461fcaa341bd6a1c8129e9f791beba0f 1 parent ee4b632
@imanel authored
View
4 404.html
@@ -98,7 +98,7 @@ <h1 class="entry-title">Page Not Found</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -155,7 +155,7 @@ <h1 class="entry-title">Page Not Found</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
BIN  assets/github.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  assets/rss.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  assets/twitter.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
94 atom.xml
@@ -4,7 +4,7 @@
<title><![CDATA[Imanel's blog]]></title>
<link href="http://imanel.org/atom.xml" rel="self"/>
<link href="http://imanel.org/"/>
- <updated>2013-02-03T16:25:15+01:00</updated>
+ <updated>2014-02-02T19:47:04+01:00</updated>
<id>http://imanel.org/</id>
<author>
<name><![CDATA[Bernard Potocki]]></name>
@@ -18,15 +18,15 @@
<link href="http://imanel.org/blog/2012/12/moving-forward-with-websockets/"/>
<updated>2012-12-20T00:00:00+01:00</updated>
<id>http://imanel.org/blog/2012/12/moving-forward-with-websockets</id>
- <content type="html"><![CDATA[<p>Two years ago I created <a href="https://rubygems.org/gems/libwebsocket">LibWebSocket</a> - gem designed to abstract complicated WebSocket API and make it easy to use. During this time a lot things happened - several big gems started using LibWebSocket(like Selenium-Webdriver and Pusher), and it was downloaded nearly 1,5 million times. A lot changed in WebSocket world itself - couple drafts passed, specification <a href="http://datatracker.ietf.org/doc/rfc6455/?include_text=1">was standardized</a> and most browsers implemented <a href="http://caniuse.com/websockets">native support</a> for WS protocol.</p>
+ <content type="html"><![CDATA[<p>Two years ago I created <a href="https://rubygems.org/gems/libwebsocket">LibWebSocket</a> &ndash; gem designed to abstract complicated WebSocket API and make it easy to use. During this time a lot things happened &ndash; several big gems started using LibWebSocket(like Selenium-Webdriver and Pusher), and it was downloaded nearly 1,5 million times. A lot changed in WebSocket world itself &ndash; couple drafts passed, specification <a href="http://datatracker.ietf.org/doc/rfc6455/?include_text=1">was standardized</a> and most browsers implemented <a href="http://caniuse.com/websockets">native support</a> for WS protocol.</p>
-<p>But time passes and old solutions needs updates. Unfortunately, because big changes in specification it&#8217;s impossible to keep LibWebSocket up to date - mostly because of new features that are incompatible with some design decisions made during creation of LibWebSocket. Because of that I decided that best option is to rewrite it from scratch, with new standards in mind. As a result I would like to announce new gem: <a href="https://github.com/imanel/websocket-ruby">WebSocket-Ruby</a>.</p>
+<p>But time passes and old solutions needs updates. Unfortunately, because big changes in specification it&rsquo;s impossible to keep LibWebSocket up to date &ndash; mostly because of new features that are incompatible with some design decisions made during creation of LibWebSocket. Because of that I decided that best option is to rewrite it from scratch, with new standards in mind. As a result I would like to announce new gem: <a href="https://github.com/imanel/websocket-ruby">WebSocket-Ruby</a>.</p>
-<p>Most of you will ask &#8220;why we need another WebSocket implementation?&#8221;. That is great question, and let me answer it before moving forward. Currently we have multiple servers and maybe one or two clients for WebSocket. Each of them implements standard by itself, which results in multiple bugs and quirks - even most widely used EM-WebSocket have its own collection. In addition to that focusing on both server part and WebSocket API part make development a lot slower - I strongly believe that splitting responsibility to separate gems is best approach(for proof please see Rack and Thin separation).</p>
+<p>Most of you will ask &ldquo;why we need another WebSocket implementation?&rdquo;. That is great question, and let me answer it before moving forward. Currently we have multiple servers and maybe one or two clients for WebSocket. Each of them implements standard by itself, which results in multiple bugs and quirks &ndash; even most widely used EM-WebSocket have its own collection. In addition to that focusing on both server part and WebSocket API part make development a lot slower &ndash; I strongly believe that splitting responsibility to separate gems is best approach(for proof please see Rack and Thin separation).</p>
-<p>In order to make sure that this implementation is reliable I created two additional gems - WebSocket <a href="http://github.com/imanel/websocket-eventmachine-client">Client</a> and <a href="http://github.com/imanel/websocket-eventmachine-server">Server</a>. At the time of writing this article both of them have full <a href="http://autobahn.ws">Autobahn</a> compatibility and best performance from all other Ruby implementations.</p>
+<p>In order to make sure that this implementation is reliable I created two additional gems &ndash; WebSocket <a href="http://github.com/imanel/websocket-eventmachine-client">Client</a> and <a href="http://github.com/imanel/websocket-eventmachine-server">Server</a>. At the time of writing this article both of them have full <a href="http://autobahn.ws">Autobahn</a> compatibility and best performance from all other Ruby implementations.</p>
-<p>My next step is to start making pull requests for other major WebSocket clients and servers implementations - the more of them will use common implementation, the better it will be, and whole community will benefit. So if you are maintainer of such implementation, or you are willing to simply help transferring your favorite one to WebSocket-Ruby then I will gladly help.</p>
+<p>My next step is to start making pull requests for other major WebSocket clients and servers implementations &ndash; the more of them will use common implementation, the better it will be, and whole community will benefit. So if you are maintainer of such implementation, or you are willing to simply help transferring your favorite one to WebSocket-Ruby then I will gladly help.</p>
]]></content>
</entry>
@@ -35,15 +35,15 @@
<link href="http://imanel.org/blog/2012/06/how-to-change-default-search-engine-in-safari-6/"/>
<updated>2012-06-26T00:00:00+02:00</updated>
<id>http://imanel.org/blog/2012/06/how-to-change-default-search-engine-in-safari-6</id>
- <content type="html"><![CDATA[<p>When new Safari will be released plugins like <a href="http://hackemist.com/SafariOmnibar/">Safari Omnibar</a> will be obsolete - new Safari has functionality similar to Chrome Omnibox. Yet - one function is missing: option to change search provider. I&#8217;m pretty sure that a lot of us use plugins like SafariOmnibar not just to integrate Google Search with URL bar, but also to be able to use different search providers than Google, Bing and Yahoo.</p>
+ <content type="html"><![CDATA[<p>When new Safari will be released plugins like <a href="http://hackemist.com/SafariOmnibar/">Safari Omnibar</a> will be obsolete &ndash; new Safari has functionality similar to Chrome Omnibox. Yet &ndash; one function is missing: option to change search provider. I&rsquo;m pretty sure that a lot of us use plugins like SafariOmnibar not just to integrate Google Search with URL bar, but also to be able to use different search providers than Google, Bing and Yahoo.</p>
-<p>Good news: it is still be possible to use custom search. Bad news: it&#8217;s little different that earlier.</p>
+<p>Good <a href="news:">news:</a> it is still be possible to use custom search. Bad <a href="news:">news:</a> it&rsquo;s little different that earlier.</p>
-<p>If you want to integrate multiple search engines like Wiki, Youtube, Quora and many more, then I would suggest to use to <a href="https://duckduckgo.com">DuckDuckGo</a> and it&#8217;s awesome <a href="https://duckduckgo.com/bang.html">!Bang syntax</a> - not only it will allow accessing multiple search engines, but will provide much more functionality than standard Google.</p>
+<p>If you want to integrate multiple search engines like Wiki, Youtube, Quora and many more, then I would suggest to use to <a href="https://duckduckgo.com">DuckDuckGo</a> and it&rsquo;s awesome <a href="https://duckduckgo.com/bang.html">!Bang syntax</a> &ndash; not only it will allow accessing multiple search engines, but will provide much more functionality than standard Google.</p>
<h2>How to change provider to DuckDuckGo?</h2>
-<p>I know that there&#8217;s a lot of scary methods around net that will show you methods like manualy editing binary file or messing with configuration. I&#8217;m not a big fan of those - mostly because after every Safari update you will be forced to do it again. What I prefer is much cleaner way of <a href="http://help.duckduckgo.com/customer/portal/articles/255650">editing single text file in system</a>.</p>
+<p>I know that there&rsquo;s a lot of scary methods around net that will show you methods like manualy editing binary file or messing with configuration. I&rsquo;m not a big fan of those &ndash; mostly because after every Safari update you will be forced to do it again. What I prefer is much cleaner way of <a href="http://help.duckduckgo.com/customer/portal/articles/255650">editing single text file in system</a>.</p>
<p>What you will need to do is editing file /etc/hosts, which contain DNS entries, and change one of currently used search providers to DuckDuckGo server.</p>
@@ -52,15 +52,15 @@
</span></code></pre></td></tr></table></div></figure>
-<p>This will change all searches via &#8220;Search using Yahoo!&#8221; option to search via DuckDuckGo. It&#8217;s possible to change Google or Bing search to work like that, but it&#8217;s not recommended because it will prevent to access all Google/Bing functionality, when Yahoo have it&#8217;s search engine in separate subdomain so it&#8217;s non-obtrusive.</p>
+<p>This will change all searches via &ldquo;Search using Yahoo!&rdquo; option to search via DuckDuckGo. It&rsquo;s possible to change Google or Bing search to work like that, but it&rsquo;s not recommended because it will prevent to access all Google/Bing functionality, when Yahoo have it&rsquo;s search engine in separate subdomain so it&rsquo;s non-obtrusive.</p>
<h2>But I want to still use Google as main engine!</h2>
-<p>For some of you fully changing to DuckDuckGo is no-go. Because of that there&#8217;s another method - redirecting all Google Searches with !Bang syntax to DuckDuckGo(which will redirect to according search engine or page).</p>
+<p>For some of you fully changing to DuckDuckGo is no-go. Because of that there&rsquo;s another method &ndash; redirecting all Google Searches with !Bang syntax to DuckDuckGo(which will redirect to according search engine or page).</p>
-<p>In order to do so you will need to support for Greasemonkey UserScripts. There was obsolete method with SIMBL plugin for that, but currently Safari extension build on standard APIs exists - it&#8217;s called <a href="http://mac.softpedia.com/get/Internet-Utilities/NinjaKit-for-Safari.shtml">NinjaKit</a>. Please install it to gain access to all user scripts available at <a href="http://userscripts.org/">http://userscripts.org/</a>.</p>
+<p>In order to do so you will need to support for Greasemonkey UserScripts. There was obsolete method with SIMBL plugin for that, but currently Safari extension build on standard APIs exists &ndash; it&rsquo;s called <a href="http://mac.softpedia.com/get/Internet-Utilities/NinjaKit-for-Safari.shtml">NinjaKit</a>. Please install it to gain access to all user scripts available at <a href="http://userscripts.org/">http://userscripts.org/</a>.</p>
-<p>After installing NinjaKit all you need is to add simple UserScript that will detect and redirect queries staring with bang - you can find it <a href="https://gist.github.com/1817223">here</a>. From now on you can use normal Google Search, but when i.e. want to search YouTube instead just type in search bar:</p>
+<p>After installing NinjaKit all you need is to add simple UserScript that will detect and redirect queries staring with bang &ndash; you can find it <a href="https://gist.github.com/1817223">here</a>. From now on you can use normal Google Search, but when i.e. want to search YouTube instead just type in search bar:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='sh'><span class='line'>!yt funny cats
@@ -74,7 +74,7 @@
<link href="http://imanel.org/blog/2011/04/how-to-install-mysql-ruby-gem-in-os-x-snow-leopard/"/>
<updated>2011-04-04T00:00:00+02:00</updated>
<id>http://imanel.org/blog/2011/04/how-to-install-mysql-ruby-gem-in-os-x-snow-leopard</id>
- <content type="html"><![CDATA[<p>I know this was posted multiple times by other people, but this information is scattered and hard to find so I&#8217;m posting quick summary.</p>
+ <content type="html"><![CDATA[<p>I know this was posted multiple times by other people, but this information is scattered and hard to find so I&rsquo;m posting quick summary.</p>
<p>First of all you must download <a href="http://dev.mysql.com/downloads/mysql/5.1.html">MySQL binary</a>. Be aware that ruby gem will not work with version newer than 5.1, and in Snow Leopard you should use 64-bit version.</p>
@@ -91,7 +91,7 @@
</span></code></pre></td></tr></table></div></figure>
-<p>Note that if you are using rvm then you shouldn&#8217;t install it in @global gemset - bundler will not see that and will try to recompile it again. So you will need to run this command for every gemset you will be using.</p>
+<p>Note that if you are using rvm then you shouldn&rsquo;t install it in @global gemset &ndash; bundler will not see that and will try to recompile it again. So you will need to run this command for every gemset you will be using.</p>
]]></content>
</entry>
@@ -100,17 +100,17 @@
<link href="http://imanel.org/blog/2010/12/building-websocket-server-in-ruby/"/>
<updated>2010-12-05T00:00:00+01:00</updated>
<id>http://imanel.org/blog/2010/12/building-websocket-server-in-ruby</id>
- <content type="html"><![CDATA[<p><a href="http://showmetheco.de/articles/2010/11/timtow-to-build-a-websocket-server-in-perl.html">Vti&#8217;s post</a> about building WebSocket server inspired me to write another one, but this time about both server and client in Ruby.</p>
+ <content type="html"><![CDATA[<p><a href="http://showmetheco.de/articles/2010/11/timtow-to-build-a-websocket-server-in-perl.html">Vti&rsquo;s post</a> about building WebSocket server inspired me to write another one, but this time about both server and client in Ruby.</p>
-<p>Currently we have couple of great implementations of WebSocket in Ruby - <a href="http://github.com/igrigorik/em-websocket">em-websocket</a>, <a href="http://github.com/gimite/web-socket-ruby">web-socket-ruby</a> or <a href="http://rainbows.rubyforge.org/sunshowers">sunshowers</a> to name a few. And looking at each one of them I can see two things - they all are great, and they all are alone. What I mean?</p>
+<p>Currently we have couple of great implementations of WebSocket in Ruby &ndash; <a href="http://github.com/igrigorik/em-websocket">em-websocket</a>, <a href="http://github.com/gimite/web-socket-ruby">web-socket-ruby</a> or <a href="http://rainbows.rubyforge.org/sunshowers">sunshowers</a> to name a few. And looking at each one of them I can see two things &ndash; they all are great, and they all are alone. What I mean?</p>
<p><a href="http://github.com">Github</a> alone says that there are 40 projects in Ruby connected to WebSocket. Some of them are basing one on another, but there are more than 15 server implementations from scratch. Only two support both Draft 75 and Draft 76. And only one support newer drafts. Am I only one who see the problem?</p>
-<p>That&#8217;s why I built <a href="http://github.com/imanel/libwebsocket">LibWebSocket</a> library whose main purpose is to eliminate the problem of aging server implementations - wrapper around multiple drafts of WebSocket with common API that any server implementation can build against. Thank&#8217;s to that whole community will be able to gain instead of working independently. So how to get started?</p>
+<p>That&rsquo;s why I built <a href="http://github.com/imanel/libwebsocket">LibWebSocket</a> library whose main purpose is to eliminate the problem of aging server implementations &ndash; wrapper around multiple drafts of WebSocket with common API that any server implementation can build against. Thank&rsquo;s to that whole community will be able to gain instead of working independently. So how to get started?</p>
<h2>Building server</h2>
-<p>Currently most popular Ruby WebSocket server is em-websocket(I&#8217;m also using it in my <a href="http://github.com/socky">Socky</a> project) and I believe that currently it&#8217;s the best implementation. So why don&#8217;t start from building similar server which just couple of lines instead of huge library?</p>
+<p>Currently most popular Ruby WebSocket server is em-websocket(I&rsquo;m also using it in my <a href="http://github.com/socky">Socky</a> project) and I believe that currently it&rsquo;s the best implementation. So why don&rsquo;t start from building similar server which just couple of lines instead of huge library?</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -183,7 +183,7 @@
</span></code></pre></td></tr></table></div></figure>
-<p>And that&#8217;s all! Of course it&#8217;s just simplified implementation, but I think that shows what I&#8217;m talking about. No more handling events, checking version and implementing multiple drafts - it&#8217;s all inside! And together with that we can also build client:</p>
+<p>And that&rsquo;s all! Of course it&rsquo;s just simplified implementation, but I think that shows what I&rsquo;m talking about. No more handling events, checking version and implementing multiple drafts &ndash; it&rsquo;s all inside! And together with that we can also build client:</p>
<h2>Building client</h2>
@@ -314,11 +314,11 @@
<link href="http://imanel.org/blog/2010/10/socky-announcement/"/>
<updated>2010-10-09T00:00:00+02:00</updated>
<id>http://imanel.org/blog/2010/10/socky-announcement</id>
- <content type="html"><![CDATA[<p>Meet Socky - the ultimate open-source, cross-platform, secure push server solution for your web applications! Socky uses standard WebSockets where available, with graceful fallback to Flash-based component making it usable even on mobile devices running iOS, Android and other Flash-enabled browsers.</p>
+ <content type="html"><![CDATA[<p>Meet Socky &ndash; the ultimate open-source, cross-platform, secure push server solution for your web applications! Socky uses standard WebSockets where available, with graceful fallback to Flash-based component making it usable even on mobile devices running iOS, Android and other Flash-enabled browsers.</p>
-<p>Socky project consists of two independent tools - the Ruby-based push server and client-side library. Socky was developed with performance in mind - the server scales well among any number of hosts and can handle thousands of users on a single host making it perfect for things like chat, broadcasting and other real-time communication features.</p>
+<p>Socky project consists of two independent tools &ndash; the Ruby-based push server and client-side library. Socky was developed with performance in mind &ndash; the server scales well among any number of hosts and can handle thousands of users on a single host making it perfect for things like chat, broadcasting and other real-time communication features.</p>
-<p>What makes Socky different from the competing products? It&#8217;s is free of charge, doesn&#8217;t require any external servers, uses web standards where possible and has few dependencies making it the easiest, cheapest and most universal solution. Over 700 downloads during the first 4 months of development speak for themselves!</p>
+<p>What makes Socky different from the competing products? It&rsquo;s is free of charge, doesn&rsquo;t require any external servers, uses web standards where possible and has few dependencies making it the easiest, cheapest and most universal solution. Over 700 downloads during the first 4 months of development speak for themselves!</p>
<p>Key features:</p>
@@ -350,13 +350,13 @@
<link href="http://imanel.org/blog/2010/06/web-standards-in-mobile-browsers/"/>
<updated>2010-06-28T00:00:00+02:00</updated>
<id>http://imanel.org/blog/2010/06/web-standards-in-mobile-browsers</id>
- <content type="html"><![CDATA[<p>For the past few weeks I focused on developing <a href="http://github.com/socky/socky-server-ruby">Socky</a> - new WebSocket based push server for Ruby on Rails. Its main advantage was to be working well in places where there is no flash - like iPhone or iPad. It is therefore obvious that I became very sensitive to standard implementation in so called &#8220;modern browsers&#8221; - also mobile ones. So, taking the opportunity of just released iOS4, I decided to write a few words about standard support in mobile browsers.</p>
+ <content type="html"><![CDATA[<p>For the past few weeks I focused on developing <a href="http://github.com/socky/socky-server-ruby">Socky</a> &ndash; new WebSocket based push server for Ruby on Rails. Its main advantage was to be working well in places where there is no flash &ndash; like iPhone or iPad. It is therefore obvious that I became very sensitive to standard implementation in so called &ldquo;modern browsers&rdquo; &ndash; also mobile ones. So, taking the opportunity of just released iOS4, I decided to write a few words about standard support in mobile browsers.</p>
-<p>First tested was the latest iOS4 - loudly advertised as a strong HTML5 supporter. A set of rapid tests showed that the most important elements actually works flawlessly - audio and video, geolocation or SVG. Also, elements such as CSS 3 border-radius, CSS animations and reflections are working properly. But the most important feature for me, WebSockets, is missing. I don&#8217;t understand why this protocol isn&#8217;t there, when in lately released Safari 5 it wasn&#8217;t issue. So how are users of the system be able to use chat, or HTML multiplayer games? There is also no support for @font-face or Web Workers. Maybe we see in the near future?</p>
+<p>First tested was the latest iOS4 &ndash; loudly advertised as a strong HTML5 supporter. A set of rapid tests showed that the most important elements actually works flawlessly &ndash; audio and video, geolocation or SVG. Also, elements such as CSS 3 border-radius, CSS animations and reflections are working properly. But the most important feature for me, WebSockets, is missing. I don&rsquo;t understand why this protocol isn&rsquo;t there, when in lately released Safari 5 it wasn&rsquo;t issue. So how are users of the system be able to use chat, or HTML multiplayer games? There is also no support for @font-face or Web Workers. Maybe we see in the near future?</p>
-<p>The second largest mobile system is Android - I tested version 2.2(not yet available everywhere). It&#8217;s not disappointing - most of the tests passed without error. As in the iOS audio and video tags work properly, geolocation and CSS 3 too, and, moreover, does @font-face. Unfortunately, there also is no support for WebSocket (which Google Chrome has for a long time) - but fortunately, working flash eliminates this problem (thanks to <a href="http://github.com/gimite/web-socket-js">web-socket-js</a>) I was surprised by the lack of SVG support - I understand that this is a very processor aggravating technology, but lack of it is very arduous.</p>
+<p>The second largest mobile system is Android &ndash; I tested version 2.2(not yet available everywhere). It&rsquo;s not disappointing &ndash; most of the tests passed without error. As in the iOS audio and video tags work properly, geolocation and CSS 3 too, and, moreover, does @font-face. Unfortunately, there also is no support for WebSocket (which Google Chrome has for a long time) &ndash; but fortunately, working flash eliminates this problem (thanks to <a href="http://github.com/gimite/web-socket-js">web-socket-js</a>) I was surprised by the lack of SVG support &ndash; I understand that this is a very processor aggravating technology, but lack of it is very arduous.</p>
-<p>Last discussed system is a WebOS version 1.4.1 (there should be new version 1.4.5 in the next few days) - system is based entirely on HTML and CSS, so you would expect the best support for standards. Unfortunately, there is some disappointment - most of the tests pass, but from presented systems this one have highest number of unsupported technology - @font-face, WebSockets, SVG, and geolocation. Hopefully the next update will improve browser a little.</p>
+<p>Last discussed system is a WebOS version 1.4.1 (there should be new version 1.4.5 in the next few days) &ndash; system is based entirely on HTML and CSS, so you would expect the best support for standards. Unfortunately, there is some disappointment &ndash; most of the tests pass, but from presented systems this one have highest number of unsupported technology &ndash; @font-face, WebSockets, SVG, and geolocation. Hopefully the next update will improve browser a little.</p>
<p>All tests were performed using a <a href="http://www.modernizr.com">Modernizr</a>, and some of them tested manually (audio, video, WebSockets and geolocation)</p>
]]></content>
@@ -367,7 +367,7 @@
<link href="http://imanel.org/blog/2010/06/css3-in-every-browser-with-sass-and-pie/"/>
<updated>2010-06-18T00:00:00+02:00</updated>
<id>http://imanel.org/blog/2010/06/css3-in-every-browser-with-sass-and-pie</id>
- <content type="html"><![CDATA[<p>Recently, more and more popular is the use of the HTML5 and CSS3. Everyone rushed to them and this is perfectly understandable - after all, developers will be able to bet on semantic instead of doing work arounds for some browsers. But the problem is that at the moment even the &#8220;modern&#8221; browsers have problems handling some common attributes. The most common example is the border-radius, which has up to three versions - so if we want all browsers display the same rounding, we need to write this as:</p>
+ <content type="html"><![CDATA[<p>Recently, more and more popular is the use of the HTML5 and CSS3. Everyone rushed to them and this is perfectly understandable &ndash; after all, developers will be able to bet on semantic instead of doing work arounds for some browsers. But the problem is that at the moment even the &ldquo;modern&rdquo; browsers have problems handling some common attributes. The most common example is the border-radius, which has up to three versions &ndash; so if we want all browsers display the same rounding, we need to write this as:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -382,9 +382,9 @@
</span></code></pre></td></tr></table></div></figure>
-<p>And this isn&#8217;t &#8220;uniformity&#8221;, but hopefully that for some time only one of them will be needed. At the moment we need to put the whole set every time. And we often forget - as the example <a href="http://github.com">GitHub</a> who sometimes remember and sometimes not to use &#8220;border-radius.&#8221;</p>
+<p>And this isn&rsquo;t &ldquo;uniformity&rdquo;, but hopefully that for some time only one of them will be needed. At the moment we need to put the whole set every time. And we often forget &ndash; as the example <a href="http://github.com">GitHub</a> who sometimes remember and sometimes not to use &ldquo;border-radius.&rdquo;</p>
-<p>Fortunately, if you use the help such as <a href="http://sass-lang.com">SASS</a> (available for many programming languages) then the problem disappears. This framework allows us to define the &#8220;mixins&#8221; which then can be attached anywhere without the need to rewrite the same code several times (according to the <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY</a> mantra) The easiest way would be to show how:</p>
+<p>Fortunately, if you use the help such as <a href="http://sass-lang.com">SASS</a> (available for many programming languages) then the problem disappears. This framework allows us to define the &ldquo;mixins&rdquo; which then can be attached anywhere without the need to rewrite the same code several times (according to the <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY</a> mantra) The easiest way would be to show how:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -409,9 +409,9 @@
<p>Mixins themselves are not rendered, but only attached to the other classes so the end user code will be as in the first example.</p>
-<p>Some ask why not use the class instead of id - the answer is simple: the separation of HTML and CSS. Because if one day you&#8217;ll want to get rid of the rounded corners then with one is easier: to remove the entry from the appropriate id or search through all the HTML pages and remove the class?</p>
+<p>Some ask why not use the class instead of id &ndash; the answer is simple: the separation of HTML and CSS. Because if one day you&rsquo;ll want to get rid of the rounded corners then with one is easier: to remove the entry from the appropriate id or search through all the HTML pages and remove the class?</p>
-<p>There remains the problem of one browser - namely Internet Explorer. It does not support the CSS3 specification and at the moment is still very popular. Thats why there are libraries like the <a href="http://css3pie.com">PIE</a> - to facilitate this. For the above border-radius example(and many others) it require only to attach a .htc file and attribute will work well in IE6, IE7 and IE8. The specification requires, however, to attach it to every class in which CSS is used - so our definition this time will look like this:</p>
+<p>There remains the problem of one browser &ndash; namely Internet Explorer. It does not support the CSS3 specification and at the moment is still very popular. Thats why there are libraries like the <a href="http://css3pie.com">PIE</a> &ndash; to facilitate this. For the above border-radius example(and many others) it require only to attach a .htc file and attribute will work well in IE6, IE7 and IE8. The specification requires, however, to attach it to every class in which CSS is used &ndash; so our definition this time will look like this:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -428,7 +428,7 @@
</span></code></pre></td></tr></table></div></figure>
-<p>This is another line of which you must remember. And this is the best place where you can see the beauty of SASS - just add this line in one place and will work everywhere. Thus, the final version of the code will look like this:</p>
+<p>This is another line of which you must remember. And this is the best place where you can see the beauty of SASS &ndash; just add this line in one place and will work everywhere. Thus, the final version of the code will look like this:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -462,11 +462,11 @@
<link href="http://imanel.org/blog/2010/03/cucumber-testing-for-multiple-users-continuation/"/>
<updated>2010-03-03T00:00:00+01:00</updated>
<id>http://imanel.org/blog/2010/03/cucumber-testing-for-multiple-users-continuation</id>
- <content type="html"><![CDATA[<p>A little over a month ago you could read my article about real-time applications testing using Cucumber. In the meantime a new version of Cucumber emerged with <a href="http://github.com/jnicklas/capybara">Capybara</a> support added. Since the previous method posed several problems during system to system migration (especially Snow Leopard hacks occasionally did not work in other systems) we&#8217;ll try a new approach - this time working OOTB in every system.</p>
+ <content type="html"><![CDATA[<p>A little over a month ago you could read my article about real-time applications testing using Cucumber. In the meantime a new version of Cucumber emerged with <a href="http://github.com/jnicklas/capybara">Capybara</a> support added. Since the previous method posed several problems during system to system migration (especially Snow Leopard hacks occasionally did not work in other systems) we&rsquo;ll try a new approach &ndash; this time working OOTB in every system.</p>
-<p>As always, I will not describe the installation nor configuration process (you can find this in Capybara&#8217;s documentation) so let&#8217;s get straight to the practice. By default Capybara does not allow you to open multiple browser instances. According to the main developer - &#8220;it&#8217;s impossible by design&#8221;. As they say - It&#8217;s impossible. But doable ;) After taking a glance at Capybara&#8217;s code (I must admit that it is written quite nice) I found a couple of points where you could bypass this annoying limitation.</p>
+<p>As always, I will not describe the installation nor configuration process (you can find this in Capybara&rsquo;s documentation) so let&rsquo;s get straight to the practice. By default Capybara does not allow you to open multiple browser instances. According to the main developer &ndash; &ldquo;it&rsquo;s impossible by design&rdquo;. As they say &ndash; It&rsquo;s impossible. But doable ;) After taking a glance at Capybara&rsquo;s code (I must admit that it is written quite nice) I found a couple of points where you could bypass this annoying limitation.</p>
-<p>It is time to get to work. Let&#8217;s create a new set of steps in the features/step_definitions - call it e.g &#8220;selenium_steps.rb&#8221;. For now let&#8217;s assume that we want to open two browser instances (you can change that to different value if you want to). Create a method examining whether any browser instance exists (and creating new one if there&#8217;s none):</p>
+<p>It is time to get to work. Let&rsquo;s create a new set of steps in the features/step_definitions &ndash; call it e.g &ldquo;selenium_steps.rb&rdquo;. For now let&rsquo;s assume that we want to open two browser instances (you can change that to different value if you want to). Create a method examining whether any browser instance exists (and creating new one if there&rsquo;s none):</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -495,7 +495,7 @@
</span></code></pre></td></tr></table></div></figure>
-<p>The second line verifies that you use a correct test engine (in this case selenium). &#8220;current_url&#8221; method call guarantees that browser current state won&#8217;t be lost during process. Next save to a variable state of the browser and then reset it so Capybara can open a new instance. Why not do that by ourselves? The reason is simple - Capybara uses quite a lot of tricks so you could run into potential problems after some code refactoring done by developers. For now this method is sufficient and guarantees stable (or at least predictable) behavior. Next call to &#8220;current_url&#8221; will open a new brower. Finally restore browser to its initial state. Look at the save/restore browser state functions code below:</p>
+<p>The second line verifies that you use a correct test engine (in this case selenium). &ldquo;current_url&rdquo; method call guarantees that browser current state won&rsquo;t be lost during process. Next save to a variable state of the browser and then reset it so Capybara can open a new instance. Why not do that by ourselves? The reason is simple &ndash; Capybara uses quite a lot of tricks so you could run into potential problems after some code refactoring done by developers. For now this method is sufficient and guarantees stable (or at least predictable) behavior. Next call to &ldquo;current_url&rdquo; will open a new brower. Finally restore browser to its initial state. Look at the save/restore browser state functions code below:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -512,7 +512,7 @@
</span></code></pre></td></tr></table></div></figure>
-<p>As you can see, this method is very simple - it only acquires the current session (for Selenium) and &#8220;driver&#8221; (which is actually a reference to the Selenium server instance).</p>
+<p>As you can see, this method is very simple &ndash; it only acquires the current session (for Selenium) and &ldquo;driver&rdquo; (which is actually a reference to the Selenium server instance).</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -537,7 +537,7 @@
</span></code></pre></td></tr></table></div></figure>
-<p>There&#8217;s no magic here too - you just save the session state and override reference to the Selenium Server. Now we can write browser change functions with ease:</p>
+<p>There&rsquo;s no magic here too &ndash; you just save the session state and override reference to the Selenium Server. Now we can write browser change functions with ease:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -579,9 +579,9 @@ Notice that during Cucumber shutdown phase not all browser instances will be clo
<link href="http://imanel.org/blog/2010/01/testing-juggernaut-using-cucumber-and-selenium/"/>
<updated>2010-01-24T00:00:00+01:00</updated>
<id>http://imanel.org/blog/2010/01/testing-juggernaut-using-cucumber-and-selenium</id>
- <content type="html"><![CDATA[<p>During tests development you usually use well-known and tested solutions like <a href="http://rspec.info">RSpec</a> or <a href="http://cukes.info">Cucumber</a> + <a href="http://github.com/brynary/webrat">Webrat</a>. They let you develop in a fast and convinient way. Unfortunately there are times when you need to get you hands dirty. If your application use only javascript then <a href="http://celerity.rubyforge.org">Celerity</a> may help. But as soon as you incorporate Flash or Java into your application things get much harder. For such situations the <a href="http://seleniumhq.org">Selenium</a> framework should be well-suited. It lets you test your app by simulating user actions through any (supported) web browser. Connection of Selenium and Cucumber seem to be very interesting option too - for more details look at Cucumber wiki.</p>
+ <content type="html"><![CDATA[<p>During tests development you usually use well-known and tested solutions like <a href="http://rspec.info">RSpec</a> or <a href="http://cukes.info">Cucumber</a> + <a href="http://github.com/brynary/webrat">Webrat</a>. They let you develop in a fast and convinient way. Unfortunately there are times when you need to get you hands dirty. If your application use only javascript then <a href="http://celerity.rubyforge.org">Celerity</a> may help. But as soon as you incorporate Flash or Java into your application things get much harder. For such situations the <a href="http://seleniumhq.org">Selenium</a> framework should be well-suited. It lets you test your app by simulating user actions through any (supported) web browser. Connection of Selenium and Cucumber seem to be very interesting option too &ndash; for more details look at Cucumber wiki.</p>
-<p>By default Cucumber uses one browser to open your application and perform selected tests. But from time to time you may need more instances to run in parallel mode - e.g to test real-time user communication. Luckily there is an easy way to override Selenium scripts in Cucumber letting you open another browser instance and switch between them. You just need to add following lines into &#8220;env.rb&#8221; (or selenium dedicated configuration file).</p>
+<p>By default Cucumber uses one browser to open your application and perform selected tests. But from time to time you may need more instances to run in parallel mode &ndash; e.g to test real-time user communication. Luckily there is an easy way to override Selenium scripts in Cucumber letting you open another browser instance and switch between them. You just need to add following lines into &ldquo;env.rb&rdquo; (or selenium dedicated configuration file).</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -655,21 +655,21 @@ Notice that during Cucumber shutdown phase not all browser instances will be clo
<link href="http://imanel.org/blog/2010/01/accents-in-sphinx/"/>
<updated>2010-01-24T00:00:00+01:00</updated>
<id>http://imanel.org/blog/2010/01/accents-in-sphinx</id>
- <content type="html"><![CDATA[<p>When writing web applications you need to use full-text search from time to time. <a href="http://www.sphinxsearch.com">Sphinx</a> or <a href="http://ferret.davebalmain.com/trac">Ferret</a> may be of interest to you in such situation. I do prefer the Sphinx because of its speed and ease of use. But it can pose a problem for you from time to time - especially when searching in languages with accents. By default it does not convert UTF-8 properly - Sphinx treats characters outside the ASCII default set as the separation marks. You can find many pages with a simple solution to this issue - just add appropriate conversion rules to the configuration file:</p>
+ <content type="html"><![CDATA[<p>When writing web applications you need to use full-text search from time to time. <a href="http://www.sphinxsearch.com">Sphinx</a> or <a href="http://ferret.davebalmain.com/trac">Ferret</a> may be of interest to you in such situation. I do prefer the Sphinx because of its speed and ease of use. But it can pose a problem for you from time to time &ndash; especially when searching in languages with accents. By default it does not convert UTF-8 properly &ndash; Sphinx treats characters outside the ASCII default set as the separation marks. You can find many pages with a simple solution to this issue &ndash; just add appropriate conversion rules to the configuration file:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="l-Scalar-Plain">charset_table</span><span class="p-Indicator">:</span> <span class="s">&quot;0..9,</span><span class="nv"> </span><span class="s">a..z,</span><span class="nv"> </span><span class="s">_,</span><span class="nv"> </span><span class="s">A..Z-&gt;a..z,</span><span class="nv"> </span><span class="s">U+00C0-&gt;a,</span><span class="nv"> </span><span class="s">U+00C1-&gt;a,</span><span class="nv"> </span><span class="s">U+00C2-&gt;a,</span><span class="nv"> </span><span class="s">U+00C3-&gt;a,</span><span class="nv"> </span><span class="s">U+00C4-&gt;a,</span><span class="nv"> </span><span class="s">U+00C5-&gt;a,</span><span class="nv"> </span><span class="s">U+00C7-&gt;c,</span><span class="nv"> </span><span class="s">U+00C8-&gt;e,</span><span class="nv"> </span><span class="s">U+00C9-&gt;e,</span><span class="nv"> </span><span class="s">U+00CA-&gt;e,</span><span class="nv"> </span><span class="s">U+00CB-&gt;e,</span><span class="nv"> </span><span class="s">U+00CC-&gt;i,</span><span class="nv"> </span><span class="s">U+00CD-&gt;i,</span><span class="nv"> </span><span class="s">U+00CE-&gt;i,</span><span class="nv"> </span><span class="s">U+00CF-&gt;i,</span><span class="nv"> </span><span class="s">U+00D1-&gt;n,</span><span class="nv"> </span><span class="s">U+00D2-&gt;o,</span><span class="nv"> </span><span class="s">U+00D3-&gt;o,</span><span class="nv"> </span><span class="s">U+00D4-&gt;o,</span><span class="nv"> </span><span class="s">U+00D5-&gt;o,</span><span class="nv"> </span><span class="s">U+00D6-&gt;o,</span><span class="nv"> </span><span class="s">U+00D9-&gt;u,</span><span class="nv"> </span><span class="s">U+00DA-&gt;u,</span><span class="nv"> </span><span class="s">U+00DB-&gt;u,</span><span class="nv"> </span><span class="s">U+00DC-&gt;u,</span><span class="nv"> </span><span class="s">U+00DD-&gt;y,</span><span class="nv"> </span><span class="s">U+00E0-&gt;a,</span><span class="nv"> </span><span class="s">U+00E1-&gt;a,</span><span class="nv"> </span><span class="s">U+00E2-&gt;a,</span><span class="nv"> </span><span class="s">U+00E3-&gt;a,</span><span class="nv"> </span><span class="s">U+00E4-&gt;a,</span><span class="nv"> </span><span class="s">U+00E5-&gt;a,</span><span class="nv"> </span><span class="s">U+00E7-&gt;c,</span><span class="nv"> </span><span class="s">U+00E8-&gt;e,</span><span class="nv"> </span><span class="s">U+00E9-&gt;e,</span><span class="nv"> </span><span class="s">U+00EA-&gt;e,</span><span class="nv"> </span><span class="s">U+00EB-&gt;e,</span><span class="nv"> </span><span class="s">U+00EC-&gt;i,</span><span class="nv"> </span><span class="s">U+00ED-&gt;i,</span><span class="nv"> </span><span class="s">U+00EE-&gt;i,</span><span class="nv"> </span><span class="s">U+00EF-&gt;i,</span><span class="nv"> </span><span class="s">U+00F1-&gt;n,</span><span class="nv"> </span><span class="s">U+00F2-&gt;o,</span><span class="nv"> </span><span class="s">U+00F3-&gt;o,</span><span class="nv"> </span><span class="s">U+00F4-&gt;o,</span><span class="nv"> </span><span class="s">U+00F5-&gt;o,</span><span class="nv"> </span><span class="s">U+00F6-&gt;o,</span><span class="nv"> </span><span class="s">U+00F9-&gt;u,</span><span class="nv"> </span><span class="s">U+00FA-&gt;u,</span><span class="nv"> </span><span class="s">U+00FB-&gt;u,</span><span class="nv"> </span><span class="s">U+00FC-&gt;u,</span><span class="nv"> </span><span class="s">U+00FD-&gt;y,</span><span class="nv"> </span><span class="s">U+00FF-&gt;y,</span><span class="nv"> </span><span class="s">U+0100-&gt;a,</span><span class="nv"> </span><span class="s">U+0101-&gt;a,</span><span class="nv"> </span><span class="s">U+0102-&gt;a,</span><span class="nv"> </span><span class="s">U+0103-&gt;a,</span><span class="nv"> </span><span class="s">U+0104-&gt;a,</span><span class="nv"> </span><span class="s">U+0105-&gt;a,</span><span class="nv"> </span><span class="s">U+0106-&gt;c,</span><span class="nv"> </span><span class="s">U+0107-&gt;c,</span><span class="nv"> </span><span class="s">U+0108-&gt;c,</span><span class="nv"> </span><span class="s">U+0109-&gt;c,</span><span class="nv"> </span><span class="s">U+010A-&gt;c,</span><span class="nv"> </span><span class="s">U+010B-&gt;c,</span><span class="nv"> </span><span class="s">U+010C-&gt;c,</span><span class="nv"> </span><span class="s">U+010D-&gt;c,</span><span class="nv"> </span><span class="s">U+010E-&gt;d,</span><span class="nv"> </span><span class="s">U+010F-&gt;d,</span><span class="nv"> </span><span class="s">U+0112-&gt;e,</span><span class="nv"> </span><span class="s">U+0113-&gt;e,</span><span class="nv"> </span><span class="s">U+0114-&gt;e,</span><span class="nv"> </span><span class="s">U+0115-&gt;e,</span><span class="nv"> </span><span class="s">U+0116-&gt;e,</span><span class="nv"> </span><span class="s">U+0117-&gt;e,</span><span class="nv"> </span><span class="s">U+0118-&gt;e,</span><span class="nv"> </span><span class="s">U+0119-&gt;e,</span><span class="nv"> </span><span class="s">U+011A-&gt;e,</span><span class="nv"> </span><span class="s">U+011B-&gt;e,</span><span class="nv"> </span><span class="s">U+011C-&gt;g,</span><span class="nv"> </span><span class="s">U+011D-&gt;g,</span><span class="nv"> </span><span class="s">U+011E-&gt;g,</span><span class="nv"> </span><span class="s">U+011F-&gt;g,</span><span class="nv"> </span><span class="s">U+0120-&gt;g,</span><span class="nv"> </span><span class="s">U+0121-&gt;g,</span><span class="nv"> </span><span class="s">U+0122-&gt;g,</span><span class="nv"> </span><span class="s">U+0123-&gt;g,</span><span class="nv"> </span><span class="s">U+0124-&gt;h,</span><span class="nv"> </span><span class="s">U+0125-&gt;h,</span><span class="nv"> </span><span class="s">U+0128-&gt;i,</span><span class="nv"> </span><span class="s">U+0129-&gt;i,</span><span class="nv"> </span><span class="s">U+012A-&gt;i,</span><span class="nv"> </span><span class="s">U+012B-&gt;i,</span><span class="nv"> </span><span class="s">U+012C-&gt;i,</span><span class="nv"> </span><span class="s">U+012D-&gt;i,</span><span class="nv"> </span><span class="s">U+012E-&gt;i,</span><span class="nv"> </span><span class="s">U+012F-&gt;i,</span><span class="nv"> </span><span class="s">U+0130-&gt;i,</span><span class="nv"> </span><span class="s">U+0134-&gt;j,</span><span class="nv"> </span><span class="s">U+0135-&gt;j,</span><span class="nv"> </span><span class="s">U+0136-&gt;k,</span><span class="nv"> </span><span class="s">U+0137-&gt;k,</span><span class="nv"> </span><span class="s">U+0139-&gt;l,</span><span class="nv"> </span><span class="s">U+013A-&gt;l,</span><span class="nv"> </span><span class="s">U+013B-&gt;l,</span><span class="nv"> </span><span class="s">U+013C-&gt;l,</span><span class="nv"> </span><span class="s">U+013D-&gt;l,</span><span class="nv"> </span><span class="s">U+013E-&gt;l,</span><span class="nv"> </span><span class="s">U+0143-&gt;n,</span><span class="nv"> </span><span class="s">U+0144-&gt;n,</span><span class="nv"> </span><span class="s">U+0145-&gt;n,</span><span class="nv"> </span><span class="s">U+0146-&gt;n,</span><span class="nv"> </span><span class="s">U+0147-&gt;n,</span><span class="nv"> </span><span class="s">U+0148-&gt;n,</span><span class="nv"> </span><span class="s">U+014C-&gt;o,</span><span class="nv"> </span><span class="s">U+014D-&gt;o,</span><span class="nv"> </span><span class="s">U+014E-&gt;o,</span><span class="nv"> </span><span class="s">U+014F-&gt;o,</span><span class="nv"> </span><span class="s">U+0150-&gt;o,</span><span class="nv"> </span><span class="s">U+0151-&gt;o,</span><span class="nv"> </span><span class="s">U+0154-&gt;r,</span><span class="nv"> </span><span class="s">U+0155-&gt;r,</span><span class="nv"> </span><span class="s">U+0156-&gt;r,</span><span class="nv"> </span><span class="s">U+0157-&gt;r,</span><span class="nv"> </span><span class="s">U+0158-&gt;r,</span><span class="nv"> </span><span class="s">U+0159-&gt;r,</span><span class="nv"> </span><span class="s">U+015A-&gt;s,</span><span class="nv"> </span><span class="s">U+015B-&gt;s,</span><span class="nv"> </span><span class="s">U+015C-&gt;s,</span><span class="nv"> </span><span class="s">U+015D-&gt;s,</span><span class="nv"> </span><span class="s">U+015E-&gt;s,</span><span class="nv"> </span><span class="s">U+015F-&gt;s,</span><span class="nv"> </span><span class="s">U+0160-&gt;s,</span><span class="nv"> </span><span class="s">U+0161-&gt;s,</span><span class="nv"> </span><span class="s">U+0162-&gt;t,</span><span class="nv"> </span><span class="s">U+0163-&gt;t,</span><span class="nv"> </span><span class="s">U+0164-&gt;t,</span><span class="nv"> </span><span class="s">U+0165-&gt;t,</span><span class="nv"> </span><span class="s">U+0168-&gt;u,</span><span class="nv"> </span><span class="s">U+0169-&gt;u,</span><span class="nv"> </span><span class="s">U+016A-&gt;u,</span><span class="nv"> </span><span class="s">U+016B-&gt;u,</span><span class="nv"> </span><span class="s">U+016C-&gt;u,</span><span class="nv"> </span><span class="s">U+016D-&gt;u,</span><span class="nv"> </span><span class="s">U+016E-&gt;u,</span><span class="nv"> </span><span class="s">U+016F-&gt;u,</span><span class="nv"> </span><span class="s">U+0170-&gt;u,</span><span class="nv"> </span><span class="s">U+0171-&gt;u,</span><span class="nv"> </span><span class="s">U+0172-&gt;u,</span><span class="nv"> </span><span class="s">U+0173-&gt;u,</span><span class="nv"> </span><span class="s">U+0174-&gt;w,</span><span class="nv"> </span><span class="s">U+0175-&gt;w,</span><span class="nv"> </span><span class="s">U+0176-&gt;y,</span><span class="nv"> </span><span class="s">U+0177-&gt;y,</span><span class="nv"> </span><span class="s">U+0178-&gt;y,</span><span class="nv"> </span><span class="s">U+0179-&gt;z,</span><span class="nv"> </span><span class="s">U+017A-&gt;z,</span><span class="nv"> </span><span class="s">U+017B-&gt;z,</span><span class="nv"> </span><span class="s">U+017C-&gt;z,</span><span class="nv"> </span><span class="s">U+017D-&gt;z,</span><span class="nv"> </span><span class="s">U+017E-&gt;z,</span><span class="nv"> </span><span class="s">U+01A0-&gt;o,</span><span class="nv"> </span><span class="s">U+01A1-&gt;o,</span><span class="nv"> </span><span class="s">U+01AF-&gt;u,</span><span class="nv"> </span><span class="s">U+01B0-&gt;u,</span><span class="nv"> </span><span class="s">U+01CD-&gt;a,</span><span class="nv"> </span><span class="s">U+01CE-&gt;a,</span><span class="nv"> </span><span class="s">U+01CF-&gt;i,</span><span class="nv"> </span><span class="s">U+01D0-&gt;i,</span><span class="nv"> </span><span class="s">U+01D1-&gt;o,</span><span class="nv"> </span><span class="s">U+01D2-&gt;o,</span><span class="nv"> </span><span class="s">U+01D3-&gt;u,</span><span class="nv"> </span><span class="s">U+01D4-&gt;u,</span><span class="nv"> </span><span class="s">U+01D5-&gt;u,</span><span class="nv"> </span><span class="s">U+01D6-&gt;u,</span><span class="nv"> </span><span class="s">U+01D7-&gt;u,</span><span class="nv"> </span><span class="s">U+01D8-&gt;u,</span><span class="nv"> </span><span class="s">U+01D9-&gt;u,</span><span class="nv"> </span><span class="s">U+01DA-&gt;u,</span><span class="nv"> </span><span class="s">U+01DB-&gt;u,</span><span class="nv"> </span><span class="s">U+01DC-&gt;u,</span><span class="nv"> </span><span class="s">U+01DE-&gt;a,</span><span class="nv"> </span><span class="s">U+01DF-&gt;a,</span><span class="nv"> </span><span class="s">U+01E0-&gt;a,</span><span class="nv"> </span><span class="s">U+01E1-&gt;a,</span><span class="nv"> </span><span class="s">U+01E6-&gt;g,</span><span class="nv"> </span><span class="s">U+01E7-&gt;g,</span><span class="nv"> </span><span class="s">U+01E8-&gt;k,</span><span class="nv"> </span><span class="s">U+01E9-&gt;k,</span><span class="nv"> </span><span class="s">U+01EA-&gt;o,</span><span class="nv"> </span><span class="s">U+01EB-&gt;o,</span><span class="nv"> </span><span class="s">U+01EC-&gt;o,</span><span class="nv"> </span><span class="s">U+01ED-&gt;o,</span><span class="nv"> </span><span class="s">U+01F0-&gt;j,</span><span class="nv"> </span><span class="s">U+01F4-&gt;g,</span><span class="nv"> </span><span class="s">U+01F5-&gt;g,</span><span class="nv"> </span><span class="s">U+01F8-&gt;n,</span><span class="nv"> </span><span class="s">U+01F9-&gt;n,</span><span class="nv"> </span><span class="s">U+01FA-&gt;a,</span><span class="nv"> </span><span class="s">U+01FB-&gt;a,</span><span class="nv"> </span><span class="s">U+0200-&gt;a,</span><span class="nv"> </span><span class="s">U+0201-&gt;a,</span><span class="nv"> </span><span class="s">U+0202-&gt;a,</span><span class="nv"> </span><span class="s">U+0203-&gt;a,</span><span class="nv"> </span><span class="s">U+0204-&gt;e,</span><span class="nv"> </span><span class="s">U+0205-&gt;e,</span><span class="nv"> </span><span class="s">U+0206-&gt;e,</span><span class="nv"> </span><span class="s">U+0207-&gt;e,</span><span class="nv"> </span><span class="s">U+0208-&gt;i,</span><span class="nv"> </span><span class="s">U+0209-&gt;i,</span><span class="nv"> </span><span class="s">U+020A-&gt;i,</span><span class="nv"> </span><span class="s">U+020B-&gt;i,</span><span class="nv"> </span><span class="s">U+020C-&gt;o,</span><span class="nv"> </span><span class="s">U+020D-&gt;o,</span><span class="nv"> </span><span class="s">U+020E-&gt;o,</span><span class="nv"> </span><span class="s">U+020F-&gt;o,</span><span class="nv"> </span><span class="s">U+0210-&gt;r,</span><span class="nv"> </span><span class="s">U+0211-&gt;r,</span><span class="nv"> </span><span class="s">U+0212-&gt;r,</span><span class="nv"> </span><span class="s">U+0213-&gt;r,</span><span class="nv"> </span><span class="s">U+0214-&gt;u,</span><span class="nv"> </span><span class="s">U+0215-&gt;u,</span><span class="nv"> </span><span class="s">U+0216-&gt;u,</span><span class="nv"> </span><span class="s">U+0217-&gt;u,</span><span class="nv"> </span><span class="s">U+0218-&gt;s,</span><span class="nv"> </span><span class="s">U+0219-&gt;s,</span><span class="nv"> </span><span class="s">U+021A-&gt;t,</span><span class="nv"> </span><span class="s">U+021B-&gt;t,</span><span class="nv"> </span><span class="s">U+021E-&gt;h,</span><span class="nv"> </span><span class="s">U+021F-&gt;h,</span><span class="nv"> </span><span class="s">U+0226-&gt;a,</span><span class="nv"> </span><span class="s">U+0227-&gt;a,</span><span class="nv"> </span><span class="s">U+0228-&gt;e,</span><span class="nv"> </span><span class="s">U+0229-&gt;e,</span><span class="nv"> </span><span class="s">U+022A-&gt;o,</span><span class="nv"> </span><span class="s">U+022B-&gt;o,</span><span class="nv"> </span><span class="s">U+022C-&gt;o,</span><span class="nv"> </span><span class="s">U+022D-&gt;o,</span><span class="nv"> </span><span class="s">U+022E-&gt;o,</span><span class="nv"> </span><span class="s">U+022F-&gt;o,</span><span class="nv"> </span><span class="s">U+0230-&gt;o,</span><span class="nv"> </span><span class="s">U+0231-&gt;o,</span><span class="nv"> </span><span class="s">U+0232-&gt;y,</span><span class="nv"> </span><span class="s">U+0233-&gt;y,</span><span class="nv"> </span><span class="s">U+1E00-&gt;a,</span><span class="nv"> </span><span class="s">U+1E01-&gt;a,</span><span class="nv"> </span><span class="s">U+1E02-&gt;b,</span><span class="nv"> </span><span class="s">U+1E03-&gt;b,</span><span class="nv"> </span><span class="s">U+1E04-&gt;b,</span><span class="nv"> </span><span class="s">U+1E05-&gt;b,</span><span class="nv"> </span><span class="s">U+1E06-&gt;b,</span><span class="nv"> </span><span class="s">U+1E07-&gt;b,</span><span class="nv"> </span><span class="s">U+1E08-&gt;c,</span><span class="nv"> </span><span class="s">U+1E09-&gt;c,</span><span class="nv"> </span><span class="s">U+1E0A-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0B-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0C-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0D-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0E-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0F-&gt;d,</span><span class="nv"> </span><span class="s">U+1E10-&gt;d,</span><span class="nv"> </span><span class="s">U+1E11-&gt;d,</span><span class="nv"> </span><span class="s">U+1E12-&gt;d,</span><span class="nv"> </span><span class="s">U+1E13-&gt;d,</span><span class="nv"> </span><span class="s">U+1E14-&gt;e,</span><span class="nv"> </span><span class="s">U+1E15-&gt;e,</span><span class="nv"> </span><span class="s">U+1E16-&gt;e,</span><span class="nv"> </span><span class="s">U+1E17-&gt;e,</span><span class="nv"> </span><span class="s">U+1E18-&gt;e,</span><span class="nv"> </span><span class="s">U+1E19-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1A-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1B-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1C-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1D-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1E-&gt;f,</span><span class="nv"> </span><span class="s">U+1E1F-&gt;f,</span><span class="nv"> </span><span class="s">U+1E20-&gt;g,</span><span class="nv"> </span><span class="s">U+1E21-&gt;g,</span><span class="nv"> </span><span class="s">U+1E22-&gt;h,</span><span class="nv"> </span><span class="s">U+1E23-&gt;h,</span><span class="nv"> </span><span class="s">U+1E24-&gt;h,</span><span class="nv"> </span><span class="s">U+1E25-&gt;h,</span><span class="nv"> </span><span class="s">U+1E26-&gt;h,</span><span class="nv"> </span><span class="s">U+1E27-&gt;h,</span><span class="nv"> </span><span class="s">U+1E28-&gt;h,</span><span class="nv"> </span><span class="s">U+1E29-&gt;h,</span><span class="nv"> </span><span class="s">U+1E2A-&gt;h,</span><span class="nv"> </span><span class="s">U+1E2B-&gt;h,</span><span class="nv"> </span><span class="s">U+1E2C-&gt;i,</span><span class="nv"> </span><span class="s">U+1E2D-&gt;i,</span><span class="nv"> </span><span class="s">U+1E2E-&gt;i,</span><span class="nv"> </span><span class="s">U+1E2F-&gt;i,</span><span class="nv"> </span><span class="s">U+1E30-&gt;k,</span><span class="nv"> </span><span class="s">U+1E31-&gt;k,</span><span class="nv"> </span><span class="s">U+1E32-&gt;k,</span><span class="nv"> </span><span class="s">U+1E33-&gt;k,</span><span class="nv"> </span><span class="s">U+1E34-&gt;k,</span><span class="nv"> </span><span class="s">U+1E35-&gt;k,</span><span class="nv"> </span><span class="s">U+1E36-&gt;l,</span><span class="nv"> </span><span class="s">U+1E37-&gt;l,</span><span class="nv"> </span><span class="s">U+1E38-&gt;l,</span><span class="nv"> </span><span class="s">U+1E39-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3A-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3B-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3C-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3D-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3E-&gt;m,</span><span class="nv"> </span><span class="s">U+1E3F-&gt;m,</span><span class="nv"> </span><span class="s">U+1E40-&gt;m,</span><span class="nv"> </span><span class="s">U+1E41-&gt;m,</span><span class="nv"> </span><span class="s">U+1E42-&gt;m,</span><span class="nv"> </span><span class="s">U+1E43-&gt;m,</span><span class="nv"> </span><span class="s">U+1E44-&gt;n,</span><span class="nv"> </span><span class="s">U+1E45-&gt;n,</span><span class="nv"> </span><span class="s">U+1E46-&gt;n,</span><span class="nv"> </span><span class="s">U+1E47-&gt;n,</span><span class="nv"> </span><span class="s">U+1E48-&gt;n,</span><span class="nv"> </span><span class="s">U+1E49-&gt;n,</span><span class="nv"> </span><span class="s">U+1E4A-&gt;n,</span><span class="nv"> </span><span class="s">U+1E4B-&gt;n,</span><span class="nv"> </span><span class="s">U+1E4C-&gt;o,</span><span class="nv"> </span><span class="s">U+1E4D-&gt;o,</span><span class="nv"> </span><span class="s">U+1E4E-&gt;o,</span><span class="nv"> </span><span class="s">U+1E4F-&gt;o,</span><span class="nv"> </span><span class="s">U+1E50-&gt;o,</span><span class="nv"> </span><span class="s">U+1E51-&gt;o,</span><span class="nv"> </span><span class="s">U+1E52-&gt;o,</span><span class="nv"> </span><span class="s">U+1E53-&gt;o,</span><span class="nv"> </span><span class="s">U+1E54-&gt;p,</span><span class="nv"> </span><span class="s">U+1E55-&gt;p,</span><span class="nv"> </span><span class="s">U+1E56-&gt;p,</span><span class="nv"> </span><span class="s">U+1E57-&gt;p,</span><span class="nv"> </span><span class="s">U+1E58-&gt;r,</span><span class="nv"> </span><span class="s">U+1E59-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5A-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5B-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5C-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5D-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5E-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5F-&gt;r,</span><span class="nv"> </span><span class="s">U+1E60-&gt;s,</span><span class="nv"> </span><span class="s">U+1E61-&gt;s,</span><span class="nv"> </span><span class="s">U+1E62-&gt;s,</span><span class="nv"> </span><span class="s">U+1E63-&gt;s,</span><span class="nv"> </span><span class="s">U+1E64-&gt;s,</span><span class="nv"> </span><span class="s">U+1E65-&gt;s,</span><span class="nv"> </span><span class="s">U+1E66-&gt;s,</span><span class="nv"> </span><span class="s">U+1E67-&gt;s,</span><span class="nv"> </span><span class="s">U+1E68-&gt;s,</span><span class="nv"> </span><span class="s">U+1E69-&gt;s,</span><span class="nv"> </span><span class="s">U+1E6A-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6B-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6C-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6D-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6E-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6F-&gt;t,</span><span class="nv"> </span><span class="s">U+1E70-&gt;t,</span><span class="nv"> </span><span class="s">U+1E71-&gt;t,</span><span class="nv"> </span><span class="s">U+1E72-&gt;u,</span><span class="nv"> </span><span class="s">U+1E73-&gt;u,</span><span class="nv"> </span><span class="s">U+1E74-&gt;u,</span><span class="nv"> </span><span class="s">U+1E75-&gt;u,</span><span class="nv"> </span><span class="s">U+1E76-&gt;u,</span><span class="nv"> </span><span class="s">U+1E77-&gt;u,</span><span class="nv"> </span><span class="s">U+1E78-&gt;u,</span><span class="nv"> </span><span class="s">U+1E79-&gt;u,</span><span class="nv"> </span><span class="s">U+1E7A-&gt;u,</span><span class="nv"> </span><span class="s">U+1E7B-&gt;u,</span><span class="nv"> </span><span class="s">U+1E7C-&gt;v,</span><span class="nv"> </span><span class="s">U+1E7D-&gt;v,</span><span class="nv"> </span><span class="s">U+1E7E-&gt;v,</span><span class="nv"> </span><span class="s">U+1E7F-&gt;v,</span><span class="nv"> </span><span class="s">U+1E80-&gt;w,</span><span class="nv"> </span><span class="s">U+1E81-&gt;w,</span><span class="nv"> </span><span class="s">U+1E82-&gt;w,</span><span class="nv"> </span><span class="s">U+1E83-&gt;w,</span><span class="nv"> </span><span class="s">U+1E84-&gt;w,</span><span class="nv"> </span><span class="s">U+1E85-&gt;w,</span><span class="nv"> </span><span class="s">U+1E86-&gt;w,</span><span class="nv"> </span><span class="s">U+1E87-&gt;w,</span><span class="nv"> </span><span class="s">U+1E88-&gt;w,</span><span class="nv"> </span><span class="s">U+1E89-&gt;w,</span><span class="nv"> </span><span class="s">U+1E8A-&gt;x,</span><span class="nv"> </span><span class="s">U+1E8B-&gt;x,</span><span class="nv"> </span><span class="s">U+1E8C-&gt;x,</span><span class="nv"> </span><span class="s">U+1E8D-&gt;x,</span><span class="nv"> </span><span class="s">U+1E8E-&gt;y,</span><span class="nv"> </span><span class="s">U+1E8F-&gt;y,</span><span class="nv"> </span><span class="s">U+1E96-&gt;h,</span><span class="nv"> </span><span class="s">U+1E97-&gt;t,</span><span class="nv"> </span><span class="s">U+1E98-&gt;w,</span><span class="nv"> </span><span class="s">U+1E99-&gt;y,</span><span class="nv"> </span><span class="s">U+1EA0-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA1-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA2-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA3-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA4-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA5-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA6-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA7-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA8-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA9-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAA-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAB-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAC-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAD-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAE-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAF-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB0-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB1-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB2-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB3-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB4-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB5-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB6-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB7-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB8-&gt;e,</span><span class="nv"> </span><span class="s">U+1EB9-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBA-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBB-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBC-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBD-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBE-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBF-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC0-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC1-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC2-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC3-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC4-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC5-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC6-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC7-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC8-&gt;i,</span><span class="nv"> </span><span class="s">U+1EC9-&gt;i,</span><span class="nv"> </span><span class="s">U+1ECA-&gt;i,</span><span class="nv"> </span><span class="s">U+1ECB-&gt;i,</span><span class="nv"> </span><span class="s">U+1ECC-&gt;o,</span><span class="nv"> </span><span class="s">U+1ECD-&gt;o,</span><span class="nv"> </span><span class="s">U+1ECE-&gt;o,</span><span class="nv"> </span><span class="s">U+1ECF-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED0-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED1-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED2-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED3-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED4-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED5-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED6-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED7-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED8-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED9-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDA-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDB-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDC-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDD-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDE-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDF-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE0-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE1-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE2-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE3-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE4-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE5-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE6-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE7-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE8-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE9-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEA-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEB-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEC-&gt;u,</span><span class="nv"> </span><span class="s">U+1EED-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEE-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEF-&gt;u,</span><span class="nv"> </span><span class="s">U+1EF0-&gt;u,</span><span class="nv"> </span><span class="s">U+1EF1-&gt;u,</span><span class="nv"> </span><span class="s">U+1EF2-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF3-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF4-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF5-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF6-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF7-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF8-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF9-&gt;y&quot;</span>
</span></code></pre></td></tr></table></div></figure>
-<p>It turns out that it is not enough - even after adding this piece of code some of the polish (that&#8217;s my native language) signs were not recognized properly. After some searching I found a reason - polish &#8220;tails&#8221; were written not as characters in UTF-8 but as an html entities. There&#8217;s a simple and clean solution - add following line to your configuration file:</p>
+<p>It turns out that it is not enough &ndash; even after adding this piece of code some of the polish (that&rsquo;s my native language) signs were not recognized properly. After some searching I found a reason &ndash; polish &ldquo;tails&rdquo; were written not as characters in UTF-8 but as an html entities. There&rsquo;s a simple and clean solution &ndash; add following line to your configuration file:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="l-Scalar-Plain">html_strip</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">1</span>
</span></code></pre></td></tr></table></div></figure>
-<p>And now everything should work great - the only drawback is that the Sphinx ignores accents and converts them into ASCII characters. But that&#8217;s a low price in exchange for functionality that Sphinx gives to you.</p>
+<p>And now everything should work great &ndash; the only drawback is that the Sphinx ignores accents and converts them into ASCII characters. But that&rsquo;s a low price in exchange for functionality that Sphinx gives to you.</p>
]]></content>
</entry>
@@ -678,9 +678,9 @@ Notice that during Cucumber shutdown phase not all browser instances will be clo
<link href="http://imanel.org/blog/2010/01/ruby-flavored-shoes/"/>
<updated>2010-01-03T00:00:00+01:00</updated>
<id>http://imanel.org/blog/2010/01/ruby-flavored-shoes</id>
- <content type="html"><![CDATA[<p>Recently, working on my BSc thesis, I had to choose programming language and some framework to create graphical interface. The first thing that came to my mind was C++ and QT library. But that would be too easy :). It&#8217;s time to learn something new. Something connected with Ruby (cause that&#8217;s the language I currently work with). There&#8217;s a couple of nice bindings for QT in Ruby, but all of them seemed not enough &#8220;ruby-way&#8221; to me. Most of them didn&#8217;t comfort to some of my needs (multi-platform, should work OOTB, with acceptable performance) too. Finally I found really interesting framework, namely, Ruby Shoes.</p>
+ <content type="html"><![CDATA[<p>Recently, working on my BSc thesis, I had to choose programming language and some framework to create graphical interface. The first thing that came to my mind was C++ and QT library. But that would be too easy :). It&rsquo;s time to learn something new. Something connected with Ruby (cause that&rsquo;s the language I currently work with). There&rsquo;s a couple of nice bindings for QT in Ruby, but all of them seemed not enough &ldquo;ruby-way&rdquo; to me. Most of them didn&rsquo;t comfort to some of my needs (multi-platform, should work OOTB, with acceptable performance) too. Finally I found really interesting framework, namely, Ruby Shoes.</p>
-<p>After quick installation on OS X, virtualised Windows and Ubuntu it is time for our beloved &#8220;hello world&#8221; test. Next, few more advanced test. Everything works great. Applications work on all three platforms, contain Ruby Shoes (statically linked), so there&#8217;s no need for any dependencies installation. The only problem is weak support for gems containing native extensions. This especially shows with RMagick. It compiles and starts but as soon as you try to call any function it fails with message that some (existing) bundle doesn&#8217;t exist. You should also be careful when searching for documentation - not every function is described in RDoc. If you can&#8217;t find one then try to look into manual or google it.</p>
+<p>After quick installation on OS X, virtualised Windows and Ubuntu it is time for our beloved &ldquo;hello world&rdquo; test. Next, few more advanced test. Everything works great. Applications work on all three platforms, contain Ruby Shoes (statically linked), so there&rsquo;s no need for any dependencies installation. The only problem is weak support for gems containing native extensions. This especially shows with RMagick. It compiles and starts but as soon as you try to call any function it fails with message that some (existing) bundle doesn&rsquo;t exist. You should also be careful when searching for documentation &ndash; not every function is described in RDoc. If you can&rsquo;t find one then try to look into manual or google it.</p>
]]></content>
</entry>
View
14 blog/2010/01/accents-in-sphinx/index.html
@@ -75,28 +75,28 @@ <h1 class="entry-title">Accents in Sphinx</h1>
-<time datetime="2010-01-24T00:00:00+01:00" pubdate data-updated="true">Jan 24<span>th</span>, 2010</time>
+<time datetime="2010-01-24T00:00:00+01:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>When writing web applications you need to use full-text search from time to time. <a href="http://www.sphinxsearch.com">Sphinx</a> or <a href="http://ferret.davebalmain.com/trac">Ferret</a> may be of interest to you in such situation. I do prefer the Sphinx because of its speed and ease of use. But it can pose a problem for you from time to time - especially when searching in languages with accents. By default it does not convert UTF-8 properly - Sphinx treats characters outside the ASCII default set as the separation marks. You can find many pages with a simple solution to this issue - just add appropriate conversion rules to the configuration file:</p>
+<div class="entry-content"><p>When writing web applications you need to use full-text search from time to time. <a href="http://www.sphinxsearch.com">Sphinx</a> or <a href="http://ferret.davebalmain.com/trac">Ferret</a> may be of interest to you in such situation. I do prefer the Sphinx because of its speed and ease of use. But it can pose a problem for you from time to time &ndash; especially when searching in languages with accents. By default it does not convert UTF-8 properly &ndash; Sphinx treats characters outside the ASCII default set as the separation marks. You can find many pages with a simple solution to this issue &ndash; just add appropriate conversion rules to the configuration file:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="l-Scalar-Plain">charset_table</span><span class="p-Indicator">:</span> <span class="s">&quot;0..9,</span><span class="nv"> </span><span class="s">a..z,</span><span class="nv"> </span><span class="s">_,</span><span class="nv"> </span><span class="s">A..Z-&gt;a..z,</span><span class="nv"> </span><span class="s">U+00C0-&gt;a,</span><span class="nv"> </span><span class="s">U+00C1-&gt;a,</span><span class="nv"> </span><span class="s">U+00C2-&gt;a,</span><span class="nv"> </span><span class="s">U+00C3-&gt;a,</span><span class="nv"> </span><span class="s">U+00C4-&gt;a,</span><span class="nv"> </span><span class="s">U+00C5-&gt;a,</span><span class="nv"> </span><span class="s">U+00C7-&gt;c,</span><span class="nv"> </span><span class="s">U+00C8-&gt;e,</span><span class="nv"> </span><span class="s">U+00C9-&gt;e,</span><span class="nv"> </span><span class="s">U+00CA-&gt;e,</span><span class="nv"> </span><span class="s">U+00CB-&gt;e,</span><span class="nv"> </span><span class="s">U+00CC-&gt;i,</span><span class="nv"> </span><span class="s">U+00CD-&gt;i,</span><span class="nv"> </span><span class="s">U+00CE-&gt;i,</span><span class="nv"> </span><span class="s">U+00CF-&gt;i,</span><span class="nv"> </span><span class="s">U+00D1-&gt;n,</span><span class="nv"> </span><span class="s">U+00D2-&gt;o,</span><span class="nv"> </span><span class="s">U+00D3-&gt;o,</span><span class="nv"> </span><span class="s">U+00D4-&gt;o,</span><span class="nv"> </span><span class="s">U+00D5-&gt;o,</span><span class="nv"> </span><span class="s">U+00D6-&gt;o,</span><span class="nv"> </span><span class="s">U+00D9-&gt;u,</span><span class="nv"> </span><span class="s">U+00DA-&gt;u,</span><span class="nv"> </span><span class="s">U+00DB-&gt;u,</span><span class="nv"> </span><span class="s">U+00DC-&gt;u,</span><span class="nv"> </span><span class="s">U+00DD-&gt;y,</span><span class="nv"> </span><span class="s">U+00E0-&gt;a,</span><span class="nv"> </span><span class="s">U+00E1-&gt;a,</span><span class="nv"> </span><span class="s">U+00E2-&gt;a,</span><span class="nv"> </span><span class="s">U+00E3-&gt;a,</span><span class="nv"> </span><span class="s">U+00E4-&gt;a,</span><span class="nv"> </span><span class="s">U+00E5-&gt;a,</span><span class="nv"> </span><span class="s">U+00E7-&gt;c,</span><span class="nv"> </span><span class="s">U+00E8-&gt;e,</span><span class="nv"> </span><span class="s">U+00E9-&gt;e,</span><span class="nv"> </span><span class="s">U+00EA-&gt;e,</span><span class="nv"> </span><span class="s">U+00EB-&gt;e,</span><span class="nv"> </span><span class="s">U+00EC-&gt;i,</span><span class="nv"> </span><span class="s">U+00ED-&gt;i,</span><span class="nv"> </span><span class="s">U+00EE-&gt;i,</span><span class="nv"> </span><span class="s">U+00EF-&gt;i,</span><span class="nv"> </span><span class="s">U+00F1-&gt;n,</span><span class="nv"> </span><span class="s">U+00F2-&gt;o,</span><span class="nv"> </span><span class="s">U+00F3-&gt;o,</span><span class="nv"> </span><span class="s">U+00F4-&gt;o,</span><span class="nv"> </span><span class="s">U+00F5-&gt;o,</span><span class="nv"> </span><span class="s">U+00F6-&gt;o,</span><span class="nv"> </span><span class="s">U+00F9-&gt;u,</span><span class="nv"> </span><span class="s">U+00FA-&gt;u,</span><span class="nv"> </span><span class="s">U+00FB-&gt;u,</span><span class="nv"> </span><span class="s">U+00FC-&gt;u,</span><span class="nv"> </span><span class="s">U+00FD-&gt;y,</span><span class="nv"> </span><span class="s">U+00FF-&gt;y,</span><span class="nv"> </span><span class="s">U+0100-&gt;a,</span><span class="nv"> </span><span class="s">U+0101-&gt;a,</span><span class="nv"> </span><span class="s">U+0102-&gt;a,</span><span class="nv"> </span><span class="s">U+0103-&gt;a,</span><span class="nv"> </span><span class="s">U+0104-&gt;a,</span><span class="nv"> </span><span class="s">U+0105-&gt;a,</span><span class="nv"> </span><span class="s">U+0106-&gt;c,</span><span class="nv"> </span><span class="s">U+0107-&gt;c,</span><span class="nv"> </span><span class="s">U+0108-&gt;c,</span><span class="nv"> </span><span class="s">U+0109-&gt;c,</span><span class="nv"> </span><span class="s">U+010A-&gt;c,</span><span class="nv"> </span><span class="s">U+010B-&gt;c,</span><span class="nv"> </span><span class="s">U+010C-&gt;c,</span><span class="nv"> </span><span class="s">U+010D-&gt;c,</span><span class="nv"> </span><span class="s">U+010E-&gt;d,</span><span class="nv"> </span><span class="s">U+010F-&gt;d,</span><span class="nv"> </span><span class="s">U+0112-&gt;e,</span><span class="nv"> </span><span class="s">U+0113-&gt;e,</span><span class="nv"> </span><span class="s">U+0114-&gt;e,</span><span class="nv"> </span><span class="s">U+0115-&gt;e,</span><span class="nv"> </span><span class="s">U+0116-&gt;e,</span><span class="nv"> </span><span class="s">U+0117-&gt;e,</span><span class="nv"> </span><span class="s">U+0118-&gt;e,</span><span class="nv"> </span><span class="s">U+0119-&gt;e,</span><span class="nv"> </span><span class="s">U+011A-&gt;e,</span><span class="nv"> </span><span class="s">U+011B-&gt;e,</span><span class="nv"> </span><span class="s">U+011C-&gt;g,</span><span class="nv"> </span><span class="s">U+011D-&gt;g,</span><span class="nv"> </span><span class="s">U+011E-&gt;g,</span><span class="nv"> </span><span class="s">U+011F-&gt;g,</span><span class="nv"> </span><span class="s">U+0120-&gt;g,</span><span class="nv"> </span><span class="s">U+0121-&gt;g,</span><span class="nv"> </span><span class="s">U+0122-&gt;g,</span><span class="nv"> </span><span class="s">U+0123-&gt;g,</span><span class="nv"> </span><span class="s">U+0124-&gt;h,</span><span class="nv"> </span><span class="s">U+0125-&gt;h,</span><span class="nv"> </span><span class="s">U+0128-&gt;i,</span><span class="nv"> </span><span class="s">U+0129-&gt;i,</span><span class="nv"> </span><span class="s">U+012A-&gt;i,</span><span class="nv"> </span><span class="s">U+012B-&gt;i,</span><span class="nv"> </span><span class="s">U+012C-&gt;i,</span><span class="nv"> </span><span class="s">U+012D-&gt;i,</span><span class="nv"> </span><span class="s">U+012E-&gt;i,</span><span class="nv"> </span><span class="s">U+012F-&gt;i,</span><span class="nv"> </span><span class="s">U+0130-&gt;i,</span><span class="nv"> </span><span class="s">U+0134-&gt;j,</span><span class="nv"> </span><span class="s">U+0135-&gt;j,</span><span class="nv"> </span><span class="s">U+0136-&gt;k,</span><span class="nv"> </span><span class="s">U+0137-&gt;k,</span><span class="nv"> </span><span class="s">U+0139-&gt;l,</span><span class="nv"> </span><span class="s">U+013A-&gt;l,</span><span class="nv"> </span><span class="s">U+013B-&gt;l,</span><span class="nv"> </span><span class="s">U+013C-&gt;l,</span><span class="nv"> </span><span class="s">U+013D-&gt;l,</span><span class="nv"> </span><span class="s">U+013E-&gt;l,</span><span class="nv"> </span><span class="s">U+0143-&gt;n,</span><span class="nv"> </span><span class="s">U+0144-&gt;n,</span><span class="nv"> </span><span class="s">U+0145-&gt;n,</span><span class="nv"> </span><span class="s">U+0146-&gt;n,</span><span class="nv"> </span><span class="s">U+0147-&gt;n,</span><span class="nv"> </span><span class="s">U+0148-&gt;n,</span><span class="nv"> </span><span class="s">U+014C-&gt;o,</span><span class="nv"> </span><span class="s">U+014D-&gt;o,</span><span class="nv"> </span><span class="s">U+014E-&gt;o,</span><span class="nv"> </span><span class="s">U+014F-&gt;o,</span><span class="nv"> </span><span class="s">U+0150-&gt;o,</span><span class="nv"> </span><span class="s">U+0151-&gt;o,</span><span class="nv"> </span><span class="s">U+0154-&gt;r,</span><span class="nv"> </span><span class="s">U+0155-&gt;r,</span><span class="nv"> </span><span class="s">U+0156-&gt;r,</span><span class="nv"> </span><span class="s">U+0157-&gt;r,</span><span class="nv"> </span><span class="s">U+0158-&gt;r,</span><span class="nv"> </span><span class="s">U+0159-&gt;r,</span><span class="nv"> </span><span class="s">U+015A-&gt;s,</span><span class="nv"> </span><span class="s">U+015B-&gt;s,</span><span class="nv"> </span><span class="s">U+015C-&gt;s,</span><span class="nv"> </span><span class="s">U+015D-&gt;s,</span><span class="nv"> </span><span class="s">U+015E-&gt;s,</span><span class="nv"> </span><span class="s">U+015F-&gt;s,</span><span class="nv"> </span><span class="s">U+0160-&gt;s,</span><span class="nv"> </span><span class="s">U+0161-&gt;s,</span><span class="nv"> </span><span class="s">U+0162-&gt;t,</span><span class="nv"> </span><span class="s">U+0163-&gt;t,</span><span class="nv"> </span><span class="s">U+0164-&gt;t,</span><span class="nv"> </span><span class="s">U+0165-&gt;t,</span><span class="nv"> </span><span class="s">U+0168-&gt;u,</span><span class="nv"> </span><span class="s">U+0169-&gt;u,</span><span class="nv"> </span><span class="s">U+016A-&gt;u,</span><span class="nv"> </span><span class="s">U+016B-&gt;u,</span><span class="nv"> </span><span class="s">U+016C-&gt;u,</span><span class="nv"> </span><span class="s">U+016D-&gt;u,</span><span class="nv"> </span><span class="s">U+016E-&gt;u,</span><span class="nv"> </span><span class="s">U+016F-&gt;u,</span><span class="nv"> </span><span class="s">U+0170-&gt;u,</span><span class="nv"> </span><span class="s">U+0171-&gt;u,</span><span class="nv"> </span><span class="s">U+0172-&gt;u,</span><span class="nv"> </span><span class="s">U+0173-&gt;u,</span><span class="nv"> </span><span class="s">U+0174-&gt;w,</span><span class="nv"> </span><span class="s">U+0175-&gt;w,</span><span class="nv"> </span><span class="s">U+0176-&gt;y,</span><span class="nv"> </span><span class="s">U+0177-&gt;y,</span><span class="nv"> </span><span class="s">U+0178-&gt;y,</span><span class="nv"> </span><span class="s">U+0179-&gt;z,</span><span class="nv"> </span><span class="s">U+017A-&gt;z,</span><span class="nv"> </span><span class="s">U+017B-&gt;z,</span><span class="nv"> </span><span class="s">U+017C-&gt;z,</span><span class="nv"> </span><span class="s">U+017D-&gt;z,</span><span class="nv"> </span><span class="s">U+017E-&gt;z,</span><span class="nv"> </span><span class="s">U+01A0-&gt;o,</span><span class="nv"> </span><span class="s">U+01A1-&gt;o,</span><span class="nv"> </span><span class="s">U+01AF-&gt;u,</span><span class="nv"> </span><span class="s">U+01B0-&gt;u,</span><span class="nv"> </span><span class="s">U+01CD-&gt;a,</span><span class="nv"> </span><span class="s">U+01CE-&gt;a,</span><span class="nv"> </span><span class="s">U+01CF-&gt;i,</span><span class="nv"> </span><span class="s">U+01D0-&gt;i,</span><span class="nv"> </span><span class="s">U+01D1-&gt;o,</span><span class="nv"> </span><span class="s">U+01D2-&gt;o,</span><span class="nv"> </span><span class="s">U+01D3-&gt;u,</span><span class="nv"> </span><span class="s">U+01D4-&gt;u,</span><span class="nv"> </span><span class="s">U+01D5-&gt;u,</span><span class="nv"> </span><span class="s">U+01D6-&gt;u,</span><span class="nv"> </span><span class="s">U+01D7-&gt;u,</span><span class="nv"> </span><span class="s">U+01D8-&gt;u,</span><span class="nv"> </span><span class="s">U+01D9-&gt;u,</span><span class="nv"> </span><span class="s">U+01DA-&gt;u,</span><span class="nv"> </span><span class="s">U+01DB-&gt;u,</span><span class="nv"> </span><span class="s">U+01DC-&gt;u,</span><span class="nv"> </span><span class="s">U+01DE-&gt;a,</span><span class="nv"> </span><span class="s">U+01DF-&gt;a,</span><span class="nv"> </span><span class="s">U+01E0-&gt;a,</span><span class="nv"> </span><span class="s">U+01E1-&gt;a,</span><span class="nv"> </span><span class="s">U+01E6-&gt;g,</span><span class="nv"> </span><span class="s">U+01E7-&gt;g,</span><span class="nv"> </span><span class="s">U+01E8-&gt;k,</span><span class="nv"> </span><span class="s">U+01E9-&gt;k,</span><span class="nv"> </span><span class="s">U+01EA-&gt;o,</span><span class="nv"> </span><span class="s">U+01EB-&gt;o,</span><span class="nv"> </span><span class="s">U+01EC-&gt;o,</span><span class="nv"> </span><span class="s">U+01ED-&gt;o,</span><span class="nv"> </span><span class="s">U+01F0-&gt;j,</span><span class="nv"> </span><span class="s">U+01F4-&gt;g,</span><span class="nv"> </span><span class="s">U+01F5-&gt;g,</span><span class="nv"> </span><span class="s">U+01F8-&gt;n,</span><span class="nv"> </span><span class="s">U+01F9-&gt;n,</span><span class="nv"> </span><span class="s">U+01FA-&gt;a,</span><span class="nv"> </span><span class="s">U+01FB-&gt;a,</span><span class="nv"> </span><span class="s">U+0200-&gt;a,</span><span class="nv"> </span><span class="s">U+0201-&gt;a,</span><span class="nv"> </span><span class="s">U+0202-&gt;a,</span><span class="nv"> </span><span class="s">U+0203-&gt;a,</span><span class="nv"> </span><span class="s">U+0204-&gt;e,</span><span class="nv"> </span><span class="s">U+0205-&gt;e,</span><span class="nv"> </span><span class="s">U+0206-&gt;e,</span><span class="nv"> </span><span class="s">U+0207-&gt;e,</span><span class="nv"> </span><span class="s">U+0208-&gt;i,</span><span class="nv"> </span><span class="s">U+0209-&gt;i,</span><span class="nv"> </span><span class="s">U+020A-&gt;i,</span><span class="nv"> </span><span class="s">U+020B-&gt;i,</span><span class="nv"> </span><span class="s">U+020C-&gt;o,</span><span class="nv"> </span><span class="s">U+020D-&gt;o,</span><span class="nv"> </span><span class="s">U+020E-&gt;o,</span><span class="nv"> </span><span class="s">U+020F-&gt;o,</span><span class="nv"> </span><span class="s">U+0210-&gt;r,</span><span class="nv"> </span><span class="s">U+0211-&gt;r,</span><span class="nv"> </span><span class="s">U+0212-&gt;r,</span><span class="nv"> </span><span class="s">U+0213-&gt;r,</span><span class="nv"> </span><span class="s">U+0214-&gt;u,</span><span class="nv"> </span><span class="s">U+0215-&gt;u,</span><span class="nv"> </span><span class="s">U+0216-&gt;u,</span><span class="nv"> </span><span class="s">U+0217-&gt;u,</span><span class="nv"> </span><span class="s">U+0218-&gt;s,</span><span class="nv"> </span><span class="s">U+0219-&gt;s,</span><span class="nv"> </span><span class="s">U+021A-&gt;t,</span><span class="nv"> </span><span class="s">U+021B-&gt;t,</span><span class="nv"> </span><span class="s">U+021E-&gt;h,</span><span class="nv"> </span><span class="s">U+021F-&gt;h,</span><span class="nv"> </span><span class="s">U+0226-&gt;a,</span><span class="nv"> </span><span class="s">U+0227-&gt;a,</span><span class="nv"> </span><span class="s">U+0228-&gt;e,</span><span class="nv"> </span><span class="s">U+0229-&gt;e,</span><span class="nv"> </span><span class="s">U+022A-&gt;o,</span><span class="nv"> </span><span class="s">U+022B-&gt;o,</span><span class="nv"> </span><span class="s">U+022C-&gt;o,</span><span class="nv"> </span><span class="s">U+022D-&gt;o,</span><span class="nv"> </span><span class="s">U+022E-&gt;o,</span><span class="nv"> </span><span class="s">U+022F-&gt;o,</span><span class="nv"> </span><span class="s">U+0230-&gt;o,</span><span class="nv"> </span><span class="s">U+0231-&gt;o,</span><span class="nv"> </span><span class="s">U+0232-&gt;y,</span><span class="nv"> </span><span class="s">U+0233-&gt;y,</span><span class="nv"> </span><span class="s">U+1E00-&gt;a,</span><span class="nv"> </span><span class="s">U+1E01-&gt;a,</span><span class="nv"> </span><span class="s">U+1E02-&gt;b,</span><span class="nv"> </span><span class="s">U+1E03-&gt;b,</span><span class="nv"> </span><span class="s">U+1E04-&gt;b,</span><span class="nv"> </span><span class="s">U+1E05-&gt;b,</span><span class="nv"> </span><span class="s">U+1E06-&gt;b,</span><span class="nv"> </span><span class="s">U+1E07-&gt;b,</span><span class="nv"> </span><span class="s">U+1E08-&gt;c,</span><span class="nv"> </span><span class="s">U+1E09-&gt;c,</span><span class="nv"> </span><span class="s">U+1E0A-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0B-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0C-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0D-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0E-&gt;d,</span><span class="nv"> </span><span class="s">U+1E0F-&gt;d,</span><span class="nv"> </span><span class="s">U+1E10-&gt;d,</span><span class="nv"> </span><span class="s">U+1E11-&gt;d,</span><span class="nv"> </span><span class="s">U+1E12-&gt;d,</span><span class="nv"> </span><span class="s">U+1E13-&gt;d,</span><span class="nv"> </span><span class="s">U+1E14-&gt;e,</span><span class="nv"> </span><span class="s">U+1E15-&gt;e,</span><span class="nv"> </span><span class="s">U+1E16-&gt;e,</span><span class="nv"> </span><span class="s">U+1E17-&gt;e,</span><span class="nv"> </span><span class="s">U+1E18-&gt;e,</span><span class="nv"> </span><span class="s">U+1E19-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1A-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1B-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1C-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1D-&gt;e,</span><span class="nv"> </span><span class="s">U+1E1E-&gt;f,</span><span class="nv"> </span><span class="s">U+1E1F-&gt;f,</span><span class="nv"> </span><span class="s">U+1E20-&gt;g,</span><span class="nv"> </span><span class="s">U+1E21-&gt;g,</span><span class="nv"> </span><span class="s">U+1E22-&gt;h,</span><span class="nv"> </span><span class="s">U+1E23-&gt;h,</span><span class="nv"> </span><span class="s">U+1E24-&gt;h,</span><span class="nv"> </span><span class="s">U+1E25-&gt;h,</span><span class="nv"> </span><span class="s">U+1E26-&gt;h,</span><span class="nv"> </span><span class="s">U+1E27-&gt;h,</span><span class="nv"> </span><span class="s">U+1E28-&gt;h,</span><span class="nv"> </span><span class="s">U+1E29-&gt;h,</span><span class="nv"> </span><span class="s">U+1E2A-&gt;h,</span><span class="nv"> </span><span class="s">U+1E2B-&gt;h,</span><span class="nv"> </span><span class="s">U+1E2C-&gt;i,</span><span class="nv"> </span><span class="s">U+1E2D-&gt;i,</span><span class="nv"> </span><span class="s">U+1E2E-&gt;i,</span><span class="nv"> </span><span class="s">U+1E2F-&gt;i,</span><span class="nv"> </span><span class="s">U+1E30-&gt;k,</span><span class="nv"> </span><span class="s">U+1E31-&gt;k,</span><span class="nv"> </span><span class="s">U+1E32-&gt;k,</span><span class="nv"> </span><span class="s">U+1E33-&gt;k,</span><span class="nv"> </span><span class="s">U+1E34-&gt;k,</span><span class="nv"> </span><span class="s">U+1E35-&gt;k,</span><span class="nv"> </span><span class="s">U+1E36-&gt;l,</span><span class="nv"> </span><span class="s">U+1E37-&gt;l,</span><span class="nv"> </span><span class="s">U+1E38-&gt;l,</span><span class="nv"> </span><span class="s">U+1E39-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3A-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3B-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3C-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3D-&gt;l,</span><span class="nv"> </span><span class="s">U+1E3E-&gt;m,</span><span class="nv"> </span><span class="s">U+1E3F-&gt;m,</span><span class="nv"> </span><span class="s">U+1E40-&gt;m,</span><span class="nv"> </span><span class="s">U+1E41-&gt;m,</span><span class="nv"> </span><span class="s">U+1E42-&gt;m,</span><span class="nv"> </span><span class="s">U+1E43-&gt;m,</span><span class="nv"> </span><span class="s">U+1E44-&gt;n,</span><span class="nv"> </span><span class="s">U+1E45-&gt;n,</span><span class="nv"> </span><span class="s">U+1E46-&gt;n,</span><span class="nv"> </span><span class="s">U+1E47-&gt;n,</span><span class="nv"> </span><span class="s">U+1E48-&gt;n,</span><span class="nv"> </span><span class="s">U+1E49-&gt;n,</span><span class="nv"> </span><span class="s">U+1E4A-&gt;n,</span><span class="nv"> </span><span class="s">U+1E4B-&gt;n,</span><span class="nv"> </span><span class="s">U+1E4C-&gt;o,</span><span class="nv"> </span><span class="s">U+1E4D-&gt;o,</span><span class="nv"> </span><span class="s">U+1E4E-&gt;o,</span><span class="nv"> </span><span class="s">U+1E4F-&gt;o,</span><span class="nv"> </span><span class="s">U+1E50-&gt;o,</span><span class="nv"> </span><span class="s">U+1E51-&gt;o,</span><span class="nv"> </span><span class="s">U+1E52-&gt;o,</span><span class="nv"> </span><span class="s">U+1E53-&gt;o,</span><span class="nv"> </span><span class="s">U+1E54-&gt;p,</span><span class="nv"> </span><span class="s">U+1E55-&gt;p,</span><span class="nv"> </span><span class="s">U+1E56-&gt;p,</span><span class="nv"> </span><span class="s">U+1E57-&gt;p,</span><span class="nv"> </span><span class="s">U+1E58-&gt;r,</span><span class="nv"> </span><span class="s">U+1E59-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5A-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5B-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5C-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5D-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5E-&gt;r,</span><span class="nv"> </span><span class="s">U+1E5F-&gt;r,</span><span class="nv"> </span><span class="s">U+1E60-&gt;s,</span><span class="nv"> </span><span class="s">U+1E61-&gt;s,</span><span class="nv"> </span><span class="s">U+1E62-&gt;s,</span><span class="nv"> </span><span class="s">U+1E63-&gt;s,</span><span class="nv"> </span><span class="s">U+1E64-&gt;s,</span><span class="nv"> </span><span class="s">U+1E65-&gt;s,</span><span class="nv"> </span><span class="s">U+1E66-&gt;s,</span><span class="nv"> </span><span class="s">U+1E67-&gt;s,</span><span class="nv"> </span><span class="s">U+1E68-&gt;s,</span><span class="nv"> </span><span class="s">U+1E69-&gt;s,</span><span class="nv"> </span><span class="s">U+1E6A-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6B-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6C-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6D-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6E-&gt;t,</span><span class="nv"> </span><span class="s">U+1E6F-&gt;t,</span><span class="nv"> </span><span class="s">U+1E70-&gt;t,</span><span class="nv"> </span><span class="s">U+1E71-&gt;t,</span><span class="nv"> </span><span class="s">U+1E72-&gt;u,</span><span class="nv"> </span><span class="s">U+1E73-&gt;u,</span><span class="nv"> </span><span class="s">U+1E74-&gt;u,</span><span class="nv"> </span><span class="s">U+1E75-&gt;u,</span><span class="nv"> </span><span class="s">U+1E76-&gt;u,</span><span class="nv"> </span><span class="s">U+1E77-&gt;u,</span><span class="nv"> </span><span class="s">U+1E78-&gt;u,</span><span class="nv"> </span><span class="s">U+1E79-&gt;u,</span><span class="nv"> </span><span class="s">U+1E7A-&gt;u,</span><span class="nv"> </span><span class="s">U+1E7B-&gt;u,</span><span class="nv"> </span><span class="s">U+1E7C-&gt;v,</span><span class="nv"> </span><span class="s">U+1E7D-&gt;v,</span><span class="nv"> </span><span class="s">U+1E7E-&gt;v,</span><span class="nv"> </span><span class="s">U+1E7F-&gt;v,</span><span class="nv"> </span><span class="s">U+1E80-&gt;w,</span><span class="nv"> </span><span class="s">U+1E81-&gt;w,</span><span class="nv"> </span><span class="s">U+1E82-&gt;w,</span><span class="nv"> </span><span class="s">U+1E83-&gt;w,</span><span class="nv"> </span><span class="s">U+1E84-&gt;w,</span><span class="nv"> </span><span class="s">U+1E85-&gt;w,</span><span class="nv"> </span><span class="s">U+1E86-&gt;w,</span><span class="nv"> </span><span class="s">U+1E87-&gt;w,</span><span class="nv"> </span><span class="s">U+1E88-&gt;w,</span><span class="nv"> </span><span class="s">U+1E89-&gt;w,</span><span class="nv"> </span><span class="s">U+1E8A-&gt;x,</span><span class="nv"> </span><span class="s">U+1E8B-&gt;x,</span><span class="nv"> </span><span class="s">U+1E8C-&gt;x,</span><span class="nv"> </span><span class="s">U+1E8D-&gt;x,</span><span class="nv"> </span><span class="s">U+1E8E-&gt;y,</span><span class="nv"> </span><span class="s">U+1E8F-&gt;y,</span><span class="nv"> </span><span class="s">U+1E96-&gt;h,</span><span class="nv"> </span><span class="s">U+1E97-&gt;t,</span><span class="nv"> </span><span class="s">U+1E98-&gt;w,</span><span class="nv"> </span><span class="s">U+1E99-&gt;y,</span><span class="nv"> </span><span class="s">U+1EA0-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA1-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA2-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA3-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA4-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA5-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA6-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA7-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA8-&gt;a,</span><span class="nv"> </span><span class="s">U+1EA9-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAA-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAB-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAC-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAD-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAE-&gt;a,</span><span class="nv"> </span><span class="s">U+1EAF-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB0-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB1-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB2-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB3-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB4-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB5-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB6-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB7-&gt;a,</span><span class="nv"> </span><span class="s">U+1EB8-&gt;e,</span><span class="nv"> </span><span class="s">U+1EB9-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBA-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBB-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBC-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBD-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBE-&gt;e,</span><span class="nv"> </span><span class="s">U+1EBF-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC0-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC1-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC2-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC3-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC4-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC5-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC6-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC7-&gt;e,</span><span class="nv"> </span><span class="s">U+1EC8-&gt;i,</span><span class="nv"> </span><span class="s">U+1EC9-&gt;i,</span><span class="nv"> </span><span class="s">U+1ECA-&gt;i,</span><span class="nv"> </span><span class="s">U+1ECB-&gt;i,</span><span class="nv"> </span><span class="s">U+1ECC-&gt;o,</span><span class="nv"> </span><span class="s">U+1ECD-&gt;o,</span><span class="nv"> </span><span class="s">U+1ECE-&gt;o,</span><span class="nv"> </span><span class="s">U+1ECF-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED0-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED1-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED2-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED3-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED4-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED5-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED6-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED7-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED8-&gt;o,</span><span class="nv"> </span><span class="s">U+1ED9-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDA-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDB-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDC-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDD-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDE-&gt;o,</span><span class="nv"> </span><span class="s">U+1EDF-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE0-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE1-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE2-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE3-&gt;o,</span><span class="nv"> </span><span class="s">U+1EE4-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE5-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE6-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE7-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE8-&gt;u,</span><span class="nv"> </span><span class="s">U+1EE9-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEA-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEB-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEC-&gt;u,</span><span class="nv"> </span><span class="s">U+1EED-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEE-&gt;u,</span><span class="nv"> </span><span class="s">U+1EEF-&gt;u,</span><span class="nv"> </span><span class="s">U+1EF0-&gt;u,</span><span class="nv"> </span><span class="s">U+1EF1-&gt;u,</span><span class="nv"> </span><span class="s">U+1EF2-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF3-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF4-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF5-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF6-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF7-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF8-&gt;y,</span><span class="nv"> </span><span class="s">U+1EF9-&gt;y&quot;</span>
</span></code></pre></td></tr></table></div></figure>
-<p>It turns out that it is not enough - even after adding this piece of code some of the polish (that&#8217;s my native language) signs were not recognized properly. After some searching I found a reason - polish &#8220;tails&#8221; were written not as characters in UTF-8 but as an html entities. There&#8217;s a simple and clean solution - add following line to your configuration file:</p>
+<p>It turns out that it is not enough &ndash; even after adding this piece of code some of the polish (that&rsquo;s my native language) signs were not recognized properly. After some searching I found a reason &ndash; polish &ldquo;tails&rdquo; were written not as characters in UTF-8 but as an html entities. There&rsquo;s a simple and clean solution &ndash; add following line to your configuration file:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="l-Scalar-Plain">html_strip</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">1</span>
</span></code></pre></td></tr></table></div></figure>
-<p>And now everything should work great - the only drawback is that the Sphinx ignores accents and converts them into ASCII characters. But that&#8217;s a low price in exchange for functionality that Sphinx gives to you.</p>
+<p>And now everything should work great &ndash; the only drawback is that the Sphinx ignores accents and converts them into ASCII characters. But that&rsquo;s a low price in exchange for functionality that Sphinx gives to you.</p>
</div>
@@ -119,7 +119,7 @@ <h1 class="entry-title">Accents in Sphinx</h1>
-<time datetime="2010-01-24T00:00:00+01:00" pubdate data-updated="true">Jan 24<span>th</span>, 2010</time>
+<time datetime="2010-01-24T00:00:00+01:00" pubdate data-updated="true"></time>
@@ -180,7 +180,7 @@ <h1 class="entry-title">Accents in Sphinx</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -237,7 +237,7 @@ <h1 class="entry-title">Accents in Sphinx</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
12 blog/2010/01/ruby-flavored-shoes/index.html
@@ -75,16 +75,16 @@ <h1 class="entry-title">Ruby-flavored Shoes</h1>
-<time datetime="2010-01-03T00:00:00+01:00" pubdate data-updated="true">Jan 3<span>rd</span>, 2010</time>
+<time datetime="2010-01-03T00:00:00+01:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>Recently, working on my BSc thesis, I had to choose programming language and some framework to create graphical interface. The first thing that came to my mind was C++ and QT library. But that would be too easy :). It&#8217;s time to learn something new. Something connected with Ruby (cause that&#8217;s the language I currently work with). There&#8217;s a couple of nice bindings for QT in Ruby, but all of them seemed not enough &#8220;ruby-way&#8221; to me. Most of them didn&#8217;t comfort to some of my needs (multi-platform, should work OOTB, with acceptable performance) too. Finally I found really interesting framework, namely, Ruby Shoes.</p>
+<div class="entry-content"><p>Recently, working on my BSc thesis, I had to choose programming language and some framework to create graphical interface. The first thing that came to my mind was C++ and QT library. But that would be too easy :). It&rsquo;s time to learn something new. Something connected with Ruby (cause that&rsquo;s the language I currently work with). There&rsquo;s a couple of nice bindings for QT in Ruby, but all of them seemed not enough &ldquo;ruby-way&rdquo; to me. Most of them didn&rsquo;t comfort to some of my needs (multi-platform, should work OOTB, with acceptable performance) too. Finally I found really interesting framework, namely, Ruby Shoes.</p>
-<p>After quick installation on OS X, virtualised Windows and Ubuntu it is time for our beloved &#8220;hello world&#8221; test. Next, few more advanced test. Everything works great. Applications work on all three platforms, contain Ruby Shoes (statically linked), so there&#8217;s no need for any dependencies installation. The only problem is weak support for gems containing native extensions. This especially shows with RMagick. It compiles and starts but as soon as you try to call any function it fails with message that some (existing) bundle doesn&#8217;t exist. You should also be careful when searching for documentation - not every function is described in RDoc. If you can&#8217;t find one then try to look into manual or google it.</p>
+<p>After quick installation on OS X, virtualised Windows and Ubuntu it is time for our beloved &ldquo;hello world&rdquo; test. Next, few more advanced test. Everything works great. Applications work on all three platforms, contain Ruby Shoes (statically linked), so there&rsquo;s no need for any dependencies installation. The only problem is weak support for gems containing native extensions. This especially shows with RMagick. It compiles and starts but as soon as you try to call any function it fails with message that some (existing) bundle doesn&rsquo;t exist. You should also be careful when searching for documentation &ndash; not every function is described in RDoc. If you can&rsquo;t find one then try to look into manual or google it.</p>
</div>
@@ -107,7 +107,7 @@ <h1 class="entry-title">Ruby-flavored Shoes</h1>
-<time datetime="2010-01-03T00:00:00+01:00" pubdate data-updated="true">Jan 3<span>rd</span>, 2010</time>
+<time datetime="2010-01-03T00:00:00+01:00" pubdate data-updated="true"></time>
@@ -166,7 +166,7 @@ <h1 class="entry-title">Ruby-flavored Shoes</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -223,7 +223,7 @@ <h1 class="entry-title">Ruby-flavored Shoes</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
12 blog/2010/01/testing-juggernaut-using-cucumber-and-selenium/index.html
@@ -75,16 +75,16 @@ <h1 class="entry-title">Testing Juggernaut Using Cucumber and Selenium</h1>
-<time datetime="2010-01-24T00:00:00+01:00" pubdate data-updated="true">Jan 24<span>th</span>, 2010</time>
+<time datetime="2010-01-24T00:00:00+01:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>During tests development you usually use well-known and tested solutions like <a href="http://rspec.info">RSpec</a> or <a href="http://cukes.info">Cucumber</a> + <a href="http://github.com/brynary/webrat">Webrat</a>. They let you develop in a fast and convinient way. Unfortunately there are times when you need to get you hands dirty. If your application use only javascript then <a href="http://celerity.rubyforge.org">Celerity</a> may help. But as soon as you incorporate Flash or Java into your application things get much harder. For such situations the <a href="http://seleniumhq.org">Selenium</a> framework should be well-suited. It lets you test your app by simulating user actions through any (supported) web browser. Connection of Selenium and Cucumber seem to be very interesting option too - for more details look at Cucumber wiki.</p>
+<div class="entry-content"><p>During tests development you usually use well-known and tested solutions like <a href="http://rspec.info">RSpec</a> or <a href="http://cukes.info">Cucumber</a> + <a href="http://github.com/brynary/webrat">Webrat</a>. They let you develop in a fast and convinient way. Unfortunately there are times when you need to get you hands dirty. If your application use only javascript then <a href="http://celerity.rubyforge.org">Celerity</a> may help. But as soon as you incorporate Flash or Java into your application things get much harder. For such situations the <a href="http://seleniumhq.org">Selenium</a> framework should be well-suited. It lets you test your app by simulating user actions through any (supported) web browser. Connection of Selenium and Cucumber seem to be very interesting option too &ndash; for more details look at Cucumber wiki.</p>
-<p>By default Cucumber uses one browser to open your application and perform selected tests. But from time to time you may need more instances to run in parallel mode - e.g to test real-time user communication. Luckily there is an easy way to override Selenium scripts in Cucumber letting you open another browser instance and switch between them. You just need to add following lines into &#8220;env.rb&#8221; (or selenium dedicated configuration file).</p>
+<p>By default Cucumber uses one browser to open your application and perform selected tests. But from time to time you may need more instances to run in parallel mode &ndash; e.g to test real-time user communication. Luckily there is an easy way to override Selenium scripts in Cucumber letting you open another browser instance and switch between them. You just need to add following lines into &ldquo;env.rb&rdquo; (or selenium dedicated configuration file).</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -172,7 +172,7 @@ <h1 class="entry-title">Testing Juggernaut Using Cucumber and Selenium</h1>
-<time datetime="2010-01-24T00:00:00+01:00" pubdate data-updated="true">Jan 24<span>th</span>, 2010</time>
+<time datetime="2010-01-24T00:00:00+01:00" pubdate data-updated="true"></time>
@@ -233,7 +233,7 @@ <h1 class="entry-title">Testing Juggernaut Using Cucumber and Selenium</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -290,7 +290,7 @@ <h1 class="entry-title">Testing Juggernaut Using Cucumber and Selenium</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
20 blog/2010/03/cucumber-testing-for-multiple-users-continuation/index.html
@@ -75,18 +75,18 @@ <h1 class="entry-title">Cucumber Testing for Multiple Users - Continuation</h1>
-<time datetime="2010-03-03T00:00:00+01:00" pubdate data-updated="true">Mar 3<span>rd</span>, 2010</time>
+<time datetime="2010-03-03T00:00:00+01:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>A little over a month ago you could read my article about real-time applications testing using Cucumber. In the meantime a new version of Cucumber emerged with <a href="http://github.com/jnicklas/capybara">Capybara</a> support added. Since the previous method posed several problems during system to system migration (especially Snow Leopard hacks occasionally did not work in other systems) we&#8217;ll try a new approach - this time working OOTB in every system.</p>
+<div class="entry-content"><p>A little over a month ago you could read my article about real-time applications testing using Cucumber. In the meantime a new version of Cucumber emerged with <a href="http://github.com/jnicklas/capybara">Capybara</a> support added. Since the previous method posed several problems during system to system migration (especially Snow Leopard hacks occasionally did not work in other systems) we&rsquo;ll try a new approach &ndash; this time working OOTB in every system.</p>
-<p>As always, I will not describe the installation nor configuration process (you can find this in Capybara&#8217;s documentation) so let&#8217;s get straight to the practice. By default Capybara does not allow you to open multiple browser instances. According to the main developer - &#8220;it&#8217;s impossible by design&#8221;. As they say - It&#8217;s impossible. But doable ;) After taking a glance at Capybara&#8217;s code (I must admit that it is written quite nice) I found a couple of points where you could bypass this annoying limitation.</p>
+<p>As always, I will not describe the installation nor configuration process (you can find this in Capybara&rsquo;s documentation) so let&rsquo;s get straight to the practice. By default Capybara does not allow you to open multiple browser instances. According to the main developer &ndash; &ldquo;it&rsquo;s impossible by design&rdquo;. As they say &ndash; It&rsquo;s impossible. But doable ;) After taking a glance at Capybara&rsquo;s code (I must admit that it is written quite nice) I found a couple of points where you could bypass this annoying limitation.</p>
-<p>It is time to get to work. Let&#8217;s create a new set of steps in the features/step_definitions - call it e.g &#8220;selenium_steps.rb&#8221;. For now let&#8217;s assume that we want to open two browser instances (you can change that to different value if you want to). Create a method examining whether any browser instance exists (and creating new one if there&#8217;s none):</p>
+<p>It is time to get to work. Let&rsquo;s create a new set of steps in the features/step_definitions &ndash; call it e.g &ldquo;selenium_steps.rb&rdquo;. For now let&rsquo;s assume that we want to open two browser instances (you can change that to different value if you want to). Create a method examining whether any browser instance exists (and creating new one if there&rsquo;s none):</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -115,7 +115,7 @@ <h1 class="entry-title">Cucumber Testing for Multiple Users - Continuation</h1>
</span></code></pre></td></tr></table></div></figure>
-<p>The second line verifies that you use a correct test engine (in this case selenium). &#8220;current_url&#8221; method call guarantees that browser current state won&#8217;t be lost during process. Next save to a variable state of the browser and then reset it so Capybara can open a new instance. Why not do that by ourselves? The reason is simple - Capybara uses quite a lot of tricks so you could run into potential problems after some code refactoring done by developers. For now this method is sufficient and guarantees stable (or at least predictable) behavior. Next call to &#8220;current_url&#8221; will open a new brower. Finally restore browser to its initial state. Look at the save/restore browser state functions code below:</p>
+<p>The second line verifies that you use a correct test engine (in this case selenium). &ldquo;current_url&rdquo; method call guarantees that browser current state won&rsquo;t be lost during process. Next save to a variable state of the browser and then reset it so Capybara can open a new instance. Why not do that by ourselves? The reason is simple &ndash; Capybara uses quite a lot of tricks so you could run into potential problems after some code refactoring done by developers. For now this method is sufficient and guarantees stable (or at least predictable) behavior. Next call to &ldquo;current_url&rdquo; will open a new brower. Finally restore browser to its initial state. Look at the save/restore browser state functions code below:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -132,7 +132,7 @@ <h1 class="entry-title">Cucumber Testing for Multiple Users - Continuation</h1>
</span></code></pre></td></tr></table></div></figure>
-<p>As you can see, this method is very simple - it only acquires the current session (for Selenium) and &#8220;driver&#8221; (which is actually a reference to the Selenium server instance).</p>
+<p>As you can see, this method is very simple &ndash; it only acquires the current session (for Selenium) and &ldquo;driver&rdquo; (which is actually a reference to the Selenium server instance).</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -157,7 +157,7 @@ <h1 class="entry-title">Cucumber Testing for Multiple Users - Continuation</h1>
</span></code></pre></td></tr></table></div></figure>
-<p>There&#8217;s no magic here too - you just save the session state and override reference to the Selenium Server. Now we can write browser change functions with ease:</p>
+<p>There&rsquo;s no magic here too &ndash; you just save the session state and override reference to the Selenium Server. Now we can write browser change functions with ease:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -213,7 +213,7 @@ <h1 class="entry-title">Cucumber Testing for Multiple Users - Continuation</h1>
-<time datetime="2010-03-03T00:00:00+01:00" pubdate data-updated="true">Mar 3<span>rd</span>, 2010</time>
+<time datetime="2010-03-03T00:00:00+01:00" pubdate data-updated="true"></time>
@@ -274,7 +274,7 @@ <h1 class="entry-title">Cucumber Testing for Multiple Users - Continuation</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -331,7 +331,7 @@ <h1 class="entry-title">Cucumber Testing for Multiple Users - Continuation</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
22 blog/2010/06/css3-in-every-browser-with-sass-and-pie/index.html
@@ -9,7 +9,7 @@
<meta name="author" content="Bernard Potocki">
- <meta name="description" content="Recently, more and more popular is the use of the HTML5 and CSS3. Everyone rushed to them and this is perfectly understandable - after all, &hellip;">
+ <meta name="description" content="Recently, more and more popular is the use of the HTML5 and CSS3. Everyone rushed to them and this is perfectly understandable &ndash; after all, &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -75,14 +75,14 @@ <h1 class="entry-title">CSS3 in Every Browser With SASS and PIE</h1>
-<time datetime="2010-06-18T00:00:00+02:00" pubdate data-updated="true">Jun 18<span>th</span>, 2010</time>
+<time datetime="2010-06-18T00:00:00+02:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>Recently, more and more popular is the use of the HTML5 and CSS3. Everyone rushed to them and this is perfectly understandable - after all, developers will be able to bet on semantic instead of doing work arounds for some browsers. But the problem is that at the moment even the &#8220;modern&#8221; browsers have problems handling some common attributes. The most common example is the border-radius, which has up to three versions - so if we want all browsers display the same rounding, we need to write this as:</p>
+<div class="entry-content"><p>Recently, more and more popular is the use of the HTML5 and CSS3. Everyone rushed to them and this is perfectly understandable &ndash; after all, developers will be able to bet on semantic instead of doing work arounds for some browsers. But the problem is that at the moment even the &ldquo;modern&rdquo; browsers have problems handling some common attributes. The most common example is the border-radius, which has up to three versions &ndash; so if we want all browsers display the same rounding, we need to write this as:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -97,9 +97,9 @@ <h1 class="entry-title">CSS3 in Every Browser With SASS and PIE</h1>
</span></code></pre></td></tr></table></div></figure>
-<p>And this isn&#8217;t &#8220;uniformity&#8221;, but hopefully that for some time only one of them will be needed. At the moment we need to put the whole set every time. And we often forget - as the example <a href="http://github.com">GitHub</a> who sometimes remember and sometimes not to use &#8220;border-radius.&#8221;</p>
+<p>And this isn&rsquo;t &ldquo;uniformity&rdquo;, but hopefully that for some time only one of them will be needed. At the moment we need to put the whole set every time. And we often forget &ndash; as the example <a href="http://github.com">GitHub</a> who sometimes remember and sometimes not to use &ldquo;border-radius.&rdquo;</p>
-<p>Fortunately, if you use the help such as <a href="http://sass-lang.com">SASS</a> (available for many programming languages) then the problem disappears. This framework allows us to define the &#8220;mixins&#8221; which then can be attached anywhere without the need to rewrite the same code several times (according to the <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY</a> mantra) The easiest way would be to show how:</p>
+<p>Fortunately, if you use the help such as <a href="http://sass-lang.com">SASS</a> (available for many programming languages) then the problem disappears. This framework allows us to define the &ldquo;mixins&rdquo; which then can be attached anywhere without the need to rewrite the same code several times (according to the <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY</a> mantra) The easiest way would be to show how:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -124,9 +124,9 @@ <h1 class="entry-title">CSS3 in Every Browser With SASS and PIE</h1>
<p>Mixins themselves are not rendered, but only attached to the other classes so the end user code will be as in the first example.</p>
-<p>Some ask why not use the class instead of id - the answer is simple: the separation of HTML and CSS. Because if one day you&#8217;ll want to get rid of the rounded corners then with one is easier: to remove the entry from the appropriate id or search through all the HTML pages and remove the class?</p>
+<p>Some ask why not use the class instead of id &ndash; the answer is simple: the separation of HTML and CSS. Because if one day you&rsquo;ll want to get rid of the rounded corners then with one is easier: to remove the entry from the appropriate id or search through all the HTML pages and remove the class?</p>
-<p>There remains the problem of one browser - namely Internet Explorer. It does not support the CSS3 specification and at the moment is still very popular. Thats why there are libraries like the <a href="http://css3pie.com">PIE</a> - to facilitate this. For the above border-radius example(and many others) it require only to attach a .htc file and attribute will work well in IE6, IE7 and IE8. The specification requires, however, to attach it to every class in which CSS is used - so our definition this time will look like this:</p>
+<p>There remains the problem of one browser &ndash; namely Internet Explorer. It does not support the CSS3 specification and at the moment is still very popular. Thats why there are libraries like the <a href="http://css3pie.com">PIE</a> &ndash; to facilitate this. For the above border-radius example(and many others) it require only to attach a .htc file and attribute will work well in IE6, IE7 and IE8. The specification requires, however, to attach it to every class in which CSS is used &ndash; so our definition this time will look like this:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -143,7 +143,7 @@ <h1 class="entry-title">CSS3 in Every Browser With SASS and PIE</h1>
</span></code></pre></td></tr></table></div></figure>
-<p>This is another line of which you must remember. And this is the best place where you can see the beauty of SASS - just add this line in one place and will work everywhere. Thus, the final version of the code will look like this:</p>
+<p>This is another line of which you must remember. And this is the best place where you can see the beauty of SASS &ndash; just add this line in one place and will work everywhere. Thus, the final version of the code will look like this:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -191,7 +191,7 @@ <h1 class="entry-title">CSS3 in Every Browser With SASS and PIE</h1>
-<time datetime="2010-06-18T00:00:00+02:00" pubdate data-updated="true">Jun 18<span>th</span>, 2010</time>
+<time datetime="2010-06-18T00:00:00+02:00" pubdate data-updated="true"></time>
@@ -252,7 +252,7 @@ <h1 class="entry-title">CSS3 in Every Browser With SASS and PIE</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -309,7 +309,7 @@ <h1 class="entry-title">CSS3 in Every Browser With SASS and PIE</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
18 blog/2010/06/web-standards-in-mobile-browsers/index.html
@@ -9,7 +9,7 @@
<meta name="author" content="Bernard Potocki">
- <meta name="description" content="For the past few weeks I focused on developing Socky - new WebSocket based push server for Ruby on Rails. Its main advantage was to be working well &hellip;">
+ <meta name="description" content="For the past few weeks I focused on developing Socky &ndash; new WebSocket based push server for Ruby on Rails. Its main advantage was to be working &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -75,20 +75,20 @@ <h1 class="entry-title">Web Standards in Mobile Browsers</h1>
-<time datetime="2010-06-28T00:00:00+02:00" pubdate data-updated="true">Jun 28<span>th</span>, 2010</time>
+<time datetime="2010-06-28T00:00:00+02:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>For the past few weeks I focused on developing <a href="http://github.com/socky/socky-server-ruby">Socky</a> - new WebSocket based push server for Ruby on Rails. Its main advantage was to be working well in places where there is no flash - like iPhone or iPad. It is therefore obvious that I became very sensitive to standard implementation in so called &#8220;modern browsers&#8221; - also mobile ones. So, taking the opportunity of just released iOS4, I decided to write a few words about standard support in mobile browsers.</p>
+<div class="entry-content"><p>For the past few weeks I focused on developing <a href="http://github.com/socky/socky-server-ruby">Socky</a> &ndash; new WebSocket based push server for Ruby on Rails. Its main advantage was to be working well in places where there is no flash &ndash; like iPhone or iPad. It is therefore obvious that I became very sensitive to standard implementation in so called &ldquo;modern browsers&rdquo; &ndash; also mobile ones. So, taking the opportunity of just released iOS4, I decided to write a few words about standard support in mobile browsers.</p>
-<p>First tested was the latest iOS4 - loudly advertised as a strong HTML5 supporter. A set of rapid tests showed that the most important elements actually works flawlessly - audio and video, geolocation or SVG. Also, elements such as CSS 3 border-radius, CSS animations and reflections are working properly. But the most important feature for me, WebSockets, is missing. I don&#8217;t understand why this protocol isn&#8217;t there, when in lately released Safari 5 it wasn&#8217;t issue. So how are users of the system be able to use chat, or HTML multiplayer games? There is also no support for @font-face or Web Workers. Maybe we see in the near future?</p>
+<p>First tested was the latest iOS4 &ndash; loudly advertised as a strong HTML5 supporter. A set of rapid tests showed that the most important elements actually works flawlessly &ndash; audio and video, geolocation or SVG. Also, elements such as CSS 3 border-radius, CSS animations and reflections are working properly. But the most important feature for me, WebSockets, is missing. I don&rsquo;t understand why this protocol isn&rsquo;t there, when in lately released Safari 5 it wasn&rsquo;t issue. So how are users of the system be able to use chat, or HTML multiplayer games? There is also no support for @font-face or Web Workers. Maybe we see in the near future?</p>
-<p>The second largest mobile system is Android - I tested version 2.2(not yet available everywhere). It&#8217;s not disappointing - most of the tests passed without error. As in the iOS audio and video tags work properly, geolocation and CSS 3 too, and, moreover, does @font-face. Unfortunately, there also is no support for WebSocket (which Google Chrome has for a long time) - but fortunately, working flash eliminates this problem (thanks to <a href="http://github.com/gimite/web-socket-js">web-socket-js</a>) I was surprised by the lack of SVG support - I understand that this is a very processor aggravating technology, but lack of it is very arduous.</p>
+<p>The second largest mobile system is Android &ndash; I tested version 2.2(not yet available everywhere). It&rsquo;s not disappointing &ndash; most of the tests passed without error. As in the iOS audio and video tags work properly, geolocation and CSS 3 too, and, moreover, does @font-face. Unfortunately, there also is no support for WebSocket (which Google Chrome has for a long time) &ndash; but fortunately, working flash eliminates this problem (thanks to <a href="http://github.com/gimite/web-socket-js">web-socket-js</a>) I was surprised by the lack of SVG support &ndash; I understand that this is a very processor aggravating technology, but lack of it is very arduous.</p>
-<p>Last discussed system is a WebOS version 1.4.1 (there should be new version 1.4.5 in the next few days) - system is based entirely on HTML and CSS, so you would expect the best support for standards. Unfortunately, there is some disappointment - most of the tests pass, but from presented systems this one have highest number of unsupported technology - @font-face, WebSockets, SVG, and geolocation. Hopefully the next update will improve browser a little.</p>
+<p>Last discussed system is a WebOS version 1.4.1 (there should be new version 1.4.5 in the next few days) &ndash; system is based entirely on HTML and CSS, so you would expect the best support for standards. Unfortunately, there is some disappointment &ndash; most of the tests pass, but from presented systems this one have highest number of unsupported technology &ndash; @font-face, WebSockets, SVG, and geolocation. Hopefully the next update will improve browser a little.</p>
<p>All tests were performed using a <a href="http://www.modernizr.com">Modernizr</a>, and some of them tested manually (audio, video, WebSockets and geolocation)</p>
</div>
@@ -113,7 +113,7 @@ <h1 class="entry-title">Web Standards in Mobile Browsers</h1>
-<time datetime="2010-06-28T00:00:00+02:00" pubdate data-updated="true">Jun 28<span>th</span>, 2010</time>
+<time datetime="2010-06-28T00:00:00+02:00" pubdate data-updated="true"></time>
@@ -174,7 +174,7 @@ <h1 class="entry-title">Web Standards in Mobile Browsers</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -231,7 +231,7 @@ <h1 class="entry-title">Web Standards in Mobile Browsers</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
16 blog/2010/10/socky-announcement/index.html
@@ -9,7 +9,7 @@
<meta name="author" content="Bernard Potocki">
- <meta name="description" content="Meet Socky - the ultimate open-source, cross-platform, secure push server solution for your web applications! Socky uses standard WebSockets where &hellip;">
+ <meta name="description" content="Meet Socky &ndash; the ultimate open-source, cross-platform, secure push server solution for your web applications! Socky uses standard WebSockets &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -75,18 +75,18 @@ <h1 class="entry-title">Socky Announcement</h1>
-<time datetime="2010-10-09T00:00:00+02:00" pubdate data-updated="true">Oct 9<span>th</span>, 2010</time>
+<time datetime="2010-10-09T00:00:00+02:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>Meet Socky - the ultimate open-source, cross-platform, secure push server solution for your web applications! Socky uses standard WebSockets where available, with graceful fallback to Flash-based component making it usable even on mobile devices running iOS, Android and other Flash-enabled browsers.</p>
+<div class="entry-content"><p>Meet Socky &ndash; the ultimate open-source, cross-platform, secure push server solution for your web applications! Socky uses standard WebSockets where available, with graceful fallback to Flash-based component making it usable even on mobile devices running iOS, Android and other Flash-enabled browsers.</p>
-<p>Socky project consists of two independent tools - the Ruby-based push server and client-side library. Socky was developed with performance in mind - the server scales well among any number of hosts and can handle thousands of users on a single host making it perfect for things like chat, broadcasting and other real-time communication features.</p>
+<p>Socky project consists of two independent tools &ndash; the Ruby-based push server and client-side library. Socky was developed with performance in mind &ndash; the server scales well among any number of hosts and can handle thousands of users on a single host making it perfect for things like chat, broadcasting and other real-time communication features.</p>
-<p>What makes Socky different from the competing products? It&#8217;s is free of charge, doesn&#8217;t require any external servers, uses web standards where possible and has few dependencies making it the easiest, cheapest and most universal solution. Over 700 downloads during the first 4 months of development speak for themselves!</p>
+<p>What makes Socky different from the competing products? It&rsquo;s is free of charge, doesn&rsquo;t require any external servers, uses web standards where possible and has few dependencies making it the easiest, cheapest and most universal solution. Over 700 downloads during the first 4 months of development speak for themselves!</p>
<p>Key features:</p>
@@ -132,7 +132,7 @@ <h1 class="entry-title">Socky Announcement</h1>
-<time datetime="2010-10-09T00:00:00+02:00" pubdate data-updated="true">Oct 9<span>th</span>, 2010</time>
+<time datetime="2010-10-09T00:00:00+02:00" pubdate data-updated="true"></time>
@@ -193,7 +193,7 @@ <h1 class="entry-title">Socky Announcement</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -250,7 +250,7 @@ <h1 class="entry-title">Socky Announcement</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
20 blog/2010/12/building-websocket-server-in-ruby/index.html
@@ -9,7 +9,7 @@
<meta name="author" content="Bernard Potocki">
- <meta name="description" content="Vti&#8217;s post about building WebSocket server inspired me to write another one, but this time about both server and client in Ruby. Currently we &hellip;">
+ <meta name="description" content="Vti&rsquo;s post about building WebSocket server inspired me to write another one, but this time about both server and client in Ruby. Currently we &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -75,24 +75,24 @@ <h1 class="entry-title">Building WebSocket Server in Ruby</h1>
-<time datetime="2010-12-05T00:00:00+01:00" pubdate data-updated="true">Dec 5<span>th</span>, 2010</time>
+<time datetime="2010-12-05T00:00:00+01:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p><a href="http://showmetheco.de/articles/2010/11/timtow-to-build-a-websocket-server-in-perl.html">Vti&#8217;s post</a> about building WebSocket server inspired me to write another one, but this time about both server and client in Ruby.</p>
+<div class="entry-content"><p><a href="http://showmetheco.de/articles/2010/11/timtow-to-build-a-websocket-server-in-perl.html">Vti&rsquo;s post</a> about building WebSocket server inspired me to write another one, but this time about both server and client in Ruby.</p>
-<p>Currently we have couple of great implementations of WebSocket in Ruby - <a href="http://github.com/igrigorik/em-websocket">em-websocket</a>, <a href="http://github.com/gimite/web-socket-ruby">web-socket-ruby</a> or <a href="http://rainbows.rubyforge.org/sunshowers">sunshowers</a> to name a few. And looking at each one of them I can see two things - they all are great, and they all are alone. What I mean?</p>
+<p>Currently we have couple of great implementations of WebSocket in Ruby &ndash; <a href="http://github.com/igrigorik/em-websocket">em-websocket</a>, <a href="http://github.com/gimite/web-socket-ruby">web-socket-ruby</a> or <a href="http://rainbows.rubyforge.org/sunshowers">sunshowers</a> to name a few. And looking at each one of them I can see two things &ndash; they all are great, and they all are alone. What I mean?</p>
<p><a href="http://github.com">Github</a> alone says that there are 40 projects in Ruby connected to WebSocket. Some of them are basing one on another, but there are more than 15 server implementations from scratch. Only two support both Draft 75 and Draft 76. And only one support newer drafts. Am I only one who see the problem?</p>
-<p>That&#8217;s why I built <a href="http://github.com/imanel/libwebsocket">LibWebSocket</a> library whose main purpose is to eliminate the problem of aging server implementations - wrapper around multiple drafts of WebSocket with common API that any server implementation can build against. Thank&#8217;s to that whole community will be able to gain instead of working independently. So how to get started?</p>
+<p>That&rsquo;s why I built <a href="http://github.com/imanel/libwebsocket">LibWebSocket</a> library whose main purpose is to eliminate the problem of aging server implementations &ndash; wrapper around multiple drafts of WebSocket with common API that any server implementation can build against. Thank&rsquo;s to that whole community will be able to gain instead of working independently. So how to get started?</p>
<h2>Building server</h2>
-<p>Currently most popular Ruby WebSocket server is em-websocket(I&#8217;m also using it in my <a href="http://github.com/socky">Socky</a> project) and I believe that currently it&#8217;s the best implementation. So why don&#8217;t start from building similar server which just couple of lines instead of huge library?</p>
+<p>Currently most popular Ruby WebSocket server is em-websocket(I&rsquo;m also using it in my <a href="http://github.com/socky">Socky</a> project) and I believe that currently it&rsquo;s the best implementation. So why don&rsquo;t start from building similar server which just couple of lines instead of huge library?</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
@@ -165,7 +165,7 @@ <h1 class="entry-title">Building WebSocket Server in Ruby</h1>
</span></code></pre></td></tr></table></div></figure>
-<p>And that&#8217;s all! Of course it&#8217;s just simplified implementation, but I think that shows what I&#8217;m talking about. No more handling events, checking version and implementing multiple drafts - it&#8217;s all inside! And together with that we can also build client:</p>
+<p>And that&rsquo;s all! Of course it&rsquo;s just simplified implementation, but I think that shows what I&rsquo;m talking about. No more handling events, checking version and implementing multiple drafts &ndash; it&rsquo;s all inside! And together with that we can also build client:</p>
<h2>Building client</h2>
@@ -310,7 +310,7 @@ <h1 class="entry-title">Building WebSocket Server in Ruby</h1>
-<time datetime="2010-12-05T00:00:00+01:00" pubdate data-updated="true">Dec 5<span>th</span>, 2010</time>
+<time datetime="2010-12-05T00:00:00+01:00" pubdate data-updated="true"></time>
@@ -371,7 +371,7 @@ <h1 class="entry-title">Building WebSocket Server in Ruby</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -428,7 +428,7 @@ <h1 class="entry-title">Building WebSocket Server in Ruby</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
14 blog/2011/04/how-to-install-mysql-ruby-gem-in-os-x-snow-leopard/index.html
@@ -9,7 +9,7 @@
<meta name="author" content="Bernard Potocki">
- <meta name="description" content="I know this was posted multiple times by other people, but this information is scattered and hard to find so I&#8217;m posting quick summary. First &hellip;">
+ <meta name="description" content="I know this was posted multiple times by other people, but this information is scattered and hard to find so I&rsquo;m posting quick summary. First &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -75,14 +75,14 @@ <h1 class="entry-title">How to Install MySQL Ruby Gem in OS X Snow Leopard</h1>
-<time datetime="2011-04-04T00:00:00+02:00" pubdate data-updated="true">Apr 4<span>th</span>, 2011</time>
+<time datetime="2011-04-04T00:00:00+02:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>I know this was posted multiple times by other people, but this information is scattered and hard to find so I&#8217;m posting quick summary.</p>
+<div class="entry-content"><p>I know this was posted multiple times by other people, but this information is scattered and hard to find so I&rsquo;m posting quick summary.</p>
<p>First of all you must download <a href="http://dev.mysql.com/downloads/mysql/5.1.html">MySQL binary</a>. Be aware that ruby gem will not work with version newer than 5.1, and in Snow Leopard you should use 64-bit version.</p>
@@ -99,7 +99,7 @@ <h1 class="entry-title">How to Install MySQL Ruby Gem in OS X Snow Leopard</h1>
</span></code></pre></td></tr></table></div></figure>
-<p>Note that if you are using rvm then you shouldn&#8217;t install it in @global gemset - bundler will not see that and will try to recompile it again. So you will need to run this command for every gemset you will be using.</p>
+<p>Note that if you are using rvm then you shouldn&rsquo;t install it in @global gemset &ndash; bundler will not see that and will try to recompile it again. So you will need to run this command for every gemset you will be using.</p>
</div>
@@ -122,7 +122,7 @@ <h1 class="entry-title">How to Install MySQL Ruby Gem in OS X Snow Leopard</h1>
-<time datetime="2011-04-04T00:00:00+02:00" pubdate data-updated="true">Apr 4<span>th</span>, 2011</time>
+<time datetime="2011-04-04T00:00:00+02:00" pubdate data-updated="true"></time>
@@ -183,7 +183,7 @@ <h1 class="entry-title">How to Install MySQL Ruby Gem in OS X Snow Leopard</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -240,7 +240,7 @@ <h1 class="entry-title">How to Install MySQL Ruby Gem in OS X Snow Leopard</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
26 blog/2012/06/how-to-change-default-search-engine-in-safari-6/index.html
@@ -9,7 +9,7 @@
<meta name="author" content="Bernard Potocki">
- <meta name="description" content="When new Safari will be released plugins like Safari Omnibar will be obsolete - new Safari has functionality similar to Chrome Omnibox. Yet - one &hellip;">
+ <meta name="description" content="When new Safari will be released plugins like Safari Omnibar will be obsolete &ndash; new Safari has functionality similar to Chrome Omnibox. Yet & &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -75,22 +75,22 @@ <h1 class="entry-title">How to Change Default Search Engine in Safari 6?</h1>
-<time datetime="2012-06-26T00:00:00+02:00" pubdate data-updated="true">Jun 26<span>th</span>, 2012</time>
+<time datetime="2012-06-26T00:00:00+02:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>When new Safari will be released plugins like <a href="http://hackemist.com/SafariOmnibar/">Safari Omnibar</a> will be obsolete - new Safari has functionality similar to Chrome Omnibox. Yet - one function is missing: option to change search provider. I&#8217;m pretty sure that a lot of us use plugins like SafariOmnibar not just to integrate Google Search with URL bar, but also to be able to use different search providers than Google, Bing and Yahoo.</p>
+<div class="entry-content"><p>When new Safari will be released plugins like <a href="http://hackemist.com/SafariOmnibar/">Safari Omnibar</a> will be obsolete &ndash; new Safari has functionality similar to Chrome Omnibox. Yet &ndash; one function is missing: option to change search provider. I&rsquo;m pretty sure that a lot of us use plugins like SafariOmnibar not just to integrate Google Search with URL bar, but also to be able to use different search providers than Google, Bing and Yahoo.</p>
-<p>Good news: it is still be possible to use custom search. Bad news: it&#8217;s little different that earlier.</p>
+<p>Good <a href="news:">news:</a> it is still be possible to use custom search. Bad <a href="news:">news:</a> it&rsquo;s little different that earlier.</p>
-<p>If you want to integrate multiple search engines like Wiki, Youtube, Quora and many more, then I would suggest to use to <a href="https://duckduckgo.com">DuckDuckGo</a> and it&#8217;s awesome <a href="https://duckduckgo.com/bang.html">!Bang syntax</a> - not only it will allow accessing multiple search engines, but will provide much more functionality than standard Google.</p>
+<p>If you want to integrate multiple search engines like Wiki, Youtube, Quora and many more, then I would suggest to use to <a href="https://duckduckgo.com">DuckDuckGo</a> and it&rsquo;s awesome <a href="https://duckduckgo.com/bang.html">!Bang syntax</a> &ndash; not only it will allow accessing multiple search engines, but will provide much more functionality than standard Google.</p>
<h2>How to change provider to DuckDuckGo?</h2>
-<p>I know that there&#8217;s a lot of scary methods around net that will show you methods like manualy editing binary file or messing with configuration. I&#8217;m not a big fan of those - mostly because after every Safari update you will be forced to do it again. What I prefer is much cleaner way of <a href="http://help.duckduckgo.com/customer/portal/articles/255650">editing single text file in system</a>.</p>
+<p>I know that there&rsquo;s a lot of scary methods around net that will show you methods like manualy editing binary file or messing with configuration. I&rsquo;m not a big fan of those &ndash; mostly because after every Safari update you will be forced to do it again. What I prefer is much cleaner way of <a href="http://help.duckduckgo.com/customer/portal/articles/255650">editing single text file in system</a>.</p>
<p>What you will need to do is editing file /etc/hosts, which contain DNS entries, and change one of currently used search providers to DuckDuckGo server.</p>
@@ -99,15 +99,15 @@ <h1 class="entry-title">How to Change Default Search Engine in Safari 6?</h1>
</span></code></pre></td></tr></table></div></figure>
-<p>This will change all searches via &#8220;Search using Yahoo!&#8221; option to search via DuckDuckGo. It&#8217;s possible to change Google or Bing search to work like that, but it&#8217;s not recommended because it will prevent to access all Google/Bing functionality, when Yahoo have it&#8217;s search engine in separate subdomain so it&#8217;s non-obtrusive.</p>
+<p>This will change all searches via &ldquo;Search using Yahoo!&rdquo; option to search via DuckDuckGo. It&rsquo;s possible to change Google or Bing search to work like that, but it&rsquo;s not recommended because it will prevent to access all Google/Bing functionality, when Yahoo have it&rsquo;s search engine in separate subdomain so it&rsquo;s non-obtrusive.</p>
<h2>But I want to still use Google as main engine!</h2>
-<p>For some of you fully changing to DuckDuckGo is no-go. Because of that there&#8217;s another method - redirecting all Google Searches with !Bang syntax to DuckDuckGo(which will redirect to according search engine or page).</p>
+<p>For some of you fully changing to DuckDuckGo is no-go. Because of that there&rsquo;s another method &ndash; redirecting all Google Searches with !Bang syntax to DuckDuckGo(which will redirect to according search engine or page).</p>
-<p>In order to do so you will need to support for Greasemonkey UserScripts. There was obsolete method with SIMBL plugin for that, but currently Safari extension build on standard APIs exists - it&#8217;s called <a href="http://mac.softpedia.com/get/Internet-Utilities/NinjaKit-for-Safari.shtml">NinjaKit</a>. Please install it to gain access to all user scripts available at <a href="http://userscripts.org/">http://userscripts.org/</a>.</p>
+<p>In order to do so you will need to support for Greasemonkey UserScripts. There was obsolete method with SIMBL plugin for that, but currently Safari extension build on standard APIs exists &ndash; it&rsquo;s called <a href="http://mac.softpedia.com/get/Internet-Utilities/NinjaKit-for-Safari.shtml">NinjaKit</a>. Please install it to gain access to all user scripts available at <a href="http://userscripts.org/">http://userscripts.org/</a>.</p>
-<p>After installing NinjaKit all you need is to add simple UserScript that will detect and redirect queries staring with bang - you can find it <a href="https://gist.github.com/1817223">here</a>. From now on you can use normal Google Search, but when i.e. want to search YouTube instead just type in search bar:</p>
+<p>After installing NinjaKit all you need is to add simple UserScript that will detect and redirect queries staring with bang &ndash; you can find it <a href="https://gist.github.com/1817223">here</a>. From now on you can use normal Google Search, but when i.e. want to search YouTube instead just type in search bar:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='sh'><span class='line'>!yt funny cats
@@ -135,7 +135,7 @@ <h1 class="entry-title">How to Change Default Search Engine in Safari 6?</h1>
-<time datetime="2012-06-26T00:00:00+02:00" pubdate data-updated="true">Jun 26<span>th</span>, 2012</time>
+<time datetime="2012-06-26T00:00:00+02:00" pubdate data-updated="true"></time>
@@ -196,7 +196,7 @@ <h1 class="entry-title">How to Change Default Search Engine in Safari 6?</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -253,7 +253,7 @@ <h1 class="entry-title">How to Change Default Search Engine in Safari 6?</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
20 blog/2012/12/moving-forward-with-websockets/index.html
@@ -9,7 +9,7 @@
<meta name="author" content="Bernard Potocki">
- <meta name="description" content="Two years ago I created LibWebSocket - gem designed to abstract complicated WebSocket API and make it easy to use. During this time a lot things &hellip;">
+ <meta name="description" content="Two years ago I created LibWebSocket &ndash; gem designed to abstract complicated WebSocket API and make it easy to use. During this time a lot &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -75,22 +75,22 @@ <h1 class="entry-title">Moving Forward With WebSockets</h1>
-<time datetime="2012-12-20T00:00:00+01:00" pubdate data-updated="true">Dec 20<span>th</span>, 2012</time>
+<time datetime="2012-12-20T00:00:00+01:00" pubdate data-updated="true"></time>
</p>
</header>
-<div class="entry-content"><p>Two years ago I created <a href="https://rubygems.org/gems/libwebsocket">LibWebSocket</a> - gem designed to abstract complicated WebSocket API and make it easy to use. During this time a lot things happened - several big gems started using LibWebSocket(like Selenium-Webdriver and Pusher), and it was downloaded nearly 1,5 million times. A lot changed in WebSocket world itself - couple drafts passed, specification <a href="http://datatracker.ietf.org/doc/rfc6455/?include_text=1">was standardized</a> and most browsers implemented <a href="http://caniuse.com/websockets">native support</a> for WS protocol.</p>
+<div class="entry-content"><p>Two years ago I created <a href="https://rubygems.org/gems/libwebsocket">LibWebSocket</a> &ndash; gem designed to abstract complicated WebSocket API and make it easy to use. During this time a lot things happened &ndash; several big gems started using LibWebSocket(like Selenium-Webdriver and Pusher), and it was downloaded nearly 1,5 million times. A lot changed in WebSocket world itself &ndash; couple drafts passed, specification <a href="http://datatracker.ietf.org/doc/rfc6455/?include_text=1">was standardized</a> and most browsers implemented <a href="http://caniuse.com/websockets">native support</a> for WS protocol.</p>
-<p>But time passes and old solutions needs updates. Unfortunately, because big changes in specification it&#8217;s impossible to keep LibWebSocket up to date - mostly because of new features that are incompatible with some design decisions made during creation of LibWebSocket. Because of that I decided that best option is to rewrite it from scratch, with new standards in mind. As a result I would like to announce new gem: <a href="https://github.com/imanel/websocket-ruby">WebSocket-Ruby</a>.</p>
+<p>But time passes and old solutions needs updates. Unfortunately, because big changes in specification it&rsquo;s impossible to keep LibWebSocket up to date &ndash; mostly because of new features that are incompatible with some design decisions made during creation of LibWebSocket. Because of that I decided that best option is to rewrite it from scratch, with new standards in mind. As a result I would like to announce new gem: <a href="https://github.com/imanel/websocket-ruby">WebSocket-Ruby</a>.</p>
-<p>Most of you will ask &#8220;why we need another WebSocket implementation?&#8221;. That is great question, and let me answer it before moving forward. Currently we have multiple servers and maybe one or two clients for WebSocket. Each of them implements standard by itself, which results in multiple bugs and quirks - even most widely used EM-WebSocket have its own collection. In addition to that focusing on both server part and WebSocket API part make development a lot slower - I strongly believe that splitting responsibility to separate gems is best approach(for proof please see Rack and Thin separation).</p>
+<p>Most of you will ask &ldquo;why we need another WebSocket implementation?&rdquo;. That is great question, and let me answer it before moving forward. Currently we have multiple servers and maybe one or two clients for WebSocket. Each of them implements standard by itself, which results in multiple bugs and quirks &ndash; even most widely used EM-WebSocket have its own collection. In addition to that focusing on both server part and WebSocket API part make development a lot slower &ndash; I strongly believe that splitting responsibility to separate gems is best approach(for proof please see Rack and Thin separation).</p>
-<p>In order to make sure that this implementation is reliable I created two additional gems - WebSocket <a href="http://github.com/imanel/websocket-eventmachine-client">Client</a> and <a href="http://github.com/imanel/websocket-eventmachine-server">Server</a>. At the time of writing this article both of them have full <a href="http://autobahn.ws">Autobahn</a> compatibility and best performance from all other Ruby implementations.</p>
+<p>In order to make sure that this implementation is reliable I created two additional gems &ndash; WebSocket <a href="http://github.com/imanel/websocket-eventmachine-client">Client</a> and <a href="http://github.com/imanel/websocket-eventmachine-server">Server</a>. At the time of writing this article both of them have full <a href="http://autobahn.ws">Autobahn</a> compatibility and best performance from all other Ruby implementations.</p>
-<p>My next step is to start making pull requests for other major WebSocket clients and servers implementations - the more of them will use common implementation, the better it will be, and whole community will benefit. So if you are maintainer of such implementation, or you are willing to simply help transferring your favorite one to WebSocket-Ruby then I will gladly help.</p>
+<p>My next step is to start making pull requests for other major WebSocket clients and servers implementations &ndash; the more of them will use common implementation, the better it will be, and whole community will benefit. So if you are maintainer of such implementation, or you are willing to simply help transferring your favorite one to WebSocket-Ruby then I will gladly help.</p>
</div>
@@ -113,7 +113,7 @@ <h1 class="entry-title">Moving Forward With WebSockets</h1>
-<time datetime="2012-12-20T00:00:00+01:00" pubdate data-updated="true">Dec 20<span>th</span>, 2012</time>
+<time datetime="2012-12-20T00:00:00+01:00" pubdate data-updated="true"></time>
@@ -172,7 +172,7 @@ <h1 class="entry-title">Moving Forward With WebSockets</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -229,7 +229,7 @@ <h1 class="entry-title">Moving Forward With WebSockets</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
View
35 blog/archives/index.html → blog/index.html
@@ -5,13 +5,13 @@
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
- <title>Blog Archive - Imanel's blog</title>
+ <title>Imanel's blog</title>
<meta name="author" content="Bernard Potocki">
- <meta name="description" content="Blog Archive 2012 Moving forward with WebSockets
+ <meta name="description" content="2012 Moving forward with WebSockets
Dec 20 2012 How to change default search engine in Safari 6?
-Jun 26 2012 2011 How to install MySQL &hellip;">
+Jun 26 2012 2011 How to install MySQL Ruby gem in &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -20,7 +20,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="canonical" href="http://imanel.org/blog/archives/">
+ <link rel="canonical" href="http://imanel.org/blog/">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/modernizr-2.0.js"></script>
@@ -59,11 +59,6 @@
<div>
<article role="article">
- <header>
- <h1 class="entry-title">Blog Archive</h1>
-
- </header>
-
<div id="blog-archives">
@@ -188,6 +183,11 @@ <h1 class="entry-title">Blog Archive</h1>
</div>
+ <footer>
+
+
+ </footer>
+
</article>
</div>
@@ -219,7 +219,7 @@ <h1 class="entry-title">Blog Archive</h1>
</li>
</ul>
- More in <a href="/">Archive</a>
+ More in <a href="/blog">Archive</a>
</section>
<section>
@@ -276,26 +276,13 @@ <h1 class="entry-title">Blog Archive</h1>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
+ Copyright &copy; 2014 - Bernard Potocki -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
-<script type="text/javascript">
- var disqus_shortname = 'imanel-org';
-
-
- var disqus_script = 'count.js';
-
- (function () {
- var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://' + disqus_shortname + '.disqus.com/' + disqus_script;
- (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
- }());
-</script>
-
View
305 index.html
@@ -1,37 +1,19 @@
-
<!DOCTYPE html>
-<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
-<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
-<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
-<head>
- <meta charset="utf-8">
- <title>Imanel's blog</title>
- <meta name="author" content="Bernard Potocki">
-
-
- <meta name="description" content="2012 Moving forward with WebSockets
-Dec 20 2012 How to change default search engine in Safari 6?
-Jun 26 2012 2011 How to install MySQL Ruby gem in &hellip;">
-
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Imanel</title>
+ <meta name="author" content="Bernard Potocki">
- <!-- http://t.co/dKP3o1e -->
- <meta name="HandheldFriendly" content="True">
- <meta name="MobileOptimized" content="320">
- <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
-
- <link rel="canonical" href="http://imanel.org/">
- <link href="/favicon.png" rel="icon">
- <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
- <script src="/javascripts/modernizr-2.0.js"></script>
- <script src="/javascripts/ender.js"></script>
- <script src="/javascripts/octopress.js" type="text/javascript"></script>
- <link href="http://feeds.feedburner.com/imanel" rel="alternate" title="Imanel's blog" type="application/atom+xml">
- <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+ <link href="/favicon.png" rel="icon">
+ <link href="/stylesheets/intro.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
-
+
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-19412035-1']);
@@ -45,263 +27,14 @@
</script>
-</head>
-
-<body class="collapse-sidebar sidebar-footer" >
- <header role="banner"><hgroup>
- <h1><a href="/">Imanel's blog</a></h1>
-
-</hgroup>
-
-</header>
- <div id="main">
- <div id="content">
- <div>
-<article role="article">
-
- <div id="blog-archives">
-
-
-
-
- <h2>2012</h2>
-
-<article>
-
-<h1><a href="/blog/2012/12/moving-forward-with-websockets/">Moving forward with WebSockets</a></h1>
-<time datetime="2012-12-20T00:00:00+01:00" pubdate><span class='month'>Dec</span> <span class='day'>20</span> <span class='year'>2012</span></time>
-
-
-</article>
-
-
-
-<article>
-
-<h1><a href="/blog/2012/06/how-to-change-default-search-engine-in-safari-6/">How to change default search engine in Safari 6?</a></h1>
-<time datetime="2012-06-26T00:00:00+02:00" pubdate><span class='month'>Jun</span> <span class='day'>26</span> <span class='year'>2012</span></time>
-
-
-</article>
-
-
-
-
- <h2>2011</h2>
-
-<article>
-
-<h1><a href="/blog/2011/04/how-to-install-mysql-ruby-gem-in-os-x-snow-leopard/">How to install MySQL Ruby gem in OS X Snow Leopard</a></h1>
-<time datetime="2011-04-04T00:00:00+02:00" pubdate><span class='month'>Apr</span> <span class='day'>04</span> <span class='year'>2011</span></time>
-
-
-</article>
-
-
-
-
- <h2>2010</h2>
-
-<article>
-
-<h1><a href="/blog/2010/12/building-websocket-server-in-ruby/">Building WebSocket server in Ruby</a></h1>
-<time datetime="2010-12-05T00:00:00+01:00" pubdate><span class='month'>Dec</span> <span class='day'>05</span> <span class='year'>2010</span></time>
-
-
-</article>
-
-
-
-<article>
-
-<h1><a href="/blog/2010/10/socky-announcement/">Socky Announcement</a></h1>
-<time datetime="2010-10-09T00:00:00+02:00" pubdate><span class='month'>Oct</span> <span class='day'>09</span> <span class='year'>2010</span></time>
-
-
-</article>
-
-
-
-<article>
-
-<h1><a href="/blog/2010/06/web-standards-in-mobile-browsers/">Web standards in mobile browsers</a></h1>
-<time datetime="2010-06-28T00:00:00+02:00" pubdate><span class='month'>Jun</span> <span class='day'>28</span> <span class='year'>2010</span></time>
-
-
-</article>
-
-
-
-<article>
-
-<h1><a href="/blog/2010/06/css3-in-every-browser-with-sass-and-pie/">CSS3 in every browser with SASS and PIE</a></h1>
-<time datetime="2010-06-18T00:00:00+02:00" pubdate><span class='month'>Jun</span> <span class='day'>18</span> <span class='year'>2010</span></time>
-
-
-</article>
-
-
-
-<article>
-
-<h1><a href="/blog/2010/03/cucumber-testing-for-multiple-users-continuation/">Cucumber testing for multiple users - continuation</a></h1>
-<time datetime="2010-03-03T00:00:00+01:00" pubdate><span class='month'>Mar</span> <span class='day'>03</span> <span class='year'>2010</span></time>
-
-
-</article>
-
-
-
-<article>
-
-<h1><a href="/blog/2010/01/testing-juggernaut-using-cucumber-and-selenium/">Testing Juggernaut using Cucumber and Selenium</a></h1>
-<time datetime="2010-01-24T00:00:00+01:00" pubdate><span class='month'>Jan</span> <span class='day'>24</span> <span class='year'>2010</span></time>
-
-
-</article>
-
-
-
-<article>
-
-<h1><a href="/blog/2010/01/accents-in-sphinx/">Accents in Sphinx</a></h1>
-<time datetime="2010-01-24T00:00:00+01:00" pubdate><span class='month'>Jan</span> <span class='day'>24</span> <span class='year'>2010</span></time>
-
-
-</article>
-
-
-
-<article>
-
-<h1><a href="/blog/2010/01/ruby-flavored-shoes/">Ruby-flavored shoes</a></h1>
-<time datetime="2010-01-03T00:00:00+01:00" pubdate><span class='month'>Jan</span> <span class='day'>03</span> <span class='year'>2010</span></time>
-
-
-</article>
-
-</div>
-
-
- <footer>
-
-
- </footer>
-
-</article>
-
-</div>
-
-<aside class="sidebar">
-
- <section>
- <h1>Recent Posts</h1>
- <ul id="recent_posts">
-
- <li class="post">
- <a href="/blog/2012/12/moving-forward-with-websockets/">Moving forward with WebSockets</a>
- </li>
-
- <li class="post">
- <a href="/blog/2012/06/how-to-change-default-search-engine-in-safari-6/">How to change default search engine in Safari 6?</a>
- </li>
-
- <li class="post">
- <a href="/blog/2011/04/how-to-install-mysql-ruby-gem-in-os-x-snow-leopard/">How to install MySQL Ruby gem in OS X Snow Leopard</a>
- </li>
-
- <li class="post">
- <a href="/blog/2010/12/building-websocket-server-in-ruby/">Building WebSocket server in Ruby</a>
- </li>
-
- <li class="post">
- <a href="/blog/2010/10/socky-announcement/">Socky Announcement</a>
- </li>
-
- </ul>
- More in <a href="/">Archive</a>
-</section>
-
-<section>
- <h1>GitHub Repos</h1>
- <ul id="gh_repos">
- <li class="loading">Status updating...</li>
- </ul>
-
- <a href="https://github.com/imanel">@imanel</a> on GitHub
-
- <script type="text/javascript">
- $.domReady(function(){
- if (!window.jXHR){
- var jxhr = document.createElement('script');
- jxhr.type = 'text/javascript';
- jxhr.src = '/javascripts/libs/jXHR.js';
- var s = document.getElementsByTagName('script')[0];
- s.parentNode.insertBefore(jxhr, s);
- }
-
- github.showRepos({
- user: 'imanel',
- count: 5,
- skip_forks: true,
- target: '#gh_repos'
- });
- });
- </script>
- <script src="/javascripts/github.js" type="text/javascript"> </script>
-</section>
-
-
-<section>
- <h1>Latest Tweets</h1>
- <ul id="tweets">
- <li class="loading">Status updating...</li>
- </ul>
- <script type="text/javascript">
- $.domReady(function(){
- getTwitterFeed("_imanel", 5, false);
- });
- </script>
- <script src="/javascripts/twitter.js" type="text/javascript"> </script>
-
- <a href="http://twitter.com/_imanel" class="twitter-follow-button" data-show-count="false">Follow @_imanel</a>
-
-</section>
-
-
-
-</aside>
-
-
+ </head>
+ <body>
+ <section id="intro">
+ <h1>Hello, I’m Bernard</h1>
+ <div id="social">
+ <a href="/blog" name="Blog" class="social blog"><img src="/assets/rss.png"></a>
+ <a href="http://github.com/imanel" name="Github" class="social github"><img src="/assets/github.png"></a>
+ <a href="http://twitter.com/_imanel" name="Twitter" class="social twitter"><img src="/assets/twitter.png"></a>
</div>
- </div>
- <footer role="contentinfo"><p>
- Copyright &copy; 2013 - Bernard Potocki -
- <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
-</p>
-
-</footer>
-
-
-
-
-
-
-
-
- <script type="text/javascript">
- (function(){
- var twitterWidgets = document.createElement('script');
- twitterWidgets.type = 'text/javascript';
- twitterWidgets.async = true;
- twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
- document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
- })();
- </script>
-
-
-
-
-
-</body>
+ </body>
</html>
View
6 sitemap.xml
@@ -53,12 +53,12 @@
<lastmod>2013-01-18T05:49:51+01:00</lastmod>
</url>
<url>
- <loc>http://imanel.org/blog/archives/</loc>
- <lastmod>2013-01-18T05:22:59+01:00</lastmod>
+ <loc>http://imanel.org/blog/</loc>
+ <lastmod>2014-02-02T18:21:10+01:00</lastmod>
</url>
<url>
<loc>http://imanel.org/</loc>
- <lastmod>2013-01-18T05:56:04+01:00</lastmod>
+ <lastmod>2014-02-02T19:46:00+01:00</lastmod>
</url>
<url>
<loc>http://imanel.org/robots.txt</loc>
View
108 stylesheets/intro.css
@@ -0,0 +1,108 @@
+#intro {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 560px;
+ height: 360px;
+ margin-top: -180px;
+ margin-left: -280px;
+ text-align: center;
+}
+
+h1, .social {
+ opacity: 0.1;
+ transition: all 1s;
+}
+
+h1:hover, .social:hover {
+ opacity: 1;
+}
+
+h1 {
+ font-family: "PT Sans", "Helvetica Neue", Arial, sans-serif;
+ font-size: 72px;
+ margin-top: 0;
+ padding-bottom: 50px;
+ display: inline-block;
+}
+
+.social {
+ margin: 0 60px;
+ -webkit-filter: grayscale(1);
+}
+.social.blog {
+ margin-left: 0;
+}
+.social.twitter {
+ margin-right: 0;
+}
+
+.social:hover {
+ -webkit-filter: grayscale(0);
+}
+
+.social img {
+ width: 100px;
+ margin: 0;
+ padding: 0;
+}
+
+@-moz-keyframes reset { 0% {opacity: 0;} 100% {opacity: 0;} }
+@-webkit-keyframes reset { 0% {opacity: 0;} 100% {opacity: 0;} }
+@keyframes reset { 0% {opacity: 0;} 100% {opacity: 0;} }
+
+@-moz-keyframes fade-in { 0% {opacity: 0;} 60% {opacity: 0;} 100% {opacity: 0.1;} }
+@-webkit-keyframes fade-in { 0% {opacity: 0;} 60% {opacity: 0;} 100% {opacity: 0.1;} }
+@keyframes fade-in { 0% {opacity: 0;} 60% {opacity: 0;} 100% {opacity: 0.1;} }
+
+h1 {
+ -moz-animation: reset 0s, fade-in 2s;
+ -webkit-animation: reset 0s, fade-in 2s;
+ animation: reset 0s, fade-in 2s;
+}
+
+.social {
+ -moz-animation: reset 2s ease-in 0s 1, fade-in 2s ease-in 0s 1;
+ -webkit-animation: reset 2s ease-in 0s 1, fade-in 2s ease-in 0s 1;
+ animation: reset 2s ease-in 0s 1, fade-in 2s ease-in 0s 1;
+}
+
+.social.blog {
+ -moz-animation-delay: 0s, 0.5s;
+ -webkit-animation-delay: 0s, 0.5s;
+ animation-delay: 0s, 0.5s;
+}
+.social.github {
+ -moz-animation-delay: 0s, 1s;
+ -webkit-animation-delay: 0s, 1s;
+ animation-delay: 0s, 1s;
+}
+.social.twitter {
+ -moz-animation-delay: 0s, 1.5s;
+ -webkit-animation-delay: 0s, 1.5s;