mieki256's diary



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

#1 [hsp] hsp3dishの動作確認中

Windows10 x64 22H2 + HSP 3.7 beta7 で、hsp3dish の動作確認中。

動作確認に使っているPCのスペックは以下。
_昨日、hsp3dish を使ってフルスクリーン表示をするプログラムを書いた のですが。これをメインPC上で動かしたら、あっさり60FPSが出て喜んだものの。

サブPCで動かしてみたら 12 - 17FPSしか出なくて…。そんな速度しか出ないのかよ。ガッカリ。

そこで、ふと、もしかして、サブPC上では GPU を使って描画できていないのでは? と不安になってきて、そのあたりを検証せねばなるまい、と…。

HSPの標準機能だけで描画してみる :

とりあえず、HSPの標準機能の描画だけを使って試してみた。ソースは以下。hsp3dish関係の命令をコメントアウトしただけですが。

_fullscreen_normal.hsp
    ; HSP normal + fullscreen test. not use hsp3dish
    ;
    ; Windows10 x64 22H2 + HSP 3.7beta7
    
    ; #include "hsp3dish.as"
    #include "d3m.hsp"
    
    #packopt name "fullscreen_normal"
    #packopt type 0
    
    #define TEX_FILE    "texa2.png"
    #pack   TEX_FILE
    
    #define KB_ESC  $000080
    #define FRAMERATE   60
    
    ; get desktop size
    dispx = ginfo_dispx
    dispy = ginfo_dispy
    
    ; initialize window without frame
    bgscr 0, dispx, dispy, 0, 0, 0
    
    ; load image
    imgid = 3
    celload TEX_FILE, imgid

    ; split image, set orign.
    celdiv imgid, 512, 512, 256, 256

    ; Set the buffer to draw from. Windows ID 0
    gsel 0, 1
    
    ; Set screen clear color to be performed when redraw 0 is called.
    ; 0 or 1, color ($000000 - $ffffff)
    ; setcls CLSMODE_SOLID, $4080c0
    
    font "Tahoma", 24, 1
    
    angle = 0.0
    
    time_start = d3timer()
    
*mainloop
    ; ESC key to exit
    stick key, 0
    if key & KB_ESC : goto *jobend
    
    tm = d3timer() - time_start
    fps = d3getfps()
    
    angle += 0.5
    
    redraw 0            ; draw start
    
    ; clear screen
    ; color 64, 128, 192
    ; boxf
    
    objmax = 64
    repeat objmax
        r = double(dispy) * 0.5
        a = angle + (270.0 / double(objmax)) * double(cnt)
        x = int(r * cos(deg2rad(a))) + (dispx / 2)
        y = int(r * sin(deg2rad(a))) + (dispy / 2)
        d = double(cnt) / double(objmax)
        
        ; draw image by crlput
        gmode gmode_rgb0    ; alpha channel enabled. Semi transparency disabled.
        pos x, y
        
        scale = 8.0 - (7.5 * d)
        idx = (cnt \ 4)
        rot = deg2rad(angle * 2.0 + 360.0 * d)
        celput imgid, idx, scale, scale, rot
    loop

    color 255, 255, 255
    pos 10, 10
    mes strf("[%dx%d] %d/%dFPS", dispx, dispy, fps, FRAMERATE)
    
    redraw 1            ; draw end. screen refersh
    
    await (1000 / FRAMERATE)
    ; await 12
    goto *mainloop
    
*jobend:
    end

使用画像は以下。

_texa2.png


動かしてみたところ…。
  • メインPC : 7FPS
  • サブPC : 1FPS。数値では1FPSと出てるけど、実際は1FPSすら出ていない感じ。

60FPS が 7FPS に、12FPS が 1FPS に落ちてしまったわけだから、hsp3dish はちゃんとGPUを使って高速描画してくれていたようだなと…。単にサブPCのオンボードGPUが非力すぎるのだろうなあ…。

OpenGL と DirectX のどちらを使うか :

hsp3dish の利用時、OpenGL を使っているのか、DirectX を使っているのか、そのあたりが気になり始めた。

サブPCのオンボードGPUは Radeon R3 だけど、AMD/ATI製GPU の OpenGL周りは色々と不具合があって何かと弱かった記憶があるので、もし hsp3dish が OpenGL を使っているのだとしたら、DircetX を使うように変更することで速度が改善したりしないか、と…。

ただ、hsp3dish で、「OpenGL じゃなくて DirectX を使え」と指示する方法が分からない…。setreq や getreq を使うのだろうか…?

_HSP3Dish プログラミングマニュアル・基本仕様ガイド

スクリーンの初期化をする bgscr の周辺に挿入してみたけれど、これで本当に DirectX が使われているのかどうか…? HGIMG3 の場合は hgini とやらを呼んで初期化が必要になるらしいけど、hsp3dish では該当する命令が見つからない…。

    ; get desktop size
    dispx = ginfo_dispx
    dispy = ginfo_dispy
    
    ; initialize window without frame
    bgscr 0, dispx, dispy, 0, 0, 0
    
    ; DirectX mode enable
    setreq SYSREQ_DXWIDTH, dispx
    setreq SYSREQ_DXHEIGHT, dispy
    setreq SYSREQ_DXMODE, 1
    cls 4
    
    getreq dxmode, SYSREQ_DXMODE
    getreq devlost, SYSREQ_DEVLOST
    getreq dxresult, SYSREQ_RESULT

確実に DirectX を使いそうな HGIMG3 を利用して動作確認してみるべきだろうか…。

#2 [movie] 「ゴジラ2000 ミレニアム」を視聴

BS12で放送されていたので視聴。初見。ゴジラとUFOが戦う映画、らしい。

2000とついているけれど、公開されたのは1999年。Wikipediaの記述によると、1年前の1998年にハリウッド版ゴジラが公開されたものの、日本国内から「こんなのゴジラじゃねえ」と不満の声が上がったのを見て、ゴジラ新作の需要があると踏んで企画されたそうで…。当時のゴジラシリーズとしては最高額の予算をかけて作ったのだとか。

_ゴジラ2000 ミレニアム - Wikipedia

感想としては…。うん…。ハリウッドの映像制作技術は凄いなと…。圧倒的な差をつけられちゃったなと…。 *1

実写の空撮映像に着ぐるみのゴジラを合成するカットは興味深かった。どういう映像にしたかったのかは全然分かるし、そういう映像を作ろうとした姿勢は称賛されるべきと思ったのだけど。しかし、実写の空撮映像はカメラが動いて映像がブレるわけで、ゴジラの位置合わせはずれてるわ、色調その他の調整もイマイチだわで、強烈な「合成してまーす」感が…。今なら実写映像から特徴点を見つけてトラッキングして、位置合わせぐらいならキッチリできるんだろうけど、当時の日本には本当に技術/ノウハウが無かったんだなあ、と…。考えてみたら「シンゴジラ」は空撮シーンの都市景観すらCGで作ってたんだっけ。日本のVFXって随分と進歩したんだなと再認識。

特撮監督は川北監督から変わって、川北監督の元で助監督をしていた鈴木健二監督になったそうで。

_鈴木健二 (特撮監督) - Wikipedia

そのせいか、大胆な構図のカットがいくつかあったような印象も受けた。もっともそのあたりはコンテを描いた方の功績なのだろうか。でも、コンテにOKを出すのは、やはり監督さんのような気もするし。

ラストのあたりは、ちょっとビックリ。なんだか平成ガメラ3のソレを思い出したりもしたけれど…。海にのそのそと帰っていくゴジラの後ろ姿をボヘーッと眺めつつ人間がとってつけたようなそれっぽいことを突然喋り始める、みたいな定番のラストではなかったあたりは好印象。いやまあ、なんかそれっぽいことはやっぱり喋ってたけど…。

怪獣映画の終わり方って、他にはどういう手があるんだろう、などと少し考え込んでしまった。ゴジラが海に帰っていくのは、海に囲まれている日本という国で育った人達が作っているから、だよな…。なんでもかんでも海に流してしまえばなんか一応問題解決したような錯覚をしちゃう国民性があるからで…。もし、海が無い国で育った人が怪獣映画を作ったら、一体どういうラストにするんだろう…? ゴジラ、どうやって片付ける…?
*1: そのカットを実現するためには何をどうしたらいいのか、その都度分析したり、研究したり、リハーサルをしたりしてノウハウを蓄積していくあちらさんと、「昔からこうやってるんだから」で思考停止して手癖で片付けちゃう日本では、ここまで差がつくのだろうな、みたいなことも思ってしまった。まあ、「STAR WARSから学ぶものは何も無い」と言い切っちゃうのが邦画界だから仕方ないのかも。あちらさんが何を持っていて、自分達が何を持ってないか、それすら気づけないと進歩する可能性もゼロなわけで…。あちらの方々は日本の映画も結構褒めるけど、いつかそれを自分達も獲得してみせるぞという、学ぶ意欲に満ちているからこそガンガン褒めるのだろう、と思うのだよな…。何かを見て、褒める部分を見つけられない人/組織/業界は、もはや成長する見込みが無い…。って自分にとってもブーメランだなコレ…。

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

#1 [tic80] TIC-80の動作確認

TIC-80 のバージョンが 1.0.2164 になってたのでDLして動作確認。環境は Windows10 x64 21H2。今まで手元にあったのは、TIC-80 0.90.1723 だった模様。

TIC-80 というのは、2Dゲームを作るための仮想ゲーム機とでもいうか…。Fantasy Computer、あるいは Fantasy Console と呼ばれるジャンルのソフト。テキストエディタ、ドットエディタ、マップエディタ、サウンドエディタ、ミュージックエディタが全部入ってるので、1つの .exeファイルをダウンロードして実行するだけで、ファミコンライクな2Dゲームをすぐに作り始めることができる。

さておき。以前書いたプログラムをいくつか動かしてみたけれど、SCN() を使ったラスタースクロール処理がちょっと妙な動作になった。以下のプログラムを動かせば画面下半分が上下反転するはずだけど、反転してくれない…。

_mieki256's diary - TIC-80でラスタースクロール処理その2

フォルダを指定する記述について。 :

昔の tic80.exe (0.70.6 だった頃) は、「tic80 .」と指定するとカレントフォルダをシステムフォルダとして使うことができていたけど。現行版 1.0.2164 は「tic80 --fs=.」と指定しないといかんらしい。

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

#1 [nitijyou] コロナワクチンを打ったところが痛い

昨日コロナワクチンを接種してきたわけだけど、巷のデータ通り、注射した部分が痛いなと…。服を着替える際、袖に腕を通そうとして少し角度を上げるだけでもツライ…。トイレに入ってパンツを降ろそうとする際に、パンツのゴムを広げる動作をするだけでもツライ…。いやまあ、そういう動作をするだけでも、大体このあたりの筋肉を使っているのだな、てな感じの新たな発見はあるわけだけど。それにしても、痛い。

ちなみに、首や肩のあたりの、重い肩こりに似た感じの痛みは無くなってくれた。

#2 [anime] 「ヴァイオレット・エヴァーガーデン 特別編集版」を視聴

金曜ロードショーで放送されていたので視聴。京都アニメーションが作った1クールのTVアニメシリーズを2時間の尺に編集した版、ということらしい。来週は劇場版が放送されるらしいので、今回は基本設定を理解してもらうための放送、ということなのかなと。

TVシリーズについては本放送時に視聴していたはずなのだけど、話をすっかり忘れていたので、それなりに楽しめた。相変わらず映像はスゴイし、そこを見てるだけでも結構至福の時間と言うか。

ただ、初見の人がこの編集版で設定を理解できたのかどうか、そのあたり不安ではあるなと…。そもそも、一般向きの作品ではないような気もするのだよな…。戦場で活躍した美少女強化人間が両腕を失って義手になって、みたいな設定が理解されるのかどうか。そのあたりは結構オタク向けの設定じゃないのか。いやまあ、若い人なら受け入れられるかもだけど、例えば視聴者としてお爺ちゃんお婆ちゃんを想定した場合はそういうのってどうなんだろう、みたいな。

放送するにあたって、「泣きアニメNo.1」みたいな番宣をしてたけど、それは逆効果だったりしないか…。ハードルが上がっちゃうのでは…。とは言え、他にどういう宣伝文句があるのかと問われてしまうと、これまたかなり悩んでしまう。「映像がとにかく奇麗ですよ」系の売り文句では、「今時のアニメってどれもそうじゃん」「新海アニメと比べたらなあ」等々言われてしまいそうでもあるし…。そう考えると、「泣けるよー」系の宣伝が妥当なのかなあ…。他にアピールできるところは…。

余談。某所で「戦後、職にありつけたランボー」「美少女擬人化ランボー」と称されていて笑ってしまった。いやまあ、たしかに。

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

#1 [godot] Godot EngineでメインシーンとHUDシーンを合体

Godot Enigne 3.2.3 x64 の勉強を兼ねて、Apple Catcher っぽいゲームを作成中。

前回はHUDシーンを作ったので、今回はHUDシーンをゲームのメインシーンに合体させる。また、プレイヤーが林檎を取ったらスコアを増やす処理や、ゲーム開始時とゲームオーバーの処理も追加する。

今回の作業で、一応そこそこゲームっぽい見た目になってくれるはず…。

メインシーンにHUDシーンを追加。 :

Main.tscn を開き、子ノードとしてHUDシーンのインスタンスを追加する。Mainノードを選択して、上のほうにあるインスタンス追加(?)ボタンをクリック。

godot_tuto14_main_add_hud_ss01.png


assets/Hud.tscn を選択。

godot_tuto14_main_add_hud_ss02.png


HUDシーンが追加された。画面にもHUDが表示されて、ますますゲーム画面っぽい見た目になってきた。

godot_tuto14_main_add_hud_ss03.png

メインシーンにスクリプトを追加。 :

メインシーンにスクリプトを追加する。Mainノードを選択して、スクリプトをアタッチ。

godot_tuto14_main_add_hud_ss04.png


res://scripts/Main.gd として保存・作成する。

godot_tuto14_main_add_hud_ss05.png


スクリプトを編集するエディタ画面が開かれた。

godot_tuto14_main_add_hud_ss06.png

HUDシーンのシグナルをメインシーンのスクリプト内メソッドに接続。 :

HUDシーンは、スタートボタンが押された時に new_game というシグナルを出すように作ってある。その new_gameシグナルに、メインシーンスクリプト Main.gd 内のメソッドを接続して、ゲーム開始時の処理を Main.gd 内に記述することにする。

ノード一覧ウインドウ内で、Hudノードを選択。

godot_tuto14_main_add_hud_ss07.png


ノードタブをクリックすると、シグナル一覧の中に new_game というシグナルが見えるので、選択して「接続」。

godot_tuto14_main_add_hud_ss08.png


Mainノードを選択して「接続」。メソッド名はそのままでいい。

godot_tuto14_main_add_hud_ss09.png


メインシーンスクリプト Main.gd 内に、_on_Hud_new_game() というメソッドが追加された。

godot_tuto14_main_add_hud_ss10.png


これで、スタートボタンをクリックすると _on_Hud_new_game() が呼ばれる状態になった。このメソッドの中にゲーム開始時の処理を記述していけばいい。

プレイヤーシーンのシグナルをメインシーンのスクリプト内メソッドに接続。 :

プレイヤーシーンについても、HUDシーンと同様に作業していく。

プレイヤー側では、「林檎を取った時」と「爆弾に当たった時」にカスタムシグナルを発行するようにして、そのシグナルを Main.gd 内のメソッドと接続してやれば、「林檎を取った → 点数を増やす」「爆弾に当たった → ゲームオーバーにする」といった処理が実現できる。

プレイヤーシーンスクリプト Player.gd に記述を若干追加する。内容は以下になる。

_Player.gd
extends Area2D

signal get_apple
signal player_dead

export var speed = 600
export var w = 96
var screen_size
var deaded = false

func _ready():
    screen_size = get_viewport_rect().size
    $AnimationPlayer.play("idle")

func _process(delta):
    if deaded:
        return
        
    var velocity = Vector2()
    if Input.is_action_pressed("ui_right"):
        velocity.x += 1
        $Sprite.flip_h = true
    if Input.is_action_pressed("ui_left"):
        velocity.x -= 1
        $Sprite.flip_h = false
        
    if velocity.length() > 0:
        velocity = velocity.normalized() * speed
        $AnimationPlayer.play("walk")
    else:
        $AnimationPlayer.play("idle")
    
    position += velocity * delta
    position.x = clamp(position.x, w/2,  screen_size.x - (w/2))


func _on_Player_body_entered(body):
    if deaded:
        return
        
    if body.kind == "Apple":
        emit_signal("get_apple")
        body.queue_free()  # kill Apple
    else:
        dead()

func dead():
    emit_signal("player_dead")
    
    deaded = true
    $AnimationPlayer.play("dead")
    $CollisionShape2D.set_deferred("disabled", true)
    
    # wait 3 sec
    yield(get_tree().create_timer(3), "timeout")
    
    deaded = false
    $AnimationPlayer.play("idle")
    $CollisionShape2D.disabled = false

スクリプトの最初のほうに、「林檎を取った時」と「爆弾に当たった時」に使うカスタムシグナルが追加してある。
signal get_apple
signal player_dead

godot_tuto14_main_add_hud_ss12.png

そして、「林檎を取った時」は emit_signal("get_apple") を呼び、「爆弾に当たった時」は emit_signal("player_dead") を呼んでやれば、それぞれのタイミングでシグナルが発行される。

プレイヤーシーン側でカスタムシグナルを用意できたので、Main.gd 内のメソッドと接続してやる。Playerノードを選択。

godot_tuto14_main_add_hud_ss11.png


ノードタブをクリックして、get_apple() を選択して「接続」。

godot_tuto14_main_add_hud_ss13.png


Mainノードを選択して「接続」。

godot_tuto14_main_add_hud_ss14.png


同様に、player_dead() シグナルも接続してやる。player_dead() を選択して「接続」。右クリックして「接続」を選んでも良い。

godot_tuto14_main_add_hud_ss15.png


Mainノードを選択して「接続」。

godot_tuto14_main_add_hud_ss16.png


これで Main.gd 内に、以下のメソッドが追加された。
  • _on_Player_get_apple() : プレイヤーが林檎を取った時に呼ばれるメソッド
  • _on_Player_player_dead() : プレイヤーが爆弾に当たった時に呼ばれるメソッド
それぞれのメソッドに、処理を書いていけばいい。

godot_tuto14_main_add_hud_ss17.png


Main.gd 内に、ゲーム開始時の処理、スコア増加、ゲームオーバー時の処理を書いてみた。内容は以下になる。

_Main.gd
extends Node

var game_title = "NEWTOTOTONE"
var score = 0

func _ready():
    score = 0

#func _process(delta):
#   pass

func _on_Hud_new_game():
    new_game()

func _on_Player_get_apple():
    add_score()

func _on_Player_player_dead():
    game_over()

func new_game():
    score = 0
    $Hud.update_score(score)
    $ItemGenerator.start()
    
func add_score():
    score += 10
    $Hud.update_score(score)
    
func game_over():
    $ItemGenerator.stop()
    $Hud.show_message("GAME OVER")
    yield(get_tree().create_timer(3), "timeout")
    
    # todo: kill all items
    
    $Hud.show_message(game_title)
    $Hud.show_startbutton()

  • _on_Hud_new_game() : スタートボタンが押されたときに呼ばれるメソッド。
  • _on_Player_get_apple() : プレイヤーが林檎を取った時に呼ばれるメソッド。
  • _on_Player_player_dead() : プレイヤーに爆弾が当たった時に呼ばれるメソッド。
  • new_game() : ゲーム開始時の処理。
  • add_score() : スコアを増やす処理。
  • game_over() : ゲームオーバー時の処理。

ゲーム開始処理やゲームオーバー処理を書いたので、林檎や爆弾を発生させる ItemGenerator.gd にも若干の修正が必要になる。ゲームが開始されるまでは、林檎や爆弾を発生しないようにしたい。

ItemGenerator.gd の内容は以下になる。以前書いたスクリプトとの違いは、_ready() 内の start() をコメントアウトした部分だけ。

_ItemGenerator.gd
extends Node2D

export (PackedScene) var Apple
export (PackedScene) var Bomb
export var w = 96
var rnd = RandomNumberGenerator.new()
var screen_size
var born_rate = 100
var born_enable = false

func _ready():
    rnd.randomize()
    screen_size = get_viewport_rect().size
    born_rate = 100
    born_enable = false
    
    # start()  # Delete in production environment

func start():
    born_enable = true
    born_rate = 100

func stop():
    born_enable = false

func generate_item():
    if born_enable:
        var x0 = w / 2
        var x1 = screen_size.x - (w / 2)
        var x = rnd.randi_range(x0, x1)
        var item
        if rnd.randi_range(0, 100) > max(20, born_rate):
            item = Bomb.instance()
        else:
            item = Apple.instance()
        item.position.x = x
        item.position.y = -w
        $Items.add_child(item)
    
func update_rate():
    if born_enable:
        born_rate -= 3
        if born_rate <= 1:
            born_rate = 100

実行結果。 :

F6キーを押して実行してみる。



  • スタートボタンを押すとゲームが始まってくれた。
  • 林檎を取るとスコアが増えてる。
  • 爆弾に当たるとゲームオーバーになる。
ちゃんとゲームっぽい感じで動いてくれた。

次回は、もっとゲームらしくなるように雑多な装飾をしてみる。BGMや効果音をつけてみたり、背景画を表示したりする予定。

スクリプトの補足。 :

スクリプト内に、以下のような記述が出てくるけれど。
yield(get_tree().create_timer(3), "timeout")

これは Godot Engine において「n秒間待ってからその後の処理を続ける」というお決まりの書き方らしい。

おそらくだけど、その場でTimerノードを発生させて、Timerノードがn秒経過するとtimeoutシグナルを出すからそれを待つ、という処理をしているのではないかなと…。たぶん。理解が間違ってるかもしれないけど。

2019/10/29(火) [n年前の日記]

#1 [proce55ing][processing] Processingについて再勉強中

Processing について再勉強中。

Processing用に書いたソースを JavaScript で動かす方法があったような気がするのだけど、どうやるのだったか…。

ググってみたら、p5.js なるものが目に入った。しかし、どうやらコレは、Processing (Java) の書き方ではなく、JavaScript の書き方で最初から書いていくものらしい。

Processing用のソースをそのまま動かすのは、processing.js を使うようで。ただ、processing.js は、開発が止まってしまっている。関連ページにも、「p5.js の完成度が高くなってきたから processing.js は開発を止めますわ」みたいな文章が書いてあった。

すると、最初からWebブラウザ上で動作させることを念頭に置いているなら、わざわざ Processing で書かずに p5.js で書こうぜ、という流れになってきているのだろうか…。

とりあえず、Visual Studio Code に、p5.js 用の拡張をいくつか入れて、ちょっと試し始めたりして。

_p5.jsのスケッチがはかどるVisual Studio Codeの拡張機能4選+α - infosmith.biz
_p5.jsのお供に「Visual Studio Code」をオススメする理由 - infosmith.biz
_p5jsのための開発環境構築 - KanoLab

#2 [web] GoogleがJavaScriptライブラリの提供を辞めていたと今頃知った

processing.js 用の html を書いていた際に、Google が公開していたはずの html5shiv.js が404になっていたことに気づいて。ググってみたら、2015年頃に、その手のサービスは終了していたと今頃知った。

_【Web制作】Google Codeが終了→html5shivでIE8のHTML5対応している人は注意!
_Google Code閉鎖の対応 | cly7796.net
_javascript - HTML5 Shiv Google CDN Link Not Working - Stack Overflow

「皆で同じURLからスクリプトをダウンロードするほうが、ブラウザのキャッシュにもヒットして、トータルでは転送量が減るからメリットがある」という主張をどこかで目にしていたので、自分も真似ていたのだけれど。こういうことがあるのではなあ…。確実に動作させたいなら自前のサーバに置いて使ったほうがいい、ということかな…。

2018/10/29(月) [n年前の日記]

#1 [pc] BDFフォントについて調べていたり

TIC-80 で使われている以下のフォントを眺めているうちに、ビットマップフォントについて興味が湧いてきて。

_A very tiny, monospace, bitmap font

ビットマップフォントと言えばBDFフォントだろう、Windows上で BDFフォントを使う手段は無いのかなと、なんとなくググり始めたり。まあ、TTF に変換して使うという手はあるらしいのだけど…。

_how to use BDF fonts on Windows, convert to TTF with bdf2ttf

Windows上でBDFフォントを直接読んで画像に文字列を上書きしたりできるツールは無いのだろうかとググってみたもののこれが全く見つからず。それどころか、BDFフォントに対応したビューアの類すら見つからない。

まあ、GIMP ならBDFフォントも使えるっぽいので、それでどうにか、ということになるのだろうか。

今時は高解像度のディスプレイもそれなりに普及してるだろうし、フォントはアンチエイリアスをかけて表示するのが当たり前になってるところもあるから、PC上でビットマップフォントを使う場面なんてほとんどないだろうし、関連ツールがほぼ存在しないのも仕方ないか…。電子工作で、解像度の低い液晶上に表示する、といった場合は使えそうではあるけれど。

#2 [game] 2Dゲームのカメラ移動

たまたま何かの拍子に、2Dゲームのカメラ移動について、その種類を網羅した記事に遭遇。

_Gamasutra: Itay Keren's Blog - Scroll Back: The Theory and Practice of Cameras in Side-Scrollers

スクリーンショットを見ているだけでも楽しい…。

さておき、地面と設置した時だけy座標を合わせるやり方を知って「その手があったか…」と恥ずかしながら今頃目ウロコ。

こういうのって、二人同時プレイの仕様だと、更に面倒なことになるんだよな…。片方が踏み止まっている状態で、もう片方が先に行こうとしたらどうなるの、とか。先に行ってる側を優先して、後から来てる側をズリズリ引っ張るのか。それとも後から来てる側を優先して、先に行ってる側が進めないようにしちゃうのか。どれが正解なんだろうな…。

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

#1 [prog][windows] Windows10 x64にMSYS2を再インストール

Windows10 x64上で go-sdl2 を使えないものかと思ったわけで。

go-sdl2 の README.md を眺めると、mingw-w64 だか MSYS2 が必要と書いてあるように見えたのと、golang 64bit版との兼ね合いで MSYS2 64bit版が必要になりそうな雰囲気を感じたので、今までインストールしてあった MSYS2 32bit版をアンインストールして、MSYS2 64bit版をインストールすることにした。

_MSYS2 homepage

参考ページ。 :

MSYS2 64bit版をインストール。 :

msys2-x86_64-20161025.exe をDLして実行。今回は D:\msys64 にインストールした。

スタートメニュー → MSYS2 64bit → MSYS2 MSYS を実行。mintty が起動する。試しに uname -a と打つと、i686 (32bit) なのか、それとも x86_64 (64bit) なのか、等の情報が表示される。

pacman -Syu と打ってパッケージを更新。最初の1回目はbashを更新するので処理終了後無反応になる。ウインドウを無理矢理閉じる。その後、また MSYS2 MSYS を実行して、pacman -Syu でパッケージを更新。exit で終了。

世の中には問答無用で C:\msys64 が存在するものとして処理をしてしまうアプリが存在するので、今回インストールした D:\msys64 から C:\msys64 にシンボリックリンクを作成。

MSYS2 32bit版をインストール。 :

Rubyinstaller2 の関係で、MSYS2 32bit版も必要になりそうな気がする。MSYS2 32bit版もインストールしておく。

msys2-i686-20161025.exe をDLして実行。D:\msys32 にインストール。

スタートメニュー → MSYS2 32bit → MSYS2 MSYS を実行。mintty が起動する。64bit版と同様に pacman -Syu を繰り返してパッケージを更新。1回目は強制終了。2回目はexitで終了。

問答無用で C:\msys32 があるものとして処理するアプリが存在するので、D:\msys32 から C:\msys32 にシンボリックリンクを作成。

MSYS2上でmingw等をインストール。 :

スタートメニュー → MSYS2 MSYS を起動。

pacman -S パッケージ、でインストールができる。以下をインストール。
pacman -S git base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain

それぞれ、どのパッケージをインストールしてくるか尋ねてくる。
  • base-devel は Enter を叩いて全部入れた。
  • mingw-w64-i686-toolchain と mingw-w64-x86_64-toolchain は、ada、fortran 関係は除外してインストールした。入力値としては「1 2 3 7 8 9 10 11 12 13 14 15 16 17」を打った。
  • 後になって気づいたけど、objc は Objective-C のことだったのだな…。自分は使わないから、ソレも除外しておけばよかった…。

~/.bashrcを変更。 :

環境変数 HOME が示すディレクトリ内に、~/.bashrc 等を作成した。おそらく標準では、C:\msys64\home\ 内にその手のファイルが作られるのだろうとは思うけど…。

mintty 起動時に ~/.bash_profile が読まれるので、その中で「 ~/.bashrc が存在するなら読んどけ」と指示。

.bash_profile
# base-files version 3.1-4

# ~/.bash_profile: executed by bash for login shells.
if [ -e /etc/bash.bashrc ] ; then
  source /etc/bash.bashrc
fi

if [ -e ${HOME}/.bashrc ] ; then
  source ${HOME}/.bashrc
fi

# Set PATH so it includes user's private bin if it exists
if [ -d ${HOME}/bin ] ; then
  PATH=${HOME}/bin:${PATH}
fi

# Set MANPATH so it includes users' private man if it exists
# if [ -d ${HOME}/man ]; then
#   MANPATH=${HOME}/man:${MANPATH}
# fi

# Set INFOPATH so it includes users' private info if it exists
# if [ -d ${HOME}/info ]; then
#   INFOPATH=${HOME}/info:${INFOPATH}
# fi

~/.bash_aliases に alias を列挙。

.bash_aliases
alias ls='ls --show-control-chars --color=auto'
alias ll='ls -al'

~/.bashrc の中で「 ~/.bash_aliases があるなら読んどけ」と指定。それと、プロンプトを変更。

.bashrc
# export TERM=msys
# export OUTPUT_CHARSET=UTF-8
# export TZ=JST-9
export LANG=ja_JP.UTF-8
# export LC_ALL='C'
# export TPUT_COLORS=256

if [ -f "${HOME}/.bash_aliases" ]; then
  source "${HOME}/.bash_aliases"
fi

# PS1='\[\e]0;\w\a\]\[\e[32m\]\u@\h \[\e[35m\]$MSYSTEM\[\e[0m\] \[\e[33m\]\w \[\e[0m\]\$ '
PS1='\[\e]0;\u@\h: $MSYSTEM: \w\a\]\[\e[01;32m\]\u@\h\[\e[00m\]: \[\e[35m\]$MSYSTEM\[\e[00m\]: \[\e[01;34m\]\w\[\e[00m\]\$ '

case "${MSYSTEM}" in
MINGW32)
  GOROOT=/mingw32/lib/go
  GOPATH=$HOME/gocode
  GOOS=windows
  GOARCH=386
  ;;
MINGW64)
  ;;
*)
esac

#2 [prog][windows] Windows10 x64 + MSYS2上でgo-sdl2をインストール

Windows10 x64 + MSYS2上で go-sdl2 をインストールしようと試みたり。ただ、ちょっとコレ、自分の環境では問題があって解決できてない点があるけど…。

MSYS2上でgolang 32bit版をインストール。 :

Windows10 x64上に golang 64bit版はインストール済みなのだけど、MSYS2上で go version と打っても「そんなのねえよ」と言ってくる。別途インストールしないとダメなのかなあ、と思えてきたので試しにインストール。既にインストール済みの golang にPATHを通すだけではいかんのだろうか?

スタートメニュー → MSYS2 MinGW 32-bit を実行。

pacman -Ss パッケージ名の一部、でパッケージを検索。
$ pacman -Ss i686-go

mingw32/mingw-w64-i686-go 1.9.1-1 [インストール済み]
    Go Lang (mingw-w64)
mingw32/mingw-w64-i686-gobject-introspection 1.54.1-1
    Introspection system for GObject-based libraries (mingw-w64)
mingw32/mingw-w64-i686-gobject-introspection-runtime 1.54.1-1
    Introspection system for GObject-based libraries - runtime files (mingw-w64)
mingw32/mingw-w64-i686-goocanvas 2.0.2-5
    Canvas widget for GTK+ that uses the Cairo 2D library (mingw-w64)
mingw32/mingw-w64-i686-googletest-git r975.aa148eb-1
    Google Test (mingw-w64)
mingw-w64-i686-go てのが golang 32bit版っぽいなと。ちなみに、pacman -Ss x86_64-go で検索すれば64bit版がリストアップされるはず。

ちなみに、後になって気づいたけど、
pacman -Ss go lang
なら、golang関係のものだけリストアップされる模様。

pacman -S パッケージ名、でインストール。
pacman -S mingw-w64-i686-go

golang関係の環境変数を設定。~/.bashrc に以下を追加。要するに、MSYSTEM という環境変数が MINGW32 の時だけ、GOROOT、GOPATH、GOOS、GOARCH を設定する。
case "${MSYSTEM}" in
MINGW32)
  GOROOT=/mingw32/lib/go
  GOPATH=$HOME/gocode
  GOOS=windows
  GOARCH=386
  ;;
MINGW64)
  ;;
*)
esac
ちなみに、golang は、GOOS、GOARCH を変更することで、別の環境用のビルドができるらしい。

修正した ~/.bashrc の内容を反映。
source ~/.bashrc

go の環境変数を確認。
go env

go のバージョンを確認。
go version

以下、参考ページ。

_pacman - Use Go lang with MSYS2 - Stack Overflow

MSYS2 MinGW 32-bit上でSDL2関係をインストール。 :

go-sdl2 の README.md には「MSYS2を使ってもSDL2はインストールできるよ」と書いてあるように見えなくもないので、SDL2関係のインストールをしてみる。

_veandco/go-sdl2: SDL2 binding for Go

スタートメニュー → MSYS2 MinGW 32-bitを実行。

SDL2関係のパッケージを検索。
$ pacman -Ss SDL2 i686

mingw32/mingw-w64-i686-SDL2 2.0.6-1
    A library for portable low-level access to a video framebuffer, audio output, mouse, and
    keyboard (Version 2) (mingw-w64)
mingw32/mingw-w64-i686-SDL2_gfx 1.0.1-2
    SDL graphics drawing primitives and other support functions wrapped up in an addon library for
    the Simple Direct Media (SDL) cross-platform API layer
mingw32/mingw-w64-i686-SDL2_image 2.0.1-2
    A simple library to load images of various formats as SDL surfaces (Version 2)
mingw32/mingw-w64-i686-SDL2_mixer 2.0.1-3
    A simple multi-channel audio mixer (Version 2) (mingw-w64)
mingw32/mingw-w64-i686-SDL2_net 2.0.1-1
    A small sample cross-platform networking library (Version 2) (mingw-w64)
mingw32/mingw-w64-i686-SDL2_ttf 2.0.14-1
    A library that allows you to use TrueType fonts in your SDL applications (Version 2) (mingw-w64)
mingw32/mingw-w64-i686-smpeg2 2.0.0-4
    SDL2 MPEG Player Library (mingw-w64)

以下でインストール。
pacman -S mingw-w64-i686-SDL2 mingw-w64-i686-SDL2_image mingw-w64-i686-smpeg2 mingw-w64-i686-SDL2_mixer mingw-w64-i686-SDL2_net mingw-w64-i686-SDL2_ttf mingw-w64-i686-SDL2_gfx

SDL2のバージョンを確認。
$ sdl2-config --version
2.0.6

MSYS2上でgo-sdl2をインストール。 :

スタートメニュー → MSYS2 MinGW 32-bitを実行。

go-sdl2 をインストール。
go get -v github.com/veandco/go-sdl2/{sdl,mix,img,ttf}

環境変数 GOPATH で指定された場所に、go-sdl2 がインストールされた。

動作確認。 :

hellogosdl2.go というファイル名で、以下を作成。

hellogosdl2.go
package main

import "github.com/veandco/go-sdl2/sdl"

func main() {
    if err := sdl.Init(sdl.INIT_EVERYTHING); err != nil {
        panic(err)
    }
    defer sdl.Quit()

    window, err := sdl.CreateWindow("test", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
        800, 600, sdl.WINDOW_SHOWN)
    if err != nil {
        panic(err)
    }
    defer window.Destroy()

    surface, err := window.GetSurface()
    if err != nil {
        panic(err)
    }

    rect := sdl.Rect{0, 0, 200, 200}
    surface.FillRect(&rect, 0xffff0000)
    window.UpdateSurface()

    sdl.Delay(2500)
}

実行してみる。
go run hellogosdl2.go
ウインドウが開いて、赤い四角が表示され、数秒経ったらウインドウが閉じられた。

この状態なら、go-sdl2 を使ったソースも動く模様。

gopherrun も動かしてみた…が、こちらは終了時にエラーが…。
go get -v -u -d github.com/koron/gopherrun
cd $GOPATH/src/github.com/koron/gopherrun
(ソースを修正)
go build
$ ./gopherrun.exe

Exception 0xc0000005 0x0 0x0 0x772e1161
PC=0x772e1161
signal arrived during external code execution

github.com/veandco/go-sdl2/mix._Cfunc_Mix_FreeMusic(0x337534f0)
        github.com/veandco/go-sdl2/mix/_obj/_cgo_gotypes.go:355 +0x33
github.com/veandco/go-sdl2/mix.(*Music).Free.func1(0x337534f0)
        D:/home/mieki256/gocode/src/github.com/veandco/go-sdl2/mix/sdl_mixer.go:236 +0x4f
github.com/veandco/go-sdl2/mix.(*Music).Free(0x337534f0)
        D:/home/mieki256/gocode/src/github.com/veandco/go-sdl2/mix/sdl_mixer.go:236 +0x21
main.runGame(0x0, 0x0)
        D:/home/mieki256/gocode/src/github.com/koron/gopherrun/gopherrun.go:92 +0x360
main.main()
        D:/home/mieki256/gocode/src/github.com/koron/gopherrun/gopherrun.go:96 +0x1a
eax     0x0
ebx     0x398b89b0
ecx     0x398ca2d8
edx     0x0
edi     0x10d0000
esi     0x398ca2d0
ebp     0x8afd08
esp     0x8afba8
eip     0x772e1161
eflags  0x210246
cs      0x23
fs      0x53
gs      0x2b
起動直後にいきなりESCキーを押して終了した場合は、エラーを出さずに終了するのだけど。少し動かすとエラーが出るようで。

問題点。 :

MSYS2を動かしてない状態で、出来上がった .exe を実行しても、起動すらしない…。

おそらくだけど、D:\msys64\mingw32\bin\ 以下の .dll を呼び出して動いてたりして、故に、そこに PATH が通ってない状態では動かない、のではないかなあ…。

ということで、MSYS2 が無くても動くようにするにはどうしたらいいんですか? てな疑問が残る結果に。

#3 [movie] 「アンドリューNDR114」を視聴

BS朝日で、「アンドリューNDR114」なる映画が流れてたので視聴。1999年に公開された、アイザック・アシモフ原作のSF映画、らしい。

_アンドリューNDR114 - Wikipedia

アシモフ原作ということでフツーに面白かった。まあ、ぶっちゃけ、内容は ピノキオなんだけど…。

最初のあたりは、ロボットの造形だの、未来世界のデザインだの、本で知識を吸収する設定だの、アレコレがちとダサイ感じがして不安になったけれど。作品内の時間経過に伴ってデザインが変化していったので、おそらくわざとそういうデザインにしてたのだろうなと。昔のSF映画風 → BTTFとかあのあたりのSF映画風 → 近年のSF映画風、みたいな。原作がそもそも古いので、レトロ風味を意識していた可能性がありそうな。

製作費に対して興行成績はボロボロだったらしいけど…。まあ、ロボットと人間がそうなっちゃうお話なんて、一般人は気持ち悪がって距離を置くんじゃないのかなと邪推したり。最後まで眺めれば気に入ってくれる人が結構出てきそうだけど。実際、評価は高いらしいし。

ロボットが主人公なので、そこで描かれるアレコレの純粋さが強調されるという効能があるなと感じたり。人間キャラで話を作ると生々しさが入ってきちゃうので、「そんなわけねえだろ」とつい思ってしまう場面が出てくるけれど。ロボットや人形なら、おとぎ話として成立しやすくなる、そんな面があるよなと。

それはともかく、ロボット三原則を逸脱してそうなシーンがちょこちょこあったような気がしたのだけど…。まあ、冒頭で、三原則をドーンと紹介したら「二度と見せるな」と言われてしまう、てなシーンがあったから…。そういうアレコレはあまり気にしないで見ていただきたい、てなことかもしれないなと。「CASSHERN」でヘルメットがアレしたのと似たようなもんで。 *1
*1: あのヘルメットの扱いは、「今回原作通りには作らないよ」という作り手の意思表示だろうと想像しながら見てたけど、実際はどうなんだろう…。

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

#1 [python] Atomエディタにlinter-pylintをインストールしてみたり

Pythonスクリプトの文法チェックをしてくれる pylint というツールがあるのだけど。その pylint をAtomエディタから常時呼び出して結果を表示してくれる、Atom拡張の linter-pylint をインストールしてみたり。環境は Windows10 x64 + Atom 1.11.2。

_linter-pylint
_steelbrain/linter: A Base Linter with Cow Powers

動作には、python、pylint の他に、linter なるAtom拡張も必要らしい。

ちなみに、pylint のインストール方法は、 _2016/10/10の日記 にメモってある。手元のバージョンは以下。
> pylint --version
pylint 1.6.4,
astroid 1.4.8
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)]

linter と linter-pylint は、Atom の設定ウインドウ?からインストールできる。
  1. Ctrl+, を押すか、あるいは Ctrl+Shift+P を押してから「settings view: open」を選べば設定ウインドウ(settings)が開く。
  2. 左のほうで「Install」を選んで、「linter pylint」とか打ち込めば色々出てくるので、「linter」と「linter-pylint」をインストール。
後は設定を弄ったり。とりあえず Python Path には python とだけ書いてみたり。

これで、何か作業をするたび、下のほうに「この行の書き方、Python文化的にはおかしいぜ」と表示されるようになった。

ちょっと厳し過ぎる。 :

これで、書き方がよろしくなさそうなところを教えてもらえるようになったけど。

自作スクリプトを開いてみたら、膨大な警告数で。「なんだこの書き方は!」と何百行も文句を言われてゲンナリしてきた。スクリプトの行数より、pylintが出力した警告のほうが、行数が多い。

例えば…。

_C0103 で、「1文字の変数名はダメだ!」と怒られる。「x = event.pos().x()」と書くだけで怒られちゃうのはキツイ。しかも pylint はグローバル変数相当を認識してくれないようで、そのへん全部「コレ、定数だろ? 定数は全部大文字で書かないとダメだろ!」と怒られる。いや、それ、定数じゃねえよ…。

W0401で、「ワイルドカード(*)で import しちゃダメだ!」と怒られる。「from PySide.QtCore import *」と書くだけで怒られちゃう。

W0602で、「global hoge って書かれてるけど hoge なんて用意されてねえよ!」と怒られる。そもそもグローバル変数相当が認識できてなくて全部定数扱いされてるものだから、global を指定しても全部無いものとして扱われるようで。

W0603で、「そもそも global を使うんじゃねえ!」と怒られる。いや…限界有るだろ…。何が何でもグローバル変数を使うな、と言うなら、各事例はこう書き直せ、てなサンプルでも提示してよ…。

_W0613 で、「使ってない引数があるぞ!」と怒られる。…PySideのWidgetの、事前に用意された、イベントを取る各メソッドの中で、与えられた引数を使わずに処理する場面もたまに出てくるわけで。どうしろと。

W0614で、「お前、ワイルドカード(*)で import したよな? コレとコレとコレとコレと…使ってねえだろ!」と怒られる。…そんなこと言われても。 _PySide.QtCore_PySide.QtGui だけでもコレだけクラスがあるわけで、コレを全部人力で選別・列挙していけというのかと。どう考えても人力ではなくツール作って自動化すべきだけど、たぶん実際に記述していったらそこだけで長々とした記述になるだろうに。お前、Java になるつもりなの?

E1101が、ちょっとよく分からない。
zoomfit_btn.clicked.connect(self.zoom_fit)
てな行で、「E1101 Instance of 'Signal' has no 'connect' member」と怒られてるけど…。 _All codes - PyLint Messages にも説明が無いし。何を怒ってるんだろう…?

ある程度無視するように設定。 :

ということで、こういった警告だらけでは、かえって分かりにくくなりそうなので、無視することにする。

ソースの最初のほうに以下を追加。
# pylint: disable-msg=C0103,W0401,W0602,W0603,W0613,W0614,E1101
あるいは以下。
# pylint: disable=C0103,W0401,W0602,W0603,W0613,W0614,E1101

このように書いておけば、指定した種類の警告を無視する状態になる。

でも、W0613 あたりは残しておきたいのだけど…。しかし常時表示されていては、警告を出す意味が無いというか、肝心なところを見逃すだろうし…。

そもそも PySide が「addItem()」みたいなメソッド名をつけてるのに、自分が書く部分では「add_item()」みたいな命名規則を強要されるのは…なんだかなあ…。

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

コンビニとサンドラッグによって夜食や非常食を購入。天気が怪しかったのですぐに帰ってきた。

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

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

ヨークベニマル、サンドラッグに寄って、夜食その他を購入。

2014/10/29(水) [n年前の日記]

#1 [nitijyou] 近所の池が埋め立てられていた

犬の散歩をしながら少し遠くまで歩いたのだけど、国道4号線の向こう側にある池がいつの間にか埋め立てられていて、その上に、子供向けの色んな遊具をずらりと揃えた公園が作られてた。いつからこんな状態に…。

お袋さんに尋ねたところ、随分前に埋め立てが始まっていたとのこと。知らなかった。

自分、なんとなく池が好きだったり。というか、水がある風景が好きで。しかし気付いてみれば、近所の池は軒並み埋め立てられているし、水がすっかり無くなっていたりで。ザリガニ釣りをしたあの池も、鮒を釣って遊んでたあの池も、今はもう影も形も無く。…周囲の田んぼが無くなって、家やアパートが立ってしまったから、もはや貯水池は必要ないのだろうな。

2013/10/29(火) [n年前の日記]

#1 [unity][blender] Rigifyを勉強中

blender + Rigify を勉強中。

Rigify てのは、blender のアドオン(拡張)。人体モデルでアニメーションを作る際に便利だろうと思われる、骨組みだかリグだかを生成してくれる機能だそうで。大味な骨組みを、モデルに合わせて位置調整した後、Generateボタン(「生成」ボタン)を押すと、更に細かい骨組みや、FKとIKを切り替え可能な操作用のアレコレを生成してくれる。らしい。

あちらこちらのページで、「blenderでUnity用のデータを作るならコレ」という話を見かけて、というか公式サイトのマニュアルページでも紹介されてたので、一応触ってみているのだけど。

_Unity - Using Blender and Rigify
_unity-doc/ja/BlenderAndRigify.txt at master - unity3d-jp/unity-doc - GitHub (日本語訳文書)

なんか…うーん…。本当に便利なのかコレ、てな気分になってきたり。

Rigify で作られる骨組みは、Unityが要求するボーン(骨)の数よりも多くて。全ての作業がblenderで完結する分には、そのボーン数でも全然問題ないだろうから、たしかに便利かもとは思うのだけど。

しかしコレを、Unity上に持っていくと、「このボーンは使わない」「このボーンも使わない」てな状態になって。だけど、その使わないボーンにもしっかり割り当てられてる頂点群があるわけで…。

最初、何も考えずにそのまま持ってったら、まるでワンピースに出てくるゴム人間のような惨状に。腕や足がタコみたい。

仕方ないので、不要なボーンは削除 → 各ボーンの名前を変更 → 親ボーンを全部指定し直し、という作業を始めたのだけど。慣れてないせいか、それだけで1〜2時間かかってしまって。ここから更に、頂点ウェイト付け直し、モーション作り直しかよ…うへえ…、てな気分に。しかもコレ、各ボーンの親指定を変えたから、FK/IK用のアレコレは一切使えなくなってる予感。わざわざRigify使った意味がないのでは、と。

もしかすると、最初から自分で骨組みを作ったほうがいいんじゃないかと思えてきたり。名前を指定していくあたりが大変そうだけど、Unity側は「ボーンが15個以上必要」とか書いてあるので、別に終わりが見えない作業というわけでもないだろうし。…なんかそのあたり、Unity用に特化したスクリプトがどこかにありそうな気もするのだけど。というか Rigify が、Unity用の骨組みを生成してくれれば済む話のような気も。そういうオプション無いのかな。

服の頂点ウェイトで困ったり。 :

既存のモデルデータにモーションをつけようとしたところ、体と服の頂点が分離していたせいか、服の頂点ウェイトがおかしなことになって悩んだり。腕を動かしただけで、服も一緒に動いて素っ裸になる…。

解決策について調べたら、体の頂点ウェイトを服に転送する、てな方法が。 _PMXモデルに服を着せる(Blender/PMDE) - BlenderとMMDでゲームを作りたい が参考になりました。ありがたや。体と服を別オブジェクトにしておく必要があるのですな…。

#2 [pc] マウスをBUFFALO BSMLU06に変えてみたり

ホイールがダメになってきた _SANWASUPPLY MA-LS19GD から、 _BUFFALO BSMLU06WH に変えてみたり。

過去の日記を見直したら、以前試した際、マウス上面の拡張ボタンに中ボタンが割り当てられない、てな不満を持ってたみたいなのだけど。ドライバインストール後、「スクロールボタン」を割り当てたら中ボタンとして動作することに今頃気付いたり。なんだかスイマセン。自分、どうして当時気付かなかったんだ…。

MA-LS19GD はドライバには、「ポインタの精度を高める」オプションがOS再起動のたびにクリアされてしまうという不具合があって、OSを起動するたびに毎回設定し直さないといけなかったのだけど。BSMLU06のドライバはそんなこともなく、OS再起動しても設定はそのままなのがありがたいなと。…まあ、それがフツーだと思うのだけど。

その代り(?)、 _X-Mouse Button Control という、マウスボタンに機能を割り当てるソフトでボタン入力を横取りできなくなった。たぶん BSMLU06 のドライバが同じ手法で割り当てを変えてるのではと想像。仕方ないので、BSMLU06側のドライバで、Ctrl+W その他を割り当ててしまったり。どうせブラウザ使う時しか拡張ボタンは使わないから、当面それでも困らないだろうと…。

左右ボタンのクリックが妙に重い点と、拡張ボタンがチャタリングを頻繁に起こすあたりは、ちょっとアレだったり。

まあ、在庫限りの製品らしいから、これから買う人は居ないだろうけど…。

#3 [anime] 「境界の彼方」で時々出てくるあの見せ方が好き

敵の攻撃を避けながら剣を振るヒロインの止め絵 → 黒画面 → 止め絵 → 黒画面 → 止め絵 → 黒画面 → バラバラに吹き飛んでいく敵、みたいなソレ。あの見せ方、個人的に好きなのです。

「風の谷のナウシカ」の、ユパ様が活躍するシーンを連想したりもして。敵の剣をガッガッガッと受け止める → 透過光 → 吹っ飛ぶ敵、みたいな。「境界の彼方」で見せてるソレは、ユパ様シーンの見せ方の発展形というか、アレンジ版と言えるのかもしれないなと思いながら眺めてたり。まあ、全然違う作品からインスパイアした可能性が高そうだけど。そもそもストロボ撮影(?)のソレに近い気もするし。

ユパ様のソレは、ガッガッ、だったか。ガッガッガッ、だったか。記憶が怪しい…。2回なのか3回なのか、そこはたぶん結構重要で。観客がリズムを感じるか感じないか違ってきそうな。リズムを感じたらそのシーンにノッてくれるだろうし、また、そこにリズムが盛り込めると気づけば、見せ方も工夫できそうな予感も。例えば、カッカッカッカカカカと、カカカカッカッカッは、受ける印象が違ってくるだろうと。…文章で書いても分かんないか。

当時、ナウシカのコンテを見て、そこでようやく、「実はユパ様、なんにもしてねえや!」という衝撃の事実に気づき、アニメの面白さを ―― 今風のソレで言えば『ズルイ(褒め言葉)』表現手法であることを実感・感心した記憶があって。

たしか、「ナウシカ」のコンテには、「よくある謎の透過光」みたいな一文が書いてあったような記憶もあり。それはつまり、既に当時、見せ方としてはかなりベタ、どこにでも転がってるソレ、だったのだろうと。元々は、どのあたりの作品でやり始めた見せ方なんだろうか…? 実写アクション映画の何かが始祖だったりするのかな。それとも、カートゥーンアニメが発祥なんだろうか。相手の頭をトンカチで殴る → 画面に火花 → クラクラしてる相手、みたいなカットが発展していったとか…?

もしかすると、その手のシーンって、文章・脚本上では、「光のような速さで〜」とか「目にもとまらぬ技で〜」とか書いてあったのかもと想像したりもして。
「光、って言ってんだから、ここは透過光かなあ」
「目にもとまらぬ、って言ってんだから凡人には見えない動きだ。見えない動きなんだから、そもそも描かなくてよろしい!」
とか、そういう発想でそういう映像に、みたいな。…なんだかちょっと、漫画における「シーン」「ゴゴゴゴ」あたりと共通する何かがありそうな気もしてきたけど全然関係ないかもしれない。

2012/10/29(月) [n年前の日記]

#1 [nitijyou] 某所に行ってPCのメンテナンス

プリンタドライバをインストール。ついでに、Javaのインストールも。詳細はGRPでメモ。

#2 [nitijyou] 刻み煙草は入手できそうにない

帰宅途中、須賀川市内で煙草を売ってる店をいくつか回ってみたけれど。やはり刻みタバコは売ってないっぽい。そもそも、JTのカタログに載ってるのを見たことが無い、という話すら。となると、取り寄せもどうやら無理らしく。ということで、福島県須賀川市で煙管ライフは無理だなと。

タバコ屋のお婆さんに、「インターネットなら買えるらしいよ」と言われてしまって、苦笑してしまった。

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

#1 [pc] 1CD Linuxが気になる

USBメモリから簡単に起動できるディストリを使ってみたいのだけど。sysylinux云々を手作業でアレコレするタイプが多いように見える。そもそもsyslinuxってどこからDLすればいいのやら。解説記事中で紹介しているURLは消滅しているみたいだし。

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

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

ケイヨーD2まで。エアコンのドレンホースとやらを探しに。

売り場を歩いてたら、偶然親父さんと遭遇。昨晩、エアコンの排水ホースが崩壊したことを相談してたので、親父さんもホースを探しに来てくれたらしい。…二人で似たようなモノをダブって買ってしまうところだった。危なかった。ていうか、親父さんはエアコン用のソレではない10mぐらいの品を買おうとしてた。危なかった。

買ったモノは、親父さんの車で運んでもらった。

途中でリスらしき小動物を目撃。 :

滑川のあたりで、道路を横切っていく尻尾の大きい小動物を目撃。…リス? ちょっと走っては止まって周囲を見渡し、またちょっと走っては、を繰り返して道路の反対側に消えていった。生まれて初めてこのあたりに居るのを見た。どこかのペットが逃げ出したのだろうか。

夕食時、お袋さんにその話をしたら、昔はこのへんにも結構リスが居たとの話で。なるほど、元ペットじゃなかったのか…。

電車の音を録音しようとしたけれど全然ダメだった。 :

外出したついでに、SEの素材として、電車の音を録音しようと思い立ち。先日購入した ZOOM H4n を持ち歩いて、1時間に1本しか来ない電車を待って録音してみたけれど。これが全然ダメ。風がそこそこ強くて、マイクが風切音?ばかり拾ってしまう。バーッと鳴ってるノイズの中に、ほんのかすかに混じってる電車の音。使い物にならない。H4n に同梱されていたウインドスクリーン ―― 風の音を少なくするためのスポンジ状の帽子っぽいモノ ―― を持っていけばよかった。失敗した。

グリーンモールでも買い物。 :

夜食その他を買い溜め。

ケイヨーD2で買ったモノをメモ。 :

  • CDケース。ナカバヤシ株式会社 キャパティかたづけ楽ラックBOX CD。998円。上蓋でも横蓋でもどちらからでもCDを取り出せる。36枚入るらしい。
  • センサー付きLEDライト。ELPA PM-L210(W)。1,780円。単3電池3本使用。屋内専用。常時点灯、人感センサ、明暗センサの3つの動作モードを選べる。LED1灯2灯切り替えボタン付き。
  • 工業用エアコンドレンホース。1m。178円。内径14-16mm。外径16-18mm。対候性が増した品らしく、内部は黒くなっている。
  • 水道用ラップテープ。KAKUDAI 9636-1。698円。
  • キャンパステープ。KAKUDAI製。278円。
  • 単1電池4本パック。Panasonic LR20XJ/4SW。698円。
  • 蛍光灯の点灯管2個パック。Panasonic FG-1EL2P。198円。
CDケースはちょっと高いのではないかという気もするが。既に同じような製品を1つ持っていて便利に使えているし、100円ショップで売っているその手のモノはプラスチックが劣化して割れたりボロボロになったのに、こちらはまだ壊れてない=丈夫だし。仕方ないかなと。

センサー付きLEDライトは、夜中、階下に降りたときに暗くて不便なので購入。LEDが2灯である点に若干期待、しているがやっぱりダメかもしれない。というのも、この手の製品は既に3つほど家で使っていて、LEDを使ってるタイプは暗くて話にならず、電球(?)タイプだけが唯一使える明るさだったりするので。…改造して実用的な明るさにできないものか。

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

#1 [prog] Vimを使うとPerlは書きやすいのだろうか

_Perlプログラマの人気No.1エディタはVim なる記事を目にして、なんだか気になっていたり。Perlスクリプトを書くならVim、なのだろうか。

自分はとりあえず慣れてしまったxyzzyで書いてるけど、補完がどうも弱い感じがしていて。EclipseでJavaのソースを書いてる時に比べると、比較的自分でアレコレ直に打ち込まなければいけない、という印象が。もうちょっとなんとかならないかと感じているものの、まあ書けなくはないし別にいいじゃんそれよりさっさとスクリプトを書けよ、と自分に言い聞かせて終わらせてしまってるような状態で。

これがもしEmacsなら、もう少し高機能なPerl用のモードがあるらしいのだけど。該当モードはxyzzyに移植されておらず。だったら本家であるEmacsを使ってみるかと思い立ち、以前、試しに、Meadow をインストールしてみたものの。起動や反応がどうも遅い上に、ImageMagickのバージョン縛りまであって、自然とxyzzyを起動して済ませてしまう状態になったという経緯があって。かといってNTEmacsは、現在、IME関係の都合で、最新版を使うためには自分でパッチを当ててコンパイルしないといけないらしく、自分如きでは手が出せない。…そもそも本家Emacsを使ったからと言って、本当に補完関係その他が便利になるかどうかも不明だし。EclipseでJavaを書いてる時と同じくらい、ガンガン補完できるんだろうか。期待できない気もする。Emacsだし。

Vimについては、自宅サーバの設定ファイルをちょこっと書き換えるぐらいしか使ったことがないのだけど。慣れると便利なのかもしれないとは思いつつ、便利に感じるまでの学習曲線がEmacsと同様にかなりイビツであろうことも容易に想像できて、とても使いこんでみる気分にはなれず。脳内にコマンドを全て記憶しないと使いこなせないタイプのツールは、朝から晩までソレを使ってる人じゃないと便利に感じないものだし。

とはいえ、こうまで利用者数に差があるアンケート結果が出てくると、なんだか気になってしまう。VimとPerlの組み合わせは、かなりメリットがあるのだろうか…。

いやいや。単に、Perlで書いてる人達が、Vimにも慣れてる=とにかく何も考えずVimを使ってるだけ、じゃないのか。あるいは、EmacsとVimの宗教戦争の絡みで、ひたすらVimのボタンを連打した変な人がVim派の中に居ただけかもしれない。

少し検索してみた限りでは、Vimを使うとこんなにもPerlが書きやすくなる、的な紹介記事も見当たらなかった。何もしないと不便だから多少はマシな状態に設定していく、という記事は見かけるけれど。やっぱりVimも不便なんだけど、なんとか誤魔化しつつ使ってるのが実際なのだ。きっとそうだ。ということにする。

#2 [windows] Google Chromeのdev版とやらをインストールしてみたり

Google Chrome でマウスジェスチャを使えるようにしたい。別途マウスジェスチャ用のツールを常駐させて行うことも可能ではあるけれど、自分の環境ではタスクトレイに表示されている常駐ソフトの数が20個以上もあるという状態になっているので、コレ以上は増やしたくないわけで。

ということで、dev版(開発版)なら拡張機能が使えるらしく、その中にマウスジェスチャがあったりもするらしいので、一つ試してみようかと。

今現在は Google Chrome 4 dev版を入れるとそのままで拡張機能が使えるらしい。あちこちの解説ページを見ながらインストール。ちなみに、どうもバージョンによって手順がガンガン違ってくるようで、コレを書いた数日後にはまた手順が違ってたりしそうだから手順についてはメモしない。その時の最新の解説ページを探したほうがヨサゲ。というか Google Chrome 4 が公式にリリースされれば、その中に拡張機能への対応も含まれてるはず、という予定らしいし。

マウスジェスチャ用の拡張をインストールしてみたけれど、Google Chrome を終了・起動させたら、設定項目が英語表記になってしまった。うーん。まあ、開発版だし。

マウスジェスチャが欲しければ ChromePlus でいいんじゃないのか。 :

という気もするけど、そっちはセキュリティ関係への対応ってどうなんだろうな…。でも、開発版の Google Chrome を使うよりはまだマシなんだろうか。と思ったけど公式サイトを見る限り Google Chrome の開発版を元にしてリリースされているようにも見える。となると、セキュリティ云々のあたりは全く違いがないのかな。

2008/10/29(水) [n年前の日記]

#1 [nitijyou] BSアンテナ関連の配線について電気屋さんに見積もってもらった

やはりVHF/UHFとBSをアンテナの近くで混合しちゃって、それぞれ1本のケーブルで各部屋(3部屋)に分配したほうがいいだろうという話に。たしかにそれが一番混乱しない配線になると思っていたので、その方向で。

しかし、値段は6万円になると言われて、ちとビックリ。高くても5万あればなんとかなるかなと想像してたけど、あっさり予算オーバー。なんでも、VHF/UHF/BS/CS全部込みのブースターの値段だけで3万円ぐらいしてしまうとのことで。それはちょっと、と思っていたら、別の配線も提示された。BS/CSに関してはブースターを入れないで、そのまま3分配しちゃうことにすれば、その3万円ぐらいは浮くとのお話。信号がどのくらい弱くなるか不安ではあるけど、泣く泣く(?)、安く上がる方向でお願いすることに。…まあ、ノイズが出ない程度のレベルが得られれば、ブースターがなくても問題ないのだろうけど。

各部屋に配線してるケーブルが、5C-FV = 昔の地上波アナログ用なのも、ちと不安点なのだけど。電気屋さん曰く、電波状態が悪いとか、周囲から著しく影響を受けてしまう環境でなければ、5C-FVでも、まあ、たぶん、大体は大丈夫、との話で。もしかすると、各部屋への配線までやり直すとなると大変だから、それは避ける方向で話をしてるのかなと思わないでもないけど。分配個所までキッチリ配線してあれば、そこから先は、こちらでケーブルを買ってきて、自分で作業することもできなくもないし。や、面倒な作業ではあるけど。

店に器材があれば今日中に作業してしまおう、という話だったけど。店に帰った電気屋さんから、「器材の在庫がなかった。発注したので、明日〜明後日に作業を」という電話連絡あり。

#2 [nitijyou][web] マスプロ電工のサイト、ボロボロだな…

BSアンテナの配線関連を調べていて、マスプロ電工のサイトでF型コネクタの取り付け解説動画を見ようとしたら、「最新のFLASHプレイヤーを入れてください」というページが表示された。オイオイ。ウチの環境、最新の Ver. 10.0.12.36 なんですけど?

おそらくは、FLASHプレイヤーのバージョンチェック処理を手抜きしていて、バージョン1桁に決め打ちした処理をしてるのだろうなと。なもんで、「9」→「10」になったのに、「10」の「1」の部分しか見てなくて、「古いプレイヤーだ」と判断してるのだろうと推測。Ver.10になってから、そういう不具合が多発してるらしいし。

一応そのあたり、報告だけでもしておいてやろうかなと思って、問い合わせのフォーム欄から報告しようとしたものの。送信ボタンを押したら「規定外のフォームからは送信できません」というページが。なんじゃそりゃ。人がせっかく親切心で報告しようとしてるのに。や、「送信エラーが発生したときは電話で連絡してくれ」と書いてあるけど。地方から東京の電話番号にかけたら電話代が高くつくじゃないかと。お前のサイトの不具合を見つけてせっかくだから連絡してやろうとしてるのに、電話代ぐらいはお前が持てよ、という感じ。

というか、どうもあちこちでリンク切れもある模様。>マスプロ電工のサイト。ページによっては、一番上にある「お客様相談窓口」のリンクすら404になってる。酷過ぎる。

どこのWeb制作会社に発注したのかわからんけれど、どうやら自社内では、自社サイトの状態をほとんどチェックしていない、ということなんだろうな。まあ、カタログがWeb上においてあるだけでも、マシかもしれんのだけど。閲覧者がサイトの不具合報告すらできない状態にあるというのは、なんだかなあ…。サイトの利用客が無償でバグチェック(?)してくれるのに、それをまったく生かせない・生かせる状態にないというのは、実にもったいない感も。

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

100円ショップで小さじと時計を購入。台所に置いておくため。

ケーズデンキで鼻毛カッター購入。National ER417P。喫煙者なので、恥ずかしながらガンガン伸びるのです。今までは小さいハサミで切ってたけど、非常に作業しづらく。店頭で特価の札がついてるのを見て気になってしまったわけで。

中古ゲーム屋さんで、PS1用とPS2用の某ジャンルのタイトルを購入。iアプリの参考用に。

2007/10/29(月) [n年前の日記]

#1 [windows] _しっぽのブログ: もやしもんツールが講談社からの警告で公開停止 とその雑感

こんな事例があったのか…。

_窓の杜 - 【NEWS】フジテレビ、TVアニメ“もやしもん”のデスクトップマスコットを公開 :

なるほど、公式のソレが作られていた・配布されてたのか。

#2 [zatta] _”渋滞”という漢字は、どうして渋い滞と書くのですか?

「漢字の意味ですが「渋」も「滞」も水が流れにくいとか、水がとどまって流れないという意味です。 特に「渋」の昔の字は、水を表す「さんずい」と「止まる」を三つ書いていて、いかにも流れにくそうです。 日本で渋滞という言葉が初めて使われだしたのは、ラジオの交通情報からで、 昭和36年6月に東京の警視庁が「文化放送」を通じて、世界で初めて道路交通情報を定期的に放送するようになった時 その放送の用語の中で「渋滞」が使われだしたそうです。それまでは「連続的滞留」と言っていたようです。

RCCラジオ「本名正憲の今日もゴゴイチ」 より

「連続的滞留」ってなんかかっこいいな。でもないか。

元々「渋谷」の「渋」はなんだろうと思って :

検索したのだった。某所で「渋谷は坂道ばかり。何せ『谷』ですから」という話が出ていて、すると「渋」は何を示してるのか、みたいな。

_渋谷駅前共栄会 --- 渋谷今昔 :

渋谷という地名は、江戸時代に作成された文献により二説に分かれる。

ひとつは、『新編武蔵風土記稿』によるもので、昔、この辺りを「塩谷の里」と呼称したことに由来するという説である。その根拠は、土中を掘ると青い砂や、貝が出土するなど、昔この辺りが海辺であったことである。そこから塩谷の名が生まれ、その後塩谷が渋谷に変わったとされている。

もうひとつは、『金王八満神社社記』にみえる河崎重家の改姓に由来する伝承である。桓武天皇の孫高望王の子孫で秩父党の一人である河崎冠者基家は、永承6(1051)年、前九年の役に源頼義に従って功をたて武蔵国豊島郡谷盛庄を与えられた。基家の子重家が源義家に従って京都にいたときのある夜、宮中に盗賊が入り、これを生け捕りにした。賊の名を聞くと、渋谷権介盛国と答えたので、堀川天皇は重家の武勇をほめて、姓を渋谷と改めたため、重家の領地「谷盛庄」のなかに「渋谷」という村が出来たといわれる。

以上の二節は、あくまでも伝説の域をでるものではないが、当時の文献資料が残存していないので、詳細は依然として謎となっている。

渋谷駅前共栄会 --- 渋谷今昔 より


_地名の由来/渋谷区
いくつかの説がありますが、定説はありません。

* 昔、この付近は入江であり、「塩谷の里」と呼ばれていました。その「塩谷(しおや)」が「渋谷(しぶや)」に変わったとする説。
* 平安時代の終わりごろ、このあたりの領主は河崎重家でした。 河崎重家は京都の御所に侵入した賊を捕えました。この賊の名を渋谷権介盛国といいました。そこで、堀川の院は、河崎重家に「渋谷」の姓を与えました。このことから、重家の領地であった谷盛庄が「渋谷」に変わったとする説。
* この地を流れる川の水が、鉄分を多く含み、赤さび色の「シブ色」だったため「シブヤ川」と呼ばれていたとする説。
* 渋谷川の流域の低地が、しぼんだ谷あいだったからとする説。

地名の由来/渋谷区 より

_知識の宝庫!目がテン!ライブラリー
渋谷には、日本で一番古い地下鉄の銀座線の始発駅がありますが、地下鉄というくらいなので地下を走っているのかと思いきや、なんと地上3階にあるのです。なぜわざわざこんなに高い所に作っているのでしょう?
実は渋谷は、次の駅がある表参道に比べて、およそ20m、マンションにして6階分も低い位置にあったのです。さらに調べてみると、表参道方向だけでなく、ほとんど全ての方向と比べて渋谷は低い位置にあり、文字通り渋谷は谷になっていたのです。そのため渋谷は、大雨が降るとすぐ冠水してしまい、車もつかってしまうほど雨水が溜まってしまうのです。現在、その対策として下水道局が渋谷の地下25メートルに4000トンの雨水を貯める巨大貯水槽を作っています。

知識の宝庫!目がテン!ライブラリー より

確かに渋谷は谷でしたが、なぜ「渋い」谷なのでしょう。その由来には諸説あるのですが、昔の渋谷川の色がシブ色だったからという説があるのです。シブ色の水とは鉄分を多く含んだ赤茶色の水のことをいいます。

そこで実際に、今でも湧いている渋谷の井戸水を調べてみると、なんと日本の平均的な湧き水に比べて約24倍も鉄分が多く含まれていたのです。その理由は、渋谷一帯の地層にありました。まず、渋谷の地下には鉄分を多く含んだ、火山灰によって作られた関東ローム層という地層があります。 渋谷瓦 さらに、その下には渋谷粘土層という水を通しにくい厚い地層があります。そのため、関東ローム層の鉄分を多く含んだ雨水が渋谷粘土層の間に溜まるので、渋谷の水には鉄分が多く含まれると考えられています。よって、昔の渋谷川の色がシブ色だったのではないかと考えられているのです。

知識の宝庫!目がテン!ライブラリー より


_渋谷マップ 渋谷川
渋谷にも「渋谷川」という川があります。今ではほとんど蓋をされてしまいR246以南しか表からは見えませんが、今でも地下を流れているそうです。渋谷の街は谷になっていますが、この川が作った谷だそうです。

渋谷マップ 渋谷川 より


_渋谷川 - Wikipedia
北斎の富嶽三十六景の「穏田の水車」は、原宿穏田村付近(現在の神宮前3丁目)の渋谷川の水車小屋を描いたものである。 又、明治に入り設立された渋谷小学校は、近くの水車の事業で得た利益の一部を充てて設立されたこともあり、水車の羽を象った図が校章に定められた。ただ残念ながら、渋谷小学校は学校統廃合のため現存しない。 明治前半までは水がきれいで沿岸では蛍が見られ、江戸時代において将軍に献上された蛍は渋谷川で採取されたという。

渋谷川 - Wikipedia より



色んな説があるんだなぁ。ていうか、渋谷川についてのアレコレがなんだか面白い。…東京の地下を流れる川を使って何か術をかけるとか、テロを行うとかそういう話を、って既に誰かやってそうだな。

#3 [prog] _AutoHotkeyのダメ文字問題対策

メモ。

クリップボード中のテキストに対して改行を削除する的処理をやってたら、一部の文字がなんだか化けるわけですよ。これはもしかしてsjis文字列に対してそういうことをしてるのかしらと。つーか AutoHotKey が内部ではどの文字コードのつもりで文字列を操作してるのかがさっぱりわからない。

#4 [web] パスワードに文字数制限があるときはチェックしてから受け付ける仕様にしておかないといかんのだろうな

イーバンクのパスワードを変更したら、ログインできなくなってしまっていたわけで。>自分。後になってから気づいたのだけど、イーバンクのパスワードには、8〜12文字という文字数制限があったのですな。自分、おそらく、13文字ほど打ち込んでましたがな…。

本来、パスワードの文字数に制限があるなら、cgi側で入力時に文字数をチェックして、そのまま変更を受け付けたりせずに、「文字数をオーバーしています」等の表示がほしいところだよなと。特に、金銭を扱うサイト・サービスで、うっかり文字数オーバーした状態で受け付けてしまうと、ユーザーにとってはかなり致命的な状態になるわけで。

もっとも、自分の使ってる各種cgiも、そのあたりのチェックをしてるかどうかは怪しいわけで。手を抜いてしまいがち・見落としてしまいがちなところ、なのかもしれず。特にこれといった文字数制限がない場合でも、たとえば256文字とか65536文字とか入力されたら、cgiの動作はどうなっちゃうんだろう…。

ブラウザ側の仕様に問題があるような気もする。 :

form自体に、文字数制限ができる仕様があったことを思い出した。

_HTMLタグ/フォームタグ/パスワード形式の入力欄を作る - TAG index

inputタグに、maxlength を指定して、文字数制限ができるらしい。…これって、マズイよな。type="password" を指定した場合、打ちこんだ文字が「*」で表示されてしまうから、パッと見で何文字あるのか判らない。「************」と「*************」の違いを、ユーザは即座に判別できるのか? という問題が。

1文字ずつ打ち込んでる場合は、指定文字数以上になれば、入力しても「*」が増えないので、文字数制限があることに気づく場合があるのかもしれんけど。自分の場合、タイプミスが怖くて、その手の入力欄にコピー&ペーストで貼り付けることが多いわけで。一気に貼り付けをしていると、これは気付かんわ…。

そもそもパスワード入力欄を「*」にする仕様ってどれだけ効果があるんだろう。 :

PC初心者の方から相談を受けた際、えてしてパスワードの入力ミスだったりすることが結構あるんだけど。 *1 入力した文字を「*」で表示してることで、余計なトラブルを多々招いてる、そんな印象もあるのですが。

認証時は「*」でもいいんだけど、せめてパスワード設定時だけは、パスワードの文字列が見えるようにする、てなわけにはいかんのかしら。

*1: 半角で打ち込むところを全角で打ち込んでたりとか、キーボードに慣れてないから別の文字を打ってしまったとか。

この記事へのツッコミ

Re: パスワードに文字数制限があるときはチェックしてから受け付ける仕様にしておかないといかんのだろうな by けいと    2007/11/01 20:39
> イーバンクのパスワードには、8〜12文字という文字数制限があったのですな。自分、おそらく、13文字ほど打ち込んでましたがな…。

私もやった事あります(;´Д`)

しかも、私が使ってたサイトでは
はみ出した余分な文字はまったく評価してないようで、
パスワードを変更したときに最後の文字1文字だけ変えたら
「同じパスワードは使えません」っていわれてはじめて気がつきました。

> 打ちこんだ文字が「*」で表示されてしまうから、パッと見で何文字あるのか判らない。

気の効いた?サイトでは、ショルダーハックされにくいように、
*の数とパスワード文字数が一致しないように作られているところもありますね。

> パスワードの文字列が見えるようにする

携帯サイトなんかだと見えるところがありますね。
というかどうしようもないところなんでしょうけど。

> 半角で打ち込むところを全角で打ち込んでたりとか、キーボードに慣れてないから別の文字を打ってしまったとか。

むしろこれの方が多い印象が…
日本語環境だと、全角半角、英数カタカナひらがなと
組み合わせがたくさんあるのと、
ご丁寧にテキストボックスにカーソルを合わせると
強制的に半角英数モードになるように作りこんでるのに
PCの方が調子悪くてIMEの切り替えがうまく行ってなかったり、
あとはキーボードの設定が109/106から101になってたり…
パスワード文字数制限話 by mieki256    2007/11/07 11:49
> 気の効いた?サイトでは*の数とパスワード文字数が一致しない

うわ。そんな事例もあるのですか。
それではますます文字数を間違えて打ち込んでしまうことがありそうですな。

このへん何か解決策はないものかなぁ…。
打ち込んでる人にしか文字が見えなくなる技術…
なんてのはハードウェアが必要になるだろうし。難しそうだなぁ…。

#5 [anime] コードギアス4話を観賞

ゼロ登場の回。なんですか…この面白さは…。先が全然読めない…。3話のラストで「えーなんでそうなるの!?」と驚いたと思ったら、4話の展開でまた驚かされた。

最近、アニメの感想を残すのは控え目に、と思ってたけど、あまりに面白いんでついこうして書き残してしまったり。いやはや、福島でも放映が始まって、本当によかったですわ…。

この記事へのツッコミ

Re: コードギアス4話を観賞 by (楼)    2007/10/30 16:20
ご視聴、どうもですー。
そうか、福島では、まだやってなかったのか。残念ながら、全国放送にはしてもらえなかったんだよねー。
よろしければ、引き続き楽しんでくだされ。
Re: コードギアス4話を観賞 by mieki256    2007/11/07 11:41
> そうか、福島では、まだやってなかったのか。

おお。わざわざレス(?)、ありがとうです。
そうなんです。福島でも始まってくれました!
…スポンサーがついてない放映なのが、なんだか気になるところですけど。
(そういや、デスノートも、のだめも、スポンサーついてなかったなぁ…
 深夜枠でスポンサーがつくのは稀になってきてるのでしょうね。)

この作品、全国放送する価値がある内容のように思えるのですけどねぇ…。
なんだかもったいない気もするであります。

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

#1 [firefox] Firefox 2.0を再度インストールしてみた

_MR Tech's Local Install を入れれば、2.0未対応の拡張も入れやすくなるという話を見かけたので、再挑戦。…とりあえず、proxy切替以外の拡張に関しては、ある程度入った。

なんだか動作が軽い、ような気がする。>Firefox 2.0。気のせいかもしれないけど。とりあえず、これで常用してみようかと。

proxy切替に関しては、今まで prefbar を入れてたのだけど。もうちょっと特化したもの or 機能が豊富なものがないだろうかと思って探索中。prefbar は Firefox 2.0に未対応でもあるし。<バージョン互換チェックを無効にすれば、入れることはできるらしいが。

「タブを開く位置・順番」「ブックマークや履歴等を新しいタブで開く」あたりを設定したいが故、Tab Mix Plus を入れてるけど。本体にセッション関係や「閉じたタブを開く」等がついたわけだし、できれば Tab Mix Plus を使わずに済ませたいのだけどな。まだ細かいところがアレで、やっぱり必要になってしまうわけで…。

参考にした記事。 :


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

#1 [anime] ケロロ軍曹、池田秀一さんの回

ガンダムの台詞をこれでもかこれでもかと出してくる。よくやるなぁ。

#2 [anime] ウルトラマンマックス、腹立たしい宇宙人の回

なんだか2chを連想してしまった。

それはそれとして、宇宙人を出せるとなると、色々な話が出てくるものだなと。

#3 [anime] BLOOD+、2匹目と対戦の回

ようやく、CM等に出てくる映像を見ることができた。

棺桶もち長身男性のアクションがグー。主人公よりヨサゲ。…アレって棺桶なのかな。よくわからん。

#4 [nitijyou] java勉強中

iアプリのエミュレータを使って勉強。ShortTimer を Thread に置き換えたり等々。

全然関係ないけど、当たり判定を比較2回でやるのって、どうやったっけか…。アセンブラの頃にソレをやってた記憶があるんだけど。そういや、Java の変数に unsigned は無いのであらうか。

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

#1 [seiji] _イラク邦人人質事件、共産党と社民党の対応

ここへ来て、非常に慎重な言い回しながらも国際テロ対策の現実へと舵を切った共産党。相変わらず現実が見えていない社民党。
ちと興味深い話。

#2 [seiji] _総理は被災地に行くべきか。

「総理が行ったからといって事態が改善するわけでなし。かといって行かないと世論がうるさいだろうし」ぐらいは一応思ってモヤモヤしてはいたのだけど。そのへん全てピシッとまとめてあったので、読後、なんとなくスッキリ。…スッキリしたからといって事態が改善するわけでもないけど。

#3 [jiji] _食べたものを淡々と記録するよ

_「23日の夕食から様子が一変する。」 の一文を読んで、「アレ、なんで?」と一瞬疑問符が浮かんでしまった自分を恥じた。

#4 [seiji] _南 英世の政治・経済学講義ノート

「国際政治と日本」だけ読んでみたり。勉強になりますた。が、分量が多くて下のほうはまだ読んでないのでした。こういう知識はちゃんと持ってないといかんのだけどなぁ…。ていうかコレ、高校の授業用なのか。自分の無知ぶりを再確認。 _(via はてなダイアリー - 霞が関官僚日記)

#5 [zatta] _なんで「本日は夢の話」なんだ!と。日本シリーズじゃねぇのか!と。

_昨日書いたコレ、 ひょっとしたらこのへんと繋がってるのかな、と一瞬思ったのだけど。

_そんなバカみたいに壮大なことを、あの人は思っているのだ。 :

読んだらなんだかわからなくなってきてしまった。合理的であること。非合理的であること。合理的でなければ生き残れない立場。非合理的であるからこそ生き残れる立場。うーん。

それはともかく、番組中での喋りと、Web上での文章が一致してて面白いなぁ。

_固定的な環境における思考を続ける為に広がりのある発想を阻害する :

む。

#6 [zatta] _日本の平和主義者は論理で議論できない?

リンク先も含めて興味深く読んだ。

#7 [zatta] _「マイコンて..そうなんや..」

予想していた展開 *1 とは全く違っていて、驚きつつも、なぜか感動。H君のうわごとが印象的…。
*1: カツアゲされるものとばかり。

#8 [anime] _アンパンマン世界設定の納得のいく理由を考える(SF)

なんだか凄いことに。もう、アンパンマンを素直に見れなくなりそう…。 *1 _(via Loop and Loop)
*1: 元々見てはいないけど。

#9 [comic] _デイズインUSA 第二章二十話「夢」

なんだか考えこんでしまう。

#10 [zatta] _今回の脱線で横転しなかったのは

今回の脱線で横転しなかったのは列車が側溝にはまってそのまま直進したからなのだそうだ。ということは、側溝をしっかり掘れ、ということだよな。外れても直進するようにすればいい。
目ウロコ。そこまで考えて設計されていたのか。…いたのか?

#11 [zatta] _説得力のある言葉

世の中には、どうしようも無い説得力で推し進める達人がいる。
例えば、これに関しての場合、どこから何を反論すれば良いというのか?
うーん。たしかに悩む…。

#12 [zatta] なんだか今日は

見事にうなずき系。

2003/10/29(水) [n年前の日記]

#1 [pc][linux][debian] ALSAモジュールを作れた

どこかのMLログで情報を見かけた。apt-get install alsa-source の際にサウンドカード種類を選ぶのだけど、指定が反映されてないらしい。 *1 なので、make-kpkg modules_image の際に、サウンドカードが何も指定されてない→全てのサウンドカードのモジュールを作ろうとする、らしいけど、途中でエラーを出すサウンドカードのモジュールがあって云々とか。 のどれかで解消する(らしい)。

update-grub :

lilo の代わりに grub を使ってるので、/etc/kernel-img.conf を、
postinst_hook = /sbin/update-grub
postrm_hook = /sbin/update-grub
do_bootloader = no
とすることで、カーネル追加時に update-grub が動くように。とはいえ update-grub の出力結果だけでは難ありで、結局は /boot/grub/menu.lst を直接修正する必要が。ちょっとイマイチ。もっとも、追加カーネルの指定忘れを避けられるだけでもありがたい話なのだろうけど。

新しいカーネルで起動してみたけれど :

新しい kernel-image-2.4.20-xx.yy.deb と alsa-modules-xxxx.deb が出来たので dpkg -i xxxxx でインストール。 /boot/grub/menu.lst を弄って新しいカーネルでも起動できるように。

実際起動してみるとフレームバッファが有効にならない。make menuconfig でカーネルの設定を色々変え、再構築を何度も繰り返してますます時間を消費。後で気づいたのだけど、フレームバッファの指定で'vesa'と打つべきところを'ves'と打ち間違えてただけだった。ギャフン。

自分の環境では、ビデオカード = Matrox G400、CPU = Celeron なので、video=matrox:vesa:0x118,mtrr をカーネルに渡してたり。詳細は /usr/src/linux/Documentation/fb/matroxfb.txt 参照。

startx すると 「mga_hal が無い」と文句を言われる。matrox のサイトから関連ファイルを落としてくる必要があるらしい。

ALSAが動いた :

alsaconf で作られた /etc/alsa/modutils/0.5を参考に、 *2 /etc/modutils/alsa を変更。 *3 現在の woody で作業してる分には、alsaconf の出力結果に対して、snd-card-ymfpci → snd-ymfpci といった具合に card- 部分を削除する修正が必要。 *4 その後、update-modules とか /etc/init.d/alsa restart とか打ったら動いてくれた。lsmod でサウンド関係のモジュールが大量に組み込まれてるのを確認。amixer set Master 80% unmute とか amixer set PCM 80% , amixer set Wave 80% としてミキサー設定をした後、alsactl store でミキサー設定を保存。aplay /mnt/win/c/media/chord.wav で音が鳴るのを確認。 *5

*1: apt-get install locales と同様。
*2: /etc/alsa/modules/0.5 だったかも。記憶が怪しい。
*3: /etc/modutils/alsa は /etc/alsa/modutils/0.9 にシンボリックリンクされてる、と思った。
*4: 後の alsa のバージョンでは、option 指定の snd_ も削除しないといけないらしい。
*5: /mnt/win/c というディレクトリを作ってから、mount -t vfat /dev/hda1 /mnt/win/c で windows のパーティションをマウントした。

#2 [pc][linux][debian] JKUGに繋がらない

コンソールで w3m を使って関連ページを探したりしてたのだけど、一部のサイトが見れなくて困ったり。ping www.google.co.jp は返ってくるけど、ping www.kde.gr.jp は unknown host と言われる。www.kde.gr.jp = JKUG(Japan Kde Users Group?) にはフォント関係の情報が結構載ってるようなので、参照できないのは厳しい。

linux + w3m , linux + mozilla 上からは JKUG を閲覧できたためしが無かったのだけど。数日前、Windows + sleipnir でアクセスしてみたら閲覧できてしまった。Windows も debian linux も同じPC上で動かしてるわけで…とすれば NIC(sis900) の linux 用ドライバに問題があるのか、それとも linux のDNS関係の設定ができてないのか。 *1 sis900 や DNS関係の情報を漁ってみるもそれらしい情報は見つからず。途方に暮れる。

ふと。Windows を起動して ping を打ってみたら unknown host と言われた。数日前は見れてたのに。何故。実は JKUG の webサーバが落ちてるだけ?

DNSサーバが無くなったらしい :

_http://kde.ics.es.yamanashi.ac.jp/ にコンテンツがあるらしい。…ということは sis900 も linux のDNS設定もおかしな状態ではなかったいうことか。ギャフン。

*1: w3m も mozilla も等しく閲覧できてないのだから、ブラウザソフトの問題では無さそうな。

#3 [linux] linuxって面倒臭い

こんなに情報を漁らないとそこそこ動く状態にすら出来ないのか。そのあたりについてはもうすぐ存在抹消のWindows98にすら劣る。やはりMSのOSは比較的出来がいいのではないか。ていうか今回サーバ用途以外でlinuxを導入しようとしてるのがそもそも無茶なのかも。まあ、元手をかけない分は苦労を背負わざるを得ないし、簡便さが欲しければ金を払ってMS製品を買うか、枯れたバージョンを使えばいいしで、お金と苦労のトレードオフだろうから面倒臭いのも仕方ない。

ていうか動かすだけなら knoppix でいいじゃんという話も (;´Д`)

#4 白虎隊は美しくない

NHKの「その時歴史が動いた」で、会津の白虎隊のエピソードが流れてた。

放映内容からすると、ひょっとして指揮官は、最初から終わりまで少年達を戦闘に参加させるつもりがなかったのではないかと思ったりもして。まともな思考ができる大人であれば、彼等の存在が何ら戦力にならない事も、戦闘で命を落としても状況的に只の犬死でしかない事も判ってただろうし。しかし思いの他、彼等に対して行われた「忠義心」なる洗脳教育の効果は大きく、結果彼等は指揮官の助言も聞き入れず、しかも最後にトホホな勘違いをして自滅していったと。

ゲストの黒鉄ヒロシが「美」という言葉を使ってたけど、「醜」や「愚」のほうがしっくりくると思った。ナレーションにあった「生と死の分岐点」は、えてして彼等が客観的・合理的判断力を取り戻せるかどうか *1 のポイントなのだけど、彼等がそれらポイントでひたすら非合理的な選択をしていったが故の結果なわけで。ああいった馬鹿げた行動・思考を美談と称してしまう人達がこの世界に存在するのだな。アホらしいのを通り越して恐ろしさすら感じる。

城を守る為に城下に火を放ったエピソードにも呆れる。江戸の将軍様が城下での戦闘を避ける為に無血開城してみせたのに比べると、会津の殿様や家臣連中はレベルが低い。民を統べる者のなすべき行動としては「恥」とすら言えるのでは。 *2 ていうかトップが変なプライド・間違ったプライドを持っちゃうと下々の者はかなり大迷惑、という話かも。「忠義」という単なる手法・手段を守る事にプライドを持つのではなく、民の生活を維持する事にプライドを持ってくれてたらなぁ。…時代・国民性からして無理か。
*1: そもそも彼等に合理的思考があったかどうか怪しいけど。「什の誓い」の「ならぬものはならぬ」で思考停止状態に陥ってしまった人間の集まりだからなぁ>会津の人間。
*2: といっても、将軍様や周囲の人間が時代に似合わない合理的思考の持ち主だった…当時としては将軍様がイリーガルというか、優秀過ぎたという話だろうけど。

2002/10/29(火) [n年前の日記]

#1 うーん

なんだか自分の文章って躁病っぽいような気がしてきた…(爆) _

#2 [zatta] うーん

なんだか自分の文章って躁病っぽいような気がしてきた…(爆)

明るくなったよ、大丈夫だよ、というポーズを取ることを、
最初のうちは意識的にしてた記憶もあるんだけど、
それを続けてるうちに固定化しちゃった…のかもしれない。
もっと突き抜ければ、笑いを取れて芸になるかもしれないけど、
とてもそこまでの文才?は無いみたいだしなぁ。

現実を見据えてしまうと、脳天気にしていられる要素が自分には何もないわけで。
3年寝太郎どころか、4、5年寝太郎ですよ。
何事につけても自信がないし(それは前からか)
何か作業するにしても集中力が持続しなくなったし。

それでもあえて、こうしてへらへらした日記・文章を書くことで、
精神面を落ちつかせる事に繋がってる可能性もあるのかなと思ったりして。

これが暗い日記だと逆効果かもしれないですが。
つーか以前はソレで、書く事で更に凹んでたような。
今はそのへん違う感じ。

「これを今日の日記のネタにしよう」と思いながら物事に接すると、
当事者ではなく観察者の視点になる分、少し気楽なところも出てくるような。
それでも当事者の視点でしか内容が語れていないのは、
観察者になり切れてないというか…
ある種の視野の狭さ、思考の枠の狭さを露呈してる気もしますが。
それでもまだ、当事者意識しか持たないで状況に接するよりいいのかなと。

ていうか何書いてんだろ>俺

頭に浮かんだ事を全部吐き出したがるのは、お袋さんゆずりみたいです。
最近わかってきました(爆)

2001/10/29(月) [n年前の日記]

#1 プリンタ

家族用PCに繋いでるプリンタ(EPSON PM-670C)の調子が悪い…というか壊れたみたい。
電源を入れると、ヘッドが動かず「ガガガガ」と異音。異常時を示すランプを点滅させたまま停止…
修理に出す事も考えたんですが、PM-670Cって、今だと7980円ぐらいで売ってるらしく。(在庫処分らしい)
その値段じゃ、新品買ったほうがいいよなぁ…今使ってるヤツは駆動系にガタが来てるかもしれないし。

新品を買うかどうかはともかく。
オイラのプリンタ(EPSON PM-3000C)は、稼働率、ほとんどゼロ。
てことで、PM-3000Cは、階下で家族が使う事に。

スキャナといい、プリンタといい、自分の部屋から周辺機器が無くなっていくなぁ…
まあ、自分の手元にあっても使用頻度少ないからアレなんですが…でも、寂しい。

仮に新品のプリンタを買うとして、何がいいのか少し調べてみたんですが。
わけわかんないですね。たくさんありすぎて。
型番と性能が一致してないあたりが判り辛いです。


Shadeで作業中。
棒の先端をくねらせて丸めるあたりでハマりんグ。

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

#1 ヘルプファイル作成

BCBの参考書片手に、ヘルプファイルの作り方を勉強してました。
なるほど。Wordで文書作って、MS HelpWorkshopとやらに入れれば出来ちゃうのか。簡単なんだなぁ。
なんとなくだけど、ヘルプファイルを最初に作ったほうが、仕様とかを決められて結構いいかも。
まあ、規模にもよるだろうけど。

そういや、「Next」「Prev」ボタンをヘルプファイルにつけるのって、どうやるんだろ。

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

#1 (NoTitle) AM8:00〜AM11:30、PM...

AM8:00〜AM11:30、PM4:00〜PM7:00に寝てました。

今日はオイラが夕御飯の当番だったのですが、お袋さんが鍋の材料を買いこんできたとの事で先送り。足りない材料を昼間に買ってくるつもりだったのですが、親父さんお袋さんが帰ってくる頃に目が覚めたので親父さんの車で買い物へ。ついでにジュースやらお菓子やらも買ってきて、これで夜にお腹が減っても大丈夫。
最近このジュース・菓子類がオイラの生命維持に重要な役割を果たしつつある気も。とか言ってないで三食ちゃんと食べろや>オレ
それでも体重増えてきてはいるんですけどね。一時期55→43だったけど今45ぐらいだし。

某所で「今僕」3話の情報を目にして大後悔。主人公拷問されて娘さんは犯されて、だそうで。スゴイな。衛星放送とは言え、TVでそんなの流してるのか。ああ見ておけば良かった。WOWOWやるな。TV東京とは違うのだよTV東京とは!みたいな感じですかね<なんか違う

以上、25 日分です。

過去ログ表示

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

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project