技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Elixir の薄い同人本読んでみた

薄くて肌色の本を想像したそこな男よ!残念!技術書でしたー!

タイトル見て「コイツ何言ってんの?」と思った人も居そう。
何をしているかと言うと、下記にでる予定の Elixir 本を先行して読ませてもらっているという!

techbookfest.org

あるんですよ、世の中には 技術専門の同人誌 なんて言うものが。
で、知り合いがそこでサークル参加するので、その本をレビュー兼ねて読ませて頂いてる次第!

twitter.com

内容を概要だけでざっくりと!

  • 実行環境と基礎
  • XXXXXXでのプロジェクト作成、実行の基礎
  • PhoXXXX の基礎
  • XXXves の基礎

まだ出てないの伏せ字(白目

何がいいって、座学じゃない点。
マジでそのまま打って概要と雰囲気が理解できるのがありがたい。(ゴメン、読み物系技術書は余程理論系でもない限り僕が寝るwww)

でも技術って本来面白いというか、ワクワクするモンだよね。
面白そう、でも知識が浅い、どっから手をつければ良いか分からない。
技術あるあるですわ。

僕も Web はドップリだけど、IoT なんか殆どやってないし、関数型はやってても静的型付けしか経験ないし。
浅くても取っ掛かりとして十分な本てとってもありがたいよね。

Framework 離れて 1 年

何があったかと言うと、ひさびさに非Salesforceもくもく会(下)に参加して、1年以上ぶりに Scala+Playframework を弄ろうとして色々どハマりしたという話。

ポートフォリオアプリや個人サービスを開発したい方向けのWeb開発もくもく会&勉強会 - connpass

最近 Playframework 離れてたし久々にやるかーと思って手をつけて色々どハマりして 2 時間食いつぶしてしまったので、反省も兼ねて。

  • 基本的に更新早いフレームワークは 1 年経ったら半分以上別物と思った方が良さそう。
    具体的には evolution のセットアップが変わっていたり、その割にドキュメントの更新が追いついてなくて、エラーの修正をどうすべきか悩んだ。
  • 当時愛用してた scala-activerecord だけど、気づいたら更新止まってて、最後の対応 scala バージョンが 2.12 だったという(Play2.7 は 2.13 なので、単純に参照できない)。 補足すると 2.13 でリビルドしようとしたが、依存ライブラリもまた対応してなかったとかで色々吐いて来たので利用諦め lllorz
  • 細かいフィルタの挙動、設定とかもちょくちょくハマった。

ここから反省すべきは

  1. 更新の早いフレームワークは手を付ける前に、キャッチアップを先にしないと死ねる。
  2. 昨今のフレームワークは学習コストは下がって来ているのだから、落ち着いてドキュメント読め。

ということでいきなり物を作れるなんてタカを括らず、ドキュメントを読めってことで…

Matplotlib の使い方近辺

# Matplotlib と seaborn (ヘルパー)
import matplotlib as mpl
import seaborn as sns

# pyplot
import matplotlib.pyplot as plt

%matplotlib inline

散布図

# ライブラリ
import numpy as np
import numpy.random as random

random.seed(0)

# x,y
x = np.random.randn(30)
y = np.sin(x) + np.random.randn(30)

# グラフ保大きさ指定
plt.figure(figsize=(10, 6))

# 散布図1
plt.plot(x, y, 'o')

f:id:white-azalea:20190821002604p:plain

続きを読む

データサイエンスの育成講座(3)

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

# データ解析、機械学習系
import numpy as np
import numpy.random as random
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame

%precision 3
'%.3f'

Pandas

代表的なデータ構造の Series から。
ラベルとかの情報を含む配列みたいな感じと認識。

データ型

sample_data = pd.Series([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90 ])
print(sample_data)
0     0
1    10
2    20
3    30
4    40
5    50
6    60
7    70
8    80
9    90
dtype: int64
sample_indexed_data = pd.Series(
    [0, 10, 20, 30, 40, 50, 60, 70, 80, 90],
    index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
)
sample_indexed_data
a     0
b    10
c    20
d    30
e    40
f    50
g    60
h    70
i    80
j    90
dtype: int64
続きを読む

データサイエンスの育成講座(2)

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

と、続きでやってる。
jupiter-notebook があればいい。

一応色々端折る為に anaconda で作成。

# データ解析、機械学習系
import numpy as np
import numpy.random as random
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame

# 可視化系
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns

%matplotlib inline
%precision 3
'%.3f'

Scipy

# Library of linear algebra
import scipy.linalg as linalg
matrix = np.array([[1, -1, -1], [-1, 1, -1], [-1, -1, 1]])
print(f'行列式 : {linalg.det(matrix)}')
行列式 : -4.0
inv_matrix = linalg.inv(matrix)
print(f'逆行列 :\n{inv_matrix}')
print(f'Dot積 : \n{ matrix.dot(inv_matrix) }')
逆行列 :
[[ 0.  -0.5 -0.5]
 [-0.5 -0.  -0.5]
 [-0.5 -0.5  0. ]]
Dot積 : 
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
eig_value, eig_vector = linalg.eig(matrix)
print(f'固有値 : \n{eig_value}')
print(f'固有ベクトル : \n{eig_vector}')
固有値 : 
[-1.+0.j  2.+0.j  2.+0.j]
固有ベクトル : 
[[ 0.577 -0.816  0.428]
 [ 0.577  0.408 -0.816]
 [ 0.577  0.408  0.389]]
続きを読む

暫く積んでた本の着手

Kaggle やり始めて撃沈して、ちまちま勉強していたけど、そもそも基礎がなってない気がしてそれっぽい物を探した痕跡。
最近までずっと Salesforce で Trail 祭りしてたからなぁ(汗

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

利用する系のライブラリ

# データ解析、機械学習系
import numpy as np
import numpy.random as random
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame

# 可視化系
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns

%matplotlib inline
%precision 3
'%.3f'

マジックコマンド

jupiter notebook の機能群

  • %run 外部コマンドの実行
  • %cp ファイルのコピー
  • %time 時間の計測
  • %precision numpy 拡張。表示する場合の有効桁数を指定する。
  • %matplotlib Matplotlib 拡張。グラフなどの表示法を設定できる。inline など。
  • %quickref コマンドの一覧表示など

numpy 近辺

# use array.
example_array = np.array([1, 4,  8, 16, 6, 8, 1, 5])

# tab key on after dot(.) to code complete
example_array.dtype
dtype('int64')
続きを読む

アプリからドライバまで 現役エンジニアの濃い話

sciencepark.connpass.com

gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする :サイエンスパーク

author: 須藤さん

www.slideshare.net

前回、gitsvn の違いから始まって、git-flow のモデルまで説明されました。
今回は git-flow の流れの続き。
rebase + rebase -i についての話です。

ざっくりまとめると以下の機能があります。

  1. rebase 指定したバージョンを元にコミット差分を乗せ直す機能です。
    コミット履歴を見れば非常にわかりやすいですが、ブランチマージと異なっていて、コミットや修正の履歴が直列になります。
  2. rebase -i はバージョンを指定して、履歴を操作する…という意味合いまでは一緒ですが、こちらはコミット履歴の統廃合することができます。
    これによって、任意のタイミングでコミットしても後から整形すればいいという使い方ができます。

rebase -i (コミット範囲) をすると、コミットログの一覧が出る。
これを編集して、git rebase continue すると、コミットログが綺麗にまとまる。

なぜこれらが必要なのかというと、github でプルリクエストをする時に、マージだと更新履歴がまともに見えないので論外。rebase は必須としても、履歴が汚れている場合は rebase -i をした方がいいというお話です。

内容的には初級向けの印象でした。
rebase -i 久々に見ました…自分一人でやってるとコミット履歴気にしないもんなぁ(汗

Scikit-learnで機械学習系の何か

author: 安原

機械学習とAI の言葉の範囲が異なるというところから始まり、機械学習にも様々な種類があるというお話から始まりました。
そこから、決定木と、ランダムフォレストの説明につながりました。

  • 決定木: 与えられた情報を「XX が YY 以上なら…」という様にしてデータを判断するツリーを決定木と言います。
  • ランダムフォレスト: 決定木を学習データをランダム振り分けで学習させ、しかもそれを複数本用意するアルゴリズム
    こうした複数の学習機を利用して多数決で決定する様なアルゴリズムをアンサンブル学習と言います。

こちらも機械学習初級向けの内容とは思います。
決定木が学習する過程で条件を学習選択するアルゴリズムなどに関して突っ込んだら 絶対深かった 多分収集つかなくなった(汗

マインドフルネス

www.slideshare.net

今この瞬間に意識を傾けて物を考えるという方法。
集中力アップのほか、ストレス軽減の効果がある。

マインドフルネス瞑想!

  1. 力を抜いて楽にする
  2. 目を閉じます
  3. 鼻から深呼吸します
  4. 呼吸を数回繰り返します
  5. キリがいいくらい(5分位)その状態を維持します

変に何か感じたら、呼吸に意識を傾けることで頭をリセットします。
これを知ってると気分のリセットなどには実に有用です。

唯一のライフハック系のお話!
これ系は勉強会で出てくることは滅多にないので貴重です(^_^;)