2011年11月28日月曜日

さくらのレンタルサーバに git をインストールする方法 version 2011/11/28

課題

さくらのレンタルサーバに git をインストールする。

環境

さくらのレンタルサーバ スタンダード

インストール方法

$ #create git install directory($HOME/usr/local)
$ cd
$ mkdir $HOME/usr
$ mkdir $HOME/usr/local

$ #create git source directory
$ cd
$ mkdir $HOME/src
$ mkdir $HOME/src/git

$ cd $HOME/src/git
$ wget 'http://git-core.googlecode.com/files/git-1.7.7.4.tar.gz'
$ tar xzf git-1.7.7.4.tar.gz
$ cd git-1.7.7.4
$ ./configure --prefix=$HOME/usr/local
$ gmake prefix=$HOME/usr/local
$ gmake prefix=$HOME/usr/local install
$ export PATH=$HOME/usr/local/bin:$PATH

$ git version
git version 1.7.7.4

参考

2011年11月26日土曜日

さくらのレンサバで codeigniter

さくらのレンサバで codeigniter を使いたいときの
.htaccess の書き方メモ。

CI-2 系だと公式のおすすめ .htaccess は
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
となっていますが、これだとさくらのレンサバでは動きません。

ポイントとしては、まず、RewriteBase /my_dir/ というディレクティブがいる事。(これをやればまずはリライト自体は動く。)

もう一つは RewriteRule の index.php の後に ? がいる事。(これをやらないと CI の index.php へわたる引数がおかしくなるらしく、何も動きません。)

まとめると、
RewriteEngine on 
RewriteBase /my_dir/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]
(codeigniter のバージョンは 2.0.3)

2011年9月24日土曜日

URL を QR コードに変換する Bookmarklet + CSS3 animation.

今開いているページの URL を QR コードに変換したものを
そのページ内に画像として挿入するブックマークレットを作成しました。
挿入時のアニメーションに CSS3 を使っています。
chrome 14.0.835.186, firefox 6.0.2, safari 5.1 で動作確認。
ブックマークバーなんかに登録して使うと使いやすいかと思います。

QR! <- これをブックマークに登録

(function(){
  var size=150;
  var t0=50;
  var t1=32;
  var img=document.createElement('img');
  img.src='http://chart.apis.google.com/chart?cht=qr&chs='+size+'x'+size+'&choe=UTF-8&chld=H&chl='+encodeURIComponent(location.href);
  var s=img.style;
  s.opacity=0;
  s.position='absolute';
  s.top=''+(pageYOffset+t1)+'px';
  s.left=''+(-t0)+'px';
  s.zIndex=9999;
  s.boxShadow='1px 1px 5px black';
  s.borderRadius='0 15px 15px 0';
  s.webkitTransition='0.3s linear';
  s.MozTransition='0.3s linear';
  img.onclick=function(){
    s.opacity=0;
    s.left=''+(-t0)+'px';
    setTimeout(function(){
      document.body.removeChild(img);
    },1000);
  };
  document.body.appendChild(img);
  setTimeout(function(){
    s.left='0px';
    s.opacity=0.9;
  },30);
})();
やっている事としては、<img /> タグの dom を作って、
src に google chart api の
QR の api のアドレスを代入して、まず画像を作ります。
それのスタイルをいろいろ設定した後、
body に appendChild します。
body に append した後で、left と opacity を再度代入する事で、
CSS3 transition が効くので animation して img が出現します。
img の onclick に逆のスタイル変更を設定しおけば、消えるときは逆の
アニメーションで消えていきます。
アニメーションで消えた後、ちょっと間をおいて、
body から removeChild する事で、GC 対象になるように
しています。
size とか t1 変数の値を変更する事で、見た目のサイズとか、出現位置を変更できます。
size = QRコードのサイズ
t1 = 画像の出現位置、画面の上からの距離 (px単位)

2011年9月12日月曜日

SQLite 日本語を含む文字列の長さとバイト数の出し方

文字列としての長さを出したい場合は、単純に length 関数

select length('あいう');
=> 3


エンコーディングされた上でのバイト数を出したい時は、
hex で16進数表記にしてからlength をとって、2 で割る。

select length(hex('あいう')) / 2;
=> 9

HTML5 Web Sql Database に使われている Sqlite のバージョンを調べるワンライナー

openDatabase(1,1,1,1).transaction(function(t){t.executeSql("select sqlite_version()a",[],function(t,r){alert(r.rows.item(0).a);})});


たとえば、Google Chrome 13.0.782.220 m というバージョンだと、Sqlite は 3.7.6.3 というバージョンらしい・・・

2011年8月23日火曜日

Accept-charset in IE

たとえば、API 経由で 何かを POST したいときなんかに、
フォームのあるページの文字コードと、POST の受け側の文字コードが
違うという場合があって、そういう時にそのままPOSTすると、日本語が文字化けする。

そういう時の為の HTML 属性があって、 たとえば、<form charset="utf-8">
とかすると、もとのページの文字コードに関係なく、utf-8 でエンコードしたデータ
を POST することが出来る。

はず、なのだけど、IE だと、なぜか上の指定が効かなかったりする。
web を眺めていると主に 2通りの解決方法が考えられていて、
一つは onclick などで、submit に対して、javascript をフックして、
document.charset = "utf-8";
などとして、ページの文字コードを変換してしまう方法。
もうひとつは、そもそも、accept-charset が無視されるのは、
form の input の中にそのページの文字コードで解釈できない文字がある場合だけだ
という、tips を利用し、ダミーで
<input type="hidden" name="dummyForIE" value="&#65533;">
というようなフォームを用意して、強制的に、accept-charset を解釈させるという方法。

元の文字コードで表示できなくて、POST 先の文字コードでは表示出来る文字がすぐに
分かるのであれば、後者のやり方の方が良さそう。
(上のダミー input は ecu-jp から、utf-8 の場合の例)

2010年11月16日火曜日

bit.ly に icon 画像を保存してみた。

やり方:
まず、PHP が動くサーバーに次のような PHP スクリプトを用意する。(PHP が無ければ、適宜同内容で置き換える。)


<img src="<?php echo $_GET['d']; ?>" />


この PHP を仮に、http://kt3k.org/m.php というアドレスに置いたとする。
こうすると、d に data URI scheme に変換した画像文字列 A を入れれば、A に相当する画像が表示される。
具体的には、
http://kt3k.org/m.php?d=A
にアクセスすれば、A に相当する画像が表示される。
この時、
http://kt3k.org/m.php?d=A
に相当する文字列が、2048 Byte を超えていなければ、bit.ly で短縮する事が出来る。(=bit.ly に画像データを保存している。)

data URI は
http://www.kawa.net/works/js/data-scheme/base64.html
ここなんかで作成可能。

ブラウザに貼付けるときはこのままでいけるけど、
bit.ly で短縮するためには、さらに、urlencode する必要あり。
スクリプト書くのが面倒なときは、
http://urlencode.net/
ここなんかにコピペする。

たとえば、

のような画像を上の方法で URL に変換すると、


http://kt3k.org/m.php?d=data%3Aimage%2Fgif%3Bbase64%2CR0lGODlhKgAuAIYAAAEBAoSEhERERcTDtiUlKLmWkHJdWuPj5FxbUxMTE6Cgnu%2FCukI1NLi1pFRTTHR0dfPz85OSjjMzMyMdHNivqItxbAkJClVFQ9PT1GtqZhsbG7OztNnVvsvLzDMsK6qqrLq6vPz89dvb3AkHCIyLe0xMTCsrK%2Bvr7GRkYxgTFKamqUk9O3x8fZycnZx%2FetzdvwcHCE9APsLCxMSfmFxcXBYWGKOjpDs7PL27qlVVVHh2bvf3%2BJKSlDY2OeO4sZN3cw8PEVxLSGtrbB4eIc%2FP0L6%2BwP39%2FYuLiS0tMe%2Fv8ODcw%2F%2F%2F%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAqAC4AAAj%2BAJdYAECQxZKDCBMqXHiQwIQUIwAwXAJgRIoJDm9M3JjwQpALDAgAscAQCAEGHkFq5DjRQIUfFQysIJCAoYcYLmEaiCGA5UIDLgrMKODCQEiGK4AKJWoUiE%2BEFyoUoOCDQoEKQTwwjDq16tULE1ayJBDkxwwfC3zM%2BBFko1m0atkSIKjBAQkcHJQoedEggwkAE7hStYp1o9TBXyfQLXHEiGPHA3SYsJCCgdKhRS9svMyUQQoAFgjkeEw6gAQLIwjgfBkzhgmOOVsTiBh6tOMQj00nAGAS5cejHH2DFEkQgOjHuB0LmUzQIsaHI3w%2Bh1gcgIYSyB%2FTmFu9%2BlOK3en%2BCsju2IGG8AS%2Fg%2B9uQcN40o5znEevvjqC4u7hK59MI3x9gv1BQBABDuhnxBFHnCdgf6AhZAFJG6GXgAQoQHDCgw%2BecOAR4UGIIYQMFccgABIIgQEGHz7YAQY2zNefBTUJhGGExSVAwA1HdHCAEaDB8CAARpyAgQiTDQTjQR%2FSCAAMGtzAAwYQGEjaARgI8GOKD2400IARYCClfkKiQBCWIC6UgAUwJHCEhl%2FqB8EGZ56J5UQSmEBAjm1%2BeYQJp5E5EQ145inlEQ6QmeVEeEZJmggfqAACm%2FodIaehG3WgHwYfrCjDB17C10EHIxl6KEM5WioCBiuKQGUHKkD66RH%2BBIiaJEMlsNACCJ%2BeAMGuFn4qAoIICjCprBMRIMADnB6gK68QKNuBDEXwsJ2ssy40xA0PgHBAlIo6ZqGQH6AgQQ3UzsjQjQHIsKwR3HorZAslaBBquRM1GUAHbLZr4a4Y8CBsueYupAESQhShK7vsnnDCAQzLcMQNw1I7UQLu2SACtwyfKsKpIAQAMcCjCiwBCxtgsPDGCrUgxA0E1HDmSEBEHLC1ApCcqggTlSABARq4nEACQ5A050ZCZDokzhv1YGfPNWgAYoocGY0ySxIM4XINsTpoAcwcKXvC1BzdWAINOZQAogA0sBAADxwpfADYG2mAwgM8HGEQQg8c8QFMCCC0fTLSLLWQqQwbJORoB3AnpKrbiU8kgwgKAy6DDEcDrpCyFr5t%2BUYmZ47QiSdunpDXX4vOEAakm87Swl9%2FpyrDb6sn%2B%2BWwq35QQAA7

となって、
ちゃんと bit.ly に保存できる。

http://bit.ly/bnoWjm