Skip to content

Instantly share code, notes, and snippets.

;; -*- Mode: Lisp; Syntax: Common-Lisp -*-
;;; Package Management
(in-package :cl-user)
(defpackage :hige
(:use :cl
:drakma
:cl-ppcre)
#+ABCL (:shadow :y-or-n-p)
;; 第1回 Scheme コードバトン
;;
;; ■ これは何か?
;; Scheme のコードをバトンのように回していき面白い物ができあがるのを楽しむ遊びです。
;; 次回 Shibuya.lisp で成果を発表します。
;; Scheme 初心者のコードを書くきっかけに、中級者には他人のコードを読む機会になればと思います。
;;
;; ■ 2 つのルール
;;
;; (1)自分がこれだと思える変更をコードに加えて2日以内に次の人にまわしてください。
(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))
;; anything-ari.el - Show animated Ari.
;; Copyright (C) 2010 Eitarow Fukamachi <fukamachi_e@ariel-networks.com>
;; Author: Eitarow Fukamachi <fukamachi_e@ariel-networks.com>
;; Twitter: http://twitter.com/nitro_idiot
;; Blog: http://e-arrows.sakura.ne.jp/
;;
;; Created: Dec 9, 2010
;; Version: 0.0.1
@fukamachi
fukamachi / gist:766438
Created January 5, 2011 15:20
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)
@fukamachi
fukamachi / ccl
Created June 23, 2011 12:04
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.
@fukamachi
fukamachi / test-utils.lisp
Created October 27, 2011 11:56
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)
@fukamachi
fukamachi / gist:1922987
Created February 27, 2012 10:22
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)
@fukamachi
fukamachi / gist:2050237
Created March 16, 2012 14:16
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)
@fukamachi
fukamachi / gist:2514283
Created April 27, 2012 23:34
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>"))))