2006-09-01から1ヶ月間の記事一覧

kashira動いてない疑惑

CLWFKのkashiraは実はちゃんと機能してないんじゃないか?と疑問を持った。実装読んでもさっぱりわからないから確証はないのだけれど。もうちょっと調べてみても良いのだが、kashiraのうしろにくるプリミティブは以下の20通りしかない。プリミティブを足した…

Ume Gothic

Ume Gothicはさざなみゴシック派生のフリーなフォント、のように見える。ざっと眺めてみた限り、よく使われるグリフにはかなり手が入っているように感じた。具体的にどれぐらいの数のグリフが修正されているのかは、書かれていないのでよくわからない。

安全なSchemeインタプリタ

提出を自動化したら採点も自動化したい。人というのは怠惰な生き物なのでそう思うわけです。しかし、送られてきたプログラムをそのまま実行する訳にはいかない。バグで無限ループに陥るぐらいならともかく、攻撃コードが入っていたりした場合を考えると防御…

はじめようRuby on Rails

後期にTAとしてプログラミングの演習を2ヶ月ほど担当することになった。体系的な教育を受けていないのでやや不安があるのは否めないが、二年生向けの演習なのでなんとかなるだろう。 演習には課題がつき物だ。課題を出したら提出させないといけないが、40人…

Flying Cockroach

研究室にひとりでダラダラしてたら、なんかブーンという音が。なにかと思って視線をずらすと、なんとすんごい大きな虫が飛んでる。蛾かと思ったらゴキブリだった。 今は窓のところにゴキブリがいてるけど、倒すための武器がないので撤退します。明日殺虫剤買…

htmlhelpが文字化けする…

情報科学若手の会に行ったときに、やるぶの人がhtmlhelpをプッシュしてたので、gnochmをインストールしてみた。まずはGaucheの日本語版リファレンスマニュアルを入れてみたのだが、文字化けする。泣ける。 時間もないというのにちょっと深追いしてみたところ…

Beryl

CompizがForkしたらしい。新しいプロジェクトの名前はBeryl。Compizの開発者は忙しくてレスポンスがなかなか返ってこないとか、Novellの中の人なのでgconf依存をなくすようなパッチが受け入れられる訳がないとか、そういった事情があるようだ。 Compizはしば…

ある要素の出現によって他の要素の扱いを変えたいループ

リストに対して操作を行うときに、その要素によって次の要素に対する処理を変えたい場合、というのが存在する。例えば、和田研フォントキットでは最終的なアウトラインデータは((angle 1 2) (bezier 2 2) (bezier 2 3)(angle 1 1))みたいな感じの…

CommonLispのドキュメントはいずこへ

CommonLispは基本的にSchemeとあまりかわらないと思う。Hygienic Macroじゃないとか、末尾再帰の最適化が言語仕様にない(CMUCLには実装してあるっぽいけど)とか、そういう点を除けば。 ただ、Web上でドキュメントがみつけられないので、ファイル入出力とか…

再帰の弱点

ここから先のコードはSchemeで。さっきは再帰いいよね!という話を書いたので、再帰よくないよね!という話も書いておきたいと思う。再帰のよくないところは、名前を付けないといけないところだと思う。例えば、階乗計算を考えると (define (fact n) (if (= …

再帰を使うと良い場合もあるよねという話

続きを書こう。forではループインデックスの更新を行う場所が構文内に用意されているので、それ以外の場所で更新を行うのはイディオムから外れることになり気持ち悪い、という話だった。これを再帰で書くとどうなるか。 void convertToSVG(point_list, index…

本日の作業記録

yoko方向にパーツを組み合わせるためのaffine-yoko-nについて調べた。力不足でコードからはアルゴリズムが読み取れなかったが、論文によると各パーツの幅はパーツの複雑度の比によって決定されているようだ。 調査するのににすいのパーツを含んだ字を使って…

validationの重要性

データに先にvalidationをかけておけば、実際に処理を行う際には誤った形のデータを扱ったときのためにエラーチェックを行う必要がなくなる。そうすると、処理コードがだいぶ簡潔に書ける。

SVGへの出力

和田研フォントキットの出力を見るのにいちいちsfdに出力してfontforgeで開くのがだるくなってきたので、SVGで出力するコードを書いてみた。SVGの細かいところにはまったりした(?が足りないとかな!)けど、3時間ぐらいで終わった。もっと早くやれば良かっ…

破壊的代入に関するアンビバレンツ

破壊的代入を使うのは嫌いなのだけれど、ループでいろんな変数を持って回るのも嫌い。mapとかfor-eachで済む時はいいんだけど、済まない時も多い。ファイルから読みこむ時とかはメモリ上に読み込んでリストに変換してからmapかけたりするとメモリを大量に消…

timeouttop

timeouttopはtimeoutでwakeupした回数の多いアプリケーションを調べるためのソフトウェア。ただし、使うためにはKernelにパッチを当てる必要がある。

情報科学若手の会

GRINEditを見ていて、制約解消にちょっと興味を持った。 pyacc(Python用のyaccだと思う)を見て、別の方向に反応してる人がいた。 packrat parserの利点がわかった。要するに、普通にパーサコンビネータを書くとバックトラックで指数関数時間かかってしまう…

和田研フォントキットの統計(1)

敵を知り、己を知らば百戦危うからず。なにかを為そうとするときは、その対象についてよく知っておくに越したことは無い。というわけで、いろいろな性質を調べてみることにする。 まず、全文字数は12239。Zipfの法則により、よく使われる文字はせいぜい2000…

iPod nano + iTunes7の不具合を解決する方法

iPod nanoを買ったはいいのだが、gtkpodでは接続できない。どうも、初回はiTunesで曲を入れてやらないといけないみたい。と言う事でWindowsでiTunes7を入れてみたのだが、やっぱりiPodが認識されない。調べてみると、iTunes7の不具合らしい。 いろいろ試して…

ベジェ曲線を分割するには 〜解決編〜

ド・カステリョのアルゴリズムを使えばいんだ!このアルゴリズム、「分割を繰り返していくとベジェ曲線になります」とか紹介されてるのを読んで、「ああ、繰り返さないといけないのか…」と勘違いしていたんだけど、1つの点を求めるだけなら別に繰り返す必要…

Scheme vs. Common Lisp

SchemeとCommon Lispで速度はどれぐらい違うのかを知りたくなって、ちょっと調べてみた。テストする実装にはGaucheとCMUCLを用いた。だらだらとループしながら適当な計算を行う同等なプログラムを書いて実行すると、圧倒的にCMUCLの方が速かった。5秒vs0.2秒…

turn around timeの削減

CLWFKの開発者に対するボトルネックは2つあって、ひとつはフォント生成の遅さ、もうひとつはコードのコンパイル時間の遅さである。フォント生成が遅いのはグリフ数が多いので仕方ないとして、コードのコンパイルの方をなんとかしてみたい。 compile.lがmake…

ファイアウォールをインストールする(lokkit編)

apt-get install lokkit インストール自体は一行で終わってしまった。後はlokkitコマンドを実行してセキュリティレベルの設定を行うだけでファイアウォールの設定は完了する。非常にお手軽で良い…と思ったのだけれど、ネットワークの場所を移動するとネット…

hidariの長さをカットするってどうすればいいの?

曲線をカットするというのはどうすればいいのか。prim-all.lを見るとhidariは700個以上使われているので、手作業で修正するのは嫌だ。自動でやりたい。ベジェ曲線への変換は比較的簡単に行えるので良いとして、その後どうやって3点の座標に戻せば良いのだろ…

和田研フォントキットを改善するためにどうすればいいのか考えてみる

フォントがビルドできると思うと、俄然やる気が出てきた。和田研フォントキットを改善するためにはどうすればいいか。VLGothicにしろ潮待フォントにしろ、人力ですべてのグリフを改善する事は不可能に近いので、自動で改善できる事にはやはり意味がある。ゴ…

画像復元技術を利用した高品質な低解像度用フォントの作成

というネタを思い付いたが、作ってもビットマップではどうも面白くないな…。

デスクトップ環境が重いんじゃない、アプリケーションが重いんだ!

Gnomeを使おうがXfceを使おうが、一番メモリを使ってるのはFirefoxなので、これをどうにかしないとどうにもならないと思った。

JSSST

ソフトウェア科学会に行ってきた。 Suffix Array を利用した正規表現検索を聞くのが目的で、実際に聞いてきたのだが、どちらかというとProceeding的な発表で、いますぐ使えるという類のものではなかった。残念。 もぶろげっとの動画対応というのも聞いてきた…

Pangoで縦書テキストが表示可能に

Pangoで縦書テキストが表示可能になるらしいですよ。素晴らしい。

CLFWK原因掴んだ

gothic.lのinsert-widthが破壊的にパーツのwidthratioを変更するのだが、パーツの情報は複数の文字で共有されており、しかもwidthratioは最初の一回だけしか登録されない、という仕様になっているのがこのよくわからない挙動の原因だった。破壊的代入は悪で…