masalibの日記

システム開発、運用と猫の写真ブログです

mongodbのメモ

メモです
NoSQLで有名なDBです

会社のシステム的には使っているのですが
使いこなせる人が辞めたり、移動したりして今は誰も使いこなせない状態です
今後、集計をおこなうために勉強した

クライアントツール(gui)のインストール

Robo 3T - formerly Robomongo — native MongoDB management tool (Admin UI)
→ ダウンロードで環境にあわせたソフトをインストール
接続は直接指定もできるのですが、ローカルからとそのネットワークのみしか接続できなかったので
SSHを踏み台サーバーとして接続する方式で接続した
これはmysqlのツールと同じ
接続するとDBがあるので
テーブル(コレクション?)一覧が表示されるので
ダブルクリックすると取得するJSが表示される

db.getCollection('login_history').find({})

そちらを修正していく

whereの指定方法

db.getCollection('login_history')
.find({ userId :"5914037b"})
.sort({_id: -1})
.limit(1)

findの次のカッコで指定できます

{ userId :"5914037b"}

上記の場合はuseridが5914037bのデータを取得しています

ソートもカラムで指定できる

-1が降順
1が昇順

条件が入れ子の場合の指定方法

データが入れ子の場合の条件指定は単純に
.(ドット)でつないでいくだけです

{
    "client" : {
        "platform" : "iOS",
        "version" : "11.12.13",
        "userId" : "c871eb946596b255",
        "tttt" : "TTTTTT",
        "ttt1" : "TTTTTT",
        "ttt2" : "TTTTTT",
        "ttt3" : "TTTTTT",
        "ttt4" : "TTTTTT"
    }
}

上記の場合のデータを条件で取得するクエリーは以下のようになる

db.getCollection('login_history')
.find({ "client.userId" :"5914037b"})
.sort({_id: -1})
.limit(1)

出力したカラムを指定する場合

db.getCollection('login_history')
.find(
	{ "client.userId" :"5914037b"},
	{
		  "client.iconitId": 1
		, "client.platform": 1
		, "client.version": 1
		, _id: 0
	 }
)
.sort({_id: -1})
.limit(1)

条件のあとに出力したいカラムを指定する
デフォルトだと_idがでるのでそれはいらないので消す

参考URL
www.yoheim.net

mongodbの_id objectidとは

要するにunixタイムスタンプにマシンIDとプロセスIDとカウンターをセットしたもの

toshitanian.hatenablog.com

作ったJSは保存できる

そして実行できるはず
$ mongo db_name --quiet query.js
dqn.sakusakutto.jp


あれ・・・何も出力されない??
現在、調査中です

ありすぎて困っている無料の機械学習講座

世界中の数百の学校で無料のオンライン講座があります
その中でも機械学習に絞って探しているのですが
ありすぎて困っている
自分のメモもかねてブログに記載する

前提として
 ほぼ英語ですが、無料です
 自動翻訳機能を使えばだいたいは理解できる

続きを読む

angularの動作確認用サーバー

angularのサンプルソースを作った時にスマフォで確認できるサーバーがない事に気がついた
httpsが使えるFirebaseのhostingを使う事にしました
(1Gまでは無料、5Gで20円ぐらい)

下記のURLでnode.jsをインストール
masalib.hatenablog.com

開発環境の権限系ではまりたくないのでrootになる

su -

デプロイ系のツールをインストールする

npm install -g firebase-tools

node.jsのバージョンが古くなければすんなり入る

vagrant(VirtualBox)の環境なのでブラウザ起動ができない
起動しないオプションを設定してログインのコマンドを実行する

$ firebase login  --no-localhost

するとターミナルにURLが表示され
グーグルへログイン、ターミナルでトークンを聞かれるのでそこへ行ってコピペします。

作業用のフォルダを作成して初期化する

$ mkdir /var/src/firebase-test
$ cd /var/src/firebase-test
$ firebase init

どのプロジェクトを使用するとか色々きかれる
参考サイト

qiita.com
firebase.jsonやpublicフォルダなどができるはず・・・だったが
自分の環境はなぜか空ファイルのfirebase.jsonができて何もできなかった

意味がわからず、公式サイトからコピペした

{
  "hosting": {
    "public": "app",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}


アップ用フォルダとファイルを作る

$ mkdir /var/src/firebase-test/app
$ echo "<body><html>test masalib</html></body>" >>  /var/src/firebase-test/app/index.html

デプロイする

$ firebase deploy

#  ===  Deploying to 'masalib-hosting'... 
#  i    deploying  hosting 
#  i      hosting: preparing  app  directory for upload...
#  i    starting release process (may take several minutes)...
# ✔     Deploy complete!  
# Project Console:  https://console.firebase.google.com/project/masalib-hosting/overview
# Hosting URL:  https://masalib-hosting.firebaseapp.com

成功すると表示される
Hosting URLにアクセスすると表示される

firebaseを遊んでいるので
現在アップされている内容は違います

現在、遊んでいる事

・リアルタイムデータベースの読み書き
qiita.com
qiita.com

・リアルタイム翻訳
github.com

確認中の事
AdSense広告の配置
 できたっぽいけどなんでできたのかよくわからない
 サブドメインでできた?なんで?

・WEBマスターツールの認識
 たぶんできたっぽい
 何もページを作っていないのでindex化ができたのかわからない

・ワンクリックのロールバックができるのですが
 もしかして・・・その分の容量がくっている
 自動的に消せないのか確認中
 (手動なら消せた)

・ツイッタやfacebook認証もできるみたいなので
 それもできればやってみたい


これができたらangularのソースはgithubにおいて
実際にうごくのをこの環境でおこないたい

最終的にはフロントエンドとサーバーサイドの部分を
わけた仕組みをやってみたい

今週読んだラノベ…『りゅうおうのおしごと1巻』

将棋のラノベ小説です
舞台は大阪の福島らへんです
近くに行った事があるのでちょっと懐かしいです

ざっくりした内容は
 ・16歳で竜王棋士になった主人公が9才の弟子をとってJSとの同居生活
 ・将棋のウンチク
 ・将棋のギャグ(中二病系のネタ)

兎にも角にも9才のヒロインが可愛いです




これだけ可愛いですが・・・・
旅館の子供だからなのか料理もできるのです
主人公は胃袋もつかまれていますwww

長考している時だけちょっと怖いです

f:id:masalib:20170810191141p:plain

1巻より引用

ロリコンにオススメのラノベです

angularでInvalid Host headerと表示された

技術的な備忘録です
自分の開発環境はvagrantvirtualbox)でおこなっており
普通のmacwindowsではなくcentos上に作っています

そのため、forwarded_portにportを設定しています

config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network :forwarded_port, host: 9999, guest: 9999
config.vm.network :forwarded_port, host: 4200, guest: 4200
config.vm.network :forwarded_port, host: 18888, guest: 18888

そのため、angularでテスト(コンパイル)をおこなう時は

ng serve

だけで問題ないのですが
私の環境はローカルからvagrantにアクセスするために
パラメータをつけています

ng serve --host 0.0.0.0 --port 9999 --live-reload true

githubに記載されていた
ngrx-exampleというサンプルサイトがあるのですが

GitHub - ngrx/example-app: Example app showcasing the ngrx platform

Invalid Host header

f:id:masalib:20170812031727j:plain

と表示された

host 0.0.0.0がいけないみたいで

ng serve --host 192.168.33.10 --port 9999 --live-reload true

f:id:masalib:20170812031810j:plain
アクセスできるようになった

参考URL
--host 0.0.0.0 Not working · Issue #882 · webpack/webpack-dev-server · GitHub

無駄にはまるな

今週読んだ漫画…『ひとり暮らしのOLを描きました1,2巻』

ひとり暮らしのOLを描いた漫画で非常に可愛いです

togetter.com

上記で載っている部分を加筆して
1話につき3ページ構成なっています

自分の好きな所は
2巻の29日目でカエルのぬいぐるみを洗って
絞って乾かすシーンがあるのですが
鏡で自分の姿を見るとカエルの殺そうとしている姿に見えて凹む所が可愛いです

f:id:masalib:20170812031315j:plain
2巻より引用

フィギュアにもなっているそうです
www.blister.jp

日常系でほっとしたい人にオススメの

Excel内の図形を簡単に画像ファイルに変換する方法

概要

Excel内の図形を画像保存する方法を記載します
GIMP2を使う所以外は特殊なところはないです
トリミングとか透過の作業がないがいいところ 

経緯

wikiをつかっているのですが

自分
「エクセルの図形を結合してwikiに貼りたいから画像にして」
友達
「そんな手順しらない」

自分
「え・・」
「GIMP2にコピペしてエクスポートするだけだよ」

友達
「手順くれよ」

みんな知っていると思っていたがちがうみたい

事前作業

GIMP2をインストールする
無料の画像編集ソフトです
synclogue-navi.com

手順

例えばこの画像と図形を画像にする場合

f:id:masalib:20170810174511p:plain

ホーム
→ 検索と選択
→ オブジェクトの選択
f:id:masalib:20170810174538p:plain

で図形を選択する

f:id:masalib:20170810174603p:plain
右クリックしてコピーする

GIMP2を起動する
f:id:masalib:20170810174629p:plain

起動が終わったら
ファイル
→ 画像の生成
→ クリップボードから

f:id:masalib:20170810174702p:plain


図形や画像がまとまって貼り付けられる


f:id:masalib:20170810175112p:plain

内容に問題がなければ
エクスポートを選択して
透過があるならpngを選択する

f:id:masalib:20170810174737p:plain


サイズが大きかったら
グループ化してサイズを小さくして貼り付ければピクセルのサイズが小さくなります
トリミングや透過の作業がないのが本当に楽です

標準アプリでの手順

ちなみにWindows標準アプリだけでやろうとすると
最後トリミングしないといけなかったり
透過ができなかったりとめんどくさいです
plaza.rakuten.co.jp