WordPress 關閉 wptexturize 功能避免符號被轉換

WordPress 會自動轉換一些符號,例如 "--" 會顯示成 "–" ,由於我會在部落格裡放 bash 語法,裡面一定會有 "--help" 這種字串,不解決會十分困擾。

查到的原因是 wptexturize 方法導致,雖然放在 pre, code, kbd, style, script, tt 標籤內的內容將會忽略而不會觸發 wptexturize 方法,但是這樣就會改變排版。

 

以下是變換前變換後的對照

"---"
"—"

" -- "
"—"

"--"
"–"

" - "
"–"

"..."
"…"

``

"hello
“hello

'hello
‘hello

''

world."
world.”

world.'
world.’

" (tm)"
" ™"

1234"
1234″

1234'
1234′

'99
’99

Webster's
Webster’s

1234x1234
1234×1234

 

將以下程式碼儲存成 disable-wptexturize.php 上傳放到 /wp-content/plugins 底下,再到後台安裝啟用這個外掛就能解決。


/*
Plugin Name: Remove the wptexturize filter
*/

add_filter( 'run_wptexturize', '__return_false' );

 

參考資料
https://codex.wordpress.org/Function_Reference/wptexturize
https://codex.wordpress.org/Plugin_API/Filter_Reference/run_wptexturize
https://geeksterminal.com/wordpress-double-dash-problem/1399/

海外遊戲進入中國市場的相關政策規範及如何克服涉入障礙 筆記

本文是 2018 台北遊戲開發者論壇 的其中一個主題演講筆記

海外遊戲進入中國市場的相關政策規範及如何克服涉入障礙
郭珈瑜 Abby (TapTap)

TapTap 是有媒體屬性與玩家有高互動性的第三方 Android 平台。

特色:
1. 推薦是根據遊戲本身是否好玩以及與該平台的玩家契合度
2. 未上市也可以用預約狀態來露出
3. 禁止刷榜或違規評論
4. 社區玩家的評論牆
5. 不需接 SDK
6. 下載方式有三種,從本平台或是 Google Play 、 App Store 上下載

建議從預約期間就建立遊戲頁面,並且使用論壇功能發布消息。發文內容可以從開發角度或是遊戲本身,像是開發日誌或是遊戲設定的分享,官方帳號會有藍色勾勾作為識別。

版號:遊戲在中國合法發布提供下載必須要有版號
1. 必須要有中國落地的發行商
2. TapTap 會免費協助版號申請
3. 遊戲需注意文字的內容及選題的規範

建議開發進度50~70%進行遊戲內容的評估,70%時進行軟體著作權的申請,100%申請版號。

利潤均不分成,商業模式為廣告系統。

「不只是美術而已」技術美術之路 筆記

本文是 2018 台北遊戲開發者論壇 的其中一個主題演講筆記

「不只是美術而已」技術美術之路
黃香菱 (曉數碼)

何謂技術美術
懂技術的美術人員、程式與美術的溝通橋樑
技術向TA:渲染、特效、優化等的工具製作
美術向TA:美術資深人員懂得與程式人員溝通,且對於新技術接受度高
廣義 TA:任何工作內容同時包括程式與美術的人員

技術美術的工作內容
工作核心:綜合的問題解決,沒有明確答案的問題

1. 建立美術的工作流程
2. 美術相關工具製作 (自動化)
3. 美術效果的研究 (特效、粒子等)
4. 效能優化
5. 大量的溝通

專案支援的三階段變化
1. 前期配合企劃、美術的需求去研究會用到的技術
2. 中期整理好美術流程、美術工具的開發
3. 後期優化效能及解決美術相關 Bug

美術轉職成TA
1. 有完整的參與美術製作流程的觀念
2. 學習遊戲引擎與shader引擎
3. 學習電腦圖學
4. 3D 繪圖
5. Google 力
6. 程式語言、英文能力

技術美術的特質
1. 具有美術基礎
2. 好奇心
3. 善於溝通
4. 耐心
5. 熱情

XMR-Stak 指令參數挖 XMR 簡易教學

XMR-Stak 是一個挖 Monero (XMR) 的軟體,只要是同屬 CryptoNight 的競爭幣都可以使用。此軟體最大的特色就是可以同時使用 CPU 與顯示卡挖同一個幣種,而且只需開一個程式就能辦到。

XMR-Stak 2.5.x 的新版本中,只能使用 2.5.x 以上的設定檔,請重新產生一份乾淨的設定檔,詳細可以參考這個影片。
因應硬分岔, currency 請選 monero 或是 cryptonight_v8 。

經過影片的步驟後會得到新增的檔案如下:
config.txt (通用設定)
cpu.txt (CPU設定)
amd.txt nvidia.txt (顯卡設定)
pools.txt (礦池設定)
我們會拿以上的設定檔串成 .bat 或 .sh 檔

 


這裡以 XMR 為例,基本上不同幣種都是共用前 3 個檔案,只有 pools.txt 必須個別設置。我將 pools.txt 名稱改為 pools-xmr.txt ,同一個幣種都共用此檔案,先把此檔案打開。


"pool_list" :
[
{"pool_address" : "xmr.omine.org:5000", "wallet_address" : "43yG8CDmWgSiyxX9rxH7tfAz4E4VbrvvFFGSAMmaAKm4UL7T3MuKA8C6QMGmcuBUQbGGsFDFcrB5SZ1puboMFETd2ecoxVK#pc1", "rig_id" : "", "pool_password" : "", "use_nicehash" : false, "use_tls" : false, "tls_fingerprint" : "", "pool_weight" : 10 },
{"pool_address" : "xmr-asia1.nanopool.org:14444", "wallet_address" : "43yG8CDmWgSiyxX9rxH7tfAz4E4VbrvvFFGSAMmaAKm4UL7T3MuKA8C6QMGmcuBUQbGGsFDFcrB5SZ1puboMFETd2ecoxVK.pc1/trleee@gmail.com", "rig_id" : "", "pool_password" : "", "use_nicehash" : false, "use_tls" : false, "tls_fingerprint" : "", "pool_weight" : 1 },
],

我設定兩個礦池,並且給予不同的優先權,這樣若是礦池連不上就會換另一個。注意 rig_id 這個參數需要伺服器支援才能用,絕大部分都是在錢包地址上面加工,例如 "." "#" "/" 等字元請參考礦池網站說明。

接下來就是要打指令參數了。

xmr-stak ^
--config config.txt ^
--cpu cpu.txt ^
--amd amd.txt ^
--poolconf pools-xmr.txt ^
--url xmr.omine.org:5000 ^
--user 43yG8CDmWgSiyxX9rxH7tfAz4E4VbrvvFFGSAMmaAKm4UL7T3MuKA8C6QMGmcuBUQbGGsFDFcrB5SZ1puboMFETd2ecoxVK#pc1

每行最後的 “ ^” 是為了斷行,這樣看得比較清楚。若是 Linux 及 Mac 的使用者請使用 ” \” 。

你可能會發現 --url 與 --user 分別對應 pools-xmr.txt 中的 pool_address 與 wallet_address ,為什麼這邊還要再寫一次?因為指令的優先權會大於 pools-xmr.txt 中的 pool_list 設定,假如你今天想挖第 2 個礦池,用指令覆蓋就好不須變動 pools-xmr.txt 檔案。

假設你想要暫時關閉顯示卡挖礦,則直接用指令 --noAMD 與 --noNVIDIA 禁用就好,也不須變動 amd.txt 和 nvidia.txt ,我分別對 GPU 啟用與禁用的兩種情況建立指令,依照心情隨時切換。

xmr-stak ^
--config config.txt ^
--cpu cpu.txt ^
--amd amd.txt ^
--poolconf pools-xmr.txt ^
--url xmr.omine.org:5000 ^
--user 43yG8CDmWgSiyxX9rxH7tfAz4E4VbrvvFFGSAMmaAKm4UL7T3MuKA8C6QMGmcuBUQbGGsFDFcrB5SZ1puboMFETd2ecoxVK#pc1 ^
--noAMD ^
--noNVIDIA

最後將指令存成 .bat (Windows) 與 .sh (Linux Mac) 再執行就可以開挖囉。

台灣最大 XMR 礦池
https://xmr.omine.org/

 


附上官方指令參數說明

Usage: xmr-stak [OPTION]...

-h, --help show this help
-v, --version show version number
-V, --version-long show long version number
-c, --config FILE common miner configuration file
-C, --poolconf FILE pool configuration file
--noUAC disable the UAC dialog
--benchmark BLOCKVERSION ONLY do a benchmark and exit
--benchwait WAIT_SEC ... benchmark wait time
--benchwork WORK_SEC ... benchmark work time
--noCPU disable the CPU miner backend
--cpu FILE CPU backend miner config file
--noAMD disable the AMD miner backend
--noAMDCache disable the AMD(OpenCL) cache for precompiled binaries
--openCLVendor VENDOR use OpenCL driver of VENDOR and devices [AMD,NVIDIA]
default: AMD
--amd FILE AMD backend miner config file
--noNVIDIA disable the NVIDIA miner backend
--nvidia FILE NVIDIA backend miner config file
-i --httpd HTTP_PORT HTTP interface port

The following options can be used for automatic start without a guided config,
If config exists then this pool will be top priority.
-o, --url URL pool url and port, e.g. pool.usxmrpool.com:3333
-O, --tls-url URL TLS pool url and port, e.g. pool.usxmrpool.com:10443
-u, --user USERNAME pool user name or wallet address
-r, --rigid RIGID rig identifier for pool-side statistics (needs pool support)
-p, --pass PASSWD pool password, in the most cases x or empty ""
--use-nicehash the pool should run in nicehash mode
--currency NAME currency to mine

Environment variables:

XMRSTAK_NOWAIT disable the dialog `Press any key to exit.
for non UAC execution

Supported coin options:
- aeon7
- bbscoin
- bittube
- cryptonight
- cryptonight_bittube2
- cryptonight_masari
- cryptonight_haven
- cryptonight_heavy
- cryptonight_lite
- cryptonight_lite_v7
- cryptonight_lite_v7_xor
- cryptonight_v7
- cryptonight_v8
- cryptonight_v7_stellite
- graft
- haven
- intense
- masari
- monero
- qrl
- ryo
- stellite
- turtlecoin

Version: xmr-stak 2.5.1 4e72408ff
Brought to by fireice_uk and psychocrypt under GPLv3.
Press any key to exit.

ethminer 新版指令參數挖 ETH 簡易教學

ethminer 是一個挖 Ethereum (ETH) 的軟體,只要是同屬 Ethash 的競爭幣都可以使用。此軟體最大的特色是沒有開發者抽成,當然也不需要自己去編譯了。

ethminer 0.14.0 的新版本中,已準備棄用多個與礦池有關的參數,目前舊的參數還是可以使用但會顯示警告,並在未來的版本將會移除,以下的參數會被一行的 -P 所取代。

-F, --farm, -FF, -SF, -FS, --farm-failover, --stratum-failover, -S, --stratum, -O, --userpass, -SP, --stratum-protocol, --stratum-ssl, -FO, --failover-userpass, -u, --user, -p, --pass, -o, --port, -fu, --failover-user, -fp, --failover-pass, -fo, --failover-port

 


舊版
ethminer ^
-S eth.gpumine.org:3333 ^
-FS eth2.gpumine.org:4333 ^
-O 0xFdd43923340736FfBcB31C808aC644922c1dF05d.pc1 ^
-SP 1 ^
-RH ^
--farm-recheck 200 ^
-G

新版
ethminer ^
-P stratum1+tcp://0xFdd43923340736FfBcB31C808aC644922c1dF05d.pc1@eth.gpumine.org:3333 ^
-P stratum1+tcp://0xFdd43923340736FfBcB31C808aC644922c1dF05d.pc1@eth2.gpumine.org:4333 ^
-RH ^
--farm-recheck 200 ^
-G

每行最後的 " ^" 是為了斷行,這樣看得比較清楚。若是 Linux 及 Mac 的使用者請使用 " \" 。

其中要特別說明的是 stratum1+tcp:// ,如果是 getwork 就要填 http ,如果是 stratum 則可以填以下任一個
stratum+ssl
stratum+tcp
stratum+tls
stratum+tls12
stratum1+ssl
stratum1+tcp
stratum1+tls
stratum1+tls12
stratum2+ssl
stratum2+tcp
stratum2+tls
stratum2+tls12

你可以發現上面那一大坨有些只差在數字,前者對應 -SP --stratum-protocol ,後者則對應 --stratum-ssl ,不過最常用的還是 tcp 和 ssl 啦。

最後將指令存成 .bat (Windows) 與 .sh (Linux Mac) 再執行就可以開挖囉。

台灣兩大 ETH 礦池
https://eth-tw.gpumine.org/
https://www.tweth.tw/

 


附上官方指令參數說明

Usage ethminer [OPTIONS]
Options:

Work farming mode:
-F,--farm <url> (deprecated) Put into mining farm mode with the work server at URL (default: http://127.0.0.1:8545)
-FF,-FO, --farm-failover, --stratum-failover <url> (deprecated) Failover getwork/stratum URL (default: disabled)
--farm-retries <n> Number of retries until switch to failover (default: 3)
-S, --stratum <host:port> (deprecated) Put into stratum mode with the stratum server at host:port
-SF, --stratum-failover <host:port> (deprecated) Failover stratum server at host:port
-O, --userpass <username.workername:password> (deprecated) Stratum login credentials
-FO, --failover-userpass <username.workername:password> (deprecated) Failover stratum login credentials (optional, will use normal credentials when omitted)
--work-timeout <n> reconnect/failover after n seconds of working on the same (stratum) job. Defaults to 180. Don't set lower than max. avg. block time
--stratum-ssl [<n>] (deprecated) Use encryption to connect to stratum server.
0: Force TLS1.2 (default)
1: Allow any TLS version
2: Allow self-signed or invalid certs and any TLS version
-SP, --stratum-protocol <n> (deprecated) Choose which stratum protocol to use:
0: official stratum spec: ethpool, ethermine, coinotron, mph, nanopool (default)
1: eth-proxy compatible: dwarfpool, f2pool, nanopool (required for hashrate reporting to work with nanopool)
2: EthereumStratum/1.0.0: nicehash
-RH, --report-hashrate Report current hashrate to pool (please only enable on pools supporting this)
-HWMON [<n>], Displays gpu temp, fan percent and power usage. Note: In linux, the program uses sysfs, which may require running with root privileges.
0: Displays only temp and fan percent (default)
1: Also displays power usage
--exit Stops the miner whenever an error is encountered
-SE, --stratum-email <s> Email address used in eth-proxy (optional)
--farm-recheck <n> Leave n ms between checks for changed work (default: 500). When using stratum, use a high value (i.e. 2000) to get more stable hashrate output
-P URL Specify a pool URL. Can be used multiple times. The 1st for for the primary pool, and the 2nd for the failover pool.
URL takes the form: scheme://user[:password]@hostname:port[/emailaddress].
for getwork use one of the following schemes:
http
for stratum use one of the following schemes:
stratum+ssl stratum+tcp stratum+tls stratum+tls12 stratum1+ssl stratum1+tcp stratum1+tls stratum1+tls12 stratum2+ssl stratum2+tcp stratum2+tls stratum2+tls12
Example 1 : stratum+ssl://0x012345678901234567890234567890123.miner1@ethermine.org:5555
Example 2 : stratum1+tcp://0x012345678901234567890234567890123.miner1@nanopool.org:9999/john.doe@gmail.com
Example 3 : stratum1+tcp://0x012345678901234567890234567890123@nanopool.org:9999/miner1/john.doe@gmail.com

Benchmarking mode:
-M [<n>],--benchmark [<n>] Benchmark for mining and exit; Optionally specify block number to benchmark against specific DAG.
--benchmark-warmup <seconds> Set the duration of warmup for the benchmark tests (default: 3).
--benchmark-trial <seconds> Set the duration for each trial for the benchmark tests (default: 3).
--benchmark-trials <n> Set the number of benchmark trials to run (default: 5).
Simulation mode:
-Z [<n>],--simulation [<n>] Mining test mode. Used to validate kernel optimizations. Optionally specify block number.
Mining configuration:
-G,--opencl When mining use the GPU via OpenCL.
-U,--cuda When mining use the GPU via CUDA.
-X,--cuda-opencl Use OpenCL + CUDA in a system with mixed AMD/Nvidia cards. May require setting --opencl-platform 1 or 2. Use --list-devices option to check which platform is your AMD.
--opencl-platform <n> When mining using -G/--opencl use OpenCL platform n (default: 0).
--opencl-device <n> When mining using -G/--opencl use OpenCL device n (default: 0).
--opencl-devices <0 1 ..n> Select which OpenCL devices to mine on. Default is to use all
-t, --mining-threads <n> Limit number of CPU/GPU miners to n (default: use everything available on selected platform)
--list-devices List the detected OpenCL/CUDA devices and exit. Should be combined with -G, -U, or -X flag
--display-interval <n> Set mining stats display interval in seconds. (default: every 5 seconds)
-L, --dag-load-mode <mode> DAG generation mode.
parallel - load DAG on all GPUs at the same time (default)
sequential - load DAG on GPUs one after another. Use this when the miner crashes during DAG generation
single <n> - generate DAG on device n, then copy to other devices
OpenCL configuration:
--cl-kernel <n> Use a different OpenCL kernel (default: use stable kernel)
0: stable kernel
1: experimental kernel
--cl-local-work Set the OpenCL local work size. Default is 128
--cl-global-work Set the OpenCL global work size as a multiple of the local work size. Default is 8192 * 128
--cl-parallel-hash <1 2 ..8> Define how many threads to associate per hash. Default=8
CUDA configuration:
--cuda-block-size Set the CUDA block work size. Default is 128
--cuda-grid-size Set the CUDA grid size. Default is 8192
--cuda-streams Set the number of CUDA streams. Default is 2
--cuda-schedule <mode> Set the schedule mode for CUDA threads waiting for CUDA devices to finish work. Default is 'sync'. Possible values are:
auto - Uses a heuristic based on the number of active CUDA contexts in the process C and the number of logical processors in the system P. If C > P, then yield else spin.
spin - Instruct CUDA to actively spin when waiting for results from the device.
yield - Instruct CUDA to yield its thread when waiting for results from the device.
sync - Instruct CUDA to block the CPU thread on a synchronization primitive when waiting for the results from the device.
--cuda-devices <0 1 ..n> Select which CUDA GPUs to mine on. Default is to use all
--cuda-parallel-hash <1 2 ..8> Define how many hashes to calculate in a kernel, can be scaled to achieve better performance. Default=4
--cuda-noeval bypass host software re-evaluation of GPU solutions.
This will trim some milliseconds off the time it takes to send a result to the pool.
Use at your own risk! If GPU generates errored results they WILL be forwarded to the pool
Not recommended at high overclock.
API core configuration:
--api-port Set the api port, the miner should listen to. Use 0 to disable. Default=0, use negative numbers to run in readonly mode. for example -3333.
General Options:
-v,--verbosity <0 - 9> Set the log verbosity from 0 to 9 (default: 5). Set to 9 for switch time logging.
-V,--version Show the version and exit.
-h,--help Show this help message and exit.
Environment variables:
NO_COLOR - set to any value to disable color output. Unset to re-enable color output.

使用 Let’s Encrypt 及 Certbot 在 Debian 上的 Nginx 啟用 HTTPS

本篇文章所搭配環境為 Debian 9 + Nginx 並使用架構在 Let’s Encrypt 上的 Certbot 來啟用 HTTPS 。

 

找出各網域所對應的根目錄

先去 /etc/nginx/sites-enabled/default 這個檔案記錄下各子網域所對應的根目錄
例如我的像是這樣
dreambreakerx.com /usr/share/nginx/www
api.dreambreakerx.com /usr/share/nginx/api
blog.dreambreakerx.com /usr/share/nginx/blog

 

安裝 Certbot


apt-get install python-certbot-nginx -t stretch-backports

如果無錯誤請直接跳到設定 Certbot 那個步驟,若是出現
E: The value 'stretch-backports' is invalid for APT::Default-Release as such a release is not available in the sources
請按照 https://backports.debian.org/Instructions/
編輯 /etc/apt/sources.list 這個檔案新增這行
deb http://ftp.debian.org/debian stretch-backports main


pico /etc/apt/sources.list
apt-get update
apt-get install python-certbot-nginx -t stretch-backports

 

設定 Certbot


certbot --authenticator webroot --installer nginx

各項設定請參考下面,需要注意的是我輸入一個空格字元選擇所有的網域,以及最後我設定強制使用 https


Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): example@gmail.com

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: Y

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: dreambreakerx.com
2: api.dreambreakerx.com
3: blog.dreambreakerx.com
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

Input the webroot for dreambreakerx.com: (Enter 'c' to cancel): /usr/share/nginx/www

Select the webroot for api.dreambreakerx.com:
-------------------------------------------------------------------------------
1: Enter a new webroot
2: /usr/share/nginx/www
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Input the webroot for api.dreambreakerx.com: (Enter 'c' to cancel): /usr/share/nginx/api

Select the webroot for blog.dreambreakerx.com:
-------------------------------------------------------------------------------
1: Enter a new webroot
2: /usr/share/nginx/api
3: /usr/share/nginx/www
-------------------------------------------------------------------------------
Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 1
Input the webroot for blog.dreambreakerx.com: (Enter 'c' to cancel): /usr/share/nginx/blog

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

接著可以試試新網址,也試試舊網址有沒有轉址到 https

 

自動更新證書

更新時使用這句


certbot renew --dry-run

也可以加入 Cron Job ,讓它每個星期一早上3點30分自動執行


crontab -e
30 3 * * 1 certbot renew --dry-run

 

使用 Network Link Conditioner 在 iOS 實機與模擬器模擬伺服器無回應逾時或網路極慢的狀況

在製作一個需要連網的 App 時,常常會需要打 API 取得資料,所以我們一定會針對伺服器回傳的資料處理,但要是伺服器根本就無回應呢?這時我們就需要使用 Network Link Conditioner 這項工具模擬出不同的網路環境做處理。

 


實機設定

先從 設定 → 開發者 → Network Link Conditioner 進去。
選擇 profile ,這裡因為要模擬 timedout 的情況所以選擇 100% Loss 。
並且 Enable 設定為開啟,這樣整台 iOS 裝置都會受到影響。

Network Link Conditioner iOS

 


模擬器設定

由於模擬器的設定裡沒有 Network Link Conditioner ,必須透過電腦設定才行。
請依照 Xcode 版本下載對應的檔案,不然會沒有效果。
Xcode 8 以上請從這下載安裝。
Xcode 7 以下請從這下載安裝。

掛載 dmg 尋找 Network Link Conditioner.prefPane 並點兩下安裝重開機。
路徑是 Additional Tools/Hardware/Network Link Conditioner.prefPane 。
安裝成功會在系統偏好設定裡出現 Network Link Conditioner。

Network Link Conditioner Mac 1

Network Link Conditioner Mac 2

使用方法跟實機一樣就不多說了,也可用用 Very Bad Network 這個 profile 模擬網路超慢的情況,這個會影響到整台電腦與模擬器請小心使用。

 

在 UITableViewCell 中取得 UITableView 或 UIViewController

在 iOS 7 ~ iOS 10 , UITableViewCell 與 UITableView 中間多了一層 UITableViewWrapperView ,直到 iOS 11 又移除...

將以下兩段複製到繼承 UITableViewCell 的自定義 class 裡


weak var tableView: UITableView? {
// 在 iOS 7 ~ 10 中 ,UITableViewCell 的 superview 為 UITableViewWrapperView 而不是 UITableView
if #available(iOS 11, *) {
return self.superview as? UITableView
}else {
return self.superview?.superview as? UITableView
}
}

weak var viewController: UIViewController? {
return self.tableView?.delegate as? UIViewController
}

啟用 HiNet 中華電信 IPv6 上網服務

本教學主要適用於 HiNet 光世代用戶啟用 IPv6

從很久之前就有聽過 IPv6 這個詞,在電腦展時也有一直在宣導,那時我以為這是只要 ISP 那邊設定就好,所以沒去特別理解它。過了很久後才知道這是用戶端這邊也要設定,而且還需要自己向 ISP 申請才行, ISP 他們也沒特別推動。難怪 IPv6 出來這麼久,大部分用戶都還是只支援 IPv4 ,只有政府機關、學術機構以及架站的人早早就同時支援 IPv4 與 IPv6 了。

關於 IPv6 ,網路上有很多解釋了,最主要就是解決 IP 不夠分配的問題,加上現在又進入物聯網的時代 ,問題只會更加嚴重。根據 Google 的統計資訊,全世界只有 12.49 % 的用戶是 IPv6 ,台灣甚至只有 0.57% ...

IPv6 有以下優點:
1. 更多的 IP
2. 優化網路效能 (不需要 NAT 以及封包改善)
3. 更好的安全性

 


首先 IPv6 需要 ISP 以及軟硬體都支援
ISP:跟 HiNet 線上申請即可 (目前只有光世代用戶可以申請)
硬體:數據機及網路分享器 (若數據機太舊會派人來更換,網路分享器只要登入管理介面看看有沒有 IPv6 相關設定就可確認)
軟體:作業系統本身支援或第三方軟體 (本教學不用安裝任何軟體)

先用這兩個網站測試 IPv6 的支援度如何
http://test-ipv6.com/
http://ipv6-test.com/

 


檢測完後會列出得分及需要改善的項目,截圖是啟用 IPv6 後的得分啦,如果很低分就跟著教學做設定吧。若第一個網站測出來結果是 9/10 ,只要設定作業系統內的 DNS 就會變成滿分囉!

 


ISP部分

先到中華電信網路客服中心的頁面提出申請

點選 "申請 IPv6"

 

填入電話號碼,如果真的不知道要填甚麼請看下一步的連結

 

連線資訊查詢
登入後此頁面右下方有一項叫做 "附掛號碼"
請複製填到上圖的"電(信)話號碼"欄位中

把基本資料填一填並送出

 

之後你會收到一封告知申請已完成的電子郵件
大約要2~3個工作日才會完成整個申請內容 (視情況可能會派人來換機器)

可以到這個頁面查看進度

點選 "網路客服中心申請紀錄"

 

點選"申請IPv6"
再點選"查詢聯單明細"

 

確定收到第二封說明完工的電子郵件再繼續下面的步驟

 


網路分享器部分

我是用硬體撥接,這樣系統就不用撥號了。

 

跟 IPv4 幾乎一樣的設定

 

IPv6 主要、次要 DNS 分別設定
2001:b000:168::1
2001:b000:168::2

 

IPv4 主要、次要 DNS 分別設定
168.95.1.1
168.95.192.1

 


作業系統部分

這邊是以 Windows 10 為例,但其實不同版本的界面都差不多,可以參考看看。

 

IPv6 主要、次要 DNS 分別設定
2001:b000:168::1
2001:b000:168::2

 

IPv4 主要、次要 DNS 分別設定
168.95.1.1
168.95.192.1

 

設定皆正常後你會看到 IPv4 與 IPv6 都連上網際網路了

 


最後再試試那兩個測試網站看看分數是否有提升吧~
有看到有人說某些網站的速度有變快、Youtube 緩衝時間變短、P2P下載更快之類的
可能就是該服務有多一條線給 IPv6 來跑
每個 IPv6 用戶少所以分得的頻寬比較多就好比當初 4G 剛開台的情況