うつ日記 ~うつを克服するための日記~

うつ病のため休職してから復帰するための体験、工夫、Androidアプリの紹介、アプリの作成ノウハウなど。アプリはこちら→ https://play.google.com/store/apps/details?id=tokin_kame.utunikki_app

復活っ!

テレビや映画の世界なら、復活してパワーアップして、起死回生みたいな。
でも、現実はそんなに甘くない。
死地にいた分、
疲弊して、
劣化して、
戻ってきても立っているのがやっとで、
いつ足元が崩れるか不安で一杯で、
おびえている。

戻ってきたって、言ったって、元に戻った訳じゃない。
通ってきたんだから、
いろんなものを引きずって、
引き戻されそうになりながら、
一歩一歩進んで来た。
もちろん、悪いことばっかりだった訳ではないよ、
たぶんね。

あっちの世界も、こっちの世界も、どっちも楽ではなく、幸せという訳もなく、
ただ生き残るため、逃げ出すかのように這い出るしかなくて、
どっちが死の世界だったかなんて、考える余裕もない。

ただ、自分に理想があるのなら、
それは自分で叶えるしかなくて、
今はただ、何の当てもないあの空へ、
死に物狂いで手を伸ばす...

 

大気の見えない力。

 念を送ればべちゃっと潰れるとか、呪文を唱えれば水がどばっと動くとか、そんな力を操るために、アトモスフィアという精霊を力を借りる。

 

 ...夢見がちな書き出しの割には、地味な実験です。

 

 要するに、大気圧の実験をやってみました。

 やってみたのは、同じ原理の2つの実験です。

 一つは、有名な、ドラム缶や一斗缶をべこって凹ますやつのペットボトルバージョンで、もう一つはコーヒーのサイフォンで起こる、水を吸い上げるやつ。

 

〇用意するもの
 ・500mlのペットボトル(蓋を締めるネジの部分が白いもの)
 ・ペットボトルの蓋 2つ
 ・ストロー
 ・じょうご
 ・沸騰したお湯
 ・深い皿
 ・水

 

〇ペットボトルを潰す実験
 じょうごを使ってペットボトルに沸騰したお湯を入れる。

f:id:tokin_kame:20150503115014j:plain


 お湯の量は深さ3cmぐらい。
 量が少な過ぎるとうまくいかなかった。
 お湯を入れて、数秒待って、水蒸気がペットボトルの中に行き渡ったころを見計らって蓋をきっちりしめる
 ペットボトルを水で冷やすと、ペットボトルがべこっと潰れる

f:id:tokin_kame:20150503115013j:plain


 お湯の量が少な過ぎると水蒸気がペットボトル全体に行き渡りにくいっぽい。
 お湯の量が多過ぎると圧力が十分に低くならないと思われる、試してないけど。
 ペットボトルは、蓋を締める口が白いものが耐熱で、透明なものは、耐熱ではないらしい。
 最近は耐熱のものは少なくなっているみたいなので注意。

 

〇水を吸い上げる実験
 ペットボトルの蓋にストローの太さに合う穴を開け、ストローを通す。

f:id:tokin_kame:20150503115011j:plain

 ストローと穴の間から水が漏れるような場合には、接着剤やグルーガンなどで、隙間を塞ぐ必要がある。
 最初の実験と同じように、ペットボトルに沸騰したお湯を入れ、ストローを通した蓋をする。

f:id:tokin_kame:20150503115012j:plain


 深い皿に水を入れて、ペットボトルを逆さまにして、ストローの先を水に入れる。
 ペットボトルに水をかけて冷やす。
 数秒すると水がどばっとペットボトルの中に吸い上げられる

  本当は、動画でもアップしたいところなんだけど、撮影するのが難しいので、断念します。

 

〇実際にやってみて

 本当は、ペットボトルではなく、ドラム缶とか、フラスコとかを使って直接火にかけるんだけど、それだとちょっと危ないし、めんどくさいので、今回はペットボトルと、やかんで沸かしたお湯を使ってやってみました。
 その分、多少地味ではあるけど、思ったよりは上手く行ったかな。

 

 

うつ日記 ~うつを克服するための日記~
https://play.google.com/store/apps/details?id=tokin_kame.utunikki_app

 

CPUで茶を沸かせっ!(第3回:全水没方式)

第二の方式では、CPUの動作温度で、お茶を飲める程度まで水を温めることができそうだというところまではわかりました。
しかし、お茶を飲むためには、CPUをかなり危険な温度で動作させる必要がありました。
また、溢れ出る寸前まで水を入れ、水面をコア近くまで上げなければいけませんでした。

これらの課題を解決するため、第三の方式を考えました。
第三の方式とは、CPUを下向きにして、ヒートシンク全体を水に浸けるというものです。
こんな感じ。

f:id:tokin_kame:20150501210727j:plain


では、動かしてみよう!
開始15分でCPUの温度は72.5℃水の温度は41℃まで上昇。
温度計をうまく設置できなかったため、これは、水面から3cm位の深さの温度。
水面近くは軽く50℃を越えていた。
水を循環させる仕組みも、水を抜く仕組みも無いため、とりあえず、ここでパソコンを停止。
停止後、軽く混ぜると、水の温度は47℃程度。
触ってみても温かい、お茶を飲めそうだ

そこで今度は、900mlのペットボトルに穴を開け、水をかき混ぜられるようにした。

f:id:tokin_kame:20150501210726j:plain

 

かき混ぜるためには、大型家具屋のIKEAで見つけた、電動かき混ぜ機を使用した。

f:id:tokin_kame:20150501210722j:plain

 

時々かき混ぜながらパソコンを起動。
CPUの温度は、徐々に上昇していく。
水の温度も徐々に上昇していく。
パソコンを起動後、45分でCPUの温度は65℃水の温度は45℃まで上がった。
ペットボトルを触っても十分温かい。
と言うことで、安全のため、パソコンを停止。
マグカップに粉末のお茶を入れて、CPUで沸いたお湯を注ぐ
うん、いけるっ!
普通の人にはぬる過ぎるだろうが、猫舌の私にとってはちょうど飲み頃。
実験は成功した。

f:id:tokin_kame:20150501210728j:plain


飲んだ後、ちょっと胸が苦しい気がするのは、実験成功の喜びのためか。
もしくは、何かいけない物質が溶け出しているのだろうか。
まぁ、それはともかく、後日試した時は、CPUを71℃まで頑張らせて、水温を50℃まで上げた。
普通の茶っ葉でお茶を入れてみたら、水温が低すぎるのか、ちょっと出が悪かったが、一応、ちゃんとお茶として飲めた。

と言うことで、この第三の方式では、お茶を飲むことに成功しました。
しかし、いくつかの課題が残っています。
まず、完全水冷で、空冷を併用できないため、常に水温を気にし、水温が高くなった時には、水を交換するしかありません。
水を入れなければ、パソコンを動かすことはできず、気軽にパソコンを起ち上げられません。
また、CPUのファンはありませんが、循環用のモータを回し続ける必要があり、静穏化の効果もそれ程高くありません。
更に、CPUをかなり高温で動作させる必要があります。
半水没方式から全水没方式に変えることで、CPUと水の温度差が小さくなることを期待していましたが、実験の結果、それ程大きな効果は得られませんでした。

廃熱利用の効果がどれ程のものか計算してみました。
簡易的なものですが、消費電力を測定してみました。
消費電力の実測値は以下の通りです。
 ・0.15[kWh] = 150[W] * 60[min] * 60[sec] = 540[kJ]
 ・27[min] = 27 * 60[sec] = 1620[sec]
 ・540000[J] / 1620[sec] = 333.3[W]
45分間で、900mlの水の水温が25℃上がったとすると、水が奪う熱量は以下のようになります。
 ・25 [℃] * 900[ml] * 4.2[J/cal] / (45[min] * 60[sec])
   = 94.5[kJ] / 2700[sec] = 35.0[W]
計算してみると、この方法で、水に吸収される熱量は、全消費電力の1割程度のようです。
室温上昇の低減効果も、それ程には高くないようです。

とは言え、多少は静音化も室温上昇低減としても効果はあるし、お茶も飲めるので、実用性はなくもない。
まだまだ、実用化に向けては、課題もたくさん残っていますが...

以上で、今回の実験は終了です。

 

うつ日記 ~うつを克服するための日記~
https://play.google.com/store/apps/details?id=tokin_kame.utunikki_app

 

CPUで茶を沸かせっ!(第2回:半水没方式)

前回は、アルミの板を使って、CPUの熱を湯呑みまで伝播させようとしましたが、十分に熱を水まで伝えることができませんでした。
原因は、一つにヒートシンクとアルミの板が十分に接していなかったために、熱の伝達効率が悪かったということがあります。
しかし、それだけでなく、そもそも、熱源となるCPUと、沸かそうとしている水の間が離れ過ぎていたために、熱の伝達速度が遅すぎるということも考えられます。
熱の伝達量は、温度の勾配に比例するためです。

そこで今回は、CPUと水の距離をぐっと縮める、大胆な方式を試してみることにしました。
それは、ヒートシンクの半分を直接水に浸けてしまうというものです。

最初は、安全のため、アルミ缶をCPUとヒートシンクの間に挟み、水の入るところをCPUから隔離するようにしたんだけど、CPUからヒートシンクへうまく熱が伝わらなかった。

f:id:tokin_kame:20150501210729j:plain


しょうがないのでアルミ缶を短く切り、CPUのコアにかからないようにした。
こんな感じ。

f:id:tokin_kame:20150501210730j:plain

それじゃぁ、慎重に水を入れて動かしてみる。
ファンはついていないので、温度はどんどん上がる。
2分でCPUが危険な温度になったので、パソコンを停止。
しかし、水面近くの水温は、48℃程度まで上がった。
CPUの温度さえ、もう少し低く抑えられれば、お茶を飲めるかもしれない。
ただ、このアルミ缶だと、水を出すのが大変だった。
パソコン全体をひっくり返さないと水を出せない
これはあまりにも不便だ。

と言うことで、上半分だけファンを付けられるヒートシンクへ交換。
アルミ缶の部分をペットボトルで作り直した。
こんな感じ。

f:id:tokin_kame:20150501210725j:plain


これなら、キャップを開けるだけで水を抜ける。
でも、この角型ペットボトルだと、凹凸があるためにコアとヒートシンクの接触を妨げるらしく、途中でパソコンが落ちてしまった
そこで、丸型ペットボトルで作り直した。
再度実験したところ、上半分だけでも、ファンが付いていると、お茶を飲めるまでには熱くならなかった

以上、今回の実験の結果、この方式なら、ファンさえ止めれば、それなりのお湯を沸かすことが可能だとわかった。
ただ、それなりの温度のお湯にするには、危険なぐらいまでCPUの温度を上げる必要がありそだ。
CPUと水の温度差は、22℃程度。
また、ヒートシンクの近くは、温度が上がるが、下の方の水は温まっていないので、水を循環させる仕組みが必要なようだ。

と言うことで、CPUの温度を抑えつつ、水の温度を上げるためには、もっと熱交換効率を上げる必要がある
また、水面がコアの近くまで迫っているのもリスクが高過ぎる

こうして得られた知見を元に、熱の伝達効率を高める第三の方式に挑戦することにしました。

 

 

うつ日記 ~うつを克服するための日記~
https://play.google.com/store/apps/details?id=tokin_kame.utunikki_app

 

CPUで茶を沸かせっ!(第1回:熱伝導板方式)

桜も散り暖かくなって来ました。
でも、パソコンは、今日も熱を吐き続けている
なんか、無駄だよね、

電気代払って熱出して、更にまた電気代払って、エアコンで外に熱を捨てる。
そして、地球は温暖化。
この廃熱をどうにか役に立てられないものか。
せめて、お茶ぐらい出してくれても罰は当たらないのではないか。

と言うことで、CPUの廃熱でお茶を沸かせないかと考えました。
多少、発熱量とか、熱伝導率とか調べてはみましたが、伝熱や水の流れは、にわかじこみの素人が簡単に予測できるほど単純なものではありません。
それに、時は正にゴールデンウイーク。
これは作ってみるしかないっ!
色々考えて、試行錯誤し、結果的に、3方式の実験をして、一応、お茶を飲むことができました
今回得られた知見を、何回かに分けて書き残しておきたいと思います。

まず最初に考えた方式は、ヒートシンクからアルミの板を伸ばして熱を伝播させ、その板の先を湯呑みの水に浸けて、水を温めるというものでした。
できたのは、こんな感じ。

f:id:tokin_kame:20150501210724j:plain

 

ヒートシンクの隙間は2mmで、手元にあったアルミの板が厚み1mmだったので、適当な大きさに切って、二つ折りにすることにしました。
板は4本用意しました。
問題は、うまく熱が伝播するかどうか。
4本の板で十分な熱が流れるかどうか不安だったので、アルミの熱伝導率を調べてみました。
計算の結果では、熱伝導率はボトルネックにはならなそう。
問題は、ヒートシンクとアルミの板の間と、アルミの板と水の間での熱交換効率。
でも、熱交換効率なんて、素人が計算できるものでもない。
試してみるしかない。
実際に動かしてみた。

f:id:tokin_kame:20150501210723j:plain


CPUはファンで十分冷えている。
ヒートシンクやアルミの板を触ってみても生温かい程度。
この程度の温度では、到底お茶は飲めない。
しようがない、ファンを止めるしかない。
と言うことで、ファン停止
CPUの温度はみるみる上がる。
ファン停止の3分後には、CPUの温度は、75℃を突破。
アルミの板も触れないぐらい熱い。
しかし、水温はそんなに上がらない
ファン停止3分後で、26℃程度。
CPUの温度が80℃近くまでなると、さすがにやばそうなので、ファンを始動。

やはりアルミの板では効率よく熱を伝えられないようだ。
実験の後、ばらしてみたら、ヒートシンクとアルミの板がちゃんと接していなかったことがわかった。
ヒートシンクにCPU用の伝熱グリスを塗っていたんだけど、伝熱グリスの広がり方から察するに、接触面積はあまり広くなかったみたいだった。
アルミの板の表面が凸凹していたために、ヒートシンクとところどころしか接触していなかったらしい。
やはり、素人の加工では加工精度が悪過ぎるようだ。

以上のように、この方式では、十分な熱を伝えられなかった
一旦、この方式は諦めて、別の方式を考えることにした。

と言うことで、次回は、別の方式に挑みます。

 

 

うつ日記 ~うつを克服するための日記~
https://play.google.com/store/apps/details?id=tokin_kame.utunikki_app

 

積分について考えてみよう!

積分って、高校の数学で習って、受験用に問題を解いたりはできるようになったけど、積分にどういう意味があるのかってのがわかってきたのは大学の2、3年生の頃だった気がする。
特に、円周を積分して円の面積を求められるとわかったことが印象深かった。
そんなことを思い出したので、ちょっと積分の解釈について書いてみることにした。
検索しても余りこれというのが見つからなかったもので。

以下の図のような二次関数を例に考える。

f:id:tokin_kame:20150430194922j:plain


x軸とx=5の直線とこの二次関数で囲まれた部分の面積を求めてみる。
曲線なので、単純な掛け算では求まらないはず。
積分を使えば、以下のような感じで、訳はわからないけど、答えは簡単に求まる。

f:id:tokin_kame:20150430201236j:plain

これは、41と2/3となる。


さて、積分の公式は使わないで、積分の考え方に沿って、この問題を解いてみたい。
まず、いきなり正確な面積を求めるのではなく、簡単な問題に近似して考える。
以下の図のように、区間を区切って長方形のところの面積を求めて、曲線に面した部分は誤差だとしてあきらめるとしよう。

f:id:tokin_kame:20150430201238j:plain


一旦、分割数をnとして左から順番に1番目、2番目と番号をつけていき、k番目の面積を求めてみる。
区間をx=αからx=βまでとおく。
最初の図の例では、xが0から5までの区間の面積なので、α=0、β=5ということになるんだけど、せっかくなので、ちょっと一般的に書いてみる。
区間をn個に分割しているので、長方形の横の長さが区間の長さをn個に分割したうちの1つになる。
k番目の長方形の左端の座標は、αから始まって、n分割したうちのk個分右へ動いた場所なので、以下のように決まるはず。

f:id:tokin_kame:20150430201232j:plain


式を簡単にするため、kは0から始まることにする。
つまり、0番目の長方形の左端の座標がαになる。
そうするとk番目の長方形の左上のy座標は、二次関数の上にある点なので、2乗すれば求まる。
これで、横の長さと縦の長さがわかるので、k番目の長方形の面積Skは、以下のように書ける。

f:id:tokin_kame:20150430201233j:plain


あとは、これをkが0番目からn-1番目まで足し合わせれば近似した面積が求まるはず。

で、計算していきたいところなんだけど、この式を計算していくと複雑でわかりづらくなってしまうので、当初の目的に戻って、最初の図の問題の値を入れて計算を進めることにしたい。
面積を求める部分は、xが0~5の部分なので、α=0、β=5ということになる。
これを代入すると、以下のようになる。

f:id:tokin_kame:20150430201237j:plain


では、試しに、5つに分割した場合、つまりn=5を代入してみる。
すると、125とnの3乗が打ち消しあって、Skはkの2乗で計算できるから、全体の面積は、k=0からk=4まで足せば良いので、
0の2乗 + 1の2乗 + 2の2乗 + 3の2乗 + 4の2乗

= 0 + 1 + 4 + 9 + 16

= 30
となり、積分で求めた場合と比較すると、誤差はが11と2/3も出てしまっている。

 

では、10に分割した場合を計算してみると、
125 ÷ 10の3乗 × (0の2乗 + 1の2乗 + 2の2乗 + 3の2乗 + 4の2乗 + 5の2乗 + 6の2乗 + 7の2乗 + 8の2乗 + 9の2乗)

= 125 × (0 + 1 + 4 + 9 + 16 + 25 + 36 + 49 + 64 + 81) ÷ 1000
= 125 × 285 ÷ 1000

= 35.625
となり、誤差はだいぶ少なくなる。

こんな感じで、nを大きくしていけば誤差は小さくなるはずなんだけど、計算は大変になる。
もうちょっと賢く答えを求めたいところ。
要するに以下を求められれば良いので、数列の和を求める問題になる

f:id:tokin_kame:20150430201239j:plain


この数列の和の求め方までやると、長くなるので、詳しくは以下を参照ということにして、ここは公式に頼りたい。

Σkの2乗の計算式

これを利用して、計算していくと、求めようとしている面積は以下のようになる。

f:id:tokin_kame:20150430201235j:plain

f:id:tokin_kame:20150430201816j:plain


ということで、面積は、分割数nによって決まる値になる。

ここで、nは大きいほど誤差が小さくなるので、nを思いっきり大きくした場合を考える。
そうすると、分数は分母が大きいほど値が小さくなるので、分母が無限に大きくなれば0に近づくことになる。
したがって、求める面積は、結局のところ以下のようになることになる。

f:id:tokin_kame:20150430201817j:plain

これは、最初の方に示した積分の公式を使った方法と一致する。
逆に言うと、積分は、このような長方形による近似を考えた場合に分割数を極限まで多くした時の計算法という意味合いがある。

なんとなく積分が何なのかわかったような気になったよな...

 

 

うつ日記 ~うつを克服するための日記~
https://play.google.com/store/apps/details?id=tokin_kame.utunikki_app

 

Android上で使われている改行コードは何か~Androidアプリの作り方~

editText なんかにテキストを表示する時に、改行を入れるにはどうしたら良いかわからなくて困りました。

調べてみると、最初に以下のようにして、改行コードを取得しておいて、あとはこの「BR」を入れてやれば改行が入ることになります。

  static final String BR = System.getProperty("line.separator");

 この方法では、実行する環境での改行コードを取得することができるので、環境に依存せずに動作することになります。

例えば、以下のように使用します。

  text = "Version:" + versionName + BR;

  edit = (EditText) findViewById(R.id.edit);
  edit.setText(text);

 

ただ、他のOSとファイルでデータの受け渡しをする時などは、改行コードの実体がわからないままでは不便だと思いますので、以下のようにして改行の文字コードを調べてみました。

  int code_br1 = (int)BR.toCharArray()[0];//BRを文字配列に変換してその最初の文字を取る

  test = String.valueOf(Integer.toHexString(code_br1)) + BR;//16進数にして文字列に変換

  edit.setText(test);//EditTextに表示

 

これを実行してみた結果、表示された値は「a」でした。

16進数で表示させているわけなので、文字コードは「0x0a」ということでしょう。

つまり、Androidで使われている文字コードLinuxと同じくLFというわけですね。

ちなみにBRの2文字目を取ろうとするとエラーになってしまうので、文字コードは1バイトということだと思います。

 Windowsで作成したファイルを読み込む時などには注意が必要かもしれません。

 

 

うつ日記 ~うつを克服するための日記~
https://play.google.com/store/apps/details?id=tokin_kame.utunikki_app