@kotyのブログ

PythonとかAWSとか勉強会のこととかを、田舎者SEがつづります。記事のライセンスは"CC BY"でお願いします。

第2回「Linuxのしくみ」読書会参加記録

参加者は10名くらい。思ったより(?)1回目より減らなかった。

nseg.connpass.com

今回も関西より一名リモート参加者あり。zoomにて中継しました。

いよいよソースコードが登場しました。c言語は学生のとき以来でそもそもコンパイルの方法を忘れていた。。。

処理結果をグラフにプロットしてみて、プロセススケジューラの仕事っぷりを見る箇所がありました。 グラフの描き方までは載っていなかったので、その場で以下のサイトでざっくりプロットしてみました。*1

gnuplot.respawned.com

今どきならjupyter notebook上でmatplotlibを使ってグラフを書くんでしょうか。というわけでやってみました。

まずはanacondaをインストールし、仮想環境に入る。

pyenv install anaconda3-4.3.1
pyenv local anaconda3-4.3.1

anacondaだとjupyter notebookやmatplotlib等がひととおり揃っているらしい。すごい。 そりゃデータ屋さんがみんなanaconda使うわけです。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('data.csv', delimiter=',')
fig1 = plt.figure(figsize=(10, 5))

ax1 = fig1.add_subplot(1,1,1)
input1 = data[:,1]
output1 = data[:,0]
ax1.scatter(input1, output1)

fig1.show()

できたグラフがこちら。 f:id:kkotyy:20180427171636p:plain

次にy軸が進捗のもの

fig2 = plt.figure(figsize=(10, 10))

ax2 = fig2.add_subplot(2,1,2)
input2 = data[:,1]
output2 = data[:,2]
ax2.scatter(input2, output2)

fig2.show()

グラフはこちら。 f:id:kkotyy:20180427171728p:plain

系列ごとに色を変える方法がわからないし、軸が黒背景の上に黒文字で何が何だか分からない。。。取り急ぎこんな感じで。ちょっとづつ勉強します。

次回は連休明けです。 nseg.connpass.com

*1:約20年ぶりにgnuplotを使った

#nseg OSSライセンス勉強会参加記録

第99回NSEGを開催しました。

nseg.connpass.com

本編

テーマはOSSライセンス。@さんを講師にお迎えして講義していただきました。 資料はこちら。 当日の様子はこちらです。

また、thinkamiさんが詳細を報告されているのでそちらをご覧ください。。。

thinkami.hatenablog.com

OSSのライセンスについても勉強になったのですが、OSSコミュニティについてのお話もとても印象に残りました。 コミッターになることやプルリクを送るだけでなく、issueを登録することやplayストアで要望を書くことも十分OSSへ貢献するのだなと感じました。

LT

事前にLTを希望してくれる人が少なかったのでOSSライセンスのしばりはなくしましたが、4名中2名がOSSライセンスに関係した話をしてくれました。

私はOSSとは全く関係のない話をしました。。。

speakerdeck.com

地方だからこそできる農業アイディアソン、ハッカソンを開催してみたいです。

適当な幹事でしたが、盛り上がったので良かったです。可知さん始め参加された皆さんありがとうございました。

OS稼働中に/tmpの内容が消える現象への対処

追記:消されて困るものをそんな所に置くなというご意見はおっしゃる通り。今回は、~/var/run ディレクトリを作ってそこに移して対応した。

追記終わり

CentOS7およびAmazon Linux2 での話。ubuntu server でどうかは知らん。

OS再起動時に/tmpがクリアされる認識はあったが、OS稼働中に/tmpの内容が消える事象が発生した。

直接の事象は supervisord.confで

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)

と設定しているときに、supervisorctl コマンド実行時に supervisor.sock が見つからずに失敗するというもの。 supervisord をrestartすれば済んでいたのでしばらく放置していた。

よくよく調べると、 systemd-tmpfiles-clean.timer なるsystemdのデーモンがあり、こいつが消している模様。

$ cat /usr/lib/tmpfiles.d/tmp.conf
#  This file is part of systemd.
・・・中略・・・
# Clear tmp directories separately, to make them easier to override
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d

10日過ぎたら消されるようだ。

というわけで、このtimerをdisableにするか、消されたら困るファイルは別の場所に移す対応が必要。systemdにtimerなんて機能があることを初めて知ったのだった。*1

参考:

rskmt.hateblo.jp

qiita.com

*1:常識だろと言われないかビクビクしながら書いているが、みなさんこれくらいのことは把握して使っているんだろうか

長野市ごみ収集カレンダーを新年度版データに入れ替えた

play.google.com

現在10人もの方々にお使いいただいているこのアプリのデータを2018年度版に入れ替えました。お待たせしました。待ってませんかそうですか。

一年ぶりにアプリをビルドしようとしたらビルドできず、いろいろ試行錯誤して最終的にこれで直ったっぽい。

c# - Error executing task XamlCTask- Xamarin - Stack Overflow

分かるわけない。Xamarinのつらみを感じる、というかフロント界隈は片手間ではできないことを再確認したのでありました。

残課題として、

  • 前日の夜にも通知を送ってほしいと要望をいただいている
  • 月末になると通知を消してもすぐに通知が出てきてしまう

というものがあります。後者は謎で、以下のコードなんだけど

f:id:kkotyy:20180413090707p:plain

謎です。気が向いたら調べる。

あと、Google Assistantアプリの方も対応しないと。。

第一回「Linuxのしくみ」読書会参加記録

nseg.connpass.com

読書会の新シーズンが始まりました。いつもはネタ本を決めるのにアンケートを取るのですが、今回は仲間内で決めてしまいました。これまでとうって変わって低レイヤの話です。

いつもどおり@さんに加えて、@さんも有識者として大いにウンチクを語ってもらいました。

  • strace コマンド使ったことなかった。。。実際の障害調査では処理系固有のものだったりもっと高レイヤのツールを使うことがほとんどでしょうけど、こういった手段も覚えておくと良いですね。
  • 参加者は11名でした。すごい。このまま減ることなく続けられると良いのですが。
  • おひと方は関西からの参加でした。リモートでもROMなら問題なさそう。むこうの音声が聞き取りづらかったので読んでもらうのはちょっと厳しいかも
  • 次回からは参加する方は仮想マシンか何かでLinuxを動かせる環境を用意しておいた方が良い。「Linuxのしくみ」を学ぶんだし。。

昨シーズンは後半仕事が忙しくて全然出られませんでした。今回は皆勤したいです。

nseg.connpass.com

CloudFront+ALB+nginxで静的ファイルをserve という構成におけるtrailing slashのリダイレクト問題

メモ書き。

構成としてはタイトルの通り、CloudFront + ALB + EC2 + nginx。そしてnginxで静的ファイルをクライアントに返す、という構成。

このとき、 /hoge というリクエストに対し、 /hoge/index.html を返したい場合、 nginx はいったん 301 を返して、 クライアントを/hoge/ にリダイレクトさせる。このときCloudFrontを使っていない場合は、

www.example.com/hoge → www.example.com/hoge/

というリダイレクトになる。

ところが、CloudFrontを使っていると、

www.example.com/hoge → www-example-com-xxxxxxx.ap-northeast-1.elb.amazonaws.com/hoge/

のように、ALBのURLにリダイレクトがかかる。nginx視点で見た場合、 ALBのURLで動いているように見えるためと思われる。

仕方がないので、明示的にリダイレクトを書いた。

    if ($request_uri ~ ^([^.]*[^/])$) {
        return 301 https://www.example.com$request_uri/;
    }

もっと良い方法があるように思うが。。。

追記:HostヘッダをCloudFrontで通すようにすれば良さそう。

書籍「SQLアンチパターン」読書会スペシャル を開催しました

こちらでもレポートしているので、ご覧ください。

www.wantedly.com

参加者は12名と、講師の豪華さを考えるともう少し集客したかったところです。私の宣伝が足りませんでした。。一方で、発表前後で講師も含め雑談が多く出来たのは少人数ならではだと思います。

@t_wadaさんは日本におけるテスト駆動開発の第一人者でもあります。昨秋に書籍が出たことで約10年ぶりにTDDの盛り上がりを見せています。同じ盛り上がりでも10年前との違いを聞いてみましたところ、テストコードを書く組織、書かない組織に二分されている。テストコードを書いている組織はテストコードの負債化が悩みになっている。ということでした。

和田さんはTDDのイベントも乗り気だったので、今年どこかでぜひ開催したいです。

SQLアンチパターン

SQLアンチパターン

テスト駆動開発

テスト駆動開発