perlのweb APIシステムで効率的に開発したい

仕事でperlのweb システムAPIの改修に携わっている。

 

perlのシステムを改修するのは初めてだが、

if、for分の構文は当たり前にあるし、オブジェクト指向、HTTPの知識があれば、何とかなりそうだ。

 

が、、、開発環境という点では、スキル不足だなあと思うこの頃。

 

開発はVS CODE上で、terminalコマンドを打って、システムをローカルで動かしながら行なっている。

 

が、構文チェックや、エラーログが改行されてなかったり、修正後の、システム停止→起動に時間がかかり、非常に効率が悪い。

 

昨日の夜に調べた感じだと、intellJでperl拡張を入れれば、構文チェックはしてくれそう。

 

システム起動や、エラーログの出力は、

テストコード実行するようにすれば、開発効率は上がるような気がしている。

 

今日やってみる!

 

Live Server

デザイナーさんが作成した画像ページから、HTMLを作成する際に見つけたVSCodeの拡張です。

何がすごいかって、ボタンひとつで、 Webサーバが立ち上がり、ブラウザが開いて HTMLを更新するたびにホットリロードしてくれるところ。

npmの設定しなくていいし、楽ちんだ。

f:id:rarao1048:20191029183511p:plain

シャローコピーとディープコピー

Nuxt.jsの勉強で出てきたオジェクトコピーの用語

シャローコピー 配下の構造のオブジェクトを参照コピーする。 コピーしたオブジェクトの値を変更すると、コピー元の値も変わってしまう。 参照コピーなので当たり前か。

ディープコピー 配下の構造のオブジェクトを値コピーする。 コピーしたオブジェクトの値を変更しても、コピー元の値は変わらない。

Javascriptでディープコピーをやる場合は、 loadshというライブラリを使うとcloneDeep()関数でできちゃうから楽。

npmでインストールするといいよ。

Nuxt.jsをVisual Studio Codeでデバッグ

1日格闘してやっとできたのでメモ

Debbuger for Chromeをインストール

VSCodeの"Debbuger For Chrome"をインストールします。

package.jsonの変更

  "scripts": {
    "dev": "nuxt",
+  "dev-debug": "node --inspect-brk=9229 node_modules/nuxt/bin/nuxt",    ←追加
    "build": "nuxt build",
    "start": "nuxt start",
    "generate": "nuxt generate",
    "lint": "eslint --ext .js,.vue --ignore-path .gitignore ."
  },

nuxt.config.jsの変更

  build: {
    transpile: [/^element-ui/],
    /*
    ** You can extend webpack config here
    */
    extend (config, ctx) {  ←ここから3行追加
      config.devtool = 'inline-cheap-module-source-map'
    }
  },

Visual Stdio Codeのデバッグ構成作成

.vscode/launch.json

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
      {
        "type": "chrome",
        "request": "launch",
        "name": "Launch Chrome",
        "url": "http://localhost:3000",
        "webRoot": "${workspaceFolder}",
      },
      {
        "type": "node",
        "request": "launch",
        "name": "Launch via NPM",
        "runtimeExecutable": "npm",
        "runtimeArgs": [
          "run-script",
          "dev-debug"
        ],
        "sourceMaps": true,
        "port": 9229
      },
    ],
    "compounds": [
      {
        "name": "Full-stack",
        "configurations": ["Launch via NPM", "Launch Chrome"]
      }
  ]
}

デバッグウインドウからFull-stackを実行すれば、Chromeが起動する。 起動したばっかりだと、ビルドが間に合わず404ページが出るかも。リロードすると、画面が表示できる。

f:id:rarao1048:20191014205834p:plain

trapコマンド

trapコマンドって便利だね。 シェルコマンドの実行中に、Ctrl + Cでプロセス停止イベントを補足し、コマンドを実行することができる。

使い方

trap 'コマンド' シグナルリスト


$ trap 'echo trapped.' 2
※ ここで Ctrl+c を押す。
$ trapped.