gakkie プログラミング 備忘録

tech::expert(現tech camp) 45期

rvm と rbenv の違い

書いた理由

rubyのversionの切り替えで調べていたとき気になったから

「~とは何か?」を考えるよりそれぞれの機能の違いから考えてみる

rbenvの機能

  • アプリケーション固有のRubyバージョンを指定するためのサポートを提供
  • ユーザーごとにグローバルRubyバージョンを変更する
  • Rubyのバージョンを環境変数で上書き可能

1:RVMにはrubygemを管理するgemsetの機能があるが、rbenvには(標準では)ない
2:rbenvに移行するならgemの管理はbundlerに一本化するか、rbenv-gemsetと言うプラグインを別に入れる必要がある。

正直、わからなかったので使い分けてこれはできる、できない。慣れるしかないのかな?と感じた。

内容は随時更新していくつもり

参考URL

github.com

ja.stackoverflow.com

Pictweet 復習 Visual Studio Code git使用

Visual Studio Codeでの開発に慣れるため

  • git の使い方で曖昧な箇所を潰すため

  • 作業場所:リモート

    1. リポジトリを作成(private)

    作業場所:ローカル Visual Studio Code

    1. 「command + o 」→ ファイルを開く
    2. コマンド:git clone (sslのURL)
      →「Cloning into 'pictweet'... warning: You appear to have cloned an empty repository.」そのまま何もせず進む
    3. rails _5.2.2.1_ new pictweet -d mysql

    リモートとローカルにリポジトリを作る作業終わり。

    次回Visual Studio Codeでfirst commit 、push するときの手順のまとめ

    追記(191013 18:07:40)

    • git hubで新しくリポジトリーを作成
    • 自分のpcで無ければprojectフォルダを作成。
    • rails _5.2.2.1_ new pictweet -d mysql
    • ターミナル:該当フォルダ上でコマンドを実行
    •   503  git init
        505  git add .
        507  git commit -m "First commit"
        510  git push origin master
        512  git remote add origin git@github.com~~
        513  git push -u origin master

    MySQL DB削除

    DB一覧表示、削除コマンドについて

    カリキュラムを復習するにあたりpictweetのデータベースが邪魔だっため削除した。

    削除、編集で使うSQLのコマンドをまとめてみる

    mysqlへ接続

    SQLを実行するために、まずはデータベースへ接続をする必要がある

    mysql -u root

    データベース一覧を表示

    以下のコマンドを入力

    mysql> show databases;
    

    データベースの削除

    下記のコマンドを打てば、データベースを削除できる

    mysql> drop database 削除したいデータベース名;

    [注意]ハイフンのついたデータベースを削除する場合

    例えば、hello-app_developmentというデータベースを削除したい場合、上記のコマンドを参考に削除しようとすると、エラーがでます。

    mysql> drop database hello-app_development;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-app_development' at line 1

    なので、ハイフンのついたデータベースを削除する場合は、バッククォート(`)でデータベース名を囲んであげる必要があります。

    mysql> drop database`hello-app_development`;
    Query OK, 0 rows affected (0.02 sec)

    削除できたか確認方法

    mysql> show databases;

    上記のコマンドでデータベースを一覧で表示させると確認できます。

    参考URL

    qiita.com

    JSON形式について

    目的

    理解できていなかったためまとめてみる

    ルール1:APIの応答は、JSON形式で返却されることが一般的

    JSON形式(記法)のルール

    • キーとバリュで形成されている→キー・バリュー型(追記190430)
    • 全体が{} で括られる
    • 要素→「"要素名":値」で定義される
    • 配列的要素は、[]で括られる
    • まとまった領域は{}で括られる
    {
      "num":2,
      "score":[
      {
        "kokugo": 90,
        "suugaku": 80,
        "eigo": 75,
        "rika": 85,
        "shakai": 80,
      },
      {
        "kokugo": 55,
        "suugaku": 30,
        "eigo": 95,
        "rika": 15,
        "shakai": 75,
      }
     ]
    }
    

    ルール2:JSONはプログラム内ではオブジェクトである

    let aClass{
      num: 2,
      score: [
        {
          kokugo: 90,
          suugaku: 80,
          eigo: 75,
          rika: 85,
          shakai: 80
        },
        {
          kokugo: 70,
          suugaku: 90,
          eigo: 65,
          rika: 25,
          shakai: 55
        }
      ]
    }
    
    // 1人目の国語の成績を取得
    // aClass["score"][0].kokugo
    // または
    // aClass.score[0].kokugo

    外部からjsonのデータを取得する場合

    ルール3:JSONは「parce」でオブジェクト化、「stringify」でテキスト化して扱える

    let req = http.get("http://~", (res) => {
      let chunk = "";
      res.on("data", (c) => {
        chunk = c;
      });
      res.on("end", () => {
        let response = JSON.parse(chunk);
        // 取得したら、parse
        console.log("response: " + JSON.stringify(response));
        // stringifyでテキスト化
        let address = response["results"][0];
        let address1 = address["address1"];
        // parseすると、オブジェクトとして扱える
        agent.add("住所: + address1")
      });
    });
    
    // APIの応答
    {
      "message": null,
      "results":[
        {
          "address1": "東京都"
          "address2": "千代田区"
          "address3": "千代田"
          "kana1": "トウキョウト"
          "kana2": "チヨダク"
          "kana3": "チヨダ"
          "prefcode": "13"
          "zipcode": "1000001"
        }
      ],
        "status": 200
    }

    外部からAPIを呼び出すときはJSON.parseを使う→オブジェクト形式に変換する

    JSONからもらってきたdataをオブジェクトとして使うことができる

    もしテキストの情報として使いたいときは?

    JSON.stringifyを使う(ログを出力したいときに便利)

    参考URL qiita.com

    line と Dialogflow(Df) の連携をさせてチャットボットを作る

    大枠での作る手順

    細かい手順を書いた記事も書く予定

    今回は4つにざっくりと分けてみた

    1. lineとDfの連携
    2. やりとり(シナリオ)の用意をする
    3. APIを開発する
    4. APIの呼び出し処理を実装