為了下載投影片,但懶得一個個複製貼上、改指令,所以預先把投影片網址跟預定的檔名放在文字檔裡,然後用 awk 一次下載。
文字檔的格式是:url filename ,假定這個文字檔的檔名是 slides.txt
那麼,這樣就能搞定:
awk '{system("wget -O \"" $2 "\" " $1)}' slides.txt
Just thinking more…
為了下載投影片,但懶得一個個複製貼上、改指令,所以預先把投影片網址跟預定的檔名放在文字檔裡,然後用 awk 一次下載。
文字檔的格式是:url filename ,假定這個文字檔的檔名是 slides.txt
那麼,這樣就能搞定:
awk '{system("wget -O \"" $2 "\" " $1)}' slides.txt
花了一些時間簡單的架設 parse-server,把過程紀錄一下。
cd parse-server && docker build --tag parse-server .
docker build --tag parse-dashboard .
{
"apps": [
{
"serverURL": "http://<your-ip>:1337/parse",
"appId": "APPLICATION_ID",
"masterKey": "MASTER_KEY",
"appName": "MyApp",
"production": false
}
],
"users": [
{
"user": "user",
"pass": "pass"
}
]
}
---
version: '3'
services:
mongodb:
image: mongo:3.4
parse:
image: parse-server:latest
environment:
FOO: bar
command: --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://mongodb/test
links:
- mongodb
ports:
- "1337:1337"
parse-board:
image: parse-dashboard:latest
environment:
PARSE_DASHBOARD_ALLOW_INSECURE_HTTP: "yes"
links:
- parse
ports:
- "4040:4040"
volumes:
- ./config.json:/src/Parse-Dashboard/parse-dashboard-config.json
要啟用 push notification ,得調整 docker-compose.yml 裡 parse service 的 command,加入 push notification 的相關選項。從選項可以看出,parse 仍是利用 GCM/APNs 來發送通知。
LiveQuery 在佈署到 AWS 時,要用 ALB,因為 ELB 不支援 WebSocket。
在正式環境裡,要記得把 PARSE_DASHBOARD_ALLOW_INSECURE_HTTP 設為 “no” ,並且加上 SSL 。也可以參考 parse-server github 網頁上對於佈署的說明,有蠻多佈署到平台上的現成範例可參考。
參考資料:
aria2 的 web UI,紀錄一下怎麼使用。
提高安全性:
參考資料:
VirtualBox 可以用 vboxmanage guestcontrol 來有限度的控制 VM 裡的 GuestOS。
GuestOS 是 Ubuntu 的話,得安裝 virtualbox-guest-utils, virtualbox-guest-dkms ,安裝完以後,重新開機。
在 HostOS 裡,就可以用 vboxmanage guestcontrol 指令了。
# VirtualBox 5.x
vboxmanage --nologo guestcontrol "Ubuntu 16.04" run --exe /sbin/ifconfig --username ubuntu --passwordfile password.txt --wait-stdout --wait-stderr --verbose
參考資料:
本來是打算用 snipmate 的,但看到這篇 UltiSnips 让 Vim 飞起来 – 吕小荣 ,馬上轉投 UltiSnips 。XD
安裝與設定上沒什麼困難。
" Install ultisnips using Vundle Plugin 'SirVer/ultisnips' Plugin 'honza/vim-snippets'
裝好以後,輸入特定的關鍵字 (關鍵字要自己去挖 vim-snippets 下的 UltiSnips/snippets 資料夾裡的檔案),再按 tab ,就會自動出現 snippet,如果 snippet 有指定 ${1:pass} 之類的,可以在輸入完畢以後,用 ctrl + j 或 ctrl + k 來切到上一個或下一個位置。
我卡到的問題是自訂的 snippets 沒被載入。找了半天,才發現我把 UltiSnips 資料夾放錯位置。(把我的時間還來!!)
UltiSnips 的 python docstring 可以自訂,看格式是要用 google, sphinx, doxygen, numpy 還是 jedi 的格式。在 .vimrc 裡放下面這行就可以了:
let g:ultisnips_python_style="google"
最近需要做 public/private key 的加解密,所以找到 pycryptco 。
使用的例子可以參考 Python and cryptography with pycrypto
但使用時,卻遇到 unsupported operand type(s) for pow() 的問題,經過一番查找,才找到問題所在,詳情可以看這篇:Error with encrypt message with RSA python – Stack Overflow
主要是因為 Python 3 的字串預設是 unicode 字串,而 encrypt 沒辦法處理,所以得先 encode 為 utf-8 字串才行:
# -*- coding: utf-8 -*- import os import base64 from Crypto.PublicKey import RSA from Crypto import Random from Crypto.Cipher import PKCS1_OAEP, AES from pprint import pprint # Generate key if os.path.exists('mykey.pem'): with open('mykey.pem', 'rb') as fin: key = RSA.importKey(fin.read()) else: random_generator = Random.new().read key = RSA.generate(1024, random_generator) with open('mykey.pem', 'wb') as fout: fout.write(key.exportKey('PEM')) # Display key information print("key = {}".format(key)) print("can_encrypt = {}".format(key.can_encrypt())) print("can_sign = {}".format(key.can_sign())) print("can_private = {}".format(key.has_private())) # show public key pprint(dir(key.publickey())) # Encrypt enc_data = key.publickey().encrypt("abcdef".encode('utf-8'), 32) pprint(enc_data) # Decrypt print(key.decrypt(enc_data))
Jenkins 裡能用的環境變數可以參考:
但是有時候,就是覺得少了那麼一些。我們可以使用 EnvInject plugin 在建置時,插入需要的環境變數,讓後續的建置步驟使用。
使用方法:
參考資料:
Jennifer Garner ,少了她,夜魔俠會失色不少。後來她這個角色還出了獨立的電影,有機會要找來看看。