カテゴリー "Technology" の記事
-
Oct. 25. 2023
フロントエンドを勉強する中でフレームワークで使われてる要素技術を調べたので、Vanilla JS でフロントエンド フレームワークっぽいものを自作してみました。その時のメモです。フロントエンド フレームワークに必要なもの フロントエンド フレームワークっぽいものを作るとき、以下の技術を使うと便利と思います。Custom Element と Shadow DOM は Web Component と呼ばれる一連の技術の1つです。詳細は MDN のサイトを参照してください。Custom Element は名前の通り、HTML 標準では定義されていない独自のタグを定義する方法です。
-
Oct. 21. 2023
Docker の基本的な使い方はわかったけど、その上で何を気を付ければ良いの?という点を調べたのでその時のメモです。この記事では以下の説明をしています。マルチステージビルド ユーザーの指定 認証情報の扱いについて コンテナイメージのセキュリティスキャン等、コンテナセキュリティに関するトピックは他にもありますが、この記事では扱いません。環境 この記事に含まれる例は以下の環境でテストしています。マルチステージビルド Docker イメージをビルドする時、ソースコードのビルドもコンテナ内で行いたい時がよくあります。例えば Jenkins 等の CI パイプラインでコンテナをビルドする時、最新のソースコードを Git から持ってきて、必要なパッケージをダウンロードして、(コンパイルが必要な言語なら) ソースコードをコンパイルして、ビルド結果をコンテナイメージに含める、ということを継続的に行うと思います。
-
Jan. 25. 2023
SQL Server の Read Scale Availability Group (読み取りスケール Availability Group) の手順を調べたので、その時のメモです。 Availability Group について あるサーバーが故障した時に、別のサーバーがその役割を引き継いでシステムを継続可能にする性能を “可用性” と呼びます。一般的にデータベースでは、Primary と Secondary サーバーを用意しておいて、普段は Primary データベースを使うが、Primary が何らかの障害で止まった時は Secondary データベースにフェールオーバーしてシステムを継続させる、というように構成して可用性を実現しています。
-
Jan. 24. 2023
SQL Server のレプリケーションについて調べる機会があったので、その時に調べた概要と手順のメモです。 環境 初めに注意点 MySQL、PostgreSQL、Oracle 等他のデータベースでは、レプリケーションは Read 処理を複数のサーバーに分散するために使用され、もし Primary サーバーが故障した場合は、Replica サーバーの内の 1台が Primary の役割を引き継ぎ、システムを継続できます。 ただ SQL Server のレプリケーションは基本的に Read 処理を分散するためだけに用意されている機能で、Primary が故障した時に Replica が Primary の役割を引き継ぐ、ということができないので注意してください。 (Primary と Replica 両方で書き込みができるレプリケーション トポロジーもありますが、基本的には異なる拠点間でのデータ同期が主な目的で、Read 処理を分散するようなケースでは使用されないものと理解しています) サーバー故障時に別のサーバーが役割を引き継いでシステムを継続する性能を “高可用性R(続きを読む…)
-
Jan. 23. 2023
SQL Server のバックアップとリストアの手順メモです。復旧モデルについて 一般的にデータベースのバックアップと復元の方法には2種類あり、1つはデータベースのフルバックアップのみを取得する方法で、もう1つはフルバックアップとトランザクションログをバックアップする方法です。バックアップのみを取得する方法では、バックアップを取得した時点のデータへ復元することはできますが、バックアップ取得以降に変更されたデータについては復元することができません。
-
Jan. 23. 2023
仕事で SQL Server のことを調べる機会があったので、その時調べたことの簡単なメモです。データベース、スキーマ、テーブル SQL Server ではインスタンスにデータベースを作成し、データベースの中に “スキーマ” を定義し、スキーマの中にテーブルや Stored Procedure、Function 等を作成します。
スキーマはテーブルや Stored Procedure などをグループ化するためのもので、どのユーザーがどのような操作をできるかといった認可をまとめて設定するためのものです。スキーマを使わず、各テーブルや Stored Procedure 等に直接権限を設定することもできますが、スキーマを使って権限を管理するのが推奨されています。
-
Jan. 22. 2023
PostgreSQL での論理レプリケーション (Logical Replication) の設定手順メモです。論理レプリケーションについて “論理レプリケーション” とは データベースのレプリケーション方式の 1つです。”物理レプリケーション” ではデータファイルを物理的に (バイト単位で) そのままレプリケーションするのに対し、論理レプリケーションではソースデータベースで行われた変更内容を SQL 等の形で宛先データベースへレプリケーションします。物理レプリケーションではソースデータベースと宛先データベースのバージョンが一致しないといけないなどの制約が多いですが、論理レプリケーションでは異なるバージョン間でのレプリケーションが可能など柔軟な構成が可能です。この記事では PostgreSQL で論理レプリケーションを構成する手順を説明します。
-
Jan. 21. 2023
PostgreSQL のバックアップとリストア手順のメモです。 バックアップの種類 データベースのバックアップとリストアの方法には 2種類あります。1つ目はデータベースのフルバックアップを取得して、それをそのまま復元する方法。これはバックアップを取得した時点まで復元することはできますが、バックアップの取得後に変更されたデータは復元できません。2つ目はトランザクションログ単位でバックアップを取得し、任意の時点へデータを復元する方法。 “PITR” (Point-in-time Recovery) と呼ばれ、フルバックアップを取得した後、トランザクションログを継続してバックアップすることで、トランザクションログを使って任意の時点のデータを復元することができます。
-
Jan. 21. 2023
PostgreSQL のインストールと初期設定の手順のメモです。PostgreSQL のインストール 公式ドキュメントに従って、apt を使ってインストールします。初回ログイン インストール時に postgres というユーザーが OS に作成されますので、インストール後に初めて PostgreSQL にアクセスする場合は、この OS ユーザーに切り替えてアクセスします。認証方式の設定 PostgreSQL の認証方式は pg_hba.conf というファイルで設定します。デフォルトでは以下のように記載されています。
-
Jan. 8. 2023
MySQL のレプリケーション設定手順をまとめました。MySQL のレプリケーションでは、レプリケーション元のサーバーを “Source” と呼び、レプリケーション先のサーバーを “Replica” と呼びます (以前は “Master” と “Slave” と呼ばれていましたが、奴隷制度を連想させる単語として変更されました)。設定は簡単で、必須となる 2つの設定項目 server_id と log_bin を設定するだけでレプリケーションを開始することができます。ただそれだと本番環境では心もとないので、この記事では少し細かい部分も説明したいと思います。
-
Nov. 9. 2022
MySQL のバックアップとリストア手順のメモです。MySQL でのバックアップは基本的に論理バックアップ (データをバイナリ形式で出力するのではなく、SQL 文の形で出力する) となります。物理バックアップ (データファイルをそのままバックアップする方法) も可能ですが、データの整合性を保つためには MySQL を停止した状態で行う必要があります。Enterprise Edition ではオンライン物理バックアップを行うツールがあるようですが、Community Edition では使用できないためこの記事では扱いません。
-
Nov. 4. 2022
Oracle Database の Data Guard を使ったレプリケーションを調べたので、その時のメモです。“レプリケーション” とは、あるデータベースに行われた更新を別のデータベースサーバーへリアルタイムで適用する機能です。Oracle では、データ更新が行われるサーバーを Primary と呼び、Primary から更新データを受け取り適用するサーバーを Standby と呼びます。データがリアルタイムで複製されることで、Primary サーバーが障害等で停止した場合も、Standby データベースを使ってシステムを停止することなく運用することができます。
Oracle Database のレプリケーションは色々な方法があり、例えば自前のスクリプト等でアーカイブログをリモートデータベースにコピーしてリカバリする、と全て自前で実装することも可能ではあります。ただ現在は Data Guard という機能を使ってレプリケーションを行うのが一般的なため、この記事でも Data Guard を使った方法を紹介します。
-
Oct. 29. 2022
Oracle Database を使う機会があり、バックアップとリストアの方法を調べました。その時の手順のメモです。本題に入る前に、自分が Oracle のバックアップを調べた時に感じたことを書いておきます。
自分のように他の RDBMS を触ってた人が Oracle のバックアップ方法を調べると、”やりたいことが載ってない” と感じることが多いのではと思います。例えば “バックアップを取っておき、サーバーが壊れたら別のマシンにサーバーをインストールしてバックアップからデータを復元する” ということを Oracle でやろうとすると少し面倒です。
MySQL や PostgreSQL のバックアップでは、ベースバックアップを取った後、トランザクションログ (binlog や WAL) を別の場所に継続的にコピーするという方法で行われます。そしてリストアする時は新しいマシンに DB をインストールした後、ベースバックアップとトランザクションログをそのまま流し込めば DB が復元できます。
-
May. 7. 2022
Celery という Python のタスクキューを使う機会があったので、簡単に使い方をメモします。 “タスクキュー” とは あるタスクを非同期に実行するための仕組みで、タスクの実行を依頼する Client と、タスクを実行する Worker というプロセスで構成されます。Client と Worker は “タスクキュー” と呼ばれるデータストアを介してやり取りします。 処理の流れは以下のようになります。 まず Worker プロセスを起動する。Worker は継続的にタスクキューをモニタリングします。 Client プロセスが実行したいタスクをキューに登録。 Worker プロセスはキューにタスクが登録されたのを検知してタスクを実行。 以降 Client がタスクを登録する度に Worker がそのタスクを実行します。 このような仕組みを使うことでシステム間の依存を減らせたり、長時間かかる処理を非同期に別のマシンで実行できるなどのメリットがあります。 用語 Celery Application: Celery のメインとなるコンポーネ(続きを読む…)
-
Apr. 4. 2022
Oracle Database を使う機会があったのですが、事情により Oracle Linux が使えなかったので Rocky Linux へインストールしました。その時の手順のメモです。 環境 用語 Oracle Database のインストール手順 Rocky Linux (や RHEL や Oracle Linux) では RPM パッケージを使って yum コマンドで Oracle Database をインストールできます。インストールは以下の手順で行います。 ※なお今回は Non-CDB 環境 (CDB と PDB の構成ではなく、従来の 1 サーバーインスタンスに 1 データベースの構成) の方法をベースにしていますが、CDB環境の場合に必要なコマンドはコメントに記載しています。 1). Preinstall パッケージのインストール 以下のコマンドで、preinstall パッケージをダウンロード + インストールします。 2). Oracle Database パッケージのインストール Oracle のサイトから Linux x86-64 の RPM パッケージをダウ(続きを読む…)
-
Apr. 4. 2022
VirtualBox Guest Additions は、Debian 系のOS (Ubuntu など) には公式の手順通りで簡単にインストールできるのですが、Red Hat 系 (CentOS や Oracle Linux など) ではエラーでインストールできないことがあります。 この間 CentOS の後継 OS として開始された Rocky Linux に VirtualBox Guest Additions をインストールしようとした時に少しはまったのでメモを残します。 環境 OS: Rocky Linux 8.5 VirtualBox Guest Additions インストール手順 まず Rocky Linux を VM にインストールしたら、dnf update を実行し再起動します。これは必ず必要な手順なので注意が必要です。 その後、必要なパッケージをインストールします。 最後に VirtualBox のメニューから Guest Additions のディスクを挿入し、インストールスクリプトを実行すればインストールできます。 インストール時のエラー対応 エラー1: &#(続きを読む…)
-
Dec. 29. 2021
社内 SE にとって、社員に配る PC のセットアップはよくある業務の一つだと思います。社員の入社、退職にあわせてPC を配布、回収する時、また消耗品である PC を新しく調達しなおす時など、PC に OS をインストールする機会はよくあります。この OS をインストールする作業を「キッティング」と呼ぶ企業も多いです。 企業で使う PC では素のままの OS を使うことは無く、業務に必要なアプリケーションやセキュリティポリシーなどを設定した OS イメージを使用します。Windows 環境では、マスター PC と呼ばれる元になる物理マシンを用意して、必要な設定をした後、sysprep を実行してプロファイルを初期化した後、何かツールを使ってHDD を丸ごとコピーする、という方法が一般的でした。 ただこの方法だとキッティング用の物理 PC が1台余分に必要なのと、マスター PC が壊れた時に大変なので、仮想マシンでマスター PC を構築し、カスタマイズした OS イメージを作成/配信する仕組みを作りました。 その時ついでに、PC の電源を入れたら自動で OS イメージがインストールされ、(続きを読む…)
-
Aug. 6. 2020
仕事でLinuxにNFSサーバーを構築し、WindowsからNFSをマウントすることがあったので、その時のメモです。 環境 NFSサーバー側のOSは Ubuntu 18.04 LTS、NFSクライアント側のOSはWindows Server 2019 を使っています。 NFSサーバーのIPアドレス: 192.168.11.21 NFSクライアントのIPアドレス: 192.168.11.31 NFSサーバーのインストールと設定 まずNFSサーバーをインストールして、NFSで共有するディレクトリを作成します。また今回はWindowsクライアントからアクセスする時のユーザーを、常に “nobody” という一番権限の低いユーザーに設定したいと思います。そのためNFSで共有するディレクトリのオーナーに “nobody” ユーザーを設定します。 今回は “/nfs/my-share” というディレクトリをNFSで共有するよう設定したいと思います。 shell 次にNFSの共有設定です。NFSの設定は /etc/exports(続きを読む…)
-
Jul. 19. 2020
仕事で社内DNSサーバーを更新する機会があったのですが、BiNDはセキュリティが心配だったのでUnboundとNSDを使って構築しました。その手順のメモです。 ちなみに、セカンダリーDNSが設定されていない端末がいくつもあったので、セカンダリーDNSを別IPで立てるのではなく、マスターとスレーブをVRRP (keepalived) で冗長化する構成にしています。普通はあまり無い構成だと思いますが、思いの外うまくいった感じがするので併せて記録しておきます。 環境 プラットフォーム: IPアドレス: 使用ポート: DNSの基礎と今回の構成 コンテンツサーバーとキャッシュサーバー DNSサーバーには「コンテンツサーバー」と「キャッシュサーバー」の2種類があります。「コンテンツサーバー」は自分が管理するドメインに対する名前解決問い合わせに回答するサーバーです。名前解決に関する情報はゾーンファイルというファイルに書かれていて、ゾーンファイルはこのコンテンツサーバーにあります。 「キャッシュサーバー」は名前解決の回答をキャッシュしておいて、後で同じドメインに対する問い合わせが来た時に、キャッシュし(続きを読む…)
-
Mar. 28. 2020
普段C#やPHP、Pythonを使っているエンジニアがJavaを勉強して学んだことを紹介します。今回は第2回目で、Webアプリケーションについてです。 第一回目の記事: 他言語エンジニアのためのJava入門 1 – コンパイルとクラスパス JavaでWebアプリケーションを作る方法を調べると、Spring Boot を使った方法が多く検索されます。実際 Spring Boot はデファクトスタンダードになっているようで、実際のプロジェクトでは何かしらのフレームワークを使って開発することが多いと思いますが、その裏側の仕組みがわからないとなかなか理解しずらいように思いました。 そのため今回は、JavaのWebアプリケーションの仕組みである「サーブレット」を紹介します。 第一回の記事は普通のコンソールアプリケーションを作りましたが、Webアプリケーションではブラウザとやり取りするHTTPリクエストやレスポンスを操作する必要があるなど、追加の機能が必要となります。PHPではコアライブラリにWebの機能が組み込まれていますが、他の言語、例えばC#ではASP.NETという専用のライブラリが必要にな(続きを読む…)
-
Mar. 5. 2020
普段はC#やPHP、Pythonを使って開発をしているのですが、あるプロジェクトでJavaを使うことになり勉強してみました。しかし歴史のあるプログラミング言語のせいか、フレームワークを使った開発方法の記事ばかりで、IDEの裏でどのような処理が動いているのかといった基本的な動作がわからず、Webに書いてある通りにしかプログラムを書けない、という状態になってしまいました。 そこで今回自分が勉強してわかったことを、これからJavaを始める方達に向けて紹介したいと思います。 この記事はある程度プログラミング経験のある方が、初めてのJava開発をスムーズに始められるよう基本的な動作原理を説明することを目的にしています。Javaの文法などプログラミングの基本的な部分は説明しませんのでご注意ください。 1回目はJavaのコンパイルと実行を、IDEやビルドツールを使わずに行う方法を見たいと思います。 開発環境の準備 まずは開発環境を準備します。Javaの開発には「Java Development Kit (JDK)」というコンパイラやコアライブラリが含まれるツールが必要になります。JavaのJDKは歴(続きを読む…)
-
May. 1. 2018
Apache のインストールと初期設定のメモです。今回使ったOSは Ubuntu 16.04 LTS です。パッケージマネージャーから、Apacheをインストールします。※以下コマンドは全て root ユーザーで実行します。
セキュリティ対策として以下のを設定します。CGIを無効化 HTTPレスポンスに極力サーバー情報を表示しないよう設定 Apacheのエラーページに表示されるサーバー情報を非表示に設定 タイムアウト時間の変更 不要なディレクトリへのアクセス拒否設定 まずCGIを無効化します。 続いて、バックアップをとってから seciruty.conf を編集します。 -
Apr. 30. 2018
Linuxで使えるフリーのアンチウイルス、ClamAVのインストールと初期設定のメモです。 今回使ったOSは、Ubuntu 16.04 LTS です。 パッケージマネージャーからClamAVをインストールします。※以下コマンドは全て root ユーザーで実行します。 インストールが終わったら、ウイルス定義を更新します。ウイルス定義は freshclam というコンポーネントで定期的に更新されますが、手動で更新する場合は、一度 freshclam を停止し、手動更新してから再度 freshclam を起動します。
-
Apr. 28. 2018
MySQLのインストールと初期設定のメモです。今回使ったOSは、Ubuntu 16.04 LTSです。ダウンロードとインストール MySQL Downloadsページから、Community Editionのダウンロードページを開きます。ここでプラットフォームに合わせてパッケージをダウンロードするのですが、今回はUbuntuなのでMySQL APT Repositoryをダウンロードします。“ダウンロード” ボタンを押すと、ログインとサインアップのページが表示されます。