(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| case class Food(ingredients: Seq[String]) | |
| class Chef[Pizza <: Chef.Pizza] protected (ingredients: Seq[String]) { | |
| import Chef.Pizza._ | |
| def addCheese(cheeseType: String): Chef[Pizza with Cheese] = Chef(ingredients :+ cheeseType) | |
| def addTopping(toppingType: String): Chef[Pizza with Topping] = Chef(ingredients :+ toppingType) | |
| def addDough: Chef[Pizza with Dough] = Chef(ingredients :+ "dough") |
| # ======================================================== | |
| # Setup a Dumb AP, Wired backbone for OpenWRT / LEDE | |
| # ======================================================== | |
| # Set lan logical interface as bridge (to allow bridge multiple physical interfaces) | |
| uci set network.lan.type='bridge' | |
| # assign WAN physical interface to LAN (will be available as an additional LAN port now) | |
| uci set network.lan.ifname="$(uci get network.lan.ifname) $(uci get network.wan.ifname)" | |
| uci del network.wan.ifname | |
| # Remove wan logical interface, since we will not need it. | |
| uci del network.wan |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.