<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-7451346569172922351</atom:id><lastBuildDate>Thu, 29 Oct 2009 00:13:39 +0000</lastBuildDate><title>Optixsoft Blog - Software Development For Fiber Optics</title><description></description><link>http://www.optixsoft.com/blog/en/</link><managingEditor>noreply@blogger.com (Alex Che)</managingEditor><generator>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-2861771390885159774</guid><pubDate>Wed, 28 Oct 2009 23:44:00 +0000</pubDate><atom:updated>2009-10-29T02:13:39.063+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cpp</category><category domain='http://www.blogger.com/atom/ns#'>csharp</category><title>Garbage collector and local variables</title><description>&lt;div style="text-align: justify;"&gt;If you are a C# programmer, then I have a question for you. How do you think, how many times the string "GC called" will be written to console by the following code:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 0pt auto; width: 95%; color: rgb(0, 0, 0);"&gt;   &lt;div class="csharp"  style="border: 1px solid rgb(208, 208, 208); background-color: rgb(240, 240, 240);font-family:monospace;"&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;using&lt;/span&gt; System.Threading;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;class&lt;/span&gt; GarbageCollectorTest&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;void&lt;/span&gt; Main()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Timer t = &lt;span style="color: rgb(0, 0, 153);"&gt;new&lt;/span&gt; Timer(CallGC, &lt;span style="color: rgb(0, 0, 153);"&gt;null&lt;/span&gt;, 1000, 1000);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;void&lt;/span&gt; CallGC(&lt;span style="color: rgb(0, 0, 153);"&gt;object&lt;/span&gt; o)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GC.Collect();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="color: rgb(0, 102, 0);"&gt;"GC called"&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Correct answer: depends on compilation parameters. In release build &lt;span style="font-weight: bold;"&gt;the string will be written only once&lt;/span&gt;. Debug version will write it until the user presses a key.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In C++ a local (automatic) variable's lifetime is defined by variable's scope - the variable will be destructed when program flow goes out of the scope.&lt;br /&gt;In C# the lifetime of such variable is defined by how long the variable is used. I.e., &lt;span style="font-weight: bold;"&gt;the variable may be destructed before it goes out of scope&lt;/span&gt;, if garbage collector considers that it's not used any more.&lt;br /&gt;In debug version variable's lifetime is artificially extended to its scope.&lt;br /&gt;&lt;br /&gt;In Java, &lt;a href="http://stackoverflow.com/questions/1363075/when-is-a-java-local-variable-eligible-for-gc" target="_blank"&gt;as far as I know,&lt;/a&gt; the JVM specification allows similar realization of garbage collector.&lt;br /&gt;&lt;br /&gt;P.S.: If you are a C# programmer, but this post became an eye-opener for you, then read &lt;a href="http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632" target="_blank"&gt;Jeffrey Richter's book "СLR via C#"&lt;/a&gt;. You can find much more interesting and useful for.NET development in it.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-2861771390885159774?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2009/10/garbage-collector-and-local-variables.html</link><author>noreply@blogger.com (Alex Che)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-7549125108680026534</guid><pubDate>Mon, 21 Sep 2009 23:14:00 +0000</pubDate><atom:updated>2009-09-22T02:26:14.598+03:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>csharp</category><title>C# quick question.</title><description>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: georgia;"&gt;Can you quickly specify three advantages of automatic property over public field, as a member of a class?&lt;br /&gt;&lt;/span&gt;I.e., why is the following code:&lt;br /&gt;&lt;/div&gt; &lt;pre class="prettyprint"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 153);" class="kwd"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="pln"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kwd"&gt;string&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Foo&lt;/span&gt;&lt;span class="pun"&gt;{&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kwd"&gt;get&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kwd"&gt;set&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;  better than this:&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 153);" class="kwd"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="pln"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kwd"&gt;string&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Foo&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt; The asnwer is (as often) on &lt;a href="http://stackoverflow.com/questions/1294660/c-automatic-properties" target="_blank"&gt;StackOverflow&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-7549125108680026534?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2009/09/c-quick-question.html</link><author>noreply@blogger.com (Alex Che)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-2512064426887012689</guid><pubDate>Wed, 09 Sep 2009 10:05:00 +0000</pubDate><atom:updated>2009-09-09T13:22:11.278+03:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>development</category><category domain='http://www.blogger.com/atom/ns#'>cpp</category><category domain='http://www.blogger.com/atom/ns#'>csharp</category><title>NOPs and debug</title><description>It's often necessary to edit source code during debug. To make this fixes to take effect, usually, you need to rebuild your application and restart the debug session. But there is edit-and-continue feature in Microsoft Visual Studio, which allows these fixes to take effect without restarting of the application. Ever thought about how it works?&lt;br /&gt;&lt;br /&gt;The secret is in NOP instructions, which compiler inserts in certain places of executable code. These instructions can be replaced with new code later. Also, they allow to place breakpoints at those source code lines, which have no correspondent executable code. E.g., at the beginning of code block (opening brace in C++ and C#). Or at the operator, that would otherwise be replaced during optimization.&lt;br /&gt;&lt;br /&gt;BTW: NOP-instructions may also be reasonable in application's release-version. E.g., to align code block for better caching.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-2512064426887012689?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2009/09/nops-and-debug.html</link><author>noreply@blogger.com (Alex Che)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-5721457053499284347</guid><pubDate>Mon, 27 Jul 2009 13:06:00 +0000</pubDate><atom:updated>2009-07-27T16:42:13.619+03:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>development</category><category domain='http://www.blogger.com/atom/ns#'>cpp</category><title>C++0x will not have concepts!</title><description>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;C++ standardization committee voted to remove concepts from almost-ready C++0x standard, during it's meeting in Frankfurt in July.&lt;br /&gt;Concepts are probably the most discussing innovation in C++ meta-programming paradigm. The main purpose of concepts is to specify template constraints clearly and intuitively, while  improving the compiler's capability to detect and diagnose variations of these constraints. Also, concepts would allow to create a type map to use some type in template, if the type and the template are not compatible directly. As reasons for such a hard decision there were stated unfinished specification, complexity and absence of real experience. Since concepts could potentially become a new cornerstone of C++, it was decided not to standardize the "raw" specification. The time will tell whether concepts will be included in next standard, and whether they will be simplified, improved or just rewritten from scratch.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;Stroustrup's post on this topic is on &lt;a href="http://www.ddj.com/architect/218600111"&gt;Dr.Dobb's&lt;/a&gt;.&lt;br /&gt;Sutter  also &lt;a href="http://herbsutter.wordpress.com/2009/07/21/trip-report/"&gt;commented&lt;/a&gt; this on his site.&lt;br /&gt;You can find more links, e.g., on &lt;a href="http://stackoverflow.com/questions/1155389/c0x-concepts-are-gone-which-other-features-should-go-too"&gt;StackOverflow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Anyway, we are looking forward to other language innovations, such as lambda expressions, rvalue references and move semantics, generalized constant expressions, etc.&lt;a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Lambda_functions_and_expressions"&gt;&lt;span class="toctext"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-5721457053499284347?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2009/07/c0x-will-not-have-concepts.html</link><author>noreply@blogger.com (Alex Che)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-8085743180917101965</guid><pubDate>Tue, 13 Jan 2009 11:34:00 +0000</pubDate><atom:updated>2009-01-19T15:28:29.506+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>SOR</category><category domain='http://www.blogger.com/atom/ns#'>EasyViewer</category><title>New SOR-application - coming soon!</title><description>You work with SOR-traces, and amount of your tasks is wider, than &lt;a href="http://www.optixsoft.com/blog/en/2009/01/when-and-how-sor-shell-extension-should.html"&gt;SOR Shell Extension allows to do&lt;/a&gt;, but existent SOR-applications are not good enough for you? Or you would just like to try new modern application in your field? We have a good news: our brand new SOR-application is almost complete.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.optixsoft.com/blog/en/uploaded_images/screen_sorapp-786119.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 243px;" src="http://www.optixsoft.com/blog/en/uploaded_images/screen_sorapp-786113.png" alt="" border="0" /&gt;&lt;/a&gt;Follow our site and be the first to download EasyViewer!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-8085743180917101965?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2009/01/new-sor-application-coming-soon.html</link><author>noreply@blogger.com (Alex Che)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-8345038073113387702</guid><pubDate>Mon, 12 Jan 2009 19:44:00 +0000</pubDate><atom:updated>2009-01-13T12:27:41.224+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>SOR</category><category domain='http://www.blogger.com/atom/ns#'>SOR Shell Extension</category><title>When and how to use SOR Shell Extension</title><description>&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;Everything is good in its season.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt; (English proverb)&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Sometimes we get e-mails with similar text: “I’ve just installed your &lt;a href="http://www.optixsoft.com/products-solutions/sor-shell-extension-en.php" target="_blank"&gt;SOR Shell Extension&lt;/a&gt;. How can I run it?”  Users download an installer as usual, run it as usual, complete an installation as usual, as usual they try to find a new program to run in Windows “Start” menu. And they cannot. (Or, to be more precise, they can find only SOR Shell Extension Configurator).&lt;br /&gt;&lt;br /&gt;The reason is that SOR Shell Extension is not a program in common sense. As you can guess from its name, this is an &lt;span style="font-style: italic;"&gt;extension to Windows shell&lt;/span&gt;. This means, that after SOR Shell Extension has been installed, Windows looks like if SOR-file support is built-in into the operation system. I.e., you can see trace pictures directly in Windows Explorer window (as, for example, JPEG or BMP files) or edit specific trace properties in «File Properties» dialog, activated from context menu (as, for example, with MP3 files). And this applies not only to Windows Explorer. A lot of software use Windows API (often indirectly, through different libraries) to allow a user to access files – this is also the case for SOR Shell Extension to show its worth.&lt;br /&gt;&lt;br /&gt;But there is sometimes another kind of misunderstanding: users expect SOR Shell Extension to &lt;span style="font-style: italic;"&gt;substitute&lt;/span&gt; some full-weight OTDR traces workshop software (let’s call it SOR-viewer for short). And so there is another kind of emails: “I’ve just tried your SOR Shell Extension, and, you know, I will continue using &lt;span style="background: rgb(51, 51, 51) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(51, 51, 51);"&gt;Censored SOR-viewer&lt;/span&gt;”. It has the same sense, as to write: “I’ve just tried to view pictures in Windows Explorer, and, you know, I will continue using Google Picasa (ACDSee, Windows Imaging, your favorite software)”.&lt;br /&gt;&lt;br /&gt;Every software is created for its own purpose, and SOR Shell Extension &lt;span style="font-style: italic;"&gt;was not developed as a substitution for full-weight SOR-viewer&lt;/span&gt;. You should not expect SOR Shell Extension to do automatic analysis or OTDR measurement, for example. But, there are tasks to be solved with SOR Shell Extension with more convenience. Consider the following examples.&lt;br /&gt;&lt;br /&gt;Let’s assume that you need to find a trace in a folder, but you have forgotten its filename. Though you remember how it looks. If you are using usual SOR-viewer, you need to open and look at all SOR-files trace-by-trace, until you find the required one. This procedure may take a long time if there are a lot of files in the folder. But if you are using SOR Shell Extension, all you need to do, is to open the folder in Windows Explorer, switch to “Thumbnails” view and look through trace images for the one you need.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.optixsoft.com/blog/en/uploaded_images/file-731206.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 388px; height: 400px;" src="http://www.optixsoft.com/blog/en/uploaded_images/file-731201.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Or probably you need to copy traces with 80 km distance range from the folder to an external drive. With usual SOR-viewer you have to open traces one-by-one, check each for its distance range, and copy relevant to the external drive. The more files, the longer algorithm. In addition, you can make a mistake and miss some relevant files. But if you have SOR Shell Extension, you just need to open the folder in Windows Explorer, switch to “Details” view, sort traces by  “Distance Range, km” column (if you can't see this column, you need to add it by pressing right mouse button on the table header). And then, it’s trivial to select and copy files with 80 km distance range.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.optixsoft.com/blog/en/uploaded_images/file-771410.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 388px; height: 400px;" src="http://www.optixsoft.com/blog/en/uploaded_images/file-771390.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you need to set SOR-specific “Comment” field for large number of traces, it’s a misfortune for you to have only usual SOR-viewer. In this case you need to open traces one-by-one and set this field in each. Having SOR Shell Extension allows you to succeed much faster. You just select the required files, press right mouse button, and select “Properties”. The “File Properties” dialog shows, which allows you to set “Comment” field value for all selected files at once.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.optixsoft.com/blog/en/uploaded_images/file-701066.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 326px; height: 400px;" src="http://www.optixsoft.com/blog/en/uploaded_images/file-701030.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These are only several from large amount of cases, in which using of SOR Shell Extension is much more convenient. Thereby, if you work with OTDR traces, then SOR Shell Extension will serve as nice and convenient &lt;span style="font-style: italic;"&gt;add-on&lt;/span&gt; to full-weight SOR-viewer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-8345038073113387702?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2009/01/when-and-how-sor-shell-extension-should.html</link><author>noreply@blogger.com (Alex Che)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-8636434919921521356</guid><pubDate>Thu, 21 Aug 2008 13:05:00 +0000</pubDate><atom:updated>2008-08-22T10:53:36.292+03:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Network Monitoring</category><category domain='http://www.blogger.com/atom/ns#'>DTS</category><category domain='http://www.blogger.com/atom/ns#'>Invited Blogger</category><category domain='http://www.blogger.com/atom/ns#'>RFTS</category><category domain='http://www.blogger.com/atom/ns#'>OTDR</category><category domain='http://www.blogger.com/atom/ns#'>article</category><title>Distributed temperature sensing (DTS).</title><description>&lt;span style="font-style: italic;font-family:georgia;" &gt;OptixSoft Company’s Blog has started new trend from now - "Invited Blogger". We will invite engineers and specialists in related fields from outside (fiber optics, software development, etc.) to post at our Blog. It may help us to hear and share different opinions and ideas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:georgia;" &gt;Here is the first such post written by our friend and fiber optic specialist &lt;a href="http://www.linkedin.com/pub/4/2a8/20b"&gt;Andrew Luzgin&lt;/a&gt; (currently working for FOD Ltd).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Distributed temperature sensing – is a great technology on OTDR base.  &lt;p class="MsoNormal"&gt;&lt;i&gt;A few words about theory.&lt;/i&gt; Well known, that original OTDR measures a backscattered Rayleigh light in the optical fiber. Except Rayleigh effect, there are another scattering effects in the oprical fiber (not in fibers only, of course). It is so called Brillouin and Raman scattering. The intensity of the Raman scattered light is very sensitive to optical fiber temperature. So, it is available to measure distributed temperature along optical fiber. It can be original singlemode (SM) or multimode (MM) fibers. Both fiber types application has merits and demerits.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Simplified schematic of DTS system is below.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.optixsoft.com/blog/en/uploaded_images/dts_web-705061.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.optixsoft.com/blog/en/uploaded_images/dts_web-705059.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At first glance, it looks like an original OTDR, but DTS includes optical filter (OF) and optical commutator (OC). These parts are necessary to choose Raman light from total backscattered signal. And then — a usual OTDR. In a simple case, it can be an OTDR interface with some special processing on the software level.&lt;br /&gt;Nowadays, DTS system becomes a powerful attribute for environment research, fire alarm, piping control etc. Of course, most useful application is a long time temperature monitoring. This allows storing information about control object, producing necessary analysis and predictions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Many thanks to Invited Blogger - Andrew Luzgin.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-8636434919921521356?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2008/08/distributed-temperature-sensing-dts.html</link><author>noreply@blogger.com (Mike Ziuzin)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-5284735986104721306</guid><pubDate>Wed, 20 Aug 2008 15:50:00 +0000</pubDate><atom:updated>2008-10-02T18:42:17.449+03:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>practices</category><category domain='http://www.blogger.com/atom/ns#'>LabVIEW</category><category domain='http://www.blogger.com/atom/ns#'>RFTS</category><category domain='http://www.blogger.com/atom/ns#'>OTDR</category><title>How we bring OTDR to work in customer environment. Integration issues.</title><description>We have already passed a long way of integrating different OTDRs to customer environment. As our experience grew, we adopted different approaches to this problem. And now it's time to note some important milestones in this history.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In the beginning:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(It was long time ago… we've just started)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;We had not got any defined and documented OTDR data exchange protocol by the time when the first customer asked about non-GUI OTDR for his system. Since it was urgent requirement we had to describe OTDR protocol in the following way:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Send Byte 0x77&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Receive Byte 0x08&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Send Byte 0x90 0x54 0x62&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Receive 15 Bytes : 0xX1 0xX2 ....&lt;/span&gt; where 0xX1 is the number of data points...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;And so on, with intricate explanation of how to process raw binary data and several samples on C programming language.&lt;br /&gt;&lt;br /&gt;Problem with this approach arises if OTDR data needs some additional processing on client's side. In another cases this way may be just good anough.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Next approach:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(several month later) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;At that moment we had completed OTDR interface specification and had built several DLLs (Dynamic Link Libraries). They acted as upper level OTDR drivers and customers were able to incorporate OTDRs into their their own systems using DLLs' exported functionality (MeasSetup(), MeasStart(), MeasData(), etc). There were several requirements to use these DLLs, such as using particular programming language (C++) and using defined common data types and structures (GR-196, SOR, Standard OTDR Record class library). Our solution was built with C++ programming language and was cross-platform, so it was the same for Windows and Linux environment.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And the next one:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The next project was &lt;a href="http://www.optixsoft.com/products-solutions/remote-fiber-testing-system-en.php"&gt;RFTS (Remote Fiber Test System)&lt;/a&gt; development, in which RTU (Remote Test Unit) is controlled via Ethernet. One of requirements was to use standardized remote interface to RTU, so we decided to specify our RTU TL1 protocol.&lt;br /&gt;&lt;br /&gt;Actually, &lt;a href="http://en.wikipedia.org/wiki/Transaction_Language_1"&gt;pure TL1&lt;/a&gt; is not 100%-suitable for OTDR-like devices, but with some improvements we have created protocol, that has met requirement completely and now RTU could be controlled remotely via TL1.&lt;br /&gt;&lt;br /&gt;I'd like to mention that this is also a &lt;a href="http://www.optixsoft.com/portfolio/case-study-universal-otdr-management-service-en.php"&gt;cross-platform solution&lt;/a&gt; (on both client and server sides). We used it successfully for Linux and Windows based applications.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Still another approach:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;LabVIEW.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;First, a simple idea to use our USB osciloscope (with LabVIEW driver) as OTDR for lab purpose arised. Then automation requirements have forced us to learn LabVIEW environment deeper.&lt;br /&gt;So now there is just one more way of &lt;a href="http://www.optixsoft.com/services/labview-driver-development-en.php"&gt;OTDR integration&lt;/a&gt;. First of all, it is suitable for using different instruments simultaneously via lab applications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;To be continued (about COM, .NET and web-services)...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-5284735986104721306?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2008/08/history-of-measurement-instrumentation.html</link><author>noreply@blogger.com (Alex Che)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-8118288259695131140</guid><pubDate>Sun, 17 Aug 2008 18:18:00 +0000</pubDate><atom:updated>2008-08-17T21:39:48.780+03:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>chronicle</category><title>OptixSoft flying team!</title><description>If &lt;a href="http://www.optixsoft.com/company/company-en.php"&gt;official version&lt;/a&gt; doesn't look serious.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.optixsoft.com/blog/en/uploaded_images/_MG_0076_n_web-773864.jpg"&gt;&lt;img style="cursor: pointer;" src="http://www.optixsoft.com/blog/en/uploaded_images/_MG_0076_n_web-773856.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.optixsoft.com/blog/en/uploaded_images/_MG_0030_n_web-745283.jpg"&gt;&lt;img style="cursor: pointer;" src="http://www.optixsoft.com/blog/en/uploaded_images/_MG_0030_n_web-745276.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-8118288259695131140?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2008/08/optixsoft-flying-team.html</link><author>a.maryenkova@gmail.com (Asya Maryenkova)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-1840077940580723368</guid><pubDate>Tue, 12 Aug 2008 11:33:00 +0000</pubDate><atom:updated>2008-08-12T15:12:50.124+03:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>practices</category><category domain='http://www.blogger.com/atom/ns#'>development</category><title>15 minutes of effective communication</title><description>&lt;div style="text-align: justify;"&gt;Does your company staff consist of young enthusiasts? Do they spend much of their free time learning new technologies? Are their professional passions interesting for their colleagues? Would you like to improve the exchange of useful experience and knowledge inside your company?&lt;br /&gt;It’s the same for us. And probably our solution will fit your situation too. What is the point?&lt;br /&gt;&lt;br /&gt;From time to time our united team gathers for approximately a quarter of an hour. Someone gives a brief lecture about something new, which will probably be interesting and useful for the others. What for?&lt;br /&gt;&lt;br /&gt;First, it allows others to easily pass entry phase when learning new technology. How often do you read about something new and cannot get the point, because you don’t see the whole thing? But the man, who has already spent his time learning new technology and who already has clear idea about it, can briefly describe the main point and why to use the innovation. This will allow others to boost their startup when learning this technology in the future.&lt;br /&gt;&lt;br /&gt;Also, such lectures broadens personnel’s mind. It may be useful for average developer when finding a non-typical solution, or for system architect when designing a new architecture.&lt;br /&gt;&lt;br /&gt;It is also useful for the speaker. He learns how to speak clearly and gets the public speeches experience. It will have its meaning when communicating inside your company or with customers.&lt;br /&gt;&lt;br /&gt;And even more – it’s the way of effective break. Because break is just the change of activity area, isn’t it? And such meetings will not only get an employee out of his everyday job, but will also let him to return to his work with clear mind and probably new ideas.&lt;br /&gt;&lt;br /&gt;At last, it’s just another way of communication. There are not so many things that are more important, than communication in team.&lt;br /&gt;&lt;br /&gt;So, we have five advantages.&lt;br /&gt;What does it cost? Approximately 15 minutes of your working time per week. It’s not so much, isn’t it?&lt;br /&gt;&lt;br /&gt;E.g., yesterday I had a lecture for colleagues; it was about using &lt;span style="font-style: italic;"&gt;RAII&lt;/span&gt; design pattern in C++ development. If you don’t work at Optixsoft yet and missed a lecture, but if you are  a developer and if your language, happily, has destructors, then I would strongly recommend you to learn this pattern. It will make your using of resources significantly easier. This pattern is clearly described in works of such C++ gurus as Stroustrup, Meyers, Sutter and Alexandrescu and is considered as important part of good coding style. You can read about this pattern, for example, in &lt;span style="font-style: italic;"&gt;«Effective С++. 3rd Edition» by Scott Meyers&lt;/span&gt; or in &lt;a href="http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization"&gt;Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;By the way, my name is Alex Korotkin. This is my first post on our company blog. I’m responsible for development at Optixsoft, so my posts will refer to development, more or less. I will be glad to answer your questions. I’m sure that such communications will be useful for all of us.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-1840077940580723368?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2008/08/15-minutes-of-effective-communication.html</link><author>noreply@blogger.com (Alex Che)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-1388491196673138235</guid><pubDate>Tue, 05 Aug 2008 11:23:00 +0000</pubDate><atom:updated>2008-08-06T18:21:51.982+03:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Network Monitoring</category><category domain='http://www.blogger.com/atom/ns#'>RFTS</category><category domain='http://www.blogger.com/atom/ns#'>article</category><title>Optical network monitoring in practice – what do you need to know.</title><description>&lt;span style="line-height: 115%;"&gt;We decided to write a series of publications (articles) about the practical use of optical network monitoring systems (RFTS). Thus, together with the IIT company, we wrote the first article, which is titled "&lt;a href="http://www.optixsoft.com/articles/automatic-monitoring-optical-fiber-analysis.pdf"&gt;Methods of Optical Fiber Parameters Analysis under Automatic Monitoring&lt;/a&gt;" (this article was published in the &lt;a href="http://www.lightwave-russia.com/2008-1e.shtml"&gt;Russian edition of Lightwave magazine&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;As is usual, in the process of creating an article, our work has born a lot of material that goes beyond the originally planned topic. Based upon this material &lt;/span&gt;&lt;span style="line-height: 115%;"&gt; a number of useful articles on the following issues &lt;/span&gt;&lt;span style="line-height: 115%;"&gt;will &lt;/span&gt;&lt;span style="line-height: 115%;"&gt;soon &lt;/span&gt;&lt;span style="line-height: 115%;"&gt;appear&lt;/span&gt;&lt;span style="line-height: 115%;"&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Network monitoring system architecture&lt;/span&gt;&lt;br /&gt;Here we are going to talk about various ways to set up a monitoring system. We will try to give an answer to such question as: Should OTDR operate continuously or should it start measuring once it has received an alarm signal from a permanently active OPM (optical power meter)&lt;/span&gt;&lt;span style="line-height: 115%;"&gt;. This issue is important if it is necessary to save the resources of expensive OTDR devices. Also we will explain the frequent problem of separating zones of responsibility during the monitoring of large networks, covering, for example, several administrative units &lt;/span&gt;&lt;span style="line-height: 115%;"&gt;(subnational entities) within their organizations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- "Vectorial" method of fiber parameters analysis during automatic monitoring (RFTS)&lt;/span&gt;&lt;br /&gt;Since this method has been applied to the &lt;a href="http://www.optixsoft.com/products-solutions/remote-fiber-testing-system-en.php"&gt;monitoring system software&lt;/a&gt;, which we develop at OptixSoft, we will describe it in detail. We will give practical advices for users on how to markup the trace properly, how to choose parameters to measure a reference trace, how to optimize the reference trace template to increase the system reaction rate and so on. Such interesting issue like Faults Prediction will be described too.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Economic effects of the use of monitoring systems (RFTS)&lt;/span&gt;&lt;br /&gt;We will try to evaluate once again the qualitative and quantitative effect of using network monitoring system in practice.  We will deal with the subject of Reducing Mean Time to Repair has usually been taken to restore communications after the accident. &lt;/span&gt;&lt;span style="line-height: 115%;"&gt;We will describe Faults &lt;/span&gt;&lt;span style="line-height: 115%;"&gt;Prediction usability in case of fiber degradation and other benefits like unification of tools and  documents.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-1388491196673138235?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2008/08/optical-network-monitoring-in-practice.html</link><author>noreply@blogger.com (Mike Ziuzin)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7451346569172922351.post-6711655272141084952</guid><pubDate>Tue, 22 Jul 2008 09:17:00 +0000</pubDate><atom:updated>2008-07-28T20:18:34.093+03:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>news</category><category domain='http://www.blogger.com/atom/ns#'>chronicle</category><category domain='http://www.blogger.com/atom/ns#'>website</category><title>New website design!</title><description>&lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;Congratulations! Finally it happens.&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;Look at our previous design - also not bad but just  a little bit non-informative))).&lt;/p&gt;&lt;p class="MsoNoSpacing"&gt; Let’s save it for the history:&lt;/p&gt;&lt;p class="MsoNoSpacing"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.optixsoft.com/blog/en/uploaded_images/optixsoft-737177.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.optixsoft.com/blog/en/uploaded_images/optixsoft-737172.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7451346569172922351-6711655272141084952?l=www.optixsoft.com%2Fblog%2Fen'/&gt;&lt;/div&gt;</description><link>http://www.optixsoft.com/blog/en/2008/07/new-web-site-design.html</link><author>noreply@blogger.com (Mike Ziuzin)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item></channel></rss>