<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on yet another blog</title>
    <link>https://blog.wormhole.eu/posts/</link>
    <description>Recent content in Posts on yet another blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-de</language>
    <lastBuildDate>Wed, 16 Apr 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.wormhole.eu/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>gitlab-ci</title>
      <link>https://blog.wormhole.eu/posts/2025-04-16-gitlabci/</link>
      <pubDate>Wed, 16 Apr 2025 00:00:00 +0000</pubDate>
      
      <guid>https://blog.wormhole.eu/posts/2025-04-16-gitlabci/</guid>
      
      <description>&lt;h1 id=&#34;gitlab-ci&#34;&gt;gitlab-ci&lt;/h1&gt;
&lt;p&gt;If this post is online, my new gitlab-ci pipeline is working. With podman instead of docker.&lt;/p&gt;
&lt;p&gt;Here I collect some of the settings/commands from setup (not complete, without guarantee)&lt;/p&gt;
&lt;p&gt;install gitlab runner:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl -L &amp;#34;https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh&amp;#34; | sudo bash
sudo apt install gitlab-runner
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;then register it:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gitlab-runner register --url &amp;lt;GITLAB_URL&amp;gt; --token &amp;lt;GITLAB_RUNNER_TOKEN&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;create the &lt;code&gt;GITLAB_RUNNER_TOKEN&lt;/code&gt; at &lt;code&gt;&amp;lt;GITLAB_URL&amp;gt;/admin/runners/new&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;configure the runner:
edit &lt;code&gt;/etc/gitlab-runner/config.toml&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[[runners]]
  [runners.docker]
    host = &amp;#34;unix:///run/user/996/podman/podman.sock&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then enable the podman socket on the host&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>kurzlist.de</title>
      <link>https://blog.wormhole.eu/posts/2023-05-20-kurzlist/</link>
      <pubDate>Fri, 20 May 2022 00:00:00 +0000</pubDate>
      
      <guid>https://blog.wormhole.eu/posts/2023-05-20-kurzlist/</guid>
      
      <description>&lt;p&gt;I&amp;rsquo;m trying to use my domain &lt;a href=&#34;https://kurzlist.de/&#34;&gt;kurzlist.de&lt;/a&gt; for something useful.&lt;/p&gt;
&lt;p&gt;As a start I collect useful links all around &lt;a href=&#34;https://kurzlist.de/posts/cpp/&#34;&gt;C++&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>same blog, different look</title>
      <link>https://blog.wormhole.eu/posts/2023-05-20-new-year-new-blog-software/</link>
      <pubDate>Fri, 20 May 2022 00:00:00 +0000</pubDate>
      
      <guid>https://blog.wormhole.eu/posts/2023-05-20-new-year-new-blog-software/</guid>
      
      <description>&lt;h1 id=&#34;relaunch-2023&#34;&gt;relaunch 2023&lt;/h1&gt;
&lt;p&gt;I switched the blog generator from &lt;a href=&#34;https://jekyllrb.com/&#34;&gt;jekyll&lt;/a&gt; to &lt;a href=&#34;https://gohugo.io&#34;&gt;hugo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With jekyll I had often the problem of outdated gem version, incompatible compiled-gems and even ruby updates.&lt;/p&gt;
&lt;p&gt;The installation of hugo is simple: install it &lt;code&gt;pacman -S hugo&lt;/code&gt; :)&lt;/p&gt;
&lt;p&gt;Both have a similar directory structure, both support markdown for posts/pages. And I don&amp;rsquo;t care if the config file is in toml or yaml or whatever.&lt;/p&gt;
&lt;p&gt;So lets try hugo, and maybe I&amp;rsquo;ll blog more frequently, I hope at least two posts per year are feasible 😜&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>libnetlink</title>
      <link>https://blog.wormhole.eu/posts/2021-10-30-libnetlink/</link>
      <pubDate>Sat, 30 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>https://blog.wormhole.eu/posts/2021-10-30-libnetlink/</guid>
      
      <description>&lt;p&gt;Recently I wanted to refactor several functions, each function opened the special linux file &lt;code&gt;/proc/net/route&lt;/code&gt;, searched for the passed interface-name and returned the queried value in human-readable format.&lt;/p&gt;
&lt;p&gt;the file looks like:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Iface	Destination	Gateway 	Flags	RefCnt	Use	Metric	Mask		MTU	Window	IRTT
enp4s0	00000000	0100A8C0	0003	0	0	1024	00000000	0	0	0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The old functions read the file line-by-line &amp;ldquo;parsed&amp;rdquo; each line with &lt;code&gt;sscanf&lt;/code&gt;, checked if the line is for the interface and returned the corresponding column.
The values of interest are &lt;code&gt;IFace&lt;/code&gt; (NIC interface name) &lt;code&gt;Gateway&lt;/code&gt;, and &lt;code&gt;Metric&lt;/code&gt;. In most of the code-path all functions were called one after the other with the same interface-name.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>almost always std::shared_ptr NOT!</title>
      <link>https://blog.wormhole.eu/posts/2020-04-16-almost-always-shared-ptr/</link>
      <pubDate>Thu, 16 Apr 2020 00:00:00 +0000</pubDate>
      
      <guid>https://blog.wormhole.eu/posts/2020-04-16-almost-always-shared-ptr/</guid>
      
      <description>&lt;p&gt;given the following example classes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Base&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;virtual&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;Base&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;D&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Base&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In good old legacy-code you had a function signature like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Base&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;base&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the modern times with &lt;code&gt;shared_ptr&lt;/code&gt; it will be this !?&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shared_ptr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Base&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ptr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ptr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;make_shared&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ptr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;in line 5 (the func-function call) the &lt;code&gt;ptr&lt;/code&gt; of type &lt;code&gt;std::shared_ptr&amp;lt;D&amp;gt;&lt;/code&gt; has to be converted into a &lt;code&gt;const std::shared_ptr&amp;lt;const Base&amp;gt;&amp;amp;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So the compiler creates a temporary &lt;code&gt;std::shared_ptr&amp;lt;const Base&amp;gt;&lt;/code&gt; object which binds to the &lt;code&gt;const std::shared_ptr&amp;lt;const Base&amp;gt;&amp;amp;&lt;/code&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>36c3 talks</title>
      <link>https://blog.wormhole.eu/posts/2020-01-03-36c3-talks/</link>
      <pubDate>Fri, 03 Jan 2020 00:00:00 +0000</pubDate>
      
      <guid>https://blog.wormhole.eu/posts/2020-01-03-36c3-talks/</guid>
      
      <description>&lt;p&gt;Auch letztes Jahr war auch auf dem Chaos Communication Congress (&lt;a href=&#34;https://events.ccc.de/2019/10/04/36c3-in-leipzig/&#34;&gt;36c3&lt;/a&gt;) in Leipzig. Es lohnt sich, auch im Nachhinein, die Vorträge anzugucken.&lt;/p&gt;
&lt;p&gt;Hier eine kleine Liste von Vorträge, die ich mir auf dem Congress angeschaut habe.&lt;/p&gt;
&lt;h2 id=&#34;day-1&#34;&gt;day 1&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SIM card technology from A-Z&lt;/li&gt;
&lt;li&gt;Ansible all the Things&lt;/li&gt;
&lt;li&gt;Refactoring qaul.net in Rust (Internet independent mesh communication App)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;day-2&#34;&gt;day 2&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Secret Truecrypt Audit from the BSI&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;day-3&#34;&gt;day 3&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;High-assurance crypto software&lt;/li&gt;
&lt;li&gt;CTF in a box&lt;/li&gt;
&lt;li&gt;X11 and Wayland: A tale of two implementations&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;day-4&#34;&gt;day 4&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Datacenter - was wir wissen sollten (und trotzdem oft nicht erfahren)&lt;/li&gt;
&lt;li&gt;Technische Kompetenz vermitteln - nur wie?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Alle aufgezeichneten Vorträge sind hier finden: &lt;a href=&#34;https://media.ccc.de/c/36c3&#34;&gt;https://media.ccc.de/c/36c3&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>A new blog</title>
      <link>https://blog.wormhole.eu/posts/2017-06-12-a-new-blog/</link>
      <pubDate>Mon, 12 Jun 2017 00:00:00 +0000</pubDate>
      
      <guid>https://blog.wormhole.eu/posts/2017-06-12-a-new-blog/</guid>
      
      <description>&lt;p&gt;So mal mein Versuch ein Blog zu betreiben. Ich hab keine Ahnung was hier so alles erscheinen wird, und auch wird es bestimmt keine regelmäßigen Blogposts geben. Soll (mir) ja schließlich auch Spaß machen.&lt;/p&gt;
&lt;p&gt;Und weil einsprachig jeder kann, lege ich mich erstmal noch nicht auf eine Sprache fest.&lt;/p&gt;
&lt;p&gt;Also viel Spaß und mal überraschen lassen wann der erste &amp;ldquo;richtige&amp;rdquo; Post veröffentlicht wird.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
