Python & MicroPython 程式設計目錄列表

 

 

Python ftplib.error_perm: 550 空目錄處理方式

Python Class Learning

一次搞懂Python BoxSizer

了解 super() 和 *args and **kwargs

Django Web 程式設計目錄

 

MicroPython & Client-Server 使用Socket

Python Socket 網路設計概念

Python socket TCP/IP 網路程式 - Server & Client程式

Python Socket 網路設計-簡單echo程式 
 

Python Socket 網路設計-簡單ftp client 程式
 

使用wxPython 模組視窗程式設計-第四篇

 

使用wxPython 模組視窗程式設計-第三篇 (元件)

 

使用wxPython 模組視窗程式設計-第二篇(位置管理)

 

使用wxPython 模組視窗程式設計-第一篇


使用python Win32Com模組與Excels 圖表共舞


Python Win32Com Excels基本操作


Python與Excel連結的openpyxl模組


Python 文件收集


使用Pyodbc 連接資料庫


Python py檔轉成exe檔


如何在Portable Python離線安裝模組


MicroPython 程式集


MicroPython 功能集 

MicroPython 中斷處理


GPIO.BOARD與GPIO.BCM設定有何不同?


第一個python程式

免安裝版的Portable Python 2.7.6.1 下載

參考資料:

http://zetcode.com/wxpython/
https://gist.github.com/mikepsn/27dd0d768ccede849051
http://pythonexcels.com/python-excel-mini-cookbook/
http://docs.wxwidgets.org/trunk/index.html
https://www.tutorialspoint.com/wxpython/index.htm

 

 

文章標籤

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

說明如何在7688 Duo 安裝套件
(1) 系統管理套件 -- htop 套件

在Linux原本就可用top來監測系統效能,而htop是加強版,支援滑鼠操作,搜尋,篩選等加強功能。
opkg update 
opkg htop 
然後直接輸入htop來啟動htop, 執行 htop 後,有幾個選項可以操作

F2 : 進行參數設定

F3 : 搜尋你想要看的 process 狀態,光條會跳到搜尋到的 process 上

F4 : 過濾你想要看的 process 狀態

F5 : 對 process 進行樹狀排序,這樣你就可以清楚知道那個 child 是由那個 parent 所 fork 出來的。

F6 : 排序

F7 : 可減少nice值,這樣就可以提高對應進程的優先級

F8 : 可增加nice值,這樣就可以降低對應進程的優先級

F9 : Kill a process

F10 : 結束 htop

在監控畫面的最上方,是以文字圖像來顯示的系統狀態。
黃線圈起的部分為CPU使用率,可以看到目前這台Linux有1個CPU核心的使用率。
橘線圈起的部分為記憶體(MEM)使用率,還有swap(Swp)空間使用率。

Tasks表示目前系統中有多少程序,以及有多少程序正在執行(running)。
Load average代表系統在1分鐘,5分鐘,15分鐘間的平均負載。數值越高代表系統負載越大。
Uptime表示系統運行的時間,例如這台機器運行了1小時。超過100天就會出現個驚嘆號(!)

標頭中每個代號的意思如下:

  • PID:Process ID,程序編號
  • USER:開啟程序的使用者名稱
  • PRI:Priority,Linux kernal排程優先順序,數值從0(最高優先權)到139(最低優先權)。
  • NINiceness,數值從-20(最高優先權)到19(最低優先權)。
  • VIRT:Virtual memory usage,虛擬記憶體用量。
  • RES:Resident memory usage,常駐記憶體用量。
  • SHR:Shared memory usage,共享記憶體用量。
  • SProcess state,程序狀態。
    • D:不可中斷的睡眠狀態(例如IO)
    • R:執行中或可執行
    • S:可中斷的睡眠
    • T:工作停止
    • t:除錯中斷
    • Z:Zombie Process,殭屍程序
  • CPU%:CPU使用率。
  • MEM%:記憶體使用率。
  • TIME+:程序執行時間。
  • Comamnd:執行程序的命令。

 

 

 

文章標籤

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

這篇文章所列的問題是針對LinkIt 7688 Duo使用時,我遇到的問題及解決方法,這些問題都是自己實作時遇到的問題,但是在網路上找很久都找不到答案
有些有找到解決方案而有些仍是没有答案的,很奇怪的事大家實作時不是都會遇到的問題,在官方文件或網路上竟然找不到問題及答案,我真疑惑大家是如何實作的,為何没有人遇到這些問題及如何解決這些問題。

(1) LinkIt 7688 Duo 要如何安全關機才不會變磚 ? 
      這個我自己實作電路解決了問題,請參考這篇文章
(2)  LinkIt 7688 Duo 的最大耗電電流是多些,使用7805 IC 可以嗎 ?
  這個我在網路上有找到答案,請參考這篇文章  
       但官方文件有更詳細的說明,在文件的第23頁 
(3)   LinkIt 7688 Duo 的GPIO 接脚可全用嗎? 
       依據官方文件說明 GPIO 0 is occupied by the I2S driver and cannot be used as GPIO function.
  這個還在測試中。 
(4)   LinkIt 7688 Duo 是否可以AP/Station mode 可以共存 ?
  在 firmware v0.9.4 可以使用GUI界面設定,在firmware v0.9.3要使用這篇文章的方法
(5)  LinkIt 7688 Duo當做一個無線Router 
  依據官方文件說明可以達成
(6) LinkIt 7688 Duo 的station mode 可以連接多個MBSSID 嗎? 
  (1) 依據官方文件說明是可以的,但我還在測試中。

(7)  我的LinkIt 7688 Duo 的時間並没有同步,要如何設定呢?
   LinkIt 7688 Duo 並没有硬體支援時間同步的機制,所以要用軟體的方式設定
  需要參考 (1) https://oldwiki.archive.openwrt.org/doc/howto/ntp.client  
                       (2) Ntpclient Configuration

   

 

 

   

 

 

 

 

 

 

文章標籤

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

wemos D1 Mini 腳位

undefined

undefined

undefined

https://www.twobitarcade.net/article/wemos-d1-pins-micropython/

文章標籤

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

在實作LinkIt 7688 Duo時,想用一個7805穩壓IC去提供開發版電源,不知道可不可以?
很意外的在網路上竟然没有文件或有人提到LinkIt 7688 Duo需要多少的電流才足夠?
搜索很久才在論壇上有人提到 LinkIt 7688 Duo在開機時大約需要800MA的電流
用7805 IC (依型號提供最大電流大約在於1A或1.5A),因此如使用7805 IC供電, 7805IC 很快就會很熱了,
再加上週邊的其他電路的耗電情形,使用7805 IC 是有點風險或是要注意散熱問題

以上資料提供大家參考,官方好像無正式資料說明這一點
資料來源在
https://forum.seeedstudio.com/t/linkit-7688-power-supply/19012/2 可以看看,謝謝!

 

 

 

 

 

 

 

文章標籤

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

                       我在去年偶然的一次機會開始接觸到獎金獵人這個網站,而在網站中羅列出各種的競賽,其中一個讓我比較有感想參加比賽的是在2018年由臺南市政府經濟發展局所舉辦二天的臺南智慧農創松。主辦單位的最初想法是地球暖化、氣候異常、城鄉落差及農村缺工,我們應該跟農友攜手共創未來。這是我第一次參加的競賽活動,會想參加的原因有三個:

  • 第一個是這個競賽項目只單著重在農業議題它的主題說明 本競賽運用科技翻轉農業,實際運用於農場上,由科技農夫分享待解決的農業議題,歡迎參賽者使用農業應用套件,思考與設計數位解決方案,發展系統服務、軟硬整合等創新應用,實際協助農友管理與省工。這是目前商業比賽比較少見的利用技科來解決農業問題,這是我比較有興趣的議題。
  • 第二點是它科技技術著重在利用整合ROS的軟ROS的軟、硬體相關應用,當然參賽團隊也可帶自己的成品或模組來整合進行實作,但作品成果只能是能農業相關的議題。我和主辦單位確認過是否我可以使用物聯網和Raspberry Pi樹莓派相關的技術來進行實作,這方面是我比較專長的技術。
  • 第三點是組隊方式很特別: 競賽分組可以個人或團隊報名,團隊報名每隊人數至多8(),推派一名代表人,活動第一天依照報名所選的農業改善議題,安排農業領域的報名者與工程背景的報名者混合編組,預計13組,每組發一套智慧農場應用套件進行實作。因此它的組成團隊成員可能原本就是很熟識的伙伴,也可能是因為任務需要臨時組成的團隊,而成員可能有農業領域背景或與工程背景的專業人土,這是很令人期待且特別的團隊組成方式。

這是一個很特別的競賽,它的競賽項目、科技應用方式、組隊方式皆具有挑戰性,所以我以個人工程背景的身份參加比賽。而評分項目與獎勵如下:

  • 競賽方式:10分鐘套件作品展示及簡報競賽,由評審評選出冠、亞、季軍。
  • 評分項目與獎勵:: 實務應用:40%、創意思維:30%、技術能力:20%、多元架構:10%
  • 競賽獎勵:透過評審評選和團隊票選(每隊派一位代表票選自己組以外的團隊)的方式從13組隊伍中,選出冠、亞、季軍優勝團隊,頒發奬金各為5萬元、3萬元及2萬元與獎狀給予鼓勵。

        第一天簽到報名後,主辦單位已經依我們的專業背景組成了一個新的戰鬥團隊,團隊成員的背景很有趣,三個行銷管理的大學生,而我和另二個成員背景較相近,具有科技背景及具有從事農業實務經驗的工科師,總共6個人。雖然看似不錯的組合有科技、有農業、有行銷,但和其他團隊相比我們比較像是雜牌軍,其他團隊大都多是學校的老師帶領整個實驗室參加,當然這些團體大都有自已實驗室的器材、技術、成品。我個人認為這是一個不對稱性的比賽,出發點不對等。不過我也是志在參加不在得名的心態參加。我們團隊最大的問題在於年輕人没有真的有農業實務經驗,所以在農業議題我們很少有共識。到底我們團隊是要解決什麼的問題,另外我們三位工程師的資訊技術也是有點不一樣没有很一致性。所以當時我的想法是我們只能專注在農業的問題的呈現及提出可能的解決方案,在技術上我們不可能超越學校實驗室的技術。

        經過二天的激戰,最後我們團隊很幸運的有得到了競賽獎勵,當然我不能否認的是這次比賽能得獎是有點運氣在裡面的,我個人認為會得名並不是在成品的技術很新穎,而是在農業議題有打到了目前農業的痛點及提出的技術運用是可行的。所以經過這次的比賽我最大的感想是技術的培養、磨練當然是很重要的,但是對於議題的痛點敏感度及解決方案的創新會是比技術更重要,這是我這次比賽的最大收獲。

文章標籤

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

Python 各種官方說明文件

(1)Beautiful Soup 4.4.0 Documentation
(2)Pandas 0.25.1 documentation 
(3) Django Documentation Release 3.1.dev

 

 

 

 

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

(1) 一個基本的範例 擷取檔案且儲存至csv

from collections import OrderedDict

import requests
import pandas as pd
from bs4 import BeautifulSoup


class HTMLTableParser:

    def get_html_tables_from_resp(self, html_text):
        soup = BeautifulSoup(html_text, 'html.parser')
        tables = soup.find_all('table')
        return tables

    def parse_html_table(self, table):
        """
        <tr>
            <th align="center" class="tblHead" nowrap="" rowspan="2">產業類別</th>
            <th align="center" class="tblHead" nowrap="" rowspan="2">公司代號</th>
            <th align="center" class="tblHead" nowrap="" rowspan="2">公司名稱</th>
            <th align="center" class="tblHead" colspan="4" nowrap="">非擔任主管職務之<br/>全時員工資訊</th>
            <th align="center" class="tblHead" colspan="2" nowrap="">同業公司資訊</th>
            <th align="center" class="tblHead" colspan="4" nowrap="">薪資統計情形</th>
        </tr>
        <tr>
            <th align="center" class="tblHead" nowrap="">員工薪資總額(仟元)</th>
            <th align="center" class="tblHead" nowrap="">員工人數-加權平均(人)</th>
            <th align="center" class="tblHead" nowrap="">員工薪資-平均數(仟元/人)</th>
            <th align="center" class="tblHead" nowrap="">每股盈餘(元/股)</th>
            <th align="center" class="tblHead" nowrap="">員工薪資-平均數(仟元/人)</th>
            <th align="center" class="tblHead" nowrap="">平均每股盈餘(元/股)</th>
            <th align="center" class="tblHead" nowrap="">非經理人之<br/>全時員工薪資<br/>平均數未達50萬元</th>
            <th align="center" class="tblHead" nowrap="">公司EPS獲利表現較同業為佳<br/>,惟非經理人之全時員工<br/>薪資平均數低於同業水準</th>
            <th align="center" class="tblHead" nowrap="">公司EPS較前一年度成長<br/>,惟非經理人之全時員工<br/>薪資平均數較前一年度減少</th>
            <th align="center" class="tblHead" nowrap="">公司經營績效與員工薪酬<br/>之關聯性及合理性說明</th>
        </tr>
        <tr>
            <td nowrap="" style="text-align:left !important;">資訊服務業</td>
            <td nowrap="" style="text-align:left !important;">8416</td>
            <td nowrap="" style="text-align:left !important;">實威</td>
            <td nowrap="" style="text-align:right !important;"> 158,636 </td>
            <td nowrap="" style="text-align:right !important;"> 186 </td>
            <td nowrap="" style="text-align:right !important;"> 853 </td>
            <td nowrap="" style="text-align:right !important;"> 9.69 </td>
            <td nowrap="" style="text-align:right !important;"> 807 </td>
            <td nowrap="" style="text-align:right !important;"> 1.20 </td>
            <td nowrap="" style="text-align:right !important;"></td>
            <td nowrap="" style="text-align:right !important;"></td>
            <td nowrap="" style="text-align:right !important;"></td>
            <td nowrap="" style="text-align:left !important;"><br/></td>
        </tr>
        """
        parsed_data = []

        # Find number of rows and columns
        # we also find the column titles if we can
        table_row_tags = table.find_all('tr')
        table_header_tags = table.find_all('th')
        column_names = [table_header_tag.get_text() for key, table_header_tag in enumerate(table_header_tags) if key not in (3, 4, 5)]
        column_names[7] = '同業公司{}'.format(column_names[7])
        column_names[8] = '同業公司{}'.format(column_names[8])

        tr_td_tags = [
            [td_tag.get_text().strip() for td_tag in table_row.find_all('td')]
            for table_row in table_row_tags if table_row.find_all('td')
        ]

        parsed_data = [
            OrderedDict({
                column_names[index]: td_tag
                for index, td_tag in enumerate(tr_td_tag)
            })
            for tr_td_tag in tr_td_tags
        ]

        df = pd.DataFrame.from_dict(parsed_data)

        return df


htlm_parser = HTMLTableParser()

payload = {
    # 'encodeURIComponent': 1,
    'step': 1,
    'firstin': 1,
    'TYPEK': 'sii', # sii 上市 / otc 上櫃
    'RYEAR': 107,
    'code': '',
}

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}

resp = requests.post('https://mops.twse.com.tw/mops/web/ajax_t100sb15', data=payload, headers=headers, timeout=2)

html_tables = htlm_parser.get_html_tables_from_resp(resp.text)

df_table = htlm_parser.parse_html_table(html_tables[0])

df_table.to_csv('107_{}.csv'.format(payload['TYPEK']), index=False, encoding='utf-8')

print(df_table)

 

 

 

 

 

參考資料: 
(1) 使用 Python 資料分析和視覺化上市櫃公司薪資公開資料

 

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

(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) 人氣()

Close

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

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

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

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

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼