ハードディスクを破壊する

2014年も今日でおしまい。
大掃除の仕上げにハードディスクを分解処分した。作業手順を覚書しておく。

ポイントは3つ。
・専用ドライバーを用意する
・隠しネジあり
・ディスクが割れることがあるので注意

それでは作業開始。今回の対象は、IOデータ製のUSB接続ハードディスクである。

まず筐体やコンセントを取り除く


hd_torinozoki

 

 

外側についているネジを通常のドライバーではずし、筐体や電源からハードディスク本体を取り出す。

専用ドライバーでハードディスクを分解する


hd_driver

ここからが専用ドライバーの出番だ。星形ネジを全てはずす。

 

隠しネジを探す
見えるネジを全てはずしたのに筐体はまだ開かない。隠しネジがあるのだ。ドライバーでシールの上をなぞってみると、へこむ所がある。

どうやらここが隠しネジの場所のようだ。
シールを裂いてみる。あたり。隠しネジがむき出しになった。

hd_kakushi

ケースの蓋をあける

 

hd_huta_ake

 

ディスク盤がみえる。
右下のパーツはかなり悩んだ箇所。
hd_jishaku_kakudai

実はこれは磁石なのだ。なんと磁力だけでくっついている。かなり強力だ。マイナスドライバーをテコにし、力を入れてはずす(怪我に注意)。

ヘッドを外す
hd_head
方法がよくわからなかったのだが、いつの間にかとれてしまった…。

ディスク群を止めているネジを全てはずす
hd_disks

盤を一枚づつ取り出すことができる。
hd_toridashi_disk

 

ディスク盤を破壊する

取り出したディスク盤はドライバーなどで傷だらけにする。さらに折り曲げて廃棄しようとしたら…アクシデント発生。ディスク盤が割れたのだ。

hd_disk_ware
ディスク盤は金属だと思い込んでいたが、ガラス製のものもある。

破片は周辺に飛び散り、いくつか顔にも当たった。幸いゴーグルをしていたので目には入らなかったが、危険である。折り曲げる前にドライバーで傷がつくか確認すること(つかなければガラスの可能性大)、作業するときはゴーグルをつけること、をお勧めする。
hd_gogle

戦利品
hd_senrihin
さきほどの強力磁石。今回の戦利品だ。
キッチン周りで役に立つ。我が家では電子レンジの締りが悪くなったため、この磁石で止めている。強すぎるので冷蔵庫には付けないほうがよい(傷付けてしまうことがある)。

This is this

thisisthis

ActionScript2でのお仕事をいただいたときに頭が痛かったのは
・型が無い(あるんだけどデバッグに有効ではない)
・thisがわかりづらい
の2点であった。いまjavaScriptでの制作が多くなり同じような思いを抱いている(そんな方も多いのではないか?)。
特にクラス(もどき)を作成し、その中のメソッド起動時のthis参照は少々面倒である。
そこでtypeScriptである。はたして救世主となるのであろうか?
今回はアロー関数式を用いた場合のthisの挙動を検証+覚書しておく。

以下ボタンを3つ設定
1.通常

2.proxyを用いたもの
(なおproxy関数については野中文雄先生の解説を参考にさせていただいた
野中先生は講義・書籍共わかりやすいので大変オススメである)

3.アロー関数式を用いたもの
クリック時に参照しているthisと自身のクラス名を表示させる
検証URLはこちら

//クリック時は以下のイベントを起動する
private onClickd(event: Event): void {
alert(["this=", this, "myClass=", this.myClass]);
}

//通常
//結果:button自体がthisとして認識されている。クラスは認識出来ない
this.myBtn.addEventListener(‘click’, this.onClickd);

//proxyを用いた場合(proxyにてonClickedから新たな関数を生成)
//結果:classがthisとして認識されている
function proxy(method, scope) {
var aArgs = Array.prototype.slice.call(arguments, 2);
var myFunction = function () {
aArgs.push(myFunction);
return method.apply(scope, Array.prototype.slice.call(arguments, 0).concat(aArgs));
}
return myFunction;
}
var proxyedOnClicked = proxy(this.onClickd, this);
this.myBtn.addEventListener(‘click’, proxyedOnClicked);

//アロー関数式
//結果:classがthisとして認識されている
this.myBtn.addEventListener(‘click’, this.onClickd);
private onClickd=(event: Event): void=> {
alert(["this=", this , "myClass=" , this.myClass]);
}

自動で変数「_this」を生成し、想定通りの動きをしてくれている。使いやすそう。

 

ライブラリ無しで

javaScriptで描画表現を行うとき、昨今はcreatejsに頼りっきりである。
Flashのような表示リスト、階層構造はとても使いやすい。
ただこれだけの機能、どの程度負荷がかかっているのであろうか?以前から気になっていたので簡単なサンプルで試してみた。

サンプルには、本ウェブサイトのaboutusページに使っているパーティクルの移動モーションを使う。

particle
1.createjs:Shapeを継承したParticleクラスを作成。Shapeの描画機能及びStage表示はcreatejsに頼る

http://nouv.biz/labo/20141209_createjs/nodeGarden_with_cs.html

2.ライブラリ無し:オリジナルクラスParticleクラスを作成。Particleクラスにcanvasを渡し、それぞれ描画
http://nouv.biz/labo/20141209_createjs/nodeGarden_2.html

結果(当然だけれど)圧倒的にcreatejsは重かった。
それはそうだ。今回のパーティクル(ただの円)であればcreatejsのShapeの豊富な機能は必要ないし、階層も考慮する必要は殆ど無い。いちいちcanvasを意識するのが面倒だけれど。

結局、ちょっとした演出程度に用いるのであれば「ライブラリを使わない」という選択肢もある、という結論でした。