CVE-2015-0235 安全性更新

這是個老bug..如果有更新過應該沒問題
Redhat已經放在repo內了,yum已經支援了

yum update –cve CVE-2015-0235
即可
打這段沒用的人
請先安裝 yum-security plugin

centos 6
yum install yum-plugin-security
centos 5
yum install yum-security

檢查結果

# rpm -q –changelog glibc | grep CVE-2015-0235
會出現
– Fix parsing of numeric hosts in gethostbyname_r (CVE-2015-0235, #1183532)

mysql扣庫存的動作

今天研究一個主題,扣庫存,看到一個關鍵詞組
“select for update mysql”
看了幾個人的寫法
整合起來就是這樣

table : tb1
欄位
id
stock

扣庫存

BEGIN;
select stock from tb1 where id=1 for update;
update tb1 set stock = stock -2 where id =1 and stock >=2;
commit;
故意用2…為了是顯示要扣庫存的條件,這裡的條件是扣兩件所以where stock>=2才能跑stock -2
使用transation時 測試的結果
開兩個視窗
conn a
conn b

conn a執行
BEGIN;
select stock from tb1 where id=1 for update;
update tb1 set stock = stock -1 where id =1 and stock >=1;

再來
conn b執行
update tb1 set stock = stock -1 where id =1 and stock >=1;

這時候conn b會等到conn a comit之後才會扣庫存
conn a 執行commit;
transcation結束
換執行 conn b
如果庫存被扣完 那就會更新失敗傳回0

現在的問題是
扣庫存要用哪一種語法呢?

stock = stock -1
還是
sotck = $a

前者看起來比較沒有庫存錯誤的問題,但必須配合transaction使用
至於$a的值也是從select來的,可能會有時間差的問題
mysql 官網在介紹for update這件事情的時候,是用stock = stock -1當範例的,終究這是最後的值,沒有經過select的時間差

最後這只有innodb才做的了….

windows7 修改hosts檔案無效

怎麼改都沒用,非常怪
先檢查有沒有使用小紅傘,有的話把即時保關閉即可
其他防毒也是同樣的道理
但如果還是沒用呢???

1.把hosts檔案從etc裡面複製出來
2.把剛剛複製出來的檔案再覆蓋上去
這時候如果沒有出現UAC的保護叫你按確認
代表這個檔案已經故障了……………

解決方案
1.複製任何在etc內的檔案一個,放到桌面上
copy any file in C:\Windows\System32\drivers\etc to desktop
2.修改名字叫hosts
edit file name to hosts
3.修改內容成為一個正常的hosts
edit hosts
4.覆蓋回去,這時候看UAC的反應,如果有,那就會生效了
copy file to C:\Windows\System32\drivers\etc , if show UAC alert…it work!!
我猜測原因,或許是這個檔案要在某些windows7的權限下才有效果…
此篇紀錄下來

jquery 模擬click

今天模擬一個點擊的事件
可以使用trigger

例如說 今天他選不同的radio 會有不同的javascript效果
你只能用trigger去模擬點擊去觸發某個javascript效果
你就可以用到trigger

範例是點radio button 讓她觸發一些預設的clcik行為

$(“input:radio[name=radiogroup][value=1]”).trigger(‘click’);
這樣的話 就是模擬點擊radio的行為

代替array_key_exists的方法

array_key_exists 在php的討論區中認為太慢

if (isset(..) || array_key_exists(…))
{

}

Benchmark (100000 runs):
array_key_exists() : 205 ms
is_set() : 35ms
isset() || array_key_exists() : 48ms

替代方案

isset($aryParam[‘key’])