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

コマンドで連番を作る

Perl で連番のファイル名を作る にチャレンジ。私だったら日付計算するならやっぱり date かな。 $ i=1; while [ $i -le 5 ]; do echo $(date --date "$i day" +%Y%m%d); ((i=$i+1)); done 20080928 20080929 20080930 20081001 20081002 seq や printf とい…

Gauche の真偽値と条件判断 : 1

呼称: 真偽値の判定 目的: 真偽を判定する手続きを学ぶScheme では、真偽を判断する手続きを特に述語(predicate)と呼び、述語の中でも等価性を判断する手続きを等価述語(equivalence predicate)と呼びます。 また、仮引数に pred(predicate の略) を取る手続…

Gauche の手続き : 5

呼称: 部分適用と多値 目的: cut 式と複数の結果を返す・受け取る方法を学ぶlambda 式を簡略化する方法として cut 式があります。cut 式の中に現れる <> が引数のプレースホルダーになります。<> は複数あっても良く、また は可変長引数を表します。 (cut <…

Gauche の手続き : 4

呼称: 可変長引数とその他の引数 目的: 可変長引数の渡し方と、省略可能引数/キーワード引数を学ぶ可変長引数を渡す場合、apply を使用する。の各要素を引数としてを呼び出す。 (apply <手続き> <引数リスト>) 使用例。 (define (map/log . args) (print "ar…

Gauche の手続き : 3

呼称: ローカル変数と可変長引数 目的: ローカル変数とスコープ、可変長引数の取得方法を学ぶローカル変数には let 式を使用します。 ;; <初期値式> が評価され、その値が <変数> に束縛される ;; これが一般形? (let ((<変数1> <初期値式1>) (<変数2> <初…

Gauche の手続き : 2

呼称: 高階手続き 目的: 高階手続きを学ぶ手続きを受け取る手続きや、手続きを返す手続きを高階手続きと呼びます。Scheme では手続きを基本的な構成要素として、高階手続きを組み合わせることで大きなシステムを作成する。言葉では簡単そうに説明されている…

Gauche の手続き : 1

呼称: 手続きオブジェクト 目的: 様々な手続きを学ぶ (define (add a b) (+ a b)) gosh> add #<closure add> 手続きを評価すると、# が返される。# は、リテラルで書けないオブジェクトを示す。 (define (<名前> <引数> ... ) <式> ...) と (define <名前> (lambda (<引数</closure>…

入門 vi から知らなかったけれど、あっ、これ便利かも?と思った内容だけをすっぱ抜く

入門vi 第6版作者: リンダラム,アーノルドロビンス,Linda Lamb,Arnold Robbins,福崎俊博出版社/メーカー: オライリー・ジャパン発売日: 2002/05メディア: 単行本購入: 14人 クリック: 193回この商品を含むブログ (75件) を見る先日、Python のソースを読むの…

Gauche のリスト処理手続き : 4

呼称: リストの末尾再帰呼び出し 目的: 2種類の再起呼び出しがあることを学ぶ 備考: 末尾再帰の方が、効率が良い場合が多いので推奨第6章のリストを勉強するのに4回(4日)費やしてしまいました。ページ数は20ページ弱です。それだけ私にとっては難しかったで…

Gauche のリスト処理手続き : 3

呼称: リストの簡単な処理 目的: Gauche のリスト処理の再帰呼び出しに慣れる 備考: car/cdr で再帰呼び出しするのが基本(?)慣れないうちは「Scheme とこういうものだ」と思って付き合うべし、とあったのでサンプルをそのまま写経して体で覚える。条件や手…

Python のソースを読むのにタグジャンプ機能を利用する

vi(vim) で Python のソースを読むのに ctags を使ってみました。調べていると、別途、ptags.py と言うものもあり、それを用いてもタグファイルを作成してくれるようです。 basic Tip #1188: Use ptags.py to generate tags file for python によると、Pytho…

笑顔がいっぱい

Smileys Triangle に挑戦。 ちょっと趣旨を違えているような気もするけど、短くできたからいっかなーと(^ ^;; print ':\n:-' for i in range(32):print ':-)'+'))'*i 実行結果。 size: 52 time: 0.089752 sec status: 0 22位。初めて名前が乗った! 22 t2y-1…

Gauche のリスト処理手続き : 2

呼称: リストの捜査 目的: Gauche のリストの要素を処理する方法を学ぶ 備考: 式の前に #?= を置くと評価値を表示できる (fold ) は、最初の呼び出しの第2引数となる 次にの結果が、次の呼び出しの第2引数となって繰り返す リストの要素がなくなれば終了する…

CentOS 5.2 で Gauche を RPM パッケージからインストールする

CentOS 5.2 のデフォルトインストールだと、ビルド関連のパッケージがインストールされないようです。先ず、ビルド環境を構築するために yum を使ってビルド関連のパッケージをインストールします。その後、Gauche の tar ボールから RPM パッケージを作成し…

Python の split() の仕様

ディスクスペースの使用状況を取得する でたまたま気付きました。split() の動作をまとめたいなと思っていたら、良い記事を発見しました。私が気付いたの以下の内容ですが、幾つかの動作や他言語の動作についても書かれています。 分割パターン省略時は空白…

Python の対話型プロンプトで補完機能を使う

メーリングリストに目を通していて、補完機能の存在について知りました。以下の2行でさらっと使えます。 >>> import readline, rlcompleter >>> readline.parse_and_bind('tab:complete') 例えば、リストの(特殊)メソッドを調べるには "L." の状態で TAB を2…

Gauche のリスト処理手続き : 1

呼称: リストの基本操作 目的: Gauche のリストの代表的な操作を学ぶ #!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- ;;; basic list operation ;; make list (print "using quote : " '(1 2 3)) (print "using list : " (list 1 2 3)) ;; list operations…

Python コードのスタイルガイド

個人的に参考になった内容やよく使う(よく迷う)内容を備忘録的に引用します。Python のスタイルガイドは PEP(Python Enhancement Proposal) 8 で提案されています。 Style Guide for Python Code Style Guide for Python Code(和訳) インデント インデント 1…

プログラミング Gauche 開始

数ヶ月前から Lisp 系言語を羨望の眼差しで眺めつつ、余裕が出たとき、モチベーションが湧いたとき、機嫌の良いとき、、、と何かのきっかけで勉強したいなと思っていました。 そして、本日! Lightweight Language 2008 の会場でオライリーさんの書籍販売が…

再帰的にディレクトリを探索する

呼称: 再帰的なディレクトリ探索 + ファイルマッチング 目的: あるディレクトリ配下にある特定のファイルを抽出する 特徴: 正規表現を用いてファイルマッチングを行う 用例: 設定ファイルやモジュールの検索 備考: os.walk() は python 2.3 以上でのみ有効や…

メッセージダイアログボックスを表示する

呼称: メッセージダイアログ表示のサンプル 目的: メッセージダイアログを表示し、そのダイアログ内のボタンの返り値を取得する 特徴: ダイアログをモーダル表示してベース画面の背面へ回り込ませない 用例: ユーザへの確認やワーニング/エラー検出の有無を…

ファイルの md5sum 値を取得する

呼称: ファイルの md5sum 値の取得 目的: md5sum 値の算出 特徴: ファイル操作の例外処理の方がやや煩雑(- -# 用例: ? 備考: ファイルは md5sum コマンドを使った方がてっとり早い? #!/bin/env python import md5 def get_md5sum(filename, buff=4096): de…

ディスクスペースの使用状況を取得する

呼称: ファイルシステムのディスクサイズ取得 目的: df コマンドの特定の出力を取得したい 特徴: df コマンドへパスを渡すことで、そのパスを含むパーティションの情報が取得できる 用例: 大容量ファイルのインストールやコピー時の空きサイズチェック 備考:…

標準入力の基本 : 2

呼称: 標準入力の取得2 目的: プロンプトを表示して標準入力を取得する 特徴: 改行コードの取扱いがポイント 用例: 対話的な標準入力は raw_intput()、パスワード取得は getpass() 備考: 標準入力から1行のみの取得にも使える、また改行コードは除去される #…

入力文字列のセグメントを出力する

segs に兆戦。 再帰的に解けそうで解けなかった(T T)、この手の問題はスライシングがとても便利。 s = raw_input() def f(s, n): for i in range(1, n+1): print s[:i] for i in range(1, len(s)+1): f(s[-i:], i) 実行結果。 size: 115 time: 0.072996 sec …

珠玉のプログラミングのお題を python で書いてみた : 5

#!/bin/env python """ 3.3 a variety of array sample(P34) date calculate function """ from datetime import * def search_date(basis, days): return basis + timedelta(days - 1) if __name__ == '__main__': d = date(2004,1,1) print search_date(d,…

速習 SQLAlchemy の基本

WEB+DB PRESS Vol.46作者: 大塚知洋,吉津卓保,角田直行,藤本真樹,松原敦,大谷弘喜,杵渕聡,西田圭介,田中洋一郎,ミック,伊藤直也,梶原大輔,衣笠嘉展,天野仁史,久松慎一,nanto_vi,武者晶紀,縣俊貴,下岡秀幸,山本陽平,高林哲,小飼弾,はまちや2,WEB+DB PRESS編集…

rpm プログラミング with python を読み砕く : 3

引用元ドキュメントから自分勝手に要点のみを抜粋 パッケージをインストール/アップグレードする RPM システムではパッケージをインストールしたり、アップグレードしたりする方法がたくさんあります。rpm コマンドや C 言語 API、Python API を使用したりす…

文字列とキャラクタの操作

呼称: 文字列とキャラクタ 目的: 文字列とキャラクタを行ったり来たり 特徴: 知っていると何かの際に便利 用例: 備考: 他にも色々ありそう #!/bin/env python s = "abc" char = ['d', 'e', 'f'] # string -> char print "s2c :", [x for x in s] # char -> s…

最上位の桁を数え上げる

お仕事の息抜きにチャレンジ。やり始めると凝ってきてゴルフは楽しい。 LL Golf Hole 5 にチャレンジ! http://ja.doukaku.org/200/ ちょっと調べた感じでは不評(?)な python の3項演算子を使ってみた。 ゴルフで書くと、さらにもっさり感が漂っている気が…