<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://baszerr.eu/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>BaSzErr - blog:2010</title>
        <description></description>
        <link>https://baszerr.eu/</link>
        <lastBuildDate>Tue, 21 Apr 2026 16:47:10 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://baszerr.eu/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
            <title>BaSzErr</title>
            <link>https://baszerr.eu/</link>
        </image>
        <item>
            <title>2010.01.03</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.03</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;open_source_and_licensing&quot;&gt;2010.01.03 - open source and licensing&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
i had some problems with &lt;a href=&quot;https://en.wikipedia.org/wiki/GPL&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/GPL&quot;&gt;GPL&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/LGPL&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/LGPL&quot;&gt;LGPL&lt;/a&gt; licenses in the past and recently it bounced back to be. this is why i decided to share with you my opinion on in an short article &lt;a href=&quot;https://baszerr.eu/doku.php?id=docs:open_source_and_licensing:open_source_and_licensing&quot; class=&quot;wikilink1&quot; title=&quot;docs:open_source_and_licensing:open_source_and_licensing&quot; data-wiki-id=&quot;docs:open_source_and_licensing:open_source_and_licensing&quot;&gt;open source and licensing&lt;/a&gt;. if you plan to release some code/project open source, read it first and think twice if this is what you really want to do. (L)&lt;abbr title=&quot;GNU General Public License&quot;&gt;GPL&lt;/abbr&gt; is not that “free” as you might think…
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:01 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.05</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.05</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;fly&quot;&gt;2010.01.05 - fly?&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;em&gt;“If God had really intended men to fly, he&amp;#039;d make it easier to get to the airport.”&lt;/em&gt; – George Winters
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:08:58 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.06</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.06</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;own_company_in_rwanda&quot;&gt;2010.01.06 - own company in Rwanda&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
i just got message from a friend to read an interesting article. it is written by a guy who traveled to &lt;a href=&quot;https://en.wikipedia.org/wiki/Rwanda&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Rwanda&quot;&gt;Rwanda&lt;/a&gt; and noticed interesting differences between that place and &lt;a href=&quot;https://en.wikipedia.org/wiki/Poland&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Poland&quot;&gt;Poland&lt;/a&gt;. in fact – Poland is the one that looks like 3rd-world country, when you want to open your company. since this is problem i&amp;#039;m &lt;a href=&quot;http://www.explicosoft.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.explicosoft.com&quot; rel=&quot;ugc nofollow&quot;&gt;familiar with&lt;/a&gt; for some time now i found this text very touching – how easy an simple it might be, when there is no shitty laws all around you…
&lt;/p&gt;

&lt;p&gt;
i strongly advise you to read &lt;a href=&quot;http://konradjestwrwandzie.wordpress.com/2008/09/07/&quot; class=&quot;urlextern&quot; title=&quot;http://konradjestwrwandzie.wordpress.com/2008/09/07/&quot; rel=&quot;ugc nofollow&quot;&gt;this text&lt;/a&gt; yourself. or, if you plan to open your business in 3rd-world country, like Poland – better don&amp;#039;t…
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:02 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.08</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.08</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;genetic_algorithms_resurrected&quot;&gt;2010.01.08 - genetic algorithms resurrected&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
during &lt;a href=&quot;http://www.pwr.wroc.pl&quot; class=&quot;urlextern&quot; title=&quot;http://www.pwr.wroc.pl&quot; rel=&quot;ugc nofollow&quot;&gt;my M.Sc. studies&lt;/a&gt; i had a lot of courses in &lt;a href=&quot;https://en.wikipedia.org/wiki/artificial intelligence&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/artificial intelligence&quot;&gt;artificial intelligence&lt;/a&gt;, along which there was one semester of &lt;a href=&quot;https://en.wikipedia.org/wiki/genetic algorithms&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/genetic algorithms&quot;&gt;genetic algorithms&lt;/a&gt; (aka: GA). yesterday, when i was at my friend&amp;#039;s place he asked me to search for some materials we were presenting during that course, since he was asked to prepare a GA overview seminar.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.08&amp;amp;media=blog:2010:magazyn_01.png&quot; class=&quot;media&quot; title=&quot;blog:2010:magazyn_01.png&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=2d72a5&amp;amp;media=blog:2010:magazyn_01.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; title=&quot;the warehouse&quot; alt=&quot;the warehouse&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
after doing some digging on the hard drive i&amp;#039;ve found lectures, seminars we were presenting and project that we implemented. the application was called &amp;#039;sciezka&amp;#039; (ang. &amp;#039;path&amp;#039;) and it used GA to find &amp;#039;cheap&amp;#039; (in terms of length and up/down complexity) path from one point to another, on a given map. maps were gray-scaled, where black was the lowest height, while white was the highest part – it gave us 256 levels. crossing level up/down (going up/down the hill) was more &amp;#039;expensive&amp;#039; than walking on the same height all the time, so the best path should be as short as possible, but also should not go up/down a lot.
&lt;/p&gt;

&lt;p&gt;
example path found by our algorithm on &amp;#039;the warehouse&amp;#039; map means staying on the ground and not climbing to the top of the package. just to go straight ahead to the destination.
&lt;/p&gt;

&lt;p&gt;
another examples are quite obvious – paths find by GA are easy to spot straight ahead.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.08&amp;amp;media=blog:2010:wyspy_02_01.png&quot; class=&quot;media&quot; title=&quot;blog:2010:wyspy_02_01.png&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=9caa11&amp;amp;media=blog:2010:wyspy_02_01.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;the islands&quot; alt=&quot;the islands&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.08&amp;amp;media=blog:2010:2_tif_01.png&quot; class=&quot;media&quot; title=&quot;blog:2010:2_tif_01.png&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=f95308&amp;amp;media=blog:2010:2_tif_01.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;round hills&quot; alt=&quot;round hills&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.08&amp;amp;media=blog:2010:kratownica_01.png&quot; class=&quot;media&quot; title=&quot;blog:2010:kratownica_01.png&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=b5820b&amp;amp;media=blog:2010:kratownica_01.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;the mesh&quot; alt=&quot;the mesh&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.08&amp;amp;media=blog:2010:t6_01.png&quot; class=&quot;media&quot; title=&quot;blog:2010:t6_01.png&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=18f628&amp;amp;media=blog:2010:t6_01.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; title=&quot;no crossing&quot; alt=&quot;no crossing&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
there were though some of them, that were not exactly “the expected results”. paths were fine, but the trick was, that when map has been created we were thinking about other solution, that would go through as little lines as possible. in few cases we haven&amp;#039;t spotted the most obvious solution…
&lt;/p&gt;

&lt;p&gt;
when following map has been prepared we though about path similar to one of the previous – we though GA will go ahead, but it will stay on the top of the map for the whole trip and then go down to the destination. it appeared though that going through such a high hill is very expensive and GA decided… to walk it around! would you cross 10[m] high wall? GA either. :)
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.08&amp;amp;media=blog:2010:t9_01.png&quot; class=&quot;media&quot; title=&quot;blog:2010:t9_01.png&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=aac36b&amp;amp;media=blog:2010:t9_01.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; title=&quot;entering the castle&quot; alt=&quot;entering the castle&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
the last, but not least, was &amp;#039;entering the castle&amp;#039; map. there were 2 walls around destination point and to make things a bit more difficult of GA, we painted few more lines, that would make simple “go ahead” tactic sub-optimal (it would require crossing extra lines). again it appeared that map had a little trick – while painting these lines we were already focused on the solution of crossing two walls we haven&amp;#039;t spotted that some of the newly added lines make our original solution outdated. see for your selves.
&lt;/p&gt;

&lt;p&gt;
i must say it is a very pleasant moment in life when your program exceeds your initial expectations… :)
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:01 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.09</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.09</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;c_and_final_virtual_methods&quot;&gt;2010.01.09 - C++ and &amp;#039;final&amp;#039; virtual methods&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
as we all know there is no &amp;#039;final&amp;#039; key word in C++, as is in for example &lt;a href=&quot;https://en.wikipedia.org/wiki/Java (programming language)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Java (programming language)&quot;&gt;Java&lt;/a&gt; or similar &amp;#039;sealed&amp;#039; keyword in &lt;a href=&quot;https://en.wikipedia.org/wiki/C Sharp (programming language)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/C Sharp (programming language)&quot;&gt;C#&lt;/a&gt;. it is also not planned to be introduced in &lt;a href=&quot;https://en.wikipedia.org/wiki/C++0x&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/C++0x&quot;&gt;C++0x&lt;/a&gt;. until just a few days ago i didn&amp;#039;t find it an interesting topic myself… until i came across such a need.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2010.01.09 - C++ and &amp;#039;final&amp;#039; virtual methods&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;c_and_final_virtual_methods&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-411&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;situation&quot;&gt;situation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
what i had were 2 set of classes: BaseA (with pure-virtual methods), BaseB (also with pure-virtuals) and many classes derived from one of these two. in fact, there were 2 disjoint class hierarchies, except for one thing – both BaseA and BaseB had identical public interface, though private, pure-virtual methods differed. the simplified version could look like this:
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;class BaseA
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// [some other code here]&lt;/span&gt;
    findQuestion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// [some other code here]&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; findQuestion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; answer&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code c&quot;&gt;class BaseB
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; check&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      doIt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// [some other code here]&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual bool check&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; doIt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
what happens in process() in both classes is typical &lt;a href=&quot;https://en.wikipedia.org/wiki/template method pattern&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/template method pattern&quot;&gt;template method pattern&lt;/a&gt;. since public APIs are identical, why not make it common? these classes were to be used together either way! so what do we do? we add base class to these two – let us call it CommonBase.
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;class CommonBase
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual ~CommonBase&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
now let us derive BaseA and BaseB from our new class!
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;class BaseA&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; public CommonBase
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// final&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// [some other code here]&lt;/span&gt;
    findQuestion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// [some other code here]&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; findQuestion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; answer&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code c&quot;&gt;class BaseB&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; public CommonBase
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// final&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; check&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      doIt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// [some other code here]&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual bool check&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; doIt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;situation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;situation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;412-2193&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;the_problem&quot;&gt;the problem&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
and here the problem arises – what if user accidentally overwrites process() call? she can do this, since its virtual call now. if i&amp;#039;d happen, compiler would not warn her, and application would be damaged, since code would not behave as expected in such derived classes – problems would not be so obvious in bigger application, where side effects of code in process() were minimal…
&lt;/p&gt;

&lt;p&gt;
what i wanted to do was use &amp;#039;final&amp;#039;-like mechanism, which C++ does not provide and will not provide in reasonable future. and so i start digging… i came across number of forums (ex.: &lt;a href=&quot;http://www.velocityreviews.com/forums/t454405-how-write-a-final-method-in-c-like-java.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.velocityreviews.com/forums/t454405-how-write-a-final-method-in-c-like-java.html&quot; rel=&quot;ugc nofollow&quot;&gt;_1_&lt;/a&gt; &lt;a href=&quot;http://www.experts-exchange.com/Programming/Languages/CPP/Q_22421379.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.experts-exchange.com/Programming/Languages/CPP/Q_22421379.html&quot; rel=&quot;ugc nofollow&quot;&gt;_2_&lt;/a&gt; &lt;a href=&quot;http://www.velocityreviews.com/forums/t276271-how-do-i-implement-final-in-c.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.velocityreviews.com/forums/t276271-how-do-i-implement-final-in-c.html&quot; rel=&quot;ugc nofollow&quot;&gt;_3_&lt;/a&gt; and so on…) sometimes find comments like “just insert the comment this method cannot be inherited from and it will be just fine 90% of the cases”&lt;a href=&quot;http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.12&quot; class=&quot;urlextern&quot; title=&quot;http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.12&quot; rel=&quot;ugc nofollow&quot;&gt;_4_&lt;/a&gt;. my answer is: NO – it won&amp;#039;t be fine, since if there is a simple way to make a mistake, it will be made – it&amp;#039;s just a matter of time…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;the problem&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_problem&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2194-3427&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;the_solution&quot;&gt;the solution&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
after a while i came to a conclusion – it can be made, though it requires some extra effort. my idea is to use static polymorphism to achieve this. trick is to break inheritance where process() is implemented. and so we make template-based derived class of CommonBase that takes &lt;a href=&quot;https://en.wikipedia.org/wiki/strategy pattern&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/strategy pattern&quot;&gt;strategy&lt;/a&gt; class as a parameter. this strategy implements process() as a non-virtual call, with proper call order and other stuff we need and defines pure-virtual methods – all as in original code. and so we have something like this:
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;class CommonBase
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual ~CommonBase&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code c&quot;&gt;template&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;typename TImpl&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
class CommonBaseImpl&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; public CommonBase
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    impl_.&lt;span class=&quot;me1&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  TImpl impl_&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code c&quot;&gt;class StrategyA
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// notice - not a virtual call!&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// [some other code here]&lt;/span&gt;
    findQuestion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// [some other code here]&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; findQuestion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; answer&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code c&quot;&gt;class StrategyB
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;// notice - not a virtual call!&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; check&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      doIt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// [some other code here]&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual bool check&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; doIt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
now we&amp;#039;re almost done. all we need to do is to implement our strategies the way we want and create instances. so it&amp;#039;s go!
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;class StrategyA_1&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; public StrategyA
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; findQuestion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; answer&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code c&quot;&gt;class StrategyB_1&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; public StrategyB
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  virtual bool check&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; doIt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
now we can create an instance and run it:
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;  std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;auto_ptr&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;CommonBase&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; base&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; new CommonBaseImpl&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;StrategyA_1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  base&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
and that&amp;#039;s all - we have running code, where it is not possible for user to accidentally overwrite relevant code, she should not be possible to.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;the solution&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_solution&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3428-5514&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;download&quot;&gt;download&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
to see how this works in real-life you can download &lt;a href=&quot;https://baszerr.eu/lib/exe/fetch.php?media=blog:2010:final_like_virtual.tar.bz2&quot; class=&quot;media mediafile mf_bz2&quot; title=&quot;blog:2010:final_like_virtual.tar.bz2 (2.2 KB)&quot;&gt;&amp;#039;final-like&amp;#039; example code&lt;/a&gt; and run it yourself. package contains 4 different implementations of 2 different strategies, so you&amp;#039;re free to do experiments or used it as you want.
&lt;/p&gt;

&lt;p&gt;
example is licensed as &lt;a href=&quot;https://en.wikipedia.org/wiki/beerware&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/beerware&quot;&gt;beerware&lt;/a&gt;, if you plan to used it for more than just exercises. ;)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;download&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;download&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5515-5904&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;c-tor_parameter_s&quot;&gt;c-tor parameter(s)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
there are few things that can be improved in above example. first of all is constructor – in most real-life cases c-tors do take parameter(s), so default c-tor is not enough. i skipped this step in above example just to stick to the point and not add additional noise to the basic idea. when you want to be able to pass any parameter(s) in generic way you should modify CommonBaseImpl like this: 
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;template&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;typename TImpl&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; typename TParam&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;int&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
class CommonBaseImpl&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; public CommonBase
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
public&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  CommonBaseImpl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; TParam &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
    impl_&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  CommonBaseImpl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  virtual &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; process&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Sth o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    impl_.&lt;span class=&quot;me1&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
private&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
  TImpl impl_&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
in case you need more paramters, make TParam ba a std::pair&amp;lt;&amp;gt;, boost::tuple&amp;lt;&amp;gt;, or just a dedicated structure that holds all of your parameters and so you can passes anything you want to any possible implementation you want.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;c-tor parameter(s)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;c-tor_parameter_s&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;5905-6852&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;minimizing_virtual_calls&quot;&gt;minimizing virtual calls&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
if you&amp;#039;ve read this carefully you probably noticed that there is no real need for using virtual calls when writing StrategyX and its derived classes. you can do the same trick as with CommonBase – just make StrategyX_Y (implementation) a template parameter to StrategyX using &lt;a href=&quot;https://en.wikipedia.org/wiki/Curiously recurring template pattern&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Curiously recurring template pattern&quot;&gt;CRTP&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
i&amp;#039;ve skipped this point again for sake of clarity. adding more templates (1 – if you stick just to CRTPl; 2 – if you need c-tor parameters to be passed (see example before)). this step does complicate code even more, and efficiency difference is minimal, since virtual calls does not cost much&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; – if this is not very time-critical code part, you can just stick to the virtuals – remeber: architecture and readability first, then optimizations&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;minimizing virtual calls&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;minimizing_virtual_calls&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;6853-7893&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;final_remarks&quot;&gt;final remarks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
as you can see, one can live without &amp;#039;final&amp;#039; keyword but it&amp;#039;s not straight-forward nor does explicitly express programmer&amp;#039;s intentions. why there is no such keyword in C++, i do not know. it would be helpful if there were – in a way it is in C++ spirit, since it does not introduce any overhead (this is just a compile-time check, and since compiler have to know full class declaration when deriving, it could be always checked) but does simplify life.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;final remarks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;final_remarks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;7894-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;i&amp;#039;ve measured it on my old Pentium IV to be ~2-3% during millions of executions of simple (but not inlined!) method&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;off course time-critical parts are exception here, but these are typically estimated as ~2% of all code.&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:08:59 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.10</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.10</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;carpe_diem&quot;&gt;2010.01.10 - carpe diem&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;em&gt;Twenty years from now you will be more disappointed by the things you didn&amp;#039;t do than by the ones you did do. So throw off the bowlines. Sail away from the safe harbor. Catch the trade winds in your sails. Explore. Dream. Discover.&lt;/em&gt; – &lt;a href=&quot;https://en.wikipedia.org/wiki/Mark Twain&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Mark Twain&quot;&gt;Mark Twain&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:08:58 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.14</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.14</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;liskov_vs_final&quot;&gt;2010.01.14 - Liskov vs. &amp;#039;final&amp;#039;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
few days ago i wrote about workaround for &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.09&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.09&quot; data-wiki-id=&quot;blog:2010:2010.01.09&quot;&gt;lack of &amp;#039;final&amp;#039; keyword for methods in C++&lt;/a&gt;. &lt;a href=&quot;http://www.rzechonek.net&quot; class=&quot;urlextern&quot; title=&quot;http://www.rzechonek.net&quot; rel=&quot;ugc nofollow&quot;&gt;Michał Rzechonek&lt;/a&gt; pointer out thing i haven&amp;#039;t spotted – there is an issue with &lt;a href=&quot;https://en.wikipedia.org/wiki/Liskov substitution principle&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Liskov substitution principle&quot;&gt;Liskov substitution principle&lt;/a&gt;. though it may not be crucial here, but it gives some light on why &amp;#039;final&amp;#039; is not present in C++, nor is planned to be in C++0x.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:08:58 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.16</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.16</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;sledge_s_done&quot;&gt;2010.01.16 - sledge&amp;#039;s done&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
yesterday i&amp;#039;ve finished developing and field/testing &lt;a href=&quot;https://baszerr.eu/doku.php?id=prjs:sledge&quot; class=&quot;wikilink1&quot; title=&quot;prjs:sledge&quot; data-wiki-id=&quot;prjs:sledge&quot;&gt;sledge&lt;/a&gt; project, started last year. it is really a great fun. as for me snow could be here for another year all the time! :)
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:08:58 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.21</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.21</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;it_s_not_polite_to_say_to_a_thread_fork_you&quot;&gt;2010.01.21 - it&amp;#039;s not polite to say to a thread &amp;#039;fork you!&amp;#039;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
recently, while working new &lt;a href=&quot;http://www.acarm.wcss.wroc.pl&quot; class=&quot;urlextern&quot; title=&quot;http://www.acarm.wcss.wroc.pl&quot; rel=&quot;ugc nofollow&quot;&gt;ACARM&lt;/a&gt; version (aka ACARM-ng&lt;sup&gt;&lt;a href=&quot;#fn__3&quot; id=&quot;fnt__3&quot; class=&quot;fn_top&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt;) i was investigating threads and how do they behave when &lt;em&gt;fork()&lt;/em&gt; is called. i found a set of articles you might be interested in.
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them&quot; class=&quot;urlextern&quot; title=&quot;http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them&quot; rel=&quot;ugc nofollow&quot;&gt;threads and fork - think twice before using them&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://unix.derkeiler.com/Newsgroups/comp.unix.programmer/2003-09/0672.html&quot; class=&quot;urlextern&quot; title=&quot;http://unix.derkeiler.com/Newsgroups/comp.unix.programmer/2003-09/0672.html&quot; rel=&quot;ugc nofollow&quot;&gt;fork() from a thread (pthreads)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
if you want to keep it short, the general idea is – don&amp;#039;t mix them (see: quotation in the title of this article)! the only exception is when calling &lt;em&gt;fork()&lt;/em&gt; from within multi-threaded application just to call &lt;em&gt;exec()&lt;/em&gt; in the forked process (ex. just like &lt;em&gt;system()&lt;/em&gt; call does). there is a pitfall however, one must be aware of. when forking and spawning new process one must remember about &lt;a href=&quot;http://udrepper.livejournal.com/20407.html&quot; class=&quot;urlextern&quot; title=&quot;http://udrepper.livejournal.com/20407.html&quot; rel=&quot;ugc nofollow&quot;&gt;secure file descriptor handling&lt;/a&gt;. in short, when calling &lt;em&gt;exec()&lt;/em&gt; open descriptors are moved to exec&amp;#039;ed application.
&lt;/p&gt;

&lt;p&gt;
when talking about threads there is also interesting topic on how to handle signals in threads. article 
&lt;a href=&quot;http://www.linuxjournal.com/article/2121&quot; class=&quot;urlextern&quot; title=&quot;http://www.linuxjournal.com/article/2121&quot; rel=&quot;ugc nofollow&quot;&gt;thread-specific data and signal handling in multi-threaded applications&lt;/a&gt; covers this, though its VERY old and many things are outdated right now. the idea is to run dedicated thread just to handle incoming signals (i.e. idle 99.9999% of the time). this has another advantage – it allows to use mutexes and other synchronization mechanisms, since you know that signal will be handled in a separate thread, that will not wait forever for mutex to release.
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__3&quot; id=&quot;fn__3&quot; class=&quot;fn_bot&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;no home page yet&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:08:59 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.22</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.22</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;scripts_in_gui&quot;&gt;2010.01.22 - scripts in GUI&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
there was once a talk on one of the forums – text console vs. &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;. the final post was from one of the console guys was: “ok - so how do you make &lt;em&gt;for f in *.tar.bz2 ; do tar xjvf “$f” ; done&lt;/em&gt; in &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;?”. it quite end up the discussion. recently the &lt;a href=&quot;http://www.youtube.com/watch?v=FxDOlhysFcM&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=FxDOlhysFcM&quot; rel=&quot;ugc nofollow&quot;&gt;sikuli script&lt;/a&gt; has been developed to handle GUIs from a scripts. nice idea, but as you can see on the demo - a lot needs to be improved. performance is a tragic – but if you run python on the java vm, and all this to process images – it&amp;#039;s not a surprise i guess… ;)
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:01 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.30</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.30</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;white_mountains&quot;&gt;2010.01.30 - white mountains&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
the winter has come this year the big way. i always loved winter, snow and all the corresponding views associated with it. since few years i complained about lack of snow, lack of cold, etc… this year i must say i feel satisfied – it is snowing since few weeks, temperature is (way!) below freezing point and so it is nice outside, it is white everywhere… it is just beautiful! just the way it should be every winter! :)
&lt;/p&gt;

&lt;p&gt;
i&amp;#039;ve already done &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.16&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.16&quot; data-wiki-id=&quot;blog:2010:2010.01.16&quot;&gt;some sledging&lt;/a&gt;. to enjoy “the white time” even more i&amp;#039;ve decided to do a little mountain traveling. the view was truly delightful! if you do have some time just see the mountains covered in snow every way you look! :) see some pictures yourself (clink on the image to enlarge it).
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.30&amp;amp;media=blog:2010:low_img_8967.jpg&quot; class=&quot;media&quot; title=&quot;blog:2010:low_img_8967.jpg&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=8111b3&amp;amp;media=blog:2010:low_img_8967.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;snowy trees&quot; alt=&quot;snowy trees&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.30&amp;amp;media=blog:2010:low_img_8969.jpg&quot; class=&quot;media&quot; title=&quot;blog:2010:low_img_8969.jpg&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=ffc7ca&amp;amp;media=blog:2010:low_img_8969.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;snow blizzard near mountain hostel&quot; alt=&quot;snow blizzard near mountain hostel&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.30&amp;amp;media=blog:2010:low_img_8983.jpg&quot; class=&quot;media&quot; title=&quot;blog:2010:low_img_8983.jpg&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=e7449c&amp;amp;media=blog:2010:low_img_8983.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;white morning&quot; alt=&quot;white morning&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.30&amp;amp;media=blog:2010:low_img_8994.jpg&quot; class=&quot;media&quot; title=&quot;blog:2010:low_img_8994.jpg&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=8b99a4&amp;amp;media=blog:2010:low_img_8994.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;someone&amp;#039;s been here :)&quot; alt=&quot;someone&amp;#039;s been here :)&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://baszerr.eu/lib/exe/detail.php?id=blog%3A2010%3A2010.01.30&amp;amp;media=blog:2010:low_img_9048.jpg&quot; class=&quot;media&quot; title=&quot;blog:2010:low_img_9048.jpg&quot;&gt;&lt;img src=&quot;https://baszerr.eu/lib/exe/fetch.php?w=200&amp;amp;tok=71bf0d&amp;amp;media=blog:2010:low_img_9048.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;snowy track&quot; alt=&quot;snowy track&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:08:59 +0000</pubDate>
        </item>
        <item>
            <title>2010.01.31</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010.01.31</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;warhammer_and_the_battle_of_wizna&quot;&gt;2010.01.31 - WarHammer and the battle of Wizna&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
yesterday evening i reminded myself incredible intro to &lt;a href=&quot;https://en.wikipedia.org/wiki/Warhammer 40,000: Dawn of War&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Warhammer 40,000: Dawn of War&quot;&gt;Warhammer 40,000: Dawn of War&lt;/a&gt;. i started to look for other intros that were present in other Warhammer games. a collection i recommend to see goes here:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=JglnSrfJtyQ&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=JglnSrfJtyQ&quot; rel=&quot;ugc nofollow&quot;&gt;Warhammer Age of reckoning (Cinematic Trailer 1)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=zKOhzfkCdbY&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=zKOhzfkCdbY&quot; rel=&quot;ugc nofollow&quot;&gt;Warhammer Age of reckoning (Cinematic Trailer 2)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=UID6LEzvRRo&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=UID6LEzvRRo&quot; rel=&quot;ugc nofollow&quot;&gt;Warhammer 40.000 Dawn of war&lt;/a&gt; (the of i&amp;#039;ve mentioned before)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=Yu4ABhVd28U&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=Yu4ABhVd28U&quot; rel=&quot;ugc nofollow&quot;&gt;Warhammer 40.000 Dawn of war II&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=qKKJ0TF3jGQ&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=qKKJ0TF3jGQ&quot; rel=&quot;ugc nofollow&quot;&gt;Warhammer 40.000 Dawn of war II The last stand&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=aFHKIFDjk9I&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=aFHKIFDjk9I&quot; rel=&quot;ugc nofollow&quot;&gt;Warhammer 40.000 Space marine&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=DDZ47fvEG9c&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=DDZ47fvEG9c&quot; rel=&quot;ugc nofollow&quot;&gt;Warhammer Mark of chaos&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
looking for more i&amp;#039;ve came across Swedish band called &lt;a href=&quot;https://en.wikipedia.org/wiki/Sabaton (band)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Sabaton (band)&quot;&gt;Sabaton&lt;/a&gt;. they play power metal and do it very well. i got interested a little more and found out that they have written a song about Polish soldiers fighting in the &lt;a href=&quot;https://en.wikipedia.org/wiki/battle of Wizna&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/battle of Wizna&quot;&gt;battle of Wizna&lt;/a&gt;, during world war II, who stand in power of 720 man and few bunkers against 42000 (yes - 42 thousands!) Nazi army, armed with over 600 tanks, air support, lightly armored vehicles and artillery for 3 days, giving time for &lt;a href=&quot;https://en.wikipedia.org/wiki/Warsaw&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Warsaw&quot;&gt;Warsaw&lt;/a&gt; to organize the defense. nearly everyone of them died, standing the ground until the end. for this, the battle of &lt;a href=&quot;https://en.wikipedia.org/wiki/Wizna&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Wizna&quot;&gt;Wizna&lt;/a&gt; is often referred to as “Polish &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle of Thermopylae&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Battle of Thermopylae&quot;&gt;Thermopylae&lt;/a&gt;”. i strongly advise you to read more about this battle and listen to &lt;a href=&quot;http://www.youtube.com/watch?v=AoQj8GGHNxU&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=AoQj8GGHNxU&quot; rel=&quot;ugc nofollow&quot;&gt;Sabaton&amp;#039;s 40-1&lt;/a&gt; song (see also: &lt;a href=&quot;http://www.youtube.com/watch?v=epeQwq-aYV0&quot; class=&quot;urlextern&quot; title=&quot;http://www.youtube.com/watch?v=epeQwq-aYV0&quot; rel=&quot;ugc nofollow&quot;&gt;official &amp;#039;40-1&amp;#039; video&lt;/a&gt;).
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:01 +0000</pubDate>
        </item>
        <item>
            <title>2010</title>
            <link>https://baszerr.eu/doku.php?id=blog:2010:2010</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;section2010&quot;&gt;2010&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:12:21&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:12:21&quot; data-wiki-id=&quot;blog:2010:12:21&quot;&gt;2010.12.21 - snow time in Karkonosze &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:11:25&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:11:25&quot; data-wiki-id=&quot;blog:2010:11:25&quot;&gt;2010.11.25 - this is a thread we live in&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:11:05&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:11:05&quot; data-wiki-id=&quot;blog:2010:11:05&quot;&gt;2010.11.05 - universal stepper motor controller&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:11:03&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:11:03&quot; data-wiki-id=&quot;blog:2010:11:03&quot;&gt;2010.11.03 - funny memory&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:10:23&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:10:23&quot; data-wiki-id=&quot;blog:2010:10:23&quot;&gt;2010.10.23 - security guy&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:10:09&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:10:09&quot; data-wiki-id=&quot;blog:2010:10:09&quot;&gt;2010.10.09 - semi-seriously on semi-conductors&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:09:30&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:09:30&quot; data-wiki-id=&quot;blog:2010:09:30&quot;&gt;2010.09.30 - more on passwords&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:09:20&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:09:20&quot; data-wiki-id=&quot;blog:2010:09:20&quot;&gt;2010.09.20 - interesting board&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:09:16&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:09:16&quot; data-wiki-id=&quot;blog:2010:09:16&quot;&gt;2010.09.16 - election of reason&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:09:09&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:09:09&quot; data-wiki-id=&quot;blog:2010:09:09&quot;&gt;2010.09.09 - growing up in the universe&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:09:03&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:09:03&quot; data-wiki-id=&quot;blog:2010:09:03&quot;&gt;2010.09.03 - soccer revolution?&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:08:25&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:08:25&quot; data-wiki-id=&quot;blog:2010:08:25&quot;&gt;2010.08.25 - security and web applications&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:08:20&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:08:20&quot; data-wiki-id=&quot;blog:2010:08:20&quot;&gt;2010.08.20 - feeding the fiords&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:07:03&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:07:03&quot; data-wiki-id=&quot;blog:2010:07:03&quot;&gt;2010.07.03 - 10 things about hard drives&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:06:28&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:06:28&quot; data-wiki-id=&quot;blog:2010:06:28&quot;&gt;2010.06.28 - Izerskie and Sowie&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:06:18&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:06:18&quot; data-wiki-id=&quot;blog:2010:06:18&quot;&gt;2010.06.18 - Mazury&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:05:20&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:05:20&quot; data-wiki-id=&quot;blog:2010:05:20&quot;&gt;2010.05.20 - brush bots -- 3rd edition&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:05:09&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:05:09&quot; data-wiki-id=&quot;blog:2010:05:09&quot;&gt;2010.05.09 - in memoriam...&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:04:30&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:04:30&quot; data-wiki-id=&quot;blog:2010:04:30&quot;&gt;2010.04.30 - toilet flush under linux&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:04:29&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:04:29&quot; data-wiki-id=&quot;blog:2010:04:29&quot;&gt;2010.04.29 - mountains of spring&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:04:05&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:04:05&quot; data-wiki-id=&quot;blog:2010:04:05&quot;&gt;2010.04.05 - to do or not to do?&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:03:26&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:03:26&quot; data-wiki-id=&quot;blog:2010:03:26&quot;&gt;2010.03.26 - YAPA&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:03:09&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:03:09&quot; data-wiki-id=&quot;blog:2010:03:09&quot;&gt;2010.03.09 - eagle&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:03:06&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:03:06&quot; data-wiki-id=&quot;blog:2010:03:06&quot;&gt;2010.03.06 - maintenance in IT.&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:02:28&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:02:28&quot; data-wiki-id=&quot;blog:2010:02:28&quot;&gt;2010.02.28 - new WPA/TKIP flaw&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:02:26&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:02:26&quot; data-wiki-id=&quot;blog:2010:02:26&quot;&gt;2010.02.26 - cormageddon&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:02:17&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:02:17&quot; data-wiki-id=&quot;blog:2010:02:17&quot;&gt;2010.02.17 - CPU cache once more&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.31&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.31&quot; data-wiki-id=&quot;blog:2010:2010.01.31&quot;&gt;2010.01.31 - WarHammer and the battle of Wizna&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.30&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.30&quot; data-wiki-id=&quot;blog:2010:2010.01.30&quot;&gt;2010.01.30 - white mountains&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.22&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.22&quot; data-wiki-id=&quot;blog:2010:2010.01.22&quot;&gt;2010.01.22 - scripts in GUI&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.21&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.21&quot; data-wiki-id=&quot;blog:2010:2010.01.21&quot;&gt;2010.01.21 - it&amp;#039;s not polite to say to a thread &amp;#039;fork you!&amp;#039;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.16&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.16&quot; data-wiki-id=&quot;blog:2010:2010.01.16&quot;&gt;2010.01.16 - sledge&amp;#039;s done&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.14&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.14&quot; data-wiki-id=&quot;blog:2010:2010.01.14&quot;&gt;2010.01.14 - Liskov vs. &amp;#039;final&amp;#039;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.10&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.10&quot; data-wiki-id=&quot;blog:2010:2010.01.10&quot;&gt;2010.01.10 - carpe diem&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.09&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.09&quot; data-wiki-id=&quot;blog:2010:2010.01.09&quot;&gt;2010.01.09 - C++ and &amp;#039;final&amp;#039; virtual methods&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.08&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.08&quot; data-wiki-id=&quot;blog:2010:2010.01.08&quot;&gt;2010.01.08 - genetic algorithms resurrected&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.06&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.06&quot; data-wiki-id=&quot;blog:2010:2010.01.06&quot;&gt;2010.01.06 - own company in Rwanda&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.05&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.05&quot; data-wiki-id=&quot;blog:2010:2010.01.05&quot;&gt;2010.01.05 - fly?&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://baszerr.eu/doku.php?id=blog:2010:2010.01.03&quot; class=&quot;wikilink1&quot; title=&quot;blog:2010:2010.01.03&quot; data-wiki-id=&quot;blog:2010:2010.01.03&quot;&gt;2010.01.03 - open source and licensing&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:02 +0000</pubDate>
        </item>
    </channel>
</rss>
