Hatena::ブログ(Diary)

ばぐとらぶごる このページをアンテナに追加 RSSフィード

2015-04-02

[]RouterBOARD RB750GLでやらかした時のメモ

RouterBOARD RB750GLでやらかした恥ずかしいメモ類。

#1 パケットロス祭り→MTU/MRUの設定

フレッツ光ネクストのMTUは1454。明示的に設定しないと色々悲惨なことになる。RouterOS初心者が最初につまづく定番らしい。

Interfacesの該当設定を開けて、General内のMax MTU/MRUを両方とも1454に設定しよう。下記の上のほう。

http://blog.livedoor.jp/vigonetlabs/archives/1011870605.html

#2 ファームウエア更新は手動でやろう

自動(System->Packages / Check for Update)だと時々トラブるらしい。ダウンロード完了前に再起動がかかるバグがある時があったとかなんとか…

WinBoxで接続して、Upgrade Package (NPK) を手動でダウンロードし、WinBoxのウインドウ内にドラッグ&ドロップするとアップロードが始まる。あとはSystem->Rebootで再起動するだけ。

#3 Firewall設定をしないと外からいじれるよ

System -> Passwordでパスワード保護するのは当たり前として…

下記の下のほうを見てFirewallを設定し、必ず外から管理用ポートへのアクセスをブロックしよう。

http://blog.livedoor.jp/vigonetlabs/archives/1011870605.html

#4 設定ミスでやらかした→ボタンでリセットする前にNeighbourを試してみよう

http://www.mikrotik.com/download

ダウンロードリスト内のNeighbour。これ何やねん?

→設定ミスでLayer4(TCP/UDP)レベルでアクセス不能になった時に、Layer2(MACアドレス指定)でTelnetできるツール。とりあえずリセットする前にダメ元で試してみよう。

RouterBOARD直下にWindows機をつなぎ、NeighborViewerを実行すると、RouterBOARDのMAC Addressが出てくるので、Mac Telnetボタンでログインできる。

または、MACアドレス直打ち(MAC Telnet to...)も可。

#5 MNDP無効化

念のため、外向きのインターフェース上でのデバイス探索を無効化しておく。

IP->Neighbor の Discovery Interfaces 内の外側に向いているInterface(PPPoEなど含む)を開き、Disableで無効化。

2014-12-25

[]SSP 2.3.53〜54の更新内容について

この記事は、伺か Advent Calendar 2014の12/25担当です。

2.3.53〜54にかけて、いくつか重要部の更新を行いました。

内容はものすごい地味なのが1つ、ものすごい破廉恥なのが1つです。

地味編:SERIKO描画仕様の変更

f:id:ponapalt:20141224222352p:image

上の画像のように、アニメーション指定の中から、複数のelement指定のあるsurface番号を呼び出した場合の挙動がまともになりました。

今までもoverlayだけならきちんと動いていましたが、それ以外でも「真っ当な」結果を生むようになりました。

以上です。

…いや、この「真っ当な」というのが曲者です。

仕組みは非常に単純で、上の例でいけばsurface101内のelementをあらかじめ背景が透明な画像に対して指定通り全部合成しておき、その合成結果の画像をsurface0の着せ替え指定でinterpolate指定で合成しています。

今まではelementを1つ1つ毎回合成していたので、overlay指定以外でこれをやると、なかなか意図しない怪しい結果になってしまっていました。

この変更のメリット
  • シェル画像を各部品ごとにバラバラに用意しておき、部品ごとに合成していく自由度の高いシェルを構築可能
  • 合成結果は内部でキャッシュされているので、複雑にelementまみれな定義でも合成コストは1回のみ(高速になる)
    • 上記の通りにアニメーションで使わなくても、element指定が複雑なシェルはすべてこのキャッシュの対象になるので、どれだけ超ド変態な定義を書いても合成コストがほとんどかからなくなります。
デメリット
  • ちょっとメモリ消費が増える
  • もしかしたらすごく怪しく複雑な合成処理をしている既存ゴーストに影響があるかも

破廉恥編:タッチパネルでホイールイベントを起こせるようになった

これの何が重要なのか。

マウスホイールでぐりぐりやるとスカートがめくれるゴーストさんを、タッチパネルで直接指を使ってめくれない!!!!!

こんな事態は許せないので、マウスジェスチャ機能で上または下のジェスチャを行った場合にゴーストがジェスチャイベントに反応しない場合は、タッチパネル上からの操作に限り、ホイールイベントを内部で起こすことにしました。

SSP上のマウスジェスチャは右ドラッグですが、これはタッチパネル上でも簡単に起こせます。

目標位置を1本指でタッチ、そのまま1秒ぐらい動かさないで居ると、下の画像のように□マークが出ます。

f:id:ponapalt:20141224222353p:image

マークが出たら、指を上に動かしてください。

めくれます。

以上です。

そのほか編:SSPヘルプがWeb上に移行しました。

Windowsのヘルプシステムにまともに使えるのがなくなったのも理由ですが、ヘルプをWeb上に移行した上で、ukadocプロジェクトに丸投げしました。これはひどい。

ここからも見られます→ http://ssp.shillest.net/ukadoc/ssphelp/

おおむね もっしょくしさん奈良阪さん あたりを主としてukadocのコミッター担当さんが超がんばってくれたようです。ありがとうございます。

私はだいたい見てただけです。これは超ひどい。

ukadocの本来のおしごと、まともな仕様書の編集についてもよろしくです。

2014-05-17

[]里々のユリウス日計算スクリプト(修正版)

id:Umihotaru:20081226 のスクリプトが整備班版里々で怪しい動きをしていたので、下記の通り修正です。

@ユリウス日
(calc,
365*(ユリウス日要素)+(ユリウス日要素)/4
+3059*((if,(A1)>2,−2,10)+(A1))/100
+(ユリウス日要素)/400
−(ユリウス日要素)/100
+(A2)+1721089)

@ユリウス日要素
((A0)−(if,(A1)>2,0,1))

修正箇所は1箇所だけで「@ユリウス日要素」の部分です。

A1パラメータ(年月日の月)が2以上の場合、旧版では、

  • ((A0)(if,(A1)>2,,-1))
  • ((A0)(if,5>2,,-1))
  • ((A0))
  • (2014)
  • \s[2014]

というふうに、数値のみを括弧で再評価した結果、\sタグに化けて以降の演算を壊してしまう問題がありました。

修正分では、ダミーのゼロを入れているため、

  • ((A0)−(if,(A1)>2,0,1))
  • ((A0)−(if,5>2,0,1))
  • (2014−0)
  • 2014

というふうに数値として扱われ、以降の演算で異常は起きなくなります。

里々改修版の互換バグか記述の不具合か怪しいところですけど、とりあえず修正まで。

2013-03-28

[]Coral CDNを使って、ダウンロードの負担を分散する

フリーのレンタルサーバを借りて、ページを作って、NAR上げて、さあゴースト公開したぞー!

……と意気込んでいるのもつかの間、ダウンロードが集中してサイトが403/500エラー……

という話をちょくちょく聞きます。

本来このような無料レンタルサーバは、アクセスが集中するサイトの利用をあまり想定しておらず、通信が集中したら当然一時的に止められてしまいます

これをうまいこと分散するテはないものか。

そこで、SSPの配布でも一時使用していた、Coral CDNの出番です。

これを使えば、世界各国のキャッシュサーバに、このような負担を分散することができます。

使い方は簡単で、たとえば

このように、http:の後のサーバ名の部分に、".nyud.net"を足すだけです。簡単ですね。

あとは、サービス運用チームに感謝の意を捧げつつ、適用後のURLをダウンロードリンクとして貼るだけです。

注意:海外にしか配信サーバがないサービスなので、なんでもかんでも適用するとやたらと遅くなります。

2013-01-21

[] CD-ROM トレイを取り出せる 伺か/SSP拡張、「eject」作った。

伺か 使ってると良く CD-ROM を取り出したくなりますよね。

ならないとしたら、今すぐこの記事を読むのをやめて病院に行って下さい。*1

独立伺か研究施設 ばぐとら研究所 倉庫 eject PLUGIN

http://ssp.shillest.net/warehouse.html

インストールすると

f:id:ponapalt:20130121220317p:image

というメニューが追加されるので、押すだけで CD-ROM トレイがゲロっと排出されます。

便利ですね!

皆さんもぜひ、使ってみて下さい。

*1:こういうテンプレで書くのが鉄の掟らしいので気にしないでください。

2012-12-25

[][]伺か Advent Calendar 2012 "新描画メソッド interpolate について"

伺か Advent Calendar 2012 向け特別企画:SERIKO新描画メソッド interpolate について

http://qiita.com/advent-calendar/2012/ukagaka

メリークリスマス!爆発しろ!

……はい、気がすんだので本題に入りましょう。

元の意味などお構いなく、ほぼただの祭りと化しているクリスマス。かなりの割合の方には、ケーキ食って子供に(中の人の苦労により)プレゼントが来てリア充が爆発する日ぐらいの認識でしょう。まあそれはよろしい。

伺かゴーストマスタ、あるいはリアルタイムで動くキャラの中の人にとっては、年に何度かあるイベント仕込み納期でありまして、毎年どないしょうどないしょうと悩みながら結局実装できなかったりする日でもありますが。

せめて着せ替え実装でサンタ帽ぐらいかぶせてやろうという親心を出して作業にかかる、というのは、よくある話であります。

f:id:ponapalt:20121225061009p:image

ふつうのヒトガタキャラであれば、このようにきれいに帽子だけを切り抜いて合成(overlay)すればいいよね、ということになります。

f:id:ponapalt:20121225061010p:image

ちょっとだけレベルが上がって、変化する範囲が着せ替え範囲にかかる場合でもこの通り。要は変化範囲を透明色にして回避すれば良いのです。

……さて。このようにふつうのゴーストパパでありますわたくしは、計画通りとニヤつきながら「メリーさんの電話」に帽子屋さんの協力を得てサンタ装備をかぶせられたわけですが、その後調子に乗ったのがいけませんでした。

ヒャッハー!次はとらふぃっくとれいんだー!

……あ?

f:id:ponapalt:20121225061011p:image

ケモミミっ娘いいよね、耳ぴくぴくいいよね*1、という場合ではありません。こいつらの耳はreplaceによる実装なのです。

単にこれもoverlayすればいいよね?

f:id:ponapalt:20121225061012p:image

……動いた耳にかぶさりますよね。ですよね。動く範囲切り抜いたらサンタ帽ちょん切れるし。

そうだ、昔option,backgroundというのを実装したじゃないか。これで耳の後ろに回せば……

f:id:ponapalt:20121225061013p:image

だめでした。後からreplaceがかかるせいで影響があります。置換処理されて透明にちょん切れてしまうのです。

つまりreplaceとは、外形も含めて上書き追加ではなく完全置換する、という処理になりますから、前後のアニメーションの合成に関してかなり気を使う必要があります。

これまでこの問題の解決には、耳を完全に切り抜いておいて、全サーフィスでrunonce(とsometimes)で合成して耳の動きを実現する、という手法が普通でしたが、以下の2点の問題があります。

  1. ベース画像が耳ちょん切れたグロ画像になる
  2. 姿勢パターンがたくさんあるとものすごくめんどくさい

特に後者に完全にあたってしまった私はずいぶん悩みました。

耳アニメーションの後ろ側にあるように見せたいけれど、妙な細工で画像切り貼り地獄はやりたくない。

そうだ、新しい合成手法を開発すればいいじゃないか。*2

お待たせしました。新描画手法、interpolate (日本語訳:補完) の紹介です。

f:id:ponapalt:20121225061014p:image

  • overlay = 追加
  • overlayfast = 上書き
  • interpolate = 補完

つまり、後ろ側にあるように見せるためには、透明な部分だけに部品を合成する方法があればいいのです!

透明な部分を保持するoverlayfastとは全く逆、追加ばかりしかできないoverlayとも違い、「透明部分対象の補完」ので、これにinterpolateと名づけました。

f:id:ponapalt:20121225061015p:image

この合成は、単純に透明な部分だけに合成しているのではなく、きちんとPNAの透明度を判定してブレンド処理がかかっています。

f:id:ponapalt:20121225061016p:image

また、アニメーションの上からかぶせることで、そこまでのアニメーション合成結果の透明な部分を対象に補完ができます。

この時、アニメーションの合成順が重要で、必ずinterpolateを使う部分を後で合成(=見た目上の"上側")するようにしなければなりません。

f:id:ponapalt:20121225061017p:image

descript

{

animation-sort,descend

version,1

}

そこで、surfaces.txt内のdescript ( descript.txtではない! ) に、先日実装したanimation-sortで降順を指定した上で、数字の大きい=上にくるアニメーション定義でinterpolateしてやると、うまく合成順を制御できます。

以上、だいぶ以前からreplaceした時の他のアニメーションへの影響を軽減する方法が無いのか何度が問い合わせがあったので、今回はその答えをやっと出せた報告でした。

というわけで、ケモミミっ娘に帽子をかぶせる方法でした!

質問をよこせ

以降、質問がありましたらお答えします。

  • Q. どこぞのケモミミ鉄道娘のためだけに仕様策定とかありえん。
    • A. いや、昔から言われてたんよ、replaceした時の対策。あくまで1つの回避法だけど。
  • Q. overlayにoverlayfastだからunderlayとかoverlayslowとかじゃだめなんですか!
    • A. 英語でも意味わかるようにしておかないと後でひどい目に遭いますからねえ。

*1:しっぽもいいよね。

*2:そのりくつはおかしい。