目前分類:google Cloud platform (11)

瀏覽方式: 標題列表 簡短摘要

(1) 要先安裝 nvm (Node Version Manager) 用來管理多個 Node.js 版本

Linux 開發者
執行以下其中一個既可

  • curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash
  • wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash

(2) nvm -version  測試版本

nvm 常用指令

指令 說明
nvm install [version] 安裝 Node.js 的 [version] 版本
nvm uninstall [version] 移除 Node.js 的 [version] 版本
nvm ls 列出 Local 所有的 Node.js 版本
nvm ls-remote 列出 Remote 所有的 Node.js 版本
nvm alias default [version] 指令以後預設啟用的 Node.js 版本
nvm use [version] 使用 [version] 版本,但不更改預設啟用的版本

(3)用 nvm 安裝 node.js
    3.1 請使用 $nvm install <version> 安裝 node.js 版本,這些版本會實際放在 /usr/local/n/資料夾
    3.2  nvm install v12.11.1 
    3.3  node -v 
           (base) kktxt1103@host1:~$ node -v
           v12.11.1
    3.4  利用上面的指令管理node.js 的版本

(4) 安裝 NPM
NPM 是 Node Package Manager 的簡稱,它是一個線上套件庫,可以下載各式各樣的 Javascript 套件來使用。

⚠️Node.js已經內建npm.

npm -v 檢視版本。

npm help 檢視幫助

npm help <command> 檢視具體命令幫助

npm search <套件名字>, 例子:npm search coffee-script, 會在螢幕上顯示結果列表。
npm install <套件名字>, 安裝到當前目錄下的node_modules資料夾內。
   例如:npm install jquery ,來完成安裝 jquery。

全域性安裝global:

npm install -g <套件名字>, 告訴npm這次安裝在整個機器上,而不是當前的程式。

npm view <command | 包的名字>  , 檢視註冊資訊。

安裝套件的位置

每個用 npm 安裝的套件,一律放在 node_modules 資料夾裡,以剛剛安裝的 jquery 來說,我們可以在 node_modules/jquery/dist/jquery.min.js 找到 最小化的 jquery 的版本。

 

 

NPM 指令 / Yarn 指令 說明
npm init / yarn init 初始化,會產生 package.json ( 可以參考 官網說明)
npm install / yarn install 安裝 package.json 設定的 packages
npm install [package] / yarn add [package] 安裝 [package] ; NPM 後面加 --save ( Yarn 不必加 ) 、 --save-dev ( Yarn 是 --dev ) 會存入 package.json 裡,加 -g 則安裝到全域 ( Yarn 則是 yarn global add [package] )
npm uninstall [package] / yarn remove [package] 移除 [package] ,後面一樣可以加 --save--save-dev-g
npm update / yarn upgrade 更新 Local 的所有 Packages

註:若想了解更多 package.json 的設定可以到 官網

(5) NPX

npx 是什麼?

npm v5.2.0引入的一條命令(npx),引入這個命令的目的是為了提升開發者使用包內提供的命令列工具的體驗。

舉例:使用create-react-app建立一個react專案。

老方法:

npm install -g create-react-app
create-react-app my-app

npx方式:

npx create-react-app my-app

這條命令會臨時安裝 create-react-app 包,命令完成後create-react-app 會刪掉,不會出現在 global 中。下次再執行,還是會重新臨時安裝。

npx 會幫你執行依賴包裡的二進位制檔案。
 

(6) 
npx create-react-app my-app //利用npx create-react-app 建構專案 

cd my-app // 移動至專案目錄下

 

 

 

 


 

stanley 發表在 痞客邦 留言(0) 人氣()

參考資料: http://tw.gitbook.net/sqlite/sqlite_python.html

此網站用來快速查詢SQLlite3的各種指令及用法,這不是資料庫教學,
我是假設讀者是熟知資料庫的語法及運作

(1) SQLlite 安裝
  conda install -c anaconda sqlite
(2)  資料庫管理

$sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

(3) 各種重要的 SQLite 點命令,如下:

命令 描述
.backup ?DB? FILE Backup DB (default "main") to FILE
.bail ON|OFF Stop after hitting an error. Default OFF
.databases List names and files of attached databases
.dump ?TABLE? Dump the database in an SQL text format. If TABLE specified, only dump tables matching LIKE pattern TABLE.
.echo ON|OFF Turn command echo on or off
.exit Exit SQLite prompt
.explain ON|OFF Turn output mode suitable for EXPLAIN on or off. With no args, it turns EXPLAIN on.
.header(s) ON|OFF Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.indices ?TABLE? Show names of all indices. If TABLE specified, only show indices for tables matching LIKE pattern TABLE.
.load FILE ?ENTRY? Load an extension library
.log FILE|off Turn logging on or off. FILE can be stderr/stdout
.mode MODE Set output mode where MODE is one of:
  • csv Comma-separated values

  • column Left-aligned columns.

  • html HTML <table> code

  • insert SQL insert statements for TABLE

  • line One value per line

  • list Values delimited by .separator string

  • tabs Tab-separated values

  • tcl TCL list elements

.nullvalue STRING Print STRING in place of NULL values
.output FILENAME Send output to FILENAME
.output stdout Send output to the screen
.print STRING... Print literal STRING
.prompt MAIN CONTINUE Replace the standard prompts
.quit Exit SQLite prompt
.read FILENAME Execute SQL in FILENAME
.schema ?TABLE? Show the CREATE statements. If TABLE specified, only show tables matching LIKE pattern TABLE.
.separator STRING Change separator used by output mode and .import
.show Show the current values for various settings
.stats ON|OFF Turn stats on or off
.tables ?PATTERN? List names of tables matching a LIKE pattern
.timeout MS Try opening locked tables for MS milliseconds
.width NUM NUM Set column widths for "column" mode
.timer ON|OFF Turn the CPU timer measurement on or off

(4) 格式化輸出的方式在本基礎教程中,以下已經列出:

sqlite>.header on
sqlite>.mode column
sqlite>.timer on
sqlite>

(5) Create Table

sqlite> CREATE TABLE DEPARTMENT(
   ID INT PRIMARY KEY      NOT NULL,
   DEPT           CHAR(50) NOT NULL,
   EMP_ID         INT      NOT NULL
);

列出Tables

 
 
sqlite>.tables
COMPANY     DEPARTMENT

Table  schema:

sqlite>.schema COMPANY
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Insert Table 

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );

Select Table 

SELECT * FROM table_name;

下面是python 程式的寫法

Create Table 

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);''')
print "Table created successfully";

conn.close()

Insert 或update delete Table 

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) 
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

conn.commit()
print "Records created successfully";
conn.close()

Select  Table 

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "
"

print "Operation done successfully";
conn.close()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

stanley 發表在 痞客邦 留言(0) 人氣()

conda命令是管理在安裝不同package時的主要介面,使用conda時,你可以進行建立(create)、輸出(export)、列表(list)、移除(remove)和更新(update)環境於不同Python版本及Packages,同時也可以分享你的虛擬環境。

conda –V

conda update conda  

conda env list     -  看目前系統已經安裝幾個虛擬環境

conda create --name myenv python=3.7 - 建立一個叫做myenv的虛擬環境,並且是安裝python 3.7的版本  

source activate myenv  - 啟動一個新的虛擬環境

conda list - 虛擬環境中已經先安裝了那些東西

conda install -c conda-forge dash  -在虛擬環境中安裝Dash 套件

pip freeze > requirements.txt 

gcloud app deploy app.yaml -開始安裝google App Engine

pip install --upgrade pip -在過程中有錯誤需要uppdate pip 

pip install gunicorn -在過程中有錯誤需要安裝 gunicorn

再次執行gcloud app deploy app.yaml

gcloud app browse - 需要一段時間才會成功,成功後執行這指令
 

To view your application in the web browser run: $ gcloud app browse
(myenv) kktxt1103@host1:~/Dash$ gcloud app browse
Did not detect your browser. Go to this link to view your app:https://analytical-poet-25330门-6.appspot.com

source deactivate  -離開虛擬環境

conda remove --name myenv numpy  - 刪除虛擬環境或package

conda env remove --name myenv  - 刪除整個虛擬環境

整個程式如下,需要三個檔案, requirments.txt 利用pip產生的

(myenv) kktxt1103@host1:~/Dash$ ls -lt
total 16
-rw-rw-r-- 1 kktxt1103 kktxt1103 636 Sep 24 06:24 main.py
-rw-rw-r-- 1 kktxt1103 kktxt1103 330 Sep 24 06:16 requirements.txt
-rw-rw-r-- 1 kktxt1103 kktxt1103 107 Sep 23 11:50 app.yaml

#-------------------------------------------------------
(myenv) kktxt1103@host1:~/Dash$ more app.yaml
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:server
runtime_config: 
   python_version: 3
#---------------------------------------------------------
(myenv) kktxt1103@host1:~/Dash$ more main.py
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
server = app.server
colors = {
    'background': '#111111',
    'text': '#7FDBFF'
}
#---------------------------------------------------------
(myenv) kktxt1103@host1:~/Dash$ more requirements.txt
certifi==2019.9.11
Click==7.0
dash==1.3.0
dash-core-components==1.2.0
dash-html-components==1.0.1
dash-renderer==1.1.0
dash-table==4.3.0
Flask==1.1.1
Flask-Compress==1.4.0
future==0.17.1
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
plotly==4.1.1
PyYAML==5.1.2
retrying==1.3.3
six==1.12.0
Werkzeug==0.16.0

 

 

 

 

 

 

 

stanley 發表在 痞客邦 留言(0) 人氣()

這篇文章在GCP中建立miniconda 

(1) Installing miniconda

First, we start and connect to VM instance via ssh 連線下的 查看gclound 指令

再執行下面的指令

  • bzip2 , to install Mini/Anaconda
  • libxml2-dev, to install further Python libraries
$ sudo apt-get update
$ sudo apt-get install bzip2 libxml2-dev$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ bash Miniconda3-latest-Linux-x86_64.sh
$ rm Miniconda3-latest-Linux-x86_64.sh
$ source .bashrc
$ conda install scikit-learn pandas jupyter ipython 

再檢查版本

$ python --version
$ which python
$ which conda
$ conda list conda$

結果如下:

再檢查目前己安裝之套件

$ conda list

 

 

 

stanley 發表在 痞客邦 留言(0) 人氣()

 

資料來源:  https://kylinyu.win/sre-workshop1-gcp-vm-server/

https://cloud.google.com/compute/docs/tutorials/basic-webserver-apache?hl=zh-tw

(1) Connect to VM 

$ sudo apt-get install apache2 
$ sudo service apache2 restart

sudo apt-get upgrade

https 要改成http 
您正嘗試以 https 位址存取 VM。請確認您的網址是 http://[EXTERNAL_IP] 而非 https://[EXTERNAL_IP]

(2)

stanley 發表在 痞客邦 留言(0) 人氣()

資料來源:  https://blog.uccloud.com.tw/2018/10/28/%E9%83%A8%E7%BD%B2-django-2-%E8%87%B3-app-engine-2nd-%E6%A8%99%E6%BA%96%E7%92%B0%E5%A2%83%E6%95%99%E5%AD%B8/

https://cloud.google.com/python/django/?hl=zh-tw (官方網站)

Django 是知名的 python 網站應用程式框架,功能完整、社群活耀、提供開發者良好的基石,知名的應用程式如:Instagrm、Spotify、Youtube、Dropbox 都採用 Python + Django。

透過 Google Cloud Platform 託管 Django 的方法可分為:VM(虛擬主機)、Container(容器)、Serverless(無伺服器),本篇教學是 Serverless,使用最新的 App Engine 第二代標準環境,把所有主機維運的重擔全部交給 Google。開發與部署都在 Cloud Shell 中完成,只需瀏覽器就可以學習,也適合想學習 Django 成為後端軟體工程師的人。

Google App Engine 是 Google Cloud Serverless 雲端服務,讓開發者專注程式而非維運主機,共有三種環境:標準環境(第一代、第二代)與彈性環境。最新的第二代標準環境是具有容器特性的沙盒,融合第一代標準環境與彈性環境的優點:

  1. 開發者可以用慣用的 python 開發程序。
  2. 幾乎瞬間的擴展以應付瞬間的大流量,彈性環境則適合流量平穩的網站。
  3. 每日免費額度,流量不大幾乎不用錢。
  4. 自訂網址和免費代管的 SSL 憑證提供 HTTPS 連線。
  5. 檔案系統與網路存取等,詳情:https://cloud.google.com/appengine/docs/standard/appengine-generation

另外,第一代標準環境支援 python 2.7,僅適用 Django 1.11。第二代標準環境支援 pyhton 3.7,可以使用最新的 Django 版本(本文撰寫時為 2.1.2 版)。
 

區域選擇

同時考慮 App Engine 與 第二代 Cloud SQL 支援的區域,本篇選擇 asia-east2 (香港)。

為了降低延遲,建議 App Engine 與 Cloud SQL 選同一區域,以下是服務支援區域查詢網址:
App Engine:https://cloud.google.com/appengine/docs/locations
Cloud SQL:https://cloud.google.com/sql/docs/mysql/locations

開始前,建立一個全新專案並啟動 Cloud Shell

建立 MySQL 資料庫

我們使用 MySQL 作為本範例的資料庫後端。在 Cloud SQL 建立一個 MySQL 實例,命名為 django,在 Cloud Shell 下輸入:

gcloud sql instances create django \
     --activation-policy=ALWAYS \
     --region=asia-east2 \
     --tier=db-n1-standard-1

測試用途可以改用 db-f1-micro 或 db-g1-small 取代 db-n1-standard-1 以減少支出,正式環境則不建議。接著建立資料庫,命名為 djangodb

$ gcloud sql databases create djangodb --instance django

設定 root 密碼:

$ gcloud sql users set-password root \
     --host=% \
     --instance django \
     --password=p@ssw0rd # 請修改為自己的密碼

為開發環境準備 Cloud SQL Proxy

為了要在 Cloud Shell 中連線到上述建立的 MySQL 資料庫,Google 提供一個 Cloud SQL Proxy 程式提供簡單而且安全的連線方式。

首先,新增一個連線階段分頁:

add_session
開啟一個新的連線階段分頁

下載 cloud_sql_proxy 程式:

$ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
$ chmod +x cloud_sql_proxy

之後啟動指如下:(請修改 YOUR_PROJECT_ID 為您的專案ID)

$ cloud_sql_proxy -instances=YOUR_PROJECT_ID:asia-east2:django=tcp:3306

出現 Ready for new connections 提示則代表已準備就緒。讓這個分頁保持開啟,回到原本的連現階段分頁,繼續接下來的教學。

詳細 Cloud SQL Proxy 請參考此說明頁面:https://cloud.google.com/sql/docs/mysql/sql-proxy

建立 App Engine 服務

為專案啟用 App Engine 服務,只能執行一次,區域必須慎選,無法再修改。建議要與資料庫同一個區域以降低延遲。

$ gcloud app create --region=asia-east2

建立 pyhton 虛擬環境

建立虛擬環境,指定 pyhton3,目錄命名為 django2-gae2

$ virtualenv -p python3 django2-gae2

啟動虛擬環境,並且在這個環境中安裝 Django 與 PyMySQL 套件

$ source django2-gae2/bin/activate
(django2-gae2) $ pip install Django
(django2-gae2) $ pip install PyMySQL

確認 Django 模組已經安裝正確版本

(django2-gae2) $ python -m django --version
2.1.2

開始建立 Django 專案

使用 django-admin 指令建立一個全新 Django 專案,命名為 mysite,並切換到專案目錄

(django2-gae2) $ django-admin startproject mysite
(django2-gae2) $ cd mysite
(django2-gae2) ~/mysite $

接下來,需要建立與修改檔案,可用你熟悉 vim 等文字編輯指令,或更簡單的方法是透過  Cloud Shell 提供的線上編輯器:

code editor
開啟文字編輯器

Cloud Shell  Editor.png

在專案目錄下建立一個 app.yaml 檔,內容為:

runtime: python37

handlers:
- url: /static
  static_dir: static/

- url: /.*
  script: auto

針對 Python 3.7 的 app.yaml 設定參考頁面: https://cloud.google.com/appengine/docs/standard/python3/config/appref

在專案目錄下建立一個 main.py 檔,內容為:

from mysite.wsgi import application
app = application

App Engine 預設會搜尋根目錄下的 main.py 檔案中的 app 變數,視為 WSGI 相容物件,也就 Django 網站程式的介面。

修改 Django 專案設定檔 mysite/settings.py

# 安全提醒!App Engine 有足夠的安全可以這樣設定,如果採用別的環境請謹慎設定。
ALLOWED_HOSTS = ['*']
 .
 .
 .
# 註解原本 DATABASES 定義
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }
import pymysql
pymysql.install_as_MySQLdb()
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangodb',
        'USER': 'root',
        'PASSWORD': 'p@ssw0rd', #修改為您的密碼
        'PORT': '3306',
    }
}
DATABASES['default']['HOST'] = '/cloudsql/YOUR_PROJECT_ID:asia-east2:django'
if os.getenv('GAE_APPLICATION', None):
    pass
else:
    # 開發環境中透過 Cloud SQL Proxy 連線到資料庫
    DATABASES['default']['HOST'] = '127.0.0.1'
 .
 .
 .
# 加入這個變數,指定靜態媒體檔目錄
STATIC_ROOT = 'static'

執行到這,專案的檔案目錄結構會像這樣:

mysite/
    app.yaml
    main.py
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

再下幾個指令就完成了,初始化資料庫:

(django2-gae2) ~/mysite $ python manage.py makemigrations
(django2-gae2) ~/mysite $ python manage.py migrate
在第一個步驟發生mysqlclient 版本過舊的問題
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
但更新mysqlclient時仍會出現錯誤 
解決方式: (1)sudo apt-get install libmysqlclient-dev
         (2)sudo apt-get install python-dev
         (3)pip install mysqlclient  

 

 

你可以在 Cloud SQL Proxy 分頁看到有新的連線進來的提示訊息

資料庫管理是 Django 一大重點,開發者只需要定義 Model,其他就交給 Django。如果Model 有變動,例如:字串長度增加或增加一個屬性,Django 都會自動幫你『遷移』。

建立 Djanog admin 第一個管理員:

(django2-gae2) ~/mysite $ python manage.py createsuperuser

蒐集靜態媒體檔案到 ‘static’ 這個目錄:

(django2-gae2) ~/mysite $ python manage.py collectstatic

這個指令會參考上述 settings.py 中的 STATIC_ROOT 的值,同時 app.yaml 也指定 /static 對應的靜態檔案目錄,讓 App Engine 來服務靜態檔案。

啟動開發伺服器

(django2-gae2) ~/mysite $ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
October 27, 2018 - 17:07:02
Django version 2.1.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/ #點擊此連結瀏覽開發網站
Quit the server with CONTROL-C.

開啟頁面後會看到預設的 Django 頁面,Django Admin 網址在 /admin/ 這個路徑下登入。如果你是 Django 的新手,接下來可以按照官方教學完成經典的 Polls 投票 app:https://docs.djangoproject.com/en/2.1/intro/tutorial01/#creating-the-polls-app

部署應用程式

(django2-gae2) ~/mysite $ pip freeze > requirements.txt
(django2-gae2) ~/mysite $ gcloud app deploy

如果一切順利,你的網站就在這個網址中運作 https://YOUR_PROJECT_ID.appspot.com。

結語

本編教學展示了以慣用的 python 開發程序部署 Django 到 App Engine 第二代標準環境。Serverless 雲端服務、功能完整的 Django 框架和豐富的 python 套件成為支撐您的應用程式的強大基石。

 

stanley 發表在 痞客邦 留言(0) 人氣()

股票基本常識

股票市場

  • 初級市場:又稱「發行市場」,資金需求者(包括政府單位、金融機構及公民營企業)為籌集資金,出售有價證券給最初購買者之發行市場
  • 次級市場:又稱「流通市場」,是初級市場發行後之有價證券買賣的交易市場。我們平常所看到的股價與交易資訊大多來自次級市場

交易所

在台灣處理股票的單位叫做「台灣證券交易所」股份有限公司,成立為1961年10月3日。

  • 交易時間:星期一到星期五的 09:00 ~ 13:30。
    • 休假停市日除經過特別公告外,與金融業的例行假日相同
    • 台北市宣布停止上班上課時,則台灣証券交易所休市

市場概況

資料來源1
台灣證券交易所
證券櫃買賣中心 - 上櫃
證券櫃買賣中心 - 興櫃

公開發行公司 上市公司 上櫃公司 興櫃公司
數量 920 763 257
市值 285,972.81(億元) 2,607,551(佰萬) 510,665(佰萬)

股票的歷史資料

用套件抓取某個股票的歷史資料時,格式通常會如下

日期 最高價High 最低價Low 開盤價Open 收盤價Close 成交量Volume 調整後收盤價Adj Close
2015-01-05 140.5 137.5 140.5 139.5 32046000.0 121.474525

股票的價格取決於競標的形式。
開盤價:指的是9點開盤之前,把每一個股票買賣當量做統計所訂出的價格。
收盤價:股票收盤之前,把每一個股票買賣當量做統計所訂出的價格。
日報酬率:把前一天的收盤價和今天的收盤價做比較。

關於投資幾個數學常識

  1. 關於收益率
    假設你投資現金有10萬,第一個月收益100%,資金到達20萬,但第二個月損失50%,資金卻會跌回10萬
    結論是虧損比賺錢容易
  2. 關於漲跌停
    假設你股票有10萬,有以下兩種情況
    (1). 第一天漲10%,第二天跌10%。
    (2). 第一天跌10%,第二天漲10%,不管是哪一種資金最後都是9.9萬。
    結論是漲跌不管前後餘額都一樣
  3. 關於波動性
    假設你股票有10萬,第一年賺40%,第二年賠20%,第三年賺30%,第四年賠20%,第五年賺50,第六年賠20%
    波動性大的股票,年報酬率有時候還會輸績優股
    4. 每天只賺1%
    假設你股票有50萬,每天只賺1%,一年會有250個交易日
    就算每次報酬只有1%,但只要穩定投資,也可以成長為大資本
    5.投資組合
    假設你股票有100萬,投資以下組合 無風險資產A(每年5%),高風險資產B(每年-20%~40%),投資80萬到A,20萬到B
    最好的年報酬率可以到0.12,最差就攤平,這就是保本基金CPPI技術的雛形。
    6. 關於做空
    做空最大的收益率就是100%,前提是這支股票下市,但做多的收益率是沒有上限的,因此不要永遠的做空。除非你不相信人類社會會前進。
    7.K線圖:
    根據股價一天走勢的 4 個價位:開盤價、收盤價、最高價、最低價繪製而成。開盤價與收盤價,會構成 K 線的實體(Body),最高價、最低價分別成為上影線(Shadow)及下影線。如果收盤價高於開盤價,Body 為紅色;收盤價低於開盤價,Body 為黑色或是綠色。
    8. 股票殖利率
    股票殖利率=現金股利÷股價

    股票殖利率的公式有沒有覺得似曾相似?對,就是和我們常見的「投資報酬率」雷同!
    投資報酬率公式如下:
    投資報酬率=獲利÷本金
    再白話一點的解釋,股票殖利率就是:你買這檔股票,會得到多少%的股息。

    那麼,股價每天都在變動,要以那一天的股價來計算呢? 

    一、若你已經買股票了,要計算自己的殖利率,

    當然是用你買進時的股價來計算。

    二、若你還沒買股票,想知道過去每年的殖利率,

    一般是用除息前一天的收盤價來計算。

     

    下面以2015年現金股利殖利率排名前三名的總太(3056),範例說明殖利率的算法。

     

總太(3056)
2015年的現金股利除息日 2016/06/30
2015年的現金股利 2.5元
我於2016/06/02買入價 15.50元
除息前一天(2016/06/29)的收盤價 17.35元

 

若在2016/06/02以15.50元購入1股總太,

殖利率=2.5元÷15.50元=16.13%

 

若未買入,則以除息前一天的收盤價來計算,

殖利率=2.5元÷17.35元=14.41%

 

股票分析的過程

使用python來分析真實世界的財經資料

  1. 股票的資料:通常是csv檔案
  2. 資料的分析:統計模型
  3. 視覺化資料:將資料轉換成圖表

個抓取股票的套件,有兩個套件可以取得歷史資料。之後還要找抓取綜合損益表和資產負債表的文章。

  1. twstock      (請參考twstock 文件系統)
  2. pandas-datareade
  3. Ta-lib:python套件,專門用來計算金融技術指標。
  4.  

 

認識 BestFourPoint
BestFourPoint 四大買賣點判斷來自 toomore/grs 之中的一個功能, 透過四大買賣點來判斷是否要買賣股票。四個買賣點分別為:
量大收紅 / 量大收黑
量縮價不跌 / 量縮價跌
三日均價由下往上 / 三日均價由上往下
三日均價大於六日均價 / 三日均價小於六日均價

參考資料: 
使用 Python 資料分析和視覺化上市櫃公司薪資公開資料
財報分析入門筆記
文藝型開發者

 

 

 

stanley 發表在 痞客邦 留言(0) 人氣()

我的需求及目標如下
(1)Python爬蟲程式環境及上傳程式
(2)在GCP執行Python爬蟲程式
(3)設定自動排程每日執行

 

使用爬蟲程式注意事項

1. 進行網絡抓取時請仔細閱讀數據合法使用聲明。通常情況下,您抓取的數據不能商用。
2. 您的程序不要過於頻繁的向網站發出數據請求(也被稱為垃圾請求),這種做法可能會使網站列為黑名
    單。 所以對一個網站每數秒後才進行一次數據更新是比較好的做法,我們要使程式的行為與人類的行為相
    似。
3. 網站佈局時間會變化,所以要時常重新訪問網站,如果需要的話,先檢查網站更新時間。

(1)Python爬蟲程式環境及上傳程式
      sudo pip install BeautifulSoup4
       用pip list 確定版本及套件

(2)  上傳python 程式, py 格式要用UFT-8

(3) 撰寫擷取 yahoo 頭條新聞簡單程式

import requests
from bs4 import BeautifulSoup

# 下載 Yahoo 首頁內容
r = requests.get('https://tw.yahoo.com/')

# 確認是否下載成功
if r.status_code == requests.codes.ok:
  # 以 BeautifulSoup 解析 HTML 程式碼
  soup = BeautifulSoup(r.text, 'html.parser')

  # 以 CSS 的 class 抓出各類頭條新聞
  stories = soup.find_all('a', class_='story-title')
  for s in stories:
    # 新聞標題
    print("標題:" + s.text)
    # 新聞網址
    print("網址:" + s.get('href'))

 

(4) 程式結果:

 

(5)在GCP上設定Crontab自動排程Python程式

  • 輸入crontab -l 可以查看目前有在GCP排程的程式
  • 輸入crontab -r 可以刪除所有在GCP排程的程式
  • 輸入crontab -e 可以編輯目前正在GCP上排程的P程式
代表意義 分鐘 小時 日期 月份 指令
數字範圍 0-59 0-23 1-31 1-12 0-7 指令

 

特殊字符 代表意義
*(星號) 代表任何時刻都接受的意思!舉例來說,範例一內那個日、月、週都是 * , 就代表著『不論何月、何日的禮拜幾的 12:00 都執行後續指令』的意思!
,(逗號) 代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:
0 3,6 * * * command
時間參數還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!
-(減號) 代表一段時間範圍內,舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工作:
20 8-12 * * * command
仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!
/n(斜線) 那個 n 代表數字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:
*/5 * * * * command
很簡單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!

stanley 發表在 痞客邦 留言(0) 人氣()

完整官方文件 https://cloud.google.com/python/setup?hl=zh-tw
 

目標(針對Linux)

  • 安裝 Python 2 和 3 的最新版本。
  • 安裝並使用 virtualenv
  • 安裝編輯器 (選用)。
  • 安裝 Cloud SDK (選用)。
  • 安裝 Python 適用的 Cloud 用戶端程式庫 (選用)。
  • 安裝其他實用工具。

 

安裝 Python 2 和 3 的最新版本

 (1) 大部分的 Linux 發行版都有包含最新版本的 Python。

  1. 如要在 Linux 環境中安裝 Python 2 和 3,請根據您使用的發行版,安裝適用的套件。以 Debian 和 Ubuntu 而言,適用的套件為 pythonpython-devpython3  python3-dev

    請使用下列指令安裝這些套件:

    sudo apt update
    sudo apt install python python-dev python3 python3-dev
     
    sudo apt update
    sudo apt install python python
    -dev python3 python3-dev
  2. 您也需要安裝 pip。雖然 Debian 和大部分其他的發行版都會包含 python-pip 套件,但我們建議您親自安裝 pip 以取得最新版本:

    wget https://bootstrap.pypa.io/get-pip.py
    sudo python get-pip.py
     
    wget https://bootstrap.pypa.io/get-pip.py
    sudo python get-pip.py
  3. 安裝完畢後,請確認已安裝 pip

    $ pip --version
     
    $ pip --version

    輸出畫面會顯示 /usr/local/lib/python2.7/dist-packages (Python 2.7) 中的版本。您安裝的 pip 版本可能高於此處顯示的版本。

     pip 19.2.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
  4. pip list 列出目前安裝的套件

安裝並使用 virtualenv

virtualenv 工具可用來建立獨立的 Python 環境。這類獨立的環境可擁有單獨的 Python 套件版本,方便您把不同專案的依附元件區隔開來。建議您用 Python 在本機開發時,一律分別使用各專案的虛擬環境。

  1. 全域安裝 virtualenv

    MACOS

    WINDOWS

    LINUX

    如要透過 Python 2 或 Python 3 安裝 pip,請使用 pip install --upgrade virtualenv

  2. 安裝 virtualenv 之後,您就可以在專案中建立虛擬環境。virtualenv 會在 env資料夾中建立整個 Python 安裝的虛擬副本。

    MACOS

    WINDOWS

    LINUX

    利用 --python 標記讓 virtualenv 知道該使用的 Python 版本:

     
     
    cd your-project
    virtualenv
    --python python3 env
  3. 副本建立之後,請根據以下指令啟用虛擬環境,將您的殼層設為使用 Python 的 virtualenv 路徑:

    MACOS

    WINDOWS

    LINUX

     
     
    source env/bin/activate
  4. 現在您可以安裝套件,且不會影響其他專案或是全域 Python 安裝:

    pip install google-cloud-storage
     
    pip install google-cloud-storage

    如果要中止使用虛擬環境並返回全域 Python,您可以直接停用:

    deactivate
     

安裝編輯器 (選用)

您需要編輯器,才能開發 Python 應用程式。以下列出幾個較為熱門的編輯器 (順序不代表熱門程度):

安裝 Cloud SDK

Cloud SDK 是 Google Cloud Platform (GCP) 適用的一套工具,您可以使用這套工具所包含的 gcloudgsutil  bq,透過指令列存取 Compute Engine、Cloud Storage、BigQuery 及其他產品和服務。您可以交互執行這些工具,或是在自動化指令碼中執行這些工具。

安裝 Python 適用的 Cloud 用戶端程式庫

JetBrains 的 Python 適用的 Cloud 用戶端程式庫是 Python 開發人員整合 GCP 服務 (如 Cloud Datastore 和 Cloud Storage) 所用的方式。如要安裝個別 API 的套件 (如 Cloud Storage),請使用類似以下的指令:

pip install --upgrade google-cloud-storage
pip install --upgrade google-cloud-storage

  pip install --upgrade google-cloud-storage

後續步驟

 

stanley 發表在 痞客邦 留言(0) 人氣()

(1) Create windowns 2019 server VM
     change user password
(2) install Anaconda
(3) conda install -c conda-forge dash
(4) conda install -c conda-forge opencv
(4) conda install -c conda-forge  sqlalchemy
(5) conda install -c conda-forge  Cloud Vision
(6) conda install -c conda-forge googlemaps

 

stanley 發表在 痞客邦 留言(0) 人氣()

記錄如何安裝,管理主機,建置APP到程式開發等必須要用的指命及參考手冊

雲端運算產品

(1) VM(虛擬機器)部份

建立和啟動 VM 執行個體

網路

執行開機指令碼

執行關閉指令碼
管理VM

(1)將 VM 遷移至 Compute Engine
 

 

(2) APP 部份 (uploaded your web app into app engin)

(1) 測試伺服器(執行基本 Apache 網路伺服器)
(2) 安裝 Nginx(ubuntu 上 Nginx 介紹,安裝與設定)
      基本的 Nginx 設定檔結構網站所示
      (1) nginx 基礎設定教學
      (2) Nginx筆記(二)Nginx基礎
(3) 啟動及結束 nginx server 

sudo -s 
nginx -t #測試
nginx #啟動 
nginx -s stop #結束
nginx  -s reload  #重新啓動

鍵入 http://extern-IP-address  (不是https)

可以試試看可不可以連線~成功的話就會看到成功的畫面

 

(4) Python Bookshelf 應用程式
 

Bookshelf 應用程式是一個以 Python 編寫的範例網頁應用程式,用於示範如何使用各種 Google Cloud Platform (GCP) 產品,包含:

  • App Engine 彈性環境
  • Cloud SQL
  • Cloud Datastore
  • Cloud Storage
  • Cloud Pub/Sub

Bookshelf 範例應用程式採用 Flask 網頁應用程式架構,但不論您使用哪一個架構,這些概念和技術皆可適用。

您可以使用自選的其他網頁應用程式架構來實作這個應用程式,例如 Django

 

(3) Cloud SDK 元件安裝

gcloud components list  

gcloud components install app-engine-python

cloud components updateERROR: (gcloud.components.update) You cannot perform this action because this Cloud SDK installation is managed by an external package manager.Please consider using a separate installation of the Cloud SDK created through the default mechanism described at: https://cloud.google.com/sdk/

使用這種安裝方式

Apt-get is the way to install the app engine component In a Ubuntu/Debían System.

sudo apt-get update && sudo apt-get install google-cloud-sdk

sudo apt-get install  app-engine-python

以上皆有問題,最後是重新連線glcod shell 就可以使用 gcloud components install app-engine-python

但出現warnning 

WARNING: There are older versions of Google Cloud Platform tools on your system PATH. Please remove the following to avoid accidentally invoking these old tools:

修改 ~/.bash_profile 檔案,把 gcloud 下面的路徑移出:

 /usr/lib/google-cloud-sdk/bin/git-credential-gcloud.sh
/usr/bin/snap
/usr/lib/google-cloud-sdk/bin/gsutil
/usr/lib/google-cloud-sdk/bin/bq
/usr/lib/google-cloud-sdk/bin/gcloud

以上方法皆不行,最後是用了這篇文章的方法才成

https://cloud.google.com/sdk/docs/ <- It's OK

(4) Download the Hello World app

git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/appengine/standard/hello_world

(5)開始HTTP SERVER: SimpleHTTPServer 範例

在本機上建立HTTP SERVER
如要透過 Cloud Shell 指令提示啟動簡易的 Python HTTP 伺服器,請使用下列指令碼:

cd `mktemp -d` \
    && echo '<html><body>Hello World</body></html>' >./index.html \
    && python -m SimpleHTTPServer 8080

(6)Test the application

dev_appserver.py app.yaml

(7) Deploy your app

gcloud app deploy

(8) View your application

To launch your browser and view the app at http://[YOUR_PROJECT_ID].appspot.com, run the following command:

gcloud app browse 

參考資料:

Running Jupyter Notebook on Google Cloud Platform in 15 min
使用網頁預覽功能
Deploying a Python Flask Web Application to App Engine Flexible
Getting Started with Flask on App Engine Standard Environment
Deploying Dash to Google App Engine

Beginner’s Guide to Deploying a Django + PostgreSQL project on Google Cloud’s Flexible App Engine

GCP Day3 安裝Ubuntu桌面與遠端

 

 

 

 

stanley 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼