投稿

ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ございません。

このブログでは広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLaTeXのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

PHPの基礎文法をおさらいする(定数・演算子・函数)

定数 スカラー値(integer, float, boolean, string)は 定数 として定義することができる。定数は任意のスカラー値の別名と考えることができる。あるいは、値を一度代入したらその値が変わることがない変数と見なすことができる。配列も定数にすることができるらしいが、奨励されていない。 定数を定義するにはdefine函数を用いる。ただしdefine函数を使った定数の定義はクラスの中では使えない。クラスの中ではconstキーワードを使って変数のように値を代入して定義する。 define函数は define(定数名, 任意のスカラー値); という書式で使う。指定する定数名やスカラー値が文字列の場合、シングルクォーテーションかダブルクォーテーションで挟む必要がある。改行を表す \n のようにエスケープしたい文字列がある場合にはダブルクォーテーションで挟む。定数名は変数名と違い、先頭に$を付けてはならず、大文字と小文字を区別しないことに注意。ただし、定数名は全て大文字にするのが分かりやすく、他の言語と同じくそれが慣例になっているようだ。自動的に定義される特殊な定数である マジック定数 は、定義済みの定数の一種で、二つの下線(__)の接頭辞と接尾辞が付く(例:__FILE__)。 次のスクリプトは消費税抜きの価格から消費税込みの価格を計算するもの。define函数を用いて消費税率を定数に置き換えている。 <?php // 消費税率を定数化 define('C_TAX',0.08); echo '税抜価格を入力してください(円):'; // 標準入力を実数型で受け取る $price = (real)(fgets(STDIN,1024)); // $priceが0より大きいなら if ($price > 0) { // 消費税込みの価格を計算して小数点以下を切り捨てる $price_tax = (int)($price * (C_TAX + 1)); // 計算結果を表示 echo "消費税込みの価格は{$price_tax}円です。",PHP_EOL; } // $priceが0より小さいなら else { echo '0より大きい数値を入力してください。',...

PHPの基礎文法をおさらいする(制御構文)

PHPの制御構文 手続き型または命令型のプログラミング言語では、各々の式または命令はふつう、上から下へと順番に実行されてゆく。けれども、この場合はこの命令を跳ばしてあの命令に移れとか、この場合はこの命令を繰り返せとか、そういった制御を行いたいときには各種の制御構文を使うことができる。 制御構文の代表的なものがif構文。 if(値の真偽を判定){実行文;} という書式でそれは記される。1行で終わるときは波括弧は不要。if構文はそのオプションとしてひとつのelse文を、またはその間に複数のelseif文を持つことができる。 <?php echo "1 + 1 = "; // fgets関数で標準入力をint型にして受け取る $input = (int)(fgets(STDIN,1024)); // 2に等しいなら if($input == 2) { echo '正解です。',PHP_EOL; } // 1か3に等しいなら elseif(($input == 1) or ($input == 3)) { echo '不正解ですが、惜しいです。',PHP_EOL; } // 10以上なら elseif($input > 10) { echo '数が大きすぎます。',PHP_EOL; } // それら以外なら else { echo '不正解です。',PHP_EOL; } まず1足す1の答えを入力してもらい、その値をint型に変換して受け取っている。 このスクリプトを実行した例は次のようになる。 $ php sample.php 1 + 1 = 3 不正解ですが、惜しいです。 上の例では、ifとelseifとelseをすべて使っている。各々の実行文が複数あるときには波括弧で囲むことが必須だけれども、単独ならば波括弧は必須でない。しかし読みやすいように波括弧を使うことが奨励されている。 波括弧の代わりにコロン記号を使っても記述できる。その場合、if構文の終点として endif; を置く必要がある。しかも、波括弧を使った場合には elseif を else if のように分かち書きができるが、コロン記号を使って記した場合には分かち書きができない。 <?php ec...

PHPの基礎文法をおさらいする(変数・型・スコープ・配列)

ソースコードをHTML文書内に埋め込む場合 ここでいうPHPとはインタプリタ方式のスプリクト言語を指している。PHPのソースコードは、HTML文書の中に <?php と ?> という区切り文字( スクリプティングデリミタ と呼ぶ)を埋め込んで、その間に記述することができる。 <html> <head> <title>PHPはHTML埋め込み言語</title> </head> <body> <?php print "Hello, world!"; ?> </body> </html> <?php と ?> で囲まれた領域を PHPブロック と呼ぶ。 PHPのソースコードを含むファイルの拡張子は、ウェブサーバの一般的な設定では、.phpとすることになっている。 ソースコードをHTML文章内に埋め込まない場合 ライブラリにするにはもちろんファイルにPHPだけを記述することになる。その場合は終了の区切りを示す ?> を省略することが推奨されている。PHPだけを記述したファイルでは ?> を使わないほうがよい。 <?php print "Hello, world!\n"; これをhello.phpというファイル名で保存した場合、ターミナルエミュレータ上で次のように実行することができる。 $ php hello.php Hello, world! ソースコード中にコメントを記す場合 PHPブロック内にコメント行を設けたい場合は、コメントの先頭に // か # を付ける。これ以降、行末までがコメントと認識される。複数行にわたってコメントを記したいときには /* と */ とでコメントを挟む。 <?php // この行が改行までコメント # この行も改行までコメント /* ここからコメントがはじまる ここで終わる */ 一つの式の終わりにはコロンが必要 PHPは、RubyやPerlと異なり、改行コードを式の終わりとして認識しない。複数行に渡るコードの記述は、コロンがないかぎり一つの式の単位として認識されてしまう。したがって改行を無視するので、式の終了を示す...

Debian10テスト版をインストールしてみた(起動メディア作成編)

イメージ
Debian GNU/Linux 10 (buster)のテスト版をインストールしてみた。 Debian GNU/Linux インストールガイド によれば、Debian GNU/Linux 9 (stretch)をインストールし、デスクトップ環境を使うには、最低でもPentium 4 1GHz以上のCPUの性能と、1GB以上のRAMと、10GB以上のストレージ・ドライブ(HDDやSSD)が推奨されるようだ。10のbusterではもう少し高いスペックが推奨されるようになるかもしれない。けれども、Lxdeなどの比較的に軽量のデスクトップ環境やデスクトップ環境なしのウインドウ・マネージャを使えば、これ以下のスペックのコンピュータでも利用可能かもしれない。実際、Debian 8は512MBのRAMで使っていた。 今回インストールするのは9でなく10のbusterだが、Debian GNU/Linux 9 (stretch)のインストールに関する詳しい説明は Debian GNU/Linux インストールガイド にあるので、それを参考にさせていただいた。 インストール用ISOイメージをダウンロード ウェブブラウザで Debianの公式サイト の「CD/USB ISOイメージ」から 「HTTP を使って CD/DVD イメージをダウンロードする」 を開いた。さらにそこから「公式のテスト版 (testing)ディストリビューション用 CD/DVD イメージ (1 週間おきに更新)」を開いた。そこには、amd64, arm64, armel, armhf, i386, ...といったアーキテクチャごとのディレクトリがあった。どれを選べばよいのかは「 Debian GNU/Linux インストールガイド 」の日本語版をいずれか開いてみて、その中の「サポートするハードウェア」という項目を参考にした。そこにはアーキテクチャの名前とDebianでの名称の対応表が書かれてあった。ちなみにインストールガイドもアーキテクチャごとに区別されていた。 インストール先のコンピュータのアーキテクチャがamd64かi386に対応していて、かつ、そのコンピュータにDebianを初めてインストールする場合、Debian liveを試すのがよい方法であるのかもしれない。これはHDDやSSDにインストールせずにD...

Debian10でPHP7+lighttpdによる実行環境準備

Debian GNU/Linux 10 (buster)でPHP7の実行環境を準備する。ついでにPerlやPythonのスクリプトもCGIで動くようにする。ここではroot権限を得るためにsuを使っているが、 sudo -i としても同じ。 $ su # apt update;apt install lighttpd php php-cgi (中略) 以下の追加パッケージがインストールされます: lighttpd-modules-ldap lighttpd-modules-mysql php-common php7.3 php7.3-cgi php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline spawn-fcgi (中略) アップグレード: 0 個、新規インストール: 14 個、削除: 0 個、保留: 0 個。 4,366 kB のアーカイブを取得する必要があります。 この操作後に追加で 23.5 MB のディスク容量が消費されます。 続行しますか? [Y/n] y (省略) PHP-FPM(FastCGI Process Manager)を利用する場合にはphp-cgiの代わりにphp-fpmをインストールする。 $ su # apt update;apt install lighttpd php php-fpm (省略) lighttpdの状態を確認する。この画面から抜け出すにはqキーを押す。 # service lighttpd status ● lighttpd.service - Lighttpd Daemon Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: Active: active (running) since Mon 2019-04-15 22:55:29 JST; 1min 21s ago (省略) Active: active (running)という文字があることを確認し、ウェブ・ブラウザを起動してhttp://localhostにアクセスする。Placeholder pageというhtmlページが表示されればうまく...

Debian GNU/Linux 9でaptパッケージの自動更新

Debian GNU/Linux 9でaptパッケージの更新を自動的に行う方法には、 unattended-upgrades を使う方法やcronというサービスを使う方法などがあるが、ここではまず最も簡単な方法の一つ、rc.localを使う手順を示す。 /etcディレクトリ内にrc.localという名のファイルを作ってその中に実行したいコマンドを並べれば、システムの起動後や再起動後に自動的にそれらを実行してくれるようになる。/etc/rc.localの内容は例えば次のように記述する。 #!/usr/bin/bash apt update apt upgrade -y apt clean exit 0 オプションの-yはyes/noの問いに対してすべてyesと応えることを示す。最後の exit 0 は一連のコマンドがエラーなく正常に終了したことを示す終了コード0を親プロセスに返すものらしいが、必ず要るわけではなさそうだ。詳しいことは「終了ステータス」や「終了コード」で検索するといい。 テキスト・エディタを使わずにechoコマンドを使う場合は次のようにすればいいと思う。 # echo "#!/usr/bin/bash\napt update;apt upgrade -y;apt clean" >> /etc/rc.local 最後に、/etc/rc.localに実行権限を与えれば完了。 # chmod u+x /etc/rc.local ただしここで示したのは、aptパッケージ管理システムを使っているディストリビューションの場合。他のパッケージ管理システムではそれ向きのコマンドを記述する必要がある。 Linuxディストリビューションによっては/etc/rc.d/rc.localの場合もある。あるいは、このファイルがすでに存在している場合もある。その場合には上記のコマンドをそのファイルに追加してやればいいと思う。 cronを使う方法 cronを使う場合、cronがインストールされていなければインストールする。そのためにはスーパーユーザーの権限が必要になるのでここではsuというコマンドを使ってスーパーユーザーに成り代わっている。元のユーザーに戻るにはコマンドのexitを使う。 $ su # apt update;ap...

Eclipseのインストールと日本語化(Linux編)

イメージ
Debian GNU/Linux (buster)にEclipse IDE 2018‑12 64bit版をインストールして日本語化してみた。以下にその手順を記す。 ウェブ・ブラウザChromiumで https://www.eclipse.org/ にアクセスする。そのホームページの右上に「Download」というボタンがあるのでそれを左クリックする。で、「Get Eclipse IDE 2018‑12」という文字列の下にある「Download 64 bit」というボタンを左クリックする。すると、ダウンロード用のページが開かれる。 そこのページにある「Download」を左クリックするとダウンロードが始まるが、その前に「SHA-512」というボタンを左クリックすると表れるハッシュ値をテキストエディタにコピー&ペーストしておく。その後に「Download」ボタンを左クリックしてeclipse-inst-linux64.tar.gzという圧縮ファイルをダウンロードする。 ダウンロードした圧縮ファイルを伸長する前に、ハッシュ関数を使ってこのファイルのハッシュ値を算出する。 $ sha512sum eclipse-inst-linux64.tar.gz 8c85a306efdfc702e735ef90764ee1301273a0d82ba9ea5b1910dfea0a1864bf85bb299dccc736b9868063c6ddc55f99749660a8c553d9895dce8cb9c310bb2f eclipse-inst-linux64.tar.gz 算出されたハッシュ値がテキストエディタに先ほど貼り付けておいたハッシュ値と一致するかどうか、テキストエディタの検索機能などを使って確認する。一致したら、アーカイバ、例えばXarchiverなどを使ってその圧縮ファイルを伸長する。 伸長すると、eclipse-installerというディレクトリが作られる。その中にあるeclipse-instを実行すればインストーラが起動する。以下はその手順。 $ ./eclipse-installer/eclipse-inst この画面でどのパッケージをインストールするかを選ぶ。Javaで開発をするつもりだったのでここでは「Eclipse IDE for Java Develo...