Vue.js 3の学習メモ

v-onceの使い方

初回だけテキストバインディングを行いたいときに使う。つまり、二回目以降の表示では、静的コンテンツとして扱うようにするためのディレクティブ。

どんな時に

要素が変わらないことが分かり切っている場合。APIでデータを取ってくるとき、そのデータが不変だとわかっているなら、静的コンテンツにしてもいいだろうということ。

メリット

ページ更新時のパフォーマンスが向上する。画面ロードのたびに更新とかしなくて済むから。

実装してみた

開発は、Visual Studio Codeを使った。

  • index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <p v-once>{{ message }}</p>
        <p>{{ message }}</p>
        <input type="text" v-model="message">
    </div>
    <script src="https://unpkg.com/vue@3.1.5"></script>
    <script src="js/main.js"></script>
</body>
</html>
  • js/main.js
const app = Vue.createApp({
    data: function() {
        return {
            message: 'Hello World!'
        }
    }
})
app.mount('#app')

ブラウザで開いてみる

テキストボックスの文字列は、v-modelでdataの値とデータバインドされている。

テキストボックスの値を変更してみる。

最初の<p>タグには、v-onceディレクティブが入っているため、更新がされなくなっている。

ページ表示の速度が遅いなあと感じたら使ってみようかな。

Anacondaメモ

Anacondaとは、Pythonの仮想環境を構築するためのツール。パッケージを纏めて管理することができる。Anacondaのコマンドをメモしていこうと思う。

Anacondaのインストール

こちらからインストーラーをダウンロードし、実行する。https://www.anaconda.com/products/individual

仮想環境の構築

conda create -n 仮想環境名

仮想環境を有効化

conda activate 仮想環境名

仮想環境を無効化

deactivate

ライブラリのインストール

pip install ライブラリ名

仮想環境の一覧表示

conda env list

仮想環境にインストールしたパッケージ一覧表示

conda list

Windows上に建てた仮想マシン(Ubuntu)のキーボード設定をする

環境

  • Windows10
  • Ubuntu20.04

Hyper-vを使って建てた仮想マシンで練習していたら、キーボード設定の問題で入力できない文字があったので、設定方法を記録しておく。

方法

terminalを開き、下記のコマンドを実行する。

gnome-session-properties

下記のWindowが出てくる。

ここに、あたらしいStartup Programを追加する。

  • Name : Set JP keyboad
  • Command : setxkbmap jp
  • Comment : キーボード設定を日本語にします。

Name,Commentはわかるように記入すればよい。

これでOK。

ショートカットキーでウィンドウを切り替えると、キーボードレイアウトがUSになるバグが発生することがあるらしい。

その場合、terminalで下記のコマンドを実行する。

setxkbmap jp

参考

https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Setting_keyboard_layout

https://qiita.com/vochicong/items/6452ac54bde56b0e0bb3

META-INFとWEB-INFフォルダ

Javaで実装するWebアプリケーションにおいて、この2つのフォルダがどんな役割を果たしているのかまとめる。

目次

  • META-INF
  • WEB-INF

META-INF

JAR(Java Archive: Javaにおいて複数のファイルを1つのファイルにまとめる機能)ファイルにおいて設定ファイルを配置するためのフォルダ。(詳細はまた後程更新予定)

WEB-INF

Webアプリケーションのユーザーには見せたくないファイルを配置するためのフォルダ。ここに配置したファイルは、URLを指定しても開くことができないので、見られる心配がない。クラスファイルなどを配置する。

Tomcatの自動リロード機能を使う

サーブレットの勉強をしているが、毎回更新のたびに再起動をするのは手間がかかるので、サーブレットの変更を検出してリロードできるようにする。

context.xmlを編集

Tomcatに配置したWebアプリケーションのフォルダに『META-INF』というフォルダがある。この中の設定ファイル『context.xml』を編集、あるいはなければ用意する。

下記の設定を追記する。

<Context reloadable="true"/>

注意として、本番環境では使わないほうがよさそう。Tomcatが更新を監視しないといけなくなり、動作が遅くなってしまう可能性があるらしい。

また、新しいソースファイルをコンパイルしたときは再起動が必要。

trueをfalseに変更することで、自動リロードは無効にすることができる。

単語メモ

Webアプリケーション系

覚えておいたほうがよさそうな単語とか概念を一言で言えるようにまとめておく。このページは、知った単語が増えるたびに更新していきます。

目次

  • コンテキスト
  • コンテキストパス
  • コンテキストルート
  • URL
    • 絶対URL
    • ドキュメント相対URL
    • サイトルート相対URL
  • ウェルカムファイル(デフォルトファイル)

コンテキスト

Webアプリケーションのことを、コンテキストと呼ぶことがある。Androidアプリの開発経験がある人は見慣れた言葉らしい。

実行中のプログラム内部状態、実行中かにかかわらず、Webアプリケーションのことをコンテキストと呼ぶこともあるらしい。

コンテキストパス

Webアプリケーションを表すパスを、コンテキストパスと呼ぶ。コンテキストパスは、『/Webアプリケーション名』のような文字列のこと。

サーバーのURLにコンテキストパスを付加すると、WebアプリケーションのURLになる。例えば、サーバーURLが『https://xxxx.com』でコンテキストパスが『/application』なら、URLは、『https://xxxx.com/application』となる。

コンテキストルート

WebアプリケーションのURLにさらにパスを足して、表示するリソースを指定するが、Webアプリケーションの最上位パスをコンテキストルートと呼ぶ。WebアプリケーションのURLの最後の『/』のこと。

URL

絶対URL

http,httpsなどのURLスキームからはじまるURLを絶対URLという。

ドキュメント相対URL

URLスキームから始まらないURLを相対URLというが、そのうち、『/』から始まらないURLをドキュメント相対URLという。

サイトルート相対URL

相対URLのうち、先頭が『/』から始まるURLをサイトルート相対URLと呼ぶ。

ウェルカムファイル

WebサイトのURLをブラウザで開いたときに表示されるファイルをウェルカムファイル(またはデフォルトファイル)と呼ぶ。Tomcatの場合、『index.html』『index.htm』『index.jsp』がウェルカムファイルとして扱われる。この名前のファイルが置いていない場合、404エラーが表示される。

Apache Tomcatを使ってみた

アプリケーションサーバー、Apache Tomcat(以降、Tomcat)をつかってみた。

開発環境

  • Windows10
  • JDK 8
  • Tomcat 8.5.73

環境変数の設定

次の環境変数を設定する。設定値は、必要に応じて変更してほしい。

環境変数設定値説明
JAVA_HOMEC:\Program Files (x86)\Java\jdk1.8.0_121JDKのパス
CATALINA_HOMEC:\apache-tomcat-8.5.73tomcatのパス
CATALINA_OPTS-Dfile.encoding=UTF-8Tomcatの文字エンコーディングをUTF-8に設定

Tomcatを起動してみる

次のコマンドでTomcatを起動してみる。

# コマンドプロントで使う文字コードをUTF-8に設定する
C:\apache-tomcat-8.5.73>chcp 65001
# Tomcatを起動
C:\apache-tomcat-8.5.73>bin\catalina.bat run

Windowsのファイアウォールに関するダイアログが表示される。ダイアログから「許可」を選択し、Java,Tomcatによる通信を許可する。

Tomcatが起動できると、「org.apache.catalina.startup.Catalina.start Server startup in 660ms」みたいなメッセージが表示される。(起動に要した時間が表示される。)

Tomcatは、Webサーバーの機能も持っているらしい。ブラウザで、「http://localhost:8080」を開くと、下記のような画面を開ける。

起動できたのを確認できたので、今回はここまで。

Ansibleの勉強はじめた

友人から「Ansible」使えるか?と聞かれた。知らないとは言いたくなかったし、業務で使うこともあるかもしれないので、勉強してみる。

学んだ内容を投稿していこうと思う。

Ansibleとは?

2012年にAnsible社(2015年にRed Hat社が買収)が提供し、オープンソースで開発が進められている、Pythonで記述された、Infrastructure as Code実践のための構成管理ツールのひとつ。https://docs.ansible.com/ansible/latest/index.html

Ansibleで構成管理するには下記の4つの要素が必要。

  • Ansibleの本体
  • Inventory
  • Module
  • Playbook

Ansibleの本体

Ansibleのソフトウェア。Module,Playbookを実行するときに、コマンドラインからAnsibleを実行することになる。

Inventory

操作対象となるサーバーへの接続情報の定義。

Module

Ansibleから実行するコマンドのようなもの。

Playbook

YAMLで書かれたスクリプト。

ModuleがAnsibleにとってのコマンドなら、Playbookはスクリプト。

Ansibleの特徴

Puppet、Chefといった類似のツールはあるが、根本的に異なる点は、エージェントレスでうごくということ。

JSPについて

Javaでアプリケーションを作ろうとしたときに耳にする、JSP(JavaServerPages)についてまとめてみる。

JSPとは、Webページ内にJavaプログラムを埋め込み、これをサーバ上で実行して結果を反映したページを動的に生成することができる技術。

IT用語辞典 e-words

サーブレットと同じように語られるが、書き方が異なる。

イメージ的には下記みたいな感じ。

サーブレットは、Javaコードの中にhtmlが入っている。対してJSPは、htmlの中にJavaが入っている。

実際のWebアプリケーションでは、両方を組み合わせて使われることが多いみたい。

  • 処理が主体:サーブレット
  • 出力主体:JSP

ちなみに、サーブレットは下記のように書かれている。

Javaサーブレットとは、Webサーバ上で動作するJavaプログラムの仕様を定めた標準の一つ。また、その仕様に基いて開発されたJavaプログラム。

IT用語辞典 e-words

Webコンテナについて

サーブレット、JSPの実行には、WebサーバーとWebコンテナが必要となるらしい。Webコンテナについて何も知らないと気が付いたので、調べてまとめてみる。

Webコンテナとは、Webサーバ上で動作するJava言語で開発されたソフトウェア部品(JavaサーブレットJSP)の実行環境となるソフトウェア。

IT用語辞典 e-words

これだけだとよくわからないので、もう少し書く。

このソフトウェアは、Webサーバーと連動して動作する。(WebコンテナはWebサーバーの一部と解説しているページもある)ブラウザでURLを開くと、WebサーバーがWebコンテナを呼び出す。このとき、サーブレットのクラスファイルを読み込んで、サーブレットの実行を行っている。

図にすると下のような感じ。

ブラウザからのリクエストは、Webサーバー、Webコンテナを介してサーブレットに渡される。サーブレットがリクエストに応じたレスポンスを作成し、Webコンテナ、Webサーバーを介してブラウザにレスポンスを送信する。