記事一覧

プラグインがインストール済みかどうか調べる

名前とIDどちらでも検索可能な関数を里々、YAYA、華和梨で書いてみます。
(YAYAはそういった関数がテンプレートに用意されています)
戻り値はBOOL値です。

里々

# [b1]プラグイン名(1)[b1]プラグインID(1)[b1]プラグイン名(2)[b1]...[b1]プラグインID(n)[b1]というリストができます。
@installedplugin
(set,プラグインリスト,)(loop,プラグインリスト作成,0,(Rの数))
@プラグインリスト作成
(set,プラグインリスト,(call,プラグインリスト)(バイト値,1)(R(プラグインリスト作成カウンタ)))
@IsPluginExist
(count,(call,プラグインリスト),(バイト値,1)(A0)(バイト値,1))

#--■使い方■--#
*ラベル
(call,IsPluginExist,PlaylistMaker)#=> 0 or 1

YAYA

// 「はろーYAYAわーるど」yaya_tmpl_util.txtに記述済み
On_installedplugin : void
{
  _n = ARRAYSIZE(reference)
  AYATEMPLATE.installedplugin_name = IARRAY
  AYATEMPLATE.installedplugin_id = IARRAY

  for _i = 0 ; _i < _n ; _i++ {
    _a = RE_SPLIT(reference[_i],'[,\x1]')

    AYATEMPLATE.installedplugin_name ,= _a[0]
    AYATEMPLATE.installedplugin_id ,= _a[1]
  }
}

AYATEMPLATE.IsPluginExist
{
  if _argc == 0 {
    0
    return
  }

  if ASEARCH(_argv[0],AYATEMPLATE.installedplugin_id) >= 0 {
    1
    return
  }
  if ASEARCH(_argv[0],AYATEMPLATE.installedplugin_name) >= 0 {
    1
    return
  }
  0
}

//--■使い方■--//
foo
{
  AYATEMPLATE.IsPluginExist('PlaylistMaker')// => 0 or 1
}

華和梨

# ミドルウェアによって接頭辞の書き方などは異なる
resource.installedplugin : $(
  clear System.InstalledPlugin.Name;
  clear System.InstalledPlugin.ID;
  setstr @i 0;
  while $[ ${System.Request.Reference${@i}} != $(NULL) ] $(
    clear @a;
    split @a ${System.Request.Reference${@i}} $(chr 1);
    adddictstr System.InstalledPlugin.Name $@a[0];
    adddictstr System.InstalledPlugin.ID $@a[1];
    inc @i;
  );
)

=kis
function IsPluginExist $(
  if $[$[$(find System.InstalledPlugin.Name $@arg[1]) >= 0] || $[$(find System.InstalledPlugin.ID $@arg[1]) >= 0]] $(
    return 1;
  ) else $(
    return 0;
  );
);
=end

#--■使い方■--#
エントリ : $(IsPluginExist PlaylistMaker)#=> 0 or 1

SakuraScriptでインストールを実行する

LRさんのところでも以前触れられていた仕様のおさらいです。
GHOST自身が作成したghostやballoonをインストールすることもできます。
他のお勧めのGHOSTを紹介したい、でもいいですし、スタンプ帳などのPLUGINにせっかく対応したのでそれをインストールしたい場合などが考えられます。

仕様

\![execute,install,path,C:playlistmaker.nar]

ローカルでファイルへのpathを指定するとインストールを実行します。
相対パスの場合はSSP本体の実行ファイル基準だと思うのですが、私の環境では実行するとインストールに失敗してしまいました。絶対パスの方が確実そうです。

\![execute,install,url,http://home.384.jp/evidence/ghost/playlistmaker.nar,nar]
\![execute,install,url,http://home.384.jp/evidence/cgi-bin/wdp_diary.cgi?mode=rss,feed]

URLを指定するとアーカイブをDLしてインストールを実行します。
RSSの場合は自動でdescript.txtを作成してRSSセンサのインストールを実行します。
(最後の引数nar/feedは省略可)

「nar/zipアーカイブ」「RSSセンサ」をURL指定でインストールする場合の許可範囲

nar/zip
  • 自作のnar
  • 他の作者さんのnarでローカルから直にインストールの許可が明示されているもの

これなら大丈夫でしょう。
此処のサイトで配布しているnarファイルはご自由に直でインストールしてください。

上記に該当しない場合は

  1. 作者さんに直接許可をもらう
  2. ゴースト著作権意識についての質問「11.ゴーストアーカイブへの直リンク」が許可されているものをローカルから直接ダウンロードも許可されているものと解釈する
  3. 何かゴーストマネージャを使用してローカルから直接ダウンロードが可能な状態にあるnarファイルは作者さんがそれを容認・黙認しているものと解釈する

などが考えられるでしょうか。上に行くほど確実そうですね。

(此処のサイトで「11.ゴーストアーカイブへの直リンク」が不可になっていて矛盾を感じたので可に変更しました。09/04/06)

RSSセンサ

RSSを配信しているサイトでRSSセンサのインストールを容認しない人はいないでしょう…。

余談

PerlのCPANやPHPのPEARはサイトを訪れることなくコマンドラインから直接モジュールをインストールできて便利ですね。伺かでは何かゴーストマネージャがこれにあたるのでしょうか。
PLUGINとか公開している身としてはそういうのも直接ダウンロードできるようになれば便利かなと思います。
上記で紹介している通り、GHOSTでクライアントを作ろうと思えば作れますが、Webにそういうデータベースサービスが今のところ無いですね。

拍手レス(04/08)

>ローカルのアーカイブと直リンクはかなり違う気がしますが…
(一部引用させて頂きました)

ですよね。
私も直接作者さんに許可を得た方が良いと思います。
予めインストールする際のあり方について明示されていれば理想ですが、配布物そのものについての扱いについてはよく言及されるものの、配布物の入手の仕方についてまで言及されているものはなかなか見かけませんので、多くの場合は直接連絡する以外に方法がなさそうです。

そういった意味でも、アーカイブ登録制のデータベースサイトなどがあればGHOSTがもっと自由に他のGHOSTやモジュールと組み合わせて様々なことが可能になるのではないか、と空想したりしております。

はてなスターに色が付いた

色付きのはてなスターが登場したらしいですね。
なのでドウメキの追加シェルに「当たり」を付けてみました。
シェルのエクスプローラからネットワーク更新もできます。

スタンプがもらえる箇所に仕込んでいます。
それだけ。

PLUGIN「きょうの伺か」を改変してみた

PLUGIN「きょうの伺か」をTwitterはてなハイクの両方にクロスポストできるように改変しました。
「きょうの伺か」のライセンスに従ってタイトル・ID・フォルダ名を変更し、改変者名義で再配布させて頂きます。

オリジナルの「きょうの伺か」はコピーレフトではないものと判断し、改変した「きょうの伺か+」のyaya.dllを除くテキストファイル、辞書ファイルの類のライセンスはNYSDLを適用するものとします。

PLUGINではてなハイクClientを作ってみた

APIがTwitterと互換性があるので「ついっとゅう」を少し改造するだけでできました。

ハイク独自の機能などは対応していないのでしょぼいです。

GHOSTからはてなハイクに投稿する

Twitterと一緒ですね。URLを変えれば使いまわせそうです。
というわけで、「びーふれんず」のアカウントを作りました。

ダイアリーにも投稿しようかと思いましたが同じ内容を3ヵ所も投稿する必要もないのでやめました。
何か面白い使い方を思い付くまで保留です。

SSP公式仕様書をWikiに移植してみた

誰でも編集できるように

駄デベWikiをお借りしてSSP公式仕様書を移植させて頂きました。

記載されていない項目をいくつか追加致しました。
主にSSP CHANGELOG/更新履歴なごやか。Disc-2 ゴースト制作等から転載させて頂きました。
この場をお借りして御礼申し上げます。

追加した項目

続きを読む

ループ処理中にシステムに制御を戻す

ゴーストへの機能追加・続 - 雑記帳より。

ループ処理中にシステムに制御を戻せないため、単にフリーズしたように見えてしまうのはやはり問題だろう。

ループの途中で\![raise]して無理やり抜けてしまうという方法もあります(あまりスマートとは言えませんが)。
現在の進行状況を表示してループ処理に戻ってくればユーザの立場からも安心できますね。

ファイル 16-1.png

高度に発達したループ処理はフリーズと区別がつかない。

SHIORI/3.0 ID: tooltipを試してみた

SSP/2.01.58で追加された新機能、ツールチップ内容問い合わせを試してみました。
里々、YAYA、華和梨での記述例を書いてみます。
(里々以外動作確認していません。間違っていたらご指摘下さい。)

里々

# 里々/Mc144-4
@tooltip
(call,(R3)(R4)ツールチップ)
@0Bustツールチップ
いやん!
@1Bustツールチップ
えっち!

YAYA

// YAYA/Tc533-2 + yaya_shiori3.dic
// AYA5系テンプレートの場合はreference[*]をreference*に変えること
On_tooltip
{
  AYATEMPLATE.MouseEventExec('tooltip')
}
tooltip0Bust
{
  'いやん!'
}
tooltip1Bust
{
  'えっち!'
}
// 「はろーYAYAわーるど」yaya_tmpl_util.txtに記述済み
AYATEMPLATE.MouseEventExec
{
  _fname = _argv[0] + TOSTR(reference[3]) + TOSTR(reference[4])
  if ISFUNC(_fname) {
    EVAL(_fname)
    return
  }

  _fname = _argv[0] + TOSTR(reference[3])
  if ISFUNC(_fname) {
    EVAL(_fname)
    return
  }
}

華和梨

# 華和梨/8.2.8
resource.tooltip : $(entry C${System.Request.Reference3}tooltip.${System.Request.Reference4})

C0tooltip.Bust : いやん!

C1tooltip.Bust : えっち!

# ミドルウェアによって記述は異なる
System.Callback.OnGET : $(if $(match_at ${System.Request.ID} On) ${event.${System.Request.ID}} else ${resource.${System.Request.ID}})

補足

SSP/2.01.57で実装された仕様に従ってshell側でツールチップ内容を指定した場合、そちらが優先されるようです。

PLUGIN updater_yaya

satori updaterが便利すぎたので

みちさんのsatori updaterのYAYA版を作りました。
SHIORI, SAORI, PLUGIN, HEADLINE で使用するyaya.dllを一括コピーできます。
satori updaterに比べて需要は無さそうですがせっかく作ったので置いておきます。

satori updaterと違う点

  • PLUGIN
  • 自身のyaya.dllをコピーする
  • 登録時の選択対象はyaya.dllのみ

あまり動作確認とかしていないので不具合等あるかと思います。
利用する際はお気を付け下さい。

私もこまめにネットワーク更新で最新のyaya.dllにするよう努めますが忘れたor飽きたなどした場合でも手動でPLUGIN内のyaya.dllを差し替えれば使えます。