mieki256's diary



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

#1 [basic] FreeBASICでsplit()を使いたい

プログラミング言語の Perl や Ruby や Python には split() というメソッドがある。これを使うと、指定した区切り文字で、文字列を分割して配列にしてくれる。かなり便利。

FreeBASIC でもsplit() を使いたい。しかし、標準では持ってない。どうにかできんのか。いや、自分で書くしかないだろうけど。ということで、そのあたりをググって調べてみた。

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

FreeBASICでsplit()を使いたいという需要はちょくちょくあるようで、公式掲示板でも色々な実装事例が紹介されてた。

_function Split - freebasic.net
_function Split - Page 2 - freebasic.net
_Split String Algorithm for FreeBasic - freebasic.net
_Sugesstion String Split in FB - freebasic.net
_Easy Split Function - freebasic.net
_I need someone to defeat my string splitting algo - freebasic.net

色々なやり方はあるけれど、個人的には、C言語の strtok() を利用して実装してしまうのが簡単そうに見えた。

_C Standard Library Functions - FreeBASIC Wiki Manual | FBWiki
_strtokによるトークンの切り出し ・ ソフトウェアII
_C/C++にsplit関数はなく、代わりにstrtok関数を使う|情報科学を学ぶ大学生のブログ
_<紙>さんLoG FreeBASIC 学習:strtok, 文字列を指定文字で分割

ただ、strtok() は、文字列の中で区切り文字が見つかったら、そこに文字列の終端記号である 0 を書き込んで処理をするらしい。なんだか怖い…。元の文字列のあちこちに終端記号が書き込まれて、元文字列がズタズタになりそうな…。

strtok()で試してみた :

本当に strtok() を使って split() 相当を実装できるのか試してみた。

_strtok_test.bas
#include "crt.bi"

Sub Split(byref text As String, byref delim As String, result() as String)
    var p = strtok(strptr(text), strptr(delim))
    While (p)
        ReDim preserve result(UBound(result) + 1)
        result(UBound(result)) = *p
        p = strtok(NULL, strptr(delim))
    Wend
End Sub

' main

Dim As String text = "this   is   a     test"
Dim words() As String

split(text, " ", words())

Print text
For i As Integer = 0 To UBound(words)
    Print "[" & words(i) & "]"
Next i

Print "    ...success."

fbc strtok_test.bas でコンパイル。実行結果は以下。
> strtok_test.exe
this   is   a     test
[this]
[is]
[a]
[test]
    ...success.

ちゃんと分割できているように見える。区切り文字として扱う空白が連続して入っていても、イイ感じに処理してくれた。

少し解説。FreeBASIC でC言語が持ってる関数を使いたい場合は、#include "crt.bi" を最初のほうで入れておく。

配列の長さ(数?)を可変にしたい時は、ReDim を使う。

ReDim を使う際の注意。ReDim preserve とすれば、それまで格納した値を保持したまま長さを変更してくれるけど、preserve をつけないとそれまで格納した値を全部クリアした状態で配列の長さを変更してしまう。自分、格納した値が全部消えてるから変だなおかしいなと悩んでたら、単に preserve をつけるのを忘れてたという…。

UBound() を使うと、その配列変数の最後の添え字(?)、配列のインデックスの最大値を取得できる。

split()では解決しなかった :

ひとまず split() を使えばどうにかなるだろうと思ってたけど、ちと考えが甘かった。

例えば、以下のような文字列なら、split() で十分処理できそうなのだけど…。
char id=32   x=250   y=22    width=5     height=5     xoffset=-2    yoffset=21    xadvance=7     page=0  chnl=15
> strtok_test3.exe
char id=32   x=250   y=22    width=5     height=5     xoffset=-2    yoffset=21    xadvance=7     page=0  chnl=15
[char]
[id=32]
[x=250]
[y=22]
[width=5]
[height=5]
[xoffset=-2]
[yoffset=21]
[xadvance=7]
[page=0]
[chnl=15]
    ...success.

以下のような文字列ではよろしくない。
info face="DejaVu Sans" size=24 bold=1 italic=0 charset="ANSI" unicode=0 stretchH=100 smooth=1 aa=4 padding=0,0,0,0 spacing=1,1 outline=2
> strtok_test3.exe
info face="DejaVu Sans" size=24 bold=1 italic=0 charset="ANSI" unicode=0 stretchH=100 smooth=1 aa=4 padding=0,0,0,0 spacing=1,1 outline=2
[info]
[face="DejaVu]
[Sans"]
[size=24]
[bold=1]
[italic=0]
[charset="ANSI"]
[unicode=0]
[stretchH=100]
[smooth=1]
[aa=4]
[padding=0,0,0,0]
[spacing=1,1]
[outline=2]
    ...success.

お判りいただけるだろうか。「face="DejaVu Sans"」と区切ってほしいけれど、「face="DejaVu」と「Sans"」になってしまっている。間に区切り文字の空白があるから当たり前だけど。

こういう事例にも対応できるような処理を書くしかないか…。

split()ぐらい標準でつけてほしい :

思考メモ。

FreeBASICの公式掲示板を眺めてたら、「split()が欲しい。標準でつけてくれ」という要望に対して、「俺なら数行のコードで実現できるぞ。だからそんなもん要らねえ」と言い出した人を見かけた。個人的にかなり呆れてしまった。お前のマウンティングで皆が楽になるルートを潰してんじゃねえよ…みたいな。

こんな処理は各人が毎回独自に実装して用意するより標準で持ってたほうがいいに決まってる。どうして他の言語が組み込みで持ってるのかを考えたら…。Perl や Ruby や Python や Java や JavaScript や Go言語が「split」のたった5文字で済ませてることを、FreeBASIC では毎回実処理コードをどこかに書かなきゃいけないとか、そしてそれを当たり前のこととして利用者全員に強制するとかクソ過ぎる…。そういうところが「塵も積もれば」的に効いてきて最後には無駄に長くてゲンナリするソースばかりが目につくようになってプログラミング言語としての魅力も薄れて誰も触らなくなるわけで…。

既に標準状態で山のような .bi が inc/ の中に入ってるんだから、「文字列処理をしたいならコレを include すると楽だよ。ただし速度は期待するな。もっと速いのが欲しかったらその時は自分で書け」ぐらいの感覚で .bi を一つ追加すれば済む話だろうに。いやまあ、テストがどうとか速度がどうとか言い出して標準ライブラリとして加えることをとにかく面倒臭がってる気配も感じたのでその手の .bi が追加されるのは今後も望み薄かもしれないけれど。

そのあたりを考えてるうちに、Python の pip、Ruby の gem、Perl のCPAN等々はよく考えられているなと思えてきた。「こういうライブラリが必要だな」となったらコマンド一つでライブラリをインストールできてしまう。もし、そういう状況が用意されているなら、標準ライブラリで持たなくてもまあいいかな、とも思えてくる。しかし、FreeBASIC の場合はそういうツールが無いのだから、最初から標準で色々入れておくしかないだろうと思うのだけど。

まあ、今の時代にBASIC言語を名乗るソレにどうこう言ってみても、というところもあるのだけど…。

一発で exe が作れて、しかも処理速度がそこそこ速い点に魅力を感じたから FreeBASIC を触ってみているけれど、フツーは Python あたりを使うよな…。あらゆるOSにPythonが標準でインストールされてたらいいのに…。いや、それはそれでPythonのバージョンの違いで余計なトラブルが起きそう…。

思考メモです。オチは無いです。

2024/02/15追記。安易に「.biを1つ追加すれば」などと書いてしまったけれど。考えてみたらマルチバイト文字列への対応が面倒なのではと思えてきた…。

#2 [digital] 親父さんがワイヤレススピーカーを購入

親父さんが、首に引っ掛けるタイプのワイヤレススピーカーを購入したらしい。しかし、「音が全然聞こえない」「TVの音が聞こえない」と騒ぎ始めた。

購入した製品の型番は、audio-technica AT-NSP300BT。

_AT-NSP300BT|AVアクセサリー:スピーカー|オーディオテクニカ

説明書を見たら、予想通り、Bluetooth接続のワイヤレススピーカーだった。ウチの茶の間に置いてあるTVは、TOSHIBA REGZA Z9000 という古い製品なので、Bluetooth送信機能なんてついてるはずもなく。親父さんに、「貴方は送信機を持ってないのに、今回受信機だけを買ってしまったんですよ」と説明したところ、ようやく状況が理解できた模様。というか、「Bluetooth」という単語すら知らないのにいきなり思い付きでワイヤレス製品を購入とか…。なんだかな…。

ウチの中にあるデジタル機器で、Bluetoothを持ってる機器と言えば、スマホかノートPCぐらいしかない。親父さんのスマホとワイヤレススピーカーをペアリングして、たしかに音が鳴ることは確認できた。

しかし、親父さんは、「スマホの音が聞けても意味がない」「TVの音が聞きたい」と言い出した。となると、Bluetooth送信機(トランスミッター)を購入しないといけない…。

件のワイヤレススピーカーは、対応コーデックが aptX、aptX Low Latency (aptX LL)、SBC。さて、コレって何だろう…。自分、Bluetooth関連機器なんてほとんど持ってないから、何が何やら。

_【iPhone 15で高音質&低遅延!】Bluetoothイヤホンの「aptX LL」って何?コーデックとは?|radius|ラディウス株式会社 オーディオ・デジタル音響機器・Lightning製品メーカー
_Bluetoothオーディオの品質向上に貢献するQualcomm aptX - 半導体事業 - マクニカ
_【検証】Bluetoothイヤホンはゲームに使える?遅延を測定・比較してみた!【aptXLL】 | いろいろてすと中

上記のページによると、SBCが昔からあるコーデックだけど、人間の耳では聞こえづらい部分をマスキングしてるそうで、音源が mp3だったりした場合は二重にマスキングされることになって音質的によろしくないらしい。aptX はマスキングしていないので音質が良いのだとか。

更に、aptX に対して遅延を少なくしたのが aptX LL らしいので、TVの音を聞くには aptX LL 対応品を買っておけば良い…のかな? それでも数フレームは遅れて聞こえるらしいけど…。

音楽だけ聴く分には、Bluetooth の遅延云々はどうでもいいのだろうけど、TVを見ながら音声を聞く場合は、遅延云々は無視できない。画面の中の人が口をパクパクしてしばらくしてから音声が聞こえてきたら使い物にならない。全ての番組の全ての出演者がプチいっこく堂さんになってしまう。

そんなわけで、aptX LL対応の Bluetoothトランスミッター(送信機)をググってみたのだけど、種類が少ない…。

考えてみれば、当然かもしれない。例えばスマホの場合は Bluetooth機能を最初から持ってるし、今時店頭で販売されてる高機能TV(REGZA等)も Bluetooth機能を持っていたりするようなので、今から新規にその手の機器を購入して使う場合、別途 Bluetoothトランスミッターの購入が必要になることはまずないのだろう。最初からその機器に入っちゃってるから。

つまるところ、Bluetoothなんて持ってない昔のデジタル機器をどうにかしてワイヤレス対応にしたい、という場面でのみ、Bluetoothトランスミッターが必要になるわけだから、そりゃ種類も少なくなるよなと…。製品ジャンル自体がマイナーになってしまったのだろう…。

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

#1 [nitijyou][windows] 某所に行ってきた

先日某所に提供した、Athlon5350機(Windows10 x64 22H2)上で、残っていた3つの課題を解決するために、電動自転車で行ってきた。10:10-10:50まで作業。電話連絡時は「10分ぐらい作業させてほしい」と伝えたのに、結局1時間近く作業することに。なんとも申し訳ない。詳細はGRPでメモ。

1勝2敗な感じの結果になった…。とりあえず、他の環境でも役立ちそうなアレコレだけをメモ。

サインイン画面に削除したはずのユーザが表示される問題 :

Windows10 x64 22H2のサインイン画面に、削除したはずのユーザ名が真っ先に表示されて、しかも「ログインできない」とエラーを出す不具合が発生していた。

原因は、自動ログイン(自動サインイン)の設定が残っていたせいだった。netplwiz を起動して、「ユーザーがこのコンピューターを使うには、ユーザー名とパスワードの入力が必要」にチェックを入れて「OK」をクリック。OS再起動をしたら、前回利用したユーザ名が最初に表示される状態になった。

Windows10の「メール」でYahooメールが利用できない問題 :

てっきり、Yahoo! JAPANメール側の設定でパスワード認証が無効化されていて、それでWindows10の「メール」から使えないのだろうと思っていたけど、予想は外れた。となると…。まあ、諸般の事情で、YahooメールはWebブラウザ経由で利用してほしいという話になった。

ちなみに、パスワード認証が無効かどうかは、Yahooメール画面 → 右上の歯車アイコンをクリックして設定画面を開く → IMAP/POP/SMTPアクセス、を選んで、上のほうに「パスワード設定はこちら」的なリンクがあるかどうかで判断した。リンクがあったらパスワード認証は無効になっていて、リンクが無ければパスワード認証は有効になっている状態、なのだと思う。たぶん。Yahoo! JAPAN のFAQページを色々眺めた限りではそのように見えた。

EPSON Scanが起動しない問題 :

複合機 EPSON EW-M660FT のスキャナを利用するため、EPSON Scan を Windows10 x64 22H2上でインストールしたけれど、アイコンをクリックしても正常起動しない。タスクバー上に一瞬アイコンが出てすぐ消える。エラーメッセージウインドウすら表示されない。

色々試してみたけれど ―― 試した内容は後で別記事にまとめるけれど ―― 結局、EPSON Scan を正常に起動させることはできなかった。惨敗。

ただ、コントロールパネル → デバイスとプリンターの表示 → EPSON EW-M660FT のアイコンを右クリック → スキャンの開始、を選んだところ、スキャナ機能がフツーに使えてしまった…。

また、Windows10の「設定」→ デバイス → プリンターとスキャナー → EW-M660FT を選んで「管理」 → 種類で「スキャナー」を選択したところ、「オススメのアプリがあるよ」的リンクが表示され、クリックしたところ Microsoft Store が開いて、Microsoft製の「Windowsスキャン」というアプリを紹介された。見た感じ、設定項目が少ないので、これなら誰でも利用できるはず。インストールして、EPSON Scan の代わりにコレを使ってほしい、という話をしてきた。

そんなわけで、実用上はこれで困らないだろうという状況には一応なったのだけど、期待していた状況には持っていけなかったわけで…。なんだか悔しい。

#2 [windows] EPSON Scanが起動しなかったので確認した事項をメモ

無線LANでLANに参加している複合機、EPSONEW-M660FT のスキャナ機能を利用すべく、Windows10 x64 22H2上で EPSON Scan をインストールしたけれど、EPSON Scan が起動してくれなかった。タスクバー上に一瞬アイコンが表示されて、すぐ消える。エラーメッセージウインドウすら表示されない。

試してみた内容や、関連情報をメモ。数日前にメモした内容と重複するけど…。

ドライバ入手先 :

_エコタンク搭載モデル EW-M660FT ドライバー・ソフトウェアダウンロード|サポート&ダウンロード|エプソン

スキャナ関係のプログラムは3つある。
  • EPSON Scan (スキャナードライバー), 4.0.2.0, 2016/02/04公開, ファイル名 EWM660FT_JP_WIN_4020_41.exe
  • EPSON Scan用 共通アップデーター (Windows10 April2018 Update用), , 2018/07/17公開, ファイル名 EPSONScan_W10P_20180704.exe
  • EPSON Scan 表示修正パッチプログラム, 1.1, 2022/03/22, ファイル名 EPSONScan_W11P_20220311_S.exe

今回は、上の2つ、EWM660FT_JP_WIN_4020_41.exe と EPSONScan_W10P_20180704.exe を再インストールに使った。

SMB1.0を有効化。 :

まず、SMB1.0が有効になっているか確認。スキャンデータの送受信に使うらしいので…。

_Windows 10 の SMB 1.0 を有効にする - IO DATA (pdf)
_【Windows10、11】SMB1.0Server機能の有効化(無効化)手順|よー友ログ

「SMB 1.0/CIFS 自動削除」にはチェックを入れない。これは一定期間SMB1.0が利用されないとSMB 1.0を無効化する機能なので、チェックを入れて有効にすると忘れた頃に各種共有機能が利用できなくなる。

確認したが、「SMB 1.0/CIFS Server」「SMB 1.0/CIFS Client」が有効、「SMB 1.0/CIFS 自動削除」は無効になっていた。これで問題無し。

EPSON Scanをアンインストール。 :

コントロールパネル経由で、EPSON Scan をアンインストール。

_よくある質問(FAQ)|エプソン | スキャナードライバー(EPSON Scan)のアンインストール(削除)方法について教えてください<Windows>

次に、メンテナンスユーティリティ Esmutl.exe を使って、「設定初期化」と「完全削除」を行った。

_よくある質問(FAQ)|エプソン | EPSON Scan(スキャナードライバー)が起動しない場合の対処方法について教えてください<Windows>

メンテナンスユーティリティは、上記FAQページの下のほうにリンクがあるのでダウンロードして解凍して入手する。

作業後、C:\Windows\twain_32\escndv\escndv.exe が存在していないことをたしかに確認した。これでアンインストールできているはず。

再インストール。 :

以下の2つをインストール。
  • EPSON Scan (スキャナードライバー) EWM660FT_JP_WIN_4020_41.exe
  • EPSON Scan用 共通アップデーター (Windows10 April2018 Update用) EPSONScan_W10P_20180704.exe

C:\Windows\twain_32\escndv\escndv.exe のタイムスタンプをチェック。2018/06/11 になっていることを確認した。これで間違いなく、アップデーターは適用されているはず。

「EPSON Scanの設定」を実行。 :

EPSON Scan を起動する前に、Windwosのスタートメニューから、「EPSON Scanの設定」を起動する。

「ローカル」と「ネットワーク」があるので、「ネットワーク」を選択。リストアップされた EW-M660FT のIPアドレスを選択して「OK」。

再度「EPSON Scanの設定」を起動して、「ネットワーク」と、EW-M660FTのIPアドレスが表示されていることを確認。「テスト」をクリック。「成功」と表示されることを確認した。これで間違いなく、EW-M660FT と通信ができているはず。

EPSON Scanを起動。 :

EPSON Scanを起動してみた。

タスクバー上に一瞬アイコンが表示されて、すぐ消えた。ダメだった。

互換性タブで管理者権限を指定 :

_epson scanがアプリケーション単位でハング | エプソン販売株式会社…

上記を参考に、C:\Windows\twain_32\escndv\escndv.exe に対して、右クリック → プロパティ → 互換性 → 「管理者として実行する」にチェックを入れてみる。

ダメだった。症状変わらず。

FULL.bmpを削除してみる :

_メモ - AkiWiki
_EPSON Scanがフリーズしてしまう件の対処: Yamaro.info@blog

C:\Documents and Settings\user\Application Data\EPSON\ESCNDV\、または、C:\Documents and Settings\Administrator\Application Data\EPSON\ESCNDV\ES00??\ の中に、FULL.bmp があるかどうか、あるなら削除してみる。

そんな名前のフォルダは存在しなかった。C:\Users\USERNAME\AppData\、もしくは、C:\ProgramData\ の中のどこかにあるんじゃないかと探してみたけど、無かった…。たぶんこの情報は昔の EPSON Scan の情報なのだろう。

レジストリのアクセス権を確認 :

_価格.com - 『EPSON Scan起動とレジストリ』 EPSON GT-X770 のクチコミ掲示板

レジストリエディタ(regedit.exe)を起動して、HKEY_CURRENT_USER\Software\EPSON という場所? キー? があるか確認してみた。キーはある。しかも、サブキー?の中に、EW-M660FT のIPアドレスも記録されていた。どうやら設定情報はレジストリに書き込まれているらしい。

上記の場所にアクセス権を確認。右クリック → アクセス許可 → Administrators 等を選択。現在のユーザにも、Administrators にも、フルコントロールにチェックが入っていた。ということは、レジストリが読めなくておかしくなっているわけではなさそう。

WIAサービスを有効化する :

_FAQ - エプソン - EPSON Scan(スキャナードライバー)のインストール中に...

スタートボタンを右クリック → コンピュータの管理 → サービス → Windows Image Acquisition (WIA) を「自動」にして「開始」。

「手動」になっていたので、「自動」に変更した。ちなみに、該当サービスは既に「実行中」になっていた。

ファイアウォールを確認 :

_FAQ - エプソン - プリンターをネットワーク接続する際、ファイアウォールに登録されるファイルについて

以下のプログラムがファイアウォールに登録されているか確認。
  • C:\WINDOWS\twain_32\escndv\escfg.exe
  • C:\WINDOWS\twain_32\escndv\escndv.exe
  • C:\Program Files (x86)\Epson Software\Event Manager\EEventManager.exe

しかし、ファイアウォールの画面を眺めてみたけど、何をどうすればこのあたりを確認できるのか分らなかった…。

イベントビューアーを一応確認 :

_EPSON Scanがフリーズしてしまう件の対処: Yamaro.info@blog
WindowsのイベントビューアーからWindowsログのApplicationを見てみると、EPSON Scanがエラーで停止しているのがわかります。C:\Windows\twain_32\escndv\escndv.exeが停止しているようです。

Windows10のスタートボタンを右クリック → イベントビューアーを選択。

左側の「Windowsログ」→「Application」を選択。ここにエラーログが残っているはずだけど…何も残ってない。

どうやら EPSON Scan自身は、自分が正常に起動/終了できているつもりらしい。致命的なエラーを出して強制終了しているわけではない模様。

結末。 :

そんなわけで、ここまでやっても Windows10 x64 22H2上で EPSON Scan を正常に起動させることはできなかった。

現状の Windows10上で、EPSON Scan は起動しない状態になっているのだろうか。昨今の EPSON製複合機では、EPSON Scan ではなくて EPSON Scan 2、あるいは、EPSON ScanSmart なるプログラムを使ってスキャナを利用しているようだし…。

でも、先日某所に新規に導入されたDELL製PCにも Windows10 x64 22H2 がインストールされていたけれど、そのPCでは EPSON Scan がすんなり起動したし、スキャンもできたから、Windows10 x64 22H2上で EPSON Scan は動かない、というわけでもないはずで…。今回設置した Windows10 x64 22H2機の何かがおかしくて、EPSON Scan が起動できない状態になってるのだろうけど…。

この記事へのツッコミ

Re: EPSON Scanが起動しなかったので確認した事項をメモ by 名無しさん    2024/02/06 16:04
私も同様のEpson ScanがWindows10 64bit 22H2で「起草しない」問題にぶつかりました。ただ使用スキャナーは GT-8300UF という機種(WindowsCP32bitで使用)USB接続のものです。
最初Windows1064bitを導入した際、ビルド1909では Gt-9300用のW1064bit用のEpson Scanがあって、これを使ってGT-9300ドライバーを組み込こんだGT-8300UFを使ってきました。GT-8300がGT-9300として認識されて使用可能だったのです。ところが、2024.2になって「スキャナと通信できません」と警告がでてEpson Scanが起動しなくなった!! 友人のPC、私と同じバージョンのW1064bit22H2では支障なくGT-8300UFが使えている!!
これは変だぞ? ということで「よくあるマイクロソフトアップデートの不具合」だろうと推測、ビルド22H2のDVDを使って「OSの上書きインストール」=修正インストールをしてみましたとkろ、「見事使用復帰」して使えるようになりました。貴君も「上書きインストール」をお試しください。ただし、上書きインストール前にはEpson Scanをアンインストールすることが重要です!

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

#1 [pc] スマホ同期管理アプリが気になったけどダメダメだった

Windows10 を使っていると、時々「PCとスマートフォンをリンクしましょう!」「しましょう!」「しましょう!」「しましょう!」的なメッセージが表示されて、今までは無視していたのだけど。なんだかちょっと気の迷いで一応関連情報を調べてしまった。

どうやら、Windows10に標準で追加された「スマホ同期アプリ」「スマホ同期管理アプリ」というのがあるそうで。Wi-Fi経由でAndroid や iPhone に接続して、PC側からスマートフォンの通信機能? SMS? を使ったり、スマートフォン内の画像を閲覧したりできるらしい。

画像をPC側に持ってこれるのは便利そうだな…と思ったものの、ググってみたら転送時に画質が劣化するようで…。

_windowsとスマホで写真共有する最強の方法とアプリが見当たらないときの対処方法 | りらぼ
_Your Phone App - photo are lower resolution - Microsoft Community

3MBの画像が600KBにされてしまうらしい。なんじゃそりゃ。酷い。

設定変更できないかとググってみたけど、そんな設定は存在しないらしい。ダメじゃん。全然ダメダメじゃん。なんでそんなクソ仕様で固定してるんだ。いやまあ、何か事情があるんだろうけど、だとしても問答無用で1/5の画質にされちゃうのはあかんやろ。なんでも2MBを超える画像は再圧縮されちゃうらしいけど…。

画質劣化する/再圧縮されてしまうのは我慢ならないので、仕様がこのままなら今後使うことは無いだろうなと。一応、スマホ同期アプリをバックグラウンドで動かないように設定しておいた。設定 → プライバシー → バックグラウンドアプリ → スマホ同期、をオフに。

今まで通り、Android + CXファイルエクスプローラーでネットワークを有効にして、Windows10 + FFFTP で Androidにアクセスして画像を転送したほうが良さそうだなと…。

#2 [nitijyou] 某所に行ってきた

某所まで電動自転車で。PCの電源を切ったら前回の作業内容が消滅したとのこと。おそらくファイル保存してなかったのでは、と想像して、Excel 2007 でファイル保存する操作手順を伝えてきた。Excel 2003 と比べて、Excel 2007 はメニューやツールバーの見た目が変わってしまったので、一連の操作手順が分からなくなってるのではないか、と想像しているのだけど。

某所の方が、ファイルをどこに保存しているか、どんなファイル名で保存しているか、把握できてないあたりがそもそも問題かもしれない。ファイルやフォルダの概念をどう説明すれば…。いや、そもそも自分だって、それらの概念を本当に理解できているのか…。

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

#1 [raspberrypi] 手持ちの Raspberry Pi Zero Wをメンテナンス

手持ちの Raspberry Pi Zero W を久々に起動。少しメンテナンス。OS は Raspbian buster。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

最近は Raspbian じゃなくて Raspberry Pi OS に名前が変わったんだっけか…。

_Raspberry Pi OS - Wikipedia

sudo apt update をしたら200個ほどパッケージが更新されていたようで、sudo apt upgrade で3〜4時間ほどかけて最新状態になった。

Bluetoothリモコン用スクリプトを無効にした。 :

以前、Raspberry Pi Zero W を使って、Bluetoothリモコンからの信号を受け取る実験をしていたのだけど。

_BluetoothリモコンをRaspberry Pi Zero Wで認識させてみた
_Raspberry Pi Zero Wで自動実行

少しでも余計な処理を省いて動作を軽くしたいので、OS起動時に cron で立ち上げていた関連スクリプトを無効化した。

$ crontab -l
...
@reboot /usr/local/bin/bluebutton -d="Shutter3" -c /home/piuser/.config/bluebutton

プロセスが動いてることを確認。
$ ps aux | grep bluebutton
piuser   343  0.0  0.2   1924  1144 ?        Ss   21:22   0:00 /bin/sh -c /usr/local/bin/bluebutton -d="Shutter3" -c /home/piuser/.config/bluebutton
piuser   348  1.8  2.9  24480 12828 ?        Sl   21:22   0:13 /usr/bin/ruby2.5 /usr/local/bin/bluebutton -d=Shutter3 -c /home/piuser/.config/bluebutton
piuser  1143  0.0  0.4   4032  2116 pts/0    S+   21:34   0:00 grep --color=auto bluebutton
既にスクリプトが動いてることが分かる。

crontab -e で編集。行頭に # を打ってコメントアウト。
$ crontab -e
...
# @reboot /usr/local/bin/bluebutton -d="Shutter3" -c /home/piuser/.config/bluebutton

OS再起動。
$ sudo reboot

プロセスが無くなっていることを確認。
$ ps aux | grep bluebutton
piuser   962  0.0  0.4   3900  2092 pts/0    S+   21:40   0:00 grep --color=auto bluebutton

スクリプトの自動起動を無効にできた。

lighttpd の自動起動を無効化。 :

Raspberry Pi Zero W + Raspbian buster 上で自動起動していた lighttpd を自動起動しないようにした。

状態を確認。
$ sudo systemctl status lighttpd
● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-02-14 21:37:41 JST; 7min ago
  Process: 298 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, stat
Main PID: 409 (lighttpd)
    Tasks: 6 (limit: 877)
   CGroup: /system.slice/lighttpd.service
           ├─409 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
           ├─484 /usr/bin/php-cgi
           ├─493 /usr/bin/php-cgi
           ├─494 /usr/bin/php-cgi
           ├─495 /usr/bin/php-cgi
           └─496 /usr/bin/php-cgi

2月 14 21:37:27 raspi0w systemd[1]: Starting Lighttpd Daemon...
2月 14 21:37:40 raspi0w lighttpd[298]: 2021-02-14 21:37:28: (plugin.c.190) Cannot load plugin mod_c
2月 14 21:37:40 raspi0w lighttpd[298]: 2021-02-14 21:37:28: (plugin.c.190) Cannot load plugin mod_f
2月 14 21:37:41 raspi0w systemd[1]: Started Lighttpd Daemon.
2月 14 21:37:49 raspi0w lighttpd[409]: 2021-02-14 21:37:42: (plugin.c.190) Cannot load plugin mod_c
2月 14 21:37:49 raspi0w lighttpd[409]: 2021-02-14 21:37:42: (plugin.c.190) Cannot load plugin mod_f

アクティブかどうかを確認。
$ sudo systemctl is-active lighttpd
active

サービスを停止。
$ sudo systemctl stop lighttpd

$ sudo systemctl is-active lighttpd
inactive

サービスの自動起動を無効化。
$ sudo systemctl disable lighttpd
Synchronizing state of lighttpd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable lighttpd
Removed /etc/systemd/system/multi-user.target.wants/lighttpd.service.

サービスの自動起動設定を確認。
$ sudo systemctl is-enabled lighttpd
disabled

sudo reboot でOSを再起動して、設定が反映されているか、lighttpd が動いていない状態になったか確認。
$ sudo systemctl is-active lighttpd
inactive

参考ページ。

_systemdによる自動起動 | そう備忘録

#2 [zatta] ダイソーで買ってきたタッチライトを設置

数日前にダイソーで、COBタッチライトを購入していたのでメモ。色はホワイト。昼白色。単4x3本。株式会社グリーンオーナメント製。No.31139、と書いてある。裏側の電池の蓋はネジ止め式。壁にぶら下げるための穴もある。おそらく以下の製品かなと…。

_100均のCOBタッチライト[ホワイト・オレンジ]のレビュー【2020版】

電池を入れて使えるようにしておいた。これでもし停電になっても、多少は役立つはず…。

スイッチを押すたびに、強 → 弱 → 消灯に切り替わるけれど、強は直視できないほどの明るさ。視界に入らない感じで設置できればイイ感じかもしれず。

#3 [nitijyou] 犬が逃げた

ここ最近、夜は家の門を閉めて、門の下の隙間を塞ぐ板を置いて、庭に犬を放していたのだけど。夜中の2時頃、門のあたりで、犬がクンクンと鳴く声と、門の下に置いていた板がカタカタする音が聞こえてきて。まさか、と思って見に行ったら、庭に居るはず犬の姿が見当たらず。野郎、逃げやがったな…。

おそらく、昨晩の大きな地震で、板の位置がずれてしまったのだろう…。更に、揺れで恐怖を感じて、寝床から出て庭をウロウロしてたら、「おや、ここから出られるぞ」的に隙間を見つけてしまったのだろう…。

朝になっても夕方になっても帰ってこなくて。親父さんは、車で乙字ヶ滝や未来博跡地のあたりまで探しに行ったけど見つからず。自分も、電動自転車で、17:05-18:32ほど普段の散歩コースの3ルート分を走ってみたけど見つからず。もしや国道4号線を渡ろうとして轢かれて毛皮状態になっているのではとあちこち走って凝視してみたけれど、それらしいものは見えず。

しかし、自分が探している間に、お袋さんが家の裏のあたりで犬を見つけてくれた。名前を呼んだらダッシュで走ってきたとか。良かった…。見つかって良かった…。近所をウロウロしてたらしいのは助かった…。とりあえず今晩は、鎖で繋いでおくことにする…。

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

#1 [pc] マウスの自作って本当にできないのだろうか

マウスって本当に自作できないのかなと気になって。ググって調べているところ。

一応、Arduino + ジョイスティックを使うことで、マウスっぽいモノを作れなくもないらしい。いくつか製作事例も見かけたし。

ただ、光学センサで位置取得をするマウス製作事例は見つからず…。

ジョイパッド(ゲームコントローラ)のアナログスティック部分を使ってマウスカーソルの移動をしてみた人なら分かるだろうけど、ジョイスティックでポインティング操作って、ほとんど現実的ではないよなと…。なかなか厳しい。

見かけたページをメモ。 :

#2 [pc] マウス以外のポインティングデバイスが気になる

マウスを発明したのは、故・ダグラス・エンゲルバート博士だけれど。

_マウスを発明した現代ICTの立役者:追悼ダグラス・エンゲルバート(前編)by 林信行 - 週刊アスキー
_マウスを発明した現代ICTの立役者:追悼ダグラス・エンゲルバート(後編)by 林信行 - 週刊アスキー

当時、マウス以外にも様々なポインティングデバイスを考案していたらしく…。

―― 当事、ライトペンはあったんですか?

E すでにライトペンもあったし、トラックボールもあった。

―― マウスのほかにもポインティング装置のアイデアはあったのですか?

E いくつかあった。1つは、ポインタのついたバンドを頭に巻き付けて、首を動かして位置を指定するもので、我々は「ノーズ(鼻)・ポインタ」と呼んでいた。それから、車を運転していて、アクセルやブレーキのようなペダルを使う装置も考えたし、膝を上下左右に動かして位置を指定する装置も考えていたんだが、この装置を長く使うと足がつってしまうことに気が付いたんだ(笑)。

だが、「ハンド・マウス」を開発してみるとこれがあまりにもいい出来だったので、ほかの装置の開発はやめてしまった。もっとも、頭にくくりつけるポインタは現在、からだの不自由なかた向けとして応用されているようだね。とにかく、コンピュータとインタラクションをするためのあらゆる装置を検証したよ。

そういえばキーが5つのキーボードも開発した。それぞれのキーが5本の指に対応していて、複数キーを組み合わせて同時に押すことで多彩な文字の入力を実現していた。文字入力だけじゃなく、いろいろな機能も持たせて、あるキーを押すとコピー、別のキーを押すと消去といった操作に切り替わり、ほかのキーの組み合わせで単語、段落といった選択範囲の指定ができた。いちいちマウスカーソルをあわせて選択するよりも正確でてっとり早い方法だった。今日のパソコンよりも迅速に操作ができていたと信じている。

マウスを発明した現代ICTの立役者:追悼ダグラス・エンゲルバート(前編)by 林信行 - 週刊アスキー より


その、没になったアイデア群が気になったりするわけで。当時はコストがかかり過ぎて現実的ではないとされたアイデアも、今現在入手可能な部品を使えば実現できるのではなかろうか。そして、もしかすると、マウスよりはるかに使いやすい入力デバイスになる可能性があったりしないかと。

例えば、当時、「入力デバイスにコンピュータを1つ載せて多彩な制御をしたい」なんて言ったら、「入力デバイス如きにそんなモノを載せるなんて、お前は馬鹿か」と言われただろう。しかし今なら、Arduinoを1つ使うだけでも試作機程度なら作れるはず。

「ケーブルが邪魔でコレは使えない」と判断されたアイデアだって、今ならワイヤレスが使えるから問題にならないし。

光学センサや画像センサを使った入力デバイスだって、当時は無理でも今なら実現可能だろう…。

なので、没になったアイデア群が気になるわけで。中には目ウロコなモノが、今なら真価が発揮されるアイデアが、実は紛れているのではないか…。

しかし、ググってみても、それら没案に遭遇せず。せいぜい見かけたのが前述のインタビュー記事ぐらいで…。どこかに資料が残ってたりしないのかなあ。

#3 [pc] マウスホイールを代替する何かって無いのかな

安価なホイール付きマウスは、ホイール部分が機械式ロータリーエンコーダになっているけれど。しばらく使っていると接点部分が削れてきて壊れてしまうわけで。気が利いた製品なら光学式ロータリーエンコーダになってるらしいけど…。

マウスホイールが真っ先に壊れるのであれば、そのホイール部分だけを別の入力デバイスにしてしまうことはできないのだろうか。

と思ってググってみたけど…。全然その手の情報が出てこない…。そんな製品は無いよ、ということか…。

まあ、誰もが、「マウスホイールでいいじゃん」「ホイールが壊れたらマウスを買い替えればいいじゃん。安いんだし」と考えてるから代替デバイスなんて出てくるはずもない、ということだろうなと。

しかし、ホイールが壊れて、新しいマウスを買おうとしても、その頃にはその型番のマウスが生産中止になってたりするのだよなあ…。「マウスなんて何でもいいだろ」と言い切る人なら何も困らないのだろうけど…。

光学式の仕組みもよく分からない。 :

機械式ロータリーエンコーダを光学式ロータリーエンコーダに差し替えることってできないのかなとググってみたけれど、そもそも光学式ロータリーエンコーダの仕組みがよく分からず。

巷の解説図を眺めると、回転したよ、という情報は取得できそうと分かるのだけど。どちらの向きに回転してるよ、という情報は取得できないのでは…。どういう仕組みになってるんだろう…。受光センサが1つじゃなくて、複数ついていて向きを判断できるのかな…?

画像センサで回転を判別できないか。 :

マウスの位置を取得する際は、底面の光学センサ ―― 画像センサに近いセンサを使っているはずだけど。

アレをホイール回転の判別にも流用できないものだろうか。マウス位置も、ホイール回転も、どちらも同種のセンサで取得できれば、使う部品の種類を絞れるから、センサを大量生産してコストも抑えられるのでは。

まあ、それでも、機械式よりは安く作れないのだろうな…。センサを動かすために電気も使うだろうし…。ワイヤレスマウスなら省電力にも気を使わないといかんだろうし…。

いや待てよ。光ファイバーを利用して、底面の光学センサ部分にホイール部分のソレを回してしまうのはどうか。センサは1つしかないけれど、位置取得もホイール回転もその1つのセンサで調べちゃうよ、みたいな。でも、光ファイバーってコストはどうなんだろうな…。それに、底面のあたりで光ファイバーを90度曲げなければいけないけど、光ファイバーって曲げちゃいけないはずだし、物理的にそんな構造は無理かも…。

でも、ホイールを回してる時ってマウス位置は動かさないし、マウス位置を動かしてるときはホイールを回してないよな…。光学的な工夫で、1つのセンサで済ませられないものか…。

#4 [pc] スマホ用コントローラをPCで使えないのかな

Amazon を眺めていたら、スマホ用コントローラが安い上に種類が豊富なことに気づいたわけで。爆発的に普及した機器向けのアレコレって安く作れるのだな、大量生産しても売れると考えるからだろうか、と思ったりもして。

さておき。アレってPCで利用できないのかなあ…。

ほとんどの製品が、PCで使えるとは謳ってないんだよな…。一部の製品は使えると書いてあるけど…。もったいないよなあ…。あんなにたくさん作ってあって選び放題なのに、PCでは使えないとか…。もったいない…。

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

#1 [anime] 「NANA」最終回を視聴

BS日テレで放送されてたアニメ版「NANA」の最終回を視聴。

当時も見てはいたけれど、再度見てもやはり面白かった。演出がキレッキレというか。なんてことのない会話でもテンポが良くて見ていて楽しいし、そこから急に挿入される、落ち込んだモノローグ。作品全体を覆う、強烈なコントラスト。このアニメは名作。

ラストカットで、イチゴのグラスが描かれていたのだな…。かつて、二つとも床に落として、まるでハートの形のように重なりながら、しかし粉々に砕け散ってしまったイチゴのグラス。二人が一緒に過ごしていた時期を象徴する、あのアイテム。新しく買ってきたのだろうけど、今は机の上に一つしかないソレ。 *1 こういう見せ方、イイなと。
*1: 周りには、ビールが2本。灰皿が一つ。もしかして、元ブラストメンバーの人数に合わせたソレなのだろうか。

#2 [anime] 「ケムリクサ」迷子の回を視聴

「ケムリクサ」の、人間モドキが迷子になる回を視聴。

面白いアニメだなと。まるで昔のADVをプレイしてるような感覚になった。謎の置き方、そして、開示の仕方が上手い監督さんとは聞いていたけど、これはたしかにそうかもしれない。

見ているうちになんとなく。ゲームを原作とするアニメ化作品はえてして上手くいかないことがあるけれど、このアニメは、ゲームが原作じゃないはずなのに、なんだかゲームをプレイしてるような感覚になるわけで、もしかするとゲームをアニメ化する際のヒントが隠れてそうな気もしたり。

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

#1 [ruby][dxruby] DXOpalを試用してみようと思ったらインストールでハマった

DXOpal という、Rubyのソースをブラウザ上で動かせるゲームライブラリがあるのだけれど。

_DXOpal demo
_Rubyist Magazine - Rubyで始めるゲームプログラミング - DXOpal編 -

_以前少し試用した のだけど、現行版はテンプレートの出力ができたり、サーバを起動して動作確認できるようになっているようで。スゴイ。これはなんだか便利そう。

ということで、DXOpal を Windows10 x64 + Ruby mingw版の環境でインストールしてみようとしたものの、ちょっとハマった。

結論だけ先に書くと…。

Windows上でインストールできない。 :

Ruby 2.2.6 p 396 mingw版では、DXOpal をインストールしようとしても、以下のようなエラーが表示される。

> ruby -v
ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32]

> gem install dxopal
Fetching: sourcemap-0.1.1.gem (100%)
Successfully installed sourcemap-0.1.1
Fetching: hike-1.2.3.gem (100%)
Successfully installed hike-1.2.3
Fetching: opal-0.11.0.gem (100%)
C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:388:in `symlink': symlink() function is unimplemented on this machine (NotImplementedError)
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:388:in `block (2 levels) in extract_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package/tar_reader.rb:65:in `each'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:365:in `block in extract_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:459:in `block in open_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:456:in `wrap'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:456:in `open_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:364:in `extract_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:345:in `block (2 levels) in extract_files'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package/tar_reader.rb:65:in `each'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:342:in `block in extract_files'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package/file_source.rb:30:in `open'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package/file_source.rb:30:in `with_read_io'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:339:in `extract_files'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/installer.rb:772:in `extract_files'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/installer.rb:302:in `install'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/resolver/specification.rb:97:in `install'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/request_set.rb:166:in `block in install'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/request_set.rb:156:in `each'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/request_set.rb:156:in `install'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:205:in `install_gem'

        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:255:in `block in install_gems'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:251:in `each'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:251:in `install_gems'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:158:in `execute'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/command.rb:310:in `invoke_with_build_args'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/command_manager.rb:169:in `process_args'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/command_manager.rb:139:in `run'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/gem_runner.rb:55:in `run'
        from C:/Ruby/Ruby22/bin/gem:21:in `<main>'

opal のインストールで失敗してるように見える。これはアレかな。Windows版の Ruby では使えない、というオチかな…。

Ruby 2.3.3 ではどうだろう。

> uru ls
    187mingw32  : ruby 1.8.7 (2013-06-27 patchlevel 374) [i386-mingw32]
    187mswin32  : ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]
    19          : ruby 1.9.3p551 (2014-11-13) [i386-mingw32]
    200         : ruby 2.0.0p648 (2015-12-16) [i386-mingw32]
    21          : ruby 2.1.9p490 (2016-03-30 revision 54437) [i386-mingw32]
    220mswin32  : ruby 2.2.0p0 (2014-12-25 revision 49005) [i386-mswin32_100]
    23          : ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]
    24          : ruby 2.4.3p205 (2017-12-14 revision 61247) [i386-mingw32]
 => system      : ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32]

> uru 23
---> now using ruby 2.3.3-p222 tagged as `23`

> ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]

> gem install dxopal
Fetching: sourcemap-0.1.1.gem (100%)
Successfully installed sourcemap-0.1.1
Fetching: hike-1.2.3.gem (100%)
Successfully installed hike-1.2.3
Fetching: ast-2.4.0.gem (100%)
Successfully installed ast-2.4.0
Fetching: parser-2.3.3.1.gem (100%)
Successfully installed parser-2.3.3.1
Fetching: opal-0.11.0.gem (100%)
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ rb_file_s_symlink - (./exe, D:/Ruby/Ruby23/lib/ruby/gems/2.3.0/gems/opal-0.11.0/bin)

Ruby 2.3.3 p222 上でもエラーが出るな…。Ruby 2.2.6 と比べたら、まだスルスルと進んでる気配もあるけれど。

ちなみに、uru というのは、Ruby の異なるバージョンを切り替えて使うことができるツール。

_uru - Windows用のRuby環境セレクター | ソフトアンテナブログ
_pikの替わりにuru〜windowsで複数バージョンのrubyを切り替える〜 - Qiita
_Windows7でRubyのバージョン管理!pikの代わりにuruを使う。 - 思い付くまでタイトル未定

他に、pik というツールを使っても、Rubyのバージョンを切り替えることができる。

_Windows7にRubyInstaller+Pikで複数バージョンのRuby環境を整える - ひろうぃんの雑記

さておき。Ruby 2.4.3 ではどうかな。

> uru 24
---> now using ruby 2.4.3-p205 tagged as `24`

> ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [i386-mingw32]

> gem install dxopal
Fetching: sourcemap-0.1.1.gem (100%)
Successfully installed sourcemap-0.1.1
Fetching: hike-1.2.3.gem (100%)
Successfully installed hike-1.2.3
Fetching: ast-2.4.0.gem (100%)
Successfully installed ast-2.4.0
Fetching: parser-2.3.3.1.gem (100%)
Successfully installed parser-2.3.3.1
Fetching: opal-0.11.0.gem (100%)
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ rb_file_s_symlink - (./exe, D:/Ruby/Ruby24/lib/ruby/gems/2.4.0/gems/opal-0.11.0/bin)

Ruby 2.3.3 と同様のエラーが出た。

管理者権限でインストールしないといかんらしい。 :

エラーメッセージでググったら以下の記事に遭遇。

_メモ: Sass をWindowsに入れようとしたらgemで怒られたよ - tetsunosukeのnotebook

管理者権限でコマンドプロンプトを開いて、そこで作業すると改善する場合もあるらしい。試してみた。

Ruby 2.2.6 の場合。
> ruby -v
ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32]

> gem install dxopal
C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:388:in `symlink': symlink() function is unimplemented on this machine (NotImplementedError)
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:388:in `block (2 levels) in extract_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package/tar_reader.rb:65:in `each'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:365:in `block in extract_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:459:in `block in open_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:456:in `wrap'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:456:in `open_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:364:in `extract_tar_gz'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:345:in `block (2 levels) in extract_files'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package/tar_reader.rb:65:in `each'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:342:in `block in extract_files'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package/file_source.rb:30:in `open'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package/file_source.rb:30:in `with_read_io'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/package.rb:339:in `extract_files'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/installer.rb:772:in `extract_files'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/installer.rb:302:in `install'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/resolver/specification.rb:97:in `install'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/request_set.rb:166:in `block in install'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/request_set.rb:156:in `each'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/request_set.rb:156:in `install'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:205:in `install_gem'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:255:in `block in install_gems'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:251:in `each'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:251:in `install_gems'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/commands/install_command.rb:158:in `execute'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/command.rb:310:in `invoke_with_build_args'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/command_manager.rb:169:in `process_args'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/command_manager.rb:139:in `run'
        from C:/Ruby/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/gem_runner.rb:55:in `run'
        from C:/Ruby/Ruby22/bin/gem:21:in `<main>'
相変わらずダメだった。

Ruby 2.3.3 の場合。
> uru 23
---> now using ruby 2.3.3-p222 tagged as `23`

> ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]

> gem install dxopal
Successfully installed opal-0.11.0
Fetching: dxopal-1.1.0.gem (100%)
Successfully installed dxopal-1.1.0
Parsing documentation for opal-0.11.0
unknown encoding name ""+e)" for lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js, skipping
Installing ri documentation for opal-0.11.0
Parsing documentation for dxopal-1.1.0
Installing ri documentation for dxopal-1.1.0
Done installing documentation for opal, dxopal after 132 seconds
2 gems installed
妙なメッセージが出てるけど、一応最後まで通ったらしい。

Ruby 2.4.3 の場合。
> uru 24
---> now using ruby 2.4.3-p205 tagged as `24`

> ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [i386-mingw32]

> gem install dxopal
Successfully installed opal-0.11.0
Fetching: thor-0.19.4.gem (100%)
Successfully installed thor-0.19.4
Fetching: rack-2.0.4.gem (100%)
Successfully installed rack-2.0.4
Fetching: dxopal-1.1.0.gem (100%)
Successfully installed dxopal-1.1.0
Parsing documentation for opal-0.11.0
unknown encoding name ""+e)" for lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js, skipping
Installing ri documentation for opal-0.11.0
Parsing documentation for thor-0.19.4
Installing ri documentation for thor-0.19.4
Parsing documentation for rack-2.0.4
Installing ri documentation for rack-2.0.4
Parsing documentation for dxopal-1.1.0
Installing ri documentation for dxopal-1.1.0
Done installing documentation for opal, thor, rack, dxopal after 134 seconds
4 gems installed

つまり…。
  • Windows + Ruby 2.2.x では、DXOpal はインストールできない。
  • Windows + Ruby 2.3.x、Ruby 2.4.x は、管理者権限でコマンドプロンプトを開いてインストール作業をすれば、DXOpal がインストールできないこともない。
という状況らしい。

Linux上ではどうかな。 :

VMware + Ubuntu Linux 16.04 LTS 上で試してみた。

$ sudo apt install ruby

$ ruby -v
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]

$ gem install dxopal
Fetching: sourcemap-0.1.1.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /var/lib/gems/2.3.0 directory.

$ sudo gem install dxopal
Fetching: sourcemap-0.1.1.gem (100%)
Successfully installed sourcemap-0.1.1
Fetching: hike-1.2.3.gem (100%)
Successfully installed hike-1.2.3
Fetching: ast-2.4.0.gem (100%)
Successfully installed ast-2.4.0
Fetching: parser-2.3.3.1.gem (100%)
Successfully installed parser-2.3.3.1
Fetching: opal-0.11.0.gem (100%)
Successfully installed opal-0.11.0
Fetching: thor-0.19.4.gem (100%)
Successfully installed thor-0.19.4
Fetching: rack-2.0.4.gem (100%)
Successfully installed rack-2.0.4
Fetching: dxopal-1.1.0.gem (100%)
Successfully installed dxopal-1.1.0
Parsing documentation for sourcemap-0.1.1
Installing ri documentation for sourcemap-0.1.1
Parsing documentation for hike-1.2.3
Installing ri documentation for hike-1.2.3
Parsing documentation for ast-2.4.0
Installing ri documentation for ast-2.4.0
Parsing documentation for parser-2.3.3.1
Installing ri documentation for parser-2.3.3.1
Parsing documentation for opal-0.11.0
unknown encoding name ""+e)" for lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js, skipping
Installing ri documentation for opal-0.11.0
Parsing documentation for thor-0.19.4
Installing ri documentation for thor-0.19.4
Parsing documentation for rack-2.0.4
Installing ri documentation for rack-2.0.4
Parsing documentation for dxopal-1.1.0
Installing ri documentation for dxopal-1.1.0
Done installing documentation for sourcemap, hike, ast, parser, opal, thor, rack, dxopal after 93 seconds
8 gems installed

こちらも、管理者権限(sudo 〜)で作業すればインストールできるっぽい。

DXOpalを試用。 :

管理者権限のコマンドプロンプトを閉じて、通常のコマンドプロンプトを開いてから、DXOpal を試用。

> pik list
  187: ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]
  187: ruby 1.8.7 (2013-06-27 patchlevel 374) [i386-mingw32]
  193: ruby 1.9.3p551 (2014-11-13) [i386-mingw32]
  200: ruby 2.0.0p648 (2015-12-16) [i386-mingw32]
  219: ruby 2.1.9p490 (2016-03-30 revision 54437) [i386-mingw32]
  220: ruby 2.2.0p0 (2014-12-25 revision 49005) [i386-mswin32_100]
* 226: ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32]
  233: ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]
  243: ruby 2.4.3p205 (2017-12-14 revision 61247) [i386-mingw32]

> pik 233

> ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]

> mkdir dxopal_test01
> cd dxopal_test01

> dxopal init
DXOpal v1.1.0
Wrote index.html
Wrote main.rb
Wrote dxopal.min.js

> dxopal server
DXOpal v1.1.0
Starting DXOpal Server
(Open http://localhost:7521/index.html in the browser)
---
[2018-02-14 19:48:56] INFO  WEBrick 1.3.1
[2018-02-14 19:48:56] INFO  ruby 2.3.3 (2016-11-21) [i386-mingw32]
[2018-02-14 19:48:56] INFO  WEBrick::HTTPServer#start: pid=10272 port=7521

_http://localhost:7521/index.html をFirefoxで開いたら、「Hello!」の文字と画面が出た。動いてるっぽい。

#2 [dxruby][ruby] DXOpalで画像のアニメーション

DXOpal で画像のアニメーションってどうやればいいのかなと悩んだけど。 _Image#slice_tiles_DXOpalでも実装されてる ので、それを使えばいいらしい。とメモ。

一応サンプルも書いてみた。

_Image#slice_tiles demo

ソースが表示されてるあたりは、 _dxopal/examples at master - yhara/dxopal を参考にさせてもらいました。Webページ内でエディタが使えるようになる、 _Ace というJavaScriptライブラリがあるのですな…。勉強になった…。

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

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

近所のS歯科まで。詳細はGRPでメモ。

#2 [cg_tools][natron] Natronをインストール

_Natron という、オープンソース、かつ、Windows、Mac、Linuxで利用できる動画作成ソフトがあると知り、試しにインストール。画像や動画を合成する系のソフト、らしい。もしかすると Adobe After Effects あたりに近いのかもしれない。

ダウンロードしようとしたら、どうもユーザ登録が必要なようで。今時メルアド収集とか…そんなのやめとけばいいのに…。

とりあえず、Natron-2.2.4-Windows-x86_64bit-setup.exe をDLしてインストール。起動してみたけど、ノードを繋げて合成していく感じっぽい。が、使い方が全く分からず。

YouTubeで関連動画を検索したら、グリーンバック撮影した動画を合成等もできるみたいで。そのへんちょっと気になるなと。

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

#1 [prog][dxruby] スプライン曲線について調べてたり

3次スプライン曲線、とやらが気になってきたのです。Catmull-Romスプラインと比べて結果は違うのかな、どうなのかな、と。

3次スプライン曲線を Ruby + DXRubyで試したり。 :

以下、参考ページ。

_[PHP]3次スプライン曲線を使ったスプライン補間 | PHP Archive
_数値計算

Ruby + DXRuby に移植して動作確認してみたり。

cubic_spline_ss.png
スクリプトを起動後、ウインドウ内でマウスクリックすると、各点の配置が全部変わりますよ、とメモ。

_cubic_spline.rb
# DXRubyで3次スプライン曲線を描画
# xが右方向に増えていくことが前提、らしい?
#
# 参考ページ
#
# [PHP]3次スプライン曲線を使ったスプライン補間 | PHP Archive
# http://php-archive.net/php/cubic-spline/
#
# 数値計算
# http://www.sist.ac.jp/~suganuma/kougi/other_lecture/SE/num/num.htm#7.2

require 'dxruby'

# 3次スプライン補間
class CubicSpline

  # コンストラクタ
  # @param [Array] poslist [x,y]の配列群
  def initialize(poslist)
    init(poslist)
  end

  # 係数を計算して記憶
  # @param [Array] poslist [x,y]の配列群
  def init(poslist)
    @n = poslist.length - 1
    @h = []
    @b = []
    @d = []
    @g = []
    @u = []
    @q = []
    @s = []
    @r = []
    @x = []
    @y = []

    poslist.each do |px, py|
      @x.push(px.to_f)
      @y.push(py.to_f)
    end

    # step 1
    0.step(@n - 1, 1) do |i|
      @h[i] = @x[i + 1] - @x[i]
    end

    1.step(@n - 1, 1) do |i|
      @b[i] = 2.0 * (@h[i] + @h[i - 1])
      @d[i] = 3.0 * ((@y[i+1] - @y[i]) / @h[i] - (@y[i] - @y[i-1]) / @h[i-1])
    end

    # step 2
    @g[1] = @h[1] / @b[1]
    2.step(@n - 2, 1) do |i|
      @g[i] = @h[i] / (@b[i] - @h[i-1] * @g[i-1])
    end

    @u[1] = @d[1] / @b[1]
    2.step(@n - 1, 1) do |i|
      @u[i] = (@d[i] - @h[i-1] * @u[i-1]) / (@b[i] - @h[i-1] * @g[i-1])
    end

    # step 3
    @r[0] = 0.0
    @r[@n] = 0.0
    @r[@n-1] = @u[@n-1]
    (@n - 2).step(1, -1) do |i|
      @r[i] = @u[i] - @g[i] * @r[i+1]
    end

    # step 4
    0.step(@n - 1, 1) do |i|
      @q[i] = (@y[i+1] - @y[i]) / @h[i] - @h[i] * (@r[i+1] + 2.0 * @r[i]) / 3.0
      @s[i] = (@r[i+1] - @r[i]) / (3.0 * @h[i])
    end
  end

  # 補間値の計算
  # @param [Number] x1 補間値を求める値
  # @return [Number] 補間値
  def get_value(x1)
    i = -1.0

    i1 = 1
    while i1 < @n and i < 0.0
      i = i1 - 1 if x1 < @x[i1]
      i1 += 1
    end

    i = @n - 1 if i < 0.0

    xx = x1 - @x[i]
    y1 = @y[i] + xx * (@q[i] + xx * (@r[i] + @s[i] * xx))

    return y1
  end
end


if $0 == __FILE__
  # ----------------------------------------
  # 動作テスト

  # 四角を描画
  # @param [Number] x x座標
  # @param [Number] y y座標
  # @param [Number] sz サイズ
  # @param [Array] col 色。[r, g, b]の配列
  def draw_dot(x, y, sz, col)
    sz /= 2.0
    Window.drawBoxFill(x - sz, y - sz, x + sz, y + sz, col)
  end

  # 点を描画
  # @param [Number] x x座標
  # @param [Number] y y座標
  # @param [Array] col 色。[r, g, b]の配列
  def draw_dot2(x, y, color)
    Window.drawLine(x, y, x, y, color)
  end

  # 座標群を乱数で生成
  # @return [Array] [x0,y0],[x1,y1]...[xn,yn]の配列を生成して返す
  def get_poslist
    poslist = []
    w = Window.width
    h = Window.height
    0.step(w, 50) do |x|
      y = rand(h / 2) + (h / 4)
      poslist.push([x, y])
    end
    return poslist
  end

  fnt = Font.new(12)

  poslist = get_poslist
  spline = CubicSpline.new(poslist)

  # メインループ
  Window.loop do
    break if Input.keyPush?(K_ESCAPE) # ESCキーで終了

    if Input.mousePush?(M_LBUTTON)
      # マウスボタンが押されたら座標群を生成し直し
      poslist = get_poslist
      spline.init(poslist)
    end

    # 制御点を描画
    poslist.each do |x, y|
      draw_dot(x, y, 6, C_RED)
    end

    # 3次スプラインを描画
    end_x1 = poslist.last[0]
    x1 = 0.0
    x1_add = end_x1.to_f / (poslist.length * 16)
    while x1 <= (end_x1 + 0.01)
      y1 = spline.get_value(x1)
      draw_dot2(x1, y1, C_WHITE)
      x1 += x1_add
    end

    Window.drawFont(4, 4, "Please Click", fnt)
  end

end

ベタ移植してるうちに気がついたのだけど。コレってもしかして、x が必ずプラス方向に増えていくことが前提の実装…なのでは…。グラフを描く時はたしかにそのほうが都合がいいわけだけど、自分の場合、ゲームっぽい何かに使えないかと思いながら実験してるので、各点を自由に配置できないとなると、ちょっと使いどころが…。

別のスプライン曲線を試したり。 :

その後、別の実装をしてる例を見かけたり。

_Flashゲーム講座&ASサンプル集【曲線について】

ただ、これは、どんな種類のスプライン曲線なのか記述が無いので、何スプライン曲線なのか分らんのですけれど。とりあえずコレも、Ruby + DXRuby にベタ移植して動作確認してみたり。

spline_ss.png
スクリプト起動後、ウインドウ内でマウスクリックすると、点の位置を順々に指定できますよ、とメモ。

_spline.rb
# DXRubyでスプライン曲線を描画
# 2次スプラインなのか、3次スプラインかなのか不明
#
# 参考ページ
#
# Flashゲーム講座&ASサンプル集【曲線について】
# http://hakuhin.jp/as/curve.html#CURVE_04

require 'dxruby'
require 'pp'

# スプライン補間用クラス
#
# @attr [Array] result スプライン補間した座標群が配列の形で入る
#
class SplineStream

  # x,y座標保持用クラス
  class Vec
    attr_accessor :x
    attr_accessor :y

    def initialize(x, y)
      @x = x.to_f
      @y = y.to_f
    end
  end

  attr_accessor :result

  # コンストラクタ
  # @param [Array] poslist 座標群。一要素が[x,y]になってる配列
  # @param [Number] interpolate 分解度
  def initialize(poslist, interpolate)
    init(poslist, interpolate)
  end

  # 座標群から補間値を生成する
  # @param [Array] poslist 座標群。一要素が[x,y]になってる配列
  # @param [Number] interpolate 分解度
  def init(poslist, interpolate)
    @num = poslist.length
    @l = []
    @aa = []
    @bb = []
    @cc = []

    p = []
    poslist.each do |d|
      p.push(Vec.new(d[0], d[1]))
    end

    0.step(@num - 2, 1) do |i|
      p0 = p[i]
      p1 = p[i+1]
      @l[i] = Math.sqrt((p0.x - p1.x) * (p0.x - p1.x) + (p0.y - p1.y) * (p0.y - p1.y))
    end

    @aa[0] = [0.0, 1.0, 0.5]
    @bb[0] = {
      :x => (3.0 / (2.0 * @l[0])) * (p[1].x - p[0].x),
      :y => (3.0 / (2.0 * @l[0])) * (p[1].y - p[0].y)
    }

    @aa[@num - 1] = [1.0, 2.0, 0.0]
    @bb[@num - 1] = {
      :x => (3.0 / @l[@num - 2]) * (p[@num - 1].x - p[@num - 2].x),
      :y => (3.0 / @l[@num - 2]) * (p[@num - 1].y - p[@num - 2].y)
    }

    1.step(@num - 2, 1) do |i|
      a = @l[i - 1]
      b = @l[i]
      @aa[i] = [b, 2.0 * (b + a), a]
      @bb[i] = {
        :x => (3.0 * (a * a * (p[i + 1].x - p[i].x)) + 3.0 * b * b * (p[i].x - p[i - 1].x)) / (b * a),
        :y => (3.0 * (a * a * (p[i + 1].y - p[i].y)) + 3.0 * b * b * (p[i].y - p[i - 1].y)) / (b * a)
      }
    end

    1.step(@num - 1, 1) do |i|
      d = @aa[i-1][1] / @aa[i][0]
      @aa[i] = [0, @aa[i][1] * d - @aa[i-1][2], @aa[i][2] * d]
      @bb[i][:x] = @bb[i][:x] * d - @bb[i - 1][:x]
      @bb[i][:y] = @bb[i][:y] * d - @bb[i - 1][:y]

      @aa[i][2] /= @aa[i][1]
      @bb[i][:x] /= @aa[i][1]
      @bb[i][:y] /= @aa[i][1]
      @aa[i][1] = 1
    end

    @cc[@num - 1] = {
      :x => @bb[@num-1][:x],
      :y => @bb[@num-1][:y]
    }

    (@num - 1).step(1, -1) do |j|
      @cc[j - 1] = {
        :x => @bb[j - 1][:x] - @aa[j - 1][2] * @cc[j][:x],
        :y => @bb[j - 1][:y] - @aa[j - 1][2] * @cc[j][:y]
      }
    end

    outdata = []
    count = 0
    0.step(@num - 2, 1) do |i|
      a = @l[i]
      v00 = p[i].x
      v01 = @cc[i][:x]
      v02 = (p[i + 1].x - p[i].x) * 3.0 / (a * a) - (@cc[i + 1][:x] + 2 * @cc[i][:x]) / a
      v03 = (p[i + 1].x - p[i].x) * (-2.0 / (a * a * a)) + (@cc[i + 1][:x] + @cc[i][:x]) * (1.0 / (a * a))

      v10 = p[i].y
      v11 = @cc[i][:y]
      v12 = (p[i + 1].y - p[i].y) * 3.0 / (a * a) - (@cc[i + 1][:y] + 2 * @cc[i][:y]) / a
      v13 = (p[i + 1].y - p[i].y) * (-2.0 / (a * a * a)) + (@cc[i + 1][:y] + @cc[i][:y]) * (1.0 / (a * a))

      t = 0.0
      t_spd = a.to_f / interpolate.to_f
      0.step(interpolate - 1, 1) do |j|
        tx = ((v03 * t + v02) * t + v01) * t + v00
        ty = ((v13 * t + v12) * t + v11) * t + v10
        outdata.push([tx, ty])
        t += t_spd
      end
    end

    outdata.push([p[@num-1].x, p[@num-1].y])

    @result = outdata
  end
end

if $0 == __FILE__
  # ----------------------------------------
  # 動作確認

  Window.caption = "Spline Curve"

  # 四角(塗り潰し)を描画
  def draw_dot(x, y, sz, col)
    sz = sz / 2.0
    Window.drawBoxFill(x - sz, y - sz, x + sz, y + sz, col)
  end

  # 点を描画
  def draw_dot2(x, y, col)
    Window.drawLine(x, y, x, y, col)
  end

  # 四角(線のみ)を描画
  def draw_box(x, y, sz, col)
    sz = sz / 2.0
    x1, y1 = x - sz, y - sz
    x2, y2 = x + sz, y + sz
    Window.drawLine(x1, y1, x2, y1, col)
    Window.drawLine(x1, y2, x2, y2, col)
    Window.drawLine(x1, y1, x1, y2, col)
    Window.drawLine(x2, y1, x2, y2, col)
  end

  fnt = Font.new(12)

  # 1区間を何分割するか
  interpolate = 16

  # 初期座標群
  poslist = [
    [50, 200],
    [150, 200],
    [250, 100],
    [350, 400],
    [450, 200],
    [550, 100],
  ]

  spline = SplineStream.new(poslist, interpolate)
  mode = 0

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

    if Input.mousePush?(M_LBUTTON)
      # マウスボタンがクリックされたら座標変更
      poslist[mode] = [Input.mousePosX.to_f, Input.mousePosY.to_f]
      mode += 1
      mode = 0 if mode >= poslist.length

      # スプライン曲線を作り直し
      spline.init(poslist, interpolate)
    end

    # 制御点を描画
    poslist.each_with_index do |d, i|
      x, y = d
      draw_dot(x, y, 6, C_RED)
      draw_box(x, y, 12, C_CYAN) if i == mode
    end

    # スプライン曲線を描画
    spline.result.each do |d|
      x, y = d
      draw_dot2(x, y, C_WHITE)
    end

    Window.drawFont(4, 4, "Please Click", fnt)
  end
end

これは3次スプライン曲線なのだろうか…。なんだか違う気がする…。Catmull-Rom と形が似てる気もするし…。

スプライン曲線では道路の自動生成は難しいかも。 :

道路の自動生成に使えないかと、それぞれの曲線描画を試しているのだけど。もしかすると、どれを使っても上手くいかないのではないか、という気がしてきたり。

おそらく、道路の自動生成は、自機の位置がある程度進んだら、新しい制御点を追加、かつ、一番古い手前の制御点を削除して、曲線を再作成、という感じの処理になるのかなと想像しているけど。今まで試したアレコレは、制御点が増えたり減ったりすると、曲線の形が変わってしまうように見えるわけで。つまり、道路用の制御点が増えたり減ったりするたびに、画面の中に見えている道路の形がパカッパカッと潔く変わってしまうのではないか、と。

違う方法を考えたほうがいいのかもしれない…。

#2 [windows] Windows10にアップグレードしたらWebサーバが使えなくなってしまった

普段この日記ページをローカルでプレビューする時は、 _04WebServer というWebサーバを起動して確認しているのですけど。

Windows7 から Windows10 にアップグレードして、そこで初めて 04WebServer を起動してみたら、「通信ポートのオープンに失敗しました」とエラーメッセージが表示されて。何故。

色々ググってみたら、どうも Windows10 からは IIS が有効になっていて、80番ポートを既に使われちゃってるらしくて。

_XAMPPがWindows10で動かない時の対処法 | ブログが書けたよ!
_Windows10でIISを(ホームページ)有効化する設定
_Windows10にアップグレードしたらApache起動しなくなったので対策に乗り出したっていう話 | Thought is free

てなわけで、スタートボタン横の検索窓に「Windows機能の有効化または無効化」と打ち込んで起動して、「インターネット インフォメーション サービス」のチェックを外して、IISを無効化してみたり。OS再起動後、04WebServerが使えるようになった。

しかしコレ、Windows10 は IIS を一体何に使っているのだろう…。無効にしないほうがいいのかな…。

#3 [anime][neta] ファフナーの、遠い親戚、おそ松さん

思考メモ。

「蒼穹のファフナー EXODUS」というアニメのラストのあたりを先日視聴したのですけど。なんだか凄いことが起きてるらしいけど前のシリーズは見てないから設定が分らなくて何が起きてるのかさっぱりだな参ったなあ、などと思いながらぼんやり眺めていたのです。

設定はともかく、個人的に一番辛かったのは、出てくる少年少女キャラの顔が皆同じで全然区別がつかない点。髪型と声は違うけど、目鼻のデザインや配置バランスが同じなので、誰が誰やら。 *1

実際の設定がどうなってるかは分らんのですが、これはおそらくアレだなと。全員がクローンという設定なのだろうと自分は勝手に推測したのです。

何せ、人類が敵にボコボコにされてる世界設定だから、若い世代がごっそり死んでて、仕方なくクローンで増やして人口を調整してるに違いないと。

あるいは、巨大ロボットを動かせる資質を持った個体がそうそう自然に生まれてこないので、クローンでパイロットを増やしてるんだろうと。要するに EVAの綾波みたいなものではないか。などと思いながら見ていたわけです。や、実際の設定がどうなのかは知らんのですけど。そういう設定と考えれば、顔が皆同じなのは納得できるぞと。

しかし、クローン設定って、面白いことは面白いけど、真面目に映像化すると困ったことになるなと。ついさっき誰かが死んだと思ったら、その数カット後にそっくりさんが「うおー」「クソォ」と叫んで戦ってるわけで。「アレ? コイツ、さっき死んでなかったっけ?」みたいな。そんな映像見せられたら、作品に没入とかちょっとハードル高いよなと。

そこでふと、「おそ松さん」を思い出したわけですよ。…と言っても、「おそ松さん」って自分は一度も見れてないんですけど。 *2 それはさておいて、アレはどうやってそのへん解決してるのだろうかと。

「おそ松さん」って、たしか放送された最初の頃は、「六つ子に個性を与えるとは愚行である」「彼等のアイデンティティが崩壊するではないか」などと叩かれてた記憶があるのですけど、今となっては「コレは○松」と女性視聴者が一発で見分けてるらしいじゃないですか。おそらく、個性を強調する方針は正しかったのだと歴史(?)が証明してくれたのだ、とか思ってたりするのですが。

その、おそ松さんのキャラデザ・キャラ設定メソッドを、クローン設定モノに流用すれば状況を改善できたりしないか、と。

と言っても、おそ松さんは結構ダイナミックなキャラデザだから、そのメソッドが使えるのかなあ…。

仮に、ファフナーの少年少女達の顔がおそ松さんみたいな顔だったら、これは一体どうなっちゃうんだろう…。その場合ファフナーは、続編が作れるぐらいにちゃんと人気が出たのだろうか…。いやー、どうかなー。どうなんだー。

オチは無いです。思考メモというか妄想メモです。

キャラデザが一人ってのがおかしい気もする。 :

クローン設定云々はおいといて。フツーの設定のアニメでも、キャラの区別がつかないことって、たまにあるよなと。

昔のディズニーアニメは、キャラ一人につき、キャラデザ、兼、担当アニメーターがついた状態で作ってたらしいのですけど。どうして日本は、そうならなかったのかなと…。昔のディズニー方式なら、キャラの区別がつかない、みたいな話は無かったんじゃないかと思ったりもするわけで。

せめて、最初のダンクーガみたいに、最低限キャラデザの人だけでも6人ぐらい居ます、みたいなスタッフ構成もアリじゃないかと思ったりするんですけど。アレがその後もあまり続いてないのは、やっぱり何か問題があるんですかね。

漫画の影響、なのかなあ。漫画の延長として、日本のアニメは存在してるし。漫画家さんはえてして一人で色んなキャラを描いてしまうから、アニメのキャラデザも一人が理想、みたいなことになってるのかしらん。そのあたりは、手塚治虫先生が偉大過ぎたのかなあ…。あの人、一人で色んなキャラを描いちゃうし。もっとも、スターシステムという名の使い回しは必ずしてるような気もするけど。

これがもし、漫画を描く時も、キャラ一人つき漫画家一人がついて作画するのが当たり前、みたいなことになってたら、アニメのキャラデザもそのように変わったのだろうか。

このあたり、ベテランアニメーター、大塚康生さんの著書、「作画汗まみれ」の中でも、若い頃の大塚さんが若干悩んでた記述があったような記憶も。あの時代に、日本風のアニメの作り方・キャラデザの仕方が決まっちゃったのでしょうけど…。

*1: 一応、少年少女パイロット達は、ヘルメットを被らないでコクピットに乗ってたりするので…。見分けられるように、あえてヘルメットを被らせてないんだろう、一応工夫はしてるっぽい、とは思いましたが、それでも区別がつかない…。
*2: ただでさえ、BS11とBS-TBSがアニメを放送してぶつけ合ってる時間帯に、狙ったかのようにBSジャパンが「おそ松さん」までぶつけてきたので、見れないんですよね…。曜日も、時間帯も、他にいくらでも空いてるのに、なんでわざわざぶつけてくるの? 関係者は馬鹿なの? って気分ですよ。どうして曜日や時間帯をずらさないのかなあ。BSジャパンは「ワンパンマン」も変な時間帯に流しちゃってたので、録画できなかったし…。

#4 [nitijyou] 体調は少し良くなってきた

おそらくは _新ルル - A錠 を飲んだら、随分楽になってきた。鼻はつまり気味だけど、咳はほとんど治まったし。

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

#1 [dxruby] 雑魚敵の仮画像を作成中

プレイヤーキャラの仮画像はできたので、雑魚敵の仮画像を作成開始。

しかし…。自分、絵がヘタクソ過ぎて、泣けてくる。

#2 [cg_tools] GIMPのレイヤー名に連番をつけるスクリプトを書いた

昨日、レイヤー群の各レイヤー名に連番をつける機能が欲しい、と思ったので、以前作ったスクリプトを修正して対応。

_all-layers-process-serial-number_m256.scm

_GIMPの全レイヤーを連番リネーム、または連番テキストを描画するスクリプト - mieki256 wiki を少しだけ修正。

レイヤーのエクスポート。 :

ちなみに、レイヤー群を画像ファイルとしてエクスポートする作業には、以下を使いました。とメモ。

_khalim19/gimp-plugin-export-layers
_Export Layers | GIMP Plugin Registry

他の連番リネームスクリプトもメモ。 :

既に色んな方が連番リネームするスクリプトを作ってた。

_gimp-plug-ins/python_layers_rename_to_serial.py at master - t87rtp/gimp-plug-ins
_レイヤー名の一括返還 - GIMP質問掲示板

GIMP質問掲示板のソレはPythonスクリプトなのに、インデントが全部消滅していて、こういう時に Python って困るよなと…。人様が書いたスクリプトではあるけど、一応インデントをちゃんと直した版も _ココにこっそり置いとく です。メニュー → レイヤー → Layer Numbering で呼び出せるように少し修正。

#3 [cg_tools] GIMPのScript-fuコンソール上で実験する時のアレコレをメモ

GIMPのスクリプト ―― Script-fuを書く際に、Script-fuコンソールを立ち上げて、どのコマンド(?)がどんな動きをするか確認する時があるのですけど。その確認手順を忘れてしまってググり直したりしたので、一応少しだけメモ。
コマンド名は、ある程度、規則に従って決められてる。 他にも命名規則がありそう。

コマンドの中には、パラメーター・引数として、
image     IMAGE    The image
を要求するものがあるけれど、これは画像IDを指定する。画像IDってのは、現在 GIMP で開いてる画像の一つ一つに割り当てられた管理(?)番号。

画像IDの他に、レイヤーIDも存在する。レイヤーの一つ一つに番号が割り当てられてる。レイヤーに対して何かしたいときは、レイヤーIDを指定して、「このレイヤーIDのレイヤーに○○をせよ」と命令していく、みたいな。

実践。 :

例えば、今現在、GIMP で画像を1枚だけ開いてるとする。レイヤーは4枚ほど持ってる。

今現在 GIMP で開いてる画像の枚数と、画像IDの一覧を取得したい。画像に対する処理だから、名前に image が入ってそう。Script-fuプロシージャブラウザーに、「image」と打って検索してみる。

(gimp-image-list) てのがあった。これじゃないかな。

Script-fuプロシージャブラウザーで、gimp-image-list を選んで「適用」ボタンを押す。 Script-fuコンソールの入力欄に、(gimp-image-list) とコピペされた。入力欄にカーソルを合わせてから、Enterキーを押してみる。下のような結果が得られた。
> (gimp-image-list)
(1 #(1))
最初の「1」が画像枚数。次の「#(1)」が画像IDの一覧。今、GIMPは、画像ID = 1 の画像を1枚だけ開いていますよ、と分かる。

毎回コマンドを確認するたびに画像IDを打ち込み直すのは面倒なので、グローバル変数 image に画像IDを指定しておく。コンソールの入力欄に、(define image 1) と打ち込んでEnter。
> (define image 1)
image
これで、image というグローバル変数に、1を代入できた。

レイヤーの一覧を取得したい。たくさんのレイヤーに対するソレだから、名前に layers が入ってそう。検索してみる。

(gimp-image-get-layers image) てのが、なんだかソレっぽいな。
> (gimp-image-get-layers image)
(4 #(5 4 3 2))
レイヤーが4枚あって、レイヤーID?が、2〜5まで割り当てられてるよ、と分かる。

レイヤー名を取得したい。取得するのは、たぶん「get」だろう。「get」で検索してみる。

(gimp-layer-get-name item) が、いかにもそれっぽい。
> (gimp-layer-get-name 5)
("レイヤー #2")
> (gimp-layer-get-name 4)
("レイヤー #1")
> (gimp-layer-get-name 3)
("レイヤー")
> (gimp-layer-get-name 2)
("背景")
レイヤー名が取得できた。

どうやら、名前を取得するコマンドは、「get-name」とついてるっぽい。検索したら、画像名だのレイヤー名だのを取得するコマンドが表示された。

レイヤー名を変更してみる。レイヤーに関する処理だから、layer ってついてそう。あるいは、取得じゃなくて指定だから、get の反対、set ってついてそう。検索。

(gimp-layer-set-name item name) じゃないかな。item にはレイヤーIDを、name には変更レイヤー名を指定する。
> (gimp-layer-set-name 5 "hogefuga")
(#t)
レイヤーID = 5 のレイヤー名を、「hogefuga」にしてみた。処理が成功したので「(#t)」が返ってきた。GIMPウインドウ内を眺めると、一番上のレイヤーの名前が「hogefuga」になってる。たしかにレイヤー名を変更できた。

と、そんな感じで、「たぶん getナントカじゃねえかなあ」「おそらく layerナントカっぽいな」と想像しながら検索欄に打ち込んでみて、リストアップされたコマンドを眺めて「たぶんコレだろ」と当たりをつけて、そのコマンドの動作を確認しながら Script-fu を書いてたりしますですよ。とメモ。

そのうちまた忘れそう。頻繁に Script-fu を書いてるわけでもないし。

この記事へのツッコミ

Re: GIMPのScript-fuコンソール上で実験する時のアレコレをメモ by 名無しさん    2015/08/15 22:21
本当に助かります、有難うございました!
Re: GIMPのScript-fuコンソール上で実験する時のアレコレをメモ by JUN    2018/01/22 14:07
入り口の敷居が跨げずに四苦八苦して投げ出そうかと思っていたところです。
次へ進むことが出来て感謝します。

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

#1 [unity] unitypackage形式でエクスポートするとレイヤー設定が消滅してしまう

Unity は、Assets(素材やスクリプト等)を、unitypackage という拡張子のファイルにまとめてエクスポートすることができるのだけど。試しにエクスポートした .unitypackage を、空のプロジェクトにインポートしてみたら、レイヤー設定がごっそり消滅していて首を捻ったり。

ググってみたところ、unitypackage でエクスポートする際は、レイヤー設定はエクスポートされないようで。Assets フォルダ以下しかエクスポートできないのだけど、そこにレイヤー設定のファイルは入ってない。

すると、レイヤー設定はどこに記録されているかというと…プロジェクト設定として記録されているようで。具体的には、プロジェクトフォルダ\ProjectSettings\TagManager.asset が、タグやレイヤー設定を保存しているファイルらしい。

ところが。Unity公式の各サンプルをインポートした場合は、ちゃんとレイヤー設定もインポートされる ―― ProjectSettings\*.asset も、インポートするファイルのリストに並んでるわけで。つまり、.unitypackage に、ProjectSettings\*.asset を含めることは、不可能ではない模様。

しかし、それを実現する方法が分からず。Unityのメニューを辿って色々眺めてみたり、海外の掲示板を眺めてみたりしたけれど、どこにもそれらしい答えが無い。

無料で使える版と、Pro版の違いなのだろうか。とも思ったが、Pro版との違いについて列挙してある解説ページを眺めても、それらしい記述はない。というか、そういう仕様であれば、海外の掲示板で「それはPro版でしかできないよ」と誰かが言及してそうな気がする。

今のところ、解決策としては、「別途マニュアルを書いて、レイヤー設定について説明すべし」てな話しか見つからなかった。いやいや、そんな馬鹿な…。いくらなんでも、そんなわけないだろ…。もうちょっと調べてみよう…。

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

#1 [nitijyou] 買い物に

親父さんの電動自転車を借りて買い物に。TUTAYA、ダイソー、リオンドール、ダイユーエイトを回ってきたり。インフルエンザが流行っているらしいので一応マスクをつけて外出。

あちこち、雪が溶けてなくて凍ったまま。自転車で乗り上げて転びそうになったり。

#2 [anime] 攻殻機動隊SACが無料配信されてたらしい

押井版や神山版とはまた違うシリーズ?が作られるらしいのだけど、その宣伝?として、Youtube上で無料配信していたことを知った。2/20までの期間限定だそうで。…今から全話見るのはちょっと厳しそう。

一応、1作目だけは福島でも地上波放送してた記憶があるのだけど。放送してることに気付いた頃には、結構話が進んでしまってた記憶も。…最初のあたりだけちょっと目にしておきたい気分になってきた。

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

#1 [papercraft] のり付け無しのペーパークラフトを試作

今現在こんな感じに。
素組み状態


台紙(?)を置いておきますので、興味が湧いた方はテクスチャを描く等ご自由にどうぞ。

_頭の部分(PDF)
_体と手足(PDF)
_ツインテール(PDF)

_頭の部分(png,A4,300dpi)
_体と手足(png,A4,300dpi)
_ツインテール(png,A4,300dpi)

_AR-CAD 1.5.3 のデータ

組み立て方は、 _ペーパークラフトの作り方 - ヤマハ発動機株式会社 が参考になった。動画で教えてくれるのでとても分かりやすい。最低限、以下の2つをやるだけでも結構違う印象。 自分は鉄筆を使ってるけど、どこの御家庭にもあるものじゃないので、件のページで紹介してるように、シャープペンシルの先を使ってなぞるのが無難のような気がする。

さて、ここから作例を作りたい。png をGIMPで開いて、テクスチャを描き込んで、てな感じで作業する予定。

#2 [pc] PDFをpngに変換しようとして悩む

結局、 _PDF-XChange Viewer を使って、ファイル → エクスポート → イメージへエクスポート。文字も描画されている。線も残っている。素晴らしい。

ということで、pdf→ビットマップ変換するなら、PDF-XChange Viewer が便利。

#3 [zatta] どんな道具を使って描いてもいいよなあ

録画してたNHK教育の番組、「あなたもアーティスト 増山修のアニメ流風景スケッチ術」(だったっけ?)を、少しずつ消化しているのだけど。 番組中、「定規」を使って透視図を描いた後、余計な線を「消しゴム」で消していく、その作業手順を見て。「ですよね! それでいいですよね!」と盛り上がってしまったり。

当時どういう理由があったのかわからんけど。自分、義務教育時のその手の授業内で、「絵を描く時に定規を使うな」「絵を描く時に消しゴムを使うな」という教育を受けてしまっていたので。後になってから、「なんでそんなことを児童に強制してたんだろう…」とゲンナリしていたわけで。だから、番組内でスイスイと、定規や消しゴムを使って描いていくその様子を見て、胸がスッとしたという。

このあたり、「CGで作画するなんて手抜きだ」とか、「漫画家ならGペンや丸ペンで描くべき。ミリペンなんてとんでもない」とか、「スクリーントーンより手描きのほうが偉い」とか、そういうのと共通するところがありそうな気がする。何を使ってもいいじゃないか。自分に合ってる道具や手法で描けば、それでいいじゃないか。

にしても、子供の頃に、こういう先生に教えてもらっていたら、絵を描くことがもっと楽しくなったのかもしれず。技法についての知識を得ると、みるみる自分の絵がそれらしくなっていく、そんな体験をすれば、絵を描くことが楽しくて、もっと描いてみたいと思えたのかもしれない。「俺はセンスが」「俺は才能が」等の言葉の空虚さも実感できただろうし。…もっとも、技法ばかりを叩き込むような教育方針になると、それはそれで嫌になってしまう子供が出てくる予感。何事もバランスが大事、ということなのかしら。

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

#1 [nitijyou] 朝起きて作業

ツライです。一日中頭がボーッとしていて眠い。

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

#1 [comic] 「EXIT」4〜11巻を読み返し

なんとなく。

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

#1 [anime] ゴーオンジャー、ライダーキバ、プリキュア555、最終回鑑賞

1年間お疲れさまでした。>スタッフの方々。みたいな。

ゴーオンジャーは最後まで比較的ノリノリだった印象。最終回の、顔を見せながらの戦闘は、日笠Pが関わってるが故の特長、なのだろうか。ライダー剣でも最終回近くで似たような演出があったし。子供さんが、変身前の人と変身後の人を、より混同しやすくなるであろう、良い見せ方だなと思ったり。

ライダーキバは、全般的に井上脚本が今一つだった印象。<オイ。知能を持ったライダーベルトが只の空気にしかならなかったあたりが実にもったいない。 *1 が、ゴーオンジャー側で変身アイテムがキャラとして大活躍していたから、それと被らないように、てな意識でもあったのだろうかと邪推。となるとライダー側は、件の設定の導入タイミングが悪かった、のだろうか。はたまた、井上脚本的に不得手な分野だったのか。しかし井上脚本がメインだったメイプルストーリーあたりでは、小さいキャラもそれなりに動かしてた気がするので、今回はあえて狙って動かさなかったのだろう…と思いたいけど…。それはそれとして、耽美云々も活かせてなくて残念。こちらはどちらかというと各話担当の監督さんが不得手だったのだろうか。何にしても色々とアレコレもったいない感が目立つ作品だったような印象。

プリキュア555は、なんだかあっさり終わったような印象。2年間やってたせいもあるのだろうか。まあ、ライダーもそうだろうけど、次回作にリソース取られてるだろうから、最終回近辺でかなり無理して頑張っていたほうなのかもしれず。

何にしても、お疲れさまでした。>スタッフの方々。1年間楽しませていただきましたです。
*1: 例えば、海外ドラマ「ナイトライダー」において、車が堅苦しく喋るだけでキャラクター性をそこに作ってみせたのと比べると、台詞を自由に出せるはずの今回のライダーベルトがこうなっちゃったのは脚本的にちょっとどうなんだろうみたいな。

#2 [pc][linux] Windowsパーティションにwubiを使ってUbuntu Linuxを試しにインストールしてみたり

仮想HDD的なファイルをWindowsパーティションに作ってそこにUbuntuをインストールする仕組み、らしい。>wubi。Windowsアプリをインストールする感覚でサクッとデュアルブート環境を作れて、なおかつ、Windowsアプリをアンインストールする感覚でサクッとアンインストールできるので、お試しインストールに最適、なのだとか。

ホントにサクッとインストールできた。こりゃ凄い。3Dデスクトップもあっさり動いてくれて、かなりイイ感じ。

が。最初、Ubuntu 8.04LTSをインストールして、そこから Ubuntu 8.10にアップグレードしようとしたら、Xが起動できなくなってしまった。また、3Dデスクトップを試すために、nvidiaのドライバを入れると、最高で1280x1024の解像度しか選べなくなってしまう。1400x1050を選びたいのだが…。うーん。

2008/02/14(木) [n年前の日記]

#1 [windows] IE6からIE7にアップグレードした

タスクバーに更新アイコンが表示されていたので何だろうと思って Windows Update サイトを開いたところ、IE7への更新項目が。もうそういう時期か…。試しにアップグレード。

アップグレード作業時に気になった点。
  1. アップグレードにかかる時間が遅い。こんなに遅いのでは一般ユーザが躊躇してしまいそう。つまりはIE6が絶滅してくれない予感。バグが多いIE6なんて、さっさと消滅してほしいのだけど…。
  2. 2ch専用ブラウザ live2ch でエラーが頻発するようになった。
  3. マウスホイールによるスクロールの挙動が奇妙なことに。一定の速度でホイールを回してるつもりでも、スクロール速度が、少し→少し→大きく移動→少し、という感じに。
  4. タブを切り替えるとIE7のウインドウ全体がふにゃふにゃする。GUIのパーツ?を全部配置し直しているような。しかも、タブ切り替え前と座標値が一致しない。後付けで、無理矢理、見た目だけのタブ切り替えをつけたっぽいな…。

live2chがエラーを出すのは使用してるスキンの問題だった。 :

_skin30-2L++ というスキンを利用してるのだけど、IE7の設定を弄らないといけないらしい。
■Internet Explorer 7 対処法■

▲※インターネットオプション~
 >セキュリティ
 >信頼済みサイト
 >サイト
 >「このゾーンのサイトにはすべてのサーバーの確認(https:)を必要とする(S)」のチェックを外して
 >「このWebサイトをゾーンに追加する(D):」にabout:blankを入力して>追加(A)を押す

▲※「このWebページがクリップボードへアクセスするのを許可しますか?」が出るのは、
  インターネットオプション
  >セキュリティ
  >このゾーンのセキュリティのレベル(L)
  >レベルのカスタマイズ(C)...
  >スクリプト
  >スクリプトによる貼り付け処理の許可を有効にする

■■Live2ch用スキン【skin30-2L++】 #08■■ より

マウスホイールによるスクロールがおかしくなる件。 :

どうやら IE7ベータ版からの不具合らしい。

_[観] IE7 でホイールによるスクロールの動きが変な件、解決しました

上記事例ではロジクール製マウスの場合に改善できる事例が載ってるけれど。ウチの環境は Microsoft製マウスなわけで…。つーか正式に配布した現在ですら修正できていないってのはどういうことなんですかね。>MS。

もしかして IntelliPoint のバージョンが 5.5 のままなのが問題なのだろうか。とはいえ、6.xx 以降をインストールすると、CGツール (Photoshop等)の画像ウインドウがちらついて作業ができなくなるという問題が。

しかし検索してみたところ、 _IntelliPoint6.xの不具合を WIndows XP 環境なら改善できそう という話が。
手順はごく簡単で、ipoint.exeを直接参照し、プロパティから互換モード(Windows2000)を指定してやるだけ。追試時間がまだ短いので確定とはいえませんが、おそらくこれで行けるのではないかと思われます。

monochrome CHROME より

ふむ。ということで、5.5 をアンインストールして、6.2 をインストールしてみたり。その後、dplaunch.exe、ipoint.exe を右クリック→プロパティ→互換性→互換モード、でWindows 2000 のソレを選択・指定。たしかに Photoshop Elements の画像ウインドウはちらつかなくなったように見える。これでしばらく様子を見てみようかなと。

IntelliPoint でIE7のタブ移動ショートカットキー Ctrl+Tab を割り当てたいのだが。 :

TABキーを押した瞬間にフォーカスが変わってしまうので割り当てることができず。検索したところレジストリを弄らないとダメらしい。面倒だな…。

Firefox はどうやって登録したんだっけ。と思ったら Firefox の場合 Ctrl + PageUp や Ctrl + PageDown だった。

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

#1 [linux][ubuntu] _Linux Tips「複数のユーザーで共有ディレクトリを使いたい」

_複数ユーザーで共有ディレクトリを使用するには

これをやってしまってハマった。usermod -G groupname username では、ユーザに指定された他の group 情報がごっそり削除されてしまう。

つーか検索したら、 _昔もやっていて ガックリきた。メモした意味がねえ。

_Debianでのユーザ管理 :

例えば、ユーザー"hoge"で、サウンドデバイスを利用したい場合は、"hoge"を"audio"グループに含める必要があります。

/etc/groupを直接編集する場合は、以下のようになります。
audio:x:29:hoge,hoge2
*複数のユーザーを記述する場合は、カンマで区切ります。

コマンドを利用する場合は、
#adduser hoge audio

Debianでのユーザ管理 より

adduser を使うのか。adduser ユーザ名 グループ名、みたいな。…また忘れそうだな。>自分。

#2 [windows][cg_tools] _XPM画像読み込み Susie Plug-in

grub の splash image が .xpm なので、表示確認ができる plug-in が欲しいなと。というわけで、ありがたや。

_XPM inport filter Plug-in(32bit) :

_XPM 形式 Susie32 Plug-in
_(via Susieプラグインのこと)

何種類かあったのか。機能・実装状態がよくわからん…。

#3 [linux][ubuntu] _xpenguins-applet をパネルに追加するとパネルが凍りつく

xpenguins なるものがあると知り、子供たちが喜ぶかなとインストールしたものの。ターミナルから起動するほうはスンナリ動くものの、gnomeアプレット版は gnomeパネル自体を無反応にしてしまう。ハマった。

バグ報告のやり取りを見てると、どうも1年前からバグが取れてないっぽい。gnome で全く何の操作もできなくなる危険な存在。復旧のさせ方も素人にはわからん。どうすりゃいいんだ。あちらの方々も、「ヤバイだろコレは」「パッケージから外せよ」と言ってるようにも見えるが、自分もそれに賛同であります。

_GNOMEフレームワーク - Wikibooks :

ps auxw | grep xpenguins-applet して kill PID だの、killall gnome-panel だのしなきゃいけないらしい。

Ctrl+Alt+F1 〜 F6 を押すとテキストオンリーの仮想コンソールなるものが開くから、そこからログインしてゴチャゴチャ作業。といきたいのだが、なんかカーソルの位置とか文字表示とか変。>仮想コンソール。結局、Windows から putty で ssh 使ってログインして作業。

#4 [linux][ubuntu] _PrelinkHowTo - Prelinkを使って高速化するには

_prelink の効果を測定する
_プログラムの起動時間を短縮するには

こんなものがあるのか。一応導入。
sudo aptitude install prelink
sudo vi /etc/default/prelink
PRELINKING=unknown
↓
PRELINKING=yes
sudo /etc/cron.daily/prelink

Ubuntu 6.10 は /etc/openoffice/settings.debconf が存在してないような。 :

OpenOffice に対して利用するにはどうすればいいんだ?

_Bug#207906: openoffice.org-debian-files: /etc/openoffice/settings.debconf need to be manually created
_Bug#207912: openoffice.org-debian-files: /usr/bin/oooprelink should be /usr/sbin/oooprelink ?
_Bug#207916: openoffice.org-bin: Prelinking, don't create /etc/openoffice/settings.debconf

3〜4年前に、「/etc/openoffice/settings.debconf が無いんだけどどうすりゃいいんだ」という話があったみたいではある。結局どうなったんだろう。英語が判らんから、対処法がわからん。

oooprelink も無いみたい。どうすりゃええのん? ググっても、何の情報も出てこない。

_I notice that the latest Ooo2 beta 113 has similar settings to this by default :

最新版は既に同様の設定になってる、ということだろうか。それでもあの遅さなのか。

まあ、Windows版も、起動時間がむちゃくちゃかかるしなぁ…。双方同じぐらいの時間だったりするのかもしれんか。

#5 [linux][ubuntu][debian] debian系で仮想コンソールの数を減らすにはどうすればいいんだらう

redhat 系は /etc/inittab が関係してるらしいが…。debian 系は場所が違うっぽい。/etc/inittab が存在しないし。

_Ubuntu Linux「Edgy Eft」がリリースへ--高速起動処理を実現 :

Upstartは、元来UNIX System V用に作成され長い年月を積み重ねてきたソフトウェア「init」に変わるもので、起動時間を「大きく高速化する」ものだとCanonicalは説明している。

Ubuntu Linux「Edgy Eft」がリリースへ--高速起動処理を実現 - CNET Japan より


upstartが萌え萌えだ。手動じゃ使わないだろけど。inittabがなくなっててびっくり、裏でそんなことなってたのか。起動が速いのかどーかはわかんないけど、萌えは重要だ。

2006年12月 より


あー。それで inittab が無かったのか。> Ubuntu 6.10。

_ReplacementInit - Ubuntu Wiki :

眺めてみたが、仮想コンソール数を減らすにはどうしたらいいのか、やっぱり判らない。

_Bug #61539 in upstart (Ubuntu): “/etc/inittab (esp. ttys) not migrated to upstart jobs” :

/etc/default/console-setup を編集しろ、と書いてあるように見える。
# Setup these consoles.  Most people do not need to change this.
# ACTIVE_CONSOLES="/dev/tty[1-6]"
ACTIVE_CONSOLES="/dev/tty[1-4]"
と修正。また、/etc/event.d/tty* の中も覗け、とある。start on と書いてある行をコメントアウトしろ、とのこと。例えば /etc/event.d/tty5 なら、
# tty5 - getty
#
# This service maintains a getty on tty5 from the point the system is
# started until it is shut down again.

# start on runlevel-2
# start on runlevel-3
stop on runlevel-4
stop on runlevel-5

stop on shutdown

respawn /sbin/getty 38400 tty5
こんな感じなのかな。

再起動してみた。ps auxw | grep tty。

tty1〜4しか出てこない。無効になったみたいだ。

#6 [nitijyou] カテゴリに ubuntu を増やした

linux というカテゴリでは大雑把過ぎる気がしてきたので。

以前の日記にも追加。

#7 [ubuntu] gs.defoma なるものがエラーを出すのだが

ttf-mikachan をインストールしようとしたら、
 Use of uninitialized value in print at /var/lib/defoma/scripts/gs.defoma line 108.
と言ってくる。どうすりゃいいのだ。

_Bug #6614 in gs-common (Ubuntu): “Use of uninitialized value in print at /var/lib/defoma/scripts/gs.defoma line 108” :

「FFFF を FF にすりゃ出なくなるぞ」「ソレやっちゃダメ!」という会話なのかな。gs-common なるパッケージに問題がある、ということらしいが…。cmap-adobe-* なるパッケージを入れると状況が変わる、と書いてあるようにも見えるが、aptitude reinstall しても変わってるようには見えず。

全然関係ないけど X 起動時に「んな FontPath はねえよ」と言われる。 :

/var/log/Xorg.0.log を見ると警告が。…フォントが入ってないのかな。

 /usr/share/fonts/X11/
の中に色々入ってるみたいなのだけど。/etc/X11/xorg.conf の FontPath の指定は、
 /usr/share/X11/fonts/
となっていて。何かやらなきゃいけないことがあるのかしら。

よくわからんので、/etc/X11/xorg.conf の FontPath を書き換えてしまった。
Section "Files"
        FontPath        "/usr/share/X11/fonts/misc"
#       FontPath        "/usr/share/X11/fonts/cyrillic"
#       FontPath        "/usr/share/X11/fonts/100dpi/:unscaled"
#       FontPath        "/usr/share/X11/fonts/75dpi/:unscaled"
#       FontPath        "/usr/share/X11/fonts/Type1"
#       FontPath        "/usr/share/X11/fonts/100dpi"
#       FontPath        "/usr/share/X11/fonts/75dpi"

        FontPath        "/usr/share/fonts/X11/misc"
#       FontPath        "/usr/share/fonts/X11/cyrillic"
        FontPath        "/usr/share/fonts/X11/100dpi/:unscaled"
        FontPath        "/usr/share/fonts/X11/75dpi/:unscaled"
        FontPath        "/usr/share/fonts/X11/Type1"
        FontPath        "/usr/share/fonts/X11/100dpi"
        FontPath        "/usr/share/fonts/X11/75dpi"
        # path to defoma fonts
        FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection
いいのかしら。xfontsel で出てくるみたいだから、まあいいのかもしれんけど。

_ふぉんと! よくわからない :

mkfontdir:*.pcf, *.snf, *.bdf に対応。

Debian初心者の足跡 より

なるほど。fonts.dir というのを作っておかないとマズイらしい。ということで、fonts.dir がなさそうなディレクトリでは、sudo mkfontdir を実行。

mkfontscale ってのもあって、fonts.scale なるものを作るらしいのだが、何の情報なんだろう…。

_The X Window User HOWTO: フォントと色について :

よーわからんが。メモ。

#8 [ubuntu] 初代RADEON用に xorg.conf を弄ったり

自動認識だと driver "ati" が指定されるけど、なんだか "radeon" というドライバもあるようで。せっかくだからそっちを指定。中身同じだったりするのかもしれんけど。

とりあえず、/etc/X11/xorg.conf で修正したところをメモ。

dbe とか record とかなかったので追加してみた。それぞれが何なのかはわからんけど。どこかに日本語訳された解説がないものか。そもそも英文の解説すら見つけられず。
Section "Module"
        Load    "i2c"
        Load    "bitmap"
        Load    "ddc"
        Load    "dri"
        Load    "glx"
        Load    "extmod"
        Load    "freetype"
        Load    "int10"
        Load    "type1"
        Load    "vbe"
        Load    "dbe"           # add
        Load    "record"        # add
        Load    "xtrap"         # add
EndSection

シリアル接続のタブレット WACOM UD-0608-R をつけてるので、そのへんの指定。USB接続なら、Option "Device" "/dev/input/wacom" に。シリアル接続なら、Option "Device" "/dev/ttyS0" になるらしい。たぶん。
# Serial tablet

Section "InputDevice"
        Driver        "wacom"
        Identifier    "stylus"
        Option        "Device"  "/dev/ttyS0"
        Option        "Type"    "stylus"
EndSection

Section "InputDevice"
        Driver        "wacom"
        Identifier    "eraser"
        Option        "Device"  "/dev/ttyS0"
        Option        "Type"    "eraser"
EndSection

Section "InputDevice"
        Driver        "wacom"
        Identifier    "cursor"
        Option        "Device"  "/dev/ttyS0"
        Option        "Type"    "cursor"
EndSection


# USB tablet

# Section "InputDevice"
#   Driver        "wacom"
#   Identifier    "stylus"
#   Option        "Device"        "/dev/input/wacom"
#   Option        "Type"          "stylus"
#   Option        "ForceDevice"   "ISDV4"               # Tablet PC ONLY
# EndSection
#
# Section "InputDevice"
#   Driver        "wacom"
#   Identifier    "eraser"
#   Option        "Device"        "/dev/input/wacom"
#   Option        "Type"          "eraser"
#   Option        "ForceDevice"   "ISDV4"               # Tablet PC ONLY
# EndSection
#
# Section "InputDevice"
#   Driver        "wacom"
#   Identifier    "cursor"
#   Option        "Device"        "/dev/input/wacom"
#   Option        "Type"          "cursor"
#   Option        "ForceDevice"   "ISDV4"               # Tablet PC ONLY
# EndSection

タブレット関係続き。デフォルトでは SendCoreEvents なる指定がされてるのだけど。あちこちのドキュメントを眺めると、 AlwaysCore を指定してる場合がほとんどなので、ソレを指定。
Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        InputDevice     "Generic Keyboard"
        InputDevice     "Configured Mouse"

        InputDevice     "stylus" "AlwaysCore"
        InputDevice     "cursor" "AlwaysCore"
        InputDevice     "eraser" "AlwaysCore"

        # InputDevice     "stylus" "SendCoreEvents"
        # InputDevice     "cursor" "SendCoreEvents"
        # InputDevice     "eraser" "SendCoreEvents"

#       Option  "AIGLX" "true"
#       Option  "AIGLX" "false"
EndSection
AIGLX なるものを "ServerLayout" セクション?で指定すると、glxinfo の結果で direct rendering: No になっちゃうみたいなので、それについてはコメントアウトした。

タブレットを動かすには、パッケージのインストールも必要。
sudo aptitude install xserver-xorg-input-wacom wacom-tools

beryl を動かしたいなら、下の指定も入れるらしい。Option "Composite" "Enable" は見かけるが、RENDER ってオプションも見かけたので試してみたり。
# AIGLX add
Section "Extensions"
        Option "Composite" "Enable"
        Option "RENDER" "Enable"
EndSection

#Section "ServerFlags"
#        Option "AIGLX" "off"
#EndSection
AIGLX が上手く動かないときは、ServerFlags セクション?中で無効にしろ、という話も見かけたので、コメントの形でメモしておいた。

ビデオカードのドライバ指定部分? なのかな。ati → radeon にしてみた。それと、AGPMode その他を指定したり。最初のうちは色々指定してたのだけど、gnomeのスクリーンセーバーを動かすと描画がおかしくなるものがあったので、結局ほとんどコメントアウト。よく判らず色々指定するより、最低限の指定にとどめたほうがヨサゲらしい。
Section "Device"
        Identifier      "ATI Technologies, Inc. Radeon R100 QD [Radeon 7200]"
#       Driver          "ati"
        Driver          "radeon"
        BusID           "PCI:1:0:0"

        # add
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional

        Option          "XAANoOffscreenPixmaps"
        # Option        "XaaNoOffscreenPixmaps" "false"

        Option     "AGPMode"            "2"     # <i>
        Option     "AGPSize"            "64"    # <i>
#       Option     "RingSize"           "8"     # <i>
#       Option     "BufferSize"         "2"     # <i>

#       Option     "DynamicClocks"      "on"    # [<bool>]
#       Option     "EnablePageFlip"     "true"  # [<bool>]
#       Option     "EnableDepthMoves"   "true"  # [<bool>]

#       Option     "BackingStore"       "true"
#       Option     "ColorTiling"        "on"

#       Option     "RenderAccel"        "true"  # [<bool>]
#       Option     "DRI"                "true"

#       Option     "UseFBDev"           "true"
#       Option     "AccelMethod"        "EXA"

#       Option     "DPMS"
#       Option     "AGPFastWrite"       "on"    # [<bool>]

        #Option     "NoAccel"               # [<bool>]
        #Option     "SWcursor"              # [<bool>]
        #Option     "Dac6Bit"               # [<bool>]
        #Option     "Dac8Bit"               # [<bool>]
        #Option     "BusType"               # [<str>]
        #Option     "CPPIOMode"             # [<bool>]
        #Option     "CPusecTimeout"         # <i>
        #Option     "GARTSize"              # <i>
        #Option     "NoBackBuffer"          # [<bool>]
        #Option     "DRIReinit"             # [<bool>]
        #Option     "PanelOff"              # [<bool>]
        #Option     "DDCMode"               # [<bool>]
        #Option     "MonitorLayout"         # [<str>]
        #Option     "IgnoreEDID"            # [<bool>]
        #Option     "UseFBDev"              # [<bool>]
        #Option     "VideoKey"              # <i>
        #Option     "MergedFB"              # [<bool>]
        #Option     "CRT2HSync"             # [<str>]
        #Option     "CRT2VRefresh"          # [<str>]
        #Option     "CRT2Position"          # [<str>]
        #Option     "MetaModes"             # [<str>]
        #Option     "MergedDPI"             # [<str>]
        #Option     "NoMergedXinerama"      # [<bool>]
        #Option     "MergedXineramaCRT2IsScreen0"   # [<bool>]
        #Option     "DisplayPriority"       # [<str>]
        #Option     "PanelSize"             # [<str>]
        #Option     "ForceMinDotClock"      # <freq>
        #Option     "SubPixelOrder"         # [<str>]
        #Option     "ShowCache"             # [<bool>]
        #Option     "VGAAccess"             # [<bool>]
        #Option     "LVDSProbePLL"          # [<bool>]
        #Option     "ReverseDDC"            # [<bool>]
        #Option     "BIOSHotkeys"           # [<bool>]
        #Option     "passwordFile"         "/root/.vnc/passwd
EndSection
たくさん指定できるようだけど、何がなんだかさっぱり。

なんだか画面の表示がおかしくなる。 :

頻繁に別ユーザでログインすると画面表示が崩れる。うーん。

FSB75MHz で動かしてるせいだろうか。FSB66MHzにした。xorg.conf も書き換え。driver "ati" にしたり、AGP関連の指定を全部コメントアウトしたり、RENDER オプションをコメントアウトしたり。

ログを見たところ、driver "ati" を指定した場合も、radeon なるサブモジュールが呼ばれてる模様。やっぱり中身は同じだったか…。

AGPFastWrite が disabled になってるな…。また、AGP mode についてもログには情報が残ってない。たぶん 1x mode なんだろう。まあ、それで安定してくれればいいのだけど。

#9 [ubuntu] _DesktopなLinuxの設定とか FireFoxで"bタグ"を太字で強調させる その2

なんてこった。Linux 版 Firefox は、まだ太字が出ないのか…。

メモさせてもらおう。/etc/fonts/fonts.conf をバックアップしてから、修正。
<match target="font">
  <!-- check to see if the font is just regular -->
  <test name="weight" compare="less_eq">
    <const>medium</const>
  </test>
  <!-- check to see if the pattern requests bold -->
  <test target="pattern" name="weight" compare="more">
    <const>medium</const>
  </test>
  <!-- set the embolden flag -->
  <edit name="embolden" mode="assign">
    <bool>true</bool>
  </edit>
</match>
【変更箇所】
482行目の
<int>100</int>

<const>medium</const>
~に

485行目の<test target="pattern" name="weight" compare="more_ep">

<test target="pattern" name="weight" compare="more">

486行目の<int>200</int>を
<const>medium</const>

DesktopなLinuxの設定とか FireFoxで"bタグ"を太字で強調させる その2 より

_「このファイルは編集するな、するならlocal.confにしろ」とのお達しが :

しまった。ということで /etc/fonts/local.conf を作成・編集。/etc/font/fonts.conf は元に戻した。

#10 [ubuntu] _edgyでfstabの中身が変わっていた

クリーンインストールしたedgy環境の /etc/fstab をのぞくと、ルートファイルシステムやスワップのマウント指定行が、/dev/hda1のような表示ではなく、UUID=〜のような形式になっている。mountコマンドのマニュアルを見ると、デバイス指定は今までおなじみの/dev/hd* のような形式以外にも、実はUUID=〜の形式でも指定できるようになっていることがわかる。

gmaxのてけとうなlab. - edgyでfstabの中身が変わっていた より

* upstartとは直接関係ない
* ハードウェアの構成変更(たとえばHDDが換装されてhda->hdcに移った)に対応できる
* 戻したいなら以前の形式に戻すことも出来る
ということらしい。今までhdaでブートさせていたものを、hddに移してなおかつそこからブートさせたいと思った場合は、fstabを書き換えないといけなかったのだけど、この方法だとそれが不要になるということか。

gmaxのてけとうなlab. - edgyでfstabの中身が変わっていた より

fstab を編集したときに謎だったけど。そういうことだったのか。ということはできるだけ UUID で書いておいたほうがいいのだな。

_増設した HDDを交換したら起動しなくなった :

/etc/fstab で UUID= 指定されている為。/dev/hdb1 とかに書き換えて OK。UUIDは Ubuntuの GNOMEのメニューの「システム」→「システム管理」→「デバイスマネージャ」で、該当ドライブの Volumeの「詳細(V)」の「volume.uuid」に書いてある。

Yuki's Linux memo / Linuxメモ Ubuntu 6.10 より

なぬ。かえってマズイ場合もあるのか。

まあ、一応 UUID とやらで指定しておくか…。

/etc/fstab の該当部分、FAT32領域のマウント指定はこんな感じに。
# /dev/hda4
UUID=45CF-B548  /mnt/fat32    vfat  rw,iocharset=utf8,umask=000,noatime,gid=1001  0    0
umask=000 で誰でも読み書きできる状態になる…らしい。アクセス時刻を記録しないように noatime をつけたけど、FAT32 だから関係ないのかな。また、ユーザの共有フォルダアクセス用に作成したグループIDを指定。

user,noauto をつけて、ユーザが使いたいときだけマウントするほうがいいのだろうか。

#11 [zatta] Linuxはまだまだなのかもしれんなぁ

これ、自分のような社会的落伍者が作業してるから、時間的にもアレコレできるけど。フツーにまっとうな仕事をしてる人だったら、作業時間自体を確保できないんじゃなかろうか。…まあ、そのへん、Windows もそういうところがあるかもしれんのだけど、まだMS製品は設定に関して楽なところもありそうな。フォントの bold がどうとかでハマったりしないし。そう考えると、Linux はまだまだ発展途上なのかもしれないなと。

もっとも、以前 debian を入れたときに比べたら、随分改良されている印象。debian のときは、bold表示させる方法すら、結局判らなかったし…。自分のような素人でも使えるぐらいに、ここまで修正・改良してくれた方々には、足を向けて寝られないであります。

とはいえ、「金が惜しいなら苦労しろ。苦労が嫌なら金払え」をちょっと痛感してるここ数日。

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

#1 [anime] _NO SMOKING | ロボットアニメオープニング特集

思わず全部鑑賞してしまった。懐かしい。ゲッターロボのOPとかスゴイね。画面の中で止まらないというか。延々と動き続ける。ゴッドマーズのOPとか、ゴーショーグンのOPとか、ホント懐かしい。 _(via 勝手に ぶくまく♪ 2006/02/14)

#2 [pc] _ITmedia +D PCUPdate:きょうは、イマドキの1万円グラフィックスカードを比べてみた (1/2)

GeForce 7300 なんてのが出てきてたのか。GeForce 6200 あたりを置き換える製品群、かしら。よくわからんけど。6200 に興味があったので、ちと気になる製品。 _(via あんてな 201 - 300)

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

#1 [pc] _迫りくるコンシューマPCの“2006年問題”〜PCが抱える地上デジタル対応への課題

2006年から、PCにTV機能 *1 がつけられなくなりますよ、法律で決まってるのです、という話。らしい。たぶん。海外と違って日本のユーザは何も言わないから、こういうことになりました、という読み方でいいのかしら。
*1: TV機能と言っても、デジタルTV機能、らしいけど。

この記事へのツッコミ

Re: 迫りくるコンシューマPCの“2006年問題”〜PCが抱える地上デジタル対応への課題 by けいと    2005/02/17 21:48
まったく個人的に…
いや、むしろ私怨と言うぐらいなもんですが…

テレビ業界はパソコンとかインターネットとかとにかくオープンな世界が嫌い。

私はこれで片付けてます。
Re: 迫りくるコンシューマPCの“2006年問題”〜PCが抱える地上デジタル対応への課題 by mieki256    2005/02/19 00:57
> テレビ業界はパソコンとかインターネットとか〜嫌い。

なるほど。
抑圧できるチャンスをいつでも虎視眈々と狙ってる、ということで…
ユーザの反応云々に関係なく、この流れも必然、ということかもですなぁ…
Re: 迫りくるコンシューマPCの“2006年問題”〜PCが抱える地上デジタル対応への課題 by けいと    2005/02/19 14:58
さらに「情報統制」「世論誘導」と言うようなものが重要だと考える政財界は
いまの少数中央集権大マスコミ的な構造が便利と考えるでしょう。

インターネットみたいにみんなが好き勝手に情報発信されては
政財界の思い描く方向に世論が動いてくれないですからねぇ。

ライブドアの件でも案の定、政界や財界からいちゃもんがつき始めたし。

政財界が一体になって、
法律を変えてでもマスコミの護送船団方式を守りに走るでしょう。
そして、マスコミで飯を食っている芸能界も利害が一致しますから
これに乗ってくるでしょう。
DVDや輸入CDと同じ道を辿るんでしょうね、きっと。

パソコンはD端子出力をキャプるやつ
http://www.iodata.jp/prod/multimedia/tv/2004/gv-d1vr/index.htm
がでてきてマニア層は問題回避、
芸能界的にはパソコン悪玉論が続く、と私は読みますが。
Re: 迫りくるコンシューマPCの“2006年問題”〜PCが抱える地上デジタル対応への課題 by mieki256    2005/02/20 10:35
> D端子出力をキャプるやつ

お。こんな製品があるのですか。なら、それほど問題にはならない…のかな。

結局、件の話で困るのって、
「パソコンでTVも見れます」と宣伝してるPCメーカだけ、かしら。
家電業界にしてみれば、デジタル地上波放送に対して、
HDD録画機・DVD録画機で対応したほうが、
面倒くさくない・顧客確保も用意なわけで…
2006年以降、TV視聴機能つきPCが出てこないとしても、
実はたいして問題じゃないのかもしれないなぁ。

#2 [movie] _「呪怨」リメーク版、米興行収入113億円

先日書いたCM云々の話。タイトルは、『呪魂』じゃなくて、『呪怨』だったのか。…自分、CM映像が怖くて、タイトルすら満足に覚えてませんでしたよ。<ソレ、CMの意味が無いんじゃ… (;´Д`)

いたずら心云々をかなり意識してる監督さんらしい。作り手として、そういう気持ち ―― 映像作品は客を驚かせてナンボ、みたいな意識を持つことは大事なこと、とは思うわけで。で、この監督さんの場合、驚かせる方向が、ホラーの方向に行ったということなんだろうな。…ひょっとすると、CMを深夜に流そうと言い出したのも、監督さんだったりするのかしら。 *1 …ということは、オイラが呪うべき相手は監督さんなのだな。呪ってやる。丑の刻に藁人形を5寸釘で打ちつけてやる。

てのは冗談だけど。…アレ? そもそも、丑の刻だったっけ?

_藁人形と丑の刻参り :

丑の刻参り=呪い、というわけではないらしい。
丑年丑月丑日丑刻に降臨されたと伝える古事によるもので
どこの国でも、数字が揃うと何かが起きる、と考えるのかもしれんなぁ。

_商品案内 :

売ってるのか! セットで売ってるのか! ビックリ。ネタページかしら。いや、 _意外と需要があるのかも。 いいところに目をつけた商売かもしれない。

ふと思った :

ホラー映画の監督に対してドッキリカメラをやってみたら、どうなるだろう。その手のホラー映画と似たような状況を作って、隠しカメラでその反応を窺ってみる。とか。仕事柄、平然としてるだろうか。それとも、意外とオドオドするさまを見せてくれるだろうか。ちょっと気になる。いや、たぶんバレるだろうけど。ターゲットであるはずの監督から、「カット! ダメダメそんなんじゃ!」とかダメだしされたりして(笑) …ところが。ソレはスタッフが仕掛けたドッキリではなくて。監督がドッキリカメラだと思い込んでいたものは、本物の…。ってC級の展開ですな。

*1: 監督さんがそこまで口出しできるとも思えないけど。

#3 [pc] Nero Express、ダメなんじゃないか

起動しなくなってるWinXPのパーティションを、放置しているのがなんだかもったいなくなってきたので、DVD-Rに焼いて、パーティションはフォーマットしてしまおうかと思い立った。

ということで、作業。別のパーティションに、ファイルをコピー。コピーしたそれらファイルを、Nero Express でDVD-Rに書き込み…

…しようとしたら、Nero Express が固まる。ファイルをリストに追加する段階で、「応答なし」になってしまう。単に時間がかかってるだけかと思い、しばらく待ってみたが、20分たっても処理が帰ってこなかった。

ダメなんじゃないか、このアプリ。それとも、チップセット *1 の問題なのかしら。いや、DVD-Rドライブに書き込む際に問題が出るならともかく、ファイルをリストに追加する段階では、チップセットは関係なさそうな気も。一体内部でどんな処理をしてるのだろう。ファイル名が、規格に合うか合わないかの判断でコケてる、とか?

それとも、ファイル数が多すぎるとか? …多すぎるなら、その旨メッセージを表示して警告すればいいだろうに。>Nero Express。

*1: ウチのは 440BX。

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

#1 [anime] 人間になりたかったロボット

アトム。なんだかセンチメンタルな話。途中の展開はともかく、ええ話や。ラストシーンも良かった。二人のその後をつい想像してしまったり。

#2 [anime] 次回作にもヤツデンワニが当たり前のように出没していたら面白いのだけどそれは無理だろうな

アバレ。最終回。ヤツデンワニが戦隊側に来たら _めっさ つまらないキャラになったのは何故だろう。

最終回を見て思ったけど、視聴者サービスも度が過ぎると作品を台無しにするような気がした。あれじゃ何の為にキラーを星にしたのかわからない。…そもそも彼は何も残していかなかったな。何かを残していれば、彼の思い出を懐かしむ場面も挿入しやすかっただろうけど。であれば、ああいう形で登場させるしかないか。

星になる前に何かを残すなら、何を残そうか :

ハーモニカ。 *1 オカリナ。 *2 オルゴール。 *3 ペンダント。 *4 銃。 *5 種。 *6 …種なら、時間が経てば木や森になって、皆が集えたりするのでヨサゲ。…楽器系もいい。音楽を流せる。単音で始まりつつ、次第にオーケストラ曲になってシーンを盛り上げるだろう。少なくとも鍋で〆るよりはヨサゲ。

アバレで残すなら、何を残そうか :

イエローのお腹に子供を残したり。ブラック大アバレ。キラーは、レッドのお腹にメスを残しますよ。

*1: スピカ。
*2: ハーロック。
*3: ナージャ。
*4: 999。
*5: 999。
*6: ナウシカ。

#3 [anime] 撮影現場で見てる分にはきっと凄いのだろうけど映像になった途端に今一つになるであろうOP

ライダー剣。どうもあのOPはしっくりこない。部分的にはカッコイイのですけど。せめて画と音が合ってれば。

音に合わせて画が変わるのは今時流行らないのだろうか :

実写畑の人達の間では、「うわ。画と音が合ってるよ。ダッセー。ゲラゲラ」なんて風潮だったりして。

視聴者作のOPを集めるイベントをやれないだろうか :

MADが流行ってるらしいので、せっかくだから(?)。賞品(?)は、本放送で流す事。ダメか。スタッフの手間隙や、金がかかるわりには、地味だし、質も数も期待できないし、間違って下手に凄いのがきちゃうとスタッフの立場が無いしで。実現の可能性はゼロ。

外見でキャラの区別がつきません :

Pの趣味丸出しで選んだら似たヤツばかりになったとか、スタントマンが一人しか用意できなくて似た髪形を選ぶしかなかったとか、そんなバカ妄想を。それはともかく、現状では判り難くて困る。戦隊モノよろしく服の色を利用したり、サングラス、メガネ、アクセサリーを駆使する等して、もう少しなんとかできないか。個人的には一匹坊主にしてもいいぐらい。ダヂバナさんなんてどうよ。髪がどんどん抜けてくの。ヤバ過ぎですか。じゃあバランス取る為にオンドゥル星の王子様は髪がどんどん伸びてく事にしよう。シリーズ初、ワンレンライダー誕生。男なのに。変身後のスーツアクターさんが行うキャラ分けアクションとして髪をかきあげる仕草を。555と違うからその手のアクションは要らないか。そういう問題じゃない。

滑舌悪すぎ :

「封印を解いた人間をフヘったとか?」「からシまは、あんなギュニンゲバツクバ!」…今なんていったの?(小田和正風に) 何度かビデオを巻き戻して聞き直してみたけど判りませんでした。伝説を作れと冗談で言ったりもしたけど、やっぱりオンドゥル語の放置はマズイ。ここは地球なんだから。このままオンドゥル語を放置して、本気で伝説にしちゃうつもりなら、いっそ全編通してテロップ出してください。…それとも私の耳が本格的におかしくなってきたのだろうか。私以外の人間はちゃんと聞き取れているのだろうか。不安になってきた。ライダーと言えば怖い怪人が出てきて子供達をドキドキさせる番組なわけですが、まさかおじさんの聴力低下についてまでドキドキさせてくれる画期的な番組だったとはこのリハクの目をもってしても以下略。

キャラの区別がつかない事も、滑舌が悪い事も、脚本や演出に余計な負担をかけませんか :

脚本家にとっては、少しでも難しいセリフは排除して、幼児でも喋れるセリフ回しを意識しないといけないし。 *1 カメラマンや演出家にとっては、奇抜な構図は使えないし、パカパカと短時間のうちにカットを変えるわけにもいかない。 *2 そもそも _ロングショット すら禁止されたようなもの。映像のABCすら使えないなんて緊急事態ですよ。オーディションの時に何をチェックするかは非常に重要なのですね。彼奴等を選んだ人はABCを知ってますか。ABCは知っててもそれだけじゃ困ります。工夫次第でどうにでもなるとは思いつつ。現状放置はマズイよなぁ。役者の顔を視聴者が覚えるまで待つというのは今回ちょっと厳しい予感。覚えてもダメだろアレ。

STAR WARS、ボイスラッガー、メタルダー :

ダイヤライダーの腕に、怪人の電撃がヒットした際、破片が腕の形に見えたので、「うおお! 番組は始まったばかりなのに、いきなり腕を千切るのか!? 凄いぞ!!」と盛り上がってたら腕がちゃんとついてたんでガックリきました。や。普通は千切れるなんて思わないよな。病んでるな、俺。ちなみに、千切れても腕は再生しますよ。ライダーだから。AKIRAの鉄雄状態。膨れ上がる体を必死に抑え込んでハァハァするダヂバナさん燃え。ありえませんね。うん。

*1: 脚本家が、執筆作業中に自分の脚本を絶えず音読しながら「これは喋りづらいな…」と修正したり。ワープロの横に、五十音表のあちこちにバツがついたものを張っておいて、横目でチラチラ見ながらキーを打ってたり。もしかするとワープロのキーそのものをいくつか抜いちゃう猛者が居たり。想像するとなんだか切なくなってきます。…幼児向け番組では実際やったりする人も居るのかなぁ。
*2: ますます視聴者が混乱してしまうから。

この記事へのツッコミ

Re: 撮影現場で見てる分にはきっと凄いのだろうけど映像になった途端に今一つになるであろうOP by 名無しさん    2004/02/15 22:55
>全編通してテロップ出してください
ソレダ!と一瞬思いましたが、グロンギ語の時も
スーパー入れなかったんで、
主人公が喋る時だけ…メタルダーの様に
変身後は声優に当ててもらうってのはどうでしょうか?
(だめそう。)
主人公は完全にグロンギ語や、アマゾンみたく日本語以外で
喋って、他のキャラは何も無かったように普通に受け答え
するってのはシュールでいいかな?と一瞬思いましたが、
今でも十分そんな感じですね…。
Re: 撮影現場で見てる分にはきっと凄いのだろうけど映像になった途端に今一つになるであろうOP by mieki256    2004/02/15 23:31
> 主人公が喋る時だけ…メタルダーの様に
> 変身後は声優に当ててもらうってのはどうでしょうか?

ソレダ! (・∀・)!
いや、マジにそれが一番スマートな解決策のように思います。
特撮番組ではよくある事ですし。

メタルダーがそういうスタイルだったとは知りませんでした。
当時はあまりそのへんを意識して見てなかったんだな… >自分。

> シュールでいいかな?と一瞬思いましたが今でも十分そんな感じですね…。

うわあ。
Re: 撮影現場で見てる分にはきっと凄いのだろうけど映像になった途端に今一つになるであろうOP by ひばしら    2004/02/16 16:47
↑あ、名無しさんにしてしまいまいました。

「はっきり喋らないキャラがいる」
「聞きにくい喋り方をするキャラ」
って事にリアルさ加減を見出した演出だった。
(現実でも確かに発音がはっきりした人だけじゃないで
すけど…私も発音、悪いし)
とか後に説明が有ったら恐い感じですね…。嫌杉。

メタルダーは何回かは流星の中の人が当てていたように
記憶してます。最初の頃。
Re: 撮影現場で見てる分にはきっと凄いのだろうけど映像になった途端に今一つになるであろうOP by mieki256    2004/02/18 01:22
> って事にリアルさ加減を見出した演出だった。

リアルさを追求するなら、
「え? 今なんつった?」とか、
「何言ってんだかわかんねーんだよ!ちゃんと喋れよ!」とか、
「おいおい、オンドゥルってなんだよ(笑)お前どこの国の王子様?」
といったセリフも追加しないと。
でも、そこまで入ったら、なんだかちょっと凄いな…

#4 [zatta] _なまはげになることができるのは〜男子としてきた。

世の中の先進的な婦人団体の方々はどうしてこういうところにねじ込んでいかないのだろうなと不思議に思ったり。男ばかり化け物にさせるなんて男女不平等です。女性にも化け物になる権利を与えるべきです。…ハッ。そうか。女性は元々(只今部屋になまはげが侵入してきて防戦に忙しい状態になりましたので本日の放送はこれで終了させていただきます)とここまで書いたところでこの展開はどこかで読んだ気が。どこで読んだのだろう。思い出せません。耳は怪しいし、記憶は怪しいしで、これじゃリアル・ダヂバナさんだ。もしくは、ブレイドはブレイドでもテッカマンのほう。…テッカマンのほうは「ブレード」でした。ますます記憶の怪しさが。あー。

#5 [zatta] 病気への無理解

そのあたりの知識って生きていく上でも必要になる知識だろうけど、そもそも知る機会が充分に用意されてるとも思えないし、最初から色眼鏡で見てしまいがちなので正確に知る事も難しくなるしで。詳しく知らなくても、せめて概要だけでも知ってれば充分な場面が多いはずだけど、それすら叶わないとなると。難しい問題。

#6 [nitijyou] なんだか頭がおかしくなってきました

夕食後、急に調子が悪くなってきました。頭の中に靄がかかってる感じで、新聞を読んでも何が書いてあるのか理解できないし、TVニュースを見ても何を喋ってるのか理解できない状態です。単語の一つ一つは判るけど、文章全体としてはどういうことなのか理解できない。…どうしたんだ、俺。これは何かの病気なのか。それとも疲れてるだけなのか。…とりあえず、寝てみます。

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

#1 モデムが来ないよ

モデムが来ない。昨日か今日、という話じゃなかったのか。これが噂の放置モードだろうか。


「千と千尋」がアカデミー賞候補なのはいいのだが、それらWebニュース記事に出ていた宮崎監督の顔写真までどことなく赤味が強いのは狙ってるのだろうか。

専用ソフトを使わないと2chが覗けなくなったらしい。NiftermとかNiftyManagerを思い出した。パソ通時代に逆戻りか。さらば2ch。お元気で。

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

#1 特に無し

今のところ、サーバ落ちてないな…
原因はなんだろうなぁ…

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

#1 GVとSusie

mki画像やpi画像を閲覧する必要性が。
そこで、VixやSusieを起動してみたんですが。
なぜか変な画像表示に。バグかな。
GVで見るとちゃんとしてるんだけど。

ついでに、GVを利用した画像形式の一括変換ツールを探したんですが。
ほとんど無いんですね。あってもシェアウェアで。
Susie Pluginを利用した一括変換ツールはたくさん見かけるんですけど。

親父さんから「メールに画像を添付したい」と質問が。
そこで、bmp→jpeg圧縮のやり方等を教えたんですが。
予想通り、jpeg圧縮の方法がわかったら今まで取り込んだ写真画像(bmp)を全部jpeg変換しようとしはじめて、それはちょっと待った、と。
この手の仕組み?を、どうすればわかりやすく伝えられるのか。
なんとも難しいです。

2000/02/14(月) [n年前の日記]

#1 (NoTitle)バイファムの体を作り...

バイファムの体を作り始めました。
が。
予想通り難航しております。つーか、腹のあたりの資料が無い事に今頃気がついた(爆) ダメじゃん。頼りになるのは不良クラスタ発生しまくりの上、接続ケーブルにノイズ載りまくりの脳内HDD上のデータだけ。
…コレ作るの止めようかな。もっと資料を揃えやすいものを作ったほうがいいかも。
というか、やっぱり時代はポリゴンギャルですか。CCさくらの(Hな)フィギュアモデルっぽいのでもやってみようかなー ( ̄ー ̄)ニヤリッ
いや、ハードル高そうなんでやりませんが <チョー弱気

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

#1 (NoTitle)土曜の夜、宇都宮の大...


土曜の夜、宇都宮の大学に通う妹から電話が。
三日後に提出する卒論作成のためにプリンタ(EPSON PM-670C)を購入し
98Canbeに接続したが印刷できない、助けてくれとの事。
電話で思いつく限りの指示を出すが状況改善せず。
急を要することなので、オイラがCanbe時代から使っていた、今は使ってないプリンタ
(CANON BJC-210J)を持っていくことにする。
親父さんの運転する車で、AM9:00出発。
高速を使ってAM11:00に宇都宮到着。
現場で色々試してみたがやはり症状は変わらない。
ドライバが必ず「HDの容量が足りない」とほざきやがる。
てやんでぇ、オイラが850MB→2GBに入れ替えて空き容量は800MBはあるんだ。
メモリだって(Canbeのくせして)96MBも載ってるんだぞ。ふざけるな。
仕方ないので持ってきたプリンタを接続。印刷成功。よしよし。
前々からヘボイヘボイと言っていたプリンタだが、
ここぞというときに役に立ったな、偉いぞBJC-210J。
立派に 最後 のお役目を果たせよ。
とりあえずPM-670Cは持ちかえって、色々調べてみることを約束。

妹の下宿の大家さんと話してたら、イイ娘がいるんだが婿にどうか、なんて話が。
ポロッと、今無職だということを漏らしてしまったら話を引っ込められた。チッ。

帰りは高速を使わず一般道をドライブ。
最近ドライブは好きなので、最初は楽しかったが、
4時間ぐらいかかってしまい、親父さんもオイラもちょっとクタクタ。

帰ってきてから、愚犬の散歩。
すると、犬の散歩をしていた女性とお知り合いになるというマンガのような出来事が!
…なんて話はどこかにないものか。チッ。

バカ犬と戻ってきてから、マシンの電源を入れる。
そのとき事件が!


以上、26 日分です。

過去ログ表示

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