プログラミング

gdb6連バッファ on Emacs

これは便利すぎるだろう。「Emacs はじまった」って感じです。(日本GNU AWK ユーザー会 0.2) 一瞬、VisualC++のデバッグ機能を思い出した。なんとEmacs22には最初から入っているようだ。 で、とりあえず、使ってみた。 gdb1 posted by (C)cubicdaiya ちょっ…

NFA→DFA変換

正規表現のマッチング処理を改善するため、ちょこちょこと手を入れていたらある日、急に動かなくなってしまい、 以前の一番正常な状態に戻そうとしたら前にコミットするのをすっかり忘れていて、 マッチング処理だけ一から書き直す羽目になってしまった。 こ…

へっぽこ正規表現

なんか少しはまともなマッチングができるようになったと思ったら、実はそうでもなかった。 Input:func pattern str: >> match abc abc func:match, pattern:abc, match:abc is_match:1 Input:func pattern str: >> match abc abd func:match, pattern:abc, m…

current-bufferとwindow-buffer

d:id:cubicdaiya:20080104で書いたelispを少し改造して、 現在のスクリーンでひらいているバッファが*scratch*の場合は、 新しいスクリーンを作成せずにそのままswitch-to-bufferするようにした。 改造部分(前) (defun create-new-buf (buf) (elscreen-creat…

Emacsを使う上で気に留めておくべきこと

入門 GNU Emacs 第3版作者: Debra Cameron,James Elliott,Marc Loy,Eric Raymond,Bill Rosenblatt,宮下尚,半田剣一,新井貴之,鈴木和也出版社/メーカー: オライリー・ジャパン発売日: 2007/03/12メディア: 大型本購入: 14人 クリック: 331回この商品を含むブ…

EmacsLispで遊ぶ

明けましておめでとうございます。 新年早々、ノロウイルスに感染したかのような症状に見舞われていたせいで、 予定していたタスクの半分もこなせていない今日この頃、みなさん、いかがお過ごしですか? とまあ、テキトーな挨拶はこれくらいにして、今日はEm…

古典から学ぶ

このところ、Cで正規表現をNFAにコンパイルしてマッチングをするプログラムを書いてたんですが、 どうもうまくいかなくてドラゴンブックを参考にしながらコンパイル部分を一から書き直したりしてました。 書かれているアルゴリズムをぱっと見て、「ホントに…

可変長テキストの戻り読み

なんだか最近、正規表現ネタが多い気がするが、仕事では本当によく使う*1ので、 必然的にそんな話が多くなってしまうのかもしれない。 そして平日の昼間は+とか*とか(? いや、もちろんそんなことばっかりやってるわけじゃありませんが。 文字列を指定の位置…

awk

昔の話 昔、あるプログラムの計算結果を整形する作業をバイトでやる機会があった。 確か、各行の2つの値の誤差を計算して行の末尾にその誤差をくっつけるという内容だった気がする。 当時、未熟だった*1・・・いや、自分がどれだけ未熟かすらわかっていなか…

検索/置換とSQL

普段、仕事でソースコードの中を探索したり、SQLを書いているプログラマの独り言。*1 検索/置換 Emacsの正規表現は使いにくい。*2というのも、「(」や「 特殊記号の扱いがほかの言語のものとかなり異なるので、おそろしく読みづらいのだ。 単純な(正規表現)?…

配列をシャッフルする

仕事では専らPHPだが、プライベートでは段々、C, C++に戻りつつある今日のこの頃。 PHP C #include <stdio.h> #include <stdlib.h> #incl…</stdlib.h></stdio.h>

無名関数(PHP, Python, Ruby)

↑のように指定したディレクトリ以下のエントリを走査しながら、 各エントリに対して、引数で渡された関数を実行する関数をよく使うの…

内部リンク記法

Wikitccに内部リンクの機能を追加してみた。使い方は、 [[ページのタイトル]]

なかなか直らない癖

日本語の文字を打ち込み終わった後, 無意識の内に半角/全角キーを押してしまう。 プログラミング中にコメント書いた後でいつもそうしてるせいか、 普通に日本語の文章書いてる時でも条件反射でやってしまう。 というかコメントも英語で書いた方がいい?

Emacs

JavaやPHPを書くときは専らEclipseだけど、 C*1、Python、Rubyの場合はまあEmacsだ。 設定ファイルの書き換えとか至極短いスクリプトを書く時には去年ようやくEmacsではなく、 viを使うようになった。コマンドモードから編集モードに移行するのにいちいちiを…

普段よく使うシェルスクリプト

なんか一部激しく間違った使い方をしているような気がする。 rrn $ rrn#!/bin/sh rm *~ Shiftキー押しながら右手の小指で~を押すのって結構やりにくいので。 右手だけで押せないこともないけど、それだと手首をひねらないといけないのでそれはそれで嫌だ。 p…

PHPのコード見てて思うこと

ノートPCが2台置いてあるのに誰も来ない部室で黙々とWikitccのリファクタリングをしている人です。 まあ、リファクタリングといってもコードを抽象化してまとめるというより、libディレクトリに 実行スクリプトが置いてあったり、そもそもいらないファイルが…

EAN/JAN→ASIN

最近, コードを書いてない。だから, というわけではないが, ちょっとわけがあってEAN/JANで検索するプログラムを書きたくなったので 今日はAmazon Web Service(以下, AWS)で少しだけ遊んでいた。AWSでは書籍はEAN/JAN(ISBN13)*1で検索できないので, ASIN(ISB…

プラグイン追加

ほかのWikiと同じようにWikitccにもプラグイン機能があるのだが, コメントぐらいしかなかったので最終更新日時を表示するのを作った。 まあ, 単にdate関数を呼び出してるだけなんだけど。 function wikitcc_lastUpdate($arg, $file){ return date("Y/m/d H:i…

XML-RPC(Ruby, PHP, Python)

はてブのgetTotalCountメソッドを使って比較 Ruby #!/usr/local/bin/ruby require "xmlrpc/client" url = ARGV[0] server = XMLRPC::Client.new("b.hatena.ne.jp","/xmlrpc") count = server.call('bookmark.getTotalCount',url) puts count PHP #!/usr/loca…

Pythonのfor-else

みんなのPython熟読中。ジェネレータの解説に出てきたコードでおもいっきりハマった。 #エラトステネスのふるい def get_prime(x=2): while True: for i in range(2,x): if x % i == 0: break else: yield x x += 1 i = get_prime() for c in range(5): prin…

EmacsでUTF-8

いままでEmacsでUTF-8のファイルを扱えるように設定しようとして何度も挫折したんだけど, 今回ようやくできた。いやね, ファイルの文字コードをutf-8に指定する方法とかは ずっと前から知ってるんですよ。でも日本語が混じったファイルを Ctrl+x RET fでutf-…

create_functionでテンプレート

最近, if(!is_dir($dir)) return false; if($hd = opendir($dir)){ while(false !== $file = readdir($hd)){ if($file != "." && $file != ".."){ if(!is_dir($dir."/".$file)){ ・・・・・・・ } } } closedir($hd); } とか, if(!is_dir($dir)) return fals…

PEAR::HTML_TreeMenuでディレクトリツリーを生成

Wikiの一覧ってカテゴリー別に分けれたらいいよねみたいな話があったのと, それをWindowsのエクスプローラみたいに操作できたらいいよねなんて思ったので書いてみた。WebブラウザでWidowsのエクスプローラみたいなことをしようと思ったら それなりにJavaScri…

リンク記法拡張

久々にソースコードを見たら何が書いてあるのか全くわからなかった, なんてことは 随分前に卒業したつもりだけど, その昔書いたSTGのコードが未だに誰も読むことができない 状態なのはとりあえず置いといて下さい。 リンク記法はとっくに実装していたんだけ…

続・mailto記法

id:cubicdaiya:20060801の続き。mailto記法だが, 勉強が一通り終わった後にPHPポケットリファレンスを見ていて 実はちょ〜簡単にできることに気が付いた。 private function createMailTo(){ $reg = '/^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6…

mailto記法

さっき院試の出願用書類を書き終わったのだけど, 80円切手やら成績証明書やら いろいろ用意しないといけないので結構めんどくさい。とっとと行こう。・・・と思ったけど, 関数1個ぐらい書いてからでもいいだろうと思ってmailto記法を実装。mailto:cubicdaiya…

include記法

ほかのファイルをincludeできる記法とかあったら便利かも?と思って作ってみた。 元々, ViewにはSmartyをフル活用してるのでSmartyのinclude関数を利用して実装。id:test;file:test.tplと書くと, <div id="test"> {-include file="test.tpl"-} </div>に変換。コードは以下のような…

テーブル記法

中間発表の終わって気が楽になったので気分転換のついでに書いてみた。 ,1-1,1-2,1-3 ,2-1,2-2,2-3 ,3-1,3-2,3-3を <table border="1"> <tr><th>1-1</th><th>1-2</th><th>1-3</th></tr> <tr><td>2-1</td><td>2-2</td><td>2-3</td></tr> <tr><td>3-1</td><td>3-2</td><td>3-3</td></tr> </table>に変換。 public function createTable(){ $in_table_flag = false; /…

Text_Wiki

前から言ってるWikiパーサはPHP(Rubyでもよかったと思ってる)で書いてて, 2日ぐらい前に気づいたんだんだけど, PEAR(PerlのCPANのようなもの)に Text_WikiっていうWiki用モジュールが既にあった。とりあえずソースを眺めてみたんだけど, どうももっさりして…