カテゴリー "Technology" の記事
-
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 へインストールしました。その時の手順のメモです。 環境 OS: Rocky Linux 8.5 DB: Oracle Database 19c 用語 “Database“: Oracle ではサーバーインスタンスのことを “データベース” 呼びます。例えば MySQL で “データベース” というと、複数のテーブルをまとめて管理する入れ物のような意味ですが、Oracle ではサーバー自体を “データベース” と呼び、複数のテーブルをまとめるものは “Schema” と呼ばれます。 “Schema“: Oracle での “スキーマ” は、複数のテーブルをまとめて管理する入れ物のようなもので、DB ユーザーと紐づきます。例えば Store ユーザーがいたら、そのユーザーに紐づく St(続きを読む…)
-
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 イメージがインストールされ、(続きを読む…)
-
May. 18. 2021
前回の記事 (Docker と Kubernetes の基本 1 – Docker) では Docker の基本を確認しました。今回は Kubernetes の基本を確認したいと思います。Kubernetes で実行するアプリケーションは前回 Docker で実行したものと同じです。この記事でも手順を説明しますが、詳細は Docker と Kubernetes の基本 1 – Docker を確認してください。 アプリケーションの構成 マイクロサービスのアプリケーションを想定して、メインとなるアプリケーションが 別のREST API を呼び出すような構成にします。ただなるべく簡単にしたいため、メインページと API は同じファイルに書いています。実行する時はメインページ用と API 用のコンテナを別々に起動し、メインページ用コンテナが API 用コンテナを呼び出して結果を表示する、という構成にします。 コードは以下の通りです。コンテナによって変わる部分は環境変数に定義しています。詳細はコメントおよび前回の記事をご確認ください。 app.py また後で必要になるの(続きを読む…)
-
May. 17. 2021
普段あまり Kubernetes をさわる機会はないのですが、たまにさわることがあるといつも忘れていて都度調べなおすことになるので、基本的な部分だけでもメモしておこうと思います。Kubernetes は Docker を使っているので、まずは基礎の基礎からということで今回は Docker の基本的な使い方です。 Kubernetes の基本は2回目の記事をご覧ください。Docker と Kubernetes の基本 2 – Kubernetes Docker の入門記事を見るとよく WordPress イメージを使ったようなものが出てきますが、それでは自分でアプリを開発する時の参考にならないので、今回は自前で作った簡単な Web アプリを Docker でホストする方法を説明します。 今回使った OS は Ubuntu 20.04 です。 Docker インストール shell Dockerfile の基本 Docker ではコンテナイメージをビルドするのに必要な情報を Dockerfile というファイルに記述します。Dockerfile には独自に定義されたコマンドを記述していくの(続きを読む…)
-
Jan. 12. 2021
Angularを勉強した時の個人用メモです。随時追記しています。 Javascript の基本 Install Template Binding Property Binding Attribute, Class, Style Binding Event Binding Custom Event Two-way Binding Component 子コンポーネントにデータを渡す Routing Router定義 Animation 基本 画面遷移のアニメーション 現ページ、次ページのコンポーネントは “:leave” と “:enter” 疑似セレクターでクエリできる (= 指定できる)。 わかりにくい関数: group(): アニメーションを並列で実行 animateChild(): 子アニメーションを全て実行
-
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) で冗長化する構成にしています。普通はあまり無い構成だと思いますが、思いの外うまくいった感じがするので併せて記録しておきます。 環境 プラットフォーム- Ubuntu 18.04 LTS NSD (DNSコンテンツサーバー) Unbound (DNSキャッシュサーバー) keepalived (VRRP) IPアドレス プライマリとセカンダリで共有する仮想IP: 192.168.11.61 プライマリDNSサーバー: 192.168.11.62 セカンダリDNSサーバー: 192.168.11.63 使用ポート Unbound: DNS (53) NSD: 30053 keepalived: VRRP (112), AH auth (51) DNSの基礎と今回(続きを読む…)
-
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をダウンロードします。“ダウンロード” ボタンを押すと、ログインとサインアップのページが表示されます。