<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bitworks Stone Garden</title>
	<atom:link href="http://www.bitworks-software.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bitworks-software.com/blog</link>
	<description>About something around our team</description>
	<lastBuildDate>Sat, 15 Jan 2011 11:01:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Our congratulations to TV2 team</title>
		<link>http://www.bitworks-software.com/blog/business/2011/01/our-congratulations-to-tv2-team/</link>
		<comments>http://www.bitworks-software.com/blog/business/2011/01/our-congratulations-to-tv2-team/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 10:31:24 +0000</pubDate>
		<dc:creator>Ivan Kudryavtsev</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[success story]]></category>

		<guid isPermaLink="false">http://www.bitworks-software.com/blog/business/2011/01/our-congratulations-to-tv2-team/</guid>
		<description><![CDATA[Today, TV2 news portal winned (1st place) annual award &#8220;The Shark of pen &#8211; 2010&#8243; in nomination &#8220;The best internet project&#8221;. Bitworks Software development team is very happy &#8211; TV2 news portal is our early work in the field of content projects. TV2 portal is served by well-known Drupal CMS with LAMP environment. Video operations [...]]]></description>
			<content:encoded><![CDATA[<p>Today, TV2 news portal winned (1st place) annual award &#8220;The Shark of pen &#8211; 2010&#8243; in nomination &#8220;The best internet project&#8221;. Bitworks Software development team is very happy &#8211; TV2 news portal is our early work in the field of content projects.</p>
<p>TV2 portal is served by well-known Drupal CMS with LAMP environment. Video operations are handled with FFmpeg software. During the work, our designers created more than 200 sketches and design ideas, more than 30 content layouts to provide the best informational architecture for this portal.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitworks-software.com/blog/business/2011/01/our-congratulations-to-tv2-team/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Regular Expressions On Steroids</title>
		<link>http://www.bitworks-software.com/blog/technology/2011/01/regular-expressions-on-steroids/</link>
		<comments>http://www.bitworks-software.com/blog/technology/2011/01/regular-expressions-on-steroids/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 07:31:54 +0000</pubDate>
		<dc:creator>Ivan Kudryavtsev</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[C-ICAP]]></category>
		<category><![CDATA[DFA]]></category>
		<category><![CDATA[NFA]]></category>
		<category><![CDATA[parental control]]></category>
		<category><![CDATA[RE2]]></category>
		<category><![CDATA[regular expressions]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.bitworks-software.com/blog/?p=367</guid>
		<description><![CDATA[Is your code fast enough? Modern development reality, especially when thinking about web development desn&#8217;t care about effective code because there are a lot of cheap ways to increase the performance of applications, for example one could optimize database structure, add sophisticated indexes and so on. But sometimes, cheap ways don&#8217;t give you the clue [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Is your code fast enough? Modern development reality, especially when thinking about web development desn&#8217;t care about effective code because there are a lot of cheap ways to increase the performance of applications, for example one could optimize database structure, add sophisticated indexes and so on. But sometimes, cheap ways don&#8217;t give you the clue to performance tweaking. In this post I will cover the performance of regular expressions and show you the task which requires every optimization available.<span id="more-367"></span></p>
<p style="text-align: left;">Last month we have implemented the parental control feature for our in-house ISP Zing. We have decided to store black and whitelisted data in MySQL database such as URLs, domain names, badwords and so on. This solution is OK for us since it gives simple way to manipulate data (update and change) and simple way to request data to do different checks.</p>
<p style="text-align: left;">Next, we have implemented SQUID-based ICAP module which implements next functions:</p>
<ol>
<li>checks headers on blacklisted/whitelisted domains, URLs, keywords;</li>
<li>checks content for badwords</li>
<li>replaces content if required.</li>
</ol>
<p>We had implemented the module in C/C++ as C-ICAP plugin which works with SQUID 3. All had functioned perfectly but one thing was annoying. We decided to use regular expressions to check content for badwords and we have implemented PCRE library find/replace functions to complete the tasks (by the way, PCRE doesn&#8217;t handle replace by default, so we have ported replace function from PHP function source code).</p>
<p>We had been very upset when found the PCRE checks web page of 1MB near to 0.2 second on our Xeon 3.2 GHz processor (regexes were about 10-20 KB of size). We had realized that we will not be able to serve even 100 simultaneos connects on our SQUID if we will not found the way to optimize it. We also had found that standard UNIX grep works very fast and uses enough of regular expressions syntax to handle our tasks (it takes about 0.001-0.005 second to handle the same document).</p>
<p>Trying to find the understanding of poor performance of PCRE we have moved to mathematical basis of PCRE &#8211; finite machines. The theory explains the difference between DFA and NFA approaches used by regular expression engines. To sum up, DFA algorithms are much more faster then NFA, and PCRE is NFA engine. So we had found that we are not able to use PCRE to handle our task and tried to found another tool to complete the module.</p>
<p>We reviewed two concurrent ideas: the first assumed to use grep source codebase to implement regex engine, but this way wasn&#8217;t convinient since grep includes global variables and not thread-safe (since utilitity doesn&#8217;t need multithreading), the other assumed to use special library and we have found one &#8211; RE2, produced by Google when he met the same difficultes as we did. RE2 is C++ library with clear syntax and usage guidelines. The library is thread safe by design, so we have decided to use it in our module.</p>
<p>The implementation of our C-ICAP module with RE2 engine allowed us to achive even faster performance then required with easy to use integration process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitworks-software.com/blog/technology/2011/01/regular-expressions-on-steroids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Website vs Web application. The difference.</title>
		<link>http://www.bitworks-software.com/blog/company/2011/01/website-vs-web-application-the-difference/</link>
		<comments>http://www.bitworks-software.com/blog/company/2011/01/website-vs-web-application-the-difference/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 15:17:11 +0000</pubDate>
		<dc:creator>Ivan Kudryavtsev</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[content project]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.bitworks-software.com/blog/company/2011/01/website-vs-web-application-the-difference/</guid>
		<description><![CDATA[It&#8217;s common thing to call everything around web as web site. This term means that there is something located at the web and web user does not care about differences between Gmail system and news portal like CNews.com. The person who browses doesn&#8217;t care about differences. But developers are using another approach. Frankly speaking we [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s common thing to call everything around web as <strong>web site</strong>. This term means that there is something located at the web and web user does not care about differences between Gmail system and news portal like CNews.com. The person who browses doesn&#8217;t care about differences. But developers are using another approach. Frankly speaking we are dividing the websites on two categories &#8211; the first one is about the sites which allow &#8220;TO DO&#8221; something or serve business processes (like Gmail provides services around mail sending, reading and receiving), which often called web-applications, the second one is about the sites which allow &#8220;TO SEE&#8221; something (this sites generally called content projects).<span id="more-361"></span></p>
<p>There are great diffrence between web-applications and content resources. Usually, web-applications are much more complex, require a lot of intellegence during analytical investigation and a lot of coding, while the view (presentation) may look moderate or not-so-impressive, from the other hand content resources must attract the audience to monetize content. Keeping this in mind, the work on content project is much more information architecture, SEO and web design rather than coding. Often content projects don&#8217;t have complex business processes involved.</p>
<p>The web application is often could be imaged as displayed at picture below:</p>
<p><img class="alignnone size-full wp-image-360" title="d0b0d0b9d181d0b1d0b5d180d0b3" src="http://www.bitworks-software.com/blog/wp-content/uploads/2011/01/d0b0d0b9d181d0b1d0b5d180d0b3.jpg" alt="" width="397" height="500" /></p>
<p>where there is small part above the water while the most of work is hidden (often called Backend).</p>
<p>Every development team has own preferences regarding the projects to deal with. We have full competence in both areas but historically our major direction is development of web applications, which requires a lot of experience and deep knowledge in the computer science.</p>
<p>There is traditional software development processes could be used at most iterations of web application development. This fact has reasonable explanation &#8211; web-application is the business software  by nature and web interface is just interface convinient for customers. The interfaces created for the software applications are often standardized and there are a lot of widget libraries which implement web interfaces in convinent and expected way. You can refer to Sencha or jQuery UI frameworks to get the idea.</p>
<p>From the other case content project are developed in another way. This could be explained in the next way &#8211; there is no common  interface suitable for all content projects (customers will not love the project if it will implement some not-so-cool design) so project owners require amazing looking, convinient interface. There are a lot of activities during website design. The first place takes informational architecture and usability design, next &#8211; graphical design, next &#8211; SEO, and last part of work is coding which is moderate comparing other parts of work.</p>
<p>So, you can see the web site can be like an iceberg where you see only small top while greates masses of ice are below horizon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitworks-software.com/blog/company/2011/01/website-vs-web-application-the-difference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spare position: Senior Java developer</title>
		<link>http://www.bitworks-software.com/blog/uncategorized/2011/01/spare-position-senior-java-developer/</link>
		<comments>http://www.bitworks-software.com/blog/uncategorized/2011/01/spare-position-senior-java-developer/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 13:14:48 +0000</pubDate>
		<dc:creator>Ivan Kudryavtsev</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[вакансия]]></category>
		<category><![CDATA[работа]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[разработчик]]></category>

		<guid isPermaLink="false">http://www.bitworks-software.com/blog/uncategorized/2011/01/spare-position-senior-java-developer/</guid>
		<description><![CDATA[Sorry, this entry is only available in Русский.]]></description>
			<content:encoded><![CDATA[<p>Sorry, this entry is only available in <a href="/blog/ru/feed/">Русский</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitworks-software.com/blog/uncategorized/2011/01/spare-position-senior-java-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vyatta &#8211; customized linux software bundle for routers and firewalls</title>
		<link>http://www.bitworks-software.com/blog/technology/2011/01/vyatta-customized-linux-software-bundle-for-routers-and-firewalls/</link>
		<comments>http://www.bitworks-software.com/blog/technology/2011/01/vyatta-customized-linux-software-bundle-for-routers-and-firewalls/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 06:13:33 +0000</pubDate>
		<dc:creator>Ivan Kudryavtsev</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[vyatta]]></category>

		<guid isPermaLink="false">http://www.bitworks-software.com/blog/uncategorized/2011/01/vyatta-customized-linux-software-bundle-for-routers-and-firewalls/</guid>
		<description><![CDATA[SOHO and SMB often use different solutions based on Linux operating system. There are different applications of linux can be found &#8211; routers, firewalls, VPN servers, domain controllers, web and database servers. GNU/Linux software includes different software packages which cover almost any needs of the business for free. From the other hand, GNU/Linux is very [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-353" title="vyatta_logo" src="http://www.bitworks-software.com/blog/wp-content/uploads/2011/01/vyatta_logo.gif" alt="" width="254" height="71" />SOHO and SMB often use different solutions based on Linux operating system. There are different applications of linux can be found &#8211; routers, firewalls, VPN servers, domain controllers, web and database servers.<span id="more-346"></span></p>
<p>GNU/Linux software includes different software packages which cover almost any needs of the business for free. From the other hand, GNU/Linux is very flexible system so it allows to build custom configurations and solutions. One can found that certain task can be solved in couple of ways depending on system administrator quality and personal preferences.</p>
<p>This flexibility in approaches (there are many ways to do it) is not a plus in some cases. Below I will discuss the use of GNU/Linux for routers and firewalls. Telecom vendors had realized the fact that telecommunication hardware appliances must be configured in unified way which is specified by vendor. Even if the appliance is configured by several persons and the configuration changed from time to time, the man who knows how to configure the appliance line will be able to configure certain appliance with no difficulties.</p>
<p>Unfortunately, when certain common purpose GNU/Linux distribution is used to create sophisticated router or firewall there is no single unified way for network configuration provided by vendor (actually no &#8220;must-use-way&#8221;). There is no single console which handles all the commands and network features, but a lot of isolated services with custom configuration files.</p>
<p>Last years there are different Linux-based solutions created especially for network appliances occured. I want to present one of them, which is deployed in our production environment and function well. Vyatta is based on Debian distribution which means long term support and stable packages. The major features of Vyatta are</p>
<ol>
<li>created for routers and firewall (borders, BRAS, shaping/policing);</li>
<li>single ios-like console with command autocompletion;</li>
<li>static and dynamic routing support (BGP, OSPF, RIP, RIP2, source-based routing);</li>
<li>network statistics export in NetFlow format;</li>
<li>L3 VPN (IP-IP, PPtP, OpenVPN);</li>
<li>Debian APT support</li>
<li>Full featured support of iptables, linux ip/tc;</li>
</ol>
<p>Vyatta is linux, but very special linux. The main advantage is single, unified approach to configure the system. This means that any system administrator who is familiar with ios-like console and Vyatta will be able to understand the configuration and change it. Extensive configuration documentation allow to find requested information fast. The configuration is applied in transactional approch where administrator must do &#8220;commit&#8221; or &#8220;rollback&#8221; operation if he wishes to apply or cancel settings.</p>
<p>Vyatta is free for use, lifecycle is mature and stable. We could recommend it to use in your production environments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitworks-software.com/blog/technology/2011/01/vyatta-customized-linux-software-bundle-for-routers-and-firewalls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

