生きてたか!

学生時代に毎日遊んでいた友達が30年ぶりに見つかった!

彼は大学を卒業してすぐに消息を絶ってしまい、

それ以来毎年その時の仲間で忘年会をしながら彼の実家へ電話をして

「戻ってきましたか?彼は何をしていますか?」

と確認をするのが恒例行事となっていた。

答えはいつも「どこで何をしているのか分からない」だった。

消息を絶って数年経ってからはきっと海外で何かの宗教に入信したか死んでしまったのでは?と我々は思っていた。

そして忘年会がそろそろあるから今年もまたネットで検索をしてみたところ、

なんと Facebook で発見!

ふるえた

移っている写真は全て笑顔、健康そうで、アメリカで家族と幸せに暮らしているようです。

そこには毎年電話で行方が「分からない」と答えていたご両親も写っていました。

それとある宗教団体のマークが写っています。

我々の推測は当たっていたようです。

そして、ご両親が電話で「分からない」と回答していた理由もそこにあったと納得しました。

理由はどうあれ教えて欲しかった。

幸せそうに家族と暮らしているところを見れて良かった。

またいつか会えると信じている。

カテゴリー: Life

風疹抗体検査

先日風疹抗体検査を行ってきました。

結果をスキャンして載せておきます。

16 以上なら大丈夫だそうです。
子供の頃に風疹にかかったのか、ワクチンを受けたのか記憶がありません。。。

抗体があったので今回はワクチンをうたなかったです。

ちなみに私は無料で検査を受けられました。
多分ワクチンも無料です。

AI

プルルル~

自分「はい、淘屋です」

相手「当社は AI を使った◯◯というサービスを提供していましてそのご提案です!」

自分「あなたは AI ですか?」

という質問をしてみようかな。。。

そんな時代が来るのでしょうか?

クレジットカード不正利用

先日クレジットカード会社から電話があり、

「○○というサイトで先月25日の朝5時頃お買い物をしましたか?」

と聞かれ「いいえ」と答えました。

すると。。。

「お客様のクレジットカードが不正利用されました。

現在クレジットカードを停止しております。

新しいカードを発行します。」

とかなり省略しましたが、大体こんな感じだったかと思います。 ❗

 

犯人があるECサイトでセキュリティナンバーを入力しようとして失敗したらしく、

その痕跡があり不正利用が発覚したそうです。

実際には被害は無くて良かったです。 🙂

 

こういう体験は初めてで、一番心配だったのが、法人カードだったので、

利用しているサービスが停止されてしまう事でした。

 

新しいカードが届くまでの間はカード決済ができませんが、

毎月決済している大半は新しいカードに引き継ぎできると言われました。

一部引き継げないといわれたのがネット系の会社でした。。。

某サーバーホスティングサービス、某国内最大級のドメイン登録サービス。

 

そして、先程新しいカードが届いたので色々なサイトでカード番号を変更しているところです。

 

どこでカード番号が他人に渡ったのでしょうか?

怪しいお店でカードを利用した覚えはありませんが。。。 :mrgreen:

dmesg にタイムスタンプを表示する方法

dmesg にタイムスタンプが表示されるように printk_time に 1 をセットする方法があります。

root# echo 1 > /sys/module/printk/parameters/printk_time

確認するには以下のようにやれば良いのかな?

root# echo "TEST" >/dev/kmsg
root# dmesg | tail -1
[3182488.266874] TEST

OS 起動時にセットするにはいろんな方法があると思いますが、
grub.conf の kernel に printk.time=1 を追記すれば良いみたいです。

そして、表示されたタイムスタンプを人間が理解できるように変換できるようです。
http://d.hatena.ne.jp/flalin/20110417/1303025836

なるほど。

ですが、おおまかに時刻が分かればよいので syslog の mark.debug のように
定期的にタイムスタンプを書き込んでおけば良いので cron で date を書き込むようにしました。

root# cat /etc/cron.d/mark_dmesg
0 * * * *       root    date > /dev/kmsg

ただし、cron が正常に動くのが前提なので、最初に書いた printk_time もセットしておいた方が良いです。icon_mrgreen.gif

一般ユーザで pear をローカルインストール

個人的に root になれない状況があまり無いのであまりこういった状況は無いのですが。。。

サーバに pear はインストールされているけど root になれない場合に使いたいモジュールをインストールする方法です。

/home/hoge/pear に pear::pager をインストールする場合の例です。

インストール前の状態

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package        Version State
Archive_Tar    1.3.1   stable
Console_Getopt 1.2     stable
PEAR           1.4.9   stable
XML_RPC        1.5.0   stable

pear::pager の install

$ mkdir /home/hoge/pear
$ cd /home/hoge/pear
$ pear config-create /home/hoge .pearrc
Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels     auto_discover    <not set>
Default Channel                default_channel  pear.php.net
HTTP Proxy Server Address      http_proxy       <not set>
PEAR server [DEPRECATED]       master_server    <not set>
Default Channel Mirror         preferred_mirror <not set>
Remote Configuration File      remote_config    <not set>
PEAR executables directory     bin_dir          /home/hoge/pear
PEAR documentation directory   doc_dir          /home/hoge/pear/docs
PHP extension directory        ext_dir          /home/hoge/pear/ext
PEAR directory                 php_dir          /home/hoge/pear/php
PEAR Installer cache directory cache_dir        /home/hoge/pear/cache
PEAR data directory            data_dir         /home/hoge/pear/data
PHP CLI/CGI binary             php_bin          <not set>
PEAR test directory            test_dir         /home/hoge/pear/tests
Cache TimeToLive               cache_ttl        <not set>
Preferred Package State        preferred_state  <not set>
Unix file mask                 umask            <not set>
Debug Log Level                verbose          <not set>
PEAR password (for             password         <not set>
maintainers)
Signature Handling Program     sig_bin          <not set>
Signature Key Directory        sig_keydir       <not set>
Signature Key Id               sig_keyid        <not set>
Package Signature Type         sig_type         <not set>
PEAR username (for             username         <not set>
maintainers)
User Configuration File        Filename         /home/hoge/pear/.pearrc
System Configuration File      Filename         #no#system#config#
Successfully created default configuration file "/home/hoge/pear/.pearrc"

設定の確認

$ pear -c .pearrc config-show

作成した pear 環境のインストール状況を確認。

$ pear -c .pearrc list
(no packages installed from channel pear.php.net)

pear::pager のインストール

$ pear -c .pearrc install pager
downloading Pager-2.4.9.tgz ...
Starting to download Pager-2.4.9.tgz (36,055 bytes)
..........done: 36,055 bytes
install ok: channel://pear.php.net/Pager-2.4.9

インストールできたか確認

$ pear -c .pearrc list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Pager   2.4.9   stable

インストールした pear::pager を使う方法

php の include_path に /home/hoge/pear/php を追加する。
ini_set('include_path', '/home/hoge/pear/php'.PATH_SEPARATOR.ini_get('include_path'));

そして、インストール先を apache が参照できるよう chmod などする。

$ chmod -R g+rx /home/hoge
$ chgrp -R apache /home/hoge

Hyper Estraier で WordPress をクロール

Hyper Estraier で WordPress をクロールしようとしたところ
redirected: 301 されてしまいインデックスされない 🙁

$ estwaver crawl -revcont casket
2014-05-15T03:40:17Z    INFO    DB-EVENT: status: name=casket/_index dnum=0 wnum=0 fsiz=9259055 crnum=0 csiz=0 dknum=0
2014-05-15T03:40:17Z    INFO    crawling started (revcont)
2014-05-15T03:40:17Z    INFO    fetching: 0: https://www.yonageya.com/
2014-05-15T03:40:17Z    INFO    seeding: 1.000: https://www.yonageya.com/
2014-05-15T03:40:17Z    INFO    [1]: fetching: 0: https://www.yonageya.com/
2014-05-15T03:40:18Z    INFO    [2]: fetching: 1: https://www.yonageya.com/blog/
2014-05-15T03:40:18Z    INFO    [2]: redirected: 301: https://www.yonageya.com/blog/
2014-05-15T03:40:18Z    INFO    waiting for threads: 0
2014-05-15T03:40:18Z    INFO    crawling finished
2014-05-15T03:40:18Z    INFO    DB-EVENT: flushing index words: name=casket/_index dnum=1 wnum=1 fsiz=9262217 crnum=670 csiz=45533 dknum=0
2014-05-15T03:40:18Z    INFO    DB-EVENT: flushing auxiliary keywords: name=casket/_index dnum=1 wnum=639 fsiz=9262217 crnum=31 csiz=2182 dknum=0
2014-05-15T03:40:18Z    INFO    DB-EVENT: closing: name=casket/_index dnum=1 wnum=639 fsiz=9274906 crnum=0 csiz=0 dknum=0
2014-05-15T03:40:18Z    INFO    finished successfully

301 部分だけ抜き出すと

[2]: redirected: 301: https://www.yonageya.com/blog/

ネットで調べたところ同じ状況の方がいらっしゃいました。

ヒントにさせていただき、調べてみたところ wp-includes/canonical.php に辿り着きました。

        /**
         * Filter the canonical redirect URL.
         *
         * Returning false to this filter will cancel the redirect.
         *
         * @since 2.3.0
         *
         * @param string $redirect_url  The redirect URL.
         * @param string $requested_url The requested URL.
         */
        $redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url );

        if ( !$redirect_url || $redirect_url == $requested_url ) // yes, again -- in case the filter aborted the request
                return false;

        if ( $do_redirect ) {
                // protect against chained redirects
                if ( !redirect_canonical($redirect_url, false) ) {
                        wp_redirect($redirect_url, 301);
                        exit();
                } else {
                        // Debug
                        // die("1: $redirect_url<br />2: " . redirect_canonical( $redirect_url, false ) );
                        return false;
                }
        } else {
                return $redirect_url;
        }

$redirect_url と $requested_url を比較して同じだったらリダイレクトしないようですが、
実際に $redirect_url と $requested_url を調べてみたところ、

$redirect_url: https://www.yonageya.com/blog/
$requested_url: https://www.yonageya.com:80/blog/

とウチのブログの場合、$requested_url にポート番号がくっついていました ❗

ポート番号をくっつけているのは、同じ wp-includes/canonical.php の以下です。

        if ( !$requested_url ) {
                // build the URL in the address bar
                $requested_url  = is_ssl() ? 'https://' : 'http://';
                $requested_url .= $_SERVER['HTTP_HOST'];
                $requested_url .= $_SERVER['REQUEST_URI'];
        }

ウチのブログの場合 $_SERVER[‘HTTP_HOST’] にポート番号がくっついていました。

そして、同じ状況の方と同じように $requested_url .= ‘www.yonageya.com’ とすると解決する事も確認しました。

それで、どうやって解決するか対応方法に悩みましたが、functions.php に以下を追加して対応しました。

function my_redirect_canonical($redirect_url, $requested_url) {
        if (preg_match('/^HyperEstraier/', $_SERVER['HTTP_USER_AGENT'])) {
                return false;
        }
}
add_filter('redirect_canonical', 'my_redirect_canonical');

強引ですが :mrgreen:

アレルギー検査

先日アレルギー検査を行ってきました。

結果が印刷された紙を無くさないようにスキャンしておきます。

アレルギー検査1

アレルギー検査2
この検査前からやりたかったんです。

やっぱりスギがぶっちぎりでした ❗

メールアドレス毎にメールサーバを分ける

とある事情からメールアドレス毎にメールサーバを分ける事になったので、その時のメモ。

MTA が postfix の場合です。

transport にアドレスと送信先をセットするだけです。

ドメイン名を example.com で説明すると。。。

example.com を受信するように設定したメールサーバを 2 台作成します。
mail1.example.com(192.168.0.1), mail2.example.com(192.168.0.2) とします。
MX は mail1.example.com を設定しておき、example.com 宛てのメールは
mail1.example.com で一旦全て受けるようにしておきます。

メールアドレスと送信先メールサーバは以下とします。

  • user1@example.com は mail1.example.com で受信
  • user2@example.com は mail2.example.com で受信

mail1.example.com の transport

user2@example.com smtp:[192.168.0.2]

mail2.example.com の transport

user1@example.com smtp:[192.168.0.1]

アドレスを追加する場合はどっちのサーバで受信するかを指定しないといけないのでメンドイです。 😥