ansible やっていてこんなこと聞かれたらこんなタスクを追加しましょう
- name: install python passlib apt: "pkg=python-passlib state=installed"
ansible やっていてこんなこと聞かれたらこんなタスクを追加しましょう
- name: install python passlib apt: "pkg=python-passlib state=installed"
Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user
とか言われた場合、ドキュメントには pipelining すればいいと書かかれているようです。
http://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user
ということで ansible.cfg に下記を追加すればいいんじゃないかな
[ssh_connection] pipelining = true
おしまい
DB インデックスを知らないエンジニアがいるらしいので啓蒙したいという話です。
DB のインデックス設計は HDD 使っている頃には最重要なスキルだった気がしますが、今の時代、エンジニアに求められる事が増えすぎているのでインデックスの事に関して知らない人(DBインデックスが起因する問題に出会ってない人)がいても不思議ではない気がします。
というわけで何故 DB インデックスを知らない人がいるのか?という事に関しては我々のようなおじさんエンジニアが伝えないといけいない事をちゃんと伝えていないからなんじゃないかと思いペンをとりました。
詳しい事は過去にそういう記事を書いたのでこちらを見てください...
http://okamuuu.hatenablog.com/entry/2013/02/23/005046
昔とある企業でいつも同じクエリーが遅いとインフラエンジニアから苦情が来るので解消してくださいと言われたので調べたら掲示板の全件取得にインデックスが効いてなかった事があります。
どうやら最初は index が効いていたようですが、後から delete_flg を追加するタスクが発生し、そのフラグのせいでフルーテーブルスキャンに変わってしまったようです。日時の経過にともないデータ量が増えてある日インフラチームから警告が発生した。という事だと思います。
上述のエントリーはそのタスクを解消したときの方法を紹介しています。
割とあるあるな話ではあると思いますが、こういう昔ながら話をもう一度してみると誰かの役に立つかもしれませんね。近年のWEB開発者は覚える事が多すぎて以外と知らない事が多いでしょうし。
そういえば 2017/5/27(土) にアットホームなカンファレンスが開催されるようです。昔あなたが困った事を発表したりすると誰かの役に立つかもしれません。
商談の時にコーディングテストがあったのですが解けなかったので復習
function invert(num) { let answer = 0 while (num > 0) { const rightNumber = num % 10 // num 1 の位を取得 num = (num - rightNumber) / 10 // num を位下げする answer = answer * 10 // answer を位上げする answer += rightNumber // 取得した1の位を付け足す } return answer } console.log(invert(12345)) // 54321 console.log(invert(12340)) // 4321 console.log(invert(12040)) // 4021 console.log(invert(12000)) // 21
ちなみに最初は下記のように一回文字列にするやり方で回答したのですが、「文字列にしないで解いて下さい」と言われました。要件を満たしているのに何故なんだろう...
function invert(num) { return parseInt((num + "").split("").reverse().join(""), 10) }
以下のような記事を見つけたので facebook がいい感じの UI components を出したかと思って興味をもちました。
で以下の動画を見た。どうやら期待していた話とはちがっている模様。UI component
な話ではないらしい。
いわゆる仮想DOMと呼ばれているのは概ね下記の事なのかな?
で、fiber は reconciliation の部分を新しいアルゴリズムに変えたらしいです。なので互換性自体は損なわれないはず。
というわけで私が最も気になっていたのは「JavaScript の UIフレームワークを完全リニューアル」がいい感じの UI components が出たの??という事だったのですがどうやらちがった。
というわけで fiber 自体は非常に興味深いのですが、私がとる選択は「素直に最新バージョンが出たら追従する」で「他に興味がある事柄に注力する」です。
最新のバージョンに追従すると既存のコードに影響が出てしまったり、他のタスクも平行して進めなければならない場合がほとんど。
そんななかフロントエンドを一騎駆けしないといけない状況(援軍が来ない)だとバージョンアップの追従をだんだんやらなくなっていくんだよなあ...
良識のある偉い人のみなさまにはぜひフロントエンドに友軍を送り込んで頂きたい。
以下のようのにするとよいでしょう。
curl -X POST -H "Content-Type: application/json" http://localhost:10041/d/load?table=Articles -d @groonga/backup/load.json
Node.js v7.6.0 から async と await が --harmony
フラグ無しで使えるようになっています。
以下のような逐次処理を書くときに簡単に書けるようになりました。
async function x() { let total = 0 for (let i = 0; i < 100; i++) { total += await Promise.resolve(i) } return total } x().then(console.log) // 4950
逐次処理ではなくて並列処理をしたい場合は Promise.all を使うとよいでしょう。
function sleep(ms = 0) { return new Promise(r => setTimeout(r, ms)) } // async をつけて Promise を return する async function y() { for (let i = 0; i < 100; i++) { await sleep(1) } } // Promise を return しているので async はつけない function z() { const tasks = [] for (let i = 0; i < 100; i++) { tasks.push(sleep(1)) } return Promise.all(tasks) } console.time("y") y().then(() => console.timeEnd("y")) // 151.229ms console.time("z") z().then(() => console.timeEnd("z")) // 10.434ms