Skip to content

Instantly share code, notes, and snippets.

(defun spamf-register-words-directory (corpus dirname) nil)
(defun spamf-register-words-file (corpus filename) nil)
(defun spamf-register-words-buffer (corpus buffer) nil)
(defun spamf-register-words-string (corpus string) nil)
(defun spamf-delete-words-directory (corpus dirname) nil)
(defun spamf-delete-words-file (corpus filename) nil)
(defun spamf-delete-words-buffer (corpus buffer) nil)
(defun spamf-delete-words-string (corpus string) nil)
@kkismd
kkismd / gist:30bbb5d2aca05194f91097c7c251f2c6
Created October 18, 2016 07:15 — forked from kennyj/gist:4966002
ハイフン付き電話番号に分割
# encoding: utf-8
module TelSplitter
MAP = {
# 市外局番 , 市内局番の桁数のマップ
# http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html のデータを利用
# 固定電話以外の桁数は適当です...
'050' => 4, # IP電話
'070' => 4, # 携帯電話/PHS
'080' => 4, # 携帯電話
(* point と colord_point の共通項を型として定義する *)
type pointable = <get_pos : int>
(* 明示的にキャストすれば同じリストにいれられる *)
let lst = [(p :> ptwointable); (cp :> pointable)]
# List.map (fun x -> x#get_pos) lst;;
- : int list = [365; 123]
(* リストに型制約をつけて宣言する *)
# let l : pointable list = [p; cp];;
<?xml version="1.0"?>
<root>
<item>
<name>TRONキーボード</name>
<identifier>private.tron_kbd</identifier>
<autogen>__KeyToKey__ KeyCode::OPTION_L, KeyCode::CONTROL_L</autogen>
<autogen>__KeyToKey__ KeyCode::COMMAND_R, KeyCode::JIS_KANA</autogen>
<autogen>__KeyToKey__ KeyCode::JIS_EISUU, KeyCode::COMMAND_L</autogen>
<autogen>__KeyToKey__ KeyCode::JIS_KANA, KeyCode::SPACE</autogen>
#!/usr/bin/env sh
mkdir $1
cd $1
npm init -y
npm install -D babelify watchify babel-preset-es2015 babel-preset-react babel-plugin-syntax-flow babel-plugin-transform-flow-strip-types react react-dom
echo '{"presets": ["es2015", "react"], "plugins": ["transform-flow-strip-types", "syntax-flow"]}' > .babelrc
gibo Node OSX > .gitignore
cat <<EOF > .flowconfig
[ignore]
data Person = Person { firstName :: String, lastName :: String } deriving Show
data DisplayPerson = DisplayPerson { name :: String } deriving Show
names :: Person -> [String]
names person = [firstName person, lastName person]
translate :: Person -> DisplayPerson
translate = DisplayPerson . unwords . names
translateR :: Person -> DisplayPerson
require 'cgi/util'
require 'cgi/html'
ch5 = CGI::HTML5.new
puts ch5.instance_eval {
html {
head {
title { "XML encoding with Ruby" }
} +
body {
module DefaultConstructor
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def constructor(*attributes)
attr_reader *attributes
define_method :initialize do |*attrs|

T => T という型の関数 f, g, h があるとき

(f, g) を受け取って x => f(g(x)) となる関数を返す関数 Aと

(f, g, h) を受け取って x => f(g(h(x))) となる関数を返す関数 Bを考える

[1] AとBを実装せよ

[2] AとBを一般化して、 任意の数の T =&gt; T 型の関数のリスト [f, g, h, ... ] を受け取って

scala> import org.mindrot.jbcrypt.BCrypt
import org.mindrot.jbcrypt.BCrypt
scala> val pw = "my password"
pw: String = my password
scala> val salt = BCrypt.gensalt()
salt: String = $2a$10$AsMc1b5AYVudBaXWXTYpe.
scala> val encryptedPassword = BCrypt.hashpw(pw, salt)