紙媒体で管理するとなくなりがちなのでブログで進捗などを管理することにしました
※殆どの記事は自分自身のためだけにかいています.他人に見せられるレベルには至っていません...

【振り返り】2018.01.14(日) - 2018.01.23(火)

センター試験

卒論まで2週間になったのにセンター試験で大学が閉鎖.


AGC

AGCでtouristが作問したらしい. 参加しはいないけど, 競プロも参加していきたい.


メモリ増設

1月になって始めて人権を得られた. もう遅いよ.



卒論書いた

付録書いた.


GitHub充実させたい

*JadX導入
bytecode解読のため, jadxを導入した.
従来の自分の方法より高速で素晴らしかった.


jebっていうAndroidのデコンパイラ無償版使ったけど, かなり良かった.
apktoolのguiコンパイラも良かったけど, こっちも良かった.
有料版にすると, デコンパイルしたDalvikコードが保存できる感じだったので有料版欲しいと思った.

vscodeTeX

vscodeでPDF表示できるのね.



卒論の付録の表作った




卒論終わったら


卒論実験

実験すら出来てなかったけど, 機械学習で結果出すまで出来た.
まじでこの一週間は疲れた.







雪降った






興味を持ったツイート























【Python】matplotlibで最低限のグラフをかけるようにする

TeXで表示させるため, グラフが必要な時期になってきた.
Pythonで最低限のグラフを描画する方法をメモ.
sigmoid関数のプロット

import numpy as np
import matplotlib.pyplot as plt

# 関数定義
x = np.linspace(-8, 8, 100)
y = 1/ (1+np.exp(-x))

# 垂直線
plt.vlines(0.0, -0.1, 1.1, colors="r", linestyle="dotted", label="")
# 水平線
plt.hlines(0.0, -8.0, 8.0, colors="k", linestyle="dotted", label="")
plt.hlines(0.5, -8.0, 8.0, colors="k", linestyle="dotted", label="")
plt.hlines(1.0, -8.0, 8.0, colors="k", linestyle="dotted", label="")

# sigmoid 関数
plt.plot(x, y, label="sigmoid function")

# y軸の設定
yticks = [0,0.5,1.0]
plt.yticks(yticks)

# 軸の名称
plt.xlabel(r"z")
plt.ylabel(r"$\phi(z)$")

# 凡例
plt.legend(loc="upper left")

# 図の保存
plt.savefig("./sigmoid.png")
plt.show()

f:id:umashika5555:20180122130503j:plain
TeXファイルに貼り付ける場合は, .epsにしておく必要がある場合がある.
convert コマンドでファイルの種類を変更する.

$ convert sigmoid.png sigmoid.eps

【メモ】TinyXML

ある処理でPythonXML扱うモジュール使ってたんだけど, さっき見た論文でTinyXMLを使うと書いてあった.
本質ではないけど, そういうツールがあることを知らなかったのでメモしておく.

来年度の目標メモ

2018年になり約20日, 現在卒論に追われていて精神的にかなりキツイ.
本日も徹夜し現在朝8時, ようやく寝ようとしている.
スマホを片手に来年度の目標を書く. 来年度は休学しようと思っているので, 時間が出来そう. やりたいことをまとめる. 

ディープラーニング理論

ディープラーニングの理論を数学的に、またフルスクラッチ実装することでブラックボックスを少しでも解明していきたい. 現在主流ではない数値微分による方法なども敢えて実装し性能比較を行ってみたい. Courseraとかも興味はある.

ディープラーニング応用

ArXivの記事を一日一本は(精読でなくてもよいので)読みたい. 気になった方法はgit cloneして試してみたい. 独自のアニメデータセットなども利用してネタになったらQiitaなどに投稿したい. 

機械学習 / 統計理論

機械学習の有名手法のフルスクラッチ実装, また自分は統計学を蔑ろにしてきたので統計学についても本を読み漁りたい. また自分の畑を広げるという意味で解析や確率論, 統計力学などもできたらやりたい.

機械学習 / 統計応用

やっぱり, これに関してはkaggleに参加する事が一番だと思う. 今年は少ししか参加できなかったけど, 結構慣れてきたので来年はもっと参加したい. Kernelを読んで芸術的な可視化や特徴量抽出についても学んでいきたい.

新しい言語を学ぶ

研究を一年間やってきてPythonに対する嫌悪感が凄くなった. もちろん機械学習に関してはscikit-learnやkerasといった素晴らしいライブラリがあるのでそこは継続して使いたいと思うが, 事務処理などで使うと遅いし途中で止まる可能性あるし, 何より書きづらいしであの忌み嫌っていたC言語でさえ愛おしくなってしまった. なにやら最近はrustやgoといった言語が流行っているらしいので勉強して見る価値は大いにありそう. 

ソフトウェア工学

これも研究を通して思ったのだが自分のコードがクソすぎて決まった規格がほしいと思った. コードに関する規約について勉強する必要がある. コードコンプリートを読みたい.

コンパイラ作る

AndroidのDalvik Bytecodeが少し読めるようになってきたので, まずレジスタなどをより理解し, デコンパイラや制御フローグラフなどを作るツールをつくりたい. 

【Python】 pythonからshellの実行

Pythonからshellコマンドを実行する際に以下のようなやり方がある.
今回は次のshellコマンドをpythonで実行するやり方を比較する.

$sha256sum hoge.zip
#返り値:  xxxxxxxxxxx hoge.zip

os.system()を使う方法

import os
file_name = "hoge.zip"
os.system('sha256sum "{}"'.format(file_name))
# 成功
# xxxxxxxxxxx hoge.zip
# 0
# 失敗
# sha256sum: hoge.zip : No such file or directory
# 256

成功したか失敗したかのみしかわからない.
コマンドの出力が受け取れないし, 推奨されていないやり方らしい.

subprocess.check_output()を使う方法

import subprocess
file_name = "hoge.zip"
args = ["sha256sum", file_name]
subprocess.check_output(args)
# 成功
# b'16e3a87f14dce201f90dc0f7dd2a6318e7b9e5aef095e5815123c3a44e92ac97  GA_result.txt\n'
# 失敗
# sha256sum: hoge.zip : No such file or directory
#Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
#  File ".pyenv/versions/3.5.4/lib/python3.5/subprocess.py", line 316, in check_output  **kwargs).stdout
#  File ".pyenv/versions/3.5.4/lib/python3.5/subprocess.py", line 398, in run output=stdout, stderr=stderr)
# subprocess.CalledProcessError: Command '['sha256sum', 'GA_result1.txt']' returned non-zero exit status 1

成功した場合, 返り値はbyte型なのでstr型にdecodeし, pythonコード内でshellの出力結果を得ることができる.

res = subprocess.check_output(args)
hash_value = res.decode("utf-8").split(" ")[0]

ただし, windowsの場合はうまく行かない可能性がある. 原因はまだ良く見てない.

commands.getstatusoutput()を使う方法

昔よく使っていたが, Python3 で廃止されたらしい.
これの代用がsubprocessモジュールになったらしい.

【TeX】 ページを跨いで表を表示する

longtable.styを使う

\newcolumntype{A}{>{\raggedright}p{0.3cm}}
\newcolumntype{N}{>{\raggedright}p{3.6cm}}
\newcolumntype{D}{>{\raggedright}p{10.0cm}}
{\footnotesize
\begin{longtable}[c]{|A|N|D|}
\hline
No & permission-name & Description \tabularnewline \hline
\endfirsthead
0  & \verb|ACCESS_CHECKIN_PROPERTIES| & Allows read/write access to the "properties" table in the checkin database, to change values that get uploaded.\tabularnewline \hline
1  & \verb|ACCESS_COARSE_LOCATION| & Allows an app to access approximate location. \tabularnewline \hline
2  & \verb|ACCESS_FINE_LOCATION| & Allows an app to access precise location.\tabularnewline \hline
3  & \verb|ACCESS_LOCATION_|\\ \verb|EXTRA_COMMANDS| & Allows an application to access extra location provider commands. \tabularnewline \hline
\end{longtable}
}

f:id:umashika5555:20180118020916p:plain

【参考】
http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/longtable.html
https://ctan.org/pkg/longtable

【Python】 再帰的にファイルを取得する

import os
def find_all_files(directory):
    for root, dirs, files in os.walk(directory):
        #yield root # ここをアンコメントするとディレクトリも得られる
        for file in files:
            yield os.path.join(root, file)
        
if __name__ == "__main__":
    path_directory = "SAMPLE"
    for file in find_all_files(path_directory):
        print(file)

treeコマンドのようにファイルを取得できる.
os.walk()とos.path.join()は始めて知った.
os.path.join(path_directory, name_file)でpath_directory + "/" + name_fileとしてくれるようだ.
普段

path ="aaaa"
for file in os.listdir(path):
    path_file = path + "/" + file

とファイルのpathを取得していたためこれは少し感動.
さらにwindowslinuxの"\\"と"/"の違いも一々気にする必要なさそうで便利!

参考
https://qiita.com/suin/items/cdef17e447ceeff6e79d

【振り返り】 2018.01.07(Sun) - 2018.01.14(Sun) 振り返り

TeXの参考文献でURLを表示

_や~でエラー回避するため


Pythonのround



GPUサーバーでpyenv作った

shellがbashではなくcsh系だったので, 慣れていなかったけどなんとか作れた.




StarGANを試した








気になった記事















【振り返り】 2017.12.31(Sun) - 2018.01.07(Sun) 振り返り

大晦日のテレビ番組

大晦日は実家に返っていたためTVを観た. しかし, しばらくTVというものを観ていなかったためどの局もつまらなく感じた. 昼にやっていた探偵ナイトスクープの総集編と, K-1のミルコ戦だけは観た.
ミルコが瞬殺していた. Abemaで朝青龍を押し出したら1000万円がやっていた. ボブサップのインタビューがカットされたのが不穏だった. まあまあ面白かった.




新年

特に祝とかはなく, VirusTotalでラベル付をずっとしていた. 墓参りのついでに地元の観光地, 常連の滝に行った. 思っていた以上に他県ナンバーの車で賑わっていた.




沼津に魚食べに行った

せっかく伊豆に来たので沼津に魚食べに行った. ここもかなり混んでいた. 味はかなり美味しかったが, その分高かった. 3000円くらい.


今年の運勢

くいなちゃんさんが作ったおみくじで大凶だった. 大変めでたい. (F12で編集したなんて言えない)



VirusTotalによるラベル付け終わり

Virus Total APIによるmalware判定が終わった. かなり大変だった. Androidアプリの各ベンダのスキャン数のグラフを作った.


f:id:umashika5555:20180107033044p:plain

アパートに帰った

東名が混んでいたので246を使った. 思った以上にコンビニとか無かった. 246もまあまあ混んでいたが車で4時間くらい.


卒論死亡

Virus Total全ベンダの検知結果を統合すると, falase positiveが多いベンダがあるのか, 思った以上に結果が現れなかった. 卒論提出まで1ヶ月を切っているのにこれはツライ.






松尾研の講座落ちた

楽しみにしていたが落ちた. まあ卒論あるし良かったのかもしれない……


地獄先生ぬ~べ~

Abemaで地獄先生ぬ~べ~が始まった. こち亀と合わせて, 今期はこれらで凌げそう.


GA

某実験でGAを使うことになった. 2年前のこの時期くらいに勉強しておいてよかった.

興味深いツイートたち












【振り返り】 2017.12.24(Sun) - 2017.12.31(Sun) 振り返り

Jupyter Notebook印刷の心得

用紙を横向きに印刷するとキレイに印刷できることに気づいた.


卒論に関して

実験で使っているアンチ・ウイルスソフトがwebの脅威しか検知しなく, システムの脆弱性を狙ったようなマルウェアが検知されにくかった.
このためマルウェア検知の実験を一からVirusTotalでやり直すことを決意した.


Virus Totalに関して

4 request/ min という制約により1 requestあたり15秒ほど間隔を開けて処理する必要がある. サーバーに負担をかけないようにクライアントで調整する必要がある. 有料版欲しい.


Virus Totalに関して

某ファイルを数千件検知にかけたところ, cyber社のアンチウイルスソフトが(falase positiveも含めて) 最も検知してくれた. 自分が使っていたアンチウイルスソフトより遥かに性能が良いように感じた. その他にもTrustlookなどの製品も良かった.



コミケの日間違えた

コミケ1日目を間違えた. そのまま上野で観光した. 上野の不忍池で中国人っぽい団体に英語で話しかけられたけど, 英語で対応できた. 一年前に大学でインド人っぽい人に話しかけられたときは吃ってしまったので成長を感じた.





実家でLoLやったらキャリーできた

ネトゲPingはやっぱり大事. アカリで17キル取れた. chokudaiさんからリプを頂いた.



来年の目標

来年は休学することを決めているので家で引きこもって勉強に励みたい. 趣味の歩きも頑張りたい.



あとで読む