(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.
| (ns example.errors) | |
| (defn clean-address [params] | |
| "Ensure (params :address) is present" | |
| (if (empty? (params :address)) | |
| [nil "Please enter your address"] | |
| [params nil])) | |
| (defn clean-email [params] | |
| "Ensure (params :email) matches *@*.*" |
| (ns ratelimit | |
| "Implement rate limiting using a token bucket" | |
| (:require [clojure.core.async :as async :refer [<!! >! alts! go chan dropping-buffer close! timeout]])) | |
| (defprotocol TokenBucket | |
| (take-token [this]) | |
| (release [this])) | |
| (defn- ->period-ms [p] | |
| (if (keyword? p) |
| #### HA Proxy | |
| // PROXY BASED ON SUB-DOMAIN | |
| frontend public | |
| bind *:80 | |
| acl is_websocket hdr_end(host) -i ws.example.com | |
| use_backend ws if is_websocket | |
| default_backend www | |
| (ns om-transition.core | |
| (:require [om.core :as om :include-macros true] | |
| [om.dom :as dom :include-macros true])) | |
| (enable-console-print!) | |
| (def ctg (aget js/React "addons" "CSSTransitionGroup")) | |
| (def app-state (atom ["test"])) |
| {- | |
| As seen on: http://danielsz.github.io/2014/02/28/The-pleasantness-of-Om/ | |
| Additional feature: <SPACE> and Time advance | |
| Missing feature: Randomizer for List | |
| -} | |
| import Keyboard | |
| -- Model | |
| type Testimonial = { shopName:String, | |
| shopOwner:String, |
(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.
| import javafx.beans.property.SimpleBooleanProperty; | |
| import javafx.geometry.Pos; | |
| import javafx.scene.control.Button; | |
| import javafx.scene.control.Label; | |
| import javafx.scene.layout.HBox; | |
| public class ToggleSwitch extends HBox { | |
| private final Label label = new Label(); |
| (ns metosin.common.edn | |
| #+clj | |
| (:require [clj-time.format :as f]) | |
| #+cljs | |
| (:require [cljs-time.format :as f] | |
| cljs.reader) | |
| #+clj (:import [org.joda.time DateTime LocalDate])) | |
| ;; | |
| ;; #DateTime tagging |
| /* | |
| ##Device = Desktops | |
| ##Screen = 1281px to higher resolution desktops | |
| */ | |
| @media (min-width: 1281px) { | |
| /* CSS */ | |