2016年10月

  • (by K, 2016.10.03)

2016年10月03日(月) #00 Windows Update

  • タグ: #雑談
  • Windows Updateが遅い。10分とか20分とかかかる場合もある。10分ってとんでもない時間で、HDDに書き込むのなら1分でも3GBくらいは書き込めるし、何か処理をするにしても1分で1800億命令くらいはこなせる。その10倍もの時間をかけて一体何をやっているのか。そんなに時間がかかって恥ずかしくないのか。

2016年10月04日(火) #00 人間は野生動物を絶滅させたというけれど・・・

  • タグ: #雑談
  • 人間は野生動物をたくさん絶滅させてきた。特に最近の100年間はひどい。みたいな話はよく聞く。これはもちろん悲しいことだし、反省すべきである。
  • でも一方で、人間は進化を加速させている面もあると思う。犬や猫や家畜や植物などにおいては、品種改良をものすごくたくさんやって、どんどん新しい品種が生まれていると思う。
  • もしかしたら滅ぼしてしまった数よりも、人間が生み出した種の数のほうがずっと多いのかもしれない。
  • しかし仮にそうだとしても、滅ぼさずに済むのならそれに越したことはないので、私の意見は人間のしてきたことを正当化するためのものではない。それにたいていの場合、種を滅ぼす人と新しい種を生み出す人は別の人である。

2016年10月05日(水) #00 人類が絶滅しそうになった日

  • タグ: #雑談
  • wikipediaの「トバ・カタストロフ理論」によれば、人類は7.5万年前くらいに絶滅しかかった。人口は1万人程度まで減ったといわれる。この学説どおりに噴火が原因だったかは疑問の余地があるらしいが、とにかく人口が1万人程度のなったのは相当に確からしい。このときにホモ・エルガステルやホモ・エレクトゥスなど、人類に近い種族の多くも絶滅してしまった。
  • 人類がたった1万人まで減らされて絶滅に瀕したというのは、人類において歴史的な大事件だと思う。これに比する事件はそう多くはないはずだ。大きな戦争や伝染病の流行はあっただろうが、1万人にまで減らされたことはきっとあるまい。
  • これは中学で教えているのだろうか。教えるべきだと僕は思うなあ。
  • ちなみに僕は習っていないが、この学説が出たころには既に大学院生だったので、それは仕方なかったのだろうと思う。しかし今まで知らないでいたことは我ながら恥ずかしい。
  • 恐竜は6,500万年前にやはり寒冷化によって絶滅したとされているが、かろうじて鳥類だけは生き残った。われわれ人類も遺伝的に近い種族をことごとく滅ぼされて、かろうじて数種が生き延びたに過ぎないので、恐竜と大差なかったのだと思う。

2016年10月06日(木) #00 能力と役割

  • タグ: #雑談
  • 会社の組織を考えていると、社長はどうやって社長になったのかと思う。
    • 全社員でテストをして一番スコアが良かったものが社長になっただろうか?・・・いいえ。
    • 立候補して選挙をして社長になっただろうか?・・・いいえ。
  • 社長だけじゃない、会社組織のありとあらゆるところで、役職の決め方はテストや選挙を使っていない。
  • だから当然、上司よりも部下のほうが優秀だったりすることはあるし、みんなが納得できない人選になることもある。
  • しかし、選挙なんかで選ばれた政治家がやる政治よりも、企業活動のほうがはるかに生産的だと僕は思う。
  • これはなんなのだ。どういうことなのか。
  • でも学校で教えるのは「選挙」や「テスト」ばかり。そんなの社会に出たらほとんど役に立たないことなのに。
  • なんだかなーと思う。
  • 結局、会社は常に競争にさらされているので、非効率なことをしていたら競争に負けて倒産してしまう。
  • でも政府はそういうことはない。非効率なことをしていても排除されたりはしない。
  • そうやって生き残ってきた企業のほとんどは、テストも選挙もやっていない。つまりそれらは不要というかやらないほうがいいことだったのだと思う。
  • でも教育はそのことに気付いていなくて、今でも「テスト」や「選挙」ばかり教えている。・・・そういうことなんだろうと思う。
  • 企業の場合、誰がどの役職に就くかは基本的に上司が決める。つまり上司はその人を見ていて、君にはこの役職がふさわしいのではないか、と提案してくる。
  • 失敗すれば降格するし、大成功をしていれば出世もする。結局、「みんなで」決めるのはよくないのだと思う。優秀な少数で決めるのがいい。
  • もし社長が有能ではなくて人選に失敗しているようなら、そんな会社は早晩につぶれる。逆に言えば、社長や役員がどんなに無能に見えても、もし会社がそれなりに長く存続していて利益も出ているのなら、社長や役員は実は有能であろう。

2016年10月06日(木) #01 多様性と選別が鍵?

  • タグ: #雑談
  • 生物の進化を見ていると、ある程度の多様性があって、それでより環境に適合しているものを生き残らせるということを確率的に繰り返しているだけで、どんどん改良されているように思う。
  • 人間はDNAとか遺伝の仕組みとかをほとんどわかっていないころから、動植物の品種改良をやってきた。そんなものが分からなくても品種改良はできるのだ。気に入った特徴を持った品種同士を掛け合わせればいい。うまくいくこともあるし、うまくいかないこともあるけど、でもそうやって品種改良はできる。
  • 遺伝的アルゴリズムというのがプログラムのアルゴリズムにあるけど、あれも結局は適当にいろいろ作らせて掛け合わせているだけだ。そんな方法でも結果的にいいものはできる。
  • 上記の「2016年10月06日(木) #00 能力と役割」の話だって、企業は競争があるから生産性が高くなったのだと思う。
  • だからどんなものでも競争状態において競争させれば、いいものは勝手にできるんじゃないだろうか。もはや中身を理解する必要はない(中身を理解できたほうがもっと進歩が早まるかもしれないけど)。
  • 今はプログラミングと言えば、自分でロジックを一生懸命に考えるものだけど、将来はランダムにプログラムが生まれてきて、その中で自分の理想に近い上位10件を選んでいって、そこからランダムにプログラムが生まれて・・・みたいな作業が「プログラミング」になるのかもしれない。
    • これは効率が良くないかもしれないけど、でもこの方法でなら、プログラマーの力量を超えたプログラムができる日も夢じゃない。
  • そして選別するだけでいいのなら、プログラミングに高いスキルはいらないことになる。

2016年10月13日(木) #00 プログラミングの神様が降りてきた

  • タグ: #essen, #プログラミング
  • プログラムを作っていて難しいところに差し掛かって、悩み始めてしまうことがある。でもその状態が何日か続くと、ある時突然にどうすればいいかが分かって、一気にすべてがクリアになる。
  • なんとなく「プログラミングの神様が降りてきた!」と感じる(笑)。

2016年10月14日(金) #00 色階調変換アルゴリズム

  • タグ: #プログラミング
  • その昔、第一世代OSASKを作っていたころ、I.Tak.さんと議論になったことを思い出した。懐かしい。僕の結論は当時からほとんど変わっていないけど、でも復習してみるのは悪くないと思う。
  • ここに256階調のデータがある。たとえばこれを3階調(#00,#7f,#ff)に変更したい。どのように変換するべきか。
  • I.Tak.さんはこう考えた。#00~#3fは階調0、#40~#bfは階調1、#c0~#ffは階調2に変換されるべきである。なぜならもとの階調との差が最も小さくなるから。シンプルイズベスト。以上!
  • 僕はこう考えた。256階調のものを3階調に変更するのであれば、単純に線形変換しよう。つまり#00~#54が階調0、#55~#a9が階調1、#aa~#ffが階調2。
  • I.Tak.さんの主張はすごく説得力があるが、I.Tak.さんの方法で線形のグラデーションを変換すると、階調1の色が全体の50%を占めることになり、階調0と階調2は25%ずつになる。これは直感に反すると僕は考えた。一方で僕の方法なら階調0と階調1が33.2%になり、階調2は33.6%になる。つまりほぼ等分される。結果は理想的だけど、説明は微妙である。
  • 新しいやり方を考えてみた。
  • まず、256階調のデータを0~1の実数に変換することを考える。単純に256で割ればいいのだろうか?それとも255で割ればいいのだろうか?今の僕はそのどちらも間違っていると思う。
  • 256階調において#00で表現されている色は、元は何色だったのだろうか。0.000だったかもしれないけど、0.001だったかもしれない。ということを考えると、0.000000~0.003906だったのだろうと思われる。ちなみに0.003906というのは1/256のことである。0.003907~0.007813が#01で表現されているのだろう。
  • そういうことを考えると、#00の色を実数であらわすなら0.001953としておくべきだろう。これは0.000000~0.003906の中点である。同じく#01の色を実数で表すのなら0.005859としておくべきだろう。
  • さてそうやって得られた実数を3階調に割り振る。0.0000~0.3333は階調0、0.3334~0.6666は階調1、0.6667~0.9999は階調2としよう。
  • そうすると、#00~#54が階調0、#55~#a9が階調1、#aa~#ffが階調2という従来の主張どおりの結果になる。
  • もう少し考えよう。
  • 誤差が少ないはずだとされたI.Tak.さんの方法だけど、もっと誤差を小さくする方法がある。それは3階調のデータについて、#00、#7f、#ffの3つではなくて、#2a、#7f、#d5を選択するということだ。そうすれば、線形のグラデーションを変換しても3つの階調はほぼ等分される。そしてこの方が誤差も少ない。ただこの場合、黒は暗い灰色になるし、白は明るい灰色になる。つまり#00、#7f、#ffの場合と比べるとコントラストは少し下がる。
  • さて、変換先の色によって階調の切り替わり位置が変化してしまうI.Tak.さんの方法は果たして適切なのだろうか。今度はそこが気になってくる。・・・たとえば、#7eと#7fと#80の3色に変換する場合を考えよう(あえて極端にしている)。・・・もしくは#00と#01と#02でもいい。うん、こっちのほうが分かりやすいな。
  • この場合、線形グラデーションは99.2%が#02に変換されることになる。これはものすごく情報が失われていないだろうか。線形であったことがもはや分からない。僕の方法なら、線形であったことはなんとなく分かる(色の差が少なすぎて目で見て分からないかもしれないけど、データを見れば分かる)。

2016年10月18日(火) #00 画像の加工

  • タグ: #プログラミング
  • 写真を白っぽくしたいなと思って、写真をBMPに変換した後、以下のプログラムで加工。
  • 画像編集ソフトを使えばもっとうまくできるのかもしれないし、まあ普通はそうするんだろうけど、僕だったらこうやってプログラムを作るほうが速い。
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp = fopen("all.bmp", "rb");
    unsigned char *b = malloc(16 * 1024 * 1024);
    int i = fread(b, 1, 16 * 1024 * 1024 - 2, fp);
    fclose(fp);
    int j;
    for (j = 0x36; j < i; j++)
        b[j] = (b[j] + 0xff * 3) / 4;
    fp = fopen("all_c.bmp", "wb");
    fwrite(b, 1, i, fp);
    fclose(fp);
    return 0;
}
  • これを見て思うのは、実際の画像の加工をしているのは2行なのに、ファイルの読み込みとか書き出しのために行数がやたらと増えているということ。これを何とかしたい。Essenで。

2016年10月20日(木) #00 .htaccess

  • タグ: #web
  • ここ数年間、osask.jpドメインの.htmlファイルは、ブラウザに正しく認識されない状態が続いてきた。これをどうにかして直したくて、いろいろ試してみたけど、ずっとうまくいかなくてあきらめていた。htaccessかなと最初は思っていじったけれど、それでもうまくいかなくて、もう切り分けからして分からない。
  • ところが先日arigayasさんからヒントがもらえて、htaccessをこうしたらいいんじゃないかと教えてもらえた。
  • おお、そうなのか!ということで自分でも少し調べて、以下のように書いてみた。
    AddType "text/html; charset=Shift_JIS" .html
    AddType "text/html; charset=Shift_JIS" .htm
  • おおやったー。 http://hrb.osask.jp が直った!

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-10-20 (木) 18:01:19 (2747d)