Category: 未分類

充実したGW(研究生活)を送っています

2020年5月某日こんにちは。研究に勤しむRockinWoolです。今週はプログラミングに次ぐプログラミングの生活を送っているので非常に充実しています。この調子で頑張ってクソみたいな社会から独立した科学者になるぞ〜!ということで今回は今週の出来事をひたすら書いていこうと思います。今回は技術の話は薄めなのでいつも通り興味の無い方は早めにブラウザヴァっくをよろしく! これに関しては自分の問題なのかもしれませんが、朧な記憶をたどるdocker-composeを唱えたときになぜかsnap install dockerで一緒に入ってくる予定だったdocker-composeが存在しなくてapt-getかなんかで入れ直したことが原因だと思うんですよね。sudo apt install docker.iosudo apt install docker-composeで解決しました。 こちらは単純に新しいものを使ってみようというやつです。感想は「以外と使いやすい!」画像とコメントをきれいに配置することに関してはWordやExcelをはるかに凌ぐ使いやすさでした。ところで、全然関係ない愚痴になっちゃうんですけど、自分の教授とこういうものを遊びながら試して覚えるのと、会社で先輩とか上司からこういうものを指示されながら習うのだと全然習得スピードが違う感じがするのはなんでなんでしょうね?やっぱり自分は会社というものに向いていないのかな?色んな人が色んなふうに存在しながら話をしなければならない空間がとても辛くて気持ち悪くて逃げ出したくなるんですけど、普通の人ってなんで普通に過ごせるんだろう? こちらは上とは逆に、昔作った自分のプログラム等を修正したり拡張したりしています。昔の自分が作ったプログラムが難解だったり間違っていたりするのを見るたびに成長したんだなあと思います。たしかLinusの言葉だったと思うんですけど、「1つのプログラムは1つの機能だけを持たせなさい」ってやつがあったと思うんですよね(すごくうろ覚え)一年前の自分は1つのプログラムにすべての機能を入れてしまおう!って感じで作っていたみたいで今の自分からすると「分解!分解!分解だぁ〜!」ってなります。あとは自分でプログラミングするのってとても大切ですね。自然とその部分はコピペ部分よりも可読性が高くなるんですよね。あと仕様ライブラリのreferenceを読むのもとても大切。昔は使えたnetworkxのG.self_loop()が今は使えなくてnx.self_loop(G)としなくちゃいけなかったんですが、某キータ君のデータは古かったり間違っていたりして使えなかったんですよね。なので自分で頑張って英語を読みました。 上つながりなんですけど、自分の夢は海外で研究者になることなので英語を喋れなければだめです。しかし、全然喋れない。しかも聞き取れない。これはまずいので修行しようと思っていろいろ聞くところからはじめました。 ということで、スーパー意味の無い記事かもしれませんが最近の自分をメモしました。いつか自分が見直して、こんなんだったんだなあと言えるようにがんばります。

ヴォロノイさんのネットワークについて

2020年4月某日※前回の画像から。コンテナからターミナルをホストの画面に表示する様子 こんにちは。RockinWoolです。東京のコロナは収まってきましたが、自分の身近では感染が広がっている気がするので気を引き締めてGEEKをしていたいですね! さて、今回は結構マイナーな話になってしまうと思いますので、全然興味ないと思ったらすぐに退避してください。今回作成するプログラムは、簡単にいうと2つのネットワークを作成するものです。一つ目はVoronoi図と呼ばれるものです。これはxy平面上にランダムにn個の点をばらまいて、2点間の距離が等しくなるところに境界線を引いていく・・というものになります。これを簡単に実装するにはpythonのscipyライブラリ内にあるscipy.spatialを活用すればそれほど難しくありません。二つ目はこのVoronoi図からもう一度Voronoi図を作成すした図です。まったく意味がわからないと思うのですが、これにより領域同士がどのように隣接しているのかを表現できるのではないか・・・?と期待してのものです。それでは早速やっていきます。まず、単純なVoronoi図を表示する部分はこのようにしました。 多分こんな感じで大丈夫だと思います。これを実際に走らせるとこんな感じの図形が出てきます。 ちなみに最後のshow_pointsをなくせば、voronoi図の境界の交点に点がプロットされます。次に作成する図はこの点がどの領域と隣接しているのかを利用して作成します。ちなみに今回使用していませんがVoronoiライブラリにはほかにもいくつか便利なものがあるので、ここにメモって置きます 次にVoronoi図の領域間の隣接関係をネットワークに直します。以下のようにコードを書くとこのような図が出力されます。 ここで使用したfigure_out関数は本当に適当にmatplotlibで書けば良いと思います。 こんな感じで図が出力されました。 ということで今回の実験は終了です。ここまで見てくださってありがとうございました。

ようやくコンテナから画面をとることに成功した話

2020年4月某日RockinWoolです。こんにちは。コロナ怖いですね。自分も結構自粛してますが、なんとなく胸が狭まっているような感覚があるんですよね。まあ気のせいだといいなあ さて、今回はタイトルの通りDockerコンテナからGuiアプリなどを起動した際にホストコンピュータの方に表示させる方法をついに確立したので、よろこびそのままここに書き込むことにしました。ちなみに今回も本当の目的は別にあって、その途中で無理に凝った結果生まれたものになります。しかも本当の目的ではDocker使う必要はどこにもなくて、本当に時間を無駄にしてしまったなあという感じ。挙句の果てに、いつも通りの「寝てデバッグ」が発動して、5時間頑張るよりも8時間寝る方が解決につながってしまって本当に虚無な時間を過ごしてしまったなあ・・・と。 それでは前置きはこの辺りにして、説明に入って行こうと思います。今回は某VIMゴリラさん(自分が勝手に呼んでいる)のツイッターを参考にしました(ソースは後で付記します)それを自分なりにアレンジして以下の3つのファイルを作りました。 Dockerfileはコンテナの設計図のようなものと認識しております。今回はGUIというよりかは単なる端末であるxtermを内部で起動できるように作りました↓ USERを足しているのは、xhostかなんかがroot権限者だと怒ってきたからだったと思います。やっておいて損はないはずです。docker-compose.ymlの方は2つ注目すべき部分があります。1つ目は環境変数$DISPLAYをホストと同じものに設定している部分。2つ目は/tmp/.X11-unixディレクトリを共有している部分です。この二つを設定するとホストの画面出力を共有できるようになります。(重要なのはその中のソケットファイルなんだけど、話が長くなるので割愛) 最後になりましたがxhost_setup.shは単にdocker-composeを自動化するものに近いです。自分がdocker-composeになれていないというのが原因です。ちなみにdocker-composeで単一のコンテナを起動したのは今回が初めてだったりします。それとこのスクリプトではついでのようにxhost+でホスト側の画面をコンテナと共有できるようにしていますが、セキュリティ的にはまずいそうなので、適当なときにxhost-するべきなのかもしれませんね。 これらを用いて実際に起動するとこんな感じになります・・・というのは次回にします。ここまで見てくださってありがとうございました。

弊社は自動車会社なので交代二勤で乗り切るみたいです

2020年4月 某日タイトルの通りです。正直びっくりしました。本日の午後より緊急的にアナウンスされて、コロナ対策の一環として朝勤と昼勤の交代二勤制になるそうです。なので、私は来週から朝7時に出社・・・。よいことなのか悪いことなのかわかりかねますねこれは・・・。さて、昨日も予告したとおり、Dockerコンテナを使用してHugoの記事を書くことを目的に今日も頑張って行こうと思います。今回はまず、SlideshareでDockerfileについて良い書き方がないかなあと探すところから始めました。 すると数分後、こちらのスライドがとても良くて、印刷したくなっちゃいました。 そこで、この際だったのでSlideshareの新規アカウント登録をして、スライドをDownLoadしておきました。”(OO)/” 次に、どうにかしてDockerコンテナ内でGeditできないかなあ・・・なんて意★味★不★明なことを思っていたら、なんとこちらのページでDockerコンテナで画面表示ができるという美味しすぎる話を見つけてしまったので早速使用・・・と思ったら、なんか自分のubuntuの環境ではdocker-composeでバグるんですよね。そこで、早速アップデートしてみました とりあえず、これで更新はできたので、いざもう一度!・・・使用できないコマンドとかがあって、そのままでは使えなさそうですね・・・。 しかも、ここでTeraTermとか色々調べてみたら、やりたいことはWindowsからLinuxをリモートしたいってことじゃないですか! 微妙に違うのでここで絶望・・・と思いきや!よくよく読んでみたらAnacondaも入れているじゃないですか。しかもjupyterも。ってことはこの方法ならばGUI可能ってことだ(自分の最初の記事をすっかり忘れていた)ということなので、今から頑張って見ようと思います。それでは読んでくださってありがとうございました!

sudo docker images -aq | sudo xargs docker rmi -f

こんにちは。dockerイメージの全消しを行ったRockinWoolです。今日は最近のコロナワールドを鑑みて、定時ダッシュに挑戦したら無事に成功したので ようやくゆっくり色々やり始めようと思っている次第であります。 ということで、恒例?となった実況しながらのブログ投稿になります。今日のテーマは「DockerでHugoの環境を作ってGithubpagesに投稿しよう!」って感じです。それではぼちぼち進めて行きます。 まず最初に、今回のやりたいことを公開するためのrepositoryを自分のGithubに作成しました。ライセンスはよくわからないのでとりあえずGPLv2.0にしてあります。こうして空のリポジトリを作成した後に、そのリポジトリをローカルにクローンしました。\ こんな感じのコマンドです。ここで、コマンド文をマークダウンで挿入する際にVSCodeに怒られてしまいました。どうやら前後に改行を入れないと怒ってくるそうです。そして、昨日の投稿の裏でコッソリやっていたDockerfileを移動して起動・・のつもりが凄いゴミイメージとゴミコンテナがあったので掃除することに。これで冒頭の全消しコマンドが発動することになったというわけです。 とりあえずこれでイメージもコンテナも全部消去することができました。次にこのDockerfileを読み込んで起動して停止するのを自動化するプログラムも書いてみました。しかし、これが仇となりました。とりあえず完成品は以下に記載しますが、いかんせんif文の書き方にいじめられすぎて時間がなくなってしまったのでTipsはまた次回書きますここまで読んでくださってありがとうございました!参考URL

Twitterランドの情報を入手して遊ぶ1

こんにちは。RockinWoolです。前回の記事で挑戦したように、今日はTwitterの情報を入手して遊ぶプログラムを作っていこうと思います。ただし、今回のプログラムは個人情報の多いものとなっているのですべてを公開することは難しいです。ご了承ください。さて、前回はおそらくTwitterAPIのアカウント登録をして4つの鍵を手に入れたところで終わっているのだと思います。ということで、これからそれをプログラムに読ませて活用していこうと思います。 まず、前回pandasを使用してデータを保存すると言ったがあれは嘘だ。pandasを使用するとdive_search関数(この記事の作者が名付けたものかな?)の再起処理の部分で引っかかってしまいうまく行かない。そこで多少重くなるがpythonのcsvライブラリを使って処理中にcsvファイルに書き込んでもらう形に変更した。具体的にメイン部分は次のようにまとめられる\ もともとがかなり整ったプログラムなので実質的には前に二行足しただけである。こんな書き方は良くないとかあったらぜひ指導してください。とりあえず解説すると、dive_serch関数は再起関数で引数に指定した人のフォロワーのリストと深さdを持っています。最初の実行で起点となる友人のリストが用意されて、その処理の途中で友人のリストの上から順に再び友人のリストが用意されて・・・というものの繰り返しで深さ分のフォロワー情報を入手することができます。弱点はtwitterAPIが15リクエスト/15分という制約をかけているということです。したがって今日は作成したプログラムを回しながら帰宅することにしようと思います。明日はさっきの記事の後半部分。自分の専門分野であるネットワークについて実践していこうと思います。今日の記事で作成したプログラムは↓にあげておきます。コメントいただけると嬉しいです(ほとんど丸パクリだけど)それではここまで読んでくださってありがとうございました