2019年12月26日木曜日

Newton量子論のすべて新訂版を読んで考えたこと

 Newton別冊を久しぶりに読んでみました。2019.7.5発行なので、まだ新しい本です。一般向けに、量子論についてわかりやすく書かれています。
・量子論の歴史
・コペンハーゲン解釈:電子の波は、マクロな物体と相互作用すると収縮をおこす。
なぜ、収縮するかは今も謎
・電子が複数の場所に同時に存在する。
・不気味な遠隔作用:遠く離れた2つの粒子の一方を観測すると、両方の状態が瞬時に決まる奇妙な現象。量子もつれ(量子エンタングルメント)
・多世界解釈:枝分かれしていく世界
・量子テレポーテーション:地球から月へ猫を転送する。量子もつれと電波の情報により、猫を構成する物質の情報を送信し、その情報を使って月側で猫を再生する。月にある原子も、地球上の原子も同じで、それらの再構成なので、まったく同じ猫といえそうです。理論上可能でも、量子状態の維持の困難さや情報量の膨大さがあるので現実には困難ですが。

 読み終わって、ふと疑問がわきました。量子テレポーテーションで、転送された場合、地球上の猫はこわれるそうですが、月に再構成された猫に、意識は引き継がれるのだろうか?ということです。
 たとえば、一晩寝ている間に、自分の体に量子テレポーテーションが適用されたら、次の朝起きたとき、いちおう、前日までの記憶は残っているので、自分は自分だという意識はあるのかもしれません。自分とは、まったく別の身体が、じつは、昨日まで存在していてその記憶を、今現在の身体が引き継いでいるということになるのでしょうか。
 そう考えてくると、命や意識という概念は、記憶を軸にして唯一ひとりの身体に連続して存在していると思うけれど、遠い未来には、じつはそうでないこともありえるということなのでしょうか。考えれば考えるほどわからなくなります。

2019年10月22日火曜日

クリップボード画像をアップロード(bottle)

クリップボードの画像をすぐアップロードできれば便利かと思い、javascriptとbottleの組み合わせで実装してみた。
https://qiita.com/volpe28v/items/dc100c75c2371bb82a3b
https://qiita.com/tatesuke/items/00de1c6be89bad2a6a72
の2つのサイトを参考にさせていただきました。

bottleでのformdataの取得方法に関する情報が少なく、試行錯誤が必要でした。
結局、formからの送信内容を調べてわかったことが、
ajaxにわたすformDataの"data"を、bottoleの中のdataと同じ文字に揃えるといいということでした。
formData.append("data" ,imageFile,"test.png");と
 data = request.files.dataの部分です。





追記:bottleのほうですが、herokuでは動作しているのですが、raspiでは、なぜか画像uploadでエラーがでるようでした。
 with open(filename,'w') as open_file: の部分を
 with open(filename,'wb') as open_file: とするといいようでした。
バイナリで保存することを明示したほうがいいようです。

2019年10月16日水曜日

ELM コンパイル エラーについて

Maybe you recently installed a command line tool or editor plugin that messes with them?
というエラーが出て、困っていましたが、
https://github.com/hercules-ci/elm2nix/issues/14
からの情報で、elm-staffフォルダを削除すると、うまくいようです。
再度、コンパイルすると、エラー表示は消えます。

2019年9月16日月曜日

ELM リストからインデックス指定で要素取り出し

ELMのリストから要素を取り出すということは、本来あまり使うべき機能でないのかもしれませんが、こちらを参考にしてみました。

getAt : Int -> List a -> Maybe a
getAt idx xs =
    if idx < 0 then
        Nothing

    else
        List.head <| List.drop idx xs

ELMでリクエスト発行

ELMで他サイトからデータを読み取るためにリクエストを動作させたいということで試してみた。サンプルアプリのサイトはうまくいくのに、自分で作成したサイトはうまくいかない。
 こちらをみると、どうやらCORSというものの問題らしい。いまどきは、Same Origin Policyということで、勝手に他のサイトへ飛ばないような制限ができているということは知っていたが、サーバーとクライアント間の安全なやりとり手順が必要ということのようです。
 bottleを使ったサーバなのでhttps://qiita.com/yagays/items/67d9780abef8c36eb625
を参考にさせていただき

from bottle import hook, response
@hook('after_request')
def enable_cors():
    response.headers['Access-Control-Allow-Origin'] = '*'

を追加して解決した

2019年8月31日土曜日

cloud9をraspberry pi 2で動かしてみた

 cloud9も最近になって、AWSに移行し有料になった。それほど頻繁に使うわけでもないため、とりあえずraspiで使ってみることにした。

<ラズパイの準備>
・Raspbian Buster Liteを
https://www.raspberrypi.org/downloads/raspbian/
から入手し、https://www.sdcard.org/downloads/formatter/でSDカードをフォーマットします。一回で書き込みが成功すればいいのですが、失敗したときはこのフォーマッタが必要になります。
・イメージ書き込みはhttps://www.balena.io/etcher/がいいようです。
 久々に、書き込みをやってみるとうまくいかず、原因つかむまでだいぶ時間がかかってしまいました。どうやら、USBハブの不具合?だったようで、PC本体にUSBをつなぐとOkでした。

・次に、raspi-configで、キーボード配列等設定します。意外と大変だったのが、ipアドレスの固定でした。/etc/network/interfaces.d/のディレクトリの中に、設定ファイルを入れておくという仕様になったようです。
 しかし、それでも なぜかdhcpが動作しているようなので
  https://qiita.com/usakoyama/items/4e74261edc9cd7b40fe2
  http://poohkids.com/raspberrypi/environment-ipfixation/
 などを参考にして解決しました。とくにdhcpcd.confの編集が必要だったというのは
 盲点でした。
・sshなども使えるようにして、以後はリモートですすめます。

<cloud9のインストール>
・下記のリンクにしたがって インストールします
 https://github.com/c9/core
・ローカルからだと、これで使えるようになるらしいのですが、リモートから使うためには以下のリンクを参考にする必要がありました。ここも、だいぶ情報をさがすのに時間かかってしまっところです。
 https://qiita.com/fkmt-disk/items/8715e964e1e672b59454
 node server.js --port 8181 --listen 0.0.0.0 --auth user:pass
 の0.0.0.0を指定するというところがポイントのようです

これで、リモートでc9が利用できるようになります。

<Bottleを入れてみる>
 最初、Railsを入れてみたが、Raspiにはきついようだったので、Bottleにしてみた。
https://create-fecundity.com/programming/heroku-bottle-deployment/
 Bottleはpythonの軽量フレームワークということで、ちょっとしたWEBアプリで
あれば、これで十分なようです。
 raspiでは動いても、Herokuにアップするとうまくいかないこともあるようでした。
pythonのバージョンや
pip freeze > requirements.txt
で作成されるrequirements.txtの中のもので、バージョンを変えたり、削除したりする必要があるものがけっこうあるようです。
とりあえず、Herokuでも動作させることができるようになりました。


2019年8月5日月曜日

債権価格が下がれば金利は上がる ~国家破産はこわくないP72~ より

 橘玲さん著の国家破産はこわくない を読んでいたところ、国債の金利が上がれば、国債の価格が下がるということを わかりやすく説明してくれています。
 将来価値=現在価値×(1+金利)^年数 ①
 現在価値=将来価値÷(1+金利)^年数 ②
 通常は、金利10%といえば ①式を使い 現在10万円の価値でも、1年後の将来は11万円になるということしか意識しません。
 ですが、将来11万円になるものが、現在はいくらの価値かといえば、②の式を使い、現在価値10万円と考えるところがミソです。

 毎年1万円ずつ配当があり、10年後に元金の10万円が払い戻されるシンプルな国債を考えます。この債権を買うとしたらいくら支払いますかという問題です。

 エクセルで、年率10%と20%の場合で計算してみました。
 現在価値は 年率10%で10万円ですが、年率20%で58075円となってしまうことがわかります。



2019年8月4日日曜日

ビタミンDの大切さ

 ビタミンDが骨の健康に大切だとよく知られていますが、それだけでなく、いろいろな疾病(大腸癌、口腔癌、食道癌、膵臓癌および白血病のリスクが大幅に減少することが複数の試験で示唆)の予防に大切だということらしい。
https://www.cancerit.jp/10194.html
 こういう話を聞くと、室内での運動よりも、外でのウオーキング、ジョギングなどのほうがいいのかもしれない。過ぎたるは及ばざるがごとしで、紫外線による皮膚がんの影響も考える必要があるので、適度なという条件はあるようですが。

2019年6月16日日曜日

スクレイピング

スクレイピングはPythonがよくつかわれるようです。 調べてみたところ、サイト上でさまざま情報が入手できるようです。
https://takahiromiura.github.io/web_scraping.html
上記のリンクを参照させていただきました。javascriptの扱いや認証、ダウンロードも含めて、必要な内容がコンパクトにまとめてあるようです。

2019年6月7日金曜日

ELM活用 アニメーション

Javascriptでちょっとしたアニメーションをと考えましたが、やはり、習いかけのELMのほうが簡単にできそうだったので、試してみました。
https://qiita.com/negiboudu/items/942d29f8c20811d8e26d
上記リンクを参考にさせていただきました。

根の生長をシミュレーションするELM アプリです。
https://gh6141.github.io/gitdrill/src/root_seicho.html

2019年5月29日水曜日

ELMでドラッグ&ドロップ

ELMでドラッグ&ドロップを使ったアプリを作ってみた。
すっきりしたプログラムが作れる。Maybeを使えば 例外なども必要ない。
case ofでパターンマッチングも便利。覚えるコマンドも最小限で済む。
その分、うまく組み立てる必要があるが。けっこう楽しめる言語かもしれません。

※ただ、残念ながら、複数のターゲットをマウス操作はできるけれど、タブレット等でタッチ操作がうまくいかないようです。1つのターゲットならできるようなのだけど。
 今回は、タブレットで使いたかったので、、、ELM使用はいったん保留です。

2019年5月1日水曜日

ELMで文字入りの円をドラッグ&ドロップするには

文字入りの円をドラッグ&ドロップするアプリをELMで作れないか考えてみた。
ググると、Svgを使って四角をドラッグ&ドロップする例があった。
https://package.elm-lang.org/packages/zaboco/elm-draggable/latest/
Svgライブラリの説明もあり
https://package.elm-lang.org/packages/elm/svg/latest/Svg
SVG描画で円の中心にテキストを表示する方法も参考にさせてもらいました。
ELMはエラーメッセージが詳しいので、それも助けになります。

いろいろ試行錯誤しながら 結局、ライブラリの説明の中の
g,circle,text_はList (Attribute msg) -> List (Svg msg) -> Svg msg
textがString -> Svg msg
という型の説明をもとに、組み立てるといいようでした。

一つ目のリンクのMultipleTargetsExample.elmのSvg.rectの部分を、以下のようにするとうまくいきました。

Svg.rect
        [ num Attr.width <| getX boxSize
        , num Attr.height <| getY boxSize
        , num Attr.x (getX position)
        , num Attr.y (getY position)
        , Attr.fill color
        , Attr.stroke "black"
        , Attr.cursor "move"
        , Draggable.mouseTrigger id DragMsg
        , onMouseUp StopDragging
        ]
        []
を、以下のように変更

   Svg.g
     [     Attr.cursor "move"
        , Draggable.mouseTrigger id DragMsg
        , onMouseUp StopDragging]
     [
      Svg.circle
       [
          num Attr.r <| getY boxSize
        , num Attr.cx (getX position)
        , num Attr.cy (getY position)
        , Attr.fill color
        , Attr.stroke "black"
 
       ]
       [ ]
       ,
       Svg.text_ [
         num Attr.x (getX position)
        , num Attr.y (getY position)
         ,  Attr.stroke "black"
             ]
         [Svg.text "abcde"]
     
     ]
   

   

ELMについて

ELMでフロントエンド開発はどうかと思い、試してみている。
〇まずは、設定
npmをインストールしたら
コマンドプロンプトで
npm install -g elm
npm install -g elm-format
・VS Codeのインストール>拡張機能 ビュー>検索用のテキストボックスに elm >elm の インストール 
・日本語にするには[EXTENSIONS]ビューの一番上にある検索ボックスで「japanese」などを検索
・ファイル - 基本設定 - 設定>右上の {} をクリック>
ユーザー設定
{
    "elm.compiler": "C:\\Users\\win_user\\AppData\\Roaming\\npm\\elm.cmd",
    "elm.formatCommand": "C:\\Users\\win_user\\AppData\\Roaming\\npm\\elm-format.cmd",
}

〇実際に使ってみる
・ Elm のプロジェクト用のディレクトリを作成、そこでelm init を実行
 elm.json を作成するかどうか確認されるので Y を入力
・エクスプローラービューの src ディレクトリ上でElm のソースファイルを作成
・ Alt + Shift + F を入力すると module 文等が追加されます
・Ctrl + Shift + P を入力してコマンドパレット表示>elm reactor start 
 これでWeb サーバが起動し http://localhost:8000/src/elmファイル名
 でアクセスできる
・不要であれば Elm Reactor を停止させる。コマンドパレットで elm reactor stop 

以上はhttps://qiita.com/ossan_pg/items/5c3ce00b74036139507eを参考にさせていただきました。とても詳しく説明されており助かりました。

〇elm makeについて
elm makeを使ってElmプロジェクトをビルドし、HTMLファイルなど作成できます。
elm make Main.elm --output=main.html
なお、足りないパッケージがあるとメッセージで要求されるので
elm install elm/http
elm install elm/json
のようにして、追加していく必要があります。

https://guide.elm-lang.jp/install.htmlを参考にさせていただきました。

2019年4月25日木曜日

VisualStudio2019が、プロキシ認証があるため うまくライセンス認証できない。Eclipseのネット接続もうまくいかない

VisualStudio2019を使ってみようとしたが、プロキシ認証があるためかうまくいかない。

そこで
https://itblogdsi.blog.fc2.com/blog-entry-350.html
を参考に
devenv.exe.configの設定ファイルの一部を書き換えます。
 <system.net>
        <!--途中省略-->
        <defaultProxy enabled="true" useDefaultCredentials="true">
            <proxy usesystemdefault="True"
                   bypassonlocal="True"
                   proxyaddress="http://127.0.0.1:8888"/>
        </defaultProxy>
    </system.net>

https://github.com/ipponshimeji/MAPE
に便利なツールを公開された方がおりました。PCのローカルにプロキシを置き、そこを経由することで解決できました。

https://github.com/ipponshimeji/MAPE/blob/master/Documentation/ja/Usage.md
がマニュアルです。
mape.exe /ActualProxy:"{\"Host\": \"proxy.example.com\", \"Port\": 8080}"
を実行すると、Okでした。バッチファイルでも、作っておくといいようです。
これまでうまくいかなかった、Gitの操作なども問題なくできるようになりました。

(追伸)Eclipseも、プロキシー認証あるとネット利用がうまくいかないようです。
同様にMapeを利用し
Eclipse 設定>一般>ネットワーク>Nativeにします。
 接続先は127.0.0.1:8888となっている必要があります。
 バイパスは localhostなどとしてやるとうまくいくようです。




2019年4月21日日曜日

安全なMT車

MT車に対して AT車は、構造上 アクセルとブレーキを踏み間違いやすく 事故も起こりやすいらしい。統計上もAT車はMT車の2倍の事故率だとか。特に 年齢が高くなってきたら MT車のほうがいいようだ。これまでMT車しか買ったことがない。今の乗っている車は、13年めの車なので、あと少しで買い替えだが、次も安全でしかも安価なMT車にしようかと思っている。唯一心配なのは、MT車の車種が減ってきていることだが...。
https://www.webcartop.jp/2018/04/224826


2019年4月12日金曜日

無料サイトについて

 これまで、herokuで、javascriptをサイトに置いて使っていましたが、c9が完全にawsに移行することになってしまい。c9とherokuを連携して使うという方法がとりにくくなってしまいました。
 そこで、新たにvisual studio codeで作成したものをgit hubへアップする方法を考えてみました。rails等を使うほどのものでなくjavascript程度ならこれで十分なようです。
 https://gh6141.github.io/gitdrill/index.html

2019年2月15日金曜日

NTPで時間校正のためのシェルスクリプト

#!/bin/sh
wget http://ntp-a1.nict.go.jp/cgi-bin/time -O ntpTime.txt
TIME_STR=`cat ntpTime.txt`
date -s "$TIME_STR"
としてみたら、うまくきました

2019年2月7日木曜日

ドアレバーが壊れる

ドアレバーの遊びが大きくなってしまい、自分で修理に挑戦。近所のDIYストアで交換部品を探して、ほぼ同じサイズだろうと思って買ってきたが、微妙に入らない。ほんの2,3mmの違いなのだけどだめでした。いったん返品し、今度はネットで購入。
https://www.amazon.co.jp/gp/product/B00B97YTM8/ref=ppx_yo_dt_b_asin_title_o00__o00_s00?ie=UTF8&psc=1
こちらは、うまくいきました。ロックする部分の向きを180度回転させる必要ありましたが、だいじょうぶでした。

windows serverの共有をUbuntuでマウントができない現象

mount.cifs //172.31.42.120/test /mnt/test -o username=user,password=pass,sec=ntlm,dir_mode=0755,file_mode=0755
などとしても、うまくいかない
https://translate.google.co.jp/translate?hl=ja&sl=en&tl=ja&u=https%3A%2F%2Fwww.linuxquestions.org%2Fquestions%2Fshowthread.php%3Fs%3D2c4f70825da2fc6b97e353207e1d262f%26p%3D5900321&anno=2
によれば、ver=0.3を追加すればいいとか。試してみたら、うまくいった。