この記事をクリップ! twitterでつぶやく

Zend_Locale のキャッシュを無効にする

この記事は、Zend Framework 日めくり Calendar 2012への4日目のエントリとなっています。

Zend Framework の小ネタです。
Zend_Locale のキャッシュを無効にするには、Zend_Locale::disableCache(true); を呼ぶとマニュアルにはあります。

Speed up Zend_Locale and its subclasses

ですが、実際にはこれではダメで、次のようなコードで置き換える必要があります。
Zend_Locale_Format::setOptions(array('disableCache' => true));

これはZend_Locale::disableCache(true);と同じ効果を持つので、両方書く必要はありません。

disableCache() を呼んでも Zend_Locale_Format の内部状態は影響を受けず、さらに Zend_Locale_Format の機能が利用される際に、そちらで上書きされてしまうのが原因です。
Zend_Date のように Zend_Locale_Format へ依存しているクラスを利用する場合、Zend_Locale::disableCache() は機能しないでしょう。

一見バグのようですが、どうでしょう?
単純に Zend_Locale::disableCache() の中で Zend_Locale_Format::setOptions(array('disableCache' => true)); を呼べば良いかというと、ちょっと違う気がします。
設計から見直す必要があるでしょうか。

以上の内容とは別に、キャッシュが一度セットされると disableCache() で無効にできないというバグがありましたので、そちらは patch を書いておきました。

[#ZF-11966] Problem with disabling cache in Zend_Locale

つたない英語なのでフォロー頂けるとありがたいです(^^;
この記事をクリップ! twitterでつぶやく

ガロアの読書会その後

昨年のことになりますが、ガロア生誕200年を記念した読書会は無事に終えることができました。

当日は池袋のスタバへ開店前から駆けつけ午前の部を終えました。
一人読書会を覚悟していましたが、昼の部にお一人飛び入りでご参加頂き、夜の部でさらにお一人ご参加くださいました。(ありがとうございます!)

代数方程式の公式を求めるとはどういうことかを考え、5次以上ではそれが存在しないことをアーベルのアイデアを参考に証明しました。
さらに、体とは何か、群とは何か、それらがどのようにガロア理論に結びつくのかを俯瞰しました。
式変形も全員が納得いくレベルまで行間を埋め、時にはくだけた言葉で納得のいくまで徹底的に話し合いました。厳密性に欠ける内容も多かったとは思いますが、とても貴重な経験でした。

ガロア理論は「代数学の華」とはいえ、やはりツールの一つに過ぎないのだなぁ、という印象です。
それ自身とても強力で、興味深く、また簡単に理解できるものでもありませんが、本当に面白いのはそれをどう応用するかだと感じます。

ガロア理論ありきで、ただそれだけを理解したくて数学書を読み進めてきましたが、しばらく代数学の基本からやりなおしたいです。
読み飛ばした箇所や、まだ解いてない例題も多くあります。改めて見るとそれらも十分に興味深く面白い内容です。それに、これらの問題が自力で解けないようではガロア理論を使いこなすのは、やはり難しいと感じます。
当然のことですね…(^^;

当面は岩永さんの『代数学の基礎』を丁寧に読み進めていきます。今まで読んだ代数の教科書で一番易しく親切に感じます。
余力があれば、少し難しいかもしれませんが桂さんの『代数学I〜III』を併読しながら章末問題を考えます。こちらは自分が初めて定理と定理の繋がりが見えて感動した教科書です。

そして将来的には類体論まで進みたい!というのが今の目標です。(もちろんガロア理論も登場します!)
この記事をクリップ! twitterでつぶやく

大根掘り大会2011

今年も大根掘りの季節になりました!
本当は先週の予定でしたが大根の育ち具合が悪く、1週間待ってみてもやはり悪く、さすがにこれ以上は延ばせないので本日決行となりました。

それでは掘ります〜



掘りました〜



干しました〜



なぜか今年は干しても干しても終わらない…と思っていたら、なんと全部で300本!(ピッタリ!)
小ぶりだったとはいえ例年より100本近くも多い収穫でした。干し具合と漬け具合もよーく見計らわないとですね。
小さいので樽から出して食べきる量にはちょうど良さそうです(笑)

この記事をクリップ! twitterでつぶやく

とちぎRuby会議04参加&Vi Boot Camp #1開催!

昨日、Vi Boot Camp と称して群馬で Vi を習得するイベントを開催しました!

Vi Boot Camp in Gunma : ATND

また、前日の3日には、とちぎRuby会議04 へ参加してきました!
せっかく那須まで行ったのに、遅刻してしまって聞きたかった話はあまり聞けず…
最近PHPアプリをAzureに乗せる仕事が多いので、artonさんの演能と能楽堂は気になりました。
EnnouとFastCGIってどう違うのか?後者はHttp.sysで動いていないのだろうか?

それと懇親会では懐かしい話も聞けて良かったw
Vi Boot Campの宣伝もさせて頂いて、あわよくば一緒に群馬の我が家へ帰ってもらって翌日のイベントに…なんて事も半分本気で考えましたが実現しませんでした(笑)

そして翌日は Vi Boot Camp です!Vi がメインですが、その他に今回は下記の4つのミッションを設けました。


空は雲一つない快晴!風もそれほど強くない…と感じましたが、利根川まで出てみると意外と風が強く、なんと赤岩渡船が欠航となっていました。でも冬場はほとんど同じような風なので、暖かくなるまで渡船ミッションは厳しいかもしれませんね。。

慌てて埼玉県側まで迎えに行くというハプニングがありましたが、その他は順調にクリア!写真だと分かりにくいですが、富士山も大きくくっきりと見えました。




鳥めしでパワーがみなぎった所で、50分ほど今回の趣旨と合わせて Vi について熱く語りました。
その時のスライドは公開していますが、本当に大切なことは口頭でお伝えしています。


演習の時間では参加者の方に実際に Vi 触れて頂きます。ネット上にもチュートリアルはいくつか見つかりますが、どれも「とりあえず使ってみよう」というものばかりです。でも Vi は本来「とりあえず使ってみる」ことの難しいエディタなので、矛盾しています。それを知らずに始めてしまうと結果的に大きく遠回りしたり、結局便利に使うことができないまま、ということにもなりかねません。
私の考えるもっとも効率の良い方法で、Vi コマンドを体験します。ほぼ全てのViコマンドに触れるのに、1時間かかりませんでした。参加者の方からも、Vi 習得は簡単だとは思わないけれど、思ったより大変でもなさそうだと思えた、との声も頂きました。

今回は全初めてで色々と不備はありましたが、思ったよりもグダグダにならずに進行できた…ように感じています(^^;反省点は次に活かします。
群馬といっても都内から電車で1時間程度なので、ぜひお気軽にお越しください。

それと同じ群馬県で次のような勉強会も開催されています。北関東でも技術者に会えます!




この記事をクリップ! twitterでつぶやく

ガロア生誕200年記念読書会やります

10月25日(火)に都内で、ガロア生誕200年を記念した読書会を開きます。

ガロア生誕200年記念読書会

前提知識をいっさい問わずに楽しめるようガロア理論を紹介します。
雑談から専門的な話まで、この日はガロアを偲んで一日を過ごします。

少しでも興味を持って頂けたら、お気軽にご参加ください!
この記事をクリップ! twitterでつぶやく

ブルグミュラー修了!

今週の教室で、ついに乗馬の合格をもらえました!

これでブルグミュラー25の練習曲もひとまず修了です。
発表会の曲練習のため1年のうち実質半分しか取り組めませんでしたが、2年半前に始めて平均1曲につき1ヶ月前後かかりました。

長かった〜!

…でも実は、教室では飛ばした曲がいくつかあります(^^;
1つが「子供の集会」で、習い始めで重音のスラーはとても厳しいと想像しました。「せきれい」「おしゃべり娘」「帰郷」は比較的テクニックよりの曲だったためです。

ブルグミュラーは本当に25曲すべてが良い曲なので、できれば先生にみてもらいたいと思いましたが、ここは先に進んで、より適切な課題に時間をかけようとの判断です。
やり残した曲は独学で取り組みます。なので正確には21曲だけの修了ですね。

つぎはプロコフィエフの子供のための音楽を1曲だけ練習する事になりました。
合同練習会で教えて頂いた曲で、すっかり好きになってしまい頭から離れません(笑)

そして、憧れのソナチネが待っています!
この記事をクリップ! twitterでつぶやく

twitterのこと

使い方、楽しみ方は人それぞれだと思います。その多様性がまた面白いと感じます。
いまだにtwitterが良く分かりませんが、一つだけ言えるのは、「所詮つぶやき」ではないという事です。

以下に現在(2011/6/5)の自分のスタンスを挙げておきます。

・ツイート内容
ネタTWを中心に、主にプログラミング・数学・ピアノ・本・群馬・食・今についてつぶやきます。
面白い事つぶやきたい。

・フォロー
自分のTW内容に近いと感じた人はフォローするかもしれません。印象的なリプライをもらうとフォローするかもしれません。

・フォロー数
定期的にフォローの整理をします。TLを丁寧に追いたいので、あまり増やしたくはありません。

・リムーブ
長期間お互いに一度もリプライ、ふぁぼり、RT等が生じなかった場合、リムーブするかもしれません。自分からフォローしておいてリムーブすることもあり得ます。リムーブしても再フォローするかもしれません。

・リスト
リストは作りません。
アイコンを見て無意識に読み飛ばすくらいならリムーブします。TL以外を追うつもりはありません。

・ブロック
ブロックはしません。

・タイムライン
余裕があれば遡って追いかけます。
TW中のURLは積極的に辿ります。書籍名があると高い確率でポチります。

・リプライ
リプライをもらった場合は、できるだけ返します。
あまりに内容の無いやりとりが続くと辛くなりますが、掛け合いも楽しみたい。

・エアリプライ
ネタTW時に多用します。

・公式RT
RTされると喜びます。積極的にRTはしません。

・非公式RT
非公式RT批判には同意できるものが多いですが、目くじらは立てません。
自分へのメンションがあった際、リプライのモチベーションはTL上の新規TWと同程度です。
一方で非公式RTの形で初めてふぁぼりたくなるような秀逸なTWもあります。その形でないと表現できないと判断した時のみ非公式RTします。

・ふぁぼり
ふぁぼられると喜びます。積極的にふぁぼります。自分のふぁぼりを読み返してはニヤニヤしてます。
ふぁぼり、ふぁぼられるだけの慎ましやかな関係も好きですが、たまにはリプライしてもよいでしょうか。


※以上の事は、フォロワーさんに期待したり、配慮を求めるものでは一切ありませんし、私自身その時の気分で変わる可能性も十分にあります。
この記事をクリップ! twitterでつぶやく

数学のこと

まず自分の立場を明確にしておきます。
僕は趣味で数学を学んでいますが、大学での専攻は数学ではありません。
独学で、趣味の数学ですが、ブログに書く以上は、厳密さへの配慮に関して努力は惜しみません。いつでもツッコミは大歓迎ですし、間違い等はご指摘頂けるとありがたいです。

中学、高校、大学と数学はずっと好きでした。ですが高校での成績は赤点を取るほど悪く、大学に入ってからも教養の線型代数さえ単位を取得できないまま、とうとう中退してしまいました。
それでも数学が好きな気持ちは変わらず、社会人になってからも興味が消えて無くなるることはありません。

ある日、寝転がりながら偶然見ていたTV番組で、ガロワという青年について数学者が熱く語っていました。
(最近になって知りましたが、数学者は藤原正彦さんで、番組はNHKの「天才の栄光と挫折」というものだったようです。文末にリンク有。)

その番組で、5次以上の一般方程式には代数的な解法が存在しないという事実を初めて知りました。中学校で2次方程式について習い、高校でも3次、4次について根の公式がある事を習いましたので、5次以上で話が異なるというのは大変な驚きです(笑)
また、身近に感じていた整数や有理数が、環や体という聞いた事もない言葉で定義されている事も興味をそそりました。

それまで自分が好きだと思っていた数学は、計算寄りの、どちらかというと算数に近いものだったのかもしれません。
以来すっかりガロワと現代数学のとりこになり、長く険しい独学の道程が続いています。



この記事をクリップ! twitterでつぶやく

Perl Internals - our と use vars の違い

2011/06/03 02:14:58
our宣言とvarsプラグマは等価じゃないです。 #Perl

確かに等価ではありませんので、その違いを詳しく考えてみたいと思います。

まず、ourはレキシカルスコープを持ちますが、varsプラグマにはそれがありません。

ourの場合、スコープを抜けての使用はエラーになります。

use strict;
use warnings;
{
    our $foo = "foo";
}
warn $foo; # Global symbol "$foo" requires explicit package name

varsプラグマの場合はuse vars以後であれば、レキシカルスコープはもちろん、ファイルスコープを超えても使用が許されます。スコープが無いのでno varsのような使い方はできません。

use strict;
use warnings;
{
    use vars qw($foo);
    $foo = "foo";
}
require 'foo.pl'; # $fooを使用している
warn $foo; # foo

また、名前の決定にはレキシカルスコープが優先されるため、同名のレキシカル変数が存在するスコープにおいてvarsプラグラマは意味を持ちません。(そのスコープを超えて初めて効果を発揮します。)

次のようにourは正しくスコープ内で認識されます。

use strict;
use warnings;
my $foo="bar";
{
    our $foo = "foo";
}
warn $foo; # "bar"

以下は同名のmy変数が存在するため、上書きに参照されるのはvarsプラグマで宣言したグローバル変数にはなりません。

use strict;
use warnings;
my $foo="bar";
{
    use vars qw($foo);
    $foo = "foo"; # my変数を上書き
}
warn $foo; # "foo"

vars.pmの中身は、宣言した変数をその場で名前空間に輸入する単純なコードです。

ourの場合はmy変数と同様に字句解析されます。その残骸が次のようなコードでも確認できます。

$ perl -MO=Showlex -Mstrict -Mvars=\$z -e 'my $x; our $y; $z;'
Pad of lexical names for comppadlist has 3 entries
0: SPECIAL #1 &PL_sv_undef
1: PVNV (0x100827dc8) $x
2: PVMG (0x100827df8) $y
... 

ourで宣言された変数$yはスクラッチパッド上に存在しないものの、そのシンボルテーブルには名前が残っています。

strict varsプラグラマが効いていると、修飾されない名前でのグローバル変数へのアクセスが禁止されます。ourやvarsプラグマは、それを解除するための方法とも考えられます。

それが全く異なるやり方で実装されているため、上記のように違いが表に出る事もあるようです。

ただ、通常は問題になりませんね(笑)

この記事をクリップ! twitterでつぶやく

趣味としてのピアノ

本気でピアノが上手くなりたいと思ったら、1日1時間くらいの練習では全く足りません。
子供だってそれ以上弾いているのだから当然ですね。

最低でも3時間は弾きたいところですが、本当にそんなことをしてしまってよいのだろうか…
年齢的にも人生で取り返しの付かない事にもなりかねないような…

ピアノが楽しいことには変わりないので、今はハノン、ツェルニー、ブルグミュラーを毎日1時間ほど弾いて、レッスンの進み具合もぼちぼちといった感じです。
自分のピアノへの情熱はその程度のものだったという事だろうか。