変奏現実

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

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

インターネット

javascript で DBM?

FireFoxに入っているSQLiteはデータベースをファイルロックで競合管理しているので、何かと使いにくいので、
ブラウザのLocalStorageをDataBase代わりに使えないかなぁ?と
phpMyAdminでINFORMATION_SCHEMAを見ながら
チョコチョコとJavaScriptに焼直してます。
Select A.fld1, B.fld2 From XXX A Left Outer Join YYY B On A.key = B.key Where A.fldX = xxxxx
とか使えたらいいな。
一通り動いたら、LocalStorage用サーバー・パッケージとJScriptやJDKのツールでNode.jsっぽく動くサーバー・パッケージに分離して、どこでもデータベース化できたらいいな。できれば1つのスキーマを別々のパソコンに分散できたらいいな。
 



JavaScriptでクラス定義

JavaScriptにclassというモノは無いけど、
クラスっぽくていいから使いたい時もある。
参考1(Google流)参考2参考3
コンストラクタは 普通に関数の文法で

function aaaa (param) {
this.p = param;
}

と書いてもいいけど、
ドコかで名前aaaが重なると、かなり厄介なことになるので、

var aaa = function (param) {
this.p = param;
}

と、後でパッケージする気が起きやすい書き方にした方が良さそうだ。
クラスの継承に関しては、function を作成すると 自動生成される function の prototype を使って
Object.setPrototypeOf(子クラス.prototype, 親クラス.prototype);
※2015/04/09 現在、リンク先はまだ和訳されていません。
が良さそう。
 
 



UPDATE SELECT は 無かった

以下、記憶がかなりあいまい。
SQL SERVER のUPDATE文で設定する値にSELECT文が使えるけど、SETに計算式は使えないらしい。
しかしMSDNを見ると・・・
expressionはあちこちに書いてあるけど、SELECTなんて書いてなかった。 orz
ま、ゴチャゴチャに補正値が入っているテーブルから系統ごとに補正値をまとめて加算するんだけど
データが多すぎるから、SQLでパパッとやってみたかった!だけなんだけどね。(笑
UPDATE   更新テーブル
SET    系統計1フィールド1 += WHEN CASE 集計キー = 1 THEN 計算式1 ELSE 0 END
,系統計2フィールド1 += WHEN CASE 集計キー = 2 THEN 計算式2 ELSE 0 END
FROM    更新テーブル INNER JOIN
(SELECT 補正値テーブル名.キー,集計式 FROM 補正値テーブル名
GROUP BY 補正値テーブル名.集計キー・・・)   補正値 ON  更新テーブル.キー=補正値.キー
WHERE 更新テーブル.対象時刻=XXXXX
のように書けば、計算式1で
SUM(補正値.フィールド1名)  –  SUM(補正値.フィールド2名)
も使えるのかもしれない。
でも、素直にカーソル使ってループした方がマシかな?(笑
※まだ調査中。
 



VisualStudio 2008の時期にSQLマニアが多かった理由

VisualStudio 2008の起動自体も遅いが、デバッガはもっと遅い。
基本的に、VisualStudio 2008を終了する時には、
・Start画面を閉じる。
・ブレークポイントを全部削除する。
の2つは必ず守らないといけない。
そうしないと、起動やデバッグ開始の度に、10分くらい、デスクトップを人質に取られるからだ。
要は、ネットワークのコネクションやレスポンスの遅さ(タイムアウトまたはレスポンス1秒 × 1000カ所≒16分)を甘く見るからこうなるので、某社の開発支援ツールでも同様な目にあっている。
要は、使い込まない奴が作った開発環境やツール類は、全て同様の問題を内包している。
とは云え、それで開発しなければいけないなら、

別の場所で頑張る方法もある。

それがSQL Serverのストアードプロシージャだ!

マネージャの画面では、ずばり「プログラム」に分類されている。
と云うのも、その場でパラメータを打ち込んで実行することも可能。
この辺はIISでWEBサービスをデバッグするのと雰囲気が似ている。面々と続く、N88-BASICっぽい仕組みである。
この辺は単に実行するにも単にデバッグにも単にテストするにも、延々と事前作業が必要なEclipse系Java開発環境とは全くの別系統だ。
こんなに手軽に実行できるなら、VisualStudio2008から逃げ出して、延々とストアードプロシージャのデバッグに勤しむのも、理解できると云うものだ。
勿論、他人のN88-BASICコードは、難解です。

@A  int
AS
DECLARE  @AP1 INT(3) , @AP2 INT(3) , @AP3 INT(3)
SET @AP1(1)=1, @AP2(1)=2, @AP3(1)=3, @AP1(2)=10, @AP2(2)=20, @AP3(2)=30, @AP1(3)=100, @AP2(3)=200, @AP3(3)=300
EXEC PROCEDURE_1 @AP1(@A), @AP2(@A), @AP3(@A)

と、分岐が大っ嫌いなコンパイラーが出力しそうな結果をイメージしたソースコードが書かれていたら、どうします?
(@@/  と・・・すがすがしく感じていただけるだろうか?(大笑
もしかしたら

@A  int
AS
DECLARE @P1  int, @P2 int,  @P3 int
IF @A = 1 THEN    SET @P1=1, @P2=2, @P3=3
IF @A = 2 THEN    SET @P1=10, @P2=20, @P3=30
IF @A = 3 THEN    SET @P1=100, @P2=200, @P3=300
EXEC PROCEDURE_1   @P1, @P2, @P3

と、あるべきなのでしょうか?
 
ぼくは

@A  int
AS
IF @A = 1 THEN    EXEC PROCEDURE_1   1, 2, 3
IF @A = 2 THEN    EXEC PROCEDURE_1   10, 20, 30
IF @A = 3 THEN    EXEC PROCEDURE_1   100, 200, 300

で十分じゃないかと思います。
今思えばOS/2のVisual-Ageがリリースされた後に、インタープリターみたいなモノを作る仕事が多かったのは、やはり『開発環境が重かったせい』だったのかな?
※上記のコードは雰囲気を表現したもので、文法的に正しいかどうかはチェックしていません。



3D-NANDをミウラ折りで作りたい

薄厚のダイを重ね積層する技術の要めはダイ同士の配線をどうやって結合するかだ。ドンドン重ね続けると配線作業がしんどい。
そこで平らなダイを折り立たせた様な構造でダイを製造し、面積あたりの記憶セル数を稼ぎ、積層する手間を減らすのが3D-NAND技術らしい。
しかし、それなら、もっと薄いダイを作り、ミウラ折りっぽい折り目を付け、バンド状の熱収縮素材を貼って加熱し折り目に沿って収縮させ、最後は専用クリップで挟むか端子を露出させる穴のあるケージに入れるといいような気がする。
端子は畳んだ後に外側に出る位置に配置しておくと、熱収縮素材がいい感じでダイをカバーし、小さいけど固体コンデンサーっぽいコロっとしたNANDメモリ・コアが出来き、端子にハンダを乗せ、超音波で基盤に貼り付け出来上がり・・・ダイ同士を配線するより楽な気がするし、力任せに大量に載せて大容量のSSDも作れそうだし、搭載するコアの数が多いなら逆の発想で少しづつ容量を増やすことも出来そうだ。
eMMCの代替品としてSoCに搭載というのも良いかもしれない。
難点を云えば、そんなメモリを積んだタブレットの開封の儀をやったら、メモリらしきものが見当たらないコトだろうか。
もっとも、印刷で電子回路を作る技術で、普段は極薄の回路を作り折りたたんだ状態で使用し、壊れたら折り目を伸ばして修理できて便利そうだね。(大笑
 
 
 



外付けUSBハードディスク

BDZ-EW500の内臓HDDは500GBなので、3TBの外付けHDDにムーヴしてたけど、もう一杯。
今では6TBなんてもあるけれど、認識できるのかな?
調べてみると3TBがMaxだったようだ。FAQ
今は一番コスパがいいからいいかな。
ブルーレイディスクレコーダーのUSB端子は、Hi-Speed USB (USB 2.0準拠) らしいのでUSB3である必要もなし。
それに色々制限もあるようだ。

外付けUSBハードディスクについてのご注意

  • 登録、または解除後に再登録すると本機専用に初期化され、外付けUSBハードディスクの内容はすべて削除されます。
    外付けUSBハードディスクは一時的な記録場所としてお使いいただき、大切なタイトルはBD-R/BD-REにコピーすることをおすすめします。
  • 本機に登録した外付けUSBハードディスクは、他機器では使えません
  • 外付けUSBハードディスクに録画/ダビングしたタイトルは、おでかけ・おかえり転送はできません。
    外付けHDDから内蔵HDDにダビング、ムーブすることでいずれも可能となります。
  • 外付けUSBハードディスクでは、以下の録画はできません。
    ・LAN経由のCATV/「スカパー!HD録画」
    ・視聴中の番組や映像の録画
    ・複数番組録画
  • 本機修理に伴い、内蔵ハードディスク同様に外付けUSBハードディスクも初期化が必要になる場合があります。
    その場合、再登録すると初期化され、外付けUSBハードディスクの内容はすべて削除されます。

修理に出したら、外付けHDDを再登録すると中身は全てパーになるようだ。
そろそろBD-Rに取っておくか・・・2.3TB分   orz



499ドルのSurface 3

core iシリーズ搭載のお高いSurface Pro 3しかなかったけど、
Atom x7-Z8700を使って少し安いSurface 3が出るらしい。
モニタは10.8型サイズ(1,920×1,280ドット)。
キックスタンドは無段階ではなく3段階の調節などなど、若干先祖返りしているが、USB-3が付いている。
1年間のOffice 365 Personal利用権付。
なお、最近の風潮どおり、日本での発売は未定となっている。



【JavaScript】 IFRAME

うかつに使うとCSSやコードページが設定できず痛い思いをするIFRAME。
サンプル
urlを打ち込んで【Add IFRAME】ボタンを押すと小窓が開く。
urlが空ならTextAreaが出てくる。
localStrageでurlもTextAreaの中身も覚えるので便利に見えるかもしれない。
かといって、いつまでの残っていると困るので、All IFRAME erase で全部忘れる。



【JavaScript】Selectors API

たまにjQueryを使うようになると、画面の中の必要なデータをJSON形式にまとめて送信するのが一番楽で、初期表示もJSON形式にまとまったデータを展開する方が簡単だ。こうなると、servletとJavBeanとJSPとタグライブラリィを使って器用にHTMLをでっち上げるMVPなんて「手間がかかる無駄飯食い(GUI)」でしかない。
MVPってホスト全盛だった前世期の『構造化プログラミング』であって、今風のアジャイルな思い付きの「変更後しか画面に出てなかったけど、変更前と変更後の内容を併記する」という様な、ネストの差替えが伴う仕様変更には滅法弱い。
Beanは丸ごと下位のクラスに押し出して、元のクラスのメンバーにし、servletは丸ごとリファクタリングしてループすればいいけど
画面に直結するJSPはサクっと直すとダラダラと長いコードにしかならないので書き直すしかないのは、ホスト全盛だった前世期と同じだ。
jQueryは、IEを使うと、JavaScriptでデータを展開した結果のHTMLを見るのは難しいけど、FireFoxでCtrl+Aで全画面を選択し右クリックで「選択した部分のソースを表示(E)」すれば見れる。
しかし、JUnit系のテストツールでは、HttpRequestが送ったHTMLコードを保存する様で、画面に展開した後のHTMLはファイルとして残らない。
ところが、jQueryを使えば、「classごとにイベントをまとめて登録することが常識」と云うことで押し切れる世の中であるが、何でもかんでも「classごとにイベントをまとめて登録すること」になってしまうところが『常識』の恐ろしい処でもある。(笑
そのjQueryを使わなくても、ブラウザのSelectors APIで十分になったらしい。
既存のAPIとの違いと云えば、 APIに渡すパラメータに疑似クラス名が使え、API で返される内容がリストからイテレータになっている様で、~. style.bold = true;  参照すれば、要素の分だけ、勝手にループしてくれるので、簡単なことは簡単に書ける。
但し、boldもitalicもunderscoreもfontのポイントも変えたいとか色々変える場合は不向きな感じがするから、cssを絡めクラス名を差し替える様な「短いコード」にした方がいいだろう。
「短いコード」で十分なら、jQueryも特に使わなくても良さそうだ。※非同期通信は使用しない条件付きで…
そうすることで、FireFoxでオブジェクトを選択してソースを見れば、classの内容で、仕様通りのクラス名に変わっているハズなので、デバッグが捗るというものだ。
振り返ってみると、Java系WEB Serverの仕様って、本当に「黒歴史」ばかりなのには・・・驚きを隠せない。




top