UJU ver1.0.2
インラインフレーム全てにマテリアライズしてしまう不具合修正などしたのでUJUをver1.0.2に。
併せてびーふれんずのUserJSも更新しました。
うじゅうジェネレータver1.0.2
昨年からずっと放置していたうじゅうジェネレータもver1.0.2に追いつきました。
作成環境としてはショボイのでもう少しどうにかしたいところです。
伺かゴースト更新記録
インラインフレーム全てにマテリアライズしてしまう不具合修正などしたのでUJUをver1.0.2に。
併せてびーふれんずのUserJSも更新しました。
昨年からずっと放置していたうじゅうジェネレータもver1.0.2に追いつきました。
作成環境としてはショボイのでもう少しどうにかしたいところです。
昨日リリースされたSSP/2.02.19で Windows Vista / Windows 7 向けの改良が行われた模様です。
メイリオのフォント情報を読み取って行間を詰めたりしているようで、オーナードローメニューが以前より狭くなりました。
特に見づらいわけでもないですし慣れの問題だと思いますが、設定で行間を調整することも出来ます。
オーナードローメニューから、「設定」->「本体設定」->「表示」->「メニューの縦方向の余白設定」を「4」にする。
これでおおよそ以前と同じくらいの行間になります。
このサイトで配布中のゴースト「びーふれんず」をUserJS化してみました。
例によって右下の青いボックスにマウスホバーすると起動するゴーストを選択出来ます。
聞きかじった知識でUserJS間の通信を実践してみました。
Firefox, Safari, Google Chromeで右クリックメニューから「ゴースト切り替え」「ゴースト呼び出し」が出来ます。(Opera、IEは仕様的に無理)
既に設置済の「うじゅら&うじゅう」もアップデートしました。
入手先
ブラウザ版Apricotが出てますね。
別に対抗意識とか燃やしてるわけじゃないですけど、ウチのUserJSは、下記のようなコードをHTMLの<head></head>内に書くことでお持ちのブログに自由に貼ることもできます。
<script type="text/javascript" src="http://home.384.jp/evidence/js/ujurauju.js" charset="utf-8"></script>
Webページ設置も出来るように作ってありますので。
ページを開いたらすぐ起動して欲しい場合は(ソースをDLして自前で設置する必要がありますが)ソースの上の方にある"bootAfterPageLoad: false"って書かれてるところを"bootAfterPageLoad: true"に変えるだけです。
このへんのドキュメントも配布ページにまとめておかないといけないですね。
指定した名前の変数が存在しない場合に0, グローバル変数が存在する場合に1, ローカル変数が存在する場合に2 を返す関数です。変数の存在の有無の判定に用いられます。
YAYAに限らず里々や華和梨においても、「変数の削除」をする際には「変数に空文字を代入する」という手法がよく用いられると思います。YAYAでも空文字を代入して終了すればセーブデータにも残らず次回起動時に変数は存在しないことになります。YAYA Tc538-3 にて空文字が代入された変数もセーブ対象に変更されました。(2010/01/21 追記)
でも実は空文字を代入しても変数は消えないのです。次の例を見てみましょう。
{
hoge = 1 // 変数を作成
--
ISVAR('hoge') // => 1
--
hoge != '' // => 1
--
hoge = '' // 変数に空文字を代入
--
ISVAR('hoge') // => 1
--
hoge != '' // => 0
--
ERASEVAR('hoge') // 変数を明示的に削除
--
ISVAR('hoge') // => 0
--
hoge != '' // => 0
}
変数に空文字を代入した場合でもISVARは1を返します。本当の意味で変数を削除するためには専用の関数ERASEVARを使わなければならないのです。
明示的にERASEVARで削除した後にISVARの戻り値が0になっているのがわかると思います。また、削除後の変数と空文字との比較で、存在しない変数と空文字を比較すると真となることも確認できます。
しかしYAYAは空文字が代入されている変数をセーブデータに保存するようなことはしません。次回起動時には空文字が代入された変数は自動的に綺麗に消されてしまうので、「空文字の代入で変数が削除される」と誤解される方も多いと思われます。YAYA Tc538-3 にて空文字が代入された変数もセーブ対象に変更されました。
空文字が代入される度にそれを検出してERASEVARで削除する、なんて煩わしいやり方は褒められたものではないので、ISVARを使わずに、空文字との比較で判定するのが良さそうです。
例えばユーザ名を入力してもらった時に空打ちされた場合、変数に空文字が入った状態ですのでISVARで判定すると「ユーザ名が入力されている」と誤判定する恐れがあります。また、初回起動などの本当に変数がまだ存在しない場合でも空文字と比較すれば存在の判定は可能です。
あけましておめでとうございます。
今年もよろしくお願い申し上げます。
今日は特に何も無いです。新年のご挨拶だけ。
去年の抱負を見てみたらSAORI作るとか書いてましたけど、そんな気配すらない一年でしたね。ダメすぎる。
今年はあまり高望みをせずに、自分に出来ることをやっていこうと思います。
出来ることを増やすのは良いことですし、スキルを磨いたりアウトプットを増やすことも大切ですが、ちょっと一休みをして。
面白い物語を読んだり、可愛いイラストを眺めたり、美味しいものを食べたり、ためになる話を聴いたり、自分と違う価値観に触れる機会が増えたりしたらいいなと思います。
皆様にとっても良い一年でありますように。
背景の素材に「にしき」を使わせて頂きました。
フォントに「Nishiki-teki」を使わせて頂きました。
テーマ名は「ちょろにしき」です。
来年もまた皆様に素敵な出会いが訪れますように。
それでは、よいお年を。
YAYAにはTOAUTOというとても便利な関数があります。
YAYAには「文字列型」と「数値型」の2種類の変数の型が存在し(配列とかは除く、厳密には整数型と実数型に分かれる)、扱いが全く異なります。
{
1 + 1 // => 2 (数値型)
--
'1' + '1' // => '11' (文字列型)
}
数値型に変換できる文字列は数値型に、そうでないものは文字列型のまま返す関数がTOAUTOです。
{
TOAUTO('123') // => 123 (数値型)
--
TOAUTO('hoge') // => 'hoge' (文字列型)
}
便利ですね。
{
TOAUTO('0123') // => 123 (数値型)
}
'0'が何処かへ行ってしまいました。これでは困ります。
これは文字列のままにして欲しいケースが考えられます。
(ユーザ名とかパスワードとか)
お好きなYAYAゴーストを立たせてユーザ名を'0123'と教えてあげて下さい。
9割方「123さん」として覚えられてしまいます。TOAUTOなんて使った覚えも無いのに。
これはYAYAのせいではなく、現在広く普及しているYAYAミドルウェアでSHIORIリクエストの値がデフォルトでTOAUTOを経由させてしまっていることに起因します。referenceを参照した時点で既に'123'に書き換えられているのです。(ウチのGHOSTもだよ!/(^o^)\)
「はろーYAYAわーるど」を例にすると、yaya_shiori3.dicの412行目にTOAUTOを使っているので、これをやめることです。(SHIORI3FW.AUTO_DATA_CONVERTをOFFにしているという前提の話)
でもreferenceの値が自動で型変換されているという前提で今まで辞書を書いていた場合GHOSTがまともに動かなくなるでしょう。それは困ります。
なので、こんな方法で回避しては如何でしょうか。
{
_value = '0123'
if TOSTR(TOAUTO(_value)) == _value {
var.req.value ,= TOAUTO(_value)
}
else {
var.req.value ,= _value
}
}
再度文字列として評価したときに元々の文字列と一致した場合のみ数値に変換。そうでない場合は文字列のまま。
必要ないと思います。必要になったときに対策しましょう。
AYA as SAORIのシステム辞書はTOAUTOを使っていません(AYA5にはTOAUTO無いのかな?)。数値と評価され得る場合もreferenceレベルでは文字列として参照されます。
最近何となくSSPの言語をEnglishで使ってみてるのですが、SSPからPLUGINに言語についての通知がされていることを、SSPのバグ報告レポート作成時に発見しました。
// request GET PLUGIN/2.0 Charset: UTF-8 Language: english ID: version
これをゴーストが読めば、ユーザの環境に合わせてEnglishの時だけ英語で喋るバイリンガルゴーストが作れる!と思ってGHOSTのssp_shiori_logも見てみました。
=====send===== GET SHIORI/3.0 ID: version Charset: UTF-8 SecurityLevel: local Sender: SSP
ゴーストには通知されないのね。残念。
PLUGIN作者は非日本語圏ユーザの環境も考慮して英語でのインターフェースも用意しておけ、というSSPからの熱いメッセージだろうか。
sys.key.z
{
_username = 'username' // set your username
_password = 'password' // set your password
_fname = 'favo.txt'
_event = 'OnGetFavoritesFromTwitter'
_url = "http://%(_username):%(_password)@twitter.com/favorites.xml"
"\![execute,http-get/
,%(_url)/
,--async=%(_event)/
,--file=%(_fname)/
,--param-charset=UTF-8/
]\e"
}
OnGetFavoritesFromTwitter
{
_path = GETSETTING('coreinfo.path') + 'var\favo.txt'
_id = GetXPath('open', _path)
_screen_name = IARRAY()
_text = IARRAY()
_url_id = IARRAY()
if _id {
for _i = 1; _i <= 20; _i++ {
_tmp = GetXPath('get', _id, "/statuses/status[%(_i)]/id")
if _tmp == ''; break;
// id
_url_id ,= _tmp
// screen_name
_screen_name ,= GetXPath('get', _id, "/statuses/status[%(_i)]/user/screen_name")
// text
_text ,= GetXPath('get', _id, "/statuses/status[%(_i)]/text")
}
_nop = GetXPath('close', _id)
// _nop = FDEL(_path)
}
_filename = GETSETTING('coreinfo.path') + 'var\stot.txt'
if !FOPEN(_filename, 'w')
return
_flag = 0
for _i = ARRAYSIZE(_url_id) - 1; _i >= 0 ; _i-- {
_str = "%(_screen_name[_i]):%(_text[_i]) [http://twitter.com/%(_screen_name[_i])/status/%(_url_id[_i])]"
FWRITE(_filename, _str)
}
FCLOSE(_filename)
"\![open,file,%(_filename)]\e"
}
OnKeyPress
{
if ISFUNC('sys.key.' + reference[0]) {
EVAL('sys.key.' + reference[0])
}
}
Greasemonkey使ってる人はこれをインストールすると見やすい。
こんな感じにまとめられる。
ShareTwitterOnTumblr(STOT)っていう発言まとめ用の便利なGreasemonkeyスクリプトが昔あったのですが、度重なるTwitterの仕様変更にメンテが追い付かない状態で、YAYAで自作して現在に至るまで使っています。
Tumblrに投稿するまで自動化したいけど面倒なので手動で。
突貫で作った。