by shigemk2

当面は技術的なことしか書かない

mapred.reduce.tasks

mapred.map.tasks

各スレーブノードにおいて同時に並列実行可能なタスク数

任意のジョブ実行時において、クラスタ全体で起動されるmapタスク数

https://open-groove.net/hadoop/mapred-map-tasks/

http://mail-archives.apache.org/mod_mbox/hadoop-common-user/201203.mbox/%3C1940298196-1331361316-cardhu_decombobulator_blackberry.rim.net-1421823174-@b18.c2.bise7.blackberry%3E

mapred.reduce.tasks とは対の設定。YARNの前の記事なので、YARNのときとは別に考える必要があると思う。だからこれはなぐりがき。

evaluate variable in alist

evaluate variable in alist

alistの中で変数を展開したい!でもこうなっちゃう!

(setq data "テストです")
"テストです"
(setq list '(("a" . data)))
(("a" . data))
-- (("a" . "テストです")) にしたい

バッククオートとカンマの合わせ技でなんとかする。

(setq data "テストです")
"テストです"
(setq list nil)
nil
(add-to-list 'list `("a" . ,data))
(("a" . "テストです"))

manual request.el post

manual request.el post

マルチバイト文字列データのJSON POST

(request-deftest request-post-multibytes ()
  (request-testing-with-response-slots
      (request-testing-sync "report/some-path"
                            :type "POST"
                            :data '(("鍵" . "値"))
                            :parser (lambda ()
                                      (let ((json-key-type 'string))
                                        (json-read))))

普通のJSON POST これでマルチバイト文字列を投げるとjson-encodeがうまくいかなくて失敗する

(request
 "http://httpbin.org/put"
 :type "PUT"
 :data (json-encode '(("key" . "value") ("key2" . "value2")))
 :headers '(("Content-Type" . "application/json"))
 :parser 'json-read
 :success (cl-function
           (lambda (&key data &allow-other-keys)
             (message "I sent: %S" (assoc-default 'json data)))))

http://tkf.github.io/emacs-request/manual.html

ふりかえり2017

2017年に出したプルリクエスト

マージされていないのも含めて120くらい

リポジトリ名 プルリクエスト数 マージされたプルリクエスト数 備考
homebrew-core 24 23 aws-cliとprestoがほとんど
rundeck 54 54 typo/リンク切れ
ansible 11 11 typo/リンク切れ
aws-cli 8 8 typo
apex 1 1 リンク修正
ghq 3 0 機能追加
google-translate 3 2 作者多忙のためメールでやりとり
kuroko2 5 4 Railsしんどい
presto 1 0 Facebookのエンジニアのプルリクが優先されて取り込まれているイメージ
fish-shell 9 9 manの見た目修正が最大の力作
scalikejdbc 3 3
digdag 1 1
合計 123 116

多いのか少ないのかよくわからないけど、使っているライブラリのアップデートとか、ドキュメント修正とかが多かった。 ドキュメントのアップデートやライブラリのバージョンアップはとても大事だけど、あんまり時間を書けたくないし自動化出来るなら自動化したいとは思う。

2017年の活動など

いろいろ発表した。

www.slideshare.net www.slideshare.net www.slideshare.net www.slideshare.net

最近は、「お金払っているんだからちゃんとしたものを発表しないといけない」という気持ちと、「今までやってきたことをこの発表で棚卸しして文章にして残しておきたい」という気持ちが半々で、バズらせるとかは二の次で考えている。

(薄い)本出した www.shigemk2.com www.dlsite.com

同人誌を出してみたっちゃあ出してみたけど、正直言ってあんまり得られるものはなかったかも… 棚卸ししたいなら本書かずにブログ書けばいい話だしな… よくよく考えたら、人混みが大嫌いなのになんであんな人混みオブ人混みにダイブしようと思ったのか…

ブログや発表は淡々とやっており、このあたりは引き続きがんばっていく。

2017年の業務(ざっくり)

  • 某ETLの運用とリプレイス
    • オンプレHadoop + HiveからEMR + Prestoへ
    • JavaオンリーだったETLをリプレイスするに当たっていろいろ検証
    • JavaオンリーだったのをScala + Redux + kuroko2へリプレイス
  • 某WebシステムのAWSアカウント移行

この1年、EMRとかScalaとかいろいろ触っていたけど、Hadoopのエコシステムちゃんと理解できてる?っていうとすごく微妙だった。 いろいろなシステムを触って、運用して、リプレイスしたりマイグレートしたりして、使い方や機能追加などはなんとなくベースでは前より分かるようになったけど、 設定があったとしてそういう設定になっているのはなぜなのか、コードがあったとしてそういうふうに実装されているのはなぜなのか、「おまじない」で片付けていないか などと考えると、結構微妙であったりするので、そこらへん、時間があったら棚卸しして勉強していきたいって思った。

なんとなく資格ほしいなーっていうのと、あとは、基礎に立ち返って それがなぜ動いているのか っていうのを開発者の視点で徹底していきたい。

memo Emacs set-buffer-multibyte

memo Emacs set-buffer-multibyte

  • set-buffer-multibyteでnilにすると、以下のプログラムではバッファの文字列がそのまま表示されない ({R{R といった文字列になった)
  • (set-buffer-multibyte t) などにするとバッファはマルチバイトになる
(defun hoge()
  (switch-to-buffer "*request-result*")
  (set-buffer-multibyte t)
  (setq data "ほげほげ")
  (erase-buffer)
  (insert data))

カレントバッファの表現方法を設定する. multibyteがnil以外であると, バッファはマルチバイトになる. multibyteがnilであると, バッファはユニバイトになる.

memo emacs insert

memo emacs insert

  • (insert "hoge") かんじでバッファに文字列/文字を入れる
  • inesrtする文字列がマルチバイトだとユニコードに変換される
    • カレントバッファがユニコードだったらマルチバイト文字列はユニコードに変換される
insert is a built-in function in ‘C source code’.

(insert &rest ARGS)

Insert the arguments, either strings or characters, at point.
Point and after-insertion markers move forward to end up
 after the inserted text.
Any other markers at the point of insertion remain before the text.

If the current buffer is multibyte, unibyte strings are converted
to multibyte for insertion (see ‘string-make-multibyte’).
If the current buffer is unibyte, multibyte strings are converted
to unibyte for insertion (see ‘string-make-unibyte’).

When operating on binary data, it may be necessary to preserve the
original bytes of a unibyte string when inserting it into a multibyte
buffer; to accomplish this, apply ‘string-as-multibyte’ to the string
and insert the result.

[back]