2010年7月30日金曜日

.html内部でもphpを実行させる

なんだかよく忘れる。

httpd.conf の中に、
AddType application/x-httpd-php .php .html
って感じでAddTypeに.htmlの拡張子を追加

2010年7月29日木曜日

MacのTerminalにkeepAliveを設定

macのterminalで作業してて、すこし放っておくとsshの接続が切れちゃう。
そんなとき、putty使ってた時代はkeepAliveを設定してたなぁと思い返してmacのterminalでもできないものかと調べてみた。

~/.ssh/configの中に、ServerAliveIntervalの値を設定するだけでいいみたい。

$ vi ~/.ssh/config
Host *
ServerAliveInterval 120

これで120秒ごとに通信してsshを維持してくれる。

参考
Mac OS XのterminalでkeepAliveを設定する - Dive into the Tech World!
[を] Mac OS X から ssh 接続してもすぐ切れちゃう問題に対処

Mac OS XでDNSキャッシュをクリア

macbookでブラウジングしてて、たまにあるDNSが引けない時があって、でも一定時間経つと直ったりして地味に困ってた。

なので次回からそうなった場合はDNSキャッシュをクリアして対応することにした。

$ sudo dscacheutil -flushcache

これでOK。

参考
dscacheutil(1) Mac OS X Manual Page

Flickrの画像を一括でダウンロードする

Flickrの画像を一気にダウンロードしたい。
それもオリジナルサイズで。

以下3つのツールを使う。

まず、firefoxのアドオンである、DownThemAll!Greasemonkeyを入れる。

そのあと、
DownThemAllと併用してflickrのセットの一括ダウンロードを可能にするグリースモンキー「Link Original Image」
のGreasemonkey scriptを使う。

これでOK。


参考
Flickrにアップロードしたオリジナル画像を、一括再ダウンロードする方法。 | kimihiko Tech

mysqlのrootのパスワードを忘れたときどうするか

まずconf編集
/etc/my.cnf
の、
[mysqld]の下に
skip-grant-tables
を追加

mysql起動
$ sudo /etc/init.d/mysqld start
$ mysql -uroot mysql

パスワードを更新
mysql> UPDATE user SET Password=PASSWORD('hogehogehoge') WHERE User='root';
mysql> FLUSH PRIVILEGES;

そして、my.cnfの
skip-grant-tables
をコメントアウト

で、再起動
$ sudo /etc/init.d/mysqld restart

これでoK。

2010年7月27日火曜日

Bloggerでソースコードをハイライトする「Code Prettify」をブックマークレット化

Bloggerでソースコードをハイライトする「Code Prettify」を導入したのはいいけど、ちょっと変換作業が大変だったのでブックマークレット化してみた。自分用。

■ブックマークレット
Code Prettify Bookmarklet for Blogger
※ブックマークレットの追加は上記リンクを右クリック→追加、かブックマークツールバー欄にドラック&ドロップで。


ソースの中身
javascript:

function getSelectedTextAndReplace() {
    IE='\v'=='v';
    var SelectedText;
    if(IE) {
        var objSelectedText = document.selection;
        var objTextRange = objSelectedText.createRange();

        if (document.selection.createRange().text.length == 0) {
            return;
        }
        try {
                SelectedText = objTextRange.text;
                objTextRange.text = strToBloggerCodeTag(SelectedText);
        } catch (e){
        }
    } else {
        SelectedText = window.getSelection().toString();

        var obj = document.getElementById("postingHtmlBox");
        var ns = obj.selectionStart;
        var ne = obj.selectionEnd;
        var nl;
        if ( ns != ne ) {
            var txt = strToBloggerCodeTag(SelectedText);
            txt = obj.value.substring(0, ns) + txt + obj.value.substring(ne,obj.value.length);
            obj.value = txt;
            obj.setSelectionRange(ns,ns+nl);
        }
    }
}

function strToBloggerCodeTag(str) {
  return "<pre class=\"prettyprint\">\n" + escapeHTML(str) + "\n</pre>";
}

function escapeHTML(strTarget){
    var div = document.createElement('div');
    var text =  document.createTextNode('');
    div.appendChild(text);
    text.data = strTarget;
    return div.innerHTML;
}

getSelectedTextAndReplace();

void(0);

たぶんfirefoxとchromeでしか使わないけど、IEでも一応動いた。
名前とかいまいちだしコードツギハギだけど、とりあえず自分用なのでOK!

またリファクタリングしたい。

あとblogger編集画面textareaのidであるpostingHtmlBoxの中身をみてるので、
id名が変わったら書き換えが必要になりそう。

参考
bookmarkletで選択文字列を取得することを考える - 徒書
JS : テキストエリア内の選択文字列の置き換え :logical error

選択文字列をBloggerコード貼りつけ用文字列に変換したい その2

前のものはHTMLのエスケープが少々やっかいだったので、少し改良。

javascript:

function getSelectedTextAndReplace() {
    IE='\v'=='v';
    var SelectedText;
    if (IE) {
        SelectedText = document.selection.createRange().text;
    } else {
        SelectedText = window.getSelection().toString();
    }
    alert (strToBloggerCodeTag(SelectedText));
}

function strToBloggerCodeTag(str) {
  return "<pre class=\"prettyprint\">\n" + escapeHTML(str) + "\n</pre>";
}

function escapeHTML(strTarget){
    var div = document.createElement('div');
    var text =  document.createTextNode('');
    div.appendChild(text);
    text.data = strTarget;
    return div.innerHTML;
}

getSelectedTextAndReplace();

void(0);

参考
Javascript/HTML特殊文字のエスケープ - 俺の基地

選択文字列をBloggerコード貼りつけ用文字列に変換したい その1

とりあえず色々やっつけで、alert()するところまで。
このあとブックマークレット化したい。

改良版へ

javascript:

function getSelectedTextAndReplace() {
    IE='\v'=='v';
    var SelectedText;
    if (IE) {
        SelectedText = document.selection.createRange().text;
    } else {
        SelectedText = window.getSelection().toString();
    }
    alert (strToBloggerCodeTag(SelectedText));
}

function strToBloggerCodeTag(str) {
  str = replaceAll(str, "<", "&lt;");
  str = replaceAll(str, ">", "&gt;");
  str = replaceAll(str, "&lt", "&amp;lt;");
  str = replaceAll(str, "&gt", "&amp;gt;");
  return "<pre class=\"prettyprint\">\n" + str + "\n</pre>";
}

function replaceAll(expression, org, dest){
    return expression.split(org).join(dest);
}

getSelectedTextAndReplace();

void(0);


参考
Javascriptで選択文字列の取得 - Road To Nowhere

2010年7月23日金曜日

サイトを移転したので.htaccessにリダイレクト設定を書いた

完全移行なのでこんなかんじ。

.htaccess
Redirect permanent  /  "http://hogehoge.com"

2010年7月9日金曜日

Google AJAX Libraries API

Google AJAX Libraries API - Google Code


<script src="http://www.google.com/jsapi"></script>
<script>
  // Load prototype 1.6
  google.load("prototype", "1.6");

  google.setOnLoadCallback(function(){
      // ここにページロード時の処理を書く
  });
</script>


各ライブラリに取り組んでいる主要な関係者と直接連携をとっていて、
リリースごとに最新の安定したバージョンを受け取っているらしい。

setOnLoadCallbackはonload()を拡張しているみたいな感じ
ちゃんとDOMの構築が終わってから呼び出してくれる。

2010年7月5日月曜日

お名前.comのVPSサーバを使うときのメモ

レンタルサーバを探していて、相乗りのレンタルサーバよりVPSのほうがいいので探した。
で、結局
HDD120GB・メモリ1GB・root付【お名前.com VPS】月額2,475円〜★
を借りました。
最近よくキャンペーンしていて、初期費用の5250円が0円+月額2940円が3ヶ月無料と、値段的にも良心的ないい感じ。

スペックも
OS : CentOS 5
メモリ: 1GB
HD : 120GB
となかなか。

セットアップなど使うまでにいくつかメモ。

■SSHするためにポート22をあける
コントロールパネルの「システム設定」→「ファイアーウォール」からSSHを許可する

■yumを使えるようにする
セキュリティアップデートをなしにすると自動的にyumが入るので、
コントロールパネルの「システム設定」→「セキュリティ」→「アップデート」をなしにする。

一応、
※変更後は、自動・手動アップデートに戻すことはできません。また、すべてのコントロールパネル操作に関してサポート対象外となります。以後の運用について、ご自身で解決が可能なお客様のみご選択ください。
なので、これは覚悟の上。

まぁ普段サーバに入ってコマンドラインでパッケージ管理してる人は特に問題ないと思う。

■ユーザの追加
$ su -
$ /usr/sbin/useradd kasahi
$ passwd kasahi
$ /usr/sbin/visudo -> rootに追加
---------------
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
kasahi  ALL=(ALL)       ALL
---------------

■sudoをつかえるようにする
しかし、追加したユーザでsudo を使うと、、
$ sudo ls
audit_log_user_command(): 接続を拒否されました

と出るのでsudoのバージョンを上げる
$ su -
$ mkdir pkg
$ cd pkg
$ wget http://www.sudo.ws/sudo/dist/sudo-1.6.9p20.tar.gz
$ tar xvf sudo-1.6.9p20.tar.gz
$ cd sudo-1.6.9p20
$ ./configure
$ cp /etc/pam.d/sudo ~/sudo_bak   (※一応バックアップ)
$ cp sample.pam /etc/pam.d/sudo
cp: `/etc/pam.d/sudo' を上書きしてもよろしいですか(yes/no)? yes
$ make
$ make install

これでsudoが使えるようになった。

■sudoとyumが使えるようになったら
とりあえずパッケージをアップデート
$ sudo yum update


■yumで個人的に入れるもの
ここは随時追記していこう
$ sudo yum install zsh


おすすめレンタルサーバーはこちら

2010年7月2日金曜日

Mysqlのデータをmysqldumpでダンプして定期的にバックアップをとる

{$db_name}, {$password}, {$host_ip}, {$backup_dir}は各自の環境にて読み替えで。

いちおう元に戻すコマンドもメモ。

-mysql database dump command
$ mysqldump {$db_name} -u{$user_name} -p{$password} -h{$host_ip} --opt > db_`date +%Y%m%d%H%M%S`.dump

-mysql database restore command
$ mysql -u{$user_name} -p{$password} -h{$host_ip} {$to_insert_db_name} < db_**********.dump


これをcronに書いて定期的にbackupを取る。
あと定期的にダンプしたデータも消す。

# Backup DB
0 5 * * * /usr/bin/mysqldump {$db_name} -u{$user_name} -p{$password} -h {$host_ip} --opt > {$backup_dir}/db_`date +\%Y\%m\%d\%H\%M\%S`.dump
0 6 * * * /usr/bin/find {$backup_dir} -maxdepth 1 -type f -mtime +7 | /usr/bin/xargs /bin/rm


あとcronをチェックするときはログを見るとよい。
$ tail -f /var/log/cron