Shammer's Philosophy

My private adversaria

2012-01-01から1年間の記事一覧

Lisp UDP Server 改

Lisp UDP Server - Shammerismで残っていた課題を反映させてみた。 (let ((server (make-socket :type :datagram :local-host "0.0.0.0" :local-port 7001 :format :binary))) (with-open-file (f "/var/log/clozure-udp-server.log" :direction :output :if…

printStackTrace を自力で書いてみる

printStackTrace は、デフォルトでは標準出力に出す。そして、引数で PrintWriter を渡してやればそこに書き込みしてくれる。しかし、、、文字列でそれを取得したい場合にどうするんだろう、と思ったのでちょっと調べてみた。こんな感じで書けばそれっぽい情…

cut を awk のように使う?

タブやスペースなどを含む行から、そのタブやスペースで区切られた形で行を複数の文字列に分割するときに awk を使っていたが、cut でも同様のことができるとわかったのでメモ。 $ cut -d "_" -f 1-2この例だと、ホワイトスペースでなく _ で行の文字を分割…

find と remove-if-not

remove-if と remove-if-not を理解する - Shammerismでちょっとだけ言及したが、、、remove-if-not を使って、リストから欲しい情報を取り出すことができる。しかし、-not という関数は Lisp の世界では duplicated とされており、いつ使用できなくなっても…

文字の整形に format を使用する

Lisp を触り出した頃から format を使用して動作を確認してきた。デバッグプリントのたびに format を使用してきた。いわば、C 言語で言うところの printf 的な存在。単に文字列を標準出力に出すのみでなく、その見せ方を制御できるのが printf のいいところ…

JavaScript の処理を途中で止める

ある text box に値が入力されている場合だけ JavaScript の処理を進める、というような意図で以下のような JavaScript を書いていた。 function sendForm(form){ if ( form.id.value == '' ){ window.alert('TextBox is null'); } else { action_url = "htt…

Symbol を文字列にしたい

文字列を Symbol にするには intern を使用すればいいが、その逆もできることがわかった。prin1-to-string という関数を使用すればできる。Symbol のリストを連結して文字列にできる。以下のように使用する。 ? (prin1-to-string '(this is a test)) "(THIS …

文字化けファイル名を mv したい

Windows から Linux サーバへアップロードされたファイルで文字化けが発生することがよくある。そうすると、普通に mv しても、No such file or directory になる。。。 この場合の対処。 ls -li で対象ファイルの inode を調べる mv `ls -li | grep $INODE …

累乗を計算する

あるようで見つからなかったので書いてみた。 ? (defun power (base count) (if (eql 0 count) 1 (* base (power base (- count 1))))) POWER ? (power 2 2) 4 ? (power 2 3) 8 ? (power 2 5) 32 ? (power 2 10) 1024 ? (power 2 15) 32768 ? (power 2 32) 4…

DNSレコードの追加

DNSサーバ基本設定 - Shammerismでは、まだ独自のレコードを追加していない。この状態だと localhost くらいしかヒットしないので、次のステップとして独自のレコードを追加してみることにする。 Create Zone file default-zone をベースに独自レコードファ…

DNSサーバ基本設定

Debian を DNS サーバにしてみたので手順とかをメモ。 bind install apt-get update apt-get install bind9 apt-get install dnsutils サーバーとして動作させるなら dnsutils は不要かもしれないけれども、自分宛の動作確認とかで dig くらいは入れておきた…

Debian Router 化計画

Debian Router/Gateway in 15 Minutes – The Novian Blogによれば、iptables を使うと、IPマスカレードするように設定できるらしい。ということでやってみる。 ルーターにしたい Debian に 2 つの NIC を設定 /etc/sysctrl.conf で net.ipv4.ip_forward=1 の…

コマンドライン引数をKeywordのように扱うには?その4

コマンドライン引数をKeywordのように扱うには?その3 - Shammerismで、どうにかコマンドライン引数をKeywordのように扱うことができるようになった。実際、この方法で作成した Keyword 引数を、自分で用意した Keyword 引数を必要とする関数に渡してうまく…

文字列を数値に変換するときに

Lisp では、parse-integer という関数を使用する。当然、数字にできない文字列があるとエラーになる。 ? (handler-case (parse-integer "aaa") (error (c) (format t "error-type is ~A.~%" (type-of c)))) error-type is PARSE-INTEGER-NOT-INTEGER-STRING.…

コマンドライン引数をKeywordのように扱うには?その3

コマンドライン引数をKeywordのように扱うには?その2 - Shammerismの続きだ。前回は、完全に一組の引数しか意識していなかった。これを複数の引数に対応できるようにする。前回のコードを少し修正し以下のようになっている。 (defun main () (let ((args (…

コマンドライン引数をKeywordのように扱うには?その2

コマンドライン引数をKeywordのように扱うには?その1 - Shammerismで intern を使ってみよう、というところで終わっていたが、それをやってみたのでメモ。main 関数は以下のように変更。 (defun main () (let ((x (cdr (member "--" *command-line-argumen…

コマンドライン引数をKeywordのように扱うには?その1

&KEY をちょっとだけ使用してみようと思う - Shammerismで、コマンドライン引数をKeywordのように扱うことができないか、というように考えて結局やらずじまいだったが。ちょっといろいろおさらいしつつやってみる。 まず、対象は ClozureCL で、コマンドライ…

UDP Server by Python

シンプルな実装だが、メモ的な目的で記載。 #!/usr/bin/env python from time import ctime import socket from contextlib import closing def main(): host = '192.168.1.10' port = 12345 bufsize = 4096 sock = socket.socket(socket.AF_INET, socket.SO…

UDP send client with sticky source port

UDP send client - Shammerismでは、単にデータを送るというだけのクライアントを書いた。しかし、稀に送信ポートを固定したいと思うときがあるので、それを実現するように一行ばかり追加した。サーバーと同じように、bind してやればいい。 import socket i…

UDP send client

python で UDP データを送るサンプル。宛先IPとポート、送るデータサイズのみオプション指定できるようにしてみました。 #!/usr/bin/env python import socket import argparse import time from contextlib import closing parser = argparse.ArgumentParse…

apt-get でプロキシを使用

/etc/apt/apt.conf.d/01proxyに書くことで使用できるのがわかった。以下、記述例。 Acquire::http::proxy "http://192.168.1.100:8080/"; Acquire::https::proxy "https://192.168.1.100:8443/";

OpenSSLでCRLを生成する

SSL

すでに作成済の証明書を無効化する、というのをやってみた。 CAのディレクトリへ移動 echo 00>crlnumber openssl ca -config ca.conf -gencrl -revoke Revoke-Server/certificate.pem これをすれば以下のような出力がある。これを保存しておく。 Using confi…

LISP IO Samples 20120825

Lisp IO 総まとめ-20100205 - Shammerismの内容に一部追加。 File 読み込み (with-open-file (input-stream "$READ_FILE_NAME" :direction :input) (loop (let ((line (read-line input-stream nil 'eof))) (if (eql line 'eof) (return)) (format t "~A~%" …

java.io.File[] をファイル名でソートする

/home/test/files/ 以下にあるファイルをファイル名でソートして出力するサンプル。エラーチェックとかは省略している。 import java.io.File; public class Test { public static void main(String[]args){ File diffDirectory = new File("/home/test/file…

関数型変数を使用して入力値の型を変更する

コマンドラインからの入力で、ある値は文字列として扱い、ある値は数値として扱い、というようにするには、Java ではできなかった。できなかったというか、一旦は全て文字列で受取り、その文字列を後で数にしたりといった手順を踏む必要があった。Lisp だと…

xyzzyでSKKを使う

WindowsでもEmacsを使ってみているが・・・やっぱり少し遅い。23.xには何か遅くなる不具合があったようだが、24.1にしてもやっぱり少し遅い。そこで、xyzzyにSKKを入れてみようと思った。移植版は、Google先生のトップに表示されるkia's website - xyzzy関連…

package が変わっても・・・

use-package を使う - Shammerismやdefpackage の :use の意味 - Shammerismの続きになるかも。パッケージの使い方で想定していなかった動作を確認。 ? (defpackage p1) #<Package "P1"> ? (in-package p1) #<Package "P1"> ? (defun hello () (format t "AAA~%")) HELLO ? (export 'hell</package></package>…

Bash Shell Script my pocket reference - 20120813

Bash Shell Script my pocket reference - 20100812 - Shammerismの続編。条件の否定と、シェルでの文字列操作-20120805 - Shammerismの内容をマージ。 if 文 sample if [ $# -ne 1 ];then echo "Usage: $0 [123]"; exit 1; fi if [ $1 -eq 1 ];then echo "Y…

MacのEmacsフォント設定(Emacs 24.1)

Mac で Emacs を利用するときのフォント設定備忘録。自分のフォントの条件としては、 アルファベットや数字はInconsolataを使用 日本語の全角文字とアルファベットの2文字が等幅になること 簡単にできると思っていたが、やってみるとかなり繊細な設定である…

設定した cron で permission denied

様々なサイトで cron の設定方法を確認しながら、自分の書いたシェルを cron として動作させるためにあれこれ試行錯誤したので、その内容をメモ。基本的な流れとしては、 実行したい処理(ShellScript)を書く 作成したShellScriptをcrontab -eで定義 なんか c…