短縮サービスを利用した文字列情報圧縮の新たな試み

Download Report

Transcript 短縮サービスを利用した文字列情報圧縮の新たな試み

2012/10/21
電気・情報関係学会北海道支部連合大会
URL短縮サービスを利用した
文字列情報圧縮の新たな試み
北海道情報大学 情報メディア学部
情報メディア学科 准教授
新井山 亮
はじめに
• 各種のURL 短縮サービスが提供
– Twitter を筆頭とする,投稿文字数制限を有する
短文投稿Web サービスの普及
• 代表的URL 短縮サービスを応用した文字列
情報圧縮手法を新たに提案
• 情報圧縮効果の視覚化
– 2 次元バーコードによる圧縮前後の情報量比較
2
URL短縮サービス
• http://bit.ly/Orrrhz
– 支部会公式Webサイト
http://www.hokkaido.ieice.org/
shibukai/
• ( / 以下)任意設定も可
– bit.ly/hiulab129
⇒ ゼミ公式Webサイト
– bit.ly/microsoft
⇒ www.apple.com
• goo.gl/fbsS
http://goo.gl/fbsS.qr
⇒ www.google.com
– goo.gl/fbsS.qr ⇒ QR code
3
文字列情報の圧縮
青空文庫
http://www.aozora.gr.jp/
吾輩は猫である
(夏目漱石)
4
URL短縮サービスの応用
URL短縮サービス/長尺文字列の短縮
• 長尺の文字列
– 「吾輩は猫である・・・」
• URLエンコーディング
– %B8%E3%C7%DA%A1%CA%A4%EF%A4 ・・・
• 架空の長尺URLの生成
– http://jpn.jp/%B8%E3%C7%DA%A1%CA%A4 ・・・
• URL短縮 ⇒ http://goo.gl/Xynw0
5
Google URL Shortener
6
URL短縮サービスの応用
長尺文字列の伸張
http://jpn.jp/
http://goo.gl/Xynw0
(休眠中と思われるWebサーバ)
⇒ http://jpn.jp/吾輩(わがはい)は
猫である・・・
7
URL短縮サービスの応用
URL短縮サービス/コマンドラインからの伸張
8
これは《情報圧縮》か?(※おことわり)
標題は「URL短縮サービスを利用した文字列情報圧縮の新たな試み」
• URL短縮Webサーバ内
部での「ハッシュ法」に
よるデータ格納・・・
• http://goo.gl/Xynw0
– Xynw0 は 「キー」
– Xynw0 自体は圧縮前の
長尺文字列情報に由来
して生成されていない
• 「情報圧縮」ではない
– 標題:厳密性を欠く
9
情報圧縮効果の視覚化
我輩(わがはい)は~彼の掌(てのひら)
452 bytes
Version 14, 73 x 73 cells, ECC level: L
http://goo.gl/Xynw0
19 bytes (5 bytes)
Version 2, 25 x 25 cells, ECC level: H
10
URL短縮サービスの応用
URL内へのHTML情報の埋め込み
Google App Engine (Official)
Google App Engine Launcher
11
URL短縮サービスの応用
URL内へのHTML情報の埋め込み
• 中央バス時刻表
札幌ターミナル ⇒ トーメン団地
http://bustei2.com/s.cgi?2366+2663
• URLにHTMLを埋め込み
http://localhost:8080/?<HR><B>札幌
ターミナル(2366-07)</B>&nbsp;から
・・・
<BR>%5B0%5D<A%20accesskey="0"
%20href="./index.htm">中央バス時
刻表TOP</A><BR><HR>
• 短縮
– http://goo.gl/HyAyq
12
URL短縮サービスの応用
URL内へのHTML情報の埋め込み
故意の Cross Site Scripting
"decoder.py" (Python)
Google App Engine Launcher
(Stop)
13
URL短縮サービスの応用
URL内へのHTML情報の埋め込み
Google App Engine Launcher
(Run)
http://goo.gl/HyAyq
⇒ http://localhost:8080/ ・・・
14
URL短縮サービスの応用
Google URL Shortener API c/w UNIX commands
Getting Started - URL Shortener API — Google Developers
https://developers.google.com/url-shortener/v1/getting_started
• URL短縮
– http://www.google.com/
> curl
https://www.googleapis.com/
urlshortener/v1/url -H 'ContentType: application/json' -d
'{"longUrl":
"http://www.google.com/"}'
{
“kind”: “urlshortener#url”,
“id”: “http://goo.gl/fbsS”,
“longUrl“:
http://www.google.com/
}
15
URL短縮サービスの応用
Google URL Shortener API c/w UNIX commands
Getting Started - URL Shortener API — Google Developers
https://developers.google.com/url-shortener/v1/getting_started
• URL伸張
– http://goo.gl/fbsS
> curl
'https://www.googleapis.com/
urlshortener/v1/url?shortUrl=htt
p://goo.gl/fbsS'
{
"kind": "urlshortener#url",
"id": "http://goo.gl/fbsS",
"longUrl":
"http://www.google.com/",
"status": "OK“
}
16
URL短縮サービスの応用
Google URL Shortener API c/w UNIX commands
JPEG image, 512 x 512 pixels, 335KBytes
• JPEG image
↓ uuencode –m (base64)
• text data
↓ URL Shortner API
Jyz0E,4zjNi,49CT5,75Rd
E,DgcQA,…,1UHMV,mZ4
L6,YhWF3,c50Nr,9yQtL,
↓ URL Shortner API
• http://goo.gl/1M7d9
17
URL短縮サービスの応用
Google URL Shortener API c/w UNIX commands
>
uuencode -m mandrill.jpg < mandrill.jpg | ( sed 's/^\(beginbase64\) \([0-9][0-9][0-9]\) \(.*\)/\1,\2,\3 /g' | tr -d \\n | sed
's/^\(begin-base64,[0-9][0-9][0-9],.* \)/\1\n/g' | sed
's/====$/\n====\n/g' ) | fold -w 1980 | ( while read LINE ; do echo
$LINE | sed -e 's|\(.*\)|http://jpn.jp/\1|g' ; done ; unset LINE )
| ( while read LINE ; do echo ${LINE} | ( read longUrl ; r="error";
t=1 ; while [[ $r =~ error ]] ; do r=`curl
https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyBlZiMR56Zn
GnRQuQGP28jciLITHWqib1E -H 'Content-Type: application/json' -d
'{"longUrl":"'$longUrl'"}' 2>/dev/null` ; sleep $((t - 1)) ;
t=$(($t * 2 )) ; done ; echo $r ) | tr -d \\n | sed -e
's|^.*goo.gl/\(.[0-9a-zA-Z]*\).*$|\1,|g' ; done ) | sed -e
's|\(.*\)|http://jpn.jp/\1|g' | ( read longUrl ; r="error"; t=1 ;
while [[ $r =~ error ]] ; do r=`curl
https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyBlZiMR56Zn
GnRQuQGP28jciLITHWqib1E -H 'Content-Type: application/json' -d
'{"longUrl":"'$longUrl'"}' 2>/dev/null` ; sleep $((t - 1)) ;
t=$(($t * 2 )) ; done ; echo $r ) | tr -d \\n | sed -e
's|^.*goo.gl/\(.[0-9a-zA-Z]*\).*$|\1|g' | tee mandrill.gus.b64.txt
1M7d9
18
uuencode (base64) format
Google URL Shortener API c/w UNIX commands
•
7622 Lines (uuencode -m mandrill.jpg < mandrill.jpg | wc –l )
begin-base64 644 mandrill.jpg
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/
...
50VOFDki6M6dOUYU5uKacJpuc7cs06dlKVKSj0/7ZSnQh7SM8LUpRhVVKSdV
TVSKnTlJVo8yqSnBJ05zXLN1abbUpP8A/9k=
====
↓ ... | tr –d \\n | fold –w 1980
/9j/4AAQSkZJRgABAQAAAQABAAD/2w ... O21Pwf41h/Z/1HxFoVhY6R40h0u3vY
...
8d/j18BZbrUz4W+Nvwuv5YoZbRrnSP ... lJVo8yqSnBJ05zXLN1abbUpP8A/9k=
•
-> 234 Lines (... | tr –d \\n | fold –w 1980 | wc –l )
19
URL短縮サービスの応用
Google URL Shortener API c/w UNIX commands
• http://goo.gl/1M7d9
JPEG image, 512 x 512 pixels, 335KBytes
↓ URL Shortner API
Jyz0E,4zjNi,49CT5,75Rd
E,DgcQA,…,1UHMV,mZ4
L6,YhWF3,c50Nr,9yQtL,
↓ URL Shortner API
• text data
↓ uudecode –m (base64)
• JPEG image
20
URL短縮サービスの応用
Google URL Shortener API c/w UNIX commands
> Echo '1M7d9' | ( read shortUrl ; r="error"; t=1 ;
while [[ $r =~ error ]] ; do r=`curl
"https://www.googleapis.com/urlshortener/v1/url?sh
ortUrl=http://goo.gl/$shortUrl&key=AIzaSyBlZiMR56Z
nGnRQuQGP28jciLITHWqib1E" 2>/dev/null` ; sleep
$((t - 1)) ; t=$(($t * 2 )) ; done ; echo $r ) |
tr -d \\n | sed -e 's|^.*jpn.jp/\(.*\)",.*$|\1|g'
| tr ',' \\n |( while read LINE ; do echo ${LINE}
| ( read shortUrl ; r="error"; t=1 ; while [[ $r
=~ error ]] ; do r=`curl
"https://www.googleapis.com/urlshortener/v1/url?sh
ortUrl=http://goo.gl/$shortUrl&key=AIzaSyBlZiMR56Z
nGnRQuQGP28jciLITHWqib1E" 2>/dev/null` ; sleep
$((t - 1)) ; t=$(($t * 2 )) ; done ; echo $r ) |
sed -e 's|^.*jpn.jp/\(.*\)",.*$|\1|g' | tr ',' ' '
; done ) | fold -w 60 | uudecode -o /dev/stdout >
mandrill.uud.b64.jpg
21
まとめ
• URL 短縮サービス“Google URL Shortener” を
利用する新たな文字情報圧縮手法を提案し,
QR コードの生成による情報圧縮効果の視覚
化を行った.
• 厳密には「情報圧縮」ではなく, URL短縮Web
サーバ内部での「ハッシュ法」によるデータ格
納/参照手法の一例.
22
提案する応用例
• 長尺文字列からのQRコード生成
– URL短縮を応用,文字列を短尺化
⇒ QRコードの小型化,誤り訂正能力強化
• HTML埋め込み長尺URLをURL短縮
– URL短縮サーバのみでHTMLを伸張 → 閲覧
⇒ Webサーバの省力化,信頼性の向上
• バイナリ・データのテキスト化
– URL短縮応用手法の範囲拡大(画像,音声,etc.)
⇒ ex. 材料に3D data QRコード → NC工作機械
23
想定される課題
• URL短縮/伸張の時間
– 1件あたり1~2秒 ⇒ mandrill.jpg の場合
(512 x 512 pixels, 335KBytes) ・・・ およそ5分以上
• URL短縮サービスの永続性
– キー文字列増加,仕様変更,サービス停止,etc.
⇒ サービスの利用方法として適正かどうか
• 既存のクラウド・サービスの存在
– 各種クラウド・データ・ストレージ・サービス
⇒ 比較 → 新規性,優位性,独自性 ・・・ ???
24