Twitter で tinyurl にクエリ文字列の一部が渡されないことがある。
twitter.com で以下のようなにクエリ文字列を含むURLをポストすると、
https://www.google.com/accounts/ServiceLogin?service=youtube &continue=http://www.youtube.com/signup&passive=true
http://local.google.co.jp/maps?f=l&hl=ja&view=map&ie=UTF8&om=1 &ll=35.683861,139.75258&spn=0.029246,0.029826&z=15
このように表示される。
http://tinyurl.com/yo32xk://www.youtube.com/signup&passive=true
http://tinyurl.com/27ee5x,139.75258&spn=0.029246,0.029826&z=15
そして、tinyurl を展開すると、
http://tinyurl.com/yo32xk
→https://www.google.com/accounts/ServiceLogin?service=youtube &continue=httphttp://tinyurl.com/27ee5x
→http://local.google.co.jp/maps?f=l&hl=ja&view=map&ie=UTF8 &om=1&ll=35.683861
となるので、残りの
://www.youtube.com/signup&passive=true
,139.75258&spn=0.029246,0.029826&z=15
とくっつけると、元に戻るんだけど…
たしかに、","や":"は URLエンコードしなければならないのだが、API経由でこれらをURLエンコードして
https%3A%2F%2Fwww.google.com%2Faccounts%2FServiceLogin %3Fservice%3Dyoutube%26continue%3Dhttp%3A%2F %2Fwww.youtube.com%2Fsignup%26passive%3Dtrue
http%3A%2F%2Flocal.google.co.jp%2Fmaps%3Ff%3Dl%26hl%3Dja %26view%3Dmap%26ie%3DUTF8%26om%3D1%26ll%3D35.683861 %2C139.75258%26spn%3D0.029246%2C0.029826%26z%3D15
と送っても結果は、同じ。
クエリ文字列を含めた全てを tinyurl に渡すには、クエリ文字列を一度URLエンコードしてから(ただし、"&" "=" "%" はエンコードしない)、全体をURLエンコードする必要があるようだ。
具体的には、
とすることで、
http://tinyurl.com/ytlcxb
→https://www.google.com/accounts/ServiceLogin?service=youtube &continue=http%3A%2F%2Fwww.youtube.com%2Fsignup&passive=truehttp://tinyurl.com/yshtdz
→http://local.google.co.jp/maps?f=l&hl=ja&view=map&ie=UTF8 &om=1&ll=35.683861%2C139.75258&spn=0.029246%2C0.029826 &z=15
無事、tinyurl のみとなった。
クエリ文字列中の ":" "/" "," が、"%3A" "%2F" "%2C" にエンコードされているが、上記サイトは正しく表示された。
Twitter 側では、全体をデコードして URLと思われる文字列を tinyurl に渡すのだから、しかたがないのかな?
さて、twitte.rb をアップデートしなくっちゃ。。。
先ほど、fshin2000さんのつぶやき でTwitterにポスト出来ない文があることがわかったので、調べてみた。
jazzanovaさんのつぶやき で「半角Tがポスト出来ない」とのことで、一生懸命"半角Tが混ざった文 *rb*”とポストすれど、一向にポストできない状態にならず何故?と不思議がっていたのだが、最後の" *rb*"がいけなかったみたい。
" *rb*"を除いて"半角Tが混ざった文"としてポストすると、ポストすれどもポストすれどもタイムラインに上がってこなかった。
それからまた、jazzanovaさんのつぶやき で「半角のdも駄目」とのことで、"半角"というマルチバイト文字+半角英字1文字+”何か”等マルチバイト文字の組合せでポストできない英字がありそうだということで調査することに。
調査した内容は、以下のとおり
これらで、以下の文字がタイムラインに上がってこなかった。
これらの文字と Twitter Support(1.1. Twitter Lingo: The Official Commands) とで照らし合わせてみると、
ということがわかった。
これらのコマンドは、IMから送信するものと思っていたのだが、どうもAPI経由で送っても有効になるようだ。
試しに、「L username」とポストしてみたところ、見事にLeaveした。
また、英文字の前後に入れるスペースだが、以下のように前にスペースが入っていればよいようだ。
「半角のTが1文字入った日本語文」の意味がわからずごめんなさいでした。> fshin2000さん
先日来、製作を続けている twitte.rb だが、リリースの準備が整ったので Version 0.1.1 をリリースする。
twitte.rbプロジェクト(SourecForge.JP)
アイコンとロゴのデザインをしてくれた Mieさんに、改めてお礼を云いたい。ありがとうございました。
ご要望等は、Twitter / kichi まで、Reply(@kichi)か DM 願う。
また、Twitter / twitte_rb で、リリース情報を配信する予定。
Addしておくと、情報を得られるかも。
ご覧いただければわかると思うが、アーティストは Mie さんだ。
先日のエントリでも書いたようにTwitterでつぶやいたらアイコンとロゴのデザインをしてくださり、送ってくれたのだ。
本当にありがたいことである。
twitte.rbのほうは、だいぶできてきた感じ。
公開の準備が整えば、公開できると思っているのだが、いまのところ Vine Linux 4.1 でしか動かしていないので他のバージョンやディストリビューションでは動くのかさえ不明。
以下のパッケージがインストールされていれば動くと思われるが、なにぶんLinuxのソフトを公開したことがないので何をチェックしたらいいのやら…
というよりも、使いたいと思っていただける方はいるのだろうか?
とはいうものの、自分でLinuxでTwitterクライアントを使いたかった(作りたかった)だけなので、公開することが目的ではなかったことに気がついた。
なので、ユーザさんがいらっしゃるかどうかは気にしないようにするとしよう。
ちなみに、Windowsでも動くようにしたいなぁ… と考えてはいます。
ということで、現時点でのスクリーンショットを公開します。
FRIGO に行ってきた。
きっかけは、これ
Twitter / fuuri
今日、1人でひっそり新宿FRIGOに行こうかなー。実は自分もその予定だったという方、いたらメッセージをw
無性に呑みたくなって、いそいそと新宿まで。
呑んだビールはこれ
メンバは、fuuriさん、Masatakaさん、entoさん、izuizuさん(参加順)
初めてお会いする方々ばかりだったんだが、とても楽しい語らいができた。
これも Twitter のおかげなのかと思うばかりである。
特に関西弁に嵌まった。ここで晒すのもなんだが、自分には「関西弁属性」なるものがあったのだと再認識。
また楽しく語らいたいものである。
久しぶりにビールをたらふく呑んだ後、味源で「味噌でっかいどう」ラーメンを。
完璧、暴飲暴食。
当分 Twitter 依存症は治りそうにない。
最近ハマっている Twitter だが、Linuxで動作するクライアントがなかったので製作を始めてみた。
ruby/Gtkにて製作しているが、Gtkでのプログラミングは初めてなものでわからないことだらけだ。
だが、コツコツと進めるしかない。
そして、Gtkアプリにはアイコン等グラフィックが必要になるのだが、Twitter でつぶやいてみた。
今、Ruby/GTKを使ってTwitterクライアント作ってるんだけどアイコンを作ってくれるような優しい方はいらっしゃるかなぁ…? 10:20 PM May 16, 2007
そしたらなんと!アイコンを製作してくれる方がいらっしゃった。
なんと喜ばしいことか!
そして、昨日アイコンを届けてくれたのだ。
早速、そのアイコンを使用して(コーディングはしてないが)プログラミングし、何度かやりとりを行った末、無事デザインが決まった。
現在、そのアイコンを用いて試用しているが、なんとも例えようのない感覚に襲われてる。
まるで、拙作のTwitterクライアントに命が吹き込まれたかのようだ。
「Twitter繋がり」というだけで、アイコンをデザインしていただけるとは、なんと素晴らしいことだろう。
お互いに共通の興味を持つということは、こんなににもパワーを与えてくれるのか。
この場を借りて、アーティストの方に感謝の意を表したい。
ありがとう。
アイコンをデザインしていただいたアーティストは、時期がくればお知らせする。
制作中のTwitterクライアントの名称は「twitte.rb」とするつもりだ。
Linux、MacとWindowsでの「〜」が気になったので、UTF-8について調べてみた。
Manpage of UTF-8
符号化
以下のバイト列が文字の表現に使用される。どのバイト列を使用するかは文字の UCS コード番号に依存する:0x00000000 - 0x0000007F:
0xxxxxxx
0x00000080 - 0x000007FF:
110xxxxx 10xxxxxx
0x00000800 - 0x0000FFFF:
1110xxxx 10xxxxxx 10xxxxxx
0x00010000 - 0x001FFFFF:
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0x00200000 - 0x03FFFFFF:
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x04000000 - 0x7FFFFFFF:
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
ということは、1バイト目が
ということになるようだ。
それから、
UTF-8 - Wikipedia
BOMについて
UTF-8はエンディアンに関わらず同じ内容になるので、本来はBOM(Byte Order Mark)を付加する必要はないが、一部のエディターなどではBOMの有無を選択できる。この際、BOMありの方をUTF-8、なしの方をUTF-8Nと呼ぶこともあるが、このような使い分けは日本以外ではほとんど知られておらず、また公的規格などによる裏付けもないため、その使用には注意が必要である。
ということなので、エンディアンを気にせずにバイトストリームとして扱えばよいこともわかった。
そして件の「〜」だが、UTF-8のバイト列にすると
であることから、"\xE3\x80\x9C" というバイト列を "\xEF\xBD\x9E" に変換すれば、Windowsでも「〜」が表示できるできることを確認した。
勉強になります。
最近のコメント