2013年07月10日

ApacheのVirtualhostで.htaccessが無視される?

ApacheのVirtualhostを設定したのですが、どうも「.htaccess」が無視されているよう。

Apacheのエラーログを見ると、
「Directory index forbidden by Options directive: /var/www_v1/html/」
なんてメッセージが出力されています。

なんでかなー
と思って色々調べましたが、どうやら”AllowOverride All”の設定が漏れているとの
ことで、追加したら上手く動作しました。

<VirtualHost *:80>
ServerName sample2.co.jp
DocumentRoot /var/www_v1/html
<Directory /var/www_v1/html>
AllowOverride All
</Directory>
</VirtualHost>


●留意
・”AllowOverride ”はDirectoryの中でないと指定できません。

●参考
「Apache チュートリアル: .htaccess ファイル」
https://httpd.apache.org/docs/2.4/ja/howto/htaccess.html
posted by 台北猫々 at 23:59| Comment(0) | TrackBack(0) | 技術メモ

2013年07月04日

オープンソースの落とし穴

PostgreSQLのアドオンで「textsearch_senna : N-gram方式 全文検索」というのが
公開されています(↓)が、

http://textsearch-ja.projects.pgfoundry.org/textsearch_senna.html

こちらがちょっとご用心、ヘビーな障害が放置されたままになっています。

その障害については、別のプロダクトのページ(↓)に記載されています。

http://textsearch-ja.projects.pgfoundry.org/textsearch_groonga.html

内容は、
「 (textsearch_senna では設計上の欠陥で間違った結果が返ることがありました。)」

......致命的。
なんで、textsearch_sennaのページに記述しないのだろう。

ちなみに詳細内容は、更新・削除を行うテーブルの場合に検索結果がWHERE条件と異なる
というもの。直そうと思うと大改修になるため、もはや修正はしないみたい。

うっかり使用すると、落とし穴にはまるので注意を。



posted by 台北猫々 at 21:05| Comment(0) | TrackBack(0) | 技術メモ

2012年04月11日

Linuxでプロセスのオープンファイル数を調べるコマンド

Tomcatで"Too many open files"なんて久しぶりに見たエラーでした。
そこで、オープンしているファイル数をチェック

lsof -p <プロセスID> | wc -l

プロセスIDは、psコマンドなどで調べます。
posted by 台北猫々 at 23:32| Comment(0) | TrackBack(0) | 技術メモ

2012年04月08日

mod_proxy_ajpによるApache-Tomcat間通信でのエラー

DMZにApacheをリバースプロキシとして配置して、LAN内のTomcatへ
連携する仕組みで、

The timeout specified has expired: ajp_ilink_receive() can't receive header
(120006)APR does not understand this error code: proxy: read response failed from
ajp_read_header: ajp_ilink_receive failed


こんなタイムアウトエラーが発生しまして、ブラウザ上は503エラーとなるのですが、発生タイミングが1時間程度アクセスを行わないと発生して、エラー後は正常にアクセスできるようになるという状況。

エラーメッセージからGoogle先生に問い合わせるとmod_proxy_ajpのバグみたいな情報があり、mod_jkに切り替えないと直らないような情報が出てくる。まあ、それは最終手段として別の可能性を調査しました。

結論を言うと、今回はDMZ-LAN間にあるFWによって無通信間隔が監視されていて、Apache-Tomcat間のコネクションプールが自動的に切断されていることによるものでした。

切り分け方としては、先ず以下の"disablereuse=On"(http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html)オプションを付けて、コネクションプール(常時接続)をOFFにしました。


ProxyPass ajp://192.168.24.XXX:8009/ disablereuse=On
ProxyPassReverse ajp://192.168.24.XXX:8009/


これで現象は再現しなくなったので、コネクションプールが原因となっていることが切り分けられました。まあ、とりあえずこれで本対応でもいいのですが、多分以下のオプションを使用してもOKでしょう。


ProxyPass ajp://192.168.24.XXX:8009/ keepalive=On
ProxyPassReverse ajp://192.168.24.XXX:8009/


posted by 台北猫々 at 20:46| Comment(0) | TrackBack(0) | 技術メモ

2012年04月05日

VMWare ESX4 の罠?

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1013299

VMWare ESX4の仮想マシンversion7の場合、
ゲストOSが32bitOSの時、
メモリを3GBまでしか認識しない。

仮想マシンを作成する時に警告出してくれ〜
posted by 台北猫々 at 22:01| Comment(0) | TrackBack(0) | 技術メモ

2011年04月18日

Windows版PostgreSQLをアンインストールした後にpostgresユーザーが残ってしまう件

Windows版PostgreSQLをアンインストールしても、インストール時に
自動作成される「postgresユーザー」が残ります。

どうやったら消せるのだろう?
と、思っていたらありました。

コマンドプロンプトから、
net user postgres /delete

とすればいいようです。

参考:http://lets.postgresql.jp/documents/tutorial/mediawiki/3#user

posted by 台北猫々 at 23:35| Comment(0) | TrackBack(0) | 技術メモ

2011年01月18日

全文検索エンジンの「senna」をWindows上でビルド

全文検索エンジンの「senna」で、n-gramのみを使用する場合は、
Mecabは必要ありません。

ですが、

http://pgfoundry.org/frs/?group_id=1000298
でバイナリで配布されているsenna-1.1.5_win32.zipの中にある
libsenna.dllはlibmecab.dllにリンクしているので、使わないのに
一緒に配置しないといけなくてスマートではないです。

なので、libmecab.dllにリンクしないlibsenna.dllを自分でビルドします。

ここでは、「Microsoft Visual C++ 2010 Express」で、Mecabに依存
しないlibsenna.dllをビルドする方法を示します。

(1)
http://sourceforge.jp/projects/senna/releases/46945
から"senna-1.1.5.tar.gz"をダウンロードして、適当な場所で
解凍します。

(2)
senna-1.1.5\vcc\libsenna.vc8.0.vcprojをVisualC++で開きます。

(3)
プロジェクトのプロパティを開き2箇所を修正
 ⇒構成プロパティ->プリプロセッサ のプリプロセッサの定義に「NO_MECAB」を追加
 ⇒構成プロパティ->リンカー の追加の依存ファイルから、「.\mecab\libmecab.lib」を削除

(4)
メソッド定義ファイルを修正
 ⇒ソースファイルのlibsenna.defの以下の行をコメントアウト(行頭に";")
  ;sen_lex_set_mecab_args @520

これでビルドすればOK。

※こちらも参照
http://qwik.jp/senna/install.html
posted by 台北猫々 at 23:55| Comment(0) | TrackBack(0) | 技術メモ

2011年01月09日

Redhat系Linuxのバージョン情報の確認

[root@localhost etc]# cat /etc/redhat-release
CentOS release 4.7 (Final)
posted by 台北猫々 at 23:29| Comment(0) | TrackBack(0) | 技術メモ

2010年12月04日

CentOSの過去のバージョン

CentOSの過去のバージョンが置いてあるサイト
http://vault.centos.org/
posted by 台北猫々 at 09:03| Comment(0) | TrackBack(0) | 技術メモ

2010年11月28日

AmaterasIDEからTomcat6(XAMPP)を起動する

AmaterasIDEからTomcat6(XAMPP)を起動しようとすると、Eclipseのコンソールに以下のようなエラーが出て起動できません。

2010/11/28 8:58:06 org.apache.catalina.core.AprLifecycleListener init

情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: (環境変数PATHの設定値)

java.lang.reflect.InvocationTargetException
〜〜〜〜〜〜〜


対処は、Windowsの環境変数PATHに以下のパスを追加します。
C:\xampp\tomcat\bin
posted by 台北猫々 at 20:28| Comment(0) | TrackBack(0) | 技術メモ

2010年10月27日

巨大なサイズのファイルを簡単に作る方法

http://www.atmarkit.co.jp/fwin2k/win2ktips/243largefile/largefile.html

大きいサイズのファイルを使用するテストがありまして、地道に作るのは面倒だし、なんかないかなーと思って、探したら。。。豊後!ではなくビンゴ!

WindowsXP Proの標準装備のコマンドがありました。

sutil file createnew ファイル名 サイズ

ファイル名:作成したいファイルの名前。すでに同名のファイルやフォルダが存在しているとエラー。

サイズ:作成するファイルのサイズ。10進数で指定する。最大サイズは対象となるファイル・システムによる。
posted by 台北猫々 at 22:36| Comment(0) | TrackBack(0) | 技術メモ

2009年07月15日

携帯の高機能エミュレーター(無償)

iモードIDに対応するためにソフトを改造するにあたって、
Docomoのシミュレーターは、iモードIDに対応していないので、
別のシミュレーターを探していましたが、、、

ありました!
FireFoxのアドオンとして、「FireMobileSimulator」というものが!

しかも無償!
ちゃんと、iモードIDが送信できることも確認できました。
参考:
http://memorva.jp/memo/mobile/uid_utn.php
http://www.maido3.com/server/script/guid-docomo.html

さらに、3キャリア対応でしかもたくさんの端末をエミュレートできるようです。

作者の方に感謝!





posted by 台北猫々 at 23:55| Comment(0) | TrackBack(0) | 技術メモ

2009年07月10日

携帯向けのHTMLのSELECTタグ

携帯向けのHTMLページでプルダウンメニュー
を表示しようと思い、

<FORM>
プルダウン形式で表示させる
<SELECT NAME="color1">
<OPTION VALUE="白">ホワイト
<OPTION VALUE="赤">レッド
<OPTION VALUE="黄">イエロー
</SELECT>
</FORM>


といようなソースで試しに、
iモードHTMLシミュレータII」で表示しても、プルダウンメニューが表示されず。。。

なんでだろうと思って試行錯誤した結果、
<FORM>タグに"action"属性がないと駄目だということがわかりました。

"action=''"
でもOK。


posted by 台北猫々 at 23:39| Comment(0) | TrackBack(0) | 技術メモ

2009年06月08日

無料仮想OSソフトで、Windows上でLinux環境を簡単に構築します。

フリーの仮想マシン実行環境のVMPlayer(http://www.vmware.com/download/player/)をダウンロードしてインストールします(いくつかアンケートに回答する必要があります。

Ubuntuサイト(http://www.ubuntulinux.jp/products/JA-Localized/vmware)からVMPlayer用のイメージファイル(ubuntu-ja-8.04-vmware-i386.zip(仮想マシン本体))をダウンロードします。

ubuntu-ja-8.04-vmware-i386.zipを解凍して、その中にある「Ubuntu.vmx」ファイルをVMPlayerで開くと、Windows上でUbuntu Linuxが起動します。

デュアルブートにするより断然楽チンです!
posted by 台北猫々 at 22:40| Comment(2) | TrackBack(0) | 技術メモ

2009年04月09日

Windowsの仮想ドライブ

こんなことができるのですね。

例えば、
Cドライブに対してZドライブという仮想ドライブ(別名)を作成したい。

コマンドプロンプトから
subst z: c:\
とすればOK。

C:\\hsqldbをYドライブという仮想ドライブとする(マウントする)。

コマンドプロンプトから
subst y: c:\hsqldb
とすればOK。

posted by 台北猫々 at 23:23| Comment(0) | TrackBack(2) | 技術メモ

2009年01月25日

WindowsXPに内蔵HDを追加

家PCにディスクを追加しました。
しかし、500Gのディスクが5000円で手に入るのですから、世の中変わったものですね。

ディスクを追加して、Windows付属のディスク管理ツールで見てみるとディスクは見えているのですが、パーティションを作成できません(作成メニューが無効状態に)。

で、どうしたもんかね?と思って調べてみると「DISKPART」というコマンドがあるんですね。

で、こんな↓感じにやりました。

C:\Documents and Settings\tamamo>DISKPART

Microsoft DiskPart version 5.1.3565

Copyright (C) 1999-2003 Microsoft Corporation.
コンピュータ: BABEL

DISKPART> list disk

Disk ### Status Size Free Dyn Gpt
-------- --------------- ------- ------- --- ---
Disk 0 オンライン 37 GB 0 B
Disk 1 オンライン 466 GB 466 GB

DISKPART> select disk 1

ディスク 1 が現在選択されているディスクです。

DISKPART> create partition primary

DiskPart は指定したパーティションの作成に成功しました。


一応これでできましたが、GUIツールってないんでしょうか??
posted by 台北猫々 at 20:52| Comment(0) | TrackBack(3) | 技術メモ

2008年12月09日

Google Chromeにて

/**
*
*
*/
@CHARSET "UTF-8";

と、スタイルシートのファイルヘッダのコメント文より後に、@CHARSET文を書くのはNGなんですねぇ。Google Chromeだと、このスタイルシートは読み込まれません。@CHARSET文は、ファイルの1行目に書くというのが、標準の仕様のようですね。

@CHARSET "UTF-8";
/**
*
*
*/
posted by 台北猫々 at 21:39| Comment(0) | TrackBack(0) | 技術メモ

2008年10月14日

Excelで所要時間の計算

ABC
19:5022:503.0
19:5018:5023.0

Excelで所要時間の計算をする必要がありまして、計算式を作ったのでメモしておきます。

A列が開始時刻、B列が終了時刻、C列が所要時間(B-A)で、A,B列を入力するとC列が自動的に表計算されるようにします。

前提として、開始時刻から終了時刻まで日をまたぐ可能性はあるが、所要時間が24時間を越えることはありません。

その他の条件は、
・A列,B列:セルの書式は、[ユーザ定義]の"h:mm"
・C列のセルの書式は、[数値]で小数点以下の桁数を1
・C列は、1時間を1.0とします。30分は0.5になります。
・C列は、30分単位での切り上げです。64分であれば1.5です。

で、こうなりました。

=CEILING(IF(B1-A1<0,1+B1-A1,B1-A1),TIME(0,30,0))*24

posted by 台北猫々 at 21:23| Comment(0) | TrackBack(0) | 技術メモ

2008年08月18日

MySQLのテーブルでCSVファイルをインポート

忘れないようにメモ。
ファイルをインポートする時には、ユーザにファイル権限を与えておかなければいけません。

mysql>grant file on *.* to taipei_maomao@'localhost' identified by 'password';

mysql>flush privileges;

===
taipei_maomaoでMySQLに再ログインして以下のコマンドを実行

mysql>use taipei;
mysql>LOAD DATA INFILE '/tmp/data.txt' INTO TABLE maomao_table FIELDS TERMINATED BY ',';
posted by 台北猫々 at 21:13| Comment(0) | TrackBack(0) | 技術メモ

2008年01月27日

公開クラスでEcho(ソケット)サーバを作ります。

公開しているC++クラスで簡単なソケットサーバを作成してみます。作成するファイル・クラスは以下の通り、
(1)main.cpp
(2)WorkerThread.h
(3)SocketServerBase.cpp, SocketServerBase.h

これで、Echoサーバ的なものができます。サーバはクライアントから接続を受け付けると、ワーカースレッドを起動して処理を委託して、自身は新たな接続を待ちます。
===========================

(1)main.cpp
#include
#include
#include "SocketServerBase.h"

#ifdef _WIN32
int _tmain(int argc, _TCHAR* argv[])
#else
int main()
#endif
{
SocketServerBase server;
server.Start(8080);
return 0;
}


(2)WorkerThread.h
#include "SocketStream.h"
#include "Thread.h"


class WorkerThread : public Thread{
public:
WorkerThread(Socket* cli) {m_pclClient = cli;}

void Start() {
Thread::Start(Run, this);
}

static int Run(void* pParam){
//TODO スレッド処理
WorkerThread* p = (WorkerThread*)pParam;

//ソケットをストリームに変換します。
SocketStream stream;
stream.Open(*(p->m_pclClient));

//クライアントからのデータを受信します。
string str = stream.GetLine();

//クライアントから受信した文字列を表示します。
printf("[%s]\n", str.c_str());

//受信した文字列を、そのままクライアントに返します。
stream.PutlLine(str.c_str());
stream.Close();
return 0;
}

private:

Socket* m_pclClient;

};


(3)SocketServerBase.cpp
※SocketServerBase.hはクラス定義のみです。

int SocketServerBase::Start(ushort portNo) {

Socket::StartUp();
Listen(portNo);

while(1) {
Socket cli = Accept();
if( !cli.isOK() ) {
printf("Invalid Socket!\n");
break;
}
WorkerThread th(&cli);
th.Start();
th.Detach();
}
Close();

Socket::CleanUp();
return 0;

}


公開URLはページの→側にもありますが、
http://winter-tail.sakura.ne.jp
です。
posted by 台北猫々 at 18:24| Comment(0) | TrackBack(0) | 技術メモ