どうも、ゴトーだ。
最近かなり時間を割いてプログラミングの学習をしているので、これからできれば毎日プログラミングの成果を出していきたいと思う。
もちろん上手くいかない日もあるだろうから必ず毎日あげられるわけではないだろうが、できれば毎日上げることで他の初学者の参考になればと思っている。
タイトルには学習日記1日目となっているが、学習を始めてから厳密には4日目だ。
1〜2日目はおもにHerokuのアップロードを、それと同時に1~3日目はPHPを学習していた。
1日目の成果物: アクセスカウンター
記念すべき1日目の成果物のタイトルは「アクセスカウンター ~直近のアクセスを添えて~」というものにした。
最初はアクセスカウンターだけにしようと思ったが、思った以上に簡単だったので、どうせなら直近のアクセスを記録できればいいと思ってその機能も追加した。
公開しているページはこちら。
どうやって作ったのか - カウンター編
今現在読んでいるPHPの入門書の中にファイルの読み書きをするサンプルコードがあり、ファイルの読み書きだけならデータベースの操作が必要なく、何かアクセスする度に状況が変わるものが作れると思ってアクセスカウンターを作ることにした。
まずはカウンター部分の作り方について説明する。
といってもロジックを言葉でつらつら書いてもわかりづらいので、箇条書きにしてみる。
- アクセスをカウントするファイルを作り、アクセスする度にその中身を+1する物を作りたい
- 既にファイルがあれば、そのファイルの内容=累計アクセス数とみなし、なければ0とみなす
- 上で取得した値を+1する
- その値をファイルに書き込む
原理的にはこれだけでできてしまった。
思っていたよりも簡単だったので、ついでに直近のアクセス時間を表示する機能を作った。
どうやって作ったのか - 直近のアクセス編
これは直近500件のアクセスを「2016/11/02 19:00」のような形式の時間で記録していくというもの。
501件目以降は削除される。
これは原理的には色々試行錯誤した結果、以下のようにした。
- アクセス時間を記録したファイルを配列で取得する
- 現在時刻を取得して、最後に追加する
- 配列が500件以上になったら先頭を削除する
- 配列の内容をファイルに記録する
- 配列の内容をHTMLに表示する
1, 2はすんなりできて、1は取得した時点で配列になっていて、時刻の取得と追加はググったらすぐに見つかった。
3も少し検索に時間はかかったけどさほど時間はかからなかった。
しかし4にかなり時間がかかってしまった。
というのも配列をそのまま書き込んでしまうと上手く改行されて書き込んでくれなかったので、配列を文字列にしてから書き込まなくてはならなかった。
implodeというものを使うことで文字列にできると言う情報を検索で得ることができたが、そんな発想が出てこなかったので結構時間をロスしてしまった。
5のリストで表示するのは検索したら出てきたが、それをPHPで表示するところがイマイチよく分かっていなくて、サンプルコードを参考にしながら書き直したら動かせた。
ここに関して、PHPはHTMLと一緒に書けるからあんまりプログラミングしてる感じがなかった。
1日目の感想
現状HTMLにそのままべた書きするような感覚で楽しく取り組めているが、プログラミング自体はまだまだ調べないと何もできない。
今はデータベースを学習しているので、次回はそれを使ったものを公開したい。