Skip to content

Zeroplex 生活隨筆

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

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

年份: 2016 年

PHP array key 的資料型態

Posted on 2016 年 5 月 22 日2021 年 3 月 12 日 By 日落 在〈PHP array key 的資料型態〉中尚無留言

之前因為 array_merge() 花了很久的時間 debug,這次發現其實不只 array_merge() 會需要注意資料型態的問題,其他 statement 也要注意。

這次遇到是因為使用 time 當作 array 的 key 時發現的:

$timeTable = [];
$timeTable['0800'] = '早上';
$timeTable['1200'] = '中午';
$timeTable['2000'] = '晚上';

取直時發現資料型態和 assign 時不一樣,可以被轉成數字的全部變成數字了:

array(3) {
  ["0800"]=>
  string(6) "早上"
  [1200]=>
  string(6) "中午"
  [2000]=>
  string(6) "晚上"
}

原因是 PHP array 的預設行為,是會自動對 key 作 type casting。可被判斷成數值的 (is_numeric()) 都會自動被轉為 int。所以撰寫時要注意,如果 array 的 key 若需要避免被 casting 時,必須手動加上一些字元讓 is_numeric() 無法將其判斷為數字。

以上面的例子,可以將時間加上「:」

  • 08:00
  • 12:00
  • 20:00

Ref:

  • PHP: Arrays – Example #2 Type Casting and Overwriting example
Tags:PHP

PHP namespace

Posted on 2016 年 5 月 15 日2021 年 3 月 12 日 By 日落 在〈PHP namespace〉中尚無留言

PHP 可以自行定義程式中定義的方法、類別所屬的 namespace,但是若在 namespace 定義之前就先就先寫了其他 statement則會出現錯誤訊息。例如以下的程式:

<?php

$a = 1;

namespace Zeroplex;

執行後變會出現錯誤訊息:

Fatal error: Namespace declaration statement has to be the very first statement in the script ....

主要是因為變數、函式、類別都可以有自己所屬的 namespace,若沒有事先定義該程式所屬的 namespace,PHP 則會造成混淆而發生錯誤。

總之,namespace 的定義,直接方在 open tag 之後的第一行,避免這類問題發生。

Tags:PHP

aptitude update 找不到 GPG key 的處理

Posted on 2016 年 3 月 24 日2021 年 3 月 12 日 By 日落 在〈aptitude update 找不到 GPG key 的處理〉中尚無留言

執行的 aptitude update 以後,出現錯誤訊息:

W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 00A6F0A3C300EE8C
W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4F4EA0AAE5267A6C

可以透過下列指令去 import keys:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com {KEY}

例如上面的錯誤,可以這樣 import key:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 00A6F0A3C300EE8C
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4F4EA0AAE5267A6C

reference: How do I fix the GPG error “NO_PUBKEY”?

Tags:Ubuntu

Ubuntu PPA for new version of Git

Posted on 2016 年 3 月 17 日2023 年 1 月 8 日 By 日落 在〈Ubuntu PPA for new version of Git〉中尚無留言

舊版本的 git 有安全性漏洞,需要升級到 2.7.1 以上版本
server and client side remote code execution through a buffer overflow in all git versions before 2.7.1 (unpublished ᴄᴠᴇ-2016-2324 and ᴄᴠᴇ‑2016‑2315)

Ubuntu 14.04 的 git 還在 1.x,只好靠 PPA 抓新版本:

sudo add-apt-repository ppa:git-core/ppa
sudo aptitude update && sudo aptitude upgrade
Tags:Git, Ubuntu

SSLv2 可能也不安全了

Posted on 2016 年 3 月 2 日2021 年 3 月 12 日 By 日落 在〈SSLv2 可能也不安全了〉中有 1 則留言

More than 11 million HTTPS websites imperiled by new decryption attack
http://arstechnica.com/security/2016/03/more-than-13-million-https-websites-imperiled-by-new-decryption-attack/

解釋:
最新的 SSL connection 攻擊:DROWN attack
https://blog.gslin.org/archives/2016/03/02/6381/

目前自己的機器好像沒受到影響,被份一下 nginx 的 HTTP 設定 (從多方搜尋來得設定值):

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;

若不清楚自己的 server 設定是否安全,可以透過 SSL Labs 提供的服務,來檢查是否有什麼潛在的問題。

Tags:資訊安全

文章分頁

上一頁 1 ... 3 4 5 下一頁

其他

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