Skip to content

Instantly share code, notes, and snippets.

@priyadarshan
priyadarshan / gist:67dca2c72068bf8bb744
Last active August 29, 2015 14:27 — forked from fukamachi/gist:2514290
Clack uploading sample
(import 'clack.request:make-request 'clack.request:body-parameter)
(clack:clackup
#'(lambda (env)
(format t "~S~%"
(body-parameter (make-request env)))
'(200
(:content-type "text/html")
("<form method='POST' enctype='multipart/form-data'><input type='file' name='pdf'><input type='submit'></form>"))))
@priyadarshan
priyadarshan / gist:dfa6eea8189083c52b4e
Last active August 29, 2015 14:27 — forked from fukamachi/gist:2514283
Clack uploading sample
(import 'clack.request:make-request 'clack.request:body-parameter)
(clack:clackup
#'(lambda (env)
(format t "~S~%"
(body-parameter (make-request env)))
'(200
(:content-type "text/html")
("<form method='POST' enctype='multipart/form-data'><input type='file' name='pdf'><input type='submit'></form>"))))
@priyadarshan
priyadarshan / gist:bba252c86420268c4f48
Last active August 29, 2015 14:27 — forked from fukamachi/gist:2050237
Find port number not in use
(defun port-available-p (port)
(handler-case (let ((socket (usocket:socket-listen "127.0.0.1" port :reuse-address t)))
(usocket:socket-close socket))
(usocket:address-in-use-error (e) (declare (ignore e)) nil)))
;; Find port number not in use from 50000 to 60000.
(loop for port from (+ 50000 (random 1000)) upto 60000
if (port-available-p port)
return port)
@priyadarshan
priyadarshan / gist:c9b5435276998fe1bd7d
Last active August 29, 2015 14:27 — forked from fukamachi/gist:1922987
Emacs settings for Clack developers
(defun clack-slime-search-buffer-package ()
(let ((case-fold-search t)
(regexp (concat "^(\\(clack.util:\\)?namespace\\>[ \t']*"
"\\([^\n)]+\\)")))
(save-excursion
(if (or (re-search-backward regexp nil t)
(re-search-forward regexp nil t))
(match-string-no-properties 2)
(slime-search-buffer-package)))))
(setq slime-find-buffer-package-function 'clack-slime-search-buffer-package)
@priyadarshan
priyadarshan / test-utils.lisp
Last active August 29, 2015 14:27 — forked from fukamachi/test-utils.lisp
Useful utilities for CL testing.
(in-package :cl-user)
(ql:quickload :cl-test-more)
(defun asdf-component-files (comp)
(etypecase comp
(asdf::cl-source-file
(list (asdf:component-pathname comp)))
(asdf::static-file nil)
(asdf::component
(loop for c in (asdf:module-components comp)
@priyadarshan
priyadarshan / ccl
Last active August 29, 2015 14:27 — forked from fukamachi/ccl
Clozure CL launcher script
#!/bin/sh
#
# Change the definition of CCL_DEFAULT_DIRECTORY below to refer to
# your Clozure CL installation directory. The lisp will use this
# environment variable to set up translations for the CCL: logical
# host.
# Any definition of CCL_DEFAULT_DIRECTORY already present in the
# environment takes precedence over definition made below.
@priyadarshan
priyadarshan / gist:783a807952df5f508c9d
Last active August 29, 2015 14:27 — forked from fukamachi/gist:766438
groupBy for CL
(defun group-by (pred list)
(loop
while list
for cur = (pop list)
collect
(nreverse
(loop with acc = (list cur)
while list
for x = (pop list)
if (funcall pred cur x)
;; anything-ari.el - Show animated Ari.
;; Copyright (C) 2010 Eitarow Fukamachi <[email protected]>
;; Author: Eitarow Fukamachi <[email protected]>
;; Twitter: http://twitter.com/nitro_idiot
;; Blog: http://e-arrows.sakura.ne.jp/
;;
;; Created: Dec 9, 2010
;; Version: 0.0.1
(let ((default-directory (expand-file-name "~/Dropbox/home/.emacs.d")))
(add-to-list 'load-path default-directory)
(load (expand-file-name "~/Dropbox/home/.emacs.d/subdirs.el") t t t))
(if (file-exists-p (locate-library "init"))
(load (locate-library "init") nil t nil))
@priyadarshan
priyadarshan / common-lisp-scripting-with-roswell.md
Last active August 29, 2015 14:27 — forked from fukamachi/common-lisp-scripting-with-roswell.md
Common Lisp Scripting with Roswell (Draft)

Common Lisp Scripting with Roswell

"Roswell Script" is implementation-independent Common Lisp scripting program which uses Roswell. Although Roswell itself is a unified interface to Common Lisp implementations, it also encourages writing scripts with it.

To start writing it, run ros init in your terminal:

$ ros init
Usage: ros init [template] name [options...]