http://www.anse.de/Anse.de2021-05-07T08:41:16+02:00Ansgar Becker/images/anse.jpg2024 Ansgar Beckerhttp://www.anse.de/programming/fixing-no-thumbnail-generation-in-shopwaFixing no thumbnail generation in Shopware 62021-05-07T08:41:16+02:00Ansgar Becker<p>While struggling with importing images into a Shopware database, I found the column <code>media.media_type</code> has to have a certain value, depending on the file extension (jpg, png, gif). Without a value in it,<br />
<code>bin/console media:generate-thumbnails</code>
<br />won't generate a thumbnail for this image.</p>
<p>Now, normally you should run<br />
<code>bin/console media:generate-media-types --batch-size=5000</code>
<br />to populate this column with the right values.
But this process can really eat your time - it took 2 hours for my 70,000 images. And it even gets slower on each batch offset. Be sure at least to
use a bigger batch-size than the default ridiculous 50.</p>
<p>If you have at least one image of each file extension in your media table, you can achieve the same with a very quick SQL query: <pre><code>
UPDATE media m1
SET media_type=
(SELECT media_type FROM media
WHERE file_extension=m1.file_extension AND media_type IS NOT NULL
LIMIT 1)
WHERE media_type IS NULL;
</code></pre></p>
<p>HeidiSQL just said: <pre><code>
/* Affected rows: 1.622 Found rows: 0 Warnings: 0 Duration for 1 query: 0,172 sec. */
</code></pre>
</p>
<p>
Of course this is a hack, and there is no support for it. So be aware of what you're doing, plus make a backup before running the update
</p>http://www.anse.de/programming/moving-a-wd-mycloud-harddisk-into-a-pcMoving a WD MyCloud harddisk into a pc2020-02-01T15:21:09+01:00Ansgar Becker<p>
I just successfully moved the 3T WD Red harddisk (wdbctl0030hwt) out of its chassis, into
my Intel/Windows 10 tower. Altough that's not what WD recommends, and I'm sure
I lost any warranty with it, it's good to know there is a way to do that. E.g.
in case the network controller or the power connector is broken, or whatever.
</p>
<p>So, how to do that?</p>
<ol>
<li>First thing: open the chassis, without breaking it. This 2 minute video explains it better than I can write down here: <a href="https://www.youtube.com/watch?v=2_eW25LGXcI">https://www.youtube.com/watch?v=2_eW25LGXcI</a></li>
<li>Then, plug off the controller, and remove the screws from the internal harddisk</li>
<li>Plug the harddisk with a SATA cable to your PC</li>
<li>Boot your PC, and you will see a handful of partitions on that harddisk, but you cannot access them. This is because it's formatted with EXT4 filesystem, for which you need a Windows driver first. Get Ext2Fsd from <a href="https://www.ext2fsd.com/">https://www.ext2fsd.com/</a></li>
<li>Now you should see one partition on that disk which consists of most of the available space. You should be able to read from it using your Windows Explorer or any other program.</li>
<li>I highly recommend not to attempt to write files onto that partition. The driver disables write access by default, but in case it's activated - don't try.</li>
<li>Use the current state to backup your data to some other harddisk, if you haven't done so</li>
<li>Afterwards, I removed that Ext2Fsd driver again, rebooted the PC and deleted all partitions on the harddisk. Then created one fresh NTFS volume on it, which I am now using as a storage extension for my tiny SSD.</li>
</ol>http://www.anse.de/programming/my-new-favorite-undelete-toolMy new favorite undelete tool2018-05-08T21:01:38+02:00Ansgar BeckerJust found on heise.de when searching for a tool to recover deleted files from the SD card of my 14 years old daughter. She managed to delete exactly those photos which she intended to keep. Well, I had no copies of these anywhere, as they were only some days old yet.
But then came <a href="https://www.cgsecurity.org/wiki/PhotoRec">PhotoRec</a> and saved my life:
<img src="/images/photorec-cli.png" />
The GUI is a bit special for most users but very ok if you feel familiar with shell windows. Quite conveniant. And most important - it recovered more files than Recuva.
<a href="https://www.cgsecurity.org/wiki/PhotoRec"><img src="https://www.cgsecurity.org/mw/images/Photorec.png" /></a>http://www.anse.de/kids/spielplatzfest-2017-am-d%F6rper-bergSpielplatzfest 2017 am Dörper Berg2017-04-12T22:15:46+02:00Ansgar Becker<img src="/images/2017_spielplatzfest.jpg" alt="Spielplatzfest 2017 Dörper Berg 48485 Neuenkirchen" />http://www.anse.de/kids/auf-den-spuren-des-k%E4sediebesAuf den Spuren des Käsediebes2017-01-31T20:26:20+01:00Ansgar Becker<div style="float:left; max-width:300px;">Als stolzer Papa von Carlotta Becker kann ich heute ihr erstes über <a href="https://www.tolino-media.de/">Tolino Media</a> selbstgeschriebenes eBook vorstellen:</div>
<a href="https://www.buecher.de/shop/kinder--jugendbuecher/auf-den-spuren-des-kaesediebes-ebook-epub/becker-carlotta/products_products/detail/prod_id/47516828/">
<img src="https://bilder.buecher.de/produkte/47/47516/47516828z.jpg" alt="Carlotta Becker: Auf den Spuren des Käsediebes, Buchcover" style="float:left; max-width:600px;" />
</a>
<br style="clear:both" />http://www.anse.de/music/la-flute-de-panLa Flute De Pan2017-01-21T15:42:18+01:00Ansgar Becker<p>
My favorite version of <i>La Flûte De Pan</i> by <i>The Art of Noise</i> with Trevor Horn, featuring the inspiring voice of <a href="https://en.wikipedia.org/wiki/Sally_Bradshaw">Sally Bradshaw</a>. Music for filling up lost energy.
</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/PKqMqV1bMO0" frameborder="0" allowfullscreen></iframe>
http://www.anse.de/kids/bens-lego-disco-partyBens Lego-Disco-Party2016-10-09T13:28:12+02:00Ansgar Becker<p>Our first stop-motion video with Lego mini figures, spoken sound from Ben and the Lego Movie.</p>
<iframe width="600" height="450" src="https://www.youtube.com/embed/Ro7WWDhS6ms" frameborder="0" allowfullscreen></iframe>http://www.anse.de/zitate/den-richtigen-hund-findenDen richtigen Hund finden2016-03-13T19:26:40+01:00Ansgar Becker<blockquote>Man bekommt nie den Hund den man möchte,<br />sondern den Hund den man braucht.</blockquote>
<p>Cesar Millan</p>http://www.anse.de/music/claire-de-luneClaire de Lune2015-12-29T19:28:35+01:00Ansgar Becker<p>From Claude Debussy, back in 1905</p>
<p>Wonderful...</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/ea2WoUtbzuw" frameborder="0" allowfullscreen></iframe>http://www.anse.de/programming/code-signing-for-open-source-executableCode signing for Open Source executable2015-11-30T20:16:49+01:00Ansgar Becker<p>I just hassled various hours with code signing, certificates, and terms I am not handling every day with. So, here's my working tutorial for signing an .exe file using signtool.exe from Microsoft.</p>
<ol>
<li>Go to <a href="https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml">certum.eu</a> and buy a certificate for code signing. At the time of this writing, I paid roughly 15 EUR for a one year lasting certificate. After placing the order, you will have to
<ol>
<li>verify your email address</li>
<li>send them your scanned identinty card, and e.g. your scanned driving license per email.
</ol>
Just follow the instructions you get per mail.
</li>
<li>
<a href="/images/install-cert.png"><img src="/images/install-cert.png" alt="Install certificate in Firefox" style="float:right;max-width:400px;" /></a>
Once the certificate has been activated, take Firefox and log on to your account at certum.eu. Now, click "Certificates Management", then click the certificate you just created. Now, click the "Install online" button:
<br style="clear:both;" />
</li>
<li>
<a href="/images/backup-p12.png"><img src="/images/backup-p12.png" alt="Backup certificate from Firefox" style="float:right;max-width:400px;" /></a>
Now, go to your Firefox settings (Einstellungen) => "Advanced" (Erweitert). Then click "Certificates", then click "Show certificates". In the upcoming dialog, click the tab "Your certificates", then click the newly installed certificate. Now, click "Backup" and save that to a .p12 file somewhere on your harddisk. You will be asked for a password - just remember it for later:
<br style="clear:both;" />
</li>
<li>Now you need signtool.exe from Microsoft. Pick the right version of the <i>Windows SDK</i> from their <a href="https://msdn.microsoft.com/en-us/windowsserver/ff851942.aspx">archive page</a>. You can safely uncheck everything except for Developer Tools => Tools when installing. After installing, you have the signtool.exe in C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\ (or similar)
</li>
<li>
Now you have everything you need. The rest is a nice command line:
<p><code><pre>C:\>Program Files\Microsoft SDKs\Windows\v6.1\Bin\signtool.exe sign /f c:\somepath\fromfirefox.p12 /p yourpassword /t https://timestamp.comodoca.com/authenticode c:\somepath\myapp.exe</pre></code></p>
If that went fine, you will see such a message:
<p><code><pre>Done Adding Additional Store
Successfully signed and timestamped: c:\somepath\myapp.exe</pre></code></p>
</li>
</ol>http://www.anse.de/programming/execute-multiple-queries-in-one-mysql-coExecute multiple queries in one mysql command line2015-10-19T18:45:23+02:00Ansgar Becker<p>
On the command line, you may want to execute more than one SQL command
at once. Most hints recommend a batch file to accomplish that, but that
requires an additional file placed somewhere where you may forget it.
</p>
<p>
You can also fire several queries with the --execute parameter, separated
by semicolon:
</p>
<code><pre>mysql -hlocalhost -uroot --execute"TRUNCATE dba.log_customer; TRUNCATE dba.log_quote; TRUNCATE dba.log_summary;"</pre></code>
<p>...and the slightly shorter version:</p>
<code><pre>mysql -hlocalhost -uroot -e"TRUNCATE dba.log_customer; TRUNCATE dba.log_quote; TRUNCATE dba.log_summary;"</pre></code>http://www.anse.de/programming/revealing-sku-does-not-exist-in-the-amazRevealing "SKU does not exist in the Amazon.com catalog"2015-10-15T19:28:07+02:00Ansgar Becker<p>
Got the following error with the <em>SubmitFeed</em> action in Amazon's Marketplace API:
</p>
<pre>This SKU does not exist in the Amazon.com catalog. Your inventory data was not processed.
For reasons why, and help fixing this, see https://sellercentral.amazon.de/gp/errorcode/13013</pre>
<p>
The reason is self-explanatory, the product's sku is not listed in the catalog. I sent 1000
products to the API, of which only 100 were activated. So I expected 900 errors, but got only 200!
</p>
<p>
So, what's going on? Took me a while to find out:
</p>
<p>
The <em>sku does not exist</em> error only seems to occur on products for which you send a quantity value greater 0. Products with a
quantity of 0 do not trigger the error.
</p>
<p>
Hope that helps someone saving some time on debugging.
</p>http://www.anse.de/kids/millenium-falconMillenium Falcon2015-10-10T14:46:44+02:00Ansgar Becker<p>Done... finally!</p>
<p>Building up:</p>
<a href="/images/IMG_20151009_140942.jpg"><img src="/images/IMG_20151009_140942.jpg" alt="" /></a>
<p>Final state:</p>
<a href="/images/IMG_20151010_140928.jpg"><img src="/images/IMG_20151010_140928.jpg" alt="" /></a>
<p>All open:</p>
<a href="/images/IMG_20151010_141045.jpg"><img src="/images/IMG_20151010_141045.jpg" alt="" /></a>
<p>Half open, with Han Solo in its box:</p>
<a href="/images/IMG_20151010_141140.jpg"><img src="/images/IMG_20151010_141140.jpg" alt="" /></a>
http://www.anse.de/zitate/zu-leben---Zu leben...2015-10-05T19:36:45+02:00Ansgar Becker<blockquote>Zu leben hat seine Zeit, zu sterben hat seine Zeit.</blockquote>
<p>Kurt Wallander / Henning Mankell (♰ Oktober 2015)</p>http://www.anse.de/zitate/our-all-futureOur all future2015-07-18T10:41:14+02:00Ansgar Becker<p>It will definitely <s>be a question</s> not only be a question of intelligence whether <s>we</s> mankind runs into its own destruction or not. That end won't be the back of beyond. Mankind won't live as long the universe will live, and even the universe won't live forever. So it's just a question of a period of time for mankind.</p>http://www.anse.de/programming/ssh-client-on-freesshd-extremely-slowSSH client on freeSSHd extremely slow2015-06-03T22:40:54+02:00Ansgar Becker<p>If you are using the freeSSHd server and you're experiencing extremely slow connection startups, downloads and uploads from any SFTP client, it is likely that you just need to turn off IP resolving in logfiles. You can disable that in the tab "Logging" > "Resolve IP addresses into hostnames".</p>
<p>
Or, by editing the freesshdservice.ini file:
<code><pre>
[Logging]
LogResolveIP=0
</pre></code>
</p>http://www.anse.de/programming/solving-hard-to-find-xyz-is-not-a-constrSolving hard to find "XYZ is not a constructor" JavaScript errors in Magento2015-03-12T19:35:55+01:00Ansgar Becker<p>
It took me quite a few hours to find the cause of various mysterious errors in
Magento's compiled JavaScript files. On most pages these errors did not occur, only
on a specific product review page. Magento was told to leave some .js files away on
this url. So there was a difference between the compiled .js file on that review url
and the other urls. The thing which drived me nuts was: how can I have an error in
JavaScript code which just has <em>less</em> code than some other file which was even
bigger, but had no error?
</p>
<p>
Take a look at the following two snippets. The first one does not throw an error:
</p>
<pre>
Product.Config.prototype = {
// some code
}
Calendar = function() {
// some code
};
(function(global){
// some code
})(window);
</pre>
<p>
Now, I'll remove the "Calendar" definition, and suddenly the code throws errors:
</p>
<pre>
Product.Config.prototype = {
// some code
}
(function(global){
// some code
})(window);
</pre>
<p>
The reason is a silly missing semicolon after the definition of "Product.Config.prototype".
This is only a problem if the immediately following code starts with a parenthesis,
like in the second snippet.
</p>
<p>
In Magento versions up to the newest v1.9 you will find such prototype definitions without a
semicolon in the folder <strong>/js/varien/</strong>. Adding a semicolon at the end of
these saved me from getting even more grey hair than I already have.
</p>http://www.anse.de/real-life/what-is-a-nerdWhat is a nerd2013-09-04T10:16:53+02:00Ansgar Becker<p>What is a nerd?</p>
<p>People nowadays tend to quickly name themselves a <em>nerd</em> when they're playing computer games and listening to electronic music in some of its wide spread flavours. In my understanding this is not the original definition of a <em>nerd</em>.
<p>
<p>Wikipedia <a href="https://en.wikipedia.org/wiki/Nerd">says</a>:<br />
<cite>
A nerd [...] is a person, typically described as being overly intellectual, obsessive, or socially impaired. They may spend inordinate amounts of time on unpopular, obscure, or non-mainstream activities, which are generally either highly technical or relating to topics of fiction or fantasy, to the exclusion of more mainstream activities.
</cite>
<p>
<p>
Now, come on, playing computer games the whole day is not very unpopular and obscure nowadays, is it? Compare that to e.g. programming an application which calculates the time needed for a light photon to travel through the observable or even the whole universe, in <a href="https://www.erlang.org/">Erlang</a>.
<p>http://www.anse.de/real-life/mein-neues-k%F6rnerkissenMein neues Körnerkissen2013-01-09T19:40:12+01:00Ansgar Becker <div style="width: 90%; padding: 12px; background-color: #efefef; font-family: Arial"><a href="https://de.dawanda.com/widget/redirect_to_object/Product-40208118-483e2c3330" target="_blank" title="Körnerkissen auf DaWanda"><img alt="Körnerkissen auf DaWanda" src="https://de.dawanda.com/image/redirect_to_version/Product-40208118-long" style="border:0px;padding:0px;" /></a><div style="position: relative;width:90%;"><a href="https://de.dawanda.com/widget/redirect_to_object/Category-1122-483e2c3330" target="_blank" title="Beauty & Body auf DaWanda"><img alt="Mini_logo" src="https://de.dawanda.com/images/icons/mini_logo.png" style="position:absolute;right:0px;top:0px;border:0px;padding:0px;" /></a><h2 style="display:block;font-family:Arial;font-size:15px;padding:0px;margin:0px;color:#5D5D5D;margin-top:6px;font-weight:bold;">Entdeckt auf DaWanda</h2><small style="display:block;font-family:Arial;color:#999;font-size: 9px;">Von: weissesHaus_Nr7</small><h3 style="font-family:Arial;font-size: 11px; margin: 0px; padding: 0px;margin-top:6px; display: inline-block;"><a href="https://de.dawanda.com/widget/redirect_to_object/Product-40208118-483e2c3330" style="color:#257FD5; text-decoration: none" target="_blank" title="Körnerkissen auf DaWanda">Körnerkissen</a></h3><img alt="DaWanda Shop-Widget" src="https://t.dawanda.com/_t_/?rand=483e2c3330&src_id=40208118&src_type=Product&t=html_widget" style="position:absolute;right:0px;bottom:0px;padding:0px;" /></div></div>http://www.anse.de/zitate/thingsThings2012-09-09T17:15:50+02:00Ansgar Becker<p style="text-decoration: line-through;">I'm always forgetting to do really important things while I prefer to do things I don't really need to do.</p>
<p>I'm always forgetting to do very few really important things, while I prefer to do lots of other things I don't really need to do.</p>
<p>And that's modern progress, man, yeah. Well, feels more like quite a few steps backwards. Time killers. Things I don't need to do.</p>
http://www.anse.de/real-life/nusseckenNussecken2012-05-26T19:26:10+02:00Ansgar Becker<p><strong>Der Teig (1 Blech = 32 Nußecken):</strong></p>
<ul>
<li>130g Butter oder Margarine</li>
<li>130g Zucker</li>
<li>2 Eier</li>
<li>300g Mehl</li>
<li>1 gestrichener Teelöffel Backpulver</li>
</ul>
<p>Alle Zutaten zu einem Knetteig verarbeiten und auf einem gefetteten Backblech ausrollen.</p>
<p><strong>Der Belag</strong></p>
<ul>
<li>1 halbes bis ganzes Glas Aprikosenkonfitüre</li>
<li>200g Butter oder Margarine</li>
<li>200g Zucker</li>
<li>2 Päckchen Vanillezucker</li>
<li>200g gemahlene Haselnüsse</li>
<li>200g gehackte Haselnüsse</li>
<li>4 Esslöffel Wasser</li>
<li>ca. 300g Zartbitter Kuchenglasur</li>
</ul>
<p>Aprikosenkonfitüre großzügig auf den ausgerollten Teig streichen. Die Konfitüre macht die
recht trockenen Nußecken saftig und fruchtig, lieber etwas zu viel als zu wenig nehmen.</p>
<p>Butter, Zucker und Vanillezucker in einem mittelgroßen Topf erhitzen, bis der Zucker sich gelöst hat. Die Nüsse zusammen
mit Wasser unter die Butter-Zucker-Masse rühren. Dann alles auf die Konfitüre streichen.</p>
<p>Bei 175 Grad ca. 25 Minuten backen. Noch warm zunächst in Rechtecke, dann in Dreiecke schneiden.</p>
<p>Kuchenglasur in einer Tasse im Wasserbad erhitzen. Die Ecken in die Schokolade tauchen. Fertig! Leider dauert das Abkühlen
einige Stunden, aber es schmeckt ja auch warm.</p>http://www.anse.de/funstuff/world-populationWorld population2011-10-30T21:58:17+01:00Ansgar Beckerhttp://www.anse.de/real-life/helge-schneider-in-emsdettenHelge Schneider in Emsdetten2011-10-24T19:43:18+02:00Ansgar Becker<p>
Am 30. September gab es Helge Schneider in Emsdetten. Zum zweiten Mal in meinem Leben gesehen, diesmal mit meiner Liebsten. Und Helge war echt gut diesmal. Er war gut gelaunt, und ich hatte den Eindruck er mochte das Publikum wirklich. Soviel Blödsinn wie man ihm zutrauen mag, wenn er sagt das <em>dass Publikum heute wunderbar ist</em>, hatte ich das Gefühl das er das auch wirklich so meint. Mehr noch, ich denke Helge braucht ein Publikum dass ihn bzw. die tiefe Absurdität hinter seinem Humor nachvollziehen kann.
</p>
<p>
Wie auch immer - es gab viele alte Hits wie Telefonmann und Meisenmann, bis zur Unkenntlichkeit unglaublich gut improvisiert. Und der alte Witz mit dem von der Hand abgelesenen "hier im schönen Emsdetten ..." war natürlich dabei. Musikalischer Höhepunkt war der Gastautritt von <a href="https://www.tyree-glenn.com/">Tyree Glenn Jr.</a>, der mit seinen geschätzten 65 Jahren und unglaublicher Wucht eine Solonummer auf seinem Saxophon dahinlegte.
</p>http://www.anse.de/zitate/der-gedankeDer Gedanke2011-10-18T19:08:48+02:00Ansgar Becker<blockquote>
"Der Gedanke ist nur ein Blitz zwischen zwei langen Nächten;<br />aber dieser Blitz ist alles."
</blockquote>
<p>Henri Poincaré (1854 - 1912), französischer Mathematiker</p>http://www.anse.de/programming/css-lintCSS Lint2011-06-18T08:19:26+02:00Ansgar Becker<p>Not just another CSS validator, but more: checks your CSS code for bad, unpreferred and browser-incompatible code: https://csslint.net/</p>http://www.anse.de/heidisql/heidisql-im-mariadb-installerHeidiSQL im MariaDB Installer2011-06-18T08:07:02+02:00Ansgar Becker<p>Ich war hin und weg als Vladislav mich fragte ob sie mein "Baby" <a href="https://www.heidisql.com/">HeidiSQL</a> in den nächsten MariaDB Installer packen könnten. Ich sagte zu, implementierte noch schnell Unterstützung für virtuelle Spalten und das richtige Icon im Datenbank-Baum auf der linken Seite:</p>
<p><a href="/images/heidisql-mariadb.png"><img src="/images/heidisql-mariadb.png" alt="Heidi und Maria" width="343" height="243" /></a></p>
<p>Vor 3 Tagen kam dann die <a href="https://mariadb.com/blog/mariadb-527-released">News zum neuen MariaDB release</a>. Einen Tag später sogar auf <a href="https://www.heise.de/newsticker/meldung/Datenbanken-Maria-und-Heidi-gehen-Hand-in-Hand-1261349.html">heise.de in den Top-News</a> - was heidisql.com natürlich einigen Traffic bescherte.</p>
<p>Im Nachhinein betrachtet kann ich sagen: im Paket geschnürt kann OpenSource Software Ihre Stärken richtig ausspielen. Vielen Dank auch an Monty!</p>http://www.anse.de/zitate/the-web-gets-socialThe web gets social2011-01-27T22:09:24+01:00Ansgar Becker<blockquote>The web gets social, and finally hits puberty.</blockquote>
(by me)http://www.anse.de/programming/set-meta-description-in-extensionSet meta description in extension2010-12-08T12:23:29+01:00Ansgar Becker<p>To set a page title from within any Typo3 extension, you just access the relevant page array item:</p>
<p><code>$GLOBALS['TSFE']->page['title'] = 'My title'</code></p>
<p>Now, if you expect this to work also for the meta description you will probably be disappointed. Try this instead, which worked for me on a 4.1 installation:</p>
<p><code>$GLOBALS['TSFE']->cObj->data['description'] = 'My description'</code></p>http://www.anse.de/programming/how-fucked-is-your-database%3FHow fucked is your database?2010-09-06T10:47:42+02:00Ansgar Beckerhttp://www.anse.de/zitate/wenn-du-losl%E4sst----Wenn du loslässt ...2010-08-21T15:34:41+02:00Ansgar Becker<p>... hast du zwei Hände frei.</p>
<p><em>aus China</em></p>http://www.anse.de/programming/delphi-shortcutDelphi shortcut2010-05-09T11:55:28+02:00Ansgar Becker<p>Just found by accident: When editing a .pas unit, Shift + Ctrl + [ArrowUp or ArrowDown] jumps from procedure <em>declaration </em>to <em>implementation</em>. Very nice if you have large units with several thousands of lines and numerous procedures and functions.</p>http://www.anse.de/funstuff/stargate-universeStargate Universe2010-04-23T22:05:52+02:00Ansgar Becker<p>Als größter Fan von Stargate SG1 und Atlantis bin ich von den ersten 5 Folgen von Stargate Universe enttäuscht. Bin ich zu alt und passe nicht mehr in die Zielgruppe? Muß SciFi heutzutage unbedingt so viele Kompromisse eingehen? Ok, das Militär-Style-Gequatsche war immer schon überflüssig, aber im Gegensatz zu SG1 und Atlantis gibt es bei Universe jede Menge langgezogene Gefühls-Duseleien, viele unbedeutende Dispute die nicht zur Handlung beitragen, und was das schlimmste ist: Null Humor! Kein Colonel der sich als "Fan von Jungfern und von Fahrten" outet oder "mal pinkeln muss" (O'Neill), kein cholerischer Chef-Wissenschaftler (McKay), kein Augenzwinkern. Bedeutet das im Umkehrschluß dass jüngere Zuschauer (auf die die Sendung angeblich zugeschnitten ist), keinen Sinn für Humor haben? Tsss..</p>http://www.anse.de/programming/delphi-genericsDelphi generics2010-03-25T22:26:03+01:00Ansgar Becker<p>Just found a wonderful and deep look into generics, anonymous routines and routine references <a href="ftp://ftp-developpez.com/sjrd/tutoriels/delphi-generics/delphi-generics.pdf">here</a> . Written by <a class="auteur" href="https://www.developpez.net/forums/member.php?u=40690">Sébastien Doeraene</a>.</p>
<p>Generics were introduced in Delphi 2009, and I'm a big fan of them, as they help me do less type casting on <a href="https://delphi.wikia.com/wiki/TObjectList_Class">TObjectList</a>'s items for example.</p>
<p>Want to know how sorting a TObjectList<TWhatever> works? Here's how it works:</p>
<pre>type
TDBObject = class
Name: String;
end;
TDBObjectList = TObjectList<TDBObject>;
TDBObjectComparer = class(TComparer<TDBObject>)
function Compare(const Left, Right: TDBObject): Integer; override;
end;
procedure TMainform.btnOkClick(Sender: TObject);
var
o: TDBObject;
begin
Result := TDBObjectList.Create(TDBObjectComparer.Create);
o := TDBObject.Create;
o.Name := 'foo';
Result.Add(o);
o := TDBObject.Create;
o.Name := 'bar';
Result.Add(o);
end;
function TDBObjectComparer.Compare(const Left, Right: TDBObject): Integer;
begin
Result := CompareText(Left.Name, Right.Name);
end;
</pre>http://www.anse.de/real-life/the-ravenThe raven2010-01-25T20:13:27+01:00Ansgar Becker<p>Letztens nachts bei Vollmond nach draußen geschaut und den Plastik-Raben zum Verjagen von Tauben auf der Garage im fahlen Mondlicht beinah für echt gehalten. Erinnerte mich etwas an die Musik auf <a href="https://de.wikipedia.org/wiki/Tales_of_Mystery_and_Imagination">Tales of Mystery and Imagination</a> von Alan Parsons bzw. <a href="https://en.wikipedia.org/wiki/The_Raven_%28The_Stranglers_album%29">The Raven</a> von den Stranglers.</p>
<p><img src="/images/raven.jpg" alt="Rabe bei Mondlicht" width="400" height="300" /></p>http://www.anse.de/zitate/when-god-created-the-worldWhen god created the world2009-11-22T11:16:43+01:00Ansgar Becker<blockquote>
In the beginning was the word. And the word was content-type: text/plain
</blockquote>
<p>Found somewhere as a forum signature.</p>http://www.anse.de/real-life/apfelkuchen-grossmutters-artApfelkuchen Grossmutters Art2009-10-02T15:26:03+02:00Ansgar Becker<p>Kommentar meines 5-jährigen Sohnes: "köstlich!"</p>
<p><img src="/images/apfelkuchen.jpg" alt="Apfelkuchen" /></p>
<p><strong>Teig:</strong></p>
<ul>
<li>250g Butter</li>
<li>250g Zucker</li>
<li>5 Eier</li>
<li>1 Päckchen Vanillezucker</li>
<li>350g Mehl</li>
<li>1 Päckchen Backpulver</li>
<li>1kg Äpfel</li>
</ul>
<p>Äpfel schälen und in kleine Stücke schneiden. Die Butter schaumig rühren. Eier, Zucker und Vanillezucker dazugeben und gut verrühren. Dann Mehl mit Backpulver unterrühren. Die Apfelstücke unter den Teig heben.</p>
<p>Die Mischung auf ein eingefettetes Backblech oder auf Backpapier streichen und bei 200 bis 220° Celsius 30 Minuten lang backen.</p>
<p>Puderzucker mit Zitronensaft glatt rühren und auf den heissen Kuchen verteilen. Zitronensaft kann auch weggelassen werden, aber der Puderzucker sollte schon drüber.</p>http://www.anse.de/programming/typo3-exclude-rootline-menu-on-first-levTypo3, exclude rootline menu on first level pages2009-09-02T14:41:02+02:00Ansgar Becker<p>On the root or first level page you probably want to hide a so called breadcrumb menu, as it would be a single word, identically with the page title, looking like a repetition of the page title. All "deeper" page levels should indeed include the complete path.</p>
<p>There is a HMENU.minItems property which looked pretty like what I needed. But that created a dummy item with three dots for missing level items, not what I wanted. So, the trick is to use a conditional block, where the first one is executed on page level 0 and 1, and the second one for all deeper levels:</p>
<pre>[treeLevel = 0,1]<br /> # No breadcrumb on root or first level pages<br /> mainPage.10.marks {<br /> BREADCRUMB = TEXT<br /> BREADCRUMB.value =<br /> }<br />[else]<br /> mainPage.10.marks {<br /> BREADCRUMB = HMENU<br /> BREADCRUMB {<br /> wrap = <p>|</p><br /> special = rootline<br /> # No item at all for the root page, so we start at level 1<br /> special.range = 1|-1<br /> 1 = TMENU<br /> 1.NO = 1<br /> 1.NO.allWrap = | &nbsp;&raquo;&nbsp;<br /> 1.CUR = 1<br /> 1.CUR.doNotLinkIt = 1<br /> }<br /> }<br />[end]<br /><br /></pre>http://www.anse.de/programming/add-anchor-in-gettypolinkAdd anchor in getTypoLink2009-07-07T14:27:12+02:00Ansgar Becker<p>getTypoLink() doesn't allow you to pass an anchor parameter. So, in order to add an anchor to such a link you just have to add the anchor part to the id parameter:</p>
<p><code><code>$this->cObj->getTypoLink('Link Label', '123#myanchor');</code></code></p>
<p><code><code>$this->cObj-></code>pi_linkToPage(<code>'Link Label', '123#myanchor'</code>);</code></p>
<p><code><code>$this->cObj-></code>getTypoLink_URL('123#myanchor');</code></p>
<p>By the way, ever saw what the harmless function <code>class.tslib_content.php:typoLink() </code>does? Have a look just for fun, it's a 300 liner! Feels like Typo3 has a damned considerable amount of workarounds for various special cases and requirements.</p>http://www.anse.de/programming/virtualtree-bugtrackerVirtualTree Bugtracker2009-06-13T21:40:44+02:00Ansgar Becker<p>Mike has just set up a <a href="https://code.google.com/p/virtual-treeview/issues/list">bugtracker</a> at Google Code for his popular <a href="https://www.soft-gems.net/index.php?option=com_content&task=view&id=12&Itemid=33">VirtualTree component</a> for Delphi. So, finally, all interested developers can actively participate in enhancing and extending this thing.</p>
<p>HeidiSQL makes extensive use of VirtualTree - as replacement for the normal TTree's and TListView's we had in old days. VirtualTree can display tree-like structures as well as lists, in all colors and flavours you can imagine:</p>
<p><img src="/images/vtree.png" alt="VirtualTree in HeidiSQL" /></p>
<p>Much more: it minimizes CPU and memory usage by strictly following the virtual paradigm (= just process visible nodes, nothing more, the rest is processed when the users scrolls to it). That means you can create millions of nodes in milliseconds. It has support for drag'n drop, custom cell editors (similar to plugins), images in column headers and cells, tons of useful events, and numerous other things you won't like to miss once you get used to them.</p>http://www.anse.de/zitate/an-asgard-spaceship-for-jackAn Asgard spaceship for Jack2009-06-08T18:58:56+02:00Ansgar Becker<p><span style="font-size: small;"><strong>Sam:</strong> "Die Asgard haben ein neues Schiff entwickelt Sir. Die <em>O'Neill</em>. "<br /> <strong>O'Neill:</strong> "Cool!"<br /> <strong>Sam:</strong> "...Wir mussten es sprengen."<br /> <strong>O'Neill:</strong> "Oh."</span></p>http://www.anse.de/heidisql/heidisql-com-recoveredheidisql.com recovered2009-05-20T22:01:39+02:00Ansgar Becker<p>Phew... fixed it by upgrading the old virtual server system to a newer, slightly more speedy one. Networking on the old virtual machine was still broken today, and <a href="https://www.parallels.com/">Parallels</a> seem to have bigger problems finding the error cause. So I decided not to sit and wait here and ordered the mentioned upgrade, which then was a blank new virtual machine with nearly the same specs but on a different hardware. They mounted the old virtual harddisk into the new system so I could easily copy old config files and programs from O:\ to C:\ . Nameservers updated to the new IP address and tataaa - at 8:30pm the first visitors since 36 hours were back.</p>
<p>Btw, having a downtime on that domain also meant there was a one-minute-waiter for <strong>each</strong> HeidiSQL user at startup on earth which had updatechecks switched on ... ehm :oops:</p>http://www.anse.de/heidisql/heidisql-com-brokenheidisql.com broken2009-05-19T20:22:25+02:00Ansgar Becker<p>The container of the virtual machine seems to be broken since 9:30 this morning and causes random network problems. Hopefully HostEurope can fix that soon, otherwise I have to reinstall the complete system.</p>http://www.anse.de/heidisql/heidisql-4-0-releasedHeidiSQL 4.0 released2009-04-30T17:16:35+02:00Ansgar Becker<p><a href="https://www.heidisql.com/forum/viewtopic.php?p=3192"><img title="HeidiSQL 4" src="https://www.heidisql.com/images/screenshots/database.png?2009-03-08" alt="HeidiSQL 4" width="453" height="295" /></a></p>http://www.anse.de/programming/get-number-of-enumerated-ordinal-elementGet number of enumerated, ordinal elements in a SET2009-04-19T17:07:16+02:00Ansgar BeckerImagine some ordinal type and a set enumeration of it in Delphi:
<!-- codeblock lang="Pascal" line="1" --><pre><code>type
TLocation = (locHere, locThere, locElsewhere);
TLocations = Set of TLocation;
...
var locs: TLocations;
...
begin
Include(locs, locHere);
end;
</code></pre><!-- /codeblock -->
Now, imagine you have several loops and points where any TLocation is added to or substracted from <em>locs</em>. At a later point in your application you need the number of elements in <em>locs</em>. Although that seems totally trivial that is not implemented in Delphi's compiler. The only SET related procedures in Delphi's compiler are <a href="https://www.delphibasics.co.uk/RTL.asp?Name=Include">Include</a>, <a href="https://www.delphibasics.co.uk/RTL.asp?Name=Exclude">Exclude</a> and <a href="https://www.delphibasics.co.uk/RTL.asp?Name=In">In</a> - there is no Count method for SETs. Well, you can help out and write your own one, as I discovered <a href="https://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_23124045.html">here</a>:
<!-- codeblock lang="Pascal" line="1" --><pre><code>function CountSetItems(SetValue: Integer): Byte;
var
Mask: Integer;
begin
Mask := $80000000;
Result := 0;
while Mask <> 0 do begin
if SetValue and Mask <> 0 then
inc(Result);
Mask := Mask shr 1;
end;
end;
</code></pre><!-- /codeblock -->http://www.anse.de/kids/janoschs-traumstunde-auf-dvdJanoschs Traumstunde auf DVD2009-04-18T19:48:49+02:00Ansgar BeckerMal was richtig gutes für Kinder die unbedingt fernsehen wollen: die alten Folgen von Janoschs Traumstunde von 1989 <a href="https://www.amazon.de/Janoschs-Traumstunde-Alle-Folgen-DVDs/dp/B001COC94S/">gibts jetzt auf DVD</a>. Die Geschichten sind (wie mans von früher noch kennt) sehr langsam erzählt und immer ein bissel schräg. Genial: der große dicke Waldbär, der die Ansagen macht und desöfteren den Faden verliert und anfängt zu philosophieren. Oder "Oh wie schön ist Panama", bei der der Tiger und der Bär sich auf die Suche nach Panama machen und nur zuhause ankommen weil sie im Kreis gelaufen sind.
Auch eine Empfehlung wert sind die <a href="https://www.amazon.de/Dr-Snuggles-Collectors-Box-DVDs/dp/B001EBBPYO">jetzt auf DVD erhältlichen</a> Folgen von Doctor Snuggles. Schräg-schöne, gewaltfreie Geschichten vom gutmütigen Maschinen-Erfinder Dr. Snuggles, seinem Dachs-Freund Dennis, der Maus Knabber, der "Wer-was-wo-Maschine" und nicht zuletzt der Rakete "Ploff-Ploff" mit der Snuggles desöfteren das Tee-trinkende Kamel im Regenbogen besucht (!)http://www.anse.de/heidisql/new-table-designerNew table designer2009-04-17T22:02:11+02:00Ansgar Becker<p>Table editing in HeidiSQL has various legacy stuff inside which is really old and needs some fresh new ideas. So I took <a href="https://rfe.heidisql.com/436">issue #436</a>, various hours to think and started to create a new table designer.</p>
<p>Ideas:</p>
<ol>
<li>the <em>table</em> <strong>tab</strong> should go away as we don't have only tables any longer, there are several other types of database objects added in recent MySQL versions, e.g. stored routines, views. So, a own tab only for tables tends to get inconsistent</li>
<li>same applies for the <em>Data</em> tab</li>
<li>like views or stored routines, add a new modal dialog which offers creating and editing tables. Which not only includes columns, but also indexes and advanced options like row format and such things.</li>
</ol>
<p>Long story short - here's the current status:</p>
<p>
<a href="/images/table_designer1.png">
<img src="/images/table_designer1.png" alt="Table designer 1" title="Basic" width="400" />
</a>
</p>
<p><a href="/images/table_designer2.png">
<img src="/images/table_designer2.png" alt="Table designer 2" title="Advanced options" width="400" />
</a>
</p>
<p>
<a href="/images/table_designer3.png">
<img src="/images/table_designer3.png" alt="Table designer 3" title="Indexes" width="400" />
</a>
</p>http://www.anse.de/zitate/star-warsStar Wars2009-04-06T22:24:37+02:00Ansgar BeckerO'Neill und Teal'c laden sich selbst bei Kollegin Carter zum Pizza essen ein, stehen vor der Tür und Carter macht auf:
<strong>O'Neill:</strong> Wir haben einen Film mitgebracht
<strong>Teal'c:</strong> "Star Wars."
<strong>O'Neill:</strong> Er hat ihn wie oft, acht ...?
<strong>Teal'c:</strong> Neun.
<strong>O'Neill:</strong> Neun mal gesehn. Und wenn Teal'c ihn super findet, muss er gut sein.
<strong>Carter:</strong> Sie haben noch nie "Star Wars" gesehn?
<strong>O'Neill:</strong> Naja, Sie wissen ja, ich und Science-Fiction. [Schweigen]http://www.anse.de/real-life/ixus-arrivedIxus arrived2009-01-26T21:49:52+01:00Ansgar Becker<p>Choosing a digicam can be a quite annoying and exhausting job if you really compare conscientiously. So I'm happy I found my new one - a Canon Ixus 85 IS. I knew that it has small dimensions but as I opened the package I couldn't believe <em>how</em> small it is. All photos you see on the internet do not reveal the real size as you can't compare it to other things on that photo. So here's my stubby fingers hand holding this technical wonder:</p>
<img src="/images/ixus85is.jpg" alt="Ixus 85 IS" />http://www.anse.de/zitate/toter-planetToter Planet2009-01-16T23:45:20+01:00Ansgar BeckerColonel Mitchel zu Teal'k auf einem leblosen Planeten der von einer Parasiten-Plage befallen wurde:
<cite>Man, hier ist ja weniger los als in einer Texas-Salatbar</cite>http://www.anse.de/real-life/lexisnexis-mitarbeiter-feedLexisNexis Mitarbeiter Feed2009-01-16T21:13:00+01:00Ansgar BeckerBodo ist ja seit kurzem nicht mehr mein Kollege, aber er hat sich trotzdem entschieden unsere gemeinsame Mitarbeiter-Blogmaschine weiter zu betreiben. Danke!!http://www.anse.de/programming/new-heidisql-release%3A-4-0-rc3New HeidiSQL release: 4.0 RC32009-01-15T19:27:43+01:00Ansgar Becker<p>Mainly a maintenance release but some nice enhancements in it:</p>
<ul>
<li>Legacy MDI (Multi Document Interface) has been removed completely</li>
<li>Use Ctrl+Tab and Shift+Ctrl+Tab for switching main tabs</li>
<li>Added quick connect sessions via drop down menu of connect button</li>
<li>Session background color</li>
<li>Date time editing fixed</li>
<li>Various bugfixes</li>
</ul>
<p>Download your <a href="https://www.heidisql.com/download.php">copy</a>.</p>
<p>Note that if you use the original 4.0 RC1 release your auto update mechanism won't update to this new release as in that older release it was broken (caused by the "M" in "r1901M").</p>
<p>In case you're wondering about the missing RC2 release: That version <a href="https://changes.heidisql.com/2205">was created</a> as Subversion tag but found as broken (XP theming was accidently disabled in a previous commit). So I decided to fix that first and - for consistency reasons - created <a href="https://changes.heidisql.com/2208">a new version tag</a>.</p>http://www.anse.de/programming/bolan-website-onlineBolan Website online2009-01-11T12:45:59+01:00Ansgar BeckerFinally done and uploaded to its correct place. A new website is born, selling home fashion and furniture by a flexible and experienced team of Bolan Home Fashion in Wettringen.http://www.anse.de/programming/basic-oracle-support-in-jheidiBasic Oracle support in jHeidi2008-12-30T10:30:08+01:00Ansgar Becker<img src="https://www.heidisql.com/jheidi/connect-oracle.png" alt="Oracle support in jHeidi" title="" />http://www.anse.de/programming/heidisql-4-0-rc1-releasedHeidiSQL 4.0 RC1 released2008-10-23T20:48:26+02:00Ansgar BeckerSome of the new features:
<ul>
<li>Completely rewritten user manager</li>
<li>Full Unicode support for international characters in grids, SQL queries, CSV import etc.</li>
<li>New grid component, including user friendly popup editors for blobs, date/time, set, enum columns. Grid cells have customizable colors, according to their data type.</li>
<li>A new view editor</li>
<li>Enhanced Vista style and a new, stylish iconset</li>
<li>Automatic update check</li>
<li>More speed in various places</li>
<li>much more ...</li>
</ul>
<a href="https://www.heidisql.com/images/screenshots/database.png"><img src="https://www.heidisql.com/images/screenshots/th_database.png" alt="HeidiSQL screenshot" title="" /></a>http://www.anse.de/real-life/mau-is-hereMau is here2008-10-14T19:15:12+02:00Ansgar Becker<img src="/images/mau.jpg" alt="Mau" title="Mau" />http://www.anse.de/programming/how-to-enable-unicode-in-virtualtree%27s-iHow to enable Unicode in VirtualTree's inplace editor2008-08-11T00:59:14+02:00Ansgar BeckerVirtualTree's inplace editor is the only thing which is (by default) not Unicode enabled in that package. Just found after having a Unicode enabled inplace editor for VirtualTree half implemented: If you have TNT Controls installed, you can activate "TNT support" in your [PathToVirtualTree]\Source\VTConfig.inc :
<!-- codeblock --><pre><code>{$define TntSupport}</code></pre><!-- /codeblock -->
http://www.anse.de/programming/ie6-reserved-word-functions-in-class-namIE6 reserved word "functions" in class name2008-08-08T15:52:45+02:00Ansgar Becker<p>Internet Explorer 6 has several excuses for not wanting to display certain DIVs or text in DIVs. Most of them arise from the internal <em>hasLayout</em> property which has to forced to -1 (on!) to unhide those HTML parts. I just came around another, very odd reason for why IE6 hides text in certain situations: CSS classnames which interfere with reserved words such as <em>functions</em>. Simple example:</p>
<code><div class="functions">bla blub</div></code>
<p>Just rename <em>functions</em> to whatever and you're done.</p>
http://www.anse.de/heidisql/coming-soonComing soon2008-05-06T01:09:16+02:00Ansgar Becker<p>Can't wait to present that new dialog with complex but intuitive logic to the public: The new user manager in HeidiSQL. 90% ready, just a few work-evenings.</p>
<p>This is how it looks and feels:</p>
<img src="/images/new_usermanager.png" alt="Usermanager" title="New usermanager in HeidiSQL" />http://www.anse.de/programming/the-mother-of-all-delphi-componentsThe mother of all Delphi components2008-04-24T21:49:03+02:00Ansgar Becker<p>Thank you, <a href="https://www.lischke-online.de/">Mike</a>, for <a href="https://www.soft-gems.net/index.php?option=com_content&task=view&id=12&Itemid=33">Virtual Treeview</a> . It's the most useful, powerful, fast, flexible, beautiful, multifunctional Delphi component I've ever seen.</p>
<p>Thank you, thank you, thank you!</p>
<img src="/images/VTGenericXP.jpg" alt="Virtual Treeview Screenshot" title="Virtual Treeview by Mike" />http://www.anse.de/funstuff/where-the-hell-gets-google-all-its-gmailWhere the hell gets Google all its Gmail hard drive space?2008-04-16T00:44:35+02:00Ansgar Becker<a href="https://www.geekculture.com/joyoftech/joyarchives/669.html"><img src="/images/googlehd.jpg" alt="" title="" /></a>http://www.anse.de/programming/ensuring-window-visibility-after-plugginEnsuring window visibility after plugging off a second monitor2008-04-08T20:50:06+02:00Ansgar BeckerI recently connected <a href="https://www.amazon.de/Toshiba-3000-Zoll-107-LCD-Fernseher/dp/B000SKKKHU">my new HD TV</a> to my notebook, to test the <a href="https://www.amazon.de/vergoldeten-Anschl%C3%BCssen-Verbindungskabel-PlayStation-TFT-Bildschirm/dp/B000NHLPKO/ref=sr_1_1?ie=UTF8&s=ce-de&qid=1207680798&sr=1-1">DVI-to-HDMI adapter I just bought</a> and various resolutions. I played a bit with different resolutions, started HeidiSQL, moved it to the TV which was used as second desktop. Then, after having plugging off the TV I started HeidiSQL again and saw - nothing! No window visible... HeidiSQL remembered its last window position and started in the area where the TV has previously provided its resolution. So, looked like a bug :)
Started Delphi and found the place where the main window restores its position (Top, Right) and size (Width, Height) from the last session. I discovered the global <em>Screen</em> object has some <em>Monitor*</em> properties - these are:
<pre>
Screen.Monitors
Screen.MonitorCount
Screen.MonitorFromPoint
Screen.MonitorFromRect
Screen.MonitorFromWindow</pre>
The most important property to fix the above described bug seemed to be <em>MonitorFromWindow</em> which tells the <em>TMonitor</em> object of the monitor on which the window is being displayed. The great thing about that is: If there is no second monitor plugged in, MonitorFromWindow returns the first TMonitor object available. So it always returns the best fitting monitor number for the given window handle, but never a no longer plugged monitor. Given this TMonitor object you can check if your window is placed within the monitor's resolution:
<pre>
var
Monitor: TMonitor;
const
MoveWinThreshold: Byte = 80;
begin
// ...
// 1. Some code to restore the last GUI position and dimension
// ...
// 2. Detect the relevant monitor object
Monitor := Screen.MonitorFromWindow(Self.Handle);
// 3. Now ensure the just positioned window is visible to the user
// 3.a. Set minimal visible width
if Left > Monitor.Left + Monitor.Width - MoveWinThreshold then
Left := Monitor.Left + Monitor.Width - MoveWinThreshold;
// 3.b. Set minimal visible height
if Top > Monitor.Top + Monitor.Height - MoveWinThreshold then
Top := Monitor.Top + Monitor.Height - MoveWinThreshold;
..
end
</pre>
If the window (that means: the upper left corner) is placed somewhere outside the monitor's resolution, the above code moves its Left + Top properties so there's a minimal rectangle of 80x80 pixels visible in the current monitor. Given this minimum rectangle, the user can now manually move and resize the window.
P.S.: Don't try to Free the TMonitor object afterwards which you got by Screen.MonitorFromWindow - that will lead to an access violation. Most probably MonitorFromWindow returns a reference to that object.http://www.anse.de/programming/how-to-solve-can%27t-open-activity-db---acHow to solve "can't open activity db - access is denied" for SVN commits2008-03-11T21:55:40+01:00Ansgar BeckerI somehow messed up the file privileges of a rsync'd SVN repository on a Windows server. Most probably it was rsync/cygwin which broke something here. After fiddling around with the folders and files I just zipped the complete directory of the repository, deleted the original files and then unzipped the zipfile again - works perfectly now!
A ZIP file cannot store given privileges of files and folder. But be aware that <strong>RAR</strong> can, so prefer <strong>ZIP</strong>!http://www.anse.de/heidisql/heidisql-now-with-silk-iconsHeidiSQL now with Silk icons2008-03-04T22:53:09+01:00Ansgar Becker<p>A sysiphus work for developers: Replace each of the 37 zillion icons in a complex application! HeidiSQL now uses the awesome <a href="https://www.famfamfam.com/lab/icons/silk/">Silk icon set by Mark James</a>.</p>
<p>Now it looks like this:</p>
<img src="/images/heidi_pngicons.png" alt="HeidiSQL with Silk icons" title="HeidiSQL with Silk icons" />
<p>Previously that looked like this:</p>
<img src="/images/heidi_oldicons.png" alt="HeidiSQL with old icons" title="HeidiSQL with old icons" />
http://www.anse.de/programming/typo3-3-5-running-with-php-5-xTypo3 3.5 running with PHP 5.x2008-02-22T15:20:42+01:00Ansgar BeckerThis took me at least one hour to find out: If you encounter either this error while accessing the backend at /typo3 :
<cite>Error in init.php: sitepath not specified correctly</cite>
or this error while accessing the frontend:
<cite>Cannot find configuration. This file is probably executed from the wrong location.</cite>
Just ensure the old PHP arrays like $HTTP_SERVER_VARS are registered. You can do so by adding this PHP flag to your .htaccess : <!-- codeblock lang="Apache" line="1" --><pre><code>php_flag register_long_arrays 1</code></pre><!-- /codeblock -->http://www.anse.de/funstuff/stargate-movie-ark-of-truthStargate Movie "Ark of Truth"2008-01-27T18:51:23+01:00Ansgar BeckerRelease date: March 11 2008 for USA, unknown yet for Europe.
Cover: https://www.treknews.de/treknews/newspro-treknews/upload/newsbilder/stargatearktruthr1artpic.jpghttp://www.anse.de/funstuff/art-of-noiseArt of Noise2008-01-23T01:11:16+01:00Ansgar BeckerLetztens wieder entdeckt - immer noch fantastisch anzuhören: Paranoimia, Beatbox, Close (to the edit) etc. Mittlerweile gibt es scheinbar einige Remixes der Art of Noise Hits aus den 80ern, die ich bisher nie gehört habe. Und eine <a href="https://www.amazon.de/What-Have-You-Done-My/dp/B000FTCDQK/ref=sr_1_3?ie=UTF8&s=music&qid=1201047354&sr=1-3">4er CD mit dem Lebenswerk</a> der Avantgardler gibt es seit Ende 2006 - diese soll u.a. eine Menge unveröffentlichtes Material enthalten, und die seltene Originalversion von Beatbox.http://www.anse.de/programming/am-anfang-war-nikiAm Anfang war Niki2008-01-23T00:12:13+01:00Ansgar BeckerMeine ersten Gehversuche im Programmieren gehen zurück ins Jahr 1991, als ich ohne irgendwelche Vorkenntnisse in der 11. Schulklasse des <a href="https://www.ajg.eu/">Arnold-Janssen-Gymnasiums</a> für ein halbes Jahr das Fach Informatik wählte. Lern-Stoff war eine abgeschlossene Programmier-Umgebung, in der man mit einem stark abgespeckten Pascal den Roboter "Niki" über ein viereckiges Feld steuern musste. Soweit ich mich erinnern kann, waren die damaligen PCs ausgestattet mit einem 80-086 Prozessor (4,7 MHz), 2 x 5¼-Zoll-Diskettenlaufwerken, Hercules-Grafik und Bernstein-Monitor.
Vor kurzem fand ich die Niki-Software im Web wieder und sah mit Begeisterung, das es hier bereits eine Windows-Umsetzung gab: https://www.hupfeld-software.de/niki.php. Für alle Programmier-Anfänger heute noch wärmstens zu empfehlen