WordPress:イメージマップのレスポンシブ対応

rwdImageMapsを使えばいい!とわかっていたのですが、実際に組み込んでみるとエラー…

動かない例1

jQuery(document).ready(function(e){
  jQuery('img[usemap]').rwdImageMaps();
});

これはUncaught TypeError: jQuery(...).rwdImageMaps is not a functionになります。

動かない例2

$(document).ready(function() {
  jQuery('img[usemap]').rwdImageMaps();
});

これはimageMap.js:1 Uncaught TypeError: $ is not a function

動く例

jQuery(function( $ ) {
  $('img[usemap]').rwdImageMaps();
});

スキャナとの通信中にエラーが起きました。(-9923)

先日、キヤノンのTS3130という複合機を購入しました。印刷もスキャナも高速で助かります。しかも9000円弱…

こいつはヘッドとインクが一体型になっているので、インクを交換すればヘッドが新品になります。昔使っていたHPと一緒です。

さて、Macにつなげてみたところ…スキャナが認識されない。「スキャナとの通信中にエラーが起きました(-9923)」なるメッセージがでます。

答えはこちらにありました:

[Solved] MacOS High Sierra Scanner Error -9923 - Tanner Hearne

どうも、プリンタ側のipv6を有効だとだめみたいです。

そこで、次のことをしました:

  1. プリンタのIPアドレスをブラウザに入れる。すると次の画面が出る:

    f:id:thebaker:20180602012736p:plain

  2. Log inをクリックし、プリンタの背面に印刷されているシリアル番号をパスワードとして入力しOKをクリック
  3. System Info and LAN Settingsをクリック
  4. Lan Settingsをクリック
  5. Other Settingsをクリック
  6. Yesをクリック
  7. TCP/IP Settingsをクリック
  8. IPv6をクリック
  9. Enable/disable IPv6をクリック
  10. Disableをクリックし、OKをクリック

最後に、Macとプリンタを再起動すると、スキャナが使えるようになっているはずです。

Perl:WWW::Mechanize::Timedをインストールする

めっちゃハマりました。

以下のスクリプトを実行してください:

#!/usr/bin/perl

use strict;
use warnings;
use CPAN;

CPAN::Shell->install(
"Tree::DAG_Node",
"Test::Warn",
"WWW::RobotRules",
"HTTP::Cookies",
"Net::FTP",
"Net::HTTP",
"Digest::base",
"Digest::MD5",
"HTTP::Negotiate",
"File::Listing",
"LWP::UserAgent",
"HTML::Form",
"HTTP::Daemon",
"Test",
"Text::Wrap",
"Pod::Escapes",
"Pod::Simple",
"Pod::Man",
"ExtUtils::MakeMaker",
"HTTP::Server::Simple",
"Time::Local",
"HTTP::Date",
"MIME::Base64",
"URI",
"Encode",
"Encode::Locale",
"LWP::MediaTypes",
"Compress::Raw::Bzip2",
"Compress::Raw::Zlib",
"IO::Uncompress::Inflate",
"HTTP::Status",
"ExtUtils::ParseXS",
"Module::CoreList",
"Module::Load",
"Params::Check",
"Module::Load::Conditional",
"Locale::Maketext::Simple",
"IPC::Cmd",
"ExtUtils::CBuilder",
"Perl::OSType",
"IO::Dir",
"Version::Requirements",
"Exporter",
"CPAN::Meta::YAML",
"JSON::PP",
"Parse::CPAN::Meta",
"CPAN::Meta",
"Scalar::Util",
"File::Spec",
"File::Temp",
"version",
"Module::Metadata",
"Module::Build",
"HTML::Tagset",
"XSLoader",
"HTML::Parser",
"Sub::Uplevel",
"Test::Exception",
"HTML::TreeBuilder",
"Test::Harness",
"Test::More",
"Pod::Usage",
"WWW::Mechanize",
"WWW::Mechanize::Timed");

このままだとSSLが使えないので、

yum install perl-LWP-Protocol-https

CentOS7:時刻を変更する

テストのために時刻を変更することってあると思います。 以下、やり方です。まず、ntpを無効にします:

timedatectl set-ntp 0

そして時刻を変更します

timedatectl set-time '2018-05-21 23:00:01'

終わったらntpを復活させ:

timedatectl set-ntp 1

chronyで強制同期します:

chronyc -a makestep

CakePHP3:ログイン後、管理者の場合は別ページにリダイレクトする

これ、Authの設定でやる方法をご存知の方がいましたら教えてください… 私はUsersController.phpのloginで次のようにしています:

        if ($this->request->is('post')) {
            $user = $this->Auth->identify();
            if ($user) {
                if($user['user_status_id'] == USER_STATUS_ID_REGISTERED){
                    $this->Auth->setUser($user);
                    if($user['role_id'] == ROLE_ID_ADMIN){
                        return $this->redirect(['prefix' => 'admin', 'controller' => 'Events', 'action' => 'index']);
                    }else{
                        return $this->redirect($this->Auth->redirectUrl());
                    }
                }else{
                    $this->Flash->error(__('ERROR_REGISTRATION_NOT_FINISHED'));
                    return;
                }
            }
            $this->Flash->error(__('ERROR_LOGIN_AUTHENTICATION_FAILED'));
        }

CakePHP3:ブラウザの言語設定におうじてロケールを切り替える

まず、AppController.phpに次を追加します:

use Cake\I18n\Middleware\LocaleSelectorMiddleware;

    public function middleware($middleware)
    {
        $middleware->add(new LocaleSelectorMiddleware(['en_US', 'ja_JP']));
    }

次にbootstrap.phpにこちらを:

use Cake\Routing\DispatcherFactory;

DispatcherFactory::add('LocaleSelector', ['locales' => ['en_US', 'ja_JP']]);

これで、米語と日本語に限定で、ブラウザの設定に応じてロケールが切り替わります。

確認方法ですが、適当なテンプレートで

use Cake\I18n\I18n;

echo I18n::getLocale();

とすれば表示できます。