2025年12月アーカイブ

ドキュメント・ルートとは?!

ドキュメント・ルートとは、そのドメインを公開しているディレクトリーのことです。

具体的には、https://example.comというドメインを/var/www/htdocs/で公開した場合、/var/www/htdocs/がドキュメント・ルートになります。 ドキュメント・ルートは、HTML上では/で表すことができます。

ドキュメント・ルート・パス

HTML上のリンクを/から記述する記法をドキュメント・ルート・パスと言います。

具体的には、トップページヘのリンクを<a href="/">トップ</a>と記述する事ができます。

ドキュメント・ルート・パスを使うと、ドメイン名の省略ができるので、テスト環境のURLhttps://test.example.com/top.htmlと本番環境https://example.com/top.htmlといった、ドメイン名の違いを吸収することができます。

また、CSSのリンクを相対パスで記述する <link type="text/css" href="../../css/index.css" /> ←このような記述をしなくても済みます。

MySQL 8.0のインストール時に、以下のコマンドを入力してMySQLを初期化しようとしましたが失敗しました。

sudo /opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql

以下のようなログが出力されています。

2020-12-31T04:19:51.070483Z 0 [System] [MY-013169] [Server] /opt/local/lib/mysql8/bin/mysqld (mysqld 8.0.22) initializing of server in progress as process 65161
2020-12-31T04:19:51.071361Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2020-12-31T04:19:51.071367Z 0 [ERROR] [MY-013236] [Server] The designated data directory /opt/local/var/db/mysql8/ is unusable. You can remove all files that the server added to it.
2020-12-31T04:19:51.071409Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-12-31T04:19:51.071510Z 0 [System] [MY-010910] [Server] /opt/local/lib/mysql8/bin/mysqld: Shutdown complete (mysqld 8.0.22)  Source distribution.

OSの入れ替え時に、HDD上にデータディレクトリが残っていた為でした。データディレクトリを移動して解決しました。

sudo mv /opt/local/var/db/mysql8 /opt/local/var/db/_mysql8

スキーマレスURLについて

スキーマレスURLとは?

スキーマレスURLとは、スキーマ(スキーム)の無い(レス)URLの事です。

そもそもスキーマとは??

スキーマは、schemeと書きます。http、https、ftp、sshなど、プロトコルをURLの先頭で指定する事です。

HTMLでは、<a href="http://example.com">とURLを記述しますが、ここのhttpやhttpsの事です。これを省略する(記述しない)記法をスキーマレスURLと言います。

URLのhttpやhttpsって省略できるの?!

できます!

具体的には以下のように書きます。 スキーマレスURLの記法のポイントは、URLの先頭を//(ダブルスラッシュ・スラッシュ2つ)で始めることです。 実際に自分で書いてアクセスしてみて下さい。リンクは有効です。

<a href="//example.com">example.com</a>

疑問!スキーマを指定しなかった場合は、httpになる?httpsになる?

httpになるか、httpsになるかは、現在表示しているページがhttpかhttpsかに寄ります。現在のページのプロトコルを踏襲(引き継ぎ)します。つまり、httpのページならhttp、httpsのページならhttpsでアクセスします。

疑問!それに何のメリットがあるの?

httpsとhttpのプロトコルが混じるのが防げます!

httpsのページにhttpが混じると問題なの?

httpsのページ内で、httpの通信を行うと、ブラウザが安全ではないと警告します。例えば、HTMLのページはhttpsで暗号化していても、JSやCSSや画像でhttpの通信を行った場合は、情報が漏れる可能性があります。単純なところでは、Cookieが閲覧可能な状態で送受信されます。

SEO上も不利に働くかもしれません。

macOS 26 Tahoeは非常にバギーです。(不具合が多い)

auひかりでは問題がないのに、Nuro光に繋ぐと、特定のドメインだけに繋がらなくなります。(githubなど)

原因はどうやら、DNSにあるようです。

「システム設定」→「Wi-Fi」から、利用するWi-FIの「詳細...」をクリックすると、下図のようなダイアログが開きます。DNSサーバーに8.8.8.8を追加することで接続ができるようになります。

image.png

Bitcoinのビルド

Bitcoinのソースコードをダウンロードする

git clone https://github.com/bitcoin/bitcoin.git

bitcoind のビルド

autogen.shconfigure は初期設定です。 make でビルドします。 make check でビルドをチェックします。


./autogen.sh
./configure --without-gui
make -j4
make check

--without-guiは、QTで作成されたウォレットアプリの作成をしないオプションです。 -j4は、ジョブ数を4つに増やすオプションです。この数字は、一般的にCPUのコア数に対して2倍が良いと言われています。 問題なければ src ディレクトリに bitcoind が作成されています。 src/bitcoind --version

SELinuxを設定した後、PHPからメールが送れない。 /var/log/maillogを確認すると、以下のようなエラーが出ているはず。

Mar 3 18:11:59 php postfix/sendmail[2237]: fatal: setrlimit: Permission denied

以下のコマンドでSELinuxの設定を確認できます。

sudo getsebool httpd_can_sendmail
httpd_can_sendmail --> off

以下のコマンドで、offからonに変更します。

sudo setsebool -P httpd_can_sendmail on

Eclipseで入力補完(コンテンツ・アシスト)が効かなくなった場合の対処方法は、環境設定から、PHP → Editor → Content Assist → Enable auto Activation を有効化する。

環境設定→PHP→Editor→Content Assist→Enable auto Activation

MacPortsだと全てのバージョンのMySQLを実行できます。

/opt/local/etc/mysql8/macports-default.cnfskip-networking が設定されているからです。

これは、TCP/IPによる通信ではなく、UNIXドメインソケット(ファイルシステムを使ったプロセス間通信)を利用しているからです。

これは、.sockファイルのパスを変えることで、複数バージョンの起動を可能にする手法です。

TCP/IPでは待ち受けポート(リスニングポート)番号は重複できません。(当然!)

逆に言うと、ポート番号を変えれば複数バージョンの起動も可能ですし、同一バージョンを複数起動する事も可能です!

JavaScriptのクロスオリジン

CORS - Cross-Origin Resource Sharing

クロスオリジンとは、異なるドメイン間でJavaScriptなどのAjaxを行う方法です。

JavaScript側の設定

スクリプトの読み込みを行うタグで crossorigin="anonymous" を付ける。

<script src="http://example.com/js/ajax.js" crossorigin="anonymous"></script>
サーバー側の設定

JavaScriptファイルの送信ヘッダーに Access-Control-Allow-Origin ヘッダーを付加します。

<?php header("Access-Control-Allow-Origin: *"); ?>

Eclipseのデフォルト設定では、タブを入力すると自動的にスペースに変換されてしまいます。この設定を解除するのは、知らないと中々難しいのです。

検索エリアから「tab」を含む設定を探し、まさしくこれだろうと思いますが、これは違います。

検索エリアに「formatter」と入力して、PHP > Code Style > Formatter を選択し、下図の「show...」ボタンをクリックします。

下図の「Tab policy」を「Space」から「Tab」に変更します。

NodeJS で、プログラムを修正する度に一々プロセスを再起動するのは非常に面倒くさいです。そこで便利なのがnodemonです。

nodemonは以下でインストールします。-gはグローバルオプションです。

sudo npm install -g nodemon

使い方は、node の代わりに、nodemon を使うだけです。

nodemon test.js

ファイルの修正を監視して、ファイルが修正されたら自動的に修正をリロードします。

FreeBSD で Puppeteer

FreeBSD で Puppeteer を使うと

UnhandledPromiseRejectionWarning: Error: Unsupported platform: freebsd

というエラーが出ます。なぜ FreeBSD がサポートされていないのか分かりませんが、Chromiumpkg からインストールすることで解決できます。

sudo pkg install chromium

Chrome がインストールされているパスは、Puppeteer に明示的に指定する必要があります。

(async () => {
const browser = await puppeteer.launch({
executablePath: '/usr/local/bin/chrome',
});

詳しくは Puppeteerissue に掲載されています。

https://github.com/puppeteer/puppeteer/issues/1049#issuecomment-381846813

MySQL 8.0 では、安全のためインストールする毎にrootのパスワードをランダムな文字列で自動的に作成します。

MySQL 8.0をインストールすると、次のようなメッセージが表示されます。(以下はMacPortsでの例)

mysql8-server has the following notes:
If this is a new install you might want to run:

$ sudo /opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql
$ sudo port load mysql8-server
$ /opt/local/lib/mysql8/bin/mysql_secure_installation

The first command creates the necessary files for the MySQL database service.
(Remember to make a note of the auto-generated root password from this step.)
The second command starts the MySQL service.
The last command helps to improve the security of your running MySQL instance.

Once enabled, the MySQL logs can be found in:
/opt/local/var/log/mysql8

上記には、最初に実行する3つのコマンドが指示されています。最初に実行するのは以下のコマンドです。

sudo /opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql

上記のコマンドを実行すると、以下のような実行結果になります。赤矢印の箇所にrootのパスワードが作成されています。

FreeBSDに無線LANの設定を手作業で追加する方法

FreeBSDに無線LANの設定を手作業で追加する方法です。

Step 1: インターフェイス名を確認

ifconfigコマンドでwlan0があるか確認する。

Step 2: /etc/rc.conf に固定IP設定を追加

📌 /etc/rc.conf の設定

wlans_xxx0xxx0の部分はあなたの実デバイス名に合わせて変更します。

wlans_iwn0="wlan0"
ifconfig_wlan0="WPA inet 192.168.1.100 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

次のDHCPの設定が残っていた場合は削除する。
ifconfig_wlan0="WPA DHCP"

✅ Step 3: /etc/wpa_supplicant.conf を作成

network={
    ssid="ssid_name"
    psk="ssid_password"
}

✅ Step 4: ネットワーク再起動

service netif restart
service routing restart

MySQL8.0.4から、パスワードの認証方式が変わっているため(caching_sha2_password)、PHPから接続する際に、古いパスワードの認証方式(mysql_native_password)で行っていると以下のようなエラーが表示されます。

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

この記事では、caching_sha2_passwordから、mysql_native_passwordへ変更する方法を案内しています。

まず、以下のコマンドでMySQL Serverに接続します。

mysql -u root -p

以下のSQL文で現在の設定を確認します。

SELECT user, host, plugin FROM mysql.user WHERE user='root';

以下のように出力されるはずです。

+------+-----------+-----------------------+
| user | host      | plugin                |
+------+-----------+-----------------------+
| root | localhost | caching_sha2_password |
+------+-----------+-----------------------+

以下のSQL文でrootのパスワードをmysql_native_passwordで変更します。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';

このアーカイブについて

このページには、2025年12月に書かれた記事が新しい順に公開されています。

前のアーカイブは2025年11月です。

次のアーカイブは2026年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。