2015年6月22日 星期一

How many files can I put in a directory?

FAT32:

  • Maximum number of files: 268,173,300
  • Maximum number of files per directory: 216 - 1 (65,535)
  • Maximum file size: 2 GiB - 1 without LFS, 4 GiB - 1 with

NTFS:

  • Maximum number of files: 232 - 1 (4,294,967,295)
  • Maximum file size
    • Implementation: 244 - 26 bytes (16 TiB - 64 KiB)
    • Theoretical: 264 - 26 bytes (16 EiB - 64 KiB)
  • Maximum volume size
    • Implementation: 232 - 1 clusters (256 TiB - 64 KiB)
    • Theoretical: 264 - 1 clusters

ext2:

  • Maximum number of files: 1018
  • Maximum number of files per directory: ~1.3 × 1020 (performance issues past 10,000)
  • Maximum file size
    • 16 GiB (block size of 1 KiB)
    • 256 GiB (block size of 2 KiB)
    • 2 TiB (block size of 4 KiB)
    • 2 TiB (block size of 8 KiB)
  • Maximum volume size
    • 4 TiB (block size of 1 KiB)
    • 8 TiB (block size of 2 KiB)
    • 16 TiB (block size of 4 KiB)
    • 32 TiB (block size of 8 KiB)

ext3:

  • Maximum number of files: min(volumeSize / 213, numberOfBlocks)
  • Maximum file size: same as ext2
  • Maximum volume size: same as ext2

ext4:

  • Maximum number of files: 232 - 1 (4,294,967,295)
  • Maximum number of files per directory: unlimited
  • Maximum file size: 244 - 1 bytes (16 TiB - 1)
  • Maximum volume size: 248 - 1 bytes (256 TiB - 1)

2015年6月18日 星期四

async vs defer attributes

Legend

<script>

Let’s start by defining what <script> without any attributes does. The HTML file will be parsed until the script file is hit, at that point parsing will stop and a request will be made to fetch the file (if it’s external). The script will then be executed before parsing is resumed.

<script async>

async downloads the file during HTML parsing and will pause the HTML parser to execute it when it has finished downloading.

<script defer>

defer downloads the file during HTML parsing and will only execute it after the parser has completed. defer scripts are also guarenteed to execute in the order that they appear in the document.

When should I use what?

Typically you want to use async where possible, then defer then no attribute. Here are some general rules to follow:
  • If the script is modular and does not rely on any scripts then use async.
  • If the script relies upon or is relied upon by another script then usedefer.
  • If the script is small and is relied upon by an async script then use an inline script with no attributes placed above the async scripts.

Support

IE9 and below have some pretty bad bugs in their implementation of defersuch that the execution order isn’t guarenteed. If you need to support <= IE9 I recommend not using defer at all and include your scripts with no attribute if the execution order matters. Read the specifics here.

Set screen names with GNU screen

To create a new screen with the name foo, use
screen -S foo
Then to reattach it, run
screen -r foo  # or use -x, as in
screen -x foo  # for "Multi display mode" (see the man page)

Linux Screen指令

使用 screen

在命令列下打 screen 就會進入 screen 的天地:

% screen

注意,所有 screen 的指令都是以 Ctrl 鍵加上 a 鍵開始的,在之後以 C-a 代表,C-a c 代表按住 Ctrl 鍵不放再按 a 鍵,然後放開按 c 鍵;而 C-a C-c 代表按住 Ctrl 鍵不放再按 a 鍵,然後放開後再按住 Ctrl 鍵不放按 c 鍵。

開啟,關閉,切換

C-a c 或 C-a C-c 開啟新的視窗,並同時切換到這個新的視窗

C-a n 或 C-a C-n 或 C-a (space) 切換到下一個視窗(0->1 1->2 ...)

C-a p 或 C-a C-p 切換到上一個視窗(1->0 2->1 ...)

C-a C-a 切換到上一個顯示過的視窗(不是照順序切換)

C-a 0 切換到第 0 個視窗

C-a (1..9) 切換到第 (1..9) 個視窗

C-a w 或 C-a C-w 會列出目前所開啟的視窗

0$ tcsh 1$ tcsh 2*$ tcsh 3$ tcsh

有星號 "*" 的表示目前顯示中的視窗,之後的 tcsh 代表這個視窗的 title ,預設是以開啟時的 shell 名稱

C-a K 關閉所有的視窗並退出 screen

C-a ' 或 C-a " 會出現 "Switch to window:" 字樣,輸入號碼後就可切到該視窗

單一視窗使用中的指令

C-a C 清除目前的視窗內容

C-a d 或 C-a C-d 脫離(detach)目前的 screen ,並放到背景執行(不管開了幾個視窗),下面會再提到

C-a D D 強力脫離,除了放到背景執行外,並自動 logout

C-a C-g 視覺化鈴聲(visual bell)的切換,可以在畫面上顯示訊息代表一般的嗶聲

C-a H 紀錄目前視窗所有顯示過的東西(檔名為 screenlog.n n 為視窗號碼)

C-a i 或 C-a C-i 顯示目前視窗的資訊

(11,24)/(80,24)+1000 +(+)flow -ins -org +wrap +app -log -mon +r G0 [BBBB]

C-a l 或 C-a C-l 重繪視窗,如果有字顯示亂掉了可以用這個指令

C-a m 或 C-a C-m 或 C-a (enter) 可以顯示最近一次顯示過的訊息

C-a t 或 C-a C-t 顯示系統的時間及主機名稱還有負載

C-a v 顯示版本資訊

C-a x 或 C-a C-x 如果你要暫時離開目前位置又不想先 logout ,那可以用這個來鎖住 screen

C-a ? 線上求助畫面

複製/捲軸 模式

按下 C-a [ 就可以進入 複製/捲軸 模式(只有在目前視窗才算,其他視窗照常)基本上跟 vi 很像:

h, j, k, l 分別為向左,向下,向上,向右移動一格(或是一行)

0 移到該行最左邊

^ 與 $ 分別移到該行最左邊及最右邊的非空白字元

w 以字為單位往前移動並移到字首

b 以字為單位往後移動並移到字首

e 以字為單位往前移動並移到字尾

C-b 向上捲一頁

C-f 向下捲一頁

C-u 向上捲半頁

C-u 向下捲半頁

/ 與 ? 向下或向上尋找字串

(space) 第一次按下到第二次按下的區域會被複製到暫存區內

(ESC) 離開 複製/捲軸 模式

接著按下 C-a ] 便可以把剛剛存到暫存區內的內容複製出來。

善用 screen

前面提到當按了 C-a d 脫離了 screen 後,會回到沒有執行 screen 時的狀態,但是同時在之前 screen 裡每個視窗內在跑的 process (不管是前景或背景執行的)仍然繼續執行,即使 logout 也不會有影響。所以你可能接著離開身邊的電腦,然後跑出去喝個水,或者另外找個舒服的地方坐下來再接著剛剛的工作。

好,當你重新登入(login)之後,要怎麼接回剛剛的 screen 呢?重打 screen 只會讓電腦另外又開個 screen 給你,你所要做的事就是加些參數:

screen -ls 顯示目前個人所有的 screen

% screen -ls

There are screens on:

1188.ttyp4.SungSung? (Attached)

76920.ttypq.SungSung? (Detached)

2 Sockets in /tmp/screens/S-AlanSung?.

上面的 Attached 表示你現在連接的 screen ,而 Detached 則表示沒有連接的,最後則是共有多少個 screen 數量

screen -r 就是重新回到(resume)screen 裡,如果你只有開一個 screen ,那隻要簡單地打

% screen -r

就沒問題了,但是像上面那個,如果你有了兩個以上的 screen ,這樣就有問題了

% screen -r

There are several screens on:

1188.ttyp4.SungSung? (Detached)

76920.ttypq.SungSung? (Detached)

Type "screen [-d] -r [pid.]tty.host" to resume one of them.

如它的訊息所述,你可以加上它的 process id 或是使用的 tty 加上主機名來決定要接回那一個 screen 。假設在這裡我們要接回 process id 為 1188 的那一個,就打

% screen -r 1188



% screen -r ttyp4



% screen -r ttyp4.SungSung?



% screen -r 1188.ttyp4.SungSung?

都可以

screen -d 假設現在自己的電腦突然當機,或是網路突然斷了一時連不上去,等到好了之後,想要接回來原來的 screen 卻發現

% screen -r

There is a screen on:

1188.ttyp4.SungSung? (Attached)

There is no screen to be resumed.

這時候 -d 這個參數就派上用場了,讓你可以控制某個 screen 脫離(detach),接著再加上 -r 把這個 screen 接手回來

% screen -d

[1188.ttyp4.SungSung? detached.]

% screen -r

或直接

% screen -d -r

screen -wipe 有時候不小心跳電了,這時候重開機後當然也不會有 screen 留著,但是由於 screen 會有紀錄所有的 screen ,因為雖然舊的沒有了,可是還是有紀錄在,因此這個指令就是把廢棄不用的 screen 給"擦拭乾淨"(wipe)

There are screens on:

69103.ttyp5.SungSung? (Removed)

529.ttyp0.SungSung? (Detached)

1 socket wiped out.

1 Socket in /tmp/screens/S-AlanSung?.

會用了上面所介紹的功能,你可以現在進入 bbs ,進入聊天室跟人聊天或是在上面發表文章到一半,發現計中要關門了,你可以從容的 detach ,回家之後再連回來 attach ,繼續剛剛的話題或發表文章,而對方可能根本沒發覺。只要你連線的主機不當機,那電話線或網路再怎麼不穏都不必怕斷線。

如果你需要更多詳細的資料,可以善用線上手冊(manual pages)或是 info 這個指令

% man screen

% info screen

Enjoy it!!