2019/08/24 本町オープンソースラボ(大阪府大阪市中央区瓦町3-4-9) https://tcool.connpass.com/event/117789/
@fukamachi が聴いた質問をまとめました。
# syntax=docker/dockerfile:experimental | |
ARG SBCL_VERSION=2.1.8 | |
ARG QLOT_VERSION=0.11.4 | |
FROM fukamachi/qlot:${QLOT_VERSION} | |
WORKDIR /app | |
COPY qlfile /app | |
COPY qlfile.lock /app |
2019/08/24 本町オープンソースラボ(大阪府大阪市中央区瓦町3-4-9) https://tcool.connpass.com/event/117789/
@fukamachi が聴いた質問をまとめました。
(defsystem "hoge" | |
:class :package-inferred-system | |
:pathname "src" | |
:depends-on ("hoge/main") | |
:in-order-to ((test-op (test-op "hoge/tests")))) | |
(defsystem "hoge/tests" | |
:pathname "tests" | |
:depends-on ("hoge") | |
:components |
(ql:quickload '(:clack :http-body)) | |
(defvar *handler*) | |
(setf *handler* | |
(clack:clackup (lambda (env) | |
(if (eq (getf env :request-method) :get) | |
'(200 (:content-type :text-html) | |
("<html><head></head><body><form method='post' enctype='multipart/form-data'><input type='file' name='upload'><input type='submit' value='Upload'></form></body></html>")) | |
`(200 () (,(prin1-to-string (http-body:parse (getf env :content-type) (getf env :content-length) (getf env :raw-body))))))) |
(in-package :cl-user) | |
(ql:quickload '(:ironclad :asn1)) | |
(defun generate-rsa-key-pair (num-bits) | |
"Same as (ironclad:generate-key-pair :rsa :num-bits num-bits) except returning in DER format." | |
(check-type num-bits integer) | |
(let ((l (floor num-bits 2))) | |
(multiple-value-bind (p q n) | |
(loop for a = (ironclad:generate-prime (- num-bits l)) |
(annot:defannotation fntype (args result form) | |
(:arity 3) | |
(let* ((last-form (cl-annot.util:progn-form-last form)) | |
(symbol (cl-annot.util:definition-form-symbol last-form))) | |
`(progn (declaim (ftype (function ,args ,result) ,symbol)) | |
,form))) | |
;; Usage: | |
;; (ql:quickload :cl-syntax) | |
;; (syntax:use-syntax :annot) |
(defpackage #:lock-pool | |
(:use #:cl) | |
(:import-from #:bordeaux-threads) | |
(:import-from #:alexandria | |
#:once-only) | |
(:export #:lock-pool | |
#:make-lock-pool | |
#:acquire-lock-in-pool | |
#:release-lock-in-pool | |
#:with-lock-pool-held)) |
(ql:quickload '(:cl+ssl :fast-io)) | |
(in-package #:cl-user) | |
(defpackage #:pkcs12-experiment | |
(:use #:cl) | |
(:import-from #:cffi) | |
(:import-from #:cl+ssl)) | |
(in-package #:pkcs12-experiment) | |
(cffi:defcfun ("EVP_PKEY_new" evp-pkey-new) :pointer) |
#+sbcl | |
(defun start (commands) | |
(check-type commands cons) | |
(multiple-value-bind (inputfd-shell outputfd-shell) | |
#+win32 (sb-win32::make-named-pipe) #-win32 (sb-posix:pipe) | |
(multiple-value-bind (inputfd-cl outputfd-cl) | |
#+win32 (sb-win32::make-named-pipe) #-win32 (sb-posix:pipe) | |
#+win32 | |
(setf (sb-win32::inheritable-handle-p inputfd-cl) t | |
(sb-win32::inheritable-handle-p outputfd-cl) t) |
#!/bin/sh | |
#|-*- mode:lisp -*-|# | |
#| Experimentation for loading CL+SSL on Windows with a custom ssleay32.dll | |
exec ros -Q -- $0 "$@" | |
|# | |
#| | |
NOTE: Put ssleay32.dll at the same directory as this script. | |
|# |