この前 MySQL をパッケージでインストールしたら、 Mac 起動時に mysqld が勝手に起動する。これを起動しないようにするには、 /etc/hostconfig を修正すれば良い。
$ sudo vi /etc/hostconfig
AFPSERVER=-NO- AUTHSERVER=-NO- AUTOMOUNT=-YES- NFSLOCKS=-AUTOMATIC- NISDOMAIN=-NO- TIMESYNC=-YES- QTSSERVER=-NO- WEBSERVER=-NO- SMBSERVER=-NO- SNMPSERVER=-NO- MYSQLCOM=-NO-
ちなみにスタートアップスクリプトの場所は、
/Library/StartupItems/MySQLCOM/MySQLCOM
/usr/local/mysql/support-files/mysql.server
なので、これを使って起動したいときは、
$ sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
$ sudo /usr/local/mysql/support-files/mysql.server start
Mac/MacBook 特有のショートカットキーで、 Windows と違うものだけとりあえず書いておく。少しずつ慣れてきた。
覚えちゃえば見ないだろうけど。
Windows の CTL 系ショートカットは CMD キーを代わりに使えば効くことが多い。
あと、 Terminal はコントロールキーがそのままコントロールキーとして働く。で CMD キーを併用すればコピーアンドペイストもできて便利。
ブラウザは Safari 。
Mac の標準ではドットファイルやシステムファイルが Finder 上に表示されない。これを表示させるコマンドは以下の通り。
$ defaults write com.apple.finder AppleShowAllFiles TRUE $ killall Finder
戻すには TRUE を FALSE にして実行すればよい。
実は safari には標準で firebug のような機能がついていて、標準ではこれが無効になっているだけだったりする。これを有効にするには、 com.apple.safari プロパティに WebKitDeveloperExtras を追加してやれば良い。
$ defaults write com.apple.Safari WebKitDeveloperExtras -bool true
もしくは Finder で ~/Library/Preferences/com.apple.Safai.plist を開いて、さっきのプロパティを追加しても OK 。
これで確認したいエレメントを右クリックすれば、Inspect Element っていうのが確認できるはず。
たまに blog を書いていて、自分の環境が分からないときがある。そんなときに便利なコマンドをいくつかメモ。
とりあえずディストリビューションの名前だけでも知りたい時は
# cat /proc/version # cat /proc/version_signature
バージョンも知りたい時は
# cat /etc/issue
最近は ActionScript 3 に移行中、色々と 2 と違う点があって、その度に色々と調べてる。最近さりげなくはまったのがこの flashvars の扱い方。
ActionScript 2 では勝手にスクリプト内の変数に値が代入されたが、 3 では少し違うらしい。
ActionScript 2 で使われていた getURL() 関数は廃止になり、代わりに navigateToURL() を AS3 では使うことになったみたいです。
navigateToURL(new URLRequest("javascript: alert('hoge');"), "_self");
最後の "_self" をつけないとブラウザによっては動作しません。
prototype から jquery に全面的に移行中、どうしてもどっちも使いたいときがある。そんな時に問題になるのは $ を使ったショートタグの扱いだが、以下のようにすればどっちも使える。
var $j = jQuery.noConflict(); // jquery $j(document).ready(function(){}); $j("#hoge").html("fuga1"); // prototaype $("hoge").innerHTML = "fuga2";
PDF などを Web サーバに配置して配布した際に、ブラウザのプラグインで PDF を開いてしまい、ダウンロードダイアログを表示させる事ができない事がある。
色々やり方はあるが、こんなことに一々 php などのスクリプトを書くのもバカらしいので、 apache の headers module であっさりとやってしまう方法のメモ。
とりあえず環境は apache2 系。
引き続き ActionScript 3 関連ですが、これは 2 と大分異なり、 2 の時は XML オブジェクトの load() を呼んだりしてたけど、 3 ではこの手のロード関連は、 Loader/URLLoader に集約する感じになっているんじゃないかと思う。
このブログでは SQLite を使ってるんだけど、先ほどサーバ以降後に始めてブログを更新しようとしたら、表題のエラーが出てできない。データファイルのパーミッションを確認しても 777 だし、そもそも読み込みはできてる。
調べてみると SQLite は更新時に dbfilename-journal というファイルを一時的に作成するらしく、ディレクトリの書き込み権限がないと更新できないらしい。
もう少し親切なエラーメッセージならなー、と思った。
Slicehost で VPS を借りて ubuntu を使い始めました。とりあえず色々と設定中で、 ssh で protocol 1 を有効にしたら
Disabling protocol version 1. Could not load host key
と言われたので、
# ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key
とホストキーを作成し、
# vi /etc/ssh/sshd_config
# HostKeys for protocol version 1 HostKey /etc/ssh/ssh_host_key
を追加。
Linux コマンドに chattr コマンドという chmod とかよりちょっと細かめにファイルのパーミッションを設定できるコマンドが存在知ることを今日知ったのでメモ。
きっかけは以下のコマンド結果。
[root@latte ~]# id uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) [root@latte ~]# chmod 755 /usr/bin/wget chmod: changing permissions of `/usr/bin/wget': Operation not permitted
root が削除できない??
これは chattr +i で root すら削除できないように設定されていたためらしい。 cpanel のセットアップスクリプトにこの手のものが含まれてる事があるっぽい。
解決するには +i したものを -i する。
# chattr -i /usr/bin/wget
先のポストに引き続き、 IIS x PHP 絡みで、 Zend Framwork を IIS 上の PHP で動かす時のメモ。特に rewrite モジュールが apache のようにはいかないので、それについて。
とりあえず今回の環境は以下の通り
IIS6 上で php が動作してる場合に、 php.ini の変更を IIS の再起動無しで反映させるには、アプリケーションプールをリサイクルすればいいらしい。
IIS Manager を開き、ツリービューのホスト配下の [Application Pools](アプリケーションプール?) を開き、 DefaultAppPool (デフォルトアプリケーションプール?)を右クリックして Recycle (リサイクル?)を実行する。
PHP の is_null() だとなんだのやったついでに SQL の NULL 比較についても書いておく。
よく論理削除を制御するためのカラムを作って、 0 か 1 で削除されてるかの判断したりするけど、初期値で NULL がセットされちゃったりして deleted = 0 も deleted = 1 とかやっても条件がマッチしなかったりする。
これは NULL を判別するには deleted IS NULL か deleted IS NOT NULL にしないと駄目だから。
でもじゃあ
deleted = 0 OR deleted IS NULL
とかはちょっとかっこ悪いので、 IFNULL() 関数なんかを使って
IFNULL(deleted,0) = 0
とやると、中々見た目がいい。
今回は PHP を理解する中でもっとも難しいとされている isset() 関数や is_null() 関数や、false や NULL に対する == や === 演算子の結果についてまとめてみた。
何が難しいかって別に分かれば難しくないんだけど、はっきり言ってややこしすぎる。
俺はこの PHP の実装があまり好きじゃない。
でもとにかくこれは理解しておかないと、後々よく分からないバグではまったりするので一応まとめてみた。
Zend Framework には Zend_Controller_Router_Route っていうのがあり、これで URL のパスの制御ができる。
例えば、 enjoitech.jp/help っていう URL を実装したい時に、 Zend の標準の設定では /help は helpController の indexAction に通じるわけだけど、これを Router でうまい事変更してやれる。
ここの例では staticController っていう static なコンテンツを全部管理するコントローラーを作っておいて、そこに helpAction っていうアクションをつくり、/help をそこに通じるようルーティングする方法を説明する。
MySQL は CSV をインポートしたりエクスポートしたりできる。またバージョン 5.0 からはそのままデータテーブルとして扱ったりすることができるらしいんだけど、 CentOS-4.4 の MySQL5 では configured されてないっぽい。その内されたら試す。
SELECT * FROM table_name INTO OUTFILE 'data.txt' FIELDS TERMINATED BY ',';
LOAD DATA INFILE 'data.txt' INTO TABLE table_name FIELDS TERMINATED BY ',';
INTO の前に REPLACE とか IGNORE とかをつけると、重複キーが見つかった場合のアクションを指定できる。