setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

表題のエラーが出て不思議に思っていました。 何もしてないのに、なぜ、突然、このメッセージが出てくるのだろう・・・

私の場合はMacの言語設定を日本語から英語に変更したことが原因でした。 対策は言語設定で日本語に戻すだけです。

日本語の状態でローカルのターミナルを開いてlocaleコマンドを実行すると:

$ locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=

しかし、言語を英語にして実行すると:

$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

私はiterm2のプロファイルでSet locale variables automaticallyにチェックを入れているので、 LC_CTYPEの値がリモートホストに受け継がれます。前述の言語が英語の状態でリモートホストに入ってlocaleを実行すると:

LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

言語が日本語の状態でリモートホストに入ってlocaleとすると

LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

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

    IPアドレスがわからない場合は:

    1) システム環境設定を開く
    2) プリンタとスキャナを選択
    3) Canon TS3130を選び、プリントキューを開くをクリック
    4) プリントキューの「設定」をクリック
    5) プリンタのWebページを表示をクリック

  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