記事一覧

ゴーストの更新を捕捉するあれやこれの予定

NTCとかSiReFaSoとか

SiReFaSoを稼働させてから4ヶ月が経過しました。独自に巡回が出来るようにしてからも目立った不具合もなく安定しているようです。

Nikola Tesla Centerの方は、11月末頃に稼働を停止して、1ヶ月ほど移転のお知らせを掲載した後、12月末以降はSiReFaSoに転送しようと考えています。

ただの巡回アンテナではありますが、私がまともに作ったWeb上のシステムとしては初めてのものでした。至らない点も多く不安定なものでしたが、改修を重ね、一年以上経過した今も尚稼働を続けることが出来ています。数百体のGHOSTが登録され、多くの方々に利用して頂きました。ありがとうごさいます。

大量のデータを扱えるよう作成し直したSiReFaSoの方を、これからもどうぞよろしくお願い致します。

NAR専用アップローダーを作ってみた

NAR専用アップローダー

こんなのを作ってみました。

SoSiReMi - 伺かアップローダー

いきさつ

ついっとゅう」置き場をGoogle App Engineに引っ越そうと思って認証まわりの機能も全部移植したのですが、FTPが使えないのでネットワーク更新をどうしたものか悩んでいました。そこでHTTPで直接NARごとアップして、サーバー側でZIP展開して再配置してみたところ、思い通りに動いたので、誰でも使えるようにアップローダーにしてみました。

仕様

何も考えずにNARをアップしただけで勝手にネットワーク更新に対応されます。

  • descript.txtにcraftmanurlとhomeurlが無い場合アップロードされたページのURLを自動補完
  • type,ghostとか書いてない場合も自動補完
  • updates2.dau自動作成
  • readme.txtやthumbnail.pngのプレビュー
  • 簡易アクセス解析機能付き
  • SiReFaSoに自動登録
出来ないこと
  • calendar skin, calendar plugin, directory service setting, supplement 非対応
  • 複数インストール形式(ghost with plugin/headline等)非対応
  • 10MB以上のNARは無理

でも、お高いんでしょう?

今ならゴーストフォルダを登録してクリック一つでアップロードできる更新支援ツールが無料で付いてきます。

SoSiReMiUpdater.zip

WindowsXP以降、.NET Framework 2.0以上で動きます。

narをアップするところという便利なものが既にあるわけで

更新を予定していてネットワーク更新対応が難しい場合はSoSiReMiを使ってみてはいかがでしょうか。配布ページとしてブログに紹介記事を書いてNARに直リンみたいな使い方でもいいと思います(「ついっとゅう」もそうしています)。

せっかく作ったのでどなたか使ってやってください。

Ghostの配布サイトURLで検索できるBookmarklet

URL検索できるBookmarkletを書いた

NTCの検索窓の下に配布サイトURL用検索窓を足すBookmarkletを書いてみました。IE6でも動作します。

Add URL Search Box on NTC - Hatena::Let

ファイル 88-1.png

特定ドメインのサイトのGhostを探す時に便利かもしれません。

配布元が移転した場合

Ghostの配布元やhomeurlが変更された場合にそれを自動で検出する手段がないので、以後の更新が捕捉できなくなります(登録し直した場合は新しい方のデータで上書きできます)。サイトが消滅した場合は3時間後には自動的にデータが削除されます。

SSP/2.2.36 の \[enter/leave,selectmode] を試してみた

SSP/2.2.36 の新機能

SSP/2.2.36で新たにShell上でマウスによる範囲選択を行うための仕様が追加されています。

Ghostは通常マウスでドラッグされるとマウスと一緒にShellが動いていくわけですが、範囲選択モードの状態ではShellが固定され、選択された座標がSHIORIに通知されます。

ファイル 86-1.png

Ghostの当たり判定を囲めば、Coordinの代わりになりそうです。

*
:選択してねー。\![enter,selectmode,rect]

*OnSelectModeBegin
#選択モード開始

*OnSelectModeMouseDown
$nop【タブ】(split(バイト値,1)(R2)(バイト値,1),)
$X1【タブ】(S0)
$Y1【タブ】(S1)

*OnSelectModeMouseUp
$nop【タブ】(split(バイト値,1)(R2)(バイト値,1),)
$X2【タブ】(S0)
$Y2【タブ】(S1)
:\![leave,selectmode]うぃ。
選択された領域は「(X1),(Y1),(X2),(Y2)」だね。
$nop【タブ】
$X1【タブ】
$Y1【タブ】
$X2【タブ】
$Y2【タブ】

SiReFaSo更新

SiReFaSo更新

今までNTCのデータをコピーしてるだけでしたが、NTCのデータが飛んだ時に共倒れとなってしまうので、単独で巡回・更新捕捉出来るようにしました。

SiReFaSo - 伺かゴースト更新フィード

新規登録ゴーストを @sirefaso に出力するようにしました。

http://twitter.com/sirefaso/status/16056591859

NTCmanager更新

フォルダ名がinstall.txtに記載されているものと違う場合に警告を表示するようにしました。

カンマを含む文字列の取得に失敗していた不具合を修正しました。

NTC同様、更新情報が取得出来なくなったGHOSTは自動的に削除されますが、SiReFaSoの方は取得出来なくなった時から24時間の間データを保持しています(NTCは3時間)。

登録したゴーストの立ち絵が表示されない場合は時間をおいてもう一度登録すると反映されるかもしれません。そもそも立ち絵が無い場合や画像形式が特殊な場合は反映されません。

NTCの方は登録データ全部読み込ませるという荒業で一ページで検索も全て完結させてきましたが、登録データが増えてきたのでそろそろ限界かもしれません(そのためにSiReFaSoで作り直しています)。

YAYA/AYAのコメントアウト

YAYA/AYA は /* と */ で囲まれた部分、および // から行末までがコメントアウトになります。

{
  /* コメント */
  //コメント
  'hoge'  //コメント
}

ハマリどころ

以下のコードは100,50,10のいずれかがそれぞれ3分の1の確率で返される関数です。

{
  100 //100円
  50  //50円
  10  //10円
}

上記と似ていますが、以下は100,5のいずれかがそれぞれ2分の1の確率で返されます。

{
  100 //100円
  50  //
  10  //10円
}

YAYA/AYA では改行前のスラッシュは改行無効の記号として処理されます。つまり上記のコードは以下のコードと等価です。

{
  100 //100円
  50  /  10  //10円
}

50 / 10 で 5 になります。

以下のコードは除算の対象が無いので tama.exe でエラーが確認できます。

{
  'hoge' //
}

tama.exe でエラーが確認できれば直しようがありますが、先述のように問題なく除算されてしまうと不具合原因の特定が困難になります。

ゴースト更新捕捉サイトの改装

NTC一周年

今日でNikola Tesla Centerが一周年を迎えました。不具合も多く味気ないサイトでしたが、方々でご紹介頂いたり、SSPの一括更新で利用して頂いたりと、嬉しいことの多い一年でした。あらためて感謝申し上げます。ありがとうございました。

移転のようなミラーのような

サーバが不調で見れなかったりすることもあり、機能の拡張性も無いので、別の所にミラーサイトのようなものを作りました。

Googleのインフラなのでたぶん安定していると思われます。

ゴーストに関する投稿を表示するUserJS更新

新サイトでも動作するように変更しました。通信を減らし、最適化して若干高速化されています。

無駄機能

新しく追加された機能がいくつかあります。

  • 検索でゴースト名・\0名・\1名・作者名の全てで検索するように変更
  • ゴーストの立ち絵の下に\0名・\1名を表示

検索結果ごとにRSS,JSON,JSONPなどが使えます。

任意の件数を取得可能です(通常は20件、負荷対策のため上限は200件としています)。

NTCについて

NTCの巡回内容をコピーしているだけなので、旧サイトもしばらく残しておこうと思います。いつかは単独で動作させることに挑戦したいです。

YAYAの関数TOAUTOを使うときは慎重に

YAYAの関数TOAUTOはちょっと危険

これのおさらいです。

前回までのおさらい

意図しない挙動の例
{
  TOAUTO('000123')  // => 123
  --
  TOAUTO('.')       // => 0.000000
}

使わなければ良いだけの話ですが、「はろーYAYAわーるど」などのテンプレートゴーストにはミドルウェアレベルで組み込まれています。具体的には、イベントのReferenceがTOAUTOを経由した状態でreference配列に格納されています。つまり、Reference0に"."が入っている場合でも、reference[0]を参照すると"0.000000"となってしまいます。

対策

最大の問題はTOAUTOの変換が「不可逆」であるという点です。"123"という値がreference[0]で参照出来ても、本当に送られてきた文字列が"123"だったのか"0123"だったのか"000123"だったのか判断のしようがありません。

なので不可逆な変換のみ無効とする関数TOAUTOEXを新たに定義しました。

{
  TOAUTOEX('000123')  // => 000123
  --
  TOAUTOEX('.')       // => .
  --
  TOAUTOEX('1') + TOAUTOEX('1') // => 2
}

TOAUTOEX
{
  _v = _argv[0]
  if TOSTR(TOAUTO(_v)) == _v {
    TOAUTO(_v)
    retrun
  }
  _v
}

yaya_shiori3.dicの414行目のTOAUTOをこのTOAUTOEXに置き換えることでreference参照の不具合を回避できます。

ゴーストに関する投稿を表示するUserJS更新

更新内容

  • 半分近くの投稿が表示されていなかった不具合を修正(これはひどい)
  • ゴースト名の横に投稿数を表示(Twitterは星、はてなハイクはハート)

ファイル 80-1.png

なんだか更新著しいのでuserscripts.orgの方にアップロードすることにしました。

Show UKAGAKA Ghost Reccomend

バグ修正

NTCmanager更新

一部のGHOSTのhomeurlが読めなくなっていた不具合を修正しました。

Nikola Tesla Center

ゴーストに関する投稿を表示するUserJS更新

特殊文字を含むGHOST名でエラーが発生する不具合を修正しました。

showghostrecommend.user.js