mieki256's diary



2024/05/02(木) [n年前の日記]

#1 [prog] OpenGLで道路を描画するPythonスクリプトをC言語で書き直し。その4

_先日、 OpenGLを使って、アイソメトリック的な見た目で道路を描画するPythonスクリプトを書いたけれど、これをC/C++で書き直してみた。せっかくだから、Windows用のスクリーンセーバにして、githubにアップロードしておいた。

_mieki256/ssisoroadgl: Screensaver for Windows that draws roads with isometrics implemented in C++ and OpenGL.
動作画面をキャプチャしてYouTubeにアップロードしてみた。雰囲気は伝わるかなと…。




ここ最近、こういうプログラムを作れないものかなと夢想していたけれど、一応作れたので、とりあえずこれで一段落。

課題 :

各コースは現実世界の道路データを使って描画しているけれど、ランドマーク(?)が何も無いので、それらしさが何も無いのが寂しいなと…。

ただ、そういったランドマークを描画しようとすると、データの持ち方をどうしたらいいのかで、ちょっと悩んでしまう。道路のセグメントデータに紐付けて持ってしまう手もあるだろうけれど、その場合、突然ランドマークのポリゴンモデルが出現したり、突然消滅したりしそうで…。

道路が一本道なのも気になる。せめて見た目だけでも、交差点や丁字路が欲しい。川や橋もあったほうがそれらしくなるだろうし…。しかしソレも、道路のセグメントデータに紐付けて持つやり方だと、画面内に突然出現、突然消滅しそうだし。

やはり、エリアを分割した状態で描画用モデルデータを持っておいて、今画面に表示すべきはどのエリアなのかを判定して描画、という処理にしたほうがいいのかもしれない。車の移動については、描画用とは別に移動用のデータを持っておいて…。ただ、そのためには、blender等のモデリングソフトに、線情報だかパス情報を読み込んで、その情報を元にしてアレコレをモデリングできないと困るだろうし…。

まあ、そのあたり、今後の課題。

#2 [tv] 「プロフェッショナル 仕事の流儀 スペシャル 世界を、子どもの目で見てみたら 漫画家 青山剛昌」を視聴

NHK総合で放送されてたので視聴。「名探偵コナン」の原作者、青山剛昌先生の仕事振りを紹介する回。

大変興味深い内容だった。トリックのネタについては先生自身が部分的に実践してみて妥当かどうか判断していたとは…。いや、カメラの前だから演出としてわざとやってたのかもしれないけれど。そういえば、某料理漫画を描いてる漫画家さんも、実際に自分で料理を作って検証してから漫画に描いてる、という話を聞いた記憶もあるなと。もっとも、その理屈で言ったら、青山先生もその手の事件を起こしてから漫画を描かなければいけないことに…。さすがにそれはちょっと…。トリックの検証だけで済んでいて良かった。実に良かった。なんちゃって。

編集者さんがひたすらネタを集めてきて、作家さんがその中から使えそうなものを選んで、それを元にしてアイデアを上乗せして、というやり方も興味深かった。考えてみたら赤塚不二夫先生だって「天才バカボン」を連載してた頃はブレーン集団を作ってネタ出ししていたらしいし。長期連載となるとブレーン集団みたいなものが必要になるんだろうなと…。

最長で6時間ほど、ずっと寝そべって頭の中でネームを考えるというのが…。いやはや、大変そうだなと…。そういえば萩尾望都先生もソファに寝転がってずっとネームを考えていたら、父親が「サボってるなら庭仕事を手伝え!」と言い出して、先生ブチギレ、という話をどこかで聞いたような。漫画家さんが寝転がっていたら脳内でそういう作業をしている可能性が高いのだな。

ミリペンで主線を入れていたとは…。ペンタッチも重ね描き(?)でつけてたのね…。でも、つけペン用のインク瓶もずらりと並んでいたような…。昔はGペン等で描いてたけど途中から変わったのだろうか。

CGソフトで線の修正をしていたけれど、二値化画像に対してせっせと修正していたあたりも気になった。印刷物用の原稿だから二値化することになるのだろうか。そういえば CLIP STUDIO PAINT も印刷用は二値化画像だったっけ。更に、アニメ制作時の仕上げ段階で線画が二値化されていることを思い出したりもして。せっかくのグレースケール情報を削除してしまってもったいない気もするけれど、実作業の効率改善を考えたら、意外と悪くないやり方、なのかもしれないなと…。それにしても、何のソフトを使っていたのだろう…。ツールバーのデザインは自分が目にしたことのないものだったので分からない…。もしかして Comic Studio?

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

#1 [pc] HDMIセレクターを導入してみたけど正常動作せず

弟から貰ったHDMIセレクター、GREENHOUSE GH-HSWB3-BK を箱から出して動作確認してみた。HDMI入力が3つ、HDMI出力が1つ。4K2K 2160p映像対応、と謳っている製品。リモコン付き。

_セレクタ, セレクタ(切替機) | GH-HSWB3-BK | GREEN HOUSE グリーンハウス

液晶ディスプレイ MITSUBISHI MDT243WG-SB と、Intel Core i5-2500機(Ubuntu Linux 18.04 LTS、画面表示は内蔵GPU使用) の間に入れてみたけど、Ubuntu Linux が起動する際のVGA前後の解像度なら問題無く映ったものの、1920x1200のデスクトップ画面が出てきたあたりで、盛大なノイズだらけの画面になってしまった…。

ケーブルコネクタの接触不良を疑って、入力と出力のケーブルを何度か抜き差ししてみたり、電流が足りてない可能性を疑って、付属のUSB接続ケーブルで給電してみたけれど、改善はしなかった。

HDMIセレクター自体は、4K対応を謳っているぐらいだから、スペック的には問題無さそうな気もする。手持ちのHDMIケーブルが低品質で、伝送に失敗してるのだろうか…。それとも、1920x1200という解像度が異質なのだろうか。

レビューをググってみたところ、数ヶ月使っていたらノイズが出始めたという事例がチラホラ。弟が使っていた中古品だし、ノイズが出てしまう状態に劣化している可能性もありそう…。

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

#1 [python][gimp] Pythonのリスト内包表記を試してみた

昨日、Pythonスクリプトのベンチマークを取りながら、ARGBのデータをRGBAに変換する処理を速くできないか試していたのだけど。

_Pythonのstructを使った時の処理時間を調べてた

高速化に関するページを眺めていたら、リスト内包表記とやらにするだけでも高速化できるという話を見かけたので試してみた。

環境は、Windows10 x64 21H2 + Python 2.7.18 32bit。CPU は AMD Ryzen 7 1700 (3GHz, 8コア16スレッド)。

ベンチマークをとってみた。スクリプトは以下。

_03_argb_rgba_conv.py
from benchmarker import Benchmarker
import struct
import sys

LOOP = 5


def create_src_data():
    print("start.")
    rgba = []
    w, h = 2048, 2048
    r, g, b, a = 0, 32, 64, 128
    for y in range(h):
        for x in range(w):
            rgba.append(struct.pack('4B', b, g, r, a))
            r += 1
            g += 1
            b += 1
            a += 1
            if r > 255:
                r = 0
            if g > 255:
                g = 0
            if b > 255:
                b = 0
            if a > 255:
                a = 0
    src = ''.join(rgba)
    print("create source data.")
    return src


def get_rgba_str_slow(src):
    buf = ""
    size = len(src)
    for i in range(size / 4):
        i0 = i * 4
        i1 = i0 + 4
        bgra = struct.unpack('=L', src[i0: i1])[0]
        a = (bgra >> 24) & 0x0ff
        r = (bgra >> 16) & 0x0ff
        g = (bgra >> 8) & 0x0ff
        b = bgra & 0x0ff
        rgba = struct.pack('4B', r, g, b, a)
        buf += rgba
    return buf


def get_rgba_str(src):
    unpack = struct.Struct('=L').unpack_from
    pack = struct.Struct('>L').pack
    lmax = len(src) / 4
    rgba = [None] * lmax
    for i in range(lmax):
        d = unpack(src, i * 4)[0]
        rgba[i] = pack(((d & 0x00ffffff) << 8) | ((d >> 24) & 0x0ff))
    return ''.join(rgba)


def get_rgba_str_b(src):
    unpack = struct.Struct('=L').unpack_from
    pack = struct.Struct('>L').pack
    lmax = len(src) / 4
    rgba = []
    for i in range(lmax):
        d = unpack(src, i * 4)[0]
        rgba.append(pack(((d & 0x00ffffff) << 8) | ((d >> 24) & 0x0ff)))
    return ''.join(rgba)


def get_rgba_str_c(src):
    lmax = len(src) / 4
    argb = list(struct.unpack("=%dL" % lmax, src))
    spack = struct.Struct('>L').pack
    rgba = [None] * lmax
    for i, d in enumerate(argb):
        rgba[i] = spack(((d & 0x0ffffff) << 8) | ((d >> 24) & 0x0ff))
    return ''.join(rgba)


def get_rgba_str_d(src):
    lmax = len(src) / 4
    argb = list(struct.unpack("=%dL" % lmax, src))
    rgba = [None] * lmax
    for i, d in enumerate(argb):
        rgba[i] = ((d & 0x0ffffff) << 8) | ((d >> 24) & 0x0ff)
    return struct.pack(">%dL" % lmax, *rgba)


def get_rgba_str_e(src):
    lmax = len(src) / 4
    argb = list(struct.unpack("=%dL" % lmax, src))
    rgba = []
    for d in argb:
        rgba.append(((d & 0x0ffffff) << 8) | ((d >> 24) & 0x0ff))
    return struct.pack(">%dL" % lmax, *rgba)


def get_rgba_str_f(src):
    lmax = len(src) / 4
    argb = list(struct.unpack("=%dL" % lmax, src))
    rgba = [(((d & 0x0ffffff) << 8) | ((d >> 24) & 0x0ff)) for d in argb]
    return struct.pack(">%dL" % lmax, *rgba)


def get_rgba_str_g(src):
    lmax = len(src) / 4
    argb = list(struct.unpack("=%dL" % lmax, src))
    rgba = [(((d & 0x0ffffff) << 8) + ((d >> 24) & 0x0ff)) for d in argb]
    return struct.pack(">%dL" % lmax, *rgba)


def check_result(src):
    dst = []
    dst.append(get_rgba_str(src))
    dst.append(get_rgba_str_slow(src))
    dst.append(get_rgba_str_b(src))
    dst.append(get_rgba_str_c(src))
    dst.append(get_rgba_str_d(src))
    dst.append(get_rgba_str_e(src))
    dst.append(get_rgba_str_f(src))
    dst.append(get_rgba_str_g(src))
    for i in range(len(dst)):
        if i == 0:
            continue
        if dst[0] == dst[i]:
            print("Success [%d]" % i)
        else:
            print("Failure [%d]" % i)


src = create_src_data()

# check_result(src)
# sys.exit()

with Benchmarker(LOOP, width=20) as bench:

    @bench("argb split")
    def check_use_split(bm):
        get_rgba_str_slow(src)

    @bench("rgb shift A")
    def check_use_rgb_shift(bm):
        get_rgba_str(src)

    @bench("rgb shift B")
    def check_use_rgb_shift_b(bm):
        get_rgba_str_b(src)

    @bench("rgb shift C")
    def check_use_rgb_shift_c(bm):
        get_rgba_str_c(src)

    @bench("rgb shift D")
    def check_use_rgb_shift_d(bm):
        get_rgba_str_d(src)

    @bench("rgb shift E")
    def check_use_rgb_shift_e(bm):
        get_rgba_str_e(src)

    @bench("rgb shift F")
    def check_use_rgb_shift_f(bm):
        get_rgba_str_f(src)

    @bench("rgb shift G")
    def check_use_rgb_shift_g(bm):
        get_rgba_str_g(src)


py -2 03_argb_rgba_conv.py で実行。結果は以下。

D:\home\prg\python\_test_sample\benchmarker> py -2 03_argb_rgba_conv.py
start.
create source data.
## benchmarker:         release 4.0.1 (for python)
## python version:      2.7.18
## python compiler:     MSC v.1500 32 bit (Intel)
## python platform:     Windows-10-10.0.19041
## python executable:   C:\Python\Python27\python.exe
## cpu model:           AMD64 Family 23 Model 1 Stepping 1, AuthenticAMD
## parameters:          loop=5, cycle=1, extra=0

##                        real    (total    = user    + sys)
argb split             16.1320   16.1094   11.1250    4.9844
rgb shift A             4.7300    4.7344    4.7031    0.0312
rgb shift B             4.8720    4.8750    4.7656    0.1094
rgb shift C             2.5780    2.5781    2.5000    0.0781
rgb shift D             2.0750    2.0625    2.0156    0.0469
rgb shift E             2.1690    2.1719    2.0000    0.1719
rgb shift F             1.7300    1.7344    1.5781    0.1562
rgb shift G             1.6780    1.6875    1.5781    0.1094

## Ranking                real
rgb shift G             1.6780  (100.0) ********************
rgb shift F             1.7300  ( 97.0) *******************
rgb shift D             2.0750  ( 80.9) ****************
rgb shift E             2.1690  ( 77.4) ***************
rgb shift C             2.5780  ( 65.1) *************
rgb shift A             4.7300  ( 35.5) *******
rgb shift B             4.8720  ( 34.4) *******
argb split             16.1320  ( 10.4) **

## Matrix                 real    [01]    [02]    [03]    [04]    [05]    [06]    [07]    [08]
[01] rgb shift G        1.6780   100.0   103.1   123.7   129.3   153.6   281.9   290.3   961.4
[02] rgb shift F        1.7300    97.0   100.0   119.9   125.4   149.0   273.4   281.6   932.5
[03] rgb shift D        2.0750    80.9    83.4   100.0   104.5   124.2   228.0   234.8   777.4
[04] rgb shift E        2.1690    77.4    79.8    95.7   100.0   118.9   218.1   224.6   743.8
[05] rgb shift C        2.5780    65.1    67.1    80.5    84.1   100.0   183.5   189.0   625.8
[06] rgb shift A        4.7300    35.5    36.6    43.9    45.9    54.5   100.0   103.0   341.1
[07] rgb shift B        4.8720    34.4    35.5    42.6    44.5    52.9    97.1   100.0   331.1
[08] argb split        16.1320    10.4    10.7    12.9    13.4    16.0    29.3    30.2   100.0


「rgb shift F」「rgb shift G」が、リスト内包表記を使った版。たしかに、2.0750秒が、1.7300秒になった。リスト内包表記にするだけでも高速化はできるらしい。

また、論理和(OR)演算子(|)を使っていたところを、+演算子に変えてみたところ、それだけでもほんのちょっとだけ処理が速くなった。ビット演算は微妙に遅いということだろうか…?

つまるところ、以下のように変更したことで、ある程度高速化できた、ということになるのかなと。

def get_rgba_str(src):
    unpack = struct.Struct('=L').unpack_from
    pack = struct.Struct('>L').pack
    lmax = len(src) / 4
    rgba = [None] * lmax
    for i in range(lmax):
        d = unpack(src, i * 4)[0]
        rgba[i] = pack(((d & 0x00ffffff) << 8) | ((d >> 24) & 0x0ff))
    return ''.join(rgba)
def get_rgba_str_g(src):
    lmax = len(src) / 4
    argb = list(struct.unpack("=%dL" % lmax, src))
    rgba = [(((d & 0x0ffffff) << 8) + ((d >> 24) & 0x0ff)) for d in argb]
    return struct.pack(">%dL" % lmax, *rgba)


ただ、これは GIMP の Python-Fu に限定した話だけど、少々問題もあって…。リスト内包表記にしたことで、GIMPのプログレスバーを更新して処理の進行具合をユーザに伝えることができなくなってしまった。今まではforループで処理してたから、forループ内でプログレスバーを更新する処理を呼ぶことができていたのだけど…。でもまあ、5秒近くかかっていた処理が1.7秒になるのだから、プログレスバーを更新しなくても許されるかなと…。

さておき。もっと高速化できないものだろうか…。

スクリプトを動かしている環境がビッグエンディアンなのかリトルエンディアンなのか分からないので、struct.unpack("=L", xxx) を使って処理をしているけれど、どちらのエンディアンなのか事前に判別すれば、struct を使わなくても済むのではないか…? データの並びが BGRABGRA...、あるいは ARGBARGB... になっているものと決め打ちできれば、もっとシンプルに書けて高速化できないか。

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

#1 [basic] wxBasicを試用

GUIツールキット wxWidgets を、BASICから利用できる、wxBasic というBASIC環境があるらしい。

_wxBasic | Basic Programming Language for wxWidgets
_wxBasic - Wikipedia

Windows10 x64 20H2 上でインストールして少し試用。

ただ、wxBasic の公式サイトは、一時期改竄されていたことがあったようで…。

_検索で「このサイトは第三者によってハッキングされている可能性があります」と表示される: パソコン鳥のブログ

最終版は2016年版のバイナリのはずだけど、今現在は 2014年版のバイナリしか公開されてない。もしかすると、2016年版バイナリも改竄されていた可能性があるのだろうか…。何にせよ、導入は自己責任で…。

SetupWxBasic-x64-2.8.12.37.exe をDLして実行するとインストールされる。スタートメニューに wxBasic という項目が追加されて、Editor等が追加される。

Samples もいくつか入っている。実行してみたところ、GUIウインドウが開いた。これならたしかにGUIアプリを作れそう。

ファイルの拡張子は .wxb らしい。

Ubuntu上でインストールを試した。 :

Ubuntu Linux 20.04 LTS上でもインストールを試みたけど、失敗。

wxbasic-2.8.12.37.deb をDLして apt でインストールしようとしたけれど…。
sudo apt install wxbasic-2.8.12.37.deb

パッケージが足りてない、と出てくる。
以下のパッケージには満たせない依存関係があります:
wxbasic : 依存: libgnutls26 (>= 2.7.14-0) しかし、インストールすることができません
           依存: libwxbase2.8-0 (>= 2.8.10.1) しかし、インストールすることができません
           依存: libwxgtk2.8-0 (>= 2.8.10.1) しかし、インストールすることができません

Ubuntu Linux 20.04 LTS の場合、以下のパッケージが用意されているけれど。
  • libgnutls30
  • libwxbase3.0-0v5
  • libwxgtk3.0-gtk3-0v5
wxbasic-2.8.12.37.deb が要求するパッケージは以下。Ubuntu 20.04 LTS のパッケージの中には無い。
  • libgnutls26
  • libwxbase2.8-0
  • libwxgtk2.8-0
.deb が作られた時期のパッケージ構成と、現行版OSのパッケージ構成が違ってしまっているので、.deb を使ったインストールはできない模様。

.deb ではなく、wxbasic-2.8.12.37.tar.gz を調べてみる。tar zxvf wxbasic-2.8.12.37.tar.gz と打って解凍すると、中には実行ファイルや .so がいくつか入っていた。ただ、インストールするためのシェルスクリプト等は入ってないようで、自力で所定の場所にコピーしないといけない。自分は Linux に詳しくないので、ここで手詰まり。

そもそも、Linux + BASIC で GUIアプリを作成したいなら、Gambas という環境もあるらしいし…。

_Gambas - Wikipedia

wxWidgets を使いたいなら、例えば Python + wxPython という選択肢もあるしで…。

_Welcome to wxPython! | wxPython

そんな感じで、他にも選択肢があるので、無理をして wxBasic を使わなくても、という気もする。Linux上ですんなりインストールできるならともかく、そういうわけでもないようだし…。

#2 [basic][ubuntu][linux] BASICでGUIアプリを作れるGambas3を試用

Linux上で、BASIC言語を使ってGUIアプリが作れる、Gambas3 という開発環境があるらしい。

_Gambas - Gambas Almost Means Basic
_Gambas - Wikipedia

公式サイトには「無料で使えるよ」「Visual Basic のような感覚で使えるよ」と書いてあるように見える。

気になったので試用。環境は、VMware上で動いている Ubuntu Linux 20.04 LTS x64。

apt でインストールできる。
sudo apt install gambas3 gambas3-gb-form-print

Ubuntu Linux 20.04 LTS の gambas3パッケージは、依存関係の指定でバグがあるようで、gambas3パッケージをインストールしただけでは動いてくれない。以下のエラーメッセージが出てしまう。
gbr3: unable to load component: gb.form.print

以下のやり取りによると、gambas3-gb-form-printパッケージもインストールすることで動く状態になる模様。

_Bug #1876450 “Dependency not installed when installing gambas3” : Bugs : gambas3 package : Ubuntu
sudo apt install gambas3-gb-form-print

Ubuntuデスクトップのスタートメニュー → 開発 → Gambas3 でIDEを実行できる。もしくは端末上で gambas3 で実行。

以下のページでチュートリアルが紹介されてた。

_Gambas 3 Tutorial - Create a new project - Tutorial and Full Version Software

ざっくりとメモ。
自分、Visual Basic は触ったことがないけれど、たぶんソレと似た感覚なのだろうなと…。

実行ファイルを生成すると、.gambas という拡張子のファイルが作成される。実行権限がついているので、./hoge.gambas で実行できる。おそらくだけど、Gambas3 を使ったプログラムを実行するために必要なランタイムがインストール済みの環境なら、.gambas を実行できたりするのかなと…。たぶん。わからんけど。

以下の動画を眺めれば、作業の流れが分かりそう。

_ラズパイ4にGambas3でプログラミング - YouTube
_Gambas 3 Tutorial 1 : To Make Simple Calculator - YouTube

ちなみに、GTK3アプリを作成する場合は、パッケージの追加が必要らしい。

_serverあれこれ: Gambas3のGTK3アプリケーションのボタンの文字列を設定する
sudo apt install gambas3-gb-gtk3

また、以下の記事群で、各部品の使い方が説明されてる。ありがたや。

_serverあれこれ: Gambas

appmenu-gtk-module 云々のエラー。 :

Gambas3 とはちょっとずれるけど。Ubuntu Linux 20.04 LTS上で、何かしら実行するたびに以下のエラーメッセージが出てくる。気になる。
Failed to load module "appmenu-gtk-module"

解決策をググってみた。

_How to fix this error: "Failed to load module: appmenu-gtk-module" ? : pop_os
_appmenu - Problem with kdenlive - Ask Ubuntu

以下のパッケージをインストールしたら、エラーがでなくなった。
sudo apt install appmenu-gtk3-module
sudo apt install appmenu-gtk2-module appmenu-gtk3-module

#3 [proce55ing][processing] ProcessingをUbuntu上でインストール

ここ数日、色々なBASICを試用して、線だの円だのを描画しながら動作確認をしてたけど。その手のグラフィックを描きながらプログラミングを勉強、と言えば、やっぱり Processing (Proce55ing) だよなと。

_Processing.org

そういえば、Windows上で Processing を動かしたことはあるけれど、Linux上で動かしたことはなかったなと。動かせるのかな…。ということで、Processing を Ubuntu Linux 20.04 LTS上でインストールしてみた。

_Download \ Processing.org
_serverあれこれ: Ubuntu Desktop 20.04にProcessingをインストールする
_Ubuntu で Processing - Qiita
_Lubuntu 18.10でprocessingのフォント設定 - Qiita

上記ページの手順に従ってインストールすればOKだった。ありがたや。

一応、念のため、ここでも手順をメモ。まずは、動作に必要になるらしい openjdk-11-jdk をインストール。
sudo apt install openjdk-11-jdk

Ubuntu Linux では、Processing のパッケージは用意されてないので、apt でインストールすることはできない。Processing の公式サイトから、Linux 64bit版、processing-3.5.4-linux64.tgz を入手して解凍。/opt 以下にインストールする。install.sh というシェルスクリプトを実行すれば、システムにインストールしてくれるっぽい。
cd /opt
sudo wget https://download.processing.org/processing-3.5.4-linux64.tgz
sudo tar xvfz processing-3.5.4-linux64.tgz
sudo /opt/processing-3.5.4/install.sh

Ubuntuのスタートメニュー → 開発 → Processing IDE をクリックすれば、Processing のエディタが開く。

一旦終了。

フォント種類を変更したいが、GUIの設定ウインドウ上ではグレーアウトしていて変更できない。設定ファイルを直接開いて修正する。今回は HackGen フォントを使うように指定した。
vi ~/.processing/preferences.txt
editor.font.family=Source Code Pro
↓
editor.font.family=HackGen

動作確認。gdemo.pde として保存。~/sketchbook/ に保存した。
int w = 512;
int h = 512;

size(512, 512);
background(0);
smooth(4);

for (int i=0; i<w; i = i + 10) {
  int v = 255 * i / w;
  int v1 = 255 - v;
  stroke(0, v, v1);
  line(0, i, i, h);
  stroke(0, v1, v);
  line(i, h, w, h - i);
  stroke(v, v1, 0);
  line(w, h - i, w - i, 0);
  stroke(v, 0, v1);
  line(w - i, 0, 0, i);
}

proce55ing_on_ubuntu_ss01.png

Ubuntu Linux上でも Processing が動いてくれた。

#4 [ubuntu] 画像ビューア Mirage を Ubuntu 20.04 にインストール

Linux上で動作する、Mirage という画像ビューアが存在するのだけど、Ubuntu Linux 20.04 LTS ではパッケージが無くなってしまったらしい…。

しかし、ググってみたら一応インストールできるっぽいので、手元の環境でも試してみた。環境は、Windows10 x64 20H2 + VMware Workstation Player 16.1.0 build-17198959 + Ubuntu Linux 20.04 LTS x64。

_software installation - How do I install the Mirage Image viewer on Ubuntu 20.04? - Ask Ubuntu

英語圏の掲示板で手順が紹介されてた。一応メモ。
mkdir -p ~/Downloads/mirage
cd ~/Downloads/mirage
wget http://old-releases.ubuntu.com/ubuntu/pool/main/e/exiv2/libexiv2-14_0.25-4ubuntu2.2_amd64.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/p/pyexiv2/python-pyexiv2_0.3.2-9_amd64.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/p/pygtk/python-gtk2_2.24.0-6_amd64.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/m/mirage/mirage_0.9.5.2-1_amd64.deb
sudo apt-get install ./*.deb

そのまま試してみたところ、たしかに Ubuntu 20.04 LTS 上でもインストールして起動することができた。

mirage_on_ubuntu2004_ss01.png

ただ、「Ubuntu 19.10 のリポジトリから .deb をDLしてるよ」と書いてあるので、そのうち使えなくなりそうな気がする。

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

#1 [nitijyou] 暑い

気温が上がるとは聞いていたけど、気づいたら部屋の温度が32度。暑い…。いきなり上がったなあ…。

#2 [pc] SunVoxを試用中

せっかく触ってみたことだし、操作してる様子を動画でキャプチャしてみたり。



ざっくり眺めれば、簡単に使えそうなソフトと思えてくる…はず…。

動画では、以下の操作をしていたり。

ショートカットキーについて。 :

一応、デフォルト状態のショートカットキーについてメモ。
  • F9 : 現在位置から再生
  • F10 : 曲の最初から再生
  • F11 : 現在パターンを再生
  • F12 : 再生停止

tracker(シーケンサ部分)上でのショートカットキーは以下。
  • Spaceキー : 編集モードに切り替え
  • Home : パターンの最初に移動。
  • Tab : 次のチャンネル(?)に移動。
  • Shift + Tab : 前のチャンネルに移動。

音色について。 :

ノードエディタっぽいウインドの中で右クリックしてNewを選べば基本modular(音源)が追加できるけど。New ではなく、Load を選んで、同梱の instruments フォルダ以下からファイルを選べば、凝ったパラメータ指定をしている音源を追加できると知った。色々な音色が選べるので、音を確認してるだけでも結構楽しめる(?)なと…。

ちなみに、音色(?)ファイルの選択時、右下の preview を有効にしておけば、ファイル名を左クリックして選択しただけで、即座にどんな音が鳴らせるのか確認できる状態になる模様。

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

#1 [zatta] 親父さんがREGZA用のHDDを購入

階下の REGZA で録画した番組が、結構頻繁に一部壊れていると、親父さんから報告が。天気が悪いわけでもないのにBS放送の映像が壊れるので、おそらくHDDが怪しいのではないか、新しいHDDを買ったほうがいいのかもしれない、と話していたら、親父さんが早速ヨドバシに注文して、今日の午前中届いた、とメモ。

購入したHDDは以下。

_BUFFALO HD-LDS3.0U3-BA (USB3.0接続、3TB)

ルートフォルダに、見守り合図 for AV なるフォルダが入っていて、S.M.A.R.T.情報を見ながら、結果を動作LEDに反映してくれるらしい。オレンジ色に光ったら壊れかけている表示、なのだとか。ただ、REGZA に繋いだら、どうせ REGZA がフォーマットしてしまうだろうから、件のソフトは消滅してしまいそうな気がする。

2019/05/03追記。 :

初期不良が怖いので、一応チェックをした。親父さん用PCにUSB3.0で接続して、 _EaseUS Partition Master Free 版 を使ってサーフェイステストを行った。20:00頃から始めて、03:00頃に終わった。

自分は結果画面を見ていないけれど、親父さんが確認したところ、グラフは全部青だか緑だかで、不良セクタは0だった、とのこと。

2019/06/24追記。 :

コメント欄で、「ソフト名にリンクを張ってほしい」と連絡があったのでリンクを追加しておきました。

この記事へのツッコミ

Re: 親父さんがREGZA用のHDDを購入 by イーザス    2019/05/09 11:04
mieki256様

お世話になっております。
イーザスソフトウェアでございます。

突然のコメント、失礼致しました。

御ブログ上で弊社の製品をご紹介頂きまして感謝しています。

この記事を拝読した後、ちょっとお願いしたいことがございますが、宜しいでしょうか?

より詳しい内容をお読みになりたい読者様のために、記事内の製品名EaseUS Partition Master Freeへその公式ページをアンカーテキストにてご追加頂けませんでしょうか?

https://jp.easeus.com/partition-manager-software/free.html

お忙しい中お手数をお掛けまして大変恐縮でございますが、ご検討頂けば幸いに存じます。

どうぞよろしくお願い致します。

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

#1 [love2d] シューティングゲームサンプルもどきをlove2d 11.1に対応させた

love2d で動くシューティングゲームのサンプルもどきを、love2d 11.1 に対応させておいた。

_mieki256/love2d_stg_sample02: love2d sample. top view scroll shooting game.

以下の環境で動作確認済み。

Raspberry Pi Zero W + Raspbian stretch でもイケルのかな。 :

ググってたら、Raspberry Pi Zero W + Raspbian stretch 上で動かしてみた方がいらっしゃるようで。

_LOVE on Raspbian Stretch lite (without X)

自分の環境では、love2d で音が出なくて動かなかったけど、どうやらライブラリの揃え方によっては動かせる可能性がありそうだなと…。上記ページに従って、自分も試してみようとしているところ。

#2 [raspberrypi] Raspbian stretch をインストールし直し

Raspberry Pi Zero W 上で、NOOBS を使って Raspbian stretch をインストールしたけれど、どうも動作がなんとなく遅いような気分になってきたので、多少改善しないかと Raspbian stretch のイメージを microSD に書き込む方法で再インストールしてみたり。ちなみに使ってる microSD は、東芝製 16GB、Class 10。

Etcher というツールを使うと、OSイメージを microSDやUSBメモリ等に書き込むことができるらしい。

_Etcher
_ラズパイ の OS イメージを焼くときは Etcher が 便利 & UI カッコいい | 験なきものを思はずは
_Etcher - k本的に無料ソフト・フリーソフト

Raspbian stretch のイメージは以下から入手。

_Index of /pub/raspberrypi/raspbian/images/raspbian-2018-04-19
_Index of /pub/raspberrypi/raspbian/images

解凍すると .img が出てくるので、Etcher 起動後に、その.img を選択して microSD に書き込み。

ちなみに、NOOBS を使うと、非力なRaspberry Pi Zero W で Raspbian のインストール処理をするので1時間ぐらい待たされてしまうけど。Raspbian のイメージを直接書き込むやり方なら、数分で使える状態になる。「すぐに Raspberry Pi を使ってみたいんじゃ」という人にはオススメ。

#3 [pc][windows] 完全削除してしまったファイルを復元しようと試みたり

親父さんからSOS。今朝、親父さんが撮影してきた数十ファイルの画像を、PC(Windows10 Home x64機 + SSD)に取り込んで、Canon製デジカメに同梱の画像管理・編集ソフトで編集しようとしたら、その数十ファイルが何故か全て一瞬で消えてしまった、という相談で。

削除操作をした場合は、Windows10 のゴミ箱に残ってるはずだけど、中を見ても残ってない。デジカメのメモリカード(コンパクトフラッシュ)内は、親父さんPCのSSDにファイルを移動した後だから、中身は空。困った。

SSD内で完全削除してしまったファイルを復元するソフトは無いのかなとググってみたら、以下のソフトに遭遇。

_無料データ復元ソフト - EaseUS Data Recovery Wizard Free |EaseUS公式サイト

SSDに対しても有効らしいので、親父さんPCにインストールして試したり。 *1

クイックスキャンで、数万ファイルがリストアップされた…。

タイムスタンプが残ってるファイル群の中には、目的の画像は見当たらず。そう上手くはいかないか…。

ファイル情報は残ってないけど画像ファイルらしき中身は残ってる系のファイル群に対して、画像をプレビューしていくつか眺めてみたら、どうも広告画像ばかりで。WebブラウザでWebサイトを開いた際に表示される広告画像が、SSD上で確保してあるブラウザキャッシュフォルダに入って、そのうち削除されていくわけだけど、そういった種類のファイルが大量にリストアップされてる状態なのだな…。この中から目的のファイルを見つけ出すのは、ちょっと難しい。

途方に暮れつつ、たまたま階下に降りてきた妹とこの話をしていたら。妹が、「メモリカードにファイルが残ってないのか。コピーしただけなら残ってるだろう」と言い出して。メモリカードからSSDに移動しちゃった後だから中身は空なのだ、と伝えた直後に気がついた。PC本体のSSDではなく、メモリカードに対してサルベージをすればいいのではないか。ありがとう、妹。これは良いヒントを貰った。まあ、そのあたりを伝えても、妹は話が理解できてなかったようだけど。

メモリカードに対して、前述のソフトでサルベージをしたら、1ファイルだけ壊れてたけど他のファイルは軒並み救出できた。助かった。

EaseUS Data Recovery Wizard Free、スゴイな…。操作画面も分かりやすいし、ファイル種類でフィルタをかけて一覧表示できるし、これはかなり良いソフト。かもしれず。

SSDの寿命を調べるソフトについてググったり。 :

もしや親父さんPCに積んでいるSSDの寿命が近づいているのでは。と思って、CrystalDiskInfo で調べてみたけど。

_「CrystalDiskInfo」HDD/SSDの健康状態をチェック - 窓の杜ライブラリ

S.M.A.R.T.情報では、問題無しと出ている…。いや、SSDがそのあたり、ちゃんと返してくれるのかは分からんのだけど。でもまあ、SSD自身は、自分がヤバい状態とは全く思ってない、健康そのものと思ってる…ことぐらいは分った。

他の原因について想像。 :

SSDではなくて、Canon製デジカメに同梱されてる画像管理・編集ソフトのバグという可能性は…。しかし、今まで親父さんがずっと使っていて、これといった不具合には遭遇してない上に、「こんな事故は今回が初めて」とも言っているし。当人が操作ミスをするとしても、せいぜい間違って削除、ぐらいだろうけど、その場合はゴミ箱に入るはずで。実際、以前の作業中に削除したらしき不要ファイルが、ゴミ箱にいくつか入ってたし。

分からんなあ…。どうして消えたのか…。

*1: 本当は、サルベージを行いたい対象ストレージにインストールしてしまうと、インストール処理の際に完全削除されたファイル群の痕跡を上書きしてしまうのでよろしくない。こういう事故が起きる前からインストールしておくか、物理的な別ドライブがあるならそちらにインストールするのが望ましい。

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

#1 [anime] 押井監督×鈴木P×川上氏の対談動画を今頃視聴

2012年頃に公開されたらしい、 _押井守ブロマガ開始記念! 世界の半分を怒らせる生放送 押井守×鈴木敏夫×川上量生 という動画を今頃視聴。こんな動画があったのか…。

押井監督の、「映画はキャラクター+ストーリー+世界観でできている」「どこを頂点にした三角形にするかで映画の形が決まってくる」という発言になんだか納得。更に、ジブリはキャラクターを頂点に、押井作品はストーリーを頂点に、という分類に膝を打った。おそらく、東宝の特撮映画と東映の特撮ヒーロー映画あたりもそういう分類ができそうだなと。

#2 [anime] 「サクラダリセット」4話を視聴

また飽きもせず「魔法戦争」を作ってる人達が居る…。二度も三度も作らなくていいですよ…。

話の流れが今一つ分からなくて一応ググってみたら、アニメ版は原作のダイジェスト、それもかなりバッサリやった形になってしまってるそうで。なるほど、それでこんな印象に…。シリーズ構成が大失態、ということなのかなあ…。実写映画版との兼ね合いでこうなってしまったとか、監督やプロデューサーからの要望、あるいは原作者の意向で仕方なく、だったんだろうか。「『君の名は』がスピード感を重視したって聞いたから俺達もやろうぜ!」とか上の人が各作品の内容を吟味しないまま思いつきで言い出しちゃったとか。何にせよ惜しい。

台詞だけで説明したつもりになってるあたりが貧しいなと。脚本家・演出家の手札・発想が貧しいのか *1 、予算面が貧しいのか、スケジュール面が貧しいのかは分からないけど、とにかく「貧しい」としか思えなかった。…BTTFでドクが模型使って説明してたシーンを思い出してほしいよなと。どうしてあそこでわざわざそうまでして説明したのか、説明する必要があったのか、少しは考えてみないと。アレは実写だから模型使って説明してたけど、実写と比べたらアニメなんて実に説明しやすい映像表現なわけで…。なのに、工夫しない。平気で手を抜く。なんだかな。 *2

ただ、グロシーンについては、シルエットその他を使って直接見せてなかったあたりは感心したり。視聴者に想像させたほうが効果的な場面ってあるよなと。 *3
*1: そのあたりは脚本家の守備範囲じゃないのではと想像するのだけど、あてにならない演出家揃いなら脚本段階でどうにかするしかねえべや、みたいな。
*2: 時間軸が絡んでくるお話は説明が難しい、ちゃんと説明できてないと観客・視聴者があっという間にポロポロと脱落していく、てな感じの話を平成ライダーのプロデューサーさんもblogで語ってた記憶があるわけで。このアニメも時間軸がめちゃくちゃ絡んでくるので、本来そこらへんはかなり気を配って作る必要があったのだけど…。
*3: と思ったけど放送用に隠せと言われたから隠してみせただけでBD等では直接見せてたらどうしよう…。その場合、救いようがないな…。

#3 [nitijyou] 弟が帰省

夕方頃に弟が帰省。

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

#1 [prog] three.jsで一本道を延々と走るソレ

three.jsを使って、一本道を延々と走るソレをどうにか書けたのでアップロード。F11キーを押して全画面表示すると、コレでも結構迫力が。

_roadmake4.html (DEMO)
roadmake4_ss.png

使用画像。
_road2.png
_bg.jpg
_tree0.png
_tree1.png
_tree2.png
_tree3.png

ソースも画像も CC0 / Public Domain ってことで。

課題。 :

急カーブになると、道路脇が無い部分がなんだか見苦しくて。上手い誤魔化し方はないものか…。もっとも、背景を覆い隠すぐらいにポリゴンを長くすればいいのだろうけど。

大昔の3Dゲームでは、背景の下半分を真っ黒にして、道路脇のテクスチャの端を黒へのグラデーションに、とかやってたような気もするけど。しかしソレだと、背景画像の見え方が今一つになりそうだし。

いっそ背景を夜空にしちゃうとか…。フォグを黒にすれば遠景でポリゴンがボコボコ出てくるあたりも誤魔化せるし…。

夜版も作ってみた。 :

背景を夜空にして、黒でフォグをかけてみた。

_roadmake4_night.html (DEMO)
roadmake4_night_ss.png

やっぱり、遠景がボコボコ出てくる感は残ってしまう。それでも、パッと見の雰囲気は随分変わった気がする。

本来であれば、カメラの近くにスポットライトを配置して前方を照らすべきだろうけど、黒のフォグをかけただけでもそれらしく見えたので、スポットライトは配置しなかった。

眺めていて思ったけど。時々、白い服を着た女性のテクスチャを貼ったビルボードが道路脇に出現したら、ちょっと面白いかも…。いや、動作確認時、自分がダメージを受けそうだから、やめておこう…。

昼、夕方、夜、朝の背景画像を作って、透明度を変えるなりして切り替えていくのも面白いかもしれず。

使った背景画像は以下。これも CC0 / Public Domain ってことで。

_bg2.jpg

OneDriveのフォルダにも、元画像をアップロードしておきました。御自由にどうぞ。いかにもCG臭い画像なので、何かの実験用にしか使えないだろうけど。

_OneDrive - panorama_images

#2 [prog] three.js の Points が Firefoxで表示されない不具合について

手元で色々試したけど、どうも THREE.Points だけをシーンに追加する分には、Firefox 上でも Points が問題無く表示されるっぽい。しかし、Points 以外の何かしらもシーンに追加すると、途端に Points が表示されなくなるようで。

three.js のサンプルは、Points だけをシーンに追加してるから、Firefox上でも描画できているっぽいなと…。

試しに、Points群を最初にシーンに追加してから、その後、他の Mesh をシーンに追加してみた。

_billboard_test2_c.html (DEMO)

  for (var i = 0; i < 64; i++) {
    var w = getRandomArbitary(128, 256);
    
    var x = getRandomArbitary(-r, r);
    var y = w / 3.5; // 何故この値になるのか分からない…
    var z = getRandomArbitary(-r, r);
    
    var geom = new THREE.Geometry();
    geom.vertices.push(new THREE.Vector3(x, y, z));

    var mat = new THREE.PointsMaterial({
      size: w,
      map: texTrees[Math.floor(Math.random() * texTrees.length)],
      fog: true,
      alphaTest: 0.5, // コレを入れないと透過部分がおかしくなる
    });

    var tree = new THREE.Points(geom, mat);
    scene.add(tree);
  }

  // 何故か Firefox は、Points以外を後から追加しないと正常動作しない
  scene.add(plane);
  scene.add(box);

コレだと描画される…。シーンに追加する順番で違ってくるのだろうか…。

Points の、y座標の意味も、相変わらず分からない。値を少しずつ変えて試していたら、サイズ / 3.5 を代入した時に位置が合うように見えたのだけど。どうしてそこで 3.5 なる数字になるのか…。

まあ、Points を使うと、座標が画面外に出た瞬間にパカッと消えてしまうので、どのみち使いどころが難しいような気も。ただ、three.js のサンプルは、パカッと出たり消えたりしてるようには見えないわけで。何故なんだろう…。

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

#1 [pc] HDDを整理中

WIndows7再インストール前のパーティションのバックアップを整理中。残しておかないといけないファイルと、アプリケーションを再インストールすれば入ってくれるファイルがあるはずで。その分類作業というか。

#2 [anime] 手裏剣戦隊に忍者戦隊先輩が出演した回を視聴

録画したままだった回をようやく頭から視聴。戦隊シリーズは何度か忍者戦隊が作られてきたわけだけど、その先輩レッドが登場して今回の忍者戦隊、じゃなくて手裏剣戦隊をビシバシ、という回で。なんと素晴らしいサービス回。

かつて戦隊シリーズで活躍してくれた役者さんが、後輩・若手の前に登場してくれるなんて、とても嬉しいなと。いい時代になった…。見ていて目頭が熱く…。 *1

敵が、猫+時計をモチーフにした妖怪で。後になって「あー」と気づいたり。自分、ニブ過ぎる。
*1: 例えばコレがもっと昔だと…。キレンジャーの方とか…。そういう時代だったとしか言いようがないけれど、今は妙な偏見が無くなりつつあって、大変ありがたいことだなと…。

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

#1 [pc] ケースをぐぐってたり

ビデオカードはオンボードビデオでいいとして、HDDは数台積みたいな、それでいて省スペースなMicroATXケースってないのかな。と思ってググってみたのだけど。そういうケースは無いですな。

ビデオカードは積まないよ、となると、スリムケースにする方向でしか省スペース化はされないし。となるとHDDは1台、光学ドライブ1台しか積めない設計になるし。

まあ、今時HDDを数台積むより、大容量HDDを1台積めば済んじゃうよ、という話になりそうだし。数台積んでどうこうとなると、NASにしてRAIDにして、という話にもなりそうだし。あるいは、ATXケース使えや、山ほど積めますぜ、という話にもなりそうだし。

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

#1 [prog] DXRubyその他の動作速度を確認した結果をメモ

以下の処理をするスクリプト。 さらに、それをいくつかの言語+ライブラリで書いた。 使ってるRubyとPythonのバージョンは以下の通り。 どちらもWindows版。

スクリーンショットはこんな感じ。

DXRuby版のSS

一応スクリプトも、zipでまとめて置いておくです。exe化してあるから、Ruby や Python が入ってなくても動くです。

_fullscrtest_20130502.zip (21MB)

それを3台のPCで動作確認。
種類CPUコア数クロックVideoMemoryOS備考
メインPCCore i5 250043.3GHzGeForce 9800GTGE8GBWindows7 x64自作PC
録画用PCAthlon II X4 605e42.3GHzRadeon HD 4200 (AMD785Gオンボード)8GBWindows7 x64自作PC
ネットブック機Atom N27011.6GHzIntel GMA950 (オンボード)2GBWindows XP Home SP3Lenovo IdeaPad S10-2

以下のような結果に。
ライブラリ描画内容表示種類ネットブック機録画用PCメインPC
HSP全てウインドウ14 FPS60 FPS60 FPS
フルスクリーン54 FPS60 FPS60 FPS
StarRuby全てウインドウ19 FPS60 FPS60 FPS
フルスクリーン19 FPS60 FPS60 FPS
BGのみウインドウ41 FPS60 FPS60 FPS
フルスクリーン41 FPS60 FPS60 FPS
DXRuby全てウインドウ11 FPS60 FPS60 FPS
フルスクリーン13 FPS60 FPS60 FPS
BGのみウインドウ20 FPS60 FPS60 FPS
フルスクリーン30 FPS60 FPS60 FPS
PyGame全てウインドウ11 FPS20 FPS60 FPS
フルスクリーン11 FPS20 FPS60 FPS
BGのみウインドウ25 FPS60 FPS60 FPS
フルスクリーン25 FPS60 FPS60 FPS
Ruby/SDL全てウインドウ1 FPS2 FPS60 FPS
フルスクリーン1 FPS2 FPS60 FPS
BGのみウインドウ2 FPS60 FPS60 FPS
フルスクリーン2 FPS60 FPS60 FPS

ライブラリフルスクリーン表示oggループ再生言語仕様処理速度
HSP× *2速い *4
StarRuby× *3速い
DXRuby× *1速い
PyGame遅い
Ruby/SDL非常に遅い

感想というか、思ったことをメモ。 まあ、スクリプトの書き方が間違ってる可能性もあるので…。もし、「そんな結果になるはずがない」と思った方は、スクリプトソースの添削をしていただけると助かるです。

2013/05/14追記。 :

DXRuby でフルスクリーン表示が上手くいかない問題ですが、DXRuby1.5開発版を使ったら改善されたことを追記しておきます。

ただ、同梱の、Atame/Ruby 0.0.2 に不具合があるようで…。一つ前の Ayame/Ruby 0.0.1 と組み合わせて使ったほうがいいのかもしれず。

2017/03/19追記。 :

Dropboxのpublicフォルダが死んだのでファイルの置き場所を変更。

#2 [prog] 今時のPCゲームのウインドウサイズってどのくらいが適切なんだろうか

仮にフルスクリーン表示ができなくても、デスクトップ解像度を800x600等にすれば、640x480のウインドウ表示も大きく見えるだろうし…。何が何でもフルスクリーン表示に対応しなきゃ、というわけでもないのかもと思えてきたり。

しかしそもそも、640x480、800x600といった4:3のサイズで作るのは適切なのだろうか…。ワイド液晶ディスプレイを使っている事例が増えてきたのだから、16:9等のサイズのほうが ―― 640x360、854x480、1280x720、1366x768等のほうが良かったりしないか。でも、4:3のディスプレイを使っている環境では、メリットがないだろうし…。

メインPC上で、フルスクリーンにできそうな16:9の画面解像度を調べてみたら、1280x720、1366x768 はあったけど、640x360、854x480は一覧に無かった…。

Windows8 は、1024x768 が最低解像度なんでしたっけ? そこにも対応しようとすると…640x480というウインドウサイズは適切ではないのだろうか…? Windows8上で、640x480の画面をフルスクリーン表示しようとすると、一体どうなるんだろう…。

ネットブックのように、1024x600の液晶を使っているPCだって存在するだろうし。となると、縦600ドットより大きいサイズは無理、なのかな。

どのウインドウサイズで作っておくのが妥当なのだろう? わからんなあ…。

_画面解像度 - Wikipedia を眺めつつ、悩んでしまったり。

#3 [prog] HSPの感想をメモ

あらかじめ、意見には個人差があります、と言っておきますです。

ほんのちょっとだけHSPも勉強したわけだけど。サンプルスクリプトをコピペして修正した程度の作業だったのに、なんだか…何かがツライ。言語仕様がしっくりこない。

なんでツライのか考えてみたけど、このへんかなあ…。 プログラミングをちょっとかじった人なら、「ああ、それは筋が悪いプログラミング言語だね」と言いそうな。

ところが、よくよく調べてみると、どうもその印象は勘違いだったようで。 そうなると、「アレ? 結構フツーのプログラミング言語じゃね?」と思えてきたわけで。

どうして前述のような勘違い・思い込みを持ってしまったのかと言えば、おそらくサンプルスクリプト群のほとんどが、そういう書き方をしているから、なのだろうなと思えてきたり。

おそらくサンプルスクリプトは、古い言語仕様でも動くように書いてあるのかもしれない。あるいは、古い言語仕様で書いてあったソレを少し手直しして、HSPに同梱しているのかなと。

ただ、初心者がHSPを勉強する際に、頼りにするのはサンプルスクリプト群…。その、お手本ともいうべきサンプルスクリプト群が、そういう書き方を続けていると、他の言語を全く知らない人は、「こういうことをしたかったら、こういう風に書くものなんだな」「これがプログラミングなんだな」と思い込んで、それが後々面倒なことに繋がらないか…と少し不安になったりもして。

例えばですが。Perl の世界では、「今時のPerlならこういう風に書くのがモダンだぜ」みたいな話があったりしたのだけど。おそらくHSPも、モダンなHSPソースの書き方がありそうだなと。

その、モダンな書き方に基づいた、初心者向けのチュートリアル記事なり解説記事が存在していて、それをお手本にしながら勉強するのであれば、HSPの印象も結構変わるのかもしれないなあ、と思ったりしましたよ、とメモ。

まあ、「動けばいいじゃん」で済ませるのもアリなのだろうけど。

#4 [prog] gotoについて思うところをつらつらと

HSPを勉強してるうちに、「gotoって…どうなんだろうなあ…」と思えてきたので、そのあたりをなんとなくメモ。ま、何十年も前に、gotoの是非については熱い議論があったらしいので、お前いまさら何言ってんだって感じの話ですが。

以下は自分の勝手な想像その他諸々なので事実とは大きく異なる可能性が高いです。

どんな高級言語で書かれたソースも、コンピュータ上で動くときにはバイナリになる・機械語レベルになるわけで。そして機械語レベルでは、ジャンプ命令 ≒ goto だらけになるわけですよ。そのことを考えれば、「gotoさえ知っていれば全てのプログラムは書けるんだ」という考えは正しいよなと。実際、全てのプログラムは、最終的にはそういう形で動いているのだし。

でも、それぞれの goto には、目的があって。 goto だらけのソースをプログラマーが読んで理解するときは、「はて、この goto は、どんな目的で使われているんだ?」と、goto が出てくるたびに推測しないといけない。…goto が出てくるたびに、毎回必ず、ですよ。これはシンドイ。面倒臭い。当然、勘違いも頻発する。バグの温床になる。

そこで先輩達は思いついた。「この goto はこういう目的で使っているんだよ、とソースにあらかじめ書いておくことにしようぜ」と。 そのうち気付くわけです。「アレ? goto なんか使わなくてもプログラム書けたぞ?」「gotoが残ってるということは、そのプログラミング言語・ソースの書き方は、何か間違ってねえか?」みたいな。

ところが、今度は色んな命令を覚えないといけなくなった。今までは、goto だけ覚えておけばどうとでもなったのに…。

そこで誰かが言い出すのです。「プログラミング初心者に、こんなにたくさん命令を覚えさせるのはよくない。絶対混乱するよ…。だから、goto だけ教えとこう!」

ということで。このあたり2つの主張が成立しそうだなと。 どっちもアリといえばアリですが。まあ、何十年も前から、後者の考え方が主流のような気がします。

後者の考え方がないと、高級言語なんてものは、生まれてこなかったであろう気もしてきたり。

PythonとRubyにもそういうノリを感じたり。 :

Python は、「gotoだけ覚えてればいいんだよ!」みたいなノリを感じますし、Ruby は、「何をやろうとしているか明確にしないとダメだよ!」みたいなノリを感じますな…。

例えば、「n回ループさせる」てな処理を書きたいとき。

Python なら、たぶんこうなるのかな。
for i in range(5):
     print i

Ruby なら、こうでしょうか?
5.times do |i|
     puts i
end

Python は、range() を使って一旦配列 *1 を作って、0から4まで数値を入れて、その配列個数分取り出しながらループをしろ、てなことを指示するわけで。…プログラマーは、配列を作りたいわけじゃないのですがね。n回ループさせたいだけなのだけど、なんで配列を作らなきゃいかんのか…。しかし、Python は、「命令の種類はシンプルに」「色んな書き方ができたらダメ」という信条で作ってる言語だから、「この方法でループ処理は書けるんだからコレ使え」「コレさえ覚えとけば、配列に対して処理をしたいときも同じように書けるだろ? 何にでも使えて便利じゃねえか」で済ませてる。それは、「goto使えば全部書けるんだから、gotoだけ使え」てな思考と結構近い気がします。

Ruby は逆に、n回ループさせたいと思ってるなら、一目でそれが分かる書き方じゃないとダメだろう、という信条があるんじゃないかと。だから、times というメソッドが登場するのかなあ、と。その代わり、どんなループ処理をさせたいかによって、書き方やメソッドがどんどん変わってくる。覚えなきゃいけないことが増えてくる。…まあ、「for i in 0..4 do puts i end」「(0..4).each do |i| puts i end」みたいな書き方もできるから、この例はあまり適切ではないんでしょうけど。

Ruby を覚えた人が、他の言語を触った時になんかしっくりこないのは、そのへんが関係してるのかな…と勝手に想像してみたり。プログラマーがその時何をしたいと思っていたのか、その思考のログがソースに残りやすいのが Ruby、なのかもしれないと。他の言語は、「このソースを書いた時の俺は、こう書くことで、一体何をしようとしていたのか…?」みたいな推測作業が細かいところでちょこちょこ要求されて、それが微妙に苦痛なのかなあ、と。

まあ、自分、プログラミング言語は全然詳しくないので、実際どうなのかは分かんないですけど。

色んな言語を触ってる人なら、もっと適切な事例を出して、各思想の違いをしっかり解説できると思うので、「お前が言ってることは違うよ! 全然違うよ!」と思ったら、自身のblog等で解説してくれるとありがたいです。

*1: 配列じゃなくてリストと呼ぶべき?

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

#1 [nitijyou] 弟が仙台に戻った

11:30頃出発して、1:00頃にICを降りたという連絡が入った。帰省ラッシュに巻き込まれずに済んだ模様。

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

#1 [nitijyou] 弟が帰省

わざわざ福島県に被ばくをしに帰ってこなくても、と思ったけれど数日居るぐらいなら問題にならないよなと気が付いた。

ブルーレイドライブ BUFFALO BR-616FBS-BK (日立LG GGW-H20N)と、PC用地デジチューナ (SKNET製。BCASカード無し)を貰った。ブルーレイドライブを外付けケースに入れて、外付け光学ドライブとして使えないかと思ったが、調べてみたら消費電力が多いドライブのようで外付けで使うのは無理っぽい。市販の外付けケースのACアダプタは5V2A、12V2Aらしいので。内蔵で使うしかナサゲ。

原発関連の話題になると、弟と喧嘩になってしまう。こんな状況に至っても尚楽観論になるあたり、弟はやはり親父さん似だと思ったり。

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

#1 [nitijyou] 急にシューティングゲームがやりたくなって

グラディウス外伝を引っ張り出してプレイ。やっぱりコレは名作。何十回もコンティニューしてようやくクリア。

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

#1 [comic] 「RIDEBACK」カサハラテツロー著を読んだ

弟が紙袋一杯に、漫画単行本を置いていってくれたのだけど、その中に入ってた。バイクのようなロボットを操縦する少女が主人公の漫画。

弟曰く「あまり面白くなかったから手元に残しておかなくてもいいなと思った漫画」を持ってきてるはずなのだけど。読んでみたら結構面白かった。腕が千切れたり首が飛んだりする残酷な描写や、混沌とした展開等が、この歳になるとちょっと辛いけど。ロボットの疾走感がとにかくイイ感じだなと。おそらくはバイク漫画のようなスピード感があるように思えたり。

絵柄も結構好み。関連性はないかもしれないけれど、ロボットの疾走シーンの線などは、しげの秀一作品のソレを連想したりもして。

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

#1 [iappli] バグ修正中

ごく稀に球が消える、という不具合報告があったので、状態を再現すべくあれこれと。半日アレコレ試して、やっと出た。出た時の、球の速度・角度・座標値をメモっておいて、それに固定。必ず状態が出るようにしてから動作を追跡。

フィールドと外側を区切ってる壁の中に、めり込んでしまう時があるのが原因だった。壁はグーンと高い高さ情報を持ってるので、その高さに球の高さも補正され、画面外に表示されてしまう=消えてしまうように見えていた。どういう対処をするか少し悩んだけど、結局、移動処理の最後に、壁にめりこんでないか判定処理を入れて、めりこんでいたら補正するように。

そもそも、壁にめり込んだ後に補正してないというのが不思議。元のサンプル版からしてそうだったのか、それとも自分が手を入れてる間にエンバグしてしまったのか。球は壁で反射するので、速度が速い時はすぐに抜け出すのだけど。速度が遅い時は数フレーム壁の中に入り続けてしまって、その際に高さが補正されてしまうらしい。速度が遅い状態になる前に、移動処理が終わる・停止することがほとんどなので、そういう不具合が起きることは少なく、ここまで引き摺ってしまった、ということなんだろうけど。

なにかもっとこう、数学的なアタリの持ち方・球の動きを実装したほうが良かったんじゃないか、という感も。いや、どういうアタリを持てばいいのかちょっとわかんないけど。ドローツールでアタリを描くとかそんな感じになるのだろうか。

#2 [anime] 顔が緑色になるルパン

TVをつけたら、ルパン三世カリオストロの城が流れてた。もう終わりのほうだったけど、ちょっと見入ってしまったり。

ルパンの顔が、赤→青→緑になるところで感心。今時のカッコイイアニメでは、こういう表現はできないよなあ。

というか、比較的新しい宮崎アニメでも、こういう表現は無くなったような気がする。宮崎駿は、正しい表現方法を身につけた、ということなんだろうか。どうもそうではないような気もするけど…。

だらけてる銭形が電話の声で突如変貌するところに感心。 :

「これ以上余計なことをするな」的なことを上司たちから言われ、ヤケ酒を飲んで酔っぱらってる銭形に、電話がかかってくる。「(ぐでんぐでんな状態で)もしもーし〜… ! 不二子か!?」みたいな感じのシーン。赤ら顔でだらしない状態だったのが、電話の声を聞くなり別人のように変貌。もちろん、当時の銭形の声優さんは、今と違って、その変化を演じることができてたりもするわけで。<オイ。

こういう変化というか、ある種の緩急というか、「それらしさ」が含まれてるのが、この当時の宮崎アニメの面白さだったのかな、という気もしたわけで。いかにも記号的な、固まったキャラ属性 ―― 最初から終わりまで真面目なヤツはどこまでも真面目だし、おちゃらけてるヤツはどこまでもおちゃらけてるし、といった定型的?な人間の描き方ではなく。人間なんだから、だれてる時もあれば気合いが入ってる時もあるだろう、一人のキャラにも本当ならいろんな表情があるはずだ、それが人間ってやつじゃないの、みたいな。

だれてる時の描写も、気合いが入った時の描写も、それぞれ単体で見れば、いかにも記号的な描写・画であったのだけど。<担当アニメーターに失礼なことを書いてるな…。しかし、その2つの記号を組み合わせ、瞬時に変化する様子に仕立てることで、記号らしさを払拭し、人が手で描いて作った映像であるにも関わらず、まるで実際の人間の振る舞いを見ているかのような、そんなそれらしさを感じさせる…。その後の展開を構築するための下準備的な情報提示であろう、なんてことのない1シーンでありながら、しかしそんな1シーンであってもこういうコンテを描いてしまうあたりが、当時の宮崎駿の強さ(?)だったのかな、と妄想したり。

とは言っても、伯爵やクラリスは、全編通してキャラの属性を崩したりはしないんだよな…。変化の激しいキャラと、そうでないキャラを配置することで、さらにそれぞれのそれらしさが増す…とか考えて作ってたのかなどうだろうとか思ったりもして。考えすぎかしら。いや、実は理詰めでそこまで作ってたのかもしれない、という気もする。どうなんだろうなあ。

クラリスの意識が戻る時のクレーンアップが凄い。 :

クレーンアップ…という言い方でいいのだろうか。わからんけど。結婚式で、クラリスの目にハイライトが戻ってくるカット。や、ハイライトを利用するという手法もアレなんだけど、カメラワークのほうもシビレタというか。

作画の力でそういう映像を見せるあたりも凄いのだけど。クラリスにそういう変化が訪れるということを、実写的なカメラワークで表現しようという、その発想・思考からして参ったなと。いや、たぶん元ネタがあるんだろうなとも思うのですが。

アニメってのは、その表現手法の制約故、実写と違うカメラワークになりがちだけど。だからこそ、ここぞというシーンで、実写ではよく使われるがアニメでは滅多に使われない ―― 使ったとしても擬似的な表現になりがちで「なんか違うんだよなー」となってしまう、そんなカメラワークを持ってきたのかなと想像したり。普段使わないカメラワークをそこに入れ、なおかつ、よく見かける「アニメ風」ではなく、滅多に見ない「実写風」を作画を用いて真っ当に表現したことで、クラリスの受けたショックの大きさが、観客側にも無意識下で伝わってくるという。

宮崎監督は、感覚に頼って、そういうコンテを描いたわけではないはずで。アニメで真っ当にクレーンアップを表現しようとすれば、どれだけ手間がかかるのか、作画出身の監督だからよくわかってるはず。しかし、その手間をかけても尚、そのカットにはそういうカメラワークが必要であると。万が一、文句ばかり言うアニメーターから「どうしてこのカットにそんなに手間かけなきゃいけないの?」と問われた時のために、そこには監督なりの理論武装があったはず。あったからこそ、こういうコンテを描けたはずで。…とか考えていくと、やっぱりとことん理詰めで作ったということなんだろうか。>カリ城。

でも、あのカットってクレーンアップなのか? なんかそこからして認識が怪しい。>自分。

まあ、見るたびに発見がある作品ってことで。

発見してるつもりになってるだけ、のような気もするけど。>自分。

宮崎駿の書いた絵コンテ教本にヒントが書いてあったような。 :

や、手元にはないのだけど。たしか、「このカメラワークの表現は、こうやればできなくもないんだけど、でも、どこで使うかは難しいぞ」みたいなことが書いてあったような気もしてきた。>宮崎版コンテ教本。どうだったかな…。

宮崎アニメを、その教本と照らし合わせながら鑑賞すれば、何か見えてくるところもあるのだろうか。でも、あの教本は、何に付属してたんだっけか…。忘れた。

まあ別に、自分がコンテ描くわけでもないから、どうでもいいか。

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

#1 [nitijyou] 弟が帰省

夜に帰ってくるという話なので、昼のうちに部屋を掃除。

SCSI接続フラットベッドスキャナ EPSON GT-5000WINS を物置に持っていった。 :

物置に持っていく = そのうち捨てることが確定、ということなわけで。今時 300 DPI、しかも SCSI接続のスキャナなんて使わんよな。

Ubuntu で動かせれば従兄の子供たちに 押し付ける プレゼントもできたのだが、残念ながら動かなかったのでありました。そもそも、SCSIボードが動いてるかどうか確認する方法が判らず。>Ubuntu。なんだか勿体無い。でもまあ、今時は9,800円でUSB接続CISスキャナが売ってる御時勢だし。当時は5万円ぐらいした記憶もあるんだが。>GT-5000WINS。周辺機器も、随分安くなったものであります。

A3対応インクジェットプリンタ EPSON PM-3000C を階下に持っていった。 :

捨てる予定だったけど。A3印刷可能なあたり、もしかすると親父さんが使えるかもしれんと。しかし親父さんの持ってるプリンタのほうが解像度は4倍。<縦2倍かつ横2倍。どうなんだろう。…A3のフォトプリント紙なるものを発掘したので、それを使って試しに印刷してみて、親父さんにとって結果が良い感じならそのまま使っていただく、という話に。

インクカートリッジの入手性がそこそこで、そうそう目詰まりしないなら、従兄の子供たちに 押し付ける プレゼントするところなのだが。黒インクカートリッジはともかく、カラーインクカートリッジがなかなか入手できないし。ちょっと使わないとたちまち目詰まりするしで。さすがにコレは、プレゼントには問題有りだよなと。

IBM ThinkPad 760EL の置き場所に困る。 :

元々お袋さん用にと思って買ったけど。さすがに Pentium 133MHz では今時アレで。無線LANも構築してないから、ネットに繋ぐ時は一々ケーブルを挿さなきゃいけない。ということで滅多に起動しないのだけど、ごく稀に何かチェックするときにたまーに使うこともありそうなわけで。

階下に持っていったら、親父さんから「CD-ROMドライブはついてるのか?」「写真の閲覧用に使えるなら使いたい」と質問された。残念。CD-ROMドライブはついてない。USB端子すら無い。そもそも液晶のバックライトがもう寿命で、画面が黄色い。色なんかまったくこれっぽっちも正確に出ない。…親父さんにすら「使えん」「部屋に持って帰れ」と言われてしまった。トホ。たしかにコレは、今となってはちょっと使い道がないなぁ。キーもめちゃくちゃ打ちづらいし。

弟は、夜に到着。 :

PM6:00頃に出て、PM7:30に着いたらしい。仙台からここまで、そんな時間で来れるのか…。

#2 [zatta] 熱で云々

_コメント欄
熱エネルギーをもらさず他のエネルギーに変換できると世の中かなり変わると思うんですけどね^^;
という一文を読んで、その通りだなと…。いや、もらさず、とまではいかなくても、なんだか色々できそうな気がする。

地域の温度差を利用した発電とかダメだろうか。北極・南極から赤道あたりまで何かを引いてその温度差で発電。…軌道エレベータよりもはるかにありえない状況ですな。

アスファルトの熱を利用して発電とかできんかな。温泉利用して発電なんてのも面白そう。地中深く何かを刺して、地表との温度差で発電とか。そもそもどうやって熱で発電するのかがやっぱりアレなのか。

電気エネルギー以外に変換したほうが効率が良かったりするんだろうか。うーむ。

_産総研:プレス・リリース 棄てる熱から発電 :

_温度差で電気を作れるってホント?
_ペルチェ・熱発電のリンクのページ

_ペルチエ熱電池の製作
しかしながら、測定の30分間に高熱源が失った熱エネルギー約38kJに対し、取り出された電力量は約0.23kJにとどまります。保温により熱の損失を抑えたとしても、変換効率は1%程度にしかならないと予想され、熱エネルギーの利用の難しさを再確認させてくれます。

ペルチエ熱電池の製作 より

とは言え、この熱電池は、ラジオを鳴らしたり、小型モーターを動かしたり、発光ダイオードを光らたりするせるぐらいの電力は取り出せるので、天然の高・低熱源、例えば雪と温泉に恵まれた地方で、太陽電池が使えないような環境のもとでは実用になるかもしれないと考えます。

ペルチエ熱電池の製作 より

_海洋温度差発電 - Wikipedia :

OTECのシステムはまだ広範な展開がなされていないためそのコストを評価することに無関心であるが、一説によると1kW時当たり$.07 USD程度であり補助を受けた風力発電の$.07に比肩するが、原子力発電の$.0192には及ばないとされる。

海洋温度差発電 - Wikipedia より

コスト的に厳しいのね…。原子力発電所で時々ヤバいことが起きた場合の損失を考えても、それでもコスト的には負けるのかしら。うーん。

#3 [iappli] サウンド再生関連のルーチンで必要な処理って

何だろうな。各サウンドの優先順位もやはり必要だろうか…。

優先順位を考慮するといっても、色々ありそうな。 何にしても、現在再生されてるサウンドは何か、をどこかに記録しておかないといかんのだな。また、そのサウンドは、いつかは再生終了するわけで。その際にポートが空いたことを記録しておかないといけない。各サウンドの再生時間をあらかじめ列挙しておいて、それをあてにして「再生中」「再生終了後(のはず)」として処理するか。あるいは再生終了のイベントを検出できるならソレを使って…。もう一度ライブラリ?のドキュメントを眺めてみないと。うーん。

操作説明テキストの表示はどういう感じがいいんだろう。 :

現在ページ単位でパカパカ切り換えてるけど。ユーザにとってはスクロールのほうが良かったりするんだろうか。でも、1〜数行ずつスクロールするというのもなんだか面倒な。クリックするとページが切り替わるのと、押し続けてるとスクロールしていくのと、どっちの仕様が感覚的に嬉しいのだろう。…書籍と巻物のどちらが読みやすい・扱いやすいか、という話になっちゃうのかもしれん。ページをめくる行為と、巻物を巻いていく行為を比べたら、ページをめくるほうが楽かしら。しかし、巻物を巻いていく行為がボタン一つで出来るとしたら…。どうなんだろうなぁ。まあ、どちらでも、情報が得られることに何ら違いはないから、どうでもいいことなのかもしれんけど。

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

#1 MSのWindowsUpdateカタログに、WinXP上で動くYAMAHAのXGソフトシンセがある。らしい。

_YMF-7X4シリーズ友の会 Part7
_65-
68 :Socket774:2006/04/17(月) 23:59:05 ID:cth7lu4z
>>64 thx!今、ダウンロードした。入れるのはこれから。

>>66-67
漏れ65じゃないが、解説。

WindowsUpdate
→ WindowsUpdateカタログ
→ ハードウェアデバイスのドライバ
→ サウンド

製造元名 : Yamaha

オペレーティングシステム : WindowsXP Pro SP1

言語 : 英語

[検索]ボタン
→ 4つの検索結果のうち、一番下の3.9MBのが YAMAHA XG WDM SoftSynthesizer

YMF-7X4シリーズ友の会 Part7 より

なんと。これは試さねば。ちなみにウチの環境は WinXP Home SP2。VIA VT8237R のオンボード音源。 *1

WindowsUpdateカタログへの行きかたがわからん…。Microsoft Update からは辿っていけないのかな。

_Windows Update カタログから更新プログラムおよびドライバをダウンロードする方法 というページにURLが書いてあった。 _http://v4.windowsupdate.microsoft.com/catalog に飛べばいいらしい。

飛んでみた。「ハードウェア デバイスのドライバの更新を探します」をクリック。後は、上に引用したのと同じ、3つの項目を選択して、右下の「検索」を押す。と、一覧が出てくる。

とりあえず、一番下の 3.9MB版をDLしてみた。…IE でDLする場合、ポップアップを許可しないとDLがされないみたい。現在開いてるサイトを、ポップアップブロックの除外対象に指定。…DL終了。

保存指定場所に、WU というフォルダが出来てる。〜\WU\Driver\en\com_microsoft_whql.sound\x86WinXP\com_microsoft_whql.1403848\1403848.cab というファイルを解凍。

「ハードウェアの追加」で、解凍したフォルダ内の .inf を指定して、導入。

導入したソフトシンセを使うように指定する。「サウンドとオーディオデバイスのプロパティ」の、オーディオ → MIDI音楽の再生、で、YAMAHA XG WDM SoftSynthesizer を選択。

テキトーなMIDIデータを鳴らしてみる。WINAMP に渡してみた。…鳴った。万歳。

XG音源用のMIDIデータを発掘して聴いてみた。…YMF724ボードを使ってたときと同じような音。たしかにXGの音っぽい。素晴らしい。 *2

環境が WinXP になってからというもの、YMF724ボードの添付CD-ROMに入ってた S-YXG50 が使えなくなって悲しんでたけど。 *3 これでやっと、XGの音をそこそこまともに楽しめます。ありがたや。

や。ソフトウェアXG音源を内蔵してる MidRadio Player も無償でDL・インストールできるから、フツー(?)の人にはそっちをオススメしますけど。MidRadio Player なら、YAMAHA製音源チップを使用してる携帯用の曲データも聴けてしまう、というメリットもあるらしいし。

調整が必要らしい。 :

96 :Socket774:2006/04/18(火) 21:52:29 ID:UbUQYyfX
デフォルトでは音質が悪いよ。
体験版の data1.cab と data2.cab を解凍して sxgmacpl.cpl を抜き出して設定し直した方がよい。

YMF-7X4シリーズ友の会 Part7 より

なんじゃ。体験版って。…配布終了しとるではないか。困ったな。

103 :Socket774:2006/04/18(火) 23:06:50 ID:UhE6wXvY
>>96
を勝手に補足。

直接レジストリで設定する方法
\HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}
の下に4桁の数字で連番のものが並んでいるので、
その中からDriverDescが
"YAMAHA XG WDM SoftSynthesizer"
になっているものを探す。
その下のsxgsetupの中に、コントロールパネルの設定がある。

polyは最大同時発音数。24,28,32,48,64,96,128から選択。デフォルトは32音。
cpuloadは最大CPU使用率。40,50,60,70,80,90から選択。デフォルトは70%。
chorus、reverb、variationは、0で無効、1で有効。デフォルトは1。
fsはサンプリングレート。0=11kHz、1=22kHz、2=44kHz。デフォルトは22kHz。

YMF-7X4シリーズ友の会 Part7 より

レジストリ変更で調整できるのか。一応してみたり。

*1: YAMAHA YMAF724音源チップの載ったボードも持ってるけど。それは挿してない。ケース開けるのも、複数のサウンドデバイス(?)を同居させるのも、面倒そうだし…。
*2: いや、波形データの容量からして、YMF724ボードのときより、音が良くなってる可能性は高いのだけど。…と言っても、導入したばかりの状態だと、サンプリングレートが22KHzに指定されてるらしいから、音質は変わらんのか。44KHzに指定すれば、そのへん違ってくるのかな。
*3: YMF724ボードに添付されてる S-YXG50 は、軒並み、Win9x専用なので、WinXP では使えない。しかも現在、YAMAHA は WinXP対応済み S-YXG50 を単体販売してない。USBオーディオ機器や、MIDIシーケンスソフトに添付してる形でしか入手できないという状況があったわけで。

#2 [zatta] 愛と恋

ダメなところも知ってるうえで「それでもお前がいい」と言うのと、ダメなところも見えなくなっちゃって「お前がいい」と言うのは、なんか違う気がする。ひょっとして、それは、愛と恋の違い。なのかな。しらんけど。…てなことを、昨日のRPGバカ云々の記事を校正してるうちに思ったり。そういや、「恋をするとバカになる」てな話もどこかで目にしたような記憶も。…愛に変わると、そのへんも違ってくるのであらうか。しらんけど。

俺は中学生か。

#3 [windows] _自主規制語補完辞書

_(via 【2002】 MS-IME Part5 【2003】)

入れてみた。登録失敗の単語がいくつかあるみたい。「キチ」「下衆」「下賤」「屠畜」「白痴」はシステム辞書に登録済み、と出てくる。…何にせよ、その手の言葉もちゃんと変換してくれるのはありがたい。…いや、そういう単語を使う場面は少ないですが、ごくまれに変換できなくて「おや?」と思うときもあるので。

#4 [xyzzy] _NYRLの日記 - 昔に作ったLisp - バッファ全体をクリップボードに送る2

もしかすると便利そうかもしれない気がしてきたので ~/.xyzzy に書かせてもらおう。と思って、~/.xyzzy を開いたら。
;; M-aでバッファのテキスト全選択
(global-set-key #\M-a 'selection-whole-buffer)
と書いてあった。どうやら昔の自分が、M-a C-Ins でコピーできるようにしてたらしい。すっかり忘れてましたがな。

#5 [windows] _フリーの日本語OCRソフト「SmartOCR Lite Edition」の制作・配布が終了

ありゃりゃ。もう入手はできないのだろうか。使えないとなると、試してみたくなるのが心情で…。

とあるところからDLできた。ラッキー。試してみたり。…読んでココのスキャナバンドル版より誤認識が多い気がする。画像そのものは、読んでココに読ませたものと同じなんだけど。表の罫線と文字を分離できなかったり、「/」を文字の一部分として認識してしまって、誤認識してる箇所が結構あった。また、認識云々とは別に、メモリを1GBほど要求されて、WinXPの動作が重くなってしまった。自分のPCは512MBとしか積んでないので、動作させるにはちと厳しい。

ホントかどうかは知らないが、認識エンジン部分は某ソフトのソレ、という話もどこかで見かけた。とすると、その某ソフトも、読んでココより誤認識したり、メモリをバカ食いするということだろうか。まあ、その某ソフトとやらのソフト名が判らんのでアレだけど。

#6 [web] 宅ふぁいる便の会員登録をしようとしたら「転送メール・フリーメールのメルアドではダメ」と言われてしまった

自分、フリーメールのメルアドしか公開してないわけで…。困ったな。

仕方ない。アレのメルアドを使うか…。ということで登録。

自分のメルアド宛に送ってみたけど、メールがこない。もしかして、送り先のメルアドにも、転送メール・フリーメールのアドレスを使ってはいけない、という制限があるのだろうか。だとしたらかなり使えない。…登録時のメルアドに送ってみた。届いた。やっぱり何かしら制限がかかってるということなのか。それとも、自分の使ってる転送メールサービスのほうに制限があるのか。なんだか後者っぽい気もする。確証はないけど。

DL動作の確認後、案内メールを削除した後で、送信者からはファイルを消せないことを知る。しまった。どうしたらいいのだ。容量が一杯になってしまうではないか。…数日経てば自動で消えてくれるらしい。ちと焦った。

ていうか、ファイルをやり取りしたかったら、自宅サーバに置けばいいのか。と思ったが、自宅がネットから遮断されたときのことを考えると、まともに動いてる・ネットと常時接続されてるサーバ上にファイルを置いてやり取りできたほうが良さそうでもあり。うーん。

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

#1 [cg_tools][windows] ImageMagickのどのバージョンを入れるかで悩む

WinXP に、Imagemagick の Windows 用バイナリをインストールしようかと思ったのだけど。Meadow2 に合わせて _ImageMagick 6.0.1-Q16 を入れるか、 _ImageMagick のサイトにある 6.2.2-1-Q16 を入れるかで悩む。もしかしたらどこかで Meadow2 を使うかもしれないし、使わないかもしれないし…。

6.2.2-1-Q16 を入れよう。Meadow2 を使う必要が出てきたら、そのときに考えればいいや。

ということでインストールしようとしたのだけど。

インストールの途中で、「ActivePerl から使えるようにするかどうか」を尋ねてくる。自分の環境にインストールしてる ActivePerl は、5.6.1 で、ImageMagick が対応してると言ってくるバージョンより古い。この際だから ActivePerl も新しいバージョンにしてしまおうかな。

ということで、ActivePerl のバージョンを新しくしてから、ImageMagick-6.2.2-1-Q16-windows-dll.exe をインストール。

#2 [prog][windows] ActivePerl 5.8.6.811 をインストール

ActivePerl-5.8.6.811-MSWin32-x86-122208.msi をDLしてきた。

インストール前に、悩む。自分、今までどうして、わざわざ古い 5.6.1 を入れていたのだったか。5.8.x では何か問題があったから、のはずだけど。

_「ppm」→「install GD」を実行しても「GD」が見つからないと返ってきます。 :

これだ。5.8.x 用の GDモジュールが存在しないから、5.6.1 を入れてたのだった。

別の場所から持ってくれば良かったのか。メモらせてもらって、後で試そう…。
http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/
これはActivePerl 5.8.xを使っている場合に参照されます。そして、
http://ppm.activestate.com/PPMPackages/5.6plus/MSWin32-x86-multi-thread/
はActivePerl 5.6.x用です。

5.6.x用のコンパイル済みのモジュールはPerlの仕様により5.8.xでは使えません。(逆もダメです) で、5.8.x用にコンパイル済みのGDが欲しい時は以下の用に打てばいいです。(ActiveState以外のサイトにppmで繋いで貰って来るわけです)

ppm install http://theoryx5.uwinnipeg.ca/ppms/GD.ppd
または、
ppm
install http://theoryx5.uwinnipeg.ca/ppms/GD.ppd

ActivePerl 5.6.1 をアンインストール :

コントロールパネル → プログラムの追加と削除、でアンインストール。その後、再起動。

環境変数の中から、PERL5OPT=-MWild を削除。 *1

regedit で、 HKEY_LOCAL_MACHINE\SOFTWARE\ActiveState\PerlScript のあたりを削除 < 念のため。 *2

また、C:\AUTOEXEC.BAT の中から、set PERL5OPT=-MWild をカット。バックアップ(?)を兼ねて、別の bat ファイルを作成。貼り付け・保存。 *3

5.8.6.811 をインストール :

ActivePerl-5.8.6.811-MSWin32-x86-122208.msi を実行。インストール。その後、再起動。

cmd.exe で perl -v と打ってみた。5.8.6 が入ってる。

ワイルドカードを使えるようにする :

_ActivePerl でワイルドカードを使う方法
_ActivePerlでは「Wildcard.pm」が必要
今まで Wild.pm を入れてたので、今回もそれで。ありがたや。

今までは環境変数 PERL5OPT に -MWild を指定してたけど。考えてみれば、それほどワイルドカードは頻繁に使ってないような気もしてきた。ということで、件の環境変数を設定するbatファイル *4 を別途用意して、必要なときはそれを呼んでから実行することにしようかと。

_PerlとWin32版Perl、JPerlの進化 :

日本語の扱いについて参考になるページへのリンクが多数。ありがたや。

_Jcode.pm - jcode.pl の後継 :

一応インストールしておこうかしら。以前作ったスクリプトを動かすときにハマりそうだし。「5.8.x は Jcode.pm が内包され〜」等記述してるページもあったりするようだけど、そのものズバリの名前で内包されてるわけではないし。

0.88 と 1.99_07 のどっちを入れようかしら。0.88 のほうは、win_install.pl があるけど、1.99_07 にはない…。うーん。しかし、1.99_07 のほうは、「Perl Version が 5.8.1 以降の場合 Encode の Wrapper として機能する」と書いてあるし…。

よくわかんないので、0.88 を入れた。

後の課題は… :

親父さん用に書いたPerl/Tk利用のスクリプトを、5.8.x でも動くように、とかかな…。いっそ、別のLLで書き直そうかしら。Ruby とか、Python とか。いや、blogツール・日記ツールの類をインストールしてもらって、というのでもいいか。うーん。

*1: 以前、この環境変数が残ってたために、 _ハマった ことがあるので。
*2: 昔はこのへんを削除しないと、別バージョンを後からインストールできなかったので。
*3: ActivePerl インストール時に、C:\AUTOEXEC.BAT の内容を読んで、インストール作業が失敗するので。ウチの環境は、C: = Win98、D: = WinXP なわけで…。C:\AUTOEXEC.BAT を見にいくのは余計な御世話以外のナニモノでもない。…C:\AUTOEXEC.BAT を読むのは、もしかすると WinXP側の設定のせいかもしれないけど。
*4: 例えば perlenv.bat とか。

#3 [nitijyou] レンタルDVDを返してきた

わざわざメモるのはそれだけ外出してないということ。

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

#1 [web] ウイルス入りメールが送られてくるわけだけど

メールヘッダを眺めてると共通部分が。
Received: from unknown (HELO 104.net) (220.6.88.62)
  by acXX.netbees.clubbbq.com with SMTP; 2 May 2004 02:42:17 -0000
上は、Received:の一番最後の内容。つまり、誰がメールを送ってるかについて一番近い情報。らしいけど。ほとんどが、220.6.88.62 から送られてきてるように見える。 _IPドメインSEARCH に入力してみたけどなんやよーわからんですたい。どうしたもんだべ。

この記事へのツッコミ

Re: ウイルス入りメールが送られてくるわけだけど by tito    2004/05/07 01:48
http://www.apnic.net/ のwhoisで調べるとbbtec(YahooBB)ですね。spam,virusの報告は abuse@bbtec.net までとあります。自分のところはspamで困ってます。はぁ。yahooBBじゃないですけど。
Re: ウイルス入りメールが送られてくるわけだけど by mieki256    2004/05/07 12:57
> http://www.apnic.net/ のwhoisで調べると

ありがとうございます!
しかも対策までまとめていただいて…めっちゃ勉強になりますです。

そうか、そうやって調べればよかったのか…
…英文が出てきた瞬間、思考停止する習性を
なんとかしないといけないなぁ…>自分。

#2 [linux] メールアドレス収集ロボットがウザイのでごじゃりまする

でも、自宅サーバが落ちなかったということは、先日の設定変更作業で以前よりマシな状態にはなったということだろうか>自宅サーバ。それはともかく、排除の仕方を勉強して対策しないと。

#3 [zatta] 他者に対して「国語が分かっていない」と言ってる人ほど

自身が国語を分かってなかったりする罠。脳内辞書に頼らず、現存する辞書ぐらいひきませう (;´Д`) >オレモナー。

#4 [zatta] _3Dぺーパー

ペーパーフィギュアなるものがあるのか。うーむ。面白そう。 _(via B.M.Factory)

_セーラームーンのペーパークラフト :

ここまで作れるのか。スゲー。

#5 [zatta] _自転車用ネオンライト

COOL。コレつけて走ってたら、安全性も増す上にカッコイイかもしれぬ。 _(via 雅楽多blog)

_もはや、リトラクタブルライトは当たり前なのだ :

こういうのに憧れてた世代だったりするので、前述の自転車用ネオンライトには胸キュンなわけですよ>自分。

#6 [comic] _擬人化について

18禁。なんだか色んな事を考えさせられてしまう。嘘。

#7 [zatta] _福島・郡山市の山林に放火、中3男子を逮捕

調べに対し、男子生徒は「マスコミで騒ぎになるのがおもしろかった」などと供述しているという。
注目を浴びたいだけなら他に良い方法がいくらでもあるだろうに。福島の人間は発想すら貧しいのか。 _(via カトゆー家断絶)

どのくらいの罰を与えられるのかな :

_森林法。 放火の場合は、 _第202条 とやらが適応されるのかな。
第202条 他人の森林に放火した者は、2年以上の有期懲役に処する。
…たった2年かよ。短かっ。どころか、未成年だから適用されなかったりするのだろうか。

_ぼやで身を焼く八百屋お七 :

江戸時代なら、
物取りでない放火の場合は、放火場所と本人居住の町中を引回したうえ、処刑しました。
ですよ。ちなみにお七は当時17歳だったらしいですな。

「泥棒は家一軒丸ごと盗んでいかないが、火事は家ごと持っていく。だから戸締り以上に火の元には気をつけろ」という言葉があるぐらい火事はヤバイわけです。ましてや放火ですよ。人の意思によって火事を起こそうという悪行。

なのに、2年。…短いなぁ。

関係ないけど :

福島県須賀川市のマスコットキャラクター、 _ボータン。 何か因縁めいたものを感じないでもない… <いやソレ完全に気のせいだから。

#8 [windows] Sleipnirについてもう少し調べてみたり

メモリ使用量が増え続けるSleipnir(以下、旧版と表記 *1 )と、メモリ使用量が増え続けないSleipnir(以下、新版と表記)の違いをまだ調べていたり。

結論 :

色々調べてみたけど、自分の結論としては、Customiz.ini、もしくは Docking.ini の内容によって件の不具合が出る可能性があるのかなぁ、といった感じで。…結局のところ再インストールすれば直る可能性ありといった話になってしまうのだけど。

以下調査内容 :

一応記録も残しとく。

新版と旧版で、内容が異なってたファイルは以下のとおり。
AddrMenu.ini
CloseURL.ini
Customiz.ini
Docking.ini
FvEditor.ini
Gesture.ini
History.ini
LastWnd.ini
Sleipnir.ini
Snapshot.ini
URLFiltr.ini
res\Skin.bmp
res\UserImgS.bmp
Sleipnir.exe = 実行バイナリはさすがに同じだった。となると設定の違いで不具合が起きてた可能性が。とりあえず怪しいのは、Sleipnir.iniではないかと目星をつけてみたり。Sleipnir.iniの違いは以下のとおり。上の行が旧版、下の行が新版。
・ ReBarをフラットなデザインにする
    < _OfficeXPGrip=1
    > _OfficeXPGrip=0

・ クライアント領域の周りに枠を表示する
    < _HideAroundLine=0
    > _HideAroundLine=1

・ 謎
    < ProxyIndex=31
    > ProxyIndex=0

・ ホームページ
    < Homepage=
    > Homepage="about:blank"

・ ステータスバーにURLのみ表示する
    < ShowURLOnly=0
    > ShowURLOnly=1

・ UserAgent
    < UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
    > UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"

・ 新しいウインドウをアクティブにする - アドレスバー
    < ActiveAddressBar=1
    > ActiveAddressBar=0

・ 新しいウインドウをアクティブにする - 検索バー
    < ActiveSearchBar=2
    > ActiveSearchBar=1

・ 新しいウインドウをアクティブにする - パラメーター
    < ActiveParameter=1
    > ActiveParameter=0

・ ファイルが渡されるとSleipnirをアクティブにする
    < ActiveSleipnir=1
    > ActiveSleipnir=0

・ ウインドウの数を制限する - 最大 n
    < TabCount=160
    > TabCount=72

・ エクスプローラバー - お気に入り - ページにフォーカスを移す
    < FavoriteFocusPage=1
    > FavoriteFocusPage=0

・ マウスジェスチャ許容値
    < GestureRecognizedRange=8
    > GestureRecognizedRange=15

・ ダブルクリックスクロールを有効にする - TOP/BOTTOM
    < DblclkScrollTopBottom=1
    > DblclkScrollTopBottom=0
それぞれがどのオプション項目と対応してるのか調べつつ、新版のSleipnir.iniの内容を旧版と同じにして動作確認。 *2 …変化無し。メモリ使用量は止まったまま。ということは、Sleipnir.iniは関係なさげ(爆)。 *3

すると、他の.iniの内容によって不具合が起きてた可能性が。一つ一つdiffで検証してみたり。

AddrMenu.ini はアドレスメニュー拡張設定ファイル。IEのpathが違うだけ。
CloseURL.ini は閉じたURLの履歴。違って当然。
FvEditor.ini はお気に入りエディタ設定。表示項目の幅指定が違うだけ。
Gesture.ini はマウスジェスチャの定義内容。順番が違うだけ。
History.ini は検索バーの履歴。違って当然。
LastWnd.ini は最後に閉じたURLの記録。違って当然。
Snapshot.ini はウインドウの状態の保存・復元用の記録。違って当然。
URLFiltr.ini はURL抽出時のフィルタ情報。違うフィルタを登録してるだけ。
res\UserImgS.bmp はツールバーのボタン用イメージ。画像内容が違うだけ。
res\Skin.bmp はツールバーの背景イメージ。新版では使ってないから違って当然。 *4
…ここまで関係なさげ。

Customiz.iniについては中身が全く異なってて比較しようがない。新版に比べて旧版は16進数での記述部分が多いのだけど、何に関する記述なのかは不明。
Docking.ini は Customiz.ini と同類っぽい内容。何が書いてあるのかさっぱり判らず。

ということで、消去法で、Customiz.ini か、Docking.ini に原因があるのではないかという結論に。試しに、旧版をフォルダごとコピーして、新版の Customiz.ini、Docking.ini を上書きしてみた。…メモリ使用量が増えていかない。やっぱりコレっぽい。

問題なく動いてるほうのSleipnirの情報もメモしておこう :

===========================================================
Sleipnir Version 1.42 バグレポート (2004/05/03)
-----------------------------------------------------------
■ 環境
[OS] WindowsXP Service Pack 1
[IE] 6.0.2800.1106
[RAM] 383MB (168MB Free)
[SHELL32] 6.00.2800.1233 (xpsp2.030604-1804)
[COMCTL32] 5.82 (xpsp1.020828-1920)
-----------------------------------------------------------
■ オプション
* OfficeXP スタイル [ 有効 ]
* マウスジェスチャー [ 有効 ]
* プロキシ [ ダイレクトに接続 ]
* ターゲット名の解決 [ 無効 ]
* タブモード [ 有効 ]
* UserAgent [ カスタム ]
* デフォルトセキュリティ [ SJ--IMV ]
* 標準のブラウザ [ 有効 ]
-----------------------------------------------------------
_先日残した記録 と同じに見えるのですが。うーむ。これではバグの原因追求のための情報として不足なのではないか。

*1: バージョンが同じ1.42なのに、新旧というのも変だけど。まあ、便宜上。
*2: ただ、ProxyIndexとやらが何の項目なのか不明だったので、そこだけは異なる。なんだろう、この項目は。Proxy.iniを旧版のフォルダからコピーして使ってるせいで違ってるのだろうか。正規の手順 = 『プロキシの追加』で追加すれば反映されるのかな。と思って試してみたら、たしかに変化があった。しかし、その数値がProxy登録数と一致していない。謎。
*3: あるいは、ProxyIndexとやらが鍵なのか。…いや。そこは関係無さそうな気も。なんとなく。
*4: 念のため、Skin.bmpを導入した状態でもチェックしたけど、変化無しだった。

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

#1 [pc][prog] zeus.cgiにおいて、timeの取得は正常動作してるようにみえる

Y氏が確認スクリプトを設置してくれた。thx。

予想が外れた :

結果を見てみたところ、$ENV{'TZ'} = "JST-9" の指定はたしかに反映されているらしく、日本時間が帰ってきている。となると昨日の自分の予想は外れた (;´Д`)

他に考えられるのは :

他にあり得るとすれば、タイムゾーン指定をせずにtime値を取得してしまってる部分があるとか、あるいはファイルのタイムスタンプを時間の比較処理に利用してるとか、そういう感じだろうか。それとも、もっと別のところに…と言っても、国内サーバに設置すると正常動作するのに、海外サーバに設置すると異常動作するとなれば、やはりタイムゾーン関係ぐらいしかないような気も。なんにせよ、ソースとにらめっこしないと。

クッキー関連の処理でgmtime使うのは問題無しみたい :

昨日、疑問に思った、 _クッキー関連の処理でgmtimeを使う云々 は特に問題無し、ていうかそうするのが正解みたい。なるほど、勉強になったス。

自分も海外サーバに設置してみようかな :

_該当サーバ は無料サーバなのだろうか。だったら自分もアカウント取って設置・動作確認したほうがいいかな。

と思って少し調べてみたけど、件のサーバは何で稼いでるのだろう。埋め込み or POPUP広告が表示されるならまだわかるけど。ていうか、ITバブルは終わっちゃったわけだし、その手のアカウントを取れる条件って厳しくなってたりしないのかな。最近全然アカウントとか取ったことないから現状がわからないや。

あ、 _情報見つけた。 広告ありか。なるほど。

この記事へのツッコミ

Re: 他に考えられるのは by がんした    2003/05/03 23:11
思いつく可能性としては2つ。

有料サイトだと広告バナーを張り付けるプログラムがありますが、
そいつが拡張子判断してて .html ファイルに自動的に広告バナー表示分の
ソースを書き足してたりする場合、 zeus.cgi が何かしら .html ファイルを
読み出し&上書きするような処理してると、その追加された
広告バナー表示分のソースが邪魔してる可能性。

該当の spaceports.com は URL を見る限り、 .html と .cgi ファイルでは
設置されてる場所が別々のようだ。
http://cgi-bin.spaceports.com/
すると相対パスで指定されてたりすると、プログラム上削除処理してても
実際に削除されるファイルは別の階層にあるので、実際には消されないとか。

うーむ、それぐらいかな。
Re: 他に考えられるのは by mieki256    2003/05/04 02:58
おお。勉強になりますです。
なるほど、広告表示のプログラム動作による影響の可能性か…
たしかにそのあたり、サーバによって処理内容がマチマチだし、
中には強制的に、問答無用でガリガリと埋め込んじゃうのもあるだろうし、
無料サーバで動かす場合には、そのへんも考えておかないとアレですな…

でも今回は、それについては問題無いような気もします。
zeus.cgiが読んでるのは、ログファイル(txt)と、
自身にinclude(require?)してる、cgi 又は plファイルだけで、
幸い、htmlファイルを読んで何か処理するような仕様になってないようなので。
他に扱うファイル種類といっても、アップロードされた画像ファイルや
zip云々の、広告表示とは関係無いファイル種類しかないし。

ていうか。

今、Y氏の設置したzeus.cgiを表示してみて「あっ!」と思ったけど
そもそもあのzeus.cgiの画面、広告が一切表示されてないヨ!(爆)
すると、spaceportsって、
cgi中に自分で広告表示用の文を書き込むタイプのサーバ、ってことかな。
しかし…今の状態がもし見つかったら、速攻で削除されちゃうのでは…
有料で借りてるとかそういうオチならともかく…


もう一つの可能性…ファイルの格納場所が異なるかも、ってやつですが、
仮にそういう状態にあるとしたら、
こりゃもう私如きには対処のしようがないですわ… (;´Д`)

今のところ、件のcgiは、cgi-binの下位に利用するディレクトリを
作っておくような仕様(ありがち)ですが…
でもなぁ…仮に、実体となるディレクトリが別の場所にあるとしても、
そこへcgiから問題無くアクセス云々って、cgi側でどうこうする問題じゃなく、
Webサーバの設定でしておくべき事項のような気もしますな…

もしも、全く別の場所に入ってるファイルに対してもアクセスできるような
処理をcgiにさせるなら、いっそのこと、そもそも別サーバに対しても
処理が出来てしまうようなスクリプトを作るほうが色々と便利でしょうね。
…あー、なんだか以前、がんした氏からそういうスクリプトを
貰ってたような記憶も…たしかftpを使ってたんじゃなかったか…

なんにせよ、後者のように、
「ファイルの置かれてる環境」が不具合の原因になってそうな気もするんで、
そのへんも意識しながらソースを眺めてみますですよ。

#2 [hns] ツッコミをhnfと同列に扱いたい

なんか前にも似たような事を書いたような気がするんだけど。もう一回まとめておこう。

hns導入後、各記事に、非常に為になる有用なツッコミを入れてもらえて助かってたり。これだけでもhns導入した甲斐があったかも。thxです。

現状のhnsにおけるツッコミ機能の問題点 :

しかし、hnsのツッコミ機能は、あくまで掲示板の一種として実装されてる為に問題点があって。hns導入時から懸念してた事だけど、仮に、ある記事で有用な議論が展開された場合、現状のhnsの仕様ではそれら議論を確実に残す事が出来ず、書き込み件数が指定数を超えるとちょっと困った事になる。と言っても今のところ、書き込み件数の設定値をかなり大きい値にしてるので、このペースならあと数年は余裕で持つだろうし、実際に問題は起きないような気もしつつ。 *1 それでも仕様的には、やはり問題として残っちゃってるわけで。 *2

hnsの思想 :

例えばこういったところにも、hnsの思想が見え隠れしているような気もする。おそらく開発者達は、『「hns運用者=書き手」の残すhnfファイル』と『読者によるツッコミ文章』を無意識 or 意識的に比較して、『情報の価値としては、hnf > ツッコミ』と判断した上で仕様決定していたのかな、と。開発者達には、「自分達のほうが読者より、よほど優れた文章・情報を提供するはず」だから「ツッコミ内容は残らなくても問題無し」という自信なり考えなりがあったのではないかと。
しかし、自分などは、自分の書くタコ電波文章より、読者のツッコミの方が、客観性を持つ分、情報としては有用なものが多いのではないかなと思ったりしていて、こういった「読者より書き手のほうがとにかく偉いんだぞー」的思想には首を捻るというか。 *3 かと言って、自分にはガリガリ改造してくだけのスキルも無いわけで。困った。

現実的な対策 :

仮に、ツッコミ内容をhnfファイルと同列に扱おうとした場合、自分でも出来そうな対策としては、掲示板のログ内容を該当hnfに混入していくようなスクリプトを書くぐらいだろうか。とてもじゃないけどhns本体は難しくて弄れそうにないし。と思ったけど、ツッコミ内容をhnfに混入したら、ツッコミである事がパッと見てわかるようなコマンドを新規に用意しないといけない。うわー面倒臭そう。

本当に現実的な対策 :

とか考えると今現在のように、とにかく書き込み指定件数を大きい値で設定しておいて、自分がWeb日記を書くのに飽きてしまうまで運用するか、他のツールを選択・導入してしまうほうがよほど現実的な対策かもしれない。例えば、議論になりそうな(議論になってる)記事に関しては、Wikiを導入して、そちらにログを移行して話を進めるとか。となると、hnfフォーマットが流用できるWikiとか、hnf→Wikiフォーマット(っていうの?)変換スクリプトがあるとログの移行が楽になって便利、とかいう話になっていくのだろうか。

*1: そもそも数年後、こうして自分はWeb日記を書いてるだろうか…うーん。
*2: 「ログが残らないほうが嬉しい」という利用者も居る場合は、現在の仕様がプラスに働くだろうけど。
*3: 考え過ぎかもしれないけど、こういった部分にhns開発コミュニティの選民思想(?)っぽい雰囲気を感じたりもして。更にこのへん、一部のMTコミュニティにもなんだか同種のものを感じたり。…やっぱり考え過ぎかな。ていうかUNIX系OSを触ってる人達って、Winユーザに対してデフォルトで「俺達のほうが偉いぞ」的感情を持ってるみたいだし、同様にMacユーザ、あるいはWinユーザもそういった人がたまに居たりして、取り立てて○○コミュニティが云々、って話じゃないのかも。

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

#1 なるほどねぇ…

自鯖へのアクセス急増の理由がわかりましたですよ。(たぶん…)
_(以下略。長いです。自鯖のBBSに書いた内容をまとめたようなものですが。)
昨日書いてた不具合は、どうやらサーバへのアクセス過多が原因っぽいです。予想を遙に越えてました。
それにしても、こういう切羽詰った状況にならないと、知識を吸収しようという気にならないナマケモノの自分を再確認。


親父さんと水汲みに _藤沼神社 まで。
久しぶりに巨大杉を見てきたんですが。
人間の一生も、この杉にしてみればほんの一瞬なんだろうな、とか考えるとなんか妙な気分に。

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

#1 X68Kモニタ

「バッターはマルチです」と聞き間違えてみたいと思ったり思わなかったり。


仙台に帰った弟の置き土産(モニタケーブル)で、X68KモニタとPC-9821As3の接続実験開始。

起動したら、グチャグチャな画面が。あぅ
(モニタ側→24KHzモードLED点灯)

GRPH+1を押しながらリセット。
見なれたメニュー画面が正常表示。
よっしゃ。

縦横比を調整するため、HDDに残ってる適当なゲームを起動。
モニタのスピーカから音楽が流れてビックリ。
この時代のモニタケーブルって、映像信号のみならず、音声信号も流してたとは。
それってある意味、今より使いやすいんじゃ…?

さて、重要なのはWindows画面が表示できるかどうか…
Windows95を起動。

ダメでしたー (T▽T)
(モニタ側→31KHzモードLED点灯)

1024x768表示は完全に無理。画面グシャグシャ。
640x480表示は、各ドットはしっかり見えてるけど…
横方向は画面外にはみ出すほど引き伸ばされ、縦方向はキュッと縮んでしまってる。
画面のプロパティでディスプレイ種類を変更してみたり、モニタ側の調整つまみをいじってみましたが、どうにもならないようで。

まあ、Win95はLANを介したデータのやり取り用に入れてあるだけだし。
DOS上でLAN接続・データ転送が出来れば用は済むんですが。
あるいは、Win95のレジストリを弄って、正常表示にもってければ助かるけど。
少し調べてみようっと。

しかし、仮に問題解決したとして。
そのPC-98を今後起動する機会があるのかどうかは聞かないでください(爆)

このX68Kモニタ、時々水色っぽい画面に <RGBのRが出てない模様
こういう時は左45度の角度でチョップだー。あちょー

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

#1 なぜ光るですカー

外は雷雨。
落雷が怖いので、PCやモニタの電源を落としていたです。
することも無いので、布団に横になって、らくがきをしてたのですが。
なんだかパソコンデスクのあたりから、妙にチカチカと光が出てるですよ。
…雷が落ちるたび、モニタの中央あたりが、ジッ!ジッ!とかすかな音を出しながら、激しく光ってるんです。なんだかスパークしてるみたいに。
こ、こ、こ、怖いよ〜 (TOT)

今こうしてこれを書いてるということは、PCやモニタ、無事だったって事なんですが。
しかし、アレは一体何だったんだろう (/o;)

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

#1 (NoTitle)今日は…うわー、何も...

今日は…うわー、何もしてないや。犬の前でタバコ吸ってたことぐらいしか思い出せない。(-.-)y-.。o○
せっかくのGWだというのに…ひえええ。(→o←)ゞ

あ、描き方入門、作成ペースが遅くなってます。スンマセン。(って誰も目にしてないだろうけど。(^_^;) )
しかし…どうも作っていて、なんだか目標、というか目的が絞り込めてないような気がするんです。それこそFLASHの使い方なんてのは、そのへんの本を見たほうがアレだろうし(本によって出来不出来はありますけど)……むぅ、テーマ間違えたかな。もっとシンプルに「オイラはこうしてる」風のほうがいいのかな。(-_-;)

そういや最近、エクスプローラの動作が変です。詳細表示をすると、各幅が妙に狭くなる…。バグか? それとも何かのアプリのせい? (-_-;)

以上、26 日分です。

過去ログ表示

Prev - 2024/10 - 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 31

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project