自分のための印刷用のCSSを書いてみたので公開したいと思います。印刷用のCSSは巷に溢れていますが、このCSSの最大ポイントは YUI Library の reset.css と base.css を利用していると言うことでしょうか。
タグ:CSS
現在 PHP: Hypertext Preprocessor に続いて Python を勉強中。
Python は主にPython 2系からPython 3系への二種類のバージョンがあり、現在はPython 2系からPython 3系への移行期にあたるようなのでどちらを主に勉強するか迷ったのだが、個々は先を見据えてPython 3系を選択することにした。
ただPythonは唯でさえ日本語の情報が少ないのに、Python 3系の情報となる無いも同然。日々英語のドキュメントと格闘中です。
とりあえず習うより慣れろと言う事で、早速Python 3で血圧の情報 CSV に書き込んで保存するプログラムを作成して見ました。Python 3.2で動作することを確認しています。
本当は血圧の情報を保存するのと同時に Twitter へ投稿する機能も付加したかったのだが、Python 3系に対応したTwitter用のライブラリが見つからず断念した。Python で Twitter というと python-twitter というライブラリが有名でよく使用されているようですが、残念ながらこのライブラリは現在Python 3系には対応していないようです。
タグ:Python
現在 Web で動画を作成する場合色々な規格がありますが、主に使用されているのは以下の三つだと思います。
- Flash
- HTML5 の video要素
- Silverlight
- Javaアプレット
- GIF
これらを使用せず、動画を作成する方法はないかとふと思いついたのがdataスキーマを使用する方法。何はともあれ以下のファイルにアクセスしてもらったほうが早いと思う。
20111028122553_data-scheme_videotest.html
Mozilla FireFox7.1 で動作することが確認されたのだが如何であろうか。技術的には極めて簡単でJPEGを一枚一枚をファイル毎に base64 エンコードして、それらを JavaScript の配列として読み込んで、img要素のdataスキーマを高速で切り替えるというもの。
作成して見て気づいたのだが、この方法だとファイルサイズが如何せん大きくなってしまう。PCにもファイルの読み込みの時結構負荷かるようなので、改めて既存の動画フォーマットのありがたみが分かりましたよ。
タグ:dataスキーマ
最近再び砂時計について考えていたのだが、植草杏を如何捉えたらいいものかと迷っていた。なぜか杏のことを考察し始めると言葉には表しがたい複雑な感情が湧き上がってきて、完全に迷宮入りしてしまう。
そこでどうして言葉には表しがたい複雑な感情が現れ、迷宮入りしてしまうかを自分なりに考えて一定の結論を得た。つまり杏という人物を総体として捕らえるのがよくないのだと思う。漫画内で杏の行動や気持ちにも善い行動、善い気持ちというのと悪い行動、悪い気持ちという正反対の二つの側面が描写されていると思う。
これら両方を綯い交ぜにして杏という一人の人物を総体として捕らえるから、善い面と悪い面を両方を目の当たりにし考察する側が混乱してしまうのだと思う。だから結局のところ個別の事象ごとに判断しければならないのだと思う。
そうなってくると杏の色々な事象を考えなければならず遅々として進んでいないのだが、26歳冬・祈りの最後の行動に関して言えば、あれは美しいと思う。あの行動自身が善であるかは議論があると思うが少なくとも悪ではないことは確かであり、そして安全と言うのが何処に在るのかと聞かれれば、あの行動にあると言うし、賢明というのが何処に在るのかと聞かれれば、同じくあの行動にあると言える。
タグ:砂時計
自分はマークアップ言語を書くのが好きで、特にXSLTに関しては愛してるといっても過言ではないかもしれない。XSLT は XSL Transformations の略称で XSL の部分は Extensible Stylesheet Language の略称。XSLT は XML で記述するためマックアップ言語に分類できるが厳密にはスタイルシート言語なのかもしれない。
スタイルシートと言えば CSS が有名なのだが、XSLT と CSS 若干用途が違うため単純に比較する事は出来ないのだか、XSLT の変換処理はスタイルシート言語とは思えないほど非常に強力だと思う。たとえば文字列の変換一つとっても自分で関数を作成すれば相対URLを絶対URLへ変換することや、W3CDTF を RFC 5322 の日付形式に相互変換する事も出来る。正直 XSLT はもうプログラミング言語なのではないかと思う。
自分は今まで作成した XSLT を公開していませんでしたが、趣味で作成した XSLT をここに置いておきます。
XHTMLへ変換する XSLT には xhtml-template.xsl が必要です。
XML
- xml-to-json.xsl
- XML 形式で書かれたファイルを JSON 形式に変換する XSLT です。
- xml-to-jsonp.xsl
- XML 形式で書かれたファイルを JSONP 形式に変換する XSLT です。
- xml-to-plist.xsl
- XML 形式で書かれたファイルを Property list 形式に変換する XSLT です。
- xml-to-sexp.xsl
- XML 形式で書かれたファイルを SXML 形式に変換する XSLT です。
- xml-to-csv.xsl
- XML 形式で書かれたファイルを CSV 形式に変換する XSLT です。
- xml-to-text.xsl
- XML 形式で書かれたファイルを Plain Text 形式に変換する XSLT です。
- xml-to-svg.xsl
- XML 形式で書かれたファイルを SVG 形式に変換する XSLT です。
Atom 1.0
- atom-to-opml2.0.xsl
- Atom 1.0 形式で書かれたファイルを OPML 2.0 形式に変換する XSLT です。
- atom-to-rss3.0.xsl
- Atom 1.0 形式で書かれたファイルを RSS 3.0 形式に変換する XSLT です。
- atom-to-sitemap0.90.xsl
- Atom 1.0 形式で書かれたファイルを Sitemap 0.90 形式に変換する XSLT です。
OpenSearch 1.1
- opensearch-to-xhtmlrdfa1.0.xsl
- OpenSearch description document 1.1 形式で書かれたファイルを XHTML+RDFa 1.0 形式に変換する XSLT です。
OPML 2.0
- include-opml.xsl
- OPML 2.0 形式で書かれたファイル内の Outline に含まれる外部の OPML ファイルをインクルードする XSLT です。
- opml-to-text.xsl
- OPML 2.0 形式で書かれたファイルを Plain Text 形式に変換する XSLT です。
- opml-to-xhtmlrdfa1.0.xsl
- OPML 2.0 形式で書かれたファイルを XHTML+RDFa 1.0 形式に変換する XSLT です。
- opml-to-rdfxml.xsl
- OPML 2.0 形式で書かれたファイルを RDF/XML 形式に変換する XSLT です。
- opml-to-csv.xsl
- OPML 2.0 形式で書かれたファイルを CSV 形式に変換する XSLT です。
P3P 1.0
- p3p-to-rdfxml.xsl
- P3P 1.0 形式で書かれたファイルを RDF/XML 形式に変換する XSLT です。
- p3p-to-xhtmlrdfa1.0.xsl
- P3P 1.0 形式で書かれたファイルを XHTML+RDFa 1.0 形式に変換する XSLT です。
RSS 1.0
- rss1.0-to-csv.xsl
- RSS 1.0 形式で書かれたファイルを CSV 形式に変換する XSLT です。
- rss1.0-to-opml2.0.xsl
- RSS 1.0 形式で書かれたファイルを OPML 2.0 形式に変換する XSLT です。
- rss1.0-to-rss3.0.xsl
- RSS 1.0 形式で書かれたファイルを RSS 3.0 形式に変換する XSLT です。
- rss1.0-to-sitemap0.90.xsl
- RSS 1.0 形式で書かれたファイルを Sitemap 0.90 形式に変換する XSLT です。
- rss.1.0-to-rss2.0.xsl
- RSS 1.0 形式で書かれたファイルを RSS 2.0 形式に変換する XSLT です。
RSS 1.1
- rss1.1-to-csv.xsl
- RSS 1.1 形式で書かれたファイルを CSV 形式に変換する XSLT です。
- rss1.1-to-opml2.0.xsl
- RSS 1.1 形式で書かれたファイルを OPML 2.0 形式に変換する XSLT です。
- rss1.1-to-rss1.0.xsl
- RSS 1.1 形式で書かれたファイルを RSS 1.0 形式に変換する XSLT です。
- rss1.1-to-rss3.0.xsl
- RSS 1.1 形式で書かれたファイルを RSS 3.0 形式に変換する XSLT です。
- rss1.1-to-sitemap0.90.xsl
- RSS 1.1 形式で書かれたファイルを Sitemap 0.90 形式に変換する XSLT です。
- rss.1.1-to-rss2.0.xsl
- RSS 1.1 形式で書かれたファイルを RSS 2.0 形式に変換する XSLT です。
RSS 2.0
- rss2.0-to-csv.xsl
- RSS 2.0 形式で書かれたファイルを CSV 形式に変換する XSLT です。
- rss2.0-to-opml2.0.xsl
- RSS 2.0 形式で書かれたファイルを OPML 2.0 形式に変換する XSLT です。
- rss2.0-to-rss3.0.xsl
- RSS 2.0 形式で書かれたファイルを RSS 3.0 形式に変換する XSLT です。
- rss2.0-to-sitemap0.90.xsl
- RSS 2.0 形式で書かれたファイルを Sitemap 0.90 形式に変換する XSLT です。
- rss2.0-to-xhtmlrdfa1.0.xsl
- RSS 2.0 形式で書かれたファイルを XHTML+RDFa 1.0 形式に変換する XSLT です。
- rss2.0-to-rss1.1.xsl
- RSS 2.0 形式で書かれたファイルを RSS 1.1 形式に変換する XSLT です。
- rss2.0-to-rss1.0.xsl
- RSS 2.0 形式で書かれたファイルを RSS 1.0 形式に変換する XSLT です。
Sitemap 0.90
- sitemap-to-csv.xsl
- Sitemap 0.90 形式で書かれたファイルを CSV 形式に変換する XSLT です。
- sitemap-to-rdfxml.xsl
- Sitemap 0.90 形式で書かれたファイルを RDF/XML 形式に変換する XSLT です。
- sitemap-to-text.xsl
- Sitemap 0.90 形式で書かれたファイルを Plain Text 形式に変換する XSLT です。
- sitemap-to-xhtmlrdfa1.0.xsl
- Sitemap 0.90 形式で書かれたファイルを XHTML+RDFa 1.0 形式に変換する XSLT です。
Sitemap index 0.90
- sitemap-index-to-csv.xsl
- Sitemap index 0.90 形式で書かれたファイルを CSV 形式に変換する XSLT です。
- sitemap-index-to-rdfxml.xsl
- Sitemap index 0.90 形式で書かれたファイルを RDF/XML 形式に変換する XSLT です。
- sitemap-index-to-siemap0.90.xsl
- Sitemap index 0.90 形式で書かれたファイルを Sitemap 0.90 形式に変換する XSLT です。
- sitemap-index-to-text.xsl
- Sitemap index 0.90 形式で書かれたファイルを Plain Text 形式に変換する XSLT です。
XHTML 1
- xhtml-to-opml2.0.xsl
- XHTML 1.x 形式で書かれたファイル内の見出し要素(hn要素)を抽出し OPML 2.0 に変換するXSLTです。
- xhtml-to-text.xsl
- XHTML 1.x 形式で書かれたファイルを Plain Text 形式に変換する XSLT です。
XSLT 1.0
- xslt1.0-to-xhtmlrdfa1.0.xsl
- XSLT 1.0 形式で書かれたファイルを XHTML+RDFa形式に変換する XSLT です。
- xslt1.0-to-text.xsl
- XSLT 1.0 形式で書かれたファイルを Plain Text 形式に変換する XSLT です。
タグ:XSLT
哲学者エピクテトスは自分自身でなにも書かなかったため、彼の思想はアリアノスが書いた語録と提要がメインとなると思います。提要のほうは世界の名著等に収録されているのですが、語録のほうは何分長く量も多いため世界の名著では一部しか収録されていません。
語録の全てが収録された日本語の本は自分が知っている限りでは 鹿野治助氏が訳した人生談義しかないのですが、この本は現在から約50年前1958年に出版されため、今では完全に絶版状態で年々希少価値が高まってきているようです。参考としてAmazon.co.jpでは人生談義上巻は9229円、人生談義下巻は8473円もします。
人生談義の語録が手に入らず、その内容が気になる方もいるかもしれませんが、全て書き写すと問題があると思われるので、せめてもの策として目次だけでも個々に載せて置きたいと思います。以下語録の目次です。
第一巻
- われわれの権内にあるものとわれわれの権内にないものとについて
- どのようにして人は、すべての場合、自分の人格に合ったものを保持することができるか
- 神が人々の父であるということからして、どういう結果になるか
- 進歩について
- アカデミー派の人々に大して
- 摂理について
- 転換論、仮定論、それと同種のものの効用について
- 能力は教養のない人々にとっては安全ではないということ
- われわれは神と親類である、ということからして、人はどういう結論に達するか
- ローマで昇進栄達にあくせくしている人々に対して
- 愛情について
- 満足について
- どうすればすべて神々の気に入るようになされるか
- 神がすべてを監督しているということ
- 哲学は何を約束するか
- 摂理について
- 論理はどうしても必要だということについて
- 間違った者を怒るべきではないということ
- 僭主に対してどういう態度をとるべきか
- 理性はいかにして自分自身を考察するかについて
- 驚嘆されたがっている人たちへ
- 先取観念について
- エピクロースに対して
- 困難に対してどのように戦うべきか
- 同じ問題について
- 生の法則は何か
- 心象の種類と、それらに準備すべき救助手段
- 人々に対して怒るべきではないということ、及び世間では何が小事で何が大事であるかということ
- 剛毅について
- 困難に備うるに何を以ってすべきか
第二巻
- 大胆は、細心と矛盾しないということ
- 平静について
- 人を哲学者たちに推薦する人々に対して
- かつて姦通罪を犯したことのある人に対して
- いかにして、おおらかな心と、注意深さとが両立するか
- どうでもいいものについて
- どんなふうに占うべきであるか
- 全の本質は何か
- われわれは人間として約束を果たすことができないのに、その上哲学者としての約束をしているということ
- いかにして名称から義務が発見されるか
- 哲学の始めは何か
- 問答について
- 不安について
- ナソに対して
- 決められたことを固執する人々に対して
- われわれは、善いことや、悪いことについての教説を、応用するように勉強していないということ
- どのように人は先取観念を個々のものに適用すべきか
- 心象に対していかに戦うべきか
- 哲学者たちのの説を、ただ言葉だけで取り上げようとする人々に対して
- エピクロース派とアカデミー派に対して
- 撞着について
- 友情について
- 語る能力について
- 彼から認めてもらえなかった人に対して
- どうして論理は必要であるか
- 過失に固有のものは何か
第三巻
- おしゃれについて
- 進歩しようとする人は何について修行せねばならないか、およびわれわれは最も大切なことをおろそかにしているということについて
- 何がすぐれた人の対象(材料)であり、何に対して人は修行せねばならないか
- 劇場で見苦しく味方した者へ
- 病気のために退学する人々に対して
- 雑集
- エピクロース学徒であった自由都市の改革者に対して
- 心象に対してどう練習せねばならないか
- 訴訟のことでローマに行こうとしている或る弁論家に対して
- いかにして病気に堪えるべきか
- 雑集
- 訓練について
- 寂しさとは何か、そしてどんな人が寂しいのか
- 雑集
- 何事にも慎重に向かわねばならぬということ
- 注意して交際せねばならぬということ
- 摂理について
- 知らせによって心を混乱されてはならないということ
- 普通の人の立場と哲学者の立場
- すべての外的なものから益を得られるということ
- 軽々しく教職につこうとする者に対して
- 犬儒学派
- 見えを張って朗読したり、問答したりする人々に対して
- われわれの権内にないものに執着してはならぬということについて
- 企てたことを達成しそこなった人々に対して
- 困苦を恐れる人々に対して
第四巻
- 自由について
- 社交について
- 何と何とを交換すべきか
- 平静に生活しようと一生懸命になってる人たちに対して
- 闘争的で野獣的な人々に対して
- 同情されるのを苦にする人々に対して
- 恐怖心を抱かぬことについて
- 急いで哲学者の態度を装わんとする人々に対して
- 恥知らずになった者に対して
- 何を軽蔑し、何において卓越すべきか
- 清潔について
- 注意について
- 自分の事柄を軽々しくしゃべる人々に対して
タグ:エピクテトス
ニンニク入りパンを作成してみたので、そのレシピを公開。
材料
| 材料 | 分量 |
| 強力粉 | 200グラム |
| 薄皮を剥いたニンニク | 40グラム |
| ドライイースト | 4グラム |
| 砂糖 | 4グラム |
| 食塩 | 3グラム |
| 水 | 120グラム |
| 無塩バター | 10グラム |
作り方
薄皮を剥いたニンニクを平らの皿に並べてサランラップを掛けて電子レンジの500Wで3分加熱します。ニンニクをフォークなどで潰してペースト状にします。
ボウルに強力粉、砂糖、塩、ドライイーストを加え軽く混ぜます。ニンニクのペーストと水を加えて捏ねます。生地が纏まってきたらバターを加え更に捏ねます。
生地が捏ねあがったら一次発酵に移ります。二倍位に膨らむまで発酵させます。
生地を台に取り出し手で軽く押して生地に溜まったガスを抜き、包丁などで生地を二等分にします。
生地を丸めきつく絞った濡れ布巾を生地に被せベンチタイムを約20分取ります。
生地をコッペパンの様に縦長に伸ばし、綴じ目を下にして二倍になるくらいまで2次発酵させます。
生地をオーブンの中に入れて200度で約15分焼成します。
以前このブログでメイプルストーリーではプレイヤーの性別が重要視されすぎているように感じるという記事を書いたのですが、今回はそれの続きです。
まず確認しておかなければならない事として、メイプルストーリーではアバターの性別は装備などで違いがありますが、そのプレイヤー自身の性別はメイプルストーリー内ではまったく影響がないということ。だとするならばメイプルストーリーではそのプレイヤーの性別など本来重要視されるものではないのだが、一部では未だに重要視されているように感じます。
そもそもの事の起こりはだいぶ昔にメイポをプレイしているときにある女性のキャラクターが男性キャラクターから「君ネカマなの?」としつこく質問していて、そしてその女性のキャラクターの方もかなり迷惑そうに戸惑ってました。それを見て、なぜ重要ではないプレイヤーの性別を重視するのかに疑問を覚えたのが事の起こりです。
自分としては話が深まってきたところで必要に応じて性別を尋ねるなら分かります。しかし開口一番に尋ねる事とはとてもじゃないですが思えないのです。
それに性別を尋ねたところで何か益することはあるのでしょうか。
メイプルストーリーでは嘘を付くのは余りに容易です。性別を尋ねたところで女性であるのに男性と、男性であるのに女性と答えるならばどのような事が起きるでしょうか。尋ねたプレイヤーが嘘を嘘と見抜ける眼力があればよいのですが、悲しくもその嘘に引っかかってしまった場合、それはすなわち性別を重視するが故に、性別で欺かれている意外になんでありましょうか。
また異性と会話したいと言う理由で開口一番に性別を尋ね歩いて、やっとの事で異性のプレイヤーと友達になれたら思ったら、その異性プレイヤーが本当は同姓だった場合、そのプレイヤーのショックは如何程でしょうか。もはや慰める言葉すら思いつきません。
それと相手からの印象を気にする人は開口一番に性別を尋ねないほうがいいと思います。何故なら突然性別を尋ねられて良い印象を与えるとお考えでしょうか。少なくともマイナスにはなってもプラスにはならないように思われます。
だから相手のプレイヤーの性別が男性なのか女性なのかは兎も角として、まず人間としての会話ができればよいのではないかと思うのです。なぜなら自分も今まで様々な所でチャットを体験しましたが、性別を尋ねる必要に迫られたことなんて然う然うありませんでした。多くの場合相手の性別が不明でも会話は成り立つものですから。そして会話の際に一番問題にしているのは相手の性別が何であるかという事よりも、相手の言っていることが正しいかということなのですから。
それ故に私達が求められているは性別を開口一番尋ねたくなっても、それを自制する峻厳さなのかもしれません。
タグ:メイプルストーリー
CakePHP Cache Behavior - Download
CakePHP Cache Behaviorを作成したので公開したいと思います。とはいってもCakePHP1.2 Behaviorでモデルのメソッドキャッシュを行うで公開されているCache Behaviorを元に自分流にアレンジしたものです。ですが基本的な使い方は変わりません。Cache Behaviorの使用例としては以下のようなコードです。
Cache::config('long', array('engine' => 'File', 'duration' => '+1 year'));
class Example extends AppModel {
var $actsAs = array('Cache' => 'long');
function find() {
$args = func_get_args();
if($this->cacheEnabled()) {
return $this->cacheMethod('find', $args);
}
return call_user_func_array(array('parent', 'find'), $args);
}
}
CakePHP Cache Behaviorはクリエイティブ・コモンズ 表示 3.0 非移植 ライセンスの下に提供されています。
タグ:PHP
CakePHP Serialize Behavior - Download
CakePHPで独自のビヘイビアを作成したので公開して見たいと思います。今回作成したSerialize Behaviorはデータベースからのデータをシリアライズやアンシリアライズしたりすることが出来ます。
具体的には以下のようなことが可能です。
- データをデータベースへ送信するときにシリアライズする。
- データをデータベースから引き出すときアンシリアライズする。
- データを編集するためのコールバック関数を呼ぶことが出来る。
どれも機能もフィールドごとにシリアライズしたりアンシリアライズしたりコールバック関数を呼んだりできます。シリアライズ、アンシリアライズは現在のところPHP仕様のとJSONの二つに対応しています。
Serialize Behaviorの使用例としては以下のようなコードです。
class Example extends AppModel {
// barフィールドがあればPHPのシリアライズ、アンシリアライズが処理を行われる。
var $actsAs = array('Serialize' => array('bar', 'foo' => array('transform', 5)));
function transform($data, $serialize, $int) {
// fooフィールドが存在すればこのメソッドが呼ばれる。
// $serializeがtrueの場合はシリアライズをfalseの場合はアンシリアライズの処理が望まれる。
// 引数の5は$intに格納されている。
return $data;
}
}
以上のようなコードだとデータを保存するときも、引き出すときの両方でtransformメソッドが呼ばれます。しかしながら保存するときだけコールバック関数を呼び出したいときもあるかと思われます。たとえばデータを保存するときパスワードの部分だけハッシュ化したいということなどもあるかもしれません。その場合以下のような記述でOKです。
class Example extends AppModel {
var $actsAs = array('Serialize' => array('password' => array('serialize' => 'toHash')));
function toHash($string, $serialize) {
App::import('Core', 'Security');
return Security::hash($string);
}
}
基本的な使い方は以上です。分からないところがあればコメント等をください。
CakePHP Serialize Behaviorはクリエイティブ・コモンズ 表示 3.0 非移植 ライセンスの下に提供されています。
タグ:PHP

