Javascript querySelectorAll をforEachで使う

IE11未対応版

var elements =Array.from(document.querySelectorAll('.element'));
elements.forEach(function(el) {
console.log(el);
}

 

querySelectorAllが返すのは配列ではないらしいので、配列になおして使うのがキモらしい。

IE11はさらに上記で動かないので、以下のようにしましょう。

 

IE11対応版

var elements =Array.prototype.slice.call(document.querySelectorAll('.element'),0);

elements.forEach(function(el) {

console.log(el);

});

 

POSTで128MB以上のファイルのアップロードで、途中で処理が止まってしまう。

nginxのclient_max_body_sizeがPleskの初期値128Mになっているので、128MB以上のファイルがアップロードできなかった模様なのでメモ書き。

 

 

PHPを用いたPOSTアップロードが失敗(途中で止まってしまう)場合にチェックすべき箇所。

 

(1)php.iniの確認

upload_max_filesize アップロードされるファイルの最大サイズ

memory_limit スクリプトが確保できる最大メモリ

post_max_size POSTデータに許可される最大サイズ

上記3つの項目が下記のような関係になるように設定する

memory_limit >= post_max_size >= upload_max_filesize

 

 

(2)HTMLの確認

HTMLの送信form側で制限をかけていないかチェック

<input name="MAX_FILE_SIZE" type="hidden" value="1000000" />

 

(3)nginxを使っている場合はチェック

/etc/nginx/nginx.conf 

 

client_max_body_size 512m

 

を記載すればいい。

 

Plesk使っている場合は各ドメインの「Apache および nginx の設定>nginx 追加ディレクティブ」に client_max_body_size 512m のように書けばいいのだがバグによって以下のエラーが表示される場合がある。

 

Invalid nginx configuration: nginx: [emerg] "client_max_body_size" directive is duplicate in /var/www/vhosts/system/domain.com/conf/vhost_nginx.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed

 

このようなエラーがでる場合の対処法

support.plesk.com

POSTで128MB以上のファイルのアップロードで、途中で処理が止まってしまう。

nginxのclient_max_body_sizeがPleskの初期値128Mになっているので、128MB以上のファイルがアップロードできなかった模様なのでメモ書き。

 

 

PHPを用いたPOSTアップロードが失敗(途中で止まってしまう)場合にチェックすべき箇所。

 

(1)php.iniの確認

upload_max_filesize アップロードされるファイルの最大サイズ

memory_limit スクリプトが確保できる最大メモリ

post_max_size POSTデータに許可される最大サイズ

上記3つの項目が下記のような関係になるように設定する

memory_limit >= post_max_size >= upload_max_filesize

 

 

(2)HTMLの確認

HTMLの送信form側で制限をかけていないかチェック

<input name="MAX_FILE_SIZE" type="hidden" value="1000000" />

 

(3)nginxを使っている場合はチェック

/etc/nginx/nginx.conf 

 

client_max_body_size 512m

 

をconfに記載すればいい。

 

Plesk使っている場合は各ドメインの「Apache および nginx の設定>nginx 追加ディレクティブ」に client_max_body_size 512m のように書けばいいのだがバグによって以下のエラーが表示される場合がある。

 

Invalid nginx configuration: nginx: [emerg] "client_max_body_size" directive is duplicate in /var/www/vhosts/system/domain.com/conf/vhost_nginx.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed

 

このようなエラーがでる場合の対処法

support.plesk.com

Macbook proをクラムシェルモードで2台の外部ディスプレイ(Thunderbolt Display / iMac)につないでみる。

iMacの動作が異常なまでに遅くなり、仕方ないのでMacbook Pro(15inch)をデスクトップマシンがわりに使うことにしました。

f:id:caffeine0:20180815155254p:plain

Macbookにはクラムシェルモードなるものがあり、その名の通り、Macbookのふたを閉めた状態で外部ディスプレイに接続し、デスクトップMacのようにキーボードをつないで使えると言うモード。

 

環境

・Thunderbolt Display 27inch

・iMac (2013) ---ターゲットディスプレイモードでThunderbolt Displayとして使う

・Macbook Pro ( 2017/15inch )

 

ケーブルはUSB-Cからthunderbolt2へ変換しなくてはならないので、

以下のケーブルと変換アダプタも準備。

・Apple USB-C to Thunderbolt2 変換アダプタ x 2個

・Apple Thunderbolt2 ケーブル1本

 (Thunderbolt DisplayはビルトインのThunderboltケーブルが一本、本体から生えているので 別ケーブル必要なし)

 

Apple Thunderboltケーブル(2.0m) MD861ZM/A

Apple Thunderboltケーブル(2.0m) MD861ZM/A

 
アップル Thunderbolt 3(USB-C) - Thunderbolt 2アダプタ MMEL2AM/A

アップル Thunderbolt 3(USB-C) - Thunderbolt 2アダプタ MMEL2AM/A

 

 

つないでみる。うまいかないときは。

上記の図のようにディスプレイをつなぐだけだが、もしうまくいかない場合は以下をチェック。

 

・クラムシェルモードはMacbookProに電源供給がされていないとできないので、電源コードを刺す。

・環境設定>Bluetooth >詳細設定でBluetoothdeデバイスでコンピュータのスリープ解除を可能にする、にチェックをつける。

ThunderboltディスプレイがMacbook Proのハブになってくれる。 

 Macbook ProとThunderboltディスプレイを、Thunderbolt2ケーブルで結ぶことで、ディスプレイがUSBハブ/EthernetポートなどのHUBとなってくれるので意外にこれが便利であることに気づいた。まず、Macbook本体にいろいろアダプタ類を繋がずとも、有線LANの恩恵を受けられるし、USB付属機器もThunderboltディスプレイに接続しておけば、毎回取り外しの手間がいらない。

ちなみにiMacのターゲットディスプレイモードでは、iMacがハブになってくれることはないようだ。(実験済み)

 

 

 

 

WEBサイトの変更が反映されない場合はスーパーリロード、それでもダメならキャッシュクリア(一時ファイル削除)

ホームページを変更してアップロードしたのに表示が変わらない。

レイアウトが崩れる。制作会社からサイトを修正したと言われたのに、更新されていない。

など、実際のサイトは変更されているのに、自分のPCのブラウザでだけ最新のデータが表示できないことがあります。

この現象はブラウザに画像やCSSの古いキ一時ファイル(キャッシュ)が蓄積されてそちらを表示してしまうことでおきます。

 

主要ブラウザで古いキャッシュを削除してから最新のデータでサイトを表示し直す、ハードリロード(スーパーリロード)のキーボードショートカットは以下の通り。 目的のページを開いた状態でキーボードでキーを同時押ししてください。ブラウザが強制的に最新ページを取得して表示します。

スーパーリロード

Windows

Internet Explorer(IE) Ctrl+F5
Firefox Ctrl+F5
Google Chrome Ctrl+F5、Shift+F5
Safari Ctrl+option+R

Mac

Firefox command+Shift+R
Google Chrome command+R
Opera command+R
Safari command+option +R

 

 

上記のスーパーリロードでも稀に、最新データを完全に取得できない場合があります。そのときは手間ではありますがキャッシュクリアをしましょう。

 

キャッシュクリア(一時ファイル削除)

Internet Explorer

Internet Explorerメニュー>ツール>インターネットオプション>全般タブ>閲覧履歴>一時ファイル>ファイル削除

Firefox

Firefox のメニュー>履歴>最近の履歴を消去

Google Chrome

chromeのハンバーガーメニュー>設定>詳細設定>閲覧履歴データを消去する

.htaccessでPフラグでProxyリダイレクト先をhttpsにしたい

結論だけ。

apacheの設定をいじれるサーバ環境なら

SSLProxyEngine on

にすれば

RewriteRule ^(.*) https://example.com/newcontents/$1 [L,P]

 

というようなhttps://のついたURLへのURLを、元のURLを書き換えないリダイレクトを.htaccessでおこなうことができる。

 

apacheの設定をいじれないとこの記述は使えない。

Mac/EPSON カラリオ(979a3)でリモートプリントの手順

前提1:プリンタはすでにネットワーク(インターネット)に接続されている。

カラリオプリンター Epson iPrint カンタン設定ガイド | 製品情報 | エプソン

 

前提2:epsonconnectにプリンタを登録し、プリンタのメールアドレスを取得済み。

https://www.epsonconnect.com/user/Main/device_list

 

プリンタのメールアドレスってなんぞや。。って感じですけど、自分のプリンタを識別するIDみたいなもんで、スマホやパソコンなどからインターネット経由で印刷したいときに必要らしいです。自分のメールアドレスを設定するのではなく、

xxxxxxxx@print.epsonconnect.com

のようなメールアドレス形式のIDをEPSONさんが勝手に割り振ってくれるので、そのアドレスは設定のためにメモッておきます。

 

上記2つをクリアしたら、次に行うのがリモートプリントの設定です。

今回はMacから、遠隔地にあるインターネットに接続されたプリンタで印刷する設定を説明します。

 

 

(1)Macにリモートプリントソフトウェアをダウンロード・インストールする。

メールプリント | モバイル&クラウド | 製品情報 | エプソン

 

(2)リモートプリントソフトウェアを起動しepsonconnectで取得したプリンタのメールアドレスの@以前の文字列を設定する。

f:id:caffeine0:20180508124139p:plain

認証完了すると、以下のようにお使いのMacからリモートプリンタを、ローカルにあるプリンタのように表示してくれるようになります。

 

「プリンタの追加を開く」ボタンをクリックすると、システムのプリンター設定が開きます。

f:id:caffeine0:20180508124541p:plain

リストに(Remote)のついたプリンタが追加されていますので、選択して下部の「追加」をクリックします。

 

f:id:caffeine0:20180508125300p:plain

 

無事にプリンタが利用できるようになりました。

f:id:caffeine0:20180508125452p:plain

 

Mac(High SIerra)でCDからWindows用.isoファイルを作成する

(1)アプリケーション>ユーティリティ>ディスクユーティリティを起動

(2)光学ドライブにCDメディアをいれてマウントさせる

(3)ディスクユーティリティの左側ツリー構造で、

1段目に [DVDドライブ名]、2段目に [disk名]がでるので、2段目を選択しておく

f:id:caffeine0:20180508111019p:plain

※なぜか元のメディアがCDの場合は、2段目を選択して作成しないとwindowsで「ディスクが壊れています」と表示され読み込めないディスクイメージになってしまうようです。元メディアがDVDの場合には、1段目でも2段目でも問題ないのでどちらでもOKのようです。

 

(4)ディスクユーティリティ上部メニュー>新規>[DVDドライブ名]を選択

(5)ダイアログで「DVD/CDマスター」「暗号化なし」を選択してOK

(6)xxxxx.cdrという名前のファイルができる

(7)ファイル名の.cdrの部分を.isoに名前を変更してWIndowsに認識・インストールメディアイメージとして利用できます。

PHPでメニュー内の現在のページのスタイルを変更する方法

PHPでメニュー内の現在のページのスタイルを変更する方法。

現在アクセス中のURLをPHPで取得し、現在のページのファイル名を含んでいたら色を赤にするサンプル。

PHP

<?php

$path = $_SERVER["REQUEST_URI"];

$page1 = strpos($path,'page1') ? 'on' : '';
$page2 = strpos($path,'page2') ? 'on' : '';
$page3 = strpos($path,'page3') ? 'on' : '';
?>

 HTML

<ul class="menu">
<li class="<?php echo $page1; ?>"><a href="page1.html">ページ1</a></li>
<li class="<?php echo $page2; ?>"><a href="page2.html">ページ2</a></li>
<li class="<?php echo $page3; ?>"><a href="page3.html">ページ3</a></li>
</ul>

 CSS

.on{

color:red;

}