[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
書いたアプリを公開しました Shunshun94/hiyontof で紹介したアプリの開発を止めました。
理由。jQuery mobile 仕様を前提にページのデザインいじるのがきつくなってきたため。ゼロからデザインとかやり直したい。ソースコードはいくらかは流用できるだろうし、SWEET のものも使えるはずなので、まぁゼロからではないだろう、と考えている。
jQuery mobile は割とがしゃがしゃ DOM を書き換えて動いているので、たまに予期しない動きをしたりするっぽい……サッと作るには便利だけど、長期開発となった時点で捨てるべきであった……
var com = com || {};
com.hiyoko = com.hiyoko || {};
com.hiyoko.util = com.hiyoko.util || {};
com.hiyoko.util.Cidr = function(cidr, ports) {
var tmp = cidr.split('/');
this.ports = ports;
this.length = Number(tmp[1]);
this.address = tmp[0].split('.').map(function(v){return Number(v)});
this.bits = this.address.map(function(v){
var tmp = v.toString(2);
for(var i = tmp.length; i < 8; i++) {
tmp = '0' + tmp;
}
return tmp;
}).join('').substr(0, this.length);
};
com.hiyoko.util.Cidr.prototype.isOtherNetwork = function(cidr) {
var result = [];
if(Array.isArray(cidr)) {
result = cidr.filter(function(v) {
return (! v.bits.startsWith(this.bits));
}.bind(this));
} else {
if(! cidr.bits.startsWith(this.bits)) {
result.push(cidr);
}
}
return result;
};
com.hiyoko.util.Cidr.prototype.inWhiteList = function(cidr) {
var result = [];
if(Array.isArray(cidr)) {
result = cidr.filter(function(v) {
return (this.bits.startsWith(v.bits));
}.bind(this));
return (result.length > 0);
} else {
return this.bits.startWith(cidr.bits);
}
};
com.hiyoko.util.Cidr.prototype.getDetail = function() {
return this.address.join('.') + '/' + this.length + ' ' + this.ports;
};
com.hiyoko.util.Cidr.prototype.toString = function() {
return this.address.join('.') + '/' + this.length;
};
// 指定したアドレスがプライベートネットワーク内にあるか否か確認する
function isInPrivateNetwork(address) {
var target = new com.hiyoko.util.Cidr(address + '/32');
return target.inWhiteList([
new com.hiyoko.util.Cidr('10.0.0.0/8'),
new com.hiyoko.util.Cidr('172.16.0.0/12'),
new com.hiyoko.util.Cidr('192.168.0.0/16')
]);
}
お仕事でこういうフィルタリングをする必要が生じたりしたらしい。
必要があったのだが、使い方が最初よくわからなかったのでメモ。
const SCP = require('scp2');
const FS = require('fs');
const CONF = {
key: 'PATH_TO_KEY', // プライベートキーのパス
host: 'HOST_OF_SERVER', // SCP 先のサーバのドメイン名 or IP アドレス
username: 'USERNAME', // SCP 先のサーバにログインするための名前
path: 'PATH_TO_SERVER_DIR', // SCP 先のサーバのどこに SCP するファイルを置くのか
filepath: 'PATH_TO_SEND_FILE' // SCP で送信するファイルへのパス
};
FS.readFile(CONF.key, 'utf8', function (err, keyDetail) {
if(err) {
console.error('FAILED', err);
return;
}
SCP.scp(CONF.filepath, {
host: CONF.host,
username: CONF.username,
path: CONF.path,
privateKey: keyDetail
}, function(err) {
if(err) {
console.error('FAILED', err);
return;
}
console.log('done');
});
});
キャラクター保管所 (http://charasheet.vampire-blood.net/) はキャラシを外部プログラムから呼び出す方法が共有されている (キャラクター保管所 > ヘルプ > Json読み込み機能)。
しかし、キャラクターシート倉庫 (http://character-sheets.appspot.com/) のものは共有されていなかった。これを先日開発者の方が共有してくださったのでメモ。
http://character-sheets.appspot.com/[システム固有]/display?ajax=1&key=[シートID] [システム固有]……システム固有の識別子です。 ビーストバインドトリニティなら bbt サタスペなら satasupe 汎用シナリオシートなら scenario といった感じです。 値はキャラクターシートにアクセスすればわかります。 [シートID]…………キャラクターシートの ID。 キャラクターシートにアクセスし、アドレス末尾の key=~ の値を使う。 [コールバック]……コールバック関数
http://character-sheets.appspot.com/scenario/edit.html?key=ahVzfmNoYXJhY3Rlci1zaGVldHMtbXByFgsSDUNoYXJhY3RlckRhdGEYlvL4Nwwにアクセスするならば
http://character-sheets.appspot.com/scenario/display?ajax=1&key=ahVzfmNoYXJhY3Rlci1zaGVldHMtbXByFgsSDUNoYXJhY3RlckRhdGEYlvL4Nww&callback=myFunction
http://character-sheets.appspot.com/dx3/edit.html?key=ahVzfmNoYXJhY3Rlci1zaGVldHMtbXByFgsSDUNoYXJhY3RlckRhdGEY8MGkAQwにアクセスするならば
http://character-sheets.appspot.com/dx3/display?ajax=1&key=ahVzfmNoYXJhY3Rlci1zaGVldHMtbXByFgsSDUNoYXJhY3RlckRhdGEY8MGkAQw&callback=myFunction
2か月前に書いたアプリを公開しました Shunshun94/Sweet という記事を書いたが、Sweet/main/com/hiyoko/DodontoF/ においてあるどどんとふアクセス用の JS ファイルがいい感じになってきた。まだまだ機能不足だが、今後使える子になると嬉しい。
使い方としては https://shunshun94.github.io/Sweet/main/com/hiyoko/DodontoF/DodontoF-Client.js と jQuery を読み込み、次のような感じで使う。
var OFFICIAL_1_URL = 'https://www.taruki.com/DodontoF_srv1/DodontoF.swf';
// 該当サーバに存在する部屋の一覧を取得する
var tofServerAccess = new com.hiyoko.DodontoF.V2.Server(OFFICIAL_1_URL);
tofServerAccess.getRoomList()
.done(function(result){
console.log(result);
})
.fail(function(result){
console.log(result);
});
// 該当サーバの部屋0のチャットログを取得する
var tofRoomAccess = new com.hiyoko.DodontoF.V2.Room(OFFICIAL_1_URL, 0);
tofRoomAccess.getChat()
.done(function(result){
console.log(result);
})
.fail(function(result){
console.log(result);
});
これもちゃんとまとめた物を書いて公開したいなぁ。使い方とか。API 一覧とか。