<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8496042046971451598</id><updated>2011-07-08T23:17:57.372+09:00</updated><category term='server'/><category term='Python'/><category term='scheme'/><category term='java'/><category term='computer'/><title type='text'>NoMem</title><subtitle type='html'>Nakajima's Outer Memory</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nomem.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nomem.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>M.Nakajima</name><uri>http://www.blogger.com/profile/16656456539522239073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8496042046971451598.post-5308133962776082273</id><published>2009-11-16T23:52:00.001+09:00</published><updated>2009-11-16T23:58:40.108+09:00</updated><title type='text'>WebGLのDemoを見てみた</title><content type='html'>気になっていたので見てみることにした&lt;br /&gt;うまく行ったら開発もしてみたい&lt;p&gt;使ったOSはUbuntu 9.10&lt;p&gt;&lt;br /&gt;1.ブラウザ(firefox)を用意&lt;p&gt;まずはMinefieldをインストール&lt;br /&gt;と言っても公式サイトからtarボールを取得して展開するだけ&lt;p&gt;展開したディレクトリ内のシェルスクリプト filefox を実行したら&lt;br /&gt;正式リリース版と同じプロファイルで起動した&lt;br /&gt;Minefield用のプロファイルを作ったが良い気もするけど&lt;br /&gt;とりあえず今回はこのまま使う事にする&lt;p&gt;早速WebGLのDemoを検索して表示してみたが&lt;br /&gt;WebGLなんて知らないよみたいな表示が。。。&lt;p&gt;&lt;br /&gt;2.ブラウザの設定&lt;p&gt;で、Minefieldの設定&lt;br /&gt;アドレスバーを使って about:config を表示&lt;br /&gt;フィルターで webgl に絞ってみる&lt;p&gt;&amp;#39;webgl.enabled_for_all_sites&amp;#39;&lt;p&gt;おぉ。これだ。&lt;br /&gt;trueに変更して再起動&lt;p&gt;。。。表示されない&lt;br /&gt;再度 about:config&lt;p&gt;&amp;#39;webgl.osmesalib&amp;#39;&lt;br /&gt;がブランクになってるのが怪しい&lt;p&gt;$ locate libmesa&lt;br /&gt;/usr/lib/nvidia/libGL.so.1.2.xlibmesa&lt;br /&gt;/usr/lib/nvidia/libGL.so.1.xlibmesa&lt;br /&gt;※使ったのはGeForceを積んだ自作機&lt;p&gt;という事で&amp;#39;webgl.osmesalib&amp;#39;に&amp;#39;/usr/lib/nvidia/libGL.so.1.xlibmesa&amp;#39;を設定&lt;p&gt;&lt;br /&gt;3.表示&lt;p&gt;再起動して再度表示&lt;br /&gt;今度はうまく動いてくれた&lt;br /&gt;いくつか試してみたけどほとんどのdemoがうまく動いてる&lt;p&gt;&lt;br /&gt;4.所感&lt;p&gt;良さそうな所&lt;br /&gt;　flashと違って右クリックもホイールも使える&lt;br /&gt;　javaと違ってプラグインもいらないし起動も早い&lt;br /&gt;　ECMA&lt;p&gt;気になる所&lt;br /&gt;　右ドラッグはマウスジェスチャも反応してしまう&lt;br /&gt;　ホイールもスクロールしてしまう&lt;br /&gt;　Webアプリにするにはポップアップメニューが問題になりそう&lt;br /&gt;　結構CPUを消費する(使ったマシンが貧弱ではあった(Pentium4 2.4C))&lt;p&gt;&lt;br /&gt;5.ところで&lt;p&gt;Minefieldすごい！とにかく描画が早い&lt;br /&gt;fireofxの次バージョンは相当に期待できる気がする&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8496042046971451598-5308133962776082273?l=nomem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nomem.blogspot.com/feeds/5308133962776082273/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8496042046971451598&amp;postID=5308133962776082273' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/5308133962776082273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/5308133962776082273'/><link rel='alternate' type='text/html' href='http://nomem.blogspot.com/2009/11/webgldemo.html' title='WebGLのDemoを見てみた'/><author><name>M.Nakajima</name><uri>http://www.blogger.com/profile/16656456539522239073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8496042046971451598.post-1231459711006796762</id><published>2009-11-16T00:55:00.000+09:00</published><updated>2009-11-16T00:57:22.632+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>dnsmasq</title><content type='html'>dnsmasqの概要：&lt;br&gt;  ・軽量なDNSサーバ&lt;br&gt;  ・DNSをキャッシュしてくれる&lt;br&gt;  ・DHCP機能も持っている&lt;br&gt;  ・TFTP機能も持っている※&lt;p&gt;　※TFTP：Trivial File Transfer Protocol&lt;br&gt;      UDPを使ったファイル転送プロトコル。FTPの軽量版。&lt;p&gt;導入目的：&lt;br&gt;  ・LAN上のホスト名を一元管理したい&lt;p&gt;付加価値：&lt;br&gt;  ・インターネットの名前解決が高速になる&lt;br&gt;  ・余計なパケットを他所様に流さなくて済む&lt;p&gt;インストール：&lt;br&gt;  Debian GNU/Linux(Lenny)&lt;br&gt;  #aptitude install dnsmasq&lt;p&gt;サーバの設定：&lt;br&gt;  /etc/dnsmasq.conf(抜粋)&lt;br&gt;  -----------------------------------------------------------------------&lt;br&gt;  ...&lt;br&gt;  # Never forward plain names (without a dot or domain part)&lt;br&gt;  domain-needed   #コメントアウト&lt;br&gt;  # Never forward addresses in the non-routed address spaces.&lt;br&gt;  bogus-priv       #コメントアウト&lt;br&gt;  ...&lt;br&gt;  # Include a another lot of configuration options.&lt;br&gt;  conf-file=/etc/dnsmasq.more.conf  #コメントアウト&lt;br&gt;  #conf-dir=/etc/dnsmasq.d&lt;br&gt;  -----------------------------------------------------------------------&lt;p&gt;  /etc/dnsmasq.more.conf&lt;br&gt;  -----------------------------------------------------------------------&lt;br&gt;  # キャッシュサイズを設定&lt;br&gt;  cache-size=150&lt;br&gt;  # 名前解決用の設定ファイルを指定&lt;br&gt;  resolv-file=/etc/resolv.dnsmasq&lt;br&gt;  -----------------------------------------------------------------------&lt;p&gt;  /etc/resolv.dnsmasq&lt;br&gt;  -----------------------------------------------------------------------&lt;br&gt;  # 知らないホストはルーターに任せる&lt;br&gt;  nameserver 192.168.11.1&lt;br&gt;  -----------------------------------------------------------------------&lt;p&gt;  /etc/resolv.conf&lt;br&gt;  -----------------------------------------------------------------------&lt;br&gt;  # 自前のDNS(dnsmasq)で名前解決する&lt;br&gt;  nameserver 172.0.0.1&lt;br&gt;  -----------------------------------------------------------------------&lt;p&gt;ルーターの設定：&lt;br&gt;　ルータが通知するDNSサーバにdnsmasqを立てたサーバを指定する&lt;p&gt;結果：&lt;br&gt;　・LAN上のホストのhostsにいちいち設定しなくても名前解決できるようになった&lt;br&gt;　・ブラウジングが格段に早くなった&lt;br&gt;　・LAN上のトラフィックが(名前解決の分)増えたハズだけど一瞬だから気にならない&lt;br&gt;　・dnsmasqのプロセスによるメモリ消費は約700KB。どうでも良い。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8496042046971451598-1231459711006796762?l=nomem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nomem.blogspot.com/feeds/1231459711006796762/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8496042046971451598&amp;postID=1231459711006796762' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/1231459711006796762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/1231459711006796762'/><link rel='alternate' type='text/html' href='http://nomem.blogspot.com/2009/11/dnsmasq.html' title='dnsmasq'/><author><name>M.Nakajima</name><uri>http://www.blogger.com/profile/16656456539522239073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8496042046971451598.post-956471914100334243</id><published>2009-11-08T23:33:00.000+09:00</published><updated>2009-11-08T23:42:00.523+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>作業中のファイルを自動的に世代管理#1</title><content type='html'>友人がOpenCanvasで試行錯誤をしているのを見て思った。&lt;br&gt;ファイルの変更を検知して自動的に世代管理してくれるツールがあったら便利だなぁと。&lt;p&gt;検索してみたところ、Windows用のツールはそれなりにあるようだ。&lt;br&gt;ちなみに良さそうに思えたのは「AutoVer」 (試してはいない)&lt;br&gt;[Beans&amp;#39; Place:&lt;a href="http://beanland.net.au/"&gt;http://beanland.net.au/&lt;/a&gt;]&lt;p&gt;Linuxでは需要が無いのか、ツールがない。&lt;br&gt;実装してみても良いなぁと思ったけど、&lt;br&gt;まずは細かいツールの組み合わせでできないか考えてみる事にした。&lt;p&gt;候補：&lt;br&gt;　make + watch&lt;br&gt;　inotify&lt;br&gt;　logrotate&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8496042046971451598-956471914100334243?l=nomem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nomem.blogspot.com/feeds/956471914100334243/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8496042046971451598&amp;postID=956471914100334243' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/956471914100334243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/956471914100334243'/><link rel='alternate' type='text/html' href='http://nomem.blogspot.com/2009/11/1.html' title='作業中のファイルを自動的に世代管理#1'/><author><name>M.Nakajima</name><uri>http://www.blogger.com/profile/16656456539522239073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8496042046971451598.post-7280113446456792151</id><published>2009-04-26T20:27:00.006+09:00</published><updated>2009-04-26T21:16:20.450+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>PythonでDynamicDNSのIP更新</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;普段 ieserver.net を利用しているのだけれど&lt;br /&gt;オフィシャルにあるIPアドレス更新サンプルスクリプト(Perl)を眺めていたらPythonで書いて見たくなった。&lt;br /&gt;&lt;br /&gt;「Pythonって括弧の代わりにインデントを使うやつだよね？」&lt;br /&gt;くらいの知識なので取り合えずオフィシャルでドキュメントを読んでみる。&lt;br /&gt;&lt;br /&gt;IP自動登録スクリプトを書いてみて思った事：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;schemeもこのくらい標準ライブラリが充実してたらなぁ&lt;/li&gt;&lt;li&gt;わりととっつき易い感じの言語だなぁ&lt;/li&gt;&lt;li&gt;ちょっとした処理でも意外と長くなるなぁ&lt;/li&gt;&lt;li&gt;最近の高級スクリプト言語っていうよりは高級C言語だなぁ&lt;/li&gt;&lt;li&gt;知ってる言語の中ではPHPが一番似てるかな(怒られそw&lt;/li&gt;&lt;/ol&gt;作ったスクリプトも残しておく。&lt;br /&gt;オフィシャルのは&lt;br /&gt;&lt;ol&gt;&lt;li&gt;　自分のグローバルIPを記録しておいて&lt;/li&gt;&lt;li&gt;　ieserver.netのページでグローバルIPを引いて&lt;/li&gt;&lt;li&gt;　代わってたら更新&lt;/li&gt;&lt;/ol&gt;って流れだけど、作ったのは&lt;br /&gt;&lt;ol&gt;&lt;li&gt;　自分のドメイン名でpingを発行&lt;/li&gt;&lt;li&gt;　pingが通らなかったらieserver.netのIP更新cgiを叩く&lt;/li&gt;&lt;/ol&gt;って流れにした。&lt;br /&gt;&lt;br /&gt;本当はこのスクリプトで使ってるos.system()はobsoleteになっているらしい。&lt;br /&gt;代替となるPopenクラスで実装して、ついでにieserverからのHTMLから時間とIPを抜き出してsyslogに投げるようなコードも書いてみたけど行数が4倍くらいになったし、読み辛くてうんざりしたから末梢した。&lt;br /&gt;&lt;br /&gt;このくらいの処理だと細かいコマンドを組み合わせてbashでやった方がスマートっぽかった。&lt;br /&gt;というかやっぱりシェルスクリプトで書き直した。&lt;br /&gt;取り合えず今回はPythonの基本構造とかどんな標準ライブラリがあるかとかがわかったからOK。&lt;br /&gt;----------&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;# coding=utf-8&lt;br /&gt;import os&lt;br /&gt;&lt;br /&gt;"""&lt;br /&gt;ping が通らない場合のみ ieserver.net の DNS 情報を更新する&lt;br /&gt;"""&lt;br /&gt;&lt;br /&gt;ieserverURL = 'http://ieserver.net/cgi-bin/dip.cgi'&lt;br /&gt;user = 'xxxxxx'&lt;br /&gt;domain = 'xxxx.xxx'&lt;br /&gt;password = 'xxxxxx'&lt;br /&gt;pingCount = 3&lt;br /&gt;&lt;br /&gt;if os.system('ping -c %d %s.%s  &gt; /dev/null' % (3, user, domain)) != 0 :&lt;br /&gt; os.system(&lt;br /&gt;  "wget -q -O - '%s"&lt;br /&gt;  "?username=%s"&lt;br /&gt;  "&amp;domain=%s"&lt;br /&gt;  "&amp;password=%s"&lt;br /&gt;  "&amp;updatehost=1'"&lt;br /&gt;  " &gt; /dev/null"&lt;br /&gt;  %&lt;br /&gt;  (ieserverURL, user, domain, password)&lt;br /&gt; )&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8496042046971451598-7280113446456792151?l=nomem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nomem.blogspot.com/feeds/7280113446456792151/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8496042046971451598&amp;postID=7280113446456792151' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/7280113446456792151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/7280113446456792151'/><link rel='alternate' type='text/html' href='http://nomem.blogspot.com/2009/04/pythondynamicdnsip.html' title='PythonでDynamicDNSのIP更新'/><author><name>M.Nakajima</name><uri>http://www.blogger.com/profile/16656456539522239073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8496042046971451598.post-5485260459694440355</id><published>2008-07-11T18:19:00.003+09:00</published><updated>2009-04-26T21:16:20.450+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Mac mini</title><content type='html'>Mac miniに乗り換えてみた。&lt;br /&gt;初Macのため刺激的。&lt;br /&gt;&lt;br /&gt;データの移行はMacの勝手がわからなくて時間がかかったけど&lt;br /&gt;難しい作業ではなかった。&lt;br /&gt;&lt;br /&gt;ひと通り使える環境にしたので&lt;br /&gt;開発環境を整えることにした。&lt;br /&gt;&lt;br /&gt;が、MacPortによるインストールは良く失敗する。&lt;br /&gt;そしてMacにはJava6が無い。&lt;br /&gt;気づいた時は「は？」って感じ。&lt;br /&gt;&lt;br /&gt;Debianからの移行のためパッケージ管理システムが無いのが非常に不便に感じる。&lt;br /&gt;アプリケーションのアンインストールってどうやるんだろ？w&lt;br /&gt;&lt;br /&gt;マウスでしかできない事が多いのも気になる。&lt;br /&gt;Ctrl+Alt+Enterでターミナルを開くにはどうしたら良いのだろうか。&lt;br /&gt;当面はDashboardにTerminal Widgetを貼ってしのぐ事にする。&lt;br /&gt;&lt;br /&gt;どうもMacってできる事が少ない気がする...&lt;br /&gt;Debianが何でもアリ過ぎるのかも知れないが...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8496042046971451598-5485260459694440355?l=nomem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nomem.blogspot.com/feeds/5485260459694440355/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8496042046971451598&amp;postID=5485260459694440355' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/5485260459694440355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/5485260459694440355'/><link rel='alternate' type='text/html' href='http://nomem.blogspot.com/2008/07/mac-mini.html' title='Mac mini'/><author><name>M.Nakajima</name><uri>http://www.blogger.com/profile/16656456539522239073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8496042046971451598.post-6867896694537146763</id><published>2007-03-09T09:11:00.000+09:00</published><updated>2009-04-26T21:16:20.451+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>jdk6 日本語ドキュメント</title><content type='html'>API仕様を含めてJDK6の日本語ドキュメントが2007/03/07から公開されたらしい. scanだけなら日本語の方が早いから今DLしている.&lt;br /&gt;&lt;br /&gt;実際には今月(Mar 2007)の頭頃から数日間だけは, web上で閲覧可能だったが, 数日前からAPI仕様だけ英語になったりしていた. 自分は全く知らないが誰かが何かしらの作業を頑張ってくれていたのだろう...と勝手に推測.&lt;br /&gt;&lt;br /&gt;詳細不明だけど, 翻訳作業をした誰かさん, お疲れさまでした.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8496042046971451598-6867896694537146763?l=nomem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nomem.blogspot.com/feeds/6867896694537146763/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8496042046971451598&amp;postID=6867896694537146763' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/6867896694537146763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/6867896694537146763'/><link rel='alternate' type='text/html' href='http://nomem.blogspot.com/2007/03/jdk6.html' title='jdk6 日本語ドキュメント'/><author><name>M.Nakajima</name><uri>http://www.blogger.com/profile/16656456539522239073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8496042046971451598.post-5518943915720004292</id><published>2007-03-01T14:42:00.000+09:00</published><updated>2007-03-01T15:16:06.499+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>テキストとバイナリ</title><content type='html'>　テキストとバイナリの一番特徴的な違いはひとかたまりのデータの長さを知る/伝える方法にあると思う. バイナリの場合は一般には0x00から0xFFまで全てのビットパターンが有効な意味を持つ. 対して文字は使わないビットパターンがある. この使わないビットパターンに特別な意味を持たせる事でデータの区切りに利用したり, 次の 8bit が連続したデータである事を示す事ができる. 前者の代表例が制御文字, 後者の&lt;br /&gt;代表例はマルチバイト文字で良く使われる最小上位 1bit のフラグ.&lt;br /&gt;&lt;br /&gt;　最近, ネットワーク越しにアプリケーションを利用する事が多くなってきているけどそこで利用されているプロトコルでは XML などのテキストデータを利用する場合がほとんどだ. 通信にテキストを利用する場合, エンコーディング(の合意とサポート)が問題になったり, データサイズが大きくなったりっていう問題がある.&lt;br /&gt;&lt;br /&gt;　それでもテキストを利用するのは, データの構造(とか区切り)を表現しやすいからだと思う. 画像ファイルにしても音声にしても, 大概のバイナリデータは最初にヘッダがあって, どこからの何バイトが何のデータとかそういうメタ情報がそこに格納される. その情報が得られるまでは実際のコンテンツを解釈できない. 通信の場合, 今何のデータを解釈しているのかわからないと通信の終了も解釈できないし, データの論理的なエラーも検出出来ない. だからコンテンツの送信に先だって少なくともデータの種類とサイズを通知する必要がある.&lt;br /&gt;&lt;br /&gt;　送信側でデータを生成して送る場合に, 送信に先だってデータサイズを通知する必要があるとすると, 生成したデータをバッファとか, 何か送信側のリソース上に配置して, そのサイズを調べるまでそれを開放できない事になる. だからテキストデータを利用する. テキストなら取り合えず送信を開始して, 全部済んだら, これで終わりって意味の特別なビットパターンを送れば良い.&lt;br /&gt;&lt;br /&gt;　じゃぁテキストベースのプロトコル上でバイナリデータを送りたい場合はどうすれば良いだろうか？ メールで使われてるバイナリからテキストへのエンコーディングが参考になる. 言ってみれば 0xff っていうビット列を 0xff っていう文字列として送信すればテキストベースで遅れるぢゃんって言う発想の応用だ. でもそれってすごく肥大化する. だったら通信内容を圧縮すれば良い. zip 圧縮してから送信すれば大抵は問題にならないくらい小さくなる. zip はワンパスで圧縮できるからそういうフィルター的な使いかたに向いてるし.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8496042046971451598-5518943915720004292?l=nomem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nomem.blogspot.com/feeds/5518943915720004292/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8496042046971451598&amp;postID=5518943915720004292' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/5518943915720004292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/5518943915720004292'/><link rel='alternate' type='text/html' href='http://nomem.blogspot.com/2007/03/blog-post.html' title='テキストとバイナリ'/><author><name>M.Nakajima</name><uri>http://www.blogger.com/profile/16656456539522239073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8496042046971451598.post-2640357068701138265</id><published>2007-02-21T02:32:00.000+09:00</published><updated>2009-04-26T21:16:20.451+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>SISC with JSR-223 still not available?</title><content type='html'>　JDK6(Mustang) から Scripting Support が正式に組み込まれた(JSR-223として規格が公開されている)が, 既存の実装のひとつに SISC という scheme エンジンがあるという事で早速試そうとした...が何故かできない.&lt;br /&gt;&lt;br /&gt;　この JSR-223 はもともと Java による実装が存在していた言語から対応が始まっているようで, Java による scheme 実装は自分が知ってる限りでは kawa, SISC, JScheme, SchemeDriver の４つ.&lt;br /&gt;&lt;br /&gt;　これまで作者が自由に設計していたブリッジ部分に今回共通インターフェイスが用意された訳で, このフレームワークを通して利用するためには実装の修正が必要である.&lt;br /&gt;&lt;br /&gt;　SISC も以前から独自の設計で実装されていたのを修正する必要があるはず. どうも修正されてないものを拾ったようだ. てか, 本当に修正されたものがあるのか不明.&lt;br /&gt;&lt;br /&gt;　Java からスクリプト言語が利用できるという事は, 自分にとってお気に入りの技術である JavaApplet を自分にとってお気に入りの言語である scheme で定義できる訳で, ちょっと時間を作って触れておきたい所である.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8496042046971451598-2640357068701138265?l=nomem.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nomem.blogspot.com/feeds/2640357068701138265/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8496042046971451598&amp;postID=2640357068701138265' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/2640357068701138265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8496042046971451598/posts/default/2640357068701138265'/><link rel='alternate' type='text/html' href='http://nomem.blogspot.com/2007/02/sisc-with-jsr-223-still-not-available.html' title='SISC with JSR-223 still not available?'/><author><name>M.Nakajima</name><uri>http://www.blogger.com/profile/16656456539522239073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
