彷徨うおのこ

ふらふらと さまようおとこの 魂の在処

12/13の日記

8:00 起床、YOUTUBEみる

9:00 出社、メール、勤怠、twitterはてな、Qiitaをチェック

9:30 仕事(自社待機なので自学)開始。PHPとLaravel

12:00 昼休み。本屋で立ち読み。

13~18 PHPの本を購入したのでやる

18:30 帰宅。

19:00 髪を切る。

21:00 家でYOUTUBEの動画でプログラムの勉強。

最近はもっぱら動画で勉強することが多い。

22:00 就寝

 

気づき:

ネルの早い。

ほとんど誰とも話してない。この一週間で話したのは美容室のお姉さんくらい。

アプリが生活に浸透している。

運動を組み込めてない。

 

楽しそうに働くにはどうしたらいいんだろう?

大学でて、働きだしてから3-4年。

はたから見た印象は「苦しそう、楽しくなさそう」に働いているらしい。

そりゃそうだ、実際楽しくないのだから。その楽しくなさをなるべく伝えようとはしていないが、まぁ伝わっているんでしょ。

 

いやな仕事はやめよーぜ、的な後押し動画に後押し記事は数多く世の中にあるけども、それを見ることで救われる自分がいるのは確かだけれども、そのやめた先にも生活が待っているわけで。つーか、金を稼ぐことで生きていかないといけないわけで。

 

なんか学生のときのようなノリと勢いで全押ししていた時期は過ぎたし、なんか楽しくねーな。

今日面白かったこと

[見城徹氏のtwitter]

あと17日で68歳になる。静岡県清水市で生まれ、高校卒業まで小糸製作所静岡工場の社宅で育った。NHKの「わたしが子どもだったころ」に出演したとき、住んでいた社宅を訪ね、その小ささに衝撃を受けた。一生を清水で終わるものだと思っていた。はるか遠くまで来た。僕は何を得て、何を失ったのだろう。

[フミコフミオ氏の洞察]

老害

自分の考えを持っていれば、誰でも老害になりうると気付いたからだ。つまり、老害は自分固有の考えや価値観を持っている証拠ともいえる。自分の考えや価値観が他の世代と合わなければ、結果的に老害扱いされる。

[勝又氏のtwitter]

「動かない動物は人気が出ない」

 

一年の総括

2018年

1月 新しい職場で人工知能の開発

2月 彼女ができた

3月 特になし

4月 クビになりそう

5月 クビ宣告

6月 暗澹たる気持ち

7月 新しい現場、暗すぎて絶望

8月 彼女と別れる

9月 毎日がいや

10月 毎日がいや

11月 うつと診断される、自社にもどる

12月 これを書いてる。疲れた。

UNIX/Linuxの概要

目標:

  • 基本的なコマンド
  • viでの編集
  • ファイル操作/ディレクトリ操作の概念
  • アクセス権の概念
  • ネットワーク設定と他ホストへのリモートログインとファイル転送
  • シェル操作
①概要
UNIX,LINUXのシステムと違いなど。
UNIX/LINUX:OS
OS:基本ソフトウェア。ハードウェアと提供とAPIの提供を行うシステム
API:アプリケーションプログラムインターフェースでソフトウェア開発で使用可能な命令の集合
アプリケーション:共通機能をAPI提供して、開発を効率化
->上記機能を持つことによってコンピュータ操作やソフトウェア開発を大幅に効率化しているシステムの総称。
ex)Windows7/8など。->デスクトップ用とOS
<=>対して業務用のサーバ向けOSであるのがunix/linuxである。
windows_serverなどの製品も存在する。
では、そもそもサーバとは何か?
-------------------------------

12/1について

-今日は7:30に起床。仕事かと思ったら休みだった。
-朝はコンビニで朝食。辛ラーメンに、白米おにぎりをぶちこんだおじや飯が今のはやり。おにぎり食べ過ぎたので1200kcal摂取。
-家でテキストの感情分析の動画を確認+ハーバード大学のCS50のどうがも確認。最近の勉強は本を読むより、動画で学習しながら手を動かすハンズオン形式になっている感覚。
-感情分析のプログラミングを少し実行。少しだけなのでもっと行う必要がある。
-TOEICの教材で勉強。発音、文法。リーディングの確認。英語はエンジニアにとって必須なスキルだと個人的には考えているので勉強。
-英語、プログラミング、経済という三原則を勉強したい。
-本を読みたい。霧-ウラル、中村文則さんの本などね。
-あぷりをかんせいさせなければいけないわー。

本日のやったこと
クラウドPython開発環境構築(cloud9)
1-1:cloud9ログイン(https://c9.io/)
1-2:プロジェクト作成(GUIで操作)
1-3:仮想環境作成
--------------------------
virtualenvの起動
$ virtualenv my_env
$ source my_env/bin/activate

python2->3の切り替え
$ virtualenv my_env --python=/usr/bin/python3.5
起動時の引数追加でOK
--------------------------
②チャート系のPythonアプリケーション作成
2-1:依存関係のインストール
$ pip install dash dash-renderer dash-html-components dash-core-components plotly

2-2:Hello World作成と起動確認
import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

app.layout = html.Div('hello world')

if __name__ == '__main__':
    app.run_server(debug=True)

import dash が読み込めない
原因:
app.runserver(flask)でのデフォルトの起動ポートは8080
対して、cloud9でのデフォルトの起動ポートは8050
なので上記コードではポートがずれているのでエラー。

つまり、起動ポートを指定することで解消。
->
if __name__ == '__main__':
    app.run_server(debug=True)
->
if __name__ == '__main__':
    app.run_server(host='0.0.0.0', port=8080)

2-3:グラフの表示
app.layoutの変更_グラフの表示
app.layout = html.Div(children=[
    html.H1('hello world'),
    dcc.Graph(id='example',
              figure ={
                  'data': [{'x': [1,2,3,4,5], 'y': [5,6,7,2,1], 'type': 'line', 'name': 'boats'}]
              })
    ])
結果
OK
app_layoutの変更_グラフの表示②
    dcc.Graph(id='example',
              figure ={
                   'data': [
                      {'x': [1,2,3,4,5], 'y': [5,6,7,2,1], 'type': 'line', 'name': 'boats'},
                      {'x': [1, 2, 3, 4, 5], 'y': [8, 7, 2, 7, 3], 'type': 'bar', 'name': 'Cars'},
                      ],
                    'layout': {
                        'title': 'Basic Dash Graphs'
                        }
                    })
    ])
結果:
OK

2-4:ユーザーインターフェイスの追加
import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

app.layout = html.Div(children=[
    dcc.Input(id='input', value='Enter something', type='text'),
    html.Div(id='output')
    ])

@app.callback(
    Output(component_id='output', component_property='children'),
    [Input(component_id='input', component_property='value')])
def update_value(input_data):
    try:
        return str(float(input_data)**2)
    except:
        return "some error"
        

if __name__ == '__main__':
    app.run_server(host='0.0.0.0', port=8080)
結果:
OK

2-5:ユーザー入力とデータの連携
①依存関係のインストール
$ pip install pandas pandas-datareader

error:pandasインストール時にエラー
-----------------
  File "", line 17, in

  File "/home/ubuntu/workspace/my_env/build/pandas/setup.py", line 736, in

    packages=find_packages(include=['pandas', 'pandas.*']),

TypeError: find_packages() got an unexpected keyword argument 'include'
-----------------
原因:
https://stackoverflow.com/questions/29477456/find-package-errors-during-installing-package-via-pip/29477720
setuptoolsのバージョンが古く、find_packages()include が未定義
なので、以下のコマンドを実行
$ pip install -U setuptools
------------------
error2:pip install pandas実行時のエラー
#warning "Using deprecated NumPy API, disable it by " \
------------------
pandasのようなPythonのC拡張パッケージは独自でインストールされることはなく、
各種のパッケージのバージョンを正しくupgradeさせておく必要がある。
->以下のコマンドを実行
$ pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs pip install -U
------------------
エラー解消:
pip install pandasではなく、easy-install pandasコマンドにてインストール
------------------
import pandas_datareader.data as web
import datetime

start = datetime.datetime(2015,1,1)
end = datetime.datetime(2018,2,8)

df = web.DataReader('TSLA', 'google', start, end)

print(df.head())
-----------------
error:
pandas_datareader.exceptions.ImmediateDeprecationError: 
Google finance has been immediately deprecated due to large breaks in the API without the
introduction of a stable replacement. Pull Requests to re-enable these data
connectors are welcome.

See https://github.com/pydata/pandas-datareader/issues
------------------
原因:
引数の'google'のAPI仕様が変更となり、
fix-yahoo-financeを使用するようになった。

解決策:
'google'を'iex'に変更したらOK
------------------
(my_env)yasutaka_ono:~/workspace $ python dash-demo.py 
               open     high      low    close   volume
date                                                   
2015-01-02  20.0390  20.2494  19.9998  20.1271  1229939
2015-01-05  20.0194  20.0194  19.7844  19.8334  1083137
2015-01-06  20.0292  20.1467  19.7257  19.8236  2209124
2015-01-07  21.1354  21.2431  21.0179  21.0766  2486293
2015-01-08  21.0766  21.1648  21.0179  21.1060  1296471
(my_env)yasutaka_ono:~/workspace $ 
------------------
各種設定の統合
import dash
import dash_core_components as dcc
import dash_html_components as html

import pandas_datareader.data as web
import datetime

start = datetime.datetime(2015,1,1)
end = datetime.datetime.now()

stock = 'SNE'

df = web.DataReader(stock, 'iex', start, end)

app = dash.Dash()

app.layout = html.Div(children=[
    html.H1('ソニーの株価表示'),
    dcc.Graph(id='example',
              figure ={
                   'data': [
                      {'x': df.index, 'y': df.close, 'type': 'line', 'name': stock},
                      ],
                    'layout': {
                        'title': stock
                        }
                    })
    ])

if __name__ == '__main__':
    app.run_server(host='0.0.0.0', port=8080)
結果:
OK
------------------
各種設定の統合②
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input,Output
import pandas_datareader.data as web
import datetime

app = dash.Dash()

app.layout = html.Div(children=[
    html.Div(children='''
        Symbol Graph:
    '''),
    
    dcc.Input(id='input', value='', type='text'),
    html.Div(id='output-graph')
])

@app.callback(
    Output(component_id='output-graph', component_property='children'),
    [Input(component_id='input', component_property='value')]
    )
def update_graph(input_data):
    start = datetime.datetime(2017,1,1)
    end = datetime.datetime.now()
    df = web.DataReader(input_data, 'iex', start, end)
    
    return dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': df.index, 'y': df.close, 'type': 'line', 'name': input_data},
            ],
            'layout': {
                'title': input_data
            }
        }
    )

if __name__ == '__main__':
    app.run_server(host='0.0.0.0', port=8080)
-------------------
2-6:情報のライブアップデート機能