hal のすべての投稿

思ったより難しいAWSでSSL化してwordpress

AWSのサブネットにwordpressのデータを置いて保護して、本体のパブリックネットにおいたwordpressをSSL認証つまりhttps://で動かす、という①AWS、②wordpress、③SSL認証、これが思ったより厄介でした。

その原因は、ひとつに、①AWSと②SSL認証をAWSの特徴(特長)を活かして、ELB(ロードバランサー)を使って行うと、他のサーバーで行われる認証キーパスの管理ファィル書き込み型とは異なる管理状態のために、wordpressでもそれを意識した中止が必要なこと、

いまひとつとして、wordpressは実は、SSL認証には完全に対応明日物ではなく、そのためのプラグインが必要なこと。

そして、この両者のために、管理のダッシュボードが、「リダイレクト過多」や「アクセス権限なし」のトラブルでアクセス不能になってしまうことです。

対策

1. wordpressのインストールはSSL設定以前

2.  http://ドメイン名/wp-admin/で管理のダッシュボートを開き、そのままにしておくこと

3. プラグイン

を組み込み、wordpressをSSL課する準備をとておくこと。

4. ダッシュボートから「設定」→「SSLとセキュリティ」でreal simple SSLを開くこと

これにより、SSL課に必要で、まだ行われていないことのリストが出てきます。
詳しくは、AWSでWordPressサイトを構築してSSL化する方法【EC2 ELB ACM Route53】 #Linux – Qiita を

5. SSL認証の取得  

6.     ELBを使ってSSL認証の組み込み

ここで、注意しなければならないのは、ロードバランサーのリスナーに追加するHTTPS用(443ポート)のターゲットグルーブは、HTTP(ポート80用)に準備されたターケットグループにしておく必要があるということです。

7. apacheなどの設定ファイルや.htaccessでやる必要のないこと

一般のSSL認証では、設定ファイルにhttp:からhttps;へのリダイレクト設定が手順としてでてきますが、ここではやってはいけません。理由は2つ、ELBの設定自体が、https://にきたものをhttp://に結びつけているので、これと他のリダイレクトが合わされは無限リダイレクトになってしまいます。またリダイレクトしてしまうと、wordpressのhttp://で開いている管理画面に届かなくなってしまいのす。

8. wp-config.phpの書き換え

  • : wp-config.phpファイルに、以下のコードを追加して、サーバーがHTTPSで動作していることを明示的に伝えます。
    php
    if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
    }
    1. p-config.phpファイルで強制的にHTTPSを使用させる場合、次のコードを追加します。
      php
      define('WP_HOME', 'https://yourdomain.com');
      define('WP_SITEURL', 'https://yourdomain.com');

yourdomein.com はあなたのドメイン名です。AWS以外のサーバーの場合と違い、ここは必ずドメイン名を使用します。ELBを使用している場合はIPアドレスは変化しますので、たとえ表向き固定していても駄目です。

9. これでダッシュボードのreally simple SSLを見ると、「SSLで稼働」のぽたんが青くなっていると思われます。

 まだ、黄色い作業のこしがあっても、ここでボタンをクリックすると https://yordomaim.com/wp-admin/からダッシュボードが操作できます

なぉ、このポタンでwordpressをSSL化させる以前には、wordpressの.cssやるまとなど各所にのこっている http://の記述が、複合サイトになるために、wordpressがきちんと表示されない状態になっています。

以上、作業記憶をもとに記載しました手が。飛ばしているところがあるかもしれないので、うまくイカなかったらかきこみください。

 

 

 

AWSでwordpressを実装してサイトにSSL証明(https://化)をつけるまで

1,サーバー構築

これについては、「Amazon Web Services基礎からのネットワーク&サーバー構築改訂4版」が、2024年8月の時点では秀逸で、wordpressの実装とそのために効果的でwordpressのDBを非公開の空間においてセキュリティーを高めるプライベートサーバーの構築も含めて丁寧に書かれています。とくに<AWSの特徴であるサブネット空間の管理がよく理解できます。

Amazon Web Services基礎からのネットワーク&サーバー構築改訂4版

 

この本の問題点は、索引がないことです。そのために専門用語になれないうちは、それが何だったか調べるのに時間がかかります、

一応各用語の初出と見られるページをWordPressがでてくるまでの範囲で記しておきます。

Amazon Linux: 60
AMI: 59
Apache: 92
AWSマネージメントコンソール: 33
AS番号: 79
CIDR: 30
CIDRプロック: 32,47
DNS: 103
DNSホスト: 106
EC2:  21
EGP: 79
Elastic IP: 75
HTTP: 116
ICMP:146
IGP: 79
IPv4 CIDRブロック: 33
MariaDB: 172
NAT: 158
NATゲートウエイ:161,164
RSA: 60
.pem: 60
Rlogin: 70
Route53: 109
SSH: 69
t2.macro: 60
Telnet: 127
VCP :  21
WordPress: 172
アベイラビリティーゾーン: 19,138
インスタンス: 22,57,66
インターネットゲートウエイ: 41
インバウンドセキュリティグループの設定: 63
仮想サーバ: 56
キーペア: 60
サブネット: 36,50,60
セキュリティーグループ: 62,86
デフォルトゲートウェイ:48
デスティネーション: 45
デフォルトのVCP: 33
ターゲット: 45
ドメイン名: 102
パケット: 44
パケットフィルタリング: 86
パブリックDNS : 107
パブリックIPアドレス: 26
パブリックIPアドレス固定化: 75
パブリックサブネット: 19,37
ファイヤーウォール: 98
踏み台サーバ:152
プライベートIP不ドレス:26
プライベートサブネット:19,37,136
ポート番号: 80
リージョン:19 
ルーティング情報: 44
ルートテーブル: 44,46,50,139

この本の構成は、
第一章 システム構築をインフラから始めるには
 この本の記載内容と目的の概括

第二章 ネットワークを構築する
 AWSでのネットワークの初期的構築
まだ、 外からは何も見えません

第三章 サーバーを構築する
 SSH接続でサーバー上にコマンドを発生できるようになります

第四章     Webサーバーソフトをインストールする
 Apacheでwebサービスができる基礎が整います
 この段階でブラウザからのアクセスが可能になります

第五章 HTTPの動きを確認する
 お勉強の章です

第六章 プライベートサブネットを構築する
データベースなど直接には外部から触れさせないデータを置く、セキュリティの高い空間を準備します。
いずれ、ここにwordPressのデータのDBを起きます。

第七章 NATを構築する
 プライベートサブネットにデータを置くときだけに外部からプライベートサブネットにアクセスできるようにして、作業を効率化させるためのものです。

第八章 DBを用いたブログシステムの構築
 プライベートサブネットにwordPressのデータベースMariaDB(mySQLでも構いません)をNATを使って置き、パブリックサブネットにWordPressを実装して、ブログを作ります。
最初のMariaDBのサブネット実装だけNATをつかいますが、それ以降は、WordPressとMariaDB間のやり取りはNATなしででき、外からDBは見られなくなります。

第九章 TCP/IPによる通信の仕組みを理解する
お勉強のページです。

 

2. https://化の基礎

ここまでのままではサイトはhttp://のままで、最近のブラウザでは危険なサイトの可能性があるとして、すぐには見られない状態になります。
それを解消するためにSSL認証というものを取って、それを組み込むことで、サイトがhttps://になり、一般のブラウザでもセキュリティーの高いものとして容易に閲覧できるようになります。

このSSL認証には、銀的に3つの入手方法があります。
1) 有料のSSL認証
2) 無料のLet’s Encrypt
3) AWSが準備するAWS Certificate Manager(ACM)証明書

1) 有料のSSL認証
これは、さくらインターネットなどのサーバーサービスに付随して購入させられるもので、そのサーバーサービスを使っている限りは簡便です

2) 無料のLet’s Encrypt
少し通でケチな人がよくつかう、無料でかつ毎年自動更新されるSSL認証です。キーコードが書かれたファイルを入手して、サーバー上のApacheの管理ファイルにその場所を指示します。

3) AWSが準備するAWS Certificate Manager(ACM)証明書
AWSの場合は、外部の認証を用いることもできますが、その場合は毎年AWSの中での更新の手続きがLet’s Encryptの場合も含めて必要になりますので、AWS Certificate Manager(ACM)証明書を用いることをお勧めします。

ACM証明書は、他の証明書とは異なり、キーコードを登録するのではなく、マネージメントシステムを導入して。その導入の際に証明書と紐づけしてSSL認証を行います。そのシステムには
a) ロードバランサー(ELB)による方法
b) CloudFrontを用いる方法

ELBの主機能は、負荷を分散させるためのもので、異なるリージョンにもサブネットを置いてリスクをぶんさんさせるためのもので、そこに証明書がデプロイされます。
CloudFrontはコンテンツ配信ネットワーク (CDN)で、クラアド上に分散したコンテンツを効果的に配信するものです。
これらは、SSL認証のためにだけじゅんびされたものではありませんが、その機能の樽にはSSL認証が必要なので、その中に組み込まれています。そのためにLet’s Encryptの実装のように新プロな手順ではありませんが、一度実装してしまえばそのままなのでこちらをお勧めします。

なお、以下に紹介するのは、ELBを用いたSSL認証で、これには、以下のような記事がありますが、次に示す例は、chatGPTと協力とながら実装できた手順です
【初心者向け】ELBにSSL証明書をインストールする | DevelopersIO (classmethod.jp)
ELBがすでに実装されていた例です
AWSでSSL証明書を作ってELBに設定する #AWS – Qiita こちらもロードバランサーが既実装です。
[初心者向け]AWS Certificate Managerを使用してインターネットからELBへの通信をHTTPS化してみた | DevelopersIO (classmethod.jp)
こちらはELBの作成から書かれています。これを参考にして一度は行ったのですが、hppps://サイトがタイムアップ隣接続できず、結局はchatGPT君と設定の見直しを進めながら行いました。

3. ELBを用いたSSL証明実装の手順

作業手順を示します。

  • 1 SSL証明書の取得:
    • AWS Certificate Manager (ACM)を使用して、ドメインに対応するSSL証明書をリクエストする。
    • ドメインの所有権を確認するために、DNSまたはメールで認証する。
  • 2 サブネットの準備
    ・ ロードバランサーで結びつける2つのサブネットを準備する
    ・インターネットゲートウエイ(IGW)を作成し、サブネットにアタッチする
    ・ルートテーブルを設定する
    ・パブリックIPの自動割り当てを設定する
    ・セキュリティグルーブを作成する3 ロードバランサーの作成:

    • AWS Management Consoleにアクセスし、”EC2″ダッシュボードから”Load Balancers”を選択。
    • 「ロードバランサーの作成」をクリックし、”Application Load Balancer (ALB)”を選択。
    • 名前を指定し、”インターネット向け”スキームを選択。
    • 設定するリスナーの「プロトコルとポート」で、HTTPS(443)を選択。
  • 4. サブネットの設定:
    • ロードバランサーを配置する2つ以上の異なるアベイラビリティゾーン(AZ)にあるサブネットを選択する。
    • 各サブネットがインターネットゲートウェイ(IGW)を通じてインターネットにアクセスできるようにする。
  • 5. セキュリティグループの設定:
    • ロードバランサーに関連付けるセキュリティグループを作成し、インバウンドルールにHTTPS(443)ポートとHTTP(80)ポートを許可する。
  • 6. ターゲットグループの作成:
    • 「ターゲットグループの作成」をクリックし、ロードバランサーがトラフィックをルーティングする先を設定。
    • プロトコルとしてHTTPを選択し、ターゲットとしてEC2インスタンスを指定。
  • 7. ロードバランサーのリスナーの設定:
    • 作成したロードバランサーに戻り、”リスナーの設定”でHTTPSリスナーを追加。
    • 「SSL証明書」セクションで、ACMから取得した証明書を選択。
    • デフォルトアクションとして「ターゲットグループへの転送」を設定し、作成したHTTPターゲットグループを選択。
  • 8.ロードバランサーのデプロイ:
    • 設定を確認し、ロードバランサーを作成。
  • 9.DNSの設定:
    • ドメインのDNS設定をAWS Route 53やドメインのDNSプロバイダで設定し、ロードバランサーのDNS名にAレコードを追加。
    • エイリアスを使用して、ロードバランサーのDNS名を指す。
  • 10. テストと確認:
    • ブラウザを使用して、設定したドメインにアクセスし、HTTPSで接続されていることを確認。
    • SSL証明書が正しく設定されているか、ブラウザの「安全」アイコンを確認。

 

1 SSL証明書の取得

事前にサーバーを立ち上げたときにRoute53を使って、DNS管理をしておくことが必須です。(本109頁)

a) AWS Certificate Manager (ACM)を使用して、ドメインに対応するSSL証明書をリクエストする。

コンソール(https://console.aws.amazon.com/)からサービスをクリックすると、右にいろいろなサービスができます。そこからcertificate Managerを選びます。

右上の「エリア」を確実にサーバーを使ったエリア(ここでは「東京」)にして、「証明書をリクエスト」をクリックします。

証明書タイプは「パブリック証明書」、

ドメイン名を入れて、検証は「DNS検証」にします、この「DNS検証」で問題がなければ自動的にDNSにCNAMEキーが追加されて、そこにSSL証明書が紐づけられています。


うまくいくと、上のようになります。

証明署名をクリックして上のようになっていれば、証明書の設定はOKです。

 

2 サブネットの準備
2-1 VCPの確認

「お使いのVCP」で現在AWSで準備しているVCPを見て、使うものを決めます。ここでは、VCP-072…..を使います。そのCIDRは本に基づいてサーバー補立ち上げている限りは10.0.0.0/16になっているはずなのでそれを確認します。

2-2サブネットの作成

左メニューバーのソブネットをクリックすると、現在のサブネットがいくつかでてきます、本のままだと、同じVCP領域にあるのは「パブリックサブネット」と「プライベートサブネット」ですね。この図ではすでにELBようにsubnet-LBが記載されていますが、それをこれから追加します。

そのまえに、「パブリックサブネット」の内容を確認します。右上のリージョンが変わってないこと(この例では{東京})、CDIRが本で設定した10.0.1.0/24になっていること、パブリックIPV4アドレスの自動割り当てが「はい」であること。を確認し、アベイラビリティゾーンとそのIDを新しいサブネット作成のときのために覚えておきます。
なぉね本のままだと、パブリックIPV4アドレスの自動割り当てが「いいえ」になっていますので、

右上のアクションから「サブネットの設定を編集」を選んで、そこからボタンを変更します。

ルートテーブル、ネットワークACLを確認します。特に、ルートテーブルはパブリックルートテーブルとして使いますので覚えておいてください。またターゲットが10.0.0.0/16のlocalのものと、0.0.0.0/0のigwに紐ついたものがあること(ここではigw-0b40x…)を確認しておいてください。

インターネットゲートウエイをクリックすると、インターネットゲーしウエイIDとVCP IDがでてくるので、VCP IDが一致していることを確認しておきます。

2-3 ELB用新サブネットの構築と設定

サブネットで「サブネットの作成」をマリックします。図ではすでに作成しているsubnet-LBが載っています。

VCO IDを選択します。ここでパブリックサブネットと同じVCP IDを選びます・

すると下の方にサブネットの設定がでてきますので、適当なサブネット名(ここではsubnet-LB)をいれ、アベイラビリティゾーンとCIDRを設定します。
アベイラビリティゾーンは、選択肢が出ますので、パブリックサブネットと同じリージョンで別のゾーンになるように設定します。(ここでは末尾が1cのものを選んでいます)。

また、ルートテーブルをパブリックルートテーブルにします。それには「アクション」「ルートテーブめ関連付けを編集」で次の画面から選択します。

3. ターゲットグループの準備

ターゲットグループ(Target Group)**は、AWSのElastic Load Balancer(ELB)で使用されるリソースの一つで、ロードバランサーがリクエストをルーティングする対象となる一連のサーバー(ターゲット)を定義するためのグループです。ターゲットグループは、リクエストを受け取ったロードバランサーがどのサーバー(インスタンス)にリクエストを送るかを決定するための基準を提供し、また、それに属するターゲット(インスタンスやIPアドレスなど)のヘルスチェック(正常性チェック)を行います。

EC2のサービスコンソールを開き、下の方のロードバランシングの中にあるターゲットグルーブを開きます。(図ではすでに2つのターゲットグルーブがありますが、HTTPSになっているTG-SSLは間違って作ったもので、今から作るのはHTTPでポート80のTG-httpと名付けたターゲッしグループです)  ここでターゲットグループの作成をクリックします。

グループ詳細の指定で「インスタンス」を選択し、滝等なターゲットグルーブ名をつけます。次がhttpsにするためにやっているのでついつい間違えやすいのですが、プロトコルポートはHTTPで80です。HTTPにきた情報をHTTPSに結びつける入口だからプロトコルポートはHTTP(ポート80)の方に開いていると理解しておくと良いでしょう。つづいて、

IPアドレスタイプはディフォルトのIPv4のままです。
VPCを現在使っているVPCに変更します。
プロトコルタイプもディフォルトのHTTP1のままです。
ヘルスチェックブロトコルも、ついつい変えたくなりますが、先ほどと同じ理由で、ブぃフォルトのHTTPのままです。
ヘルスチェックパスのディフォルトは/(ルート)で、サイトにアグスしたときのルートをさしますが、index.htmlなど、具体的にルートでアクセスされるファイルにしておくのが無難です。

これで、次へをクリックすると、ターゲットを登録になります。

インスタンスを選ぶわけですが、本に基づいてサーバーを構築していると、プライベートサブネットにあるDBサーバーと、パブリックサブネットにあるWEBサーバーが表示されているので、WEBサーバーの方を選択します。
選択したインスタンスのポートは、これも80になります。
これで、ターケ‐っとグループの作成を押すと、ターゲットグループが準備されます。

4 ロードバランサーの作成

サービスにもどり「EC2」から「ロードバランサー」を選択します。(図はすでに作成された例です。)
まず、「ロードバランサーの作成」をマリックします。

タイプはapplication load balancerで「作成」をクリックします。

適当な名前を入れます。

ネットワークマッビングで、まずVCPから、パフブリックネットで使っているVCP領域を選択します。
マッピングのアベイラビリティゾーンでは、以前からある「パブリックサブネット」と今回事前に作ったサブネット(例ではsubnet-LB)を指定します。
その下のセキュリティグループの請託では、サーバーを立ち上げるときに作ったパブリックネットのセキュリティグルーブ(ここではWEB=SG)をしていします。
(私の場合ここがdefaultのママになっていたのに気づかずに時間を費やしました)

次いでリスナーとルーティングで、プロトコル「HTTP」、ポート「80」ターゲットグループを選択で、さきに作ったターゲットグループを選びます。

これで、確認でちゃんとできているかを確認して「ロードバランサーの作成」をクリックします

5 DNS設定のプロパゲーション:
最後にDNSのキーの設定を行います。そのために、Route53で「ホストゾーン」をひらきます。

そこには、すでにhttp://サーバーのAレコードがありますので、それにチェックを入れて「レコードの編集}で変更します。
(なお、図は変更後のデータを示しています)

編集内容は上の通りですが、まず「エイリアス」をオンにしないチと、記述欄が出てきません。あとは、あるものから選択していけばOKです。
なお、レコード名は、サブドメインがないのなら何も書かずに問題ありません。

以上でhttps://…. でwebサイトにアクセスできるようになるはずでした。
ほかは、問題ありませんでした。

しかし、WORDPRESSの場合は管理画面から接続が拒否されてしまいました。
実は、WORDPRESSの場合は、SSL化のためのブラグインが必要だったのです。それは、https://susdi.org/wp/share/2024/09/15/aws-ssl-wp/で。

家のインターネットが急に使えなくなった

NTTルータ-ソフトバンクルータで有線と無線のLANをつないでいて、
まず無線LANがソフトバンクルータには接続していてもインターネット接続ができなくなり、次いで、ルータの電源を切って再度つないだら、優先もインターネットとつながらなくなりました。

ソフトバンクのチャットサービスは無人応答で、一般的な対応しかできず役に立ちませんでした。

で、電話で指示をうけましたが、これは予約制で即時対応はできないものの、待ち時間がなくたすかります。

第一段階 接続チェック   これはOK

    常識ですが、ケーブルを接続しなおしてから電源をいれます。また、少し時間をおいて次のアクションに入ります。このタイミングに自信をもってやれるのが、電話のメリットでもあります。

第二段階 NTTルータのクリーンアップ
NTTとソフトバンクの二つのルータのうち、今回の契約ではソフトバンクの方に契約情報(IPアドレス設定など)が入っており、NTTの方に情報が入っていると干渉しあう、というのでNTTのルータのIpv6のセキュリティ設定を「無効」にします。 有効でも干渉しあいながらインターネット接続はできるのですが、それが積もると干渉力が大きくなるとか。

NTTルータ設定を変更するには、ケーブルをNTTルータにつなぎなおして、ブラウザから 192.168.1.1を入力します。

第二段階の前処理
NTTルータのIDは user で 同様のpwdになっていますが、パスワードなど設定が変わってわからない場合は、初期化します。そのためには初期化のボタンを爪楊枝で押しながら、次の行為を行います。 ①リセットを押してすぐ離す。②LEDが一斉につく③初期化ランプを含めいったん消える、③再度初期化ランプがオレンジに点灯④初期化ボタンの爪楊枝プッシュを離す。
ここでパスワードをuserに設定しなおす

第二段階の本処理
他の情報は無視して 左さいどからサイドから「詳細設定」を選択
Ipv6 のセキュリティー設定を「有効」から「無効」に変更。

これでつながりました。

少し早く煮るという話です。

 

 

緯度と経度から県と市町村を割り出す逆ジオコーディング

農研機構が逆ジオコーディングサービスをしています。

http://www.finds.jp/ws/rgeocode.php?です。

http://www.finds.jp/ws/rgeocode.php?v=2&lat=35.5&lon=135.6 と 入力すると、xmlで regeocode.js  のファイルで返ってきます。

その中身は 以下のようになっています。

<?xml version=”1.0″ encoding=”UTF-8″?>
<rgeocode xmlns=”http://finds.jp/ts” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<status>201</status>
<result>
<prefecture>
<pcode>18</pcode>
<pname>福井県</pname>
</prefecture>
<municipality>
<mname>大飯郡 高浜町</mname>
<mcode>18481</mcode>
</municipality>
</result>
<argument>
<latitude>35.5</latitude>
<longitude>135.6</longitude>
<localradius>500</localradius>
<localmax>1</localmax>
</argument>
<meta name=”thanks” content=”このサービスは 国土交通省 提供 国土数値情報(行政区域) を利用しています” />
<meta name=”thanks” content=”このサービスは 国土交通省 提供 街区レベル位置参照情報および大字・町丁目レベル位置参照情報 を利用しています” />
</rgeocode>

———–

 

スマホ、pcの位置情報取得

webにアクセスすると、そのスマホやPCの位置情報が表示されるhtml

が html5のGeolocatio APIで簡単に


 

<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″ />
<title>Geolocation Sample</title>
</head>
<body>
<script type=”text/javascript”>
if (navigator.geolocation) {
// 現在の位置情報取得を実施
navigator.geolocation.getCurrentPosition(
// 位置情報取得成功時
function (pos) {
var location =”<li>”+”緯度:” + pos.coords.latitude + “</li>”;
location += “<li>”+”経度:” + pos.coords.longitude + “</li>”;
document.getElementById(“location”).innerHTML = location;
},
// 位置情報取得失敗時
function (pos) {
var location =”<li>位置情報が取得できませんでした。</li>”;
document.getElementById(“location”).innerHTML = location;
});
} else {
window.alert(“本ブラウザではGeolocationが使えません”);
}
</script>
<ul id=”location”>
</ul>
</body>
</html>


詳しい説明が

http://www.hp-stylelink.com/news/2013/08/20130830.php

にある。

これは、緯度経度高度の情報。

 

wordpressの画像編集

wordpressのメディア挿入で、ライブラリーの画像がプレビューできず編集できなくなっていました。

対応は、
http://www.dream-seed.com/weblog/note/wordpress-image-edit を参考に、ob_end_clean()は出力バッファをクリアの一文挿入。

—–

wp-includes/class-wp-image-editor-gd.phpに 一文挿入

public function stream( $mime_type = null ) {
        list( $filename, $extension, $mime_type ) = $this->get_output_format( null, $mime_type );

        while (@ob_end_clean());  /* この行を追加 */

        switch ( $mime_type ) {
            case 'image/png':
                header( 'Content-Type: image/png' );
                return imagepng( $this->image );
            case 'image/gif':
                header( 'Content-Type: image/gif' );
                return imagegif( $this->image );
            default:
                header( 'Content-Type: image/jpeg' );
                return imagejpeg( $this->image, null, $this->get_quality() );
        }
    }

 

———————

を実行。

もう一つ、 themeの functions.php の空白行をなくす、という指摘もありましたが、そちらは実行せずにも、問題は解決しました。

ただ、コア部分の手直しなので、バージョンアップがあった時には、また修正が必要です。

セル処理関数

範囲   X:X   X列すべて
&                文字列結合
配列数式  該当セルからm-n+1個の範囲していで An:Am*Bn:Bm

ADDRESS(セル)      セルの絶対アドレス($A$2など)取得
INDIRECT(アドレス)  アドレスのセルの値を取得
INDEX(範囲,m,n)   範囲中のm,n番目のセルデータ取得
MATCH ( 対象、範囲)      {範囲}中の(対象)の相対的位置取得
COUNT(範囲)  範囲のセル数取得
COUNTA(範囲) 範囲中の入力セル数取得
TRANSPOSE(範囲)  そのセルを起点に、範囲の行と列を返還したものを出力

データが詰まっているB列の最終行番号
=COUNTA(B:B)
その値
=INDEX(B:B,COUNTA(B:B))
空白データのあるD列の最終行
=MAX(INDEX((D:D<>””)*ROW(D:D),0))
配列数式を使いバーチャル配列の Trueに行番号を入れた最大値

 

 

windows8の大量メモリ消費

動画をYoutubeにアップロードした直後からwindows8の速度が著しく遅くなり、1時間でハングアップするようになりました。

メモリ消費が原因です。
タスクマネージャーでみると、ハングアップする直前にウイルスバスターのメモリ消費が急上昇していますが、トータル量は一致しません。いわゆるメモリリークです。
タスクマネージャーにあるリソースモニターを見ると、リーク源がわかりました。TMLISTEN.exeです。これは、ウイルスバスターの一部です。
そこで、ウイルスバスターをアンインストール/再インストール、しかし症状は改善しません。TMLISTEN.exeは本当の原因ではなく、何かの変化を反映しているだけでした。
結局はウイルスバスターをアンインストール。するとwindows8では自動的にwindows defenderがアンチウィルスとして組み込まれます。(コントロールパネルのアクションで確認)
これで、c:\のバックアップという大量のファイル処理をさせてもメモリは4G/8G程度の消費。さらにempty.exe(説明略)をかけると、30%台の消費に戻りました。