<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://nextnet.top/feed.xml" rel="self" type="application/atom+xml" /><link href="https://nextnet.top/" rel="alternate" type="text/html" /><updated>2026-01-25T23:08:51+01:00</updated><id>https://nextnet.top/feed.xml</id><title type="html">Nicolas Herbaut, Associate Professor</title><subtitle>Research at the LaBRI, Teaching in Université de Bordeaux (IUT INFO)</subtitle><author><name>Nicolas Herbaut</name></author><entry><title type="html">Semantic matchmaking for a data-driver marketplace demo</title><link href="https://nextnet.top/content/semantic-matchmaking-marketplace" rel="alternate" type="text/html" title="Semantic matchmaking for a data-driver marketplace demo" /><published>2021-06-14T00:00:00+02:00</published><updated>2021-06-14T00:00:00+02:00</updated><id>https://nextnet.top/content/blog-post</id><content type="html" xml:base="https://nextnet.top/content/semantic-matchmaking-marketplace"><![CDATA[<p>extract from our recently <a href="https://nextnet.top/files/SAIaaS:%20A%20Blockchain-based%20solution%20for%20secure%20artificial%20intelligence%20as-a-Service.pdf">published paper</a> in DEEP-BDB-2021, for which we <a href="https://nextnet.top/semantic-configurator-mktplace/">publish a Demo</a>.</p>

<p>A client’s request contains requested <em>asset specifications</em> for data, algorithms and infrastructure on the blockchain system for service composition.
Since we aim to build a use case-agnostic system, we must support a wide and dynamic range of application domains.
To this end, we rely on an ontology-based resource retrieval and allocation system, which have already been proposed in the literature for cloud services provisioning \cite{ma2011ontology} or dataset \cite{kushiro2013method} discovery.</p>

<p>With a common ontology used to describe both client requirements and providers assets, matchmaking can be done on-chain, through the emission of a specific event targeted at providers that can fulfill client requests or off-chain, through the continuous monitoring of new clients’ requests publicly available on the blockchain.
Based on the asset ontology, each provider can analyze the <em>asset specifications</em> published by the client and know if it owns a matching asset, in which case it will take part in the auction phase through <em>asset bids</em></p>]]></content><author><name>Nicolas Herbaut</name></author><category term="semandic data" /><category term="AI" /><category term="research" /><category term="blockchain" /><summary type="html"><![CDATA[extract from our recently published paper in DEEP-BDB-2021, for which we publish a Demo.]]></summary></entry><entry><title type="html">using gandi livedns as a Dynamic DNS server</title><link href="https://nextnet.top/content/using-gandi-livedns-dynamic-dns-server" rel="alternate" type="text/html" title="using gandi livedns as a Dynamic DNS server" /><published>2018-02-02T00:00:00+01:00</published><updated>2018-02-02T00:00:00+01:00</updated><id>https://nextnet.top/content/blog-post</id><content type="html" xml:base="https://nextnet.top/content/using-gandi-livedns-dynamic-dns-server"><![CDATA[<p><strong>That’s still working in 2021</strong></p>

<p>To experiment with widely distributed systems, I administrate some rasberry pi zeros W scattered in France in residential homes. These systems are attached to residential gateways through Wifi with dynamic IP addresses and I needed a way to reliably connect to them to launch experiments.</p>

<p>In the nineties, I used a service called Dyndns, which offered a free service for updating subdomains with dynamic IPs. This free service no longer exists, so I started looking for an alternatives. Most of them were costly and required the installation of closed-sources update clients. Opensource alternatives such as hopper.pw required complicated installations and also a dedicated domain name.</p>

<p>Hopefully, I’ve been a loyal customer of Gandi for some years now, and thanks to the introduction their livedns API, it can be used to update my main dns zone through a REST API.</p>

<p><em>prerequisites</em>: curl jq (<code class="language-plaintext highlighter-rouge">apt-get install curl jq</code>)</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># retreive current external IP address from Akamai server</span>
<span class="nv">MY_IP</span><span class="o">=</span><span class="si">$(</span>curl <span class="nt">-s</span> http://whatismyip.akamai.com/<span class="si">)</span>  

<span class="c"># Gandi livedn API KEY</span>
<span class="nv">APIKEY</span><span class="o">=</span><span class="s2">"................."</span>

<span class="c"># Static Domain hosted at Gandi</span>
<span class="nv">DOMAIN</span><span class="o">=</span><span class="s2">"nextnet.top"</span>

<span class="c"># Dynamic Subdomain</span>
<span class="nv">SUBDOMAIN</span><span class="o">=</span><span class="s2">"pi3gre"</span>

<span class="c">#Get the current Zone for the provided domain</span>
<span class="nv">CURRENT_ZONE_HREF</span><span class="o">=</span><span class="si">$(</span>curl <span class="nt">-s</span> <span class="nt">-H</span> <span class="s2">"X-Api-Key: </span><span class="nv">$APIKEY</span><span class="s2">"</span> https://dns.api.gandi.net/api/v5/domains/<span class="nv">$DOMAIN</span> | jq <span class="nt">-r</span> <span class="s1">'.zone_records_href'</span><span class="si">)</span>

<span class="c"># Update the A reccord of the Dynamic Subdomain by PUTing on the current zone</span>
curl <span class="nt">-D-</span> <span class="nt">-X</span> PUT <span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
        <span class="nt">-H</span> <span class="s2">"X-Api-Key: </span><span class="nv">$APIKEY</span><span class="s2">"</span> <span class="se">\</span>
        <span class="nt">-d</span> <span class="s2">"{</span><span class="se">\"</span><span class="s2">rrset_name</span><span class="se">\"</span><span class="s2">: </span><span class="se">\"</span><span class="nv">$SUBDOMAIN</span><span class="se">\"</span><span class="s2">,
             </span><span class="se">\"</span><span class="s2">rrset_type</span><span class="se">\"</span><span class="s2">: </span><span class="se">\"</span><span class="s2">A</span><span class="se">\"</span><span class="s2">,
             </span><span class="se">\"</span><span class="s2">rrset_ttl</span><span class="se">\"</span><span class="s2">: 1200,
             </span><span class="se">\"</span><span class="s2">rrset_values</span><span class="se">\"</span><span class="s2">: [</span><span class="se">\"</span><span class="nv">$MY_IP</span><span class="se">\"</span><span class="s2">]}"</span> <span class="se">\</span>
        <span class="nv">$CURRENT_ZONE_HREF</span>/<span class="nv">$SUBDOMAIN</span>/A
</code></pre></div></div>]]></content><author><name>Nicolas Herbaut</name></author><category term="gandi" /><category term="dns" /><category term="dynamic" /><category term="engineering" /><summary type="html"><![CDATA[That’s still working in 2021]]></summary></entry></feed>