Skip to content

Instantly share code, notes, and snippets.

View SerhiiKozachenko's full-sized avatar

Serhii Kozachenko SerhiiKozachenko

View GitHub Profile
@SerhiiKozachenko
SerhiiKozachenko / cachebuilder.clj
Created July 14, 2024 14:21 — forked from lnostdal/cachebuilder.clj
Guava: CacheBuilder / CacheLoader for compute cache type thing and similar
;; This stuff is pretty useful in many contexts.
...
(:import (com.google.common.cache CacheBuilder CacheLoader))
...
quantataraxia.core> (with (-> (CacheBuilder/newBuilder)
(.weakKeys)
(let [f (future
(try
(Thread/sleep 10000)
(catch Throwable e
(println e)
(println "isInterrupted:" (.isInterrupted (Thread/currentThread)))
(println "isAlive:" (.isAlive (Thread/currentThread)))
(println "interrupted:" (Thread/interrupted)))))]
(Thread/sleep 500)
(future-cancel f)
@SerhiiKozachenko
SerhiiKozachenko / async_&_transducers.clj
Created July 14, 2024 09:03 — forked from lnostdal/async_&_transducers.clj
how to use transducer with clojure.core.async
;; I keep forgetting how to do this stuff for some reason, so here goes:
(let [c (async/chan 1 (map #(* % 2)))]
(async/go
(loop []
(when-let [e (async/<! c)]
(println "async/go, e:" e)
(recur))))
(async/>!! c 1)
(async/>!! c 2))
@SerhiiKozachenko
SerhiiKozachenko / upmap.clj
Created July 13, 2024 16:58 — forked from lnostdal/upmap.clj
Clojure unordered concurrency test: MAP vs. PMAP vs. UPMAP
;; www.Quanto.ga
;;
;; cp/upmap is from https://github.com/TheClimateCorporation/claypoole
quantataraxia.core> (do
(println "MAP:")
(println (time (doall (map (fn [x] (Thread/sleep x) x)
(range 500 50 -9)))))
(println "PMAP:")
@SerhiiKozachenko
SerhiiKozachenko / fast_local_mutation.clj
Created July 13, 2024 16:58 — forked from lnostdal/fast_local_mutation.clj
Clojure: Performance of with-local-vars vs. atom vs. volatile vs. unsynchronized-mutable field
;; Performance of with-local-vars vs. atom vs. volatile vs. unsynchronized-mutable field.
(definterface IOObject
(setVal [new-val])
(getVal [])
(oswap [f])
(oswap [f x])
(oswap [f x y])
(oswap [f x y z]))
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
mkdir ~/local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/local
make install # ok, fine, this step probably takes more than 30 seconds...
curl https://www.npmjs.org/install.sh | sh

How to install MongoDB 2.0 on Mac OS X (>= Leopard)

Procedure

The whole install procedure is like the following.
You would have to do 7 steps.

  1. Download the latest tar file, and expand it.
  2. Move it to /usr/local/, and make a symbolic link to the folder.
  3. Add path to MongoDB binaries.
  4. Make an user that "mongod" runs on, and group that owns the user.
// suggested shell cmd line to run this:
//
// mongo --shell example2.js
//
// Note: the { out : … } parameter is for mongodb 1.8+
db.things.insert( { _id : 1, tags : ['dog', 'cat'] } );
db.things.insert( { _id : 2, tags : ['cat'] } );
db.things.insert( { _id : 3, tags : ['mouse', 'cat', 'dog'] } );
db.things.insert( { _id : 4, tags : [] } );