ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

3歳9か月になりました

子どもが生まれて3年と9ヶ月です。気づいたことや出来事を書いていきます。

f:id:AJYA:20170114055855j:plain
photo credit: WalterPro4755 DSC_3387_pp via photopin (license)

  • 体重は18キロ近くになりました。
    出かけて眠くなると抱っこをせがまれますが、この体重では長い時間抱っこを続けるのが難しいです。
  • トランプで神経衰弱を何度もしました。
    自分が取りたいカードの位置がわかると、手で押さえて取らせないということをすることもあります。
    最近は双六で何度も遊んでいます。
  • ストライダーが気になるようです。
    借りて乗らせてもらって、欲しいと言っていました。
    自転車乗る前に乗せて、バランス感覚養うのによさそうです。

ストライダー

  • 小さな傷や口内炎などが絶えません。
    できるたびに湯舟に入らなかったり、食べ物をあまり食べようとしなかったりで、大騒ぎになります。
  • ショッピングカートを押したがります。
    押してくれるのはありがたいのですが、前がよく見えていないときもあるので、いつでも止められるように気をつけています。

www.nhk.or.jp
http://www.nhk.or.jp/kids/program/pitagora.htmlwww.nhk.or.jp

  • クリスマスプレゼントは、魔法つかいプリキュア!のリンクルステッキと、キラメイクつばさちゃんの人形でした。
    リンクルステッキは僕たちから、キラメイクつばさちゃんは、義妹からです。
    リンクステッキで攻撃されて、やられたリアクションすると喜んでいます。

ajya.hatenablog.jp
ajya.hatenablog.jp

  • クリスマスケーキはチーズケーキを選んでいました。
    今までいちごのショートケーキしか選ばなかったのが突然代わりました。
    ちゃんと食べるか心配しましたが、食べていました。
  • たまにお手伝いをしてくれます。
    ホットケーキの元を混ぜるのも手伝っていましたが、コツが掴めていなくて上手く混ぜられていなかったようです。
    木の枝を切ったときは、切った枝をゴミ袋に入れてくれました。
  • いちご狩りに行きました。
    昨年よりいっぱい食べてくれたような気がします。

ajya.hatenablog.jp

  • 保育園の面接に行きました。
    面接といっても、入園は決まっていて、制服や帽子等のサイズ合わせて購入という内容でした。


家の中にいると、大概しゃべり続けている印象です。
声が大きいので、夜はもっと声を小さくするように言うときもありますが、長続きしません。
お菓子を3人で分けて食べようねというのは理解して実行してくれます。
気長に身につくのを待つしかないんでしょうね。

文字コードがShift_JISのページをブラウザで表示すると文字化けする

過去に作られたデータベースにデータを登録するプログラムを、XAMPPをインストールして動作させました。
動作するまでに起きた現象と対処について、以下の記事で書きました。
ajya.hatenablog.jp

文字化けが発生する

PHPのファイルはShift_JISで作成されていて、Webページにアクセスすると、Internet Explorer 11Mozilla FirefoxGoogle Chromeを使っても文字化けが発生しました。

PHPファイルのHTML部分のheadには、

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

が記述されています。

これで文字化けする理由がわからず検索したところ、.htaccessファイルにAddTypeでファイルに対しての文字コード記述を追加するという記事がありました。
記事を参考に、

AddType "text/html; charset=Shift_JIS" .php

としてみましたが、文字化けは解消しませんでした。

f:id:AJYA:20170113073243j:plain
photo credit: US Department of State Anti-Corruption Conference in Afghanistan via photopin (license)

文字化けを解消する方法

文字化けの解消方法を求めてさらに検索すると、htmlが読み込まれるより前に、PHPのheader()関数で文字コードを出力するという記事がありました。
記事に書かれていたとおりに

<?php
header("Content-Type: text/html; charset=Shift_JIS");
?>

を追加したところ、文字化けが解消されました。

今後あらためて確認が必要

.htaccessへの記述の追加と、PHPのheader()関数の利用は、同じことをしているという認識でいましたが、結果が違いました。
今回はXAMPPをインストールして動作するようになるまでに時間がかかりすぎていて、文字化けが解消できた時点で、調べるのを止めています。

まだ利用する機会があるので、.htaccessファイルに記述する方法で対処できないものか、再度確認をする予定です。
今回記事を書くにあたり改めて検索したところ、.htaccessファイルに以下の内容を記述するという記事がありました。
これで文字化けが発生しなくなるのが、試してみます。

AddDefaultCharset shift-jis
AddType "text/html; charset=shift-jis" .html .php

php_value default_charset               Shift_JIS
php_value mbstring.language             Japanese
php_value mbstring.http_input           auto
php_value mbstring.http_output          SJIS
php_value mbstring.internal_encoding    Shift_JIS

最近のブラウザ

Mozilla Firefox以外は、表示しているページ文字コードの指定ができない、少なくともわかりやすいメニューに存在しない、ということに気がつきました。
文字化け自体に遭遇することがないので、必要ないのかもしれませんが、古いページでは発生する可能性があるので、選べたらいい、と今回改めて感じました。

PHP 7.0とApahce 2.4の組み合わせのXAMPPを利用して学んだこと

データベースにデータを登録しなければならず、2年前に利用したプログラムを確認しました。
確認した結果、PHPだけあればいいと思っていところ、ApachePHPが動作するWebの環境が必要なことがわかりました。

手っ取り早くApachePHPが動作する環境を構築するために、XAMPPを使えばいいと判断しました。
www.apachefriends.org

ダウンロードできるのがPHPのバージョン違いで3種類あります。
www.apachefriends.org
PHPのバージョンが違うだけで、他は一緒のようです。
PHP 7.0は使ったことがありませんが、今回をきっかけに使うのもいいかと考え、xampp-win32-7.0.13-1-VC14-installer.exeをダウンロードしてインストールしました。

データベースにデータを登録できるようになるまでに、次の事象が発生し対処しました。

f:id:AJYA:20170112154416p:plain

ApacheのAlias設定先にアクセスできない

ApacheのDocument Rootを書き換えて、データベースにデータを登録するPHPを動作させる方法もありますが、今後のことも考えて、Aliasで動作するようにhttpd.donfを変更しました。

アクセスすると、403エラーが発生して表示されません。
error.logを確認すると、

[Wed Jan 11 17:14:09.416530 2017] [authz_core:error] [pid 4392:tid 1644] [client 127.0.0.1:50467] AH01630: client denied by server configuration: C:/2017/php_tool/dbentry/index.php

と表示されます。

httpd.confの書き方を間違えたのかと、コマンドプロンプトからhttpd.confのチェックをしました。
チェックの結果は、以下のとおり表示され、問題は無さそうです。

c:\xampp\apache\bin>httpd.exe -t
Syntax OK

c:\xampp\apache\bin>httpd.exe -S
VirtualHost configuration:
*:443                  www.example.com (C:/xampp/apache/conf/extra/httpd-ssl.conf:121)
ServerRoot: "C:/xampp/apache"
Main DocumentRoot: "C:/xampp/htdocs"
Main ErrorLog: "C:/xampp/apache/logs/error.log"
Mutex ssl-stapling-refresh: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="C:/xampp/apache/logs/" mechanism=default
PidFile: "C:/xampp/apache/logs/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG

理由がわからないのでApacheのバージョンを指定して、httpd.confの書き方を検索した結果、Apache 2.4からは書き方が変わっていることがわかりました。

Apahce 2.2までは、

    Alias /2017-dbentry "C:/2017/php_tool/dbentry/"
    <Directory "C:/2017/php_tool/dbentry">
        Order allow,deny
        Allow from all
    </Directory>

だったのが、Apache 2.4では、

    Alias /2017-dbentry "C:/2017/php_tool/dbentry/"
    <Directory "C:/2017/php_tool/dbentry">
        Require all granted
    </Directory>

としなければならないとありました。

このとおりにhttpd.confを修正してApacheを再起動したところ、403エラーは解消されました。

PHP 7.0で関数が削除されているためにエラー

データベースに登録するプログラムにアクセスできるようになったので、実行したところsplit()関数が削除されたのでエラーになりました。
PHPのマニュアルを見ると、3種類の関数が代替として用意されています。
PHP: split - Manual

今回は、文字列を切り分けるだけだったので、explode()関数に書き換えたところ、エラーは解消されました。

PHP 7.0でCOMコンポーネントが利用できずエラー

Excelファイルからデータを読み取ってデータベースにデータを登録するプログラムのため、COMコンポーネントを利用します。
COMコンポーネントが利用できず、エラーが発生しました。
PHP 5.3/5.4の途中のバージョンから、無効になっていました。
PHP: インストール手順 - Manual

php.iniに

extension=php_com_dotnet.dll

を追加したところ、エラーは解消されました。

改めて感じたこと

これらを事象の解決するために、時間を随分使ってしまいました。
日頃から新しい環境を利用して経験しておけば、覚えていなくても知っていれば、修正作業は必要になっても短い時間で終わらせられた可能性があります。
技術者として勉強不足を痛感しました。