Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: 資訊學習

IBM DNS 9.9.9.9 測試

Posted on 2017 年 11 月 21 日2021 年 3 月 12 日 By 日落 在〈IBM DNS 9.9.9.9 測試〉中尚無留言

看到新聞:「IBM宣布推出免費DNS轉址服務 Quad9,只要將DNS伺服器設為9.9.9.9 即可阻擋惡意網站」,聽起來頗有趣的,所以玩了一下。

我這邊比較偏重 DNS 回應速度,自家機器在中華電信的線路上,先用 168.95.1.1 來看回應速度:
johnroyer@box:~$ ping -c 5 168.95.1.1
PING 168.95.1.1 (168.95.1.1) 56(84) bytes of data.
64 bytes from 168.95.1.1: icmp_seq=1 ttl=247 time=11.5 ms
64 bytes from 168.95.1.1: icmp_seq=2 ttl=247 time=11.8 ms
64 bytes from 168.95.1.1: icmp_seq=3 ttl=247 time=11.9 ms
64 bytes from 168.95.1.1: icmp_seq=4 ttl=247 time=10.5 ms
64 bytes from 168.95.1.1: icmp_seq=5 ttl=247 time=10.3 ms
--- 168.95.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4008ms
rtt min/avg/max/mdev = 10.377/11.248/11.921/0.664 ms


再來看看 Google DNS 8.8.8.8:

johnroyer@box:~$ ping -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=26.1 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=28.7 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=22.0 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=15.7 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=57 time=33.0 ms
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4008ms
rtt min/avg/max/mdev = 15.702/25.163/33.086/5.935 ms

最後看一下 9.9.9.9 的回應速度:

johnroyer@box:~$ ping -c 5 9.9.9.9
PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.
64 bytes from 9.9.9.9: icmp_seq=1 ttl=52 time=108 ms
64 bytes from 9.9.9.9: icmp_seq=2 ttl=52 time=107 ms
64 bytes from 9.9.9.9: icmp_seq=3 ttl=52 time=108 ms
64 bytes from 9.9.9.9: icmp_seq=4 ttl=52 time=113 ms
64 bytes from 9.9.9.9: icmp_seq=5 ttl=52 time=108 ms
--- 9.9.9.9 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 107.934/109.402/113.095/1.905 ms

目前 9.9.9.9 的回應速度還差了一個數量級,所以如果瀏覽器開一個結構比較複雜的網頁,說不定開啟速度會慢到一秒。然後我比較希望有病毒樣本,所以不希望那麼安全的 DNS (拖走)


另外,速度比較慢的原因可能是網路節點問題。用 mtr 掃了一下 route:

                             My traceroute  [v0.85]
box (0.0.0.0)                                          Tue Nov 21 14:51:00 2017
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                       Packets               Pings
 Host                                Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 192.168.0.1                       0.0%     4    0.5   0.9   0.4   1.8   0.0
 2. h254.s98.ts.hinet.net             0.0%     4    9.1   9.7   9.1  11.0   0.6
 3. hc-c6r1.router.hinet.net          0.0%     4    8.7   9.2   8.7   9.8   0.0
 4. sczs-3202.hinet.net               0.0%     4    8.6  11.9   8.6  20.4   5.7
 5. TPDT-3012.hinet.net               0.0%     3   13.0  13.6  13.0  14.7   0.7
 6. 220-128-14-90.HINET-IP.hinet.net  0.0%     3   11.2  23.0  11.2  46.7  20.5
 7. pcpd-3212.hinet.net               0.0%     3   10.9  11.3  10.9  11.8   0.0
 8. pcpd-3211.hinet.net               0.0%     3   11.7  13.4  10.5  18.0   4.0
 9. 72.14.202.178                     0.0%     3   10.3  11.2  10.3  12.0   0.7
10. 108.170.244.129                   0.0%     3   12.4  11.6  10.9  12.4   0.0
11. 72.14.238.189                     0.0%     3   11.1  13.2  11.1  16.2   2.6
12. google-public-dns-a.google.com    0.0%     3   11.2  11.6  11.2  11.9   0.0

8.8.8.8 其實沒有連到國外,Google 在台灣國內就有 DNS 節點。

同樣方法看一下 9.9.9.9 的 route:

                             My traceroute  [v0.85]
box (0.0.0.0)                                          Tue Nov 21 14:52:53 2017
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                       Packets               Pings
 Host                                Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 192.168.0.1                       0.0%     3    0.4   1.0   0.4   2.1   0.7
 2. h254.s98.ts.hinet.net             0.0%     3    9.0   9.0   9.0   9.1   0.0
 3. hc-c6r1.router.hinet.net          0.0%     3   10.3  10.7   9.0  13.0   2.0
 4. sczs-3201.hinet.net               0.0%     3   16.2  23.3   9.8  43.8  18.0
 5. TPDT-3011.hinet.net               0.0%     3   11.3  12.6  11.3  13.5   1.0
 6. r4103-s2.tp.hinet.net             0.0%     2   12.9  12.2  11.5  12.9   1.0
 7. r4103-s2.tp.hinet.net             0.0%     2   12.0  23.4  12.0  34.7  16.0
 8. xe-0-1-0-3-5.r00.osakjp02.jp.bb.  0.0%     2   48.0  54.8  48.0  61.6   9.6
 9. ae-5.r25.osakjp02.jp.bb.gin.ntt.  0.0%     2   47.6  50.8  47.6  54.0   4.5
10. ae-0.r20.sngpsi07.sg.bb.gin.ntt.  0.0%     2  117.4 114.2 110.9 117.4   4.6
11. ae-1.r01.sngpsi03.sg.bb.gin.ntt.  0.0%     2  106.7 107.4 106.7 108.1   0.0
12. ge-100-0-0-11.r01.sngpsi03.sg.ce  0.0%     2  116.8 114.4 112.0 116.8   3.3
13. dns.quad9.net                     0.0%     2  109.9 108.7 107.6 109.9   1.4

終端的節點在美國,所以速度比較慢是一定的啦。在多給他們一點時間吧。

Tags:資訊學習

函式中參數順序的設計

Posted on 2017 年 11 月 10 日2021 年 3 月 12 日 By 日落 在〈函式中參數順序的設計〉中尚無留言

最近在 refactor legacy code,遇到很尷尬的函式定義,笑也不是哭也不是。

函式會要求使用者傳入多個參數,有時並不是所有的參數都必須給值,函式的設計者會以大家較常使用的方式來當作參數的預設值,例如 PHP 裡面的「json_decode()」:

json_decode($json);  // consider as json_decode($json, false)

json_decode($json, true);  // 不使用預設值才手動傳數第二個參數

但這次遇到比較尷尬的是,legacy code 把第一個參數設計為 optional,也就是有預設值。但問題來了,在 PHP 的語法當中,呼叫函式無法在前幾個參數不給值:

getData( , 'some', 'option');  // syntax error

所以不管怎麼樣,都至少要給第一個參數:

getData(null, 'some', 'option');

所以把有預設值的參數放在前面其實根本沒有省下什麼時間呀 … XD

Tags:程式設計, 資訊學習

讓 MySQL 在查詢時區分英文大小寫

Posted on 2017 年 10 月 20 日2021 年 3 月 12 日 By 日落 在〈讓 MySQL 在查詢時區分英文大小寫〉中尚無留言

今天又遇到相同的問題,解法有很多種,可以從 SQL 下手,也可以在 table schema 就先做好設定。

SQL 強制區分大小寫

假設原本的 SQL 為:
SELECT * FROM users WHERE name = ‘john’ ;

這樣會撈出「John」、「john」等結果。那麼可以要求 MySQL 使用 binary 的辨識方法去做搜尋:

SELECT * FROM users WHERE binary name = 'johhn';

這樣一來,查詢時 name 欄位就會區分大小寫來做查詢。

修改 table schema

如果在設計 table 時,就確定查詢一定要區分大小寫時,可以在 create table 就先將欄位設定好:

CREATE TABLE users (
    name varchar(100) binary
)

這樣之後下 query 時,只要遇到 name 欄位,就自動會區分大小寫。

修改 collation type

一般常用的 collation 是「utf8_general_ci」,該 collation 最後面的「ci」其實是「Case Insensitive」的意思,也就是不區分大小寫。

如果要讓該 table 的所有欄位都區分大小寫,可以將 collation 的 postfix 改為「cs」或是「bin」,例如:

CREATE TABLE user (
    name varchar(100)
) COLLATE utf8_general_bin ;

以上三個區分大小寫的方法 scope 差異頗大的,可以挑比較適合當下情況的方法來使用。

Tags:MySQL, 資訊學習

WPA2 金鑰交換協議問題導致的安全漏洞

Posted on 2017 年 10 月 17 日2021 年 3 月 12 日 By 日落 在〈WPA2 金鑰交換協議問題導致的安全漏洞〉中尚無留言

T 客邦看到「破功確認!KRACK破解 WPA2 原理已公開,你家的無線路由器還安全嗎?」,是在於 wifi 路由器和 client 做金鑰交換時,原本擔心擔心環境中的訊號傳遞不好,所以在金鑰交換協議上制定在雙方都沒有確認金鑰交換成功時,可以再次跑一次金鑰交換的流程。

比較尷尬的是,這份金鑰交換的協議並沒有制定怎麼樣才算交換成功,而中止流程。所以駭客只要發出金鑰交換的訊號,client 以為要再次跑流程時就會中招。

看起來目前的解決方法,就是先降低 wifi 訊號強度,讓只有 wifi client 所在環境才收的到訊號,讓偽造的金鑰交換訊號沒辦法進入 wifi 使用環境範圍內。再來就是等 wifi 的通訊協定更新了。

gslin 這邊提到,走 wifi 最安全的方法還是用 VPN。總之,電磁波是任何人都可以收到的,有無線網路至少、至少都要使用有 HTTPS 的加密通訊。

Tags:資訊學習

建立供行動裝置使用的網頁瀏覽界面

Posted on 2017 年 10 月 11 日2021 年 3 月 12 日 By 日落 在〈建立供行動裝置使用的網頁瀏覽界面〉中尚無留言

最近用手機追新聞有感,分享一下心得。

由於行動裝置的使用量漸漸超越了桌上型電腦,而行動裝置為了攜帶方便體積本身就小,連帶的螢幕也較桌上型電腦小很多,因此不少網路服務也跟著建立行動裝置專用的網頁,像是自由時報就有針對行動裝置客製化網頁:

自由時報截圖

有留意的話可以發現行動版網頁的網址和供一般電腦瀏覽的網址是不一樣的,如了全幅廣告不說,網頁寬度、排版方式都看電腦版不同。

這時如果覺得文章不錯,透過行動裝置分享道社交平台上,別人如果是使用電腦開啟時,則會出現這樣的畫面:

別人就會變成使用超大螢幕來看超小版面的新聞,而且還有全幅蓋版廣告喔 XD

如果有 sense 一點的人,可能會想試著把網址「http://m.ltn.com.tw」改成「http://www.ltn.com.tw」嘗試開啟一般網頁版來閱讀,可惜自由時報沒有這個設計,改完網址只會顯示 404 找不到網頁 (但蘋果日報將網址改為 www 開頭以後是可以正常瀏覽的,這個設計頗為貼心)。

那什麼樣的設計才能同時滿足行動裝置以及一般電腦呢?可以參考 Wikipedia。

Wikipedia 使用 Responsive Web Design (RWD) 來讓瀏覽器自動判斷裝置、螢幕大小,並自動更換成適合閱讀的版面。即使網址相同,在不同裝置上可以呈現不同的畫面,讓使用者方便閱讀。

只是一自己的經驗,要設計一個讓不同行動裝置都可以正常瀏覽、顯示符合需求的 CSS,費工又費時,就看業者到底想要給使用者什麼樣的體驗了。

Tags:分享, 資訊學習

文章分頁

上一頁 1 ... 4 5 6 ... 53 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.