Emacs Coding-Systems
suffixは、いろいろあるっぽい
- ...-unix
- ...-dos
- ...-mac
https://www.gnu.org/software/emacs/manual/html_node/emacs/Coding-Systems.html
Emacs Coding-Systems
suffixは、いろいろあるっぽい
https://www.gnu.org/software/emacs/manual/html_node/emacs/Coding-Systems.html
JSON_AS_ASCII
JSONの中の文字(non ASCII)をASCIIにエンコードしない。
By default Flask serialize object to ascii-encoded JSON. If this is set to False Flask will not encode to ASCII and output strings as-is and return unicode strings. jsonify will automatically encode it in utf-8 then for transport for instance.
http://flask.pocoo.org/docs/0.12/config/
なのだけど、例のUnicodeDecodeErrorでコケた。
Emacs let*
letとlet*はちがうよって話。
(setq x 1) ;;; letは同時にバインドされるので外側のxを参照する (let ((x (+ x 3)) (y (+ x 2))) ; この時点でのxは1 (+ x y)) ; => 7 ;;; let*は直前のローカル変数代入の影響を受ける (let* ((x (+ x 3)) (y (+ x 2))) ; この時点でのxは4 (+ x y)) ; => 10
request.elで、日本語とかのASCIIじゃない文字列が混ざったページに対してGETすると、curlの結果が文字化けする。
(require 'request) (request "http://rubikitch.com/" :parser 'buffer-string :complete (function* (lambda (&key data &allow-other-keys) (switch-to-buffer "*request-result*") (erase-buffer) (insert data))))
このプルリク。elispについて、サブプロセスでcurlを実行しているけど、実行するバッファのエンコードが binary
になっている。
Win/Mac/Linux全部に対応しないといけないライブラリなので、binaryにすることで動かなくなるのを回避しているのだと思う。
このプルリクの修正が直接の原因。 github.com
でも、binaryにするとASCIIじゃない、具体的には日本語のサイトでGETすると文字化けする。 github.com
こう書いて、dataのエンコードをutf-8とかにする。
(require 'request) (request "http://rubikitch.com/" :parser 'buffer-string :complete (function* (lambda (&key data &allow-other-keys) (switch-to-buffer "*request-result*") (erase-buffer) (insert (decode-coding-string data 'utf-8)))))
ってあるけど、正直知らないとわからないから、ドキュメントやテストには明記したいね。
hive insert overwrite
Hiveではinsertは追加ではなく上書きで、partitionが動的に作成されている
INSERT OVERWRITE TABLE テーブル名 [PARTITION (項目名=値, …)] SELECT文 FROM 元テーブル名
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML
http://www.ne.jp/asahi/hishidama/home/tech/apache/hive/insert.html#INSERT_OVERWRITE
set-process-coding-system
サブプロセスに対して送るencodeの指定
(set-process-coding-system PROCESS &optional DECODING ENCODING) Set coding systems of PROCESS to DECODING and ENCODING. DECODING will be used to decode subprocess output and ENCODING to encode subprocess input.
M-x describe-function
で見られる説明はこれだけで、どんなエンコードを設定できるかは書いていない。
request.el parser
https://tkf.github.io/emacs-request/manual.html
request.elのparserについて。
レスポンスボディをどうやってパースするかを決める。
json-read
を使う場合は、JSONのデータ構造を決めることができる。この例の場合だと、json-readしたデータをplistにすることが出来る。
(request "http://..." :parser (lambda () (let ((json-object-type 'plist)) (json-read))) ...)
すべてのレスポンスボディをstringにしたいなら、 buffer-string
にする。
(request "http://..." :parser '(buffer-string) ...)
aws-cli 1.14.18
あと少し。
Release 1.14.18 · aws/aws-cli · GitHub
Update rds command to latest version
botocore 1.18.22にアップデート。
Merge branch 'release-1.14.18' into develop · aws/aws-cli@121a51f · GitHub
read-string
read-string prompt &optional initial
ミニバッファから文字列を読んで、それを返す
mapred.job.reuse.jvm.num.tasks
If you have very small tasks that are definitely running after each other, it is useful to set this property to -1 (meaning that a spawned JVM will be reused unlimited times). So you just spawn (number of task in your cluster available to your job)-JVMs instead of (number of tasks)-JVMs.
タスクがものすごく小さかったら、-1
にして常に再利用するのをすすめる。 1にすると再利用しない。
Amazon EMR は mapred.job.reuse.jvm.num.tasks の値を 20 に設定しますが、これはブートスラップアクションによってオーバーライドすることができます。値を -1 にすると 1 つのジョブ内でいつまでも再利用が行われ、1 にするとタスクは再利用されません。
タスク間でJVMを共有してフレームワークのオーバーヘッドを低下させる意図。JVMの起動にはコストがかかるので、多くの小さいファイルを処理する場合はJVMを何度も再利用して起動のコストを下げる。 処理に時間がかかる場合は、すべてのメモリが確実に解放されるようにJVMを再利用しないようにする。
SaxParseException
なんのことかよくわからない