plasmasphere.net -プラズマスフィア ドットネット-

Diary

JavaScript マルチバイト文字を2文字とした抜き出し

2012/06/30(Sat) 00:06

JavaScriptでバイト計算させるとか狂気の沙汰やで…。
ってことでStringを拡張して、シングルバイトを1文字、マルチバイトを2文字として扱う関数を作りました。
文字長と指定文字の抜き出し関数の2つです。

文字長の取得。
'TEST文字列'.byteLength() とか使うといいよ!
上記の場合は10(Number)で返ってきます。


// 文字列長を取得、シングルバイトは1文字、マルチバイトは2文字として取得する
String.prototype.byteLength = function() {
var l = 0,
str = escape(this.concat()),
length = str.length;
if( str ) {
for( var i = 0; i < length; i++ ) {
if( str.charAt(i) == '%' && str.charAt(i+1) == 'u' ) {
i += 5;
l++;
} else if( str.charAt(i) == '%' && ( str.charAt(i+1) == '2' || str.charAt(i+1) == '3' || str.charAt(i+1) == '5' || str.charAt(i+1) == '7' ) ) {
// *+-./@_以外の文字
i += 2;
}
l++;
}
return l;
} else {
return 0;
}
};

次はsubstrのバイト対応。
'TEST文字列'.byteSubstr( 0, 6 ) だと前の6文字(TEST文)が返ってきます。
(0,5)だとTESTまでしか返しません。

 // String().substr をバイト長に対応させたメソッド、シングルバイトは1文字、マルチバイトは2文字として処理する String.prototype.byteSubstr = function( start, max ) { 	if( start >= this.byteLength() ) { 		return this.concat(); 	} else { 		if( start < 0 ) { 			start = 0; 		} 		var l = 0, 			str = escape(this.concat()), 			length = str.length, 			val = ''; 		try { 			for( var i = 0; i < length; i++ ) { 				var s = i, 					c = 1; 				if( str.charAt(i) == '%' && str.charAt(i+1) == 'u' ) { 					i += 5; 					l++; 					c = 6; 				} else if( str.charAt(i) == '%' && ( str.charAt(i+1) == '2' || str.charAt(i+1) == '3' || str.charAt(i+1) == '5' || str.charAt(i+1) == '7' ) ) { 					// *+-./@_以外の文字 					i += 2; 					c = 3; 				} 				l++; 				if( l > max ) { 					break; 				} 				if( l >= start ) { 					val += str.substr( s, c ); 				} 			} 			return unescape( val ); 		} catch (e) { 			throw 'Error: byteSubstr [ ' + e + ' ]'; 		} 	} }; 

使いそうで使わない関数ですが、要り用ならどうぞ持って行ってください。
bytestring-min.js


PSO2

2012/06/25(Mon) 00:06

PSO2がオープンβ始まったらしいんでインストールしてみました。
余裕でnProtectが入ってきたんですが大丈夫ですかSEGAは…。
まさか昔みたいにスパイウェア仕込んでるってことはないでしょう、いくら韓国企業のソフトとは言え…。

nProtectでいきなりやる気を削がれましたが、とりあえずキャラ作ってやってみました。
案の定ですが、人多すぎでくっそ重たいですね。
でもまあ、同時接続人数が6万人超えてるのに鯖が落ちてないんで、しっかりチューニングはできているんでしょう。
ハードウェアスペックに物を言わせてるだけかもしれませんが。

ちゃんと正規化されてるDBスキーマなら良いんですけどねぇ。
どうにもオンライゲームのDB管理はずさんなイメージがありまして。

それは置いといて。
シップ5でいつも通りキャラ名 plasma でやってますんで、見かけたら声かけてくださいね。
まあ、あんまりやらないかもしれないですが。

まともに始めるまでにPCの設定が大変でした。
100度になるGPUと50度付近のHDDを何とかするべく色々と。
今はGPU75度、HDD40度辺りで安定するようになりました。
HTPCなんでエアフロー確保するのが大変(;´Д`)
FPS30に下げただけでGPU20度下がったのがなんとも言えない感じ。


Xperia p と Xperia sola を買いました

2012/06/19(Tue) 00:06

Xperia P(LT22i) と Xperia sola(MT27i) を買いました。
いつも通り1shopmobileです。
支払いはGoogleCheckoutからなんで、Android携帯持ってる人は普通に買えるよ。


Pは私のでsolaは嫁さん用です。

値段は Xperia P が $385、Xperia sola が $299 で送料が $40 に、Discountナンバーで $8 割引。
計 $716 ですね。
確かクレジットが切られた時が若干の円安傾向だったんで、\80.56/$1 くらいだったと思います。
円安つっても80円っすけどね…。

大体 \57,000 でSIMフリーのケータイが2台買えました。
よろしいじゃないよろしいじゃない。
ああ、税関は1500円で手数料200円でした、2台あわせて。

値段だけ考えると去年の Xperia Neo がやたら高かったなあ。
1年でだいぶかわりましたね。
トランジスターの理論限界を突破 次世代省エネデバイス実現へ
とか、有機ELっていうのもありますし、これからどんどん良くなるでしょうな。

Xperia sola には SmartTag が4つ入ってました。
後から買おうと思ってたんでちょうど良かったです。2つもらいました。
使い勝手はまぁまぁ、別に無くても困らんです。
日本国内はNFC基準の非接触リーダー無いんで…これからに期待。

PはWhiteMagic液晶が良い感じですね。
省電力設定にするとバッテリもあんまり食わない上、コントラスト高めで太陽光の下でも他よりは見やすいです。
残念なのはLTEに対応してないって事くらいですか。
バッテリー容量が少ないのはいいや、どうせ毎日充電してるし。

これは屋内ですが、コントラストはPのが高いですね。
あんまり高すぎてもギラギラするんですけど、このくらいは全然オッケー。

とりあえずroot取ろうかと思ったんですが、Bootloader アンロックが必要らしいのでひとまず保留。
フォントの入れ替えとセルスタンバイの電波問題あたりやっときたいんですが、ICSまで置いときます。
液晶フィルタは当然ですがアンチグレアにしてます。
Easy Protector EX (アンチグレア) Xperia P LT22
Easy Protector EX (アンチグレア) Xperia sola MT27
目にも優しいしね。

当面はsola用のSIMが無いのでそこを何とかしようと。
カメレオンSIM買ったばっかりですが解約して、IIJmioのファミリープランにしようかと思ってます。

というか、bmobileのサービスって基本的に高いって最近気づきました…。
殆使わない人用に基本料0円SIMくらいじゃないですかね、他とまともに差別化できてるの。


Xperia Neo ICS

2012/06/14(Thu) 00:06

私の持ってる Xperia Neo がやっとICSにできるらしいんでやってみました。
http://talk.sonymobile.com/message/199355

USBで繋いでSEUSでアップデートするだけなんで特に説明もいらないっすね(;´Д`)

変わったところは主にUIと…それくらいですか。
一応デュアルコアCPU用に最適化されてるんで…Xperia Neoにはあんまり恩恵ないですね。
バグがひとつあって、バックグラウンドでメール受信した場合にLEDが光りません。
一応修正する気でいるみたいなんで、不満な人は待ったほうがいいかもね。

rootはFlashtoolで焼けばいけるみたいですけど、面倒なんで試してません。
ワンクリックroot出るまでしばらく中華フォントで我慢します。

あと、スクリーンショットのメニューがなくなりました。
電源ボタンと音量下のボタン同時押しで撮れるらしいです。

そういえばAmbientTime Livewallpaperが動かなくなってました。
これソニエリのソフトなんでさっさとしろー、間に合わなくなってもしらんぞー。
でも国内向けだから更新しないかな…(´・ω・`)国内向けスマフォのICS期待。

Xperia Pを月曜に買って多分明日来るんですよね。
ICSでさっくさくになったら買わんでもいいかなとか思ってたんですが、思ったほどではなかったんでまあいいかな的な。


MGO終了

2012/06/13(Wed) 00:06

MetalGearOnlineが本日(2012/06/13 23:59)をもって終了だそうで。
2008年から3年間の限定でサービスしてたんですが、好評だったんで1年伸ばしたんですかね。
去年は他に楽しいゲームも多かったんで殆どプレイしてなかったんで経緯はちょっとわからんのですが。

今年は3月くらいからプレイしてたんですが、サービス終了ってんでそれからずっとやってます。
間に風の旅人とかTOKYOJUNGLEとか買ってますが、もっぱらMGOでした。
チームスニーキングミッション(TSNE)が大好きでして、他のゲームでは代替できないルールだったのでずっとこれでしたね。
先程MGOのSNSでプレイ時間を確認してみましたが、1200時間ほどプレイしていたようです。
MMOにしたら短いですが、MOにしたら長い方ですね。
因みにPC名はいつも通り plasma でした。
最初の頃はクランにも入っていたんですが、解散してからはずっと1人でしたね。

最終日のはずだった昨日は10000人近くログインしていたようです。
終了間際とは言え、普段は1500人くらいだったんで、やっぱり人は帰ってきてたんでしょうね。
あんまりにログインできないんで終了が一日延期になっちゃってしかもメンテでサーバも増やしたようで…。
多分昨日より人少ないと思うんですが、まあいいのかな。
この辺は最終日メンテでやった方が良かったよね、飛ぶ鳥跡を濁さず的な。
まあ、ぐだぐだな方がコジプロって感じしますが。

ネットゲームの運営的にサーバ全て自社管理だとしたら月間500万くらいは維持費がかかる上、基本プレイ料金無料だったんで赤字を垂れ流していたでしょうねぇ。
PSNゲームで自社サーバってあんまりメリット感じないというか…最近遊んだプレーヤにも表示されないですし、フレンドもゲーム内で完結しちゃいますしね。
まあ、どっちが良いかは人によりけりか。

メタルギア続編の METALGEAR RIGING が先日のE3でプレイアブル出展されてました。
きっとMGO3はライジングについてくるんですよきっと。
きっとやってくれる。
とりあえずTSNEだけ遊ばせてくれたら俺は満足。



© 1999- plasmasphere.net:SouiChi All rights reserved.