2023-04-30

石炭のお香とベーコンの香水

鉄道を扱った月刊誌の中に「SL石炭香」というお香の広告を見つけました。お香というと香道という芸道があるほどなのに、石炭の臭いがするお香とは、なんとも趣味に走ったものが出てきたものだと感じました。SLが運転しているのを見かけた際に、石炭の臭いがするとノスタルジックな思いがします。そういう点では、石炭の臭いが嫌という気持ちはありませんが、お香になるとすれば話は別です。


しかしながら同じような発想の商品は、世界中にあるようです。アメリカ人は(全員ではないと思いますが)、カリカリのベーコンが好きらしいです。それが高じて、ベーコンの匂いがする香水まで作ってしまったという話題が「どこまでもベーコンを愛するアメリカ人が作った「ベーコン・バズーカ」そして香水まで!!」に掲載されていました。

 

洋の東西を問わず、発想は同じのようです。

2023-04-21

最近Firefoxがよく落ちる

以前からFirefoxを利用しています。更新が出たらすぐにアップデートしていて、現在利用しているバージョンはFirefox 112.0.1です。


困ったことに、1~2ヵ月前からFirefoxが頻繁に落ちるようになりました。タブを多く開くなど負荷がかかるような操作をすると落ちてしまいます。以前は同じ操作をしても落ちなかったので、明らかに最近調子が悪いです。


負荷がかからないように、腫れものを触るように操作すれば落ちないのかもしれませんが、落ちない保障があるわけでもありません。前にも同様の現象が繰り返された事がありましたら、アップデートで直りました。今回もそうなることを願っているのですが、今のところアップデートしても解決していません。

2023-04-20

Praise in public, criticize in private.

The Japan Times Alphaで連載されている「英語でお仕事101」の2023年4月14日号のテーマは「仕事の愚痴が多く、チームワークをそぐような態度のチームメンバーに注意するには?」でした。その最後で紹介されていた言葉が「Praise in public, criticize in private.」です。それは「称賛は人前で伝え、指摘や批判は1対1のときに、他の人がいないところで言う」という意味だと書かれています。


英語表現は知りませんでしたが、このような意味の言葉は以前から知っていました。私自身が部下を持った経験はないので、そのような事を実践する機会はありませんでした。しかし、そのような対応を受ける立場にあったことは、何度もあります。しかし自分の経験では、「Criticize in public, praise in private.」だった事の方が多かったような気もします。もしかすると、心理学的に言うところの、「過去の記憶を書き換えている」なのかもしれません。

2023-04-15

GNU BISONのNEWSファイルをTW5に取り込んでみる

BISON(とFLEX)を使いこなすようになるため、情報を収集しています。まだ学び始めたばかりなので、バージョンに拘る必要はないと思いますが、機能追加とかバグ修正の情報は押さえておきたいところです。また以前は利用できた機能が、新しいバージョンでは推奨されなくなることもあるかもしれません。そこでバージョンごとの情報をまとめた「リリースノート」のようなものを読んでみようと考えました。


GNUが提供しているソフトウェアは「NEWS」というファイルにリリースされたバージョンごとの情報が書かれており、BISONにもあります。かなり大きなファイルですので、読むには工夫が必要だと思いました。これまでも情報の整理にはTW5を利用しているので、これで何とかしてみます。

 

方向性としては、NEWSファイルをバージョン毎に分割して、それぞれをTW5のTiddlerに入れようと思います。ただし手作業でやっていたら、間違いも起こしますし、それ以前に、単純ではあるのですが、膨大な作業量を前にして、やる気を失ってしまうでしょう。そこでTW5にインポートできるJSON形式ファイルを生成して、一気に取り込もうと思います。

 

まずNEWSファイルは、次のような形式で書かれています。

 * Noteworthy changes in release 3.8.2 (2021-09-25) [stable]

  Fixed portability issues of bison on Cygwin.

  Improvements in glr2.cc: add support for custom error messages (`%define
  parse.error custom`), allow linking several parsers together.
 

UNIXのコマンド「csplit」を使えば、「Noteworthy changes in release」のような行を目印にファイルを分割できます。次に、分割した個々のファイルをJSON形式にします。TW5にインポート出来るJSON形式ファイルの構成は、何か適当なTiddlerをエクスポートしたファイルを覗いてみれば見当がつきます。少なくとも「title」、「tags」、「text」があれば良さそうです。また「type」は「text/plain」としておきます。

 

分割されたファイルをJSON形式に変換するスクリプトはAWKを使いました。あまり複雑ではありませんが、エスケープ文字の扱いなどに工夫が必要でした。最終的には、以下のようなスクリプトになりました。

#!/usr/bin/awk -f
BEGIN {
    tags = "\"NEWS BISON\"";
    type = "\"text/plain\"";
    text = "\"";
}
{
    gsub("\\\\", "\\\\");
    gsub("\"", "\\\"");
    gsub("\f", "");
    text = text $0 "\\n";
}
NR == 1 {
    sub("^.*Noteworthy changes in *", "");
    sub(" *\\[.*$", "");
    n = split($0, x, "[()]");
    if (n == 1) x[2] = "YYYY-MM-DD";
    title = "\"" x[2] " " x[1] "\"";
}
END {
    text = text "\"";

    printf("{\"title\":%s,", title);
    printf("\"tags\":%s,",   tags);
    printf("\"type\":%s,",   type);
    printf("\"text\":%s},\n", text);
}
#[EOF]

こうして作成したJSON形式ファイルを、ひとつのファイルに結合し、微調整を加えてからTW5にインポートしました。

 

スクリプト作成に若干手間取りましたが、NEWSをTW5に取り込めたので、次は一つずつ読んでいくことになります。これは地道に読んでいくしかないでしょう。

2023-04-14

YACCやLEXの活用方法

UNIXでは伝統的にYACCやLEX(もしくはBISONやFLEX)が入っていますので、使いたければ、いつでも使えます。しかしながら、何に使うのかというと、コンパイラ作成というのが標準的な答えかもしれません。しかし独自に言語を開発する必要性がある状況というのが、ちょっと思いつきません。またよくあるのが、電卓を作るという例です。言語を開発するのに比べれば電卓を作るのは簡単だと思いますが、電卓ならUNIXにはbcが入っているはずだし、なんならawkなどを使っても計算機代わりにはなると思います。そういう訳でYACCやLEXを活用するための良い事例が思いつきません。


事例が思いつかないならYACCやLEXを使わなければ良いだけではないのかと言われれば、まぁその通りです。そうではあるのですが、YACCやLEXにはポテンシャルを感じるので、なにか上手い使いみちがあるのではないかという考えが捨てきれません。

 

「上手い使いみちを発見する」→「YACCやLEXで開発する」→「良かった良かった」という展開になれば最高ですが、第1段階から躓いてしまっているのが現実です。そうなら逆に「上手い使いみちを発見」できていなくても、ひとまず「YACCやLEX」を使いこなせるようにしておくのも一つの手かと思います。YACCやLEXが使いこなせていないから、上手い使いみちも見つからないのかもしれません。

 

「上手い使いみち」が云々とか言っていないで、例題としての電卓でも構わないので、まず最初にYACCとLEXを自由自在に使いこなせる状態を目指そうかと思います。

2023-04-13

図表

LaTeX2ε美文書作成入門』には、以下のような記述があります。

LaTeXには自動で図・表を配置するfigure環境,table環境があります。

 

つまり図には「figure環境」を、表には「table環境」を使うという事です。さらに同書では「表の場合はキャプションを上に書くというルールがあります」という記述もあります。このように図と表は、同じようなものではありますが、ルール上の違いもあります。ただし似たような使われ方をすることもあり、一般に「図表」のように呼ばれていると思います。

 

図表は、似ているとは言っても、別物ですので、「図」は図として、「表」は表として、別々に番号を振っていくものだと思っています。ところが先日読んだ書籍では、「図表」として文字通り同一視されていたので驚きました。図も表も区別することなく、「図表1では」とか「図表4には」とか、まとめて一連の番号を振っていたので、不思議でした。これは日本語で書かれている訳ですが、もし英訳しようとしてたら「図表1では」をどのように訳すのでしょうか。「Fig. 1」としたら「図1」となってしまいますし、「Table 1」としたら「表1」となってしまいますから、「図表1」に対応する英語表現は無いと思います。

 

仮に執筆者が勘違いをしていたとしても、書籍として出版されるまでの間に出版社の校正部門のチェックを受けるはずですので、その段階で指摘されるのではないかと思います。ところが「図表」のまま出版されてしまった事は、どのように理解すればよいのかわかりません。

2023-04-12

FLEXはGNUの一部だと今まで思っていた

古くからUNIXに含まれているツールの中にYACCLEXがあります。これらに関する記事では、実際に使用しているのは、YACCとLEXではなく、GNU BISONFLEXになっていることがよくあります。これらのツールは同時に使われることが多いので、オライリーの書籍などでも『Lex & Yacc』や『flex & bison』が出ています。

 

これまで私は、YACCとLEXをGNUが拡張したのがBISONとFLEXだと思っていました。ところがGNUのWebサイトにはBISONの情報はありますが、FLEXが見当たりません。不思議だと思っていたら、「Lexical Analysis With Flex, for Flex 2.6.2」のFAQに「Is flex GNU or not?」とあるのを発見しました。そこでは以下のように書かれています。

Well, strictly speaking flex isn't part of the GNU project.

 

なんと、そうだったのか。ずっとGNUのひとつだと思っていました。BISONがGNUの一員なんですから、FLEXもそうであっても良いと思いますが、そうなっていないのは、権利関係か何かで折り合わなかったということなのでしょうか。

2023-04-10

脳年齢

自宅で使っているWindows10には「Soliteaire & Casual Games」というトランプゲームが入っています。無料で遊べているので何も困っていませんが、有料版に変更することもできるようです。無料版は広告が入るので、ちょっと邪魔だとは思いますが、有料版にすれば広告が消えるのかもしれません。ですが、それだけのために有料版にするのは二の足を踏んでしまいます。

 

ともかく無料版なので広告が入ります。いろいろなゲームがあるようですが、脳年齢を測定してくれるようなパズルゲームもあるようです。広告を見ているだけなので、実際に遊んでみた訳ではありませんが、パスルを解いていくと「脳年齢」と称する数値が若くなっていくようです。広告では、途中で解くのに失敗して「残念でした」みたいなところまでしか見せてくれないので、最終的にどうなるのかは知りません。

 

さて「脳年齢」というものは、「100歳」よりは「50歳」の方が、「50歳」よりは「30歳」の方が、「脳年齢が若い」ということで「望ましい」と思われます。しかし若ければ若いほど良いのでしょうか?「30歳」よりは「20歳」の方が、「20歳」よりは「5歳」の方が、「脳年齢が若い」から素晴らしいというような、単純な話しなのでしょうか?とにかく「若ければ」良いのだということなら、「脳年齢」が「1歳」もしくは「0歳」が最強ということになります。もしゲームをクリアした時に「あなたの脳年齢は1歳でした!おめでとうございます」とかメッセージが出たら、馬鹿にされているような気がしなくもありません。 


ゲーム終了時に「あなたの脳年齢は94歳でした」とか出るよりは、「あなたの脳年齢は27歳です」のように出た方が、喜ぶ人は多いと思います。しかし「あなたの脳年齢は8歳でした」と出て喜ぶ人は、あまりいないんじゃないかと思います。ゲームというものは、高得点を出せば出すほど評価が高い(と一般に思われている)のを前提にしているので、「脳年齢」は必ずしもそうではない点で、あまり適切な指標にはならない気がします。

 

現実にそのゲームで遊んだ人たちがどう思うのかは別にして、そのゲームを製作した側は、どのように考えていたのでしょうか。ちょっと興味があります。

自転車用ヘルメット着用の義務化

2023年4月1日から自転車利用者のヘルメット着用が努力義務化されました。「自転車に乗る時はヘルメットを着用しましょう」のようなお知らせが政府、自治体、警察などからおこなわれています。今のところ着用している人は少ないようです。これから徐々に増えていくのか、相変わらずなのか分かりませんが、転倒時の頭部保護のためには、着用する習慣をつけた方が良いだろうとは思います。


ところで、ふと思ったのですが、各地のレンタサイクルではヘルメットの貸し出しをおこなってくれるのでしょうか。貸してくれるところもあるようですが、貸出用を準備していないところもあるようですし、そもそも他人が被ったヘルメットの利用を嫌がる人もいるようです。