<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>CppCMS Blog :: Unicode and Localization</title>
	<link>http://blog.cppcms.com/</link>
	<description>A blog on CppCMS - C++ Web Development Framework</description>
	<atom:link 
		href="http://blog.cppcms.com/rss/cat/10/" 
		rel="self" type="application/rss+xml" />
	

	
	<item>
		<title>How not to do Unicode...</title>
		<link>http://blog.cppcms.com/post/105</link>
		<guid>http://blog.cppcms.com/post/105</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;All started from a small problem, how to print Unicode text to the Windows Console with option redirect to a file.&lt;/p&gt;

&lt;p&gt;Let&#39;s say we have a program Hello that prints few words in several languages to the screen..&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main()
{
    printf(&quot;Мир Peace Ειρήνη\n&quot;);
    return 0;   
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The program above is trivial and works fine under Windows if current console codepage is set to UTF-8. Also this can be fixed from the program by calling &lt;code&gt;SetConsolseOutputCP(CP_UTF8)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now simple tweak... Instead of that standard C &lt;code&gt;printf&lt;/code&gt; we would use standard C++ &lt;code&gt;std::cout&lt;/code&gt;... It works fine for GCC. But under Visual C++ it prints squares...&lt;/p&gt;

&lt;p&gt;If I try redirection &lt;code&gt;test.exe &amp;gt;test.txt&lt;/code&gt; - I get perfectly fine UTF-8 text...&lt;/p&gt;

&lt;p&gt;I had started researching the issue and found the &lt;a href=&quot;http://blogs.msdn.com/b/michkap/archive/2008/03/18/8306597.aspx&quot;&gt;post&lt;/a&gt; of one of the Windows Unicode Gurus &lt;a href=&quot;http://blogs.msdn.com/b/michkap/&quot;&gt;Michael Kaplan&#39;s&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I&#39;ve tried to run &lt;code&gt;_setmode(_fileno(stdout), _O_U8TEXT)&lt;/code&gt; as recommended by the
Microsoft&#39;s Unicode guru and... By program crashed on attempt to write
to the output stream.&lt;/p&gt;

&lt;p&gt;Keeping searching for an answer I&#39;ve got to this &lt;a href=&quot;http://connect.microsoft.com/VisualStudio/feedback/details/431244/std-ostream-fails-to-write-utf-8-encoded-string-to-console&quot;&gt;bug report&lt;/a&gt;...&lt;/p&gt;

&lt;p&gt;Short summary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User: Can&#39;t print UTF-8 to console with std::cout&lt;/li&gt;
&lt;li&gt;MS: Closing - this is by design, see Michael Kaplan&#39;s article about writing to console&lt;/li&gt;
&lt;li&gt;User: But if I do what suggested program crashes, and I still can&#39;t write Unicode to console&lt;/li&gt;
&lt;li&gt;MS: Reactivate the ticket if it does not works&lt;/li&gt;
&lt;li&gt;User: it does not!&lt;/li&gt;
&lt;li&gt;MS: Use wide output...&lt;/li&gt;
&lt;li&gt;User: I&#39;d rather use fprintf in first place!?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;To the summary...&lt;/p&gt;

&lt;p&gt;If you use Visual C++ you can&#39;t use UTF-8 to print text to &lt;code&gt;std::cout&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you still want to, please read this &lt;a href=&quot;http://alfps.wordpress.com/2011/12/08/unicode-part-2-utf-8-stream-mode/&quot;&gt;amazingly long article&lt;/a&gt; about
how to make &lt;code&gt;wcout&lt;/code&gt; and &lt;code&gt;cout&lt;/code&gt; working, but it does not really give a simple
solution - finally falling to redefinition of the stream buffers...&lt;/p&gt;

&lt;p&gt;So please, if you design API or Operating System, &lt;strong&gt;do not use&lt;/strong&gt; kind of &quot;Wide&quot; API...
This is is the wrong way to do Unicode.&lt;/p&gt;

&lt;p&gt;Which reminds me... Spread around:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.utf8everywhere.org/&quot;&gt;http://www.utf8everywhere.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Related Posts: &lt;a href=&quot;http://blog.cppcms.com/post/62&quot;&gt;http://blog.cppcms.com/post/62&lt;/a&gt;&lt;/p&gt;
		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>The lecture slides and the poster from August Penguin 2011 conference.</title>
		<link>http://blog.cppcms.com/post/85</link>
		<guid>http://blog.cppcms.com/post/85</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;I had given a lecture at &lt;a href=&quot;http://en.wikipedia.org/wiki/August_Penguin&quot;&gt;August Penguin&lt;/a&gt; conference about Boost.Locale and presented a poster about CppCMS project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The slides for the lecture about Boost.Locale:

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://art-blog.no-ip.info/files/August-Pinguin-Boost-Locale.odp&quot;&gt;odp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://art-blog.no-ip.info/files/August-Pinguin-Boost-Locale.pdf&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The poster &lt;a href=&quot;http://art-blog.no-ip.info/files/august-pinguin-cppcms-poster.pdf&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>CppCMS 0.99.8 and Boost.Locale 4.0.0 Rleased</title>
		<link>http://blog.cppcms.com/post/82</link>
		<guid>http://blog.cppcms.com/post/82</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;New Versions of CppCMS and Boost.Locale were released.&lt;/p&gt;

&lt;h3&gt;New Features:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Boost.Locale is updated to the latest version
that is going to be merged into Boost svn tree.&lt;/p&gt;

&lt;p&gt;It includes some breaking changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt; Redesigned boundary analysis interface:&lt;/p&gt;

&lt;p&gt; Instead of using &lt;code&gt;mapping&lt;/code&gt;, &lt;code&gt;token_iterator&lt;/code&gt;
 and &lt;code&gt;break_iterator&lt;/code&gt; new classes that
 provide same functionality introduced:&lt;/p&gt;

&lt;p&gt; &lt;code&gt;segment_index&lt;/code&gt;, &lt;code&gt;boundary_point_index&lt;/code&gt;
 and the elements that can be iterated
 &lt;code&gt;segment&lt;/code&gt; and &lt;code&gt;boundary_point&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt; See:
 &lt;a href=&quot;http://cppcms.sourceforge.net/boost_locale/html/boundary_analysys.html&quot;&gt;http://cppcms.sourceforge.net/boost_locale/html/boundary_analysys.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt; Updated messages interface, now messages
 use same type of character for key and
 output message, i.e.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  std::wstring wh = translate(L&quot;hello&quot;).str();
  std::string   h = translate( &quot;hello&quot;).str();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt; Instead of&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  std::wstring wh = translate(&quot;hello&quot;).str&amp;lt;wchar_t&amp;gt;();
  std::string   h = translate(&quot;hello&quot;).str&amp;lt;char&amp;gt;();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt; It allows to use non-US-ASCII keys transparently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt; Update &lt;code&gt;date_time&lt;/code&gt; interface to
 be more consistent with Boost.DateTime
 and Boost.Chrono. Operations are more
 type safe now.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Introduced support of SunStudio Compiler on
OpenSolaris.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New nightly tests: Linux Armel and Solaris/SunStudio.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Bug Fixes:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fixed bug that virtually disabled gzip
compression in CppCMS 0.99.7&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some compilation and testing fixes for older
versions of Mac OS X/Darwin 8.&lt;/p&gt;

&lt;p&gt;Note Darwin 8 is not supported due to
bugs in the standard C library, but there should
be no problems with newer Mac OS X versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Fixes to support ICU 4.8&lt;/li&gt;
&lt;li&gt;Fixes to support gcc-4.6 and gcc-4.0&lt;/li&gt;
&lt;li&gt;Fixes to support Python 2.3.5&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Note to SVN-trunk users&lt;/h3&gt;

&lt;p&gt;Do not forget to untar the updated cppcms_boost.tar.bz2 file.&lt;/p&gt;
		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>Boost.Locale was accepted into Boost</title>
		<link>http://blog.cppcms.com/post/79</link>
		<guid>http://blog.cppcms.com/post/79</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;Now it is official. Boost.Locale &lt;a href=&quot;http://article.gmane.org/gmane.comp.lib.boost.devel/218369&quot;&gt;was accepted&lt;/a&gt; into Boost.&lt;/p&gt;

&lt;p&gt;So the Localization part of CppCMS would be spread all over the C++ world.&lt;/p&gt;
		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>Formal Review of Boost.Locale starts today</title>
		<link>http://blog.cppcms.com/post/78</link>
		<guid>http://blog.cppcms.com/post/78</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;The &lt;a href=&quot;http://permalink.gmane.org/gmane.comp.lib.boost.devel/217586&quot;&gt;formal review&lt;/a&gt; of the &lt;a href=&quot;http://cppcms.sourceforge.net/boost_locale/html/index.html&quot;&gt;Boost.Locale&lt;/a&gt; library starts today.&lt;/p&gt;

&lt;p&gt;I hope it would pass the review and would be accepted as official Boost library.&lt;/p&gt;
		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>It is official, Boost.Locale on its way to formal review</title>
		<link>http://blog.cppcms.com/post/76</link>
		<guid>http://blog.cppcms.com/post/76</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;Now it is official, &lt;a href=&quot;http://cppcms.sourceforge.net/boost_locale/html/index.html&quot;&gt;Boost.Locale&lt;/a&gt; is scheduled for a &lt;a href=&quot;http://www.boost.org/community/reviews.html&quot;&gt;formal review&lt;/a&gt; at &lt;a href=&quot;http://www.boost.org/community/review_schedule.html&quot;&gt;April 7-16&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Boost.Locale is important part of CppCMS as was developed for its needs, however I had found that this library was so important and useful that I decided to &quot;Boostify&quot; and make it ready for a formal review for Boost.&lt;/p&gt;

&lt;p&gt;What does it provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Message formatting based on gettext dictionaries&lt;/li&gt;
&lt;li&gt;Localized numbers, dates, currency formatting and parsing (and more)&lt;/li&gt;
&lt;li&gt;Collation&lt;/li&gt;
&lt;li&gt;Text manipulations like case handing and Unicode normalization&lt;/li&gt;
&lt;li&gt;Text Boundary analysis&lt;/li&gt;
&lt;li&gt;Support of non-Gregorian calendars like Hebrew calendar.&lt;/li&gt;
&lt;li&gt;And much more&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Most of these features are based on the state-of-the-art Unicode library &lt;a href=&quot;http://site.icu-project.org/&quot;&gt;ICU&lt;/a&gt; but it also allows to handle many of them using only
standard operating system API significantly reducing its size and requirements of
external components.&lt;/p&gt;

&lt;p&gt;Most important is that is provides platform independent and uniform interface
for C++ localization and internationalization tightly integrated to C++ iostreams
and existing &lt;code&gt;std::locale&lt;/code&gt; framework.&lt;/p&gt;

&lt;p&gt;The most up-to-date  version of the library and documentation would be released soon.&lt;/p&gt;
		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>CppCMS 0.0.7 and 0.99.3-beta3 released</title>
		<link>http://blog.cppcms.com/post/66</link>
		<guid>http://blog.cppcms.com/post/66</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;This release is security fix release for stable branch of CppCMS
and both security and feature release for CppCMS 1.x.x branch.&lt;/p&gt;

&lt;p&gt;All users are encouraged to update to latest version.&lt;/p&gt;

&lt;p&gt;If it is not possible to upgrade don&#39;t use &quot;hmac&quot; session backend, switch
to &quot;aes&quot; or server side session storage backend.&lt;/p&gt;

&lt;h2&gt;Changedlog 0.0.7&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Bugfix of hmac backend: generation of signature with too small block size&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Changedlog 0.99.3&lt;/h2&gt;

&lt;p&gt;Security:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bugfix of hmac backend: generation of signature with too small block size&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New version of Boost.Locale&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support of multiple hmac cookie signatures:&lt;/p&gt;

&lt;p&gt;Built in:      hmac-md5, hmac-sha1&lt;br/&gt;
With libgcrypt: hmac-sha224, hmac-sha256, hmac-sha384, hmac-sha512&lt;br/&gt;
By default hmac now uses sha1 instead of less secure md5&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Bugs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed memory leak in aes session encryptor&lt;/li&gt;
&lt;li&gt;Fixed incorrect validation of UTF-8 encoding that could cause some illegal sequences to pass through.&lt;/li&gt;
&lt;li&gt;Fixed missing attributes of some form widgets&lt;/li&gt;
&lt;li&gt;Fixed incorrect code generation in templates in &lt;code&gt;foreach&lt;/code&gt; loop&lt;/li&gt;
&lt;li&gt;Fixed race condition when dispatch and context
assignment may happen not simultaneously&lt;/li&gt;
&lt;/ul&gt;

		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>Boost.Locale v3 preview version is released</title>
		<link>http://blog.cppcms.com/post/65</link>
		<guid>http://blog.cppcms.com/post/65</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;I want to announce a preview of the third version of Boost.Locale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tutorial: &lt;a href=&quot;http://cppcms.sourceforge.net/boost_locale/html/tutorial.html&quot;&gt;http://cppcms.sourceforge.net/boost_locale/html/tutorial.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reference: &lt;a href=&quot;http://cppcms.sourceforge.net/boost_locale/html/index.html&quot;&gt;http://cppcms.sourceforge.net/boost_locale/html/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Downloads: &lt;a href=&quot;https://sourceforge.net/projects/cppcms/files/boost_locale/&quot;&gt;https://sourceforge.net/projects/cppcms/files/boost_locale/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;There are following significant changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implemented multiple localization backends:

&lt;ul&gt;
&lt;li&gt;icu - the default and recommended backend, based on ICU library&lt;/li&gt;
&lt;li&gt;std - based on C++ standard library localizations support,&lt;/li&gt;
&lt;li&gt;posix - based on POSIX 2008 API (newlocale, strftime_l,...)&lt;/li&gt;
&lt;li&gt;winapi - based on Windows API functions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Significantly simplified locale generation.&lt;/li&gt;
&lt;li&gt;Improvements in UTF-8 handling by ICU where possible&lt;/li&gt;
&lt;li&gt;Thread safety fixes when using ICU library&lt;/li&gt;
&lt;li&gt;Fixed std::codecvt facet support to handle UTF-16 instead of UCS-2 only.&lt;/li&gt;
&lt;li&gt;Removed support of compilers missing wide character support,
gcc-3.4 on windows is not supported any more, latest gcc-4.x required with
support of wide streams and strings, for example gcc-4.5&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Tested Platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compilers: GCC (3.4, 4.2, 4.3, 4.5, 4.5/c++0x), Intel 11.0, MSVC 2008,
SunStudio/stlport&lt;/li&gt;
&lt;li&gt;Operating Systems: Linux, FreeBSD, OpenSolaris, Windows XP, Cygwin 1.7, (TODO
Mac OS X)&lt;/li&gt;
&lt;li&gt;ICU version: 3.6 to 4.4&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;It would be soon integrated into CppCMS 1.x.x.&lt;/p&gt;
		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>First beta version of CppCMS 1.x.x  is officially out!</title>
		<link>http://blog.cppcms.com/post/63</link>
		<guid>http://blog.cppcms.com/post/63</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;Hello all CppCMS users.&lt;/p&gt;

&lt;p&gt;The first beta version of CppCMS 1.x.x is available for download
from the &lt;a href=&quot;https://sourceforge.net/projects/cppcms/files/&quot;&gt;Sourceforge&lt;/a&gt;. The build instructions can be found &lt;a href=&quot;http://cppcms.sourceforge.net/wikipp/en/page/cppcms_1x_build&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This version very different from CppCMS 0.0.x branch - it fixes many design
flaws that had been done the previous version, it is almost 90% rewrite of the
original code according to new design.&lt;/p&gt;

&lt;p&gt;It also includes many &lt;a href=&quot;http://cppcms.sourceforge.net/wikipp/en/page/cppcms_1x_whats_new&quot;&gt;important features&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most significant ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Full CppCMS core rewrite that introduced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asynchronous programming support&lt;/li&gt;
&lt;li&gt;Removal of 3rd part libraries from the core api.&lt;/li&gt;
&lt;li&gt;Stable API and ABI through all major releases.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Improved Ajax support with introduction of JSON-RPC&lt;/li&gt;
&lt;li&gt;Powerful i18n and l10n&lt;/li&gt;
&lt;li&gt;Native Windows support including support of MSVC.&lt;/li&gt;
&lt;li&gt;And much more...&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;So now CppCMS beta is ready.&lt;/p&gt;

&lt;p&gt;Hopefully first release candidate version will be ready withing about a 3 month.
And the first stable release is expected at the end of 2010 beginning of 2011.&lt;/p&gt;
		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>Surviving Windows Development</title>
		<link>http://blog.cppcms.com/post/62</link>
		<guid>http://blog.cppcms.com/post/62</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;One of the issues that had bothered my in CppCMS on Windows, was actually absence of full  support of Unicode file-names.&lt;/p&gt;

&lt;p&gt;It is known, that standard library functions like &lt;code&gt;fopen&lt;/code&gt; or &lt;code&gt;std::fstream&lt;/code&gt; are not capable of
using UTF-8 encoded file names, like they are on all &quot;normal&quot; operating systems.&lt;/p&gt;

&lt;p&gt;So in order to deal with such issues in transparent way, I added &lt;code&gt;booster::nowide&lt;/code&gt; library
that makes this conversion transparent. All functions in &lt;code&gt;booster::nowide&lt;/code&gt; use UTF-8 encoded
strings and convert then internally to wide strings for brain-damaged Win32 Wide API.&lt;/p&gt;

&lt;p&gt;I also had created an implementation of &lt;code&gt;std::fstream&lt;/code&gt; over stdio,
especially for thous windows compilers that do not &quot;extend&quot; their standard libraries
with non-standard wide-crap.&lt;/p&gt;

&lt;p&gt;So, now CppCMS in fully Unicode capable over Win32. So if you use CppCMS with Windows,
please note that all pathes are represented as UTF-8 strings and not &quot;ANSI&quot; one.&lt;/p&gt;

&lt;p&gt;When Windows will finally enable UTF-8 locales? Maybe in Windows 15 (if it survive till then).&lt;/p&gt;

&lt;p&gt;If you interested why do I hate &quot;wide&quot; API so much, &lt;a href=&quot;http://stackoverflow.com/questions/1049947/should-utf-16-be-considered-harmful&quot;&gt;read this&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can download independent version of &quot;nowide&quot; library there:&lt;br/&gt;
&lt;a href=&quot;http://art-blog.no-ip.info/files/nowide.zip&quot;&gt;http://art-blog.no-ip.info/files/nowide.zip&lt;/a&gt;&lt;/p&gt;
		
		&lt;/div&gt;
		</description>
	</item>
	


</channel>
</rss>
