mieki256's diary



2023/10/03(火) [n年前の日記]

#1 [web] Evernoteアプリ版をアップデートしてガッカリ

Windows10 x64 22H2上で、ローカルにインストールしてある Evernoteアプリ(Evernote for Windows)を起動したら、「このバージョンは古いのでもうサポートしない。アップデートしろ」と表示されてしまった。仕方ないのでアップデートしてみたのだけど…。

アップデートインストールの処理中に Windows10 がブルースクリーン(BSOD)になった。なんてことをしてくれるんだ。まあ、それはいい。自分の環境は、この手の処理をしようとすると時々ブルースクリーンになる状態になってしまっているので…。

ただ、アップデートしたEvernoteアプリ(Evernote for Windows)の画面を見て困惑。フォントが見辛い…。なんだコレ…。フォント種類が好みではないし、文字色も薄い。

少し試用してみたけれど、どうやらローカルにインストールされているフォントを指定できない仕様のようだなと。せめてデフォルトフォントだけでも変更できればいいのだけど、そんな機能すらない。

古い版ではできていたことが、現行版ではできなくなってる。現行版の利用を強制しておきながら、このヘボさ…。ガッカリ。

でもまあ、どうしてこうなったかは、なんとなく分からないでもないような。Webブラウザ上でのサービス利用時とほとんど同じ使用感にすることを目標としてアプリ版を作ったのではないかな…。おそらく、Web版を単にウインドウ内に表示しているだけのアプリなのでは。そして、Web版では、ローカルにインストールされてるフォントを指定できないのだろうから、その制限がアプリ版にもついて回っている、ということではないかと。

でも、Webブラウザって、デフォルトフォントを指定できるものだよな…。しかし、Evernoteアプリ版はソレができない…。これでは只のクソアプリではないか…。いやまあ、「アプリ版なんて使うな」「Webブラウザ経由で利用しろ」と強制したい意思があるのかもしれんけど。

cssを弄って少しフォントを変えた :

文字すら読めないサービスでは、今後積極的に使うのは厳しくなるなと。結構メモを溜めてしまったのに…。どうにかならんか。

ググってみたら、cssを弄ることで、ちょっとだけどうにかできる方法もあるらしい。

_Evernote WebのデフォルトフォントをCSSでメイリオに変更する - nu notebook
_Evernote for Windows(アプリ版)のデフォルトフォントをCSSでメイリオに変更する - nu notebook

とりあえず、Webブラウザ経由でアクセスした時ぐらいはメイリオフォントにしたい。Stylus という拡張機能を Google Chrome、Firefox、Vivaldi にインストールして、Webブラウザで evernote.com を開いた時だけ、デフォルトフォントだけでも変更されるように設定してみた。

@-moz-document domain("evernote.com") {
    body en-note.peso {
        color: black;
        font-size: 18px;
        font-family: "Meiryo, Source Sans Pro,-apple-system,system-ui,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif" !important;
    }
}

Stylus のアイコンをクリック → 管理 → 新スタイルを作成 → 前述のコードを貼り付け → スタイルを上書き → 名前を付けて保存をクリック。

古い版に戻した :

アプリ版でもデフォルトフォントを変更できないものかと試していたけれど、これがなかなか面倒で…。関連情報を調べていたら、まだ一応、古いアプリ版、Evernote Legacy を使えなくもないと知ったので、そちらをインストールし直すことにした。Evernote_6.25.3.9348.exe を入手して実行。インストール時の詳細設定で、すべてのユーザ、ではなく、このユーザのみ、を選んでインストールしておいた。

#2 [cg_tools] Fooocus-MREをインストール

SDXL に対応した画像生成AIツール、Fooocus-MRE 2.0.78.5 を、Windows10 x64 22H2 + 16GB RAM + NVIDIA GeForce GTX 1060 6GB 上でインストールしてみた。

元々、Fooocus という、SDXL対応のツールがあったけど、そのツールは細かい機能や設定をごっそり削除した作りで…。何せ、画像の中に、画像生成時のパラメータを同梱することすらしていなくて。それでは画像生成AIで生成した画像ということも分からなくなるよなと…。

そこで、Fooocus をフォークして、各種機能を追加した Fooocus-MRE というツールが作られたそうで。せっかくだから少し試用してみようかなと。

_GitHub - MoonRide303/Fooocus-MRE: Focus on prompting and generating

Fooocus-MRE-v2.0.78.5.7z を入手して解凍。中に入っている run-mre.bat を実行すると、初回起動時のみ、sd_xl_base_1.0_0.9vae.safetensors、sd_xl_refiner_1.0_0.9vae.safetensors、その他をダウンロードする。その後、自動でWebブラウザが開かれて利用できるようになる。

各ファイルのサイズはかなり大きいので、今回はDドライブのHDD上にインストールした。
使えるようになるまで10分ぐらいかかる。自分の環境は RAM 16GB しか積んでないから、おそらくメモリが足りなくて、CドライブのSSD上に仮想メモリを作ってどうにか動いてる状態じゃないかなと…。

#3 [anime] 「ルパン三世 風魔一族の陰謀」を視聴

BS12で放送されていたソレを録画していたので視聴。初見。

ルパン三世アニメ版におけるルパンの声と言えば、山田康雄さん、もしくはクリカンさんなわけだけど。この作品は、ルパンを古川登志夫さんが演じているという変わり種。ルパン一味も、銭形警部も、普段とは違う方々が演じてる。どんな印象になるのかなとワクワクしながら見始めたけど、これは全然アリだなと…。さすが声優さん達。皆さんフツーに上手いな…。あっという間に慣れてしまった。違和感無し。 *1

作画面は凄かった。とにかく動く。ひたすら動く。動きまくる。ここまで動かしてしまうのかと怖くなってくるぐらいに動きまくり。「カリ城」を作ったテレコムが制作を担当してるし、「カリ城」の作画監督だった大塚康生さんが監修してるし、作監は「カリ城」のカーチェイスシーンを担当してた友永和秀さんだしで、作画面は文句のつけようがない出来になってたなと…。

あちこちに、「カリ城」やTVシリーズのオマージュやパロディが入ってたあたりも面白かった。「そこに俺の服があるから着替えな」と言われて ヒロインが赤ジャケットを着てしまうあたりとか。 幻覚を見るシーンで代々のTVシリーズのキャラデザが次々に出てくるあたりとか。こういうお遊びは好き。

忍者が出てくる設定なだけあって、からくり屋敷っぽいアイデアが山のように投入されていて、そのあたりも好印象。よくまあこんなにアイデアを思いつくものだなと…。

しかし、話と言うか、全体の印象は、「カリ城」の劣化コピーな感じがして…。終わり方も「えっ? これで終わり?」という印象が…。全然締まらないなと…。作画スタッフは似たようなソレでも、宮崎駿監督が居るか居ないかで、こんなにも印象が違ってくるものかと痛感してしまった。

でも、盛り込まれてるアイデアの量は尋常じゃないんだよな…。実は宮崎駿監督がアイデア出し関係で多少手伝ってたりはしないのかなと思ったけど、「ナウシカ」アニメ版が1984年、「ラピュタ」が1986年、この作品が1987年、「トトロ」が1988年だから、手伝ってる余裕はないよな。たぶん。

とりあえず、作画面は見所満載だし、声優陣がまるっと違うのも新鮮なので、悪くない作品に思えた。これを黒歴史にするのは、あまりにももったいない。
*1: もっとも、原作者にも山田康雄さんにも話を通さずにキャスティングしてしまって、山田康雄さんが大激怒して、それ以来声優さんを変えることが難しくなったという話をどこかで見かけた記憶も…。そのせいで、山田さんが亡くなったら物真似路線でクリカンさんが選ばれるわ、TVSPの頃には中の人達が御歳を召してフガフガ状態になっても変えるわけにもいかないわ、みたいな展開になってしまったわけで…。この作品で流れが決まってしまったよなと…。もしも当時、プロデューサーがちゃんと話を通しつつ、このキャスティングを成立させていたらと考えてしまう…。でもまあ、今現在は代替わりできてるから、今更な話ではあるか…。

2022/10/03(月) [n年前の日記]

#1 [python] PyOpenGLでSkyboxを描画

Windows10 x64 21H2 + Python 3.9.13 64bit + PyOpenGL 3.1.6 で、Skybox を描画できるかテスト。

以下のような見た目になった。マウスカーソルの位置に応じてカメラ角度が変わるようにしてみた。それっぽい感じになったような気がする。

ソース。 :

ソースは以下。

_01_draw_skybox.py
import sys
import math
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
from PIL import Image

IMG_NAME = "montorfano_cubemap.png"
# IMG_NAME = "alps_field_cubemap.png"
# IMG_NAME = "bell_park_cubemap.png"

# SCRW, SCRH = 1600, 900
SCRW, SCRH = 512, 512
FPS = 60
BOXW = 16

scr_w, scr_h = SCRW, SCRH
window = 0

mouse_x = 0
mouse_y = 0
cam_rot_x = 0.0
cam_rot_y = 0.0
cam_pos = (0, 0, 0)

texture = 0


def load_texture():
    global texture

    # load image by using PIL
    im = Image.open(IMG_NAME)
    w, h = im.size
    print("Image: %d x %d, %s" % (w, h, im.mode))

    if im.mode == "RGB":
        # RGB convert to RGBA
        im.putalpha(alpha=255)
    elif im.mode == "L" or im.mode == "P":
        # Grayscale, Index Color convert to RGBA
        im = im.convert("RGBA")

    raw_image = im.tobytes()

    ttype = GL_RGBA
    if im.mode == "RGB":
        ttype = GL_RGB
        print("Set GL_RGB")
    elif im.mode == "RGBA":
        ttype = GL_RGBA
        print("Set GL_RGBA")

    glBindTexture(GL_TEXTURE_2D, glGenTextures(1))

    # glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
    glPixelStorei(GL_UNPACK_ALIGNMENT, 4)

    # set texture
    glTexImage2D(
        GL_TEXTURE_2D,      # target
        0,                  # MIPMAP level
        ttype,              # texture type (RGB, RGBA)
        w,                  # texture image width
        h,                  # texture image height
        0,                  # border width
        ttype,              # texture type (RGB, RGBA)
        GL_UNSIGNED_BYTE,   # data is unsigne char
        raw_image,          # texture data pointer
    )

    glClearColor(0, 0, 0, 0)
    glShadeModel(GL_SMOOTH)

    # set texture repeat
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT)
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)

    # set texture filter
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)

    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE)
    # glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL)
    # glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE)
    # glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND)


def draw_skybox():
    glEnable(GL_BLEND)
    glEnable(GL_TEXTURE_2D)
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
    glColor4f(1.0, 1.0, 1.0, 1.0)
    glDisable(GL_ALPHA_TEST)

    w = BOXW

    glPushMatrix()

    m = glGetDoublev(GL_MODELVIEW_MATRIX)
    m[3][0] = m[3][1] = m[3][2] = 0.0
    glLoadMatrixd(m)

    va = 0.0005
    # va = 0.0

    pntlist = [
        # x, y, z
        [-1, +1, -1],  # 0
        [+1, +1, -1],  # 1
        [+1, +1, +1],  # 2
        [-1, +1, +1],  # 3
        [-1, -1, -1],  # 4
        [+1, -1, -1],  # 5
        [+1, -1, +1],  # 6
        [-1, -1, +1],  # 7
    ]

    pos = [
        [
            # index, u, v
            [0, 0.25, 0.50 + va],
            [1, 0.50, 0.50 + va],
            [5, 0.50, 0.75 - va],
            [4, 0.25, 0.75 - va],
        ],
        [
            [1, 0.50, 0.50 + va],
            [2, 0.75, 0.50 + va],
            [6, 0.75, 0.75 - va],
            [5, 0.50, 0.75 - va],
        ],
        [
            [2, 0.75, 0.50 + va],
            [3, 1.00, 0.50 + va],
            [7, 1.00, 0.75 - va],
            [6, 0.75, 0.75 - va],
        ],
        [
            [3, 0.00, 0.50 + va],
            [0, 0.25, 0.50 + va],
            [4, 0.25, 0.75 - va],
            [7, 0.00, 0.75 - va],
        ],
        [
            [3, 0.25 + va, 0.25 + va],
            [2, 0.50 - va, 0.25 + va],
            [1, 0.50 - va, 0.50 - va],
            [0, 0.25 + va, 0.50 - va],
        ],
        [
            [4, 0.25 + va, 0.75 + va],
            [5, 0.50 - va, 0.75 + va],
            [6, 0.50 - va, 1.00 - va],
            [7, 0.25 + va, 1.00 - va],
        ],
    ]

    for poly in pos:
        glBegin(GL_QUADS)
        for idx, u, v in poly:
            x, y, z = pntlist[idx]
            glTexCoord2f(u, v)  # set u, v
            glVertex3f(w * x, w * y, w * z)
        glEnd()

    glPopMatrix()


def draw_gl():
    global cam_rot_x, cam_rot_y, cam_pos

    glClearColor(0.2, 0.4, 0.8, 0.0)  # background color
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

    glLoadIdentity()  # Reset The View

    # move camera
    r = 8.0
    rr = r * math.cos(math.radians(cam_rot_x))
    ey = r * math.sin(math.radians(cam_rot_x))
    ex = rr * math.cos(math.radians(cam_rot_y + 90.0))
    ez = rr * math.sin(math.radians(cam_rot_y + 90.0))
    tx, ty, tz = 0.0, 0.0, 0.0
    gluLookAt(ex, ey, ez, tx, ty, tz, 0, 1, 0)
    cam_pos = (ex, ey, ez)

    draw_skybox()

    glDisable(GL_TEXTURE_2D)
    glDisable(GL_ALPHA_TEST)

    glutSwapBuffers()


def init_viewport_and_pers(width, height):
    global scr_w, scr_h
    # Prevent A Divide By Zero If The Window Is Too Small
    if height == 0:
        height = 1

    scr_w, scr_h = width, height

    # Reset The Current Viewport And Perspective Transformation
    glViewport(0, 0, width, height)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()  # Reset The Projection Matrix

    # Calculate The Aspect Ratio Of The Window
    # gluPerspective(fovy, aspect, zNear, zFar )
    gluPerspective(60.0, float(width) / float(height), 0.1, 100.0)
    glMatrixMode(GL_MODELVIEW)


def InitGL(width, height):
    glClearColor(0.2, 0.4, 0.8, 0.0)  # background color
    glClearDepth(1.0)  # Enables Clearing Of The Depth Buffer
    glEnable(GL_DEPTH_TEST)  # Enables Depth Testing
    glDepthFunc(GL_LESS)  # The Type Of Depth Test To Do
    glShadeModel(GL_SMOOTH)  # Enables Smooth Color Shading

    init_viewport_and_pers(width, height)


def resize_gl(width, height):
    init_viewport_and_pers(width, height)


def on_timer(value):
    global cam_rot_x, cam_rot_y
    # cam_rot_y += 0.25
    glutPostRedisplay()
    glutTimerFunc(int(1000 / FPS), on_timer, 0)


def key_pressed(key, x, y):
    # If escape is pressed, kill everything.
    ESCAPE = b"\x1b"
    if key == ESCAPE or key == b'q':
        if glutLeaveMainLoop:
            glutLeaveMainLoop()
        else:
            sys.exit()


def mouse_move(x, y):
    global mouse_x, mouse_y, cam_rot_x, cam_rot_y, scr_w, scr_h

    dw = scr_w / 2
    dh = scr_h / 2
    mouse_x = (x - dw) / dh
    mouse_y = (y - dh) / dh

    cam_rot_x = 90.0 * mouse_y
    cam_rot_y = 180.0 * mouse_x


def main():
    global window

    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)

    glutInitWindowSize(SCRW, SCRH)
    # glutInitWindowPosition(0, 0)

    window = glutCreateWindow(b"Draw Skybox")

    glutDisplayFunc(draw_gl)
    glutReshapeFunc(resize_gl)
    glutKeyboardFunc(key_pressed)
    glutPassiveMotionFunc(mouse_move)
    # glutFullScreen()

    # glutIdleFunc(draw_gl)
    glutTimerFunc(int(1000 / FPS), on_timer, 0)

    InitGL(SCRW, SCRH)

    load_texture()

    glutMainLoop()


if __name__ == "__main__":
    print("Hit ESC key to quit.")
    main()


使用画像は以下。512 x 512 x 6枚の画像を 2048 x 2048 x 1枚に収めている。

_montorfano_cubemap.png (2.93MB)
_alps_field_cubemap.png (3.41MB)
_bell_park_cubemap.png (3.06MB)


実行は以下。
python 01_draw_skybox.py


ちなみに、画像は、Poly Haven でCC0で公開されている、正距円筒図法のHDRIを元にして作成した。ありがたや。

_Poly Haven
_正距円筒図法
_(Equirectangular projection)

作り方は以下でメモしてある。

_Skybox用のテクスチャを作成

覚書。 :

Skyboxは、カメラを取り囲むような大きな箱を表示して、その箱に遠景相当のテクスチャを貼ることで実現するけれど。カメラが移動して箱との位置関係が変わってしまうとちょっと困る。

そのあたりは、箱を描画する前に設定する変換行列に対して、平行移動成分のみを 0.0 にすることで対処する。これで、カメラの角度は反映されるけど、位置関係は常時変わらない状態になる。

OpenGL (PyOpenGL) + GLUT で、マウスカーソルが移動したことを検出するには、glutPassiveMotionFunc() を使う。指定した関数には x と y の引数が渡されるけど、この x, y には、ウインドウ内におけるマウスカーソルの座標値が入ってる。

箱の境界部分に黒い線が入ってしまって悩んだけれど、テクスチャの座標指定値をほんの少し弄ってみたら消えてくれた。draw_skybox() 内の va = 0.0005 が弄ってる量。本当にこういう対処でいいのかどうか分からんけど…。ちなみに、以下が黒い線が入ってしまっている状態。

ss_01_draw_skybox_nogood.png

2021/10/03() [n年前の日記]

#1 [cg_tools] ドット絵を弄ってる

道路のパターンを描いたドット絵の並びを弄ってるところ。

マップエディタ Tiled でそこそこ配置した後で、元画像となるタイル(?)画像の並びを弄ろうとしたものだから、面倒臭いことになっていて…。

Tiled のタイルセットウインドウ上で、Ctrl + クリックで2つのタイルを選んでから、右クリックメニュー → タイルの交換、を選べば、マップ上に配置済みの指定タイルを別のタイルで置き換えることができるのだけど…。位置を変更したタイルが1つや2つじゃないものだから、一つ一つ「タイルの交換」を選んでいると時間がかかってしょうがない…。

マップ上のタイルについて、ID min - ID max に対して任意の値を加算・減算、みたいな機能があれば楽になりそうだけど…。そういう機能、もしくはプラグインは無いのだろうか。

いやまあ、マップを作成した後で、タイルセット上のタイルの配置を変更するという行為がおかしいのかもしれんけど。

2020/10/03() [n年前の日記]

#1 [blender][godot] Godot Engineにアニメーションデータを持っていく方法がよく分からず

Blender 2.90.1 x64 でアニメーションをつけて、Godot Engine 3.2.3 x64 にモデルデータ+アニメーションを持っていこうとしているのだけど、手順がよく分からず。手順と言うか、どのファイルフォーマットなら持って行けるのかが…。

一応メモしておくけれど、 Godot Engine は以下のファイルフォーマットで出力された3Dモデルデータをインポートすることができる。
_3Dシーンのインポート ? Godot Engine (stable)の日本語のドキュメント

Wavefront (.obj) は持たせられる情報が少ないので今回は考えないとして、さて、他のどのフォーマットなら、アニメーションデータを持っていきやすいのか…。

とりあえず、Blender上で、2つのオブジェクトがグルグル回るアニメーションをつけてエクスポートして、Godotでインポートしてみたり。

インポートの仕方は、モデルデータファイルを Godot のプロジェクトフォルダ内に置いとけば、Godot でプロジェクトを開いた際に自動でインポートしてくれる。あるいは、事前に Godot でプロジェクトを開いておいて、ファイル一覧ウインドウにモデルデータファイルをドラッグアンドドロップしてもいいらしい。

Godotのファイル一覧ウインドウ内に入ってくれた、.glb だの .dae だのをダブルクリックすれば、「新規の継承」「とにかく開く」のどちらかを選ぶことで、3Dウインドウの中にモデルが表示される。

ノードを確認すると、AnimationPlayer というノードがある。これがアニメーションを管理するノードらしい。選択すれば、下のほうにアニメーションを指定するためのウインドウが表示される。

さておき。glTF (.glb) をインポートしてみても、2ヶ所が回るはずなのに、1ヶ所しかアニメしてくれなくて。各オブジェクトに指定されているアニメデータが、別々のアニメ種類として取り込まれているようで…。glTFなら、メッシュデータは比較的ちゃんと表示できるのだけど、アニメーションについては少し難アリっぽいなと…。

2019/10/03(木) [n年前の日記]

#1 [windows] Ghostscriptをアップデート

Paint.NET で eps や ai を開くプラグインをインストールしたら、Ghostscript 64bit版が入ってないから開けない、と言われてしまって。

_'PostScript' FileType Plugin (.PS, .EPS, .AI) - FileType Plugins - paint.net Forum

今までは gs 9.07 32bit版しか入れてなかったけど、64bit版も入れないとダメか…。せっかくだから、最新版を入れておこうかなと。

Ghostscript 9.27 ―― gs927w32full-gpl.exe とgs927w64full-gpl.exe を入手。今までインストールしていた版はアンインストールして、32bit版と64bit版をフォルダを変えてインストールした。環境変数PATHに、32bit版、64bit版の、〜\bin と 〜\lib を追加。

Paint.NET 上で eps を開けるようになったことを確認。

#2 [zatta] コンビニで買い物

犬の散歩のついでに、ミニストップで夜食を購入。

たしか、消費税アップ直後にミニストップがレジ計算でトラブルを起こしてたので、若干恐怖を感じながら買い物をしたけれど。レシートを眺めた感じでは、一応計算通りの記述になっていた。ここ数日で、バグは潰せたということだろうか。

レシートをじっと眺めてるうちに気が付いたけど。自分が外で買い物をする場合、大体は食糧の調達だから…。消費税が10%に上がった、というより、一部の商品の消費税が10%に上がった、という感じなのかもしれないなと…。

そのあたりを考えると、「軽減税率なんて要らねえ」と叫ぶ人達って、間違いなく、こっち側じゃなくてあっち側の人達なんだろうなと。政府の工作員か、商売をやってる人か、貧乏人の生活ぶりを欠片も想像してくれないお金持ち達、みたいな。

何にせよ、レシートをじっと眺めてみれば、自分がどっち側に属しているのか、なんとなく分かってきそうな気もするなと。このあたりまで10%になっちゃうのはキツイなあ、と感じるのか。ただ単に、計算めんどくせー、と感じるのか。後者はお金持ちだよなあ…。

そもそも、消費税を導入する際、軽減税率まで導入すると面倒臭くなるから止めろ、と商売をしてる人達が大反対して、故に、味噌も糞も横並びで同じ税率にすることでなんとかどうにか消費税を通してしまった、という経緯があるわけで。あの時、面倒臭がらずにちゃんと軽減税率を導入していたら、今頃になってドタバタする必要も無かったはずで…。

マスコミの大半は広告を出してくれるスポンサーの言いなりなので、当然何かを主張する時も、スポンサー、つまりは商売人達にとって都合のいい話ばかりを流すはずで。貧乏人は騙されないようにしないと…。

せめて、レシートをじっと眺めよう。じっと眺めて、自分はどっち側なのか、ちょっとは考えてみたいものだなと。なんてことを思ってしまったりなんかしてしまったりなんかして。

待てよ。もしかして、キャッシュレスになると、レシートを眺める機会も…。

2018/10/03(水) [n年前の日記]

#1 [blender] blenderをまだまだ勉強中

blenderを使ってモデリングの勉強中。

2017/10/03(火) [n年前の日記]

#1 [ruby] Webサイトのスクリーンショットを取りたいのだけど

某所のWebサイトを更新していたのだけど、掲載すべきURLが複数あって、かつ、サムネイル画像も必要なので、URL先のスクリーンショットを撮ってGIMPでトリミングや加工や縮小を手作業で行うあたりが面倒臭いなと。URL先のスクリーンショットを撮れる何かは無いものだろうか…。

少しググったら、selenium なるものがあると知った。Ruby からも使えて、selenium-webdriver をインストールすればいいらしい。もうちょっと調べてみるか…。

まあ、今回は、時間がアレなので、手作業でコツコツと。

2016/10/03(月) [n年前の日記]

#1 [prog] Tcl/Tkのteacupってなんじゃろ

Tcl/Tk関連ページを眺めてたら、teacup なる単語が目に入った。なんじゃろコレ。

_Teacup_TEApot と TEAcup:Rainy Day Codings:So-net blog を眺めると…。ActiveTclをインストールしてある環境なら使えるらしいパッケージマネージャ、ということでいいのかな。

以下はWindows10 x64環境での話。ActiveTcl を C:\Tcl にインストールしたものとする。

DOS窓で tclsh と打つと Tcl のコマンド入力(?)ができる状態になる。そこで teacup list と打てば、インストールできるパッケージの一覧が表示されるらしい。

例えば、ファイルのドラッグアンドドロップができるようになる tkdnd をインストールしたければ、teacup install tkdnd と打てばいい。

インストールされたアレコレは、C:\Tcl\lib\teapot\package\win32-ix86\lib\ 以下に入る。確認したところ、tkdnd2.8 というフォルダが増えていた。

teacup のバージョン確認。
% teacup version

        8.5.18.0.299124

ヘルプ表示。
% teacup help

    teacup.EXE
    is a tool to access package repositories

        teacup.EXE help cmds-by-group   Grouped list of commands provided by teacup
        teacup.EXE help commands        Alphabetical list of commands provided by teacup
        teacup.EXE help help            How to use help
        teacup.EXE help options         Describes the standard options
        teacup.EXE help queries         Describe the syntax of complex queries

ちなみに tclsh から抜けるなら exit と打てばいいらしい。

#2 [ruby] Ruby/GTK2をアップデートしようとしてハマった

Windows10 x64 + Ruby 2.2.5 p319 で、Ruby/GTK2 ( _gtk2 ) 3.0.9 をインストールしようとしてハマった。

本来であれば、gem install gtk2 と打てば必要なものをインストールしてくれるはずだけど、現時点では _gio2_gobject-introspection もインストールしないといけないらしい。

_gdk_pixbuf2 3.0.9 lacks dependency - Issue #862 - ruby-gnome2/ruby-gnome2
_Detection of libgirepository-1.0 broken - Issue #900 - ruby-gnome2/ruby-gnome2
@kou 3.0.9にgio2とgobject-introspectionがgdk_pixbuf2に必要とされているが、
gdk pixbuf に gobject-introspection と gio2 の gem が必要とされていません。
また、gobject-introspectionが必要とされていることで↑の様に
rsvg2などを使っている場合 heroku 度にビルドパックなしでデプロイが出来ない状況です。
今ビルドパックを作ろうとしていますが、
そもそもgdk_pixbuf2にgio2/gobject-introspectionが必要なければ除いた方が良いのでは?と思います。
もし必要であれば gdk_pixbuf2 の gemspec に gobject-introspection と gio2 を足した方が良さそうです。

_gdk_pixbuf2: Fix runtime dependency by cosmo0920 - Pull Request #906 - ruby-gnome2/ruby-gnome2

#3 [ruby] RubyのGUI関連について調べてる

Windows上でRubyを使ってGUIアプリを書きたい。できればエクスプローラからファイルをD&D(ドラッグアンドドロップ)するとウインドウ内にファイルを読み込める仕様にしたい。

RubyでGUIアプリを書けるアレコレ、かつ、今もメンテナンスされてる気配があるソレと言うと、Ruby/Tk、 _Ruby/GTK2(Ruby-GNOME2?)_FxRuby 等があるわけだけど。FxRuby がちょっと気になってググってみたものの、D&Dはサポートしてないぜ、てな情報を見かけた。

_FXRuby Users - Drag and drop from the filesystem

FxRuby が使っている FOX なるソレがそもそもサポートしてないから無理なんだぜ、と書いてあるように見える。そうか。FxRuby はダメか…。

Ruby/Tk でD&Dするなら、おそらく Tkdnd を使ってどうにかするのだろうと想像するけれど、ググってみても使用例がまったく出てこない。Ruby関連のドキュメントの中に Tkdnd という文字列はあるから、何かと絡めて実装されてるのかもしれんけど…。

Ruby/GTK2 は、ファイルのD&Dをサポートしてるっぽい。

_Ruby Window Drop: いち雑記

その他のGUIのアレコレについて。 :

_Rubyist Magazine - Ruby de GUI でいろいろ紹介されてるものの、2004年の古い記事だし、QTRuby、Ruby/FLTK、wxRuby、VisualuRuby は開発停止で死んでるし。

一時期 _Shoes なんてものも話題になったけど、 _Shoes - Wikipedia によると、これまた2009年に一度死んでいたらしい。有志がforkだかメンテナンスを続けて、Ruby/GTK2を利用した _green_shoes は2013年で止まってるし。

Qt を利用したソレは、 _qtbindings という形で使えるのかもしれない。もっとも、2015年の5月、つまり去年の5月から開発が止まってるようだけど。

_Ruby の GUI ライブラリ - メモ@wantora でも、2012年の時点での各フレームワークの死滅具合が列挙されてた。

Ruby、ボロボロやな。 *1

*1: いや、でも、Rubyに限った話じゃないよな。Go言語から使えるGUIフレームワークなどは、もっと酷い状況だし。

2015/10/03() [n年前の日記]

#1 [dxruby] Spriterのsconファイルを表示するスクリプトを弄ってる

もうグチャグチャになってきて全く動かなくなってしまったので、最初に書いたスクリプトを発掘して、そこに手を入れていくことに。gitのローカルリポジトリも削除して、最初からやり直し。

2014/10/03(金) [n年前の日記]

#1 [ubuntu][vmware] VMware Player上でUbuntu設定中

色々設定中。

ネットワーク速度はそんなに遅くなかった。 :

_speedtest-cli Ubuntuの端末からインターネット速度を測定するコマンド | Ubuntuアプリのいいところ という記事で、ネットワーク速度を調べられる speedtest-cli というツールがあることを知ったので、試しにインストール。

_How to Test Internet Connection Speed using Speedtest-Cli on Ubuntu Server | Ubuntu Server Guide で、python-pip を使ってインストールする方法が紹介されてた。
sudo apt-get install python-pip
sudo pip install speedtest-cli
speedtest-cli
結果は以下。
$ speedtest-cli 

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Open Computer Network (223.217.224.92)...
Selecting best server based on latency...
Hosted by World's Fastest Indian (Tokyo) [218.87 km]: 45.251 ms
Testing download speed........................................
Download: 15.47 Mbits/s
Testing upload speed..................................................
Upload: 22.59 Mbits/s
10Mbps以上は出てるっぽい。そんなに遅すぎるわけでもなさそう。uploadのほうが速いのが不思議だけど。

LibreOfficeをアンインストール。 :

_apt - How to uninstall LibreOffice? - Ask Ubuntu

sudo apt-get remove --purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

LXDEをインストール。 :

ウインドウマネージャとしてLXDEを使ったほうが軽いらしいのでそちらをインストール。
sudo aptitude install lxde
sudo aptitude install lubuntu-desktop
以下のパッケージがインストールされた、とメモ。
consolekit galculator giblib1 gksu gpicview gtk2-engines leafpad 
libencode-locale-perl libfile-listing-perl libfm-data libfm-extra4 
libfm-gtk-data libfm-gtk4 libfm-modules libfm4 libfont-afm-perl 
libgif4 libgksu2-0 libglade2-0 libhtml-form-perl libhtml-format-perl 
libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl 
libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl 
libhttp-message-perl libhttp-negotiate-perl libid3tag0 libimlib2 
libio-html-perl libjpeg-progs libjpeg-turbo-progs liblwp-mediatypes-perl 
liblwp-protocol-https-perl libmenu-cache-bin libmenu-cache3 
libnet-http-perl libobrender29 libobt2 libpam-ck-connector 
libvte-common libvte9 libwww-perl libwww-robotrules-perl 
libxmmsclient-glib1 libxmmsclient6 lxappearance lxde lxde-common 
lxde-core lxde-icon-theme lxinput lxmenu-data lxmusic lxpanel 
lxrandr lxsession lxsession-data lxsession-edit lxsession-logout 
lxshortcut lxterminal menu menu-xdg obconf openbox p7zip-full 
pcmanfm scrot xarchiver xmms2-core xmms2-plugin-alsa 
xmms2-plugin-id3v2 xmms2-plugin-mad xmms2-plugin-vorbis 
xscreensaver xscreensaver-data 
abiword abiword-common abiword-plugin-grammar 
abiword-plugin-mathview audacious audacious-plugins 
audacious-plugins-data avahi-daemon blueman desktop-base 
ffmpegthumbnailer fonts-droid fonts-lyx gdebi gdebi-core 
gecko-mediaplayer gnome-desktop-data gnome-icon-theme-full 
gnome-mplayer gnome-system-tools gnome-themes-standard 
gnome-themes-standard-data gnumeric gnumeric-common gnumeric-doc 
gtk2-engines-pixbuf guvcview hardinfo indicator-application-gtk2 
libaacs0 libabiword-3.0 libaudclient2 libaudcore1 libavresample1 
libbinio1ldbl libbluray1 libbs2b0 libcddb2 libchamplain-0.12-0 
libchamplain-gtk-0.12-0 libcompfaceg1 libcue1 libdiscid0 libexo-1-0 
libexo-common libexo-helpers libffmpegthumbnailer4 libgda-5.0-4 
libgda-5.0-common libgdome2-0 libgdome2-cpp-smart0c2a libgmlib1 
libgmtk1 libgmtk1-data libgoffice-0.10-10 libgoffice-0.10-10-common 
libgsf-1-114 libgsf-1-common libgtkmathview0c2a libgtkspell0 libguess1 
libindicator7 libjs-jquery liblink-grammar4 libloudmouth1-0 libmowgli2 
libmusicbrainz3-6 libnet-dbus-perl libnss-mdns libonig2 liboobs-1-5 
libopts25 libots0 libpisock9 libpostproc52 libquvi-scripts libquvi7 
libsdl1.2debian libsidplayfp libtidy-0.99-0 libtie-ixhash-perl libuniconf4.6 
libvdpau1 libwebcam0 libwv-1.2-4 libwvstreams4.6-base libwvstreams4.6-extras 
libxfce4ui-1-0 libxfce4ui-common libxfce4util-bin libxfce4util-common 
libxfce4util6 libxfconf-0-2 libxml-parser-perl libxml-twig-perl 
libxml-xpathengine-perl light-locker light-locker-settings 
lightdm-gtk-greeter link-grammar-dictionaries-en lm-sensors 
lubuntu-artwork lubuntu-artwork-14-04 lubuntu-core lubuntu-default-session 
lubuntu-default-settings lubuntu-desktop lubuntu-icon-theme 
lubuntu-lxpanel-icons lubuntu-software-center lxappearance-obconf 
lxlauncher lxpanel-indicator-applet-plugin lxsession-default-apps 
lxtask mplayer2 mtpaint ntp pidgin pidgin-data pidgin-libnotify 
plymouth-theme-lubuntu-logo plymouth-theme-lubuntu-text 
python-gudev python-psutil python-pysqlite2 sylpheed sylpheed-doc 
sylpheed-i18n sylpheed-plugins system-tools-backends transmission 
uvcdynctrl uvcdynctrl-data wvdial xfburn xfce4-notifyd 
xfce4-power-manager xfce4-power-manager-data xfconf xfonts-100dpi xpad
これをアンインストールすれば元通りになる、のかな。たぶん。怪しいけど。

ログイン時に、右上の方で「Lubuntu」を選んでおかないと、いつも通りに unity が起動してしまうので注意。

全然関係ないけど、3Dゲーム制作ツールの Unity と、Ubuntuデスクトップの unity があって、調べるときに面倒臭いなと。他にも unity というツールがあるようで、どうして皆、そんなに unity という単語を使いたがるのかと…。

IPv6を無効にできない。 :

IPv6を無効にしたいのだけど、働いてくれない。OSは、Ubuntu 14.04 i386。

一般的には以下でいいはず、なのだけど。
sudo vi /etc/sysctl.conf
以下の行を追加。
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
反映させる。
sudo sysctl -p

sudo sysctl -p を実行した段階で、ifconfig を打ってみると、たしかに無効になってる。

ところが、再起動すると、また IPv6 が有効になっている…。

_Ubuntu - Disabling IPv6 support に従って、以下も試してみた。
sudo vi /etc/modprobe.d/blacklist.conf
以下を追加
blacklist ipv6

しかし、これでも再起動するとipv6が有効になってしまう。

kernel にオプションを渡してみる。
sudo vi /etc/default/grub
kernel オプションに以下を追加。
ipv6.disable=1
grubに反映させる。
sudo update-grub

これでようやくIPv6が無効になってくれた。しかし、どうしてだろう…。

sambaが動いてくれない。 :

sambaの設定をしているのだけど、Windows7 x64 からアクセスできない…。

/etc/samba/smb.conf に
netbios name = ホスト名
とか書いておけば、nmbd がイイ感じにしてくれる、てな情報を見かけたけど。ping ホスト名 は通っても、Windows7 の「ネットワーク」から辿ると「ネットワークパスが見つからない」と言われてアクセスできない。

余計な指定をしていたらしい。以下をコメントアウトしたらアクセスできた。
# interfaces = eth0 127.0.0.1 192.168.1.
# bind interfaces only = yes

一応、以下の指定で、アクセスできるIPを制限しておく。
hosts allow = 127.0.0.1, 192.168.1.
hosts deny = 0.0.0.0/0

少しググった感じでは、interfaces とか bind interfaces only は、NICが複数ある場合に使う設定、らしい…?

#2 [anime] Free!2期最終話を視聴

録画してたソレを視聴。

面白かった。一見すると半裸の美少年ばかりが画面に出てるから女性向けアニメと勘違いされそうだけど、別にそういうわけでもないよなと。監督が女性だからそういう方向もしっかり狙ってるだろうけど、自分のようなおじさんが見てもフツーに面白かったので、ちゃんと一般向けのバランスになってたと思うのですけど。

以下、全体的な印象・感想をメモ。

水と筋肉に立ち向かった稀有な作品。 :

前にも書いたけど、手描きアニメにおいて、水の表現や筋肉の描写は難しいとされてるわけで。しかしこの作品、水泳がテーマだから、水と筋肉から逃げられない。スタッフ自ら設定面において背水の陣を引いた印象。しかも、映画ならともかく、TVアニメですよ。

それなのに、2クール分も描ききったのだから、それだけでも称賛されてしかるべきだよなと。アニメにおける水の表現を学ぶ際の映像教材になるのではないか、とすら。あるいは、2014年の時点で日本の手描きTVアニメはここまで表現できたという一種の金字塔、てな部分もあるんじゃないかと。さすが京アニ。

手描き云々じゃなくて、撮影技術で頑張った部分だろうけど、最終回の最初のあたりの、小川の水面の表現は、感心して何度も巻き戻して見てしまいました。フィルム撮影時代なら、波ガラスを置いてどうにかするか、あるいは水面の一部の動きを宮崎アニメよろしく動画で描いて疑似表現するぐらいしか無かっただろうけど。デジタル技術導入で試行錯誤がしやすくなったせいか、レベルが一段上がっているよなと。
  • 波フィルタを使って1コマずつちゃんと動いてるように見せられるし。
  • 水面の反射を表現する透過光を別レイヤーで何枚も置けてキラキラしてるし。
  • 水面に落ちる影にも波フィルタをかけられるからリアルに見えるし。
他にも色々なレイヤーを置いて画作りをしてたのだろうけど、ウットリするほどに綺麗な水面の表現ができていたと思います。

また、これは脚本・演出面だろうけど、小川の中に居る魚が実にイイ。その場に居る主人公達の人数が、2人→4人になるのに合わせて、魚の数も2匹→4匹に変わって。しかも、3匹が1匹を心配してる雰囲気で。これはアニメならではだなあ、実写じゃこんなのできないよー、と感心。実写だったら、3匹が1匹を心配する光景なんて、一体何日張り込めば撮れるのかさっぱり予測できないし、そもそも小川に魚を4匹放流した時点でどこかに逃げてくよ! みたいな。CGで魚作って実写風景に合成するしかないよなと…。地味でさりげないカットだけど、全てをコントロールして、こういう見せ方もできてしまうあたりが、アニメの強みだなと再認識。

キャッキャウフフ。 :

個人的に、この作品、「けいおん」の美少年版として捉えているのですが。楽器がプールになり、美少女が美少年になった、みたいな。「けいおん」が女子高生達のキャッキャウフフなら、「Free!」は男子高校生達のキャッキャウフフだよなと。

「けいおん」は女性監督が担当してたけど、それで行くと「Free!」は男性監督のほうが合ってたのだろうか。いや、男性監督では、こうはならないよな。おそらく試合結果がどうとかの、競争意識だけが前面に出てくる、ギスギスした内容になりそう。おそらく、キャッキャウフフは女性作家のほうが上手に描けるのではないか、などと思えてきたり。

しかし、「Free!」の脚本は横谷昌宏氏なわけで。そういや横谷氏はケロロ軍曹もやってたっけ。アレだって、少年達のキャッキャウフフと言えなくもないよな…。つまり、少年少女を問わずキャッキャウフフさせたいなら横谷氏に仕事をお願いすると上手にやってくれそうだ、てな話になるのかしら。

「けいおん」のメインライターだったであろう吉田玲子氏も、SFロボットアニメの「マジェスティックプリンス」でキャッキャウフフを描いてた気もするけど、何かが違ったような…。女性脚本家が描く少年達のキャッキャウフフと、男性脚本家が描く少年達のキャッキャウフフは、何か違う気がする。その違いの正体が分からないですけど。

逆に、男性脚本家が描く少女達のキャッキャウフフは、女性視聴者から見て「何かが違う」と思われたりするのだろうか。どうなんだろう。よくわかりません。

以下ネタバレ。 :

※ 隠してある部分は、クリックすると外れます。

「けいおん」の男女反転版が「Free!」と捉えていたので、 卒業がどうとかで主人公達が泣き始めたシーンでは、「ハイハイハイ、キタキタキター。やっぱり来たよー」って感じでした。成功体験を踏襲してるな、みたいな。

もちろん、学生さんにとって 卒業は重要イベントだし、進路云々も面倒な問題なので、これを利用しない手はないよなと。アレで正解だと思いました。

記憶を上手に引き出せるアニメは強い。 :

CMを挟んでのラストカットには、「そう来たか…」と唸りました。あのカットは、たしか、 京アニのTVCMとして流してたパイロット映像のラストカットと同じレイアウトだったはず。

制作途中で紆余曲折があったはずだけど、しかし、ラストカットを同じにしたことで、「初志貫徹ができました!」てな雰囲気を出せている・そういう部分でも演出ができているよなと。一本筋が通った瞬間を目撃できたかのような、ある種の清々しさを感じたわけで。ここでこのカットを出してくるのは上手い、と感心を。

また、あのラストカットは、視聴者側の「記憶」を引き出すトリガーなわけだから、これは「強い」ぞ、と思えたり。

個人的には、視聴者の持ってる「記憶」を上手に引き出すアニメって「強い」と思うわけですよ。例えば、「となりのトトロ」とかそうですし。
  • メイがおたまじゃくしの群れに手をツッコんだ時のおたまじゃくしの動き。
  • 蚊帳の中で寝ている家族。
  • 何軒か農家が集合してる場所の小道の風景。
  • etc。
そういう土地、そういう時代を暮してきた人達が、すっかり忘れていた記憶を呼び覚ますトリガーだらけ。なので、そういう層にもドカンとウケたわけですけど。…あまりにウケ過ぎちゃって、そういう世代から、自然保護がどうとか、昔に戻せとか、変な話まで出てきて少し困ったわけですけど、それはさておき。

で。「Free!」の場合、 パイロット映像を見るという行為が、視聴者にとって「体験」だったわけで。「なんですか、このクオリティの高い映像は?」「この美少年達は誰なの?」「これはTVアニメなの? 映画なの?」「『京アニの新しい挑戦』って一体どゆこと?」等々疑問を抱かせて期待させる、てな体験を与えてた。

そして、「体験」させたことで、視聴者側に「体験の記憶」が作られる。その「記憶」を、本編ラストにトリガー仕込んで、まんまと呼び出す…てなことができていたのかもしれないなと。これは計画通りなのか、たまたまそうなったのか分からないけど、何にしてもこれはたぶん強いんじゃないか、てなことを思ったのでした。

「境界の彼方」でも、毎回聴かされて出来上がってる、OP曲という「記憶」を上手に使ってたし。考えてみれば、「けいおん」の 卒業云々だって、学生時代を体験したことのない人はまず居ないのだから、共通して持ってる「記憶」を上手に使ってた、と言えるのかもしれず。さすが京アニ、なのかしら。

見たことのない景色。 :

「見たことのない景色」の映像は、正直、初見時は、「なんじゃこりゃ」と思ってしまったのですけど。しかし、後になって制作状況を妄想したら、これはこれでと思えてきたり。

例えば監督から、
「最終回なんだから、四人に『見たことのない景色』を本当に見せてやりたいんですよ! …じゃあ、あとよろしく!」
と発注されたら、脚本家さんは頭抱えるよなと。

あるいは、仮面ライダーシリーズの井上脚本のように、脚本上では、
「四人、『見たことのない景色』を見る。
 試合終了。湧き上がる歓声」
と、さらっと書かれてたら、今度はコンテマン・演出家が頭を抱えるよなと。

そんな状況を妄想すると、あのシーンは、あれはあれでアリなんじゃないかなと…。どの職種が頭を抱えたのか分からないけど、無茶な発注によく応えた! みたいな。

まあ、実際には会議で決まったのだろうと想像するのですけど。今時のアニメは、なんでも会議で決めていくらしいですし…。

「『見たことのない景色』ねえ…。どんな景色なんだろう」
「うーん。生物が海で暮らしていた頃の原初的な記憶が再現されるとか」
「エサのプランクトンが目の前にたくさん見えるぜ、今日は御馳走だ! みたいな?」
「プランクトンはちょっと…」
「そこはせめて魚じゃないの?」
「魚…? サバか!」
「それハルにしか通じない! 他の三人ポカーンだから!」
「サバの大群か…。CG班にお願いしないと」
「真面目に考えなくていいから! サバは無し! 却下!」
「魚は生臭い感じがして嫌だなあ。俺、魚嫌いなんだよね…目も怖いし…」
「庵野監督みたいなこと言わないでください」
「なら、 イルカはどう?」
「ソレだ! その方向で行きましょう」
「皆が イルカを見てもつまんないよね」
「じゃあ、 クジラとか シャチとか。他に何があるかな」
「一人ぐらい変なの見てもいいんじゃない?」
「レイはちょっとずれてるから変なの見そうですね」
「アイツだけ イワトビちゃんが見えたりして」
一同笑。
「さすがに イワトビちゃんはマズいよ。せめて イワトビペンギンとかさあ」

そんな妄想をしてから件のシーンを思い返してみたら、アレはアレでアリだな、スタッフは頑張ったよなあ、と…。

「見たことのない景色」って、どんな景色なんでしょうね。

2013/10/03(木) [n年前の日記]

#1 [digital][neta] CUIで操作できるHDDレコーダがあったらどうなるんだろう

東芝製HDDレコーダを操作してると反応の遅さにイライラしてくるのだけど。これがもし、CUIだったら、もっとサクサク動くのかなあ、てなバカ妄想を。

ls と打ち込むと録画番組一覧が表示されて。play 進撃の巨人 と打ち込めば、再生が始まって。みたいな。

コマ送りするために、nextframe とか gotoandstop 1 とか打ち込まないといかんのかな…。シンドイな…。

CUIで操作できるようになって、仮に利便性が増す部分があるとしたら、自動操作ができる可能性が出てくるあたりかな。しかし、HDDレコーダで自動操作したい場面って、あり得ないか…。映像を見ながら何かをする、という操作がほとんどだもの。

#2 [pc][neta] VimはCGツール

blender を触ってるうちになんとなく思ったけど。VimってCGツールだよなと。…コレ、前にも書いたかもしれんけど。

CGツールのショートカットキーは、えてしてワンキーが割り当てられていて。CGツールは文字入力がメインのツールではないから、マウスで作業中、キーボードは遊んでる。だから、キーを1つ押せば即座に道具を切り替え可能、てな設定が可能で。

Vim も同じだなと。ワンキーで各機能が呼び出せる。しかし、Vim はエディタなのに ―― 文字入力をするツールのはずなのに、どうしてそんなことができるのか。それは、編集モードと入力モードを分けているからで。

これが Emacs になると、Vimと違ってモードレスを志向していたエディタだから、ワンキー入力は全て文字入力で使われてしまう。故に、ショートカットキーは、CtrlキーやAltキーと併用したものになる。このあたり、Vim に慣れた人がイライラするのかもしれないなと。

ということで、Vim はエディタでありながらCGツールみたいなヤツだなと。

てな話を踏まえた上で。

ここでもし、マウスとキーボードの関係を入れ替えて考えてみたらどうなるかなと妄想を。エディタというツールは、文字入力をするツールなのだから、キーボードが遊んでる暇はない。でも、その時、マウスはどうなのか。見事に遊んでるよなと。

そのあたりを考えていけば、コロンブスの卵っぽい、画期的かつ圧倒的作業効率が得られる操作スタイルに辿り着けるのでは…。

と思ったのだけど。キーボードを打ちまくってる時って両手を使いますな。なんてこった。マウスは遊んでるけど、そのマウスを操作できる腕がもう残ってないや。この案は没。

それとはまた別に。CGツールだのエディタだののショートカットキーのあり方を別ジャンルのソフトに応用できないものかな、とも。DTMソフトとか、ゲームとか…。CtrlキーやAltキーを併用しないと操作できないゲーム。どんな内容なんだろう。

#3 [unity] Unityのアレコレをメモ

ここ数日勉強したアレコレをメモ。まあ、メソッド名やクラス名でググれば、ちゃんとした解説記事がたくさん読めますけど。

ちなみに C# で書いてました。

初期化と毎フレーム呼ばれるメソッド。 :

  • void Start() { } は、初期化時に呼ばれる。
  • void Updat() { } は、毎フレーム呼ばれる。ただし、どんな時間間隔で呼ばれるかは不明。

時間の取得。 :

  • Time.deltaTime で、前回のフレームから今回のフレームまでの秒数(float。整数ではなく実数)が得られる。60FPS程度で回ってるなら、たぶん 0.016〜前後が返ってくるのかしら? 実測してないから分からんですが。
  • float spd = Time.deltaTime * 1秒間で動いてほしい量、てな書き方をすれば、今回のフレームで動かすべきおおよその量が得られる。
  • ゲーム起動時から現在までの時間(これも float による秒数)は、Time.time で取得できる。
  • 処理が重くなったらあえて処理落ちさせる、といった作りにしたければ、Time.deltaTime は無視して作ったほうがいいのでしょうかね…? でも、一定の時間間隔で Update() が呼ばれてるのか分からんし…。

入力関係。 :

キーボードやジョイパッドの入力は、
  • Input.GetAxisRaw("Horizontal")
  • Input.GetAxisRaw("Vertical")
  • Input.GetButtonDown("Jump")
等を使う。
  • GetAxis〜() や GetButton〜() を使えば、キーボードにもジョイパッドにも反応してくれる。
  • GetAxisRaw() は、-1 / 0 / +1 の値を返してくる。
  • "Horizontal" は左右。"Vertical" は上下。
  • GetButtonDown() は押した瞬間だけ true になる。
  • "Jump" の他に、"Fire1"、"Fire2"、"Fire3" も指定出来る。
  • どの種類がどのキーと割り当てられているかは、Edit → Project Settings → Input で確認できる。Inspector 上に "Horizontal"、"Vertical"、その他色々が2つあるけど、キーボード用とジョイパッド用で2つ設定が用意されてるらしい?
  • ただし、ジョイパッドは、各ボタンがどこに割り当てられるかが製品によってバラバラ。ボタン割り当てを変更可能な仕様を入れないとマズイかもしれず。

シーンの切り替え。 :

  • Sceneの切り替えは、Application.LoadLevel(シーン番号); を使う。
  • シーン番号は、Build Settings → Scenes In Build で登録(?)した際に割り当てられる。D&Dで並びを変えられる。

transformで動かすか、rigidbodyで動かすか。 :

アタリ判定をするオブジェクトは、transform.position += new Vector3(x, y, z) よりも、rigidbody を指定して動かしたほうがいい、という話を見かけた。transform で動かすと瞬間移動してるような状態になるけれど、rigidbody なら連続して移動している感じの処理にすることもできる、とかなんとか。

rigidbody.velocity = new Vector3(x, y, z) で速度を設定して、Is Kinematic のチェックを外しておけば、その速度で自動で動いてくれる。

速度の単位は、1秒間にどれだけ動くか。

画面外判定と補正。 :

画面外にプレイヤーキャラが飛び出さないようにする処理は以下のように書いてみたけど、これで正解なのか自信無し。
        // 画面外判定と補正
        npos = Camera.main.WorldToViewportPoint(transform.position);
        Vector3 o = transform.position;
        if (npos.x < 0.05f) {
            Vector3 left = Camera.main.ViewportToWorldPoint(new Vector3(0.05f, npos.y, npos.z));
            transform.position = new Vector3(left.x, o.y, o.z);
        }
        if (npos.x > 0.95f) {
            Vector3 right = Camera.main.ViewportToWorldPoint(new Vector3(0.95f, npos.y, npos.z));
            transform.position = new Vector3(right.x, o.y, o.z);
        }

        npos = Camera.main.WorldToViewportPoint(transform.position);
        o = transform.position;
        if (npos.y < 0.1f) {
            Vector3 bottom = Camera.main.ViewportToWorldPoint(new Vector3(npos.x, 0.1f, npos.z));
            transform.position = new Vector3(o.x, o.y, bottom.z);
        }
        if (npos.y > 0.9f) {
            Vector3 top = Camera.main.ViewportToWorldPoint(new Vector3(npos.x, 0.9f, npos.z));
            transform.position = new Vector3(o.x, o.y, top.z);
        }
  • Camera.main.WorldToViewportPoint(transform.position) は、ワールド座標をメインカメラから見た座標系に変換してくれる…のでしょうかね? よく分からない…。
  • ViewportToWorldPoint() は、WorldToViewportPoint() の逆をしてくれるのかな? たぶん。
  • 左下が(0,0)、右上が(1,1)。

オブジェクトの消去。 :

自分自身を消滅させたかったら、Destroy(this.gameObject); を呼ぶ。

アタリ判定とタグ。 :

  • Inspector 上で、○○○ Collider 等の Is Trigger にチェックを入れておけば、何かしらと衝突した際に OnTriggerEnter() その他が呼ばれる。
  • OnTriggerEnter() は、衝突した際に1回だけ呼ばれる。
  • 衝突中にずっと呼ばれるメソッドや、衝突しなくなったら呼ばれるメソッドもあるらしい。
  • 何と衝突したかは、タグを使って判断することができる。
  • タグ(Tag)は、Inspector の上のほうでオブジェクトごとに設定可能。タグの追加がしたければ、Add Tag を選ぶ。Inspector 内の表示がタグ一覧になり、Element 0 の右横が空欄になってるはずなので、そこをクリックして任意のタグ名を入力。同じ手順でタグを増やせる。

以下は、"Enemy"タグを持ったオブジェクトと衝突した際の処理の例。
    void OnTriggerEnter(Collider other) {
        if (other.gameObject.tag == "Enemy") {
            Player.score += 10;
            Enemy obj = other.GetComponent(typeof(Enemy)) as Enemy;
            obj.DeadStart();
            Destroy(this.gameObject);
        }
    }
  • スコアを10点増やして、
  • 衝突してきた相手に「死んどいてね」とメッセージを送って(死亡処理開始のメソッドを呼んでる)、
  • 自分を消滅させる、
という処理をしている。

特定のタグを持っているオブジェクトを検索してポインタを取得。 :

以下の例は、"BgmManager" というタグを持っている GameObject を検索してポインタ(?)を取得する例。BgmManagerクラスには、StartFadeout() というメソッドを追加済み。
    // BGMフェードアウト開始
    GameObject bgm = GameObject.FindGameObjectWithTag("BgmManager");
    BgmManager mbgm = bgm.GetComponent<BgmManager>();
    mbgm.StartFadeout();
  • GameObject.FindGameObjectWithTag("タグ名") で、そのタグ名が割り当てられたオブジェクトを取得できる。
  • ただし、取得できたオブジェクトは GameObject なので、そのオブジェクトに割り当てたクラスに変換(キャスト?)しないと…。
  • hoge.GetComponent<変換したいクラス名>(); で変換できるらしい。
もっと短く書けそうな気もするけど、C# は全然触ったことないので分からんのです…。

テキスト表示。 :

OnGUI() というメソッドを書いておくと、簡易GUIが作れるらしい。

以下の例は、黒い半透明の箱を描画してその上に文字列を描画する処理。
    void OnGUI() {
        string str = "move: Arrow key or WASD\n\nPush SPACE or Button to start";
        int w = 320;
        int h = Screen.height;
        int x = (Screen.width - w) / 2;
        int y = h / 2 - 48;
        GUI.Box(new Rect(x, y, w, 96), str);
    }
  • GUI.Box(new Rect(x, y, w, h), "表示したい文字列"); で描画できる。Rect() が、箱の位置とサイズを指定。
  • マウスクリック可能なボタンを作ったりもできるらしい。
  • 指定文字列中で、改行文字を使うこともできるみたい。

画面サイズの取得。 :

Screen.width、Screnn.height で、画面横幅、画面縦幅が得られる。

サウンド再生。 :

  • 効果音を鳴らしたい時は、鳴らすオブジェクトに AudioSource を追加しておく。オブジェクトを選択しておいた状態で、Unity上部のメニューから、Component → Audio → Audio Source。もしくは、Inspector の一番下の「Add Component」から、なのかな。
  • Audio Source てのは、スピーカ相当らしい。音を出してくれるブツ、という扱い。
  • スピーカから流れてきた音を聞く、「耳」に相当するブツも必要。それが、Audio Listener。
  • 初期状態では、メインカメラにあらかじめ Audio Listener がついているので、各オブジェクトに Audio Source をつけてそこから音を出してやれば、耳がついているも同然のメインカメラが音を拾ってくれて、それがPCのスピーカから流れてきますよ、という状態らしい。
  • スピーカから流す波形データは、AudioClip なるクラスで扱う。
以下は、自身の発生と同時に、2種類の効果音(AudioClip)のどちらかをランダムで選んで再生して、再生が終わった1秒後ぐらいに自身を消滅させる例。
using UnityEngine;
using System.Collections;

public class ExplosionSe : MonoBehaviour {

    public AudioClip se1;
    public AudioClip se2;
    float chktime;

    // Use this for initialization
    void Start() {
        AudioClip se = (Random.value < 0.5) ? se1 : se2;
        audio.PlayOneShot(se);
        chktime = Time.time + se.length + 1.0f;
    }

	// Update is called once per frame
	void Update () {
        if (Time.time > chktime) Destroy(this.gameObject);
	}
}
このソースを、Audio Source をつけたオブジェクトに割り当てる → se1 と se2 は Inspector 上で「None」(未割り当て?)と表示されてるので、Assets から波形ファイルをD&Dして設定する。
  • 効果音を鳴らしたいときは、audioSource.PlayOneShot(audioClip)を使うのかな。たぶん。名前からしてワンショット系の鳴らし方をしてくれる…のではないかと。
  • audioClip.length で、その波形の長さ(秒数?)が取得できるらしい。
  • 鳴らしたオブジェクトが消滅すると、音も消えてしまう。…スピーカ相当が消滅するから音も消えるのは当たり前か。

乱数。 :

  • Random.value で、0.0〜1.0の値が取得できる。
  • Random.Range(最小値、最大値) で、最小値〜最大値の間の乱数を取得できる。
  • Random.Range() は、int と float のどちらを指定するかで、動作が変わってくる。int の場合は最大値を含まない乱数が、floatの場合は最大値を含む乱数が出てくる、という話を見かけた。

2012/10/03(水) [n年前の日記]

#1 [python] Python2.7でiniファイルの読み書きをしようとしてハマる

Python 2.7.3 + ConfigParser で、iniファイルの読み書きの実験をしていたのだけど。日本語文字列がどうにも書き込みできずにハマってしまった。

英数字だけなら、すんなりiniファイルへ書き込みが出来るのだけど。日本語文字列を ―― 例えば「MS ゴシック」なんて文字列を書き込もうとすると、以下のようなエラーが。
Traceback (most recent call last):
  File "C:\home\prg\python\test_pyqt\qt_fontdialog_ini.py", line 79, in showDialog
    self.write_ini_file(self.ini_path, self.ini)
  File "C:\home\prg\python\test_pyqt\qt_fontdialog_ini.py", line 140, in write_ini_file
    ini.write(f)
  File "C:\Python27\lib\ConfigParser.py", line 412, in write
    key = " = ".join((key, str(value).replace('\n', '\n\t')))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
色々実験してみたけれど、どうにも解決せず。書き込めたと思ったら、iniファイルの中が文字化けしちゃったりで。

関連情報を検索しているうちに、気になるページに遭遇。

_Issue 11597: Can't get ConfigParser.write to write unicode strings - Python tracker

どうもよく分からないけど。

「ConfigParser? おいおい、随分古いモジュールの話を持ち出してきたな」
「Python 2.7 の ConfigParser は Unicode に対応してないし、対応させるつもりもないよ」
「jsonなら Unicode にも対応できるからそっち使ったら?」
「ConfigParser も、バックポートした版がどこかにあったらなんとかなるのかもしれないけどねえ」

みたいなやり取り、なのだろうか? 英語はさっぱり分からんので自信無いけど。

とりあえず、jsonならなんとかなりそう、という話っぽいので、試しにそちらで試してみたり。…すんなり保存・読み込みができた。ぎゃふん。

つまり、Python 2.7.x で日本語文字列を設定ファイル等に記録したいなら、ConfigParser 使って iniファイルに、なんて考えちゃいけないらしい。Python 3.x なら、話は違ってくるのかもしれないけど…。

以下は、iniファイルとして保存しようとしてエラーが出るダメソースの例。

_Pythonでiniファイルの読み書き ・ Gist

以下は、jsonファイルとして保存して上手くいったソースの例。

_Pythonでjsonファイルを読み書き ・ Gist

#2 [prog] パングラム

フォントサンプルを表示する際に、キツネが云々の文字列があったはずだよな…と思い出して検索してみたり。

どうやら、その手の文字列は、 _パングラム と呼ぶらしい。知らなかった…。 _The quick brown fox jumps over the lazy dog も例として Wikipedia に掲載されてた。

日本語版は、 _手習い歌 と呼ぶらしいが、眺めた感じ、英文と違ってほとんど種類が無いっぽい。まあ、利用場面がほとんどなさそうだもんな…。

2011/10/03(月) [n年前の日記]

#1 [prog] irb の挙動がおかしい理由が分かった

Windows7 64bit版上で ActiveScriptRuby を動かしていて、irb の挙動がおかしかったのだけど。どうやら、~/.inputrc がホームディレクトリ内に存在していて、readline がそれを読み取って動作していたせいらしい。おそらく、昔 cygwin 関係を以前入れた時に作ったものだと思う。内容を全部コメントアウトしたら、irb上でもカーソルキーやDeleteキーが動いてくれた。

他のキー割り当ても分かってた。 bash のソレと同じっぽい。

#2 [prog] Ruby の case when とメソッドテーブルについて調べたり

Ruby の解説ページをググっていたら、case when は if文に変換されるという話を見かけて、処理時間が気になってきたわけで。テーブルジャンプにしたいけど書き方が分からない。が、ダメ元で某2chで質問してみたら、書き方についてレスがいただけたので、感謝しつつ引き続き調査。

以下のようなスクリプトを書いてベンチマークを取ってみた。
#!/usr/bin/ruby

require "benchmark"

LOOP_MAX = 100000

def func0(x) return x * 3 end
def func1(x) return x * 4 end
def func2(x) return x * 5 end
def func3(x) return x * 6 end
def func4(x) return x * 7 end
def func5(x) return x * 8 end
def func6(x) return x * 9 end
def func7(x) return x * 10 end
def func8(x) return x * 11 end
def func9(x) return x * 12 end
def func10(x) return x * 13 end
def func11(x) return x * 14 end
def func12(x) return x * 15 end
def func13(x) return x * 16 end
def func14(x) return x * 17 end
def func15(x) return x * 18 end

$a = 0
$b = 0

$fixnum = 15

puts Benchmark::CAPTION
puts Benchmark.measure{
    LOOP_MAX.times{ |i|
        # x = i % 16
        x = $fixnum
        r = 0
        case x
        when 0
            r = x * 3
        when 1
            r = x * 4
        when 2
            r = x * 5
        when 3
            r = x * 6
        when 4
            r = x * 7
        when 5
            r = x * 8
        when 6
            r = x * 9
        when 7
            r = x * 10
        when 8
            r = x * 11
        when 9
            r = x * 12
        when 10
            r = x * 13
        when 11
            r = x * 14
        when 12
            r = x * 15
        when 13
            r = x * 16
        when 14
            r = x * 17
        when 15
            r = x * 18
        end
        $a += r
    }
}

puts Benchmark.measure{
    funclist = [
    :func0,
    :func1,
    :func2,
    :func3,
    :func4,
    :func5,
    :func6,
    :func7,
    :func8,
    :func9,
    :func10,
    :func11,
    :func12,
    :func13,
    :func14,
    :func15,
    ]
    
    LOOP_MAX.times{ |i|
        # x = i % 16
        x = $fixnum
        r = send( funclist[x], x )
        $b += r
    }
}

puts "a=#{$a}"
puts "b=#{$b}"

Core2Duo E8400 3.0GHz + Windows7 Pro 64bit + ActiveScriptRuby 1.8.7 p330 での実行結果は以下の通り。
      user     system      total        real
  0.374000   0.000000   0.374000 (  0.380038)
  0.140000   0.000000   0.140000 (  0.146014)
a=27000000
b=27000000
色々試してみたが、以下のような感じの結果に。 もちろん、その部分がボトルネックになっているなら、の話だけど。たまにしか処理が来ないならどうでもいい。

が、某2chで、「1.9はテーブルジャンプに置き換えてくれるはずだ」という話が。

ActiveScriptRuby 1.9.2 p290 で試してみたところ、以下の結果に。
      user     system      total        real
  0.031000   0.000000   0.031000 (  0.030003)
  0.031000   0.000000   0.031000 (  0.027003)
a=27000000
b=27000000
ほとんど同じ処理時間。しかも、1.9.2 のほうが、1.8.7 より 5〜12倍速い。

ここまで速くなるとは知らなかった。Ruby 1.9 の最適化?は素晴らしいなと。

ということで結論。書き方次第で速くなるかも、などとグダグダ悩むぐらいなら、どうにかして Ruby 1.9 で動かせないかを悩んだほうがはるかに効率がいい。

でも、exerb って Ruby 1.9 には対応してなかったような記憶が。

以前、手持ちのネットブック機(Atom CPU)上で、exerb と ocra でexe化したスクリプトを動かしたら、exerb版に比べてocra版は、起動するまでの時間が数倍かかってゲンナリした記憶があり。なので、最終的に exe化する可能性があるなら、極力 Ruby 1.8.x でやるべきかな、と思っていたわけで。どうしたもんか。

まあ、そのネットブック上で DXRuby のスクリプトを動かすと、メイン機上では軽々と60FPS出ていたスクリプトが、6〜10FPS程度になったりするわけで。 *1 そういう環境は無視してしまっていいのかもしれない。
*1: おそらく、DirectX にはほとんど対応できていないオンボードビデオなんだと思う。

2010/10/03() [n年前の日記]

#1 [sound] Music maker 2 について

Music Maker 2 に対し、タスクマネージャからCPUを1つしか使わない設定にしたら、プロジェクトの保存すらできなくなってしまった。CPUを2つ使う設定にしたら、プロジェクトが保存できた。どうも今現在の版はその手のソレをやらないほうがいいみたいだな…。しかし、やっぱり不安定…。

2009/10/03() [n年前の日記]

#1 [pc] トラックボールがAmazonから届いた

Kensington Expert Mouse。8,580円。

ここのところずっと右肩が痛くて。おそらくマウスのせい。ACROS AMS-24TBG や DN-WR521W を購入して試していたのだけど。左手でマウス操作 or トラックボール操作をすることができれば負担が減るかもと思い立ち。比較的評判のいい該当製品を購入。

デカイな…。でか過ぎる…。キーボードの左に置くと、キーボードが押しのけられて、モニタの右側のほうに位置しないといけなくなる。いや、それは自分の使ってるPCデスクの幅・配置のせいなのだけど。とにかくデカイ。占有面積は、ハガキより一回り大きいぐらいの感覚。

ボタンが「カチカチカチカチ」と、とにかくうるさい。夜中に作業してると、部屋中に響き渡るぐらいにうるさい。たぶんコレ、アメリカ市場を念頭に置いて作ってるんだろうけど、きっといかにもアメリカな感じの広々とした一軒宅で使うことを前提にしてるのではないか、と邪推するぐらいにうるさい。

Kensington MouseWorksなるドライバを入れたら、他に接続してるマウス群のカーソル移動が全部遅くなった。説明書には「何が何でもマウス関係の設定はMouseWorks上から行え」と書いてあったので、MouseWorksの設定画面を出した後に、標準のマウスプロパティに切り替えるボタンを押して確認したところ、カーソル移動速度が「標準」「加速なし」になっていた。いつものように「最大」「加速あり」に設定すると、今度は Expert Mouse のカーソル移動がビュンビュン状態で使い物にならず。MouseWorks側のカーソル移動設定を弄ってみたけど、どうもマウスの標準の設定を前提にした設定内容らしく。他のマウスを殺すか、この Expert Mouse を殺すか、2つに1つどちらかを選べ、という方針で作っているのだな…。まあ、マウスのカーソル移動と、トラックボールのカーソル移動は、感覚的に違うところがあるのだろうから、それも仕方ないのかもしれないが…。

購入前から判っていたことではあるけれど。何故にKensingtonは絶対に中ボタンとホイールをつけないというポリシーを持っているのか。こんなにデカイんだから、つけろよ。つけるスペースぐらいあるだろう。まあ、拡張ボタンが2つあるので、1つを潰して中ボタンを割り当てたけど。

ホイールの代わりに、ボールの周りにリング状のホイールもどきがついている。回してみたら、シャリシャリという音&感触。何コレ。製造時の精度が低いのかしら。しかも、日本語版ドライバでは、このリングのスクロール速度を設定できない。一見設定できるように見えるのだけど、何度やっても標準速度に書き戻される感じ。

リングのスクロール速度が設定できないは厳し過ぎるので、KensingtonのUS向けサイトで最新版のドライバ(英語版)を落としてきた。上書きインストールしてみたら、ボタン設定画面で、checkbox項目がbuttonの上にレイアウトされてしまっている。なんというか、酷いな。日本語版をアンインストールしてから最新版をインストールすれば違うのだろうか。

値段ほどの価値はないな、コレ。

#2 [windows] 仮想デスクトップを実現するソフトを色々と試したり

作業をする際に仮想デスクトップ画面が複数あれば楽だろうか、と思え始めたので、そういったツールを探してみたり。 _Virtual Desktop for Win32_Shock 4Way 3D_Yod'm 3D_Dexpot_VirtuaWin 、あたりを試用。

希望としては、以下のような感じで。
どれも何かこう…。とりあえずしばらくアレコレ試用してみようかと。そもそも本当に仮想デスクトップが便利なのかどうかもよく判らんし。

ついでにウインドウ管理関係のツールも試したり。 :

タスクバー上のアプリにカーソルを合わせるとアプリのサムネイルを表示する、 _Visual Task Tips 。Mac OS X とやらの expose機能に似たような感じの画面を表示する、 _WindowLister_DExposE2 。WIndows XP上でWindows Vistaと似たようなタスク切り替え?画面を表示する、 _WinFlip 。等々。

アプリによっては画面が取得できず。また、Firefoxなどはタブの数だけアプリが存在するような状態にもなってしまったり。

2008/10/03(金) [n年前の日記]

#1 [windows] 動画に字幕をつける方法を調べたり

昨日キャプチャしたScratchの操作動画に解説用の字幕をつけたいなと。

最初は、 _SEffect とやらを使って字幕をつければいいのかな、と思ったのだけど。操作方法が判らず。というか、分量的に膨大な数の字幕になりそうなので、これで作業するのはなんだか無理っぽいなと。

そこでなんとなく思いだしたのが、動画ファイルとは別に字幕ファイルを用意して動画の上に表示していく再生方法。一旦そういう形で字幕を作って、後で動画にその字幕を書き込めないか。と思ったらやはりそういう方法はちゃんとあるらしく。再生ソフト側で字幕を表示するのをソフトサブ、動画に書き込んでしまうのをハードサブ、というらしい。

_フリーソフト | Subtitle Workshop v4 BETA 4 - 動画字幕作成・編集ツール :

_Subtitle Workshop : 56種の字幕フォーマットに対応するリアルタイム字幕編集ソフト ≫ 窓の杜とベクターフリーソフトのダウンロード

これで字幕テキストを作成してみたり。念のために、 _srt形式_ASS形式 で保存。

ちょっと作業が面倒。先にテキストファイルでずらずらと字幕を打ち込んでから、という感じで作業はできないものだろうか。おそらくできそうな気もするんだけど。

_Vobsub (字幕付き動画を作る) TextSubの使い方 :

Virtualdub + TextSub で動画に字幕を書込み。

#2 [windows] 動画のBGMに使えそうな音楽素材ってないかしら

音がない動画はさびしいので、音楽も流しておきたい。が、良さそうな素材が見つからず。著作者の表示等が必要になると動画作り直しだろうし。それ以前に、8分近い楽曲なんてないし。

クラシック音楽なら著作権等も切れてるかなと思って、 _英語圏のWikipediaに載っているクラシック音楽データ を少し探してみたけれど。演奏者の著作権てのがあるだろうし、また、WikipediaのソレはほとんどがCCライセンス=最低でも演奏者の名前を必ずどこかに明記しないといけないわけで、使いづらいなと。

というかCCライセンスの素材はとにかく使いづらい。どうして21世紀にもなって、pag1テトラヘドロン的なアホな縛りを強制するのかと。

自動作曲という手法は使えないか模索。 :

たとえば、Windowsフォトストーリー3 でスライドショーを作ろうとした際、既に存在する音楽データを鳴らすこともできるけど、その場で「音楽の作成」をするという選択肢もあるわけで。曲のジャンルや曲調を選択していくと、映像の時間に合わせて自動でそれらしい曲を作曲してくれる。この機能だけ提供してるソフトがないものかと。

昔であれば、 _Microsoft Music Producer というソフトがあったらしい。どういう出来だったのかとても気になるけれど、ベータ版として配布されていたため、期限が過ぎると利用できなくなるようで。いや、しかし、やっぱり出来が気になる。

検索していたら、 _利用制限を解除するパッチ らしきものを見つけた。試しに動作確認。

なるほど、Windows フォトストーリー3 に組み込まれている音楽自動作曲機能は、どうやらコレの改良系のように思える。選択できるジャンル等が似ているし。ちなみに、Windowsフォトストーリー3の自動作曲は、比較的聞けなくもない音楽が出てくるけど、Microsoft Music Producer の出力する音楽はかなり厳しいものが。使用期限の問題とも相俟って、どのみち使えそうにない印象。

_自動作曲しませんか :

_窓の杜 - 【NEWS】ジャンルを指定するだけで自動作曲できるソフト「Random Various Music」

色々試してみたり。作曲ホイホイ、JuiceAndCandy(MIDI版)、MACS97、れっつめろめろ、Random Various Music、など。

正直、どれも厳しい。ここ最近の宮崎アニメに近いものが ―― なんでそういうことになっちゃうの、みたいな展開の出力結果しか出てこないように感じた。大量に聞いたので疲労困憊。一部、聞いてて気が狂いそうな結果を出してくるソフトもあったりで、なんというか。 *1 要するに、まだまだ技術的に難しい分野なのだろうなと。

_窓の杜 - trakAxPC - マルチトラック録音やタイムライン編集ができる音声・動画編集ソフト :

いっそこういうソフトを使って作曲するか。と思ったけど、操作してみたらなかなか上手くいかず。そもそも、「音楽を作りたい」わけではないので、徒労感が…。

*1: ちなみに、該当ソフトに関する作者の解説ページを眺めてみたら…。この手のソフトジャンルにも、Hyper-Paint状態に近いソフトがあるんだなと。芸術家肌全開でプログラムを作ると実装結果が迷走しちゃう傾向があるかもしれない。CGツールはそういうことになりがちな印象があったけど、もしかすると音楽ツールもそうなのかもしれない。

2007/10/03(水) [n年前の日記]

#1 [prog] RMagickで実験

とりあえず RMagick を入れてみた。

ActiveScriptRuby 1.8.637 には、RubyGems-0.9.4 が同梱されてるらしいので、RMagick-1.15.9_IM-6.3.5-8-Q8.zip をDL・解凍して、中に入ってる ImageMagick-6.3.5-8-Q8-windows-dll.exe をインストール後、
gem install rmagick-1.15.9-win32.gem
だけで入った…と思う。

おそらく注意すべき点は、
スペースを含んだフォルダ名以下には入れない・解凍しない。
経験的に、Linux関係から来てる各種プログラムは、フォルダ名にスペースが含まれてるとトラブルを起こしやすいので。大丈夫だと言われても、とりあえず避けておく。
ImageMgaick は、RMagick のバイナリに同梱されてるものをインストールする。
最初、ImageMagick 最新版 (ImageMagick-6.3.5-10-Q8-windows-dll.exe)を入れたら、「DLLがねえ」と言われてハマった。
スクリプト中の、require 'RMagck' の前に、require 'rubygems' を入れる。
RubyGems でインストールしたものを使うときは、require 'rubygems' の一文が必要になるっぽい。
ぐらいなのかなと。

最新版のImageMagickを使えず、ちと古い版になってしまうのは痛い。その環境全体・ruby以外からも ImageMagick を呼び出した際に、古い版が呼び出されてしまうから。RMagick が使う ImageMagick の場所を特定・指定できれば、最新版と共存もできるのだろうけど。そのへんどうにかできないものだらうか。

_RMagick 1.15.0 User's Guide and Reference :

ドキュメントらしい。英文だからさっぱり。

とりあえずpixel値を読んで表示 :

#!/usr/bin/ruby

require 'rubygems'
require 'RMagick'
include Magick

fname = "test.png"
img = ImageList.new(fname)

width = img.columns # 画像幅取得
height = img.rows # 画像高さ取得

puts "width=" + width.to_s
puts "height=" + height.to_s
puts "type=" + img.image_type.to_s # 画像種類表示
puts "total color=" + img.total_colors.to_s # 使用色数表示
puts "depth=" + img.depth.to_s # ビットの深さ表示

height.times do |y|
  width.times do |x|
    puts img.pixel_color(x,y).to_s # pixel値取得
  end
end
rubyの書き方としては絶対に何かおかしいだろうけど、初心者だからということで。 *1

実行するとこんな感じの結果に。
width=8
height=16
type=PaletteType
total color=8
depth=1
red=0, green=0, blue=0, opacity=0
red=255, green=255, blue=255, opacity=0
red=0, green=255, blue=255, opacity=0
red=255, green=0, blue=255, opacity=0
red=0, green=0, blue=255, opacity=0
red=255, green=255, blue=0, opacity=0
red=0, green=255, blue=0, opacity=0
red=255, green=0, blue=0, opacity=0
red=0, green=0, blue=0, opacity=0
(以下略)
ドットさえ読めれば後はどうにかできるだろう…。処理は遅いだろうけど。

*1: 「なんだこの書き方は。なっちゃいねえプゲラ」とか優越感ゲームしてる暇があるなら添削してブログ公開して共有知にしてくれると嬉しいかもしれず。などと思わないでもない。

#2 [prog] PIL(Python Image Library)をインストールしてみたり

せっかくだから 俺はこの赤い(以下略 PILも入れてみたり。

Windows版は、バイナリパッケージをDLしてインストールするだけで済むらしい。もちろん Pythonインストール済みが前提だろうけど。とりあえず、 _Python Imaging Library (PIL) から PIL-1.1.6.win32-py2.5.exe をDL。実行してインストールした。

上記のrubyスクリプトと同様、「pixel値を出力する」だけなら、下のような感じ。
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import Image
im = Image.open("test.png")
print im.format, im.size[0], im.size[1], im.mode
for y in range(im.size[1]):
    for x in range(im.size[0]):
        print im.getpixel((x,y))

結果。
PNG 8 16 RGB
(0, 0, 0)
(255, 255, 255)
(0, 255, 255)
(255, 0, 255)
(0, 0, 255)
(255, 255, 0)
(0, 255, 0)
(255, 0, 0)
(0, 0, 0)
(以下略)

_Python Image Library 使用法 (Tk-Python) :

#3 [iappli] 企画草案書作成中

PowerPointで作成することに。と、その前に、関連製品のサイトを眺めたり、参考になるらしきiアプリを試しにプレイしたり。

背景にイメージイラストを入れようと思い立った。3DCGでフィールドを作ろうかと。blender を起動。

レンダリングしてみたものの、どうも画として寂しい。しかも、遠景と合成したらなんだか浮いてしまう。…使わないほうがいいか。そもそもキャラクターイメージ云々で文句を言われる可能性もあるし。

#4 [cg_tools] blenderで地形作成

_A.N.T. Landscape creator - Blender Artists Forums
_A.N.T Defomer &Landscape object creatorアップデート - Blender.jp - フォーラム

blenderで地形を作成するにはどうしたら。と思って検索したらそういうスクリプトがあるとかで。実行してみて感動。素晴らしい。

使い方は、該当.py を ~/.blender/scripts/ に入れて、blender起動。Scripts Windows にして、Scripts → 追加 → A.N.T. Landscape v.1.04a を選択。すると設定ウインドウが開かれるので、テキトーに設定して、Generate ボタンを押す。と、一見何も起きてないように見えるけど、3D View 画面に戻ると、地形モデルが作られてる。

全然関係ないけどblenderのプレビュー画面って :

テクスチャは表示されないのだな。UV展開だか Face Select モードでは、指定したテクスチャが表示されたものだから、てっきり通常のテクスチャ設定もプレビューで表示できるものかと思って、「おかしいなぁ」と悩んでしまった。

検索したら、 _自家製Blenderチュートリアル草稿 というページに解説が。
Q. テクスチャはプレビューできないの?

A. BlenderのTextured表示は、ビデオカードのOpenGL性能に依存したUVテクスチャのみ対応。このときシェーディングや頂点カラーなどは適用されません。長い事放置されている問題点の一つで、無理矢理改善した有志によるビルドが出てたりしますが……本家修正は、コードの整理を待つ必要がありそうです。

2.41開発版ではShift+Pによる「プレビューレンダリング」が実装されているので、この機能を利用していくのが妥当でしょう。レンダリングオプションも反映されるのでご注意。

Textured表示でプロシージャルテクスチャの反映を確認したい場合には、同梱スクリプト「Texture Baker」が便利です。

自家製Blenderチュートリアル草稿 より

Shift+Pをしてみた。小さいウインドウが表示されて、その中だけレンダリングされる。該当ウインドウを移動すると、移動したその先でレンダリング。なるほど、これを使うわけか…。

2006/10/03(火) [n年前の日記]

#1 [pc][nitijyou] 時々フォルダが削除できなくなる

あふでファイル名やサブフォルダ名をリネームして、別フォルダに移動させた後、親フォルダを削除しようとすると、高い確率でロックされてしまう・削除できなくなることが最近多くて。仕方ないから WhoLockMe でプロセスを殺してフォルダ削除をしていたり。

ロックするプロセスは、以前はimejp81なんとかがロックしてたのだけど、最近は TortoiseSVN がロックしてる。…たぶん、ロックするプロセスは不定というか、真にロックしてるのは別のプロセスじゃないのか、という気もするのだけど。どこで問題が起きるのか正体を確かめる術を知らず。

HDDに対してスキャンディスク(chkdsk?)やデフラグをかけてみたが、症状変わらず。…なんだろうな。HDDの寿命が近づいてるのだろうか。それとも、ファイル数が多くなりすぎて、不具合が出るようになってきたのだろうか。

デフラグをかけた際のレポートを眺めると、MFT が断片化してるようにも見える。WinXP標準のデフラグでは MFT のデフラグまではしてくれない・そこまでしたかったら市販のデフラグソフトを買ってこなきゃいかんわけで。どうしたもんか。PerfectDiskとやらが評判が高いようだけど…。 *1
*1: HDDの空き容量が少なくてもどうにかデフラグしてくれるらしい。>PerfectDisk。

#2 [novel] 「マリみて」ドリルの人の秘密が明かされる巻を読んだ

_ドリルの人。 <コレジャナイ。

妹が買ってきたので(以下略。まだドリル人とのアレコレを引っ張ってる。どこまで引っ張るのか。連載が長引くにつれコマが大きくなって展開がアレになっていく漫画と似たような何かを感じる。

2005/10/03(月) [n年前の日記]

#1 [windows] LAN内で Windows Messenger のファイル転送ができるかどうか確認

親父さんPCと、自分のPCの間で、動作確認。どちらも WinXP Home SP2。Windows Messenger は 5.1.0701。 結果変わらず。ファイル転送はできない。ということは、Windowsファイアウォールが原因じゃないな…。

原因として他にありえるのは、ルータか。でも、 _2004/07/10 の落雷でルータが破損して、その後買い換えてるわけで…。 _2004/07/11 に新しいルータを買ってるな。そして、 _2004/07/19 の時点ではファイル送信ができている。それ以後ルータは買い換えてない。つまり、ルータ&ルータの設定自体は、ファイル送信が可能だった当時と変わってない。しかし、今はファイル送信ができない。うーむ。何故だ。

他に変わったところといえば、ADSLから光ファイバーになったぐらいか…。あるいは、Windows Messenger のバージョンも上げてるな。さてはて。

plalaのせいか? :

もしかして、使用プロバイダ = plala がブロックしてるんじゃないのか? >該当ポート。最近、P2Pアプリ利用ユーザが帯域を使いまくってるとかで、かなり制限してるという話をどこかで見かけたし。

以前に実験したときは、送信したデータが、LAN → WAN → LAN と転送されて成功したけど、今現在は、LAN → WAN、と転送されたところで、plalaがポートをブロック。で、転送に失敗してるとか。

でも、P2Pの制限って帯域制限だったような。ボートを完全にブロックとかするかな。

_メッセンジャー - ソフトウェア関連質問スレ用FAQ :

ルータに問題がある事例しか解説されてなかった。うーむ。

TCP/IPを利用してP2Pのファイル転送を行うソフト :

親父さんの友人に協力してもらってWAN経由でホワイトボードの動作確認 :

ホワイトボードは使えた。これでひとまず、画像を見せたりするのはホワイトボードで用が足りるであらうと。音声のやり取りもできてるから、電話での応対並みにはレスポンス(?)も確保できるし。

しかし案の定、ファイル送信は失敗する。でもまあ、ファイルを送信したいときはメールに添付してどうにかできるだろうし。

にしても、何故にファイル送信だけは問題が起きるのか。うーん。

#2 [windows] ArtTips が 6.60 にバージョンアップしてた

_ArtTips の説明

ランチャー + クリップボード拡張 + キャプチャ + etc …の常駐ツール。何でもコレ一本に入ってる。

6.60 の機能追加で、
・クリップボード拡張
「貼り付け」「コピー」「切り取り」擬似キー操作に任意のキーを設定する機能を追加

ArtTips の説明 より

という話が気になった。もしかして、標準では Ctrl+c、Ctrl+x、Ctrl+v がバインドされてないエディタ xyzzy でも使える?

xyzzy の「貼り付け」「コピー」「切り取り」は :

cut切り取りCtrl + Delete
copyコピーCtrl + Insert
paste貼り付けShift + Insert
_(via Landscape - エンジニアのメモ)

Insert、Deleteを指定する方法がわからない :

設定ダイアログで、「Insert」「Delete」と打ち込んでみたけど、先頭文字の「I」「D」しか認識・記録してない模様。

ArtTips.ini 中に、
 CUT_KEY_ALT=FALSE
 CUT_KEY_CTRL=TRUE
 CUT_KEY_SHIFT=FALSE
 CUT_KEY_CHAR=X
 COPY_KEY_ALT=FALSE
 COPY_KEY_CTRL=TRUE
 COPY_KEY_SHIFT=FALSE
 COPY_KEY_CHAR=C
 PASTE_KEY_ALT=FALSE
 PASTE_KEY_CTRL=TRUE
 PASTE_KEY_SHIFT=FALSE
 PASTE_KEY_CHAR=V
という記述があって、そこで指定してるのだと思うけど…。某スレで見かけた(教えてもらった?) _キーコード のページを頼りに、
キーキーコード
Insert75
Delete76
を ArtTips.ini に直接記述したものの、最初の「7」の1文字しか認識されず。

xyzzy の M-x control-code-dialog-box で制御文字を書いてみようと試みたのだけど、Delete はともかく、Insert がどの制御文字と対応してるのかがわからなかったり。うーん。ていうか Insert って制御文字が割り当てられているんだろうか。元々紙テープだのタイプライタだのを考慮しながら決まったものだろうし、「挿入」なる制御の概念自体が無さそうな予感。

_キーコードまにあ - 文字コードとキーコードと調べる :

キーコードを調べてみた。
キーキーコード(10進)キーコード(16進)
Insert45$2D
Delete46$2E
だった。でも、ArtTips.ini に75,76を記述した場合、最初の一文字しか反映されなかったことを考えると、45,46を記述してもやはり「4」しか反映されない予感。

_xyzzy標準キーバインドとWindows キーバインドを一時的に切り替える、toggle-gates :

切り替えで一手間かかるけど、 *1 コレを使えば ArtTips のクリップボード拡張が完全に使えないというわけでもないし。まあ、いいかな。

_コントロールキー - Wikipedia :

類似の用法

MacintoshのMac OSのアプリケーションにおいて、コマンドキーはおおむねコントロールキーと同様の機能をはたす。

Command + z のアンドゥ(取り消し)、
Command + x のカット(クリップボードに移動)、
Command + c のコピー(クリップボードに複写)、
Command + v のペースト(クリップボードにから複写)

は、その機能を必要とするすべての局面で共通とされた。加えて、

Command + p の印刷、
Command + s の保存

等が、多くのソフトで共通に使われるようになった。

Windowsでは

カットに Shift + Delete、
ペーストに Shift + Insert

が採用されたが、後にMacintoshにならって
CTRL + x(カット)、
CTRL + v(ペースト)

が追加された。

皮肉にもこれらアプリケーション間で横断的に使用できる規格化されたキーボードコマンドは、最初にGUIが整備され、必ずしもキーボード操作が必要とされなくなったMacintoshが元祖なのである。

コントロールキー - Wikipedia より

時々うっかり xyzzy と同様に、他アプリでも (Ctrl|Shift) + (Insert|Delete) で操作してしまって混乱するときがあるのだけど。なるほど、貼り付け = SHift + Insert はともかくとして、コピーや切り取りは別のショートカットキーが割り振られていたのか。

*1: ツールバー上のボタンを押すか、M-x toggle-gates で切り替え。

2004/10/03() [n年前の日記]

#1 [tv] 「火山高」を見た

放送してたとは知らなくて、たまたまTVをつけたら目にした。途中から鑑賞。

素晴らしい。最高級の大バカ映画。どのシーンを切り取っても頭が悪い。しかしカッコイイ。水柱がドカーンと上がるたび、ゲラゲラ笑ってしまいました。くだらないことを、全力で映像化する、その姿勢に惚れた。素晴らしい。

#2 [novel] 「マリみて」文化祭の巻を読んだ

抜けてるんだか、鋭いんだか、よくわからない主人公。とりあえず、秘められていた能力が開眼、ということなのでせうか。

#3 [nitijyou] 妹と親父さんがヨドバシまでメモリを買いに出かけたらしいのだけど

_希望した商品 は、ヨドバシの店員さん曰く、既に生産中止になってるそうで。PC133 S.O.DIMM は、既に市場から無くなりつつあるのか。恐ろしい。

妹曰く、Amazonで取り扱ってるのを見つけたとか。なんとかなりそうな感じらしい。

#4 [nitijyou] お袋さんが日帰り月山ツアーに行ってきたのだけど

しかし、雨。運が悪い。それでも、かなり歩いてきたとか。紅葉と温泉はなかなかだったらしい。

#5 [java] eclipse + Visual Editor

アライメントツールって、どこで表示されるのやら。

ツールバー上にある、「Show customize layout window」がソレかしら。layoutの種類によっては使えないのでハマった、ということだろうか。

rename field を何度か使うと固まる :

そういうものなんだろう。

作業をしてるうちにどんどん重くなる :

そういうものなんだろう。…メモリが足りないのかな。

_Visual Editor 解説動画 :

終わりのほうで UIManager 関係のコードが自動的に追加されてるのだけど。どれを選べばそうなるのだらう…。画面が切れてて、何を選んでるかわからない…。

ソースの左のほうに出てる×マークをクリックしたら、候補が出てきた。これでいいのか。

JFileChooser.showOpenDialog()に与える引数をどこから持ってくればよかんべ :

_こちらの情報 を参考にしてどうにか。
getParent()で取り出します。
といっても、親ContainerがFrameとか限らないので、
親の親というように祖先をたどっていって、
Frameを見つけないといけません。
Frameかどうかはinstanceofで調べられます。
具体的には、こんな感じのメソッドを作ればよいでしょう。

Frame getFrame() {
	Container parent;
	parent = getParent();
	while (!(parent instanceof Frame) && parent != null) {
		parent = parent.getParent();
	}
	return (Frame)parent;
}

それで、
	Frame f = getFrame();
	if (f != null) {
		f.setCusor(...);
	}
というように使いましょう。

_(Java)文字列から拡張子を取り出す :

なるほど。後ろから'.'を検索していけばよかったのか。

_Image I/O :

なるほど。表示できた。が、ロードするまで時間がかかる。処理中であることを示す手はないものか。

2003/10/03(金) [n年前の日記]

#1 レジで動画が流れてた

久々にコンビニで買い物をしたのだけど、レジの液晶でポケモンのゲームの動画が流れててビックリ。 *1 なるほど、レジ待ちで手持ち無沙汰の客に商品情報を見せると。あの映像データはどこから流れてくるんだろう。各店舗に対して本社のサーバから送ったりするんだろうか。であれば一旦溜め込んでから再生しないとアレだろうから、レジの機械(?)にHDDが入ってたりするのかな。それとも回線速度で再生が間に合う程度の容量に留めてるのだろうか。
*1: 世間の人からすれば、今頃何言ってんだ、って感じですな(爆)

この記事へのツッコミ

Re: レジで動画が流れてた by otsune    2003/10/05 01:32
ローソンのLoppiとかの端末話が、たまに日経バイトとかに取り上げられたりしていますね。
確かWIndowsだったような。
動画ファイルは衛星経由で配信して、レジスタ端末でそれをためこんでいるとか。
Re: レジで動画が流れてた by mieki256    2003/10/07 01:56
>配信
衛星経由で!
凄い…そんなにも進化していたのですか…

自分が見たのはセブンイレブンのレジですが、
検索してみたら、なるほど数年前からそういうシステムになってたのですね。
http://www.ngu.ac.jp/white/~kkojima/seminar/99e/247.PDF
店舗からのデータはISDNで送ると…
うーむ、まだそういうところではISDNが活躍中ですか…

#2 [anime] 池野恋先生の漫画は読むのがツライ

という話を、以前、友人達と話してたら。H氏が「池野先生がお母さんになったからでは。自分の娘に枕元で語り聞かせる感じで描いてるのではないか」と口にして、その意見に納得した記憶が。

SEEDも同じかなと。池野恋先生が娘さん宛てに描いた「りりかSOS」を大人が読むとツライのと同様、福田夫妻が自分達の息子さん宛てに作ったSEED=「10歳の子供にも判るガンダム」を見て今一つ満足できないのが大人の反応としては正常ではないかと。 *1

自分の子供に見せる事を念頭においたアニメ制作といえば :

未来少年コナンを作ってた頃の宮崎駿監督も同じだったはず。というわけで、 _「また、会えたね!」 を本棚から引っ張り出して監督インタビュー記事を読み返してみたり。たしか当時はガンダム関係がヒットしてた時期のような記憶があるんだけど、なんとなく富野監督と宮崎監督の違いが見えてくるようで面白い。「昨今のアニメは万年反抗期みたいな主人公がやたらと多いけど、ああいうのを見てると張り倒したくなる」との宮崎監督の感想は、親の立場で作品を見てたからだろうか。逆に言うと、親の立場にはなれなかった富野監督だからこそアムロやカミーユを主人公に据える事に躊躇しなかったのだろうし、それが反抗期真っ盛りの子供達に受け入れられた部分があったりするのかも。…わからんですが。

宮崎監督は今も知人の娘さん達を別荘に呼んで交流してるのだろうか。たぶんそれが、息子さんが大きくなってしまった現在でも、子供達に喜ばれる作品づくりを可能にしてるのだろうな。…富野監督もそういうのをやらないだろうか。別荘に呼んで〜では外見的に警戒されそうなので、 *2 どこかの自治体と組んで、夏休みを利用して子供達を集め、子供達だけでアニメの小作品を作れるように指導したりする。と同時に子供達の様子をじっくり観察して今時の子供の感覚をチェック。嘘。スケジュールや予算的に無理だろうな。

*1: このへん放映当初からスタッフ自身予想して、あまつさえ口にしてたはずなんだけどなー。
*2: なんと失礼な発言を…。

2002/10/03(木) [n年前の日記]

#1 珍しく外出

午前中は親父さんの畑の手伝い。
台風でひっくり返った棚らしきものを立て直し。
あずき収穫したら虫だらけ。うえー


午後、打ち合わせ。
先方がExcelでデータ入力してくれるそうで助かりました。
データさえあれば後はコピペするだけ。すぐ終わるはず。

作業と関係無い話は、そろそろ帰ってよいというサインなのだろうか。
全く気付かずいつまでも話に乗ってしまってたです(爆) 次からは気をつけよう…

せっかく外出したので隣の市まで足を伸ばしたら、
TWOTOP郡山店が潰れてました。ぎゃわーん
福島県ではパソコンショップは生き残れないみたい。
一番安く入手できる店だったのに…
パソコン工房もJ-ZONEも値段高めなのだけど
彼等もそのうち撤退するんだろうか。
せめて一軒ぐらい残ってくれないかな…

J-ZONEでセレ1.4GHz買ってきました。値が下がるのをずっと待ってたのです。
2.xGHzがどうこう言ってる御時世に1.4GHz、しかも旧世代(?という周回遅れな話ですが、
現在セレ700MHzを使ってるので、これでも倍のクロックへアップグレードなんです。
440BX,Slot1,FSB100MHz M/Bに、物理的に差すことが可能な最後のCPU。
これが最後の御奉公、のはず。

2001/10/03(水) [n年前の日記]

#1 サーバを立てる

Y氏の協力で、ICQ、無事動作しました。
ただ、こちらからのファイルの送信はできるものの、受信はできません。
あと、ICQが落ちやすい(泣


せっかくだから、俺はサーバを立てる為の情報を集めるぜ。 _(以下略)

2000/10/03(火) [n年前の日記]

#1 寂しい商店街

歯医者の帰り、C++の参考書を探しに街中の本屋まで足を伸ばしたら。
本屋、潰れてましたよ。トホホ

なぜこうも、次々に店が潰れていくのか… >須賀川商店街
各店で借金背負って道路を綺麗に整備しても、肝心の駐車場が無いわけで。これじゃ潰れるのも仕方ない。
駅が近くにあるならともかく…
もっとも、昔、線路を引く時、「街中を通すと五月蝿くてかなわん」と皆が反対し、駅を街外れに追いやったという経緯があるらしくて。
先見の明が無かったと言うか、自業自得と言うか。
実際に不利益を被ったのは当時反対した人達じゃなく、店を継いだ今の世代ってのがまたなんとも悲しいッスね。

1999/10/03() [n年前の日記]

#1 (NoTitle) AM5:00に寝たのだけ...

AM5:00に寝たのだけど、PM6:00に起きてしまいました。13時間かぁ、優雅だなオレ。とか言ってられないッスね、さすがに。ダメじゃん (´Д`;)

Internet Ninjaでweb1000.comをリンクたどらせつつDLしようとしたら、なんかとんちんかんな拾い方をしている模様。さすがにこのへんには対応できないか。自動巡回にならない。ダメじゃん (´Д`;)

なんか妙に寒いんです。気温がグッと下がってしまっている模様。長袖でも着ないと、ダメじゃん (´Д`;)

今日一日何もしてない。ダメじゃん (´Д`;)

ダメダメ言ってる事で心の平穏を求めようとしているかもしれないな、オイラ。そんな後ろ向きな気持ちじゃ、ダメじゃん (´〜`;)

1998/10/03() [n年前の日記]

#1 (NoTitle)最近モーレツにCD-Rド...


最近モーレツにCD-Rドライブが欲しいのです。
何に使うのかって?
いや特に目的は無いんですが、とにかく欲しいなぁと。
そういや前にも似たような気持ちになったことがあったような…。

あるときはシートフィーダスキャナが欲しくて欲しくて、となって
エプソンの300dpiほどの古いフラットベッドスキャナを持っているにもかかわらず
ロジクールのヤツを買ってしまいました。
当時は雑誌の切抜きとかをそれで読み取ってテキストデータ化すれば場所を取らずにすむ!とか
マンガの投稿サイズ原稿も読み取れる!とか思ってたんですが、
テキストデータ化は、文字認識が今一つで修正しないと使えんなぁ、時間食いそうだなぁ、でヤメヤメ。
投稿サイズ原稿読み取りは、手順が想像していたよりめんどうだったのと、
そもそもそんなサイズでマンガを描かなくなったのでヤメヤメ。
結局今は、埃をかぶっている上に、
ドライバ・ユーティリティも入れてないから使えない状態なのでした。

こないだはデジカメが急激に欲しくなって
「デジカメがあればマンガ・イラストの背景資料がバシバシ撮れる!」とか
「うまくすれば実写アニメもできるか?」なんて…
しかしこれは色々調べていくうちに、
どーも手軽に手に入りそうなのはVGAぐらいの画像ぐらいしか扱えないし、
上のランクのは値段が張るし、バッテリーはすぐ切れるそうだし、
大体にしてマンガ・イラストなんて自分はそんなに描いてるのか、とか、
撮影するときの手間はどうなんだ、とか、
自分はそんなに出歩くほうじゃないから結局使わないのではないか、とか
色々思いなおして買わずにすみました。危ない危ない。
…でも実は今もちょっと引きずっていて、時々アキバの店先で安売りしてるのを見かけると
思わず2秒ほど悩んでしまいます。

と、そういうことを考えると「CD-Rドライブなんて買っても意味ないじゃん。」と思うのであり…
いや待て、CD-Rなら同人CG集とか容量を気にせず作れるんじゃないか、とか、
今手元にあるCGデータを一まとめにできるからいいぞ、とか、(今230MのMOしか持ってないので…)
会社でCD-Rの焼き方が判らなくて困ったことがあったけど、自分で持ってれば詳しくなるよな、とか、
MODデータとかをCD-DAにしてどこでも聞けるぞ、とか、
…いかん。出来そうに無いことばかり夢見てる…。
どうせ仕事忙しくてそんなことしてる時間なんて無いんだから無駄だよな…
…いや待て、しかし…

オイ、そんなコト考えてる場合じゃねえだろ。
サッサと仕事しろよ。>自分
いや、たしかに、その通りで、わかってるんです、わかってるんですけどね…。
(全然わかってないじゃん。)


そういえば、また会社に遅刻。自分は最低のクズ野郎です。自分をクズって言ってればそれで問題解決するのかよ。いえ、解決しません。すみません。申し訳ありません。いくら謝っても行動にならなければ意味無いんだよ。たるんでんじゃねえよ。どれだけ人に迷惑かけたかわかっててやってんのか、そういうこと。今回お前のためにどんな状況になったのかマジに判ってんのかコラ。ふざけてんじゃねえよ。すみません。すみません。すみません。ちゃんとします。ちゃんとします。ちゃんとします。…自分の馬鹿さ加減に嫌気がさす…。↑またそうやって真剣に解決しようという姿勢にある意味背を向けている。この期に及んで何やってんだオレは。いい加減にしろ。いい加減ちゃんとしろよ。>自分

以上、26 日分です。

過去ログ表示

Prev - 2024/04 - Next
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

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project