<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
   <channel>
      <title>Dmitry Sheiko's Web Development Blog</title>
      <link>http://dsheiko.com</link>
      <description>How to make with PHP/JS all that nice stuff: RIA, semantic web, Web 2.0 and so on</description>
      <language>en-us</language>
      <pubDate>Thu, 17 May 2012 13:04:49 +0200</pubDate>
      <lastBuildDate>Thu, 17 May 2012 13:04:49 +0200</lastBuildDate>
      <docs>http://dsheiko.com/rss/</docs>
      <generator>SAPID CMF2</generator>
      <atom:link href="http://dsheiko.com/rss/" rel="self" type="application/rss+xml" />
      <item>
         <title>Dependency Injection via Factory</title>
         <link>http://dsheiko.com/weblog/dependency-injection-via-factory</link>
         <guid isPermaLink="false">http://dsheiko.com/weblog/161</guid>

         <description><![CDATA[<p>You know, when coupling is not loose, components depend too much on each other. It makes your entire architecture fragile and immobile. You can check how loose the coupling is by making a unit test for a component. If you have no problem substituting dependencies by e.g. mock objects then everything is ok. Let take a model class. It depends on DB connection, here Lib_Db_Adapter_Interface instance. We cannot just create DB adapter instance within model constructor, because it depends on configuration data which don’t belong to the model. We can pass to the model constructor a settings array with DB configuration data.</p>]]></description>
         <pubDate>Sat, 21 Jan 2012 18:35:00 +0100</pubDate>
         <comments>http://dsheiko.com/weblog/dependency-injection-via-factory</comments>
         <category>Refactoring</category>
      </item>
      <item>
         <title>Design by Contract and JS</title>
         <link>http://dsheiko.com/weblog/design-by-contract-and-js</link>
         <guid isPermaLink="false">http://dsheiko.com/weblog/160</guid>

         <description><![CDATA[<p>Design by contract (<abbr title="Design by Contract">DbC</abbr>) is an approach in application design, which originally came from Eiffel, but now widely used on different languages (particularly in Java). In real world one party (supplier) makes an offer for an agreement (business contract) and another one (client) accepts. The same way can be described relations between objects in software engineering. As a declared agreement is accepted by the client object, the last one is expected to keep its rules.</p>]]></description>
         <pubDate>Thu, 22 Dec 2011 00:40:00 +0100</pubDate>
         <comments>http://dsheiko.com/weblog/design-by-contract-and-js</comments>
         <category>Refactoring</category>
      </item>
      <item>
         <title>Flyweight pattern using Mixins</title>
         <link>http://dsheiko.com/weblog/flyweight-pattern-using-mixins</link>
         <guid isPermaLink="false">http://dsheiko.com/weblog/159</guid>

         <description><![CDATA[<p>In my previous article among other patters I was telling about Flyweight. That is about the objects designed so to minimize memory use by sharing as much data as possible with other similar objects. You can find plenty of Flyweight implementation examples in Internet, though it will be mostly variations of Multiton, a collection (map) keeping only instance per every identical object. And I decided to follow that unwritten rule as it seems to be the simplest way to show the idea.  In some cases it is much more efficient to share not the instance itself, but weighty parts among the instances. Imagine, you have user object containing properties and methods relevant for any user. However registered user has extended set of properties and methods. Moderator or admin contain even more. </p>]]></description>
         <pubDate>Sun, 18 Dec 2011 21:47:09 +0100</pubDate>
         <comments>http://dsheiko.com/weblog/flyweight-pattern-using-mixins</comments>
         <category>Refactoring</category>
      </item>
      <item>
         <title>Design Patterns by PHP and JS/ES5 examples</title>
         <link>http://dsheiko.com/weblog/design-patterns-by-php-and-js-es5-examples</link>
         <guid isPermaLink="false">http://dsheiko.com/weblog/133</guid>

         <description><![CDATA[<p>After having your project fully tested, deployed and running, it seems the application architecture is pretty good enough. All the requirements met and everybody is happy. But then as it happens, the requirements change and you, all of sudden, find yourself in the time of troubles. It comes out that some modules easier to hack than to modify. Change of other ones brings endless changes in a cascade of dependent modules. Or you change one module and whole the application starts to collapse like a house of cards. And, of course, you find out that you can’t reuse already written modules for the new tasks, because the encapsulation of the desired parts would take too much risk and work.  Robert C. Martin was very accurate naming those symptoms of rotting design as Viscosity, Rigidity, Fragility and Immobility</p>]]></description>
         <pubDate>Thu, 15 Dec 2011 23:41:47 +0100</pubDate>
         <comments>http://dsheiko.com/weblog/design-patterns-by-php-and-js-es5-examples</comments>
         <category>Refactoring</category>
      </item>
      <item>
         <title>Bringing realtime to your web applications</title>
         <link>http://dsheiko.com/weblog/real-time-web-application-architecture</link>
         <guid isPermaLink="false">http://dsheiko.com/weblog/127</guid>

         <description><![CDATA[<p>Few years ago only lazy didn’t say about bringing desktop application experience to the web ones. However in reality, it just meant that user actions didn’t always required page reload, but could change page UI dynamically. As for other application events, as a rule they were not handled dynamically.  </p>
<p>Well, now you can find more and more web applications acting really like desktop ones. For example, Facebook and G+ have widgets which update automatically. You can keep the page untouched, but you will see anyway new status updates appear as your friends submitting. The same for notifications. Whenever a new one arrives, the counter changes and the notification list extends. </p>
<p>That seems to me as a trend worth to follow.  I’ve been thinking of a solution to vivify widgets on my sites. Now I’m coming up with the following pattern.</p>]]></description>
         <pubDate>Mon, 17 Oct 2011 00:46:23 +0200</pubDate>
         <comments>http://dsheiko.com/weblog/real-time-web-application-architecture</comments>
         <category>Real-Time Web</category>
      </item>
      <item>
         <title>Form auto-completion tool on your own</title>
         <link>http://dsheiko.com/weblog/you-own-simple-tool-to-test-web-forms</link>
         <guid isPermaLink="false">http://dsheiko.com/weblog/126</guid>

         <description><![CDATA[<p>When testing a web-site, nevermind who you are developer or QA-engineer, it happens to you pretty often to fill-in form fields again and again. Boring, stupid work, but how to make sure the form does still work as intended? Some fields added, CAPTCHA was attached, whatever else done –you have to run the test again. Besides, it will be repeated on different browsers.  Browser form auto-completion feature helps a bit, but that is not the same as when you have various sets of test-data always ready to apply on a form, isn’t it? </p>]]></description>
         <pubDate>Fri, 07 Oct 2011 18:07:14 +0200</pubDate>
         <comments>http://dsheiko.com/weblog/you-own-simple-tool-to-test-web-forms</comments>
         <category>jQuery</category>
      </item>
      <item>
         <title>Support Request Tool like Google Feedback</title>
         <link>http://dsheiko.com/weblog/support-request-tool-like-google-feedback</link>
         <guid isPermaLink="false">http://dsheiko.com/weblog/124</guid>

         <description><![CDATA[<p>Have you ever noticed Google+ has an amazing feature called Google Feedback. You click on feedback highlight an area of the site page and getting screenshot with your marking on it sent to the Google support team. If you wonder of having this tool on your own, just take my code and adapt for your requirements.</p>]]></description>
         <pubDate>Mon, 19 Sep 2011 17:24:48 +0200</pubDate>
         <comments>http://dsheiko.com/weblog/support-request-tool-like-google-feedback</comments>
         <category>How to</category>
      </item>
      
   </channel>    
</rss>
