変奏現実

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

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

2018 / 4月

【raspberry pi】matchbox-keybord 文字化け

仮想キーボードを入れてなかったので
Matchbox-keyboardをインストしたら
アレ?文字化け?
アレ?スクショはどうやって・・・ぐぐってみる。
# sudo apt-get install ksnapshot
# sudo reboot

確かに日本語フォントなんてインストしてない。
# sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
# sudo reboot

これで
メデタシメデタシ
と行きたいところだが
ksnapshot で Take a New Screenshot が遅すぎ。
Raspberry pi 3じゃないと使い物にならないんじゃなかろうか?
範囲指定で撮ろうとしたら暫くは真っ白な画面になる。
# sudo apt-get remove ksnapshot
# sudo apt autoremove
これからはScrotでいいや
 
 



【Raspberry pi】LCD

コレ
前のは専用にチューニングしたLINUXでしか使えなかったが今度の普通のRaspbianで何とかなった。
但し、LCDドライバーは別途ダウンロード
ホームディレクトリィあたりで
sudo wget ドライバーのアドレス(~/LCD-show-170703.tar.gz)
sudo tar xvf LCD-show-170703.tar.gz

cd  LCD-show
sudo ./LCD35-show
するとリプートするので緑のLEDの点滅が終わるまでというか消えるまで待つ。
sudo ./LCD-hdmi
で元に戻るのでSSH接続を確保した方がいい。
Keyboard設定は
Model: Generic 105-key(Intl)PC
Layout: Japanese
Variatn: Japanese(OADG 109A)
で良さそう。
画面が小さいのでダイアログが画面からはみ出すのが難点。



【CentOS7】実は古いバージョンのままのMariaDBでハマる

CREATE TABLE IF NOT EXISTS `enum` (
`id` mediumint(9) NOT NULL COMMENT ‘主キー’,
`name` varchar(16) DEFAULT NULL COMMENT ‘enum名’,
`version` varchar(16) DEFAULT NULL COMMENT ‘バージョン’,
`list` text COMMENT ‘キーとバリューのリスト 書式はJSON’,
`cre_ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘作成日時’,
`up_ts` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新日時’,
`del` tinyint(1) NOT NULL DEFAULT ‘0’ COMMENT ‘削除フラグ’
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT=’列挙型宣言’;
な感じのテーブルを作ろうとしたら、MariaDBのVer5.5ではCURRENT_TIMESTAMPが使えるのは1カラム限定だった。
作成日時と更新日時の両方を気にせずに済むようにしたかったダケなんだが・・・
本家を見てみる。画面で、CentOSで、7で、x86_64で、Ver 10.1 と順に選択していくと、yumが使えるらしい。
まず、新たなMariaDBのリポジトリィの追加が必要で、先の画面の云う通りに /etc/yum.repos.d/MariaDB.repoを追加。
新規サーバーなら
# sudo yum install MariaDB-server MariaDB-client
でいいらしいけど、そうは行かないので、
公開中のブログ鯖なら・・・
ここでルータから80ポートを飛ばさない様にしないと、
アップグレード中はあの文字化け画面(echoコマンドで16進数ダンプをUTF-8に変換すると、「データベースの接続に失敗しました。」とかになるハズ)を送信してるはずだし、アップグレード自体、失敗するかもしれない。
さて、https://mariadb.com/kb/en/library/yum/ を見ながら・・・
# systemctl stop MariaDB
# systemctl status MariaDB
でちゃんと止まっているのを確認する。

Active: inactive (dead)

# yum update MariaDB-server MariaDB-client
# systemctl start MariaDB
ここでやっとphpMyAdminやWordPressが使えるようになる。
とりあえず、支障はない様だ。先のCREATE TABLEもOK。
メデタシメデタシ。
******************************
と思ったら、10.2というのがあったのでコレにアップグレードしようと思ったら、ならないので
本家を見てみる。画面で、CentOSで、7で、x86_64で、Ver 10.2 と順に選択して
先の画面の云う通りに /etc/yum.repos.d/MariaDB.repoを改ざん。
# systemctl stop MariaDB
# yum update MariaDB-server MariaDB-client
してみると、失敗。
先のページを読むと、一旦5.5にダウングレードして10.2にアップグレードした方が良かったらしい。
では、今はどうなっているのだろうか?????
# yum list MariaDB-server MariaDB-client
どうやら、10.1と10.2が混在。
10.2の方が黄色い文字で表示された。
一旦、両方を削除。
# yum remove MariaDB-server MariaDB-client
そして、やりなおし。
# yum install MariaDB-server MariaDB-client
# systemctl start MariaDB
で、phpMyAdminにも「サーバのバージョン: 10.2.14-MariaDB – MariaDB Server」と表示された。
多分データベースだからremoveしても設定やデータ関連のファイルは消さないのだろう。
普通のパッケージでもremove時に設定ファイルの名前をバックアップっぽい名前に変えていて install時に再利用することもあるけど、「設定がゴッソリ消えることもある」と思った方がいいだろう。
 
以上、自宅鯖のお話。
あ、ここ(lolipop)のサーバーのデータベースのバージョンは変えられないと思うよ。
 
メデタシメデタシ。
ps.
後で見つけた
https://mariadb.com/kb/en/library/upgrading-from-mariadb-101-to-mariadb-102/
を見ると、
10.1から10.2にアップデートするには
 

の手順になるらしいが、CentOSには

は無いそうなので、やらない。
しかし、
systemctl stop mariadb
systemctl start mariadb
の直後のvar/log/messagesではエラっていた。

systemd: Starting MariaDB 10.2.14 database server…
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] /usr/sbin/mysqld (mysqld 10.2.14-MariaDB) starting as process 32327 …
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Uses event mutexes
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Compressed tables use zlib 1.2.7
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Using Linux native AIO
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Number of pools: 1
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Using SSE2 crc32 instructions
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Completed initialization of buffer pool
mysqld: 2018-04-27 20:14:25 140129696761600 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Highest supported file format is Barracuda.
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: 128 out of 128 rollback segments are active.
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Creating shared tablespace for temporary tables
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Setting file ‘./ibtmp1’ size to 12 MB. Physically writing the file full; Please wait …
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: File ‘./ibtmp1’ size is now 12 MB.
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: Waiting for purge to start
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] InnoDB: 5.7.21 started; log sequence number 3990152243
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] Plugin ‘FEEDBACK’ is disabled.
mysqld: 2018-04-27 20:14:25 140129322649344 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] Server socket created on IP: ‘::’.
mysqld: 2018-04-27 20:14:25 140129322649344 [Note] InnoDB: Buffer pool(s) load completed at 180427 20:14:25
mysqld: 2018-04-27 20:14:25 140130462066816 [ERROR] Missing system table mysql.roles_mapping; please run mysql_upgrade to create it
mysqld: 2018-04-27 20:14:25 140130354976512 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1146: Table ‘mysql.gtid_slave_pos’ doesn’t exist
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] Reading of all Master_info entries succeded
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] Added new Master_info ” to hash table
mysqld: 2018-04-27 20:14:25 140130462066816 [Note] /usr/sbin/mysqld: ready for connections.
mysqld: Version: ‘10.2.14-MariaDB’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MariaDB Server
systemd: Started MariaDB 10.2.14 database server.

なので
# mysql_upgrade -u root -p
してみた。
systemd: Starting MariaDB 10.2.14 database server…
mysqld: 2018-04-27 20:26:45 140386232084608 [Note] /usr/sbin/mysqld (mysqld 10.2.14-MariaDB) starting as process 32483 …
mysqld: 2018-04-27 20:26:45 140386232084608 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
mysqld: 2018-04-27 20:26:45 140386232084608 [Note] InnoDB: Uses event mutexes
mysqld: 2018-04-27 20:26:45 140386232084608 [Note] InnoDB: Compressed tables use zlib 1.2.7
mysqld: 2018-04-27 20:26:45 140386232084608 [Note] InnoDB: Using Linux native AIO
mysqld: 2018-04-27 20:26:45 140386232084608 [Note] InnoDB: Number of pools: 1
mysqld: 2018-04-27 20:26:45 140386232084608 [Note] InnoDB: Using SSE2 crc32 instructions
mysqld: 2018-04-27 20:26:45 140386232084608 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] InnoDB: Completed initialization of buffer pool
mysqld: 2018-04-27 20:26:46 140385465427712 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] InnoDB: Highest supported file format is Barracuda.
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] InnoDB: 128 out of 128 rollback segments are active.
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] InnoDB: Creating shared tablespace for temporary tables
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] InnoDB: Setting file ‘./ibtmp1’ size to 12 MB. Physically writing the file full; Please wait …
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] InnoDB: File ‘./ibtmp1’ size is now 12 MB.
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] InnoDB: Waiting for purge to start
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] InnoDB: 5.7.21 started; log sequence number 3990183005
mysqld: 2018-04-27 20:26:46 140384957097728 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] Plugin ‘FEEDBACK’ is disabled.
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] Server socket created on IP: ‘::’.
mysqld: 2018-04-27 20:26:46 140384957097728 [Note] InnoDB: Buffer pool(s) load completed at 180427 20:26:46
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] Reading of all Master_info entries succeded
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] Added new Master_info ” to hash table
mysqld: 2018-04-27 20:26:46 140386232084608 [Note] /usr/sbin/mysqld: ready for connections.
mysqld: Version: ‘10.2.14-MariaDB’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MariaDB Server
systemd: Started MariaDB 10.2.14 database server.
多分、これでいいのだろう。
 
 



良く判らないMS-ACCESSのTIPS

あちこちのMDBにリンクを貼っていると訳が変わらなくなる。
OFFICE365のMS-ACCESSのリンクマネージャには【EXCELにエクスポートする】ボタンがあるので
あの小さすぎるウインドウで四苦八苦してリンク先パスをメモる必要は無くなった。
但し、一度にエクスポートしてくれるのは35個まで。
試しに36個指定すると特に何もメッセージの表示も無く35個分だけエクスポートしてくれる。



jquery-uiとbootstrapの食い合わせ

  1. jQuery-uiのdialogが使えなくなるダメなパターン
    • jquery.js
    • jquery-ui.js
    • bootstrap.js
  2. jQuery-uiのdialogは使えるようになるパターン
    • jquery.js
    • bootstrap.js
    • jquery-ui.js

まだまだ予断を許さないが2のパターンがいいような気がする。
これでダメなら

  • bootstrap.js

は捨てる以外に道は無い。
dialogなんて

  • bootstrap.js

だけで十分なニッチな人には何も関係ない話。

  • bootstrap.js

を使ったら、最後まで

  • bootstrap.js

だけ使うなら何も問題は無い。
しかし、世の中世知が無いので

  • bootstrap.js

だけで済む訳が無いのだ。(大笑
結果、
bootstrapのcalenderも使っているとやはりダメだった。
…ing
 



期待できない液浸7nmプロセスと地球温暖化

20世紀の集積回路は微細化すると回路の素子を動かすパワーが小さくてすみ、またスケールダウンで素子間の距離も短縮され高速化していたので、21世紀には早々に100GHzのCPUが出来ているだろうと思われていた。
※軽薄短小。
ところが現実はとても世知辛く、回路の素子を構成するゲートの絶縁膜をあまりにも薄くしてしまいダラダラと電流が漏れ、何もしていないのに消費電力が上がりっぱなし。発熱が凄いボードは電源ONと共にファンを全開にしなければいけないならず、ヘアドライヤーの称号を得たグラフィックスカードまで出る始末!(これがコンドームだったら世の中そんなに甘くないないだろう。)しかしそこはコンピュータの話である。薄くても漏れない安心な絶縁体が開発され暫くは持ったものの、今度は素子の電極(ゲート)の平面(1面)構造では信号の遅延にバラツキが大きくなってしまい電極の形を立体的にして制御しないといけないところまで来た。
だが、よーく考えてみると、トランジスター自体が熱電子が周囲の状況に流されやすいことを利用したものであり、素子の大きさが、でか過ぎたり、小さすぎたり、状況が変われば、挙動も変わるのは仕方が無いだろう。
一方で、前々から、写真技術を使い光学的な手法で回路を微細化していたので、いづれ光源の周波数の長さが気になる特異点となると思われていたのが5~7nmプロセスである。EUV(紫外線)の光源まで使えば5~7nmプロセスも可能と思われていたのだ。だが、紫外線だからこそ光源の素材への影響も馬鹿にできないため、(受容器の寿命よりも短命な昆虫には十分でも、何十年も生きる人間のような生物には生まれて数年で使い物にならなくなる感覚素子なぞ適していないから人間には見えないのだろう。というか3才ぐらいまではみえているのかもしれないか・・・)未だに出力の小ささや寿命の問題をなかなか解決できないままである。さらに20nmプロセスあたりから光学的に描かれた回路パターンの些細な像の歪みも問題になるスケールになり、同じレイヤーに対して歪みを補正するパターンも追加で露光するダブルパターニングや、光源のレンズとチップの間を空気より埋め像のぼやけが出にくい液体で埋める液浸方法まで使われるようになった。
このため、現状では、微細化すると、設備が高価になるだけでなく、調整のための面倒な工程が増えることになり、むやみに微細化を求めても、お高いシロモノにしかならなくなってしまった。
このように、集積回路の技術的な発展の鈍化により、CPUやGPUのメニーコア化やコンピュータの並列化、さらにはクラウド化へと、流れが進んでいくのであった。
それでも、液浸7nmプロセスなど推し進めていくのは、今でも「並列化すれば消費電力はとてつもなくでかくなる症状」から抜けられず、「とてつもなくでかい消費電力」のために価格が2倍でも消費電力が半分未満なら買いたいと思うデータセンターも多いだろう。つまり、現状に満足していないので、気休めである。
それにしても、デジタルコンピュータよりも量子コンピュータが持て囃されて、今では飽きられた感じもするが、そこはクラウドを使ってリソースを食いつぶすAIで時代は駆け抜けようとしているようだが、その前に5nmプロセスあたりで集積回路の進歩が止まる(または5nmを放棄する)方が先にやってくる様な気がする。
と云うのも微細化が結構進んでしまったため、もう消費電力が下がった!性能がアップした!といっても全体からすると数%のことでしかないのだ。データセンターの様に定期的に買い替えが必要で、大量に電力を消費している場所ならスケールメリットも出てくるだろうが、スマホの使用時間を1分伸ばすために買い替えることは無いからだ。
そんな訳で、もう金持ちのための微細化技術でしかなく興味もほとんど沸かない。
そんな訳で、とーとつに

地球温暖化の本当の原因は、
どこにあるとも知らない沢山のデータセンターを使い
国家予算を湯水のごとく電気を使って
「あるはずもない地球温暖化の原因」
自分達の予算獲得のためだけに
年がら年中シミュレートし続けたことだった。
1日24時間稼働し続け吐き出され続ける莫大な排熱が原因であったのだ。
目的がカネ儲けであったので
例えシミュレートの結果がNOであっても
YESが出るまで飽くなき欲求に突き動かされ続け
予算が付かなくなるまで繰り返されるのであった。
この状況は仮想通貨のマイニング争いを発端とする大惨事世界大戦が
始まるまでの数十年間の平和のあだ花として
後世の記憶に残る。

と予言しておく。
気分的には十中八九当たっていると思う。



MS-ACCESSからMYSQLへエクスポート

①MYSQLのODBCドライバー(32ビット版)をインストし、ユーザDSNにOBCD接続を設定。
※【detaile】ボタンを押し以下を追加。文字化けしないように・・・(多分これでOK)
charsetにsjis cp932
Initial statementにset character set sjis cp932
※sjisを使うと特定の文字データで失敗することがある。例えば㈱等
②MDBファイルを開き、指示に従いOFFCIDE365のACCDBファイルにコンバート。ACCESSがエラるけど(゚ε゚)キニシナイ!!。
③以下のマクロをVBAに作成して実行し、テーブルをODBC接続でMYSQLにエクスポートする。※リンクテーブルは失敗するかもしれない。

Attribute VB_Name = "ODBCエクスポート"
Option Compare Database
Dim DSN As String
Dim データベース名 As String
Dim ユーザID As String
Dim パスワード As String
Dim odbcSet As String
Dim サーバー As String
Public Sub テーブルをMYSQLのデータベースへエクスポートする()
Dim テーブル名 As String
Dim tbldef As TableDef
Dim 追加したテーブル() As String
Dim 追加できなかったテーブル() As String
Dim 既に存在していたテーブル() As String
'----------------------------
DSN = "ODBC接続名"
データベース名 = "データベース名"
ユーザID = "ユーザID"
パスワード = "パスワード"
サーバー = "サーバー名"
'----------------------------
odbcSet = "ODBC;DSN=" & DSN & ";UID=" & ユーザID & ";PWD=" & パスワード & ";"
Call テーブル差し戻し
For Each tbldef In CurrentDb.TableDefs
    テーブル名 = tbldef.Name
    Dim nn As Integer
    ' MSテーブルを除く
    If Left(テーブル名, 2) <> "ms" Then
    If Left(tbldef.Name, 6) <> "オリジナル_" And Left(tbldef.Connect, 4) <> "ODBC" Then
        On Error Resume Next
        Err.Clear
        DoCmd.TransferDatabase acExport, "ODBC データベース", odbcSet, _
            acTable, テーブル名, テーブル名, False
        Select Case Err.Number
        Case 0:
            Call テーブル差し替え(テーブル名)
            Call 配列に追加(追加したテーブル, テーブル名)
        Case 3146:
            '既にある
            MsgBox Err.Description
            Call テーブル差し替え(テーブル名)
            Call 配列に追加(既に存在していたテーブル, テーブル名)
        Case Else:
            Call 配列に追加(追加できなかったテーブル, テーブル名)
        End Select
        '
    End If
    End If
    DoEvents
Next
MsgBox "終了" & vbCrLf & "【追加したテーブル】:" & vbCrLf & Join(追加したテーブル, ",") & vbCrLf & "【追加できなかったテーブル】:" & vbCrLf & Join(追加できなかったテーブル, ",") & vbCrLf & "【既に存在していたテーブル】:" & vbCrLf & Join(既に存在していたテーブル, ",")
End Sub
Private Sub テーブル差し替え(テーブル名)
    '
    On Error Resume Next
    CurrentDb.TableDefs(テーブル名).Name = "オリジナル_" & テーブル名
    'DoCmd.TransferDatabase acLink, "ODBC データベース", odbcSet, _
    '        acTable, テーブル名, テーブル名
    Dim dbs As Database
    Set dbs = CurrentDb
    Dim tdf As TableDef
    Set tdf = dbs.CreateTableDef(テーブル名)
    tdf.Connect = odbcSet
    tdf.SourceTableName = テーブル名
    dbs.TableDefs.Append tdf
    dbs.TableDefs.Refresh
    Set dbs = Nothing
End Sub
Public Sub テーブル差し戻し()
    '
    On Error Resume Next
    Err.Clear
    Dim テーブル名 As String
    For Each tbldef In CurrentDb.TableDefs
        If Left(tbldef.Name, 6) = "オリジナル_" Then
            テーブル名 = Mid(tbldef.Name, 7)
            DoCmd.DeleteObject acTable, テーブル名
            tbldef.Name = テーブル名
        End If
    Next
End Sub
Public Sub テーブルチェック()
    '
    Dim テーブル名 As String
    Dim tbldef As TableDef
    For Each tbldef In CurrentDb.TableDefs
        テーブル名 = tbldef.Name
        ' MSテーブルを除く
        If Left(テーブル名, 2) <> "ms" Then
            MsgBox tbldef.Name & vbCrLf & tbldef.Connect
        End If
    Next
End Sub
Private Sub 配列に追加(aaa() As String, tbl As String)
On Error Resume Next
Err.Clear
Dim nn As Integer
nn = 0
nn = UBound(aaa)
If nn = 0 Then
    nn = nn + 1
    ReDim Preserve aaa(nn)
    aaa(0) = tbl
Else
    If aaa(nn) = "" Then
        aaa(nn) = tbl
    Else
        nn = 0
        nn = UBound(aaa)
        nn = nn + 1
        ReDim Preserve aaa(nn)
        aaa(UBound(aaa)) = tbl
    End If
End If
End Sub

ところが、DoCmd.TransferDatabaseは、テーブルにプライマリーキーを付けないという恐ろしい仕様になっているので、UPDATEやDELETE操作がうまくいかない。
このため、SQLツールでちょっとデータをいじると、即!"指定されたテーブルから削除できませんでした。" というエラー メッセージに出会うことになってしまう。
⓸以下のマクロをVBAに作成し、実行してテーブルやリンクテーブルを先のOBCD接続に変更する。(後日予定)



PC CASE M1 Version5

完売系ケース
PC CASE M1 Version5

  • V1からV5への変更点
    • マザーボードトレイがネジ止めに変更(前モデルはリベット打ち固定)

らしい。
$195、日本では3万円ぐらい。
似たようなものには・・・
COUGAR QBX-KAZE
があるが、
こっちも完売系。
ITX系で現在入手可能な小さいケースは
METIS PLUS
かな。
上面後方のスロットから自然吸気、ケース下面の手前に電源ファンとケース後ろ面のケースファンから排気。
ファンが見えない位置にあるから静穏性は高い。(ハズ
しかし、内部の気圧が下がり気味でケースのあちこちにある隙間(拡張スロットの蓋のメッシュ等)から入ったホコリが溜まりそうである。
それならば、小さいケースに大きな空冷CPUファンを付けるよりも、120mmの簡易ラジエータに換装し、ラジエータのファンをケースへの吸気に変更し、ラジエータでほんのりと温度が上がった空気を、電源ファンで排気するのも案外いいのかもしれない。



[PHP5.5] コメント

全くコメントが入っていないPHPのソースを見る機会があった。
とっても綺麗にソースがパーツ化されているので・・・全く読めない。
ブラウザでHTMLソースを見るとPHPソースのつなぎ目が見つからない。
仕方が無いので、PHPの先頭と末尾にファイルの始めと終わりのコメントを入れようと思ったが、
全ファイルに入れるとsvnリポジトリィで全ファイルに変更が入ってしまうと、
後で訳が分からなくなってしまいそうだ。
なので、とりあえず・・・
sed でパパっとコメントを入れる。

find . -name "*.php"  | grep -v "除外するファイル名" | xargs sed  -i '1i<?php debugComment(); ?>'
find . -name "*.php"  | grep -v "除外するファイル名" | xargs sed  -i '$a<?php debugComment(); ?>'

ちょっとだけ、1行で済ませられないのかな?と思った。
echo ““; cat $1; echo “;” > $1
という手もあるような・・・無いような・・・
※多分、ファイルが空になってしまうのでやらないように
| grep -v “除外するファイル名” は HTMLタグを埋め込めこむと、エラーになってしまうようなコードの書き方をしているファイルたちのためのもの。
※namespace とか 色々ありそう。
適当な場所に

require_once ("debugComment.php")

呼び出す中身はこんな感じ・・・

function debugComment() {
  $bt = debug_backtrace();
  if [ $bt[0].[__LINE__] = 1 ];
  then
    $MARK="Begin";
  else
    $MARK="End";
  fi
  echo "<!-- $MARK $bt[0].[__FILE__] -->";
}

※末尾に自動的に改行(LF)が入るらしい。しかし、CRLFにしてるソースだと紛らわしいので、そんなときは\rも付ければいい。
デバッグが終わったら、デバッグ・コメントをパパっと消そう。

find . -name "*.php"  | xargs sed  -i 's/^<?php debugComment(); ?>$/d'

これで消えるハズ(多分)なので、安心してデバッグしようとしたら・・・
実際に画面を表示させてみると最初の画面が内部エラー(=500)。
debugCommentをrequire_onceで呼び出しているドコかのPHPソースでハマってしまったらしい。
debugComment()のファイルにもデバッグコメントのコードが付いてしまいループ。
これは、__FILE__ と $bt[0].[__FILE__] が一致したらすり抜けるようにすればOKだ。
他にもHTMLデータ作成とは無関係なコードも無駄にデバッグ・コメントを吐くので、同様にファイル名が一致したらすり抜けるようにする。
※ソースやコマンドは思い出しながら書いたのでミスが含まれています。(十中八苦




top