Archive for 7月, 2008

MySQL:auto_incrementが最大値まで達したとき

auto_incrementにしたカラムの型がintなら2147483647、bigintなら9223372036854775807がautoincrementの最大になる。 実際に最大値までauto_incrementを進めてみる。 ALTER TABLE table1 AUTO_INCREMENT= 2147483647; auto_incrementが最大値に達するともうそのテーブルには行を追加することはできなくなります。 oracleのシーケンスならCYCLEオプションがあるけどmysqlのauto_incrementにはそのような機能は無いらしい。 ではauto_incrementが最大値に達したとき、どうすればよいのか? 単純に ALTER TABLE table1 AUTO_INCREMENT= 1; としても、table1に1より大きいキーが存在する限りauto_incrementは1に戻らない。 DELETE FROM table1; –データを全部消す。 ALTER TABLE table1 AUTO_INCREMENT= 1; ならばauto_incrementは1に戻るので、循環シーケンスと似たような動きにするにはINSERTトリガーで 1. 対象テーブルのauto_increment値が最大に達しているかチェック。最大なら2.へ 2. 対象テーブルのデータを別テーブルに退避 3. 対象テーブルのデータをDELETE 4. ALTER TABLE~でauto_incrementを初期値に設定 という流れになるけど、INSERTの度に1.のチェックを走らせるのはちょっと嫌(1/2147483647の為に余計な処理を入れたくない)。また、退避後のデータをどう扱うかも微妙(UNIONするにしても別のキーが要るし・・・)だから int autoincrementでキーの枯渇が心配ならbigint型にしたほうがよいと思う。 bigintの最大値は9223372036854775807。intの約42億倍もある。 これは1日に1億個のキーを消費しても2億年持つという計算になる。

MySQL:プロセスをkillする

MySQLにログインして、プロセスの一覧を表示し削除したいプロセスのIDを確認する。 SHOW PROCESSLIST; IDを指定して削除する。 kill [ID];

php: Smartyのdate_formatで前のゼロを表示しない方法

Smartyのdate_formatで先頭に0をつけない月と日を出力するには、引数の書式指定部分にそれぞれ”-”(マイナス)を付ける。 {$mydate|date_format:’%-m:%-d’} ‘%m%d’なら’07/05′になる。 -をつけて’%-m:%-d’なら’7/5′になる。

php:PEAR phpunitのインストール

足りないPEARライブラリとphp-extensionを入れてから、phpunit/PHPUnitをインストール。 # pear install pear/Image_GraphViz # pear install pear/Log # yum install php-common # yum install php-dom # yum install php-pdo # pear install phpunit/PHPUnit

linux:yumレポジトリを一時的に追加する

普段は公式のレポジトリだけチェックしたいけどphpだけは最新にアップグレードしたい。そんなときに。 目的のパッケージがあるレポジトリに対しての設定ファイルを追加する方法。 RPM-GPG-KEYをインストール。 # rpm –import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka /etc/yum.repos.d/の下にrepoファイル追加 /etc/yum.repos.d/utterramblings.repo [utterramblings] name=Jason’s Utter Ramblings Repo baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka 目的のパッケージをアップデートしたらenabledを0に設定し、普段は参照しないようにしておく。

Apache:エラーと対応方法

とりあえず、エラーログを確認すること。全てはそれから。 ドキュメントルートへのアクセスがforbiddenになるとき こんなエラーのとき Directory index forbidden by Options directive: /var/www/html/ →Option Indexesが設定されていないため、/でindex.html等にアクセスできていない。 Permission deniedのエラーが出るとき こんなエラーのとき (13)Permission denied: access to / denied ディレクトリのパーミッションを確認する ユーザディレクトリにドキュメントルートを置いたときはユーザディレクトリも実行可能でないといけない。 chmod +x /home/ユーザ seLinuxの設定が怪しいとき seLinuxが原因かどうかは一時的にseLinuxを切ってみれば解る。 /etc/selinux/configを変更する。 /etc/selinux/config SELINUX=disabled 設定後はサーバ再起動が必要 # reboot

Word:リーダー線の出し方

メニューから「書式」→「タブとリーダ」→「タブ位置」に何文字目までリーダで送るかを入力。リーダーを(なし)以外に設定して「設定」→「OK」 タブ位置で指定した位置までタブで送ると指定のリーダー線が表示されます。

Word:無変換キーでのカタカナに変換できなくなるとき

Ctrl+Shiftを押してIMEのモードを切り替えると無変換キーでカタカナに変換できるようになる。 凄く悩んでいたけど、このページに救われた。 http://notonly.blog36.fc2.com/blog-entry-52.html

php:Windows環境でphp.exe+apache+MySQLの環境を作る

php php.netからバイナリをダウンロードする。 インストーラでもいいけど、とりあえずzipにしとく。 解凍したらフォルダごと適当なところに移動する。(以降、仮にC:php-5.2.6-Win32に置いたと仮定して読んでください。) フォルダの中にあるphp.ini-recommendedをコピーしてphp.iniに名前を変える apache apache.orgから現在の最新版Apache2.2のWindows用インストーラをダウンロード&実行する。 オプションは適当に選ぶ。 httpd.confに設定を追加する。 標準のパスでインストールしたなら、C:Program FilesApache Software FoundationApache2.2confに設定ファイルhttpd.confがある。 以下の設定を追記する。 LoadModule php5_module “C:php-5.2.6-Win32php5apache2_2.dll” PHPIniDir “C:php-5.2.6-Win32″ AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps linux環境の”httpd configtest”に変わるコマンドは httpd.exe -t このコマンドを実行して”Syntax OK”が表示されることを確認する。 OKならapacheを再起動する。 httpd.exe -k restart 公開ディレクトリにtest用のphpファイルを置いて、phpが実行されていればOKです。 XdebugをWindows環境で使うには http://pecl4win.php.net/ext.php/php_xdebug.dll からphp_xdebug.dllをダウンロードしてエクステンションDirに保存する。 エクステンションとPEARを使う&開発環境用にphp.iniを編集する php.ini #pearディレクトリをinlude_pathに入れる include_path = “.:C:php-5.2.6-Win32pear” #開発用にdisplay_errorsをOnにする display_errors = On #extension_dirを設定する extension_dir = “C:php-5.2.6-Win32ext” #エラーログを出力する error_log [...]

秀丸:hidemaruで.BAKファイルを作らないようにする

メニューバーから、その他→ファイルタイプ別の設定→その他→保存・読み込み→バックアップファイルの作成のチェックをはずす