---
# System prepended metadata

title: web-programming

---

# web-programming
**目錄：**
[toc]

**額外資料**：
- [郭老的網站](https://sites.google.com/mail.ntut.edu.tw/jong-yih-kuo/network-programming?authuser=0)


### 說明
這是郭老網路程式設計的課程紀錄，你可以在這邊紀錄或者查看上課的命令。
*(我懶得寫作業要怎麼做，一步一步~~交~~教很麻煩)*


| **VMWare** | Ubuntu ISO | Zuvio | Putty |
| -------- | -------- | -------- | --- |
| [Download](https://www.vmware.com/go/getplayer-win)     | [Download](https://releases.ubuntu.com/22.04.3/ubuntu-22.04.3-desktop-amd64.iso?_ga=2.46118561.469095181.1694608194-1520807449.1694608194)     | [URL](https://irs.zuvio.com.tw/student5/irs/clickers/1136996)| [Download](https://the.earth.li/~sgtatham/putty/latest/w64/putty-64bit-0.79-installer.msi)|


## The 1th week



| 命令 | 說明 |
| -------- | -------- |
| `shutdown`     |關機|
|`restart`|重新啟動|
|`sudo + {其他命令}`|使用管理員才能使用的命令|
|`ifconfig`|查看電腦的IP|
|`sudo apt install net-tools`|下載網路工具套件|
|`sudo apt install ssh`|下載ssh套件|
|`iptables -nvL`|查看防火牆輸出輸入規則|
|`iptables -A INPUT -s <ip> -j DROP`|使用防火牆拒絕IP訪問|
|`ssh <username>@<IP>`|使用ssh 連線|

<br>


## The 2th week
新北市公共自行車即時資訊 - https://data.ntpc.gov.tw/datasets/71CD1490-A2DF-4198-BEF1-318479775E8A

你可以改`row[]`的欄位，之後可以看到你要印的資料型態。
考試可能會考說，當前區域會有多少有空的車輛。你要去了解資料欄位的意義。

您可以參考任何的資料來完成你的程式。

```python=
import urllib.request #匯入套件
import zipfile
import csv
# 公開資料檔案
url ='https://data.ntpc.gov.tw/api/datasets/71CD1490-A2DF-4198-BEF1-318479775E8A/csv/zip'
zipName = 'F.zip' #壓縮檔案名稱
urllib.request.urlretrieve(url,zipName) #下載壓縮檔
f=zipfile.ZipFile(zipName) #開啟壓縮檔
#file_dir = './FF'
file_dir = './' #解壓縮目錄
for fileName in f.namelist(): #壓縮檔案列表檔名
    f.extract(fileName,file_dir) #擷取壓縮檔案
    print(fileName) #印出解壓縮檔案名稱
f.close() #關檔
f = open(fileName,'r',encoding = 'utf8') #開啟CSV檔案,,唯讀 utf-8解碼
plots = csv.reader(f, delimiter=',') #讀取CSV檔案間隔逗號,設定給plots串列物件
for row in plots: #印出UBIKE資料
    print('%5s' %row[0], '%15s' %row[1], '%5s' %row[3], '%5s' %row[12]) 
f.close()
```

--- 

所有網頁都是用request的方式獲取。

```python=
import urllib.request
```

用壓所檔案的方式開啟
```python=
request.urlretieve(url, filename) # url 下載的網址，filename下載的文件名稱。
```

解壓娑zip 
```python!

import zipfile

file_dir = ./ # 在當前的目錄
```

zip 裡面所有的檔案名稱的取得下來
```python!
f.namelist() # 壓縮檔案的列表清單

for filename in f.namelist() : # 因為只有一個檔案，所以只執行一次
    ...
    
    f.extract(filename, file_dir) # 開啟壓縮檔案。
    
    # filename 檔案名城
    # file_dir 要放到哪裡。

    
    print(filename);
    # 印出檔案名稱
    
```



csv 都是用逗號隔開的。


### 第二題

全國環境輻射偵測即時資訊 - https://www.aec.gov.tw/dataopen/index.php?id=2

手動下載到pmi.csv檔案。編碼風格utf8，唯讀模式
。
如果uft-8打不開的話，可以使用Big-5的編碼方式。





```python!
import csv
with open('pmi.csv', 'r',encoding = 'utf8') as csvfile:
plots = csv.reader(csvfile, delimiter=',')

for row in plots:

print(row[0]+" "+row[2]+" "+row[3]);
# 或者使用 print(*row);
```

### JSON
什麼是JSON
**去看維基**(沒
JSON是一種資料格式，其中的物件是用{}做開頭和結尾，陣列是用[]做開頭和結尾。每個成員都是key-value，key只能是字串並用""包起來，value可以是數值、字串、bool、陣列、物件及空值。

參考下面範例和說明
Ex1:
```json
{
    "name":"onon",
    "age":19,
    "isGay":false,
    "boyfriend":null,
    "language":[
        "C++",
        "Java",
        "Python"
    ]
}
```
這個範例是有一個物件，他的成員有name、age、isGay、girlfriend和language；當中name的值是字串，age的值是數值，isGay的值是bool，girlfriend的值是null，language的值是陣列。

Ex2:
```json
{
    "電神":{
        "name":"onon",
        "age":19,
        "isGay":false,
        "boyfriend":null,
        "language":[
            "C++",
            "Java",
            "Python"
        ]
    }
}
```
這個範例是key是電神，而value是Ex1的物件。

Ex3:
```json
[
    {
        "name":"onon",
        "age":19,
        "isGay":false,
        "boyfriend":null,
        "language":[
            "C++",
            "Java",
            "Python"
        ]
    },
    {
        "name":"意昌",
        "age":5,
        "isGay":true,
        "boyfriend":"多喝熱水",
        "language":[
            "中文",
            "汐止",
            "ㄐㄒ"
        ]
    }
]
```
這個範例是有一個陣列，裡面包含了兩個物件。

#### json.load
把JSON字串解碼python
```python!
import json
jsondata = {'a':5, 'g':5};

text = json.load(jsondata);

print(text);
```

#### json.dumps
python 轉乘 JSON

```python!
json.dumps(['two', {'bar' : ('jar', ...)}]);
```


### XML
什麼是XML