【ラズパイ日記】購入〜リモートアクセス

まえがき

本来ソフトウェア(もっと言えばアプリケーション層)が専門なのだが、諸事情あってRaspberry Piとセンサなどの簡単な電子回路を作成する必要に迫られた。

購入

以下はあくまで自分が今回買ったものでオススメとかはわかりません。

本体+α

今回買ったのは Raspberry Pi 4B (RAM4GB)のTRASKITスターターキット。

購入日2022/6/25の価格はクーポン利用で25,900円。なんか高くね??

調べると品薄状態が続いているらしい。一度購入を躊躇したが適正価格を待っている時間的余裕がなかったため思い切って購入。

電子部品

電子部品も全く持っていないのでラズパイ対応の電子部品セットも購入。

参考書

ラズパイを触るのも初めてで電子回路も初学者なので日本語で体系的に学べる本が1つは欲しいと思い購入。

開封

翌日早速届いた。さすがAmazon仕事が速い。

中身を確認。ラズパイ本体は思ってたより二回りぐらい小さい。

OS起動

最初はリモートする術がないので有線で色々差しまくる。HDMI-mini HDMIケーブルとACアダプタ(USB-TypeC)はTRASKITスターターキットに入っているがマウス・キーボード・LANケーブルは自前なので注意(自分の家にたまたまあった)。

スターターキットのmicroSDにはあらかじめNOOBS(現在は非推奨らしいけど…)が入っているのでそれを挿入した状態で電源を入れるとNOOBSが起動し、OSを選択できる。
今回はRaspberry Pi OS (64-Bit) (with desktopのやつ)を選択。
OSがインストールできたらウィザードに従って初期設定をして準備完了。

リモートアクセス

上記参考書(これ1冊でできる! ラズベリー・パイ 超入門 改訂第7版 Raspberry Pi 1+/2/3/4/400/Zero/Zero W/Zero 2 W 対応)を眺めているとラズパイには最初からSSHVNCリモートデスクトップ)のサービスが入っているらしい。

本の中身になるので手順等は伏せるがやったことだけ列挙しておく。

  • Wi-Fi接続&IPアドレス固定化
  • SSH有効化・クライアントPCでの接続設定
  • VNC有効化・クライアントPCでの接続設定

メインのWIndows PCからラズパイのデスクトップ画面が開けた!

ラズパイ側も必要なケーブルが電源だけでよくなって取り回し◎

【ログ】「表領域'SYSTEM'に対する権限がありません」への対応(暫定)

※この記事はQrunchログからの移行記事です。

現象

node-oracledbのexample.js実行時に下記のエラーが発生。

ORA-01950: 表領域'SYSTEM'に対する権限がありません

対策

GRANT UNLIMITED TABLESPACE TO user001

参考

OracleでCREATE TABLEでテーブル作成する

【ログ】SQLAlchemyでOracleのPDBに接続する

※この記事はQrunchログからの移行記事です。

PDBはサービス名として記述する。SIDと異なり"/"区切りでは受け付けてくれないのでDSN形式で記述する。以下のようにcx_Oracleの関数を利用するとよい。

また、新しい(Oracle18以降?)の場合はmax_identifier_lengthを明示的に設定する。

import sqlalchemy
import cx_Oracle

dsnStr = cx_Oracle.makedsn('localhost','1521','pdb-name')
connect_str = 'oracle://user:pass@' + dsnStr.replace('SID', 'SERVICE_NAME')
engine = sqlalchemy.create_engine(connect_str, max_identifier_length=128)

【ログ】Anaconda環境設定

※この記事はQrunchログからの移行記事です。

Anacondaインストール

  1. 公式サイトからインストーラをダウンロードする

    • Python3.7 Windows 64-bit を選択
    • 検証時ダウンロードしたのはAnaconda3-2020.02-Windows-x86_64.exe
  2. インストーラを起動してウィザードに従ってインストール

    • すべてデフォルト設定を選択
  3. Anaconda Promptを開いて確認

    ``` (base) C:\Users\kurukuruz>python --version Python 3.7.6

    (base) C:\Users\kurukuruz>conda --version conda 4.8.2 ```

仮想環境作成

環境作成

  1. Environmentsタブを開く

  2. :heavy_plus_sign: Createボタンを押す

  3. 適当な名前を付けてPythonを選択してOKを押す

  4. 作成した環境の :arrow_forward: を押してOpen Terminalを選択して確認

    ``` (sandbox1) C:\Users\kurukuruz>python --version Python 3.7.7

    (sandbox1) C:\Users\kurukuruz>conda --version conda 4.8.2 ```

Notebook追加

  1. 上で作成した仮想環境をアクティベートする
  2. プルダウンをNot Installedに変更し、検索ボックスにjupyterと入力する
  3. notebook (Jupyter notebook)のチェックボックスをオンにしてApplyを押す
  4. 確認ダイアログで再度Applyを押す(ダイアログには依存パッケージが表示される)
  5. :arrow_forward: を押してOpen with jupyter Notebookがアクティブであることを確認

ライブラリインストール

仮想環境のターミナルを開き、以下のようにcondaコマンドでインストールする。

(sandbox1) C:\Users\kurukuruz>conda install cx_oracle

Visual Studio Code環境設定

Visual Studio Code自体のインストールは割愛

拡張機能追加

  1. 検索ボックスにpythonと入力する
  2. "Python"パッケージ(Microsoft製)をインストールする

設定

  1. ファイル(F) > 基本設定 > 設定 から設定ウィザードを開く
  2. 検索ボックスにpython.pythonpathと入力する
  3. Python: Python Pathに仮想環境のpython.exeのパスを入力する
    • (anaconda-root)\envs\sandbox1\python.exeのようなパスになるはず

実行

適当な.pyファイルを作成し、右クリック > ターミナルでPythonファイルを実行 をクリックする。

Visual Studio Codeのターミナルでsandbox1がアクティベートされてファイルが実行される。

Python: Conda Pathも設定したほうがよいかも(自分は設定しなくても動いたので未確認)

参考サイト

【ログ】Vue(TypeScript)とESLintの設定

※この記事はQrunchログからの移行記事です。

ESLint導入

Vue CLIでESLintを選択する。

? Pick a linter / formatter config:
> ESLint + Standard config

Script変更

vue-cli-service lintはデフォルトでauto fixが走るので、誤操作を防ぐためにScriptを変更しておく。

// package.json
{
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "test:unit": "vue-cli-service test:unit",
-   "lint": "vue-cli-service lint"
+   "lint": "vue-cli-service lint --no-fix",
+   "lint:fix":  "vue-cli-service lint" 
  },
  ...
}

ルール設定

comma-danglesemiは独自ルールを設定する。

// .eslintrc.js
module.exports = {
  rules: {
    'comma-dangle': ['error', {
      'arrays': 'always-multiline',
      'objects': 'always-multiline',
      'imports': 'never',
      'exports': 'never',
      'functions': 'never',
    }],
    semi: ['error', 'always'],
    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  },
  ...
}

【ログ】Visual Studio Codeのインデントサイズと改行コード設定

※この記事はQrunchログからの移行記事です。

setting.jsonに設定を記述する。ワークスペースの設定は.vscode/setting.jsonに配置する。

ファイル種別ごとに切り替える場合は[ファイル種別]の中に設定を記述する。

{

    "[typescript]": {
        "editor.insertSpaces": true,
        "editor.tabSize": 2,
        "files.eol": "\n"
    },
    "[vue]": {
        "editor.insertSpaces": true,
        "editor.tabSize": 2,
        "files.eol": "\n"       
    }
}