Skip to content

Instantly share code, notes, and snippets.

View leobm's full-sized avatar

Felix Wittmann leobm

  • Hamburg, Germany
View GitHub Profile
@leobm
leobm / gist:6061734
Created July 23, 2013 11:41
break point in clojure - A macro from 《the joy of clojure》 for debugging:
(defn contextual-eval [ctx expr]
(eval
`(let [~@(mapcat (fn [[k v]] [k `'~v]) ctx)]
~expr)))
(defmacro local-context []
(let [symbols (keys &env)]
(zipmap (map (fn [sym] `(quote ~sym)) symbols) symbols)))
(defn readr [prompt exit-code]
(let [input (clojure.main/repl-read prompt exit-code)]
(if (= input ::tl)
;; Simple solution for argument replacement in a string
(defn replace-templates3 [text m]
(clojure.string/replace text
#"\{\w+\}"
(fn [groups]
((->> groups
reverse
(drop 1)
Scenario: Repost a 3D Post
Given there is user A
And there is user B following user A
And there is user C following user B
And there is user D following user A and B
And user A posted a photo P1
And user A posted a 3D photo P2
When user B reposted P2 as P3
Then the feeds should be like:
| feed | of | count | contains | because |
;Print "Hi" every 2 seconds:
(defn t []
(go (loop [] (<! (timeout 2000)) (prn "hi") (recur))))
;or as a macro
@leobm
leobm / XTest.java
Created January 10, 2014 14:40 — forked from mariuszs/XTest.java
Solution without PowerMock
--
import ch.qos.logback.classic.*;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.Appender;
import org.junit.*;
import org.junit.runner.RunWith;
import org.mockito.*;
import org.mockito.runners.MockitoJUnitRunner;
-module(twitter_stream).
-author("[email protected]").
%% Depends on:
%% ibrowse for http
%% couchbeam for couchbeam_json_stream (a fork of damienkatz json_stream_parse)
%% mochiweb for mochiweb_util:urlencode
-export([start/0]).
@leobm
leobm / PlayAutowire.scala
Created May 20, 2016 18:41 — forked from mkotsbak/PlayAutowire.scala
Play server wiring to get Autowire to work with extra request information like IP-addresses and authentication. See how to use it here: https://gist.github.com/mkotsbak/122940aa003db9708093
package controllers
import play.api.http.{ContentTypes, ContentTypeOf}
import upickle.Js
import upickle.default._
import play.api.mvc._
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
In Application.scala:
object MyServer extends AutowirePlayServer[Api] {
override def routes(target: Api) = route[Api](target)
override def createImpl(autowireContext: AutowireContext): Api = new ServerImpl(autowireContext)
}
object Application extends Controller {
def api = PlayAutowire.api(MyServer)_
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form>
<!-- in firefox you can't choose a file diretory -->
<input type="file" id="file_input" directory webkitdirectory multiple />
@leobm
leobm / uri.js
Created February 14, 2017 11:04 — forked from jlong/uri.js
URI Parsing with Javascript
var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";
parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port; // => "3000"
parser.pathname; // => "/pathname/"
parser.search; // => "?search=test"
parser.hash; // => "#hash"
parser.host; // => "example.com:3000"