メイン | 2010年11 月 »

31 posts from 2010年10 月

2010/10/02

ApacheとPHPのコンパイルオプション備忘録

いろいろなプロジェクトやったなかで、
とりあえずこれで困らないだろう程度のコンパイルオプション。
なんか有効じゃないオプションもあるけど、
とりあえず。

突っ込み募集。


■PHP
./configure \
--with-pcre-regex \
--with-pear \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-openssl \
--with-xml \
--with-dom \
--with-xmlrpc \
--with-layout \
--with-mcrypt \
--with-gd \
--enable-zend-multibyte \
--enable-track-vars \
--enable-calendar \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-mbregex \
--enable-bcmath \
--enable-sockets \
--enable-trans-sid \
--enable-ftp \
--enable-exif \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-xpm-dir \
--with-freetype-dir \
--enable-dbx \
--enable-magic-quotes \
--with-iconv \
--with-gmp \
--with-dom-xslt \
--with-dom-exslt \
--with-pgsql=/usr/local/pgsql \
--enable-soap \
--with-oci8=instantclient,/usr/lib/instantclient_10_2 \
--enable-pcntl

 


■Apache
./configure \
--enable-so \
--enable-rewrite \
--enable-cgi \
--enable-ssl

 

ディズニーシーいってきました

平日から会社休んでディズニーシーいってきました。

心の洗濯ですね。
ハロウィンのせいかずいぶん混んでまして、
春に行ったときとは比べ物にならない並びでございました。
平日で100分待ちとか、さすがですね。
ハロウィン季節ということで、
こまごまとハロウィンの演出がありましたね。
で、最後にマゼランでハロウィンディナーいただいてきました。
またいきます。

 

 

daemontools インストールメモ

ほかブログからの転載なんですが、

備忘録として。。
daemontools
再起動してくれるlinuxのツール
1./package ディレクトリを作成
# mkdir -p /package
# chmod 1755 /package
# cd /package
2.daemontools-0.76.tar.gzをダウンロード
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# tar zxvf daemontools-0.76.tar.gz
# cd admin/daemontools-0.76
3.インストール
# package/install
......
/usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o
/lib/libc.so.6: could not read symbols: Bad value
collect2: ld はステータス 1 で終了しました
make: *** [envdir] エラー 1
Copying commands into ./command...
cp: cannot stat `compile/svscan': そのようなファイルやディレクトリはありません
4.対処方法
# cd /package/admin/daemontools-0.76
# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
# patch -s -p1 <./daemontools-0.76.errno.patch

 

githubでTinyURLのPlaggerプラグインさらした

http://github.com/taikimen/Plagger-Plugin-Filter-TinyURL

 

mixiにVox記事上げるために作ったんですが、
せっかくなのでりファクトしてさらしてみました。

はじめてgit使ったので今後どうすることやら。

 

はじめてシリーズなので大目に見てください。

 

 

内容はPerlモジュールです。
CPAN形式になっているので、扱いはわかりやすいかと。

やってることもシンプルで、body内のテキストでURLにマッチしたものをすべてtinyURLに変換するだけです。

こんなんどうでしょう?

 

備忘録:Redmineつかってみた

svn export http://redmine.rubyforge.org/svn/branches/0.8-stable redmine

gem install -v=2.1.2 rails

rake config/initializers/session_store.rb

rake db:migrate RAILS_ENV=demo

rake load_default_data RAILS_ENV=demo

 

SQLiteで使う限り甚だ簡単ですね。
スタンドアロンサーバーでの動作もひどくはないですし。

http://redmine.jp/tech_note/install/

ここを参考にしました。

 

OSSっていいですね。

 

備忘録:Oracle テーブルスキーマ確認クエリ

set long 2000
set heading off
set line 120
set pages 2000
set trimspool off
set feedback off
set longchunksize 600
select dbms_metadata.get_ddl('TABLE', 'テーブル名') from dual;

かに鍋たべたー

通販でカニを購入したわけですよ。
2000円弱くらいのお試しセット。
うまいですねー。
でももっと人数いないと、
カニ味噌とかはいったセットは多すぎて買えないですね。
鍋パーティーしましょう。
そうしましょう。
そういえば、昼過ぎにコーヒー飲んでたんだけど、
おやつほしいよねーという話になり、
でもお菓子がないのでケーキ作ってみました。
卵と小麦粉とサラダ油混ぜるだけの簡単蒸しケーキ。
意外においしくてびっくり。
しかも所要時間5分。
お菓子作り楽しい。

Kohanaでのunittest

3系のドキュメントにunittestがないので記録

PHPUnitベースのUnitTest環境構築用モジュールが提供されている。
http://github.com/kohana/unittest
こちらのinstallation参照。
拾ってきたファイルを
modules/unittestとして解凍するだけ
もし入れてなければPHPUnitをPearで入れる。
http://www.phpunit.de/manual/current/en/installation.html
pear channel-discover pear.phpunit.de
pear channel-discover pear.symfony-project.com
pear install phpunit/PHPUnit 
GithubのほうのKohana::unittestのinstallationに従い、 bootstrapのソースを改変すると http://[yourdomain]/unittest/でTOP画面が見える mod_rewriteによるルーティングをカスタマイズしている場合は、 RewriteCond %{REQUEST_URI} ^/unittest RewriteRule ^(.*) index.php/$1 [PT] と、.htaccessにてunittestだけ標準ルーティングに変更 
実際のテストクラスは application/tests/hoge.php というように、testsディレクトリ下にファイルを置いていく TESTサンプルは以下
<?php
/**
 * @group somegroup.morespecific.annoyingstuff
 * @author shimazu
 *
 */
Class ExampleTest extends Kohana_Unittest_TestCase
{
	
	function setUp(){
		parent::setUp();
	}
	
	function tearDown(){
		parent::tearDown();
	}
	
	function providerStrLen()
	{
		return array(
			array('One set of testcase data', 24),
			array('This is a different one', 23),
		);
	}

	/**
	 * @dataProvider providerStrLen
	 */
	function testStrLen($string, $length)
	{
		$this->assertSame(
			$length,
			strlen($string)
		);
	}
	
	/**
	 * @dataProvider providerStrLen
	 */
	function testError($string, $length){
		$this->assertSame(
			$length,
			strlen($string) + 1
		);
		
	}
}

 javadoc形式でのアノテーションにてグループ指定などが可能。
データプロバイダなんておしゃれなものも同様に指定可能
実行結果は以下

 

Shibuya.pm #12 行ってきました

リリース当日にも関わらず、

中抜けさせていただき、参加いたしました。
職場に感謝。
個人的に非常に注目していた、
KVS or RDBMS
という観点でそれぞれの長所短所を改めて確認することができました。
特に、ビジネス向けサービスを提供するサイボウズラボ:奥さんの
Incline Pacificが目から鱗でした。
今日のスライドは見当たらなかったので古いのを掲載
なぜ自分たちのアプリはRDBMSを使っていたのか
なぜ簡単にKVS導入に踏み切れないのか
この点を改めて考え直し解釈することができました。
備忘録的に書くと、
既存RDBMSのもつ、高い運用性、メンテナンス性を、
我々はそう簡単に捨て去ることができないのだなと。
ということを考えると、
TokyoTyrantにしろ、memcachedにしろ、
運用者がsqlplusなどのようにアクセスできる対話式IFを用意する必要があるのかと。
ということで作ってみましょう。
Perlで。
これは、自分でKVSを運用していくにあたって、
確実に必要なツールになると思います。
エラい人をさがしつつ、
勉強になりそうなので自前でやろうかと。
思います。

 

備忘録:Oracle schema毎の利用セッション数

SELECT 
        A.USERNAME,
        count(*)
FROM    v$session a,
        v$sesstat b,
        v$sess_io c,
        v$statname d
WHERE   a.sid        = b.sid
    AND b.sid        = c.sid
    AND b.statistic# = d.statistic#
    AND d.name like '%CPU%session'
group by A.USERNAME
ORDER BY a.username
;

 


SET LINESIZE 500;
SET PAGESIZE 80;
SET COLSEP |;
SET FEEDBACK OFF;
COLUMN "SID/SERIAL" FORMAT A15;
COLUMN USERNAME FORMAT A10;
COLUMN "SID/SERIAL" FORMAT A15;
COLUMN OSUSER FORMAT A10;
COLUMN MACHINE FORMAT A15;
COLUMN TERMINAL FORMAT A10;
COLUMN PROGRAM FORMAT A35;
COLUMN TYPE FORMAT A10;
COLUMN COMMAND FORMAT A20;
COLUMN COMMANDid ;
COLUMN "経過時間(sec) " FORMAT 9,999,999,990;
COLUMN "CPU使用時間(sec)" FORMAT 9,999,990.000;
COLUMN "CPU占有率(%)" FORMAT 990.000;
COLUMN "ブロック取得回数" FORMAT 9,999,999,990;
COLUMN "物理読み込み回数" FORMAT 9,999,999,990;
TTITLE LEFT '【 セッションの確認 】' SKIP 1 LINE ;
SELECT A.SID || ',' || A.SERIAL# "SID/SERIAL",
A.OSUSER,
A.MACHINE,
A.TERMINAL,
A.PROGRAM,
A.TYPE,
A.USERNAME,
A.STATUS,
DECODE(A.COMMAND ,1,'CREATE TABLE' ,2,'INSERT' ,3,'SELECT' ,
4,'CREATE CLUSTER' ,5,'ALTER CLUSTER' ,6,'UPDATE' ,7,'DELETE' ,
8,'DROP CLUSTER' ,9,'CREATE INDEX' ,10,'DROP INDEX' ,
11,'ALTER INDEX' ,12,'DROP TABLE' ,13,'CREATE SEQUENCE' ,
14,'ALTER SEQUENCE' ,15,'ALTER TABLE' ,16,'DROP SEQUENCE' ,
17,'GRANT' ,18,'REVOKE' ,19,'CREATE SYNONYM' ,20,'DROP SYNONYM' ,
21,'CREATE VIEW' ,22,'DROP VIEW' ,23,'VALIDATE INDEX' ,
24,'CREATE PROCEDURE' ,25,'ALTER PROCEDURE' ,26,'LOCK TABLE' ,
27,'NO OPERATION' ,28,'RENAME' ,29,'COMMENT' ,30,'AUDIT' ,
31,'NOAUDIT' ,32,'CREATE DATABASE LINK' ,33,'DROP DATABASE LINK' ,
34,'CREATE DATABASE' ,35,'ALTER DATABASE' ,36,'CREATE ROLLBACK SEG' ,
37,'ALTER ROLLBACK SEGM' ,38,'DROP ROLLBACK SEGME' ,
39,'CREATE TABLESPACE' ,40,'ALTER TABLESPACE' ,41,'DROP TABLESPACE' ,
42,'ALTER SESSION' ,43,'ALTER USE' ,44,'COMMIT' ,45,'ROLLBACK' ,
46,'SAVEPOINT' ,47,'PL/SQL EXECUTE' ,48,'SET TRANSACTION' ,
49,'ALTER SYSTEM SWITCH' ,50,'EXPLAIN' ,51,'CREATE USER' ,
52,'CREATE ROLE' ,53,
'DROP USER' ,54,'DROP ROLE' ,55,'SET ROLE' ,56,'CREATE SCHEMA' ,
57,'CREATE CONTROL FILE' ,58,'ALTER TRACING' ,59,'CREATE TRIGGER' ,
60,'ALTER TRIGGER' ,61,'DROP TRIGGER' ,62,'ANALYZE TABLE' ,
63,'ANALYZE INDEX' ,64,'ANALYZE CLUSTER' ,65,'CREATE PROFILE' ,
66,'DROP PROFILE' ,67,'ALTER PROFILE' ,68,'DROP PROCEDURE' ,
69,'DROP PROCEDURE' ,70,'ALTER RESOURCE COST' ,
71,'CREATE SNAPSHOT LOG' ,72,'ALTER SNAPSHOT LOG' ,
73,'DROP SNAPSHOT LOG' ,74,'CREATE SNAPSHOT' ,
75,'ALTER SNAPSHOT' ,76,'DROP SNAPSHOT' ,
79,'ALTER SESSION' ,85,'TRUNCATE TABLE' ,86,'TRUNCATE COUSTER' ,
88,'ALTER VIEW' ,91,'CREATE FUNCTION' ,92,'ALTER FUNCTION' ,
93,'DROP FUNCTION' ,94,'CREATE PACKAGE' ,95,'ALTER PACKAGE' ,
96,'DROP PACKAGE' ,97,'CREATE PACKAGE BODY' ,
98,'ALTER PACKAGE BODY' ,99,'DROP PACKAGE BODY' ,'待機中') COMMAND ,
A.COMMAND commandid,
(sysdate - a.logon_time)*86400 "経過時間(sec)",
b.value /100 "CPU使用時間(sec)",
b.value /((sysdate - a.logon_time)*86400+1) "CPU占有率(%)",
c.block_gets "ブロック取得回数",
c.physical_reads "物理読み込み回数"
FROM v$session a,
v$sesstat b,
v$sess_io c,
v$statname d
WHERE a.sid = b.sid
AND b.sid = c.sid
AND b.statistic# = d.statistic#
AND d.name like '%CPU%session'
ORDER BY a.username,
a.sid;