Ubuntuのapt-getを早くする

Ubuntu 12.04でapt-get updateなどしてると
http://jp.archive.ubuntu.com/ubuntu/
にアクセスできないとか、遅いとかになったので早くして見ました

バックアップとってからしたほうがいいかもですが
$ sudo vim /etc/apt/source.list
:%s/http:\/\/jp.archive.ubuntu.com\/ubuntu/http:\/\/ftp.jaist.ac.jp\/pub\/Linux\/ubuntu/gc

http://jp.archive.ubuntu.com/ubuntu/
から
http://ftp.jaist.ac.jp/pub/Linux/ubuntu
へアドレスを置換しました

だいぶ早くなりました

phpのstrposの挙動を確認する

phpのstrpos関数を動きを確認したのでメモ

strposは

文字列内の部分文字列が最初に現れる場所を見つける

とあります
http://php.net/manual/ja/function.strpos.php

使い方は


echo strpos("abcdefg", "c");
// 2

のように、文字列”abcdefg”のなかに”c”が何番目(0始まり)にあるかを返します
もしなければ、FALSEが返ります

よく間違えやすいのが、文字”a”がなければ..のとき


var_dump(false == strpos($str, 'a'));
// true

というコードです

これはaが0番目にあるため、strposは0を返す
phpでは false == 0 は true になります
== だけだと型をみないので
=== で型も見て比較すると大丈夫です


var_dump(false == 0);
// true

var_dump(false === 0);
// false

strposでは型もみて比較しましょう


// もし文字がなければ
if (false === strpos($str, 'a')) ...

// もし文字があるなら
if (false !== strpos($str, 'a')) ...

// 3項演算子でも===で
$str = (false !== strpos($str, 'a') ? 'ある' : 'ない';

3項演算子のときにうっかりしそうです

git logで日本語が表示されないときの直し方

hetemlのサーバーへsshでログインしてgit logを見た際に日本語が化けていました

git logのページャはlessで動いているらしい
lessがutf-8に対応してないと文字化けするようです

$ export LESSCHARSET=utf-8
を打てば解決

起動時に有効にするなら
$ vi ~/.bashrc
に書けばよく

即座に適応するなら
$ source ~/.bashrc
としたらいいです



bitbucketへ公開鍵方式でssh接続する

bitbucketでデフォルトではパスワード認証でgit cloneやgit pushができます
パスワード入力が手間なのと、セキュリティ向上のため公開鍵方式でssh接続してみました

bitbucket用の鍵を生成

$ ssh-keygen -t rsa
キー名を指定 => ~/.ssh/bitbucket

キー名はbitbucketにしたので、
bitbucket
bitbucket.pub
が生成されます

公開鍵の文字列をコピーします
$ cat bitbucket.pub
ssh-rsa xxxxxxxxxxxxxxxxxxxx
をまるごとクリップボードへコピー

bitbucketに公開鍵をはりつける

https://bitbucket.org/account/user/(your account name)/ssh-keys/
へアクセス(your account name)はお持ちのものを

Labelに適当な名前をつけて、コピーした公開鍵を貼り付けます
bitbucket-sshkey

ローカルで接続の準備をする

sshクライアント(手元のパソコン)でsshの設定を書きます
$ vi ~/.ssh/config
Host bitbucket
Hostname bitbucket.org
User git
IdentityFile ~/.ssh/bitbucket

bitbucketという名前で、生成した秘密鍵を指定します

git clone済みのリポジトリがあったので設定し直します
$ git remote remove origin
$ git remote add origin bitbucket:(your account name)/(repository name)

ためしにpushしてみて
$ git push -u origin master

問題なくpushできれば終了です

新規にcloneするときは
$ git clone bitbucket:(your account name)/(your repository name)
でできます