スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

私のメール物ソフト

ついつい、一ヶ月以上記事が空いてしまう。

私のパソコン環境は公私共にWindows7にようやくなりつつあるんだけど、最近まで気づかなかった事。私のメール物ソフト(めるちゃか、MailPad)でGMAIL等のPOPsなんかでのover SSLアクセスができなくなってる。
Windows7 32bit、64bit、セキュリティソフトの入り切り、Windowsファイアウォールの入り切り等々いろんなパターンで試したけど、うまくいかない。

ずっと気づかなかったのは、最近メールはiPhoneで見て済ませることが多くなってるから(返事をまともに返さない事が多い・・)。あとどうしてもというときにメールを書いて送るパソコンはまだWindowsXPでこっちではその現象が起きてなかったから。

何となくWindows7 SP1入れる前くらいまでは使えてた気がするので、ソフト側の問題じゃなく環境の問題のような気がしつつも解決できないので困っております。
スポンサーサイト

テーマ : ソフトウェア
ジャンル : コンピュータ

ブログにツイッターボタンをつけてみたよ

↓ブログにツイッターボタンをつけてみたよ。まぁ・・それだけ。

テーマ : Webサービス
ジャンル : コンピュータ

連絡事項

明日からたぶんうちの回線はYahoo ADSLからeo光になります。近日に私のYahoo宛のメアドは@以降がybb.ne.jpでは届かなくなるんで、そこをyahoo.co.jpに変更よろしくっす。
tilt_shift_photo_somewhere_100321.jpg

テーマ : パソコンな日々
ジャンル : コンピュータ

WordPress-MuとFeedWordPressとSnoopyとか

某所にてWordPress-Muでサイト構築をしてて、そこに他のサイトのfeedを取り込もうと思った。
WordPressではwp_rssとかget_rssとか、フィードを取り込む関数が準備されてるってことでWordPress-Muにもその関数あるので使えるかと思ったら、動かず。

某所はFireWallの中にあってWEBアクセスはproxy経由なので、過去の経験から問題はたぶんそのあたりだろうと予想してソースを追い始める。ググると、まずWordPress2.8ではProxyの設定はwp-config.phpにちょっと設定したらいいとある。それ以前のバージョンは違うらしい。俺の使ってるWordPress-MuはWordPress2.8ベースっぽいのでまねて設定をする。

・・だめぽ。

wp_rssもget_rssも表示形式が違うだけで中ではfetch_rssというfunctionを使ってるようだ。気を取り直してFeedWordPressというフィードを取ってくるプラグインを試してみる。だめぽ・・結局これも根っこはwp_rssとかget_rssが大元で使ってるfetch_rssってのを使ってるみたいだ。

このfetch_rssというのはMagpieRSSと呼ばれるモジュールの・・ようだ(phpの世界観を良く分かってません)。ということでコードを追うと、WEBへのアクセスをしているっぽい箇所発見。wp_remote_requestって関数があればそれ、なければSnoopyってモジュールを使うようになってる。wp_remote_requestってのがよくわからんかったのでこれを止めて、これもよくわからんながらにSnoopyってモジュールに関してproxy関係の設定をしてみる。

なんかアクションが変わったけどうごかね。

気を取り直してこんどはBDP RSS Aggregatorってフィード取り込みプラグインを試してみる。動かんクソッ。こいつもSnoopyってモジュールを使うようだ。ってことでProxy関係の設定をしてみる。

動いた。

うーん・・俺の欲しい機能はBDP RSS AggregatorよりもFeedWordPressにあるので・・もう少し努力してみるか。つーか自分でモジュール作ったほうが早いような気がしてきた。
cms_lamborghini_diablo_sv_red_090719.jpg

テーマ : Webサービス
ジャンル : コンピュータ

Apacheでディレクトリの最後のスラッシュ/

IIS系のサーバー大好きな俺だけど、WordpressがどうもIISと相性が悪いのでApacheを使い始めて数日、どーしても解決できなかったのが・・・
http://www.some.jp/wp
だとエラーになって、
http://www.some.jp/wp/
だとちゃんといけるという現象。ディレクトリの最後のスラッシュ/が違い。
小一時間くらい格闘したくらいじゃ、いまいちApache慣れしていない俺には原因が分からなかった。

結論。

原因はエイリアス、ディレクトリのマッピングの問題だった。wpというのは物理的にはD:\wpみたいなところにあって、httpd.confで「Aliase /wp/ "d:\wp"」としてたのがダメで、「Aliase /wp "d:\wp"」にしたらいけた。Aliaseの設定でマッピング先に最後にスラッシュつけたらダメだったんだね。分かればアホみたい。

#明日のサークルKサンクス京商ロータスF1、完全スルーしますきっと。
kyosho_lotus_exige_silver_081103.jpg

テーマ : インターネット
ジャンル : コンピュータ

Wordpress-muとIISとApache

先日、Wordpressを某所にて入れたのだけどWordpressでは(そのまんまでは)一つのBlogしか出来ない。これはちょっと目的に合わない。ちなみにWordPressはPHP+MySQLなんかの組み合わせで動くBlogソフト。Windows2003サーバー、IIS上に入れた。

複数欲しい場合は追加で別個DBを作って、新たにWordPressを別のディレクトリに入れたりとかしたらできるのだけど、それはちょっとリソースの無駄使いだ。ということでマルチユーザー版のWordpress-muを入れてみた。ほんとはWordpress-μらしい。

本家Wordpressはwp-config.phpを最初に手動で編集した上でインストールする必要があった(と思う)が、Wordpress-muは逆にそれしたらダメだった。なにもいじらずにインストールしたらすんなり終了。

次に、じゃあいくつかブログを作ってみようと思ったら・・ブログが新規作成できない。あら、と小一時間格闘。

間違ってるかもしれんが集めた情報によると、どうもApacheだと使えるURL書き換えモジュールmod_rewriteに相当する機能がIISに無いからだと判明。それ以前に本家WordpressもmuもIISだとダメっすという記事が多い。

しかし俺はIISで行くと心に誓う。

IISの新しいのだとMSからモジュールがあるらしいが、IIS6.0だとサードパーティー製のモジュールを使えば・・いけるらしい。ISAPI_rewriteというのがあって、フリーで使えるのもあるらしいということで落としてインストール。しかし設定方法が良く分からないので、さらに小一時間格闘。

・・・わからん。

IIS止めてApacheに行くことにする。Apache、UNIXくさいからヤダと思ってたがすんなり動く。httpd.confに設定が集約されてるのね。PHP関係の設定とかディレクトリのマッピングの設定とかもすんなり終了。Apache見直した。というか初めてだったから見直すもなんもないけど。

Wordpress-muもすんなりインスコ完了。と思ったら動かん。IISの時は最初は動いたぞ。あとが続かなかったけど。さらに小一時間格闘。どうやらシンボリックリンク関係のエラーらしいので、とりあえずwordpress-muをインストールしたフォルダの.htaccessの最初にOptions FollowSymLinksとか入れたら動いたよおい!これは良く分からんので後日調査しよう。

ブログの新規作成なんかもすんなり終了。

さて記事を書いてみると・・記事が保存できない。なんってこった。「この投稿:---を編集できませんでした」とか出る。うーぬ・・さらに小一時間格闘。どうやら・・IE系だとこのエラーが出るという仕様らしい・・FireFoxだと問題なし。

しかしIEで書けないと話にならんでしょが、皆困ってないのか・・困ってる人多いらしくいこれは解決法がすぐに見つかった。

ついでに先に入れてたXoopsもApacheで使えるようにしてみた。これはディレクトリマッピングの設定するだけで動いた。

という覚書。
kyosho_dydo_datsun_240z_rally_090425.jpg

テーマ : Windows
ジャンル : コンピュータ

WordpressとphpとMySQLとiis

某所でWordpressを入れて使おうと思った。WordpressはPHPとMySQLの組み合わせで使うBlogソフトですね。割と定番のようです。プラットフォームはWindows2003、IIS上で動かします。
MovableTypeはちょこっといじったことあるけど、Wordpressは初めて。
PHPとMySQLは既に動く状態で既に入ってるので、Wordpressは単にインストールするだけ。簡単に動きました。

しかし・・・

投稿ができない。投稿できないのにエラーも出ない。
なんでじゃあとググってもいい情報がないなあ。

もう一回投稿してみる・・タイトルがtestで内容をtestとだけいれたら、あらできた。
うーんどういうことだって事でもう一度投稿。タイトルが「テスト」で内容が「テスト」、できねえ!

どうやら言語、エンコードの関係かな?ってことで調べると、PHPの言語設定をEUCにしていたことが原因らしい。UTF8じゃないとダメなようだ。php.iniを修正しました、という覚書。しかしこれだとPHPを使うほかのシステムに影響でるよなぁ。

テーマ : Webサービス
ジャンル : コンピュータ

ブログがクラッシュ!@FC2

ちょっとブログ修復してた。

最初、古い記事の画像のリンクがおかしくなってるのに気づいた。FC2の画像保管ってルールが良く分からんのだが、過去にも一回同じことがあった。

対処としては、管理画面からデータのバックアップをして記事をテキストで取り出して、ほんで該当のおかしな画像へのリンクを置換して、記事を全部一旦削除した後にバックアップファイルを管理画面からインポート。インポートの時にバックアップファイルのサイズがデカイとダメみたいなので適当に分割してインポートするのは過去にもやったので難なく終了。

・・ところが、ブログの中で自分の記事へのリンクが・・おかしい。ずれてる。

FC2ブログの記事は1234.htmlみたいに末尾に連番で番号がつくのだけど、削除したエントリーなどがあるとインポートした際にその連番が崩れちゃうらしいのだ。

で、うーん手作業で直さないといけないのかうがぁとか格闘していたら、FC2ブログのxmlサイトマップを使って記事のズレを直してくれるperlスクリプトってのを発見して・・修復。

修復過程でどーゆーわけかsitemaps.xmlの1から109までの項目が無いことに気づいたりもしたが・・まぁいいか。

助かった。
kyosho_ferrari_fxx_and_evoluzione.jpg

とか書いているうちにFC2のサーバー自身がクラッシュしてたみたいだぜ。

WinInetでHTTPSつまりSSL接続

WinInetはHTTP,FTP,今は殆ど使われてないであろうGopherなんかのプロトコルを、ソケットを意識しないで使えるように準備されたAPI。

自由度は高くないけど、HTTPで言えばGETやPOSTでファイルを受信するような手続き的な処理はエラー処理を考えないと数行で記述できるので個人的には多用している。ちなみに、CHttpConnectionとかCFtpConnectionとかWinInetのAPIをラップしたクラスもある(使ったこと無し)。

で、お手軽といっても実際はそう簡単でもない。

WinInetではない通常のSocketプログラミングは煩雑ではあるけど、具体的に何を処理しているかプログラマは把握しやすいので、細やかに制御ができる。しかしWinInetを使う場合は、APIの背後でどういった処理をしているのかはブラックボックスに近いので、前処理や後処理などに一定の手順があり、いわば形式的なコーディング手順を知っておく必要がある。

さて今回、某公的研究機関のサーバーにHTTPSで繋いでXMLデータ(RESTってやつかな)を取るのが目的でWinInetを使ったプログラムを作ろうとおもったのだがSSLの処理でつまずいた。最初に書いたのは以下のようなコード(注:細かいところは省いて書き換えてるのでコピペしても満足に動きません)。

CString url=_T("https://www.none.com/index.html");
DWORD flag=INTERNET_FLAG_RELOAD;
HINTERNET hInet = InternetOpen(_T("MyProgram"),INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
HINTERNET hFile = InternetOpenUrl(hInet,LPCTSTR(url),NULL,0,flag,0);
(以下hFileハンドルからInternetReadFileで受信バッファを読み込んでいく)

SSLの場合、上記のInternetOpenUrlで使うflagにINTERNET_FLAG_SECUREというフラグを設定してもいいんだけど、urlの指定がhttps://で始まる場合InternetOpenUrlはINTERNET_FLAG_SECUREを指定しなくてもSSLだと判断し処理てくれるらしい。MSDNには無駄でっせみたいに書いてある。

ただ、実際にこれを動かしてみるとhFileがNULLになって動かない。

何が起こってるのだろうとGetLastError()でエラーコードを取ると戻り値がセキュリティ証明書が無効もしくは不明を意味するERROR_INTERNET_INVALID_CA=12045となってた。

InternetOpenUrlではINTERNET_FLAG_IGNORE_CERT_CN_INVALID というオプションフラグがあるので、
flag |= INTERNET_FLAG_IGNORE_CERT_CN_INVALID;
とInternetOpenUrlの前に一行加えてInternetOpenUrlに入れてやっても・・同じエラーコードで変わらない。

ググるとInternetSetOptionでセキュリティ関係をIGNOREするフラグを設定してやればいいなんて情報もあるけど、hFileハンドルがNULLなので設定できない。

ほんで、InternetOpenUrlをあきらめ、変わりにInternetConnectを使うことにした。

InternetConnectは接続先のアドレス、ポート番号、取ってくるコンテンツファイルをそれぞれに別個に関数に入れないといけないので、実装上はurlを分割するようなコードを最初に入れる必要がある。これがめんどくさいので避けてたのだが仕方が無い。

INTERNET_PORT defport=***; //実際は引数にしている

CString protocol=_T("https"); //実際はurlから分割関数を書いてる
CString address=_T("www.none.com");
CString content=_T("index.html");

BOOL ssl=(protocol.CompareNoCase(_T("https"))==0)

INTERNET_PORT port=(defport)?defport:(ssl)?INTERNET_DEFAULT_HTTPS_PORT:INTERNET_DEFAULT_HTTP_PORT;
DWORD flag=(ssl)?INTERNET_FLAG_SECURE|INTERNET_FLAG_RELOAD:INTERNET_FLAG_RELOAD;

HINTERNET hInet=InternetOpen(_T("MyProgram"),INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
HINTERNET hConnect=InternetConnect(hInet,LPCTSTR(address),port,NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
HINTERNET hFile = HttpOpenRequest( hConnect,NULL,LPCTSTR(content),NULL,NULL,NULL,flag,0);

while(!HttpSendRequest (hFile,0,0,0,0))
{
 DWORD code=GetLastError();
 if( code & (ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR | ERROR_INTERNET_INVALID_CA | ERROR_INTERNET_SEC_CERT_CN_INVALID | ERROR_INTERNET_SEC_CERT_DATE_INVALID))
 {
  if(ERROR_CANCELLED==InternetErrorDlg (GetDesktopWindow(),hFile, code, FLAGS_ERROR_UI_FILTER_FOR_ERRORS | FLAGS_ERROR_UI_FLAGS_GENERATE_DATA | FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS,NULL))
  {
   InternetCloseHandle(hFile);
   InternetCloseHandle(hInet);
   InternetCloseHandle(hConnect);
   return;
  }
 }
}
(以下hFileハンドルからInternetReadFileで受信バッファを読み込んでいく)

見にくくなってしまった・・

InternetErrorDlgはIEなんかでも出てくるセキュリティの警告ダイアログを出す関数で、「このサイトの証明書発行元は信頼されていないか不明です。接続を続行しますか」とか「このサイトのセキュリティで保護された接続は確認できません。続行しますか?」などと聞いててくる。

実際に動かすとERROR_INTERNET_INVALID_CA以外にもERROR_INTERNET_SEC_CERT_CN_INVALID=12038というエラーも出たのだが上記コードは順番にそれも処理できる。

ダイアログの表示をしないでサクッと通したいときは、InternetSetOptionでセキュリティ関係の無視フラグをセットしてやればいい。

これで一応動いた。めんどくさい。実際にはこの後にユーザー認証ダイアログが出る処理なんかも入れてて、ここで書いたとおりのコーディングはしていないんのだけど、どなたかのご参考になれば。

という覚書。

Shift-JISの文字列を_mbbtypeなんかでいわゆる半角とか全角とかを処理する雛形 @ VC++

bourbon_nsx_white_081018.jpg

SJISの文字列ってバイト列の最初から、順番に(これは1バイト、次は2バイト)と見て行かないと、ちゃんとその文字がなにか判断できないのだ。
適当なバイトを抜き出してそれが_mbbtypeで判断できるかと思ってたら甘かったのだ。
ってことで文字列を最初からきちんと見ていくための雛形は・・(むっちゃ適当な大枠、・・・この場合、1バイト文字、2バイト文字、不正?文字の次は全部一緒の処理をすると仮定して・・)
BOOL SomeFunc(char* p,UINT len)
{
 int previous=_MBC_ILLEGAL;
 for(UINT i=0;i<len;i++)
 {
  switch(previous)
  {
  case _MBC_SINGLE
プロフィール

N-Soft

Author:N-Soft
最近の記事
カテゴリー
最近のコメント
リンク
RSSフィード
カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。