Skip to content

Instantly share code, notes, and snippets.

(ns a)
(use '[clojure.contrib.io :only (make-parents spit delete-file)])
(use '[clojure.contrib.shell :only (sh)])
(use '[clojure.contrib.str-utils :only (re-split str-join)])
(defn- convert-fn-meta-into-javadoc
[impl-ns prefix mname pclasses rclass is-static?]
(let [m (meta (resolve (symbol (str (str impl-ns) "/" prefix (str mname)))))
{:keys [file line doc]} m
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
(ns tt)
(defn deduct-money-from-accnt
[a1-ref a2-ref {:keys [ensure1 ensure2]}]
(dosync
(when ensure1 (ensure a1-ref))
(when ensure2 (ensure a2-ref))
(let [sum (- (+ @a1-ref @a2-ref) 200)]
(when (>= sum 0)
(dotimes [_ 10]
(let [a (ref -100)
f1 (future (dosync (println "Trying T1")
(if (= @a 10)
(ref-set a @a)
(do (Thread/sleep 4000)
(println "Done T1")))))
_ (Thread/sleep 1000)
f2 (future (dosync (println "Trying T2")
(ref-set a 15)))]
(defn with-login-check
[handler]
(fn [request]
(if (logged-in? request)
(handler request)
{:status 403
:headers {"Content-Type" "text/xml"}
:body "<forbidden/>"})))
(defn create-routes []
@na-ka-na
na-ka-na / sync.clj
Created November 14, 2010 02:36
do sync clock using atoms
(ns a)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn clj-mk-ref
[data]
(ref {:version 0
:data data}))
(defn clj-sync-write
@na-ka-na
na-ka-na / HN.js
Created January 17, 2011 00:54
Hacker News Javascript program which generates the website
var start = new Date();
var data = eval('(' +
"[[\"1.\",\"2107773\",\"\\\"http:\\/\\/www.crunchgear.com\\/2011\\/01\\/15\\/a-brief-explanation-of-why-minecraft-matters\\/\\\"\",\"Why Minecraft Matters\",\" (crunchgear.com) \",\"50\",\"solipsist\",\" 2 hours ago | \",\"17 comments\"],[\"2.\",\"2108021\",\"\\\"http:\\/\\/antimatter15.com\\/wp\\/2011\\/01\\/the-ambiguity-of-open-and-vp8-vs-h-264\\/\\\"\",\"The Ambiguity of Open and H.264 vs. VP8\",\" (antimatter15.com) \",\"17\",\"antimatter15\",\" 1 hour ago | \",\"discuss\"],[\"3.\",\"2107618\",\"\\\"http:\\/\\/www.jamesmolloy.co.uk\\/tutorial_html\\/index.html\\\"\",\"Roll your own toy UNIX-clone OS\",\" (jamesmolloy.co.uk) \",\"57\",\"Rusky\",\" 4 hours ago | \",\"1 comment\"],[\"4.\",\"2108034\",\"\\\"http:\\/\\/nealpoole.com\\/blog\\/2011\\/01\\/http-response-splitting-on-reddit-com\\/\\\"\",\"HTTP Response Splitting Vulnerability on reddit.com\",\" (nealpoole.com) \",\"7\",\"there\",\" 1 hour ago | \",\"3 comments\"],[\"5.\",\"2107755\",\"\\\"http:\\/\
@na-ka-na
na-ka-na / peg.cpp
Created March 13, 2011 23:27
C++ PEG expression grammar using Boost::Spirit
/*
* expression_evaluator.cpp
*
* Created on: Mar 13, 2011
* Author: ka
*/
#define BOOST_SPIRIT_QI_DEBUG
#include <boost/config/warning_disable.hpp>
@na-ka-na
na-ka-na / ExprEval.java
Created April 12, 2011 15:11
Power of Reflection + Enum + Comparable to generate a simple expression evaluator
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
class AProp implements Comparable<AProp>{
private final int a;
public AProp(int a){
this.a = a;
}
@Override
public int compareTo(AProp other) {
(defn- print-map [m print-one w]
(#'clojure.core/print-sequential
"{"
(fn [e ^java.io.Writer w]
(do (print-one (key e) w) (.append w " ") (print-one (val e) w)))
", "
"}"
(seq m) w))