2017年8月27日 星期日

Python 自動化測試

http://www.qa-knowhow.com/?p=1936

Selenium自動化測試技術文章彙整(140+篇!)


http://www.qa-knowhow.com/?p=2531

https://medium.com/@jemmy1234/%E5%88%A9%E7%94%A8-python-%E5%81%9A%E7%B6%B2%E9%A0%81%E8%87%AA%E5%8B%95%E5%8C%96%E6%B8%AC%E8%A9%A6-902d6361b4e3

http://icodding.blogspot.tw/2015/11/pythonselenium-web.html

2017年8月14日 星期一

NodeJS PM2 Note

https://github.com/Unitech/pm2

PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.

Starting an application in production mode is as easy as:

$ pm2 start app.js

2017年8月10日 星期四

Fwd: 让Nodejs来管理定时任务later



http://blog.fens.me/nodejs-cron-later/

将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化网站,我们自己的Geek网站!!


CentOS7 # linux GUI2CLI and CLI2GUI mode switch command


##顯示目前系統預設運作層級
$sudo systemctl get-default
graphical.target

#切換運作層級至文字模式(runlevel 3)
 
$sudo systemctl isolate multi-user.target

#切換運作層級至 GUI 模式(runlevel 5)
$sudo systemctl isolate graphical.target

#設定開機啟動至文字模式(runlevel 3)
$sudo systemctl set-default multi-user.target

#設定開機啟動至 GUI 模式(runlevel 5)
$sudo systemctl set-default graphical.target



2017年8月7日 星期一

Redis資料結構簡介 :TRING(字串)、LIST(清單)、SET(集合)、HASH(散列)和ZSET(有序集合)

Redis資料結構簡介
Redis可以存儲鍵與5種不同資料結構類型之間的映射,這5種資料結構類型分別為
STRING(字串)、LIST(清單)、SET(集合)、HASH(散列)和ZSET(有序集合)


1. STRING(字串):
字串命令: 
命令        行為
GET  獲取存儲在給定鍵中的值
SET  設置存儲在給定鍵中的值
DEL  刪除存儲在給定鍵中的值(這個命令可以用於所有類型)
代碼清單1-1 SETGETDEL的使用示例

$ redis-cli                                 # 啟動redis-cli 用戶端
redis 127.0.0.1:6379> set hello world       # 將鍵 hello 的值設置為 world
OK                                          # SET 命令在執行成功時返回 OK Python 用戶端會將這個 OK 轉換成 True
redis 127.0.0.1:6379> get hello             # 獲取儲存在鍵 hello 中的值。
"world"                                     # 鍵的值仍然是 world ,跟我們剛才設置的一樣。
redis 127.0.0.1:6379> del hello             # 刪除這個鍵值對。
(integer) 1                                 # 在對值進行刪除的時候,DEL 命令將返回被成功刪除的值的數量。
redis 127.0.0.1:6379> get hello             # 因為鍵的值已經不存在,所以嘗試獲取鍵的值將得到一個 nil
(nil)                                       # Python 用戶端會將這個 nil 轉換成 None
redis 127.0.0.1:6379>

2. LIST(列表):
列表命令 
命令        行為
RPUSH     將給定值推入到列表的右端
LRANGE   獲取列表在給定範圍上的所有值
LINDEX    獲取清單在給定位置上的單個元素
LPOP        從列表的左端彈出一個值,並返回被彈出的值
代碼清單1-2 RPUSHLRANGELINDEXLPOP的使用示例

redis 127.0.0.1:6379> rpush list-key item   # 在向清單推入新元素之後,該命令會返回列表的當前長度。
(integer) 1                                 #
redis 127.0.0.1:6379> rpush list-key item2  #
(integer) 2                                 #
redis 127.0.0.1:6379> rpush list-key item   #
(integer) 3                                 #
redis 127.0.0.1:6379> lrange list-key 0 -1  # 使用0為範圍的起始索引,-1為範圍的結束索引,
1) "item"                                   # 可以取出清單包含的所有元素。
2) "item2"                                  #
3) "item"                                   #
redis 127.0.0.1:6379> lindex list-key 1     # 使用LINDEX可以從清單裡面取出單個元素。
"item2"                                     #
redis 127.0.0.1:6379> lpop list-key         # 從清單裡面彈出一個元素,被彈出的元素不再存在於清單。
"item"                                      #
redis 127.0.0.1:6379> lrange list-key 0 -1  #
1) "item2"                                  #
2) "item"                                   #
redis 127.0.0.1:6379>

3. SET(集合):
集合命令 
命令        行為
SADD       將給定元素添加到集合
SMEMBERS     返回集合包含的所有元素
SISMEMBER    檢查給定元素是否存在于集合中
SREM       如果給定的元素存在于集合中,那麼移除這個元素
代碼清單1-3 SADDSMEMBERSSISMEMBERSREM的使用示例

redis 127.0.0.1:6379> sadd set-key item     # 在嘗試將一個元素添加到集合的時候,
(integer) 1                                 # 命令返回1表示這個元素被成功地添加到了集合裡面,
redis 127.0.0.1:6379> sadd set-key item2    # 而返回0則表示這個元素已經存在于集合中。
(integer) 1                                 #
redis 127.0.0.1:6379> sadd set-key item3    #
(integer) 1                                 #
redis 127.0.0.1:6379> sadd set-key item     #
(integer) 0                                 #
redis 127.0.0.1:6379> smembers set-key      # 獲取集合包含的所有元素將得到一個由元素組成的序列,
1) "item"                                   # Python用戶端會將這個序列轉換成Python集合。
2) "item2"                                  #
3) "item3"                                  #
redis 127.0.0.1:6379> sismember set-key item4   # 檢查一個元素是否存在于集合中,
(integer) 0                                     # Python用戶端會返回一個布林值來表示檢查結果。
redis 127.0.0.1:6379> sismember set-key item    #
(integer) 1                                     #
redis 127.0.0.1:6379> srem set-key item2    # 在使用命令移除集合中的元素時,命令會返回被移除的元素數量。
(integer) 1                                 #
redis 127.0.0.1:6379> srem set-key item2    #
(integer) 0                                 #
redis 127.0.0.1:6379>  smembers set-key
1) "item"
2) "item3"
redis 127.0.0.1:6379>

4. HASH(散列):
散列命令 
命令        行為
HSET        在散列裡面關聯起給定的鍵值對
HGET       獲取指定散列鍵的值
HGETALL  獲取散列包含的所有鍵值對
HDEL       如果給定鍵存在於散列裡面,那麼移除這個鍵
代碼清單1-4 HSETHGETHGETALLHDEL的使用示例

redis 127.0.0.1:6379> hset hash-key sub-key1 value1 # 在嘗試添加鍵值對到散列的時候,
(integer) 1                                         # 命令會返回一個值來表示給定的鍵是否已經存在於散列裡面。
redis 127.0.0.1:6379> hset hash-key sub-key2 value2 #
(integer) 1                                         #
redis 127.0.0.1:6379> hset hash-key sub-key1 value1 #
(integer) 0                                         #
redis 127.0.0.1:6379> hgetall hash-key              # 獲取散列包含的所有鍵值對,
1) "sub-key1"                                       # Python用戶端會將這些鍵值對轉換為Python字典。
2) "value1"                                         #
3) "sub-key2"                                       #
4) "value2"                                         #
redis 127.0.0.1:6379> hdel hash-key sub-key2        # 在刪除鍵值對的時候,
(integer) 1                                         # 命令會返回一個值來表示給定的鍵在移除之前是否存在於散列裡面。
redis 127.0.0.1:6379> hdel hash-key sub-key2        #
(integer) 0                                         #
redis 127.0.0.1:6379> hget hash-key sub-key1        # 從散列裡面單獨取出一個域。
"value1"                                            #
redis 127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"

5. ZSET(有序集合):
有序集合命令 
命令        行為
ZADD       將一個帶有給定分值的成員添加到有序集合裡面
ZRANGE   根據分值的排序順序,獲取有序集合在給定位置範圍內的所有元素
ZRANGEBYSCORE   獲取有序集合在給定分值範圍內的所有元素
ZREM      如果給定成員存在于有序集合,那麼移除這個成員
代碼清單1-5 ZADDZRANGEZRANGEBYSCOREZREM的使用示例

redis 127.0.0.1:6379> zadd zset-key 728 member1     # 在嘗試向有序集合添加元素的時候,
(integer) 1                                         # 命令會返回新添加元素的數量。
redis 127.0.0.1:6379> zadd zset-key 982 member0     #
(integer) 1                                         #
redis 127.0.0.1:6379> zadd zset-key 982 member0     #
(integer) 0                                         #
redis 127.0.0.1:6379> zrange zset-key 0 -1 withscores   # 獲取有序集合包含的所有元素,
1) "member1"                                            # 這些元素會按照分值進行排序,
2) "728"                                                # Python用戶端會將這些分值轉換成浮點數。
3) "member0"                                            #
4) "982"                                                #
redis 127.0.0.1:6379> zrangebyscore zset-key 0 800 withscores   # 也可以根據分值來獲取有序集合的其中一部分元素。
1) "member1"                                                    #
2) "728"                                                        #
redis 127.0.0.1:6379> zrem zset-key member1     # 在移除有序集合元素的時候,
(integer) 1                                     # 命令會返回被移除元素的數量。
redis 127.0.0.1:6379> zrem zset-key member1     #
(integer) 0                                     #
redis 127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member0"
2) "982"



link from => http://redisinaction.com/preview/chapter1.html