gakkie プログラミング 備忘録

tech::expert(現tech camp) 45期

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の呼び出し処理を実装

Lineのチャットボットを作る流れ。(備忘録)

ボットを作る上での共通する箇所、流れをまとめてみた

  1. アカウント名作成、業種選択
  2. 自動応答メッセージの編集
  3. アカウント登録→messaging API設定
  4. プロバイダー登録→自分を選択→messagingAPI利用設定完了
  5. オプションは変更しない→LINE Developersで設定する
  6. アクセストークン再発行
  7. 設定が読み込まれるまで時間がかかる→ログアウト→時間を置いてログイン
  8. webhook送信設定→利用する
  9. Dialogflowに移動
  10. agent作成
  11. integrations→lineと連携
  12. 以下3つLINEから取得
  13. channel ID入力
  14. channel secret
  15. アクセストーク
  16. webhook URLをlineに貼り付け→(https://)を外す
  17. start ボタンを押す

接続完了

ここまでがインテントの作成までの設定事項

アルゴリズム入門者向けのイベントに参加した

イベント概要

アルゴリズムを学ぶべき理由とは?

まとめた

  • 開発時間の短縮
  • 原因のボトルネックが見つかりやすくなる
  • 自分の解釈

    アルゴリズムという型を身につるけこと
    ・型ありきで考えていけば自然と原因が絞られてくる
    ・解決方法もパターン化できるから開発期間を短縮できますよ
    というメッセージと解釈した。
    ・課題解決のためのテンプレートとしてアルゴリズムにメリットがあると感じた

    自分の中でのイメージ

    ・言語を効率的に早く書く手段→それぞれの言語のテンプレート、ツール

    ・無駄なく、早く、解決する手段→アルゴリズム

    料理で捉え直してみる(注意:個人的な考えです)

    作業スピードと段取りの違いで腑に落ちた。

  • どんなに切り物や手仕事(コードを書くスピード)ができても段取りが悪いと使う器具が増えてしまう。その結果洗い物が増えてしまう
  • 段取りが良ければたとえ作業スピードがなくてもトータルの作業時間は短くできる。
  • →段取り=アルゴリズムかもしれない

    まとめ

    アルゴリズムを使うメリットは料理の作り方(手順、段取り、効率的な作り方、無駄を省く、)と似ている箇所があり理解できた。
    ・むしろ先人が残した知恵を使えることに非常にメリットを感じた
    アルゴリズムにはたくさんの種類がありそれぞれにメリット、デメリットある
    ・どんな状況で使うべきかを知ることが大切だと感じた。