2024年

1月

06日

Amazon Linux2をオンプレミスで使う方法

1.オンプレミスに導入する方法

Amazon Linux 2 を仮想マシンとしたオンプレミスでの実行(公式ドキュメント)

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/amazon-linux-2-virtual-machine.html

 

2.導入後に日本語環境等を整える方法

Amazon Linuxのローカル環境を作成する

https://qiita.com/horikeso/items/cc3d628069421e11d7ab

 

3.network環境の設定(うまくいかない場合)

Amazon EC2(Linux)のネットワーク設定でハマったときに見るメモ

https://dev.classmethod.jp/articles/ec2-linux-network-conf-tips/

 

「/etc/resolv.conf」ファイル(名前解決の設定)

https://linuc.org/study/knowledge/507/

 

2023年

12月

18日

ServiceNowのメモ

参考にした記事へのリンクです。

githubでソースを管理

OAuthでServiceNowへ接続する方法

ServiceNow - Scripted REST APIの作成

日付・日時を扱う方法GlideDateTime/GlideDate/GlideTime

2022年

12月

21日

Win10 + WSL2 + docker

Win10 + wsl2 + dodkerの環境の作り方のリンクです。

 

WSL2 Ubuntu に Docker 導入(Docker Desktop for Windows に変えて)

 

起動方法

$ sudo service docker start

 

$ sudo systemctl start docker で起動すると、下記のエラーが起きる。

System has not been booted with systemd as init system (PID 1). Can't operate.

Failed to connect to bus: Host is down

2022年

10月

20日

Ubuntuサーバでssh設定

UbuntuサーバでSSHDを設定し、鍵認証をする方法のリンク

SSH サーバのインストール,設定(Ubuntu 上)

2022年

4月

13日

新型コロナウィルス予防接種3回目の記録と感想

40代、男性、基礎疾患無しのワクチン接種の記録と感想です。

1.過去の接種履歴

(1)1回目の接種

  • 接種時期:2021年8月初旬
  • 接種ワクチン:ファイザー
  • 接種形態:市町村の集団接種
  • 副反応:腕が痛い程度で副反応はありませんでした。

 

(2)2回目接種

  • 接種時期:2021年8月中旬
  • 接種ワクチン:ファイザー
  • 接種形態:市区町村の集団接種
  • 副反応:接種後から軽い腕の痛み。12時間後には全身のだるさ。18時間後には37.5度程度の発熱。
        その後、落ち着いて、接種から24時間後にはほぼ体調がもとに戻った。

2. 3回目の接種

(1)接種情報

  • 接種時期:2022年04月08日 17時頃
  • 接種ワクチン:モデルナ
  • 接種形態:県の集団接種

(2)副反応のまとめ

  • 2022/04/09 接種直後

接種後、腕の痛みはあったが発熱等の症状は現れず。

徐々に体が怠くなる。

 

  • 2022/04/10

00:30 ひどい怠さがあったが、特に何もせず就寝。

07:30頃 起床。頭痛があった為、解熱、鎮痛剤を飲む。

08:00 37.0度の熱と軽い頭痛。その他、特に大きな症状無し。

12:00 38.3度の発熱と頭痛、酷い寒気。

13:00頃 症状が続いたため、再度、薬を飲む。

14:00 38.6度の発熱と頭痛、ひどい寒気。

    昼寝をするも体調良くならず。

    暖かくして寝たけど、まったく汗をかかず。

19:00 症状変わらず。再度、薬を飲む。

22:00 38.3度 ちょっと収まる。寒気は変わらず。

 

  • 2022/04/11

 01:00 熱は変わらず。頭痛はほぼ収まる。体のだるさは残る。

 07:30 36.8度まで下がる。体の違和感はほぼなくなったが、腕の痛みだけが残る。

(3)感想

2回目まではファイザーで、3回目はモデルナで、過去の経験は関係ないのですが、

大きな副反応は出ないで済むと思っていました。

2回目の時は、接種の次の日の朝が怠さのピークだった為、

今回も4/10の朝がピークでその後、だんだん収まると思っていました。

しかし、そこからが本番で、熱がどんどん上がり、38度代が長く続きました。

熱がなかなか下がらず、辛かったです。

最終的には、驚くくらいにすっと熱が下がり、体の怠さもなくなっていました。

 

3回目の副反応の経験からすると、4回目以降は受けなくて済むなら受けたくないと思いました。

 

2022年

3月

19日

xv6-riscv をWSLにインストールしVisual Studio Codeでデバッグ

1.はじめに

xv6-riscvをWindows10で稼働するWSLで動作させ、Vscode上でデバッグする方法です。

 

2.環境

ホストOS:Windows 10 Pro

ゲストOS:Ubuntu 20.04.4 LTS (Focal Fossa)

IDE:Visual Studio Code 1.40.1

プラグイン:Remote - WSL, C/C++, Japanese Language Pack for VS Code

 

3.ツールのインストール

$ sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

 

4.ソースの取得とビルド

ディレクトリを作成し、移動する。

$ mkdir xv6

$ cd xv6

 

githubからソースコードを取得する。

$ git clone https://github.com/mit-pdos/xv6-riscv

 

ソースをビルドしてqemuで実行する。

$ cd xv6-riscv

$ make qemu

成功すると下記の通りに表示され、コマンドが入力可能となる。

==================================================

xv6 kernel is booting

 

hart 2 starting

hart 1 starting

init: starting sh

$

==================================================

ctrl+a x で終了

 

5.Vscode でデバッグ

(1) task.jsonを作成

下記の通りに.vscode/task.jsonを作成する。

==================================================

{

  "version": "2.0.0",

  "type":"shell",

  "echoCommand": true,

  "tasks": [

      {

          "label": "xv6 build",

          "command": "make",

          "problemMatcher": [

              "$gcc"

          ],

          "group": {

              "kind": "build",

              "isDefault": true

          }

      },

      {

          "label": "xv6 clean",

          "command": "make clean",

          "problemMatcher": [

              "$gcc"

          ],

          "group": {

              "kind": "build",

              "isDefault": true

          }

      },

      {

          "label": "xv6 run qemu",

          "command": "make qemu-gdb",

          "problemMatcher": [

              "$tsc"

          ],

      }

  ]

}

==================================================

 

(2) launch.jsonを作成

下記の通りに、.vscode/launch.json

==================================================

{

  "version": "0.2.0",

  "configurations": [

      {

          "name": "debug xv6",

          "type": "cppdbg",

          "request": "launch",

          "program": "/home/taka/develop/xv6/xv6-riscv/kernel/kernel",

          "miDebuggerServerAddress": "127.0.0.1:26000",

          "args": [],

          "stopAtEntry": false,

          "cwd": "${workspaceFolder}",

          "miDebuggerPath": "/usr/bin/gdb-multiarch",

          "environment": [],

          "externalConsole": false,

          "MIMode": "gdb",

          "setupCommands": [

              {

                "description": "pretty printing",

                "text": "-enable-pretty-printing",

                "ignoreFailures": true

              }

          ],

          "logging": {

              "engineLogging": true,

              "programOutput": true,

          }

      }

  ]

}

==================================================

 

(3) .gdbinit.tmpl-riscv の編集

.gdbinit.tmpl-riscv を開き、3行目”target remot …”をコメントアウトする。

==================================================

set confirm off

set architecture riscv:rv64

# target remote 127.0.0.1:1234

symbol-file kernel/kernel

set disassemble-next-line auto

set riscv use-compressed-breakpoints yes

==================================================

 

(4) デバッグ実行

タスクを実行

メニューの「ターミナル」-> 「タスク実行」-> 「xv6 run qemu」を選択する。

下記の表示となり、デバッガからの接続待ちとなる。

==================================================

> Executing task: make qemu-gdb <

 

*** Now run 'gdb' in another window.

qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp 3 -nographic -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0 -S -gdb tcp::26000

==================================================

 

デバッガ接続

左メニュー「実行とデバッグ」を押下する。

表示された画面で、「debug xv6」を選択し、「デバッグの開始」(再生ボタン)を押下する。

接続が成功すると、下記の表示となり、デバッガによる操作が可能となる。

==================================================

xv6 kernel is booting

 

hart 2 starting

hart 1 starting

init: starting sh

==================================================

 

6.参考情報

(1) MITの講義資料(2021)

(2) テキストの和訳版

電気通信大学 菅原研究室 の下記のサイトで公開されています。

 

2020年

3月

19日

Raspberry Pi 4 の性能測定(UnixBench)

1.環境

測定対象の環境は下記の通りです。

 

 対象:Raspberry Pi 4 Model B

 OS:Linux raspberrypi 4.19.97-v7l+

 UnixBench:Version 5.1.3

 

2.測定結果

==========================================================

   BYTE UNIX Benchmarks (Version 5.1.3)

 

   System: raspberrypi: GNU/Linux

   OS: GNU/Linux -- 4.19.97-v7l+ -- #1294 SMP Thu Jan 30 13:21:14 GMT 2020

   Machine: armv7l (unknown)

   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")

   CPU 0: ARMv7 Processor rev 3 (v7l) (0.0 bogomips)

 

   CPU 1: ARMv7 Processor rev 3 (v7l) (0.0 bogomips)

 

   CPU 2: ARMv7 Processor rev 3 (v7l) (0.0 bogomips)

 

   CPU 3: ARMv7 Processor rev 3 (v7l) (0.0 bogomips)

 

   23:08:32 up  1:42,  2 users,  load average: 0.18, 0.05, 0.01; runlevel 2020-03-18

 

------------------------------------------------------------------------

Benchmark Run: 水  3月 18 2020 23:08:32 - 23:36:29

4 CPUs in system; running 1 parallel copy of tests

 

Dhrystone 2 using register variables       10136787.6 lps   (10.0 s, 7 samples)

Double-Precision Whetstone                     2386.2 MWIPS (9.6 s, 7 samples)

Execl Throughput                                880.4 lps   (29.9 s, 2 samples)

File Copy 1024 bufsize 2000 maxblocks        112943.5 KBps  (30.0 s, 2 samples)

File Copy 256 bufsize 500 maxblocks           31314.0 KBps  (30.0 s, 2 samples)

File Copy 4096 bufsize 8000 maxblocks        310654.0 KBps  (30.0 s, 2 samples)

Pipe Throughput                              158570.6 lps   (10.0 s, 7 samples)

Pipe-based Context Switching                  43743.9 lps   (10.0 s, 7 samples)

Process Creation                               1865.7 lps   (30.0 s, 2 samples)

Shell Scripts (1 concurrent)                   2517.7 lpm   (60.0 s, 2 samples)

Shell Scripts (8 concurrent)                    725.2 lpm   (60.1 s, 2 samples)

System Call Overhead                         491874.5 lps   (10.0 s, 7 samples)

 

System Benchmarks Index Values               BASELINE       RESULT    INDEX

Dhrystone 2 using register variables         116700.0   10136787.6    868.6

Double-Precision Whetstone                       55.0       2386.2    433.9

Execl Throughput                                 43.0        880.4    204.7

File Copy 1024 bufsize 2000 maxblocks          3960.0     112943.5    285.2

File Copy 256 bufsize 500 maxblocks            1655.0      31314.0    189.2

File Copy 4096 bufsize 8000 maxblocks          5800.0     310654.0    535.6

Pipe Throughput                               12440.0     158570.6    127.5

Pipe-based Context Switching                   4000.0      43743.9    109.4

Process Creation                                126.0       1865.7    148.1

Shell Scripts (1 concurrent)                     42.4       2517.7    593.8

Shell Scripts (8 concurrent)                      6.0        725.2   1208.7

System Call Overhead                          15000.0     491874.5    327.9

                                                                   ========

System Benchmarks Index Score                                         318.3

 

------------------------------------------------------------------------

Benchmark Run: 水  3月 18 2020 23:36:29 - 00:04:27

4 CPUs in system; running 4 parallel copies of tests

 

Dhrystone 2 using register variables       40400434.4 lps   (10.0 s, 7 samples)

Double-Precision Whetstone                     9528.3 MWIPS (9.6 s, 7 samples)

Execl Throughput                               2696.1 lps   (29.9 s, 2 samples)

File Copy 1024 bufsize 2000 maxblocks        218686.8 KBps  (30.0 s, 2 samples)

File Copy 256 bufsize 500 maxblocks           60307.8 KBps  (30.0 s, 2 samples)

File Copy 4096 bufsize 8000 maxblocks        618303.0 KBps  (30.0 s, 2 samples)

Pipe Throughput                              598961.4 lps   (10.0 s, 7 samples)

Pipe-based Context Switching                 195700.7 lps   (10.0 s, 7 samples)

Process Creation                               4720.9 lps   (30.0 s, 2 samples)

Shell Scripts (1 concurrent)                   5775.6 lpm   (60.0 s, 2 samples)

Shell Scripts (8 concurrent)                    791.8 lpm   (60.1 s, 2 samples)

System Call Overhead                        1862650.3 lps   (10.0 s, 7 samples)

 

System Benchmarks Index Values               BASELINE       RESULT    INDEX

Dhrystone 2 using register variables         116700.0   40400434.4   3461.9

Double-Precision Whetstone                       55.0       9528.3   1732.4

Execl Throughput                                 43.0       2696.1    627.0

File Copy 1024 bufsize 2000 maxblocks          3960.0     218686.8    552.2

File Copy 256 bufsize 500 maxblocks            1655.0      60307.8    364.4

File Copy 4096 bufsize 8000 maxblocks          5800.0     618303.0   1066.0

Pipe Throughput                               12440.0     598961.4    481.5

Pipe-based Context Switching                   4000.0     195700.7    489.3

Process Creation                                126.0       4720.9    374.7

Shell Scripts (1 concurrent)                     42.4       5775.6   1362.2

Shell Scripts (8 concurrent)                      6.0        791.8   1319.7

System Call Overhead                          15000.0    1862650.3   1241.8

                                                                   ========

System Benchmarks Index Score                                         857.9

 

Raspberry Pi 2 で測定したときは、419.8だったので、

倍以上の性能になっているみたいです。

2019年

12月

05日

Linux Kernel をBuildしてqemuで動かす

1.はじめに

コンパクトなKernel を Build して qemu で動かすことを目標にします。

下記のサイトに記載の内容を実施してみた結果です。

minimalなlinuxを作りたい、と思ったんだ

 

利用した環境は以下の通りです。

・ホストOS:Windows 10 Pro

・Linux 環境:WSL(Ubuntu 18.04.3 LTS)

・Build する Linux の Kernelのバージョン:linux-5.3.12

・QEMU emulator version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.20)

 

2.環境の準備

Kernel のBuildに必要な環境は整っている前提です。

 

・qemuをインストール

 $ sudo apt-get install qemu

 

・その他

 $ sudo apt-get install libncursesw5-dev

 $ sudo apt-get install ncurses-doc

 $ sudo apt-get install bison

 $ sudo apt-get install dctrl-tools

 $ sudo apt-get install flex

 $ sudo apt install libelf-dev

 $ sudo apt install libssl-dev

 $ sudo apt install libcurl4-openssl-dev

 $ sudo apt install libssl-dev

 $ sudo apt install openssl

 

その他、必要な環境は下記を参考にする。

https://mongonta.com/f258-howto-build-linux-kernel/

 

3.Kernelのビルドと実行

(1)ソースの取得

ソースを配置するディレクトリを作成し、ソースをダウンロードする。

$ mkdir linux53

$ cd linux53

$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.3.12.tar.xz

$ xzcat linux-5.3.12.tar.xz | tar xfv -

 

(2)Kernelをビルドとqemuでの実行

下記のサイトを参考にしました。

Linux を(わりと)シンプルな構成でビルドして Qemu で起動する

 

 

記事では4系のカーネルですが、今回は5系で実施しました。

Kernelのコンフィグは、ほぼ、リンクの記事の通りです。

正しく動作すると下記のようになりました。

------------------------------------------------------------------------------

省略

random: get_random_bytes called from 0xffffffff8102df5f with crng_init=0

sched_clock: Marking stable (404304716, 86088419)->(493789505, -3396370)

input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0

Freeing unused kernel image memory: 480K

Write protecting the kernel read-only data: 8192k

Freeing unused kernel image memory: 2036K

Freeing unused kernel image memory: 1828K

Run /init as init process

-----------HELLO------------

Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000

Kernel Offset: disabled

---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000 ]---

------------------------------------------------------------------------------

 

(3)周辺のツールを含めた環境を作る

以下の記事の「BusyBoxでユーザーランドを作る」から先を進める。

ビルドしたLinuxカーネルをブートできる最低限の環境を用意する(with Busybox & qemu)

 

BusyBoxのビルドは下記のサイトを参考にしました。

busyboxをスタティックバイナリ化する

 

qemuで実行する際に、下記のコマンドとする。

$ qemu-system-x86_64 -kernel ./bzImage -initrd ./rootfs.img -append "console=ttyS0 rdinit=/bin/sh" -nographic

 

起動すると下記のようになりました。

------------------------------------------------------------------------------

random: get_random_bytes called from 0xffffffff8102df5f with crng_init=0

sched_clock: Marking stable (416703671, 81781460)->(499244844, -759713)

input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0

Freeing unused kernel image memory: 480K

Write protecting the kernel read-only data: 8192k

Freeing unused kernel image memory: 2036K

Freeing unused kernel image memory: 1828K

Run /bin/sh as init process

/bin/sh: can't access tty; job control turned off

/ # input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input2

clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x33e494b9d3a, max_idle_ns: 440795255743 ns

clocksource: Switched to clocksource tsc

 

/ #

/ # ls

bin      dev      linuxrc  root     sbin     usrrandom: fast init done

------------------------------------------------------------------------------

 

2019年

11月

24日

xv6をWSLにインストールしVisual Studio Codeでデバッグ

1.はじめに

VirtualBox上で動かすのは手間がかかるので、WSL上でxv6を動かします。

IDEを使ってソースの参照やデバッグができると便利なので、

Visual Studio Codeでソースを参照、ビルド、デバッグをできるようにします。

 

2.環境

 ホストOS:Windows 10 Pro

 ゲストOS:Ubuntu 18.04.3 LTS (Bionic Beaver)

 IDE:Visual Studio Code 1.40.1

 プラグイン:Remote - WSL, C/C++, Japanese Language Pack for VS Code

 ソースを置くディレクトリ:D:\develop\vscode\xv6

 

3.インストール

(1)環境準備

$ sudo apt-get update

$ sudo apt-get install build-essential

$ sudo apt-get install gcc-multilib

$ sudo apt-get install qemu

$ sudo apt-get install git

 

(2)ソースをダウンロード&コンパイル

$ cd /mnt/d/develop/vscode/xv6/

 

$ git clone git://github.com/mit-pdos/xv6-public.git

$ cd xv6-public/

$ make

$ make qemu-nox

⇒起動することを確認する。

 

4.Visual Studio Codeで参照、ビルド、デバッグ

4.1.参照

カレントディレクトリをプロジェクトとして開いて起動する。

$ code .

⇒Visual Studio Codeが起動する。

 

4.2.ビルド環境の準備

(1)tasks.jsonを準備

.vscode\tasks.jsonファイルを作り、下記の内容を記述する。

----------------------------------------------------------------

{

    "version": "2.0.0",

    "type":"shell",

    "echoCommand": true,

    "tasks": [

        {

            "label": "xv6 build",

            "command": "make",

            "problemMatcher": [

                "$gcc"

            ],

            "group": {

                "kind": "build",

                "isDefault": true

            }

        },

        {

            "label": "xv6 clean",

            "command": "make clean",

            "problemMatcher": [

                "$gcc"

            ],

            "group": {

                "kind": "build",

                "isDefault": true

            }

        },

 

        {

            "label": "xv6 run qemu-nox-gdb",

            "command": "make qemu-nox-gdb",

            "problemMatcher": [

                "$tsc"

            ],

        }

    ]

}

----------------------------------------------------------------

 

(2)ビルド

メニューで、「ターミナル」→「ビルドタスクの実行...」を選択する。

 

「実行するビルドタスクを選択」で、「xv6 clean」を選択する。

 

「実行するビルドタスクを選択」で、「xv6 build」を選択する。

→ビルドが正常に完了することを確認する。

 

4.3.デバッグ環境の準備

(1)launch.jsonを準備

.vscode\launch.jsonファイルを作り、下記の内容を記述する。

----------------------------------------------------------------

{

    "version": "0.2.0",

    "configurations": [

        {

            "name": "xv6 debug",

            "type": "cppdbg",

            "request": "launch",

            "program": "/mnt/d/develop/vscode/xv6/xv6-public/kernel",

            "miDebuggerServerAddress": "localhost:26000",

            "args": [],

            "stopAtEntry": false,

            "cwd": "${workspaceFolder}",

            "environment": [],

            "externalConsole": true,

            "MIMode": "gdb",

            "setupCommands": [

                {

                    "description": "Enable pretty-printing for gdb",

                    "text": "dir .",

                    "ignoreFailures": true

                }

            ]

        }

    ]

}

----------------------------------------------------------------

 

(2).gdbinitファイルの準備

元のファイルをバックアップする。

$ cp .gdbinit.tmpl -p .gdbinit.tmpl_org

 

テンプレートファイルを開き、リモートデバッグ部分を消す。

$ vi .gdbinit.tmpl

23行目、24行目の下記の記述を消して保存する。

----------------------------------------------------------------

echo + target remote localhost:1234\n

target remote localhost:1234

----------------------------------------------------------------

 

(3)デバッグ

①xv6を起動

メニューで、「ターミナル」→「タスクの実行」を選択する。

「実行するタスクを選択」で、「xv6 run qemu-nox-gdb」を選択する。

→下記の表示となり、デバッガの接続待ちとなる。

---------------------------------------------------------------

*** Now run 'gdb'.

qemu-system-i386 -nographic -drive file=fs.img,index=1,media=disk,format=raw -drive file=xv6.img,index=0,media=disk,format=raw -smp 2 -m 512  -S -gdb tcp::26000

---------------------------------------------------------------

 

②デバッガで接続

デバッグで「xv6 debug」を選択し、デバッガを実行する。

→接続が完了すると、ターミナルにxv6のプロンプトが表示される。

 

 

 

exec.c の 22行目にブレークポイントを指定して実行した画面です。

5.補足

プロセスへのアタッチが制限されている場合は下記のコマンドで一時的に解除する。

 

$ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

 

2019年

6月

18日

Visual Studio Code Remote Development using SSH

Remote Developmentを試したときのメモです。

1.環境

<ローカル環境>

 OS:Windows 10 Pro

 VSCode:1.35.1

 Remote Development:0.15.0

 

<リモート環境>

 OS:Fedora Core 30

 ※ローカル環境のVirtual Boxの仮想マシン

 

2.環境準備

Remote Development using SSH」の記事に記載の手順で、

ほぼ、実現できます。

 

鍵認証をする際に、ファイルのセキュリティ設定を変更しないと、

下記のエラーが発生し、接続に失敗する。

---------------------------------------

permission denied (publickey gssapi-keyex gssapi-with-mic). 

---------------------------------------

ファイルの権限変更は下記のサイトが参考になります。

https://qiita.com/RyutaKojima/items/81c47ad085ccb7c69a90

 

権限は、一回全てを削除してから追加しないと、

エラーが解消されないことがあるみたいでした。

 

 

2019年

5月

22日

Java PJ をgithubからダウンロードしてeclipseにインポートする方法

Java プロジェクトをgithubからダウンロードしてeclipseにインポートする方法です。

 

1.eclipseを起動する。

2.「ファイル」メニューの「インポート」を選択

3.「Git」の「Gitからプロジェクト」を選択 

4.「クローンURL」を選択

5.ソースGitリポジトリ―画面でURLやユーザ、パスワード等必要な情報を入れ、「完了」ボタンを押す。

6.ブランチを選ぶ。

7.クローンするディレクトリ等を選ぶ。

8.「新規プロジェクト・ウィザードを使用してインポート(P)」を選択する。

9.ウィザード画面で、「Javaプロジェクト」を選び、「次へ」を押す。

10.プロジェクト名を入力する。

 「デフォルト・ロケーションを使用(D)」のチェックを外す。

 ロケーションに、ローカルリポジトリのパスを入れる。

 「完了」を押下する。

 

以上で、インポートが完了します。

下記サイトが、図入りで分かり易く解説されています。

http://turanegaku.hateblo.jp/entry/2016/01/05/203535

 

STSが入った環境で、Spring bootのプロジェクトをインポートした場合は、

プロジェクトを右クリックし、「Spring ツール」の

「Spring プロジェクト・ネーチャーの追加」を実行すると、

STSのツール類が使える状態になります。

 

2019年

5月

15日

高校科目の復習

高校の科目を復習できるサイトです。

・高校生向け受験応援メディア「受験のミカタ」

 https://juken-mikata.net/

 

2019年

5月

07日

OpenAMをビルド

OpenAMは、シングルサインオンを実現するソフトウェアです。

自力でビルドすれば使えるみたいです。

ビルドする方法は下記のサイトが参考になりそうです。

 

・OpenAMをビルドする 

https://t246osslab.wordpress.com/2016/07/09/openam%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B/

 

・OpenAM Consortiumのgithub

https://github.com/openam-jp/

 

・OpenAM 本家?

https://github.com/OpenRock/OpenAM

 

2019年

5月

04日

参考になるサイト:UXデザイン

・UI/UXデザイナーなら一度は目を通しておきたい「デザイン原則」まとめ【随時更新】

 https://uxxinspiration.com/2014/02/design-principles/

 

2019年

5月

03日

気になるサイト(2019/5/3)

気になるサイトのメモです。

 

・DevOps時代のテストエンジニア採用

 http://kokotatata.hatenablog.com/entry/2019/05/01/191056

 

・仕事を任せられるエンジニアになるために意識してほしいこと

 https://tech.tabechoku.com/entry/2019/05/02/182457?amp=1

 

2019年

5月

02日

KernelShark

Ftrace機能を実行するコマンドツール"trace-cmd"のフロントエンドツール。

 

http://kernelshark.org/

 

参考

https://qiita.com/hana_shin/items/359240688a53c849593b

 

2019年

5月

02日

Spring Boot2 で画面共通化

Spring Boot2 で画面を共通化する方法のメモです。

下記サイトの方法で、Spring Boot 1.4では動作しました。

 

https://www.saka-en.com/java/spring-boot-thymeleaf-layout/

 

Spring Boot2で同じことを実施したところ、

index.htmlの"html"タグ内に記載した

"layout:decorate="~{layout/layout}""が

解釈されず、正しく動作しませんでした。

 

pom.xmlに下記の内容を追記すると正しく動きました。

--------------------------------------------------------

<dependency>

<groupId>nz.net.ultraq.thymeleaf</groupId>

<artifactId>thymeleaf-layout-dialect</artifactId>

</dependency>

--------------------------------------------------------

"spring-boot-starter-thymeleaf"では、

"thymeleaf-layout-dialect"が含まれないようです。

 

試した環境のバージョンは下記の通りです。

・Spring Boot 2.1.4.RELEASE

・thymeleaf-3.0.11.RELEASE

・thymeleaf-layout-dialect-2.3.0

 

以下、参考になるサイトです。

・依存関係の確認方法

 https://ts0818.hatenablog.com/entry/2017/09/14/223604

 ※依存関係の確認方法を参考にしました。

・Thymeleaf: Custom Layout Dialect

 https://www.baeldung.com/thymeleaf-spring-layouts

 

2018年

10月

12日

グラレコ(グラフィックレコーディング)

先日、とある会でグラレコなるものを拝見しました。

グラレコとは、グラフィックレコーディングの略で、

会議でのプレゼンや議論の流れを視覚化し、

参加者へ共有する手法とのことでした。

 

視覚ベースでまとめられていて、興味深かったです。

 

参考

 グラフィックレコーディングの練習法と活用法

 http://www.webd-labo.com/?p=2091

 

2018年

10月

01日

Androidアプリ開発の資料

Androidアプリの開発を勉強しようと思います。

Webの情報でも、どうにかなりそうなのですが、

書籍で基礎を抑え、Webの情報で補おうと思います。

 

以下、参考にした書籍とWebのリンクです。

 

1.書籍

Androidアプリの基礎や、環境の作り方から始まり、

Web APIを使った情報取得や簡単なゲームに始まり、

センサーを使ったゲームまでステップを踏んで説明されています。

書籍を辿っていくと、サンプルアプリを再現できて、

分かり易いように思います。

 

2.参考になりそうなサイト

  • nyan のアプリ開発 Androidアプリ、作り方、ベーシックサンプル集

https://akira-watson.com/

 

2018年

7月

16日

Spring bootでマルチデータソースの実装方法(補足)

Spring boot でマルチデータソースに対応する方法です。

下記のサイトの通りに実装すると、ほぼ、実現できました。

 

Spring bootでマルチデータソース対応の実装方法(MybatisとSpring Data JPA)

 

下記の点だけが、掲載の通りでは設定値が正しく読み込めず、

connection URL null となり正しく動作しないケースがあるようでした。

 

dataSource()メソッド内で、設定値を個別に読み込む

ようにすることにより、マルチデータソースを実現できました。

2018年

5月

23日

vimのcolorschemeの設定

ubuntu-17.10 の vim でcolorschmeを設定する方法です。

 

デフォルトでインストールされているVimでcolorschemeを設定すると、

下記のエラーが発生します。

-----------------------------------------------------------------------------

Error detected while processing /home/****/.vimrc:

line    1:

E319: Sorry, the command is not available in this version: syntax on

Press ENTER or type command to continue

-----------------------------------------------------------------------------

 

下記コマンドで、デフォルトで入っているvimを削除し、

完全版をインストールすると、colorschemeを変更できるようになります。

 

$ sudo apt-get --purge remove vim-common vim-tiny

$ sudo apt-get install vim

 

以下molokai を設定する場合の例です。

$ mkdir -p ~/.vim/colors

$ cd ~/.vim/colors

$ wget https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim

$ ~/.vimrc

-----------------------------------------------------------------------------

colorscheme molokai

syntax on

-----------------------------------------------------------------------------

 

2018年

2月

01日

NIC冗長化(Linux bonding設定)

1.はじめに

Linuxで、NIC冗長化(bondig)の設定方法です。

環境は、"CentOS release 6.9 (Final)"です。

eth1, eth3を使い、冗長化します。

 

2.設定

2.1.カーネルモジュールの追加

# vi /etc/modprobe.d/bonding.conf

--------------------------------------------------------------------

alias bond0 bonding

options bond0 mode=1 primary=eth1 miimon=500

--------------------------------------------------------------------

※modeは、"参考"のリンクを参照。

 

・カーネルモジュールをロード

# modprobe bonding

 

・ロードされたことを確認する

# lsmod | grep bonding

--------------------------------------------------------------------

bonding               132885  0 

--------------------------------------------------------------------

 

2.2.ifcfgの設定

(1)/etc/sysconfig/network-scripts/ifcfg-bond0

# vi /etc/sysconfig/network-scripts/ifcfg-bond0

--------------------------------------------------------------------

DEVICE=bond0

BOOTPROTO=none

ONBOOT=yes

NETWORK=192.168.0.0

NETMASK=255.255.255.0

IPADDR=192.168.0.11

--------------------------------------------------------------------

 

(2)/etc/sysconfig/network-scripts/ifcfg-eth1, ifcfg-eth3

# vi /etc/sysconfig/network-scripts/ifcfg-eth3

--------------------------------------------------------------------

DEVICE=eth3

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0

SLAVE=yes

--------------------------------------------------------------------

 

2.3.networkを再起動

# service network restart

 

ifconfigで確認すると下記の通りになります。

 

# ifconfig

bond0     Link encap:Ethernet  HWaddr 08:00:27:CD:E0:6C  

          inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fecd:e06c/64 Scope:Link

          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

          RX packets:111646 errors:0 dropped:0 overruns:0 frame:0

          TX packets:454440 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:12262305 (11.6 MiB)  TX bytes:594355923 (566.8 MiB)

 

…省略…

 

eth1      Link encap:Ethernet  HWaddr 08:00:27:CD:E0:6C  

          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

          RX packets:111556 errors:0 dropped:0 overruns:0 frame:0

          TX packets:454439 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:12256375 (11.6 MiB)  TX bytes:594355833 (566.8 MiB)

 

…省略…

 

eth3      Link encap:Ethernet  HWaddr 08:00:27:CD:E0:6C  

          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

          RX packets:90 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:5930 (5.7 KiB)  TX bytes:90 (90.0 b)

 

3.参考

・LinuxでのNIC冗長化(bonding)を少し深く考えてみる

 http://nosa.cocolog-nifty.com/sanonosa/2013/12/linuxnicbonding.html

 

2018年

1月

27日

DockerをCentOS7にインストール

1.前提

Windows10にVirtualBoxを入れ、その上で動くCentOSのVM環境にDockerをインストールします。

各バージョンは下記の通りです。

  

Windows 10 Pro

VritualBox 5.2.6

CentOS Linux release 7.4.1708 (Core) 

docker-ce-17.12.0.ce-1.el7.centos

 

2.Dockerインストール

2.1.準備(sudo設定)

インストールに使うユーザを"wheel"グループに追加する。

 

# gpasswd -a {USER} wheel

 

2.2.dockerインストール

(1)旧バージョンをアンインストール

$ sudo yum remove docker docker-common docker-selinux docker-engine

 

(2)必要なパッケージをインストール

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 

(3)リポジトリを追加

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

(4)インデックス更新

$ sudo yum makecache fast

 

(5)インストール可能なバージョンのリストを取得

$ yum list docker-ce --showduplicates | sort -r

----------------------------------------------------------------------

利用可能なパッケージ

読み込んだプラグイン:fastestmirror, langpacks

インストール済みパッケージ

docker-ce.x86_64            17.12.0.ce-1.el7.centos            docker-ce-stable 

docker-ce.x86_64            17.12.0.ce-1.el7.centos            @docker-ce-stable

docker-ce.x86_64            17.09.1.ce-1.el7.centos            docker-ce-stable 

docker-ce.x86_64            17.09.0.ce-1.el7.centos            docker-ce-stable 

docker-ce.x86_64            17.06.2.ce-1.el7.centos            docker-ce-stable 

docker-ce.x86_64            17.06.1.ce-1.el7.centos            docker-ce-stable 

docker-ce.x86_64            17.06.0.ce-1.el7.centos            docker-ce-stable 

docker-ce.x86_64            17.03.2.ce-1.el7.centos            docker-ce-stable 

docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable 

docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable 

Loading mirror speeds from cached hostfile

 * updates: ftp.iij.ad.jp

 * extras: mirror.fairway.ne.jp

 * base: mirror.fairway.ne.jp

----------------------------------------------------------------------

 

(6)バージョンを指定してインストール

$ sudo yum install docker-ce-17.12.0.ce-1.el7.centos

 

(7)docker起動

$ sudo systemctl start docker

 

(8)動作確認

$ sudo docker run hello-world

----------------------------------------------------------------------

Hello from Docker!

This message shows that your installation appears to be working correctly.

…省略…

----------------------------------------------------------------------

 

(9)sudoの設定

$ sudo gpasswd -a {USER} docker

 

(10)確認

  • 仮想マシンを再起動

$ sudo reboot

 

  • "hello-world"イメージを利用してdockerが正しくインストールされたことを確認

$ sudo systemctl start docker

$ docker run hello-world

 

3.参考

・「Get Docker CE for CentOS」

・「さわって理解するDocker入門」

・「Dockerイメージの理解とコンテナのライフサイクル」

2018年

1月

22日

pacemakerの操作メモ

pacemakerのよく使いそうな操作のメモです。

<起動と停止>

・起動

# service corosync start

# service pacemaker start

 

・停止

# service pacemaker stop

# service corosync stop

 

<クラスタの状態確認>

# crm_mon -DArf

 -D ヘッダを隠す

 

 -A ノードの属性を表示 

 -r 停止中のリソースを表示

 -f 障害回数

 

 

<リソース一覧の表示>

# crm_resource -L

 

<リソースの定義の確認>

・RAのパラメータを調べる

 

# crm ra info ocf:heartbeat:VIPcheck

 

<フェイルオーバー>

# crm node standby {node}

# crm node online {node}

 

<故障履歴関係の操作>

・故障履歴の削除

# crm resource cleanup {resource} {node}

 

・故障カウントのクリア

# crm resource failcount {resource} delete {node}

 

<設定削除>

①全ノードをオフラインに変更

# crm node standby ***

※全てのノードを上記コマンドでオフラインにする。

 

②故障履歴[Faied actions]をクリア

# crm resource cleanup {resource} {node}

 

③設定の削除

# crm configure erase

 

<設定変更>

# crm configure edit

 

<メンテナンスモード>

メンテナンスモードを有効にすると、pacemakerを動作させたまま、リソースの

起動・停止・監視が行われないようになります。

 

・メンテナンスモードを有効にする

  # crm configure property maintenance-mode=true

 

・メンテナンスモードを解除する。

 # crm configure property maintenance-mode=false

 

メンテナンスモードを有効にすると、crm_monの画面で各リソースに"(unmanaged)"と

表示されます。

 

<各種情報>

・エージェントの保存場所

 /usr/lib/ocf/resource.d/heartbeat/

 

・動作ログ

 /var/log/cluster/corosync.log

 

・リソースエージェントの説明

 http://linux-ha.org/doc/man-pages/ap-ra-man-pages.html

 

・Pacemakerの概要

 http://linux-ha.osdn.jp/wp/manual/pacemaker_outline

 

<drbd:Split-Brainからの復旧>

・前提

下記の状態となり、Split-Brainが発生した状態となっている。

 

・Primary

 # cat /proc/drbd

 version: 8.4.9-1 (api:1/proto:86-101)

 GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:1

 0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown  r-----

    ns:0 nr:0 dw:4 dr:712 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:269764

 

・Secondary

 # cat /proc/drbd

 version: 8.4.9-1 (api:1/proto:86-101)

 GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:1

 0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown  r-----

    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:245212

 

・復旧操作

・Sedondary

# drbdadm -- --discard-my-data connect r0

 

・Primary

# drbdadm connect r0

 

復旧すると、下記の表示となる。

 

# cat /proc/drbd 

version: 8.4.9-1 (api:1/proto:86-101)

GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15

 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----

    ns:65388 nr:3644 dw:204424 dr:181481 al:63 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

 

<参考になりそうな資料>

HAクラスタでできること!Pacemakerの構築運用に役立つノウハウを紹介!

http://linux-ha.osdn.jp/wp/wp-content/uploads/OSC2016Kyoto.pdf

 

2018年

1月

21日

Pacemaker + Oracle で実現するHA構成

qiitaの記事へのリンクです。

下記環境で試したところ、記事に記載された通りに構築できました。

 

 OS:CentOS release 6.9 (Final)

   Linux version 2.6.32-696.18.7.el6.x86_64

 

 HA関係:pacemaker-1.1.12-1.el6.x86_64

      corosync-2.3.4-1.el6.x86_64

      kmod-drbd84-8.4.9-1.el6.elrepo.x86_64

      drbd84-utils-8.9.8-1.el6.elrepo.x86_64

  

 Database:Oracle 12c Standard Edition One

 

①「CentOS6.6のLinux-HAでDRBDを構築する手順めも」

②「CentOS6.6のLinux-HAでDRBD上にOracleデータベースを構築する」

③「CentOS6.6のLinux-HAでPacemakerによるOracleの起動・停止を制御する」

・追記

手順の通りに構築では、インターコネクトLANが切断された場合に、

それぞれが相手ノードを故障と判断し、両系でサービスを起動してしまいます。

最悪、Oracleのデータ領域の破損という事態が発生する可能性があります。

 

回避するために、VIPをチェックし、2重起動を防ぐ方法があります。

手順通りに構築した場合、下記のリソース追加とグループ設定をすると、

防止できます。

 

●リソース追加

--------------------------------------------------------------------

primitive vipcheck ocf:heartbeat:VIPcheck \

    params target_ip="{VIP}" count=3 wait=5 \

    op start   interval=0  timeout=60 on-fail="restart" \

    op stop    interval=0  timeout=60 on-fail="ignore" \

    op monitor interval=10 timeout=60 on-fail="restart" start-delay=0

--------------------------------------------------------------------

※5秒間の間に3回のECHO_REPLYを受け取った時に成功となる。

 

●グループの編集

--------------------------------------------------------------------

group grpora fs_ora vipcheck VIP1

ms ms-drbd_ora drbd_ora \

       meta notify=true

--------------------------------------------------------------------

※VIP1よりも先にvipcheckが実行されるようにする。

 

2018年

1月

15日

MacOS + Kaspersky は重い!!

MacOS + Kaspersky の組み合わせは相性が悪いみたいですね。

 

2016年製のMac Book air で、Kasperskyを使っていましたが、

重くて、ストレスでした。

「kav」というプロセスが、CPUのかなりの部分を占有するようです。

プロテクションの範囲の変更により、症状は軽減できるようですが、

試した感じでは限定的なように思います。

eclipse とか、andoroid studio とかとは特に相性が悪いように思います。

 

そんなわけで、ライセンス期間が残っていてもったいないのですが、

Kaspersky以外のセキュリティ対策ソフトを探そうと思います。

 

2018年

1月

15日

仮想マシンのNW設定(ホスト・ゲスト間で通信をしたい場合)

1.環境

OS:Windows 10 Pro

仮想化ソフト:VirtualBox 5.2.4

 

2.設定

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

割り当て:「ブリッジ アダプター」とする。

ゲストマシンへは、ホストマシンと同一セグメントの異なるIPを割り当てる。

 

「ブリッジ アダプター」とは、ゲストOSがホストOSと同じネットワークを

利用することになります。

ネットワーク上に異なるマシンが存在するように見えます。

 

 

3.参考

2017年

11月

29日

xv6をインストール

1.環境

Linuxマシンを用意できないので、Windows 10 Pro にVirtualBoxをインストールし、

ゲストOSにUbuntuをインストールします。

xv6は、このUbuntuの上で動作させます。

 

ホスト:Windows 10 Pro 64bit

仮想化ソフト:VirtualBox5.1.30

ゲスト:Ubuntu 17.10 64bit

 

2.xv6をインストール

(1)インストールに必要なパッケージの導入

$ sudo apt-get update

$ sudo apt-get install build-essential

$ sudo apt-get install gcc-multilib

$ sudo apt-get install qemu

$ sudo apt-get install git

 

(2)xv6のソースをダウンロード

$ mkdir xv6

$ cd xv6

$ git clone git://github.com/mit-pdos/xv6-public.git

 

(3)xv6をビルド

$ cd xv6/xv6-public

$ vi Makefile

54行目付近のQEMUのコメントアウトを外し、下記の通りに変更する。

------------------------------------------------------------

QEMU = qemu-system-x86_64

------------------------------------------------------------

$ make

 

(4)起動

下記のコマンドで、起動する。

$ make qemu

 

右の画面のように起動する。

 

(5)停止

Ctl -a x でエミュレータを停止できるみたいです。

私の環境では、終了できなかったため、Alt tab でアクティブウィンドウを切り替え、終了しました。

 

 

 

 

 

3.参考資料

・MITのOperating System Engineering

 ・コースウェアトップページ

  https://pdos.csail.mit.edu/6.828/2017/index.html (2017年度)

  https://pdos.csail.mit.edu/6.828/2016/index.html (2016年度)

 

 ・教科書とソース

  https://pdos.csail.mit.edu/6.828/2017/xv6/book-rev10.pdf

  https://pdos.csail.mit.edu/6.828/2017/xv6/xv6-rev10.pdf

 

2017年

11月

24日

VirtualBoxでホストOSとゲストOS間の共有フォルダ作成方法

1.前提

ホストOS:Windows 10 Pro

ゲストOS:CentOS release 6.9 (Final)

 

2.共有フォルダの作成

ホストOSで、下記の操作をする。

 

(1)共有フォルダを作成する。(フォルダ名は、英数字とする。)

 例)D:\develop\vmshared\centos69_64_2_shared

 

(2)VirtualBoxマネージャで設定対象の仮想マシンの設定を開く。

 

(3)共有フォルダを選択する。

 

(4)右にある"+"ボタンをクリックする。

 

(5)「フォルダーのパス」の右端の下向き三角ボタンをクリックし、(1)で作成したフォルダを

  選択する。

  「自動マウント(A)」、「永続化する(M)」にチェックを付け、「OK」ボタンを押す。

(6)「OK」ボタンをクリックして設定画面を閉じる。

 

以上の操作で、ゲストOSの"/media/sf_centos69_64_2_shared/"が、ホストOSとの

共有フォルダになります。

もし、見えない場合は、ゲストOSの再起動で、参照可能となります。

 

3.ゲストOSで共有フォルダのアクセス設定

root以外のユーザでアクセスできるようにする場合は、対象のユーザをvboxsfグループに

所属させる。

コマンドは下記の通り。

 

# gpasswd --add taka vboxsf

 

2017年

10月

29日

Raspberry Pi でsshを有効化

Raspberry Pi でsshを有効化する方法です。

 

OS:Linux raspberrypi 4.9.56-v7+

 

 

ターミナルで設定ツールを起動する。

 

$ sudo raspi-config

 

"5 Interfaceing Options"を選択する。

"P2 SSH”を選択する。

"<はい>"を選択して有効化する。

"<了解>"を選択する。

 

次の画面で"<Finish>"を選択して、

設定ツールを終了する。

 

以上で、完了です。

 

デフォルトユーザ、初期パスワードの

ままだと、簡単にログインされてしまうので、

注意が必要です。

 

 

2017年

10月

29日

Raspberry Pi 2 の性能測定(UnixBench)

1.環境

測定対象の環境は下記の通りです。

 

 対象:Raspberry Pi 2 Model B

 OS:Linux raspberrypi 4.9.56-v7+

 UnixBench:Version 5.1.3

 

2.測定結果

=====================================================================

 

   BYTE UNIX Benchmarks (Version 5.1.3)

 

   System: raspberrypi: GNU/Linux

   OS: GNU/Linux -- 4.9.56-v7+ -- #1044 SMP Fri Oct 13 15:23:13 BST 2017

   Machine: armv7l (unknown)

   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")

   CPU 0: ARMv7 Processor rev 5 (v7l) (0.0 bogomips)

 

   CPU 1: ARMv7 Processor rev 5 (v7l) (0.0 bogomips)

 

   CPU 2: ARMv7 Processor rev 5 (v7l) (0.0 bogomips)

 

   CPU 3: ARMv7 Processor rev 5 (v7l) (0.0 bogomips)

 

   00:45:40 up 10 min,  3 users,  load average: 0.63, 0.36, 0.22; runlevel Oct

 

------------------------------------------------------------------------

Benchmark Run: 日 10月 29 2017 00:45:40 - 01:14:22

4 CPUs in system; running 1 parallel copy of tests

 

Dhrystone 2 using register variables        3068630.6 lps   (10.0 s, 7 samples)

Double-Precision Whetstone                      593.9 MWIPS (10.0 s, 7 samples)

Execl Throughput                                321.1 lps   (29.5 s, 2 samples)

File Copy 1024 bufsize 2000 maxblocks         69933.3 KBps  (30.0 s, 2 samples)

File Copy 256 bufsize 500 maxblocks           20416.8 KBps  (30.0 s, 2 samples)

File Copy 4096 bufsize 8000 maxblocks        187251.0 KBps  (30.0 s, 2 samples)

Pipe Throughput                              161610.0 lps   (10.0 s, 7 samples)

Pipe-based Context Switching                  31776.8 lps   (10.0 s, 7 samples)

Process Creation                               1066.4 lps   (30.0 s, 2 samples)

Shell Scripts (1 concurrent)                   1133.9 lpm   (60.0 s, 2 samples)

Shell Scripts (8 concurrent)                    318.6 lpm   (60.1 s, 2 samples)

System Call Overhead                         390687.5 lps   (10.0 s, 7 samples)

 

System Benchmarks Index Values               BASELINE       RESULT    INDEX

Dhrystone 2 using register variables         116700.0    3068630.6    263.0

Double-Precision Whetstone                       55.0        593.9    108.0

Execl Throughput                                 43.0        321.1     74.7

File Copy 1024 bufsize 2000 maxblocks          3960.0      69933.3    176.6

File Copy 256 bufsize 500 maxblocks            1655.0      20416.8    123.4

File Copy 4096 bufsize 8000 maxblocks          5800.0     187251.0    322.8

Pipe Throughput                               12440.0     161610.0    129.9

Pipe-based Context Switching                   4000.0      31776.8     79.4

Process Creation                                126.0       1066.4     84.6

Shell Scripts (1 concurrent)                     42.4       1133.9    267.4

Shell Scripts (8 concurrent)                      6.0        318.6    531.0

System Call Overhead                          15000.0     390687.5    260.5

                                                                   ========

System Benchmarks Index Score                                         167.3

 

------------------------------------------------------------------------

Benchmark Run: 日 10月 29 2017 01:14:22 - 01:43:07

4 CPUs in system; running 4 parallel copies of tests

 

Dhrystone 2 using register variables       12247252.3 lps   (10.0 s, 7 samples)

Double-Precision Whetstone                     2368.1 MWIPS (10.0 s, 7 samples)

Execl Throughput                               1142.4 lps   (29.9 s, 2 samples)

File Copy 1024 bufsize 2000 maxblocks        106308.3 KBps  (30.0 s, 2 samples)

File Copy 256 bufsize 500 maxblocks           29414.6 KBps  (30.0 s, 2 samples)

File Copy 4096 bufsize 8000 maxblocks        282864.5 KBps  (30.0 s, 2 samples)

Pipe Throughput                              639825.7 lps   (10.0 s, 7 samples)

Pipe-based Context Switching                 113670.9 lps   (10.0 s, 7 samples)

Process Creation                               2575.1 lps   (30.0 s, 2 samples)

Shell Scripts (1 concurrent)                   2593.1 lpm   (60.1 s, 2 samples)

Shell Scripts (8 concurrent)                    342.3 lpm   (60.4 s, 2 samples)

System Call Overhead                        1505857.6 lps   (10.0 s, 7 samples)

 

System Benchmarks Index Values               BASELINE       RESULT    INDEX

Dhrystone 2 using register variables         116700.0   12247252.3   1049.5

Double-Precision Whetstone                       55.0       2368.1    430.6

Execl Throughput                                 43.0       1142.4    265.7

File Copy 1024 bufsize 2000 maxblocks          3960.0     106308.3    268.5

File Copy 256 bufsize 500 maxblocks            1655.0      29414.6    177.7

File Copy 4096 bufsize 8000 maxblocks          5800.0     282864.5    487.7

Pipe Throughput                               12440.0     639825.7    514.3

Pipe-based Context Switching                   4000.0     113670.9    284.2

Process Creation                                126.0       2575.1    204.4

Shell Scripts (1 concurrent)                     42.4       2593.1    611.6

Shell Scripts (8 concurrent)                      6.0        342.3    570.5

System Call Overhead                          15000.0    1505857.6   1003.9

                                                                   ========

System Benchmarks Index Score                                         418.9

 

2017年

10月

26日

CentOS7にリモートデスクトップサーバをインストール

1.インストールする環境

インストールするサーバの情報は下記の通りです。

 

OS:CentOS Linux release 7.4.1708 (Core)

 

2.インストール

(1)EPELリポジトリの有効化

EPELリポジトリを有効化する。

 

# yum -y install epel-release.noarch

 

補足)EPELリポジトリとは

 CentOS標準のリポジトリでは提供されていないパッケージを

 yumコマンドでインストールを可能にするリポジトリらしいです。

 

 

(2)xrdpのインストール

xrdpとtigervnc-serverをインストールする。

 

# yum -y install --enablerepo=epel xrdp tigervnc-server

 

 

(3)日本語キーボードの設定

以下の操作により日本語キーボードを導入する。

 

# cd /etc/xrdp

# wget http://www.mail-archive.com/xrdp-devel@lists.sourceforge.net/msg00263/km-e0010411.ini

 

# cp km-e0010411.ini km-0411.ini

# cp km-e0010411.ini km-e0200411.ini

# cp km-e0010411.ini km-e0210411.ini

 

 

(4)xrdpサービスの起動と自動起動の設定

以下の操作でサービスを起動し、自動起動を有効化する。

 

# systemctl start xrdp.service

# systemctl enable xrdp.service

 

 

(5)FireWallの設定

以下の操作でRDPで使うポートへの接続を許可する。

 

# firewall-cmd --zone=public --add-port=3389/tcp

# firewall-cmd --permanent --zone=public --add-port=3389/tcp

 

 

(6)「カラープロファイルを作成するには認証が必要です」への対策

「カラープロファイルを作成するには認証が必要です」と

表示された場合の対策です。

下記の設定をすると、管理者パスワードの入力を求められなくなります。

 

# vi /etc/polkit-1/rules.d/02-colord.rules

---------------------------------------------------------------------------------

polkit.addRule(function(action, subject) {

  if (action.id == "org.freedesktop.color-manager.create-device" ||

       action.id == "org.freedesktop.color-manager.create-profile" ||

       action.id == "org.freedesktop.color-manager.delete-device" ||

       action.id == "org.freedesktop.color-manager.delete-profile" ||

       action.id == "org.freedesktop.color-manager.modify-device" ||

       action.id == "org.freedesktop.color-manager.modify-profile") {

     return polkit.Result.YES;

  }

});

---------------------------------------------------------------------------------

 

(7)接続確認

クライアントからリモートデスクトップサーバへ接続する。

問題がなければ、CentOSのデスクトップ画面が表示されます。

 

 

(8)CentOS6.9で設定する場合

  • サービスの起動設定

# chkconfig --level 3 xrdp on

 

  • FireWall設定

# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3389 -s 192.168.128.0/24 -j ACCEPT

 

# iptables -L

# service iptables save

# service iptables restart

# iptables -L

 

※FireWallの設定方法参考

 https://help.sakura.ad.jp/hc/ja/articles/206208121

 

2017年

10月

25日

UnixBenchを使う(CentOS 6.9)

1.環境

OS:CentOS release 6.9 (Final)

CPU:Intel Celeron_4x0 (Conroe/Merom Class Core 2)

   ※kvm上で動くVMです。

 

2.インストールと実行

(1) インストール

下記コマンドで、ディレクトリ作成とソースを取得する。

$ mkdir unixbench

$ cd unixbench

$ git clone https://github.com/kdlucas/byte-unixbench.git .

 

(2) 実行

Runをすると、ビルドとベンチマークの実行が進みます。

$ cd UnixBench

$ ./Run

 

3.結果

実行が終了すると下記のような結果が表示される。

=============================================================

   BYTE UNIX Benchmarks (Version 5.1.3)

 

   System: localhost.localdomain: GNU/Linux

   OS: GNU/Linux -- 2.6.32-696.13.2.el6.x86_64 -- #1 SMP Thu Oct 5 21:22:16 UTC 2017

   Machine: x86_64 (x86_64)

   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")

   CPU 0: Intel Celeron_4x0 (Conroe/Merom Class Core 2) (3724.0 bogomips)

          x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET

   21:24:30 up 4 min,  1 user,  load average: 0.19, 0.35, 0.17; runlevel 2017-10-25

 

------------------------------------------------------------------------

Benchmark Run: 水 10月 25 2017 21:24:30 - 21:52:30

1 CPU in system; running 1 parallel copy of tests

 

Dhrystone 2 using register variables       18557261.0 lps   (10.0 s, 7 samples)

Double-Precision Whetstone                     2010.1 MWIPS (9.9 s, 7 samples)

Execl Throughput                                438.2 lps   (29.9 s, 2 samples)

File Copy 1024 bufsize 2000 maxblocks        379385.2 KBps  (30.0 s, 2 samples)

File Copy 256 bufsize 500 maxblocks          111610.5 KBps  (30.0 s, 2 samples)

File Copy 4096 bufsize 8000 maxblocks        800073.8 KBps  (30.0 s, 2 samples)

Pipe Throughput                              774938.5 lps   (10.0 s, 7 samples)

Pipe-based Context Switching                  62575.2 lps   (10.0 s, 7 samples)

Process Creation                               1099.1 lps   (30.0 s, 2 samples)

Shell Scripts (1 concurrent)                    783.3 lpm   (60.1 s, 2 samples)

Shell Scripts (8 concurrent)                     99.9 lpm   (60.4 s, 2 samples)

System Call Overhead                         913825.1 lps   (10.0 s, 7 samples)

 

System Benchmarks Index Values               BASELINE       RESULT    INDEX

Dhrystone 2 using register variables         116700.0   18557261.0   1590.2

Double-Precision Whetstone                       55.0       2010.1    365.5

Execl Throughput                                 43.0        438.2    101.9

File Copy 1024 bufsize 2000 maxblocks          3960.0     379385.2    958.0

File Copy 256 bufsize 500 maxblocks            1655.0     111610.5    674.4

File Copy 4096 bufsize 8000 maxblocks          5800.0     800073.8   1379.4

Pipe Throughput                               12440.0     774938.5    622.9

Pipe-based Context Switching                   4000.0      62575.2    156.4

Process Creation                                126.0       1099.1     87.2

Shell Scripts (1 concurrent)                     42.4        783.3    184.7

Shell Scripts (8 concurrent)                      6.0         99.9    166.4

System Call Overhead                          15000.0     913825.1    609.2

                                                                   ========

System Benchmarks Index Score                                         377.6

-----------------------------------------------------------------------------------------

 

2017年

10月

12日

自動車のタイヤ交換

TIREHOODが気になります。

 

https://tire-hood.com/

 

ネットで近くの店舗を選んで、タイヤを購入する。

予約した日に店舗に行き、タイヤを取り付ける。

タイヤ館とかよりも安いように見えます。

Amazonや楽天でタイヤを買って、

取り付けてくれるお店を探すよりも手軽です。

 

2017年

10月

04日

Nexus5X 再起動ループが発生(続報)

Nexus5X 再起動ループのその後です。

 

・結論

 結論としては、基板の交換で、費用は無償でした。

 戻ってきた端末は、本体丸ごとの交換ではなく、

 説明通りに基板だけが交換されたようです。

 

・その後の経緯

 2017/09/30(土)LG社の窓口宛に送付しました。

 2017/10/01(日)には、配達を試みたみたいですが、

 休日のため、運送屋さん預かりとなりました。

 

 2017/10/02(月)AMに、再配達で、LG社が受領しました。

 その後、何も連絡がなく、月曜が過ぎました。

 

 2017/10/03(火)お昼頃

 LG社から修理済みのNexus5Xが宅配便で戻ってきました。

 

・感想

 送り出してから、返却までが迅速な対応でした。

 壊れてしまったこと自体には不満はあります。

 しかし、保証期間を超えてからの破損だったにもかかわらず、

 無償修理で直せてもらえたことは、良かったです。

 

 故障は特定のロットで起きるものなのか、

 経年劣化で発生しやすくなるものなのかが気になります。

 修理後の物が、改善されたものなのか、

 はたまた、単に正常に動くものに直されただけで、

 今後、再び、発生する可能性があるのか。

 

 いつ壊れてもいいように、データのバックアップだけは、

 ちゃんと残すようにしようと思います。

 あと、故障中、妻のお古の iPhone5S を代替機として

 使っていたのですが、iPhone も素敵な端末ですね。

 iPhone の良さを体験できたと思います。

 

2017年

10月

01日

Nexus5X 再起動ループが発生

2016/04/01くらいから使っているNexus5Xで、

再起動ループが発生し、使用不能になりました。

 

 

購入経路は日本のGoogle Playで購入し、

1年半くらいが経過していました。

購入後1年以上経過している場合は、LGが

対応してくれるみたいです。

 

 

修理に出すまでの流れです。

 

・LGへの問合せ

 Google Playで購入し、1年を経過した場合、

 どこに修理に出していいのかわからなかったので、

 LGの下記サイトに問合せを投げました。

 

 http://www.lg.com/jp/support/contact/chat-email

 

 問合せに対して、1日以内に返信が来るとのことでした。

 実際には、金曜の夜に送信して、土曜の午前には回答が

 あったので、早い返信でした。

 

・返信の内容

 再起動を繰り返す場合、操作で改善が難しく、

 点検修理が必要となる。

 

 キャリアで購入した場合はキャリアへ。

 Google Playで購入し1年が経過してない場合はGoogle Playへ。

 Google Playで購入し1年が経過した場合は、LGが故障対応をする。

 

 点検後、有償修理の場合は見積もりを送付する。

 修理キャンセルの場合は、無償で終了となる。

 

 端末の送付は、着払いで送付する。

 

・点検・修理に出す

 使い勝手に不満がなく、定期的にソフトのアップデートが

 出され、お気に入りの端末だったので、ひとまず点検に

 出すことにしました。

 

・所感

 ネットで検索すると、再起動ループは発生事例が多いように思います。

 (正常に動いている人は何もコメントせず、故障が発生した人が

  コメントをすることが多いだけかもしれませんが。。。)

 

 気に入っていただけに、1年半で使えなくなったことは残念です。

 直すのにどのくらいかかるかも気になります。

 

 スマホがない生活は不便ですが、点検に出してしまったので、

 次の端末を買うかどうかは、点検の結果を踏まえて決めようと思います。

 

2017年

9月

24日

OpenJDKとOracleJDKの比較の記事

OpenJDKとOracleJDKの比較の記事です。

 

・OpenJDKは使い物になるか?

 https://www.slideshare.net/hadoopxnttdata/openjdk-nttdata-oss-day-2015-autumn

 

・「アプリケーション実行基盤としてのOpenJDKの評価」

 http://ossipedia.ipa.go.jp/doc/208/

 

2017年

9月

14日

PostgreSQLをインストール

1.前提

CentOS release 6.9 (Final)  64bit

 

2.インストール操作

(1)PostgreSQLのyumリポジトリを追加

# yum -y localinstall https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm

 

※PostgreSQLが提供するyumリポジトリは、下記で確認できる。

 https://yum.postgresql.org/repopackages.php

 

(2)利用できるPostgreSQLの確認

下記コマンドを実行して、利用できるソフトウェアを確認する。

 

# yum list postgres*

 

(3)PostgreSQLのインストール

 

# yum -y install postgresql96-server.x86_64

 

(4)初期化

# su - postgres

 

$ /usr/pgsql-9.6/bin/initdb -E UTF-8 --no-locale -D /var/lib/pgsql/9.6/data

$ exit

 

(5)起動(と停止)

# service postgresql-9.6 start

 

# service postgresql-9.6 stop

※停止は、必要な場合に実施すること。

 

(6)起動設定

 

下記コマンドで、デフォルトで起動するようにする。

 

# chkconfig postgresql-9.6 on

 

(7)DBのpostgresユーザにパスワードの設定

 

# su - postgres

 

$ psql

postgres=# ALTER USER postgres PASSWORD 'new_password';

postgres=# \q

$ exit

 

(8)設定変更

(a)他ホストからの接続を許容する

 

# vi /var/lib/pgsql/9.6/data/postgresql.conf

 

--------------------------------

listen_addresses = '*'

--------------------------------

59行目を 'localhost' -> '*' に変更し、他ホストからの接続を許可する。

 

(b)DB名とユーザ名が一致しなくても認証できるようにする

 

# vi /var/lib/pgsql/9.6/data/pg_hba.conf

 

<変更前>

--------------------------------

local   all             all                                     trust

--------------------------------

 

<変更後>

--------------------------------

local   all             all                                     md5

--------------------------------

 

(c)設定反映と確認

 

# service postgresql-9.6 restart

 

# su - postgres

 

$ psql

パスワード:

psql (9.6.5)

 

→ログインできることを確認する。

 

(9)テストユーザとDBの作成

(a)DBユーザの追加

 

$ createuser -P testuser

 

(b)testdbの作成とDB所有者の変更

・DBの追加

 $ psql

 postgres=# create database testdb;

 CREATE DATABASE

 

・DB所有者の変更

 postgres=# ALTER DATABASE testdb OWNER TO testuser;

 postgres=# \q

(c)テストテーブルの作成

 

$ psql -d testdb -U testuser

 

testdb=> create table test (id int, name text);

CREATE TABLE

testdb=> \d

          リレーションの一覧

 スキーマ | 名前 |    型    |  所有者

----------+------+----------+----------

 public   | test | テーブル | testuser

(1 行)

 

testdb=> insert into test(id, name) values(1, 'テスト');

 

testdb=> select * from test;

 

→ testテーブルにデータの挿入と検索ができる。

 

2017年

9月

13日

sudoの設定方法

1.前提

CentOS release 6.9 (Final)

 

2.設定

(1)サーバにログイン

 rootでサーバにログインする。

 

 

(2)sudoの設定

 

 # visudo

 ---------------------------------------------------

   ## Allows people in group wheel to run all commands

   %wheel        ALL=(ALL)       ALL

 ---------------------------------------------------

 

 上記の通り、98行目付近のコメントを外す。

 wheelグループに所属するユーザは全てのコマンドを実行できるようになる。

 

 

(3)sudo設定したいユーザをwheelグループに所属させる

 

 # usermod -G wheel *****

 

 ※*****は、設定対象のユーザ名

 

以上です。

 

2017年

9月

13日

CentOS6でホスト名を変更する方法

rootでログインする。

 

# vi /etc/sysconfig/network

----------------------------------------------------

HOSTNAME=host.example.com

NETWORKING=yes

----------------------------------------------------

 

# /etc/rc.d/init.d/network restart

 

以上です。

2017年

2月

10日

vimの設定

今、お気に入りのVimの設定です。

 

・ベースにする設定

 https://github.com/w0ng/vim-hybrid

 

・以下の内容を.vimrcに追記

---

set background=dark

colorscheme hybrid

set autoindent

set smartindent

set tabstop=4

set t_Co=256

---

 

2017年

2月

05日

パッケージのGPG公開鍵のインストール手順(CentOS7)

パッケージの署名確認のためのGPG公開鍵のインポート方法です。

CentOS7の前提です。

 

<鍵をインポート>

  # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

<GPG鍵の確認方法>

  # rpm -qai gpg-pubkey*

 

 ・RPMコマンドオプション

  -q:RPMパッケージ情報の表示

  -a:インストールされている全パッケージ

  -i:パッケージ情報を表示

 

2016年

7月

07日

CakePHPの入門記事

CakePHPを使ったシステムを扱うことになったので、

軽く勉強しようと思います。

参考になりそうな記事のリンクです。

 

「忙しい人のためのCakePHP入門(by どっとインストール)

 http://qiita.com/nekoneko-wanwan/items/9d792f46d570a45e4782

 

2016年

6月

08日

x86系CPUのネイティブコード解析

x86のネイティブコードの解析に関する記事です。

 

http://codezine.jp/article/detail/420

 

"Hello World"のプログラムをもとに、

GDBを使い、解析し、OSやライブラリの

仕組みを追及していく、下記書籍が興味深いです。

作者サイトから、必要となる資材が

ダウンロードできます。

環境の差異が発生せず、ほぼ、書籍の内容を

再現できます。

 

読み応えがあるので、時間にゆとりがある

学生時代に読みたかったと思う書籍です。

 

 

 

2016年

5月

31日

子供向け英語学習サイトの紹介サイト

手頃なサイトが紹介されていて、参考になりそうだったので、

リンクを残しておきます。

 

・nynuts にゅーよーく・なっつ。:子供向けオススメ英語ニュースサイト

 http://nynuts.hatenablog.com/entry/2015/01/04/141513

 

2016年

4月

22日

Microsoftの最新の開発環境の評価版

Microsoftの最新の開発環境の評価版です。

下記サイトからダウンロード可能です。

 

https://developer.microsoft.com/en-us/windows/downloads/virtual-machines

 

2016年7月9日まで、試せるみたいです。

VMWare, Hyper-V, VirtualBox, Parallelsの仮想マシン

イメージが公開されています。

サイズは約20GBです。

 

含まれるソフトは、下記の通りです。

・Windows 10 Enterprise Evaluation, Version 1511 (Build 10586)

・Visual Studio 2015 Community Update 2

・Windows developer SDK and tools (Build 10586)

・Windows IoT Core SDK and Raspberry Pi 2 (Build 10586.0.151029-1700)

・Windows IoT Core project templates (Version 1.0)

・Microsoft Azure SDK for .NET (Build 2.9)

・Windows Bridge for iOS (Build 0.1.160324)

・Windows UWP samples (Build 3.0.0)

・Windows Bridge for iOS samples

 

Windows7環境だと、試せないものもあるので、

とてもありがたいように思います。

Windows10も含めて、良かったら、Windows7から

アップデートしてしまうのもありかと思います。

 

以下、Windows Dev Centerの記事へのリンクです。

https://developer.microsoft.com/en-us/windows/downloads/virtual-machines

 

2016年

4月

20日

PythonでWebアプリを作る方法

Pythonを使って、Webアプリケーションを作る方法のリンクです。

SimpleHTTPServer、CGIHTTPServerを使う方法が開設されています。

気軽に試せて、便利そうです。

 

・yifeの日記:PythonでWebアプリをつくる(ApacheもWebフレームワークもなしで)

 http://yife.hateblo.jp/entry/2012/01/25/054210

 

2016年

3月

22日

シェルスクリプト:ファイル名、ディレクトリを抽出する方法

test_path="/tmp/test/file.txt"

 

・ファイル名

 echo ${test_path##*/}

 ⇒ file.txt

 

 解説)

  "*/"で表される文字列から最長一致の接頭部を除去する。

 

・ファイルパス

 echo ${test_path%/*}

 ⇒/tmp/test

 

 解説)

  "/*"で表される最短一致接尾部を除去する。

 

2016年

3月

20日

xv6:UNIX V6 をx86ベースに作りなおした教材用OS

xv6は、Unix v6をx86ベースに作りなおした教材用のOSらしいです。

Unixの重要な概念と構造を含みつつ、シンプルな構成となっている為、

学習には向いているらしいです。

PDP-11用マシンは簡単には手に入らないうえ、オリジナルのv6コードは、

ANSI C以前のC言語で書かれている為、ハードルは高めです。

 

以下、参考になりそうなサイトです。

 

日曜研究室、「xv6ソースコードリーディング」

 

・xv6のデバッグ環境をつくる:http://qiita.com/ksky/items/974ad1249cfb2dcf5437

 

・MIT:Operationg System Engineering:https://pdos.csail.mit.edu/6.828/2014/

 

 

以下、オリジナルのv6の解説本です。

 

 

 

技術関係のメモを書いていこうかと思います。

仕事で得た技術、趣味で勉強したことなど、主に技術的なメモを書いていこうと思います。

一途ではありません。興味を持ったことに、つまみ食いをします。

あと、日常生活で興味深いこと等を書きます。

写真素材のピクスタ