Skip to content

Instantly share code, notes, and snippets.

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 / 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))
@na-ka-na
na-ka-na / GroupPlusLayout.java
Created January 8, 2012 13:28
JGraph group + auto layout
package com.mxgraph.examples.swing;
import javax.swing.JFrame;
import com.mxgraph.layout.mxGraphLayout;
import com.mxgraph.layout.mxOrganicLayout;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;
@SuppressWarnings("serial")
@na-ka-na
na-ka-na / MemoizeTest.java
Created May 14, 2012 00:19
Memoize usage
import java.util.Random;
import java.util.concurrent.*;
import lombok.Memoize;
public class MemoizeTest {
@Memoize
public static int test(final int k){
System.out.println("test " + k);
return k+2;