2017年10月22日 星期日

Gore-Tex 外套清洗 -- 筆記

只要打上 Gore-Tex 的外套,價格都以萬元計算。雖貴,但實用,風大當風衣,兩天當雨衣,不會像雨衣,穿得滿身是汗,外面下小雨,裡面下大雨。

不過,穿了 5, 6 年下來,實在太髒了,要想一下怎麼洗,以下是網路上朋友的經驗,便宜實用。

引用: https://www.mobile01.com/topicdetail.php?f=628&t=2291013

andyssky1985 2011-08-11 01:29 的留言
不用怕洗壞,只要是手洗,拿支不要的牙刷,用"洗碗精" 1:1泡水稀釋,慢慢大範圍溫和的刷。

不建議丟洗衣機,因為那個 內層防水熱壓條,可能依廠牌不同,副著力不同,強力洗衣機會有把那個洗掉下來的風險。 (我學弟就有過例子)

我是覺得Gore-Tex外套早期的比較耐穿,雖然3層布+XCR 當初買很貴,但是我那件歐督納外套,穿了9年了,內膠條還是很穩! 除了被我摔車磨破的某些部位,其他一概不漏水! 

9年了!!! 我怎麼保養? 就是不用保養!! 防潑水處理失效? 管它的! 塑膠雨衣外表也會濕啊
反正再怎麼防潑水,雨天爬山裡面還是多少會反潮!! 反正你裡面穿的是排汗衣,放心吧!!

外套不要急著脫,保持外套內部溫度,體溫會慢慢幫你把水氣蒸乾!! 到了目的地,慢個10分鐘脫外套,之後1小時的感受度絕對不同。 (我應該來寫本書 書名叫:不要急著脫外套)

Gore-tex風雨衣,比較怕潮濕折起來悶著。 通常有這習慣的,大概3年左右防水條就部分脫落了。
如果行進間太熱、雨停了,外套脫下來披在登山背包上,讓他通風風乾,可保障你的外套壽命。

fisheries 2011-08-11 02:15   的留言
手洗+1
洗劑可用最單純成份的洗碗精或是皂絲水

2017年10月15日 星期日

Vmware 的磁碟測試

很久以來,我都是用 Linux 當 host,然後再透過 Vmware 使用 Windows OS,這樣子的環境很具彈性和穩定度。過去,我的作法,都是把整顆實體的硬碟,給 guest OS 使用。

最近,因為同時裝了兩個 Windows 7,沒辦法分享實體硬碟,只好使用虛擬硬碟。但又擔心效能會不會差太多,搜尋不到相關資料,就自己來測測看吧。

測試的應用程式,是 Visual Foxpro 的程式,是我比較重的工作之一。在沒有調整程式之前,整個跑下來,要 20 到 30 多分鐘,若是效能變慢,要多花一倍的時間,那一定是受不了的。

Physical disk: (原來使用整顆硬碟)
1. 78.440 秒
2. 77.190 秒
3. 76.360 秒

Virtual disk,multiple file (虛擬硬碟,切成多個 2GB 的檔)
1. 76.110
2. 76.640
3. 78.600
4. 80.410

Virtual disk,single file,growable (單一虛擬硬碟,隨需求而變大)
1. 79.000
2. 80.100 (開始前,做了一下 fstrim,這一輪沒有較快,是下一輪較快? )
3. 77.120
4. 77.850

看來,效能差不多,有時會較慢,可能是同時做其他事,受到影響。使用 ghost 11 把 guest OS 的全部磁區都改成個別虛擬磁碟,然後再重測一下執行時間,結果如下。
1. 79.530
2. 77.140
3. 76.770 (開始前,fstrim 一次)
4. 78.450

換成虛擬磁碟後,好處之一是,執行 fstrim,不用關機後再執行。

2017年10月12日 星期四

Intel 600p M.2 512GB SSD 安裝

Intel 600P系列 512GB M.2 2280 PCI-E 固態硬碟,和 Intel 545s系列 512GB 2.5吋 SATAⅢ固態硬碟,價格差不多,甚至前者還便宜一些些,在6千元左右 (2017年10月)。可是 M2 512GB SSD 的讀取速度卻是 SATA 介面的 3倍,不過 較小容量的 M2 SSD 就沒有這麼快了。剛好目前的主機板可以使用 M2 的 SSD,就試試看這個 600P 的 SSD。聽說這個 M2 的 SSD 很容易過熱,飆到70度的溫度,自動降速,就順便買個專用的散熱片來用。

Intel 600P系列 512GB M.2 2280 PCI-E 固態硬碟規格
- 讀取速度 1775 MB/s
- 寫入速度 560 MB/s
- 隨機讀取 128,500 IOPS
隨機寫入 128,000 IOPS
- 3D NAND (TLC)

我用的主機板是 ASUS STRIX X99 GAMING,開機時,BIOS 的開機選單,顯示 Intel - SSDPEKKW512G7。

因為這個是 PCI 裝置,所以不會出現在 SATA 的裝置上,也不會顯示 /dev/sdx 的裝置。

要使用 lspci 來檢視該裝置的訊息。 # lspci -vvvv -s 3:0
03:00.0 Non-Volatile memory controller: Intel Corporation Device f1a5 (rev 03) (prog-if 02 [NVM Express])
Subsystem: Intel Corporation Device 390a
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 11
NUMA node: 0
Region 0: Memory at fb500000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [70] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L0s <1us, L1 <8us
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 8GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via message
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+
EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
Capabilities: [b0] MSI-X: Enable- Count=16 Masked-
Vector table: BAR=0 offset=00002000
PBA: BAR=0 offset=00002100
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
Capabilities: [158 v1] #19
Capabilities: [178 v1] Latency Tolerance Reporting
Max snoop latency: 0ns
Max no snoop latency: 0ns
Capabilities: [180 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
  PortCommonModeRestoreTime=10us PortTPowerOnTime=10us


設定 kernel 驅動程式 NVM Express block device

CONFIG_BLK_DEV_NVME:

The NVM Express driver is for solid state drives directly
connected to the PCI or PCI Express bus.  If you know you
don't have one of these, it is safe to answer N.

To compile this driver as a module, choose M here: the
module will be called nvme.

重新編讀 kernel
# make -j4 && make modules_install
# mount /dev/sda2 /boot
# make install

在載入 驅動程式後,用 lsblk指令,就會看到列出的裝置,開頭是 nvmexxx。
# lsblk
NAME                       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop1                        7:1    0     2G  0 loop 
└─docker-8:5-22809896-pool 253:0    0   100G  0 dm   
loop0                        7:0    0   100G  0 loop 
└─docker-8:5-22809896-pool 253:0    0   100G  0 dm   
sda                          8:0    0 894.3G  0 disk 
├─sda4                       8:4    0   100G  0 part /
├─sda2                       8:2    0   150M  0 part 
├─sda5                       8:5    0   500G  0 part /home
├─sda3                       8:3    0    10G  0 part [SWAP]
└─sda1                       8:1    0     2M  0 part 
nvme0n1                    259:0    0   477G  0 disk 

以上,出現 nvme 的 disk。

接著,就可以開始分割和使用硬碟了。
# cfdisk /dev/nvme0n1

查看溫度,先安裝 nvme-cli
# emerge -av nvme-cli
# nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 39 C
available_spare                     : 100%
available_spare_threshold           : 10%
percentage_used                     : 0%
data_units_read                     : 143,891
data_units_written                  : 560,305
host_read_commands                  : 3,315,582
host_write_commands                 : 15,738,256
controller_busy_time                : 52
power_cycles                        : 72
power_on_hours                      : 439
unsafe_shutdowns                    : 37
media_errors                        : 0
num_err_log_entries                 : 0
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Thermal Management T1 Trans Count   : 0
Thermal Management T2 Trans Count   : 0
Thermal Management T1 Total Time    : 0
Thermal Management T2 Total Time    : 0


2017年10月8日 星期日

在 Windows Server 2003 安裝 PHP 5.6.24

在微軟的支持下,PHP 可以在 Windows 的平台上,順利且有效率的運作。其中,包括 fastcgi、sqlsrv、及 wincache 等,是由微軟所支持提供的。

但我個人猜測,也是在微軟的干預下,以 Windows Server 2003 及 Windows XP 推出已超過 10 年為理由,決定從 PHP 5.5 開始,不再支持這兩個 OS。因此在這兩個廣泛使用的 OS 上,就無法安裝執行新版的 PHP,只能繼續堅守 PHP 5.4 以前的版本了。

Windows Server 2003,和 2008 以後的 OS 比起來,只需要較小的硬碟空間,在 VM 上安裝執行,非常據有優勢。因此,直到目前 (2017年) 我們還是繼續堅守著 2003。

每過一段時間,我就會在網路上搜尋,是否有在 Windows Server 2003 安裝 PHP 5.6 的可能性。直到最近,才在 Stack Overflow 上找到一段問答,How to install PHP 5.5 on WinXp 。在這討論裡,也是常見的,已經停止支援等等的話,但有一小段不小心就會遺漏的留言
But there is an unofficial build of PHP 5.6 at http://www.apachelounge.com/viewtopic.php?t=6334
這真是讓人興奮的話。到這時才知道,已有人重新修補編譯 PHP 5.6.4,讓它可以在 2003/XP 上執行,雖然,特別提醒的那一句話 "Play with it, do not use in in production ... " 讓人很不安心,但終究是有了可能性。

後來,在 github 上,也找到有人說明修補和編譯的作法,ProgerXP/php-5.6-xp。也照著做了,不過,後來搞清楚那是針對 Apache 的作法,也就是編出來是 thread-safe 的執行檔。但是,在 cgi 模式下,要用 non-thread-safe 的作法,才能有較好的效率,因此,也就放棄了。

很幸運的,後來找到一個中文的網頁,PHP 7 and PHP 5.6 for Windows XP/2003。它只是建立了一個 nonxp.dll,再修改 exe 和 dll 的相關資訊,讓它可以在 2003/XP 上執行。

雖然,它也改了 PHP 7.0,讓它可以在 2003/XP 上執行,但是可以使用的 sqlsrv driver 只有到 PHP 5.6,請參考 Unofficial Microsoft SQL Server Driver for PHP (sqlsrv),所以,我只有使用 PHP 5.6 這個版本。安裝後,稍微比較了一下效能,PHP 5.6 的效能大約是 PHP 5.4 的兩倍,的確很吸引人。

目前,我在其中一部 Windows 2003 的伺服器上,使用修改過的 PHP 5.6.24,等一段時間後,確認沒有問題,再全面改用。有空,也要看一下 nonxp 的原始碼,針對用到其中的function 的功能,加以測試,以確認一切是正常的,用起來才會安心。

GitHub 上的原始碼

在取得 nonxp.dll 的原作者的同意後,已將 nonxp.dll 及 補丁工具的程式上傳 github: php-5.6-xp-2003

碰到的錯誤

採用 nonxp.dll 的作法,版本 PHP-5.6.24,使用 fastcgi 模式,送出 header('Content-Type: application/javascript'); 時,會產生 IIS 500 的錯誤。但是,讓人懊惱的是,有時會連續出錯,有時又很正常。對了,只要動到 Laravel 5.0 的 routes.php,就會一直出錯,這個檔到底用到了什麼功能,以致於如此? 再試用 Apache Lounge 的討論區的 Jan-E 所改的 PHP-5.6.4,一樣也會有此問題。再切回 PHP 5.4 就完全沒問題。

後來猜測可能是 Laravel 5.0 中的某些部分,在 PHP-5.6.24 下,會出錯。例如 nette/tracy
在 PHP 5.4 和 Laravel 5.0 下,可以安裝,但不能正常運作。

再次測試,把應用程式,搬到 Laravel 5.1 下,看起來,能正常運作,不會一直出現 IIS 500 的錯誤,再持續觀察吧。

2017年10月1日 星期日

Slim 2 筆記

Middleware、Hook 的呼叫順序

Middleware, before next->call()
Hook slim.before
Hook slim.before.router
Hook slim.before.dispatch
-------------------------------------
response body render
echo 的內容會寫入 output buffer
-------------------------------------
Hook Middleware, after next->call()
Hook slim.after.dispatch
Hook slim.after.router
Hook slim.after

網誌存檔