カレンダー 2009 ― 2008年09月06日 00時30分
例によって 2009年 pdf カレンダーを作りました。以下のサイトから自由にダウンロードして利用してください。
http://www.zeny.org/calendar/
カレンダーを制作する理由は以前書いたが、カレンダーの制作に関していくつかポリシーがある。
・30日、31日がはみ出る月があっても前の週に纏めない
大抵のカレンダーは23/30、24/31などと纏めていたりするが、他の月とのバランスの都合で単にその月だけ 6週になるのをデザイナーが嫌がっているわけだ。当然のことながら30日も31日も価値が低下するわけではない。時間が平等であるように日もすべて平等である。それらの日が特別スケジュールが少いというようなことがあるわけでもない。
最近はきちんと 6週にしているカレンダーがたまにあって好感が持てる。私のカレンダーの場合、下の理由からデザイン上のバランスはあまり考える必要がない。
・月ごとの区切りを曖昧にしたい
本来であれば一年繋がっているようなカレンダーを制作したいのだが、そんなことをすると今度は見づらくなるという理由からそこまで極端にしていないが、各月のカレンダーの前後に余分に玉を入れて、繋がっていることを意図したデザインにしている。当初は前後それぞれ一箇月程度入れていたが、スペースを取るため半月程度拡張する程度に留めている。(前後一箇月も入れると誤植が増大する可能性が増えるという理由もある。)
月が替われば気分も改まるというほどでもないし、実生活ではちょっとした区切り程度に認識されている程度ではないかと思うので、それをカレンダーにも反映したいということだ。営業などは毎月の売上とかいう都合で結構煩いのかもしれないが、月の切れ目の曜日が毎月違うというのは曜日との兼ね合いにしても、毎月の日数の違いということにしても合理的とはいえないので、月の替りは曖昧なくらいでちょうどいいと思っている。そこらを合理的にするのであれば毎月28日にして、12月月だけ長くするか、余った日を13月にすればいい。そうすれば毎年カレンダーは 2ページほど制作すれば間に合うことになるが、何でも合理化すればいいというものでもない。
玉だけで見せられるようなカレンダーであれば写真なんぞは本来不要なのだが、撮った写真を HDD の肥やしにしておくのも勿体ないので、そこから選んで使っている。まあ、カレンダーの制作を始めた理由からすると綺麗な写真も載せたいところではあるが、腕前という成約がある以上、これもどうしようもない。自分で制作するカレンダー以上のカレンダーを入手することが殆どないので自作のもので満足しているというわけだ。まあそれだけだとちょっと勿体ないので、こうやって公開している。お金をいただくほどのものでもないので無料で配布しているわけだ。
http://www.zeny.org/calendar/
カレンダーを制作する理由は以前書いたが、カレンダーの制作に関していくつかポリシーがある。
・30日、31日がはみ出る月があっても前の週に纏めない
大抵のカレンダーは23/30、24/31などと纏めていたりするが、他の月とのバランスの都合で単にその月だけ 6週になるのをデザイナーが嫌がっているわけだ。当然のことながら30日も31日も価値が低下するわけではない。時間が平等であるように日もすべて平等である。それらの日が特別スケジュールが少いというようなことがあるわけでもない。
最近はきちんと 6週にしているカレンダーがたまにあって好感が持てる。私のカレンダーの場合、下の理由からデザイン上のバランスはあまり考える必要がない。
・月ごとの区切りを曖昧にしたい
本来であれば一年繋がっているようなカレンダーを制作したいのだが、そんなことをすると今度は見づらくなるという理由からそこまで極端にしていないが、各月のカレンダーの前後に余分に玉を入れて、繋がっていることを意図したデザインにしている。当初は前後それぞれ一箇月程度入れていたが、スペースを取るため半月程度拡張する程度に留めている。(前後一箇月も入れると誤植が増大する可能性が増えるという理由もある。)
月が替われば気分も改まるというほどでもないし、実生活ではちょっとした区切り程度に認識されている程度ではないかと思うので、それをカレンダーにも反映したいということだ。営業などは毎月の売上とかいう都合で結構煩いのかもしれないが、月の切れ目の曜日が毎月違うというのは曜日との兼ね合いにしても、毎月の日数の違いということにしても合理的とはいえないので、月の替りは曖昧なくらいでちょうどいいと思っている。そこらを合理的にするのであれば毎月28日にして、12月月だけ長くするか、余った日を13月にすればいい。そうすれば毎年カレンダーは 2ページほど制作すれば間に合うことになるが、何でも合理化すればいいというものでもない。
玉だけで見せられるようなカレンダーであれば写真なんぞは本来不要なのだが、撮った写真を HDD の肥やしにしておくのも勿体ないので、そこから選んで使っている。まあ、カレンダーの制作を始めた理由からすると綺麗な写真も載せたいところではあるが、腕前という成約がある以上、これもどうしようもない。自分で制作するカレンダー以上のカレンダーを入手することが殆どないので自作のもので満足しているというわけだ。まあそれだけだとちょっと勿体ないので、こうやって公開している。お金をいただくほどのものでもないので無料で配布しているわけだ。
unix コマンドの威力 ― 2008年09月19日 23時30分
いつまでたっても Linux 初心者の私でも、もう 10年以上 Linux を使っている。
unix のコマンドの勉強をするといろんなものが出てくる。それこそ単機能のコマンドがぞろぞろ出てくるが DOS と違うのはこれらのコマンドをパイプで繋げて、あるコマンドの出力を次のコマンドに渡せるから複雑な処理もプログラムを書かずに済ませることができるとそういう本にはよく書いてある。私も他人に説明するときにたまにそういうことを言う。ところが実際にはあまりそれで役に立ったということがこれまではなかった。
実際には DOS なり Windows のコマンドプロンプトでもいくつかのコマンドはパイプで繋げることができる。ところがすべてではない。よく使うのが more だが、逆に使えるのもそれくらいしかないのではないか。
先日、仕事でデータを加工するツールの作成を頼まれた。テキストファイルだったりテキスト主体のバイナリファイルから必要なものを抜き出したり、加工したりして欲しいというわけだ。こういう場合、通常であればプログラムを書くことになる。ところが相手はできるだけ早く欲しいという。説明を聞く限りでは unix のコマンドと perl などの正規表現を扱えるツールを使えば、比較的簡単にできてしまえそうな内容である。
データが Windows に載っているので、cygwin という Windows 上に unix 環境を構築するようなツール上で作業にとりかかった。実はその前に Visual Basic 2005 を立ち上げてはみたものの、フォームにボタンを配置したところで何をすればいいのか頭が回らず途方に暮れてしまった。
一方 cygwin の作業はウェブで unix コマンドを調べながら適当にコマンドでデータの処理をしてみたら数時間で前処理は完了してしまった。この調子でいけば翌日にはできてしまうのではないかと思って今度は perl でスクリプトを書き始め、少し動き始めたところで説明したらお客に渡すから cygwin も perl も駄目だと言われてしまった。
仕方がないので Windows のコマンドプロンプトで同じようなコマンドが使えるか調べてみたらほぼ全滅だった。確か使ったコマンドは cat, cut, sort, sed, grep, uniq くらいではなかったかと思う。Windows に標準であるのは sort くらいのものだ。簡単なツールを組合せて僅かの時間でできてしまった処理を今さらプログラムで書く気にもならない。何とかコマンドプロンプトでできないものかと探せば unix の一般的なコマンドを Windows に移植した UnixUtils というのが GPL で配布されているというので早速ダウンロードしてみた。
いや、すばらしい。同じコマンドが揃っているので、そのまま同じ処理ができてしまった。ところが困ったのはコマンドプロンプトのパイプ処理の貧弱さだ。cygwin で作ったスクリプトがそのままでは意味不明のエラーを吐いて使えない。パイプが動作しないのだ。まったく Windows のコマンドプロンプトは腐っている。
仕方がないので一時ファイルに出力して、それで処理するように改造して何とか動作するようになった。ところがメインの処理は perl でやるつもりだったが、お客に渡すからと言われているので、泣く泣くプログラムを書いた。コンパイラも探すのが面倒だと思っていたら MSYS 上で gcc が使えるというので、今度はそれをインストールして書き始める。
ただ、厄介な前処理はコマンドにやってもらっているので、やるべき処理はかなり省略できている。uniq とか sort がなければそれらも全部書かなければならない。その程度のソースなら探せばウェブでもあるだろうが、それにしてもカスタマイズするわけだからデバッグしなければならない。それを省略できるだけでもかなりの時間の節約だ。
ところが perl で書き始めていたところは一から書き直しだ。それでも何とか二日ほどで仕上げることができた。
それに気をよくしてくれたのか、それならというのでさらに二つほど同じような加工を頼まれた。今度は社内で使うものだから cygwin でも何でも使ってくれというので cygwin と perl で書いたら合せて一日ほどでできてしまった。
テキストの加工となると正規表現と置換が必須である。後で調べてみたら C 言語用の正規表現ライブラリというのもあるらしいので、プログラムでも正規表現が使えるようだが、もともと C 言語は文字列をちょいちょいと扱えるようにはなっていないので、perl と較べると手間がかかる。そういう私も perl を手足のように使いこなせているわけではない。それでも少し調べた程度でスクリプトが書けてしまうわけだから、ありがたいものだ。ただ、厄介な正規表現についてはウェブの解説を参考にしたり一部はほぼそのまま流用させてもらったりした。
それで時間が浮いてしまい、暇になった。以前購入したオライリーの「正規表現」を読んでいなかったので今頃になって読んでいる。これはこれで勉強になっている。勉強と加工ツールの成果を今個人的に処理しているテキストデータ用の perl スクリプトで作ってみたら、これまた驚くほど簡単にできてしまった。
perl でスクリプトを組んだには組んだが、今回ほど unix のコマンドの威力に助けられたのも威力を実感したのも初めてである。なかなかいい経験になった。
ところで後から頼まれた仕事ををしているときに perl で処理すると途中から急に perl の出力がおかしくなった。どういう理由でそんな出力になるのか理解に苦しむ事態に陥った。いろいろ調べた挙句、データファイルをバイナリエディタで開くと改行コードが LF+CR になっていた。普通は CR+LF なのだが、どういうわけかそういうことになっていた。最初に作りかけのスクリプトで処理したものをテキストエディタで開くとよくわからない改行が挿入されて怪訝に思っていたのだが、それですべての謎が解けた。perl には改行を指定する特殊な変数 $/ というのがあるが、これに CR+LF を設定すると LF+CR をうまく処理できず不審な挙動をするのだった。
久しぶりにプログラムを書いたりして(一応はプログラマなのだが)いろいろ勉強になった一週間だった。
unix のコマンドの勉強をするといろんなものが出てくる。それこそ単機能のコマンドがぞろぞろ出てくるが DOS と違うのはこれらのコマンドをパイプで繋げて、あるコマンドの出力を次のコマンドに渡せるから複雑な処理もプログラムを書かずに済ませることができるとそういう本にはよく書いてある。私も他人に説明するときにたまにそういうことを言う。ところが実際にはあまりそれで役に立ったということがこれまではなかった。
実際には DOS なり Windows のコマンドプロンプトでもいくつかのコマンドはパイプで繋げることができる。ところがすべてではない。よく使うのが more だが、逆に使えるのもそれくらいしかないのではないか。
先日、仕事でデータを加工するツールの作成を頼まれた。テキストファイルだったりテキスト主体のバイナリファイルから必要なものを抜き出したり、加工したりして欲しいというわけだ。こういう場合、通常であればプログラムを書くことになる。ところが相手はできるだけ早く欲しいという。説明を聞く限りでは unix のコマンドと perl などの正規表現を扱えるツールを使えば、比較的簡単にできてしまえそうな内容である。
データが Windows に載っているので、cygwin という Windows 上に unix 環境を構築するようなツール上で作業にとりかかった。実はその前に Visual Basic 2005 を立ち上げてはみたものの、フォームにボタンを配置したところで何をすればいいのか頭が回らず途方に暮れてしまった。
一方 cygwin の作業はウェブで unix コマンドを調べながら適当にコマンドでデータの処理をしてみたら数時間で前処理は完了してしまった。この調子でいけば翌日にはできてしまうのではないかと思って今度は perl でスクリプトを書き始め、少し動き始めたところで説明したらお客に渡すから cygwin も perl も駄目だと言われてしまった。
仕方がないので Windows のコマンドプロンプトで同じようなコマンドが使えるか調べてみたらほぼ全滅だった。確か使ったコマンドは cat, cut, sort, sed, grep, uniq くらいではなかったかと思う。Windows に標準であるのは sort くらいのものだ。簡単なツールを組合せて僅かの時間でできてしまった処理を今さらプログラムで書く気にもならない。何とかコマンドプロンプトでできないものかと探せば unix の一般的なコマンドを Windows に移植した UnixUtils というのが GPL で配布されているというので早速ダウンロードしてみた。
いや、すばらしい。同じコマンドが揃っているので、そのまま同じ処理ができてしまった。ところが困ったのはコマンドプロンプトのパイプ処理の貧弱さだ。cygwin で作ったスクリプトがそのままでは意味不明のエラーを吐いて使えない。パイプが動作しないのだ。まったく Windows のコマンドプロンプトは腐っている。
仕方がないので一時ファイルに出力して、それで処理するように改造して何とか動作するようになった。ところがメインの処理は perl でやるつもりだったが、お客に渡すからと言われているので、泣く泣くプログラムを書いた。コンパイラも探すのが面倒だと思っていたら MSYS 上で gcc が使えるというので、今度はそれをインストールして書き始める。
ただ、厄介な前処理はコマンドにやってもらっているので、やるべき処理はかなり省略できている。uniq とか sort がなければそれらも全部書かなければならない。その程度のソースなら探せばウェブでもあるだろうが、それにしてもカスタマイズするわけだからデバッグしなければならない。それを省略できるだけでもかなりの時間の節約だ。
ところが perl で書き始めていたところは一から書き直しだ。それでも何とか二日ほどで仕上げることができた。
それに気をよくしてくれたのか、それならというのでさらに二つほど同じような加工を頼まれた。今度は社内で使うものだから cygwin でも何でも使ってくれというので cygwin と perl で書いたら合せて一日ほどでできてしまった。
テキストの加工となると正規表現と置換が必須である。後で調べてみたら C 言語用の正規表現ライブラリというのもあるらしいので、プログラムでも正規表現が使えるようだが、もともと C 言語は文字列をちょいちょいと扱えるようにはなっていないので、perl と較べると手間がかかる。そういう私も perl を手足のように使いこなせているわけではない。それでも少し調べた程度でスクリプトが書けてしまうわけだから、ありがたいものだ。ただ、厄介な正規表現についてはウェブの解説を参考にしたり一部はほぼそのまま流用させてもらったりした。
それで時間が浮いてしまい、暇になった。以前購入したオライリーの「正規表現」を読んでいなかったので今頃になって読んでいる。これはこれで勉強になっている。勉強と加工ツールの成果を今個人的に処理しているテキストデータ用の perl スクリプトで作ってみたら、これまた驚くほど簡単にできてしまった。
perl でスクリプトを組んだには組んだが、今回ほど unix のコマンドの威力に助けられたのも威力を実感したのも初めてである。なかなかいい経験になった。
ところで後から頼まれた仕事ををしているときに perl で処理すると途中から急に perl の出力がおかしくなった。どういう理由でそんな出力になるのか理解に苦しむ事態に陥った。いろいろ調べた挙句、データファイルをバイナリエディタで開くと改行コードが LF+CR になっていた。普通は CR+LF なのだが、どういうわけかそういうことになっていた。最初に作りかけのスクリプトで処理したものをテキストエディタで開くとよくわからない改行が挿入されて怪訝に思っていたのだが、それですべての謎が解けた。perl には改行を指定する特殊な変数 $/ というのがあるが、これに CR+LF を設定すると LF+CR をうまく処理できず不審な挙動をするのだった。
久しぶりにプログラムを書いたりして(一応はプログラマなのだが)いろいろ勉強になった一週間だった。
最近のコメント