nDiki : JSON
JSON (JavaScript Object Notation)
メディアタイプは application/json で、拡張子は .json
JSON と Perl
Perl モジュールとしては JSON、JSON::Syck、JSON::PC などがある。
JSON
JSON は pure Perl モジュールとして実装されている。
Perl 5.005_03 では JSON-1.07 は make test で failする。
JSON::Syck
YAML-Syck パッケージに含まれている。 JSON::Syck は libsyck を用いており高速であるが、オプションが少ない。
Perl 5.005_03 では YAML-Syck-0.82 は make test で failする。
JSON::PC
JSON::PC (多くの場合)JSON::Syck より速く、かつ JSON と同じオプションが用意されている。
Makefile.PL の中で use 5.008 されている。
スポンサード リンク
Related term
2007年4月3日 (火)
■ WiKicker に JSON でのページ出力機能を追加

最近は DiKicker ばかりに手を入れていたが、久しぶりに WiKicker の改良も行っている。 しばらく前から実装を始めていた JSON 形式での出力機能が今日完成。
今までは WikiPage について
という2つの出力形式を持っていたので、JSON が加わることで3つめとなる。
@ サーバ側で WikiPage の構文解析まではやる
クライアントサイドの JavaScript でページの内容に合わせて様々な処理をできるように、サーバ側で構文解析まではしてあげるというのが主な目的。
JavaScript でまたパーサを書いてメンテしていくのも大変なので、その部分はサーバでやってしまおうかと。 構文解析した結果の解析木を JSON 形式で返して、JavaScript 側であとはお好きにという形。
@ CPAN にある JSON モジュールを使用
サーバ側の Perl プログラムには、構文解析をして解析木を作れるようになっている。 この解析木から Visitor パターンで JSON 形式を生成していく。
依存モジュールを増やすことを避けるべく、最初は自前で JSON 形式に変換していこうと思ったのだがやっぱり面倒だった。 ということで CPAN にあるモジュールをチョイス。
JSON 関連では JSON、JSON::Syck、JSON::PC などがあるが今回はインストールのしやすさを考えて pure Perl モジュールとして実装されている JSON を採用することにした。
Visitor クラスで解析木を無名ハッシュ/無名配列のツリーに変換して、JSON モジュールに流しこめば OK。
use JSON; my $json = JSON->new(pretty => 1); my $js = $json->objToJson($tree);
WiKicker のフレームワークにはフォーマット別に出力を切り換える機構があるので、これに JSON を追加して application/json で送るようにして完成。
ちなみに残念ながら JSON 1.07 は Perl 5.005_03 では make test が fail するので、NaneyOrgWiki では使えない。
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- [ WiKicker ] hell mode - HTMLタグ付けブロックの導入 (2005-09-13)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
- 野良パッケージと依存 Perl モジュールのインストールセット をCPAN... (2006-02-11)
- 定型書式で内容を記述していくのに便利な形式は? (2005-11-21)
2007年4月7日 (土)
■ 携帯電話(iモード)から Twitter を更新する

Twitter をいろいろ遊んでみて「やはり携帯電話から更新できないと」と思えてきた。
携帯電話からメールを送る事で Twitter にアップデートをかけてくれるゲートウェイを設置できれば一番いいのだけれど、そのようなメールアドレスを作る場所が今はない(さすがに会社のサーバはまずい)。
ということでiモードから更新をかけられるように短い CGI プログラムを書くことにした。 CPAN には Net::Twitter という Perl モジュールがあるのだが、JSON::Any (と JSON::XS / JSON / JSON::DWIW / JSON::Syck のどれか)が必要で、ちょっと大げさなので今回は使用は見送り。 普通に CGI.pm と LWP::UserAgent で書いた。
#!/usr/bin/perl -w
use 5.005_03;
use strict;
use CGI qw(-no_xhtml);
use Jcode;
use LWP::UserAgent;
my $query = CGI->new;
my $user_name = $query->param('u');
my $password = $query->param('p');
my $status = $query->param('s');
$user_name = '' unless defined $user_name;
$password = '' unless defined $password;
$status = '' unless defined $status;
my $message = '';
if ($user_name ne '' && $password ne '' && $status ne '') {
my $ua = LWP::UserAgent->new;
Jcode::convert(\$status, 'utf8', 'sjis');
$ua->credentials('twitter.com:80', 'Twitter API', $user_name, $password);
my $request = $ua->post('http://twitter.com/statuses/update.json',
{status => $status . ' '});
if ($request->is_success) {
$message = '<p>OK</p>';
}
}
print $query->header(-type => 'text/html', -charset => '');
print '<html><head><title>Twitter update</title></title><body>';
print '<form method="post" action="twitter">';
print 'ユーザ名:', $query->textfield('u'), '<br>';
print 'パスワード:', $query->password_field('p'), '<br>';
print 'ステータス:', $query->textfield('s'), '<br>';
print '<input type="submit">';
print '</form>';
print $message;
print '</body></html>';
とりあえずこれで、iモードから送信できることを確認。 パスワードの入力が面倒だけれども、サーバ側に書いておくのも嫌なので毎回送ることにした。FOMA 端末側には定型文として保存しておく以外にいい手はないのかな。
最初うまく送れなくてなんだろうと思ったが、あきやん氏の「Twitterで日本語を入力する方法 (akiyan.com)」の記事にある
- 全て全角文字で入力して、最後に半角スペースをいれる
- 半角全角を混在させるときは、半角文字と全角文字の間にスペースをいれる
といった日本語を入力する際の注意点がらみだったようである。 とりあえず CGI プログラムの方で最後に必ずいわゆる半角空白を追加するようにしておいた。
文字数チェックとか Twitter API の返り値チェックとか、改善すべきところはいろいろあるけれど、自分用にはまずこれでいいかな。
気が向いた時に外出先から更新かけます。
- 携帯電話からの Twitter 投稿に tmitter を使ってみることにした (2007-07-26)
- Twitter を使い始めて1年 (2008-04-06)
- ケータイ用にプライベート Wiki を設置 (2008-01-07)
- MAILPIA による Twitter リプライチェック (2008-11-18)
- 防災@nifty で地震・鉄道運行状況をメール配信してもらう (2007-08-20)
2007年5月30日 (水)
■ WiKicker 0.420 リリース - 変更いろいろ

去年の12月3日以来、約半年ぶりのリリース。 リリースしそびれて、随分変更を累積してしまった。 以下主な変更点。
@ バージョン番号形式を変更
前回の 0.41 に対して、今回は 0.420 とした。 浮動小数点数的には、増分 0.01 で今まで通り。
今後 version.pm が普及した時のことと、developer release を出す時のことを考えて小数点以下3桁ずつのスタイルに移行することにした (関連記事)。
@ <meta name="robots" content="noindex,nofollow">
2007年1月に実装。 編集ページや履歴ページが検索エンジンに登録されないようにするための機能。
@ <a rel="nofollow">
2007年1月に実装。 リンク spam 対応。
@ AutomaticLink 長を可変にした
2007年3月に実装。 特に DiKicker で1文字キーワードによる自動リンクを有効にするために追加した。
@ '/' の前を省略した自動リンクを有効にするか無効にするかを設定できるように
前述の機能で1文字での自動リンクを有効にしたら、不便な面が出た。
WiKicker / DiKicker では '/' を階層の区切り文字としても扱うことができるようになっていて、サフィックス部分だけでも自動リンクするようになっている。 自動リンクを1文字にしたら「OS/2」というキーワードに対して '2' でも自動リンクが働き、望まないリンクが張られるようになってしまった。 DiKicker では階層的キーワードは無くてもあまり困らないので、'/' の前を省略した自動リンクを無効にできるようにした。
@ JSON 形式データ出力
@ (DiKicker) はてなブックマーク数表示機能を追加
@ (DiKicker) はてなブックマークエントリーページへのボタン表示機能を追加
@ (DiKicker) grep 検索機能を追加
2007年2月に実装。自分としては重宝している。
@ (DiKicker) キーワード記事の下部への文字列挿入機能
Google AdSense 挿入用。
@ (DiKicker) サーバの負荷が高くなったら 503 を返して沈静化を待つようにした
2007年4月に実装 load average をチェックして負荷が高い時は、503 を返すようにした。
@ 内部コードの結構な書き換え
ソースコードを結構いじった。 deprecated なメソッドの削除も実施したので、0.41 以前から派生しているソフトウェアは多くの場合修正が必要。
- DiKicker に grep 検索機能を追加 (2007-02-02)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- [ WiKicker ] 自動InterWiki (2004-02-09)
- 社内 Blog 開設 (2006-05-16)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
スポンサード リンク
Related web page
<strong>JSON</strong> の RFC は、<strong>JSON</strong> が普及してから出ています。 perl でいうと <strong>JSON</strong>::Syck は RFC より前にでている。 <strong>JSON</strong>::XS は RFC の後 準拠具合も出た時期に依存(maybe)。 なので、<strong>JSON</strong> feed みたいなのを出している Web API を利用するような場合、サーバ側が RFC 以前のライブラリをつかっている場合は <strong>JSON</strong>::Syck の方が parse error 起きにくかったりする場合があります。 とはいえ、option 指定すれば、<strong>JSON</strong>::XShttp://d.hatena.ne.jp/tokuhirom/20080808/1218154305
Perl の <strong>JSON</strong> モジュールで日本語を含む文字列を扱う際の tips。 [Perl] <strong>JSON</strong> モジュール 2.x 系は、1.x 系と互換性が△ の記事で、<strong>JSON</strong>::XS モジュールとの互換性(ソース&ドキュメントも!)を実現した代わりに従来の <strong>JSON</strong>.pm のインターフェースが obsolete になってしまうのは残念。今後、<strong>JSON</strong>.pm は XS 版の <strong>JSON</strong>::XS とほぼ同機能の Pure Perl 版の <strong>JSON</strong>::PP のいずれかを自動選択してくれ...http://kawa.at.webry.info/200801/article_6.html
非同期アプリケーションで情報の送受信に使用できるデータ・フォーマットにはプレーン・テキストと XML がありますが、連載「Ajax をマスターする」の今回の記事で紹介するのはもう 1 つの便利なデータ・フォーマット、<strong>JSON</strong> (JavaScript Object Notation) です。<strong>JSON</strong> がアプリケーションでのデータやオブジェクトの移動をさらに簡単にする仕組みを説明します。 この連載をずっと読んでいhttp://www-06.ibm.com/jp/developerworks/web/library/wa-ajaxintro10/index.shtml?ca=drs-
原文:<strong>JSON</strong> in JavaScript JavaScriptは、 Netscape Navigator用のページスクリプト言語として広まった汎用のプログラミング言語です。Javaのサブセットであると広く信じられていますが、それは違います。Cのような構文とソフトオブジェクトをもつSchemeに類似した言語です。JavaScriptは、ECMAスクリプト言語仕様-第3版で標準化されました。 <strong>JSON</strong>の表記法は、JavaScriptのリテラルオブジェクトの表http://d.hatena.ne.jp/brazil/20050915/1126717649
■よく検索されるキーワード
torrent(56) 提案書(47) perl(45) windows(37) linux(31) 使い方(27) 書き方(25) debian(22) x31(22) usb(22) cvs(20) subversion(20) インストール(18) ドラマ(18) c#(17) mp980(17) svn(17) 修理(17) 手帳(16) ssh(15) 評判(15) アジェンダ(15) java(15) デロンギ(14) ガントチャート(13) 感想(13) n-01a(13) centos(13) tc-1(13) 充電式カイロ(13) ノート(12) ダイソー(12) thinkpad(12) rcs(12) f-01a(12) ヤマダ電機(12) ganttproject(12) 無印(11) ppm(11) レビュー(11) カイロ(11) 壁紙(11) 静電気(10) 動画(10) バッグインバッグ(10) ヨドバシカメラ(10) サンプル(10) アジェンダとは(10) wiki(10) ミノルタ(10) グッズ(10) 作り方(10) tortoisesvn(10) firefox(9) so905ics(9) memcached(9) 画像(9) gmail(9) ハクキンカイロ(9) 口コミ(9) a6(9) sh-01a(9) 冷蔵庫(9) ほぼ日手帳(9) mp3(8) emacs(8) 日本語(8) openssh(8) xampp(8) カメラ(8) nikon(8) 設定(8) 写真(8) 値段(7) flash(7) 方眼(7) web(7) docomo(7) カバー(7) リポジトリ(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 3.041441s / load averages: 0.14, 0.41, 0.44
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク