Skip to content

Zeroplex 生活隨筆

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

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

Case-insensitive in HFS+

Posted on 2015 年 4 月 14 日2021 年 3 月 12 日 By 日落 在〈Case-insensitive in HFS+〉中有 1 則留言

因為某個 repo. 底下有二個大小寫不同的檔案:

$ ls
readme.md
README.md

git 顯示檔案有異動:

$ git status

    modified: readme.md

確定檔案內容有問題,強制從 repo. 中拉出 readme.md:

$ git checkout -- readme.md

checkout 以後,換成 README.md 有異動:

$ git status

    modified: README.md

看起來是 case-insensitive 的問題,先強制讓 git 區分大小寫:

$ git config --global core.ignorecase false

可惜還是沒有效果。

後來才知道 Mac OS 的檔案系統 HFS+ 中,預設是不區分大小寫的。
也可在格式化時可以另外設定成 case-sensitive,但有可能會造成部分程式無法正常運作。

Ref:

  • HFS+ case-sensitive or case-insensitive — which type to use for the primary drive partition?
  • 同場加映:Vulnerability announced: update your Git clients
Tags:Mac

Install Gems without Docs

Posted on 2015 年 3 月 30 日2021 年 3 月 12 日 By 日落 在〈Install Gems without Docs〉中尚無留言

使用 gems install 時,預設會下載並產生 gem 說明文件,但這個步驟會花掉不少時間。

若環境為 production,說明文件其實是沒有必要安裝的,可以在家目錄下新增 .gemrc 檔,要求安裝 gems 時忽略說明文件:

cd ~
echo 'gem: --no-rdoc --no-ri' > .gemrc
Tags:Note, Ruby

irssi 快速鍵

Posted on 2015 年 3 月 18 日2021 年 3 月 12 日 By 日落 在〈irssi 快速鍵〉中尚無留言

無意間按錯,發現一些快速鍵可以用。

Ctrl + N / P:下一個 / 上一個 channel

Alt + N / P:該 channel 訊息下一頁 / 上一頁

Tags:資訊學習

PHP array_merge() 在資料型別上行為的差異

Posted on 2014 年 11 月 25 日2021 年 3 月 12 日 By 日落 在〈PHP array_merge() 在資料型別上行為的差異〉中有 2 則留言

array_merge() 可合併多個陣列,遇到相同的陣列索引,將由後方陣列的值取代前一個值。

如:

$d = array(
  'a' => 111,
  'b' => 222,
);
 
$e = array(
  'a' => 123,
  'c' => 333,
);
var_dump(array_merge($d, $e));

執行結果為:

array(3) {
  ["a"]=>
  int(123)
  ["b"]=>
  int(222)
  ["c"]=>
  int(333)
}

此特性常被用來做設定選項合併,如:

function__construct(array $config){
  $defaultsStyle = array(
    'display' => true,
    'color' => 'red',
    'size' => '14px',
  );

  $settings = array_merge($defaultStyle, $config);

  // initialize by $settings
}

上面的寫法可以讓預設的三項索引「display」、「color」、「size」一定存在,不需特別在做 array_key_exists() 檢查,且外部傳入的數值,會將內定的預設值覆蓋掉。

不過只有字串型態的陣列索引,經過 array_merge() 以後可以保留原有的索引名稱,若為數字型態的陣列索引,array_merge() 會將原有索引打掉重新排列。

如:

$d = array(
  0 => 111,
  1 => 222,
);
 
$e = array(
  9 => 123,
  7 => 333,
);
var_dump(array_merge($d, $e));

執行的結果會是:

array(4) {
  [0]=>
  int(111)
  [1]=>
  int(222)
  [2]=>
  int(123)
  [3]=>
  int(333)
}

另外 array_merge() 有個很奇怪的行為,假設陣列的索引是「類似數字」的字串 (不曉得判斷規則為何),像是 “100”、”200″,經過 array_merge() 時會被當成數字型索引處理。

如:

$d = array(
  '100' => 111,
  '200' => 222,
);
 
$e = array(
  '100' => 100,
  '300' => 333,
);
var_dump(array_merge($d, $e));

執行後為:

array(4) {
  [0] =>
  int(111)
  [1] =>
  int(222)
  [2] =>
  int(100)
  [3] =>
  int(333)
}

若索引名稱為 “001”、”002″,經過 array_merge() 才會被當成字串,不會有上述情況發生。

要避免索引被吃掉,可以改用 array unioin operator:

$d = array(
  '100' => 111,
  '200' => 222,
);
 
$e = array(
  '100' => 100,
  '300' => 333,
);
var_dump($d + $e));

陣列索引會被保留下來:

array(3) {
  [100] =>
  int(111)
  [200] =>
  int(222)
  [300] =>
  int(333)
}

不過要注意的是,array union operator 遇到相同索引時,陣列值並不會被後方的陣列取代 ($merged[‘100’] 會是 111 而非 100),所以使用時要注意順序問題。

總之,’100’、’200′ 被 array_merge() 當成數字讓我極度不爽。

Tags:PHP

Vim Arrow Key Alias

Posted on 2014 年 9 月 28 日2021 年 3 月 12 日 By 日落 在〈Vim Arrow Key Alias〉中尚無留言
Vim Arrow Key Alias

每次用 autocomplepop 都會覺得右有要移動到方向鍵才能選字實在麻煩。

於是開使加了一些 short keys 讓操作簡單一底,二隻手也可以盡量不宜開主鍵盤區域。

在 .vimrc 中加入 maping,來取帶 arrow 按鍵:

imap <C-J> <Down>
imap <C-K> <Up>

這樣編輯時跳出選字方塊時,變可以使用 Ctrl + J or K 來上下選字。

Tags:Vim

文章分頁

上一頁 1 ... 109 110 111 ... 319 下一頁

其他

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