diff --git a/index.html b/index.html index cb62ad80603101b6bae2371c6584632f7c8d3544..40e7b1044cd4d5a2b08d3d94ff17fc0028682707 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> -<!-- 2019-11-15 ven. 00:43 --> +<!-- 2019-11-15 ven. 00:49 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Distributed experiments on Grid'5000 … and beyond !</title> @@ -235,59 +235,59 @@ for the JavaScript code in this tag. <h2>Table of Contents</h2> <div id="text-table-of-contents"> <ul> -<li><a href="#org7c6dca8">1. Foreword</a> +<li><a href="#orgc197571">1. Foreword</a> <ul> -<li><a href="#orgfa55291">1.1. Existing tools (Grid'5000)</a></li> -<li><a href="#org1eebfa2">1.2. EnOSlib quicktour</a></li> -<li><a href="#org44d3720">1.3. Contributing</a></li> +<li><a href="#org399397e">1.1. Existing tools (Grid'5000)</a></li> +<li><a href="#orgf995ddf">1.2. EnOSlib quicktour</a></li> +<li><a href="#orgf5544d0">1.3. Contributing</a></li> </ul> </li> -<li><a href="#orgb32dd69">2. Before you start</a></li> -<li><a href="#org418edac">3. Setup on Grid'5000</a></li> -<li><a href="#org34688fd">4. Your first experiment on Grid'5000</a> +<li><a href="#org8dc55b3">2. Before you start</a></li> +<li><a href="#orgffab29c">3. Setup on Grid'5000</a></li> +<li><a href="#org9dea8b8">4. Your first experiment on Grid'5000</a> <ul> -<li><a href="#orgbff500c">4.1. First iteration</a></li> -<li><a href="#org93feba2">4.2. Let's observe in real-time what is happening</a></li> -<li><a href="#org5969cc7">4.3. Discussion</a></li> -<li><a href="#orgffe7351">4.4. A better approach (maybe)</a></li> -<li><a href="#org01c3e55">4.5. Ninja level</a></li> -<li><a href="#org665bf5d">4.6. Some references</a></li> +<li><a href="#orga4680e7">4.1. First iteration</a></li> +<li><a href="#org7bbbd93">4.2. Let's observe in real-time what is happening</a></li> +<li><a href="#org632860b">4.3. Discussion</a></li> +<li><a href="#org6bf757c">4.4. A better approach (maybe)</a></li> +<li><a href="#orge191e09">4.5. Ninja level</a></li> +<li><a href="#orga4392ae">4.6. Some references</a></li> </ul> </li> -<li><a href="#org1ade801">5. Providers: to replicate your experiment</a> +<li><a href="#orgf6bc41c">5. Providers: to replicate your experiment</a> <ul> -<li><a href="#orgd1bbd81">5.1. iperf3 on virtual machines on Grid'5000</a></li> -<li><a href="#orge7818bf">5.2. References</a></li> +<li><a href="#orgd0bdda9">5.1. iperf3 on virtual machines on Grid'5000</a></li> +<li><a href="#org42da24f">5.2. References</a></li> </ul> </li> -<li><a href="#org8c24324">6. Variables in EnOSlib</a> +<li><a href="#org6ebd3ac">6. Variables in EnOSlib</a> <ul> -<li><a href="#orgea523bf">6.1. Discover the <code>run</code> command and its variants</a></li> -<li><a href="#orgb6c5d3f">6.2. Advanced usages</a></li> -<li><a href="#orge42ec34">6.3. Ninja level</a></li> -<li><a href="#org2e6c910">6.4. Putting all together</a></li> -<li><a href="#org8dfc294">6.5. Some references</a></li> +<li><a href="#org2cb798f">6.1. Discover the <code>run</code> command and its variants</a></li> +<li><a href="#org705ef7f">6.2. Advanced usages</a></li> +<li><a href="#org865ecfd">6.3. Ninja level</a></li> +<li><a href="#org2a504a3">6.4. Putting all together</a></li> +<li><a href="#orgc87fb34">6.5. Some references</a></li> </ul> </li> -<li><a href="#org2b167c4">7. Modules: for safer remote actions</a> +<li><a href="#org437f7f2">7. Modules: for safer remote actions</a> <ul> -<li><a href="#org55ab3aa">7.1. Idempotency</a></li> -<li><a href="#orgb37dd79">7.2. One reason why idempotency is important</a></li> -<li><a href="#org862dbf9">7.3. Idempotency trick</a></li> -<li><a href="#org26814bf">7.4. General idempotency</a></li> +<li><a href="#org7eb65cb">7.1. Idempotency</a></li> +<li><a href="#org90269e8">7.2. One reason why idempotency is important</a></li> +<li><a href="#orgda816b5">7.3. Idempotency trick</a></li> +<li><a href="#org790c89d">7.4. General idempotency</a></li> </ul> </li> -<li><a href="#orgbbecd99">8. Tasks: to organize your experiment</a></li> +<li><a href="#orgac1c744">8. Tasks: to organize your experiment</a></li> </ul> </div> </div> -<div id="outline-container-org7c6dca8" class="outline-2"> -<h2 id="org7c6dca8"><span class="section-number-2">1</span> Foreword</h2> +<div id="outline-container-orgc197571" class="outline-2"> +<h2 id="orgc197571"><span class="section-number-2">1</span> Foreword</h2> <div class="outline-text-2" id="text-1"> </div> -<div id="outline-container-orgfa55291" class="outline-3"> -<h3 id="orgfa55291"><span class="section-number-3">1.1</span> Existing tools (Grid'5000)</h3> +<div id="outline-container-org399397e" class="outline-3"> +<h3 id="org399397e"><span class="section-number-3">1.1</span> Existing tools (Grid'5000)</h3> <div class="outline-text-3" id="text-1-1"> <ul class="org-ul"> <li>EnOSlib falls under the <b><b>Experiment management tools</b></b> of the following @@ -301,8 +301,8 @@ list: </div> </div> -<div id="outline-container-org1eebfa2" class="outline-3"> -<h3 id="org1eebfa2"><span class="section-number-3">1.2</span> EnOSlib quicktour</h3> +<div id="outline-container-orgf995ddf" class="outline-3"> +<h3 id="orgf995ddf"><span class="section-number-3">1.2</span> EnOSlib quicktour</h3> <div class="outline-text-3" id="text-1-2"> <ul class="org-ul"> <li>Documentation: <a href="https://discovery.gitlabpages.inria.fr/enoslib/index.html">https://discovery.gitlabpages.inria.fr/enoslib/index.html</a></li> @@ -316,8 +316,8 @@ list: </div> </div> -<div id="outline-container-org44d3720" class="outline-3"> -<h3 id="org44d3720"><span class="section-number-3">1.3</span> Contributing</h3> +<div id="outline-container-orgf5544d0" class="outline-3"> +<h3 id="orgf5544d0"><span class="section-number-3">1.3</span> Contributing</h3> <div class="outline-text-3" id="text-1-3"> <p> <b>Before experimenting</b> @@ -353,8 +353,8 @@ list: </div> -<div id="outline-container-orgb32dd69" class="outline-2"> -<h2 id="orgb32dd69"><span class="section-number-2">2</span> Before you start</h2> +<div id="outline-container-org8dc55b3" class="outline-2"> +<h2 id="org8dc55b3"><span class="section-number-2">2</span> Before you start</h2> <div class="outline-text-2" id="text-2"> <div class="note"> <p> @@ -367,8 +367,8 @@ we'll prefer to use higher level tools for now. </div> </div> -<div id="outline-container-org418edac" class="outline-2"> -<h2 id="org418edac"><span class="section-number-2">3</span> Setup on Grid'5000</h2> +<div id="outline-container-orgffab29c" class="outline-2"> +<h2 id="orgffab29c"><span class="section-number-2">3</span> Setup on Grid'5000</h2> <div class="outline-text-2" id="text-3"> <p> Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy …) @@ -378,7 +378,6 @@ Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy …) <li>create a new directory to host all the scripts of the session</li> <li>bootstrap a new python3 virtualenv</li> <li>install EnOSlib and configure the access to the API</li> -<li>you'll also want to have ipython and ipdb installed</li> </ul> <div class="org-src-container"> @@ -386,7 +385,7 @@ Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy …) $<span style="color: #7590db;">frontend</span>: cd enoslib_seminar $<span style="color: #7590db;">frontend</span>: virtualenv --python=python3 venv $<span style="color: #7590db;">frontend</span>: source venv/bin/activate -$<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: pip install enoslib ipython ipdb +$<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: pip install enoslib $<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: echo <span style="color: #2d9574;">'</span> <span style="color: #2d9574;">verify_ssl: False</span> <span style="color: #2d9574;">'</span> > ~/.python-grid5000.yaml @@ -395,8 +394,8 @@ $<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</s </div> </div> -<div id="outline-container-org34688fd" class="outline-2"> -<h2 id="org34688fd"><span class="section-number-2">4</span> Your first experiment on Grid'5000</h2> +<div id="outline-container-org9dea8b8" class="outline-2"> +<h2 id="org9dea8b8"><span class="section-number-2">4</span> Your first experiment on Grid'5000</h2> <div class="outline-text-2" id="text-4"> <p> Let's experiment with <a href="https://iperf.fr/">iperf3</a>: a network bandwidth measuring tool. The goal is @@ -411,8 +410,8 @@ needed. </p> </div> -<div id="outline-container-orgbff500c" class="outline-3"> -<h3 id="orgbff500c"><span class="section-number-3">4.1</span> First iteration</h3> +<div id="outline-container-orga4680e7" class="outline-3"> +<h3 id="orga4680e7"><span class="section-number-3">4.1</span> First iteration</h3> <div class="outline-text-3" id="text-4-1"> <p> We consider the following script @@ -552,8 +551,8 @@ Can you adapt the script so that: </div> -<div id="outline-container-org93feba2" class="outline-3"> -<h3 id="org93feba2"><span class="section-number-3">4.2</span> Let's observe in real-time what is happening</h3> +<div id="outline-container-org7bbbd93" class="outline-3"> +<h3 id="org7bbbd93"><span class="section-number-3">4.2</span> Let's observe in real-time what is happening</h3> <div class="outline-text-3" id="text-4-2"> <div class="note"> <p> @@ -708,12 +707,12 @@ $<span style="color: #7590db;">yourmachine</span>: ssh -NL <span style="color: # <p> Part of the experimenter work also consists in analysing the data, write the -right request to monitor the traffic (check the Fig. <a href="#org2f44977">1</a>) You should +right request to monitor the traffic (check the Fig. <a href="#org03c3ad2">1</a>) You should be able to visualize such a thing (after a bit of point and clicks) </p> -<div id="org2f44977" class="figure"> +<div id="org03c3ad2" class="figure"> <p><a href="figs/iperf3.png" width="100%" style="border:1px solid black;"><img src="figs/iperf3.png" alt="iperf3.png" width="100%" style="border:1px solid black;" /></a> </p> <p><span class="figure-number">Figure 1: </span>iperf3 / monitoring</p> @@ -723,8 +722,8 @@ be able to visualize such a thing (after a bit of point and clicks) -<div id="outline-container-org5969cc7" class="outline-3"> -<h3 id="org5969cc7"><span class="section-number-3">4.3</span> Discussion</h3> +<div id="outline-container-org632860b" class="outline-3"> +<h3 id="org632860b"><span class="section-number-3">4.3</span> Discussion</h3> <div class="outline-text-3" id="text-4-3"> <p> So, far this seems (hopefully for you) very handy. But there might be some problems in our setup: @@ -736,11 +735,11 @@ network traffic (yes, this is negligible in our case)</li> </ul> <p> -Sometimes it's desirable to have the following setup (see Fig. <a href="#org5d5b796">2</a>). +Sometimes it's desirable to have the following setup (see Fig. <a href="#org30ba4f2">2</a>). </p> -<div id="org5d5b796" class="figure"> +<div id="org30ba4f2" class="figure"> <p><img src="figs/skydive_enoslib.png" alt="skydive_enoslib.png" /> </p> <p><span class="figure-number">Figure 2: </span>nodes are using two network interfaces. Monitoring traffic and benchmark traffic are separated.</p> @@ -748,8 +747,8 @@ Sometimes it's desirable to have the following setup (see Fig. <a href="#org5d5b </div> </div> -<div id="outline-container-orgffe7351" class="outline-3"> -<h3 id="orgffe7351"><span class="section-number-3">4.4</span> A better approach (maybe)</h3> +<div id="outline-container-org6bf757c" class="outline-3"> +<h3 id="org6bf757c"><span class="section-number-3">4.4</span> A better approach (maybe)</h3> <div class="outline-text-3" id="text-4-4"> <p> Access the full file: <a href="exercices/iperf3_better.py">exercices/iperf3_better.py</a> @@ -767,19 +766,19 @@ experiment due to this deployment phase. </div> </div> -<div id="outline-container-org01c3e55" class="outline-3"> -<h3 id="org01c3e55"><span class="section-number-3">4.5</span> Ninja level</h3> +<div id="outline-container-orge191e09" class="outline-3"> +<h3 id="orge191e09"><span class="section-number-3">4.5</span> Ninja level</h3> <div class="outline-text-3" id="text-4-5"> <p> Add the <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html#skydive">Skydive</a> service to your deployment. It should be accessible on the port <code>8082</code> of the analyzer node. You should -get something like Fig. <a href="#org5d5b796">2</a>. +get something like Fig. <a href="#org30ba4f2">2</a>. </p> </div> </div> -<div id="outline-container-org665bf5d" class="outline-3"> -<h3 id="org665bf5d"><span class="section-number-3">4.6</span> Some references</h3> +<div id="outline-container-orga4392ae" class="outline-3"> +<h3 id="orga4392ae"><span class="section-number-3">4.6</span> Some references</h3> <div class="outline-text-3" id="text-4-6"> <ul class="org-ul"> <li>Services: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html</a></li> @@ -788,8 +787,8 @@ get something like Fig. <a href="#org5d5b796">2</a>. </div> </div> -<div id="outline-container-org1ade801" class="outline-2"> -<h2 id="org1ade801"><span class="section-number-2">5</span> Providers: to replicate your experiment</h2> +<div id="outline-container-orgf6bc41c" class="outline-2"> +<h2 id="orgf6bc41c"><span class="section-number-2">5</span> Providers: to replicate your experiment</h2> <div class="outline-text-2" id="text-5"> <div class="note"> <p> @@ -811,8 +810,8 @@ We now have couple of providers that you may picked or mixed. </p> </div> -<div id="outline-container-orgd1bbd81" class="outline-3"> -<h3 id="orgd1bbd81"><span class="section-number-3">5.1</span> iperf3 on virtual machines on Grid'5000</h3> +<div id="outline-container-orgd0bdda9" class="outline-3"> +<h3 id="orgd0bdda9"><span class="section-number-3">5.1</span> iperf3 on virtual machines on Grid'5000</h3> <div class="outline-text-3" id="text-5-1"> <p> We'll adapt the initial iperf3 example to use virtual machines instead of @@ -894,8 +893,8 @@ a file. We just need to scp the file back to our local machine using the </div> -<div id="outline-container-orge7818bf" class="outline-3"> -<h3 id="orge7818bf"><span class="section-number-3">5.2</span> References</h3> +<div id="outline-container-org42da24f" class="outline-3"> +<h3 id="org42da24f"><span class="section-number-3">5.2</span> References</h3> <div class="outline-text-3" id="text-5-2"> <ul class="org-ul"> <li>Doc: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html</a></li> @@ -905,16 +904,16 @@ a file. We just need to scp the file back to our local machine using the </div> </div> -<div id="outline-container-org8c24324" class="outline-2"> -<h2 id="org8c24324"><span class="section-number-2">6</span> Variables in EnOSlib</h2> +<div id="outline-container-org6ebd3ac" class="outline-2"> +<h2 id="org6ebd3ac"><span class="section-number-2">6</span> Variables in EnOSlib</h2> <div class="outline-text-2" id="text-6"> <p> Learn how to get 2 nodes from Grid'5000 and start launching remote commands. </p> </div> -<div id="outline-container-orgea523bf" class="outline-3"> -<h3 id="orgea523bf"><span class="section-number-3">6.1</span> Discover the <code>run</code> command and its variants</h3> +<div id="outline-container-org2cb798f" class="outline-3"> +<h3 id="org2cb798f"><span class="section-number-3">6.1</span> Discover the <code>run</code> command and its variants</h3> <div class="outline-text-3" id="text-6-1"> <p> Before proceeding you can add this util function to your code. It is only @@ -968,8 +967,8 @@ And yes, it uses Ansible behind the scene. </div> </div> -<div id="outline-container-orgb6c5d3f" class="outline-3"> -<h3 id="orgb6c5d3f"><span class="section-number-3">6.2</span> Advanced usages</h3> +<div id="outline-container-org705ef7f" class="outline-3"> +<h3 id="org705ef7f"><span class="section-number-3">6.2</span> Advanced usages</h3> <div class="outline-text-3" id="text-6-2"> <div class="note"> <p> @@ -1026,8 +1025,8 @@ The following inject a global variable in the Ansible world </div> </div> -<div id="outline-container-orge42ec34" class="outline-3"> -<h3 id="orge42ec34"><span class="section-number-3">6.3</span> Ninja level</h3> +<div id="outline-container-org865ecfd" class="outline-3"> +<h3 id="org865ecfd"><span class="section-number-3">6.3</span> Ninja level</h3> <div class="outline-text-3" id="text-6-3"> <p> The following is valid and inject in the <code>client</code> host a specific variable to @@ -1072,8 +1071,8 @@ a bit more on how variables are handled in EnOSlib. </div> </div> -<div id="outline-container-org2e6c910" class="outline-3"> -<h3 id="org2e6c910"><span class="section-number-3">6.4</span> Putting all together</h3> +<div id="outline-container-org2a504a3" class="outline-3"> +<h3 id="org2a504a3"><span class="section-number-3">6.4</span> Putting all together</h3> <div class="outline-text-3" id="text-6-4"> <p> Access the full file: <a href="exercices/run.py">exercices/run.py</a> @@ -1081,8 +1080,8 @@ Access the full file: <a href="exercices/run.py">exercices/run.py</a> </div> </div> -<div id="outline-container-org8dfc294" class="outline-3"> -<h3 id="org8dfc294"><span class="section-number-3">6.5</span> Some references</h3> +<div id="outline-container-orgc87fb34" class="outline-3"> +<h3 id="orgc87fb34"><span class="section-number-3">6.5</span> Some references</h3> <div class="outline-text-3" id="text-6-5"> <ul class="org-ul"> <li>G5k configuration schema: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html#g5k-schema">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html#g5k-schema</a></li> @@ -1092,8 +1091,8 @@ Access the full file: <a href="exercices/run.py">exercices/run.py</a> </div> </div> -<div id="outline-container-org2b167c4" class="outline-2"> -<h2 id="org2b167c4"><span class="section-number-2">7</span> Modules: for safer remote actions</h2> +<div id="outline-container-org437f7f2" class="outline-2"> +<h2 id="org437f7f2"><span class="section-number-2">7</span> Modules: for safer remote actions</h2> <div class="outline-text-2" id="text-7"> <p> In this section we'll discover the idiomatic way of managing resources on the @@ -1103,8 +1102,8 @@ repo on Gitlab, a firewall rule … </div> -<div id="outline-container-org55ab3aa" class="outline-3"> -<h3 id="org55ab3aa"><span class="section-number-3">7.1</span> Idempotency</h3> +<div id="outline-container-org7eb65cb" class="outline-3"> +<h3 id="org7eb65cb"><span class="section-number-3">7.1</span> Idempotency</h3> <div class="outline-text-3" id="text-7-1"> <p> Let's assume you want to create a user (<code>foo</code>). With the <code>run_command</code> this would look like: @@ -1123,8 +1122,8 @@ the system, this will raise an error. </div> </div> -<div id="outline-container-orgb37dd79" class="outline-3"> -<h3 id="orgb37dd79"><span class="section-number-3">7.2</span> One reason why idempotency is important</h3> +<div id="outline-container-org90269e8" class="outline-3"> +<h3 id="org90269e8"><span class="section-number-3">7.2</span> One reason why idempotency is important</h3> <div class="outline-text-3" id="text-7-2"> <p> Let's consider the following snippet (mispelling the second command is intentional) @@ -1146,8 +1145,8 @@ But, you can't do that because <code>useradd</code> isn't idempotent. </div> </div> -<div id="outline-container-org862dbf9" class="outline-3"> -<h3 id="org862dbf9"><span class="section-number-3">7.3</span> Idempotency trick</h3> +<div id="outline-container-orgda816b5" class="outline-3"> +<h3 id="orgda816b5"><span class="section-number-3">7.3</span> Idempotency trick</h3> <div class="outline-text-3" id="text-7-3"> <p> One easy solution is to protect your call to non idempotent commands with @@ -1175,8 +1174,8 @@ run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">" </div> </div> -<div id="outline-container-org26814bf" class="outline-3"> -<h3 id="org26814bf"><span class="section-number-3">7.4</span> General idempotency</h3> +<div id="outline-container-org790c89d" class="outline-3"> +<h3 id="org790c89d"><span class="section-number-3">7.4</span> General idempotency</h3> <div class="outline-text-3" id="text-7-4"> <p> The idiomatic solution is to use modules (inherited from the Ansible @@ -1219,8 +1218,8 @@ If you can't find what you want you must know that: </div> </div> -<div id="outline-container-orgbbecd99" class="outline-2"> -<h2 id="orgbbecd99"><span class="section-number-2">8</span> Tasks: to organize your experiment</h2> +<div id="outline-container-orgac1c744" class="outline-2"> +<h2 id="orgac1c744"><span class="section-number-2">8</span> Tasks: to organize your experiment</h2> <div class="outline-text-2" id="text-8"> <p> To discover the Task API, head to <a href="https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html">https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html</a>. @@ -1274,7 +1273,7 @@ myperf vm5k </div> <div id="postamble" class="status"> <p class="author">Author: Matthieu Simonin</p> -<p class="date">Created: 2019-11-15 ven. 00:43</p> +<p class="date">Created: 2019-11-15 ven. 00:49</p> <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p> </div> </body> diff --git a/index.org b/index.org index a20015f5f9077accd596b51c5b4d853642a37acf..979e341f3e7b7f05037727f73dc521e73e9dbcb7 100644 --- a/index.org +++ b/index.org @@ -68,14 +68,13 @@ Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy ...) - create a new directory to host all the scripts of the session - bootstrap a new python3 virtualenv - install {{{enoslib}}} and configure the access to the API -- you'll also want to have ipython and ipdb installed #+BEGIN_SRC bash :noeval $frontend: mkdir enoslib_seminar $frontend: cd enoslib_seminar $frontend: virtualenv --python=python3 venv $frontend: source venv/bin/activate -$frontend(venv): pip install enoslib ipython ipdb +$frontend(venv): pip install enoslib $frontend(venv): echo ' verify_ssl: False ' > ~/.python-grid5000.yaml diff --git a/timeline.css b/timeline.css index d0a3b334c2c243bdf639638447319ec55ce84c77..268b0deaebe45d42a32888682272253296930629 100644 --- a/timeline.css +++ b/timeline.css @@ -972,7 +972,7 @@ pre.src-makefile:before { .note { padding-left: 2em; - /* border-left: 3px solid #b58900; */ + border: 1px dashed #00f; position: relative; } .note:before { @@ -1013,7 +1013,7 @@ pre.src-makefile:before { .question { padding-left: 2em; - /* border-left: 3px solid #b58900; */ + border: 1px dashed #0f0; position: relative; } .question:before {