« 2005年02月 | メイン | 2005年04月 »

2005年03月31日

Vine の apt で入れられるパッケージ名を探す [ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]

まぁ、 ftp で見るとか言う手もあるんだが、そこまでしなくても良い場合も多い。
「samba ナントカってパッケージは何があるの?」とかいうときだ。

そんなときは

# strings /var/cache/apt/pkgcache.bin | grep samba

とかやればよい。早いし。
strings は binutil に入ってます。

でも、もっとまっとうな方法もありそうなもんだが。


#コメントいただきましたが、 apt-cache search ってのがまっとうな方法のようですw(でも遅いよな、これ)

投稿者 JK : 13:52 | コメント (3) | トラックバック

2005年03月29日

Vine 3.1 の apache で 特定 Virtual Domain で suEXEC する。 [ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]

1:
# chmod 4711 /usr/sbin/suexec

する。

2:
IP Addresss xxx.xxx.xxx.xxx で
virtualdomainname.pizzica.to というホスト名によるバーチャルドメインで
User: username, Group: groupname という権限で cgi を動かす場合の httpd.conf 例


NameVirtualHost xxx.xxx.xxx.xxx

<VirtualHost xxx.xxx.xxx.xxx>
User username
Group groupname
ServerAdmin mailaddress@yourdomain
DocumentRoot /home/httpd/html/somefolder
ServerName virtualdomainname.pizzica.to
ErrorLog /path/error_log
CustomLog /path/access_log combined
</VirtualHost>


NameVirtualHost はどこかで1つだけ指定する。

★重要
/home/httpd/html/somefolder は /home/httpd/html/ の中にある必要がある。
/home/httpd/html/ の外へのシンボリックリンクも不可。

3:
/home/httpd/html/somefolder/index.html が
http://virtualdomainname.pizzica.to/index.html に対応するって具合なので、好きにファイルをいろいろ置く。

ただし、(重要)
cgi を置くサブディレクトリの permission は 755 とかに。
cgi の permission も 755 とかに。
(ユーザー権限で、誰でも書き換えられるファイル・誰でも書き換えられるディレクトリ内のファイルを cgi として実行するのは危険なので、やってくれない)

4:
# /sbin/service httpd restart
して再起動。

うまくいかないときは、
上記 httpd.conf に書いた error_log とか
/var/log/httpd/suexec.log とか
/var/log/httpd/error_log とか
そのへんを見る。

投稿者 JK : 15:37 | トラックバック

2005年03月25日

IEコンポーネントで表示している文書のBODY内HTMLを得る [ カテゴリ : memo - VC6 で IEコンポーネント ]

前のメモで作った最小限の奴を編集して、BODY 内容(HTML)を CString に格納したりファイルに保存したり。

もちろん、見るだけじゃなくてBODY 加工(特定ワードを強調表示する 差し込んだり)のための情報収集をしたいわけだが、、、、

問題点は、ここで得られる HTML はタグとか確かにあるものの、いわゆるソースとは違うという点。タグが大文字になっていたり \n の場所が違ったりなんだり。
あと、ヘッダ情報はどーもソースで得るのは大変らしい。
いずれにせよ、本文のタグを変更するなどしていじりたい場合は、ここで得られる内容がどうなるか把握しておかないとならない。


なので、サンプルのようにファイルに保存して、内容みてみることが必要だったので、そこまでをメモに。
(HTML 書き換えについては別途メモを書く予定。カテゴリアーカイブで見てね)

1. CHtmlView 派生クラスの cpp にて、
#include <mshtml.h>
#include <atlbase.h>

する。

2. ClassWizard かなんかで、仮想関数 OnDocumentComplete を実装する。
なお、OnBeforeNavigate2 とか OnNavigateComplete ではダメ。
後述の get_body が失敗する。(IHTMLDocument2 取得くらいはいけたり)

3.CHtmlView の OnDocumentComlete イベント発生時(またはその後)に
・GetHtmlDocument() で LPDISPATCH を 得る
・QueryInterface で IHTMLDocument2* を得る
・get_body で IHTMLElement* を得る
・QueryInterface で IHTMLTxtRange* を得る
・get_htmlText で BSTR* を得る(=BSTR型の文字列として BODY 内 HTML を得る)
・BSTR は CString に代入できる。

まぁ、ソース見た方が早いね。



IHTMLDocument2 *lpHtmlDocument = NULL;
LPDISPATCH lpDispatch = NULL;
IHTMLElement *lpBodyElm;
IHTMLBodyElement *lpBody;
IHTMLTxtRange *lpTxtRange;

lpDispatch = this->GetHtmlDocument();
if ( !lpDispatch ) return;

lpDispatch->QueryInterface(IID_IHTMLDocument2, (void**)&lpHtmlDocument);
lpDispatch->Release();
if ( !lpHtmlDocument ) return;

lpHtmlDocument->get_body(&lpBodyElm);
lpHtmlDocument->Release();
if ( !lpBodyElm ) return;

lpBodyElm->QueryInterface(IID_IHTMLBodyElement,(void**)&lpBody);
lpBodyElm->Release();
if ( !lpBody ) return;

lpBody->createTextRange(&lpTxtRange);
lpBody->Release();
if (!lpTxtRange) return;

CString str;
BSTR* p = new BSTR;
lpTxtRange->get_htmlText( p );
str = *p;
delete p;

CFile file;
file.Open("c:\\out.txt", CFile::modeCreate|CFile::modeWrite,NULL );
file.Write( (LPCTSTR)str, str.GetLength() );
file.Close();

投稿者 JK : 11:53 | トラックバック

VC6 で IEコンポーネント [ カテゴリ : memo - VC6 で IEコンポーネント ]

とりあえず動かすところを。

・MFC AppWizard で、View を CHtmlView にする
・できたソースの CHtmlView の OnInitialUpdate関数の中に、
 Navigate2 関数を呼ぶパラメータとして URL が定数であるので、
 好きなところに書き換える。

これでとりあえず動く。これだけなら楽勝。

んで help で CHtmlView とか見ていけばいいわけで。
ま、わざわざ自作するからには body を読んだりなんだりしたいわけで、
でも、ヘルプじゃわかんねーので、それはまた別のメモってことで。

投稿者 JK : 11:04 | トラックバック

2005年03月14日

CYGWIN で w3m を build する [ カテゴリ : memo - CUI環境 ]

後になってわかったが、cygwin-je で入れればいいみたい(アホか・・・)
CYGWIN の setup.exe で、URLとして
http://cygwin-je.sourceforge.jp/cygwin_je
を与えれば、w3m パッケージいれられる。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
テキストブラウザである w3m の build。 CYGWIN の場合。
gcc とかは、CYGWIN の setup.exe あたりで入れてしまう。

で、gc が setup.exe では入らないので、gc をこさえてから、w3m をこさえることに。
でも自分はいつも gc を入れるのを忘れて無駄に時間を使うのでメモっておこう。

GC http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/
w3m http://w3m.sourceforge.net/

からソースの ナントカ.tar.gz ファイル (tarball) をひろってくる。

どっちも tar zxvf で解凍してできたディレクトリで
$ ./configure
$ make
$ make install

でおしまい・・・・・と思いきや!
w3m の make で error が出る。

> mv: cannot stat `t-ja.gmo': No such file or directory

しかし、この時点で w3m.exe は完成している。
make install すると、やっぱり同じようなエラーで終わるが
/usr/local/bin/w3m.exe は install されている。

使うと・・・・動く。いいんだろうか、これで。

投稿者 JK : 18:54 | コメント (1)