2020年 の投稿一覧

[Quora] Babelは絶対に使わないといけないの?

Quora回答シリーズです。

質問

フロントエンドの開発でBabelというツールは必須の位置づけなのでしょうか?Babelが不要な環境があれば教えて頂けませんか?
https://qr.ae/pNsn74

むしろ今後どんどん使われなくなっていくのではないでしょうか。

続きを読む

[MySQL] テーブルにカラムを追加/変更/削除する – ALTER TABLE

MySQLでテーブルのカラム(列)の変更を行うにはALTER TABLEを利用します。ALTER TABLEはカラム以外にもテーブルのあらゆる変更が行える万能選手ですが今回はカラムの追加,変更,削除に特化して見ていきます。

カラムを追加する

-- テーブルの末尾に追加
ALTER TABLE tablename ADD colname varchar(64);

-- テーブルの先頭に追加
ALTER TABLE tablename ADD colname varchar(64) FIRST;

-- 指定カラムの後ろに追加
ALTER TABLE tablename ADD colname varchar(64) AFTER id;  -- idの後ろに追加

カラムを変更する

-- カラム名とデータ型を変更
ALTER TABLE tablename CHANGE old_colname new_colname integer;

-- カラム名だけを変更(MySQL8.0〜)
ALTER TABLE tablename RENAME COLUMN old_colname TO new_colname;

カラムを削除する

ALTER TABLE tablename DROP colname;

続きを読む

AdBlockを有効にしているブラウザへの対策あれこれ

白状すると私も日常的に広告ブロックツールを使ってますw
PC版のChromeではAdBlockPlusの機能拡張を入れ、iOSのSafariでは最近AdGuardを利用しています。正直快適でもう手放せませんw

ただこれがサイト運営者の収益を削っているのも事実。せめてサーバ代くらいは捻出したいという方も多いと思いますので今回は広告ブロックの簡易的な検出方法と、その対応策についてまとめたいと思います。
続きを読む

[PHP] MySQLをPDOで操作する – 入門編 その3「モデル編」

※この記事は専門学校の講義用に作成されたものです

PDOはデータベースへのアクセスを抽象化してくれる非常に便利なライブラリですが、ある程度の規模のシステムになってくるとメンテナンス性を向上したくなりもう一段階、抽象化したくなる物です。最近人気のLarabelや、古くから利用されているCakePHPSymfonyなどのフレームワークには標準で搭載されている機能の簡易版を今回は学習がてらスクラッチで作ってみたいと思います。
続きを読む

[Node.js] expressで作るHTTPサーバ – 入門編 その3「非同期処理とファイル」

※この記事は専門学校の講義用に作成されたものです

Node.js+expressでHTTPサーバを作成する第3段。今回は最終的にファイル処理について取り上げるのですが、その前に知っておかないとグローバル変数以上のハマりどころである「非同期処理」についても説明します。Node.jsはApacheなどのWebサーバと比べると仕組みが大きく異ります。この違いをまずは抑えましょう。
続きを読む

[Node.js] expressで作るHTTPサーバ – 入門編 その2「グローバル変数の生存戦略編」

※この記事は専門学校の講義用に作成されたものです

Node.js+expressでHTTPサーバを作成する第2段。今回は「罠」にも「武器」にもなるポイントについてお話します。

PHPでサーバサイドを実装する際には、Webサーバとしての機能はApacheが受け持つパターンが多いわけですが、この場合PHPはリクエストがある度に起動と終了を繰り返します。つまり起動時に前回の処理結果などを気にする必要は基本的にありません。ところがexpressでサーバを作っている場合には1つのプログラムが起動しっぱなしであることを意識する必要があるのです。
続きを読む

[GitHub] SSHの鍵を登録しパスワード入力を不要にする

GitHubを利用している際に、HTTPSでリポジトリをcloneしているとpushやpullをする際に毎回IDとパスワードの入力を求められます。一時的にメモリ上などにキャッシュすることも出来るのですが、一定期間が経過すると再び入力する必要があるため根本的な解決になりません。

$ git push
Username for 'https://github.com': katsube      
Password for 'https://katsube@github.com': 

そこで今回はGitHubにSSHで利用する公開鍵を登録し、アカウント情報を毎回入力せずに済む設定を行います。
続きを読む

[Node.js] expressで作るHTTPサーバ – 入門編 その1

※この記事は専門学校の講義用に作成されたものです

Node.jsでHTTPサーバを作成します。

以前からNode.jsはサーバを作るための言語であるという誤解している方が結構いらっしゃるのですが、標準モジュールだけでも非常に気軽にHTTPサーバをポンッと作成して立ち上げることが出来てしまうことも起因しているのだと思います。外部のモジュールを取ってくれば様々なサーバ・ソフトウェアが転がっていることでも更に拍車をかけたのでしょう。

今回は標準のモジュールに加えてExpressと呼ばれるモジュールと組み合わせることで、さらに簡単にWebサーバを構築する手順について解説します。
続きを読む

[PHP] MySQLをPDOで操作する – 入門編 その2 「トランザクション」

※この記事は専門学校の講義用に作成されたものです

前回に引き続きPHPからMySQLを操作します。今回のテーマは「トランザクション」への対応です。トランザクションをマスターすれば、2つ以上のSQLを実行した際にいずれかの実行が失敗した場合でも、そのすべてを無かったことにできちゃいます。

データベースは堅牢に作ってあるとは言え、いつ障害など不測の事態が発生するか分かりません。データベースはユーザーの個人情報やお金など非常に重要なデータを扱うこともありますからうまく動作しなかった場合には元の健全な状態に戻して上げる必要があるというわけです。つまり、めちゃめちゃ重要なのです←語彙w
続きを読む

[PHP] MySQLをPDOで操作する – 入門編 その1

※この記事は専門学校の講義用に作成されたものです

今回はPHPからMySQLへ接続しデータの取得と追加の練習を行います。

データベースとのやり取りには様々な罠が待ち構えており、ちょっと書き損じた(設定を忘れた)だけでサービスが崩壊することもよくあります。誇張ではなく日常的に発生しており、例えばゲームやWebサービスがローンチしたとき、またはメンテナンスが開けたとき、サーバにまともにつながらずTwitterなどで話題になっているのを目にしますよね。またデータベースは個人情報はもとより、お金にまつわるデータも取り扱いますのでセキュリティにも気をかける必要がありますが、下手をすると漏洩や改ざんの温床になりかねません。

人類にデータベースは早すぎるのかもしれないと私もよく感じていますが、しかしながらこれらの事故の大半は「うっかりミス」だったりもします。情報をアップデートし続ける必要はありますが、基本や定石に忠実に従っていればトラブルを未然に防ぐことも可能です。このシリーズではそんな定石についてもおいおい取り上げていきたいと思います。

続きを読む

[初心者] 最近のJavaScriptの文法をおさらいする

※この記事は専門学校の講義用に書いたものです

JavaScriptはもともとWebブラウザの上で動作するちょっとした処理を行うために登場しました。その後JavaScritの重要性が高まるにつれ、最近の言語に搭載されている機能が無いことに開発者の不満が募ります。そこで満を持して登場したのが新しいJavaScriptの仕様であるES6(ES2015)です。

今回はこのES6(ES2015)から登場した機能の一部をご紹介します。

続きを読む

[PHP] アクセスカウンター用のRESTfulAPIを作成する – その2 DB版

前回作成した「アクセスカウンター」を、今度はデータベースに対応させてみます。裏側を変更するだけなので、表示はまったく同じです。

作戦としてはPHPにリクエストがある度にテーブルに1レコードずつ追加されていき、現在の値はレコード数を集計することでその都度算出したいと思います。毎回集計が発生するので実際の現場では使い物になりませんが、練習用としてはちょうど良いでしょう。

※この記事は専門学校の講義用に作成した物です。

続きを読む