javascript関連情報まとめ

概要

javascript関連の情報をまとめ中です。

関連情報

javascript

Javascript言語の情報は、MDNが一番まとまっていると思います。

チュートリアルは、いろいろとあるのでよさそうなものを試すのが良い。

jQuery

DOM APIを使いやすくしたライブラリ。もっとも良く使われているJavascriptライブラリの一つ。

HTML/CSS

Test

現在調査中。

【wordpress】プラグインのクラス化

概要

wordpressプラグインをクラス化する場合に必要な情報です。

プラグインのクラス化

コンストラクタでhookを登録し、処理を実装します。

class XXX_Plugin
{
    // hookを登録します
    public function __construct() {
    }
}
new XXX_Plugin();

action hookへ関数を登録する場合には、呪文が必要になります。

array( $this, メソッド名 )

【参考】 関数リファレンス/add action - WordPress Codex 日本語版

メソッド呼び出しには$thisを付ける必要があります。

【参考】 WordPressプラグインをクラス定義する方法 | Developers.IO

定数の使い方

クラス化しない場合には、defineを使って定数を宣言します。この定数名はグローバルなので名前の生得に気を付ける必要がありました。クラス化するとクラス変数になるため、名前の衝突は気にしなくて済みます。

定数にはクラス変数としてアクセスする必要があります。

class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
    }
}

【参考】 PHP: オブジェクト定数 - Manual

プラグインの有効化/無効化/削除で処理を実行する

それぞれのhookを実装します。

  • register_activation_hook
  • register_deactivation_hook
  • register_uninstall_hook

【参考】 WordPress でプラグインを無効化したときにオプションを消すには

これらのイベントでデータベースの作成・削除を行うことが多いと思います。

【参考】 WordPressのプラグインでデータベースを作成・削除・アップデートする方法

データベース作成が失敗した場合には、SQLコマンドの大文字化をしてみるよ良いかもしれません。

【参考】 WordPress の dbDelta() でテーブルが作成されない

uninstall_hookは、インスタンスがなくなっているのでstaticメソッドとして実装する必要があります。

【参考】 register_uninstall_hook でのクラスメソッド呼び出し – セルティスラボ

Windows 10/VirtualBox/Vagrantでvagrant upに失敗する件

概要

昨年(2015)夏に、Windows10にアップデートして以来、ずっとvagrant upできずにいましたが、以下の記事の方法でやっとできるようになりました。感謝です。 Pocket: Windows 10 + VirtualBox 5.0 + Vagrant 1.7.4 + VCCW 2.18.0 でのエラー回避

詳細

VirtualBoxをネットワークタイプを指定してインストールすると、vagrant upできるようになりました。

VirtualBox-5.0.10-104061-Win.exe  -msiparams NETWORKTYPE=NDIS5

現在は、Windows10 + VirtualBox(5.0.14) + vagrant(1.8.1)でvagrant upできています。

VirtualBoxのNDIS6ドライバ?がWindows10に対応していないということなのかな?

関連情報

【wordpress】検証環境構築方法

概要

本番環境のデータを使ってwordpress検証環境を作成してみました。

本環境と同じホストに検証環境を作成する場合、DB設定を間違えるとたいへんな事故(データの紛失)が起こる可能性があります。くれぐれもご注意ください。

最初は、ローカル環境で試してみてください。

方針

以下の検証環境を構築します。DB名だけでなく、ユーザ名、パスワードも変えている方が安全です。

本番環境 検証環境
URL http://wordpress.com http://test.wordpress.com
パス /var/www/wordpress /var/www/test.wordpress
DB名 wp test_wp

手順

ドメイン・ゾーンを編集します

test.wordpress.comを追加します。

バックアップを作成します

mysql

ユーザーは、権限があるユーザーであればroot以外でもOKです。

mysqldump -u root -p wp > xxx.dump
wordpress

同一ホストであればコピーできます。

# cp -rp /var/www/wordpress /var/www/test.wordpress
# chown -R apache:apache /var/www/html/test.wordpress

編集します

mysql

DBの中にある、http://wordpress.comを変更後のhttp://test.wordpress.comに変換します。

$ sed -e 's/http:\/\/wordpress.com/http:\/\/test.wordpress.com/g' xxx.dump < yyy.dump

検証環境用のDBを作成し、データをimportします。

$ mysql -u root -p
mysql> create database wp3 default character set utf8;
mysql> grant all privileges on test_wp.* to ユーザー名@localhost identified by 'パスワード';
mysql> exit;
$ mysql -u root -p test_wp < yyy.dump
wordpress

wp-config.phpのDBに関する設定を検証環境のものに変更します。 安全(secure)な名前/パスワードを設定してください。

define('DB_NAME', 'test_wp');

/** MySQL database username */
define('DB_USER', 'aaaa');

/** MySQL database password */
define('DB_PASSWORD', 'bob');

apacheの設定を変更します

/etc/httpd/conf/httpd.confを修正します。

検証環境には一般に公開しないので、Basic認証を設定していた方が良いと思います。

Basic認証のパスワード作成方法は、Webにたくさん存在します。たとえば、 Webサーバ構築〜Apacheインストール・Basic認証 - Qiitaを参照してください。

<VirtualHost *:80>
    DocumentRoot /var/www/test.wordpress
    DirectoryIndex index.php
    Options -Indexes
    ServerName test.workdpress.com

    <Directory /var/www/test.wordpress>
        AllowOverride All
        AuthUserFile /var/www/.htpasswd
        AuthName "Enter your ID and password."
        AuthType Basic
        require valid-user

        <fModule mod_rewrite.c>
            RewriteEngine On
            RewriteRule ^index\.php$ - [L]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . index.php [L]
        </IfModule>
    </Directory>
</VirtualHost>

apacheを起動します。

$ sudo service httpd reload

wordpress:ユーザー一覧取得

ユーザー一覧取得

検索条件を配列にセットして、検索を実行します。

    $args = array (
        'role' => 'reporter',
        'order' => 'ASC',
        'orderby' => 'display_name',
        'meta_query' => array(
            'relation' => 'AND',
            array(
                'key'     => 'キー名',
                'value'   => 値,
                'compare' => '='
            )
        )
    );
    $wp_user_query = new WP_User_Query( $args );
    $users = $wp_user_query->get_results();
    foreach ( $users as $user ) {
        echo "<p>" . esc_html( $user->user_email ) . "</p>";
    }

関連資料

メールサーバーのSPF登録しました

概要

gmailアドレス宛に送信したメールがスパムメールになりやすいということで、SPFレコードを登録しました。

SPFとは

SPF (Sender Policy Framework)とは、 電子メールの送信元ドメインが詐称されていないかを検査するための仕組みのようです。

日本ネットワークインフォメーションの説明がわかりやすいです。

SPFレコード登録

DNSレコードに以下のデータを追加します。

エントリ名@
タイプTXT
データv=spf1 ip4:XXX.XXX.XXX.XXX(ipアドレス) ~all

SPFレコード確認

Mac OS Xだと以下のコマンドで確認できます。

$ dig メールサーバ txt

dmarcian - SPF Surveyorでも確認できます。

関連情報

SSL証明書の整合性チェック

秘密鍵SSL証明書の整合性エラー

SSL証明書をインストールする場合、サーバー証明書秘密鍵が合わない場合、以下のエラーメッセージが出力されます。注)ここでは、メールサーバーはpostfix/dovecotで構築しています。

SSL証明書秘密鍵を設定します。
# vi /etc/dovecot/conf.d/10-ssl.conf

dovecot:設定を再読込します。
# /etc/init.d/dovecot reload

ログをチェックします。
# tail /var/log/dovecot/dovecot.log
...
Feb 11 10:42:41 imap-login: Fatal: Can't load private ssl_key: Key is for a diff
erent cert than ssl_cert
...

整合性チェック

SSL証明書を取得している時点では以下のファイルを持っているはずです。この中の前半2ファイルは、SSL証明書の申請者が作成します。server.csrファイルに基づき、サーバー証明書と中間証明書を発行してくれます。

ここを参考に、秘密鍵サーバー証明書の整合性をチェックします。

$ openssl x509 -noout -modulus -in 証明書ファイル | md5sum
$ openssl rsa -noout -modulus -in 秘密鍵ファイル | md5sum

メールサーバーのSSL化は無事に完了しました。

原因

整合性エラーが発生したのは、メールで送信された証明書のコピペミスでした。今回使った、アルファSSLは、証明書をメール本文に埋め込んでいます。コピペを失敗するのもアレですが、添付ファイルとして送信くれていたら...と思います。

整合性チェック方法を学ぶことが出来たのでよしとします。

参考資料