nvm&npmの環境で入れたモジュールってバージョン毎にどこあるのか調べた。

f:id:yassan0627:20171229071433p:plain 前に、yoを入れたのだけど、

yassan.hatenablog.jp

Node.jsをnvmでVer.切り替え出来るようにしてるので、インストールしたモジュールってどこに行くのか?
って思ったので簡単に調べた。

結論: -g指定してグローバルインストールしているけど、実行バージョンのみにインストールしている。

改めて、nvm読む。

環境は、NPM_CONFIG_PREFIXを見ているみたい。

マニュアルは、、、man npmってやっても存在しません。。 npm --help としたら、npm help npmで分かるそうな。
ver.依存あるし当然っちゃ当然。

$ npm help npm
 :

DIRECTORIES
       See npm help 5 npm-folders to learn about where npm puts stuff.

       In particular, npm has two modes of operation:

       · global mode:
         npm installs packages into the install prefix at prefix/lib/node_modules and bins are installed in prefix/bin.

       · local mode:
         npm installs packages into the current project directory, which defaults to the  current  working  directory.   Packages  are
         installed to ./node_modules, and bins are installed to ./node_modules/.bin.

       Local mode is the default.  Use -g or --global on any command to operate in global mode instead.

グローバルモード(インストール時に -g 指定)した場合は、prefix at prefix/lib/node_modules と prefix/bin にインストール。 デフォルトとはローカルモードで、カレントに./node_modulesを使ってそこに入れる。と。なるほど。

prefixってどこかなぁ、、、

$ npm config edit
 :
; prefix=/home/yassan/.nvm/versions/node/v8.9.3
   :

コメントアウトされてるけど、デフォルトは/home/yassan/.nvm/versions/node/v8.9.3ですね。

試しに別の環境で、2つのバージョンをインストール後に、ローカルモードでインストール(npm install yo)したら、カレントにnode_modulesディレクトリを作って、そこにインストールしてた。 しかも、パスが通ってないので、未設定だとyo使えない(当たり前)

んで、グローバルモードでyoをインストール。

$ npm install -g yo
/home/yassan/.nvm/versions/node/v8.9.3/bin/yo -> /home/yassan/.nvm/versions/node/v8.9.3/lib/node_modules/yo/lib/cli.js
/home/yassan/.nvm/versions/node/v8.9.3/bin/yo-complete -> /home/yassan/.nvm/versions/node/v8.9.3/lib/node_modules/yo/lib/completion/index.js

> spawn-sync@1.0.15 postinstall /home/yassan/.nvm/versions/node/v8.9.3/lib/node_modules/yo/node_modules/spawn-sync
> node postinstall


> yo@2.0.0 postinstall /home/yassan/.nvm/versions/node/v8.9.3/lib/node_modules/yo
> yodoctor

となってたので、実行しているバージョン先と関連付けてますね。 実際に存在確認。

yassan:~/.nvm/versions ((v0.33.8)) $ ll node/v8.9.3/bin/
合計 34388
drwxrwxr-x 2 yassan yassan     4096 12月 29 06:47 ./
drwxrwxr-x 7 yassan yassan     4096 12月 29 05:38 ../
-rwxrwxr-x 1 yassan yassan 35200878 12月  8 23:09 node*
lrwxrwxrwx 1 yassan yassan       38 12月  8 23:10 npm -> ../lib/node_modules/npm/bin/npm-cli.js*
lrwxrwxrwx 1 yassan yassan       38 12月  8 23:10 npx -> ../lib/node_modules/npm/bin/npx-cli.js*
lrwxrwxrwx 1 yassan yassan       33 12月 29 06:47 yo -> ../lib/node_modules/yo/lib/cli.js*
lrwxrwxrwx 1 yassan yassan       46 12月 29 06:47 yo-complete -> ../lib/node_modules/yo/lib/completion/index.js*
yassan:~/.nvm/versions ((v0.33.8)) $ ll node/v9.3.0/bin/
合計 34212
drwxrwxr-x 2 yassan yassan     4096 12月 12 18:38 ./
drwxrwxr-x 7 yassan yassan     4096 12月 29 06:21 ../
-rwxrwxr-x 1 yassan yassan 35021636 12月 12 18:37 node*
lrwxrwxrwx 1 yassan yassan       38 12月 12 18:38 npm -> ../lib/node_modules/npm/bin/npm-cli.js*
lrwxrwxrwx 1 yassan yassan       38 12月 12 18:38 npx -> ../lib/node_modules/npm/bin/npx-cli.js*

確かに、実行バージョン(v8.9.3)にはyoはあるけど、使っていないバージョンには入ってませんね。

納得したのでこの辺で。

redash on Rancher

f:id:yassan0627:20171202155827p:plain むっちゃ遅れましたが、 Rancher Advent Calendar 2017 の 20日目の記事です。

  • TLDR
    • Pros
    • Cons
  • なんでカタログ化したいん?
  • 前提条件
  • プライベートカタログの作成
    • Redashのカタログの工夫ポイント
      • その1:docker-compose.ymlの条件分岐
      • その2:pgAdmin4の追加
      • その3:サンプルデータセットの容易
      • その4:sidekickを使って初回起動前に実施が必要なcreate_dbを実施
      • その5:スタックの配置先のローカルボリュームをスタック削除しても消えないようにした
    • 最終的に、作成したカタログ
      • docker-compose.yml.tpl
      • rancher-compose.yml
  • プライベートカタログをリモートリポジトリへ追加
  • ローカルボリュームを作成する
    • Racher CLI setup
    • ローカルボリュームを作成
  • プライベートカタログをRancherへ登録
  • redashカタログからサービスを起動
  • 今後について
  • おまけ:pgAdmin4の使い方
続きを読む

Rancherでdocker-compose.ymlの条件分岐を試す

f:id:yassan0627:20171202155827p:plain Rancher Advent Calendar 2017 の 13日目の記事です。

20日目に「 redashのプライベートカタログ化」を紹介するのですが、あれこれ欲張りすぎて記事が長くなったのと、まだ、カレンダーが埋まってないので埋めてみました。

目次

  • 使い方
    • 条件式用の変数の定義 <rancher-compose.yml>
    • 条件分岐の記述 <docker-compose.yml>
    • 注意事項
  • その他の例
続きを読む

カタログジェネレータを試してみた

f:id:yassan0627:20171202155827p:plain Rancher Advent Calendar 2017 の 12日目の記事です。

20日目に「 redashのプライベートカタログ化」を紹介するのですが、あれこれ欲張りすぎて記事が長くなったのと、まだ、カレンダーが埋まってないので埋めてみました。

  • プライベートカタログジェネレータのセットアップ
    • npmのVer.管理ツール nvm のインストール
    • npmのインストール
      • インストール可能な安定Ver.を探す
      • 安定Ver.のnpmをインストール
    • Yeomanのインストール
      • npmを使ってYeomanをインストール
    • Rancherカタログジェネレータ generator-rancher-catalog をインストール
  • 空のカタログを生成
続きを読む

redashでのアクセス制御について

※redashの権限指定に誤りがあったので修正(2018/01/18)※ Redash Advent Calendar 2017 の 22日目の記事です!

redashを使って可視化したら今度は、色々な人に公開したくなりますよね?

ただ、会社によっては、「あのデータを全員に見せるのは如何なものか?」勢が少なからずいるはず。
まぁ、なんでもかんでもデータを見せることで事業リスクなったり、インサイダーな重要事実を知っている扱いの人を不用意に増やすのもまた問題でもあります。

そういう訳で、必要な人に適度にデータを公開する為に、redashを使った取り組み事例のご紹介。

検証環境

  • ホスト:Ubuntu 16.04 LTS
  • redashは、Dockerイメージを使って構築(v3.0.0+b3134)

TLDR

  • グループにパーミッション設定をつければ良いが、GUIでは指定不可。 CLIでは出来るようだが、今回はテーブル直接変更した。
  • redashだけでは、クエリ単位のパーミッション設定は出来ない。 なので、ロール違いの同じデータベースなデータソースを複数用意して、ロールに応じて参照権限有/無でうまいこと切り分ける(かなり力技)。

はじめに

redash単体で可能なアクセス制御は以下の通り、ソース見るとパーミッション設定値がそのままなので、イメージが湧くと思います。

cf. redash/groups.py · getredash/redash

@option('--permissions', default=None,
        help="Comma separated list of permissions ('create_dashboard',"
        " 'create_query', 'edit_dashboard', 'edit_query', "
        "'view_query', 'view_source', 'execute_query', 'list_users',"
        " 'schedule_query', 'list_dashboards', 'list_alerts',"
        " 'list_data_sources') (leave blank for default).")

見難いので、整理するとこんな感じ

create_dashboard
create_query
edit_dashboard
edit_query
execute_query
list_alerts
list_dashboards
list_data_sources
list_users
schedule_query
view_query
view_source

また、コードにもあるとおり、パーミッションはグループに付与するようです。
ここでは、CLI経由でグループ作成時に指定するようです。GUIでは指定出来ないので、CLIを使う事になりますが、イマイチわからないので、テーブルを直接書き換えちゃいます

前提条件

ユーザ 所属グループ パーミッション
member1 member_group すべての操作可能
manager1 manager_group ダッシュボードの選択と閲覧しか出来ない

cf. ダッシュボードの用意には、id:kakku22 さんの kakakakakku/redash-hands-on: Redash study materials for beginners 📊 を活用させていただきました。
cf. testデータソース用のテーブルデータは、 Mockaroo を使ったダミーテーブルを作成しました

ユーザ及びグループの作成

まず、グループの作成、管理者ユーザでredashにログインし、グループを2つ作成し、ユーザを各々所属させます。


グループのパーミッションの変更

次に、redashのデータベースに入って、groupsテーブルを以下のようにいじります

グループ パーミッション
'member_group' '{"view_query","execute_query","list_dashboards"}'
'manager_group' '{"create_dashboard","create_query","edit_dashboard","edit_query","view_query","view_source","execute_query","list_users","schedule_query","list_dashboards","list_alerts","list_data_sources"}'

※更新すると即時反映されます

変更結果

manager1の表示

デフォルトと特に変わりません

member1の表示

一方、memberの方は、クエリやアラートなどの表示が消えて選択できなくなっています。

また、ダッシュボードの作成も出来ません。

ダッシュボードも右端にあるはずの編集ボタンが消え、各クエリへのリンクもなくなっていることがわかります。

データソースを分ける

データベース test を作成して、ロール ope_1、ope_2を作成して、以下のように権限設定します。

テーブル名 ope_1 ope_2
users 参照可能 参照不可
play_list 参照可能 参照可能

下記のようにデータソースを作成

ope_2が参照出来ない ope_2で参照

各グループに作成したデータソースを割り当て

グループ 設定
manager
member

クエリを下記のように作成

上記2つのクエリをならべたダッシュボードを作成して、ユーザによって表示を確認

グループ 表示
manager
member

まとめ

以上が現状までに考えた対策です。
ただ、これ非常にややこしい(特にデータソースで分ける辺り)。しかも、柔軟性に乏しいので、その場しのぎでしか無いです。

この方が楽だとか、あればぜひ教えてください!

明日は、 @katsuhisa__ さんです。お楽しみに。

今年のビールを振り返る

f:id:yassan0627:20171216175109p:plain Beer Advent Calendar 2017 Adventar の18日目の記事です。

ビール好きですか?

ワタシ、ビールチョットスキデス。

上の絵は今年飲んだビールの一部をタイル状にしてみました。

そして、日本の井戸水 日本酒も大好きです。 日本酒 Advent Calendar 2017 でも記事書いてるのでそちらもよろしく。

ビール美味しいですね。ビール。

中でもクラフトビールに分けられるビールが大好きです。
ピルスナーも暑い日にキンキンに冷やして、太陽の下で飲むのは最高ですね。

ただ、ピルスナーだけじゃなく、スタウトやポーター、ペール・エールIPAとその他のジャンルが特に大好きですね。 中でも一番好きな「ポーター、スタウト」と「IPA」の2つに分けてご紹介。

ポーターやスタウト系

いわゆる黒ビールってやつですね。
最近では、国内大手ビールメーカーからも出てますが、どれもピルスナーの枠から超えない感がどうしてもあって、好みでは無いです。

コスパが最高なのは、ヤッホー・ブルーイング東京ブラックも捨てがたいですが、やっぱり https://www.ratebeer.com/beer/lion-stout/3061/ ですね。
f:id:yassan0627:20171216175159p:plain
ほのかに丁度よい甘さが好きです。 KALDIとかにも置いてたりするので、見かけたら一度飲んでみては。

一番美味しかったのは、伊勢角屋麦酒 スタウト です。
f:id:yassan0627:20171216175900p:plain
コーヒーみたいなロースト感と甘みがほんと美味しかった。

あぁ、MINOH BEER スタウト も捨てがたいなぁ。これも最高に美味しいです。

IPA

独特の強い苦味がたまらん。 IPAは特に好きで大体IPAばかり飲んでます。

コスパ高くて調達しやすい インドの青鬼 はローソンで買えるのでほんとありがたい。

一番美味しかったのは、 志賀高原IPA Fresh Hop です。期間限定の志賀高原IPAの自家栽培ホップ生ホップ版で、香りが良く苦味も最高でホント美味しかった。来年も飲みたいなぁ。
f:id:yassan0627:20171216181331p:plain

他にも箕面ビールのおさるIPAとか、W-IPAもかなり美味しいです。

まとめ

最近はヤッホー・ブルーイングの製品がコンビニで買えるので、遅くなっても飲めるようになったのはホントありがたいですね。 去年もやってましたが、夏限定の僕ビール、君ビール。続よりみち も美味しいです。通常版も美味しいですが、特によりみちは美味しい。 後、ちょっと前に出た 僕ビール、君ビール。ミッドナイト星人(ホッピーアンバー) も美味しいです。
f:id:yassan0627:20171216181813p:plainf:id:yassan0627:20171216182253p:plain

始めの頃は、外国のクラフトビールを飲んでましたが、高いのでホイホイ買えない。。。Rogue の DEAD GUY ALE とか好きなんだけど、高い、、、
それなら国内のクラフトビールメーカーでも十分に美味しいので、最近では国内メーカばかり飲んでます。

来年も美味しいビールが出ないか楽しみですね。

明日は、 @masuP9 さんです。渋谷のよく行くビールのお店だそうです。すごく楽しみですね。

今年飲んで美味しかった日本酒を挙げていく

f:id:yassan0627:20171216191916p:plain

日本酒 Advent Calendar 2017 の17日目の記事です。

上の画像は、今年飲んだ日本酒の一部です。 ビールも美味しいのだけど、やっぱり日本酒が一番美味しい。

居酒屋で飲むとどうしても高くなるので、家飲みが多くなりますね。

では、その中でも特に美味しかったケシカランニホンシュを挙げて行きます。

大典白菊 直汲み純米吟醸生酒 岡山朝日米五五

f:id:yassan0627:20171216204407j:plain

岡山 備中の地酒 白菊酒造 のお酒。

シャリにも使っている食用米 朝日米を使った日本酒。 五五とは、55%まで磨いているらしい。
すごくバランスの良いお酒。旨みと香りが最高! 生酒特有のシュワッと感もあって美味い。

Shirakiku Beilliant 純米吟醸無濾過生原酒

f:id:yassan0627:20171216192225p:plain

銀シャリって銘柄のお酒も作ってる京都府京丹後市 白杉酒造株式会社 のお酒。

こちらも丹後産コシヒカリを使ったお酒。 酸味と香りのバランスが良いです。白ワインみたいな感じ。それを意識してワインボトルになってます。

不動 おりがらみ 出羽燦々

f:id:yassan0627:20170312224104j:plain

千葉県の仁勇と不動で有名な 鍋店株式会社 のお酒。

シュワッと感と程よい甘味と最後のキレがたまらん!
女性なら多分好きそう。

笑四季 純米大吟醸 真夜中のバカンス

f:id:yassan0627:20171216202217p:plain

ラベルがおしゃれな 笑四季酒造 夏酒っぽくアッサリめだけどちゃんとキレもあるし美味い!生だったらヤバイ。

純米大吟醸 無濾過生原酒

f:id:yassan0627:20171216202958p:plain
山形県の東光がメインブランド 小嶋総本店のお酒。

旨さとキレが抜群。香りは控えめだけど、旨味と甘さのバランスがとても良い。

まんさくの花 超限定純米大吟醸一度火入れ原酒

f:id:yassan0627:20171216192240p:plain

秋田の地酒 まんさくの花 で有名な 日の丸醸造株式会社 のお酒。
ラベルだけだと、「超限定」とか「大吟醸」とか形容詞的な表現が真ん中にどかーんとあるお酒はだいたい失敗なんだけど、これは別。

春と秋、1年に2回、発売される超限定商品。 今年一番のお酒。むっちゃ好み。ケシカラン。

以上、今年の日本酒を振り返るでした。