Skip to content

Zeroplex 生活隨筆

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

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

標籤: Web

URL Normalize (URL 正規化)

Posted on 2023 年 1 月 18 日2023 年 1 月 18 日 By 日落 在〈URL Normalize (URL 正規化)〉中尚無留言

URL 呈現的形式很多樣,例如以下幾個 URL 事實上都會開啟相同的頁面:

  • https://zeroplex.tw
  • https://zeroplex.tw/
  • https://zeroplex.tw:443/
  • https://zeroplex.tw/#note

另外網址中的參數順序是沒有差異的。例如以下二個 URL 等義:

  • https://test.com?query=key&lang=en
  • https://test.com?lang=en&query=key

如果要寫 crawler 的話,最好先做 URL normalize 以後再來決定是否要處理,不然會花不少時間在重複的資料上。

另外有觀察到一些蠻討人厭的追蹤標籤,不影響結果,單純追蹤瀏覽行為。像是:

  • ?fbclid=:從 Facebook 開啟連結後,參數會自動加入
  • utm_source、utm_campaign 等:Google Analytics 用來記錄流量來源的一些參數

Tags:Web

s3fs 參數設定

Posted on 2022 年 7 月 16 日2022 年 11 月 4 日 By 日落 在〈s3fs 參數設定〉中尚無留言

s3fs 是透過 Linux FUSE 界面來與 AWS S3 服務串接,這樣就可以 mount 一個容量幾乎是無限大的 device。

雖然官方文件的 README 很簡單,事實上照著做一定會遇到一堆問題。踩雷以後建議按照以下步驟來規劃並設定 s3fs 的參數:

  1. AWS 設定
    1. 建立 S3 bucket
    2. 建立 IAM 的存取政策 (policy)
  2. server 設定
    1. 建立暫存路徑
    2. s3fs mount 參數設定、測試
    1. fstab 設定

More “s3fs 參數設定” »

Tags:AWS, Web

台大測速網站

Posted on 2022 年 6 月 26 日2022 年 7 月 16 日 By 日落 在〈台大測速網站〉中尚無留言

不曉得 ISP 目前是否會自動對這個測速網站開放網路頻寬,至少多用幾個不同的測速工具跑幾次才會準 XD

NTU Speed5 : http://speed5.ntu.edu.tw/speed5/

Tags:Web

網站跑 cron 要注意的事情

Posted on 2021 年 3 月 18 日2022 年 7 月 16 日 By 日落 在〈網站跑 cron 要注意的事情〉中尚無留言

協助建立網站平台,看到平台的 cron 是這樣跑的:

curl  https://my.site/cron/update_catch.php
curl  https://my.site/cron/delete_unpaied_user.php

這樣樣做會出現問題:任何網路上的使用者都可以觸發 cron job。
若遇到惡意使用者去戳 update_catch.php,應該就可以作到 DoS 的效果。

比較好的作法,還是將 cron job 放在 web 沒有辦法 access 的路徑,再使用主機的程式去執行。例如:

/usr/bin/php  /path/to/site/internal/cron/update_catch.php
Tags:Linux, PHP, Web

Post/Redirect/Get Pattern

Posted on 2014 年 9 月 14 日2022 年 7 月 16 日 By 日落 在〈Post/Redirect/Get Pattern〉中尚無留言

Post/Redirect/Get (PRG) pattern 是一種處理表單資料的流程,可以防止使用者回上一頁、或是使用重新整理的方式重複送出表單資料。

再拿留言板舉例 (萬年題材 XD),假設在 form.html 填寫完表單,送出到資料到 post.php,而 post.php 處理資料後直接將結果顯示出來 (傳回 HTML),這個時候再瀏覽器按下「重新整理」按鈕,變會看到提示訊息,詢問是否要重送表單內容。

此時若重送表單資料,則會重新送出一模一樣的內容,若 post.php 沒有特別檢查,就會重複處理。很久以前開心農場就是用這種方法洗禮物的。

為了避免瀏覽器可以重新整理頁面,將資料處理的流程稍微做個調整:

  1. form.html 設定 submit 後,表單資料送給 post.php 處理
  2. post.php 處理資料後,不直接顯示 HTML,只送出 HTTP 3xx 做重新導向,跳到 done.php 顯示處理結果
  3. done.php 透過 URL 參數,顯示相對應的訊息

post.php 寫法大致如下:

if(saveData($_POST)){
   $status = 'ok';
}else{
   $status = 'error';
}

header('Location: done.php?status=' . $status);

由於使用 HTTP 3xx 重新導向,瀏覽器不會將 post.php 紀錄到瀏覽紀錄中,按下「上一頁」按鈕也是回到 form.html 而非 post.php,且 done.php 使用 HTTP GET 方式取得內容,所以重新整理頁面也不會重新送出表單內容。此流程按照三個步驟的 HTTP request 方式稱為 Post/Redirect/Get pattern。

PRG pattern 寫起來至少會有三個頁面要實作,也是挺麻煩的。若還要簡單一點的方式,那大概就是改用 AJAX 處理表單了吧。

Reference:
Post/Redirect/Get – Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Post/Redirect/Get

Tags:Web, 資訊學習

文章分頁

1 2 下一頁

其他

關於我  (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 國際 授權條款授權.