<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5417353450273279655</id><updated>2024-09-16T02:36:26.453+02:00</updated><category term="free"/><category term="3d"/><category term="c++"/><category term="game maker"/><category term="c"/><category term="download"/><category term="editor"/><category term="game"/><category term="gmte"/><category term="gmte 2"/><category term="terrain"/><category term="simple"/><category term="windows"/><category term="0"/><category term="1990"/><category term="3d vision"/><category term="8.1"/><category term="ReadDirectoryChangesW"/><category term="_mm_stream_si128"/><category term="assembly"/><category term="bandwidth"/><category term="bits"/><category term="blogger"/><category term="calc"/><category term="cannot"/><category term="code"/><category term="commandline"/><category term="demo"/><category term="dynamic"/><category term="easy"/><category term="example"/><category term="extract b-bit number"/><category term="fast zero array in c"/><category term="fast zeromemory"/><category term="few"/><category term="file"/><category term="free lego game"/><category term="game boy"/><category term="gnucalc"/><category term="h"/><category term="hi"/><category term="highgui"/><category term="highlighting"/><category term="how fast zero memory"/><category term="how to use"/><category term="include"/><category term="initialize"/><category term="input"/><category term="java"/><category term="jump and run"/><category term="leg&#39;oh"/><category term="lego"/><category term="lego  generation  leadwerks  masterxilo  hurricane-eye  entertainment  shadows  realtime  bricks  lots  physx  physics  fun  falling  terrain  implementation"/><category term="lego jump and run"/><category term="legoh"/><category term="legoh 2"/><category term="list"/><category term="log2"/><category term="long"/><category term="mednafen virtual boy 3d vision"/><category term="memset"/><category term="mouse"/><category term="movntdq"/><category term="msdn"/><category term="multi touch"/><category term="nintendo"/><category term="no such file or directory"/><category term="nvidia"/><category term="opencv"/><category term="optimized"/><category term="organization"/><category term="performance"/><category term="play"/><category term="programming"/><category term="quick"/><category term="ram"/><category term="range"/><category term="read"/><category term="repacked"/><category term="replacement"/><category term="retro"/><category term="rts"/><category term="scheduling"/><category term="set null"/><category term="software"/><category term="specific"/><category term="stereo"/><category term="stereoscopic"/><category term="stream"/><category term="string"/><category term="syntax"/><category term="todo"/><category term="tool"/><category term="unsophisticated"/><category term="virtual boy"/><category term="winapi"/><category term="zero memory"/><title type='text'>Hurricane-Eye Entertainment Blog</title><subtitle type='html'>Hurricane-Eye Entertainment Blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-2751494531838820459</id><published>2022-12-29T19:20:00.003+01:00</published><updated>2022-12-29T19:26:57.222+01:00</updated><title type='text'>Coins - Pay to Win</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://coinspaytowin-50d3a.firebaseapp.com/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;781&quot; data-original-width=&quot;375&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5tJsCCUz-Co4_3bRl1y_z6Su-wUg3He_8tYz7Tyn0g5EsvoWni1VQpPMpCcCZ1bOCPi_LMZYDZaPkfrh_fdbz4nBVTbZp8GB79XgPPOBsa3vj5b3ETIRKmnVry8cG8zelJ1UqcFq3ZaIZU_h8mYn39M0rzjDJfgqCUN4ohtHF62yrYIttLn0tllg-/s320/chrome_phone_screenshot_full.png&quot; width=&quot;154&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Coins, the purest Pay to Win game. Buy coins to rank highest.&lt;/p&gt;&lt;p&gt;To win in this game, you need to buy more coins than anyone else! Can you afford it?&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://coinspaytowin-50d3a.firebaseapp.com/&quot;&gt;https://coinspaytowin-50d3a.firebaseapp.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.paulfrischknecht.coinspaytowin&quot;&gt;https://play.google.com/store/apps/details?id=com.paulfrischknecht.coinspaytowin&lt;/a&gt;&lt;/p&gt;&lt;p&gt;(Microsoft Store Link Pending)&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/2751494531838820459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2022/12/coins-pay-to-win.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/2751494531838820459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/2751494531838820459'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2022/12/coins-pay-to-win.html' title='Coins - Pay to Win'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5tJsCCUz-Co4_3bRl1y_z6Su-wUg3He_8tYz7Tyn0g5EsvoWni1VQpPMpCcCZ1bOCPi_LMZYDZaPkfrh_fdbz4nBVTbZp8GB79XgPPOBsa3vj5b3ETIRKmnVry8cG8zelJ1UqcFq3ZaIZU_h8mYn39M0rzjDJfgqCUN4ohtHF62yrYIttLn0tllg-/s72-c/chrome_phone_screenshot_full.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-3558104779320588712</id><published>2022-11-20T15:32:00.003+01:00</published><updated>2022-11-21T10:10:59.797+01:00</updated><title type='text'>White</title><content type='html'>&lt;div&gt;A white screen is arguably one of the simplest and least arbitrary things a screen-driving information system can present, together with Black (to be released soon).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some implementations:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href=&quot;https://white.paulfrischknecht.com/&quot;&gt;https://white.paulfrischknecht.com/&lt;/a&gt;&amp;nbsp;(a PWA)&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.paulfrischknecht.white&quot;&gt;https://play.google.com/store/apps/details?id=com.paulfrischknecht.white&lt;/a&gt;&amp;nbsp;(a native Android app, listed in the Google Play App Store)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://www.shadertoy.com/view/msfGDM&quot;&gt;https://www.shadertoy.com/view/msfGDM&lt;/a&gt;&amp;nbsp;(a glsl shader, listed in Shadertoy)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=QggJzZdIYPI&quot;&gt;https://www.youtube.com/watch?v=QggJzZdIYPI&lt;/a&gt;&amp;nbsp;(a YouTube video, not mine)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/3558104779320588712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2022/11/white.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/3558104779320588712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/3558104779320588712'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2022/11/white.html' title='White'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-5806011426640745201</id><published>2020-04-26T11:00:00.004+02:00</published><updated>2020-04-26T11:02:08.032+02:00</updated><title type='text'>Unofficial Powershell Strict Mode</title><content type='html'>Use Powershell Strict Mode (Unless You Love Debugging)&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;Set-StrictMode&lt;/span&gt;&amp;nbsp;-Version&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;2&lt;/span&gt;
&lt;span style=&quot;color: #569cd6;&quot;&gt;$ErrorActionPreference&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Stop&quot;&lt;/span&gt;
&lt;span style=&quot;color: #6a9955;&quot;&gt;#&amp;nbsp;^^^&lt;/span&gt;
&lt;/div&gt;
&lt;br /&gt;
Inspired by&amp;nbsp;&lt;a href=&quot;http://redsymbol.net/articles/unofficial-bash-strict-mode/&quot;&gt;http://redsymbol.net/articles/unofficial-bash-strict-mode/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/5806011426640745201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2020/04/unofficial-powershell-strict-mode.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/5806011426640745201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/5806011426640745201'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2020/04/unofficial-powershell-strict-mode.html' title='Unofficial Powershell Strict Mode'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-3313666401936596572</id><published>2016-11-05T18:01:00.002+01:00</published><updated>2016-11-05T19:49:19.989+01:00</updated><title type='text'>Length in bytes of Virtual Boy games </title><content type='html'>I&#39;m exercising automation of data extraction. Here I have a bunch of files in different .7z files whose length I want to extract.

&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;3D Tetris (U) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Galactic Pinball (JU) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Golf (U) [!]&lt;/td&gt;&lt;td&gt;2097152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T&amp;amp;E Virtual Golf (J) [!]&lt;/td&gt;&lt;td&gt;2097152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T&amp;amp;E Virtual Golf (J) [b1]&lt;/td&gt;&lt;td&gt;2097152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Insane Mouse Mansion (J) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Jack Bros (J) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Jack Bros (U) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Jack Bros (U) [b1]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Mario Clash (JU) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Mario Clash (JU) [b1]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Mario&#39;s Tennis (JU) [!]&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Mario&#39;s Tennis (JU) [a1]&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Nester&#39;s Funky Bowling (U)&lt;/td&gt;&lt;td&gt;2097152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Nester&#39;s Funky Bowling (U) [a1]&lt;/td&gt;&lt;td&gt;2097152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Nester&#39;s Funky Bowling (U) [b1]&lt;/td&gt;&lt;td&gt;2097154&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Nester&#39;s Funky Bowling (U) [b2]&lt;/td&gt;&lt;td&gt;2097124&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Panic Bomber (J) [!]&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Panic Bomber (U) [!]&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Panic Bomber (U) [b1]&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Panic Bomber (U) [h1]&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Panic Bomber (U) [h2]&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Blox V1.0 by KR155E (PD)&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Blox V1.1 by KR155E (PD)&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Croach, The (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Etch-A-Sketch by Pat Daderko (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Framebuffer Drawing Demo by Pat Daderko (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;GLOW Demo by KR155E (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;GLOW Demo by KR155E (PD) [a1]&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Hello, World! Demo V1.0 by Amos Bieler (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Hello, World! Demo V1.1 by Amos Bieler (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Mario Flying Demo by Frostgiant (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Matrix, The by Cooler (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;OBJ Pointer Demo by Dan Bergman (PD)&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Reality Boy Demo 1 (PD)&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Reality Boy Demo 2 (PD)&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Scaling Demo by Parasyte (PD)&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Simon by Pat Daderko (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Super Fighter Demo by KR155E (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Tic Tac Toe by Pat Daderko (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Tron VB by Pat Daderko (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;VB Rocks! Demo by KR155E (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;VeeBee Cursor Demo by David Williamson (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual Pong (PD)&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual-E Cursor Demo (PD)&lt;/td&gt;&lt;td&gt;8192&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual-E Cursor Demo (PD) [a1]&lt;/td&gt;&lt;td&gt;65536&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Red Alarm (J) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Red Alarm (U) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Space Squash (J) [!]&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Space Squash (J) [o1]&lt;/td&gt;&lt;td&gt;2097152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Teleroboxer (JU) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Teleroboxer (JU) [T+Ger.4b_KR155E]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;V Tetris (J) [!]&lt;/td&gt;&lt;td&gt;524288&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Vertical Force (J) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Vertical Force (J) [b1]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Vertical Force (U) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Vertical Force (U) [h1]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual Boy Wario Land (JU) [!]&lt;/td&gt;&lt;td&gt;2097152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual Fishing (J) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual Fishing (J) [b1]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual League Baseball (U)&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual League Baseball (U) [a1]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual League Baseball (U) [a1][b1]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Virtual Pro Yakyuu &#39;95 (J) [!]&lt;/td&gt;&lt;td&gt;1048576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Waterworld (U) [!]&lt;/td&gt;&lt;td&gt;2097152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Waterworld (U) [b1]&lt;/td&gt;&lt;td&gt;2097152&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

keywords: virtual boy game sizes
</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/3313666401936596572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2016/11/length-in-bytes-of-virtual-boy-games.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/3313666401936596572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/3313666401936596572'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2016/11/length-in-bytes-of-virtual-boy-games.html' title='Length in bytes of Virtual Boy games '/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-5983289355032144413</id><published>2015-02-20T09:56:00.000+01:00</published><updated>2016-08-02T15:07:06.489+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="easy"/><category scheme="http://www.blogger.com/atom/ns#" term="few"/><category scheme="http://www.blogger.com/atom/ns#" term="list"/><category scheme="http://www.blogger.com/atom/ns#" term="organization"/><category scheme="http://www.blogger.com/atom/ns#" term="scheduling"/><category scheme="http://www.blogger.com/atom/ns#" term="simple"/><category scheme="http://www.blogger.com/atom/ns#" term="todo"/><category scheme="http://www.blogger.com/atom/ns#" term="tool"/><category scheme="http://www.blogger.com/atom/ns#" term="unsophisticated"/><title type='text'>Dead Simple Todo Tool - Open Source, Javascript, Web-Based</title><content type='html'>Download&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.sendspace.com/file/21dsld&quot;&gt;https://github.com/Masterxilo/DeadSimpleTodo/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Screenshot&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIMOjon0-rINWXZg4RqEuLJ8VuXjgSydtkF2WMZNNhQsa-y26cUr4LFW4aTQk0K6mhUt3mzL-msMUkdHctJ3MHFbGkFI2v1QWher7vh1RZaRuF3o2EYoWuuYh8xgNLTT-_2Q67tmuemjw/s1600/todo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;243&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIMOjon0-rINWXZg4RqEuLJ8VuXjgSydtkF2WMZNNhQsa-y26cUr4LFW4aTQk0K6mhUt3mzL-msMUkdHctJ3MHFbGkFI2v1QWher7vh1RZaRuF3o2EYoWuuYh8xgNLTT-_2Q67tmuemjw/s1600/todo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span id=&quot;goog_2070693649&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_2070693650&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This is a python webserver + browser based very simple todo list tool&lt;br /&gt;
which augments a pen and paper based list with&lt;br /&gt;
- recording the dates of changes and&lt;br /&gt;
- infinite nesting plus reordering of items.&lt;br /&gt;
All the data and required media is stored locally.&lt;br /&gt;
&lt;br /&gt;
How to&lt;br /&gt;
&lt;br /&gt;
To run this, get Python 2 (e.g. Python 2.7.9),&lt;br /&gt;
run the script todo5Server.py (`python todo5Server.py`)&lt;br /&gt;
and open http://localhost:8001/todo.html in your browser.&lt;br /&gt;
The data is preserved over refreshes of the page and restarts of the server.&lt;br /&gt;
&lt;br /&gt;
License&lt;br /&gt;
&lt;br /&gt;
Do what you want with this (subject to the licenses of the tools used which I&lt;br /&gt;
did not read).&lt;br /&gt;
&lt;br /&gt;
Shortcuts&lt;br /&gt;
&lt;br /&gt;
- Delete an entry&lt;br /&gt;
&amp;nbsp; Shift delete while it is in focus or backspace when the text is empty.&lt;br /&gt;
- Insert new entry below selected&lt;br /&gt;
&amp;nbsp; Hit enter.&lt;br /&gt;
- Insert new entry as child of current&lt;br /&gt;
&amp;nbsp; Hit shift+enter&lt;br /&gt;
- Insert new entry above selected&lt;br /&gt;
&amp;nbsp; ctrl+enter&lt;br /&gt;
- Write &#39;.&#39; as the text in an entry to indent it by one level.&lt;br /&gt;
&amp;nbsp; Useful if you hit enter but meant shift+enter.&lt;br /&gt;
- Write &#39;:&#39; for the text to decrease the indentation.&lt;br /&gt;
&lt;br /&gt;
Acknowledgement&lt;br /&gt;
&lt;br /&gt;
This tool is basically&lt;br /&gt;
&amp;nbsp; Jon Berg&#39;s simple custom python http server +&lt;br /&gt;
&amp;nbsp; Manuele J Sarfatti&#39;s jQuery nestedSortable +&lt;br /&gt;
&amp;nbsp; font-awesome +&lt;br /&gt;
&amp;nbsp; contenteditable=true +&lt;br /&gt;
&amp;nbsp; a few jQuery hooks.&lt;br /&gt;
&lt;br /&gt;
Motivation&lt;br /&gt;
&lt;br /&gt;
This Todo list favors simplicity and clarity over feature-richness and (over?) design.&lt;br /&gt;
&lt;br /&gt;
- Paul Frischknecht, 2015/20/2</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/5983289355032144413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2015/02/dead-simple-todo-tool.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/5983289355032144413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/5983289355032144413'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2015/02/dead-simple-todo-tool.html' title='Dead Simple Todo Tool - Open Source, Javascript, Web-Based'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIMOjon0-rINWXZg4RqEuLJ8VuXjgSydtkF2WMZNNhQsa-y26cUr4LFW4aTQk0K6mhUt3mzL-msMUkdHctJ3MHFbGkFI2v1QWher7vh1RZaRuF3o2EYoWuuYh8xgNLTT-_2Q67tmuemjw/s72-c/todo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-2174926053677717870</id><published>2014-05-12T17:11:00.001+02:00</published><updated>2014-05-12T17:11:13.177+02:00</updated><title type='text'>What&#39;s wrong with JavaServerFaces</title><content type='html'>&lt;p&gt;When we click on the “homepage” link of the &lt;a href=&quot;http://mvnrepository.com/artifact/com.sun.faces/jsf-api/2.2.6&quot;&gt;JSF entry in Maven Repository&lt;/a&gt; we are forwarded (from &lt;a href=&quot;http://java.sun.com/javaee/javaserverfaces/&quot;&gt;http://java.sun.com/javaee/javaserverfaces/&lt;/a&gt; - I thought that company died long ago, but Oracle doesn’t bother fixing links) to  &lt;br&gt;
&lt;a href=&quot;http://www.oracle.com/technetwork/java/index.html&quot;&gt;http://www.oracle.com/technetwork/java/index.html&lt;/a&gt; &lt;br&gt;
which currently showcases a picutre of a young man in front of the computer &lt;br&gt;
&lt;img src=&quot;https://lh5.googleusercontent.com/-NZOPidKOOlI/U3C5E9R2jdI/AAAAAAAAAHk/WWqZaDtA32c/w419-h194-no/jsfmotivating.png&quot; alt=&quot;enter image description here&quot; title=&quot;&quot;&gt; &lt;br&gt;
and we are told he is probabaly working with JSF &amp;amp; PrimeFaces (PrimeFaces is “a popular JavaServer Faces (JSF) UI framework” that is also used in my project, I hope I’ll get to cover that too). &lt;br&gt;
Now, to me, he doesn’t look like he is happily working on something interesting but rather trying hard to finally get-that-bloody-thing to work (already in the exhaustion/resigning phase – “damn, why doesn’t it work!? :(“). &lt;br&gt;
This is comes close to how I feel about the series of tools I am writing about here (1).&lt;/p&gt;

&lt;p&gt;So let’s get started tinkering about this web framework.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://javaserverfaces.java.net/&quot;&gt;The website&lt;/a&gt; (&lt;a href=&quot;https://javaserverfaces.java.net/users.html&quot;&gt;Get Started&lt;/a&gt; subpage) uses a two nice gray color shades for both font and links, making it guesswork to spot links by hovering over everything. (“What you can’t distinguish rgb (51,51,51) from (85,85,85)? Your vision is terrible.”)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href=&quot;https://javaserverfaces.java.net/presentations/20100520-jsf2-datasheet.pdf&quot;&gt;Data Sheet&lt;/a&gt; (from the year 2010…, the latest jsf version 2.2 is from 2014 - who cares about documentation) they link to in the beginning of that page is offline, forcing me to read an even older one &lt;a href=&quot;https://javaserverfaces.java.net/presentations/20090520-jsf2-datasheet.pdf&quot;&gt;https://javaserverfaces.java.net/presentations/20090520-jsf2-datasheet.pdf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;blockquote&gt;
  &lt;p&gt;Once you’ve read that, continue here. &lt;br&gt;
  One of the &lt;strong&gt;best places to start&lt;/strong&gt; is with the official documetation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;(followed by link to version 2.0 javadoc, rendered with the very old javadoc and mixed with some pastel color: &lt;a href=&quot;https://javaserverfaces.java.net/nonav/docs/2.0/javadocs/&quot;&gt;https://javaserverfaces.java.net/nonav/docs/2.0/javadocs/&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wow, I cannot read on, obviously that webpage is not meant to be looked at when seriously trying to learn about jsf.&lt;/p&gt;

&lt;p&gt;Looks like &lt;a href=&quot;http://docs.oracle.com/javaee/7/tutorial/doc/javaeetutorial7.pdf&quot;&gt;http://docs.oracle.com/javaee/7/tutorial/doc/javaeetutorial7.pdf&lt;/a&gt; is not too bad a place to start.&lt;/p&gt;

&lt;p&gt;To be continued…&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;(1): Combined with the feeling that “it cannot be so hard to make this better, let me show you”&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Written with &lt;a href=&quot;https://stackedit.io/&quot;&gt;StackEdit&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/2174926053677717870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/05/whats-wrong-with-javaserverfaces.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/2174926053677717870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/2174926053677717870'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/05/whats-wrong-with-javaserverfaces.html' title='What&#39;s wrong with JavaServerFaces'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-NZOPidKOOlI/U3C5E9R2jdI/AAAAAAAAAHk/WWqZaDtA32c/s72-w419-h194-c-no/jsfmotivating.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-7814477104132817605</id><published>2014-05-12T13:53:00.001+02:00</published><updated>2014-05-12T13:53:31.000+02:00</updated><title type='text'>What&#39;s wrong with Maven</title><content type='html'>&lt;p&gt;In the project I have to work on mentioned in the last post, there are of course other technologies and tools used besides Hibernate that I have to learn (I do not come from a Java programming background so most of these are (though not conceptually) relatively new to me). &lt;br&gt;
One of them is the buildtool Maven. Let’s see what flaws we can find with Maven:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s ironic how their philosophy is “don’t repeat yourself” yet they use xml for the configuration where up to half of the filesize comes from repeating words for the closing tags (yes I know that’s not what they &lt;em&gt;mean&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They make users to define custom “properties” with custom tags. Within a &lt;code&gt;pom.xml&lt;/code&gt; file you can write:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;properties&amp;gt;
    &amp;lt;myfaces.version&amp;gt;2.1.12&amp;lt;/myfaces.version&amp;gt;
    &amp;lt;mojarra.version&amp;gt;2.1.23&amp;lt;/mojarra.version&amp;gt;
    &amp;lt;myweirdpropertythatiwillnotuse&amp;gt;42&amp;lt;/myweirdpropertythatiwillnotuse&amp;gt;
&amp;lt;/properties&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;where &lt;code&gt;myfaces.version&lt;/code&gt; etc. is the name of the property I want to define. Not only do I have to repeat myself here, but the notation is not even used consistently to refer to properties and their values. In &lt;code&gt;settings.xml&lt;/code&gt;, for a check whether a property matches some value, you write&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;activation&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;target-env&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;dev&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
&amp;lt;/activation&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And we shall not forget that all the other tags used are static. I don’t even know how they got their &lt;code&gt;dtd&lt;/code&gt; or &lt;code&gt;xslt&lt;/code&gt; or whatever we have here to swallow this.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Btw:&lt;/em&gt; I have never liked and will never like xml for all its bloat and way too many ways to do things (with no visible benefits of one over the other): You can set data by: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using user defined tags. &lt;/li&gt;
&lt;li&gt;Using tag attributes.&lt;/li&gt;
&lt;li&gt;Using nested tags.&lt;/li&gt;
&lt;li&gt;Any weird combination thereof.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Also people don’t stick to one standard for writing lists of values. Sometimes they pack everything in an attribute value, leaving other programs to parse it (svg…), sometimes they go&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    &amp;lt;activeProfiles&amp;gt;
        &amp;lt;activeProfile&amp;gt;alwaysActiveProfile&amp;lt;/activeProfile&amp;gt;
        &amp;lt;activeProfile&amp;gt;anotherAlwaysActiveProfile&amp;lt;/activeProfile&amp;gt;
    &amp;lt;/activeProfiles&amp;gt;
    &amp;lt;repositories&amp;gt;
     &amp;lt;repository&amp;gt;
     &amp;lt;/repository&amp;gt;
    &amp;lt;/repositories&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;repeating the outer word in singular in the inside, sometimes not:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  &amp;lt;properties&amp;gt;
    &amp;lt;tomcatPath&amp;gt;/path/to/tomcat/instance&amp;lt;/tomcatPath&amp;gt;
  &amp;lt;/properties&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Even worse, they sometimes even make use of the fact that &lt;code&gt;&amp;lt;a&amp;gt;hi&amp;lt;br/&amp;gt;there&amp;lt;/a&amp;gt;&lt;/code&gt; is parsed as one node with three children, two of them unnamed.&lt;/p&gt;

&lt;hr&gt;

&lt;blockquote&gt;
  &lt;p&gt;Proudly written with &lt;a href=&quot;https://stackedit.io/&quot;&gt;StackEdit&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/7814477104132817605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/05/whats-wrong-with-maven.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/7814477104132817605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/7814477104132817605'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/05/whats-wrong-with-maven.html' title='What&#39;s wrong with Maven'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-5231964593166041513</id><published>2014-05-09T14:43:00.001+02:00</published><updated>2014-05-12T13:29:31.459+02:00</updated><title type='text'>Why Hibernate is a disaster</title><content type='html'>&lt;p&gt;I am forced to work with this Java Object Relational Mapping “solution” (a collection of functions, annotations and configuration hell to try to fit the round peg of object oriented programming into the square hole of relational databases) for the next 4 months (2 already done - luckily). And I really have not much to say in its favor.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Read &lt;a href=&quot;http://empire-db.apache.org/empiredb/hibernate.htm&quot;&gt;http://empire-db.apache.org/empiredb/hibernate.htm&lt;/a&gt;: The use of annotations and strings to provide information is a bad choice. The former because it cannot be modified or easily read at runtime (only through awkward interfaces), the latter because it is only checked at runtime, which means never for the 90% of the code that are run 10% of the time (don’t comment with “well you need unit tests”).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The developers of Hibernate have never heard of the Law of Demeter.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;session.buildLockRequest().setLockMode(LockMode.PESSIMISTIC_WRITE).setTimeOut(1000 * 60).lock(entity);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;They used method chaining (the “builder pattern”) extensively. &lt;br&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/1103985/method-chaining-why-is-it-a-good-practice-or-not&quot;&gt;http://stackoverflow.com/questions/1103985/method-chaining-why-is-it-a-good-practice-or-not&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Criteria API is a distaster &lt;a href=&quot;http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch12.html&quot;&gt;http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch12.html&lt;/a&gt;  &lt;br&gt;
Tell me you get what these queries do without looking at the documentation:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CriteriaQuery criteria = builder.createTupleQuery();
Root personRoot = criteria.from( Person.class );
Path idPath = personRoot.get( Person_.id );
Path agePath = personRoot.get( Person_.age );
criteria.multiselect( idPath, agePath );
criteria.where( builder.equal( personRoot.get( Person_.eyeColor ), &quot;brown&quot; ) );

List tuples = em.createQuery( criteria ).getResultList();

CriteriaQuery query = builder.createQuery();
Root men = query.from( Person.class );
Root women = query.from( Person.class );
Predicate menRestriction = builder.and(
  builder.equal( men.get( Person_.gender ), Gender.MALE ),
  builder.equal( men.get( Person_.relationshipStatus ), RelationshipStatus.SINGLE )
);
Predicate womenRestriction = builder.and(
  builder.equal( women.get( Person_.gender ), Gender.FEMALE ),
  builder.equal( women.get( Person_.relationshipStatus ), RelationshipStatus.SINGLE )
);

query.where( builder.and( menRestriction, womenRestriction ) );
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and even if you do, tell me why I have to call “builder.” all the time. &lt;br&gt;
Well that’s because Java just wasn’t made for building code like that - which should have been clear from the start. &lt;br&gt;
Their older api seems to have been slightly better:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like(&quot;name&quot;, &quot;Fritz%&quot;) )
    .add( Restrictions.or(
        Restrictions.eq( &quot;age&quot;, new Integer(0) ),
        Restrictions.isNull(&quot;age&quot;)
    ) )
    .list();

List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.in( &quot;name&quot;, new String[] { &quot;Fritz&quot;, &quot;Izi&quot;, &quot;Pk&quot; } ) )
    .add( Restrictions.disjunction()
        .add( Restrictions.isNull(&quot;age&quot;) )
        .add( Restrictions.eq(&quot;age&quot;, new Integer(0) ) )
        .add( Restrictions.eq(&quot;age&quot;, new Integer(1) ) )
        .add( Restrictions.eq(&quot;age&quot;, new Integer(2) ) )
    ) )
    .list();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But what does the word “Criteria” have to do with the notion of a database query?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Of their guides and docs I have looked at, the “Getting started guide (brief)” is a joke, “Getting started guide (full)” too and “Developer’s Guide” is hard to read, incomplete and full of spelling mistakes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;The javadoc documentation for the most important class “Session” is poorly written, e.g. referring to &lt;code&gt;this&lt;/code&gt; interchangably (and patternless) with any of “the current session”, “this current session”, “the session”, “this session”.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the javadoc&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Change the default for entities and proxies loaded into this session &lt;br&gt;
  from modifiable to read-only mode, or from modifiable to read-only &lt;br&gt;
  mode.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;(Yes, it is twice the same.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flags are either documented as “Checks” or Questions:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;code&gt;Session::isConnected()&lt;/code&gt; &lt;br&gt;
            Check if the session is currently connected.&lt;/p&gt;
  
  &lt;p&gt;&lt;code&gt;Session::isDefaultReadOnly()&lt;/code&gt; &lt;br&gt;
            Will entities and proxies that are loaded into this session be made read-only by default?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;(not to mention that javadoc doesn’t recognize the ? as ending a sentence and therefore goes on to find the next dot).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spelling mistakes even in the javadoc: In Hibernate.Query: &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;… to Hibernate types using hueristics.&lt;/p&gt;
&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In &lt;code&gt;Query&lt;/code&gt;, the methods taking &lt;code&gt;LockMode&lt;/code&gt; are not deprecated, unlike in Session.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Everything throws HibernateException, there is no way to differentiate between these programmatically excpet with their message strings - for which of course you will only know (if you are lucky) at runtime that you spelled them wrong.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;blockquote&gt;
  &lt;p&gt;&lt;code&gt;getNamedParameters()&lt;/code&gt; &lt;br&gt;
      Return the names of all named parameters of the query.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Obviously, this method should have been called getNamedParameterNames() [let’s not discuss the poor naming choice], then the     documentation would be moot. But if I read get(Named)Parameters, I think of getting their values. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://forum.hibernate.org/viewforum.php?f=1&quot;&gt;forum&lt;/a&gt; consists only of spam (first non-sticky entry in “Hibernate Users”: “Watch Frozen Online Free”). Which is also why I did not post all of that there.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think I could go on. Unfortunately I don’t have the time nor the creativity to write as entertaining a rant as “&lt;a href=&quot;http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/&quot;&gt;PHP A fractal of bad design&lt;/a&gt;” &lt;br&gt;
Maybe I will wrap this up one more time once I’m done with it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: Wow, the blogspot editor is annoying to use too, copying the style of the text I paste  - can I turn that off? Please forgive the terrible formatting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edit&lt;/strong&gt;: Now using &lt;a href=&quot;https://stackedit.io&quot;&gt;https://stackedit.io&lt;/a&gt; to write my entries with markdown.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/5231964593166041513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/05/why-hibernate-is-disaster.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/5231964593166041513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/5231964593166041513'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/05/why-hibernate-is-disaster.html' title='Why Hibernate is a disaster'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-7136985164239271246</id><published>2014-03-21T13:37:00.004+01:00</published><updated>2014-03-21T13:37:56.133+01:00</updated><title type='text'>[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified</title><content type='html'>This was driving me nuts today -- trying to get Oracle SQL Developer 4 and/or a simple java code (in the style of http://stackoverflow.com/a/16626825/524504 ) to &quot;connect&quot; to a local Microsoft Access Database .mdb file. But I kept getting the not-very-helpful message&lt;br /&gt;
&lt;br /&gt;
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified&lt;br /&gt;
&lt;br /&gt;
luckily, I have been able to sort out this problem with the help of&lt;br /&gt;
&lt;br /&gt;
http://www.selikoff.net/2011/07/26/connecting-to-ms-access-file-via-jdbc-in-64-bit-java/&lt;br /&gt;
&lt;br /&gt;
http://www.microsoft.com/en-us/download/details.aspx?id=13255&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
http://stackoverflow.com/questions/7116019/hand-install-of-64-bit-ms-access-odbc-drivers-when-32-bit-office-is-present&lt;br /&gt;
&lt;br /&gt;
I have 32 bit office installed, so I didn&#39;t have the 64 bit Access Database odbc driver.&lt;br /&gt;
I love it when the biggest troubles in programming something are things like that.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;I&lt;/b&gt; &lt;i&gt;will &lt;/i&gt;change this.</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/7136985164239271246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/03/microsoftodbc-driver-manager-data.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/7136985164239271246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/7136985164239271246'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/03/microsoftodbc-driver-manager-data.html' title='[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-273767629732446553</id><published>2014-03-14T11:31:00.000+01:00</published><updated>2014-03-21T13:39:29.930+01:00</updated><title type='text'>Saving files is outdated</title><content type='html'>Some time ago, when disks where really slow or files where even stored on external, even slower devices (cassettes, floppy disks) it may have made sense to specify when exactly to save a file because you had to wait a considerable amount of time. However with modern harddrives and usb sticks and whatnot, this concern is out of the way. I hate it when I have to save files manually in any program, especially in text editors. First thing I do is look for an autosave plugin.&lt;br /&gt;
&lt;br /&gt;
However, programs should allow as many levels of undo as possible and keep the history even after restarting a session.&lt;br /&gt;
&lt;br /&gt;
vim can do this&lt;br /&gt;
&lt;br /&gt;
http://stackoverflow.com/questions/6426956/can-i-get-a-versioned-recovery-from-a-vim-swap-file</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/273767629732446553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/03/saving-files-is-outdated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/273767629732446553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/273767629732446553'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/03/saving-files-is-outdated.html' title='Saving files is outdated'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-229888725827253631</id><published>2014-01-06T03:16:00.001+01:00</published><updated>2014-01-06T03:17:19.251+01:00</updated><title type='text'>C/C++ Function to convert Unicode Japanese Katakana to Hiragana</title><content type='html'>I wrote a little tool which allows to add new words to the dictionary of the Chrome Extension Rikaikun (inspired by rikaichan for Firefox) and then recompile the index file.&lt;br /&gt;
The index file stores all spellings in hiragana, so this was needed.&lt;br /&gt;
Fortunately, the rikaikun source code already had this code ready, albeit in JavaScript. The function writes the result to r and returns the end of the converted string.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;html&gt;&lt;body style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;// modified from Chrome extension rikaikun, file data.ja&lt;/span&gt;
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;wchar_t&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt; katakana_to_hiragana&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;wchar_t&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt; word&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;wchar_t&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt; r&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: dimgrey;&quot;&gt;// katakana -&amp;gt; hiragana conversion tables&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;wchar_t&lt;/span&gt; ch&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3092&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3041&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3043&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3045&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3047&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3049&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3083&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3085&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3087&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3063&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x30FC&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3042&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3044&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3046&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;
    &lt;span style=&quot;color: green;&quot;&gt;0x3048&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x304A&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x304B&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x304D&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x304F&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3051&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3053&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3055&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3057&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3059&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x305B&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x305D&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x305F&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3061&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;
    &lt;span style=&quot;color: green;&quot;&gt;0x3064&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3066&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3068&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x306A&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x306B&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x306C&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x306D&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x306E&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x306F&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3072&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3075&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3078&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x307B&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x307E&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;
    &lt;span style=&quot;color: green;&quot;&gt;0x307F&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3080&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3081&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3082&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3084&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3086&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3088&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3089&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x308A&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x308B&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x308C&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x308D&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x308F&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3093&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;wchar_t&lt;/span&gt; cv&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x30F4&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF74&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF75&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x304C&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x304E&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3050&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3052&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3054&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3056&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3058&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x305A&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x305C&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x305E&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3060&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;
    &lt;span style=&quot;color: green;&quot;&gt;0x3062&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3065&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3067&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3069&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF85&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF86&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF87&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF88&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF89&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3070&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3073&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3076&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3079&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x307C&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; 
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;wchar_t&lt;/span&gt; cs&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3071&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3074&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x3077&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x307A&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x307D&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;


   &lt;span style=&quot;color: dimgrey;&quot;&gt;// half &amp;amp; full-width katakana to hiragana conversion&lt;/span&gt;
   &lt;span style=&quot;color: dimgrey;&quot;&gt;// note: katakana vu is never converted to hiragana&lt;/span&gt;
   &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;int&lt;/span&gt; i &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; u &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; v &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; p &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: dimgrey;&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;background: #808000; color: white;&quot;&gt;todo: none of these is read before written exc p so this is not needed&lt;/span&gt;
   
   &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;word&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;word&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
       u &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; v &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;word&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

       &lt;span style=&quot;color: dimgrey;&quot;&gt;//if (u &amp;lt;= 0x3000) break; // should never happen, our spelling is always hira&lt;/span&gt;

       &lt;span style=&quot;color: dimgrey;&quot;&gt;//if (u &amp;gt; 0x3000){ // like so? how do they get a string if they don&#39;t have&lt;/span&gt;

       &lt;span style=&quot;color: dimgrey;&quot;&gt;// full-width katakana to hiragana&lt;/span&gt;
       &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;u &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x30A1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;u &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x30F3&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
           u &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0x60&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
       &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
       &lt;span style=&quot;color: dimgrey;&quot;&gt;// half-width katakana to hiragana&lt;/span&gt;
       &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;u &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF66&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;u &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF9D&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
           u &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; ch&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;u &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF66&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
       &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
       &lt;span style=&quot;color: dimgrey;&quot;&gt;// voiced (used in half-width katakana) to hiragana&lt;/span&gt;
       &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;u &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF9E&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
           &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;p &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF73&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;p &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF8E&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
               r&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;//r = r.substr(0, r.length() - 1);&lt;/span&gt;
               u &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; cv&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;p &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF73&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
           &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
       &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
       &lt;span style=&quot;color: dimgrey;&quot;&gt;// semi-voiced (used in half-width katakana) to hiragana&lt;/span&gt;
       &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;u &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF9F&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
           &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;p &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF8A&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;p &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF8E&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
               r&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: dimgrey;&quot;&gt;//r = r.substr(0, r.length() - 1);&lt;/span&gt;
               u &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; cs&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;p &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF8A&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
           &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
       &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
       &lt;span style=&quot;color: dimgrey;&quot;&gt;// ignore J~&lt;/span&gt;
       &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;u &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;0xFF5E&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
           p &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
           &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;continue&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
       &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;

       &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;r&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;wchar_t&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;u&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
       &lt;span style=&quot;color: dimgrey;&quot;&gt;//trueLen[r.length] = i + 1; // need to keep real length because of the half-width semi/voiced conversion // do we?&lt;/span&gt;
       p &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; v&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
   &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
   &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;r &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
   &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; r&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;/body&gt;&lt;/html&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/229888725827253631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/01/cc-function-to-convert-unicode-japanese.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/229888725827253631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/229888725827253631'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2014/01/cc-function-to-convert-unicode-japanese.html' title='C/C++ Function to convert Unicode Japanese Katakana to Hiragana'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-2342564686736875721</id><published>2013-12-21T23:31:00.001+01:00</published><updated>2013-12-21T23:31:03.087+01:00</updated><title type='text'>How to prepare midi files for synthesia (split hands)</title><content type='html'>I decided to use this blog to take some notes that might become useful to others, so here I go.&lt;br /&gt;
&lt;br /&gt;
If you found some midi of a nice piano song you want to practice with synthesia but unfortunately all the notes are in one track so you can&#39;t learn each hand separately,&lt;br /&gt;
use&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://midieditor.sourceforge.net/index.php?page=downloads&quot;&gt;http://midieditor.sourceforge.net/index.php?page=downloads&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
to move the notes for one of the hands to a new track. Simply create another track, select the notes, Edit -&amp;gt; Move to track...</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/2342564686736875721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2013/12/how-to-prepare-midi-files-for-synthesia.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/2342564686736875721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/2342564686736875721'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2013/12/how-to-prepare-midi-files-for-synthesia.html' title='How to prepare midi files for synthesia (split hands)'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-4749866630291965345</id><published>2012-12-24T00:48:00.001+01:00</published><updated>2012-12-24T00:48:53.044+01:00</updated><title type='text'>sftype (super fast type) - type speed training/test game</title><content type='html'>Quickly put this together:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/ryUCBQ47_qg&quot; width=&quot;420&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
This program I quickly put together in Game Maker 8.1 helps you measure and improve your typing speed. My best so far is like 73 WPM...&lt;br /&gt;
Download: &lt;a href=&quot;http://goo.gl/3sm7i&quot;&gt;http://goo.gl/3sm7i&lt;/a&gt;&lt;br /&gt;
The source code is included.&lt;br /&gt;
&lt;br /&gt;
For improving your typing speed also check out: http://play.typeracer.com/&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/4749866630291965345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/12/sftype-super-fast-type-type-speed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/4749866630291965345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/4749866630291965345'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/12/sftype-super-fast-type-type-speed.html' title='sftype (super fast type) - type speed training/test game'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/ryUCBQ47_qg/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-4648408047484500422</id><published>2012-08-10T22:31:00.000+02:00</published><updated>2012-08-11T03:46:12.386+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c"/><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="how to use"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadDirectoryChangesW"/><title type='text'>How to monitor a directory for changes with ReadDirectoryChangesW</title><content type='html'>Here&#39;s how to use&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v=vs.85).aspx&quot;&gt;ReadDirectoryChangesW&lt;/a&gt;&amp;nbsp;without knowing all of &lt;a href=&quot;http://qualapps.blogspot.ch/2010/05/understanding-readdirectorychangesw_19.html&quot;&gt;this&lt;/a&gt; and without using &lt;a href=&quot;http://www.codeproject.com/Articles/950/CDirectoryChangeWatcher-ReadDirectoryChangesW-all&quot;&gt;this&lt;/a&gt; overkill C++ class library (remove the &amp;amp;o parameter in the call to make it blocking instead of async. Note: This only returns one change, you have to step trough a buffer of&amp;nbsp;FILE_NOTIFY_INFORMATIONs if you need to get more):&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;HANDLE hDirectory&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;
OVERLAPPED o&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; = {&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;};&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;
union&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; {&lt;/span&gt;&lt;/b&gt;
    FILE_NOTIFY_INFORMATION i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;
    char&lt;/span&gt; d&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;sizeof&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;FILE_NOTIFY_INFORMATION&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;)+&lt;/span&gt;&lt;/b&gt;MAX_PATH&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;];
}&lt;/span&gt;&lt;/b&gt; fni&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;


int&lt;/span&gt; checkAutoCompile&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;() {&lt;/span&gt;&lt;/b&gt;
    DWORD b&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: red;&quot;&gt;

    if&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; (!&lt;/span&gt;&lt;/b&gt;hDirectory&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;) {&lt;/span&gt;&lt;/b&gt;
        hDirectory&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; CreateFile&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; 
        FILE_LIST_DIRECTORY&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; |&lt;/span&gt;&lt;/b&gt; GENERIC_READ&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; 
        FILE_SHARE_READ&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; |&lt;/span&gt;&lt;/b&gt; FILE_SHARE_WRITE&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;
        0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; 
        OPEN_EXISTING&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; 
        FILE_FLAG_BACKUP_SEMANTICS&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; |&lt;/span&gt;&lt;/b&gt; FILE_FLAG_OVERLAPPED&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 
        0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;
        );&lt;/span&gt;&lt;/b&gt;
        o&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;hEvent&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; CreateEvent&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);
    }&lt;/span&gt;&lt;/b&gt;
    ReadDirectoryChangesW&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;hDirectory&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,
        &amp;amp;&lt;/span&gt;&lt;/b&gt;fni&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;
        sizeof&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;fni&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;),&lt;/span&gt;&lt;/b&gt;
        TRUE&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;
        FILE_NOTIFY_CHANGE_LAST_WRITE&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,
        &amp;amp;&lt;/span&gt;&lt;/b&gt;b&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,
        &amp;amp;&lt;/span&gt;&lt;/b&gt;o&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 
        0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;
    
    GetOverlappedResult&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;hDirectory&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&amp;amp;&lt;/span&gt;&lt;/b&gt;o&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&amp;amp;&lt;/span&gt;&lt;/b&gt;b&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;FALSE&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: red;&quot;&gt;
    if&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; (&lt;/span&gt;&lt;/b&gt;fni&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;Action&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; !=&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;) {&lt;/span&gt;&lt;/b&gt;
        wprintf&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #009900;&quot;&gt;L&quot;action %d, b: %d, %s\n&quot;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; fni&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;Action&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; b&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; fni&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;FileName&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;
        fni&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;Action&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;
    }&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: red;&quot;&gt;

    return&lt;/span&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;
}&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/4648408047484500422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/08/how-to-monitor-directory-for-changes.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/4648408047484500422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/4648408047484500422'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/08/how-to-monitor-directory-for-changes.html' title='How to monitor a directory for changes with ReadDirectoryChangesW'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-6949764150755837496</id><published>2012-07-20T22:15:00.001+02:00</published><updated>2021-09-18T15:10:56.183+02:00</updated><title type='text'>Extended Terrain XYZ now free and open source</title><content type='html'>This is a 3D Terrain Editor I created back in 2007 with Dark BASIC Pro (free now, anybody should be able to compile this). Along with standard heightmap terrain editor features, it also allows shifting the vertices to create simple overhangs and caves.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Videos&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/iMsTyQTKYNc/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/iMsTyQTKYNc?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;
Download&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://drive.google.com/file/d/1DhIGavidKHdDvHO73J-8Ihc3hO5I2aNC/view?usp=sharing&quot;&gt;Extended Terrain XYZ - Open Source - fix-dlls.zip&lt;/a&gt; (7.8 MB) - compiled executable and instructions for compiling included (ReadMe.txt)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://drive.google.com/file/d/189sdr8KsM3AdpV4KiJ90NCvZXdbARyHr/view?usp=sharing&quot;&gt;ExtendedTerrainXYZDemoMaps.zip&lt;/a&gt; (26.5 MB)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://drive.google.com/file/d/18C3CMcypEAevRKO_8htfBo-aI84-4Mqb/view?usp=sharing&quot;&gt;ExtendedTerrainXYZRequiredPlugins.zip&lt;/a&gt; (2.1 MB) - you need these if you want to build from source&lt;br /&gt;
&lt;br /&gt;
Old Information:&amp;nbsp;&lt;a href=&quot;http://goo.gl/5kfVp&quot;&gt;link&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/6949764150755837496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/07/extended-terrain-xyz-now-free-and-open.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/6949764150755837496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/6949764150755837496'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/07/extended-terrain-xyz-now-free-and-open.html' title='Extended Terrain XYZ now free and open source'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/iMsTyQTKYNc/default.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-1583404777015841533</id><published>2012-06-23T23:10:00.001+02:00</published><updated>2012-08-10T22:48:02.864+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c"/><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="example"/><category scheme="http://www.blogger.com/atom/ns#" term="input"/><category scheme="http://www.blogger.com/atom/ns#" term="mouse"/><category scheme="http://www.blogger.com/atom/ns#" term="msdn"/><category scheme="http://www.blogger.com/atom/ns#" term="multi touch"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="winapi"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Simple Multitouch on Windows</title><content type='html'>Quickliy coded a dll (&lt;a href=&quot;http://gmc.yoyogames.com/index.php?showtopic=544619&quot;&gt;packaged as a Game Maker extension here&lt;/a&gt;, but can be used with any HWND) that gives a simple interface to multi touch handling on Windows.&lt;br /&gt;
&lt;br /&gt;
All source files included.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://img32.imageshack.us/img32/5743/gamemakertouchextension.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;249&quot; src=&quot;http://img32.imageshack.us/img32/5743/gamemakertouchextension.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/1583404777015841533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/06/simple-multitouch-on-windows.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/1583404777015841533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/1583404777015841533'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/06/simple-multitouch-on-windows.html' title='Simple Multitouch on Windows'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-204378503165382388</id><published>2012-06-15T02:06:00.000+02:00</published><updated>2012-06-18T23:30:47.806+02:00</updated><title type='text'>NVIDIA GPU-accelerated Path / SVG Vector Graphics Rendering</title><content type='html'>This definitely needs attention:
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/0IDyZof2pRI&quot; width=&quot;420&quot;&gt;&lt;/iframe&gt;
&lt;br /&gt;
(video with link without slides: &lt;a href=&quot;http://www.youtube.com/watch?v=bCrohG6PJQE&quot;&gt;http://www.youtube.com/watch?v=bCrohG6PJQE&lt;/a&gt;)
&lt;br /&gt;
Try viewing for example &lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/c/c2/Anime_Girl.svg&quot;&gt;this svg image&lt;/a&gt; in your browser - it&#39;ll definately kill it. This particular image renders at 35 FPS on my GPU (GTX 260) in NVIDIAs svg viewer which uses their quite new (June 2011) GL_NV_path_rendering OpenGL extension. Remarkable.&lt;br /&gt;
The GPU implementation doesn&#39;t implement the filters - blurring in this example - (neither does IE). I&#39;ll try to add these, I don&#39;t think they&#39;ll slow it down too much.&lt;br /&gt;
&lt;br /&gt;
Read more at &lt;a href=&quot;http://developer.nvidia.com/nv-path-rendering&quot;&gt;http://developer.nvidia.com/nv-path-rendering&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Note: Many browsers claim to have GPU accelerated rendering, but this mostly only applies to the final composition of different elements (though some do have GPU text rendering).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Edit:&lt;/b&gt; After looking at the &lt;a href=&quot;http://www.w3.org/TR/SVG/filters.html&quot;&gt;specification&lt;/a&gt; and some &lt;a href=&quot;http://www.w3schools.com/svg/svg_filters_intro.asp&quot;&gt;samples&lt;/a&gt;, I see that this is actually pretty complex: You can define various intermediate targets and in and outputs for filters. The easiest way to do this would of course be to render every step to a texture, then apply a shader that represents the predefined effect (one of just a handful) and repeat. However this can be optimized - e.g. a blur and offset pass can be done in one step. Applying such optimizations will require smart runtime shader compilation... let&#39;s see what we can do. It would also be interesting to implement the pathrendering with OpenGL and shaders in WebGL to provide an &amp;nbsp;alternative for the current browser&#39;s software svg rendering.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Edit 2&lt;/b&gt;: Not even browser/software svg renderer makers bothered to implement all of the specification, I couldn&#39;t find a browser or program that supports enable-background and renders this correctly (maybe OpenVG would):&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.w3.org/TR/SVG/images/filters/enable-background-01.svg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;64&quot; src=&quot;http://www.w3.org/TR/SVG/images/filters/enable-background-01.svg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Should look like this:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.w3.org/TR/SVG/images/filters/enable-background-01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;64&quot; src=&quot;http://www.w3.org/TR/SVG/images/filters/enable-background-01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Another edit: Opera does! Looks like it&#39;s &lt;a href=&quot;http://my.opera.com/dstorey/blog/2007/09/11/svg-the-race-to-100-compliance&quot;&gt;100% compilant&lt;/a&gt;.&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/204378503165382388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/06/nvidia-gpu-accelerated-path-svg-vector.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/204378503165382388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/204378503165382388'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/06/nvidia-gpu-accelerated-path-svg-vector.html' title='NVIDIA GPU-accelerated Path / SVG Vector Graphics Rendering'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/0IDyZof2pRI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-6863481565462544599</id><published>2012-06-05T23:27:00.001+02:00</published><updated>2012-06-14T15:15:59.440+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bits"/><category scheme="http://www.blogger.com/atom/ns#" term="blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="dynamic"/><category scheme="http://www.blogger.com/atom/ns#" term="extract b-bit number"/><category scheme="http://www.blogger.com/atom/ns#" term="highlighting"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="log2"/><category scheme="http://www.blogger.com/atom/ns#" term="long"/><category scheme="http://www.blogger.com/atom/ns#" term="range"/><category scheme="http://www.blogger.com/atom/ns#" term="read"/><category scheme="http://www.blogger.com/atom/ns#" term="specific"/><category scheme="http://www.blogger.com/atom/ns#" term="string"/><category scheme="http://www.blogger.com/atom/ns#" term="syntax"/><title type='text'>Some Java Bit Functions and easy syntax hightlighting of various languages in html</title><content type='html'>Use&amp;nbsp;&lt;a href=&quot;http://tohtml.com/&quot;&gt;http://tohtml.com/&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href=&quot;http://bedaux.net/cpp2html/&quot;&gt;http://bedaux.net/cpp2html/&lt;/a&gt;&amp;nbsp;for easy syntax highlighting in your blogger posts.&amp;nbsp;(I tried &lt;a href=&quot;http://www.cyberack.com/2007/07/adding-syntax-highlighter-to-blogger.html&quot;&gt;this&lt;/a&gt;&amp;nbsp;with &lt;a href=&quot;http://www.itechcolumn.com/2012/03/gain-access-to-html-of-dynamic.html&quot;&gt;that&lt;/a&gt;&amp;nbsp;but it doesn&#39;t seem to work).&lt;br /&gt;
&lt;br /&gt;
Now the Java stuff (easily portable to C, C++ and many other languages):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;    // Returs bit a to b (&amp;gt; a). lsb is bit 0, msb is 63, is returned as String in normal order (msb first)&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;static&lt;/span&gt; String getBits(long n, int a, int b) &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
        &lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;String&lt;/span&gt; bs&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #bb7977;&quot;&gt;int&lt;/span&gt; i &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; a&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; i &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; b&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; i&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            bs &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; i&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt; bs&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; bs&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;

    &lt;span style=&quot;color: dimgrey;&quot;&gt;// Calculates floored log2 by finding position of highest set bit. 
    // Ignores very highest bit of long (63rd).&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;static&lt;/span&gt; int log2(long n) &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
        &lt;span style=&quot;color: #bb7977;&quot;&gt;long&lt;/span&gt; m &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;L&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;62&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #bb7977;&quot;&gt;int&lt;/span&gt; i &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;62&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;while&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; m&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; i &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;m &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; m &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; i&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; i&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;

    &lt;span style=&quot;color: #3f5fbf;&quot;&gt;/**&lt;/span&gt;
&lt;span style=&quot;color: #3f5fbf;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #7f9fbf; font-weight: bold;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #3f5fbf;&quot;&gt; Extracts the n&lt;/span&gt;&lt;span style=&quot;color: #7f9fbf; font-weight: bold;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #3f5fbf;&quot;&gt;th b&lt;/span&gt;&lt;span style=&quot;color: #7f9fbf; font-weight: bold;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #3f5fbf;&quot;&gt;bit number. E.g. extractBitDigit(0xff00, 8, 2) =0xff. Useful for e.g. Radixsort.&lt;/span&gt;
&lt;span style=&quot;color: #3f5fbf;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;static&lt;/span&gt; long extractBitDigit(long value, int b, int n) &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
        &lt;span style=&quot;color: #bb7977;&quot;&gt;long&lt;/span&gt; m &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;
                &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt; b&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: dimgrey;&quot;&gt;// Mask&lt;/span&gt;
                &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;b&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: dimgrey;&quot;&gt;// move to n-th position&lt;/span&gt;
                &lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt;  &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;m &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt;
                value&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: dimgrey;&quot;&gt;// apply&lt;/span&gt;
                &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;b&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: dimgrey;&quot;&gt;// shift down&lt;/span&gt;
                &lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

    &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/6863481565462544599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/06/some-java-bit-functions-and-easy-syntax.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/6863481565462544599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/6863481565462544599'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/06/some-java-bit-functions-and-easy-syntax.html' title='Some Java Bit Functions and easy syntax hightlighting of various languages in html'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-732755471330409630</id><published>2012-05-31T23:06:00.001+02:00</published><updated>2012-07-20T13:21:18.242+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="0"/><category scheme="http://www.blogger.com/atom/ns#" term="_mm_stream_si128"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly"/><category scheme="http://www.blogger.com/atom/ns#" term="bandwidth"/><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="fast zero array in c"/><category scheme="http://www.blogger.com/atom/ns#" term="fast zeromemory"/><category scheme="http://www.blogger.com/atom/ns#" term="how fast zero memory"/><category scheme="http://www.blogger.com/atom/ns#" term="initialize"/><category scheme="http://www.blogger.com/atom/ns#" term="memset"/><category scheme="http://www.blogger.com/atom/ns#" term="movntdq"/><category scheme="http://www.blogger.com/atom/ns#" term="optimized"/><category scheme="http://www.blogger.com/atom/ns#" term="performance"/><category scheme="http://www.blogger.com/atom/ns#" term="quick"/><category scheme="http://www.blogger.com/atom/ns#" term="ram"/><category scheme="http://www.blogger.com/atom/ns#" term="set null"/><category scheme="http://www.blogger.com/atom/ns#" term="stream"/><category scheme="http://www.blogger.com/atom/ns#" term="zero memory"/><title type='text'>Fastest way to zero out memory - stream past cache with movntdq/_mm_stream_si128</title><content type='html'>As a rule of thumb, this technique is only beneficial if the buffer is larger than half the largest level cache.
&lt;pre&gt;&lt;span style=&quot;color: #000099;&quot;&gt;#include &amp;lt;time.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;emmintrin.h&amp;gt;
#include &amp;lt;intrin.h&amp;gt;
&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;
typedef&lt;/span&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt; unsigned long long&lt;/span&gt; ull&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;

ull tsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;
int&lt;/span&gt; clk&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style=&quot;color: #999999;&quot;&gt;

// Stream 64 Bytes to DRAM, bypass caches. _p must be 16-byte aligned.
&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #990000;&quot;&gt;template&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;typename&lt;/span&gt; T&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;
inline&lt;/span&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt; void&lt;/span&gt; memstream&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;T&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; *&lt;/span&gt;&lt;/b&gt;_p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt; const&lt;/span&gt; __m128i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;/b&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;)
{&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;
    char&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;*&lt;/span&gt;&lt;/b&gt; p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; = (&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;char&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;*)&lt;/span&gt;&lt;/b&gt;_p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;
    _mm_stream_si128&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;((&lt;/span&gt;&lt;/b&gt;__m128i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; *)&amp;amp;&lt;/span&gt;&lt;/b&gt;p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;],&lt;/span&gt;&lt;/b&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;
    _mm_stream_si128&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;((&lt;/span&gt;&lt;/b&gt;__m128i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; *)&amp;amp;&lt;/span&gt;&lt;/b&gt;p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;16&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;],&lt;/span&gt;&lt;/b&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;
    _mm_stream_si128&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;((&lt;/span&gt;&lt;/b&gt;__m128i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; *)&amp;amp;&lt;/span&gt;&lt;/b&gt;p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;32&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;],&lt;/span&gt;&lt;/b&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;
    _mm_stream_si128&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;((&lt;/span&gt;&lt;/b&gt;__m128i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; *)&amp;amp;&lt;/span&gt;&lt;/b&gt;p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;48&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;],&lt;/span&gt;&lt;/b&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);
}&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;

inline&lt;/span&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt; void&lt;/span&gt; serialize&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;() {&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;int&lt;/span&gt; a&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;4&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;];&lt;/span&gt;&lt;/b&gt; __cpuid&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;a&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);}&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;

inline&lt;/span&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt; void&lt;/span&gt; starttimer&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;() {&lt;/span&gt;&lt;/b&gt;clk&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; clock&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt; serialize&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt; tsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; __rdtsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();}&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;

inline&lt;/span&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt; void&lt;/span&gt; stoptimer&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;char&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;*&lt;/span&gt;&lt;/b&gt; n&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;) {&lt;/span&gt;&lt;/b&gt;
    serialize&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt; ull tsc2&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; __rdtsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt; tsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; tsc2&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; -&lt;/span&gt;&lt;/b&gt; tsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;  clk&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; clock&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;() -&lt;/span&gt;&lt;/b&gt; clk&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;
    printf&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&quot;%-10s %6i msec, %10I64i clocks, \n&quot;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; n&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; clk&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; tsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;); 
}&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;

int&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt; main&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;()
{&lt;/span&gt;&lt;/b&gt;
    serialize&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt;
    ull tsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; __rdtsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt;

    serialize&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt;
    ull tsc2&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; __rdtsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt;

    printf&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&quot;rdtsc overhead: %i ticks\n&quot;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; tsc2&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; -&lt;/span&gt;&lt;/b&gt; tsc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style=&quot;color: #999999;&quot;&gt;

    // Allocate 1.2 GB of RAM
&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #990000;&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt; int&lt;/span&gt; cnt&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 1024&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;*&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;1024&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;*&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;400&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt; 
    size_t sz&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; cnt&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; *&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #990000;&quot;&gt; sizeof&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;
    int&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; *&lt;/span&gt;&lt;/b&gt;ary&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; = (&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;*)&lt;/span&gt;&lt;/b&gt;malloc&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;sz&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;+&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;64&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;
    int&lt;/span&gt; p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; = (&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;)&lt;/span&gt;&lt;/b&gt;ary&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt; p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; +=&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 64&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt; p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt; p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; &amp;amp; ~&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;63&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt; ary&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; = (&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;*)&lt;/span&gt;&lt;/b&gt;p&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style=&quot;color: #999999;&quot;&gt; // align on 64 bytes

    // Can set it to anything, limitation is memory bandwidth anyways.
&lt;/span&gt;&lt;/i&gt;    __m128i zero&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; = {&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;};&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style=&quot;color: #999999;&quot;&gt;/*{1,2,3,4,
                    5,6,7,8,
                    9,10,11,12,
                    13,14,15,16};*/&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style=&quot;color: #999999;&quot;&gt;

    // Run a few times to get accurate results
&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: red;&quot;&gt;    do&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; {&lt;/span&gt;&lt;/b&gt;
        starttimer&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: red;&quot;&gt;
        for&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; (&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;int&lt;/span&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; &amp;lt;&lt;/span&gt;&lt;/b&gt; cnt&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;++)&lt;/span&gt;&lt;/b&gt;
            ary&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;[&lt;/span&gt;&lt;/b&gt;i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;] =&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;
        stoptimer&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&quot;ary[i] = 0&quot;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style=&quot;color: #999999;&quot;&gt; // 900 with msvc, 358 with intel
&lt;/span&gt;&lt;/i&gt;
        starttimer&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: red;&quot;&gt;
        for&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; (&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ff6633;&quot;&gt;int&lt;/span&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; =&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; &amp;lt;&lt;/span&gt;&lt;/b&gt; cnt&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;;&lt;/span&gt;&lt;/b&gt; i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt; +=&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 16&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;)&lt;/span&gt;&lt;/b&gt;
            memstream&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;/b&gt;ary&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;[&lt;/span&gt;&lt;/b&gt;i&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;],&lt;/span&gt;&lt;/b&gt; zero&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;
        stoptimer&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&quot;memstream&quot;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style=&quot;color: #999999;&quot;&gt; // 358 with both
&lt;/span&gt;&lt;/i&gt;
        starttimer&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;();&lt;/span&gt;&lt;/b&gt;
        memset&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;ary&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt; 0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; sz&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;
        stoptimer&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&quot;memset&quot;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;);&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style=&quot;color: #999999;&quot;&gt; // 940
&lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;
    }&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: red;&quot;&gt; while&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;getchar&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;());&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style=&quot;color: #999999;&quot;&gt;

    // Ensure array not optimized away
&lt;/span&gt;&lt;/i&gt;    srand&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;time&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #999900;&quot;&gt;0&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;));&lt;/span&gt;&lt;/b&gt; 
    printf&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&quot;%i\n&quot;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;,&lt;/span&gt;&lt;/b&gt; ary&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;[&lt;/span&gt;&lt;/b&gt;rand&lt;b&gt;&lt;span style=&quot;color: #663300;&quot;&gt;()]);
}&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Visual C++ (2010):&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;ary[i] = 0    962 msec, 2309504493 clocks,
memstream     362 msec,  869966541 clocks,
memset        949 msec, 2276475597 clocks,

ary[i] = 0    958 msec, 2298528630 clocks,
memstream     365 msec,  876925611 clocks,
memset        960 msec, 2303561970 clocks,

ary[i] = 0    943 msec, 2263462995 clocks,
memstream     363 msec,  870981457 clocks,
memset        968 msec, 2321940605 clocks,
&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
Generated assembly:&lt;br /&gt;
&lt;pre&gt;00C71076  xor         eax,eax  
00C71078  mov         ecx,19000000h  
00C7107D  mov         edi,esi  
00C7107F  rep stos    dword ptr es:[edi]  

00C71081  lea         eax,[esi+20h]  
00C71084  mov         ecx,1900000h  
00C71089  lea         esp,[esp]  

00C71090  movntdq     xmmword ptr [eax-20h],xmm0  
00C71095  movntdq     xmmword ptr [eax-10h],xmm0  
00C7109A  movntdq     xmmword ptr [eax],xmm0  
00C7109E  movntdq     xmmword ptr [eax+10h],xmm0  
00C710A3  add         eax,40h  
00C710A6  dec         ecx  
00C710A7  jne         main+90h (0C71090h)  

00C710A9  push        64000000h  
00C710AE  push        ecx  
00C710AF  push        esi  
00C710B0  call        memset (0C75910h)&amp;nbsp;&lt;/pre&gt;
Note that: MSVC converts the ary = 0 loop to Intel&#39;s implementation for memset, while calling memset.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Intel C++ (for vs 2010)&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;ary[i] = 0    435 msec, 1044279793 clocks,
memstream     357 msec,  855606474 clocks,
memset        928 msec, 2226664378 clocks,

ary[i] = 0    361 msec,  866360328 clocks,
memstream     371 msec,  890675064 clocks,
memset        933 msec, 2238792639 clocks,

ary[i] = 0    368 msec,  882105732 clocks,
memstream     358 msec,  858516585 clocks,
memset        959 msec, 2301478323 clocks,
&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
Generated assembly:&lt;br /&gt;
&lt;pre&gt;00071088  movntdq     xmmword ptr [esi+eax*4],xmm0  
0007108D  add         eax,4  
00071090  cmp         eax,19000000h  
00071095  jb          main+88h (71088h)  

00071097  movdqa      xmm0,xmmword ptr [___xt_z+24h (79160h)]  
0007109F  mov         eax,ebx 
 
000710A1  mov         edx,eax  
000710A3  inc         eax  
000710A4  shl         edx,6  
000710A7  cmp         eax,1900000h  
000710AC  movntdq     xmmword ptr [edx+esi],xmm0  
000710B1  movntdq     xmmword ptr [edx+esi+10h],xmm0  
000710B7  movntdq     xmmword ptr [edx+esi+20h],xmm0  
000710BD  movntdq     xmmword ptr [edx+esi+30h],xmm0  
000710C3  jb          main+0A1h (710A1h)  

000710C5  mov         edi,esi  
000710C7  xor         eax,eax  
000710C9  mov         ecx,19000000h  // = 1024*1024*400
000710CE  rep stos    dword ptr es:[edi]  
&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
Note that: There&#39;s no call to memset (which however also uses rep stos making no big difference). The Intel compiler is smart enought to use movntdq (= _mm_stream_si128) by itself.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;rep stos: Fill (E)CX doublewords at ES:[(E)DI--] with EAX, while ECX-- != 0</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/732755471330409630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/05/fastest-way-to-zero-out-memory-stream.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/732755471330409630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/732755471330409630'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/05/fastest-way-to-zero-out-memory-stream.html' title='Fastest way to zero out memory - stream past cache with movntdq/_mm_stream_si128'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-512112776249689022</id><published>2012-05-29T23:43:00.001+02:00</published><updated>2012-06-14T14:58:51.353+02:00</updated><title type='text'>No installers</title><content type='html'>When publishing software, make it installerless and portable (meaning it shouldn&#39;t write it&#39;s settings to the registry but to a user specifiable folder (a subfolder of itself by default)).&lt;br /&gt;
&lt;br /&gt;
Also, when zipping things up &lt;i&gt;don&#39;&lt;/i&gt;t put the files directly in the root folder, forcing people to use the &quot;extract to folder...&quot; option instead of &quot;extract here&quot;. This stops people from downloading your software to a temporary folder and opening it in a zip viewing program, then dragging and dropping it somewhere else, because the&#39;y first have to create a folder whereever they want to put it.&lt;br /&gt;
&lt;br /&gt;
Instead, create a single folder in the zip and put the files there. Download some of my software to see what I mean.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/512112776249689022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/05/no-installers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/512112776249689022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/512112776249689022'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/05/no-installers.html' title='No installers'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-4925962146366735890</id><published>2012-05-29T18:24:00.002+02:00</published><updated>2012-05-29T23:21:44.322+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="calc"/><category scheme="http://www.blogger.com/atom/ns#" term="commandline"/><category scheme="http://www.blogger.com/atom/ns#" term="gnucalc"/><category scheme="http://www.blogger.com/atom/ns#" term="replacement"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>GnuCalc - A good commandline calculator</title><content type='html'>Download: Get&lt;br /&gt;
&lt;a href=&quot;http://gnuwin32.sourceforge.net/downlinks/calc-bin-zip.php&quot;&gt;http://gnuwin32.sourceforge.net/downlinks/calc-bin-zip.php&lt;/a&gt;&lt;br /&gt;
and&lt;br /&gt;
&lt;a href=&quot;http://gnuwin32.sourceforge.net/downlinks/readline-bin-zip.php&quot;&gt;http://gnuwin32.sourceforge.net/downlinks/readline-bin-zip.php&lt;/a&gt;&lt;br /&gt;
(place&amp;nbsp;readline5.dll in GnuCalc bin folder).&lt;br /&gt;
&lt;br /&gt;
For integer only, &quot;set /a 2+2&quot; is good enough.&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;a href=&quot;http://gnuwin32.sourceforge.net/packages/calc.htm&quot;&gt;http://gnuwin32.sourceforge.net/packages/calc.htm&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/iphucwin32/wiki/Running&quot;&gt;http://code.google.com/p/iphucwin32/wiki/Running&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/4925962146366735890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/05/gnucalc-good-commandline-calculator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/4925962146366735890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/4925962146366735890'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/05/gnucalc-good-commandline-calculator.html' title='GnuCalc - A good commandline calculator'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-9059456356964706606</id><published>2012-05-14T21:01:00.002+02:00</published><updated>2016-11-20T02:12:37.572+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c"/><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="cannot"/><category scheme="http://www.blogger.com/atom/ns#" term="download"/><category scheme="http://www.blogger.com/atom/ns#" term="file"/><category scheme="http://www.blogger.com/atom/ns#" term="free"/><category scheme="http://www.blogger.com/atom/ns#" term="h"/><category scheme="http://www.blogger.com/atom/ns#" term="highgui"/><category scheme="http://www.blogger.com/atom/ns#" term="include"/><category scheme="http://www.blogger.com/atom/ns#" term="no such file or directory"/><category scheme="http://www.blogger.com/atom/ns#" term="opencv"/><category scheme="http://www.blogger.com/atom/ns#" term="repacked"/><category scheme="http://www.blogger.com/atom/ns#" term="simple"/><title type='text'>highgui.h, highgui.dll download</title><content type='html'>&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;fatal error C1083: Cannot open include file: &#39;highgui.h&#39;: No such file or directory&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Just came across some &lt;a href=&quot;http://web.media.mit.edu/~gordonw/OpenGL/index.php&quot;&gt;OpenGL Tutorials&lt;/a&gt;&amp;nbsp;which depend on&amp;nbsp;OpenCV Lib&#39;s Image loading. OpenCV is a huge library with tons of other stuff you won&#39;t need for compiling these samples, so I went ahead and repacked just everything you need for compiling and running these samples (only tested simpleGLUT-Texturing).&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://obviouslygreenscreen.com/data/WebsiteProjectUploads/highgui_h_lib_ocv_x86_vs10.zip&quot;&gt;highgui_h_lib_ocv_x86_vs10.zip&lt;/a&gt;&amp;nbsp;(only vs10x86 binaries and required headers included)&lt;br /&gt;
&lt;br /&gt;
When compiling these samples, make sure to set Linker &amp;gt; General &amp;gt; Output File back to default and remove any input libraries, then add the ones included here (e.g. by just drag and dropping them into the source file area of vs10) and copy the dlls in bin to your project dir.</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/9059456356964706606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/05/highguih.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/9059456356964706606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/9059456356964706606'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/05/highguih.html' title='highgui.h, highgui.dll download'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-3194693317375379294</id><published>2012-04-05T14:44:00.000+02:00</published><updated>2012-06-05T23:36:55.302+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="free lego game"/><category scheme="http://www.blogger.com/atom/ns#" term="game"/><category scheme="http://www.blogger.com/atom/ns#" term="leg&#39;oh"/><category scheme="http://www.blogger.com/atom/ns#" term="lego jump and run"/><category scheme="http://www.blogger.com/atom/ns#" term="legoh"/><category scheme="http://www.blogger.com/atom/ns#" term="legoh 2"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><title type='text'>Leg&#39;oh - Free Lego Jump and Run Game</title><content type='html'>Posted another old game I made back in 2005, Leg&#39;oh 1:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://gmc.yoyogames.com/index.php?showtopic=535898&quot;&gt;http://gmc.yoyogames.com/index.php?showtopic=535898&lt;/a&gt;
&lt;br /&gt;
&lt;img alt=&quot;Posted Image&quot; class=&quot;bbc_img&quot; src=&quot;http://img855.imageshack.us/img855/8189/legoh1scrn1.png&quot; style=&quot;background-color: #3a3a3a; border: 0px; color: #dedede; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 13.333333015441895px; line-height: 20px; vertical-align: middle;&quot; /&gt;&lt;img alt=&quot;Posted Image&quot; class=&quot;bbc_img&quot; src=&quot;http://img804.imageshack.us/img804/7325/legoh1scrn2.png&quot; style=&quot;background-color: #3a3a3a; border: 0px; color: #dedede; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 13.333333015441895px; line-height: 20px; vertical-align: middle;&quot; /&gt;&lt;img alt=&quot;Posted Image&quot; class=&quot;bbc_img&quot; src=&quot;http://img848.imageshack.us/img848/1917/legoh1scrn3.png&quot; style=&quot;background-color: #3a3a3a; border: 0px; color: #dedede; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 13.333333015441895px; line-height: 20px; vertical-align: middle;&quot; /&gt;&lt;img alt=&quot;Posted Image&quot; class=&quot;bbc_img&quot; src=&quot;http://img801.imageshack.us/img801/1430/legoh1scrn4.png&quot; style=&quot;background-color: #3a3a3a; border: 0px; color: #dedede; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 13.333333015441895px; line-height: 20px; vertical-align: middle;&quot; /&gt;
&lt;br /&gt;
&lt;br /&gt;
Predecessor to Leg&#39;oh 2!:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://gmc.yoyogames.com/index.php?showtopic=454393&quot;&gt;http://gmc.yoyogames.com/index.php?showtopic=454393&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Btw. when publishing something: Make sure to include an installerless version and put the files not directly into a zip but a single folder, such that &quot;extract here&quot; and drag and drop can be used to extract your program.</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/3194693317375379294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/04/legoh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/3194693317375379294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/3194693317375379294'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/04/legoh.html' title='Leg&#39;oh - Free Lego Jump and Run Game'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-3027709897605558315</id><published>2012-01-02T19:57:00.002+01:00</published><updated>2012-08-10T22:35:09.423+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3d"/><category scheme="http://www.blogger.com/atom/ns#" term="editor"/><category scheme="http://www.blogger.com/atom/ns#" term="free"/><category scheme="http://www.blogger.com/atom/ns#" term="game maker"/><category scheme="http://www.blogger.com/atom/ns#" term="gmte"/><category scheme="http://www.blogger.com/atom/ns#" term="gmte 2"/><category scheme="http://www.blogger.com/atom/ns#" term="terrain"/><title type='text'>GMTE 2 and 3D Painter War update</title><content type='html'>Updated 3D Painter War and released source:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://gmc.yoyogames.com/index.php?showtopic=454395&amp;amp;view=findpost&amp;amp;p=3884861&quot;&gt;http://gmc.yoyogames.com/index.php?showtopic=454395&amp;amp;view=findpost&amp;amp;p=3884861&lt;/a&gt;&lt;br /&gt;
&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/vXODE-9zN2Q&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br /&gt;
Updated GMTE 2 to include obj, heightmap and texture export:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://gmc.yoyogames.com/index.php?s=4ba0c1883dca8528f5bab58b9223c670&amp;amp;showtopic=526631&amp;amp;view=findpost&amp;amp;p=3884826&quot;&gt;http://gmc.yoyogames.com/index.php?s=4ba0c1883dca8528f5bab58b9223c670&amp;amp;showtopic=526631&amp;amp;view=findpost&amp;amp;p=3884826&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/3027709897605558315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/01/gmte-2-and-3d-painter-war-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/3027709897605558315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/3027709897605558315'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2012/01/gmte-2-and-3d-painter-war-update.html' title='GMTE 2 and 3D Painter War update'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/vXODE-9zN2Q/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5417353450273279655.post-8483213494188209173</id><published>2011-12-11T21:15:00.001+01:00</published><updated>2012-06-05T23:35:37.896+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3d"/><category scheme="http://www.blogger.com/atom/ns#" term="editor"/><category scheme="http://www.blogger.com/atom/ns#" term="free"/><category scheme="http://www.blogger.com/atom/ns#" term="game maker"/><category scheme="http://www.blogger.com/atom/ns#" term="gmte"/><category scheme="http://www.blogger.com/atom/ns#" term="gmte 2"/><category scheme="http://www.blogger.com/atom/ns#" term="terrain"/><title type='text'>GameMaker Terrain Editor 2 released - finally adds loading and saving</title><content type='html'>Download:&lt;br /&gt;
&lt;a href=&quot;http://dl.dropbox.com/u/8014211/WebsiteProjectUploads/GMTerrainEditor2.zip&quot;&gt;http://dl.dropbox.com/u/8014211/WebsiteProjectUploads/GMTerrainEditor2.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
GMC forum post&lt;br /&gt;
&lt;a href=&quot;http://gmc.yoyogames.com/index.php?showtopic=526631&quot;&gt;http://gmc.yoyogames.com/index.php?showtopic=526631&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Youtube video with complete instructions:&lt;br /&gt;
Introduction to the GameMaker Terrain Editor 2:&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/Tj_g3SdXw8Y&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://hurricane-eyeent.blogspot.com/feeds/8483213494188209173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hurricane-eyeent.blogspot.com/2011/12/gamemaker-terrain-editor-2-released.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/8483213494188209173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5417353450273279655/posts/default/8483213494188209173'/><link rel='alternate' type='text/html' href='http://hurricane-eyeent.blogspot.com/2011/12/gamemaker-terrain-editor-2-released.html' title='GameMaker Terrain Editor 2 released - finally adds loading and saving'/><author><name>Paul Frischknecht</name><uri>http://www.blogger.com/profile/12596347240438376243</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigO0nEj1qBG0HjxT8MVG-Bi2YYTw9Pz1w1vgj48WdSTia8SvjaQKmMn7d1vqDgqHpc6BqiRUwJ2-Ra7uruPeqBkl-fSzUZMejIUTpJzpgvpFte6pZh5NJdUiEzDRgeqR5UzEdwJSruCOgKAMyAfftPFfP9s3ZIi8yL23SUruQ2M8jW/s220/Paul%20Frischknecht%20400x400%20ti8m%20ti&amp;m%2020180802.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Tj_g3SdXw8Y/default.jpg" height="72" width="72"/><thr:total>2</thr:total></entry></feed>