Archive

Archive for 9月, 2008

vimでtwitterしたい、そんな時。

9月 16th, 2008

vimtwitterで投稿できるってことで試してみました。
Windows環境でね!
curl必須。
.vimrcにユーザー、パスワードと必要ならproxyを設定する。

let vimtwitter_login="username:password"
" let vimtwitter_proxy="proxy.exsample.local:8080"

使い方は以下の4つ。
1.コマンドラインからポスト

 :P osttoTwitter
Your Twitter: 入力文字

2.カレント行をポスト

:CPosttoTwitter

3.バッファをポスト

:BPosttoTwitter

4.ヴィジュアルモードの選択範囲をポスト
選択して「T」

もちろん日本語何それおいしいの?という状況なので、iconvかましてURLエンコードしてあげます。
以下vimtwitter.vimのパッチ。

57,59c57,64
< 	let mesg = substitute(mesg, '%', '%25', "g")
< 	let mesg = substitute(mesg, '"', '%22', "g")
< 	let mesg = substitute(mesg, '&', '%26', "g")
---
>   if has('iconv')
>     let mesg = iconv(mesg, &encoding, 'utf-8')
>     let mesg = substitute(mesg, '[^ a-zA-Z0-9_.-]', '\=s:Char2Hex(submatch(0))', 'g')
>   elseif
>   	let mesg = substitute(mesg, '%', '%25', "g")
>   	let mesg = substitute(mesg, '"', '%22', "g")
>   	let mesg = substitute(mesg, '&', '%26', "g")
>   endif
63a69,86
> endfunction
>
> function! s:Char2Hex(c)
>   let n = char2nr(a:c)
>   let r = ''
>
>   while n
>           let r = '0123456789ABCDEF'[n % 16] . r
>           let n = n / 16
>   endwhile
>
>   if strlen(r) % 2 == 1
>           let r = '0' . r
>   endif
>
>   let r = substitute(r, '..', '%\0', 'g')
>
>   return r

URLエンコードはtdiary-vimを参考というかそのまま利用させていただきました><

twitter

ifsetorって結局実装されたの?

9月 11th, 2008
PHP
  $id = isset($_GET['id'])? $_GET['id']: null;

こんな感じのisset地獄から抜け出す手出しをしてくれるifsetorという(ネーミングが微妙な)関数が実装されるされないとうわさが昔ありました。

PHP
  $id = ifsetor($_GET['id']);
  function ifsetor(&$val, $def = null)
  {
      return isset($val)? $val: $def;
  }

引数を参照にすることにより存在しない場合でもNoticeがでないなかなかCoolで便利な関数の予定でしたが。。。

C:\php5.3-win32-200809110205>php -v
PHP 5.3.0alpha3-dev (cli) (built: Sep 11 2008 02:02:06)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2008 Zend Technologies

C:\php5.3-win32-200809110205>php -r "var_dump(function_exists('ifsetor'));"
bool(false)

PHP5.3なし

C:\php6.0-win32-200807280630>php -v
PHP 6.0.0-dev (cli) (built: Jul 28 2008 02:06:04)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2008 Zend Technologies

C:\php6.0-win32-200807280630>php -r "var_dump(function_exists('ifsetor'));"
bool(false)

PHP6.0なし

ifsetorの実装はなし。。。
その代わり(結果として代わりじゃないけど)PHP5.3では「?:」演算子が追加。

PHP
$user_id = isset($_GET['user_id']) ?: "anonymous";

と書いても期待した動作にはならないので、結局従来の書き方をするしかない。

で、結果的に「?:」をこういう場面で使うことはないんじゃないかと思っています。
そろそろ「?:演算子」について一言言っておくか – Do You PHP はてな

そもそもissetをしてくれる演算子ってわけじゃないので仕方ないですけどね。

PHP

あるある

9月 10th, 2008

らき☆すたと間違えてLuck Stealer買ってきた。
かずはじめのマンガが読めるのはジャンプSQだけっ!

日記

iモードIDの取得方法

9月 9th, 2008

URLに「guid=ON」というパラメータを付けると、拡張ヘッダにiモードIDが付く、という仕様です。
ke-tai.org > Blog Archive > ケータイの端末ID・ユーザIDの取得についてまとめてみました

iモードIDの取得方法として、さらっと書かれていますがはまり所。
リクエストメソッドがPOSTの場合もリクエストURIにguid=onが含まれていなきゃいけない。

PHP
<form action="/hoge.php?guid=on" method="post">
<input type="submit" />
</form>

こんな感じに。

web