2020年1月25日土曜日

ラズパイにjavascript環境を構築する

概要

ラズパイにnode.jsをインストールしてjavascriptのサーバ環境を構築します。※準備中

手順

  1. ラズパイにnodejsをインストールする
  2. ラズパイにnmpをインストールする
  3. フォルダを作成して、npm initコマンドを実行する
  4. なにも考えずにinitしたらワーニングが出た。
    pi@raspberrypi:/usr/local/bin/MyLineBot $ sudo npm init -y
    npm WARN npm npm does not support Node.js v10.15.2
    npm WARN npm You should probably upgrade to a newer version of node as we
    npm WARN npm can't make any promises that npm will work with this version.
    npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
    npm WARN npm You can find the latest version at https://nodejs.org/
    Wrote to /usr/local/bin/MyLineBot/package.json:
    
    {
      "name": "MyLineBot",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }
    
    npmのバージョンアップ
    pi@raspberrypi:/usr/local/bin/MyLineBot $ sudo npm install npm@latest -g
    npm WARN npm npm does not support Node.js v10.15.2
    npm WARN npm You should probably upgrade to a newer version of node as we
    npm WARN npm can't make any promises that npm will work with this version.
    npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
    npm WARN npm You can find the latest version at https://nodejs.org/
    /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
    /usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
    + npm@6.14.4
    added 435 packages from 869 contributors in 53.254s
    
    もう一度initをやり直し。今度はエラーが出なかった
    pi@raspberrypi:/usr/local/bin/MyLineBot $ sudo npm init -y
    Wrote to /usr/local/bin/MyLineBot/package.json:
    
    {
      "name": "MyLineBot",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "keywords": [],
      "author": "",
      "lice
    
  5. 実行するjavascriptを作成する
  6. javascriptを自動起動にする

LINEのボットを作成する

概要

LINEのボットを作成する方法を記載します。すごく簡単で感動しました。
エンジニアじゃなくても問題なく作れちゃうと思います。

作業手順

  1. LINE Developpersにログインする
  2. LINE Developpersホームページ
  3. プロバイダを作成する
  4. プロバイダータブを選択して作成を選択します。
  5. プロバイダ名を設定する
  6. ・プロバイダ名を入力して、作成を選択します。
  7. MessagingAPIのチャネルを作成する
  8. ・チャネルの内容のイラストが選択できるので、MessagingAPIを選択します。

    ・自分が作成したいチャネルのアイコン、チャネル名、チャネルの説明などを設定します。
    ここで設定する内容がLINEのアイコンになります。一通り作成したら利用規約を確認したうえで作成を選択します。
  9. チャネルを作成するとQRコードを表示することができるので、自分の端末に友達追加します。
  10. メッセージの受け答えを設定する
  11. ・応答メッセージの編集をクリックします。

    ・応答メッセージの作成をクリックします。

    ・キーワードと答えさせたい内容を設定して作成をクリックします。

    ・これでキーワードに対して設定した内容がかえってきます。とても簡単です!

LINEとラズパイを連携させて外から部屋の温度を知る

やったことの概要

家にあるラズパイを有効活用したいと考え、温湿度センサをつけてそれを外から読み出せるようにしました。
やりたかった機能は以下の2つになります。

・「温度は?」と聞かれたときに応答形式で最新の温度を答える機能
・一日の終わりにその日の温度をプッシュ通知してくれる機能

準備するもの

・ラズパイ
・温度センサキット
・スマホとLINE

やったことへのリンク

※準備中です。少しずつブログにまとめてリンクを張っていきたいと思います
  1. LINEのボットを作成する
  2. ラズパイにjavascript環境を構築する
  3. LINEのボットを経由してラズパイのコマンドを実行する
  4. ラズパイで部屋の温度を1分毎に取得する
  5. ラズパイで取得した温度を1日分のレポートにまとめる
  6. ラズパイから1日分のレポートをLINEにプッシュ通知する

2020年1月20日月曜日

H20春ES午後1問3 キャッシュレジスタ

問題の感想

キャッシュレジスタの問題です。設問1に計算問題が続いて焦りますが実はそんなに難しくなかったです。

間違い箇所

  • 設問2(4)(a)
  • データ送信時に、予備テーブルの内容だけ表示する理由が問われています。
    送信を行うデータは、送信依頼が発生した時刻以前のデータになります。書き込み途中のデータは送信の対象外になるので、回答としては以下になります。

    データ送信中に登録処理が完了した場合に、送信中のデータ内容が変更されるのを防ぐため(41文字)

  • 設問3(1)
  • バーコード処理を追加した際に変更になるキー入力タスクの変更内容を問われています。
    変更前のキー入力タスクの処理としては商品単価と分類の情報を売上管理タスクに渡しているので、バーコードを使って同じことをできるようにします。商品単価と分類キーを得るためのタスクとして商品テーブル検索タスクも追加になっているので、その機能を利用して以下のように回答します。

    バーコード入力タスクからの通知を待つようにし、バーコード入力タスクからのデータを基に商品テーブル検索タスクに単価と分類キーを得るようにする(69文字)

2020年1月7日火曜日

topコマンドの使い方

コマンド概要

プロセスの状態を継続的に監視する、topコマンドの使い方をまとめます。

コマンド書式
$ top


コマンド使用例

  • プロセスの状態を確認する
  • 
    $ top
     top - 21:33:13 up 2 min,  3 users,  load average: 0.33, 0.36, 0.15
     Tasks: 145 total,   1 running, 144 sleeping,   0 stopped,   0 zombie
     %Cpu(s):  0.3 us,  0.1 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
     MiB Mem :    926.1 total,    586.8 free,    110.8 used,    228.6 buff/cache
     MiB Swap:    100.0 total,    100.0 free,      0.0 used.    753.7 avail Mem
    
       PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1035 pi        20   0    6868   2836   2444 R   1.0   0.3   0:00.09 top
       417 root      20   0   32956  11832   9300 S   0.3   1.2   0:00.39 vncserver-x11-c
         1 root      20   0   33680   8016   6432 S   0.0   0.8   0:03.93 systemd
         2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
    
    

2019年12月26日木曜日

psコマンドの使い方

コマンド概要

プロセスの監視を行うpsコマンドの使い方をまとめます。

コマンド書式
$ ps [オプション]

オプション 説明
a 他のユーザのプロセスも表示する
f 親子関係をツリー状に表示する
u ユーザ名も表示する
x 制御端末のないデーモンなどのプロセスも表示する
-e すべてのプロセスを表示する
-l 詳細な情報を表示する
-p PID 指定したPIDのプロセス情報を表示する
-C プロセス名 指定した名前のプロセスのみ表示する
-w 長い行は折り返して表示する

コマンド使用例

  • 他のユーザのプロセスもユーザ名と一緒に表示する
  • ユーザの情報やメモリの情報がわかるので普段はこれを使います。
    
     $ ps -aux
     USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
     root         1  0.5  0.8  33676  7960 ?        Ss   16:00   0:04 /sbin/init splash
     root         2  0.0  0.0      0     0 ?        S    16:00   0:00 [kthreadd]
     root         3  0.0  0.0      0     0 ?        I<   16:00   0:00 [rcu_gp]
     root         4  0.0  0.0      0     0 ?        I<   16:00   0:00 [rcu_par_gp]
     root         8  0.0  0.0      0     0 ?        I<   16:00   0:00 [mm_percpu_wq]
     root         9  0.0  0.0      0     0 ?        S    16:00   0:00 [ksoftirqd/0]
     root        10  0.0  0.0      0     0 ?        I    16:00   0:00 [rcu_sched]
     :
    (以下略)
     :
    
    
  • 全てのプロセスを詳細に表示する
  • 確認したい内容によってはこっちのオプションがいい場合もあるかもしれません。
    
     $ ps -le
     F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
     4 S     0     1     0  0  80   0 -  8419 -      ?        00:00:04 systemd
     1 S     0     2     0  0  80   0 -     0 -      ?        00:00:00 kthreadd
     1 I     0     3     2  0  60 -20 -     0 -      ?        00:00:00 rcu_gp
     1 I     0     4     2  0  60 -20 -     0 -      ?        00:00:00 rcu_par_gp
     :
    (以下略)
     :
    
    

2019年12月25日水曜日

lnコマンドの使い方


コマンド概要

ハードリンクやシンボリックリンクを作成する際に使用する、lnコマンドについて情報をまとめます。
  • ハードリンク    リンク先にあるファイルと同じ実体を持つファイル
  • シンボリックリンク リンク先にあるファイルにリンクしているだけのファイル

コマンド書式
$ ln [オプション] 実態 リンクファイル

オプション 説明
-s シンボリックリンクを生成する

コマンド使用例

  • シンボリックリンクを作成する
  • 
     $
     $ ls -l ./aaa/
     合計 0
     -rw-r--r-- 1 pi pi 0  1月  7 21:44 bbb
     -rw-r--r-- 2 pi pi 0  1月  7 21:47 ccc
    
     $ ln -s ./aaa/bbb b_link   ※シンボリックリンクを作成
     $ ln ./aaa/ccc c_link         ※ハードリンクを作成
     $ ls -lA
    合計 4
    drwxr-xr-x 2 pi pi 4096  1月  7 21:47 aaa
    lrwxrwxrwx 1 pi pi    9  1月  7 21:44 b_link -> ./aaa/bbb
    -rw-r--r-- 2 pi pi    0  1月  7 21:47 c_link
    
     $ rm ./aaa/bbb ※ファイルの本体を削除
     $ rm ./aaa/ccc ※ファイルの本体を削除
     $
     $ ls -lA
    合計 4
    drwxr-xr-x 2 pi pi 4096  1月  7 22:48 aaa
    lrwxrwxrwx 1 pi pi    9  1月  7 21:44 b_link -> ./aaa/bbb  ※デッドリンクが残る
    -rw-r--r-- 1 pi pi    0  1月  7 21:47 c_link       ※本体を削除してもハードリンクは残る