2021年5月2日日曜日

Ubuntu 滅茶苦茶珍道中 其の九十九 (d) 拾って来たコード

皆さんも Web 上からコードを拾って来て、
試して見る事があると思います。
でも、 説明解説の通りにならない ... 、
そんな事、ありませんか?。


HTML コードの功罪 ... 。

欧米圏(特に英語)のケースでは少ないと思いますが、
日本語記述の場合、
HTML で記述された コード には 落とし穴が一杯 !。

実は、つい最近も 嵌まりました。
Samba で共有を! と張り切って始めた迄は良いのですが ... 。
Ubuntu の Samba 設定ファイル を弄っていた時の事。
コピペしてコードを作り上げ、いざ、構文チェックすると ... 。
蹴られる!。
何度、直しても、
蹴られる!。
蹴られる!。

user_a@Ubuntu:~$ sudo testparm
Load smb config files from /etc/samba/smb.conf
set_variable_helper(yes # Comments): value is not boolean!
Error loading services.

はい、 暫く悩んでいましたが、
どうやら、問題は コードを Web 上に載せる時の 表現方法 が原因の様で ... 。

斯く言う私も、
Blog に コード類を載せる時、
日本語の フォルダ(ディレクトリ)区切りの表現に ¥ を使います。
普通に ¥ のまま載せると \ に化けて仕舞うから。
同じ様な、回避策として、
半角の ¥ では無く、全角の ¥ にするケースもありますね。

尤も、 此の記号は Windows 固有の区切り記号ですけれど。
そんな経験 を積んで来た訳ですが ... 。

別の HTML での記述に、
連続した 半角スペース を 全角スペース等に置き換える方法もあります。
(  non-breaking space も良く採用されますね。)
HTML では 複数の半角スペース は ひとつと同じ と見なされて、
間隔を空けた心算が 詰まって仕舞うから。
そう、 Web 上の 見た目 対策 ですね。


これ等が、単に、文章なら 何の問題もありません。
でも、 何かの指示を意味する コード の場合、
文字列 は、明らかに、別のものに 置換されている訳で、
コードを解釈する時に エラー判定 に結び付く事に。
エラーと迄は行かなくても、誤解釈 される事が多い筈です。

今回の 落とし穴 が正に それ !。
参照 URL : 和字間隔
https://ja.wikipedia.org/wiki/%E5%92%8C%E5%AD%97%E9%96%93%E9%9A%94

yes  # Comments ... 。

yes / no を Boolean として解釈し、
後続の半角スペース群と# が続けば、# 以降をコメントと判断するのでしたよね。
  連続半角スペース群をひとつに集約 > 文節の区切として扱う > 次のトップが # なのでコメントと解釈。
しかし、
後続が全角スペース群なら # 以降も含めた 全体 を ひと塊の 文字列 に読む事に。
そう、 yes / no は 文字列の一部 に化けて仕舞う次第です。

これが、もし、
yes   # Comments なら(半角スペース+全角スペースふたつ)、
きっと、正確に、元の意味を汲み取り、エラーは吐かなかった筈ですけれど。

そりゃぁ、エラーを吐く訳だぁ!。  X(


  でも、此れは書いて置きましょう。
  HTML 表記上の問題がある とは言え、
  基本的には、其れの お陰 で、足掛かりを得られた訳ですから、
  文句や苦言は言わないで置きます。
  扉を開く鍵 を戴けたのですから、 ありがたい 事なのです!。  ;)

  但し、
  表記上の問題とは言え、 見た目 的には区別が付き辛いですから、
  此の手の 対処 の経験 が無いと、 泥沼に嵌まり込んで仕舞うかも、ですが ... 。



0 件のコメント:

コメントを投稿