てみブログ

てみブログ

個人的な覚書用です

HTML - Java Script 基本文法

HTMLでJavascriptを使う、基本的な話です。

JavaScript自体の基本文法はこちら参照
HTMLの基本文法はこちら

ファイル構成

2通りある。
・html(.html)とjavascript(.js)を準備し、htmlからjavascriptを読みこむ。基本形。
┗test.js
┗test.html

<script src="test.js"></script>

・html内にjavascriptを記述する。短いコードならこっちでいい。
┗test.html

<script>
  function hogehoge(){
    console.log('fugafuga');
  }
</script>



ボタンをクリックしたときに関数を呼び出す。

書き方がいくつかある。
・ボタン自体に呼ぶ関数を設定する。
・ボタンにIDを付けて、該当するIDが押されたことをScript側で検知して関数を起動する。

・ボタン自体に呼ぶ関数を設定する。
<button onclick="buttonClick()">ボタン</button>

<script>
    function buttonClick(){
        alert('Click');
    }
</script>
ボタンにIDを付けて、該当するIDが押されたことをScript側で検知して関数を起動する。
<button id="button1">ボタン</button>

<script>
    function buttonClick(){
        alert('Click');
      }
     let button = document.getElementById('button1');
     button.onclick = buttonClick;
</script>



フォームの値を読みこむ・書き込む

フォームにIDをつけておき、valueで操作する。

<input id="input1"><br>
<input id="output1"><br>
<button onclick="test()">ボタン</button>

<script>

    function test(){
        let input1 = document.getElementById('input1');
        let output1 = document.getElementById('output1');

        //インプット1の値をログに出力する。
        console.log(input1.value);

        //アウトプット1のフォームに「hogehoge」をセットする。
        output1.value = "hogehoge";
    }
</script>



</script>

WinSCP自動化バッチ

目的:WinSCPを用いたSFTPでのアップロード、ダウンロードを自動化する。
前提

Windows OS前提
WinSCPがインストールされていること

例)EC2の指定ディレクトリからログファイル(.log)をダウンロードする。

ファイル構成 以下のファイルが同一ディレクトリにあるものとする。
・実行用バッチ(WinSCP.bat)
・コマンドファイル(command.txt) WinSCPに読みこませる。
・鍵ファイル(mykey.pem)
・ダウンロード用ディレクトリ(download)

WinSCP.bat

@echo off

rem 実行ディレクトリへ移動
cd %~dp0

rem WinSCPを起動し、コマンドファイルを読み込ませる。
"C:\Program Files\WinSCP\WinSCP.exe" /console /script=command.txt

command.txt

option batch on

#接続(ユーザー、接続先、鍵を指定)
open ec2-user@192.168.10.1:22 -privatekey=".\mykey.pem"

#接続先(サーバー側)のディレクトリを指定
cd /var/www/test/logs

#ローカルのディレクトリを指定
lcd .\download

#ダウンロード(尚、アップロードの場合はput)
get *.log

#切断
close
exit

TeraTerm起動バッチ

TeraTermの起動時に、以下のような初期設定を同時に行う。
・接続先ホスト名、ポートを指定する。
・設定ファイルを読み込む
・ユーザー、パスを指定する
秘密鍵を指定する

Windows前提
TeraTermのEXE実行時に起動オプションを付与することで実現する。

例:秘密鍵を使ってEC2に接続する。

@echo off

start "" ^
  "C:\Program Files\teraterm\ttermpro.exe" ^
  192.168.100.1:22 ^

  /user=ec2-user ^

  /auth=publickey ^
  /keyfile="C:\work\mykey.pem"

(「^」は改行前後で1行とみなす。
 実際に実行されるコマンドは1行だが、見やすさのために改行している。
 最終行の末尾には「^」は不要)

・コマンド詳細

startコマンドでTeraTermを起動

start "" ^
  "C:\Program Files\teraterm\ttermpro.exe" ^

及び接続先とポートを指定

  192.168.100.1:22 ^

接続ユーザーを指定

  /user=ec2-user ^

パスワードはいずれかのパターンを使う
・パスワードを指定

  /auth=password ^
  /passwd=hogehoge ^

・毎回パスワード入力を求める

  /auth=password ^
  /ask4passwd ^

・指定した秘密鍵を用いる

  /auth=publickey ^
  /keyfile="C:\work\mykey.pem" ^

読みこむ設定ファイルを指定(プロキシの設定をしている場合など)

  /F="C:\work\myTERATERM.INI" ^

(個人用)新規Windows PCセッティング

個人用覚え書き

FTPサーバー作成(Linux)

前提:
LHEL 8.4
FTPのライブラリはvsftpdを使用。
作成や更新はRootユーザーでやる(sudo)

vsftpdのインストール

インストールされているか確認する。

$ vsftpd -v

バージョンが出たらインストール済み。

無ければインストールする。

$ sudo yum install -y vsftpd

インストールできたら起動する。

$ sudo systemcrl start vsftpd

自動起動させる場合は、enable設定を行う。

$ sudo systemctl enable vsftpd

確認

$ sudo systemctl is-enabled vsftpd

enabledならOK

FTP用のユーザーを作成する。

操作はLinuxのユーザー作成手順に従う。
ここではユーザー名をftp_userとした。

$ sudo useradd ftp_user

/home/ftp_user が作成されたことを確認。

$ sudo passwd ftp_user

パスワードを2回入力して設定。

vsftpdの初期設定

以下に設定ファイルがあるのでVimで開く

$ sudo vi /etc/vsftpd/vsftpd.conf

以下の主要な設定をする。

anonymous_enable=NO
  #不特定のユーザーによるログインを拒否する(デフォルトでNOになってた)

chroot_local_user=YES
  #接続先のディレクトリより上位のディレクトリを参照不可にする。

pasv_enable=YES
  #デフォルトでパッシブモードで接続する。

pasv_min_port=10001
pasv_max_port=10100
  #パッシブモードで使用するポート範囲を記述する。

user_config_dir=/etc/vsftpd/ftp
  #FTP接続先を定義する。

クライアントからの接続

とりあえずサーバー上で試す。
ftpをインストールする。

$ sudo yum install -y ftp

インストールできたら起動

$ ftp

openして、localhostに接続する。

$ ftp
ftp> open
(to) localhost

ユーザーとパスワードを聞かれる。
さっき設定したftp_userで接続する。

クライアント操作

user  ログインする。(ログインに失敗したときにこれでリトライ)

pwd  サーバーのディレクトリパスを表示する lcd  ローカルのディレクトリパスを表示する。

ls  サーバーのファイル一覧を表示する。

cd 移動先  サーバーのディレクトリを移動する。
lcd 移動先  ローカルのディレクトリを移動する。

get ファイル名  サーバーのファイルを取得する。
put ファイル名  ローカルのファイルをアップロードする。

FTPサーバー作成、アクセス(Windows)

FTPサーバーインストール(IIS機能内)

役割と機能>サーバーの役割 にて有効化を行う。 ・「Webサーバー(IIS)」を有効化。
 さらに展開して、
・Webサーバー(IIS)Webサーバー>FTPサーバー を有効化。


FTPサーバーの設定

機能インストールできたら、
IISマネージャー>サイトを開き、 「FTPサイトの追加」をクリック


FTPサイト名を任意に決める。
・コンテンツを配置する物理ディレクトリを決める。
 (C:\inetpub\ftproot あたりか) ・後ほど設定するユーザーに対して、必要なアクセス許可(読み、書き、フルコン)を付与する。

・ポートはデフォルトだと21。必要に応じて変える。
 指定したポートはサーバークライアント間でアクセスが通るようにする。(FWなどで遮断していないか確認)
・必要に応じてSSLを設定。
 ローカルネットワーク内でとりあえずやるなら無しで。
 SSLする場合は証明書を割り当てる必要あり。


・アクセス許可で、指定されたユーザーを選択し、Windowsユーザーを任意に割り当てる。
 (FTPに接続する際のパスワードは、割り当てたWindowsユーザーのパスワードを利用する。) ・許可範囲(読み取り、書き込み)を設定する。

・作成したFTPサイトが起動していることを確認する。
・サイトのFTP認証を開き、基本認証及び匿名認証を有効にする。

Windowsクライアントからの接続

最初にファイアウォールで受信を許可する。
(これが通ってないと、FTPサーバーに接続されてもコマンドの結果の戻りが受信できない。)
(150 Opening ASCII mode data connection の表示で固まった場合はこれが原因の可能性が高い。)

クライアントPC側のファイアウォールの詳細設定を開く。
受信の規則>新しい規則
 種類:プログラム を選択  プログラムのパス:参照を開いて、ftp.exeを選択
  (%SystemRoot%\System32\ftp.e.exe になる)
 接続を許可する を選択し、適用対象のドメイン、プライベート、パブリックをチェックする。
 任意の名前を付けて保存する。

コマンドプロンプトを開き、

ftp

ftp> が表示されるので、

open

宛先を聞かれるので、接続先を特定できるホスト名かIPアドレスを入力する。
うまくいけばサーバーに接続される。
ユーザーとパスワードを聞かれるので入力する。

230 User logged in
が表示されればOK

繋がらない場合は以下を確認 ・ファイアウォールで、指定したポートをブロックしていないか。
 (デフォルトだとポート21)
IISで、FTPサイトの認証が有効になっているか。 ・ログインユーザーがFTPディレクトリへの読み書き権限を持っているか。

FTPクライアントの操作

コマンドはLinuxコマンドに準じる。
通常のLinuxコマンドはサーバー側に対する操作となる。

pwd  サーバー側のディレクトリ確認
lcd  ローカル側のディレクトリ確認

cd  サーバー側のディレクトリ変更
lcd  ローカル側のディレクトリ変更

ls  サーバー側のディレクトリ内容表示
!dir  ローカル側のディレクトリ内容表示

get ファイル名   サーバーのファイルをローカルに取得
put ファイル名   ローカルのファイルをサーバーにアップロード

Oracle DB 基本文法 sqlplus

前提

sqlplusがインストールされている、Oracleクライアント、もしくはOracleサーバーで作業するものとする。

OracleサーバにEM(Enterprise Manager)がインストールされている場合、GUI操作できるのでそちらを使った方が楽。
 EMの接続:
  https://サーバー名:1158/em
 ユーザー名とパスワードを入力してDBに接続する。

 右下の方に「SQLワークシート」のリンクがあるので、それを開く。(Oracle11gの場合)
 ブラウザで直接SQLコマンドを入力でき、結果も画面上で確認できる。

SQLPLUSの操作

以下は基本的にコマンドラインでの操作を前提とする。

データベースへの接続

$ sqlplus ユーザー名/パスワード@サーバー名:ポート/インスタンス名

※「/パスワード」を省略した場合、接続時にパスワードを聞かれる。
※サーバー上で実行する場合、サーバー名、ポート名は省略できる。
※サーバー上で実行する場合、インスタンス名は事前に、「set ORACLE_SID=インスタンス名」
 を宣言することで省略できる。 ※SYSDBA(管理者)でつなぐときは「ユーザー名/パスワード as SYSDBA」
 そのあとの文とのつなぎはよくわかんない。
※sqlplusの起動文は結構パターンがあって把握しきれいていない。嘘書いてたらごめんなさい。
 間違ってたらエラーコードORA-xxxxxが出るので、それでググれば割と解決する。(他人任せ)

ORACLE DBの構造

インスタンス

メモリ上に展開されて、コマンド実行を直接受け付けるところ。
DBのフロントエンドみたいなイメージ。
ORACLE_SID=で指定するのがインスタンス

データベース

実際にディスク上に実体があるのがデータベース。
インスタンスはデータベースを「マウント」し、
ユーザーはインスタンス経由でデータベースにアクセスする。



シンプルなシステムでは1つのインスタンスと1つのデータベースを用いる。
インスタンス名とデータベース名は同じになっていることが多い。
複数のインスタンスが1つのデータベースをマウントすることもできる。
インスタンス冗長化になる。

インスタンス一覧の取得
select * from v$instance;
テーブル一覧の取得
--テーブル名だけでいいとき
select table_name from user_tables;

--細かい情報も欲しい時
select * from user_table;

コマンド

基本的にMySQLと変わらないんだけど、違うところを書いてく。

上位X行を表示

limit とか top が使えないので、副問い合わせで表示する。

select * from
  (select * from テーブル名 order by ソートするカラム asc)
where ROWNUM <= 10;

↑カラムを昇順に並べ替え、上の10レコード(ROWNUM=行番号が10以下のもの)を表示。

コマンド表示幅の変更

デフォルトでは幅が狭く、改行で見にくい時は広げる。

set linesize 240

※linesizeはlineに省略可能。

現在のlinesizeの確認

show linesize
各カラムの表示幅変更
column カラム名 format a20;

20のところが幅。任意に変える。

テーブルのカラム定義の確認

--簡易
desc テーブル名

--詳細
select COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE from ALL_TAB_COLUMN where TABLE_NAME='テーブル名' order by COLUMN_ID ASC;

別ユーザーのテーブルは参照できない。
テーブルのオーナー(スキーマ)がだれか調べる

select table_name, owner from dba_tables;

別ユーザーのテーブルを参照する場合はスキーマを指定する。

select * from スキーマ名.テーブル名;

セッション内でデフォルトのスキーマを変更することも可能。

alter session set current_schema = スキーマ名;

ビュー定義の確認

select * from USER_VIEWS where VIEW_NAME='ビュー名';

権限

GRANTコマンドで変える(あとで書く)

確認は、

select * from dba_sys_privs where grantee = 'ユーザー名';