上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。

 はるか以前にJSONのサロゲートペアについてのエントリでちらっとお知らせし た「JSON Dictionary」をやっと準備しました。JSON自体は Real Studio でも JSONItem というクラスが搭載されてサポートされています。ところがこのクラス にはサロゲートペア対応への不具合がありました。結局最新版(Real Studio 2011 R4.3) でもサロゲートペアのエラーが改修されていませんでしたので公開することとしました。

JSONView.zip DownLoad
※上記のファイルには以下の内容が含まれています

■JSON Dictionary
 JSON Dictionary はJSON形式のテキストデータをREALbasicのDictinaryオブ ジェクトに変換するモジュールです。これはもともとこちらのサイトにて公開されていた モジュールを改修したものです。

 まあここをご覧の方でJSON知らないという人はなかなかいないかと思います が、そもそもJSONってなんなのよ? という方はこちらを一度ご覧ください JSON の紹介

 さて Real Studio 内での JSON Dictionary の使い方はとっても簡単。プロジェクトにダウンロードしたモジュールを追加して以下のように使うだけ。

Dim data as dictionary
Dim jdata as String
jdata = "{""test"":""HELLO""}"
data = JSON.parse(jdata)
msgbox data.Value("test")

 JSONという名前のモジュールにある parse メソッドにテキストデータを引数にして渡すと Dictionary になって返ってくるといういたってシンプルな使用方法です。

 さて次はこのモジュールを改修しているさいに作ったアプリです。まあ何かの役に立つかもしれませんので公開することといたしました。

■JSON View 0.1
JSON View
対応OS:OS 10.4 以上
インストール:単純コピー
アンインストール:アプリケーションファイルを削除
使い方:
 ①メインウィンドウの左側にあるテキストエリアにJSON形式のテキストを入力
 ② View ボタンをクリック
  →テキストエリアのテキストが整形され、リストボックスに解析された値が表示されます
おまけ:
 リストボックスで項目をクリック(選択)すると選択した値までのドットシン タックスと内容が表示されます。ドットシンタックスはコピーできるのでスクリ プトを作成するさいにご利用ください。

 以上、これでまた一ヶ月広告阻止だぜっ!


 本日ご紹介する MemChecker は Real Studio でアプリケーション開発をしているユーザを対象にしたクラスファイルです(アプリケーションではありません)。Real Studio のプロジェクトに追加して使用してください。デバッグ時に表示することでアプリケーション内で使用しているオブジェクトの増減を確認することができます。

MemChecker.png
DownLoad
3/16 追記:コメントにてコンパイルエラーのご報告をくださりありがとうございます
 2011 r4 以降でエラーが出ていました。Listbox の Addrow メソッドにVariant型をわたすと型の解決ができずエラーとなります。これは 2011 r4 の Fix、
17595 Compiler: No longer asserts under a very specific set of circumstances when testing for ambiguous methods.
 による影響でした。Variant型はメソッドで要求されている型にある程度は自動でキャストされます。ところがListBoxのAddrowに 2010 r4 で新たに ParamArrayが渡せるようになりました。この為に引数がVariantの場合、ParamArrayを受けるAddrowなのかストリングの配列(item() as string)を受けるAddrowなのかが識別できないためコンパイラでエラーとなります。

■MemChecker Window について
 この MemChecker は数年前にWEB上で公開されていたものです。元々のソースで利用されていた関数が最近の Ver で廃止されてしまったので、代替手段として機能追加された rutime モジュールを利用するよう改修しました。動作確認は Real Studio 2011 r1.1 にて行っております。

 公開にあたり元々のソースを公開されていた方に連絡をとりたかったのですが、私がダウンロードしたのが7年前。すっかりダウンロード先を忘れてしまった上に同時にダウンロードしてある Readme にも連絡先が無く、連絡をとることができませんでした。 Google 先生にお伺いをたてたところ「そんなの知らない」とのこと。。。ただ、Real Studioを利用している方にとっては有益なものだと思いますので真に勝手ながら公開することとしました。

 グローバル参照可能なオブジェクト配列などを作成した場合等に起きやすいメモリーリーク。この MemChecker を利用すると、アプリケーション実行中に自由にクラス名とそのオブジェクトの数が確認できます。直前のチェックとの増減値も表示できるので配列クリアの前後で確認したりすると、オブジェクトがきちんと解放されているかなどのチェックを行うことができます。

●使い方
 1「MemChecker.rbw」を自分の Real Studio のプロジェクトにドラッグして追加
 2 プログラムの任意の場所で MemChecker.Show を実行(AppのOpen時等)
  ex.こんな感じでやるとデバッグ時のみ表示されるようになります
     #if DebugBuild then
       MemChecker.Show
     #endif
 3 表示された MemChecker ウインドウで以下の操作を行うと情報が表示されます
  ・今すぐ更新をクリックするとすぐに情報が更新されます
  ・自動更新にチェックを入れると指定した秒間隔で自動更新を行います

●表示内容について
・表示されるオブジェクトカウントには MemChecker 自身のオブジェクトも含まれます
・オブジェクト数が減るはずなのにカウントが減っていない時はメモリリークが発生しています
ex.オブジェクトを入れた Dictionary をクリアしたのにオブジェクト数が減っていない等

以下とりあえず。。。
■ライセンスや免責事項等
 個人・商業・営利・非営利目的に関係なく、無料でお使いいただけます。サンプルソースを使用したことによる、直接的、及び間接的な損害に対する責任を一切負いません。利用者の責任においてご利用いただけますようお願い致します。


やったっー!
ついに出たっ!

 正直夢かと思ったくらいびっくりしましたよ。あの銀河英雄伝説の電子書籍化。

 作者の田中氏が何年も前から、

「自分は紙の本で読む事を想定して書いている。」

 とおっしゃていたのでファンとしては結構本気で諦めていたんです。でも職業柄、正直言って、

「全巻出たら出ただけ買うから無料ででコンテンツ作らせください!」

 と、直談判したいくらい悶々と日々過ごしておりました。そしたらあんた、電子書籍が出るって言うじゃないですかーーーーーーっ! しかもめでたくAppStoreにリリースされてるじゃないですかーーーーーっ!

銀河英雄伝説

 これはもうファンとしては感涙ものですっ! あー、テンションあがりすぎて疲れてきたw えぇ、もう新書も持ってるし文庫も持ってるけど、

「はい、買ったー、即買ったー」

 うひょー、これでいつでもどこでもすちゃっと銀英伝が読めるよー、嬉し~い! とりあえず第一巻だけのようですが本伝だけと言わずに外伝も全部出してくださーい!
 ・
 ・
 ・
 さてここから先はファン&同業者として一言。書籍アプリの出来がよろしくない。アプリの作成にはMcBookを使っているようですがフォントサイズが最小にしてもちょっと大きすぎる。あと私は「思考の瞬断」という考え方に賛同している人間なので、ページめくりなどの遷移エフェクトはONで使ってる人なんですが、このエフェクトがもたついているしページめくり用の画面バッファからテキスト表示に切り替わる際のジャギジャギの表示もいただけない。McBookのヴァージョンが低いんでしょうか?? 是非もうちょっとアプリの品質を上げて欲しいっ、てーか全身全霊で頑張るから作らせてください!!


 いやー当ブログ。実は年間3千円程度のアマゾンクーポンを私に届けてくれています。Amazonのアフィリで貰えるクーポンは報酬が1500円以上になると送られてくるのでだいたい半年に一回くらいのペースで私の場合はクーポンを頂いておる次第です。なんでまたこんなことをぶっちゃけているかと言いますと先日久しぶりにクーポンが送られてきたからであります。

「迷惑メールフォルダに入っていて危うく見逃すところでしたよグーグル先生っ!!」

 迷惑メールフォルダから偶然発掘し、めでたくクーポンを受け取ったので日頃ブログを読んでくれている方々に感謝しつつ何かお買い物をすることにしました。

 いつもは iPod touch のアクセサリなんかを買っていたりするんですが今回はちょっと趣向を変えて食べ物を頼んでみることにしました。クーポンは約1800円。こいつで買える代物となるとなかなかどうしてぐっとくるものがありません。しかも根っからの貧乏性なものであまり贅沢な物はgkbrして買えませんw そこでふと思いついたのが、

「なんかお米とかいいんじゃない?」

 なにやら首都直下型もくると世間様では騒いでおられるので保存のきく食品をチョイスすることに決定。実はびびりなもので既にカセットコンロとお水は確保していたりします。この組み合わせを考えるに一番便利そうなのはカップ麺なんですがそれじゃーあまりにも子供達の体に悪かろう、ってことで乾麺を何か買う事にしました。乾麺なら保存もききそうだしねー。

 乾麺となると選択肢は、パスタ/そば/うどん/ラーメン。麺類のカテゴリからあーでもないこーでもないとみていたらお安いのに妙に評価の高いうどんを発見、なんと眉唾のまさかの星5つ。しかも200gが20個入りで 1,296円というお手頃価格。販売発送もちゃんとAmazonということで送料無料。20個入りなので一個あたり約65円という私好みの安さです。

「よっしゃ、こいつに決めたっ!」ポチッと!

 日曜日の夜中に頼んで火曜日のお昼に届いたよー


 さっそくその日の夜に食べてみることに。

 小分けの袋を開けると中には200gまんまの麺。100gずつ二束なんてことはなくそのまますぽっと麺が入っています。200gの乾麺を茹でると結構な量になるので一人だと多いかもですね、えっ? 私ですか? 私なんて全然問題ないですよ。これくらいならおかわりしちゃうかもな分量です。

 茹で時間の目安は沸騰したお湯2~3リットルに投入して7~8分。固めが好きな私はキッチンタイマーを7分にセットしてポイッとお鍋に投入。

・・・7分後。うほーい、見事に茹で上がりあがりました。こいつを我が家愛用の飛魚あごだしのつけつゆで頂きます。ついでにぴりっとS&Bの本わさびも投入してね。

「いっただっきまーす!」

 お? これは? なんかおいしんじゃない??? なんだか予想以上に美味しい。いや、そもそも65円なんでそんなに「超おいしーーー!」なんてことは全然なく、いたって普通においしい。少なくとも65円以上の価値は十分にあるお味。麺は稲庭うどん風の細い麺。しっかりとしたつるつる感で喉越しがなかなか良い。

「喉につるっと滑り込んでくる感覚と、飛魚だしの上品な中にあるしっかりとした旨味、ふわっと鼻に抜けるワサビのアクセント。こいつはあなどれない美味さじゃないですか、まさにうどん界のトリプルハリケーンやぁ~(意味不」

 いやー、うちの娘二人もすんごい勢いで食べてました(笑 これは今後、我が家の常備品として採用させていただきまする。

ぐるぐる
Original Update by SigNote Cloud
 みなさんこんな経験ありませんか?

「このループ超長いから経過表示にピリオドでも出力すっか」

 長いループの処理の先頭で改行無しでピリオドを出力すればループ一回毎にピリオドが画面に表示されてプログレスバーみたいでわかりやすいじゃないか。ところがこれをやってみると、

「最後にどかっと、表示されます」( ̄□ ̄;)ガーン

 なんだこれ、ループが回ってる間は全然出力されないのに処理が終わったとたんにいきなり画面に全部表示されるじゃねーか! ということになり、

「プログレスバーがわりにピリオドなんて無理げー」

 という結論にいたってはいないでしょうか? 実はこれちゃんと原因があるんですよ。それが、

「バッファリング」

 とよばれる仕組みです。

 Perl からの出力は内部のメモリに蓄積されて、ある特定のタイミングで画面等に出力されます。その特定のタイミングというのが初期設定では、

「改行コードが出力されたとき」

 となっているのです。その為、ループの経過表示にちょっとずつ文字を連続出力したくても、画面には改行コードを出力したタイミングでまとめて表示されます。このバッファリング、バッファなんかしなくてすぐに出力されれば連続表示できるんじゃないの? というわけでこのバッファリングを止める方法があります。それが特殊変数、

「$|」

 の利用です。この特殊変数に「0」意外の数字を指定するとバッファリング処理がされずにすぐに文字が表示されるようになります。ということでさっそくやってみましょう。以下のソースを実行するとハイフンがぐるぐるまわっちゃうよー

kaiten.pl ※Mac OS X 10.6.8 及び Perl v5.10.0 にて動作確認
#!/usr/bin/perl
use strict;
use utf8;  #-ソースがUTF8だという宣言
use Time::HiRes 'sleep';
binmode STDOUT, ":utf8";  #-画面に出力したい文字コード
binmode STDERR, ":utf8";  #-エラー出力に使いたい文字コード
binmode STDIN, ":utf8";  #-標準入力から入ってくる文字コード
$| = 1;
for (0..10) {
	print "-";
	sleep(0.1);
	print "\r";
	print '\\';
	sleep(0.1);
	print "\r";
	print '|';
	sleep(0.1);
	print "\r";
	print '/';
	sleep(0.1);
	print "\r";
}
print "-\n";
exit;
プロフィール

ひらくん Author:ひらくん
どもども、ひらんくんどす。
日々まったり過ごしております。
仕事はDTP関連のスプリクト&アプリケーション開発。
Follow happyscript on Twitter

ブログ内検索

あわせて読みたい



Page Top

Powered by FC2 Blog |

FC2Ad

FC2ブログ | Template Design by スタンダード・デザインラボ