mieki256's diary



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

#1 [basic] FreeBASICでexeに画像バイナリを含めたい。その2

_昨日、 の実験の続き。FreeBASICで生成した実行形式ファイル(exeファイル)の中に、画像のバイナリデータを含めてしまって、それをウインドウに描画したい。

環境は Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit。

調べた範囲では、方法は4つある。昨日メモした内容を再度メモ。
リソースファイル利用、bin2bas利用、asm記述の利用については昨日試した。asm記述の利用だけは上手く行かなかったけど…。

今回は、バイナリファイルをオブジェクトファイルに変換してリンカで結合する方法を試してみた。

オブジェクトファイル化して結合する方法 :

以下で詳しく説明されてた。ありがたや。

_How to embed any binary file into your FB executable - freebasic.net

まずは、バイナリファイルのオブジェクトファイル化。MinGW や MSYS2 についてくる ld.exe、または、objcopy.exe を利用して、バイナリファイル、 _image_png.png を、オブジェクトファイル image_png.o に変換する。
ld -r -b binary -o image_png.o image_png.png

or

objcopy -I binary -O elf32-i386 -B i386 image_png.png image_png.o


これを、.bas と一緒にして、FreeBASIC でコンパイルする。
fbc loadpngld.bas image_png.o


.bas のソースは以下。

_loadpngld.bas
' 画像読み込み用ライブラリ FBImage を使う
#include once "FBImage.bi"

' カレントディレクトリを exeファイルのある場所にする
chdir exepath()

' リンクしたバイナリオブジェクトの先頭アドレスと終了アドレス
#If defined( __FB_WIN32__ ) And Not defined( __FB_64BIT__ )
' Windows 32bit
extern image_png_png_start alias "binary_image_png_png_start" as byte
extern image_png_png_end alias "binary_image_png_png_end" as byte
#Else
' Windows 64bit and other
extern image_png_png_start alias "_binary_image_png_png_start" as byte
extern image_png_png_end alias "_binary_image_png_png_end" as byte
#endif

' デスクトップ解像度を指定
Dim As Integer scrw = 512
Dim As Integer scrh = 288

' ウインドウサイズと色深度(bpp)を指定
screenres scrw, scrh, 32

' バイナリデータの先頭アドレスとサイズを取得
dim as byte ptr imgdata = @image_png_png_start
dim as Integer imgdata_length = @image_png_png_end - @image_png_png_start

' メモリ上にある画像データを FBImage で読み込む。ポインタとバイト数を渡す
var img = LoadRGBAMemory(imgdata, imgdata_length)

' 画像を描画。RGB=(255, 0, 255) のピクセルは透明色として扱う
Put (16, 16), img, TRANS

' キー入力があるまで待ち続ける
sleep

' 画像を使い終わったので破棄
ImageDestroy img


生成された loadpngld.exe を実行したら、ウインドウ内にpng画像が描画された。

loadpngld_ss.png


ということで、この方法でも画像データを exe に内包して利用できると分かった。

ただ、この方法は、ld か objcopy が必要になる点がちょっと厳しいかもしれない。MinGW や MSYS2 をインストールしてある環境なら、 _GNU Binutils パッケージ をインストールして ld や objcopy を使えるけれど、FreeBASIC しかインストールしてない環境ではオブジェクトファイル化が難しいだろうなと…。


少し解説。

ld もしくは objcopy を使って、バイナリファイルをオブジェクトファイル化すると、そのオブジェクトファイルにはいくつかのシンボルが入ってる。objdump -t hoge.o でシンボルを確認できる。
> objdump -t image_png.o

image_png.o:     file format pe-i386

 SYMBOL TABLE:
[  0](sec  1)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x00000000 _binary_image_png_png_start
[  1](sec -1)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x0000c4a8 _binary_image_png_png_size
[  2](sec  1)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x0000c4a8 _binary_image_png_png_end

hoge.png というファイルをオブジェクト化したなら、以下のようなシンボルになる。
  • 開始アドレスを示すシンボルは _binary_hoge_png_start に。
  • 終了アドレスを示すシンボルは _binary_hoge_png_end に。
この2つのシンボルを頼りにして(?)、FreeBASIC側からアクセスすればいい。

注意点。FreeBASIC が32bitか、64bitかで、FreeBASICからアクセスする際のシンボル名が微妙に変わるらしい。32bit版は、先頭の「_」が無くなるのだとか。
32bit:
binary_image_png_png_start
binary_image_png_png_end

64bit:
_binary_image_png_png_start
_binary_image_png_png_end


FreeBASIC側の仕様についてもメモ。

  • __FB_WIN32__ は、Windows上でコンパイルする際に定義されるシンボル。
  • __FB_64BIT__ は、64bitアプリとしてコンパイルする際に定義されるシンボル。
___FB_WIN32__
___FB_64BIT__

#ifdef - #else - #endif を使えば、Windowsとそれ以外、64bitとそれ以外、といった具合に条件を分けてコンパイルできる。

_条件付きコンパイル


FreeBASICでは、シンボル?の前に「@」がつくと、アドレスを示す値になるらしい。あちこちのソースに出現していて、これは一体何だろうと思ってた…。また、ptr はポインタ変数であることを示してる。

_演算子 @ (のアドレス)
_POINTER | PTR

#2 [basic] FreeBASICで反転描画してみたかったができなかった

FreeBASIC は put を使って画像を描画することができる。ただ、水平反転、垂直反転描画ができないような気もする…。これではSEGAのゲームギアじゃないか…。 *1

put に与える画像横幅、画像縦幅をマイナス値にしたらあっさり反転描画できたりしないかなと気になったので試してみた。

環境は Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit。

結果を先に書くけど、ダメだった。そんな美味しい話は無さそう。

_obj.bmp

_put_flip.bas
' put flip test

#ifdef __FB_WIN32__
' Windowsの場合、mmsystemを利用
#include "windows.bi"
#include "win/mmsystem.bi"
#endif

' fbgfxモードを使う
#Include "fbgfx.bi"
Using fb

' 時間計測用の変数
Dim As Double start_time, prev_time, now_time, delta, one_frame, next_time
Dim As Integer frame_count
Dim As String fps_text = "FPS"

Dim As Integer scrw, scrh  ' ウインドウサイズ
Dim As Integer imgw, imgh  ' 画像サイズ

chdir exepath()  ' カレントディレクトリを exeファイルのある場所にする

' ウインドウサイズと色深度を指定
scrw = 512
scrh = 288
Screenres scrw, scrh, 32

' 画像読み込み。FreeBASIC標準のbmp読み込みを使う場合
Dim img As any ptr = ImageCreate(128, 64)
Bload "obj.bmp", img
imageinfo img, imgw, imgh  ' 画像の幅と高さを取得

#ifdef __FB_WIN32__
timeBeginPeriod(1)         ' タイマー精度を1msecに向上
#endif

Dim As Double MAX_FPS = 60.0  ' FPS
one_frame = 1.0 / MAX_FPS     ' 1フレームあたりの本来の時間

start_time = Timer            ' 開始時間を取得
prev_time = start_time
frame_count = 0

Dim As Boolean running = True
Dim As Double x, y
x = scrw / 2
y = scrh / 2

Dim As Double anime_t = 0.0

' メインループ
While (running)

    ' 前回フレームから何秒経過したか取得。単位は秒(小数点以下有り)
    now_time = Timer
    delta = now_time - prev_time
    prev_time = now_time
    next_time = now_time + one_frame
    If delta < 0 Then delta = one_frame

    If now_time >= start_time Then
        If (now_time - start_time) >= 1.0 Then
            ' 1秒経過したのでFPSを取得
            fps_text = "FPS: " & frame_count
            start_time += 1.0
            frame_count = 0
        End If
    Else
        start_time = now_time
    End If
    frame_count += 1

    ' ESCキー、qキー、ウインドウの閉じるボタンを検出
    Dim As String k = inkey$
    If k = Chr$(27) Or k = "q" Or k = Chr$(255) + "k" Then
        running = False  ' メインループ終了
    End If

    anime_t += delta  ' アニメ表示用カウンタを更新

    ScreenLock  ' 描画開始
    color RGB(255, 255, 255), RGB(52, 164, 255)
    cls         ' 画面クリア

    ' 画像を描画
    Dim As Integer n, sx, sy, sw, sh
    n = Int(anime_t / 0.5) Mod 2  ' 0 or 1
    sw = (imgw / 2)  ' 幅
    sh = imgh        ' 高さ
    sx = 0           ' 描画元 x
    sy = 0           ' 描画元 y
    If n = 1 Then
        sx += sw
        sw = -sw
    End If
    Put (x - (sw / 2), y - (sh / 2)), img, (sx, sy) - Step(sw, sh), TRANS

    ' 文字列を描画
    Draw String (10, 10), fps_text
    Draw String (scrw / 2 - (8 * 6), scrh * 0.8), "HELLO WORLD"

    ScreenUnlock ' 描画終了

    If Timer < next_time Then
        ' 本来の1フレーム時間がまだ経過してないので sleep させる
        Dim As Double wait_ms = (next_time - Timer) * 1000.0
        If wait_ms > 0.0 Then sleep wait_ms
    End If
Wend

While Inkey <> "": Wend  ' キーバッファを空にする

#ifdef __FB_WIN32__
timeEndPeriod(1)  ' タイマー精度を本来のスペックに戻す
#endif

ImageDestroy img  ' 画像を使い終わったので破棄


fbc put_flip.bas で、put_flip.exe を生成。実行結果は以下。

put_flip_ss.gif


ダメだった。

しかし、コレってどういう状態になってるんだろう…?

2024/02/05追記 :

反転描画を試みる際に、表示位置もずれるように書いちゃってることに気づいた。まあ、どのみち反転描画はできてないので、このままで。


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

#1 [tv] 「大河ドラマが生まれた日」を視聴

NHK総合で放送されていたので視聴。普段は「ブラタモリ」が流れてる枠で放送されてた。大河ドラマ第1作相当のドラマを作る際のエピソードがドラマの中で紹介されていた。

なんでもそうだろうけど、何かしらのジャンルが誕生していく時期のエピソードは面白いなと…。「○○はじめて物語」を探せば、他にも色々な企画が出せそうな気もする。

当時のTV業界が映画業界から馬鹿にされていたという、その状況から学べることがありそうな気もした。今現在、TV業界から馬鹿にされている何かしらが、数十年後にはTV業界と立場が逆転している可能性はあるよなと。映画とTVの関係がそうだったわけだし。新しい何かが出てくると、十中八九、最初は馬鹿にされる。でも、後になって大きなジャンルになったり…する時もある。だから、何かをついうっかり馬鹿にしそうになった時は、ちょっと気を付けないといけない。小説、映画、TV、漫画、アニメ、ゲーム、ロック、テクノ、etc。後々評価が変わった事例はいくらでもあるので、「待てよ? 俺は今、未来の一大ジャンルを馬鹿にする節穴野郎になってないか?」とチラッと疑ってみたほうがいいのかもしれない。

それはさておき、スケールの大きいドラマを作りたいから映画界のスターを連れてこないといけないという、その流れにちょっとアレなものを感じたりもした。自分達で新人を発掘してスターを育てていこうという発想が無く、他所で評価を得ている何かしらをちゃっかり持ってきてどうにかしようという、その姿勢が…。いやまあ、日本人ってそういうものだろ、ブランドに弱いだろと言われてしまったらアレなのだけど。例えば少年ジャンプが漫画雑誌として後発だったために有名漫画家は他紙に取られていて新人漫画家を育てるしかないと覚悟を決めたら後にその方針が花開いて云々とか、富野監督が次々に新人を起用して育てていった事例などを思い返すと…。もっとも、TVというメディアで大型時代劇を作ること自体が当時のNHKにとっては挑戦だったわけだから、全てにおいてチャレンジャーである必要もないのかもしれないか…。

2022/02/04(金) [n年前の日記]

#1 [nitijyou] 服のゴムの入れ替えをした

部屋着として使っているスウェットのズボン? パンツ? なんて呼ぶのか分からんけど上下の下のほうの、腰回りのゴム(ウェストゴム?)が伸び切ってしまって、新しいゴムと入れ替えたのだけど。

作業してみたら、なんだかんだで1時間ぐらいかかってしまった。古いゴムに新しいゴムを安全ピンでつけて、古いゴムを引っ張って入れ替えようとしたら途中で外れたようで古いゴムだけが出てきてしまって、仕方なく新しいゴムの端に安全ピンを刺して、安全ピンを穴から入れて、チビチビと尺取り虫のように進ませて通したけれど…。いやはや、とにかく時間がかかった…。こういうのって、もうちょっとどうにかならんのかな…。

ググってみたら「ゴム通し」「紐通し」なる道具が存在するらしい。そんな道具があったのか…。

_ゴム通しの道具、使い比べてみました!イチオシアイテムも紹介。 | nunocoto
_便利すぎる!ダイソー「ロングひも通し」入園入学グッズ作りに使える! | あんふぁんWeb
_ズボンのゴムの交換方法!入れ方と結び方も!簡単な替え方紹介!

そもそもスウェットのソレは、ゴムなんか通さずに紐で縛ってずり落ちないようにしてる事例が多い気もする。自分は毎回紐で縛るのが面倒臭くてゴムを通してしまっているけれど、紐で縛るソレも簡単に固定と解除ができれば充分なはずで。でも、そのあたり改善するアイテムが見つからない。バネで紐を留めるソレをダイソーで買って試してみたこともあるけれど、紐が太くて穴を通せなかったり、通せてもブラブラしてなんだか邪魔だしで、どうもイマイチで…。

ゴム通しを買ってきた。 :

ダイソーに寄ってゴム通しを買ってきた。商品名は「ロング紐通し」。これで次回の作業時に楽になればいいのだけど。

ついでに針通しも購入。木綿用針 x 3 と絹用針 x 1 がセットになってるモノと、ミシン針用 x 2 がセットになってるモノの2つを選んできた。

どちらの道具も、おそらくお袋さんも使うだろうということで、お袋さんが管理してる裁縫道具箱の中に入れておいてもらうことにした。でも、そのうち自分すら、この手の道具の存在を忘れてしまいそうな気がする…。ここ近年、家族全員の物忘れが…。

#2 [nitijyou] 灯油ポンプホルダー立てを再作成中

灯油ポンプホルダーを立てるための台を作って玄関に置いてみたけれど、高さがあり過ぎて作業しづらい上に、安定性も悪くてこれではダメだなと。ダイソーで買ってきた板を適切な長さに切るのを面倒臭がってそのまま使ったものだから、高くなり過ぎてしまった…。

そんなわけで、またダイソーで板を買ってきた。今度はちゃんとノコギリを使って適切な長さに切断。しかし、手持ちのノコギリは切れ味がどれも今一つで、切断作業に1時間半…。接着作業は明日にしよう…。

なんだか電動ノコギリが欲しくなってきた。ググってみたけれど、レシプロソーと呼ばれる、前後に動くタイプの電動ノコギリが良さそう。電動丸ノコのほうが切断面の直線性は保たれるらしいけど、部屋の中で使えそうな気はしない…。切った際の粉が飛び散りそうだし。

それとも、真っ当なノコギリを買えば時間短縮できるのだろうか。100円ショップで買ってきたノコギリを使ってるからダメなのかな…。

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

#1 [love2d] love2dでコマンドラインオプションを取得

love2dスクリプトで、コマンドラインオプション(コマンドライン引数)を取得できるか試してみたり。環境は Windows10 x64 20H2 + love2d 11.3。

ググったところ、arg というテーブルにコマンドラインオプションが入った状態で love2dスクリプトが実行されるらしい。

とりあえず、サンプルを書いてみる。今回、コマンドラインオプションを取得して画面に表示するサンプルを書いてみた。

getarg というフォルダを作成して、conf.lua と main.lua を置く。

_conf.lua
function love.conf(t)
  t.window.title = "get arg with love2d"
  t.window.vsync = true
  t.window.width = 640
  t.window.height = 480
  -- t.window.fullscreen = true
  -- t.window.fullscreentype = "exclusive"
end
_main.lua
-- get arg with love2d

function love.load(arg)

  -- Check command line options
  ssmode = ""
  for k, v in pairs(arg) do
    lv = string.lower(v)
    if lv == "/s" then
      ssmode = "fullscreen"
    elseif lv == "/c" then
      ssmode = "config"
    elseif lv == "/p" then
      ssmode = "preview"
    elseif lv == "/a" then
      ssmode = "passwordlock"
    end
  end

  if ssmode == "" then
    ssmode = "none"
  end

  min_dt = 1 / 60
  next_time = love.timer.getTime()
end

function love.update(dt)
  next_time = next_time + min_dt
  if dt > 0.75 then
    return
  end
end

function love.draw()
  love.graphics.setCanvas()
  love.graphics.clear(0, 0, 0.2, 1.0)

  love.graphics.setColor(1, 1, 1, 1)
  love.graphics.print("FPS: " .. tostring(love.timer.getFPS()), 10, 10)
  
  y = 32
  for k, v in pairs(arg) do
    love.graphics.print(string.format("arg[%d] : %s", k, v), 10, y)
    y = y + 18
  end
  
  y = y + 18
  love.graphics.print("Mode : " .. ssmode, 10, y)

  if love.system.getOS() == "Windows" then
    -- wait
    local cur_time = love.timer.getTime()
    if next_time <= cur_time then
      next_time = cur_time
    else
      love.timer.sleep(next_time - cur_time)
    end
  end
end

function love.keypressed(key, isrepeat)
  if key == "escape" then
    -- ESC to exit
    love.event.quit()
  end
end

以下のようにループを回せば、arg テーブルのキーと値を順々に取り出すことができる。
  for k, v in pairs(arg) do
    -- key, value
  end

動かしてみる。love フォルダ名、で実行できる。まずはコマンドラインオプションを付けない状態で試してみる。
love getarg
getarg_ss01.png
arg[1] : getarg
arg[-2] : love
arg[-1] : embedded boot.lua

Mode : none

コマンドラインオプションを付けて実行してみる。
love getarg /s
getarg_ss02.png
arg[1] : getarg
arg[2] : /s
arg[-2] : love
arg[-1] : embedded boot.lua

Mode : fullscreen

.loveファイルを作成。 :

この love2dスクリプトを、.loveファイルに変換してみる。.loveファイルと言ってるけれど、実態は .zip ファイル。
  1. conf.lua と main.lua を、1つのzipファイル、getarg.zip に圧縮する。(getargフォルダごとzip圧縮しないように注意。)
  2. getarg.zip の .zip を .love にリネームする。
これで、getarg.love を作成できた。

動作確認してみる。
love getarg.love /s
getarg_ss03.png
arg[1] : getarg.love
arg[2] : /s
arg[-2] : love
arg[-1] : embedded boot.lua

Mode : fullscreen
  • フォルダ名を指定した時と違って、arg[1] が getarg から getarg.love に変わっている。
  • それ以外は、love getarg /s を動かしたときと同じ。

exe化する。 :

getarg.love を exe化してみる。

love2dスクリプトの exe化は、love.exe の末尾に .love ファイルを結合するだけでいいらしい。
copy /b love.exe+getarg.love getarg.exe

これで、getarg.exe を作ることができた。

getarg.exe を動かすためには、love.exe に同梱されているDLLファイル群が必要になる。こうして .exe化した exeファイルを配布する際は、それら .dll も一緒に配布しておかないと動作しないよ、ということになっているけれど…。

とりあえず、今回は love2d をインストールしてある環境で動作確認しているので ―― OSの環境変数PATHに love2d のインストールフォルダが登録してあるので、DLLが必要になったら PATH の中からDLLを探して呼び出して一応実行することはできるだろう、と。実際、getarg.exe をいきなり呼び出しても動いてくれた。

動作確認してみる。
getarg.exe /s
getarg_ss04.png
arg[1] : /s
arg[-2] : getarg.exe
arg[-1] : embedded boot.lua

Mode : fullscreen
  • arg[1] が「/s」になった。
  • arg[-2] が getarg.exe になった。

とりあえず…。
  • love2dスクリプトのままでも、
  • .loveファイルにしても、
  • exe化しても、
love2d に渡されたコマンドラインオプションを取得することはできそうだ、ということが分かった。

#2 [love2d] love2dでWindows用のスクリーンセーバを作成してみる

love2d を使って、Windows用のスクリーンセーバを作成してみる。環境は、Windows10 x64 20H2 + love2d 11.3。

Windows用スクリーンセーバについてのおさらい。 :

Windows用のスクリーンセーバは、拡張子が .scr になっているけれど、実態は exeファイル。

以下のコマンドラインオプションを渡して実行した際に、それぞれ処理が変わるように作っておけばスクリーンセーバとして使える、らしい。
  • /s : フルスクリーン表示。スクリーンセーバとして動いている時はこの状態。
  • /c : 設定ダイアログを表示する。
  • /p xxxx : プレビューモード。スクリーンセーバの種類を選択する際に表示されている小さい窓部分を返す。xxxx はウインドウハンドルらしい。
  • /a : パスワード設定。

また、スクリーンセーバのファイル名は、8文字以下(拡張子を除く)にしておかないといけない、という話もどこかで見かけた。それって Windows 9x 時代の話じゃないのか、今も適用されるのか、という疑問も湧くけど、一応合わせておいたほうが無難だろうなと…。

以下、参考ページ。

_スクリーンセーバー
_Borland C++ 5.5 フリーでスクリーンセーバを作る

love2dスクリプトを書く。 :

とりえず、フルスクリーンで表示して、丸が画面の中で跳ね回るだけのlove2dスクリプトを書いてみた。

lovescr1 というフォルダを作って、中に conf.lua と main.lua を置く。

_conf.lua
function love.conf(t)
  t.window.title = "Windows Screensaver with love2"
  t.window.vsync = true
  t.window.width = 1280
  t.window.height = 720
  t.window.fullscreen = true
  -- t.window.fullscreentype = "exclusive"
end
  • t.window.fullscreen = true を書いて、フルスクリーン表示を指定している。

_main.lua
-- Windows screensaver with love2d

function love.load()
  love.graphics.setDefaultFilter("nearest", "nearest")

  -- get screen size
  wdw_w, wdw_h = love.graphics.getDimensions()

  -- Check command line options
  ssmode = ""
  for k, v in pairs(arg) do
    lv = string.lower(v)
    if lv == "/s" then
      ssmode = "fullscreen"
    elseif lv == "/c" then
      ssmode = "config"
    elseif lv == "/p" then
      ssmode = "preview"
    elseif lv == "/a" then
      ssmode = "passwordlock"
    end
  end

  if ssmode == "" then
    ssmode = "none"
  end

  if ssmode == "config" then love.event.quit() end
  if ssmode == "preview" then love.event.quit() end
  if ssmode == "passwordlock" then love.event.quit() end
  if ssmode == "none" then love.event.quit() end
  
  -- hide mouse cursor 
  love.mouse.setVisible(false)

  min_dt = 1 / 60
  next_time = love.timer.getTime()

  dx = wdw_w / 2
  dy = dx / 3
  x = wdw_w / 2
  y = wdw_h / 2
  r = wdw_w / 100
end

function love.update(dt)
  next_time = next_time + min_dt
  if dt > 0.75 then return end

  -- move ball
  x = x + dx * dt
  y = y + dy * dt
  if (x - r) < 0 or (x + r) > wdw_w then dx = dx * -1 end
  if (y - r) < 0 or (y + r) > wdw_h then dy = dy * -1 end
end

function love.draw()
  -- clear screen
  love.graphics.setCanvas()
  love.graphics.clear(0, 0, 0, 1.0)

  -- draw ball
  love.graphics.setColor(0.1, 0.3, 1.0, 1.0)
  love.graphics.circle("fill", x, y, r)

  -- draw FPS
  love.graphics.setColor(0.5, 0.5, 0.5, 1.0)
  love.graphics.print("FPS: "..tostring(love.timer.getFPS()), 10, 10)

  if love.system.getOS() == "Windows" then
    -- wait
    local cur_time = love.timer.getTime()
    if next_time <= cur_time then
      next_time = cur_time
    else
      love.timer.sleep(next_time - cur_time)
    end
  end
end

function love.keypressed(key, isrepeat)
  -- Pressed any key to exit
  love.mouse.setVisible(true)
  love.event.quit()
end

function love.mousemoved( x, y, dx, dy, istouch )
  -- Moved the mouse cursor a lot to exit
  if dx * dx + dy * dy >= 16 * 16 then
    love.mouse.setVisible(true)
    love.event.quit()
  end
end
  • コマンドラインオプションを取得して、/s の時だけ動作させる。
  • /c、/p、/a、及び、コマンドラインオプション無しの場合は、いきなり終了させている。
  • 何かキー入力があったら終了させる。love.keypressed(key, isrepeat) で検出。
  • マウスカーソルが16ドット以上動いたら終了させる。love.mousemoved( x, y, dx, dy, istouch ) で検出。

動作確認。
love lovescr1 /s
lovesr1_ss.png

フルスクリーン表示で、丸が動いた。

何かキーを押したり、マウスを勢いよく動かすと終了する。

scr化する。 :

.loveファイルを作成。conf.lua と main.lua を、lovescr1.zip に圧縮して、.zip を .love にリネーム。

.loveファイルをexe化(scr化)する。
copy /b love.exe+lovescr1.love lovescr1.scr
lovescr1.scr が出来上がった。

所定の場所にコピー。 :

出来上がった lovescr1.scr を、所定の場所にコピーしてみる。
  • 32bit版 Windows の場合、C:\Windows\System32\
  • 64bit版 Windows、かつ、スクリーンセーバが32bit版プログラムの場合、C:\Windows\SysWOW64\
  • 64bit版 Windows、かつ、スクリーンセーバが64bit版プログラムの場合、C:\Windows\System32\

今回の環境は、64bit版の Windows10。また、今回利用した love2d は 32bit版だったので、C:\Windows\SysWOW64\ に lovescr1.scr を置いてみた。

本来、lovescr1.scr と一緒に、love2d を動かすための以下のDLL群も C:\Windows\SysWOW64\ 以下にコピーしないといけないのだけど…。
game.ico
love.dll
love.ico
lua51.dll
mpg123.dll
msvcp120.dll
msvcr120.dll
OpenAL32.dll
SDL2.dll

こんなに大量の .dll を、C:\Windows\SysWOW64\ 以下にコピーするのはちょっとヤバイ気がするわけで。

なので、環境変数 PATH に、love2d のインストール場所を追加しておいて、.dll のコピーはしないことにする。love2d を利用する exe が実行されて、.dll が必要になったら、PATH の中から探して呼び出してくれるだろう…。たぶん。

動作確認。 :

Windows10 のスクリーンセーバ設定を呼び出してみる。デスクトップ画面を右クリック → 個人用設定 → ロック画面 → スクリーンセーバー設定。

lovesr1_ss02.png

lovescr1 が選べるようになっている。
  • プレビュー画面には、何も出てこない。/p xxxx を与えて実行した時は、即座に終了するようにしているので。
  • 設定ボタンを押しても、何も出てこない。/c を与えて実行した時も、即座に終了するようにしているので。
  • プレビューボタンを押すと(/s を与えて実行されると)、フルスクリーンで表示される。

スクリーンセーバが実行されるまでの時間を1分に設定して、本当に呼びされるのか眺めてみたけれど、一応実行してくれた、ように見えている。

試してみた感想。 :

何かの拍子にプロセスが残り続けたりしないか、等々が気になるし、プレビュー表示も設定画面も出せないあたりがちょっともやもやするけれど。でもまあ、一応、love2d を使って Windows用のスクリーンセーバを作れなくもないっぽい雰囲気ではあるな、と…。

ただ、動作に必要なDLL群をどこに置くか、という問題は残るなと。今回は love2d をインストールしてある環境だから動いているけれど、どの環境でも動作する形にして配布するのは結構難しそう。

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

#1 [cg_tools][ubuntu] Ubuntu上でxpaintをビルドしてみたけれど

Ubuntu Linux 18.04 LTS 上で、公式バイナリの xpaint を使うと、選択範囲をドラッグしただけで落ちてしまうわけだけど。

Ubuntu 18.04 にインストールされる xpaint は、バージョンが 2.9.1.4-3.2。SourceForge に置いてあるソースは、最新版が 2.10.2。

_XPaint download | SourceForge.net

最新版なら、落ちるバグが修正されてたりしないか。試しにビルドしてみることにした。

環境は、Windows10 x64 1909 + VMware Workstation 15 Player 15.5.0 build-14665864 + Ubuntu Linux 18.04 LTS x64。

結論を先に書いておくけれど、sudo apt source xpaint で、パッケージのソースを入手して、パッチを当ててビルドするほうがいいです。以下は単なる作業記録と実験結果。

ビルド手順。 :

xpaint-2.10.2.tar.bz2 をDLして、tar xf xpaint-2.10.2.tar.bz2 で解凍。

中に INSTALL というファイルがあって、ビルドに必要なパッケージや、ビルド手順が書いてあった。

必要なパッケージが入っているか確認。

Obviously, you need an ANSI C compiler - only gcc is supported - and you need the following libraries to be installed, together with their associated development packages :

X11 libraries (libX11, libXext, libXt, libXmu, libSM, libICE, libXp)
libXpm
libz
libpng
libtiff
libjpeg
libopenjpeg
libpgf (optional)

Most Unix/Linux distributions should provide this (except possibly the optional libpgf, which is not required to build xpaint, but is of course needed to load PGF images).

Ubuntu公式リポジトリ内で、libopenjpeg と libgf が見つからないのがちょっと気になったけど、それ以外は既にインストールされていたか、追加でインストールできた。

sudo apt install libxmu-dev libxpm-dev

他にも、libtool-bin、libxaw3dxft-dev が必要になった気がする。

sudo apt install libtool-bin libxaw3dxft-dev

この状態で、configure、make。

cd xpaint-2.10.2
./configure
make
sudo make install
$ which xpaint
/usr/local/bin/xpaint
/usr/local/bin/ 以下にインストールされたらしい。

xpaint と打ったら起動してくれた。

やっぱり落ちる。 :

起動はしたものの、選択範囲をドラッグしたら落ちた。最新版もバグ入りなのだな。

xpaint 2.10.2 は 2017/11/13 に公開されてるようだけど、2018年の時点でも件のバグが報告されてるようで…。

_XPaint / Bugs / #19 Stack smash error on selection drag.

パッチがあった。 :

以下でパッチが紹介されてた。PaintRegion.c を修正するらしい。

_Bug #1691906 “*** stack smashing detected ***: xpaint terminated...” : Bugs : xpaint package : Ubuntu

value という変数を boolean で用意したのに、int として扱っていたのだな…。C言語って怖い。

試しに修正を加えて、make、sudo make install をしたら、選択範囲をドラッグしても落ちなくなった。

別の操作で落ちた。 :

選択範囲ドラッグで落ちなくなって喜んだものの、別の操作で落ちることに気づいた。File → Open Image を選んだら、ファイル選択ダイアログが一瞬表示された直後に「Segmentation fault (コアダンプ)」と言って落ちる。うーん。

ロードで落ちるということは、もしかして…。Save もダメだった。同じように、ファイル選択ダイアログが一瞬表示された直後に落ちてしまう。

openjpeg 関係のソレが無かったからダメなのだろうか。何にせよ、画像保存すらできないのでは、使えない。アンインストールするしかない…。

sudo make uninstall

パッケージのソースからビルド。 :

修正すべき箇所は少ないのだから、Ubuntu/Debianのパッケージソースを入手して、ソースを修正してビルドするのはどうだろう。試してみる。

参考ページ。

_第152回 パッケージをビルドしてみる:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

この手のビルドに必要なツールをインストール。
sudo apt-get install build-essential devscripts

ソースを入手。
apt source xpaint
$ ls -al
合計 1036
drwxrwxr-x  3 username username    4096  2月  4 08:36 ./
drwxrwxr-x  6 username username    4096  2月  4 08:28 ../
drwxrwxr-x 12 username username    4096  2月  4 08:36 xpaint-2.9.1.4/
-rw-r--r--  1 username username   13528 10月  3  2016 xpaint_2.9.1.4-3.2.debian.tar.xz
-rw-r--r--  1 username username    2158 10月  3  2016 xpaint_2.9.1.4-3.2.dsc
-rw-r--r--  1 username username 1025885 10月 16  2010 xpaint_2.9.1.4.orig.tar.bz2
入手できたっぽい。

xpaint のビルドに必要なパッケージをインストール。
sudo apt build-dep xpaint

xpaint-2.9.1.4/PaintRegion.c を修正。boolena value; を int value; に変更。

ビルドしてみる。
cd xpaint-2.9.1.4
dpkg-buildpackage -r -uc -b

通らない…。
...
rm -f librw.a
ar clq librw.a  rwTable.o readWriteBMP.o readWriteICO.o readScriptC.o   readWriteXBM.o readWritePNM.o readWriteXWD.o readWritePS.o  readWriteLXP.o readGIF.o writeGIF.o readWriteXPM.o writeTIFF.o readTIFF.o    readJPEG.o writeJPEG.o readWritePNG.o libpnmrw.o
ranlib librw.a
make[2]: ディレクトリ '/home/username/packages/xpaint_orig/xpaint-2.9.1.4/rw' から出ます
making always in ./xaw3dxft...
make[2]: ディレクトリ '/home/username/packages/xpaint_orig/xpaint-2.9.1.4/xaw3dxft' に入ります
make[2]: ディレクトリ '/home/username/packages/xpaint_orig/xpaint-2.9.1.4/xaw3dxft' から出ます
./substads -single xpaint.man.in xpaint.man XPAINT_VERSION 2.9.1
rm -f xpaint
gcc -o xpaint -g -O2 -fno-strict-aliasing       chroma.o color.o colorEdit.o dialog.o fatBitsEdit.o     fileBrowser.o fontSelect.o grab.o graphic.o hash.o help.o   image.o imageComp.o iprocess.o magnifier.o main.o menu.o misc.o     operation.o palette.o pattern.o print.o protocol.o readRC.o     screenshot.o text.o texture.o typeConvert.o arcOp.o freehandOp.o boxOp.o brushOp.o circleOp.o fillOp.o  fontOp.o lineOp.o pencilOp.o polygonOp.o splineOp.o selectOp.o  sprayOp.o dynPenOp.o Colormap.o Paint.o PaintEvent.o PaintRegion.o PaintUndo.o -Lrw -lrw -ldl -rdynamic   -L/usr/lib -lXpm -lX11 -lm -lXmu -lXext -lXft -ltiff  -ljpeg -lpng -lz   -lXaw3dxft -lXt -lfontconfig -L. -L./xaw3dxft   
main.o: 関数 `main' 内:
/home/username/packages/xpaint_orig/xpaint-2.9.1.4/main.c:737: `SetXftEncoding' に対する定義されていない参照です
/home/username/packages/xpaint_orig/xpaint-2.9.1.4/main.c:739: `SetXftDefaultFontName' に対する定義されていない参照です
/home/username/packages/xpaint_orig/xpaint-2.9.1.4/main.c:740: `SetMenuSpacing' に対する定義されていない参照です
/home/username/packages/xpaint_orig/xpaint-2.9.1.4/main.c:741: `SetXftInsensitiveTwist' に対する定義されていない参照です
/home/username/packages/xpaint_orig/xpaint-2.9.1.4/main.c:742: `SetXawHilitColor' に対する定義されていない参照です
magnifier.o: 関数 `DrawString' 内:
/home/username/packages/xpaint_orig/xpaint-2.9.1.4/magnifier.c:438: `XftDefaultFont' に対する定義されていない参照です
fontOp.o: 関数 `key' 内:
/home/username/packages/xpaint_orig/xpaint-2.9.1.4/fontOp.c:552: `XftEncoding' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
Makefile:1241: recipe for target 'xpaint' failed
make[1]: *** [xpaint] Error 1
make[1]: ディレクトリ '/home/username/packages/xpaint_orig/xpaint-2.9.1.4' から出ます
dh_auto_build: make -j1 returned exit code 2
debian/rules:11: recipe for target 'binary' failed
make: *** [binary] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary subprocess returned exit status 2

色々インストールした Ubuntu だからダメなのだろうか。素の Ubuntu なら違う結果になるのかな。どうなんだろう。

別途Ubuntuをインストールし直して試した。 :

VMware Player上で、別途、Ubuntu Linux 18.04 LTS x64 をインストールし直して、パッケージソースを入手してビルドできるか試してみた。

そちらだと、すんなりビルドが通ってしまった…。

以下の3つのファイルができたっぽい。
  • libxaw3dxft6_2.9.1.4-3.2_amd64.deb
  • xpaint-dev_2.9.1.4-3.2_amd64.deb
  • xpaint_2.9.1.4-3.2_amd64.deb

dpkgでインストール。
sudo dpkg -i libxaw3dxft6_2.9.1.4-3.2_amd64.deb
sudo dpkg -i xpaint-dev_2.9.1.4-3.2_amd64.deb
sudo dpkg -i xpaint_2.9.1.4-3.2_amd64.deb

xpaint を起動してみた。選択範囲をドラッグしても落ちないし、ファイル選択ダイアログも開く。

ただ、キャンバスを画像保存しようとした際、ファイル選択ダイアログが開くけど、ファイル名を入力できない…。というか、ファイル名が表示されない…。

元々の仮想HDDイメージで試した。 :

元々の仮想HDDイメージを使って、ビルドできるか試した。OSインストール直後の Ubuntu ならすんなりビルドできたことを考えると、おそらく、xft関連パッケージで余計なものを入れてしまっているのではないかと…。

sudo aptitude search xft で列挙されたパッケージの中から、libxaw3dxft* や libxft* をアンインストールして、必要になるはずのパッケージを再度インストール。

sudo apt install autoconf automake autopoint autotools-dev bison debhelper \
dh-autoreconf dh-strip-nondeterminism flex libbison-dev libexpat1-dev \
libfile-stripnondeterminism-perl libfontconfig1-dev libfreetype6-dev \
libice-dev libjbig-dev libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev \
liblzma-dev libpng-dev libpthread-stubs0-dev libsigsegv2 libsm-dev \
libtiff-dev libtiff5-dev libtiffxx5 libtool libx11-dev libxau-dev \
libxaw7-dev libxcb1-dev libxdmcp-dev libxext-dev libxft-dev \
libxmu-dev libxmu-headers libxpm-dev libxrender-dev libxt-dev \
m4 pkg-config po-debconf x11proto-core-dev x11proto-dev \
x11proto-xext-dev xorg-sgml-doctools xtrans-dev xutils-dev zlib1g-dev

この状態で試したら、ビルドが通った。やはり余計なものを入れてしまっていたらしい。

更に、こちらの版では、画像保存時もファイル名が表示されている…。もしかして、xfonts云々で必要なフォントがある、みたいなことかな…。以前、tgif をインストールした時も、そこでハマったし…。

_【電脳】Ubuntu 14.04 LTS で Tgif のフォントのエラーを解決して使う方法 | t-nissieの日記 | スラド

aptでアップデートされてしまう。 :

この状態で sudo apt update をすると、xpaint がアップグレード可能なパッケージとしてリストアップされて、sudo apt upgrade をすると、公式のバグ入り版 xpaint バイナリが上書きインストールされてしまう。ダメじゃん。

「このパッケージはアップデートから除外してくれ」てな指定ができたら解決するのかな。たぶん方法はあるんだろうけど。

ググってみたら、簡単だった。sudo apt-mark hold xpaint、sudo apt-mark hold xpaint-dev でいいらしい。

_UbuntuやDebianで特定のパッケージを更新されないよう「ホールド」する方法 | LFI

しかし、xpaint って、そこまでして使わないといけないソフトだろうか…?

まあ、パッチを当てれば選択範囲ドラッグで落ちる不具合は直るし、*.deb も作れると分かったので、これで良しとする。

#2 [anime] 「映像研には手を出すな!」4話を視聴

録画していたソレを視聴。

見ていて途中で泣きそうになってしまった…。「えっ。どこに泣く要素があったんだ」と言われそうだけど。個人的にはあったんです。色々と。 *1

たぶん、このアニメは万人には刺さらない。誰もがそういう経験をしてきたわけではないから。だけど、一部の人にはめっちゃ刺さるアニメになりそうだなと…。
*1: コンビニで食料を調達して作業場に戻ってきた頃に朝日が差し込むソレとか。苦労して作ったソレが馬鹿馬鹿しいやり取りで発表中止になりそうで怒りに任せて叫び出したものの叫んでるうちになんで自分あんなに苦労してコレ作ってたんだとどんどん悲しくなってきて今にもポロポロと泣きそうになってくるあの気持ちとか。終わった後に本題そっちのけでアレはこうしたかったコレはこうしたかった次回はこうしたいああしたいとついつい考え始めて言い出しちゃうソレとか。なんかもう、各場面で、「ああ…分かる…」と思えてくるあたりがなんというか。

2019/02/04(月) [n年前の日記]

#1 [linux] Linux Mint機を19.0から19.1にアップグレード

TV台の下に置いてある薄型PCの、Linux Mint 19.0 を 19.1 にアップグレードした。とメモ。

19.0のパッケージを全て更新してから、スナップショットを取って、19.1 にアップグレード。各種設定ファイルは、そのまま残ってくれたっぽい。おそらく、19.x から 20.x になる時は、ごっそり初期化されそうな気もするけれど…。

以下の記事が参考になった。ありがたや。

_Linux Mint その103 - Linux Mint 19からLinux Mint 19.1へアップグレードするには - kledgeb

#2 [python][pyxel] pyxeleditorを試用

現行版の _Pyxel には、pyxeleditor という、ドット絵、タイルマップ、サウンド、ミュージックが編集できるエディタが同梱されているらしいので、試用してみたり。今回はドット絵編集とマップ編集を試してみた。環境は Windows10 x64。

機能豊富なツールというわけではなかったけれど、Pyxelのデフォルト解像度は低いから、このぐらいの簡易編集ができればそこそこ充分かもしれない。ドットエディタやマップエディタを別途用意しよう、となるとハードルが微妙に上がってしまうけど、最初から入ってるよ、となればハードルは下がるので、PICO-8 や TIC-80 もそうだけど、こういう構成は賢いなと思えてきたりもして。

でも、選択範囲内の反転機能ぐらいは欲しい気もする…。まあ、その場合は、既存のドットエディタを使ってください、みたいな話になるのかな。

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

#1 [gimp][python] Python-fuを弄ってたり

先日書いた Python-fuスクリプトを弄っていたり。描画パターンをもう少し増やせないかなと。

塗り潰し矩形を重ならないように配置する良い方法はないものか…。妙案が思いつかなくて、結局は矩形領域を一旦いくつかに分割して、その中に入れる、というやり方をしてしまったけど。もっとヨサゲなアルゴリズムがありそうな気もする。

#2 [anime] 「宇宙戦隊キュウレンジャー」最終回を視聴

終わってしまった…。

昨今、宇宙を股にかける特撮ヒーローってほとんど存在してないので、その基本設定だけで個人的にはかなりお気に入りだったのだけど。やっぱり宇宙を舞台にした作品は、イイ。なんかイイ。

ただ、あまり玩具が売れなかったという話もどこかで聞いたので、そのあたりはちょっと残念で。宇宙で云々はウケないのだろうか…。いや、玩具の種類が多過ぎただけでは…。本編のアレコレと玩具の売れ方って、例えばライダー鎧武の件を思い返しても、さほど連動してないところがありそうな…。なので、「宇宙モノは売れないのだ」と決めつけるのは早計のような気も。

何にせよ、スタッフの方々、お疲れ様でした。壮大なハッタリの数々、実によかったです。

繰り返しのソレ。 :

ところで。1話で見せたシチュエーションを、最終回でも提示するソレは、見ていてなんだか燃えてくるなと感心を。いやまあ、アレ、赤の人も燃えてると思うけど…物理的に。

1話のソレがまた出てくると、見ていて燃えるのは何故かとつい考えてしまったのだけど。もしかすると、1話の時点では視聴者にとって未知のネタ・シチュエーションだけど、再度出すと既知のネタに変化して、そのことでネタに対する印象が変わるから、てなところがあるのかなと思えてきたり。例えば、「志村ーうしろうしろー」とか、水戸黄門の「ええい、静まれ静まれ!」に近いのかも。

最初は「何コレ?」だった印象が、2回目からは「このネタ知ってる!」的な受け止め方に変わる。知ってるネタは受け入れられやすいし、見る側も先が分かるから気分を乗せていける。ラピュタをTV放送するたびに「バルス!」があれだけ呟かれるのは何故か、みたいな。初見の人はそういう遊びができないわけで。

1回目と2回目で印象が変わることを利用したソレと言うと、ポプテピピックもソレだよなと。1回目の時点では、ぶっとんだ各ネタの内容を視聴者が知らない故に、場合によっては理解すらできないので、まずはあの手のキャラデザならこういう声を出すものだろう、という一般的なイメージを利用して、女性声優陣に声をあててもらって比較的ハードルを下げておいて…。しかし2回目は未知のネタから既知のネタに変化してるから、予想外の男性声優陣を起用してさらに飛躍してもOKだろう、みたいな。もし、最初に男性声優版が流れてしまうと、最初から飛躍し過ぎていて振り落とされてしまう。 *1 あの構成は、ネタを繰り返し提示すると、ネタの受け止められ方が視聴者の中で変化する、てなあたりを利用している構成だと思うわけで。

子供向け番組では、「3回繰り返して見せて、3回目をちょっと変える」みたいな技があるわけだけど。シリーズ構成や脚本でもそういう技は使えるんだろうなと。

まあ、そのあたりを考えてると、1話分の脚本の中で、同じ状況を2回繰り返して見せることで前後の変化を強調して見せた、ライダー響鬼の井上脚本回を思い出したりもするわけだけど。アレは実に見事だった…。しかも、ロケ場所への移動回数も節約できるあたりが…。

*1: いやまあ、1話はそれやってたから、終始「何コレ…」状態だったけど。

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

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

ケーズデンキでプリンタのインクを購入。ダイソーとリオンドールでアレコレ購入。

歩道の雪もある程度は溶けていたので、自転車で走ることができた。

2016/02/04(木) [n年前の日記]

#1 [windows] Windows10にアップグレードしてみた

メインPCに入れていた Windows7 Pro x64 を、Windows10 Pro x64にアップグレードしてみたり。

ハードウェアスペックは、Intel Core i5 2500(3.3GHz)、RAM 8GB、HDD (7200rpm, 1TB, たしか WD Blueだった気がする)。

約2時間ほどかかってアップグレード終了。何かしらトラブルが起きるんじゃないかと思ってたけど、意外とすんなり終わった…。終わって良かった…。

Windows7上で使っていた常駐ツール群も一応動いているみたいだし、環境変数もWindows7上の設定を引き継いでくれたみたいだし。助かった。

アップグレード直後に、以下の作業を行った。

USB3.0関連ドライバのアンインストール。 :

自分のメインPCには、Renesas製USB3.0コントローラが2種類載ってるので、一応Windows7時代のドライバをアンインストール。Windows7時代はUSB3.0関連ドライバを別途インストールしないといけなかったけど、Windows8以降は標準で入ってるので、そっちを使ったほうが安定するらしいので。もっとも自分の場合、Windows10にアップグレードした直後にデバイスマネージャで確認したら、USB3.0はMicrosoftの文字が見えるドライバになっていたので、実はやらなくても済んだ作業なのかもしれない。

アンインストールの仕方は、コントロールパネル経由で、Renesas の名前の付いたユーティリティをアンインストール。その後デバイスマネージャで、USB3.0らしいものを削除。PCを再起動すると、Windows標準のUSB3.0関連ドライバが読み込まれているはず。

ちなみに、Windows10の場合、コントロールパネルもデバイスマネージャも、スタートボタンを右クリックした際のメニューから表示できる。

キー割り当て変更。 :

自分は CapsキーをCtrlキーとして使ってる人なので、キーの設定を変更。 _Change Key というソフトが、Windows10対応とは謳ってないけど使えているという話を事前にどこかで見かけていたので、今回も使わせてもらった。
  • Capsキーには、左Ctrlキーを割り当て。
  • Scrollキー(Scroll Lock?)には、Capsキーを割り当て。
この状態だとScrollキーが使えないけど、「スクリーンキーボード」を起動すれば、そちらからも Scrollキーを押すことができるので、それでどうにか凌ぐことにする。

クイック起動を復活。 :

クイック起動を、新規ツールバーとして復活させる。自分は、ソフトインストール時にデスクトップに作られてしまったアイコンを、全部クイック起動に突っ込んで片づけているので…。作業手順は、 _Windows10でクイック起動を使う で解説されてたのでそれに従った。

最初、Windows7時代のクイック起動のフォルダ場所をそのまま指定してしまったけど。
C:\Users\ユーザ名\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch
前述の解説ページを読んでいたら、以下の一文が。
このフォルダを直接指定するのは止めましょう。アップグレード後31日経つと、このフォルダは削除されてしまいます。

Windows10でクイック起動を使う より

なにそれこわい。まさか他のフォルダも、31日経つと勝手に削除されてしまうのでは…。ヤバすぎるぞ、Windows10。誰か、勝手に削除するフォルダやファイルをまとめて解説してたりしないだろうか。

何にせよ、別途自分でフォルダを作って、以前のクイック起動の中身(ショートカットファイル群)を全部コピーして、そちらを新規ツールバーとして使うことにした。

iP4600を利用できるようにした。 :

インクジェットプリンタ Canon iP4600は、Windows10用のドライバが用意されてない。どうやらCanonとしては、現行製品以外はサポートする気がないらしい。が、一応、印刷するだけなら Windows8用ドライバをインストールすることでできなくもないそうで、試しにインストールしてみたり。

あらかじめUSBケーブルを外した状態でドライバをインストールしないといけないことに気が付かなくて少しハマった。

一応、印刷はできている雰囲気。ただし、「プリンタ状態の確認」ボタンを押しても、関連ウインドウが表示されない。これではインク残量が分からない。不便…。

録画用PCにはWindows7を残し続けるつもりだから、そちらにプリンタを繋いでしまおうか。いや、その場合も、Windows10からは、インク残量が確認できないのだよな…。不便だ…。

もう少し調べていたら、OSのアップグレードをすると双方向通信ができなくなるので、インク残量確認等ができなくなるという話を見かけた。

_キヤノン:Q&A検索|【オフィス向けファクス】Windows 8(Windows 8.1含む) 日本語版 対応状況について(Canofax/キヤノフアクス)
_キヤノン:Q&A検索|【インクジェットプリンター】不要になったプリンタードライバーを削除する(PIXUS iP2700)

コレか…。プリンタの削除と、プリンタドライバーをアンインストールして、USBケーブルを抜いて、OS再起動。Windows8用のドライバを最初からもう一度インストールしてみたところ、今度は「プリンタ状態の確認」が動作してくれた。助かった。

動いてるように見える常駐ツールをメモ。 :

パッと見た感じ、Windows10上でも動いてるように見える常駐ツールをメモ。
  • ArtTips 8.21 ... ランチャー、クリップボード拡張等、複数の機能を一つのソフトで提供してくれるユーティリティ。
  • System Explorer 7.0.0.5356 ... 現在実行中のタスクを確認できるツール。タスクマネージャみたいなもの。
  • Tray Volume 1.4.7.0 ... キーボード操作でボリューム調整できるソフト。
  • OneMailCheck 3.0.15 ... メールチェックソフト。
  • SignalNow Express 2.0.0.0 ... 緊急地震速報をPC上で通知してくれるソフト。
  • 透明なカレンダー WtCal 1.20 ... デスクトップに表示できるカレンダー。
  • Intel Desktop Utilities 3.2 ... CPU温度やファンの回転数を常時表示してくれるツール。
  • X-Mouse Button Control 2.12.1 ... 多ボタンマウスのボタン割り当てを変更できるソフト。全体設定とは別に、アプリ毎に違う割り当てもできる。
  • Dropbox 3.12.6 ... オンラインストレージサービス Dropbox クライアント。ローカルの特定フォルダとDropbox上のファイルを同期してくれる。
各ツールの全機能が動いてるかどうかは分からないけど、普段自分が使ってる範囲の機能については動いてくれているように見える。

#2 [windows][neta] Windows10のフォントはどうしてこんなに汚いんだろう

Windows7 から Windows10にして、「これはないだろ」と思ったのが、フォントの汚さ。

もしかすると Windows8時代からこの状態なのかもしれないけど…。画面のフォントが汚い。読みづらい。ガタガタボツボツしてる。なんだこの汚さは。MicrosoftのWindows開発部隊は、全員スティーヴィー・ワンダーなんですか? よくまあ、これでOKと思えるもんだな…。

まさか、これからずっと、この汚いフォントのまま使い続けろって言うの? ふざけんな。どうせ英語圏では綺麗なフォントが表示されてるけど、漢字文化圏では汚い表示のままとかそういうオチなんだろ。これはアジア人に対する差別だ。人種差別、いや、民族差別だ。 *1

日本マイクロソフトは、一体何をやってるんだ…。このフォントの汚さは…さすがにダメだろう…。

フォントを変更するソフトを試したり。 :

Windows10を触ってるうちにだんだん耐えられなくなってきたので、フォント変更するソフトを探したり。

_【レビュー】Windows 10のシステムフォントをXPや8/8.1時代などのフォントに一発変更できるツール - 窓の杜

「Windows10 フォントが汚いので一発変更!」というツール名に、ユーザの怒りが込められている気がする…。

とりあえず使ってみた。たしかに、全てのフォントが変更できるわけではないけど、少なくとも Windows7上で使ってたアプリのいくつかは、メイリオ等で表示することができた。

実は古い版が使われてたりしないのかな。 :

Windows7時代にも游ゴシックは入れてたので、もしかするとそちらの古い版が使われていて文字が汚いのでは…。

と思ったけど、フォントファイルのバージョンを調べてみたら 1.71 になってた。ということは、Windows10にアップグレードした際にちゃんと差し替えられた、ということかな…。

フォントデータがマズいのか、レンダリングがマズいのか、よく分からんなあ…。

*1: いや、このあたりはもしかすると中国で作ってて、中国人はこの品質でも満足しちゃう、てな状況だったりするのかもしれないけど。

#3 [windows] Windows10のユーザアカウント画像サイズ

一応、Windows10のユーザアカウント画像を設定してみたのだけど。Windows7時代のアカウント画像を使ってみたら四角い枠が不自然に切り取られてしまって、見た目がよろしくなくて。作り直さないとダメだな。でも、サイズはどのくらいなんだろう。

少しググってみたら、どうやら448x448らしい。

_ユーザー名とアカウントの画像のガイドライン - Windows app development
_Windows 10ミニTips (22) ユーザーアカウントの画像をリセットする | マイナビニュース

Inkscape Portable 0.91 32bit版を起動して、アカウント画像を作成し直し。とりあえず、Inkscape も、それらしく動いてくれている模様。

#4 [nitijyou] 歯医者に行ってきた

詳細はGRPでメモ。

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

#1 [cg_tools] Inkscape 0.91 をインストール

_フリーの高機能ドローソフト「Inkscape」がv0.91に大幅なアップデート - 窓の杜 というニュースを見かけて、早速 Windows7 x64 上にインストール。

以前 Inkscape 0.91 pre版を使った際にはスナップ機能が全然動いてない感じだったのだけど、今回インストールしてみた版では動いてる、ような気がしたけど、やっぱり以前の動作に比べると、ところどころ怪しい。

例えばペンツールでシェイプを作成した後に、ノードツールでノードの位置を変更してもグリッドにスナップされない。オプション設定でどうにかならんか…。

相変わらずスナップインジケータは豆腐文字。オプションで表示を無効にしてどうにか。

メニュー部分のフォントがなんだか妙な感じだったので、以下の記事を参考にして修正。

_既知の不具合 | Inkscape@JP
_Inkscape Portable の日本語化とフォントを変更する - @mekemoke

不具合情報を探していたら、Inkscape 0.91 はグラデーションメッシュが使えるぞ、という話を見かけた。

_Inkscape 0.91 Beta Gradient Mesh test.
_InkscapeForum.com - View topic - Gradient mesh

C:\Users\ユーザアカウント名\AppData\Roaming\inkscape\keys\default.xml を以下のような内容に修正。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<keys
   name="My custom shortcuts">
  <bind
     key="m"
     modifiers="Ctrl"
     action="ToolMesh"
     display="true" />
  <bind
     action="MeshPrefs" />
  <bind
     key="m"
     modifiers="Ctrl,Shift"
     action="Mesh_Prefs"
     display="true" />
  <bind
     key="M"
     modifiers="Ctrl,Shift"
     action="Mesh_Prefs" />
</keys>

何かシェイプを作成した状態で、Ctrl+m を押すと、上の方にいつもと少し違うツールバーが表示された。その状態でシェイプの塗ってある部分の上で少しドラッグすると、グラデーションメッシュっぽいものが設定された、らしい。四角の四隅のどれかをクリックして色を選択したら、たしかにメッシュ状のグラデーションになっている、ような気がする。

どうやら、背景にグラデーションメッシュを作成して、それをシェイプの形でクリッピングすることで実現しているように見える。さらに、グラデーションメッシュの形状自体も、パスとして修正できる。

2014/02/04(火) [n年前の日記]

#1 [cg_tools] GIMPで全レイヤーに○○をするスクリプト

GIMPで、全レイヤーにレイヤーマスクをつけて、それを適用していく作業をしてたのだけど。ちょっと面倒臭いなと。手作業でやってられないよなと。Script-fuで自動化できないのかなと。

レイヤーマスクを1回コピーするスクリプトは、以下のページが見つかった。

_GIMP Script-fu: sg-copy-mask-from-above

1つ上のレイヤーから、レイヤーマスクをコピーできるスクリプト、らしい。導入後、レイヤーリスト?上で右クリックすると、「Copy Layer Mask From Above」という項目が増えてるので、それを選べばコピーできる。ただ、全レイヤーに対して一括してやってくれるわけではないので、やっぱり面倒臭い。でもまあ、手作業でコピーしていくよりは楽かなと。

全レイヤーのレイヤーマスクを適用する処理については、以下のページのスクリプトが参考になった。

_Script-Fu: すべてのレイヤーに対する処理(よく使うもの)を簡単に呼び出せるようにした | anobota

anbt-proc-for-all-layers:proc-list に、以下を定義。
(define anbt-proc-for-all-layers:proc-list
  '(
    ("不透明度を100に"
     . (lambda (img layer) (gimp-layer-set-opacity layer 100)))
    ("階調の反転"
     . (lambda (img layer) (gimp-invert layer)))
    ("アルファチャンネルを削除"
     . (lambda (img layer) (gimp-layer-flatten layer)))
    ("アルファチャンネルを追加"
     . (lambda (img layer) (gimp-layer-add-alpha layer)))
    ("レイヤーモードを「乗算」に"
     . (lambda (img layer) (gimp-layer-set-mode layer MULTIPLY-MODE)))
    ("レイヤーをキャンバスに合わせる"
     . (lambda (img layer) (gimp-layer-resize-to-image-size layer)))
    ("レイヤーマスクを適用"
     . (lambda (img layer) (gimp-image-remove-layer-mask img layer 0)))
    ("レイヤーマスクを削除"
     . (lambda (img layer) (gimp-image-remove-layer-mask img layer 1)))
    ))
全レイヤーに対して、レイヤーマスクを適用、及び、レイヤーマスクを削除ができるようになった。

ただ、このスクリプトが、GIMP 2.8以降で追加されたレイヤーグループに対してどう働くのかは不明。まあ、レイヤーグループ内のレイヤーを取得する処理って、地味に面倒臭いので、たぶんそこまでは対応してないんじゃないかと予想しますが。

GIMP 2.6 と GIMP 2.8 って、レイヤーグループ云々のあたり、互換性が無いんですよね…。双方の違いを吸収する関数でも作ってしまえばいいのかもしれないけど…。

#2 [anime] ズビなんとか、煙草の回を視聴

タイトル覚えられないです。ググってみたら、「世界征服〜謀略のズヴィズダー〜」というタイトルだったようで。

数日前に見たのだけど、ずっともやもやしちゃっていて。この際、何かメモして、スッキリしようかなと。

話としては、喫煙者の度重なる横暴な振舞いにブチ切れた悪の組織が、喫煙者を次々に爆殺。その活動を多くの市民が支持・賛同して、結果、喫煙者は皆殺し、という感じの話、でいいのかしら。

自分、恥ずかしながら喫煙者なのですが。それでも、「子供の前で煙草吸ったらいかんやろ」「歩き煙草はあかんやろ」「車から火のついた煙草をポイ捨てなんて絶対にあかんわ」と(今現在は)思ってまして。なので、それら喫煙者が爆殺されるあたりは、見ていてちょっとスッキリしちゃったのですが。「このぐらいやってしかるべき」みたいな。 *1

しかし、中盤、分煙ができてる状況下で、喫煙者が嫌煙派から殴る蹴るの暴行を受けるシーンが出てきたあたりから、どうももやもやしちゃって。そして最後のあたりで、 「実は喫煙者は全員人間ではなかったのだ」てな妙なオチが出たあたりも、もやもやと。

この話を書いた人は、嫌煙派なのか、それとも喫煙者なのか、どっちなんだろうと。そのへんが気になり始めちゃって。

前者が、日頃の鬱憤を晴らすべく、小説・漫画・脚本等でこういうのを書いたということなら、ちょっとソレ醜悪過ぎませんかと思うし。後者が、「最近ちょっと嫌煙派のソレは異常性が出てきてるよね…」と言いたくてこの話を書いたなら、ちと分かりづらいというか、伝え方として弱かったんじゃないかと。てなわけで、話を書いた人の立ち位置が分からなくて、もやもやしちゃいました。

さておき。「こうしたほうが良かったりしないか」と妄想しちゃった点が、2点ほどあって。

一つは、反抗する喫煙者の中に、どう見ても宮崎駿監督にしか見えないキャラを入れといて欲しかったなと。カットが切り替わった直後、宮崎駿監督にしか見えないキャラがアップになって「俺に煙草を吸わせろ!」と叫んでたら、見た瞬間に、たぶん笑ってしまうよなと。

そして、笑った直後に、こっちは考え込むだろうなと想像するのです。「喫煙」だけを判断材料にして、その人物を人間扱いせず、迫害しちゃっても構わんのだ、てな振舞いってどうなんだろうね、とチラリと考えたりしないかなー、と。

漠然と、想像上の、「悪しき喫煙者」だけをイメージして考えちゃうから「やり過ぎ」が起きてしまうのであって、知人・友人・具体的な人物をイメージしながら考えていけば、適切な落としどころが見つかりそうだと気づくんじゃないか、と。そんなことをちょっぴり考えてもらいやすくするために、誰もが良く知ってる喫煙者を、若干笑いも交えつつ、スルリと挿入しておいた方が良かったんじゃないのかなあ、みたいな。

もう一つは、ラストのあたりに、「やがてこの活動は、エッチな漫画焼却運動、アニメオタク消毒運動、メイド喫茶撲滅運動、韓流ドラマゼロ運動、その他モロモロへと発展していくのであった」みたいな感じのナレーションでも入ってたら、またちょっと違った印象になったかもと。

喫煙云々、非実在青少年問題云々、アキバの表通りで白濁液ポスターがバーン問題、いつでもBSは韓流ドラマばかり問題…。結局、根底には、「他者の嗜好を許容するかしないか」という共通の問題があったりしないかと思うわけで。どこまでなら社会的に許せて、どこまでなら社会的に許されないのか。その境界線はどこにあるのか。その境界線上で「住み分け」ができているか。「住み分け」を模索する前に、0か1かで短絡的に、ソレをこの世界から消滅させようとしてないか。

煙草だか喫煙だかの問題は、つまりは根が同じ、多数の問題の中の一つ。喫煙行為を絶滅に追いやった、世間様のその刀で、自分の趣味・嗜好に斬り付けられても、こっちは文句は言えなくなるのだけど、その恐ろしさが分かってますか…? てなあたりをチラリと匂わせたら、もうちょっと話が広がった・問題提起をしてるように見せかけられたかもしれないなと。 *2

まあ、そんなどうでもいいことを、もやもや考えてしまったあたり、もしかするとこの回は、それなりに問題作だったのかしら、と思えてきたのでした。

ていうか、喫煙者をひたすらボコボコにしてるだけでも、既に結構、問題作なのかな…。昭和の中頃だったら、こんな話を作っても世に出せなかったでしょうな…。当時なら、逆に喫煙者の大群からフルボッコを食らってたかもしれず。時代は変わるもんですなあ。
*1: 特に、「車から煙草ポイ捨て」は絶対やったらいかんと思ってて。以前、親戚の家が、それで火事になりかけたんですよ。当時その家には、小学生が3人居まして。もし、煙草のポイ捨てが原因で小学生3人焼死、なんてことになってたら…もうね…。喫煙者たる者、ポイ捨ては人命に関わってくるヤバイ行為なんだ、てな認識ぐらいは持てよと。
*2: 「煙草は無関係の人に実害を与えるけれど、アニメその他は害を与えないじゃないか。一緒にするな」と言い出す人が出てきそうだけど。手塚治虫の漫画が校庭で悪書として燃やされてしまった件、宮崎勤事件の際にアニメオタクが世間様(というかマスコミ)からどんな目で見られてどんな報道をされたか、非実在青少年なんて意味不明の概念が出てきた流れ、等々を知ってたら、「害は与えてないだろ」で反論できると考えるのは甘いですよ。正義を実行してるのだと思い込んでる人達・世間様には、どんな説得もなかなか通用しないだろうな、と予想しておくべきじゃないかと。

#3 [nitijyou] お腹が痛い

夕食を食べる前から、お腹がなんだかジリジリしてたのだけど。夕食後、さらに強い、鈍い痛みが。単に空腹だから妙な感じがするのかなと思ってたけど、食べた後で痛くなるってのは、どういことなんだろう…。

胃なのか、腸なのか、それもよく分からず。背中が痛いわけではなくて、前のほうが痛いし…。

実は、運動不足故に、腹筋が筋肉痛、とかだったらいいのだけど。恥ずかしながら、高校時代に1回あったのですよ。体育の授業で腹筋を鍛えるアレをやらされたら、翌日にお腹が痛くて休んじゃったという…。内臓で何かが、と思って病院に行ったけど何も見つからなくて。後になって、アレは腹筋が筋肉痛だったんじゃないかと気付いたという…。

昨晩食べたポテチにガラス片が、みたいな話だったらどうしよう。ポテチの袋を確認したら、製造日 2014/01/16、製造所固有番号 NU、と書いてあった。すると、新宇都宮工場か…。

_製造所固有記号のアルファベットや数字は、それぞれ何を意味しているのですか。 | お客様相談室 | カルビー株式会社

_以前起きた事故 は、湖南工場だったはずだから、それじゃないな。ていうか、製造時期からして当時のソレが店頭にあるわけないし。

そもそも、そういうのを食べたら、口の中で異常に気付くはずだろう…。

とりあえず、様子見します。

2013/02/04(月) [n年前の日記]

#1 [anime] ゴーバスターズ、最終回1話前を視聴

だんだんハードな展開になってきた…。シンケンジャーの時もそうだったけど、このハードさが、小林靖子脚本の魅力なのかなと。熱いというか、渋いというか、とにかくカッコイイ…。

1話前でも使っていた、積み木?を使って状況を説明するシーンにシビレてしまった。 積み木と言うアイテムを用いて、 そんなアレコレを、映像ならではの見せ方で、同時に伝えてみせる、その巧みさにシビレたり。

そして今回は、また積み木を使って別の解説をしていて。 分かりやすい。これなら子供だって、積み木のソレを通じて、どういう設定なのか、この後どんな展開になりそうなのか、なんとなくわかってくれそうな。説明が上手いなと。

このあたりは、脚本に書かれていたシーンなのだろうか。それとも、監督が考えた見せ方なんだろか。…なんとなく、小林脚本にあったのかな、と想像したり。ライダー龍騎の時も、映像で伝える手法をチラリと使ってた気がするし。 映像中ではサイレンの音しか鳴っておらず、二人がどんな会話をしていたのか分からない。でも、どんなことを伝えて、何が起きたのかは、前後を見ていれば分かる。なんというか、見せ方が映画っぽい。

ということで、そのあたりにシビレてしまいました。ゴーバスターズ、カッコイイわ…。

それとは別に。基地の格納庫に敵ロボットを追い込むシーンもイイ感じで。 なんとなく、EVAの、ネルフ本部に入ってきちゃった使徒みたいなソレを感じてグッときたり。…普段やってる、着ぐるみを使った巨大ロボット戦は、ビルや山のミニチュアが置いてある少し広めの広い空間でやってるイメージがあったので、狭い空間でドコーンズバーンとやってる映像がなんだか新鮮で。周囲が壊されていく時のハラハラ感があるというか。…格納庫のセットを壊しちゃって、もう撮影に使えなくなるだろうから、こういうシチュエーションは最終回近くじゃないとできないのかも。てな想像をしつつ堪能を。

考えてみたら、ミニチュアが壊されていく映像も見せ場になるのかな…。ゴジラあたりは、たぶんソレだよな…。でもそのへんは、ミニチュア撮影だと分かっている大人だからハラハラするのかもしれないか。「あーあ、せっかく作ったのに壊しちゃった」みたいな。子供はそのへんの事情を知らないから、また違う印象を持ちそうな予感も。例えば、普段見慣れた風景が壊されることのほうに恐怖を感じたりしないだろうか。自分が住んでいる家・マンション、普段利用してる駅、学校、幼稚園などが、メリメリと壊されていくことにインパクトを感じたり、とか。わかんないけど。…自分が子供の頃はどうだったのかな。どういうシーンを見てドキドキハラハラしてたんだろうか。

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

#1 [pc][doll] 糸操り人形を試作

昨日作成したペーパークラフトで糸操り人形モドキを作ってみたのだが、なかなか思ったように動かない。

SDキャラを、既存の手板・糸のつけ方で操作しようとしていることに、根本的問題があるような気がした。

試しに針金だけで、まっとうな頭身の操り人形モドキを作ってみた。糸をつけて動かしてみたところ、おじぎもできるし、頭を左右に傾げることもできた。やはり、 _自分が参考にしていたページの手板 は、まっとうな頭身の人形じゃないとその真価を発揮できないらしい。

SDキャラを操り人形にするためには、どういう手板・糸のつけ方をすればいいのだろうか…。

#2 [digital] 東芝RD-BZ710がフリーズした

昼12:00ちょっと過ぎに、TV画面がピタリと静止してしまった。リモコンから電源OFFを押しても無反応。どうやらフリーズしてしまったらしい。

本体の電源ボタンを長押しして、強制終了。リモコン操作で電源を入れたら立ち上がった。

今まで、ここまで明らかな固まり方は、見たことが無かったのだが…。

2011/02/04(金) [n年前の日記]

#1 [zatta] どうしてTVにはラジオ受信機能が付いていないのだろう

TVもラジオも電波を受信する機器なのだから、両方入っていてもいいじゃん。なんで別々なの。

アンテナの向きが関係している?

どうして携帯電話にはラジオ受信機能が付いてないのだろう。 :

通話もラジオも音声しか処理しないのだから、ワンセグ受信機能を付けるより先にラジオ受信機能をつけるべきではなかったのか。

ラジオ受信なら、液晶画面を使わなくて済む分、電池の持ちが悪くなったりしなかっただろうに。

どうしてインターネットを使ってラジオが聞けないんだろう。 :

や、都市圏では聞けるらしいけど。福島は田舎だから聞けないのです。

USB接続のラジオを検索していて、「そもそもインターネットでラジオを流せばいいのに」と思った。

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

#1 [windows] TMPGEncその場でスライドショーはなかなかイイ感じ。らしい

親父さん用に購入したので、当然親父さんのPCにインストールして、使ってみてもらったわけだけど。親父さんがサクサクとスライドショーを作成。つまりは、本当に、簡単に、スライドショーが作れる良いソフトであると実証された。ような気がする。

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

#1 [pc] マウステーブルとPSパッドUSB変換器が届いた

サンワダイレクトに注文していた2点が届いた。

マウステーブル。 :

サンワダイレクトのサイト上での型番は、 _200-MPD003 となっている品。届いて、箱を見て、そこで初めて判ったのだけど。実際のメーカ名や型番は、 _Aidata UM003 / UM003B MOUSE PLATFORM UNDER-DESK とやらだった。1,280円。

以下、簡単なレビュー(?)を。まずはメリット。
マウス操作が楽になりそう。
今までは、フルキーボードのテンキーの右横にマウスを置いていたので、手や肘を無理に伸ばして操作するという、実に不自然な体勢になってしまっていた。そのため、肩や首に痛みが出て困っていたわけで。今回、コレを導入したことで、椅子に座った際の、膝のあたりに近い位置でマウス操作ができるので、不自然な姿勢にはならなくて済みそう。
回転してしまえる。
使わない時は回転して、机の下や右横等に隠せるのはグッド。
机を傷つけずに済む。
机にクランプ(?)で挟み込む形で固定するため、机の板にネジで穴をあけたりしなくて済むあたりもヨサゲ。
続いてデメリット。
組み立てが大変。
パーツ構成はシンプルだけど、各パーツのハメ込みが固過ぎる。特に、棒の最下部にはめ込むことで、マウスを乗せる板が落ちないようにするためのパーツが、固くて入らない。棒部分の出っ張りに沿って入れてから、回してハメるのだけど、これが全然回らず。結局諦めて、中途半端・途中まではめ込んだ状態に。
板が平らじゃない。
マウスを乗せるプラスチックの板の成型が良くないようで、面全体が完全に水平ではなく、板の真ん中あたりで盛り上がってる。そのため、マウスを移動してると、マウスの底面がカタカタとシーソーのように上下して、実にイライラする。
マウスケーブルを止めるための出っ張りが邪魔。
まず、MS InlelliMouse Optical のケーブルなどは太くて入らない。そのうえ、無理にケーブルを止めてしまうと、ケーブルの抵抗が強いので、マウスを前方向に動かせなくなる。つまり該当部分にケーブルを止めずに使うしかないのだけれど、それはそれでマウスを移動したときに、該当部分の出っ張りにケーブルが引っ掛かって、非常にイライラする。ヤスリかカッターで削り落せないものかと考えてしまうぐらいに邪魔。
強度が不安。
マウスを乗せるプラスチックの板が非常に軽いのだけど、つまりはその分弱いので、上から押すとしなってしまう。おそらく、机をドンと叩く感じで件の板を叩いたら、バキッと割れてしまいそう。うっかりな事故で破壊してしまう可能性大。とはいえ、強度がある=重い=机に負荷をかけたり落ちやすくなったりするわけで、このあたりトレードオフな感も。
椅子に座るときに邪魔。
足がぶつかって座りづらい。コレは製品コンセプト的にどうしようもないけど。
とりあえず、値段が安いだけあって、プラスチック成型の精度だか設計だかに難があるように思えたり。

また、ケーブルを止める部位に関しては、思いつきレベルでつけてしまって、製品全体を台無しにしてしまったように思えてならない。まあ、ワイヤレスマウスを使え、という話もあるのだけれど…。

マウスケーブルの扱いに関しては、 _皆それなりに苦労して対策 してるわけで。やはり、ケーブルを宙にどうやって浮かせるかを考えないといかんのではないか。しかし、この製品の場合、机の下に配置されるため、マウスケーブルを上方に浮かせるわけにもいかない。机の底とぶつかってしまう。どうしたもんか。

PSパッドUSB変換器。 :

_SANWA SUPPLY JY-PSUAD11 を購入。1,080円。

実は、同種の製品、 _JY-PSUAD1 を既に持っているのだけど。PS1のパッド(SCPH-1010)を接続した際、ちょっとした振動で接触が悪くなってしまう・無反応になってしまって、今一つ使えないわけで。そのあたりの改善を期待して、今回JY-PSUAD11を購入したのだけど…。

早速接続してみたけれど。PS1パッド(SCPH-1010)も、PS2パッド(SCPH-10010)も、どちらも無反応。さては初期不良品かと思ったが、JY-PSUAD1/JY-PSUAD11のドライバをアンインストール・再インストールしたり、両パッドを交換して接続したり、とにかくアレコレ試してるうちに、PS2パッド(SCPH-10010)だけは反応するようになった。が、PS1パッドは何をどうしても無反応。パッケージ裏面には、SCPH-1010も対応、と書いてあるのだけど…。やっぱり接触だろうか。でも、PS1実機ではちゃんと使えているパッドなのだけどなあ…。

これでは購入した意味がなさそうだけど。1つだけ改善点が。
  • JY-PSUAD1では、PS2パッドをデジタルパッドとして使った際に、ボタンの入力が今一つ怪しかった。
  • JY-PSUAD11なら、デジタルパッドとして使った際も、ボタンの入力がちゃんと反応してくれる模様。
たしかPS2パッドは、各ボタンが感圧式?アナログ値取得?が可能になってるらしいから、おそらく前者はそのあたりの絡みで入力が怪しい、のかもしれず。何にせよ、PS2パッドを使うことを前提にすれば、今回購入した品を使えなくもない、のかもしれない。

でも、PS2パッドは重いんだよな…。PS1初期パッドの軽さに慣れてしまうと…。うーん。

2008/02/04(月) [n年前の日記]

#1 [anime] 「つま先立ちでキス」するシーンが入ってたアニメ作品ってなんだったっけ

小学生だか中学生だかの頃に見たアニメで、そういうシーンが印象的だった ―― 今の言葉で言えば「萌え」なんだろうけど ―― そんなアニメ作品があったような気がするのだけど。思い出せない。…アニメじゃなくて漫画だったかな。さてはて。

もしかして、「さらば宇宙戦艦ヤマト」の1シーンだったかな? アレの劇場版にそういうシーンがなかっただろうか。…アニメじゃなくて漫画だったのかな。ひおあきら氏の漫画版「さらば宇宙戦艦ヤマト」にあったのかもしれない。記憶が定かではないけれど。

「つま先立ちのキス」からネタをいくつか連想。 :

「つま先立ちのキスに憧れる身長190cmの女の子」の話、なんてネタはどうよ。どうよと言われてもな。そういうシチュエーションに憧れていた彼女ではあったけど、チビの彼氏が、自分といつもつま先立ちでキスしてることにふと気づいて、「あっ。こんなところにあったのか!」みたいな展開はどうよ。どうよと言われてもな。…つーかたぶんあくまで自分がやってみたいという憧れなのであろうから、相手がつま先立ちなのを見たからと言ってそれでどうにかなるわけではないのだろう。知らんけど。

つま先立ち=無理な姿勢、という捉え方をすれば話に組み込めたりもするだろうか。…以前の彼氏と別れたときのことを考えてる女の子が居るとして。彼女は、その彼氏に釣り合うようにと、いつも無理をしていた。彼とはつま先立ちでキスをしていたけれど、彼と居る時は、自分は、いつでも、全てにおいて、つま先立ちだったのかもしれない。今の彼氏とは背丈が同じだから、そんなキスをしなくていい。一緒に居て、とても居心地がいい。もう、つま先立ちはしていないけど、男を選ぶ(?)目の位置は、前よりもちょっぴり高いところになっているのかもしれない。とか。…なんだか歌謡曲でそういう感じの歌詞があったような気もしてきた。

男女の身長差に対して何か別の意味を重ねてみるのも面白そうだなと。組織内での階級、男尊女卑、等を重ねればどことなく社会派っぽい話に、ならないか。ちょっと無理があるか。

前述のアニメだか漫画だかのシーンでは、たしか古代進が、森雪を地球に残してヤマトで宇宙に出て行っちゃうんだけど。実はこっそり森雪がヤマトに乗り込んでて、それが発覚してそういうシーンになったような記憶が。<記憶が怪しいけど。そこで出てくるつま先立ちのキスと言うのは、どんどん先に行ってしまう彼氏に追い付きたい・近づきたいという森雪の心情を比喩している描き方、なのだろうと。おそらく1カット、もしくは1コマ、つま先立ちがアップで入るだけなんだけど、それで森雪の心情が伝わってくる。なおかつ、直接キスしてるところを見せてないのに「ああ、キスしてるんだな」と観客・読者に伝わるという副次的(?)効果も。見せ方が上手いなと。いや、はっきり覚えてないんで嘘書いてる可能性大ですが。…昔のアニメだから男を女が追いかけるというシチュエーションなんだろうけど。今なら逆に、女の子を男の子が追いかけるほうが受け入れられやすいのかもしれないとなんとなく思ったり。外宇宙に出ていった女の子を追いかけたいと思う男の子。ってソレは「ほしのこえ」じゃねえか。むぅ。

身長差と言えば「The かぼちゃワイン」ですな。「エル」と呼ばれる大きな女の子と、チビなのに「男とはかくあるべし」的思い込みが強すぎる主人公の男の子、を描いた漫画 or アニメ。と言っても自分はまったく読んだことないんだけど。<オイ。…おそらくは、「自分より背のでかい女となんか付き合えるか」と言ってた主人公に、「そんなどうでもいいことにこだわってた自分はバカだ。俺はお前のことが〜」てな心情の変化が訪れたときに、背は小さいままなんだけど、彼の中身・本当の男らしさは、頭一つ分大きく成長したのだ、とかそんな展開があったりするのだろうなと勝手な想像を。

てな感じで色々使えそうだなとなんとなく思ったのでメモ。

#2 [iappli] 画像をデータファイルにまとめたのだけど

スクラッチパッド容量を200KByteもオーバー。トホホ。背景画像をセル単位で分割・結合するスクリプトを書いて、共通部分を見出して容量が減りそうかどうか、減色がさらにできないかどうか、ひたすらトライ&エラーしてみたり。あるいは、デモ用の画像やロゴ画像のほとんどに対して、サイズを一回り小さくしてみたり。サイズを小さくするたびに、減色とドット修正を逐一やるわけで…。

なんとかギリギリで入りそう。しかし、これ以上画像追加の要求が来ても受け入れられない予感。追加するにはどこかを削らないと…。

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

#1 [anime] HDDレコーダの録画分を消化

ケロロ軍曹はクリスマスの回まで、あやかしなんとかは総集編まで消化。チャングムアニメ版は最終回をようやく見た。

チャングムアニメ版は…。とりあえず、韓国製アニメってのは、作画を除く全ての面において課題が多いなと思った。

#2 [nitijyou] ktの容量増加は作業してもらえたらしい

容量増加完了メールがocnから届いたら連絡してほしい旨を知らせた。

#3 [flash] ActionScript 3.0 のコンパイラってフリーで配布されてたのか

Adobe からフリー版も配布されてたとは。知らなかった…。

AS3関係を自動補完してくれるエディタってないのだろうか。それについては有料版を使え、ということなのかな。

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

#1 [web] Nvu、落ちまくり

チラシページを Nvu 1.0 で作ってたのだけど。落ちまくり。どうもテーブルを編集してると高い確率で落ちるような。かといって、HTMLエディタではテーブル編集なんてする気にもならないし。

試しに、OpenOffice 2.0 Writer で開いて、保存してみた。わけのわからんタグを自動でガンガン入れられてしまった。どうやら、文字種類等のcssまで勝手に入れちゃうみたい。しかも、各タグの前後に。使えんわ。まあ、元々HTML編集ツールではないから仕方ないわな。

_「テーブルの作成と再編集はTTTが唯一、現在でも最先端に近い実装である分野。」 という話を見かけたので、TTTEditor を導入。なるほど、たしかにテーブルの再編集ができる。class 指定をするのに楽だなぁ。

_フリーのHTMLエディタを比較してみる。 :

CSVからテーブルを作成

フリーのHTMLエディタを比較してみる。 より

なるほど。表計算ソフトでcsvを作成しておいて、それを変換するという手もあるか…。テーブルの結合等がどうなるのかよくわからんけど。

関連ページ :

#2 [web][comic] _Web漫画 - しあわせももりんご

素晴らしい。あまりにもアホ過ぎて、読んでるうちに頭がおかしくなってくる。素晴らしい。

_(via 面白いWeb漫画)
_(via del.icio.us/otsune)

_ナデガタサーカス - Hybrid Insector :

左側のほうに漫画へのリンクが。昭和ライダー漫画なんだけど、ここまでカッコよくなるのですな…。こういうビジュアルを実写で作れるようになるのは、まだまだ先のこと、なのだろうなぁ。

#3 [zatta] _ガチャピンチャレンジ

ガチャピンがチャレンジしてきたスポーツの一覧、らしい。アクティブ。この調子ならバンジージャンプも…。皮が破けて中身だけ落ちていきそうだから、無理か。後に残るであろうガチャピンの皮。なんだか寂しげな風景。 _(via たまにっき。 / 2006-01-18)

#4 [zatta] _中国出稼ぎ労働者が帰省する際の必需品は紙おむつ? | Excite エキサイト : ニュース

日本における集団就職のときなんかも、こういうことがあったんだろうか。いや、中国の場合、日本と比べたら国土の広さが違うから、あちらは時間がかかるのかもしれん。

2005/02/04(金) [n年前の日記]

#1 [zatta] _魔王「ぬぅ、たかが人間こときに我輩がここまでやられるとは」

驚きの展開。 _(via 2005年のはぶにっき)

オリジナルはどこだろう :

_ここの9/7 なのかしら。

_ぺてんし :

こんな面白いサイトがあったとは知らなかった。笑いすぎて腹が痛い。

#2 [zatta] _ZEROの法則

面倒なんだな…。

#3 [anime] _ガンダムと書いたダンボールを被って戦闘するOFF

こんな催しがあったのですか。知らなかった。 _各MS をスクロールさせながら見てるうちになんとも言いようのない不思議な気持ちに。 _ラストの写真 などは、映画の1シーンみたいだ…。

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

#1 [windows] WinXPにWin98の環境変数が取り込まれてる

なんでや。と思ったら、 _コレ か。 _コレ なのか。 _コレ だったのか。Win98用のc:\autoexec.batを解析してしまってるのね。 _ココ によると、HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ParseAutoexec を0にすれば解析しないようになると書いてある。

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

5.8.2 build 808 と 5.6.1 build 635 のどちらを入れるかで悩んだけど。 _「5.8.2はだんだん遅くなる」 _「5.8用のプログラムはまだまだ揃っていない」 との話を見かけたので、5.6.1 builde 635 を選んだ。以前も、5.8.x を入れたら、GDモジュールが用意されてなくて困った記憶もあったり。

_ActivePerlでワイルドカードを使う方法 :

これも設定。

#3 [pc] メインPCのHDDから「カキュン」「カキュン」と異音がする

Maxtor 6Y080L0。 *1 ダメなのか。ヤバイのか。 _「カコン音がしたらダメ」 っぽい。困った。日記を読み返してみると、このHDDは去年の8月に買ったのだな。1年持たないんか。Maxtor、だめぽ。とはいえ他のメーカも似たり寄ったりのようだし。日立のはデフォルトで「カキンカキン」とか「にゃー」とか音がするそうだけど、大丈夫なんだろうか。
*1: 7200rpm、80GB、流体軸受。

2003/02/04(火) [n年前の日記]

#1 YahooBB速度改善

YahooBB12Mサービスの速度がまとも(?)になった。 _YahooBBの回線速度調査ページ で測定した結果であれば、最高で、下り780kbps。フレッツADSL8M時より180kbps程度向上したことになる。しかしYahooBBの近隣ユーザの速度情報では、福島県須賀川市森宿=1.5Mbpsの速度が出るだろうと推定されていてガックリ。既に家屋内で試せる改善策は全て試した。となると原因はNTTの回線に対する粗雑な工事状況にあるとしか考えられないのだが。また、フレッツADSL8M時に比べ、YahooBB12Mのデータ転送量が安定してないのも気になる。何故だろう。

2002/02/04(月) [n年前の日記]

#1 龍騎と土管

あーまた歯医者キャンセル…


龍騎、見ましたよ。
やられた。コレは面白い。 _(マジにバカ長くてウンザリするので以下略)

どれみは…
商品説明が下手だな…
玩具売る気あるのだろうか。

#2 [anime] 龍騎

龍騎、見ましたよ。

やられた。コレは面白い。
あのデザインに騙されてた。



えーと、ネタバレも多少含むので、まだ見てない人は読まないほうがいいかと。



自分の場合、OP映像前半と、本編後半の特撮部分が、かなり気に入ってしまったのでした。
なんかもう…ビデオで5,6回見直してます。
コマ送りでチェックしてたりするし <アホや

OPでイイなと思ったのは…
主人公→ヒロイン→ライバル→交差する三人
→後姿でカードを見せ→ライダー姿でカードを見せ…
の流れと、まだ登場してない人物の情報を隠しつつ見せるあたりですね。

でも…
一見、音楽に合わせてるようで合ってないのがイヤン。
特撮畑の人って、そのへんの感覚、違うのだろうか。
なんでいつも、あともうちょいってところで、それ以上踏み込まないんだろ。
フレーム単位で調整できない事情・制約でもあるのかな。


後半の特撮部分を見てビックリ。
大丈夫ですか? あんなに頑張っちゃって…
まあ、1話だしな…

なんというか…
「特撮ヒーローモノも、こういうの入れればカッコ良くなるのに…」
と、今まで自分が夢想してた映像がポコポコ出てきて、結構感動してました。
(単にアニメ感覚の映像、ってだけの話(爆)>夢想してた映像)


看板、やられました。
どこかにミスがあるだろうとチェックしたんですが、見つからなかった。
映像を左右反転させてるのかな。
その為には、撮影時は構図等が反転した形で撮らなくちゃいけなくて…
ああ、頭がこんがらがる…

壁面を移動して、主人公を追い越すモンスター。
おお…ガオと違って、単なる「記号カット」では無い…

バイクがモンスターを弾き飛ばした後のカットにビックリ。
モンスターが打ちつけられた建物の壁に、モンスターの体がめり込んだ痕跡が描かれてる。
コレだよ…こういう描写が欲しかった…

武器召還。シビれました。
構図がイイ。
そして、ライダーが受け取った瞬間、効果音と共に、微妙にフレームを揺らしてる。
そこがgood。些細なことですが。
(受け取れなかった主人公の場合は、フレームは揺れてない)

主人公がモンスターに弾き飛ばされる…
そのシチュエーション自体は、比較的よく見かけますが…
飛ばされた主人公を、ナイトが、更に、軽く弾いて避けてしまうとは。
一本取られました。
よくもまあ、映像にしようと思ったもんだ…


もちろん、別の作品からパクったアイデアもあるんでしょうけど(爆)
ただ、そうだとしても…
日本の特撮番組の分際(?)で、実際目に見える形にしたことは評価できる…かなと。

余計な制約が増え、表現手法がドンドン狭まり、お決まりの映像になって…
結果、見事瀕死の状態になってしまった日本の特撮作品に必要なのは…
頭の中にあるイメージを、そのまま映像にしてみたい…そんな単純な思いなんじゃないかと。
「ショボイ画面になるのはわかってる。金が無い。時間が無い。人も居ない。
 先輩達から文句言われるだろう。否定されるだろう。
 余計なことはするな。今まで通りやってりゃいいんだ、って。
 でも、この構図、このシチュエーションは…カッコイイはず。
 実現したい。画にしたい」
…そういうのがイイんじゃないかなー、なんて。
平成ガメラだって、ティガだって、そうゆう無謀なところが作品を面白くしてた気がする。
これからの日本の特撮を盛り上げていくためには、
そういう部分で物怖じしない姿勢が必要かも…
と思うのでありました。


などと持ち上げてみたものの…

やっぱりTV向け、子供向けですから…
例えば、CGと実写映像の合成は上手くないです。モロバレ。
色調・明るさ・コントラスト・ノイズ量…
画質的に異なる映像素材を、無頓着に合成してるんで、チープさが否めない。
そういうところは、ノウハウを積んでいくしかないでしょうね。
(でも、クウガ・アギトと2年もやってるのだから、
 もう少しノウハウ溜まってもいいんじゃないのか…)


それにしても。
子供が、大喜びでカードで遊ぶであろう姿が目に浮かびます。
動作がわかりやすくてカッコイイ。
子供に取って、アレは憧れるよね。
OP見てる限り、子供もライダーになるっぽいなぁ…
これで子供にウケなきゃ変だろな。たぶん…

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

#1 HTMLの不思議

ここを読めてるということは、入り口見つかったってことですね。よかよか (´▽`)

サイト構成変更一段落…かな?
まだGallery以外のコンテンツに、メニュー部分付け足してないけど。

フレームを全部消してみました。
低解像度での閲覧時、フレーム有無が思ってたより表示面積に影響するのがわかったんで。

それにしても、IEとNNのHTML解釈の違いに泣かされます。
今回はテーブル多様で、ガチガチにレイアウト決めしてみたんですが。
IEで有効なテーブルサイズ指定が、NNでは適用されない… (;´Д`)
NN6ではまた解釈が違うらしいので更に不安。
NN4.xとNN6って同居できたかな…

ホントはIE3,IE4,IE5,IE5.5も同居させたいです。
今、IE5.5でチェックしてるんですが…
IE5で見るとまた違うかもしれん…

そういや、MacのIE、NNも、HTML解釈が全然違うというし。
あーLinuxってのもあったっけ…
チェックが大変…

ていうか、Mac持ってないからチェックのしようも無い。トホ
せめて明日、Linuxではチェックしておこう…

企業ページ作成作業してる人はもっと大変なんだろうな。
皆よくやってるよなぁ…

でも、画像ガンガン使っていいなら…
結構楽に仕上げることが出来るような気もする。

ていうか、実情それしか手がないんだろうけど。
スタイルシートとか使うと変なこと起こりまくりだし。
FLASH等ならレイアウトガチガチに固められるけど…
Plugin無きゃ見れないのが痛い。
しかもハングする環境もあるし。トホ

2000/02/04(金) [n年前の日記]

#1 (NoTitle)一晩中Shadeのユーザ...

一晩中 _Shadeのユーザー掲示板 の過去ログを漁ってました。なんかいいヒントが見つかるんじゃないかと期待して。色々勉強にはなった…のかなぁ。どうかなぁ。
関係ないけど、どうしてこういったタイプの掲示板で、
「わかりません」
「教えてください」
「助けてください」
「初心者の質問です」
みたいな記事タイトルを平気でつけちゃう人が多いですかね。
膨大なログの中、いちいちそれを覗いてみないと中身がわからん、というのはホント苦痛。質問内容が多少はわかるようなタイトルにしてほしいものです。こういうタイトルつけるのは大抵ネット初心者なのだろうから仕方ないのでしょうが、でもなんとかならんものでしょうか。
ああいうのはその場で注意したほうがいいのでしょうね。どこかで誰かが教えてあげないと、その人気づかないままずっとそういう事してしまってウザがられてしまう。でも注意するにしても有用な情報と一緒でないと、注意してるほうが単に底意地の悪い人間に思われてしまうかもですね。むぅ。オイラにはまだそういう資格(?)はないなぁ。
いっそCGIの書きこみ時の処理で、入力したタイトル文字列がお決まりの文字列とマッチしたら注意を促すような表示をする、とかなっていれば少しは状況が改善するような気もするですが。
まあ、こういうのって掲示板の種類にもよりますけど。内容も一緒に表示されるタイプや、個人レベルでのちょっとした挨拶・やり取り用の掲示板などではこのへん気にする必要はないわけで。
…ってどうでもいいことグジグジ言ってますな >オイラ
なんだかなー  (´ー`; )

犬の散歩へGO。川原へ行ったです。
バカ犬がドブ水の上をまるでガイキチのように大喜びで走り回ったおかげで、オイラのジャンパーやらズボンやらがイカシたドブ水玉模様に。 (`Д´; ) Shit!

以上、25 日分です。

過去ログ表示

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