<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>dracoblue.net</title>
    <link>https://dracoblue.net</link>
    <description>RSS feed for dracoblue.net</description>
    <pubDate>Sun, 06 May 2018 17:23:00 +0200</pubDate>
    <item>
      <title>Shutdown gtat.org</title>
      <link>https://dracoblue.net/dev/shutdown-gtat-org/</link>
      <description>&lt;p&gt;In 2002 I started an online game (based on Grand Theft Auto III), which became
a successful multiplayer gamemode and finally transformed to a samp 
game mode in 2006 and is still alive and beeing played by thousands of users
every month.&lt;/p&gt;

&lt;p&gt;Now after 16 years it&amp;#39;s time to say goodbye. The site will shutdown on &lt;strong&gt;20th of may 2018&lt;/strong&gt;. All data will
be removed and destroyed.&lt;/p&gt;
</description>
      <pubDate>Sun, 06 May 2018 17:23:00 +0200</pubDate>
      <guid>https://dracoblue.net/dev/shutdown-gtat-org/</guid>
      <dc:date>2018-05-06T17:23:00+02:00</dc:date>
    </item>
    <item>
      <title>Use Environment Variables for php.ini Settings in Docker</title>
      <link>https://dracoblue.net/dev/use-environment-variables-for-php-ini-settings-in-docker/</link>
      <description>&lt;p&gt;If you use the official docker image for php and want to modify e.g. &lt;code&gt;max_post_body_size&lt;/code&gt;, you might come to the
conclusion that adding a custom &lt;code&gt;php.ini&lt;/code&gt; might be the only solution.&lt;/p&gt;

&lt;p&gt;In terms of the &lt;a href=&quot;https://12factor.net&quot;&gt;12factor app manifest&lt;/a&gt;, this is kind of disappointing, since they promote usage of environment variables
for deployment specific configuration.&lt;/p&gt;

&lt;p&gt;When trying to enable my php application to be configurable like this, I found multiple ways how to make this possible
and want to share those with you.&lt;/p&gt;
</description>
      <pubDate>Mon, 09 Oct 2017 01:05:00 +0200</pubDate>
      <guid>https://dracoblue.net/dev/use-environment-variables-for-php-ini-settings-in-docker/</guid>
      <dc:date>2017-10-09T01:05:00+02:00</dc:date>
    </item>
    <item>
      <title>Perf-Boost (+85%) for SF/Composer Projects in Docker</title>
      <link>https://dracoblue.net/dev/performance-boost-for-symfony-composer-projects-in-docker/</link>
      <description>&lt;p&gt;Today I was working on a php development environment using docker on MacOSX (you might run into the same problems on windows, too!). The
&lt;a href=&quot;https://docs.docker.com/docker-for-mac/osxfs/&quot;&gt;osxfs&lt;/a&gt;
in Docker for Mac is painfully slow and the company behind docker is
&lt;a href=&quot;https://docs.docker.com/docker-for-mac/osxfs/#performance-issues-solutions-and-roadmap&quot;&gt;actually aware&lt;/a&gt; of that. At
&lt;a href=&quot;https://github.com/docker/for-mac/issues/77&quot;&gt;#77&lt;/a&gt; they track the issue at docker-for-mac right now. At the time of writing the
ticket is still open.&lt;/p&gt;

&lt;p&gt;If you happen to use symfony as PHP framework or in particular composer as package manager for php projects, you end up
with a very big directory called &lt;code&gt;vendor&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In &lt;a href=&quot;https://symfony.com/doc/current/setup.html&quot;&gt;symfony standard edition&lt;/a&gt; I am counting 10259 files and folders.&lt;/p&gt;

&lt;p&gt;For this blog post I put a vanilla symfony 3.2.7 project at &lt;a href=&quot;https://github.com/DracoBlue/symfony-composer-docker-performance-test&quot;&gt;DracoBlue/symfony-composer-docker-performance-test&lt;/a&gt;.
With &lt;a href=&quot;https://github.com/DracoBlue/symfony-composer-docker-performance-test/commit/c2de8852064cb5f2d1bc7881a3a516bdf331a586&quot;&gt;this commit&lt;/a&gt;
I added a &lt;code&gt;docker-compose.yml&lt;/code&gt; and a &lt;code&gt;nginx.conf&lt;/code&gt; to run &lt;code&gt;app.php&lt;/code&gt; on &lt;code&gt;http://app.locahost.me:8080&lt;/code&gt; and
 &lt;code&gt;app_dev.php&lt;/code&gt; on &lt;code&gt;http://dev.locahost.me:8080&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you run a quick benchmark against app_dev.php:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;text language-text&quot; data-lang=&quot;text&quot;&gt;$ ab -n 1000 -c 16 http://dev.localtest.me:8080/
Concurrency Level:      16
Time taken for tests:   319.303 seconds
Complete requests:      1000
Failed requests:        0
Requests per second:    3.13 [#/sec] (mean)
Time per request:       5108.845 [ms] (mean)
Time per request:       319.303 [ms] (mean, across all concurrent requests)
Transfer rate:          131.33 [Kbytes/sec] received
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;you end up with response times for a vanilla symfony project of round about 319ms.&lt;/p&gt;

&lt;p&gt;The app.php:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;text language-text&quot; data-lang=&quot;text&quot;&gt;$ ab -n 1000 -c 16 http://app.localtest.me:8080/
Concurrency Level:      16
Time taken for tests:   86.140 seconds
Complete requests:      1000
Failed requests:        0
Requests per second:    11.61 [#/sec] (mean)
Time per request:       1378.234 [ms] (mean)
Time per request:       86.140 [ms] (mean, across all concurrent requests)
Transfer rate:          54.50 [Kbytes/sec] received
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;looks better (86ms), but is not very convenient for development.&lt;/p&gt;

&lt;p&gt;Let&amp;#39;s tune this with a simple trick down to 46ms (-85%) for app_dev.php and down to 9ms (-88%) for app.php.&lt;/p&gt;
</description>
      <pubDate>Fri, 07 Apr 2017 13:00:00 +0200</pubDate>
      <guid>https://dracoblue.net/dev/performance-boost-for-symfony-composer-projects-in-docker/</guid>
      <dc:date>2017-04-07T13:00:00+02:00</dc:date>
    </item>
    <item>
      <title>Hanging subrequests in Nginx</title>
      <link>https://dracoblue.net/dev/hanging-subrequests-in-nginx/</link>
      <description>&lt;p&gt;While I was working on &lt;a href=&quot;https://github.com/DracoBlue/lua-native-ssi-nginx&quot;&gt;lua-native-ssi-nginx&lt;/a&gt; (an opinionated lua
replacement of nginx&amp;#39;s ssi directive), I ran into the following issue:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;proxy_pass&lt;/code&gt; requests seemed to hang (or lock) as soon as the response was too big.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even with nginx in debug mode, I could only see this in the error.log:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;text language-text&quot; data-lang=&quot;text&quot;&gt;2016/10/08 10:47:19 [debug] 31895#0: *1337 http upstream request: &amp;quot;/sub-request?&amp;quot;
2016/10/08 10:47:19 [debug] 31895#0: *1337 http upstream dummy handler
2016/10/08 10:47:19 [debug] 31895#0: *1337 http upstream request: &amp;quot;/sub-request?&amp;quot;
2016/10/08 10:47:19 [debug] 31895#0: *1337 http upstream dummy handler
2016/10/08 10:47:19 [debug] 31895#0: *1337 http upstream request: &amp;quot;/sub-request?&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sun, 09 Oct 2016 00:50:00 +0200</pubDate>
      <guid>https://dracoblue.net/dev/hanging-subrequests-in-nginx/</guid>
      <dc:date>2016-10-09T00:50:00+02:00</dc:date>
    </item>
    <item>
      <title>Building Microservices</title>
      <link>https://dracoblue.net/dev/building-microservices/</link>
      <description>&lt;p&gt;When Sam Newman&amp;#39;s book (280 pages) on microservices was released in the first month of january 2015, I was already
reading a preview edition for some weeks. Having the book as paper version next to my desk, let&amp;#39;s me open it once in a
while to find a good example for a concept or a piece of software for my microservices day work.&lt;/p&gt;

&lt;p&gt;The book is not about indepth knowledge about every part of hosting lots of little connected systems, but gives such an
awesome overview about all parts, that I can encourage everybody maintaining or creating systems and libraries to read
this book!&lt;/p&gt;
</description>
      <pubDate>Fri, 10 Jun 2016 15:10:00 +0200</pubDate>
      <guid>https://dracoblue.net/dev/building-microservices/</guid>
      <dc:date>2016-06-10T15:10:00+02:00</dc:date>
    </item>
    <item>
      <title>Spring Data JPA Reference</title>
      <link>https://dracoblue.net/dev/spring-data-jpa/</link>
      <description>&lt;p&gt;After reading &lt;a href=&quot;/dev/spring-boot/&quot;&gt;the spring boot reference&lt;/a&gt; in november, I wanted to
know more in depth knowledge of spring data. That&amp;#39;s why I read the official spring data jpa reference.&lt;/p&gt;

&lt;p&gt;Something new to me is, that you can use &lt;code&gt;_&lt;/code&gt; in spring data repository interface names to give a hint to the query
builder. So:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;java language-java&quot; data-lang=&quot;java&quot;&gt;&lt;span class=&quot;n&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;findByAddress_ZipCode&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ZipCode&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;zipCode&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;// resolves to address.zipCode or address.zip.code&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 31 Mar 2016 14:32:00 +0200</pubDate>
      <guid>https://dracoblue.net/dev/spring-data-jpa/</guid>
      <dc:date>2016-03-31T14:32:00+02:00</dc:date>
    </item>
    <item>
      <title>Fix DOM Exception 5 invalid character with atob</title>
      <link>https://dracoblue.net/dev/fix-dom-exception-5-invalid-character-with-atob/</link>
      <description>&lt;p&gt;When I was developing on &lt;a href=&quot;http://web.twtxt.org&quot;&gt;http://web.twtxt.org&lt;/a&gt; I ran into this mysterious javascript error:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;text language-text&quot; data-lang=&quot;text&quot;&gt;InvalidCharacterError: DOM Exception 5: An invalid or illegal character was specified, such as in an XML name.
atobbundle.js:245
(anonyme Funktion)bundle.js:245
emitbundle.js:1119
handlebundle.js:1673
onreadystatechangebundle.js:1465
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The source code in question took a base64 encoded content of the github api and converted it with &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/atob&quot;&gt;window.atob&lt;/a&gt;
into an utf8 string.&lt;/p&gt;

&lt;p&gt;This worked well except for safari on iOS!&lt;/p&gt;
</description>
      <pubDate>Mon, 21 Mar 2016 14:35:00 +0100</pubDate>
      <guid>https://dracoblue.net/dev/fix-dom-exception-5-invalid-character-with-atob/</guid>
      <dc:date>2016-03-21T14:35:00+01:00</dc:date>
    </item>
    <item>
      <title>Local Elasticsearch Cluster Status = RED</title>
      <link>https://dracoblue.net/dev/local-elasticsearch-cluster-status-red/</link>
      <description>&lt;p&gt;If you want to check the status of your local single node elasticsearch development server, you can query the cluster
stats endpoint at maybe &lt;a href=&quot;http://localhost:9200/_cluster/health?level=indices&quot;&gt;http://localhost:9200/_cluster/health?level=indices&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;json language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;quot;cluster_name&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;erstmal&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;quot;status&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;quot;number_of_nodes&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;quot;assigned_shards&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;quot;unassigned_shards&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;126&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If this status shows &amp;quot;red&amp;quot; and you can see lots of &lt;code&gt;unassigned_shards&lt;/code&gt; here, you have a problem.&lt;/p&gt;
</description>
      <pubDate>Mon, 01 Feb 2016 00:09:00 +0100</pubDate>
      <guid>https://dracoblue.net/dev/local-elasticsearch-cluster-status-red/</guid>
      <dc:date>2016-02-01T00:09:00+01:00</dc:date>
    </item>
    <item>
      <title>Uploading Snapshots and Releases to Maven Central with Travis</title>
      <link>https://dracoblue.net/dev/uploading-snapshots-and-releases-to-maven-central-with-travis/</link>
      <description>&lt;p&gt;When I was developing on the &lt;a href=&quot;https://github.com/DracoBlue/http-response-headers&quot;&gt;http-response-headers&lt;/a&gt;
open source library for spring boot, I was curious how difficult it would be to make this available
at maven central. And of course: everything should work automatically with &lt;a href=&quot;https://travis-ci.org&quot;&gt;travis&lt;/a&gt; ;).&lt;/p&gt;

&lt;p&gt;To make your jars available at &lt;a href=&quot;http://search.maven.org/&quot;&gt;http://search.maven.org/&lt;/a&gt;, you can submit your open source project to &amp;quot;Sonatype OSSRH&amp;quot;.&lt;/p&gt;

&lt;p&gt;Basically you have 3 steps (&lt;a href=&quot;http://central.sonatype.org/pages/ossrh-guide.html&quot;&gt;OSSRH Guide&lt;/a&gt;):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://issues.sonatype.org/secure/Signup!default.jspa&quot;&gt;Create a Jira Account at Sonatype&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&amp;amp;pid=10134&quot;&gt;Create a Project Ticket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Deploy to &lt;a href=&quot;https://oss.sonatype.org/content/repositories/snapshots&quot;&gt;https://oss.sonatype.org/content/repositories/snapshots&lt;/a&gt; or &lt;a href=&quot;https://oss.sonatype.org/service/local/staging/deploy/maven2/&quot;&gt;https://oss.sonatype.org/service/local/staging/deploy/maven2/&lt;/a&gt;.
Therefor you need to:

&lt;ul&gt;
&lt;li&gt;Modify your pom.xml&lt;/li&gt;
&lt;li&gt;Add build plugins for binaries, javadoc and sources jar files and gpg signing&lt;/li&gt;
&lt;li&gt;Create a gpg key&lt;/li&gt;
&lt;li&gt;Sign your builds&lt;/li&gt;
&lt;li&gt;Integrate this with travis secured environment variables&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The steps 1 and 2 took &lt;a href=&quot;https://issues.sonatype.org/browse/OSSRH-20218&quot;&gt;me some minutes&lt;/a&gt; and the response of the sonatype staff came
a workday later. Nice.&lt;/p&gt;

&lt;p&gt;Since I wanted to automate step 3, the following lines are more like a reminder for myself how I got this working. You
can follow the following steps to set this up for your self, too.&lt;/p&gt;
</description>
      <pubDate>Sun, 31 Jan 2016 11:55:00 +0100</pubDate>
      <guid>https://dracoblue.net/dev/uploading-snapshots-and-releases-to-maven-central-with-travis/</guid>
      <dc:date>2016-01-31T11:55:00+01:00</dc:date>
    </item>
    <item>
      <title>Versioning for Java Componentes and Libraries</title>
      <link>https://dracoblue.net/dev/versioning-for-java-components-and-libraries/</link>
      <description>&lt;p&gt;While reading in Chapter 13 &amp;quot;Managing Components and Dependencies&amp;quot; of &lt;a href=&quot;http://www.amazon.de/gp/product/0321601912/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;amp;camp=1638&amp;amp;creative=6742&amp;amp;creativeASIN=0321601912&amp;amp;linkCode=as2&amp;amp;tag=amazon-link-21&quot;&gt;Continous Delivery (July 2010, Addision Weslay)&lt;/a&gt;
I asked myself how would one implement this if you implement the &lt;code&gt;components&lt;/code&gt; (parts of the system, which change often) and &lt;code&gt;libraries&lt;/code&gt; (internal/external parts, which change very seldom) in your own project.&lt;/p&gt;

&lt;p&gt;A while back &lt;a href=&quot;https://github.com/sebastianbergmann/phpunit/blob/f634bc1e6c2809f2dbf60eb7e3f90f89a9183561/CONTRIBUTING.md#using-phpunit-from-a-git-checkout&quot;&gt;(1)&lt;/a&gt; for example contributing to PHPUnit was kinda tricky. You had to git clone the
main repository and 11 different component repositorys. If you wanted to change something
in these components, you could do that there. If you run continous integration, every change
to those components needed to be in git master of those components. But how does one do a release then? Lots of tooling and in the end the release version number was hardcoded  &lt;a href=&quot;https://github.com/sebastianbergmann/phpunit/blob/f634bc1e6c2809f2dbf60eb7e3f90f89a9183561/package.xml&quot;&gt;(2)&lt;/a&gt; and committed.&lt;/p&gt;

&lt;p&gt;I am pretty sure that you know of some java project with dependencies, which work in
a similar fashion.&lt;/p&gt;

&lt;p&gt;When discussing this with my co-workers at &lt;a href=&quot;https://exozet.com&quot;&gt;exozet&lt;/a&gt;, we have
been thinking how one approaches these concerns of lean development and safe releases
with Java and &lt;a href=&quot;https://maven.apache.org&quot;&gt;Maven&lt;/a&gt; (or gradle). Of course we are using
&lt;a href=&quot;http://semver.org&quot;&gt;SemVer 2.0&lt;/a&gt; as semantic versioning strategy. So I want to
present an approach, which I infered out of the books example and would like
to hear your opinion!&lt;/p&gt;
</description>
      <pubDate>Sat, 09 Jan 2016 15:35:00 +0100</pubDate>
      <guid>https://dracoblue.net/dev/versioning-for-java-components-and-libraries/</guid>
      <dc:date>2016-01-09T15:35:00+01:00</dc:date>
    </item>
    <dc:date>2018-05-06T17:23:00+02:00</dc:date>
  </channel>
</rss>