ご希望の取引を押して下さい、あるいは数値と数字

金欠になって銀行の現金自動預け払い機の前に立ったら、機械にこのように言われました。トムソーヤが自宅の塀のペンキ塗りをさせられたときに、友人にペンキを塗らせてあげる代償に、彼のリンゴをせしめたのが取引です。タッチパネルが表示する預け入れ、引き出しなどなどは数種類の取引をアイコンとして表示した仮想的なボタンのことです。

プログラミングの世界ではこのような違いを意識することは大切です。プログラムの中の1101と”1101″とメモリのなかで1101という数に対応したデータの違いは熟練したプログラマにはわかるものの、初心者にはなかなか理解が難しいところです。簡単に言えば、数字と数値の違いということなのですが、現金自動預け払い機のときほど明確な違いとして理解しにくいです。

数値としての1101 (たとえば、1100 という自然数値の次の数値)と文字列としての1101 (たとえば、11という文字列に続けて01を連接した文字列)を両端の引用符の有無で区別するのは、すべてをテキストで表現することが求められるプログラミング言語の不自由なところです。

ヴィジュアルプログラミング言語のひとつの可能性はこのような明確に異なるものを明確に表現し分けることができる点にあります。

pTeX の太文字

今年も科研費申請のシーズンです。ぼくは pLaTeX で原稿を準備しているのですが、最近、ぼくの環境の pTeX で日本語の太文字が目立たなくて悩んでいました。研究費の申請書の目立つ箇所を太文字にしたいのですが、\emph {ホゲホゲ} とやっても、明朝体がゴシック体にはなるものの、あまり太くないためにまるで目立ちません。審査官の先生は忙しいために短時間で頭にはいるような申請書を作るように指示を受けているのだけど、強調箇所があまり強調されないのは困ります。

これまでは、さほど困っていなかったので放置していたのですが、来年度、研究費を受けられるか否かがかかるわけだから、真面目に対応することとしました。

結果から言えば、何度かググったら対応方法が見つかったので簡単でした。以下のWikiがお世話になったサイトです。

どうもありがとうございました。

で、僕がやったのは以下です。Mac OS X を使っているから hiragino を設定したんですよ。他の環境を使っている人は別のフォントを指定して下さいね。

sudo updmap-sys --setoption kanjiEmbed hiragino

この設定だけで、強調箇所がとても黒々とした頼もしいフォントとなりました。

審査官のハートを射止めますように。


文芸的ウェブプログラミング

学会発表の準備で文芸的プログラミングについて調べているうちに、自分でも一度、やってみないといけないと思いたち、ちょっとやってみました。

使用したツールは”nuweb”です。MacPorts でさくっとはいりました。まずは以下を見て下さい。

文芸的ウェブプログラミングの例題へ

中央の「Hi!」ボタンはもちろんだけど、左上のリンクをクリックするのをお忘れずに。ここを見ないと文芸的の意味がないですから。

続きを読む »

頭にはいるコードの大きさって?

今朝は、ビジュアルプログラミングとの関連で、”tex.web” というプログラムを斜め読みしています。

そこでひとつの発見をしたかもしれません。バグのないコードは短いです。少なくともKnuthのTeXは。TeXのプログラムは1,379個のモジュールから構成されていますが、そのうち8個の例外を除いてすべて1ページに収まっています。それも、コメントどころではない非常に詳しい解説つきで。

なにが言いたいのかというと、プログラムは一画面で見渡せる程度の規模のモジュールの組み合わせから作るべきだということです。で、それがどうしてビジュアルプログラミングに関係するかと思ったら、それは先を読んで下さい。
続きを読む »

成績報告をすませました

昨夜、前学期の成績を報告しました。今週は月曜から木曜まで大学院入試で、ぼくの手帳によれば成績報告の締切は昨日ということになっていました。今学期にぼくが担当しているのは、一年生向けのコンピュータリテラシ3クラス分、約230名の成績です。ただ、今学期はI類とVI類向けに学期途中でのクラス編成替えなどという、学生にとっては嬉しいかもしれないけれども、教員にとってはややこしいことをやってしまいました。このため、自分のクラスだけでなく、I類とVI類の全クラスの集計も引き受けたために、結局、僕を通して成績を報告したのは、I類とVI類の全学生、VII類の半数の学生ということで全部で400人以上になったのではないでしょうか。文系の先生はもっと多いかもしれないけれども、ぼくとしては最高記録です。

続きを読む »

BibTeX で DOI, ISBN, ISSN を出力しない方法

マニアックですみません。ほとんど自分のためのメモです。

  1. 元になる .bst ファイルを手元にコピーする。
  2. .bst ファイルのなかから DOI, ISBN, ISSN 用の関数の定義を探して、以下の要領で修正する。

Before:

FUNCTION {format.doi}
{ doi empty$
    { "" }
   { new.block "\doi{" doi * "}" * }
  if$
}

After:

FUNCTION {format.doi}
{ doi empty$
    { "" }
    { "" }
  if$
}

if 文は無駄なのではないか、気持ち悪くないのか、などという突っ込みはなし。人生は短く、ほかに悩むべき有益なことは多い。

今までは、投稿直前に .bbl ファイルをエディタで修正していました。そのヤバさから開放されて嬉しいです。


節電警報

一昨日、今学期最後の授業に向って構内を歩いているときに、向うの方でドサッという音がするので目をやるとなんと鳥でした。鳥も熱中症になるんでしょうか?みなさん、猛暑への対策は大丈夫でしょうか。

ところで、この季節は東工大名物の節電警報なるものが始終放送されます。全学の電気消費量を減らすための工夫です。暑い真夏の午後、建物ごとにこんな放送があります。

お知らせいたします。節電警報が発令されました。これより30分間、実験上、支障がない部屋の節電をお願いいたします。

この放送があるとエアコンの電源を切って節電に協力するわけです。

ところで、東工大の同僚のみなさんは、節電警報が切れた時間にエアコンのスイッチを入れ忘れて、いよいよ暑さに耐えられなくなってエアコンのスイッチを入れたとたんに次の節電警報が放送されたという経験があると思います。わたしも何度も経験しました。そんなあなたに以下のスクリプトをお送りいたします。

#!/bin/bash

length=1800
btime=`date +%s`
etime=`expr $btime + $length`
fmt="+%H:%M"

echo "`date -r $btime $fmt` に節電警報が発令されました。`date -r $etime $fmt` まで我慢です."

if [ -x /usr/bin/say ]; then
    say "Thank you for respecting the electricity saving campaign starting from `date -r $btime  $fmt` upto `date -r $etime $fmt`."
fi

sleep $length

echo "お元気ですか?`date -r $btime $fmt` に発令された節電警報分が解除される時間になりました."

if [ -x /usr/bin/say ]; then
    say "Thank you for participating the electricity saving campaign.  Feel free to turn on the air conditioner."
fi

節電警報が放送されてから30分後にその警報期間が過ぎたことを知らせてくれます。Mac の場合は音声でそのことを通知してくれます。


コメントスパムに対する経済的な防御

個人用ブログにコメントスパムに攻撃され始めて困っているという話をしました。WP SpamFree という JavaScript を使ったコメントスパムフィルタの効果に翳りが見えてきたのです。このフィルタは

コメントページに JavaScript を埋め込み、それを正しく解釈していないコメントはスパムを見做すという仕組みのようです。つまり、スパマーも JavaScript を正しく解釈できないと投稿できないようになっています。これに加えて、Cookie を併用できます。

WP SpamFree のような技術的なハードルを高めることでスパムを避ける方策が使えなくなってしまったので、次に登場するのは経済的な対策ではないでしょうか。

続きを読む »

解体JAKLD初日

JAKLDは京大の湯浅先生が携帯電話のJVMで動作させることを狙ってお作りになったSchemeもどきのLispです。先日、開催されたばかりの情報処理学会プログラミング研究会でほぼ二年ぶりにお会いしたときに、JAKLDの名前の由来をお訊ねしたのですが、そのご返事に唖然としてしまいました。ちょっと考えてみて下さい。

続きを読む »

東工大教育賞

本日、東工大教育賞優秀賞をいただきました。

本学の一年次情報教育を支える二つの科目、コンピュータリテラシとコンピュータサイエンス入門のうち、前者についての活動が評価されたことになります。継続的に情報科目を支援して下さった方々、コンピュータリテラシの授業を担当して下さった方々、推挙して下さった方々に感謝します。

続きを読む »

« 古い投稿