mieki256's diary



2023/12/05(火) [n年前の日記]

#1 [pc][windows] OneNoteやObsidianについて調べてる

Evernote からの移行を検討して、OneNote や Obsidian について、アレコレ調べてる。環境は Windows10 x64 22H2。

OneNoteについて :

OneNote上のページ数を取得したくてググっていたのだけど、なかなか難しいようだなと…。

_onenote のセクションにページがいくつあるか確認する方法 - Microsoft コミュニティ

セクション内のページ数に関しては、印刷プレビュー(ファイル → 印刷 → 印刷プレビュー) を選ぶことで、印刷ページ数が何ページになるかで調べることができるらしい。でも、セクション数が多かったら、そんなの手作業で一々やってられないよなと…。


あるいは、有料ツールの Onetastic を使えばある程度自動化できるようで、ページ数取得のマクロも存在しているらしい。

_Number of Pages - Onetastic
_OneNote のマクロを作成する


Microsoft Access を持っているなら、VBA でどうにかできる可能性もあるらしい。

_OneNoteをVBAでいじる - 動作環境(VBA) - msaf BLOG
_OneNoteをVBAでいじる - VBAの参照設定 - msaf BLOG
_OneNoteをVBAでいじる - すべてのページの名前を取得 - msaf BLOG
_VBA で OneNote のセクション内のページのフォントを変更する #VBA - Qiita

ただ、自分が持っているのは Microsoft Office 2007 (Excel 2007) なので、これも難しそう。

いっそ、OneNote から別の何かの形式でエクスポートして、その別形式になったファイルでページ数を確認できないかと思ったけれど。ググってみたら、OneNote から別形式にエクスポートする機能としては、ノート1つを PDF にできるかどうか、程度しかないそうで…。

これはかなり危ない。こんな状態では、OneNote はブラックホールでは…。サービス終了したら、溜めてたメモを他の何かに持っていけなくて、そこで詰みそう。これは危ないなあ…。

Obsidianについて :

Obsidian で画像を扱えるのか調べてみたけれど。エクスプローラ等から画像ファイルをドラッグアンドドロップするだけで、管理してるフォルダ内にファイルをコピーしてくれて、かつ、ノート内にも埋め込みリンクを貼ってくれると知った。

どうやら、画像を表示するぐらいなら、あっさりとできてしまうようだなと…。しかも、ファイル名の後ろに「| 128x128」等を付けると表示サイズも変更してくれる。「![[hoge.png | 128x128]]」みたいな感じ。素晴らしい。

ページの両脇に、空白と言うかスペースが結構な面積で表示されてしまう点が気になったけれど、設定を変えれば無くすことができると分かった。設定ウインドウ → エディタ → 表示 → 読みやすい行の長さ、を無効にすればスペースが無くなる。

2022/12/05(月) [n年前の日記]

#1 [python] tkinterのCheckbuttonを勉強中その2

Python + tkinter の Checkbutton(チェックボックス)について勉強中。

複数の Checkbutton を並べて、それぞれのチェック状態をマウスクリックで変更した際、どの Checkbutton が変更されたのか判別したい。要するに、以下のような動作を実現したい。

checkbutton_py_ss01.gif


ということで、以下のようなスクリプトになった。動作確認環境は Windows10 x64 22H2 + Python 3.9.13。

_checkbutton.py
_checkbutton_simple.py.txt
import tkinter as tk
from functools import partial


CHK_LIST = [
    ["Apple", True],
    ["Orange", True],
    ["Lemon", False],
    ["Peach", False],
    ["Banana", True],
    ["strawberry", True],
]


def click_cb(n):
    """Click Checkbutton."""
    global cbs, cb_values, msg
    name = cbs[n].cget("text")
    value = cb_values[n].get()
    msg.set(f"{name} (id={n}) is {value}")


def click_button():
    """Toggle Checkbuttons value."""
    global cb_values
    for cb in cb_values:
        if True:
            v = cb.get()
            cb.set(not v)
        else:
            cb.toggle()


root = tk.Tk()
root.title("Test Checkbutton")
root.geometry("400x400")

# create Label
msg = tk.StringVar(value="Message")
lbl = tk.Label(root, textvariable=msg, borderwidth=2, relief="ridge",
               font=("Arial", "18", "normal"))

# create Button
button = tk.Button(root, text="Toggle", command=click_button)

# create Checkbuttons
cb_values = []
cbs = []
for i, d in enumerate(CHK_LIST):
    def_text, def_value = d

    # reserve Checkbutton value
    cb_values.append(tk.BooleanVar(value=def_value))

    # create Checkbutton
    cb = tk.Checkbutton(root, text=def_text, variable=cb_values[i],
                        command=lambda i=i: click_cb(i),
                        # command = partial(click_cb, i),
                        # command = click_cb(i),
                        # command = lambda: click_cb(i),
                        )
    cbs.append(cb)
    cbs[i].pack()

lbl.pack()
button.pack()

root.mainloop()

少し解説。
関数に与える引数は、Checkbutton毎に違う値にする。そのあたり、以下のように2つの書き方ができる。らしい。

1つは、lambda を使う方法。
cb = tk.Checkbutton(root, text=def_text, variable=cb_values[i],
                    command=lambda i=i: click_cb(i) )

もう1つは、partial を使う方法。partial を import して使う。
from functools import partial

# ...

cb = tk.Checkbutton(root, text=def_text, variable=cb_values[i],
                    command = partial(click_cb, i) )

ちなみに、以下のような書き方をしても動かない。
cb = tk.Checkbutton(root, text=def_text, variable=cb_values[i],
                    command = click_cb(i) )
cb = tk.Checkbutton(root, text=def_text, variable=cb_values[i],
                    command = lambda: click_cb(i) )

参考ページ。 :

2022/12/06追記。 :

スクリプトソースがサンプルとして冗長に感じたので、少しだけ簡単にして差し替えた。

2021/12/05() [n年前の日記]

#1 [nitijyou] 犬が夜中に吠えて困ってる

ここ最近、夜は犬を玄関に入れて寝かせているのだけど、夜の09:00とか12:00とかにいきなり吠え始めてしまうので困っているところ。何かを要求してるのだろうけど、庭に連れて行ってもトイレはしないし、縁側に設置してある小屋に連れて行ってもやっぱり吠え続けるし…。

もしかして、寒過ぎて吠えているのだろうか…。使い古した毛布を敷いておくだけではダメなのか…。でも、ダンボール箱で小屋っぽいものを作っても、臭いが気に入らないのか、頑として入ろうとしなかったし…。服代わりに、体に布を巻きつけてみても、嫌がって外してしまうし…。

2020/12/05() [n年前の日記]

#1 [windows][pc] Windows10の復旧中

Windows10 x64 の再インストールをして復旧作業中。Cドライブのフォーマットはせず、C:\Windows を新規インストールする手順で、一応起動するところまで作業できたけど、設定もアプリも消えているわけで…。何もかもやり直し…。

一応、以前の Windowsフォルダ、Program Files 等のフォルダは、Windows.old というフォルダが作られてその中に全部移動されてるらしい。

OneDriveが鬱陶しい。 :

標準状態では OneDrive がドキュメントフォルダやピクチャフォルダを握っていて困った。自分は今まで、ドキュメントフォルダやピクチャフォルダをDドライブに設定してたわけで…。

OneDrive側でバックアップの停止をして、C:\Users\アカウント名\ 以下に各フォルダが作られた状態にしてから、各フォルダを右クリック → プロパティ → 場所 → 移動、でDドライブに変更することができた。

Evernoteの現行版アプリに困惑。 :

Evernoteのデスクトップアプリ 10.4.4 build 2096 をインストールしたら、今まで使っていた版とは随分と見た目が違っていて困惑。しかも日本語を打ち込もうとするとインライン入力ができない。デスクトップの左上に変換ウインドウが表示されてしまう。これだから海外サービスは…と思っていたら、何かの拍子にインライン入力が可能になった。どうもアプリウインドウのフォーカスをあちこち切り替えてると調子が良くなる時があるっぽい。…もしかして Windows10 20H2 の問題なのだろうか。

Firefox や Google Chrome をインストール。 :

Firefox 83.0 や Google Chrome 87.0.4280.88、Vivaldi 3.4.2066.106 もインストール。

Firefox は、Syncサービスにログインしたらブックマークが復活してくれた。拡張機能はCドライブにバイナリが残ってたのでまるっとコピー。

Google Chrome も Google にログインしたらブックマークが復活。

あふwとxyzzyを起動できる状態にした。 :

二画面ファイラーのあふwと、emacs系操作のできるエディタ xyzzy が動かせないと苦痛なので、どうにか動かせるところまで復旧。自分の環境用だけど、ユーザ側環境変数に以下を追加。
  • AFXHOME
  • AFXWHOME
  • HOME
  • MYHOMEBIN
  • XYZZYHOME

#2 [windows][perl] Windows10が起動しなくなったのでPerlを再インストール

Windows10が起動しなくなってOS再インストールになってしまったので、またPerlをインストールする羽目になった。環境は Windows10 x64 20H2 (Octover 2020 Update)。

今回利用したセットアップファイルは以下。
C:\Perls\ 以下にインストールした。
C:\Perls\aperl5.28.1.0000-x64-61d1e9f2\
C:\Perls\aperl5.8.9.827-x86-291969\
C:\Perls\strawberry\5.18.4.1-x64-portable\
C:\Perls\strawberry\5.32.0.1-x64\
C:\Perls\strawberry\5.32.0.1-x64-portable\

Portable版はインストールフォルダ以下にある portableshell.bat を実行すれば利用できるらしい。

strawberry-perl-5.18.4.1-64bit.msi を使ってインストールしようとしたが、Windows10上で動作がブロックされてインストールできなかった。管理者権限でコマンドプロンプトを開いて、そこから実行してインストールすることもできなくないが、今度はコントロールパネルからアンインストールできなくなる。アンインストールも管理者権限でコマンドプロンプトを開いてインストーラを実行してアンインストールできたが…。

どのみち Strawverry Perl の msi によるインストールは、OS上に1つのバージョンのPerlしかインストールできないようなので…。新しいバージョンをインストールしようとすると「前のバージョンをアンインストールしろ」と言ってきて先に進まない。比較的新しい版を1つだけインストールしておくのが良いのかもしれない。今後、基本的には Strawberry Perl 5.32.0.1-x64 を常用する予定。

システム側の環境変数には以下を追加。
APERL_DIR=C:\Perls\aperl5.28.1.0000-x64-61d1e9f2
BPERL_DIR=C:\Perls\strawberry\5.32.0.1-x64

システム側の環境変数PATHには以下を追加。
%BPERL_DIR%\c\bin
%BPERL_DIR%\perl\site\bin
%BPERL_DIR%\perl\bin

ActivePerl を使いたい場合は以下を指定することになると思う。
%APERL_DIR%\site\bin
%APERL_DIR%\bin

Strawberry Perlにパッケージも追加した。 :

あふから呼び出して使う自作スクリプト pathsepconv.pl 内でクリップボードを使っているので以下を cpan でインストールしておいた。とメモ。
cpan install Win32::Clipboard

2019/12/05(木) [n年前の日記]

#1 [cg_tools] xismo2の吸着

xismo2上で、ポリゴンで隠れた頂点に吸着できなくて悩んでたけど。

xismo2_ss01.png

表示設定を変更することで吸着できるようになることが分かったのでメモ。「フィルタ」 → 「点・辺は面を上書き」にチェックを入れればいい。

xismo2_ss02.png

xismo2_ss03.png

これでどうにか、手作業でポチポチやっていってもなんとかなりそう。

でもまあ、やっぱりブリッジ機能が欲しい気もする。とは言っても、そう頻繁に使う機能でもなさそうなあたりが…。いや、あれば便利ではあろうけど。便利だから他のソフトは実装してるのだろうし。

2018/12/05(水) [n年前の日記]

#1 [python] Pythonでwavファイルに対して何か処理

wavファイルを何かしらを使って読み込んで1/60秒単位で分割、といった感じの処理をしてみたいなと。Pythonを使ってそういう処理はできないだろうか。

ググってみたら、どうやら Pydub なるモジュールがあるらしい。

_【Python/pydub】音声ファイル処理 | アルゴリズム雑記
_【Python】Pydubのインストール | アルゴリズム雑記
_[Python] PydubでAudioファイルを処理する - Qiita
_pydubを使って音楽を鳴らす - Python - TIL

なんだか簡単に使えそうなのでコレを使わせてもらおう…。環境はWindows10 x64 + Python 2.7.15。

Pydubのインストール。 :

インストールは pip で済んだ。ありがたや。
pip install pydub

ffmpeg.exe も、Pythonスクリプトと同じ場所に一応コピーして置いておいた。

_Builds - Zeranoe FFmpeg

読み込んで鳴らす。 :

解説ページを参考にして、wavファイルを読み込んで、情報を表示して、鳴らすスクリプトを書いた。

_read_and_play.py
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_wav("hello.wav")

print("Channel : %d" % sound.channels)  # 1:mono, 2:stereo
print("Sampling rate : %f Hz" % sound.frame_rate)
print("Duration : %f sec" % sound.duration_seconds)

play(sound)
音が鳴ってくれた。

余談。wavの入手元。 :

実験に使う wavファイルは、Freesound から入手させてもらった。アカウントを取得しないとダウンロードできないのがアレだけど…。

_Freesound
_無料で使える音源ファイルが山のようにダウンロードできる「Freesound」 - GIGAZINE

分割。 :

wav を読み込んで、NumPy配列とやらにして、1/60秒単位で分割するスクリプトを書いてみた。matplotlib とやらを使ってグラフ表示もする。

_【Python/pydub】mp3、wavのデータをNumPy配列に変換 | アルゴリズム雑記
_matplotlib入門 - りんごがでている

_divide_wav.py
from pydub import AudioSegment
from pydub.playback import play
import numpy as np
import matplotlib.pyplot as plt

infile = "hello.wav"

sound = AudioSegment.from_wav(infile)
# play(sound)

data = np.array(sound.get_array_of_samples())
x = data[::sound.channels]

rate = sound.frame_rate
frm = rate / 60
sample_len = len(x)

print("Input file : %s" % infile)
print("Channel : %d" % sound.channels)
print("Sampling rate : %d Hz" % rate)
print("1 Frame length : %f point" % frm)
print("Duration : %f msec" % len(sound))
print("Sample length : %f point" % sample_len)

dt = []
for i in range(0,sample_len,frm):
    dt.append(x[i:i+frm])

if True:
    # plt.plot(x[::1])
    row = 10
    for i in range(row):
        plt.subplot(row, 1, i + 1)
        plt.plot(dt[i])
        plt.grid()
    plt.show()

こんな感じの結果が得られた。
> python divide_wav.py
Input file : hello.wav
Channel : 1
Sampling rate : 48000 Hz
1 Frame length : 800.000000 point
Duration : 511.000000 msec
Sample length : 24514.000000 point

divide_wav_py_ss01.png

分割できてるっぽい。

後は、この1/60単位の波形から、TIC-80の波形メモリ用データをどうにかでっちあげれば…。しかし、一周期分らしきデータを取得するのって、どうやればいいんだ…。

2017/12/05(火) [n年前の日記]

#1 [dtm] AudacityでVSTプラグインが使えなくて悩んだり

ゲーム用のSE(効果音)を作ろうと、Windows10 x64上で _Audacity 2.2.0 を起動したのだけど、VSTプラグインが使えなくて悩んだり。

巷の解説ページによると…。
  1. Audacityインストール場所\Plug-Ins\ 以下に、VSTプラグインの .dll をコピー。
  2. Audacity起動後、エフェクト → プラグインの追加/削除を選んで各プラグインの有効無効を切り替え。
これで使えるようになる、はず、らしいのだけど…。有効にしてOKを押してみても反映されない。また無効に戻ってしまう。

アレコレ試してみたけれど、結局、以下の作業をしたら、ようやく反映された。
  1. Audacity 2.2.0 をコントロールパネル経由でアンインストール。
  2. 不具合修正されてることを期待して、Audacity 2.2.1rc2 をDL。
  3. 今まで C:\Prog\Audacity2.0\ にインストールしてたけど、デフォルトのインストール場所の C:\Program Files (x86)\Audacity\ に、Audacity をインストール。もしかすると Audacity は各フォルダの場所を決め打ちにして作ってあるのではないかと思えてきたので。
  4. LADSPA_plugins-win-0.4.15.exe をインストール。C:\Program Files (x86)\Audacity\Plug-Ins\ 以下にインストールした。
  5. Lame_v3.99.3_for_Windows.exe をインストール。C:\Program Files (x86)\Lame For Audacity\ にインストールした。
  6. ffmpeg-win-2.2.2.exe をインストール。C:\Program Files (x86)\FFmpeg for Audacity\ にインストールした。
  7. Audacity は C:\Program Files (x86)\Steinberg\Vstplugins\ を自動で読みにいくらしいので、Audacity で使いたいVSTの .dll を件の場所にコピー。
  8. 設定ファイルが入ってるのであろう、C:\Users\ユーザ名\AppData\Roaming\audacityフォルダを全削除。
この状態で Audacity を起動してプラグインの追加/削除を選んでみたら、VSTプラグインが「NEW」表示になって、有効にすることができた。

Audacity 2.2.1 rc2 は以下から辿って入手。

_Audacity 2.2.1 Release Candidate 2 | Audacity

LADSPA plug-ins、LAME MP3 encoder、FFmpeg import/export library は、以下から辿って入手。

_Windows | Audacity

Audacity が C:\Program Files (x86)\Steinberg\Vstplugins\ を自動で読みに行くという話は、以下で見かけた。

_KeroVeeのインストール | g200kg Music & Software

VSTプラグインの場所はユーザ側で指定できたら助かったのだけどな…。C:\Program Files (x86)\Steinberg\Vstplugins\ は他のDAWソフトも見に行くので、Audacity だけで使いたいVSTまで入れるのも…。いやまあ、それについては Audacity\Plug-Insフォルダに入れれば済むはず、なのだろうか。しかし何故自分の環境では反映されないのか…。

この記事へのツッコミ

Re: AudacityでVSTプラグインが使えなくて悩んだり by のり平    2018/12/08 03:34
やっと使えるようになった。ありがとうー。

2016/12/05(月) [n年前の日記]

#1 [ruby] Gosuを触っていたり

_Ruby Game Developing Advent Calendar 2016 - Adventar_よくわかる Ruby ゲーム開発のいま - あおたくノート で、Gosuというゲーム制作用ライブラリの存在を知って、興味が湧いたので触ってみているところ。

SDL2を使っているらしいので速度的に大丈夫なのかなと不安だったけど、GeForce GTX 750 Ti を積んでるメインPC上ではそれらしい速度で動いてくれた。が、DXRuby と比べるとなんだか動きが若干ガクガクしてるような…。気のせいかな…。オンボードGPUを積んでるPC上で動かすとどうなるのか、ちょっと気になる。

以前、SDLを使っている PyGame 等を試した時は、描画に結構時間がかかってる感じだったので、それ以来SDLとやらは速度面で期待できないのかなと偏見を持ってたりするのだけど。ただ、SDL2はハードウェアアクセラレーション対応、という話もあるし、そもそもGosu関係のアレコレを眺めたら描画にOpenGLを使ってる気配がありそうで。 *1 であれば描画速度についてはそれほど不安視しなくてもいいのかなと。でも、以前 OpenGL を使った2Dゲーム用ライブラリを触った際も、DXRuby より描画が重かった記憶もあって。

何にせよ、もうちょっと色々試してみないと。
*1: Linux上でGosuを使う際はOpenGLが有効になってないと描画速度が出ないよ、という話を見かけたので、すると描画はOpenGLを使うのかなと。

#2 [pc] デスクトップを動画でキャプチャ

Windows10 x64 + VMware Player + Ubuntu 16.04 LTS上で、デスクトップを動画でキャプチャしたいなと。

ググってみたら、SimpleScreenRecorder なるキャプチャソフトの評判が高いらしい。

_Ubuntuの画面録画が簡単にできるSimpleScreenRecorderのインストール方法と使い方 - Ry0 Note
_第316回 SimpleScreenRecorderで簡単スクリーンレコード:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
_Main page - SimpleScreenRecorder - Maarten Baert's website

試しにインストールして使ってみたら、デスクトップがあっさり録画できた。素晴らしい。

他にも、 _Ubuntu画面録画にオススメのソフト5選 で、Kazam なるキャプチャソフトもあると知り、そちらもインストール。これも操作が簡単だった。

_おもいたったがきちじつ - ubuntu - TrustyTahr(14.04) - Kazamでスクリーンキャプチャ

更に、Ubuntu ではほぼ標準扱いらしい RecordMyDesktop なるキャプチャソフトもインストールしてみたけど…。これはなんだかしっくりこなかった。

ちなみに、Ubuntu上で静止画キャプチャをしたいならキーボードの PrintScreen を叩くだけでいいらしい。「どこに画像を保存する?」と尋ねてきた。Ubuntu に、こんな機能があったのか…。

Windows10上でデスクトップをキャプチャ。 :

Windows10上でもその手のキャプチャソフトを試したり。メインPCは GeForce GTX 750 Ti を積んでいるので、NVEnc(ハードウェアエンコーダ)が使えるとありがたい。

ここ最近は、その手の動画キャプチャをする時に _oCam を使わせてもらっているけど。本来は有料ソフトなので、無料利用時は終了時に広告が表示される。もっとも利用頻度はそんなに高くないので、この程度なら、まあ、という気もするけれど。

_Bandicam も NVEnc に対応していてイイ感じだけど、無料利用時は録画した動画にロゴが入る。購入すればその手の制限は無くなるけど、韓国企業が作ったソフトらしいから、購入時に個人情報を渡すあたりがちと不安だったりもして。万が一、社内に過激な反日の人が居たら何をされるか…。もっともそんなこと言ってたらLINEなんか使えないだろうけど。

ググってたら、 _Open Broadcaster Software (以下OBSと略)なる実況配信ソフトもローカル録画ができて、かつ、NVEnc に対応してるという話を見かけた。巷の情報では現行版ではなく OBS Classic なる版の利用事例・説明ページが多いようで。

試しに OSB Classic をインストールして動作確認してみたけど、ちょっと設定が面倒というか、分かりづらいなと。いや、元々配信ソフトだから仕方ないのだろうけど。それにしても複数の映像ソースを一つにまとめてリアルタイムに動画にできるあたり、なんだかスゴイ。

一応ローカル録画はできたけど、録画した動画の周辺や下のほうに、何故か黒い領域が入る…。 _VIPで初心者がゲーム実況するには@ Wiki - OBSローカル録画 を参考にして、ソースを右クリックして「位置/大きさ」→「画面に合わせる」を選んだはずなのだけど。

#3 [nitijyou] 自転車で買い物に

夜食等を買いに、近所のコンビニとサンドラッグまで。

親父さんが自転車の前ブレーキのゴムパッド?を交換してくれたのだけど、ブレーキレバーを握る量が少なくなったもののキーキー音が鳴るようになってしまって。コレって何が原因で鳴るんだっけ…。

ググってみたら、アレはゴムパッドじゃなくてブレーキシューと呼ぶのだな…。

2015/12/05() [n年前の日記]

#1 [cg_tools] Pixia Ver6を試用

Pixia はフリーで使えるお絵かきソフト。

大昔に触ったときはUIが酷くて閉口したのだけど、さすがに今時の版は変わってるのではないかと気になってきたので試用してみたり。もしかすると独特なフィルタがあるかもしれんし。Ver4、5、6があるらしいけど、UIについて一番変えてると思われる ver6 を試用。

相変わらずだった。付属のフィルタも一通り試してみたけど…。あえて今から使うアプリではなさそう。

細かい感想までアップしちゃうと問題がありそうなので、そのあたりはGRPでメモ。

#2 [nitijyou] 日記をアップロード

気が付いたら、2015/09/17を最後に、ずっとアップロードしてなかった…。少しずつアップロード開始。

2014/12/05(金) [n年前の日記]

#1 [dxruby] DXRubyと絵文字

気づいたら _DXRuby Advent Calendar 2014 の予定が全部埋まってたので、なんだか一安心。埋まってくれて良かったです。

…実は、万が一全部埋まらなかったら、こういうしょーもない記事でも押し込んでしまおうかしら、空いてるよりはマシだろう、などと思ってチビリチビリと書いてたのでした。せっかく書いたことだし、ちょっともったいないから、こうして一応公開。と言っても、内容は _2014/03/29の日記 の焼き直しなので(´・ω・`)なのですけど。

DXRubyと絵文字 :

DXRubyを使ってサンプルスクリプトを書く時、こんな感じで書くわけですけど。

_sample1.rb
require 'dxruby'

img0 = Image.new(96,96, C_RED)
img1 = Image.new(96,96, C_CYAN)

Window.loop do
  break if Input.keyPush?(K_ESCAPE)
  Window.draw(160, 120, img0)
  Window.draw(320, 160, img1)
end
emoji_ss1.png

「なんだかちょっと寂しいなあ…」と思うわけですよ。それに、画像の向きも分からないから、回転させてもどっち向いてるかよく分からなくて、動作確認用としても少し困るし。

そこで、最初のあたりをちょっと書き換えてみたりして。

_sample2.rb.txt
img0 = Image.new(96,96, C_RED)
img1 = Image.new(96,96, C_CYAN)

# ↓

img0 = Image.new(96, 96).drawFontEx(0, 0, "\u017d", Font.new(96, "Webdings"), :color => C_RED)
img1 = Image.new(96, 96).drawFontEx(0, 0, "\u004d", Font.new(96, "Wingdings"), :color => C_CYAN)

emoji_ss2.png

ちょっとは楽しそうな見た目になったかな? え? 相変わらず寂しい? いやいや、四角だけよりはマシでしょう…と思うんだけど。

てなわけで、この記事は終わりです。以上!

補足情報。 :

ダラダラ続けます。

上のソレ、やってることは、Image.new() で画像を作った直後に、.drawFontEx() で「絵文字」を描いてるだけです。
img0 = Image.new(96, 96).drawFontEx(0, 0, "\u017d", Font.new(96, "Webdings"), :color => C_RED)
「"\u017d"」てのは、「Unicodeで何番目の文字か」を指定してます。ここを変えれば違う絵文字を選べるわけですな。Ruby 1.9 以降ならこの書き方ができるそうです。

また、Windows には最初から、以下の絵文字フォントが入ってますので、これらのフォント名を指定すれば絵文字が使えます。
  • "Wingdings"
  • "Wingdings 2"
  • "Wingdings 3"
  • "Webdings"
  • "MS ゴシック"
「MS ゴシック」も、ところどころに絵文字がある(U+2500あたりに並んでる)ので書いておきました。

どんな絵文字があるかは、 _IMEパッド を開いて確認することができます。

しかしですね。仕組みを説明するサンプルスクリプトの類なら、ソースをパッと見で何をやってるか分かりやすくしないといけないので、こういう余計(?)な小技を使うのもどうかと思うわけですよ。なので、こういうソレは実際には使わんだろうなと。

でもまあ、それでも、「見た目をもうちょっとどうにかしたいよなあ」「だけど画像を添付するのもアレだなあ」「ドット絵を描くのも面倒だなあ」てなときには使えるかもしれません。

補足情報その2。 :

「〜なときには使えるかもしれません」と書いてみたものの。「ホントに使えるのかよ?」と不安になってきたのでした。

そこで試しに、絵文字だけでミニゲームっぽいものも書いてみました。

  • プレイヤーキャラをカーソルキーの左右で動かして、ドクロマーク以外を取るミニゲームです。
  • ドクロに当たると点数が0点になってしまいます。
  • クソゲーです。クソゲーです。大事なことなので2回言いました。
_sample3_game.rb.txt
emoji_game_ss.gif

うむ。見た目は悪くないんじゃないかな。

ちなみに、これが四角になると…。

emoji_game_ss2.png

…アレ? これはこれでアリなんじゃ…。アレレ? まあ、判断は読者に委ねます。と、お茶を濁したりして。

DXRubyとLigature Symbols :

絵文字を出す時、指定が分かりづらいですね。「"\u017d" とか書かれても、何が出てくるのかわかんねえよ!」と言われそうです。

もしかすると、Ligature Symbols フォントを使えば、そのあたり少しは解決するかもしれません。

_Ligature Symbols
_【レビュー】キーワードをタイプすることで印字可能な絵文字フォント「Ligature Symbols」 - 窓の杜

どういうフォントかというと、「mail」と書けばメールの絵文字が出てくる不思議な(?)フォントです。

DXRubyでも使えるか実験してみました。

_sample4_ligaturesymbols.rb.txt
# LigatureSymbolsフォントをDXRubyで表示できるかテスト

require 'dxruby'

# カレントフォルダに置いたttfを一時的にインストール
Font.install("./LigatureSymbols-2.11.ttf")

fnt = Font.new(72, "LigatureSymbols")
sz = 72 + 4

Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  chrlist = [
    "mail", "delete", "clear", "camera", "image", "playmedia", "bell",
    "color", "light", "dark", "keyboard", "time", "car", "bus",
    "grab", "setting", "wink", "smile", "trouble", "surprise",
    "man", "woman", "game", "home", "heart", "heartempty",
    "gift", "umbrella", "android", "apple", "github",
    "aim", "chrome"
  ]

  x, y = 4, 4
  chrlist.each do |s|
    Window.drawFont(x, y, s, fnt)
    x += sz
    if x > Window.width - sz
      x = 4
      y += sz
    end
  end
end

emoji_ss5.png

単語をずらずらと drawFont() に渡してますが、表示されているのは絵文字ですね。うむ。表示できるようですよ。

ただ、Ligature Symbols フォントの ttf ファイルを、スクリプトに同梱しないといけないのがアレですね。「画像を同梱したほうが確実だし早いだろ…」と言われそうですなあ…。

でもまあ、ファイルサイズについてはメリットがありそうです。Ligature Symbols フォントの ttfファイルは、たったの 81.4KByte。これっぽっちのファイルサイズで、色んな画像が出せるわけで。

あくまで夢想レベルですが…DXRubyに標準で画像を内包させる、なんて話になった時は、こういう方法でデータを持っておくのも手かもしれないよなあ、てなことをチラリと思ったりもします。元がベクターデータだから、得られる画像サイズは自由自在だし。データファイルサイズも少なくて済むし。利用時は、意味が分かる単語を指定できるので、ソースも分かりやすくなるし。

多色化できないのが難点ですけど(木亥火暴)

今回使ったスクリプト・フォントファイル :

今回使ったスクリプトやフォントファイルの一式を以下に置いておきます。

_font_disp_unicode_20141205.zip

スクリプトは Public Domain。フォントファイルは各フォントのライセンスに従う、ということで。common_icons.ttf、LigatureSymbols-2.11.ttf、どちらもOFL(SIL Open Font License)のはずです。

2014/12/06追記。 :

DXRubyの作者様が、このお遊び(?)について興味深いお話をされてましたので、せっかくですから引用させていただきます。

Image#draw_exで描画してるから1.4.1でも動いてるけど、これがWindow.draw_fontで描画してたら"\u017d"が描画エラーになるという困った問題がある。

mirichiさんはTwitterを使っています より

Window.draw_fontでエラーになるのはSJISに存在しないコードだからであり、基本的には内部SJISなので色々と問題がある。1.5devではIME対応のついでに内部UNICODE化したのでこれが動くようになっている。はず。

mirichiさんはTwitterを使っています より

じゃあなんでImage#draw_exは動くのかというと、1文字ずつフォントのグリフを取得する処理を簡単にするためにここだけUNICODEに変換してるからなのだな。Window.draw_font以外はこの処理が入ってるので動く。

mirichiさんはTwitterを使っています より


マジすか。手元でも早速試してみたところ…。
require 'dxruby'

fntwebdings = Font.new(96, "Webdings")

Window.loop do
  Window.drawFont(10, 10, "\u017d", fntwebdings)
end
> ruby sample2_b.rb
sample2_b.rb:8:in `encode': U+017D from UTF-8 to Windows-31J (Encoding::UndefinedConversionError)
        from sample2_b.rb:8:in `drawFont'
        from sample2_b.rb:8:in `block in <main>'
        from sample2_b.rb:7:in `loop'
        from sample2_b.rb:7:in `<main>'
ホントだ。Window.drawFont() でコレをすると、エラーになるのか…。自分、「毎フレーム文字書いてたら遅くなるやろ。ここは画像にしておくべし」的に何も考えずやってたけど、エラーを回避するルートを偶然選んでいたのですな。

そして、驚愕の事実が。
UNICODEの合字に対応した覚えは無いのでLigature Symbolsが使えるとは思えないのだが、はて、なんでWindow.draw_fontで描画できてるんだろう。

mirichiさんはTwitterを使っています より

( ゚д゚) エエー

何故動いてるんだ、コレ…。まあ、DXRubyの七不思議の一つ、てことにしちゃ…ダメですかね…。

ちなみに、Windows7 x64 上で、GIMP、メモ帳、Paint.NET は Ligature Symbols が使えてますが、LibreOffice、Inkscape、Word 2003、Word 2007 では使えないので、たしかにアプリによって、合字フォントへの対応・未対応が違うようです。OSが全てイイ感じにやってくれるわけではない、ってことなのかしら。

DXRuby の場合、DirectX がイイ感じにそのへんやってくれてるとか? と思って「directx 合字」「directx ligature」でググってみたけど何が何やら。うむ。七不思議です。

#2 [pc][web] @wikiからGoogle Sitesへ引っ越し

やはりどう考えても、@wikiの、コンテンツの上に広告が表示されてしまうこの状態はマズいよなあと思えてきて。別サービスにコンテンツを引っ越すことに。

そういえば Google も Wikiっぽいサービスをやってなかったっけ…。と思ってググってみたら、 _Googleサイト(Google Sites) なるサービスがあるそうで。入門サイトを眺めながら少し触ってみたら、これでもイケそうな気がしてきたので、引っ越し作業開始。

ということで、 _https://sites.google.com/site/mieki256wiki/ にコンテンツを移動しておきました。

ページ数が少ないからどうにかなったけど、山のようにページがあったら諦めてたかも。

Googleサイトの気に入らないところ。 :

ことあるごと本名を表示しようとしてくる。困った。ファイルをアップロードすると誰がアップしたのか本名を表示。更新履歴も本名を表示。世界中の誰でも見れる場所で本名表示。これは酷い。

いやまあ、どうせ自分の本名なんて、大昔に関わったアレコレで出ちゃってるので今更なところもあるのですけど。にしても、自分自身が本名出そうかなあと思って出すのと、他人から「本名を出せ! 何が何でも出せ!」と強制されるのでは、後者はどうも気に障るというか。自分、学生時代からこのPN・HNを使ってるので思い入れあるんですよ。PN・HNを使わせてくれてもいいじゃんよ。

このあたり、Google+を普及させるべく無茶してた頃の仕様がそのまま残ってるのかしら。あるいは、本来は企業向けのサービスで…てのもおかしいか。外部に対して社内の人達の本名をなんでかんで公開するってのも変な話だよなあ。公開範囲を設定できなきゃおかしいだろう、てな気もする。

さておき。@wikiに比べると機能が少なくて。例えばソースコードの色付け表示機能が無いあたりもちょっと。

もっとも、「ソースコードを公開したいなら GitHub 使えや」と言われそうな気もするし。あるいは、「そういうのは Qiita でいいじゃん」てな気もするし。Googleサイト上でソースコードを貼っておきたい、という自分の要望はちとおかしいかも。

@wikiの気に入らないところ。 :

引っ越し作業をしてみて、@wikiは操作が面倒だなと。

例えば、ページにアップロードした画像ファイルを削除しようとしたとき、1つ1つ手作業で削除していかないといけない。しかも、毎回「削除しますか?」と尋ねてくる。まとめてチェックを入れて、問い合わせもせずに一気に削除してくれる機能は無いのかな。削除を押す → 問い合わせページ → 削除終了表示 → リストに戻ってまた削除を押す、を繰り返すのはゲンナリ。

これが Googleサイトだと、ファイルリストの横の×ボタンを押していくだけで削除予約が入ってじわじわと削除されていく。技術力の違いなのか、それとも、一々お伺いを立てて念押しして責任回避する日本文化と、指示された途端に実行すべきだろうと考える欧米文化の違いなのか。どうなんだろう。

また、画像ファイルをDLしようとしても、ファイル名が全て同じになってしまうあたりも気になった。倉庫として使われることを防止する目的でもあったのだろうか。この仕様だと、バックアップを取るのが大変なんだけどなあ。

Googleサイト上でソースコードの色分け表示。 :

ググってみたら手はあるようで。
  1. Googleサイト上でテキストボックスを挿入。
  2. HTML編集モードに切り替え。
  3. ソースコードを色分け表示するhtmlを、その手のツールで生成してコピー。
  4. 貼り付け。
ソースコードを色分け表示したhtmlを生成するあたりは、 _Highlight を使ってみたり。ありがたや。

_こんな感じ になった。なんとかなったっぽい。

_黒点観測記: google sitesにソースコードを貼る が参考になりました。ありがたや。

Googleサイトの更新履歴を非表示に。 :

デフォルト設定だと、更新履歴ページを一般の方も閲覧できるので、つまりはそこで、誰が更新したかを本名で見れてしまうのだけど。

「サイトを管理」のページで、「アクセスの設定」→ 「更新履歴にアクセスできるユーザー」「変更履歴にアクセスできるユーザー」を「共同編集者のみ」にすれば、一般には更新履歴が表示されない状態になるようで。これで誤魔化すしかないか…。

2013/12/05(木) [n年前の日記]

#1 [nitijyou][pc] 自転車で買い物に

親父さんの電動自転車を以下略。コンビニとダイソーとリオンドール、一旦帰って夕飯の支度をしてから、ホーマックとSeriaとサンドラッグに行ってきたり。

リオンドールで夕飯のおかずを、ホーマックでマウスパッドと枕を購入。

マウスパッドについてメモ。 :

購入したマウスパッドは、 _サンワサプライ MPD-T1GY (グレー色) 。298円、だったかな…。小さいマウスパッドだけど、パッケージに「コレで充分!!」とデカデカと書いてある。

昔のボール式マウスは、精度が低かったり、動かす際に引っ掛かったり等色々あったから、マウスパッドも大きいのが必要だったけど。今時のマウスは、光学センサやレーザーセンサで精度がそこそこ高いし。たしかにコレで充分、な気がする。グワングワンと腕全体を動かしてマウスを動かす時代じゃなくて、手首から先でチョチョイと動かす時代だよなと。

枕について。 :

低反発枕を買ってきた。1,280円、だったかな。

ここ数ヶ月、昔「ためしてガッテン」で紹介されてた、座布団+バスタオルを枕代わりにして試していたけど。高さはたしかに調整可能でイイ感じなのだけど、座布団の余った部分が、邪魔で邪魔で…。やっぱり枕が必要だなと。そのうち使って様子を見てみるつもり。

#2 [pc] ダイソーで小物を色々購入

色々買って試してみたり。

ボタンやキーボードに貼るシールを購入。 :

マウスの拡張ボタンに、ポッチをつけたいなと思ったので、ガラケーのボタン、あるいは、PCのキーボードに貼り付けられるシールの類を探したのだけど。さすがにスマホ全盛な時代だけあって、全然売ってなくてガックリ。それでも、かろうじて、シールを2つほど買ってきたり。

一つは、シールの厚みが薄すぎて、貼っても意味が無かった。たぶん、ボタンに色付けをするためだけのシールなのだろう…。もう一つは、ラインで貼っていくタイプのシールだったので、カッターで一粒だけ切り出して使ってみたり。こちらはまだ、それなりの厚みがあったので、目的は果たせたような気がしたり。

スマホスタンドを購入。 :

手持ちのガラケー、N905i をデジカメ代わりに使う時があるのだけれど、手持ち撮影だからぶれてしまう時があって。三脚に固定する何かが欲しいなとずっと思っていたわけで。

たまたま、ダイソーで目にしたスマートフォンスタンド、携帯電話グッズNo.715 が、両側からバネで挟んで固定しながら三脚っぽい何かで立たせるタイプだったので、これを流用できるのではないかと試しに買ってみたり。

帰宅後試してみたけれど。N905i の本体が細すぎてダメだった…。約53〜65mm の幅のスマホには使える、と書いてあったけど、ガラケーはそこまで太くないのだなと。

仕方ないので、裏面に両面テープがついたスポンジを貼って、挟める幅を狭くして試してみたけど。
  • 件のスタンドは、ガジェットを上向きにして固定するグッズなので、カメラ撮影時のように横向きにはならない。
  • N905iの側面はボタンだらけなので、固定できる場所が極めて限られる。
てな理由で、こりゃダメだと。

扉を開けたら光るLEDセンサーライトを購入。 :

扉を開けると磁石が離れてスイッチが入るLEDライト、LEDライト No.11 が売られていたので購入。コレを使えば、親父さんやお袋さんが、夜中トイレに行こうとした際に、ドアを開けただけでライトが光って便利だろうと思ったわけで。

帰宅後、開封して弄っているうちに、問題点に気がついた。親父さんやお袋さんが使う部屋のドアは、昼間は開けっ放し。その間、このLEDライトは、ずっと点いたままになるはず。あっという間に、電池切れになるな…。ダメだこりゃ。

何かしら使い道は無いかなあ…。思いつかない…。引き出しその他に設置すると言っても、暗すぎて困りそうな引き出しは、日常生活の中で基本的には使わない扱いになるわけだから、ココに付ければ、という場所が全然思いつかない。うーん。

おにぎりを作る容器を購入。 :

御飯を詰めてギューッと押し込むとおにぎりが作れるソレ。

一応、昔、そういうグッズを購入して、今も時々使ってるのだけど。御飯がベタベタとついてしまうのがなんだかアレで。

昨今は、しゃもじの表面を凸凹させて、御飯がつきにくい状態にしてあるわけだけど、ソレをこの手の容器にも使えばいいのに、と常々思っていたわけで。ところが、今日、たまたま店頭でそのものズバリを見かけて。やはり皆、考えることは同じか、コレは一つ試してみないと、てな気分で購入。

まあ、たぶん、表面の凸凹は、何も考えてない凸凹で、やっぱり御飯ついちゃうじゃん、というオチになりそうだなと思ってますけど。

電池残量を測定する何かを購入。 :

電池の両端を挟むとメーターが動くソレを Seria で購入。

自分、一応これでも工業高校電子科卒なので、実習の時間にテスターを作らされて、ずっとそのテスターを使ってる・電池残量を測る時もソレを使っているのだけど。一々引っ張り出すのが面倒臭いし、あの細い棒で電池の両端を挟むのも結構至難の業だし、手軽に測れる何かが欲しいなーと。てなわけで、これなら十分イケそうだなと購入。

帰宅後、手持ちの電池で測定してみたけど。どのあたりが1.5Vなのか、よく分からず…。

また、説明書に、「3秒以上測ると電池が無くなるよ」と書いてあることにも気付いたり。たしかに、目盛り上の針がグングン動いていく…。なんだかコレ、電池をわざと使いきるという目的でも使えそうな。

ちなみに、充電池の類には使えないらしい。

100円ショップでいくつか買ってきただけなのに。 :

100円ショップでいくつか買ってきただけなのに、こんだけズラズラと、どうでもいいことを書けるあたり、なんだか自分はお得というか…。何を使っても「ふむふむ、なるほど」と遊べる人間じゃないのかと思えてきたり。安上がりな人間…。

#3 [dxruby][game] DXRubyで二足歩行する敵っぽい動きを作ってみる

今日も DXRuby を使って何かしら書いてみます。

今回も多関節ネタということで、二足歩行する敵っぽい動きを試してみようかなと。

なんで二足歩行なのかというと…。個人的に、ちょっと思い入れがありまして…。

昔、先輩から、「このゲームの、この中ボスは、こうやって動かしてるんだよ」と説明してもらったことがありまして。「うわー、面白そう。自分もそういうのやってみたい」と思ったものの、その後、そんな機会には恵まれず。

当時は、その手のゲームを作るとなるとアセンブラで書くのが当たり前だったので、なかなか気軽に試すわけにもいかなくて。また、CGツールも無かった時代ですので、絵描きさんに「こういうの描いてくれませんか?」とお願いする必要もあって。 *1 なので、お遊びでチョチョイッと、てなわけにはいかなかったのです。 *2

だけど今なら、気軽に試せる DXRuby がある。CGツールだって、好きなだけ使える。ということで、当時、指をくわえて眺めていたあの動きを、自分もちょっと試しに書いてみようかな、と。

とりあえず、こんな感じになりました。

二足歩行その1
# 二足歩行する敵モドキ

require 'dxruby'

$angadd = 2

# 足先の座標を求めるクラス
class Foot
  def initialize(start_ang)
    @ang = start_ang
    @x = 0
    @y = 0
    self.update
  end

  attr_accessor :x, :y

  def update
    # 円運動をさせてみる。
    # 本当は放物線運動のほうがいいと思う…けど
    # 面倒臭いから今回は安直に円運動
    
    ang = @ang * Math::PI / 180.0
    @x = -128 * Math.cos(ang)
    @y = 96 * Math.sin(ang)
    @y = 0 if @y >= 0
    @ang += $angadd
  end
end

# 棒状の部分を複数のスプライトを使って描く
def draw_foot_sub(bx, by, tx, ty, img)
  count = 10
  count.times do |i|
    x = bx + ((tx - bx) * i / (count - 1)) - img.width / 2
    y = by + ((ty - by) * i / (count - 1)) - img.height / 2
    Window.draw(x, y, img)
  end
end

# 足を一本分描画する
def draw_foot(bx, by, tx, ty, img, flen)
  dw = tx - bx
  dh = ty - by

  # 腰から足の先までの長さ、の半分を求める
  # 三平方の定理(ピタゴラスの定理)を使ってる
  l = Math.sqrt(dw * dw + dh * dh) / 2

  # 膝までの距離を求める。これも、三平方の定理を使ってる
  nl = flen * flen - l * l
  n = (nl <= 0)? 0 : Math.sqrt(nl)

  # 腰と足先の中間点を求める
  cx = (bx + tx) / 2
  cy = (by + ty) / 2

  # 膝があるはずの方向(角度)を求める
  # 腰と足先の座標から角度を求めて、それに90度足せばいい
  ang = Math.atan2(dh, dw) + Math::PI / 2
  
  # 膝の場所を求める
  lx = cx + n * Math.cos(ang)
  ly = cy + n * Math.sin(ang)

  # 腰から膝までと、膝から足先までを描く
  draw_foot_sub(bx, by, lx, ly, img)
  draw_foot_sub(lx, ly, tx, ty, img)

  # 分かりやすくするために線を引いてみる
  Window.drawLine(cx, cy, lx, ly, [255, 0, 0])
end

img = Image.load("ufo.png")

by = 150 # 腰の高さ
gy = 420 # 地面の高さ

# 足半分の長さ
flen = (gy - by) / 2 + 20

footl = Foot.new(0)
footr = Foot.new(180)

# メインループ
Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  # マウスカーソルのy座標で足先の移動速度を変えてみる
  $angadd = 20.0 * Input.mousePosY / Window.height - 10.0
    
  bx = Input.mousePosX

  # 右足の根元と先っぽの座標を求める
  n = 24
  frbx = bx - n
  frby = by
  frtx = bx + footr.x - n
  frty = footr.y + gy

  # 左足の根元と先っぽの座標を求める
  flbx = bx + n
  flby = by
  fltx = bx + footl.x + n
  flty = footl.y + gy

  # 右足を描く
  draw_foot(frbx, frby, frtx, frty, img, flen)
  
  # 腰を描く
  Window.drawScale(bx - img.width / 2, by - 80 , img, 2, 2)

  # 左足を描く
  draw_foot(flbx, flby, fltx, flty, img, flen)

  # 足先の座標を更新
  footl.update
  footr.update

  # 分かりやすくするために線を引いてみる
  Window.drawLine(frbx, frby, frtx, frty, [0, 255, 255])
  Window.drawLine(flbx, flby, fltx, flty, [0, 255, 255])
end
ちょっとソースが長くなってしまいましたが…。もうちょっと短く書けないのかな、コレ…。

ざっくりと解説を。

一般的に、2Dゲームの多関節処理というと、各関節毎に角度を管理・制御して動きをつけていくのですけど。このプログラムでは、少し違うことをしています。

このプログラムでは、各関節の角度ではなく、根元と先っぽ(足先)の座標だけを管理・制御しています。そして、膝だか肘だかの座標は、計算して求めます。

この仕組みを作ってしまえば、根元と先っぽだけを制御すればいいので、比較的自由に動きをつけていけますし、時々、プログラマーが意図してなかったポーズになったりもして、見た目が面白い場面も出てきたり…するかもしれません。

MMD(MikuMikuDance)や3DCGソフトを触ったことがある人なら、ピンときたのではないでしょうか。「それって、IK(インバースキネマティクス)じゃね?」。そうです。これ“も”、IKです。

MMDや3DCGソフトのIKは、以下のような状態ですが…。 このプログラムでは、以下のような状態です。 制限だらけですね…。とはいえ、さすがに、これだけ制限があれば、昔の非力なCPUでもIKが実現できたわけです。実際、スーパーファミコンやメガドライブの某タイトルでは、こういう仕組みでボス敵が動いてました。…スーパーファミコンのCPUはとにかく遅くてプログラマー泣かせだったらしいですけど、プログラマーの工夫次第で、こういうこともできたわけですね。

さて、実際の処理内容ですが…。 ここまで分かれば、中間点の座標、sin、cos、膝があるはずの角度、膝までの距離、を使って膝座標が得られますね。

ちょっと分かりづらいかな…?。余裕があったら説明図も後で描いときます。

(※ 2013/12/06追記。説明図を追加してみました。ちょっとだけ…分かりやすくなった…のかどうか…)

説明図

ところで。

DXRuby は、スプライトの回転拡大縮小半透明描画ができますので…。何もわざわざ、複数のスプライトを数珠繋ぎにして、足を描かなくてもいいような気がしてきました。

ということで、足を丸々画像にして、回転させて描画してみましょうか。blender でレンダリングした画像を使ってみました。
足を画像にしてみた例
# 二足歩行する敵モドキ。足を画像にしてみた版

require 'dxruby'

$angadd = 2

# 足先の座標を求めるクラス
class Foot
  def initialize(start_ang)
    @ang = start_ang
    @x = 0
    @y = 0
    self.update
  end

  attr_accessor :x, :y

  def update
    # 円運動をさせてみる。
    # 本当は放物線運動のほうがいいと思う…けど
    # 面倒臭いから今回は安直に円運動
    
    ang = @ang * Math::PI / 180.0
    @x = -128 * Math.cos(ang)
    @y = 96 * Math.sin(ang)
    @y = 0 if @y >= 0
    @ang += $angadd
  end
end

# 棒状の部分を1枚のスプライトを回転させて描く
def draw_foot_sub(bx, by, tx, ty, img)
  cx = (tx + bx) / 2 - img.width / 2
  cy = (ty + by) / 2 - img.height / 2
  dw = tx - bx
  dh = ty - by
  ang = Math.atan2(dh, dw) * 180.0 / Math::PI
  Window.drawRot(cx, cy, img, ang)
end

# 足を一本分描画する
def draw_foot(bx, by, tx, ty, img, flen)
  dw = tx - bx
  dh = ty - by

  # 腰から足の先までの長さ、の半分を求める
  # 三平方の定理(ピタゴラスの定理)を使ってる
  l = Math.sqrt(dw * dw + dh * dh) / 2

  # 膝までの距離を求める。これも、三平方の定理を使ってる
  nl = flen * flen - l * l
  n = (nl <= 0)? 0 : Math.sqrt(nl)

  # 腰と足先の中間点を求める
  cx = (bx + tx) / 2
  cy = (by + ty) / 2

  # 膝があるはずの方向(角度)を求める
  # 腰と足先の座標から角度を求めて、それに90度足せばいい
  ang = Math.atan2(dh, dw) + Math::PI / 2
  
  # 膝の場所を求める
  lx = cx + n * Math.cos(ang)
  ly = cy + n * Math.sin(ang)

  # 腰から膝までと、膝から足先までを描く
  draw_foot_sub(bx, by, lx, ly, img)
  draw_foot_sub(lx, ly, tx, ty, img)

  # 分かりやすくするために線を引いてみる
  # Window.drawLine(cx, cy, lx, ly, [255, 0, 0])
end

img = Image.load("foot.png")
bodyimg = Image.load("body.png")

by = 150 # 腰の高さ
gy = 420 # 地面の高さ

# 足半分の長さ
flen = (gy - by) / 2 + 20

footl = Foot.new(0)
footr = Foot.new(180)

# メインループ
Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  # マウスカーソルのy座標で足先の移動速度を変えてみる
  $angadd = 20.0 * Input.mousePosY / Window.height - 10.0
    
  bx = Input.mousePosX

  # 右足の根元と先っぽの座標を求める
  n = 24
  frbx = bx - n
  frby = by
  frtx = bx + footr.x - n
  frty = footr.y + gy

  # 左足の根元と先っぽの座標を求める
  flbx = bx + n
  flby = by
  fltx = bx + footl.x + n
  flty = footl.y + gy

  # 右足を描く
  draw_foot(frbx, frby, frtx, frty, img, flen)
  
  # 腰を描く
  Window.draw(bx - 150, by - 100, bodyimg)

  # 左足を描く
  draw_foot(flbx, flby, fltx, flty, img, flen)

  # 足先の座標を更新
  footl.update
  footr.update

  # 分かりやすくするために線を引いてみる
  # Window.drawLine(frbx, frby, frtx, frty, [0, 255, 255])
  # Window.drawLine(flbx, flby, fltx, flty, [0, 255, 255])
end
うむ。実にそれらしくなりましたな。

ただ、見た目をリアルにしていくのは楽しい作業なのですが…。これはちょっと、落とし穴がありそうな気もしますね。

まあ、今回は、「昔憧れたあの動きを、DXRubyという便利ライブラリを使って気軽に実験」という話でやってますので、コレはコレでOKかなと。

ソースと画像も置いときますね。Public Domainってことで。

_walkenemy.zip

さて、明日も何か書いてみようかな…と思ったけれど、今日のコレで時間ギリギリだったので、二日に1回ぐらいのペースで書くかもしれないし書かないかもしれません。まあ、この手の記事を書く練習ってことで、気楽に、気楽に…。

余談。他のツールを検討すべき境界線。 :

DXRuby に限らず、2Dゲームライブラリを使ってアレコレ作っていく際に、見た目をリアルにしていくことにリソースを割いていくと…。

どこかの時点で、「ソレ、Unity使ったほうがよくね?」となりそうな気がするのです。つまり、そこに落とし穴というか、「ここから先は別のツールを使ったほうが…」と判断できる境界線が、どこかにあるんじゃないのかな、と思えるのですね。

Unity の場合…。
  • 3Dで描画するから、見た目からしてリアル。
  • 多関節キャラを扱うのは当たり前。そもそも、人体モデルが多関節キャラですから…。
  • 多関節キャラの動きを、3DCGソフトを使って確認しながら作り込める。トライ&エラーが簡単。
  • モーションの合成も、基本機能として持っている。
  • IKも、基本機能として持っている…。
てな感じの、大変便利なツールですので…。何も今から、Unityと同じことをしなくてもいいんじゃないか、車輪の再発明をしなくても、ということになりそうですよね。

ただ、Unityも、習得に要する時間というものがあるわけで…。

習得時間に関しては、DXRuby 等、2Dゲームライブラリは、比較的短いので…。やはり、「ちょっと試してみる」「この手のプログラムの書き方を勉強してみる」という点では、メリットがあるようにも思うのでした。

*1: 当時は、国民機 PC-9801 を使ってた時代ですから…。16色しか出ませんから…。TVゲーム機用の色を出すには、自社設計のハードウェアをPC-9801に追加して、とかやってた時代ですから…。プログラマーが、余技? 趣味? でCGツールも使わせてもらう、なんてことは、ちょっと難しかったのです。…いや、やる気ビンビンな先輩方は「俺にもCGツール使わせて!」とかやってましたけど。自分は引っ込み思案、かつ、プログラム書くだけで手一杯でそこまでは…。
*2: そもそも自分、当時はまともなPCを持ってなかった気がする。X1 turbo は部屋にあったかもしれないけど、電源すら入れてなかったような…。X68Kでも持ってたら違ったのかもしれないけど。

2012/12/05(水) [n年前の日記]

#1 [zatta] PWR型の原発で電源喪失するとどうなるんだろう

ググってみたけどよくわからん…。蒸気を上手に使って電源なくても冷却できるよ!と言ってる人も居るんだけど、配管破裂したら意味ないよとか、冷却器壊れたらBWR型より早く逝っちまうよとか、なんだか色々あるようで。専門用語ばかりでチンプンカンプン。おそらく、「冷温停止」と「冷温停止状態」の違いのように、ちょっと違う言葉にしか見えないけど実態は全然違う、みたいな言葉も多々混じってるのだろうな…。

これは勝手な想像だけど。基本的な仕組みとして電源が無くても冷却できるようにしてあるとしても、きっとその仕組みを使うためのどこぞのバルブ?を開くのにやっぱり電源が必要で、でもその電源が使えなくて、てなことがありそうな予感。福一だって、そのあたりの電源が無くて、作業員の車からバッテリー掻き集めて、とかやってたらしいし。○Vの電源が必要なのに、違う電圧の電源ばかり輸送されてきた、しかも福一まで運んでもらえず、遠く離れた施設に溜まりっぱなしだったからそんな展開になったらしいけど。PWR型もそういうことが起きそうな気もする。

#2 [zatta] 「原発は低コスト」は嘘でしょうよ

「原発は短期的には安く済む」などと、まるで原発が低コストであるかのようにまだ思い込んでる人が居るみたいだけど。騙されちゃダメだよ…。

原発は、お金のかかる部分を税金使ってやるというカラクリがあるので。トータルでは高コストでしょう…。原子力村が提示する発電コストは、あくまで、『原発を使うと電力会社“だけ”はちゃんと儲かる仕組みになっていた(←過去形)ことを示しているに過ぎないデータ』と見るべきだろうと。税金使って何をどれほど補ってるかは表やグラフに入ってないから、そこから本当のコストは見出せないですよ。日本国民がどのくらい負担した上で発電しているのか、そこまで含めて考えたら、原子力村の構図からしても、低コストになるはずがない…。

そもそも当初、電力会社各社は、原発導入にゴネてたのだし。国の政策で、「おい、電力会社よ。原発導入しろや」と言われたけど、「これじゃ儲けが出ない。我々は営利企業だから、儲けが出ない発電方法なんかやりません」とブーブー言って。原発政策を担当させられた官僚さんが、「じゃあ、コレやコレについては国でやるから…。これならどや?」「そういう話なら考えてみましょうか」てな感じで導入が始まったらしいので。だから、電力会社が「原発は低コスト」と言うのは当たり前。だって、そういう数字に必ずなるように国と電力会社で話を合わせた上で導入してるのですから。税金使うことで本当のコストは見えにくいようになっている。

このあたり、NHKの特集番組の中で、当時の官僚さんの肉声テープ、引退した電力会社上層部へのインタビュー映像の中で、当人達がそう喋ってましたので…。たしかそのはず。自分の偽記憶じゃなければ、そういう話をしてたと思う。

今はもう原発事故が起きたので、そういうのも過去形になってると思うんですけど。東電が国の支援を受けることになってるぐらいですから、色々破綻しちゃってる。なので、「原発は短期的に安く済む」というのは…元々誤魔化されてた話ではあったけど、今なら尚のこと間違いなく、否、でしょう。もうそんな時期は過ぎてますよ。

しかも、大事故が起きても国がケツ拭いてくれると東電の事例で分かりましたので。他の電力会社も「だったら原発動かしたいわあ。事故起きなければそもそも俺達儲かる仕組みだし、事故が起きても国が金出すから俺達は痛くないし。辞任しちゃえば責任逃れもできるし老後の資金もバッチリさ」的モードになってるんじゃないかなあ。そういうのもあって、「再稼働すべき」と論陣張って国民を洗脳しようとするヤツがゴロゴロしてるんじゃないのかな。税金使う=国民ばかりが負担する、ってことですからね。税金と言う他人様の財布をあてにできるのだから、そりゃもうあの手この手で…。

と、自分は思っているのですけど。

それと、電気代の値上げと原発停止云々は、直結してないっぽいので…。以下は少し古い記事ですけど…。

_hirax.net::「2011年の貿易収支赤字」主要因は「原発停止による燃料量増加」ではありません
去年の日本の輸入額が増えた一番の要因は、「燃料の輸入量が増えた」ということでなく、「燃料の価格が上がった」からなのです。

hirax.net::「2011年の貿易収支赤字」主要因は「原発停止による燃料量増加」ではありません より

「2011年の貿易収支赤字」の主要因は原発停止に伴う燃料使用”量”増加ではないのです。電気供給で用いる”燃料”を価格が安定して安価なものにしたい(価格が大きく変動するものにはしたくない)と言うことはできるでしょう。しかし、原発を止めたから貿易赤字になった主張は間違っているのです。

hirax.net::「2011年の貿易収支赤字」主要因は「原発停止による燃料量増加」ではありません より

たぶんこんな具合に、原子力村があちこちでミスリードを仕掛けている、と思ったほうがいいのではないかと。

2011/12/05(月) [n年前の日記]

#1 [flash] FLASH CS5にswfを読み込ませる実験をしてみたり

FLASH CS5のライブラリにベクター画像を放り込みたいわけですよ。なので、svg を swf に変換して読み込ませられないものかと。

swfmillでsvgをswfに変換。 :

_swfmill swf2xml and xml2swf

以下の内容を svg.xml として保存。
<?xml version="1.0" encoding="iso-8859-1" ?>
<movie width="640" height="640" framerate="24">
  <background color="#ffffff"/>
  <library>
	<clip id="mySVG" import="start.svg"/>
  </library>
  <frame name="myFrame">
	<place id="mySVG" name="myFirstsvg" x="0" y="0" depth="1"/>
  </frame>
</movie>
swfmill.exe -v simple svg.xml svg.swf 
これで、svg をインポートした swf が出力されるはず。

libiconv-2.dll が無いと文句を言われた。 _MinGW - Minimalist GNU for Windows - Browse /MinGW/Base at SourceForge.net を辿って、libiconv-1.14-2-mingw32-dll-2.tar.lzma を入手。解凍したら libiconv-2.dll が入っていたので、swfmill.exe と同じフォルダに入れたところ、動いてくれた。

しかし、出力した swf を、FLASH CS5 に読み込ませてみると、Suzuka で出力した swf を読み込ませた時と同じような崩れた表示になった。

根拠のない勝手な想像だけど、swfmill が出力する swf はあくまでAS2.0用で、AS3.0対応の FLASH CS5 では正常に読み込めない・利用できないのではあるまいか。

inkscape2swfc_demo070.pyでscファイルを作成してswfcで変換。 :

_SWFTOOLS というツール群の中に、swfc.exe というツールがある。テキストファイルを読み込んで swf を出力するツールらしいが、AS2.0もAS3.0も対応してるよ、と読めなくもないので試してみる。

Inkscape で出力したsvgを読んで、swfcに渡すためのファイルに変換出力する、 _Inkscape2swfc(web.archive.org) (inkscape2swfc_demo070.py) というPythonスクリプトが以前は公開されていたらしい。試しに使ってみたり。

python inkscape2swfc_demo070.py start.svg
と打ってみたら、エラーが出た。どうやら Inkscape 上で、
  • オブジェクトをパスに変換
  • ストロークをパスに変換
  • グループ解除(たまに、全てがグループ解除できてない時もあるので注意)
  • プレーンsvgとして保存
などをしておかないといけないらしい。

それらしいテキストが出力されたので、
python inkscape2swfc_demo070.py start.svg > start.sc
で scファイルとして保存。
swfc.exe start.sc -o start.swf
でswfに変換。しかし大量に警告が出る。出力された swf も、Flash Player 上で正常に表示されていない。

どうやら、swfc は相対座標の記述は受け付けないらしい。Inkscape のデフォルト設定はsvgを相対座標で出力する設定になっているため、出力された svg の中には相対座標で記述されていることを示す、小文字の「m」「c」が大量に入っている。それら小文字の「m」「c」をswfcが認識できていないように思える。

仕方ないので Inkscape の設定を変更。ファイル → Inkscape の設定 → SVG出力 → 相対座標を許可、のチェックを外してsvgを保存し直し。svgの中には絶対座標を示す大文字の「M」「C」が並んでいることを確認。

しかしそれでも、swfcの警告が大量に出る。どうも、svg 内の path データが、M x,y x,y C x,y と並んでいるあたりが怪しい。本来そこは、M x,y C x,y という形になるはずではあるまいか。余計に入ってる x,y 値は何を示しているのだろう。

M の後にひたすら x,y x,y x,y が並ぶ時は、単に直線が描かれることを示している模様。「C x,y」はベジェ曲線のコントロールポイント座標を示している。であれば、M x,y x,y C x,y という記述は正しい。最初に直線が描かれ、その次からベジェ曲線になっているというデータに過ぎないはず。

_SWFC Manual を眺めていると、どうも直線を示す場合には L x,y という記述が必要なように思えた。Inkscape は「L」を省略しても問題ないように作られているのだろう…。SVGの仕様書も眺めると、「L」を記述するほうが正しいように思えるが。最近の仕様では省略できるように変更されたのだろうか?

Inkscape の設定を眺めていたら、「強制的にコマンドを繰り返す」という項目が、逐一「L」をつけて出力する設定だと分かった。つまり。
  • 「相対座標を許可」を無効に。
  • 「強制的にコマンドを繰り返す」を有効に。
…すれば、swfc に渡せる svg が出力できそうだ。

再度 sc に変換して、swfc で swf を出力。それらしい swf が出力された。Flash Player 上では正常表示されている。だが、FLASH CS5 に読み込ませると、正常表示されない…。

SWFC Manual に記載されているサンプル2つを swf に変換して FLASH CS5 に読み込ませてみたが、簡単な図形(house.swf)は表示できたものの、グラデーション図形(gradients.swf)は表示されなかった。つまり、swfc で出力した swf も、複雑な図形は FLASH CS5 側で正常に表示できない模様。

Flash Player では正しく表示される swf が FLASH CS5 では変な表示になるなんて、わけがわからないよ。何にせよ、これ以上 swfc に関して実験しても無駄なようだ。

FLASH CS5の対応形式情報を眺めていて気が付いた。 :

_入出力ファイル対応形式 (Flash CS5)

ライブラリへ読み込みをする際のオープンダイアログでは、拡張子一覧の中に ai、dxf、swf しか無かったのに、サイト上の情報によると、emf、wmf も読み込み可能、と記載があることに気が付いた。

試しに Inkscape で emf 保存して、D&Dで FLASH CS5 のライブラリウインドウに放り込んだ。…開けた。各パーツも、ざっくり眺めた限りでは、それぞれベクター画像になっているように見える。

なんだよー。emfで渡せばいいのかよー。なんでオープンダイアログに並べておかないんだよー。わけがわからないよ。

色々実験してみたけれど。 :

色々と面倒臭くて、ますます Adobe純正アプリが嫌いになりました。

検索してみたが、FLASH CS5.5 もsvg未対応のようでガッカリ。CS6では対応してほしいが、望み薄な予感。

2010/12/05() [n年前の日記]

#1 [nitijyou] MOTHER関連のインタビュー記事を読んでる

MOTHER2の開発がヤバくなって、岩田氏が参加して、 _「いまある形のまま直すなら2年。イチから作っていいなら1年以内。どちらにする?」 と問うたあたりとか。ツールを作ることから整備してどうにかした話とか。あるいは、 _MOTHER3開発中止 のあたりとか。

何か参考になるのかもしれないと思って。今まさに、そんな状態のような気がしてならないわけで。ただ、この企画には、天才プログラマーは居ない。

2009/12/05() [n年前の日記]

#1 [nitijyou] 目がヤバイ

ここ数日、液晶ディスプレイを見ていると、どんどん目が充血してしまうようになっていて。瞳孔の周りの血管がどんどん赤く太くなってきて、時には痛みすら。頭痛もしてくる。

右肩は痛いわ、首はガチガチだわ、目はこんなんだわ。この歳でこんな状態ということは…。そのへん考えたくないな。

とりあえず、ヤバイと思ったらちょこちょこ細目に寝ることにしよう…。いや、マジ寝しなくても、目を瞑っているだけでかなり違うのではと思うのだけど。ということで、今日はもう寝る。

2008/12/05(金) [n年前の日記]

#1 [nitijyou] 新宿まで打ち合わせに行ってきた

AM07:00に出発。東北新幹線利用。AM09:48に新宿到着。AM11:00から打ち合わせの予定だったので、それまでは途中周辺をウロウロ。

お昼御飯を御馳走してもらったり、都庁展望台を案内してもらったり。色々と良くしていただいてありがとうございます。というか自分すっかりお上りさんだなあ。

PM07:00頃に打ち合わせ終了。新宿近辺の本屋さんを案内してもらって、欲しかった書籍、「ゲームプログラマになる前に覚えておきたい技術」「ローポリスーパーテクニック」の2冊を発見。購入。

家に到着したのはPM10:50頃。親父さんが車で迎えに来てくれていた。ありがたや。

#2 [nitijyou] 帰ってきてメールチェックしたらAmazonから「在庫が揃ったよ発送できるよ金払え」メールが届いてた

前述の2冊を注文していたのだけど、いつまで経っても発送可能状態にならなくて。Amazonで件の本を入手しようとすると数週間かかるという巷の噂も後になって見かけてしまったので、今回新宿でその2冊を目にしたのでこれ幸いとわざわざ買って、しかもすぐ読みたいからめっちゃ重いのに手をヒリヒリさせながら持ち歩いて帰ってきたわけで。あまりにもタイミングが悪すぎるがな。>Amazon。

「ゲームプログラマ〜」のほうはキャンセルできたのだけど。「ローポリ〜」のほうは「発送準備に入ってるからキャンセルできない」と書いてある。困った。両方揃うまで数週間かかるよ、等の情報を事前に少しでも提示しておいてくれたなら、2冊一括発送など指定せずに、バラバラで発送するよう指定して、こんな問題は起きなかったのに。

ひとまず、メールの文面を読む限り、5日間支払い作業をしなければ一旦保留になって、その後キャンセルに移行できる術があるように読めなくもない、のだけど実際はどうなんだろう。「何が何でも金払え」と言われたら、「そっちが何時まで経っても在庫揃えてくれないせいでこういう事態になったんじゃねえか」とゴネたいのですが。つーか在庫として倉庫に入れておけば、他の注文が来たときにサクッと発送できてそっちの顧客満足度はアップするのだから、キャンセルさせてくれてもいいじゃないかそのほうが皆幸せになるじゃないか、と思うんだけどどうなんだろうなあ。

#3 [nitijyou] 携帯電話利用を止めろと言う一派が目についてなんだか気になった

久々に新幹線・電車に乗ったのだけど。「席で携帯電話を使うな。どうしても使いたければデッキに行け」「優先席の前では携帯電話の電源を切れ」等の車内アナウンスや張り紙が気になったり。

理由を書いといてくれよ。豆粒文字でもいいから。理由なくして「○○せよ」しか言わんのでは、それはもはや宗教だ。

つーか優先席のあたりに押されてしまって、片手で吊革を、もう片手で荷物を持ってる状態で、満員状態の車内で携帯の電源を切るべくゴソゴソするなんて作業としては難易度高過ぎなんですけど。吊革から手を離した瞬間に車両が揺れて優先席に座ってる人の顔にエルボーを打ちこむ状況が仮に発生したとしても、それでも尚電源を切らなきゃいけないのでしょうか。そこまでの緊急性を要する話なら、そうしなければならない理由ぐらい、ちゃんと書いておいてくれ。

2007/12/05(水) [n年前の日記]

#1 [web] _IEとFirefox、どちらが安全? セキュリティ担当者がブログで火花 - ITmedia エンタープライズ

_IEとFirefox、どちらが安全? なんでOpera使わないの? - TERRAZINE

Operaにも、FirefoxのJSActionsみたいな拡張があればいいのだけど。そういうのはあるんだろうか。

_私的 Opera まとめページ - パソコン遊戯 :

なんだかいろいろできそうな。そろそろ乗り換えられる状況になりつつあるのかしら。

#2 [jiji] _INFOBAR 2告白は「事実無根」三洋が説明、「本人が謝罪」 - ITmedia News

_mixi日記に「INFOBAR 2に欠陥品」と“告白"? 三洋「事実確認中」 - ITmedia News

製品が市場に出れば、事実かどうかもわかるんだろうな…。

学生時代にステレオ機器を作る工場のラインでバイトしたことがあるけれど。不良品は出るよなぁ…。出ないほうがおかしい…。作業してるうちにボーッとなってしまう。集中力を何時間も維持するなんて難しいし。まあ、それを見越してチェックする過程をラインに入れとく・必須になるわけだけど。

#3 [digital] _現在の楽器インターフェースは最適解か?――岩井俊雄氏、TENORI-ONを披露:ニュース - CNET Japan

YouTubeの動画を見て感動。

_YouTube - Kaossilator :

KORG KAOSSILATOR。めちゃくちゃ面白そう。…動画を見ないと面白さが伝わらない感はあるけど。

#4 [nitijyou] ktのサイトに5ページ分アップ

作業が終わったー、と思ったら、新たに2ページ分のチラシがメールで届いた。ぎゃふん。

2006/12/05(火) [n年前の日記]

#1 [windows][web] ホームページビルダーとサブサイト管理機能とサイトを開く時間と。その2

親父さんがHPB9を操作する様を後ろから眺めつつ、アレコレ指示(?)を出してたのだけど。サブサイトを開いた状態で、「共通リンク」の項目をクリックしたら、HPB9が不正終了した。さすが、HPB。

親サイトを開いて、該当サブサイト設定を削除。新規にサブサイトを作成。…今度は大丈夫っぽい。が、どういうことなんだろうな。

「編集」メニューの不思議。 :

サブサイト設定を開いた状態で、「ページを編集」を選んでも、メニュー項目に「編集」等が表示されないあたりも気になる。ショートカットキーで検索ダイアログ等は出せるけど、メニューが表示されないのでは一般ユーザは何ができるかわからんではないか。

自分のPCでも動作検証してみた。…こちらは「編集」メニューが表示される。どういうことなんだろう。

「リンクエラーのあるファイル」の不思議。 :

サブサイト設定を開くと、トップページが、必ず「リンクエラーのあるファイル」にリストアップされてしまう症状に遭遇。

不思議なのは、
  • 「サイト/素材ビュー」中の「フォルダ」→「リンクエラーの〜」ではエラーとしてリストアップされる。
  • 「サイト/素材ビュー」中の「リンク」→「リンクされてるファイル」ではエラーが見当たらない。
という状態になること。

どうも管理フォルダ外…例えば「親サイトのindex.html」などにリンクを張ると、問答無用でリンクエラーとして扱われる模様。もちろん、「親サイトのindex.html」は「共通ファイル」として設定してあるし、サブサイト内のページ編集時にはリンク設定ダイアログに「共通リンク」として出てくる。

やはりバグなんだろうな。はたしてHPB11では修正されているのだろうか。

_ホームページビルダー - 強制終了が多いときはファイル数が問題かも… :

IBMに問い合わせたところ「大量にファイルが存在する場合は処理ができません」との回答をいただきました。「ファイル数の制限はしていない」とのことで「使用環境によって動作に差が生じます」だそうです。しかも「メモリや仮想メモリが十分あっても」大量のファイルは管理できないそうです。そういった場合は、「複数のサイトに分けて管理されることをお勧めします。」だそうです。

教えて?に答えるコミュニティ | ひとびと・net より

それから「異常終了した後、ホームページ・ビルダーが正常に機能していない場合には、入れ直しを行ってください。」とのことです。

教えて?に答えるコミュニティ | ひとびと・net より

入れ直しってのは、再インストールのことだろうか。…異常動作すると、何かを破壊したまま終了してしまうのだろうか。> HPB。

_自分で設定したアプリケーションの設定を最初の状態に戻したい :

_サイトやビジュアルサイトを開くのに時間がかかります :

■展開レベルの [エラーのあるページまで展開] のチェック マークを外す
■展開レベルのレベル数を減らす

IBM パーソナル・ソフトウェア|サイトやビジュアルサイトを開くのに時間がかかります より

試してみたが、効果なし。考えてみれば、ビジュアルサイトビューに関係する設定だろうから、効果はさほど期待できないのか。…ビジュアルサイトビューを自動で開かない設定にもしてみたが、これもたいして効果は無かった。

_HTMLクイックチェッカ - HTML構文とローカルリンクの簡易チェッカ エディタ機能つきでミスの修正も簡単 :

試用してみた。処理中のファイル数等表示してくれるあたりは精神衛生上良かったのだけど、やはり処理時間は結構かかってしまう。また、HPBが生成したhtmlに対して構文チェックで問題ありと表示される。なかなか難しい。

#2 [web][windows] _フェンリル、mixiの閲覧を支援する「Sleipnir」用プラグイン「MixChain」公開

Sleipnir 2.49 にアップグレードした後にインストールしてみたり。

新しい日記があるかどうか、しか表示してくれないように見える。閲覧履歴等を残してくれるわけではないのだな。でもまあ、マウスジェスチャが使えるだけでも多少は楽になるか…。

表示用のcssを独自に指定できれば、アクセス済みのリンク・既読リンクの色を変えることができるんじゃないかと思ったものの。さて、どうやればいいんだろうな。

#3 [zatta] _それでも、ドアを開けっ放しにしとくのはいかがなものか>某奥さん

そういやウチのお袋さんも、トイレのドアを閉めずに用をたしてるときが多いな…。トイレ前を通らなきゃいけないときは困ってしまう。

親父さんは滅多に閉め忘れはしない。…男性と女性でそのあたり違うのだろうか。

と思ったが、妹もトイレの閉め忘れはしないな。男女で違いがあるのではなく、個体によってトイレのドアに対する脳の回路が違うのだろうか。…誰か真面目に研究してみてくれないものか。ナントカ賞を取れるかもしれん。それはないか。

#4 [zatta] _3Dスキャナーで足を測定してもらい、それを元に足に合った靴を買った。

先週銀座に行ったときにasicsの直営店「歩人館」へ行った。3Dスキャナーで足を測定してもらい、それを元に足に合った靴を買った。

[を] 足に合う靴 より

_(via 読書記録ChangeLog)

足を測定してくれる機械が既にあるのか…! なんと素晴らしい情報! ありがたや! これで靴擦れともオサラバ! かもしれぬ。

_三洋電機、3Dスキャナー装置による足型分析システムを開発 :

素晴らしい…。

イメージしてたものより、はるかにデカイ。右側の箱は何だろう。PC1台でも処理やデータ量は足りるのでは、という気もするのだが。技術的に何か難しいところがあって大型化したのだろうか。

月額5万でリース可能らしい。店にとっては、高いのか、安いのか。

福島県には無いのだろうか。 :

と思って _「歩人館」 のサイトを眺める。…東北では仙台にだけあるみたい。該当の機械は置いてあるのだろうか。

関東ならたくさんある模様。いつかそのうち東京に行くことがあったら回ってみるか…。

_低価格・可搬型足部形状スキャナINFOOT :

_INFOOT USB (スタンダードタイプ)
_INFOOT USB (ハイタイプ)

気になって検索してみたらこういう製品もあった。USB接続ってあたりに親近感(?)。それはともかく、前述の機械も含めて、こういう製品が既に実用化されている現状に感動。技術立国日本と自称するからには、こうでなければ…!<大げさ。

_「たった一度のご来店 二足目からはネット通販」 :

なるほど、こういう店もあるのか…。オーダーメイドなので高いけど。

#5 [zatta] _意識を喪失したわけでも目眩がしたわけでもなく、身体のバランスがとれなくなっただけです。「おかしいな」と思ってそのまま帰宅し、マンションの前に来てまた転倒。

実はこないだの木曜の夜、新宿で『パプリカ』の三回目を見て、6時半に相模大野で整体を受け、7時半頃自宅の近所で京風お好み焼きで夕食をとったあと、お勘定を払おうと立ち上がったとたんにその場でぶっ倒れてしまいました。

別に意識を喪失したわけでも目眩がしたわけでもなく、身体のバランスがとれなくなっただけです。「おかしいな」と思ってそのまま帰宅し、マンションの前に来てまた転倒。自室に入ってからも一度転んだので、いよいよおかしいと思い、実家の父親に電話してから救急車を呼びました。

意識は明晰で、痛みも痺れもないのです。しかし、これはおかしい。

たけくまメモ : みなさんごめんなさい より

こういう症状があるのか…。気をつけないと…。 _(via finalventの日記 - こーゆー歳に入ってきたわけだよな)

#6 [zatta] _もしも中国で忠臣蔵が制作され、大石内蔵助が女性だったとしたら、私もいささか戸惑うだろう。

_戦国武将が女性 だったり、 _源義経が女性 だったりするから別に大石内蔵助が女性でも…。面白くなるなら、それはそれで。いや、件の西遊記が、それで面白くなったかどうかは知らないけれど。

そういえば、中国は男尊女卑が激しいのだったか。もしかするとそれで反発されたのだろうか。 _(via finalventの日記 - そんなこと言ってもそれが日本の伝統?)

_香取慎吾の映画『西遊記』に中国ブロガー怒りの声 :

SMAPの香取慎吾主演で製作が進んでいる映画『西遊記』(澤田鎌作監督)に、中国のブロガーらから非難の声が挙がっている。同作は中国の寧夏回族自治区で10月にクランクインしたことが中国でも報じられ、話題になったが、「三蔵法師を女性に変えてしまった」「中国の文化遺産である原作を侮辱している」というのがその論調だ。17日付で信息時報などが伝えた。

報道によれば、ブロガーたちの間で最も不満が大きいのは「三蔵法師を女性が演じている」という点。他にも「ストーリーやキャラクター設定が原作と大きくかけ離れており、悪ふざけが過ぎる」「孫悟空にスカートを履かせている」「猪八戒が大きな帽子を被っていてイメージが違う」といった意見が出ている。

香取慎吾の映画『西遊記』に中国ブロガー怒りの声 2006/11/17(金) 16:36:02 [中国情報局] より

…映画を作ってたのか。知らなかった。

三蔵法師が女性と言うと、SF西遊記スタージンガーもそうだったか。 :

ジープで移動する西遊記は由緒正しく男4人だったっけ。猪八戒が美形だったのがなんだかアレだけど。

この記事へのツッコミ

沖田総司(牧瀬里穂) by がんした    2007/01/13 01:19
確かに、「幕末純情伝」を劇場で見た衝撃は忘れもしない。
http://www.geocities.co.jp/Bookend-Akiko/3636/junnjou/junnjou.html

だがしかし、ゴダイゴが主題歌歌ってた頃からの伝統(?)だから仕方なし。
http://www.vap.co.jp/saiyuki/

いっそ、全キャラ女性化すれば古典がどうのこうのと、物言いもつかなかったかも。
http://www.akibablog.net/archives/2007/01/110.html
Re: 沖田総司(牧瀬里穂) by mieki256    2007/01/13 06:16
> 沖田総司(牧瀬里穂)

考えてみると、なかなか凄い一文ですなコレ。どんな配役なんだと。
もちろん「なんだそれは」と思わせることで宣伝にもなるわけでアレですが。

> 全キャラ女性化

考えてみると、なかなか凄い商品ですなコレ。
いや、考えてみなくても凄い商品ですが。
日本の明日はどっちだ。いやこういう馬鹿馬鹿しさは好きなんですが。

西遊記で全キャラ女性化といえば、
昔そういうエロマンガを見たことがあるなぁ…。<オイ
やはりエロ関係はそっちに走りやすいのでしょうか。

ここは一つ、本来全キャラ女性のはずだが
全キャラが男になってる作品を企画するというのは。
例えばガルフォースが全キャラ男性に。…フツーだぁ。
…いや、見たことないんですけど。ガルフォース。
ある日突然12人の兄が!とか。…それに近い少女漫画が既にあったなぁ。

古典で、ほとんど女性しか登場しない作品って、
考えてみたら無いような気がしてきました。

#7 [zatta] _はてなちゃんとは

こんなものがあったのか。知らなかった。

#8 _DS用クリーナーとスクール水着と体操服

膨らませることができそうなネタだなと思いました。いや。そこを膨らませるわけじゃなく。<どこだよ。

#9 [pc] _海原雄山のマイコン倶楽部

「マイコン」という単語から大体内容は想像できたものの、まさかこんなに続いてるとは。 _(via ふが日記・T(2006-12-04))

#10 [zatta] _「すさまじく安っぽい絵ですね。」

コメント欄にあったこの一文を見て、何かが引っ掛かった。自分などは「すっきりしていてイイ感じの絵柄だな」と思ったのだけど。人によっては「安っぽい」という印象を持つ絵柄でもあるらしい。それも「すさまじく」感じてしまったらしい。

「安っぽい」という印象はどこから導かれるのだろうか。それが判れば、その要素を排除することで、人目を引く・好印象を持たれる・売れる絵が描けるかもしれぬ。

塗りに起因するのだろうか。 :

セルアニメのような絵柄だと安っぽく感じるのだろうか。

例えば、スタジオジブリ最新作の「ゲド戦記」。監督の意向によって、昔の宮崎アニメの画面を再現 ―― 影はせいぜい1段にする等を意識して画面を作ったらしいが。どうも観客の反応はよくなかったらしい。つまり一般人は、目が肥えてしまって、数段階の影がついてないアニメ絵には拒否反応を示す、ということだろうか。

さりとて、影の段階をどんどん増やしてグラデーションにまでなってしまうと、今度は「エロゲ塗り」と揶揄して拒否する人も出てくるような気がする。…グラデーションになると、色情報を認知する段階で飽和して、単一の塗りと同様に見えてくるのだろうか。

塗りの面積が関係していたりはしないか。狭い面積で複数のグラデーション塗りがあるのと、広い面積で数えるほどのグラデーション塗りがあるのでは、印象が変わってくるのだろうか。

グラデーションであっても、例えば永田萌の画に見られるようなものだと、評価が変わってきそうな予感もある。計算による均一な変化のグラデーションではなく、紙に対する絵具のにじみ、ノイズ、不均一性を見てとれるグラデーションには、違う感想を持つ人が多い。…そんな予感も。

…件のコメントを書いた人は、例えば、浮世絵に対してはどういう感想を持つのだろう。浮世絵も、広い面積を単一色で塗ってあるものが多いと思うが、同様に「安っぽい」と感じるのだろうか。感じるのであれば、アニメ絵どうこうではなく、浮世絵の特徴を挙げていく・意識的に避けていくことで、「安っぽい」とは思われなくなるのかもしれない。

線に起因するのだろうか。 :

件の表紙絵のサムネイル画像は、画像サイズとしてはかなり小さい。よって、線の強弱までは判断できない。つまり、線の強弱が「安っぽさ」という感想を導いてるわけではないと判断できる。

線の本数が関係してるのだろうか。いや、件の画像サイズでは、本数についてもやはり判断できないだろう。

つまり、「安っぽい」という感想は、1本1本の「線」の属性からきているわけではない。

デフォルメデザインによるのだろうか。 :

例えばコレが、人物写真をそのままトレスしたようなデザインだったらどうか。そういうデザインなら「高級」という感想が出るのだろうか。

もし、劇画タッチだったらどうだろう。あるいは、昔風の少女漫画タッチだったらどうだろう。サザエさん的絵柄だったら…。いや、サザエさん的と言えばそんな感じもあるか。>件の絵柄。ちびまる子ちゃん的絵柄だったら…。その場合は「安っぽい」というより「ヘタクソ」という感想が上がってくるのかもしれないか。

江川達也、江口寿史などが描く女性の絵が表紙になっていたら、感想も変わってくるのだろうか。…わたせせいぞうの絵だったらどうか。いや、件の絵はそこらへんに近い感じもするんだけど。

時代性が関係してるのだろうか。 :

昔流行った絵柄の片鱗がどこかに見て取れるものは「安っぽい」という印象を持ってしまいがち、だったりはしないか。劇画全盛の頃は、手塚治虫の絵柄は古臭いものとして拒否されがちだった、という話もどこかで聞いたけど。それに近いものがあったりはしないか。

でも、その場合、「安っぽい」という感想はおかしいよな。「古臭い」なら判るが。「古臭い」≒「安い」という固定観念が当人の中で無意識にできてしまっているから、そういう言葉が出てくる、ということなんだろうか。つまりは語彙の少なさがそこにあると。

手間隙がかかっているように見えるかどうかが関係してるのだろうか。 :

「安っぽい」=「手抜きをしてる」という前提が存在してる可能性もありそうな。例えば、動物を表紙にした例の本。パッと見ただけで「これは俺には描けねえ」と思ってしまう。…そういう絵柄は「高級」であるように思うのだろうか。

となると、カケアミトーンや点描トーンを使ったペン画などに対しても、「高級」という印象を持ってもらえるのだろうか。印刷されたソレを見て、「これは手で描いてる」「これはトーン」なんて判別できる人は、漫画を描いてる人ぐらいだろう。であれば、トーンを使っていても「これは描けない」=「高級」と思うかもしれない。…しかしそれはそれで、グラデーションに対するソレと同じ感想をもたれそうな予感もあるけれど。

そもそも本当に「安っぽい」という感想なのか。 :

「好みじゃない」と書いただけではなんだか自分が馬鹿っぽいと思われそうだから、もうちょっとそれっぽいことを書いてるように振舞いたくて、「安っぽい」という言葉を脈絡なく持ち出しただけに過ぎないのではないかという疑念も。…となると。各人の好みの話であれば、分析・想像してみても実はナサゲ。

つーか、本の表紙ってのは「なんだコレ?」と思ってもらえないといかんというのもありそうだから、そういう意味ではネガティブな印象を持ってもらえるだけでも表紙絵としては正解なのかもしれんか。そもそも動物を表紙にしたシリーズだって、「なんだコレ?」を重要視して生まれたところがありそうな気もするし。

と書いたところで気がついた。

絵のネタ自体が安っぽい、ということなのだろうか。 :

人間がそこに描かれているのではあまりにもフツーすぎる。目を引かない。「なんだコレ?」が少ない。工夫が足りない。と、そういうことなのか。

まあ、逆に、当たり障りの無いところを狙っていったとも考えられるけど。マニアの人たちに売るわけではない。初心者の人たちに売りたい。だから極力、拒否反応が出にくい無難なネタを選んだ、という考えが販売元にありそうな。でも、Pythonの本を買う時点で、既にフツーの人・初心者じゃないような気がしないでもない。販売側の想定する層と、実際に買っていく層に、なんだか乖離がありそうな。

実のところ、こういう本をどういう人が手に取るのか、いや、どういうところに置かれるのかが、今一つ判らないところも。陳列されてる場所によって、どういう絵柄・ネタのほうが目を引くか、というのは違ってくるだろうし。そこを想像・予想できなければ、適切な表紙絵の方向性は見出せない。

表紙デザインってのは難しいなぁ。

「〜は難しいなぁ」と書くのが癖になってる。>自分。

2005/12/05(月) [n年前の日記]

#1 [pc] MSI MS-6163上で Celeron 1.4GHz @ FSB 100MHzが「条件つき」ではあるけど動いた

「MS-6163でもCeleron 1.4GHzが安定動作してる」「BIOSのキャッシュ関係が怪しいかも」という情報を教えてもらい、自分も試してみたり。

おお。BIOS設定で、『L2キャッシュを無効』にしたら、memtest86 のテストが全部通りましたがな!

…えーと。ちょっと待って。それってつまり、どういうことなんでせう。

M/B やメモリに原因があるわけではなく、CPU = Celeron 1.4GHz のL2キャッシュだけが1.4GHzで動作する性能を満たしてない、つまりは不良品のCPUを自分は掴んでしまっていた、ということなのだろうか。トホホ。今となっては初期不良交換もできんだろうし。金返せ!>パソコン工房。じゃなくて、金返せ!>Intel、かな。

でも、ひょっとして、下駄である PL-iP3/T Rev 2.0 が真っ当な電圧を渡してない、という可能性があったりはしないだろうかとも。たしか非Rev2.0はその手の問題があったような記憶もあるので、下駄に原因がある可能性も否定できない気も。

L2キャッシュを無効にしたCeleron 1.4GHZ @ FSB 100MHz は 900MHz @ FSB 66MHz 時に比べどれだけ性能が違うのかしら。 :

L2キャッシュを無効にしても、1.4GHz @ FSB 100MHzのほうが速いのであれば、そちらを使いたいところだけど。

ひとまず、HDBENCH で測定してみたり。

900MHz @ FSB 66MHz 時。
 ★ ★ ★  HDBENCH Ver 3.40 beta 6 (C)EP82改/かず ★ ★ ★ 
M/B Name    mieki256 main pc  
Processor   Pentium III 935.45MHz[GenuineIntel family 6 model B step 1]
Cache       L1_D:[16K]  L1_I:[16K]  L2:[256K]  
VideoCard   Matrox Graphics Millennium G400 AGP  
Resolution  1024x768 (16Bit color)  
Memory      392,688 KByte  
OS 5.1 (Build: 2600) Service Pack 2
Date        2005/12/06  00:52  

Intel(r) 82371AB/EB PCI Bus Master IDE Controller
プライマリ IDE チャネル
  Maxtor 6Y080L0
  Maxtor 33073H3

Intel(r) 82371AB/EB PCI Bus Master IDE Controller
セカンダリ IDE チャネル
  HL-DT-ST DVDRAM GSA-4163B

   ALL  Integer   Float  MemoryR MemoryW MemoryRW  DirectDraw
 16632    43191   42614     9870    7517    14002          42

Rectangle   Text Ellipse  BitBlt    Read   Write   RRead  RWrite  Drive
    41866  21773    5656     276   20046   18587    4536    8672  D:\100MB

1.4GHz @ FSB 100MHz 時。
Processor   Pentium III 1403.18MHz[GenuineIntel family 6 model B step 1]
Cache       L1_D:[16K]  L1_I:[16K]  

   ALL  Integer   Float  MemoryR MemoryW MemoryRW  DirectDraw
 17514    64865   63944    14733   11106    20876          21

Rectangle   Text Ellipse  BitBlt    Read   Write   RRead  RWrite  Drive
    10754   7534    2953     270   20365   17564    4746    8852  D:\100MB

整数計算、浮動小数点計算、メモリリード・ライトは、1.4GHz @ FSB 100MHz のほうが速い。が、ビデオカード関係はガクンと性能が落ちる。どうやら FSB100MHz 時は、FSB 66MHz の大体半分ぐらいの速度になるような。ウインドウの書き換えも、目に見えて書き換え速度が落ちる。印象を音でたとえると「ホハっ」が「めろん」になったとでもいうか。やっぱりL2キャッシュの有無が関係してるのだろうか。

しばらく操作してみたけど、体感的にも違う。時々何かが引っかかるような感じ。

というわけで、900MHz @ FSB 66MHz に戻してしまったり。自分が、原因の切り分けができないトホホな知識状態であったが故のペナルティ、みたいなもんと思うことにして使うことにしますです。トホホ。

でも、昔のCeleronって、たしかL2キャッシュが無かったりもしたんだよなぁ。それを考えると、1.4GHz で動かせるだけでもスゴイことなのかもしれん。

この記事へのツッコミ

Re: MSI MS-6163上で Celeron 1.4GHz @ FSB 100MHzが「条件つき」ではあるけど動いた by ago    2005/12/08 03:45
検証どうもです。
やっぱりL2動作がおかしいですかね…
クロック耐性が極端に悪い当りを引いたのかも^^;
オークションのが早いと思いますが、ダメ元でCPU修理依頼をしてみては?
補修用デッドストックが出てくるかもしれません。

後、OSがXPの様なので関係無いかも知れませんが
CPU MicroCode = CPUのバグ様な物のパッチはご存知でしょうか?
OS側で毎回起動中にパッチを当てるそうなのですが
MS-6163のBIOSレベルでは当然ながら河童Piiiまでが基本です。
当方のBIOSは以下のCPU対応BIOSに追加改造してあります。
2001/02/15 Rev. 0x1C (CPUID 0x6B1) FC-PGA Pentium III Processor(Tualatin)
2002/01/10 Rev. 0x01 (CPUID 0x6B4) FC-PGA Pentium III Processor(Tualatin)
私との違いと言ったらこれくらいかと・・・
これでダメならL2不良確定です。

某、掲示板のまとめサイト
http://www.geocities.jp/vz4000mk2/
Re: MSI MS-6163上で Celeron 1.4GHz @ FSB 100MHzが「条件つき」ではあるけど動いた by mieki256    2005/12/14 09:13
> CPU修理依頼

IntelのBOX品ってそのあたりどうなってたのか、
自分、全然把握してないことに気がつきました。調べてみないとなぁ…。

> CPU MicroCode

どうも日記を見るかぎり、そのあたり、
2002/07/31の時点で、BIOSレベルで反映させてはいるみたい、
ではありますです。

(CMOS領域に書いたのか、それともBIOSの.binを書き換えたのか
全然覚えてないんですが…。
WCPUID の view → System Info で確認する限りでは、
0x1C、06B1というのが表示されてるから、反映されてるのかなと。)

で、その2ヵ月後ぐらいに「memtest86が通らない」と嘆いているので、
やっぱり L2動作かなという気がしていますです。

とりあえず、教えていただいたまとめサイトを見て、
勉強してみます。情報thxなのであります。

#2 [anime] BJ、手塚監督出演の回

どうせなら手塚監督を犯人にしてほしかった。「どこをどう見ても手塚監督は犯人にならないよなぁ」「これってお遊びだもんなぁ」という感じだったので。なんだか惜しいなと。監督自ら作品中で犯罪者になったら、「おお! 無茶をする!」と拍手喝采だったのだけど。

#3 [cg_tools] 久々にblenderを触ったり

使い方をすっかり忘れてる。テクスチャってどうやって貼るんだっけ。 _JBDP - Japanese Blender Documentation Project を見ながら試行錯誤。

2004/12/05() [n年前の日記]

#1 [cg_tools] PCに取り込んだGIFアニメ素材の画像を眺めていて思った

数多すぎ。手作業で一つ一つ、背景を透明化させていられない。

ということで、GIMP2のblueboxとやらを使えないものかと思うのだけど、その前に、GAPでDOS窓がパカパカ開かない状態にしないと。解決方法、あるのかしら…。

#2 [cg_tools] 親父さんから1500x865ぐらいの画像を1024x768の画像に縮小する方法はないかと質問が

銀塩カメラで撮った写真をスキャナで読み取ったので、縦横比が特殊(?)な画像が大量にあるらしい。

IrfanView の一括変換の機能を伝えた。縦方向が768になるように、アスペクト比を保持したまま縮小・保存して、その後、トリミングを実行すればできるはず。

トリミングの位置が、画像によって違うらしい。…それでは、一括変換でトリミングは無理。Photoshop Elements で、画像解像度を変更した後、切り抜きツールでトリミングしていく方法を伝えた。目視による作業が必要になるなら、面倒であっても、1枚1枚、手作業で行うしかないだろう…。

JTrimでも一括処理ができたのだな :

後になってから気づいた。ただし、フォルダ中の全ての画像に対して行う模様。事前に、処理したい画像を、任意のフォルダにコピーしてから作業をする必要がありそう。

#3 [mozilla] Firefoxを使うと途端に巡回が難しくなるなぁ

ブックマーク中のフォルダを右クリックして、「タブで開く」をすると、フォルダ中のブックマークを新規タブで全部開いてくれるわけだけど。ある程度、全てのタブを読み込んでからじゃないと、現在アクティブになってるタブの操作ができない状態に陥る。

アクティブなタブの内容を読んでる間に、後ろでのんびり他のページを読んでいてほしいわけですよ。まるでカップラーメンが出来上がるのを待つかのごとく、他のページ(タブ)がそれなりに整うまでじーっと待ってるのが、シンドイ。かといって、今更IEコンポーネントのタブブラウザ等に戻りたくもないし。どうしたもんか。

2003/12/05(金) [n年前の日記]

#1 [pc][web] Sylpheed for Win32を入れてみた

Linux環境で使い始める前にWin環境で動作の具合を掴もうかと。しかし実行してみるといくつか気になる点が。

mbox形式をインポートしてもサマリビューに反映されない :

ファイル→mboxファイルをインポート、でOE6のメールデータをインポートしたが、 *1 インポートしたはずのメールがサマリビュー(メール一覧)上に全く表示されない。マイドキュメント以下の Mail\inbox\ を覗くとそれらしいファイルが存在するのでインポート自体は出来てるらしいのだが。原因が判らないまま起動・終了を何度か繰り返していたらいつのまにか表示された。怪しい。

1ファイルずつしかインポートできないのだろうか :

mboxファイルインポートは1ファイルずつしか行えないのだろうか。取り込むべきファイルは100以上あるんだけど。どう考えても人間が手作業で行う作業じゃない。なんとかならんのか。いや、なんとかしないと>自分が。…どうせテキストファイルなんだから cat *.txt > hoge で一つにして読み込めばいいのか。試しにやってみた。上手く行ったように見える。が、本当に取りこぼし無く読めてるのかな。怪しい。

サマリビューにおける未読メールの件名が正常表示されない :

メール受信後、あるいはインポート後、未読のままにしておくと件名が空白のまま。一度本文を表示させればその後は件名が正常表示されるのだけど。これでは件名からウイルス入りメール云々を判断する事すら難しい。もっともOEと違って、プレビューによる添付ファイル自動実行の可能性は少ないだろうから、中身なんか気にせずガンガンプレビュー(?)すればいいのかもしれない。とはいえ今までが今までだったので、まずは件名を確認してあからさまに怪しいのは削除、大丈夫そうなら本文を表示という流れで閲覧できないのはどうも不安。

マイドキュメント\ .sylpheed\sylpheedrc 中の、message_font、normal_font、bold_font、small_fontのあたりを弄ったら、件名やその他が日本語で表示された。つまりはフォントの問題らしい。未読メールの件名はbold_font、小さい文字はsmall_fontで表示するが、英字フォントが指定されてるので日本語が出ないということだろう。しかし、そこまで判明しながら残念な事に、boldとして利用できそうな日本語フォントがリストに出てこない。 *2 また、仮でRegular体を設定しても表示時の上下位置、あるいは上下幅がおかしいらしく文字の下部が消えてしまう。こんなところでもboldで悩まされるとは。トホホ。

色々探してるうちに、BDFをTTFに変換したというフォントを見つけた。Boldも揃ってるらしい。ありがたや。 _こちら から'BDF M+'と'BDF東雲'をDL・インストールして試行錯誤。結局、'BDF M+'のみで以下のような設定に。

.sylpheed\gtkrc
style "Sylpheed-Widget-font" {
       fontset = "-unknown-BDF M+-normal-r-normal-*-13-*-*-*-m-*-jisx0208.1983-0"
}
class "GtkWidget" style "Sylpheed-Widget-font"

.sylpheed\sylpheedrc の message_font、normal_font、bold_font、small_font
message_font=-unknown-MS ゴシック-normal-r-normal-*-13-*-*-*-m-*-jisx0208.1983-0
normal_font=-unknown-BDF M+-normal-r-normal-*-13-*-*-*-m-*-jisx0208.1983-0,-*-*-medium-r-normal--12-*-*-*-*-*-*-*,*
bold_font=-unknown-BDF M+-bold-r-normal-*-13-*-*-*-m-*-jisx0208.1983-0,-*-*-bold-r-normal--12-*-*-*-*-*-*-*,*
small_font=-unknown-BDF M+-normal-r-normal-*-11-*-*-*-m-*-jisx0208.1983-0,-*-*-medium-r-normal--10-*-*-*-*-*-*-*,*
他のアプリのメニューフォントがMS UIゴシックなのに、このアプリだけM+だったりするのでなんだかしっくりこないが、件名その他が判読できないよりはるかにマシ。少なくともメール本文はMSゴシックを設定してるのでメールの読み易さはOEとほぼ同じだし。これでもいいかな。

gtkrcとsylpheedrcを修正する際に若干の注意点が。gtkrcはUTF-8、sylpheedrcはS-JISで記述しないといけないらしい。幸い今回は、gtkrc内に漢字を含む記述が無いので特に意識しないで済んだ。

直接関係はないけどGnuPG :

起動時に「GnuPGのバージョンが古いか、正しくインストールされてない」とエラーダイアログが出てくる。無視する設定も可能だし、暗号化云々を使う予定も特に無いのだが、エラーが出てるのを無視するのもなんだか嫌なのでGnuPGをインストール。…GnuPGのインストールのほうがよほど時間がかかった。レジストリを弄っても、c:\GnuPG\ に入れない限り gpg.exe 実行時にエラーが出るし。プログラムの中で直接デフォルトインストールフォルダ名でも記述してるのだろうか。それとも何か設定を間違えてるか>自分。何にせよ、Cドライブのルートにまたしてもフォルダが一つ増えてしまった。これもこれでかなり気持ち悪い。

とりあえず :

こんなに面倒臭いんじゃ、OEからSylpheedへの乗換えはフツーありえないな…。

*1: もちろん、.dbx→mbox変換してある。
*2: MSゴシック等、各日本語フォントは、Boldのデータを持ってないし、太目のフォントはビットマップでデータを持ってないので汚い表示になる。

#2 [pc][linux] BDF、TTC、TTF

MSGOTHIC.TTCからビットマップを抜き出して、boldに加工してから別フォントを作成して利用できないか、などと思って調べてたら参考になりそうなページを見つけたのでメモ。
_Windowsで BDFフォントを使う
_Windowsコンソールで BDFフォントを使う
_Linuxで TrueTypeフォントを使う

2002/12/05(木) [n年前の日記]

#1 ファイル入出力

JAVA勉強中。ファイル入出力追加。 _

2001/12/05(水) [n年前の日記]

#1 またキャンセル

歯医者に予約入れてたんですがまたキャンセル。
腹ピーピーで。
治療中トイレに駆け込むわけにもいかんし…

「よくキャンセルするヤツだな。ふざけんな」と思ってるだろうな… >歯医者

2000/12/05(火) [n年前の日記]

#1 復旧作業続行

メインマシン復旧作業続行中。

アップグレード前の構成で、HDDのみ交換した状態にして、OSインストール作業。
これで成功したら、UltraATA/33と/100の混在はダメってことかな。
一応、/100のHDDは、メーカのユーティリティで/33設定済みなのだけど。
いっそ/100拡張ボードを増設してしまおうか。パフォーマンスも上がるだろうし。
…ってPCIスロット余裕無いや。無理か。

そういや正式名称がよくわかんない。
UltraATA/xxxが正解ですか?

/66用スマートケーブルを購入してきて装着。
/33でも使えるし、ノイズに強くなったそうだし、買っといて損は無いはず…
と思いつつも、値段の高さに涙 (T_T)

念の為、ボード全部引っこ抜き → 一枚ずつ差しながら認識 → ドライバインストール。
その度に重いPCが、パソコンデスクと床を行ったり来たり。
疲れた…腕力の無さを実感。


日曜に、治療中の歯を塞いでたブツがとれてしまってたのです。
歯医者(火曜から営業)に電話したら、
「根の治療は終わってるから、次の診察日までほっといていい」
…ホントに大丈夫かなぁ?


カローラ須賀川店で、シビックを点検してもらう。
購入後、1ヶ月無料点検サービスだそうで。

ハンドルの「シャコシャコ」音は、中で何かが切れてたらしく。
繋いだから、そんなに音はしないはず、とのこと。
(「何か」はなんだかわからず。謎の用語だった…)

加速時の「ピー」音は再現ならず。しばらく様子見。
もっとも親父さん曰く、
「エンジンの泣き。どの車でも鳴る」
…実は気にしなくてOK?

雨の中を走行。
白線が見えない (TДT;)ヒィ〜

1999/12/05() [n年前の日記]

#1 (NoTitle)メイン掲示板でNNだと...

メイン掲示板でNNだと表示が崩れるという問題が発覚したので、掲示板のCGIスクリプトを修正していましたです。スクリプトや吐き出すHTMLは特に間違ってないとは思うのですが、NNの場合、画像ファイルを囲むような形でスタイルシートを適用させるとテキストの回り込みが変になるという問題があって。これバグですよね。それともこれが本来の規格通りの動作なのかな。HTMLの基本的な取り決めからすると正しい動作とは思えないのですけど、どうなんでしょ。
とりあえずHTTP_USER_AGENTを元にIE4,5以外のブラウザではスタイルシートを含まないHTMLを出力させるように修正してみました。ついでに見た目は変わらんですが内部的にチョコチョコ手を加えたり。あちこちサブルーチン化して短くしたり、2000年表示させたり、みたいな。大した修正作業じゃないはずなのですが、やたら時間がかかってなんだかなーです。実は色々加えたい仕様もあるのですが。
もっともその前にアップローダなんとかしなくちゃですね。今現在実験といいながらも設置してあるスクリプトは問題なく動いていたりするのですが、大きい画像を貼ったときテキストのレイアウトが崩れてしまうのでそのへん修正しないと。単にテーブルの取り扱いを変更するだけなのですけど、めんどくさがってまだ手をつけてませんです (;^_^A

元禄繚乱、やっぱり面白いです。忠臣蔵の後日談まできっちり描いてるのがいいです。これを見てしまうと、スペシャルや映画の忠臣蔵は、討ち取った、バンザイバンザイ、ハイ終わり、という感じで薄っぺらに見えてしまいます。もっともTVでなきゃ時間的に書けないとは思いますが。

以上、25 日分です。

過去ログ表示

Prev - 2024/11 - 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