リビジョン | b5be57eaccb213e2474d9257a8b3add286c666e1 (tree) |
---|---|
日時 | 2020-03-22 22:29:21 |
作者 | Albert Mietus < albert AT mietus DOT nl > |
コミッター | Albert Mietus < albert AT mietus DOT nl > |
PubSub: upgrades demo-slides
@@ -13188,6 +13188,7 @@ | ||
13188 | 13188 | </style> |
13189 | 13189 | |
13190 | 13190 | <!-- Custom stylesheet, it must be in the same directory as the html file --> |
13191 | +<link rel="stylesheet" href="SwBMnl-slides.css"> | |
13191 | 13192 | <link rel="stylesheet" href="custom.css"> |
13192 | 13193 | |
13193 | 13194 | </head> |
@@ -13202,10 +13203,30 @@ | ||
13202 | 13203 | <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> |
13203 | 13204 | </div><div class="inner_cell"> |
13204 | 13205 | <div class="text_cell_render border-box-sizing rendered_html"> |
13205 | -<h1 id="Pub/Sub--workshop----Part-I"><strong>Pub</strong>/<em>Sub</em> workshop -- Part I<a class="anchor-link" href="#Pub/Sub--workshop----Part-I">¶</a></h1><p>Some demos in python</p> | |
13206 | +<h1 id="Pub/Sub--workshop-Demo"><strong>Pub</strong>/<em>Sub</em> workshop Demo<a class="anchor-link" href="#Pub/Sub--workshop-Demo">¶</a></h1><p><em>This notebook is part of my | |
13207 | +<a href="http://mess.softwarebetermaken.nl">MESS</a> | |
13208 | +<a href="http://mess.softwarebetermaken.nl/en/latest/SoftwareCompetence/DesignWorkShops/">Design Workshop</a> | |
13209 | +<a href="http://mess.softwarebetermaken.nl/en/latest/SoftwareCompetence/DesignWorkShops/PubSub/">PubSub</a></em> | |
13210 | +{<a href="http://mess.softwarebetermaken.nl/en/dev-designworkshop/SoftwareCompetence/DesignWorkShops/PubSub/index.html">DRAFT</a>}</p> | |
13211 | +<h2 id="A-complete-PubSub-demo-in-python">A complete PubSub demo in python<a class="anchor-link" href="#A-complete-PubSub-demo-in-python">¶</a></h2><p>For instruction to run, or see it as a slideshow, see: <a href="http://mess.softwarebetermaken.nl/en/latest/SoftwareCompetence/DesignWorkShops/PubSub/demo/index.html">http://mess.softwarebetermaken.nl/en/latest/SoftwareCompetence/DesignWorkShops/PubSub/demo/index.html</a> | |
13212 | +{<a href="http://mess.softwarebetermaken.nl/en/dev-designworkshop/SoftwareCompetence/DesignWorkShops/PubSub/demo/index.html">Draft</a>}</p> | |
13213 | +<hr> | |
13214 | +<p><strong>Notes</strong> <em>(in slides-mode):</em></p> | |
13215 | +<ul> | |
13216 | +<li>Use the <strong>spacebar</strong> to forward to the next slide <em>after</em> selecting (clicking) in this frame. </li> | |
13217 | +<li>Or, click the <strong>outer-edge</strong> to open in a new window/tab. And use <strong>'F'</strong> for full-window mode</li> | |
13218 | +</ul> | |
13219 | + | |
13220 | +</div> | |
13221 | +</div> | |
13222 | +</div></section><section> | |
13223 | +<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> | |
13224 | +</div><div class="inner_cell"> | |
13225 | +<div class="text_cell_render border-box-sizing rendered_html"> | |
13226 | +<h2 id="The-Demo">The Demo<a class="anchor-link" href="#The-Demo">¶</a></h2><p>Some demos in python</p> | |
13206 | 13227 | <ol> |
13207 | 13228 | <li>A complete implementation<ol> |
13208 | -<li>A <strong>Topic</strong>-based, OO-style class</li> | |
13229 | +<li>A <strong>Topic</strong> class</li> | |
13209 | 13230 | <li>With a subscribe and a publish method</li> |
13210 | 13231 | </ol> |
13211 | 13232 | </li> |
@@ -13215,25 +13236,19 @@ | ||
13215 | 13236 | </ul> |
13216 | 13237 | </li> |
13217 | 13238 | <li>Both in function-style and in OO-style<ul> |
13218 | -<li>And, with a mixture </li> | |
13239 | +<li>And, in the mixture </li> | |
13219 | 13240 | </ul> |
13220 | 13241 | </li> |
13221 | 13242 | </ol> |
13222 | 13243 | </li> |
13223 | -<li>And using it, by publishing <em>to all</em> <ol> | |
13244 | +<li><p>Use it, by publishing <em>to all</em></p> | |
13245 | +<ol> | |
13224 | 13246 | <li>Life, interactive; in IPython (& Jupyter) notebook</li> |
13225 | 13247 | <li><em>Revealjs</em> slides, generated from above</li> |
13226 | -<li>Both the notebook & slides are downloadable</li> | |
13227 | 13248 | </ol> |
13249 | +<p>Both, the notebook & slides are downloadable</p> | |
13228 | 13250 | </li> |
13229 | 13251 | </ol> |
13230 | -<hr> | |
13231 | -<p>Note: to <em>run</em> this yourself, Install:</p> | |
13232 | -<ul> | |
13233 | -<li>Jupiter (<a href="https://jupyter.readthedocs.io/en/latest/install.html#install">https://jupyter.readthedocs.io/en/latest/install.html#install</a>), via</li> | |
13234 | -<li>Anaconda (<a href="https://www.anaconda.com/distribution/">https://www.anaconda.com/distribution/</a>) </li> | |
13235 | -<li><strong>Here</strong> <a href="https://repo.anaconda.com/archive/Anaconda3-2020.02-Windows-x86_64.exe">Window 64</a></li> | |
13236 | -</ul> | |
13237 | 13252 | |
13238 | 13253 | </div> |
13239 | 13254 | </div> |
@@ -13243,7 +13258,7 @@ | ||
13243 | 13258 | <div class="text_cell_render border-box-sizing rendered_html"> |
13244 | 13259 | <h2 id="The-basics:-A-Topic-class">The basics: A Topic class<a class="anchor-link" href="#The-basics:-A-Topic-class">¶</a></h2><ul> |
13245 | 13260 | <li>A simple <code>Topic</code> class</li> |
13246 | -<li>And a trivial function which is subscribed</li> | |
13261 | +<li>And a trivial function that is use to subscribe</li> | |
13247 | 13262 | </ul> |
13248 | 13263 | |
13249 | 13264 | </div> |
@@ -13296,11 +13311,19 @@ | ||
13296 | 13311 | </div> |
13297 | 13312 | </div> |
13298 | 13313 | |
13314 | +</div> | |
13315 | +<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> | |
13316 | +</div><div class="inner_cell"> | |
13317 | +<div class="text_cell_render border-box-sizing rendered_html"> | |
13318 | +<p>Notes: You can ignore <code>Topic.__init__()</code> and <code>Topic.__str__()</code> for now</p> | |
13319 | + | |
13320 | +</div> | |
13321 | +</div> | |
13299 | 13322 | </div></section></section><section><section> |
13300 | 13323 | <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> |
13301 | 13324 | </div><div class="inner_cell"> |
13302 | 13325 | <div class="text_cell_render border-box-sizing rendered_html"> |
13303 | -<h1 id="Demo-1">Demo 1<a class="anchor-link" href="#Demo-1">¶</a></h1><ul> | |
13326 | +<h1 id="Demo-1:-Simple-use">Demo 1: Simple use<a class="anchor-link" href="#Demo-1:-Simple-use">¶</a></h1><ul> | |
13304 | 13327 | <li>Create a topic</li> |
13305 | 13328 | <li>Subscribe <code>demo</code></li> |
13306 | 13329 | <li>Publish a value</li> |
@@ -13357,7 +13380,7 @@ | ||
13357 | 13380 | |
13358 | 13381 | |
13359 | 13382 | <div class="output_subarea output_stream output_stdout output_text"> |
13360 | -<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X7f85ccbcc150>> has new value: HOI | |
13383 | +<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X192e8f50888>> has new value: HOI | |
13361 | 13384 | </pre> |
13362 | 13385 | </div> |
13363 | 13386 | </div> |
@@ -13365,11 +13388,20 @@ | ||
13365 | 13388 | </div> |
13366 | 13389 | </div> |
13367 | 13390 | |
13391 | +</div> | |
13392 | +<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> | |
13393 | +</div><div class="inner_cell"> | |
13394 | +<div class="text_cell_render border-box-sizing rendered_html"> | |
13395 | +<p><strong>Using</strong> a Topic is trivial:</p> | |
13396 | +<p>Once a topic is created and a <em>callback</em> is registerd, that function is called whenever a new value is pubished.</p> | |
13397 | + | |
13398 | +</div> | |
13399 | +</div> | |
13368 | 13400 | </div></section><section> |
13369 | 13401 | <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> |
13370 | 13402 | </div><div class="inner_cell"> |
13371 | 13403 | <div class="text_cell_render border-box-sizing rendered_html"> |
13372 | -<h2 id="This-pub/sub-is-smart">This pub/sub is <em>smart</em><a class="anchor-link" href="#This-pub/sub-is-smart">¶</a></h2><ul> | |
13404 | +<h2 id="1a:-This-pub/sub-is-smart">1a: This pub/sub is <em>smart</em><a class="anchor-link" href="#1a:-This-pub/sub-is-smart">¶</a></h2><ul> | |
13373 | 13405 | <li>It will <em>not</em> distribute the same value twice. </li> |
13374 | 13406 | <li>Unless it is asked to do so (<code>force</code>)</li> |
13375 | 13407 | </ul> |
@@ -13401,7 +13433,7 @@ | ||
13401 | 13433 | |
13402 | 13434 | |
13403 | 13435 | <div class="output_subarea output_stream output_stdout output_text"> |
13404 | -<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X7f85ccbcc150>> has new value: AGAIN | |
13436 | +<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X192e8f50888>> has new value: AGAIN | |
13405 | 13437 | </pre> |
13406 | 13438 | </div> |
13407 | 13439 | </div> |
@@ -13434,8 +13466,8 @@ | ||
13434 | 13466 | |
13435 | 13467 | |
13436 | 13468 | <div class="output_subarea output_stream output_stdout output_text"> |
13437 | -<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X7f85ccbcc150>> has new value: FORCE | |
13438 | -Demo:: Topic: <<Topic: 'demo 1' at 0X7f85ccbcc150>> has new value: FORCE | |
13469 | +<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X192e8f50888>> has new value: FORCE | |
13470 | +Demo:: Topic: <<Topic: 'demo 1' at 0X192e8f50888>> has new value: FORCE | |
13439 | 13471 | </pre> |
13440 | 13472 | </div> |
13441 | 13473 | </div> |
@@ -13468,8 +13500,80 @@ | ||
13468 | 13500 | |
13469 | 13501 | |
13470 | 13502 | <div class="output_subarea output_stream output_stdout output_text"> |
13471 | -<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X7f85ccbcc150>> has new value: SMART | |
13472 | -Demo:: Topic: <<Topic: 'demo 1' at 0X7f85ccbcc150>> has new value: SMART | |
13503 | +<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X192e8f50888>> has new value: SMART | |
13504 | +Demo:: Topic: <<Topic: 'demo 1' at 0X192e8f50888>> has new value: SMART | |
13505 | +</pre> | |
13506 | +</div> | |
13507 | +</div> | |
13508 | + | |
13509 | +</div> | |
13510 | +</div> | |
13511 | + | |
13512 | +</div> | |
13513 | +<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> | |
13514 | +</div><div class="inner_cell"> | |
13515 | +<div class="text_cell_render border-box-sizing rendered_html"> | |
13516 | +<h2 id="1b:-Even-more-smartness">1b: Even more smartness<a class="anchor-link" href="#1b:-Even-more-smartness">¶</a></h2><p>This <code>Topic</code> will not subscribe the same function again</p> | |
13517 | + | |
13518 | +</div> | |
13519 | +</div> | |
13520 | +</div> | |
13521 | +<div class="cell border-box-sizing code_cell rendered"> | |
13522 | +<div class="input"> | |
13523 | +<div class="prompt input_prompt">In [9]:</div> | |
13524 | +<div class="inner_cell"> | |
13525 | + <div class="input_area"> | |
13526 | +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">t1</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="s2">"I'm so smart"</span><span class="p">)</span> | |
13527 | +</pre></div> | |
13528 | + | |
13529 | + </div> | |
13530 | +</div> | |
13531 | +</div> | |
13532 | + | |
13533 | +<div class="output_wrapper"> | |
13534 | +<div class="output"> | |
13535 | + | |
13536 | + | |
13537 | +<div class="output_area"> | |
13538 | + | |
13539 | + <div class="prompt"></div> | |
13540 | + | |
13541 | + | |
13542 | +<div class="output_subarea output_stream output_stdout output_text"> | |
13543 | +<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X192e8f50888>> has new value: I'm so smart | |
13544 | +</pre> | |
13545 | +</div> | |
13546 | +</div> | |
13547 | + | |
13548 | +</div> | |
13549 | +</div> | |
13550 | + | |
13551 | +</div> | |
13552 | +<div class="cell border-box-sizing code_cell rendered"> | |
13553 | +<div class="input"> | |
13554 | +<div class="prompt input_prompt">In [10]:</div> | |
13555 | +<div class="inner_cell"> | |
13556 | + <div class="input_area"> | |
13557 | +<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># `demo` is already registered above</span> | |
13558 | +<span class="n">t1</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">demo</span><span class="p">)</span> <span class="c1"># will silently be ingnored</span> | |
13559 | +<span class="n">t1</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="s2">"As I call demo only once"</span><span class="p">)</span> | |
13560 | +</pre></div> | |
13561 | + | |
13562 | + </div> | |
13563 | +</div> | |
13564 | +</div> | |
13565 | + | |
13566 | +<div class="output_wrapper"> | |
13567 | +<div class="output"> | |
13568 | + | |
13569 | + | |
13570 | +<div class="output_area"> | |
13571 | + | |
13572 | + <div class="prompt"></div> | |
13573 | + | |
13574 | + | |
13575 | +<div class="output_subarea output_stream output_stdout output_text"> | |
13576 | +<pre>Demo:: Topic: <<Topic: 'demo 1' at 0X192e8f50888>> has new value: As I call demo only once | |
13473 | 13577 | </pre> |
13474 | 13578 | </div> |
13475 | 13579 | </div> |
@@ -13481,14 +13585,22 @@ | ||
13481 | 13585 | <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> |
13482 | 13586 | </div><div class="inner_cell"> |
13483 | 13587 | <div class="text_cell_render border-box-sizing rendered_html"> |
13484 | -<h1 id="Demo-2">Demo 2<a class="anchor-link" href="#Demo-2">¶</a></h1><p>Now with multiple (4) subscribers (on another topic)</p> | |
13588 | +<h1 id="Demo-2:-Multi-use">Demo 2: Multi-use<a class="anchor-link" href="#Demo-2:-Multi-use">¶</a></h1><p>Now with multiple subscribers</p> | |
13589 | +<ul> | |
13590 | +<li>We create (another) Topic: <code>t2</code></li> | |
13591 | +<li>And a handfull of (<em>again, trivial</em>) demo-callbacs</li> | |
13592 | +</ul> | |
13593 | +<p>And subscribe all <em>callbacks</em> to the same <code>t2</code> Topic ...</p> | |
13594 | +<p>Then, all are executed as when <code>publish()</code> is called (once).</p> | |
13595 | +<hr> | |
13596 | +<p><em>It is so easy :-)</em></p> | |
13485 | 13597 | |
13486 | 13598 | </div> |
13487 | 13599 | </div> |
13488 | 13600 | </div></section><section> |
13489 | 13601 | <div class="cell border-box-sizing code_cell rendered"> |
13490 | 13602 | <div class="input"> |
13491 | -<div class="prompt input_prompt">In [9]:</div> | |
13603 | +<div class="prompt input_prompt">In [11]:</div> | |
13492 | 13604 | <div class="inner_cell"> |
13493 | 13605 | <div class="input_area"> |
13494 | 13606 | <div class=" highlight hl-ipython3"><pre><span></span><span class="n">t2</span><span class="o">=</span> <span class="n">Topic</span><span class="p">(</span><span class="s2">"demo2"</span><span class="p">)</span> |
@@ -13501,7 +13613,7 @@ | ||
13501 | 13613 | </div> |
13502 | 13614 | <div class="cell border-box-sizing code_cell rendered"> |
13503 | 13615 | <div class="input"> |
13504 | -<div class="prompt input_prompt">In [10]:</div> | |
13616 | +<div class="prompt input_prompt">In [12]:</div> | |
13505 | 13617 | <div class="inner_cell"> |
13506 | 13618 | <div class="input_area"> |
13507 | 13619 | <div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">demo_2</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">topic</span><span class="p">):</span> |
@@ -13519,7 +13631,7 @@ | ||
13519 | 13631 | </div> |
13520 | 13632 | <div class="cell border-box-sizing code_cell rendered"> |
13521 | 13633 | <div class="input"> |
13522 | -<div class="prompt input_prompt">In [11]:</div> | |
13634 | +<div class="prompt input_prompt">In [13]:</div> | |
13523 | 13635 | <div class="inner_cell"> |
13524 | 13636 | <div class="input_area"> |
13525 | 13637 | <div class=" highlight hl-ipython3"><pre><span></span><span class="n">t2</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">demo</span><span class="p">)</span> |
@@ -13535,7 +13647,7 @@ | ||
13535 | 13647 | </div></section><section> |
13536 | 13648 | <div class="cell border-box-sizing code_cell rendered"> |
13537 | 13649 | <div class="input"> |
13538 | -<div class="prompt input_prompt">In [12]:</div> | |
13650 | +<div class="prompt input_prompt">In [14]:</div> | |
13539 | 13651 | <div class="inner_cell"> |
13540 | 13652 | <div class="input_area"> |
13541 | 13653 | <div class=" highlight hl-ipython3"><pre><span></span><span class="n">t2</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="s2">"ALL"</span><span class="p">)</span> |
@@ -13555,10 +13667,10 @@ | ||
13555 | 13667 | |
13556 | 13668 | |
13557 | 13669 | <div class="output_subarea output_stream output_stdout output_text"> |
13558 | -<pre>Demo:: Topic: <<Topic: 'demo2' at 0X7f85ccbcc350>> has new value: ALL | |
13559 | -Demo 2:: Topic: <<Topic: 'demo2' at 0X7f85ccbcc350>> has new value: ALL | |
13560 | -Demo 3:: Topic: <<Topic: 'demo2' at 0X7f85ccbcc350>> has new value: ALL | |
13561 | -Demo 4:: Topic: <<Topic: 'demo2' at 0X7f85ccbcc350>> has new value: ALL | |
13670 | +<pre>Demo:: Topic: <<Topic: 'demo2' at 0X192e8f50508>> has new value: ALL | |
13671 | +Demo 2:: Topic: <<Topic: 'demo2' at 0X192e8f50508>> has new value: ALL | |
13672 | +Demo 3:: Topic: <<Topic: 'demo2' at 0X192e8f50508>> has new value: ALL | |
13673 | +Demo 4:: Topic: <<Topic: 'demo2' at 0X192e8f50508>> has new value: ALL | |
13562 | 13674 | </pre> |
13563 | 13675 | </div> |
13564 | 13676 | </div> |
@@ -13566,15 +13678,69 @@ | ||
13566 | 13678 | </div> |
13567 | 13679 | </div> |
13568 | 13680 | |
13681 | +</div> | |
13682 | +<div class="cell border-box-sizing code_cell rendered"> | |
13683 | +<div class="input"> | |
13684 | +<div class="prompt input_prompt">In [15]:</div> | |
13685 | +<div class="inner_cell"> | |
13686 | + <div class="input_area"> | |
13687 | +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">t2</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="s2">"again"</span><span class="p">)</span> | |
13688 | +</pre></div> | |
13689 | + | |
13690 | + </div> | |
13691 | +</div> | |
13692 | +</div> | |
13693 | + | |
13694 | +<div class="output_wrapper"> | |
13695 | +<div class="output"> | |
13696 | + | |
13697 | + | |
13698 | +<div class="output_area"> | |
13699 | + | |
13700 | + <div class="prompt"></div> | |
13701 | + | |
13702 | + | |
13703 | +<div class="output_subarea output_stream output_stdout output_text"> | |
13704 | +<pre>Demo:: Topic: <<Topic: 'demo2' at 0X192e8f50508>> has new value: again | |
13705 | +Demo 2:: Topic: <<Topic: 'demo2' at 0X192e8f50508>> has new value: again | |
13706 | +Demo 3:: Topic: <<Topic: 'demo2' at 0X192e8f50508>> has new value: again | |
13707 | +Demo 4:: Topic: <<Topic: 'demo2' at 0X192e8f50508>> has new value: again | |
13708 | +</pre> | |
13709 | +</div> | |
13710 | +</div> | |
13711 | + | |
13712 | +</div> | |
13713 | +</div> | |
13714 | + | |
13715 | +</div> | |
13716 | +<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> | |
13717 | +</div><div class="inner_cell"> | |
13718 | +<div class="text_cell_render border-box-sizing rendered_html"> | |
13719 | +<p>Surely, we can add more <em>subscribers</em>, and <em>publish</em> more often ...</p> | |
13720 | + | |
13721 | +</div> | |
13722 | +</div> | |
13569 | 13723 | </div></section></section><section><section> |
13570 | 13724 | <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> |
13571 | 13725 | </div><div class="inner_cell"> |
13572 | 13726 | <div class="text_cell_render border-box-sizing rendered_html"> |
13573 | -<h1 id="Demo-3:-OO-subscribers">Demo 3: OO subscribers<a class="anchor-link" href="#Demo-3:-OO-subscribers">¶</a></h1><ul> | |
13574 | -<li>We can also subscribe a method of a class-instance<ul> | |
13575 | -<li>Python will automatically remember the object (self)</li> | |
13727 | +<h1 id="Demo-3:-OO-subscribers">Demo 3: OO subscribers<a class="anchor-link" href="#Demo-3:-OO-subscribers">¶</a></h1><p>You can also subscribe <em>methods</em>, when you prefer an OO style. | |
13728 | +This works the same as with functions: just register the method.</p> | |
13729 | +<ul> | |
13730 | +<li>We will define a class with a demo-callback</li> | |
13731 | +<li>And register it to a new Topic: <code>t3</code></li> | |
13576 | 13732 | </ul> |
13577 | -</li> | |
13733 | + | |
13734 | +</div> | |
13735 | +</div> | |
13736 | +</div> | |
13737 | +<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> | |
13738 | +</div><div class="inner_cell"> | |
13739 | +<div class="text_cell_render border-box-sizing rendered_html"> | |
13740 | +<hr> | |
13741 | +<p>Notes:</p> | |
13742 | +<ul> | |
13743 | +<li>Python will automatically remember the object (<code>self</code>)</li> | |
13578 | 13744 | <li>Here, we use a <em>trick</em> (<code>self._no</code>) to show the different instances</li> |
13579 | 13745 | </ul> |
13580 | 13746 |
@@ -13583,7 +13749,7 @@ | ||
13583 | 13749 | </div></section><section> |
13584 | 13750 | <div class="cell border-box-sizing code_cell rendered"> |
13585 | 13751 | <div class="input"> |
13586 | -<div class="prompt input_prompt">In [13]:</div> | |
13752 | +<div class="prompt input_prompt">In [16]:</div> | |
13587 | 13753 | <div class="inner_cell"> |
13588 | 13754 | <div class="input_area"> |
13589 | 13755 | <div class=" highlight hl-ipython3"><pre><span></span><span class="k">class</span> <span class="nc">Demo</span><span class="p">:</span> |
@@ -13608,7 +13774,7 @@ | ||
13608 | 13774 | </div></section><section> |
13609 | 13775 | <div class="cell border-box-sizing code_cell rendered"> |
13610 | 13776 | <div class="input"> |
13611 | -<div class="prompt input_prompt">In [14]:</div> | |
13777 | +<div class="prompt input_prompt">In [17]:</div> | |
13612 | 13778 | <div class="inner_cell"> |
13613 | 13779 | <div class="input_area"> |
13614 | 13780 | <div class=" highlight hl-ipython3"><pre><span></span><span class="n">o</span> <span class="o">=</span> <span class="n">Demo</span><span class="p">()</span> |
@@ -13621,7 +13787,7 @@ | ||
13621 | 13787 | </div> |
13622 | 13788 | <div class="cell border-box-sizing code_cell rendered"> |
13623 | 13789 | <div class="input"> |
13624 | -<div class="prompt input_prompt">In [15]:</div> | |
13790 | +<div class="prompt input_prompt">In [18]:</div> | |
13625 | 13791 | <div class="inner_cell"> |
13626 | 13792 | <div class="input_area"> |
13627 | 13793 | <div class=" highlight hl-ipython3"><pre><span></span><span class="n">t3</span> <span class="o">=</span> <span class="n">Topic</span><span class="p">(</span><span class="s2">"OO Demo"</span><span class="p">)</span> |
@@ -13634,7 +13800,7 @@ | ||
13634 | 13800 | </div> |
13635 | 13801 | <div class="cell border-box-sizing code_cell rendered"> |
13636 | 13802 | <div class="input"> |
13637 | -<div class="prompt input_prompt">In [16]:</div> | |
13803 | +<div class="prompt input_prompt">In [19]:</div> | |
13638 | 13804 | <div class="inner_cell"> |
13639 | 13805 | <div class="input_area"> |
13640 | 13806 | <div class=" highlight hl-ipython3"><pre><span></span><span class="n">t3</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">demo</span><span class="p">)</span> |
@@ -13647,7 +13813,7 @@ | ||
13647 | 13813 | </div></section><section> |
13648 | 13814 | <div class="cell border-box-sizing code_cell rendered"> |
13649 | 13815 | <div class="input"> |
13650 | -<div class="prompt input_prompt">In [17]:</div> | |
13816 | +<div class="prompt input_prompt">In [20]:</div> | |
13651 | 13817 | <div class="inner_cell"> |
13652 | 13818 | <div class="input_area"> |
13653 | 13819 | <div class=" highlight hl-ipython3"><pre><span></span><span class="n">t3</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="s2">"class"</span><span class="p">)</span> |
@@ -13667,7 +13833,7 @@ | ||
13667 | 13833 | |
13668 | 13834 | |
13669 | 13835 | <div class="output_subarea output_stream output_stdout output_text"> |
13670 | -<pre><<Demo: ._no=0 at 0X7f85ccc22d10>> got 'class' from topic <<Topic: 'OO Demo' at 0X7f85d06d6390>> | |
13836 | +<pre><<Demo: ._no=0 at 0X192e8e2b588>> got 'class' from topic <<Topic: 'OO Demo' at 0X192e8e39d88>> | |
13671 | 13837 | </pre> |
13672 | 13838 | </div> |
13673 | 13839 | </div> |
@@ -13679,17 +13845,29 @@ | ||
13679 | 13845 | <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> |
13680 | 13846 | </div><div class="inner_cell"> |
13681 | 13847 | <div class="text_cell_render border-box-sizing rendered_html"> |
13682 | -<h2 id="Mix-and-Match">Mix and Match<a class="anchor-link" href="#Mix-and-Match">¶</a></h2><ul> | |
13683 | -<li>As shown, it possible to mix classic functions and <em>objects</em></li> | |
13684 | -<li>Again we can subscribe multiple instances</li> | |
13848 | +<h1 id="Demo4:--Mix-and-Match">Demo4: Mix and Match<a class="anchor-link" href="#Demo4:--Mix-and-Match">¶</a></h1><p>You can mix-&-match all the several uses:</p> | |
13849 | +<ul> | |
13850 | +<li>Classic functions and <em>objects</em></li> | |
13851 | +<li>Register many callbacks<ul> | |
13852 | +<li>In this demo, we use a loop to quckly define many callback.</li> | |
13853 | +</ul> | |
13854 | +</li> | |
13855 | +<li>Subscribe after a publication </li> | |
13685 | 13856 | </ul> |
13686 | 13857 | |
13687 | 13858 | </div> |
13688 | 13859 | </div> |
13689 | 13860 | </div></section><section> |
13861 | +<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> | |
13862 | +</div><div class="inner_cell"> | |
13863 | +<div class="text_cell_render border-box-sizing rendered_html"> | |
13864 | +<h2 id="4.1-many-subscribers">4.1 many subscribers<a class="anchor-link" href="#4.1-many-subscribers">¶</a></h2> | |
13865 | +</div> | |
13866 | +</div> | |
13867 | +</div> | |
13690 | 13868 | <div class="cell border-box-sizing code_cell rendered"> |
13691 | 13869 | <div class="input"> |
13692 | -<div class="prompt input_prompt">In [18]:</div> | |
13870 | +<div class="prompt input_prompt">In [21]:</div> | |
13693 | 13871 | <div class="inner_cell"> |
13694 | 13872 | <div class="input_area"> |
13695 | 13873 | <div class=" highlight hl-ipython3"><pre><span></span><span class="n">t4</span> <span class="o">=</span> <span class="n">Topic</span><span class="p">(</span><span class="s2">"four-10-plys"</span><span class="p">)</span> |
@@ -13708,7 +13886,7 @@ | ||
13708 | 13886 | </div></section><section> |
13709 | 13887 | <div class="cell border-box-sizing code_cell rendered"> |
13710 | 13888 | <div class="input"> |
13711 | -<div class="prompt input_prompt">In [19]:</div> | |
13889 | +<div class="prompt input_prompt">In [22]:</div> | |
13712 | 13890 | <div class="inner_cell"> |
13713 | 13891 | <div class="input_area"> |
13714 | 13892 | <div class=" highlight hl-ipython3"><pre><span></span><span class="n">t4</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="s1">'Yes'</span><span class="p">)</span> |
@@ -13728,20 +13906,106 @@ | ||
13728 | 13906 | |
13729 | 13907 | |
13730 | 13908 | <div class="output_subarea output_stream output_stdout output_text"> |
13731 | -<pre>Demo:: Topic: <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> has new value: Yes | |
13732 | -<<Demo: ._no=1 at 0X7f85ccbe62d0>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13733 | -<<Demo: ._no=2 at 0X7f85ccbe6310>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13734 | -<<Demo: ._no=3 at 0X7f85ccbe6350>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13735 | -<<Demo: ._no=4 at 0X7f85ccbe6390>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13736 | -<<Demo: ._no=5 at 0X7f85ccbe6410>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13737 | -<<Demo: ._no=6 at 0X7f85ccbe6450>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13738 | -<<Demo: ._no=7 at 0X7f85ccbe6490>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13739 | -<<Demo: ._no=8 at 0X7f85ccbe64d0>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13740 | -<<Demo: ._no=9 at 0X7f85ccbe63d0>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13741 | -<<Demo: ._no=10 at 0X7f85ccbe6510>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> | |
13742 | -Demo 4:: Topic: <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> has new value: Yes | |
13743 | -Demo 3:: Topic: <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> has new value: Yes | |
13744 | -Demo 2:: Topic: <<Topic: 'four-10-plys' at 0X7f85ccbe6290>> has new value: Yes | |
13909 | +<pre>Demo:: Topic: <<Topic: 'four-10-plys' at 0X192e8f67308>> has new value: Yes | |
13910 | +<<Demo: ._no=1 at 0X192e8f67348>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13911 | +<<Demo: ._no=2 at 0X192e8f67388>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13912 | +<<Demo: ._no=3 at 0X192e8f673c8>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13913 | +<<Demo: ._no=4 at 0X192e8f67408>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13914 | +<<Demo: ._no=5 at 0X192e8f67488>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13915 | +<<Demo: ._no=6 at 0X192e8f674c8>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13916 | +<<Demo: ._no=7 at 0X192e8f67508>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13917 | +<<Demo: ._no=8 at 0X192e8f67548>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13918 | +<<Demo: ._no=9 at 0X192e8f67448>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13919 | +<<Demo: ._no=10 at 0X192e8f675c8>> got 'Yes' from topic <<Topic: 'four-10-plys' at 0X192e8f67308>> | |
13920 | +Demo 4:: Topic: <<Topic: 'four-10-plys' at 0X192e8f67308>> has new value: Yes | |
13921 | +Demo 3:: Topic: <<Topic: 'four-10-plys' at 0X192e8f67308>> has new value: Yes | |
13922 | +Demo 2:: Topic: <<Topic: 'four-10-plys' at 0X192e8f67308>> has new value: Yes | |
13923 | +</pre> | |
13924 | +</div> | |
13925 | +</div> | |
13926 | + | |
13927 | +</div> | |
13928 | +</div> | |
13929 | + | |
13930 | +</div></section><section> | |
13931 | +<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> | |
13932 | +</div><div class="inner_cell"> | |
13933 | +<div class="text_cell_render border-box-sizing rendered_html"> | |
13934 | +<h2 id="4.2-:-Subscribe-after-1st-publish">4.2 : Subscribe after 1st publish<a class="anchor-link" href="#4.2-:-Subscribe-after-1st-publish">¶</a></h2> | |
13935 | +</div> | |
13936 | +</div> | |
13937 | +</div> | |
13938 | +<div class="cell border-box-sizing code_cell rendered"> | |
13939 | +<div class="input"> | |
13940 | +<div class="prompt input_prompt">In [23]:</div> | |
13941 | +<div class="inner_cell"> | |
13942 | + <div class="input_area"> | |
13943 | +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">t42</span> <span class="o">=</span> <span class="n">Topic</span><span class="p">()</span> | |
13944 | +<span class="n">t42</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">demo</span><span class="p">)</span> | |
13945 | +<span class="n">t42</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="s2">"fist"</span><span class="p">)</span> | |
13946 | +</pre></div> | |
13947 | + | |
13948 | + </div> | |
13949 | +</div> | |
13950 | +</div> | |
13951 | + | |
13952 | +<div class="output_wrapper"> | |
13953 | +<div class="output"> | |
13954 | + | |
13955 | + | |
13956 | +<div class="output_area"> | |
13957 | + | |
13958 | + <div class="prompt"></div> | |
13959 | + | |
13960 | + | |
13961 | +<div class="output_subarea output_stream output_stdout output_text"> | |
13962 | +<pre>Demo:: Topic: <<Topic: '' at 0X192e8f5e248>> has new value: fist | |
13963 | +</pre> | |
13964 | +</div> | |
13965 | +</div> | |
13966 | + | |
13967 | +</div> | |
13968 | +</div> | |
13969 | + | |
13970 | +</div> | |
13971 | +<div class="cell border-box-sizing code_cell rendered"> | |
13972 | +<div class="input"> | |
13973 | +<div class="prompt input_prompt">In [24]:</div> | |
13974 | +<div class="inner_cell"> | |
13975 | + <div class="input_area"> | |
13976 | +<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Now add subscribe another callback</span> | |
13977 | +<span class="n">t42</span><span class="o">.</span> <span class="n">subscribe</span><span class="p">(</span><span class="n">demo_2</span><span class="p">)</span> | |
13978 | +</pre></div> | |
13979 | + | |
13980 | + </div> | |
13981 | +</div> | |
13982 | +</div> | |
13983 | + | |
13984 | +</div> | |
13985 | +<div class="cell border-box-sizing code_cell rendered"> | |
13986 | +<div class="input"> | |
13987 | +<div class="prompt input_prompt">In [25]:</div> | |
13988 | +<div class="inner_cell"> | |
13989 | + <div class="input_area"> | |
13990 | +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">t42</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="s2">"more and more"</span><span class="p">)</span> | |
13991 | +</pre></div> | |
13992 | + | |
13993 | + </div> | |
13994 | +</div> | |
13995 | +</div> | |
13996 | + | |
13997 | +<div class="output_wrapper"> | |
13998 | +<div class="output"> | |
13999 | + | |
14000 | + | |
14001 | +<div class="output_area"> | |
14002 | + | |
14003 | + <div class="prompt"></div> | |
14004 | + | |
14005 | + | |
14006 | +<div class="output_subarea output_stream output_stdout output_text"> | |
14007 | +<pre>Demo:: Topic: <<Topic: '' at 0X192e8f5e248>> has new value: more and more | |
14008 | +Demo 2:: Topic: <<Topic: '' at 0X192e8f5e248>> has new value: more and more | |
13745 | 14009 | </pre> |
13746 | 14010 | </div> |
13747 | 14011 | </div> |
@@ -13753,18 +14017,20 @@ | ||
13753 | 14017 | <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt"> |
13754 | 14018 | </div><div class="inner_cell"> |
13755 | 14019 | <div class="text_cell_render border-box-sizing rendered_html"> |
13756 | -<h1 id="That's-all-folks!">That's all folks!<a class="anchor-link" href="#That's-all-folks!">¶</a></h1><p><img src="https://upload.wikimedia.org/wikipedia/commons/e/ea/Thats_all_folks.svg" alt="From WikiMedia"></p> | |
14020 | +<p><img src="https://upload.wikimedia.org/wikipedia/commons/e/ea/Thats_all_folks.svg" alt="From WikiMedia"></p> | |
14021 | +<p>Back to the | |
14022 | +<a href="http://mess.softwarebetermaken.nl/en/latest/SoftwareCompetence/DesignWorkShops/PubSub/index.html">main presentation</a></p> | |
13757 | 14023 | |
13758 | 14024 | </div> |
13759 | 14025 | </div> |
13760 | 14026 | </div> |
13761 | 14027 | <div class="cell border-box-sizing code_cell rendered"> |
13762 | 14028 | <div class="input"> |
13763 | -<div class="prompt input_prompt">In [20]:</div> | |
14029 | +<div class="prompt input_prompt">In [26]:</div> | |
13764 | 14030 | <div class="inner_cell"> |
13765 | 14031 | <div class="input_area"> |
13766 | -<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span> | |
13767 | -<span class="nb">print</span><span class="p">(</span><span class="s2">"Done at:"</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">())</span> | |
14032 | +<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">datetime</span><span class="o">,</span> <span class="nn">pytz</span> | |
14033 | +<span class="nb">print</span><span class="p">(</span><span class="s2">"These slides are generated at:"</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">(</span><span class="n">pytz</span><span class="o">.</span><span class="n">timezone</span><span class="p">(</span><span class="s1">'Europe/Amsterdam'</span><span class="p">)))</span> | |
13768 | 14034 | <span class="c1">#EoF</span> |
13769 | 14035 | </pre></div> |
13770 | 14036 |
@@ -13782,7 +14048,7 @@ | ||
13782 | 14048 | |
13783 | 14049 | |
13784 | 14050 | <div class="output_subarea output_stream output_stdout output_text"> |
13785 | -<pre>Done at: 2020-03-21 20:28:52.647403 | |
14051 | +<pre>These slides are generated at: 2020-03-22 14:15:38.809070+01:00 | |
13786 | 14052 | </pre> |
13787 | 14053 | </div> |
13788 | 14054 | </div> |