發表於 程式分享

xcode使用github

1.申請好github帳號

2.XCode Project -> Preferences -> Accounts -> 新增github帳號

3.XCode Project -> Show the source controle navigator -> Create “Project Name" Remote 以設定專案對應至github專案

4.XCode Project -> 改原始檔案內容

5.XCode Project -> Source Control -> Commit

6.XCode Project -> Source Control -> Push 將更新好的原始檔推送至github

 

版控常識

1.Init working directory

2.add

3.commit

4.push

5.pull(非首次) / clone(首次) remote repository

 

發表於 程式分享

Android Studio 新增 版控 github (Mac OS)

1.安裝git
https://git-scm.com/download/mac

2.申請github
https://github.com/

3.申請github ssh key
1) cd /Users/grace/StudioProjects
2) ls ~/.ssh => 若存在,請確認是否可覆蓋
3) ssh-keygen -t rsa (請自行看是否設定密碼) => 產生了id_rsa.pub

4.設定ssh key至git hub上
1) 於github建立Repositories,Ex.Android
2) 至github右上角的Settings -> SSH &GPG keys -> SSH keys
-> Click “New SSH Key" Button -> 貼上id_rsa.pub內文

5.設定android studio使用git版控
1) VCS -> Import into version Control -> Create Git Repositories
-> 設定/Users/grace/StudioProjects
2) Android View -> Project View
3) Control + V -> Commit
4) Control + V -> Push
5) origin設定為git@github.com:[github user]/Android.git

發表於 程式分享

Mac OS 安裝 Tomcat 9

1.下載Tomcat

2.Tomcat安裝
A. 建立 /usr/local 路徑,將解壓縮後的Tomcat 路徑移至/usr/local 路徑
sudo mkdir -p /usr/local
sudo mv ~/Downloads/apache-tomcat-9.0.0.M9 /usr/local

B.建立了一個symbolic link,以後更新時,不用再一一改路徑
sudo rm -f /Library/Tomcat
sudo ln -s /usr/local/apache-tomcat-9.0.0.M9 /Library/Tomcat

C.建立symbolic link的擁有者
sudo chown -R /Library/Tomcat

D.設定Tomcat bin底下所有的shell可被執行的權限
sudo chmod +x /Library/Tomcat/bin/*.sh

E.開啟Tomcat服務
/Library/Tomcat/bin/startup.sh

F.開啟瀏覽器後在在網址上打上 http://localhost:8080

發表於 程式分享

Jupyter notebook於windows 10產生圖表,其文字無法正常顯示

1.於Jupyter notebook執行以下程式碼,圖檔出來的中文字無法顯示

%pylab inline
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
x_labels = ['小', '中', '大']
x = range(len(x_labels))
y = [-3, 0, 3]

plt.scatter(x, y)
plt.xticks(x,x_labels)
plt.tick_params(axis='x', which='major', labelsize=30)

plt.show()

1.PNG

2.解法
1)到google下載字體
路徑: https://www.google.com/get/noto/
Ex.字型檔 Noto Serif CJK TC

2)將字體放到matplotlib的字體套件資料夾
其路徑可在Jupyter notebook執行以下指令查找到matplotlib的路徑

  import matplotlib
  print(matplotlib.__file__)

1

再找到其路徑下的matplotlib\mpl-data\fonts\ttf 將1)下載的字體放入
1.PNG

3)清除快取檔案
刪除 C:\Users[登入PC帳號].matplotlib\fontList.json
1

4)Juypter notebook重新import matplotlib

import matplotlib.pyplot as plt

5)於Jupyter notebook調整程式碼

%pylab inline
import matplotlib.pyplot as plt

#換成新下載的字體
plt.rcParams['font.sans-serif'] = ['Noto Serif CJK TC']
x_labels = ['小', '中', '大']
x = range(len(x_labels))
y = [-3, 0, 3]

plt.scatter(x, y)
plt.xticks(x,x_labels)
plt.tick_params(axis='x', which='major', labelsize=30)

plt.show()

6) 結果畫面
1

參考網址: 如何在Win 10解決matplotlib中文顯示的問題

發表於 程式分享

爬蟲: Python查詢匯率,並將資料寫入Excel、MySQL資料庫

1.程式語法如下

import pandas
import requests
from bs4 import BeautifulSoup
import re
import pandas
from sqlalchemy import create_engine

# 讀來源匯率
dfs = pandas.read_html('https://www.taishinbank.com.tw/TS/TS06/TS0605/TS060502/index.htm')

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
res = requests.get('https://www.taishinbank.com.tw/TS/TS06/TS0605/TS060502/index.htm', headers = headers)

# 整理資料
soup = BeautifulSoup(res.text, 'lxml') 

rowAry = []
for tr in soup.select_one('.table01').select_one('tbody').find_all('tr', class_=lambda x: x != 'content_title'):
    row      = {}
    td0Len = len(tr.select('td')[0].text)
    splitIdx = td0Len - 3
    row     = {'幣別': tr.select('td')[0].text[:splitIdx], 
               '幣別代碼': tr.select('td')[0].text[splitIdx:],
               '買入': tr.select('td')[1].text, 
               '賣出': tr.select('td')[2].text, 
               '買入 (現鈔)': tr.select('td')[3].text, 
               '賣出 (現鈔)': tr.select('td')[4].text}
    rowAry.append(row)

# 寫入excel
df = pandas.DataFrame(rowAry)
df.to_excel('銀行匯率.xlsx')

# 寫入mysql 資料庫
engine = create_engine("mysql+mysqlconnector://root:8888@localhost/house")
df.to_sql('taishin_exrate', engine,if_exists='replace', chunksize=100)

2.excel檔

1

3.mysql 資料庫

1.PNG

發表於 程式分享

使用Vagrant安裝Virtualbox, 再於Virtualbox裝CentOS, 於CentOS裝docker

OS: MacOS

1.安裝Virtualbox
下載路徑: https://www.virtualbox.org/wiki/Downloads

2.安裝Vagrant
下載路徑: https://www.vagrantup.com/

3.安裝CentOS 7
Command如下:
mkdir centos7
cd centos7
vagrant init centos/7
vagrant up

4.查看vagrant狀態
vagrant status

5.登入centos7
vagrant ssh default

6.安裝docker
安裝文件: https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1

sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

sudo yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

sudo yum-config-manager –enable docker-ce-edge
sudo yum-config-manager –enable docker-ce-test
sudo yum-config-manager –disable docker-ce-edge

sudo yum install docker-ce

sudo systemctl start docker

sudo docker run hello-world

發表於 程式分享

取得MSSQL Table Schema

一、取得Table清單

--取TABLE LIST---------------------------------------------------
select a.TABLE_CATALOG as INSTANCE,
       a.TABLE_NAME as 表格名稱,
       isnull((SELECT value   
          FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, default, default)
          WHERE name='MS_Description' and objtype='TABLE'
          and objname Collate Chinese_Taiwan_Stroke_CI_AS = a.TABLE_NAME),'') as 表格說明,
       (SELECT CASE WHEN count(*) >0 THEN 'Y' ELSE 'N' END
          FROM INFORMATION_SCHEMA.COLUMNS c
         WHERE c.Table_name=a.TABLE_NAME
           AND collation_name='Chinese_Taiwan_Stroke_CS_AI'  ) as 定序,
       convert(varchar,b.create_date,111) as 建立日期,
       convert(varchar,b.modify_date,111) as 修改日期
from INFORMATION_SCHEMA.TABLES a
LEFT JOIN sys.all_objects b ON b.object_id=object_id(a.TABLE_NAME)
ORDER BY a.TABLE_NAME

擷取

二、取得Table定義

--取TABLE SCHEMA--------------------------------------------------
DECLARE @TABLE varchar(20)
DECLARE @table_id           int

SET @TABLE='ExchangeRate'

select @table_id = object_id(@TABLE)

--導出TABLE Schema
SELECT  a.Table_name                              as 表格名稱   
       ,b.COLUMN_NAME                             as 欄位名稱   
       ,b.DATA_TYPE                               as 資料型別
       ,(CASE WHEN b.CHARACTER_MAXIMUM_LENGTH IS NULL 
         THEN CAST(b.NUMERIC_PRECISION as varchar)+','+CAST(b.NUMERIC_SCALE as varchar) 
         ELSE CAST(b.CHARACTER_MAXIMUM_LENGTH as varchar) END) as 長度
       ,isnull(b.COLUMN_DEFAULT,'')               as 預設值   
       ,b.IS_NULLABLE                             as 是否允許空值
       ,(SELECT CASE WHEN COUNT(*) = 1 THEN 'PK' ELSE ' ' END 
           FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE d
          WHERE d.TABLE_NAME = a.Table_name 
            AND d.COLUMN_NAME= b.COLUMN_NAME) as PK
       ,(SELECT CASE WHEN c.collation_name='Chinese_Taiwan_Stroke_CS_AI' THEN 'Y' ELSE 'N' END
           FROM INFORMATION_SCHEMA.COLUMNS c
          WHERE c.Table_name=a.Table_name
            AND c.COLUMN_NAME=b.COLUMN_NAME) as 定序
       ,( SELECT value   
          FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, 'column', default)   
          WHERE name='MS_Description' and objtype='COLUMN'    
          and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME   
        ) as 欄位描述   
FROM INFORMATION_SCHEMA.TABLES  a   
 LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON a.TABLE_NAME = b.TABLE_NAME   
WHERE TABLE_TYPE='BASE TABLE' AND a.Table_name=@TABLE
ORDER BY a.TABLE_NAME , b.ORDINAL_POSITION

--導出Primary Key
select Z.TABLE_NAME as 表格名稱,
       Z.PK_NAME as PK名稱,
       Z.COLUMN_NAME as 欄位名稱,
       Z.KEY_SEQ as 順序
from (
select
        TABLE_QUALIFIER = convert(sysname,db_name()),
        TABLE_OWNER = convert(sysname,schema_name(o.schema_id)),
        TABLE_NAME = convert(sysname,o.name),
        COLUMN_NAME = convert(sysname,c.name),
        KEY_SEQ = convert (smallint,
            case
                when c.name = index_col(@TABLE, i.index_id,  1) then 1
                when c.name = index_col(@TABLE, i.index_id,  2) then 2
                when c.name = index_col(@TABLE, i.index_id,  3) then 3
                when c.name = index_col(@TABLE, i.index_id,  4) then 4
                when c.name = index_col(@TABLE, i.index_id,  5) then 5
                when c.name = index_col(@TABLE, i.index_id,  6) then 6
                when c.name = index_col(@TABLE, i.index_id,  7) then 7
                when c.name = index_col(@TABLE, i.index_id,  8) then 8
                when c.name = index_col(@TABLE, i.index_id,  9) then 9
                when c.name = index_col(@TABLE, i.index_id, 10) then 10
                when c.name = index_col(@TABLE, i.index_id, 11) then 11
                when c.name = index_col(@TABLE, i.index_id, 12) then 12
                when c.name = index_col(@TABLE, i.index_id, 13) then 13
                when c.name = index_col(@TABLE, i.index_id, 14) then 14
                when c.name = index_col(@TABLE, i.index_id, 15) then 15
                when c.name = index_col(@TABLE, i.index_id, 16) then 16
            end),
        PK_NAME = convert(sysname,k.name)
    from
        sys.indexes i,
        sys.all_columns c,
        sys.all_objects o,
        sys.key_constraints k
    where
        o.object_id = @table_id and
        o.object_id = c.object_id and
        o.object_id = i.object_id and
        k.parent_object_id = o.object_id and 
        k.unique_index_id = i.index_id and 
        i.is_primary_key = 1 and
        (c.name = index_col (@TABLE, i.index_id,  1) or
         c.name = index_col (@TABLE, i.index_id,  2) or
         c.name = index_col (@TABLE, i.index_id,  3) or
         c.name = index_col (@TABLE, i.index_id,  4) or
         c.name = index_col (@TABLE, i.index_id,  5) or
         c.name = index_col (@TABLE, i.index_id,  6) or
         c.name = index_col (@TABLE, i.index_id,  7) or
         c.name = index_col (@TABLE, i.index_id,  8) or
         c.name = index_col (@TABLE, i.index_id,  9) or
         c.name = index_col (@TABLE, i.index_id, 10) or
         c.name = index_col (@TABLE, i.index_id, 11) or
         c.name = index_col (@TABLE, i.index_id, 12) or
         c.name = index_col (@TABLE, i.index_id, 13) or
         c.name = index_col (@TABLE, i.index_id, 14) or
         c.name = index_col (@TABLE, i.index_id, 15) or
         c.name = index_col (@TABLE, i.index_id, 16))             
) Z
order by TABLE_NAME, KEY_SEQ

SELECT Table_name, COLUMN_NAME,
       CASE WHEN collation_name='Chinese_Taiwan_Stroke_CS_AI' THEN 'Y' ELSE 'N' END
FROM INFORMATION_SCHEMA.COLUMNS
WHERE collation_name='Chinese_Taiwan_Stroke_CS_AI'

擷取.PNG

發表於 程式分享

Line開發工具: LINE Bot Designer

1.LINE Bot Designer下載並安裝
https://developers.line.me/en/services/bot-designer/

2.安裝結果
擷取.PNG

3.line開發API
https://developers.line.me/en/reference/

發表於 程式分享

windows安裝jupyter (python)

1.下載python並安裝
https://www.python.org/downloads/

2.Command Line (以系統管理者身份執行)

pip3 install jupyter 

3.到要執行的路徑

jupyter notebook

擷取.PNG

4.Browser 執行, token由上一頁取得

Ex.http://localhost:8888/?token=058a42525f67faddd32888dab3bb263c5a42f459b2ca0697

擷取.PNG

發表於 程式分享

取得SQL Server的Table 清單 及 Schema

1.Table清單

SELECT sys.objects.name AS TableName, ep.name AS PropertyName,
       ep.value AS Description
FROM sys.objects
CROSS APPLY fn_listextendedproperty(default,
                                    'SCHEMA', schema_name(schema_id),
                                    'TABLE', name, null, null) ep
WHERE sys.objects.name NOT IN ('sysdiagrams')
ORDER BY sys.objects.name

2.Table Schema

SELECT a.Table_schema +'.'+a.Table_name   as Table名稱   
       ,b.COLUMN_NAME                     as Table名稱   
       ,b.DATA_TYPE                       as 資料型別   
       ,isnull(b.CHARACTER_MAXIMUM_LENGTH,'') as 欄位長度   
       ,isnull(b.COLUMN_DEFAULT,'')           as 預設值   
       ,b.IS_NULLABLE                         as 允許空值否
       ,( SELECT value   
          FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, 'column', default)   
          WHERE name='MS_Description' and objtype='COLUMN'    
          and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME   
        ) as 欄位描述   
FROM INFORMATION_SCHEMA.TABLES  a   
 LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON a.TABLE_NAME = b.TABLE_NAME   
WHERE TABLE_TYPE='BASE TABLE'
ORDER BY a.TABLE_NAME , b.ORDINAL_POSITION