PHP 取得本月份最後一天的日期

PHP 要抓取本月份的最後一天,一般都是抓下個月第一天,然後轉成 timestamp - 3600 秒 (減1秒也行,只要到上個月的前一天就好),來取得上個月的最後一天。

PHP 的 date 使用 "t" 就可以抓到此月份最後一天的日期,如下述範例:

<?php                                                                                                                                                                                                    
echo date('Y-m-t', strtotime('now')); // 2017-07-31                                                                                                                                                         
?>

註:strtotime('now') 可省略

PHP 建立物件來輸出 JSON 格式

PHP 想要輸出 JSON [{0 -> xxx, north -> ooo}],但是沒有物件(PHP: Objects),想要直接指定值,再使用 json_encode() 產生 JSON,可以使用 stdClass(); 來達成。

註:stdClass: Anonymous Objects

閱讀全文〈PHP 建立物件來輸出 JSON 格式〉

Bash Shell Pipeline 將資料一行一行分開處理 (read + while)

Linux Shell 處理資料, 大多都用 cat、sed、grep、awk ... 等等, 但這些都是對整堆資料處理, 若需要將這些資料額外一行一行拉出來另外處理的時候, 於 Shell script 要怎麼做?

閱讀全文〈Bash Shell Pipeline 將資料一行一行分開處理 (read + while)〉

Beej's Guide to Network Programming 正體中文版 免費電子書

Beej's Guide to Network Programming 這本書是寫 網路基礎 + 網路程式設計, 由淺入深的教學 (從 TCP、UDP、網路七層... 講到 IPv4、IPv6、Server-Client、blocking、non-blocking、MTU... 等等)

看這本書時, 發現網路七層已經背不起來了, 順便做點筆記:

  1. Application (應用層)
  2. Presentation (表現層)
  3. Session (會談層)
  4. Transport (傳輸層)
  5. Network (網路層)
  6. Data Link (資料鏈結層)
  7. Physical (實體層)
  8. 註: 以上七層的順序和編號是倒過來的~
  9. TCP: Stream Sockets (串流式 Sockets) - SOCK_STREAM
  10. UDP: Datagram Sockets (訊息式 Sockets) - SOCK_DGRAM

註1: 此書範例是以 Linux socket 為主.

註2: 感謝 Aaron Liao 的翻譯 + 推薦, 翻譯非常棒~

閱讀全文〈Beej's Guide to Network Programming 正體中文版 免費電子書〉

一個空格引發的慘劇

最近流傳的一個很悲慘的 Giant Bug fix, 詳見此連結: Commit a047be85247755cdbe0acce6f1dafc8beb84f2ac.

此次 Commit 修正的內容如下: (應該是手誤, 多了一個空白, 但是這個空白造成非常大的慘劇(把 /usr 砍掉))

@@ -348,7 +348,7 @@ case "$DISTRO" in
-  rm -rf /usr /lib/nvidia-current/xorg/xorg
+  rm -rf /usr/lib/nvidia-current/xorg/xorg

這種事情還蠻常見的, 特別是在 緊張 或 精神不佳 的狀況, 就常會有這種大爆炸的狀況發生.

最常見的避免法, 是把 rm 改成 mv, 先都搬到一個目錄, 確定沒有用再砍掉(或定時砍掉), 可以讓此災難影響範圍小一點.

閱讀全文〈一個空格引發的慘劇〉