gakkie プログラミング 備忘録

tech::expert(現tech camp) 45期

mongoDBローカルでの実行方法

環境

  • Mac OS X Yosemite 10.14.5
  • Homebrew 2.1.6
  • MongoDB shell version v4.0.3


MongoDB ローカルでの実行方法

インストール手順

基本的には公式ドキュメントに従ってインストール
Install MongoDB Community Edition on OS X — MongoDB Manual 3.4

1. Homebrew をアップデート
$ brew update
2. MongoDB をインストール
$ brew install mongodb

でインストールされる。

3. プロセスの起動

先ほどのインストールの最後に

==> Pouring mongodb-4.0.3_1.mojave.bottle.tar.gz
==> Caveats
To have launchd start mongodb now and restart at login:
  brew services start mongodb
Or, if you don't want/need a background service you can just run:
  mongod --config /usr/local/etc/mongod.conf
==> Summary
🍺  /usr/local/Cellar/mongodb/4.0.3_1: 18 files, 258.1MB

というメッセージが表示される。
Homebrew Services という機能を使って、再起動後もプロセスが自動起動するように設定するには

$ brew services start mongodb

を実行する。

そうではなく、一回限りの起動を行う場合は

$ mongod --config /usr/local/etc/mongod.conf

を実行する。

4. mongo コマンドの実行

3 でプロセスを起動した状態で

$ mongo

を実行

mba-2:~ name $ mongo
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("~~~~~") }
MongoDB server version: 4.0.3
Server has startup warnings: 
2019-06-24T21:25:55.930+0900 I CONTROL  [initandlisten] 
2019-06-24T21:25:55.930+0900 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-06-24T21:25:55.930+0900 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-06-24T21:25:55.930+0900 I CONTROL  [initandlisten] 
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

keynoteでプレゼンを作りiphoneで操作するときの設定方法

【注意】今回はプログラミング関連ではありません!!

[結論]

  • keynote
  • →プレゼン内容、プレゼン技術が1番大事、

    →プレゼンツールとして便利、使いこなせればトークではできない視覚的な情報でより相手に説得力あるプレゼンができるよ!!

    iphoneでリモート操作できるから便利。

[目次]

[本題]

keynoteについて

言わずと知れたプレゼンツールです。
2019/06/22 xhack勉強会に参加しておりました。
第7回最終回にプレゼンがあり,
その際行なったkeynoteの設定についてまとめました。

事前準備

  • mac
  • iphone
  • iphonekeynoteのアプリのダウンロード(デフォルトで入っているが、使わないとアンインストールされていることがある)
  • プロジェクタ
  • プロジェクタとmacを繋げるケーブル(※要確認!macの機種によってケーブルの端子の種類が違います!!)

iphoneと連携する方法

  • maciphone両方を”同じ”wifi回線に接続させる
  • mac側:keynotesを開く
  • 左上のkeynotes環境設定を選択
  • Remoteを選択
  • iphoneに移動:アプリを開き右上のiphoneマークを選択
  • 左上「デバイス」を選択
  • 「デバイスを追加」選択
  • macに移動:表示された自分のiphone選択
  • 「リンク」選択
  • 「確認」選択
  • maciphoneの連携完了

感想

  • iphoneをリモコンがわりにプレゼンを操作できる。
  • いちいちキーボードを押す煩わしさから解放される!
  • できる人ぽっく見える笑

おすすめプログラミング学習サイトまとめ

自分がよく使うプログラミング学習サイト

[目次]

[本題]

メインで使う学習サイト

言語別

【HTML/CSS/JS】

Ruby

SQL

AWS

AWS

使用するシチュエーション別

【英語で勉強したい】

【AIの機械学習

その他

【タイピング】

【ゲーム形式のプログラミング学習サイト】

【ER図】

ドットインストール Firebaseのデプロイで詰まった話

firebase でデプロイに失敗。
起きたエラーと解決方法のまとめ

エラー内容1

  • 190524 現在
  • 作業環境 mac

$ sudo npm install -g firebase-tools
→rootユーザに変わってしまい
$ chown で変更する必要がありました。

$ ls -la で権限をそれぞれ調べ
$ chownコマンドを使い権限を変更しました。
$ sudo chown gakkie:staff lib/node_modules/firebase-tools/
$ sudo chown gakkie:staff lib/node_modules/firebase-tools/node_modules/
最後はsudoなしで
$ npm install -g firebase-tools
とすることで無事インストールできました。 (編集済み)

macでも$ npm install -g firebase-toolsでやるべき。

エラー内容2

npm インストール後

$ firebase -V 実行<br>
bash: firebase: command not found

インストールに成功しているが、 コマンドの場所をbashが見つけられていない状態?と考えた

【追記190610】

npmのグローバルのパスの問題だとわかりました。

$ npm bin -g
(not in PATH env variable)
npmのグローバルのパスの問題でパスを通す必要がありました。
$ export PATH=$PATH:`npm bin -g`
でパスを通す事で解決。
$ firebase login
で無事ログインできました。
成功

あくまで自分の環境でのエラーかもしれませんが一助になれば幸いです。

【GAS】メルカリからの通知をLINEで確認できるようにする。(備忘録)

きっかけ

  • 最近メルカリを始めた
  • 売買などの通知は全て登録したメールアドレスに来る
  • どうせなら1つのツールで管理したい
  • 通知が来たらlineに送るようにしよう!!

手段

GASを使う

結論

使いこなせれば多くの業務の改善につながるため積極的に活用していきたい。

具体的な方法

先にやる設定

  • 個人グループを作成。
  • グループのアイコンを変更。
  • アイコンを見ただけでどのメールか視覚的に判別ができる

  1. ホーム画面
  2. f:id:shuzou555:20190531141823p:plain
  3. 個人グループ作成
  4. f:id:shuzou555:20190531140912p:plain
  5. 何もせずに次へ
  6. f:id:shuzou555:20190531140850p:plain
  7. 任意の名前をつける
  8. f:id:shuzou555:20190531140832p:plain
  9. 画像は自分の好きなものに変更する

1.トークンの発行と設定

  1. notify-bot.line.me
  2. ログインまたはサインアップ
  3. 右上のアイコンからマイページへ
  4. トークンを発行する(ページ下)
  5. トークン名を作成
  6. グループを指定する。初めに作った個人グループを指定
  7. トークンを発行
  8. コピー(※注意必ずメモ帳に貼っておくこと!!)

2.GoogleDriveへ移動

  1. MyDrive→その他→GoogleAppScrIpt
  2. コードをかく
  3. subjectに【メルカリ】と入力
  4. トークンキーを貼る
  5. 保存して実行
  6. 編集(左上)→現在のプロジェクトのトリガ
  7.  f:id:shuzou555:20190531150549p:plain
  8. トリガを設定
  9. f:id:shuzou555:20190531150808p:plain

Lineに移動

  • Line notifyをグループに招待する

コード

var FindSubject = 'subject:(【メルカリ】)';

function getMail(){

//指定した件名のスレッドを検索して取得 var myThreads = GmailApp.search(FindSubject, 0, 30); //スレッドからメールを取得し二次元配列に格納 var myMessages = GmailApp.getMessagesForThreads(myThreads);

for(var i in myMessages){ for(var j in myMessages[i]){

  <span class="synComment">//スターがないメッセージのみ処理   </span>
  <span class="synStatement">if</span>(!myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.isStarred())<span class="synIdentifier">{</span> 

    <span class="synIdentifier">var</span> strDate = myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.getDate();
    <span class="synIdentifier">var</span> strSubject = myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.getSubject();
    <span class="synIdentifier">var</span> strMessage = myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.getPlainBody().slice(0,300);

    <span class="synComment">//LINEにメッセージを送信</span>
    sendLine(strDate,strSubject,strMessage);

    <span class="synComment">//処理済みのメッセージをスターをつける</span>
    myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.star(); 
  <span class="synIdentifier">}</span>
<span class="synIdentifier">}</span>

} }

function sendLine(strDate,strSubject,strMessage){

//Lineに送信するためのトーク var strToken = "発行したトークン"; var options = { "method" : "post", "payload" : "message=" + strDate + strSubject + strMessage, "headers" : {"Authorization" : "Bearer "+ strToken}

};

UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options); }

参考にしたサイト

asatte.biz

CI ツールの使い方を知るためTravis CI使ってみた。

きっかけ

circle CI関連のイベントに参加するためCIの使いかた、導入方法を学ぶ必要があったため

CircleCiを導入しようとしたが失敗

    勉強するにあたり初めて知った言葉
  • ビルド→実際に動くプログラムを作り出す作業
    導入方法について
  • 導入方法はわかったがファイル内の記述方法がわからず断念
  • .circleci/config.yml を書く→CircleCI は、テスト環境の構築方法や実行するテスト内容の定義に YAML ファイルを使う

チュートリアルを発見。Travis CIを使ってみた。

<導入手順>

$ git clone git@github.com:YOUR_USER_NAME/travis-broken-example.git
$ cd travis-broken-example

.travis.yml

language: php # テスト言語
php:
- 5.5 # 環境1
- 5.4 # 環境2
- #hhvm #現在(190528)ver PHP 7.3.1だとerror255が発生。コメントアウトした。
script: phpunit Test.php # この処理がCIとして走る

Travis CIに登録

Travis でレポジトリを有効化する

    順序
  • 右上の自分のアイコンを選択
  • 真ん中のrepositories をクリック
  • Travis CIを有効化したいリポジトリを選択

ローカルに移動

  • git cloneしてきたフォルダを開く
  • コミット
  • pushする
$ git add .
$ git commit -m "test Travis CI"
$ git push

ブラウザに移動

テストが回り始める

  • 成功例
  • The command "phpunit Test.php" exited with 0.
    
  • 失敗例
  • The command "phpunit Test.php" exited with 255.
    

参考にした記事

ド素人のための Travis CI の使い方 (公式ガイドより) - Qiita

Sassの基礎

Sassとは?

  • CSSをより効率的にかくことができる言語
  • SASS記法とSCSS記法の2つがある

メリットは?

  • CSSより記述を減らせる
  • コードの再利用ができる

通常のCSS

.header {
  width: 100%;
}
.header ul{
  padding: 20px;
}

Sassの場合

.header{
  width: 100%;

  ul{
    padding: 20px;
  }
}

入れ子構造のメリットは?

  • 大きなサイトになるほど効果が大きい
  • クラス名の変更が簡単になる

↓の場合Sassでは1箇所の変更だけで対応できる

通常のCSS

.header {
  width: 100%;
}
.header ul{
  padding: 20px;
}
.header ul li {
  font-size: 30px;
}

Sassの場合

.header {
  width: 100%;
    ul {
      padding: 20px;
    }
      li {
        font-size: 30px;
      }
}