[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
仕事用に作ったユーティリティだけど、仕事の要素ないので公開してしまう。
お仕事で $ aws ec2 describe-instances してとってきた AWS のインスタンスリスト (json 形式) があまり単純な形になっていなかったのでただの配列にしてみる関数を書いてみた結果。
function flattenAWSInstances(describeInstancesResult) {
var list = describeInstancesResult.Reservations;
var result = [];
list.forEach(function(reservation) {
result.push(reservation.Instances);
});
return [].concat.apply([], result);
};
Algorithmia というサービスが面白そうだったので触ってみている。これは開発者の作ったアルゴリズムがデプロイされ、ユーザはそれにお金を払って利用することができる、というサービスだ。
アカウントを作り、ログインするとログインしてすぐの画面に API Key が示される。これを使ってアクセスするようだ。
Algorithmia Documentation にとりあえず curl で試す方法が記述されていた。試しに
$ curl -X POST -H "Authorization: Simple MY_API_KEY" -d "Hiyoko" -H "Content-Type: text/plain" https://api.algorithmia.com/v1/algo/demo/Hello/0.1.1 -k
を実行したところ
{"result":"Hello Hiyoko","metadata":{"content_type":"text","duration":0.040070509000000004}}
という感じで結果が得られた。これは愉快だ。
利用可能なアルゴリズムの一覧は Algorithms のページに掲載されていた。
比較的よく使われているようである "Html 2 Text" を見てみる。なんと、ページに即 curl のコマンドが載っているではないか! これはガイドなしで即時使えるわけである。
$ curl -X POST -d "\"http://sheeprogramming.iku4.com/\"" -H "Content-Type: application/json" -H "Authorization: Simple MY_API_KEY" https://api.algorithmia.com/v1/algo/util/Html2Text/0.1.4 -k{"result":"ひつ(じのひよこが)プログラミングします。 HTML / CSS / JS で簡単なアプリを作ったりする際、困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたことを綴ります。 ネットワークやセキュリティなど、IT関連で興味のある分野にも触れたいと思っています。 ★毎週土曜日と日曜日に更新予定です。 プロジェクトの安泰さを測る物差しの一つに「トラック係数」というものがある。 こちら、「プロジェクトメンバーが『何人』急にいなくなったらプロジェクトが破綻するか」を表す数字である。多い方が良い数字。名前は「トラックに何人撥ねられてもプロジェクトが存続するか」という意味らしい。 開発のみならず、サークルなどにも応用できる考え方だと思う。 この製品はAさん、Bさん、Cさんの3人で作っている。お客様が触れる部分をAさんとBさんの2人、基盤となる部分をCさん1人で。この場合、Cさんが欠けたらプロジェクトは破綻するので、トラック係数は1となる。 しかし、もしもBさんがCさんと一緒に基盤部分を触っていれば、BさんとCさんの双方が欠けなければプロジェクト存続は可能であるため、トラック係数は2に増える。 この製品はプログラムを書く人が豊富であり、一つのモジュールにつき、最低3人がかかわっている。しかし、運用チームの層は薄く、2人で回している。この場合、トラック係数は2となる。 さらに運用チーム2人の担当エリアが分かれており、互いの仕事をよくわかっていない場合、トラック係数は1となる。 トラック係数が1でないプロジェクトってどれだけあるのだろう? どんなに色々考えても、どうしたって一人しか把握できていない部分って生じるように思う。その部分を他の人でも把握しやすいように作れているか、ないしは、把握できない場合に切り捨てて作り直せるようになっているか、が重要な気がする。 11/19が妻との交際開始の記念日である。なのに、妻は毎年忘れている。 結婚3年目の今日、交際開始から5回目の記念日になり、ようやく「覚えているよ!思い出したよ!」と尋ねたら答えてもらえた。去年までは「なんだっけ?」であったのだ。 難儀である。 長男が初めての人見知りをしたらしい。相手は次男。 ……それは人見知りなのだろうか…… 妻が次男を抱っこしていると長男は怒って泣くらしい。わかるのだなぁ… WEB Storage というものをひよんとふにしろ SWEET にしろ多用している。WEB Storage は Cookie に似たような機能だが、色々な面で少し違う。 Cookie は次の方法で更新/取得する。 に代入することで、1つの Key-Value の組み合わせを更新する。全部が更新されるわけではない。例えば //2 で //1 の結果は上書きされたりはしない。しかし、 に全ての Key-Value の組み合わせが格納されている。正直、直感的ではない。 WEB Storage は次の方法で更新/取得する。 Cookie に比較して直感的に見える。なお、 getItem で未定義の値を取得すると null が取れたりする。 SWEET で多用している方法。次のようにすると JS オブジェクトをそのまま入れられる。ただし、関数が含まれる場合はもう一工夫が必要になる。関数は JSON としては無効だからだ。セーブデータなどを入れたりするのに便利。 Cookie はドメインごとに 4kb までしか保存できないが WEB Storage はドメインごとに 5MB (ブラウザによってはもっと多い) まで保存できる。多い。 別ドメインで保存したもの���参照できないのは変わらない。 有効期限がウィンドウを閉じるまでな WEB Storage。使い道はよくわからない。 ようやくミルクが飲めるようになったので、次男、退院可能とのこと。明日、11/7に退院します。一ヶ月より早く退院出来てのほほん。 ","metadata":{"content_type":"text","duration":0.792284783}}原則としては GitLab Documentation にある通りに実行すればとれる。
const request = require('request');
// GITLAB_URL は https://gitlab.example.com 等
// PRIVATE_TOKEN は profile/account から取得できる。これは秘密にするべき情報
const gitlabUrl = GITLAB_URL + '/api/v3/users?private_token=' + PRIVATE_TOKEN;
// SSL 証明書がオレオレな場合に付与
// process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
function getGitlabUsers(url, callback, opt_num, opt_array) {
var num = opt_num || 0;
var list = opt_array || [];
request(url + '&page=' + num, function(e, res, body){
var result = JSON.parse(body);
if(result.length) {
list = list.concat(result);
getGitlabUsers(url, callback, num + 1, list);
} else {
callback(list);
}
});
}
getGitlabUsers(gitlabUrl, function(userList) {
console.log(userList.length, '人のユーザが登録されているぴょん');
});
Promise とか使えばもう少しきれいに書けると思う。node を使わなくても上記 gitlabUrl への curl を打ち続ければユーザリストは取れる。ただし、一度に20人しか取れず、21人目以降は page 引数を与える必要があるため、スクリプトに任せるが吉だと思う。
妻から「レシピから N グラム分を作るための分量を入れた上で M グラム欲しい、と打ち込んだら M グラムのための分量が出てくるのが欲しい」という話を貰った。
例えば 和風ハニーマスタードソース by さそっち [クックパッド] 簡単おいしいみんなのレシピが247万品だとどうなるだろうか。3人前でマヨネーズが大匙4杯とある。10人前を指定すれば13杯、と出してくれるわけである。
http://shunshun94.web.fc2.com/util/recipeAmount.html
ただ、特に難しいことはしていない。ただの愛妻アピールである。