より良いエンジニアを目指して

記事を頻繁に書き直す性格なのでごめんなさい。

Try .NETでC#トレーニング

下記の記事で紹介されているTry.NETを試してみました。

Try .NET | Runnable .NET code on your site

WEB上で動かせるC#クラウドエディタです。

インテリセンスが効くのがポイント。

本当にまだ最小限の機能しか準備していないといったところ。

これを使ってWEB上で C#を勉強してもらってC#erを増やそうという試みですな。

f:id:rimever:20190523191425p:plain

dev.to

NuGet Gallery | dotnet-try 1.0.19317.5のコマンドを叩きます。

dotnet tool install --global dotnet-try

f:id:rimever:20190523192646p:plain

dotnet-try demo --output demo

を実行すれば、その場でC#のコードが試せるSandBoxが登場します。

f:id:rimever:20190523200238p:plain

f:id:rimever:20190523200259p:plain

Create New Projectなどを見ると、C#のプロジェクトの生成方法なども説明されてます。

ただ、英語力がないと、厳しい感じ。

f:id:rimever:20190812223438p:plain

参考資料

Microsoftを代表するブロガー、スコット=ハンセルマンもブログに書いてます。

www.hanselman.com

AOKIでスーツの下取り

AOKIでスーツの下取りをしてきました。

www.aoki-style.com

スーツの下取りについては住所を書かされますが、ゲームや本をブックオフなどで売るのと比べるとすぐ終わります。

よく見ると、AOKIで使えるクーポンなんですね。

なるほどー。

こうなった経緯も職場で私服の徹底が進んだからでした。出費がかさんでます。

Google Cloud Next'19でもファミマの方が

スーツにも良いところはある。が、何も考えなくて着てしまう。

とおっしゃってます。

www.itmedia.co.jp

確かに、それはそうです。

私が私服にいい思い出がないのは、転職活動中に、ある会社の面接を受けてきたときに

私服でも別に構わないけど、さすがにその格好はないだろう

という、行き過ぎた服装を見た経験があったためでした。

結局、私は服装は決まったものを着回すだけのスーツとほぼ同じ何も考えず着てくる状態となってます。

にしても、このAOKIのクーポンを使う日は来るのでしょうか。

GitBookで設計書を書けないか

先日のDraw.ioを試したようにWordやExcelではない設計書を作成する旅をしています。

github.com

GitBookを試してみました。

npm init

npm install -g gitbook-cli

gitbook init

book.jsonを追加して以下のように記載します。

{
    "language": "ja"
}

編集

ページの編集

あとはmarkdownファイルでページを作成していくだけですね。

f:id:rimever:20190810213014p:plain

ページの作成についてはdocフォルダを切っていった方が綺麗に整理できそうです。

SUMMARY.md

SUMMARY.md は左サイドバーに対応します。

SUMMARY.mdに先ほど作成したページへのリンクを追加します。

* (要件定義書)[01_要件定義/要件定義書.md]

といった形です。

f:id:rimever:20190810212938p:plain

実行

ターミナルにて、以下を実行します。

gitbook serve

http://localhost:4000/ へアクセスします。

f:id:rimever:20190810212855p:plain

仕組みとしてはmarkdownをビルドしてhtmlを生成するようです。

さらにPlantUml

以下のプラグインを使えばPlantumlを組み合わせることができるようです。

github.com

umlpngに変換されて埋め込まれるようなのですが、なぜか参照できておらず、調査中です。

参考サイト

qiita.com

blog.kondoumh.com

とにかくトライGoogle Cloud Platform!って試してみたのはGoogle Compute Engine

Google Cloud Next'19に参加したところで、とにかくGCPを触りたいという欲求を以下の記事が満たしてくれました。

qiita.com

AIやりたいみたいな素人なノリですが、GCPと一口に言ってみてもいくつもサービスがあります。

この記事で紹介されているのはGoogle Cloud Platformの無料枠を使って、Google Compute Engineで仮想マシンVMインスタンス)を作成し、安全なSSH接続を確立する方法です。

cloud.google.com

f:id:rimever:20190812131230p:plain
メモリ614MB。小さっ。

どこまで無料枠なんだ?

先ほどのQiitaのページを参照すればOKなのですが、以下の公式ドキュメントにまとめられています。

cloud.google.com

Google Cloud Next'19のあるセッションでも言っていましたが、公式ドキュメントを読むのは大事ですね。

つまづいたところ

Google Cloud SDKのインストール。

Google Cloud SDK のドキュメント  |  Cloud SDK  |  Google Cloud

ただ、yを入力しているだけではダメです。

英語をきちんと読まないと、インストールできません。

セキュリティ

インスタンス作成後、認証ログを確認すると、すぐに外国から不正アクセスを試みようとしている兆候が確認できました。

さらっと、こういうこと書いてありますね。セキュリティは他人事じゃないですね。

課金アラート、Googleアカウントの二段階認証などの導入をしっかり設定しておかないとやばいですね。

Windows Serverは?

f:id:rimever:20190812122716p:plain
選べるが、「選択」ボタンはクリックできない。

プレミアムイメージなので無料枠では選択できません。

他にもSQL ServerRHELも同様です。

ワンランク上の見やすさを目指してmatplotlibの棒グラフの色を指定する

以下の記事なのですが、グラフの見せ方という観点で、シンプルだけど、思いもつかなかったという内容でした。

www.zukai.site

目立たせたい箇所はメインカラー、それ以外は薄いメインからーかグレーで抑えるというものです。

これをPythonで可視化するときにやってみようと思います。

before

まずは、以下のようなコード。

import matplotlib.pyplot as plt
import numpy as np


x = ['C#','Python','JavaScript','C++','F#','Ruby']
y = np.array([63,43,5,5,2,1])

plt.bar(x,y)

f:id:rimever:20190811220805p:plain

matplotlibの場合、何も手を加えないと同じ青になります。

after

bar関数のcolor引数に値を与えれば良いです。

import matplotlib.pyplot as plt
import numpy as np


x = ['C#','Python','JavaScript','C++','F#','Ruby']
y = np.array([63,43,5,5,2,1])

// color引数に色の配列を渡す。
plt.bar(x,y,color=['blue','blue','gray','gray','gray','gray'])

f:id:rimever:20190811221502p:plain

出来ましたね。

参考サイト

pythondatascience.plavox.info

Draw.ioを設計書に使えないか試してみる

Excelの設計書ではマージできないし、Office365ではないから共有できないので、他にないかなーというのがきっかけで、draw.ioを試してみました。

about.draw.io

文字列は矩形とは別扱いでセットする必要があります。

f:id:rimever:20190810172932p:plain

使いやすさとしては普通ってところです。

ただ、私が使いたいのはこれじゃないというところです。

職場では一つの機能に対して複数の改修を行うことがあるため、複数の修正をマージさせる必要がありました。

よって、マージできるのことが目的だったのですが、draw.ioとしてsvgとして保存して、markdownに埋め込むなどをしないとなりません。

draw.ioは以下のhtmlのような形式でデータを持っていますが、これをマージするようなことは困難です。

1行で管理されてます。

<mxfile modified="2019-08-10T08:30:23.994Z" host="www.draw.io" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" etag="vxtmNK2RHH-648H1Ohrp" version="11.1.4" type="github"><diagram id="LyoDKckqxrLoSeAnQ3_y" name="Page-1">3ZbbjtsgEIafhstWsYkPuczBbaWqUqNUantJzcRGi42Fycbepy8EHMeHKK20q0q9CvMzDPD9JBOEt0XzUZIq/yIocOQvaIPwDvm+58Wh/jBKa5UoCqyQSUZdUi8c2As4ceHUE6NQDxKVEFyxaiimoiwhVQONSCnOw7Sj4MNdK5LBRDikhE/V74yq3KqxH/X6J2BZ3u3shSs7U5Au2d2kzgkV5xsJJwhvpRDKjopmC9zA67jYdR/uzF4PJqFUf7IgKvF+//mggl9VET0lwQ7vX965Ks+En9yF3WFV2xE450zBoSKpic/aZYQ3uSq4jjw9JHVluR9ZA3qrjasIUkFz96jeFYB+OSAKULLVKd0C7Ji5RxO78Nw74Hcp+Q39q0ic69m1dA9GDxybv+DkP+YkxamkhsAFywNqrwBpGQQDSF7oTyh5/gyl8K0g4SmkJESrEMURSgK03qHVZRDHZjDmp0moIaRaSfEEW8GF1EopSp25OTLORxLhLCt1mGpyoPWN4cr0d3jtJgpGqdlm1pXet8XrGOP7I2Nmnu9y7vW+lS/LiS/fDOv/1oDlajEyIPi3BoSPfz2gpGvTrgxFTuqapUMr9NVl+8MxugQ/TfA+6MJdczu5awc4gU663AimPow4yRQe9wpFZAbq0W/l1Jwb+MEM/E6TwIliz8PjzjnidvgqmL7I3daB45Gp9ppu1W27HBeKR4XGvcVymBS6PJDrtefejA77rm/T+/9OOPkN</diagram></mxfile>

draw.ioとsvgの二重管理も手間になってしまうなーと。

f:id:rimever:20190810173836p:plain

CythonをGoogle Colaboratoryで試してみる

なんとなく、Cythonを読んでいたのですがいいですね。

www.oreilly.co.jp

Cythonを使ったからといって全てのコードが大幅に早くなる訳ではない。バレートの法則に従い、ボトルネックに使うのが良いそうです。

NumpyなどのライブラリではCythonでCを持ち込むことでハイパフォーマンスを確保しています。

Google Colaboratoryを使って試してみます。

Google Coraboratoryは、python3.6(2019/7/28時点)ですので、特にpip install cythonでインストールのも必要ありません。

f:id:rimever:20190728222647p:plain

%load_ext Cython

を宣言し、

%%cython

def primes(int kmax):
    cdef int n, k, i
    cdef int p[1000]
    result = []
    if kmax > 1000:
        kmax = 1000
    k = 0
    n = 2
    while k < kmax:
        i = 0
        while i < k and n % p[i] != 0:
            i = i + 1
        if i == k:
            p[k] = n
            k = k + 1
            result.append(n)
        n = n + 1
    return result

cythonで宣言した関数を

primes(10)

と呼び出せばOKです。

f:id:rimever:20190728222910p:plain

Cythonのcdefなどを用いる時には、セルごとに

%%cython

と指定するのがポイントですかね。

参考サイト

omake.accense.com

qiita.com