最高の悪徳は嘘をつくこと

最高の悪徳は嘘をつくことだと思う。

たとえ人を殺しても何をしでかしても、嘘さえつかなければまだ話しようがある。

しかし嘘をつく人はもうどうにもならない。


...というようなことをちょっと前から思っている。

これまでの人生でさまざまな困った人を見たが、とりわけ質の悪い困った人というのはのきなみ平気で嘘をつく人だった。もちろん困った人の困った部分は嘘をつくことだけではないのだが、嘘をつくことによって困った人の困った部分が全体的に倍加していくように思う。


しかし平気で嘘をつく人というのは、しばしば「自分が嘘をついていること」をあまり認識していないのではないかと思われる行動をとることがある。あれはいったい何なのだろう。

あきらかに自分が言ったことを「言っていない」と言いはるし、言っていることも支離滅裂なのだが、どうも見ていると自分のしたことを嘘でごまかそうとしているというより、その場その場でうまいことをメッキをつくろうために嘘をつき (すぐバレるような嘘しかつけないので他人から見るとさっぱりつくろえていないのだが)、しかもあまり自分の言ったことを反省しないので嘘をついていることをあまり自覚していないように見える。


ああいう精神の構造は (遠くで見る分には) 興味深い。あの人たちが自分の邪悪さに気がつく (または自分の邪悪さを少なくとも表向きに認める) ような決定的瞬間はいついかなる場合に訪れるのか。そもそも訪れることがあるのか。


自己欺瞞と自己犠牲 (双書エニグマ)

柏端達也(著)

勁草書房、2007


改めてこの本でも読むか。そう言えば論文の締め切り前に中途半端に読んでそのままになっていた。




MSWordで文書ファイルがバイナリになるのキンモー☆、Wordで書いた論文十年後絶対開けないだろ、と思っていたのだが、MSゲイツさまはちゃんとそのことを気にしていたことがわかったので反省した。docxファイルってXMLだったんだ。


http://ja.wikipedia.org/wiki/Microsoft_Office_Open_XML

http://ja.wikipedia.org/wiki/OpenDocument


反省したついでにWord Tipsを披露する。Wordマニアにとっては当然の常識だろうが、意外に機能を知らずにWordを使っている人が多いのではないかと推測する。

まずWordにおける段落の概念について。MSWordには実は「改行記号」と「段落区切り記号」が存在する。Wordの改行位置をよく見ると改行の記号が入っている(表示されていない場合は、メニューの「ツール > オプション」ダイアログで「編集記号の表示 > すべて」にチェックを入れる)。下矢印だけの記号は改行記号であり、単なる改行を表示する記号である(HTMLにおけるBRに相当する)。一方Enterキーのような曲った矢印は段落区切り記号であり、段落の境界を意味する(HTMLにおけるPタグに相当する)。

Wordにおける段落は、改行だけではなく、文章の意味論的なまとまりを表現する概念であり、見た目を表現するプロパティの多くは段落を単位として設定される。たとえば「インデント」「ぶら下がり」「行頭インデント」などは段落を単位として設定されるため、(テキストのコピーアンドペーストなどで) 段落区切りが適切になされていない場合、意図通りの動作をしない場合がある。段落区切りを挿入するためにはEnterキーを押し、改行を挿入するためにはShift+Enterを押す。

また段落の「スタイル」を設定することで、見た目と文書の論理的構造を分離することが可能である。たとえば文書各セクションの見出しを「見出し2」スタイルに設定しておくことにより、各セクションのタイトルの見た目 (フォントサイズ、フォントの太さ、フォントの種類) を一斉に変更することが可能になる。スタイルを変更するためには当該の段落をフォーカスした状態でメニューの「書式 > スタイルと書式」から設定するか、書式メニューを利用する。ショートカットはShift+Ctrl+Sである。


Wordで構造化された文書を作成するためには、見出しの設定に加え「セクション」を適切に利用することが望ましい。文書のセクションを分けるには、メニューの「挿入 > 改ページ」を選択し、「セクション区切り」項目の「次のページから開始」などをチェックする。編集記号を表示する設定にしておけば「セクション区切り」記号が表示されるはずだ。

以上のように見出しとセクションを適切に設定することで、文書の全体を俯瞰することが容易になる。MSWordで文書の全体を俯瞰するにはアウトラインモードを利用するのが簡便である。「アウトライン」モードに切り替えるには、メニューの「表示 > アウトライン」を選択する。ショートカットはCtrl+Alt+Oである(デフォルトの「印刷レイアウト」表示に戻す場合はCtrl+Alt+P)。この状態でShift+Alt+Aを押すと、すべての項目が折りたたまれ、見出しのみを表示させることができる。あとは編集したいセクションを選びShift+Alt+"+"で開いたり、Shift+Alt+"-"で閉じたりする。Wordのバージョンによっては、表示メニューの「見出しマップ」機能を利用することにより、見出しの一覧をサイドバーに表示し、構造化テキストエディタのような使い方をすることができる。10ページを越える文書を作成・編集する場合、アウトラインモードをうまく利用することで編集効率が大いにあがるはずである。




ActionScript で Class.create()

prototype.jsなどで用いられているjs用の疑似クラス作成用関数Class.create()をasで動かしてみる。

package {
    Object.extend = function(destination:Object,source:Object):Object{
        for(var i:Object in source)
            destination[i] = source[i]
        return destination;
    };
    Class.create = function():Function{
        var klass:Function;
        klass = function():*{
            this.constructor = klass;
            if(this.initialize)
                this.initialize.apply(this,arguments);
        };
        return klass;
    };
    
    public var C1:Function = Class.create();
    Object.extend(C1.prototype,{
        hello:function():void{
            show("hello");
        }
    });
}
var i1:* = new C1();
i1.hello();

*showは表示用の関数ということにする。

(なぜか手元の環境でtraceがうまく動かない)。

試したところ上記コードは動くようだ。

ちなみに、

var C1:Class = new Class();

とやると怒られた。Classをコンストラクターとして使うことはできないらしい。

しかもこの場合、C1は単なるパッケージレベルの変数になるので(型とは見なされないので)、

var i1:C1 = new C1();

は動かない。


ついでに実験。

    Object.extend(C1.prototype,{
        showThis:function():void{
            show(this);
            mx.core.Application.application.show("\n");
        },
        test:function():void{
            mx.core.Application.application.show("test\n");
            var ar:Array = [];
            ar.push(this.showThis);
            ar[0]();
            mx.core.Application.application.show("\n");
            flash.utils.setTimeout(this.showThis,1000);  
        }
    });
var i1:* = new C1();
i1.test();

の場合、

  • ar[0]()

=>thisはar

  • setTimeout(this.showThis,1000);

=>thisは[object global]


ECMAScriptのthisは呼び出し時に決定されるので、ar[0]()という仕方で呼び出すとarがthisの指示先になる。

これは期待通り。


一方、ActionScript3のclass構文をつかってみる。

    public class C2
    {
        public function showThis():void{
            show(this);
        }
        public function test():void{
            show(this);
            var ar:Array = [];
            ar.push(this.showThis);
            ar[0]();
            flash.utils.setTimeout(showThis,1000);
        }
    }

var i2:C2 = new C2();
i2.test();

の結果は、

[object C2]
[object C2]
[object C2]

ちょっとわかってきた。

class構文でメソッドを登録した場合、thisの参照先が固定されるんだ。まあふつうそれを期待するよなあ。

逆に言うとActionScript3の場合、class構文などでは独自の文法仕様が適用されるが、それ以外の部分ではほぼECMAScriptの文法に従っているように見える。

つまりActionScript3の文法は、ECMAScriptの文法に型情報とclass, package構文を足したものだと考えてよいのだろうか。

コメント(1)

# Dooplotoe

Oh... Your blog used to be nice, but now it's spoiled. Stop posting trash like that or stop posting at all.

(2008/04/ 7 4:41)

コメントする

トラックバック(0)

このブログ記事を参照しているブログ一覧: 雑記2008年2月17日(日)

このブログ記事に対するトラックバックURL: http://www.at-akada.org/mt/mt-tb.cgi/884

著者について

赤田敦

nightly[at]at-akada.org

紹介: about

ホーム: at-akada.org

-> 携帯電話用

なかなか更新されないときは...

-> 赤田ブログ生成器

2009年1月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31