Month: January 2023

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

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分という制約をかけているということです。したがって今日は作成したプログラムを回しながら帰宅することにしようと思います。明日はさっきの記事の後半部分。自分の専門分野であるネットワークについて実践していこうと思います。今日の記事で作成したプログラムは↓にあげておきます。コメントいただけると嬉しいです(ほとんど丸パクリだけど)それではここまで読んでくださってありがとうございました

Twitterと連携してみた&一時間でTwitterのPythonScriptを実装してみる

2020年3月 某日皆さんこんにちは。RockinWoolです。早速ですがこのブログのTwitter連携をしていなかったなあと業務中に思いついたので、早速ですがここで実況しながらやっていこうと思います。ちなみに現在のこのブログの環境はVisual Studio Code + Hugo + Githubpagesという感じです。(脚注: 現在はWordPressで作ってますが、当時はGithubpagesでやってました。)OSはUbuntuとWindowsどちらからでも作成しています。そのとき使える方でやるって感じです。 それでは早速ですがやって行こうと思います。まず自分のTwitterのアカウントは以下のやつになります(うまく貼れているかな?)Twitter : RockinWoolそんで、これをconfi.tomlに追記することによってここからボタン一つでアクセスできるようにしようと思います。※ちなみにここで自分の過去のツイートを確認して犯罪者臭いこと言っていないかチェックした。鍵垢ですみません。 それからついでにGitHubのアカウントも公開しておこうかなと思います。GitHub : RockinWool※これもプライベートリポジトリとかを確認して事故のないようにした。このときサブのGitHubのアカウントの方に大体の機能を移した ということで無事に設定も終了したので、ここからはtwitterからデータを取って来るほうの話を始めようと思います。今回気になっていたのはQiitaのこの記事です。とりあえずあまり読んでないのですが進めていこうと思います。 さて、15分ほど読んだところで早速引っかかったのはimport configの部分。configというライブラリがどっかにあるのかしら?と純粋な気持ちで検索をかけても見つからず、色々読んだ結果別ファイルから設定を読んでいるだけということが判明した。それと同時にTwitterの情報を入手するにはTwitter APIとの登録・連携が必要ということを知りました。ということでいざTwitterAPIのサイトへ!と思って行ったらすでにアカウントが作成済みだった・・。どうやら学生のときにもチャレンジしたことがあったみたいです。しかし、これにくじけずに必要な鍵を4つ手に入れることができました。この鍵を知られると簡単に乗っ取られてしまうそうなので皆さん厳重に保管しましょう つぎにとりあえずさっきのQiitaのページのプログラムをほぼペーストして実行すると早速エラーが出ました。内容はpythonやっている人には日常茶飯事のライブラリが無いよってやつです。とりあえず以下を実行\ さらにmongodb関連のライブラリは解説が少なかったのもあって断念し、よく慣れ親しんだpandasを使用してデータを保存していくことに変更。おそらくそこまで深く掘らなければデータ数もそこまで莫大にはならないと思うのでこれで良いのかな・・と思います。ここで一度実行してみると、なんとか動きました!今晩はここで一度家に帰って、明日結果の確認を行ってネットワーク化と解説をしていこうと思います。ここまで見てくださってありがとうございました!