変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

インターネット

CPUのマルチコアやマルチスレッドはGUIならデフォ仕様

# top でこのブログサーバーの一瞬の動きを見てみると

top - 18:49:32 up 12:19,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 120 total,   2 running, 118 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1918224 total,   180528 free,   763520 used,   974176 buff/cache
KiB Swap:  2097148 total,  2018320 free,    78828 used.   978824 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1422 mysql     20   0 1104484  95844   3696 S   0.7  5.0   1:30.00 mysqld
 5388 root      20   0  130032   1736   1172 R   0.7  0.1   0:00.08 top
  379 root      20   0       0      0      0 S   0.3  0.0   0:26.84 xfsaild/dm+
 5335 root      20   0       0      0      0 S   0.3  0.0   0:00.24 kworker/0:2
    1 root      20   0   56332   2452   1276 S   0.0  0.1   0:05.90 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.89 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:+
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.04 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/0
   10 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/1
   11 root      20   0       0      0      0 S   0.0  0.0   0:17.52 rcu_sched
   12 root      20   0       0      0      0 R   0.0  0.0   0:13.39 rcuos/0
   13 root      20   0       0      0      0 S   0.0  0.0   0:09.46 rcuos/1
   14 root      rt   0       0      0      0 S   0.0  0.0   0:00.78 watchdog/0
   15 root      rt   0       0      0      0 S   0.0  0.0   0:00.75 watchdog/1
   16 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migration/1
   17 root      20   0       0      0      0 S   0.0  0.0   0:00.22 ksoftirqd/1
   19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:+
   20 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 khelper
   21 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs
   22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns
   23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 writeback
   24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kintegrityd
   25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset
   26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kblockd
   27 root      20   0       0      0      0 S   0.0  0.0   0:00.01 khubd
   28 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 md
   31 root      20   0       0      0      0 S   0.0  0.0   0:00.02 khungtaskd
   32 root      20   0       0      0      0 S   0.0  0.0   0:03.83 kswapd0
   33 root      25   5       0      0      0 S   0.0  0.0   0:00.00 ksmd
   34 root      39  19       0      0      0 S   0.0  0.0   0:02.15 khugepaged
   35 root      20   0       0      0      0 S   0.0  0.0   0:00.00 fsnotify_m+
   36 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 crypto
   45 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kthrotld
   46 root      20   0       0      0      0 S   0.0  0.0   0:00.11 kworker/u4+
   47 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kmpath_rda+
   49 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kpsmoused
   69 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 deferwq
  115 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kauditd
  257 root      20   0       0      0      0 S   0.0  0.0   0:00.57 kworker/u4+
  258 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 ata_sff
  259 root      20   0       0      0      0 S   0.0  0.0   0:00.00 scsi_eh_0
  260 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 scsi_tmf_0
  261 root      20   0       0      0      0 S   0.0  0.0   0:00.00 scsi_eh_1
  262 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 scsi_tmf_1
  345 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kdmflush
  346 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset
  353 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kdmflush
  354 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset
  372 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 xfsalloc
  373 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 xfs_mru_ca+
※120個のプロセスが常駐し、同時に動いているのはたった2個だけ。

これはKVMホストからCPUを2個割り振っているため最大で2個になっているのだ。※J1900は2コア4スレッド構成。
本来は120個もCPUが必要なのか?と云えば、別に急がなくてもよい処理が多く、短い間隔で120分の2の比率で順に動作するだけで間に合っているのだ。
それでも、WEBのapacheやデータベースのmysqld の様に忙しいモノも混ざっているので、4~8個ぐらいCPUがあった方が応答性能があがるだろう。
スマフォやタブレットで使われてるAndroidもベースはLinuxなので、いつも1個のプロセスしか常駐していない訳では無いだろう。
本当に単純なことをさせるなら、
例えばスピーカーから50Hzの音を出すなら

10ms待ってからスピーカーの端子の電圧を0にする

10ms待ってからスピーカーの端子の電圧を1にする

フリダシに戻る

とか

フラグを0にする

インターバルタイマーを10msにセットする

フラグの内容をスピーカーの端子に送信

フラグの内容を反転する

など非常に簡単なプログラミングでできるが、いくつもの音源をミキシングするとなると、この手のプログラミングでは全く歯が立たない。
各音源のある程度の長さの出力結果を作成し、それをまとめ、インターバルタイマーで順次送信すればいいのだが、
各音源のある程度の長さの出力結果を作成する時間が希望する時間が インターバルタイマーの設定時間 を越えてしまうこともしばしば起きるだろう。そうなると、音切れが発生してしまう。
しかし、仕様書に

  • 各音源のある程度の長さの出力結果を作成する時間がインターバルタイマーの設定時間を越えそうなら、中断すること

と書いても、音源データ作成中にマメに残り時間をチェックしていたら、

残り時間を気にしている時間 >> 音源データ作成

になりかねないので、処理中断用のトリガ(割り込み)機能がCPUに必要になるだろう。
これ以外にもあれこれ音源プログラムを使うなら、予約したメモリをオーバーランして他の音源のデータを上書きしないような警報機とかも必要になるだろう。
な訳で、同様にGUIでリアルタイムに多少複雑なこと(時計を表示しながら電波強度も表示するなど)をしようとすると、タスク・スケジューリングは避けられないし、タスクを安全に使うには、割り込み機能や警報機能なども必須なものになっていく。
そうなると例え最大効率が80%でも4~8個分のCPUがあった方が高い負荷がかかったときに踏ん張りが効いてくると云うものだ。
数日ごとにアップデートを乱発するようなAndroidのアプリが多い。Wifiでアプリのアップデートをダウンロードしながら、ゲームができるくらいの性能がないと、ゲーム中にアプリのアップデートを検知しダウンロードが始まりハングアップしてしまっては、いつもゲームシステムに「回線切り逃げ」と判定されKO負けしてしまう。これを回避するには、それなりの余剰性能が必要になってしまう。
ただ、CPUの余剰性能だけでなく、RAMもそれなりに必要になるので、時々手持ちのスマフォやタブレットがハングアップになってしまう様なら、もっと高い性能のものに買い替えるしかないだろう。
ボクの場合、メモリ512MBの中華タブレットを持っていたが、これが毎日起動から30分ぐらいはAC電源接続のまま暖機運転(アプリのアップデートの確認)が必要だった。これを怠ると、タブレットの設定画面を呼び出すだけでアプリのアップデートと競合が起き確実にハングアップ。回復にはリセットするしかなので、諦めてNEXUS7に乗り換えた。
つまり、ただ持ち歩くだけで満足するならモリ512MBの中華タブレットでも十分、ハングアップも気を付けて扱えばよいならマルチコアなど不要だ。
しかし、度々のハングアップで愛想が尽きたなら買い替えていいだろう。



CPUとシステムクロックとIPC

CPUはシステムクロックが高いほど性能があがりやすい。それは大雑把にCPUが所定の命令を繰り返して処理しているからだが、それはいくつかの手順(フェーズ)に分けられる。

  1. フェッチ:メモリから命令を読む。
  2. エンコード:読み取った命令を回路の信号に変換して送り出す。この信号が届いた回路が動作する。
  3. ロード:所定のデータを読み込む。
  4. オペレーション:データに変更を加える。
  5. セーブ:所定の場所にデータを保存する。

これを単純に繰り返すと、手順が5段階も必要で、これではシステムクロックが5GHzでも、実質的なシステムのサイクルは1GHzになってしまう。しかも、手順の関連性が高く、順番通りに処理するしかないのだ。
だが、どこかの手順の間は他の手順でしか使わない回路はヒマしているのだから、次々と流れ作業を行う様に構成すれば、1つ1つの命令の結果が出てくるのは1GHz相当の時間が係るものの、5GHzで命令を読み取るので、ある程度の時間の間には5GHzで処理している様に見えるだろう。だがロードやセーブと同じ回路を使って毎回CPUの外のメモリから命令を読んでいたら、5手順のうち3手順で順番待ちが発生しせっかくのパイプラインも「たまにデータが流れていく」程度のシロモノになってしまう。パイプラインを効率的に回すにはどの手順からも手軽にアクセスできるメモリ(キャッシュ)が必要だ。いっそのことロードやセーブの手順もCPUの外のメモリはあまりアクセスせずキャッシュへのアクセスがフル回転するようにプログラミングすれば、パイプラインにはいつもデータが流れるだろう。また、処理時間が案外かかるオペレーションはパイプラインの列を増やしロードとセーブがよどみなく回る様にもできるだろう。そこまで工夫しても外部回路へのアクセス=CPUが処理した結果報告なので、低速な外部回路へのアクセスが無くなる訳では無く、1つのプログラムにCPUを独占させてもそうそう効率良く処理できないので、複数のプログラムを時分割処理をさせ順に外部回路へアクセスさせたり、CPUそのものを沢山集め複数のプログラムを並列処理させたりするのも手だ。
今のCPUはとりあえずそんな感じになっているし、CPUの種類や製造メーカーによってシステムクロックと処理速度の比率もバラバラで、「同じ系列のCPUならシステムクロックが速い方が処理速度が高そう」という目安にしかならないが、IPC(1クロックあたりに実行可能な命令数)とシステムクロックの掛け算をすればいいのかもしれない。
今時分のCPUのシステムクロック速度は停滞気味で、処理速度の向上はCPUの並列化が主な手段となっており、CPUを集合するクラスターの規模を越え、もっと巨大なクラウド(サーバーをたくさん集めたもので使っているサーバーがドレなのかは判らない)になりつつある。これは自前でサーバーを用意するなら予備機やバックアップも自前で用意しなければならないが、沢山のサーバーの塊であるクラウドなら、まだ未使用のサーバーがそれを兼ねることができるので、コストや手配の手間を低く抑えることができることが大きいのだが、それはひたすら規模拡大を突き進めている状況でありバブルな状態と云えるから、
いつかは「結局、高い買い物になってしまった。」という時がくるのだろう。



サーバーに接続できないか応答がありません

DiCEを使ってる当BLOGサーバーは無関係だが・・・
FFXIVのファンサイトのDNSはお名前.comにお任せしているので、お名前.comのダイナミックDNSクライアント(Ver.3.1.0.3)を使っている。
実は、ここ暫くの間は、通信がうまくできないらしい。
IPアドレスが変わらない時は無視されるのか?と思い、ルータを再起動させWAN側のIPアドレスを変えたが、「サーバーに接続できないか応答がありません」のまま。
WAN側のIPアドレスはちゃんと読めているので謎。
nslookupで更新されるまで、謎のIPアドレスが返って来ることがある。
今はファンサイトはUSのISPが管理する50.63.202.* ということになっている。
多分、ドメイン管理費を滞納したらそっちに飛ばされるのだろう。
ブラウザで見てみると
403 Error – Forbidden
Forbidden.
まだ、そのときではないらしい。
とりあえず、ファンサイトはブラウザからお名前.comのDNSナビで再設定済み。
しかし、まだ反映はされていない。※最大1時間ぐらいかかるらしい。
なので、今は誰も観れない訳だね(現在は、更新済
また、スマフォからの番組録画の予約に便利な「Gガイド・テレビ王国」もSEN(SonyEntertaimentNetwork)アカウントでログインできない状況が続いている。



CHIP

Rasberry pi より小さい4cm × 6cm のボードに
Allwinner R8プロセッサ(Cortex-A8 コア1GHz+GPU)、512MBのメモリ、4GBのフラッシュメモリ、USB、コンポジットビデオ出力、Wifiを詰め込んだもの。
9ドルとローコストだからロースペックではあるけれど、GPIOポートがあるので、ロボットのコントローラとか、温度・湿度のセンサーを繋いで、Wifiでデータを飛ばすといった、Arduno と Rasberry pi のドッチにしようか?と悩みそうな分野に向いていそう。
またRasberry piならUSB-HDDを繋いで、ブログサーバーを作れるけど、何かと重いから・・・
CHIP×3台でapacheとmySQLとnfsを分担させてもいいかもしれない。(笑
Ardunoには専用の3Gシールド(モジュール)が販売されている(数万円ぐらい)ので、室内だけではなく、少し離れた場所でも使えそう。USB接続のようでRasberyPIでも使えるらしいから、CHIPでも使えるかも?
 
 



Anacron job 'cron.daily' on ・・・

トランザクションの要約
================================================================================
インストール   1 パッケージ
更新          43 パッケージ
Updates downloaded successfully.

Updates successfully(正常にアップデート)に見えそうだが、
Updates downloaded successfully(アップデートを正常にダウンロード)だった。

# yum -y update

いっぱいあるのでアップデート時間が長い。
libvirtのアップデートが含まれていると、いつまでたってもアップデートが始まらないので

# virsh shutdown ${KVMゲストのドメイン名}

すると 開始。
KVMゲストが全て停止しているのを確認してから、モジュールのインストールが始まるっぽい。



RSSって読んでる人いるんだ・・・

外に出ていたけどずーっと歩いていたので足がつってきた。
ログチェックをしていたら、RSS CHECK の文字が気になった。
WordPressを使っているとRSSで自動的に最近の記事の要約を送ってくれる。
普通、余程人気のあるサイトじゃないと読むだけ無駄だと思っていたけど・・・こんなトコを1時間毎に巡回しているところがあった。
購読設定すれば更新が少ないサイトならページをめくらずに一気に一か月分とか読めるのかな?
FireFoxではRSSの購読設定時に読み込んだRSSをプルダウンメニューのドコに表示するか場所を指定するんだけど滅多に見ない場所に置いてすっかり忘れてしまったとか、間違って違うトコに設置しちゃった後も・・・
ブラウザは律儀にいつまでもチェックしているのかもしれない。
最近ブラウザが時々重くなると感じたら、ブラウザのメニューを一通りしてチェックしてみた方がいいかもしれませんね。
スマフォの通信量も過去の忘れモノのRSSで凄いことになってるとか・・・あるかもしれませんね。
その前に履歴の数が凄いことに気が付いた。4月だけで4000件以上、消すだけでも重い!



キューに溜まったままのメールを削除

いつまでも消えずにキューに溜まったままになるらしい。
なので手動で削除。
# mailq
-Queue ID- –Size– —-Arrival Time—- -Sender/Recipient——-
F1A1541*49A0     1984 Wed May  * **:**:**  *********@***.***
(connect to ***.***.***[***.***.***.***]:**: Connection timed out)
************@***.**
— 2 Kbytes in 1 Request.
# postsuper -d F1A1541*49A0
postsuper: F1A1541*49A0: removed
postsuper: Deleted: 1 message
# mailq
Mail queue is empty



mini-ITXマザボの選び方

1.CPUの周りにコネクタがあるものは避ける。

Q1900DC-ITXはCPUのヒートシンクのすぐ傍にメモリ・ソケットがあり、縦置きにすればヒートシンクの真上にメモリスロットが位置するので見た目は失格もの

但し、使ってみた感じではヒートシンクを触っても発熱を感じないしファンの排気も冷たく実用上は問題無さそう。

しかし計測してみると

# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +26.8°C  (crit = +90.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +37.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:       +37.0°C  (high = +105.0°C, crit = +105.0°C)
Core 2:       +40.0°C  (high = +105.0°C, crit = +105.0°C)
Core 3:       +40.0°C  (high = +105.0°C, crit = +105.0°C)

しっかり発熱している。

MRTGの計測ではCPU負荷(CPU Load(%))に連動して

cpu-day

ちょっと温度(temp1)が上がる(緑帯:temp1、青線:Core 2)程度なので大丈夫そう。

temp1-day

但し、Windowsを入れてゲームをした場合はもっと発熱する様な気がする。

2.USB3(最大データ転送速度5Gbps=512MByte/秒)のコネクタは多い方がいい。

ケースの裏側に拡張スロットが無い場合は、拡張ボードでUSB3増設は無理なので、使う予定は無くても裏面に1個は欲しい

※ケースに拡張スロットがあり、マザボにもそれに対応したPCI-eのソケットが付いている場合は後付けも可。

バックアップのような想定外の事態にことかかないのがパソコン!いざバックアップしてみたら数時間なんてことになる。

今回は手持ちの40GBと小容量SSD。USB2(実績転送速度13MB/秒)で1時間、USB3(実績転送速度110MB/秒)で6分なのでUSB2でも我慢できる範囲けど、5倍の容量の200GBだったら5時間ですからね。(大笑

3.無線LANの有無は微妙。

今の無線系はOSをインストールしてそのまま使う時にとても便利。

Windowsで使うならWifiやBluetoothはあった方が良い。

Linuxサーバー(CentOS6)でも、Wifiの設定がうまくいった後に、/etc/init.d/wpa_supplicantの最後にifup wlan0を書くだけでいい良い。

しかし、KVMで仮想サーバーするとなると想定外らしく

ブリッジの接続先のIPアドレスが決まっていないと色々マズい(ブートログとか)ので、サービスの起動がその後回しになっている無線LANはうまく動かない。

Bluetoothも手作業の認証が必要なのでKVMのホストとゲストで切り替えるのが難しい。

つまりBluetoothキーボードはホストで、Bluetoothスピーカーはゲストで使いたい場合はBluetoothアダプタをOSごとに用意しないと無理。

このあたりはホストでゲストのリクエストをうまくさばくブリッジっぽい機能が欲しい。

4.PS/2、シリアル、パラレルなど使わないポートは無い方がいい。

マザボを生産している国の事情(それらがあった方が売れる≒安くなる)だろうから、無いモノの方が高級感があるのか高い。

PS/2ポートは古くはCPU負荷が上がるとUSBの音切れやマウスの反応が途切れると敬遠され使い続けられたが、今もCPUをそこまで酷使するゲームは皆無だろう。

シリアルポートはビルのどこかの装置の入出力として残っていることがある。それ自体に信号を補正したり訂正機能は無いが、所定のコマンドをやり取りすることで補完されていることが多い。現在もSoCのデバッグ用のコンソールがコストの都合でシリアルポートだったりするが、安価なUSB-シリアル変換ケーブルで間に合う。

パラレルポートはプリンタ用のポートで信号を補正したり訂正機能が無くデジタルデータを垂れ流すので雑音を拾わない様に工夫された分厚いケーブルを使うがトラブったらもっと高価なケーブルを買うハメになるので、今日ではUSBに変わっている。

USB3が無いなら裏面にeSATAポートがあった方がいいだろう。ただしUSB3があった方がいいのは云うまでもない。

5.PCI-e(xpress)スロットは微妙。

mini PCI-eでは、何とか専用スロットになっていることがある。これは基盤の配線が汎用ではなく専用になっているという意味で、ソフトウェアで変更はできない。

普通のPCI-eの×16のソケットでも接続は×2や×4だったりする。

大き目のmini-ITX用ケースには裏面に拡張スロットがありグラボも入れて小さいゲームPCを作りたい人向け。

6.ただ小さいパソコンが欲しい人にmini-ITXは向かない。

ケースが小さいと、パーツの組み込みや配線が大変で、余ったケーブルの束(特に電源ユニット)の置き場所に困り、全て片付けるまでに結構時間がかかる。

mini-ITXのマザボでも膝の上に乗せてイジれるミドルサイズのケースが一番扱いやすい。

デッドスペースが余ったケーブルの束の置き場所になる。

mini-ITX用ケースなのに普通のデスクトップ並みのサイズのケースこと。

フルタワーサイズのケースでもいいがバックパネルを取りつけてマザボをネジで固定するにはケースを横倒しした方が楽で結構広い場所が必要。

ベットやコタツでもいいけど、ネジを無くさない様にシートを敷くこと。

もっと大きなケースは電源ケーブルが何本か届かない事が多い。

事前に判明するのは難しく、最初は仮組み。

総重量10㎏以上のケースにパーツを入れるとかなり重くなっている。

その上、故障したら自分で面倒を見なければいけない。

今ならスティック型PCがあり、パーツを吟味して組み合わせるより、簡単で値段が安いし、何かの保障がついていることが多い。

10インチの様な小さいディスプレイ一体型パソコンが欲しいならWindowsタブレットがある。

7.オーバークロックして遊びたい。

たまに取り出して遊びたいなら、場所を取らない小さなmini-ITXは都合がいいかもしれない。

手軽にケースを外し扇風機の風を当てれば全体を空冷することもできるだろう。

買ってきたパーツでどこまでクロックが伸びるのかが重要なのだから・・・

ただ、安いパーツを集めできるだけ性能を高めていた当初のオーバークロック遊びは今では難しい。というのもコアの温度制御が進み、コアが過熱しない程度のクロックが定格になって久しいので、オーバークロックの発熱対策(例えば大きなラジエータで水冷)にカネがかかっては意味が薄れるからだ。

今は一番グレードの高いCPUやGPUを買い、アタリを見つけるまで買い続けレースにエンントリーすることがメインなのだろう。

ただボクは発熱対策の勝負つまり曲芸化したオーバークロックにあまり興味が沸かなくなってしまった。

とは云え全く役に立たないレースかと云えばそうでもない。

そう云う目があるからこそCPUとヒートスプレッダーの間に安物が使われている(定格運用なら支障無し)という発見があるのだから。(大笑



\xe3\x83\x87\xe3\x83\xbc\xe3\x82\xbf\xe3\x83\x99\xe3\x83\xbc\xe3\x82\xb9\xe3\x82\xa8\xe3\x83\xa9\xe3\x83\xbc

サーバーがUTF-8コードなら
echo -e “\xe3\x83\x87\xe3\x83\xbc\xe3\x82\xbf\xe3\x83\x99\xe3\x83\xbc\xe3\x82\xb9\xe3\x82\xa8\xe3\x83\xa9\xe3\x83\xbc”
で、データベースエラー と表示される。

区 点 JIS  SJIS EUC  UTF-8  UTF-16 字
05 39 2547 8366 A5C7 E38387 30C7   デ
01 28 213C 815B A1BC E383BC 30FC   ー
05 31 253F 835E A5BF E382BF 30BF   タ
05 57 2559 8378 A5D9 E38399 30D9   ベ
01 28 213C 815B A1BC E383BC 30FC   ー
05 25 2539 8358 A5B9 E382B9 30B9   ス
05 08 2528 8347 A5A8 E382A8 30A8   エ
05 73 2569 8389 A5E9 E383A9 30E9   ラ
01 28 213C 815B A1BC E383BC 30FC   ー

UTF-8 の文字コードは最初のバイトで、文字のバイト数を示し、
文字が1バイトの場合 0xxxxxxx で使えるのは7ビットで表現できる文字のみ。
文字が2バイトの場合 110yyyyx 10xxxxxx
文字が3バイトの場合 1110yyyy 10yxxxxx 10xxxxxx
文字が4バイトの場合 11110yyy 10yyxxxx 10xxxxxx 10xxxxxx
文字が5バイトの場合 111110yy 10yyyxxx 10xxxxxx 10xxxxxx 10xxxxxx
文字が6バイトの場合 1111110y 10yyyyxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
yyyyx…xに右詰めで文字コードを格納する。
各バイトのヘッダービットと文字コード は0ビットで区切られている。
UNICODEではカナや漢字は、上位4ビットが0にならないので、3バイト以上になる。
但し、他国文字の割り当てになっている\、¶(改行文字)、α(アルファ)などが2バイトで、記号類の長さは不定。
今見てみると、EUCっぽいもので良かったと思えるが、WEBのHTMLにはその様な文字コードで書かれたものが沢山あるので、他の文字コードとは区別しやすい(自動判別可能)ことが重要だったに違いない。



\xe3\x83\x87\xe3\x83\xbc\xe3\x82\xbf\xe3\x83\x99\xe3\x83\xbc\xe3\x82\xb9\xe3\x82\xa8\xe3\x83\xa9\xe3\x83\xbc

サーバーがUTF-8コードなら
echo -e “\xe3\x83\x87\xe3\x83\xbc\xe3\x82\xbf\xe3\x83\x99\xe3\x83\xbc\xe3\x82\xb9\xe3\x82\xa8\xe3\x83\xa9\xe3\x83\xbc”
で、データベースエラー と表示される。

区 点 JIS  SJIS EUC  UTF-8  UTF-16 字
05 39 2547 8366 A5C7 E38387 30C7   デ
01 28 213C 815B A1BC E383BC 30FC   ー
05 31 253F 835E A5BF E382BF 30BF   タ
05 57 2559 8378 A5D9 E38399 30D9   ベ
01 28 213C 815B A1BC E383BC 30FC   ー
05 25 2539 8358 A5B9 E382B9 30B9   ス
05 08 2528 8347 A5A8 E382A8 30A8   エ
05 73 2569 8389 A5E9 E383A9 30E9   ラ
01 28 213C 815B A1BC E383BC 30FC   ー

UTF-8 の文字コードは最初のバイトで、文字のバイト数を示し、
文字が1バイトの場合 0xxxxxxx で使えるのは7ビットで表現できる文字のみ。
文字が2バイトの場合 110yyyyx 10xxxxxx
文字が3バイトの場合 1110yyyy 10yxxxxx 10xxxxxx
文字が4バイトの場合 11110yyy 10yyxxxx 10xxxxxx 10xxxxxx
文字が5バイトの場合 111110yy 10yyyxxx 10xxxxxx 10xxxxxx 10xxxxxx
文字が6バイトの場合 1111110y 10yyyyxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
yyyyx…xに右詰めで文字コードを格納する。
各バイトのヘッダービットと文字コード は0ビットで区切られている。
UNICODEではカナや漢字は、上位4ビットが0にならないので、3バイト以上になる。
但し、他国文字の割り当てになっている\、¶(改行文字)、α(アルファ)などが2バイトで、記号類の長さは不定。
今見てみると、EUCっぽいもので良かったと思えるが、WEBのHTMLにはその様な文字コードで書かれたものが沢山あるので、他の文字コードとは区別しやすい(自動判別可能)ことが重要だったに違いない。




top