ZeroMQ 基础

ZeroMQ 基础#

如何解释 ZeroMQ?有些人从它所做的一切美妙的事情开始说起。它是强化版的套接字。它就像带路由的邮箱。它非常快!其他人则试图分享他们顿悟的时刻,那种 zap-pow-kaboom 般顿悟的范式转换时刻,当一切变得显而易见时。事情变得简单起来。复杂性消失了。它开阔了思维。还有些人通过比较来解释。它更小、更简单,但看起来依然熟悉。

import anywidget
import traitlets

class CounterWidget(anywidget.AnyWidget):
    _esm = """
    function render({ model, el }) {
      let button = document.createElement("button");
      button.innerHTML = `count is ${model.get("value")}`;
      button.addEventListener("click", () => {
        model.set("value", model.get("value") + 1);
        model.save_changes();
      });
      model.on("change:value", () => {
        button.innerHTML = `count is ${model.get("value")}`;
      });
      el.classList.add("counter-widget");
      el.appendChild(button);
    }
    export default { render };
    """
    _css = """
    .counter-widget button { color: white; font-size: 1.75rem; background-color: #ea580c; padding: 0.5rem 1rem; border: none; border-radius: 0.25rem; }
    .counter-widget button:hover { background-color: #9a3412; }
    """
    value = traitlets.Int(0).tag(sync=True)

w = CounterWidget(value=42)
w