メインコンテンツまでスキップ

0.248 (16) を 10 進数の分数にする問題の簡単な解き方 (基本情報技術者試験)

· 約1分
ひかり
Main bloger

「16 進数の少数 0.248 を 10 進数の分数で表したものはどれか。」の問題について簡単に解く方法を紹介します。

ポイント

16 進数の問題は 2 進数を使う

手順

  1. 16 進数を 2 進数に変換
    0.248(16) = 0.0010 0100 1000(2)

  2. 小数点をなくす
    0.0010 0100 1000(2) = 0.0010 0100 1000(2) × 0010 0000 0000(2) / 0010 0000 0000(2) = 0100 1001(2) / 0010 0000 0000(2)

  3. 2 進数を 10 進数に変換
    0100 1001(2) / 0010 0000 0000(2) = (64 + 8 + 1) / 512
    = 73 / 512

Matplotlib (Pyplot) でよく使うコードの例

· 約5分
ひかり
Main bloger

よく使うものを例としてコードとグラフを紹介します。

目次

グラフを作成

まず使用するライブラリを読み込んでおきます。

import matplotlib.pyplot as plt
import numpy as np

1 つのグラフ

fig, ax = plt.subplots()

2 x 3 のグラフ

fig, axs = plt.subplots(2, 3)

グラフをプロット

放物線のプロット

x = np.linspace(-1, 1, 201)
y = x ** 2

fig, ax = plt.subplots()
ax.plot(x, y)

点で放物線をプロット

fig, ax = plt.subplots()

x = np.linspace(-1, 1, 21)
y = x ** 2

ax.plot(x, y, 'o')

色をオレンジに

fig, ax = plt.subplots()

x = np.linspace(-1, 1, 21)
y = x ** 2

ax.plot(x, y, color="tab:orange")

標準の色は以下の通り

文字列
tab:blue
オレンジtab:orange
tab:green
tab:red
tab:purple
tab:brown
ピンクtab:pink
グレーtab:gray
オリーブtab:olive
シアンtab:cyan

線の太さを 4 に設定

fig, ax = plt.subplots()

x = np.linspace(-1, 1, 21)
y = x ** 2

ax.plot(x, y, lw=4)

タイトルの設定

タイトルを Title に設定

fig, ax = plt.subplots()
ax.set_title("Title")

軸ラベルの設定

x 軸ラベルの設定

x 軸ラベルを Time (s) に設定

fig, ax = plt.subplots()
ax.set_xlabel("Time (s)")

y 軸ラベルの設定

y 軸ラベルを Distance (m) に設定

fig, ax = plt.subplots()
ax.set_ylabel("Distance (m)")

グラフの上端・下端を設定

上端を 100 に設定

fig, ax = plt.subplots()
ax.set_ylim(top=100)

下端を -100 に設定

fig, ax = plt.subplots()
ax.set_ylim(bottom=-100)

上端を 100、下端を -100 に設定

fig, ax = plt.subplots()
ax.set_ylim([-100, 100])

グラフの左端・右端を設定

左端を -100 に設定

fig, ax = plt.subplots()
ax.set_xlim(left=-100)

右端を 100 に設定

fig, ax = plt.subplots()
ax.set_xlim(right=100)

左端を -100、右端を 100 に設定

fig, ax = plt.subplots()
ax.set_xlim([-100, 100])

グリッドの表示

fig, ax = plt.subplots()
ax.grid()

縦のみグリッドを表示

fig, ax = plt.subplots()
ax.grid(axis="x")

横のみグリッドを表示

fig, ax = plt.subplots()
ax.grid(axis="y")

目盛りの設定

x 軸目盛りの設定

fig, ax = plt.subplots()
xticks = range(6)
ax.set_xticks(xticks)

x 軸目盛と目盛りラベルの設定

fig, ax = plt.subplots()
xticks = range(6)
ax.set_xticks(xticks, [f"{xtick}m" for xtick in xticks])

y 軸目盛りの設定

fig, ax = plt.subplots()
yticks = [i * 20 for i in range(6)]
ax.set_yticks(yticks)

y 軸目盛りと目盛りラベルの設定

fig, ax = plt.subplots()
yticks = [i * 20 for i in range(6)]
ax.set_yticks(yticks, [f"{ytick}%" for ytick in yticks])

目盛りの削除

x 軸目盛りの削除

fig, ax = plt.subplots()
ax.tick_params(bottom=False)

x 軸目盛りラベルの削除

fig, ax = plt.subplots()
ax.tick_params(labelbottom=False)

y 軸目盛の削除

fig, ax = plt.subplots()
ax.tick_params(left=False)

y 軸目盛りラベルの削除

fig, ax = plt.subplots()
ax.tick_params(labelleft=False)

目盛りの色の設定

x 軸目盛りの色を赤に設定

fig, ax = plt.subplots()
ax.tick_params(axis="x", color="tab:red")

x 軸目盛りラベルの色を赤に設定

fig, ax = plt.subplots()
ax.tick_params(axis="x", labelcolor="tab:red")

y 軸目盛りの色を赤に設定

fig, ax = plt.subplots()
ax.tick_params(axis="y", color="tab:red")

y 軸目盛りラベルの色を赤に設定

fig, ax = plt.subplots()
ax.tick_params(axis="y", labelcolor="tab:red")

グラフの間隔を調整

縦の感覚を 0.2、横の間隔を 0.3 に設定

fig, ax = plt.subplots(3, 3)
fig.subplots_adjust(hspace=0.2, wspace=0.3)

%Cpu22 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

間隔を自動に設定

fig, ax = plt.subplots(3, 3)
fig.tight_layout()

画像を保存

PNG 形式で保存

fig, ax = plt.subplots()
plt.savefig("graph.png")

SVG 形式で保存

fig, ax = plt.subplots()
plt.savefig("svg.png")

PDF 形式で保存

fig, ax = plt.subplots()
plt.savefig("svg.pdf")

graph.pdf

300 dpi で保存

fig, ax = plt.subplots()
plt.savefig("graph300.png", dpi=300)

よく使う dotnet コマンドまとめ

· 約1分
ひかり
Main bloger
コマンド機能
dotnet new新しいプロジェクトを作成
dotnet addパッケージを追加
dotnet removeパッケージを削除
dotnet publishディレクトリにアプリを発行
dotnet runプロジェクトを実行
dotnet slnソリューションファイルを扱う

dotnet new

dotnet new wpf

dotnet add

dotnet add package Microsoft.Web.WebView2

dotnet remove

dotnet remove package Microsoft.Web.WebView2

Linux のネットワーク管理コマンド nmcli と nmtui

· 約2分
ひかり
Main bloger

nmcli

nmcli connection: すべての接続を表示

pi@raspberrypi:~ $ nmcli connection
NAME UUID TYPE DEVICE
preconfigured 1b29633c-51a7-42a8-8357-a23ddbb791b9 wifi wlan0
lo 37334688-5c87-47fc-87d3-8c4e31934dd2 loopback lo
有線接続 1 0df9157e-b1a9-3026-9bd5-f05234e1cf4b ethernet --

nmcli device: デバイスと状態を表示

pi@raspberrypi:~ $ nmcli device
DEVICE TYPE STATE CONNECTION
wlan0 wifi 接続済み preconfigured
lo loopback 接続済み (外部) lo
p2p-dev-wlan0 wifi-p2p 切断済み --
eth0 ethernet 利用不可 --

nmcli connection show ...: プロパティを表示

nmcli connection show プロファイル名 を実行し、プロパティを表示できる。

pi@raspberrypi:~ $ nmcli connection show <プロファイル名>
connection.id: <プロファイル名>
connection.uuid: 1b29633c-51a7-42a8-8357-a23ddbb791b9
connection.stable-id: --
connection.type: 802-11-wireless
connection.interface-name: --
connection.autoconnect: はい
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 1710955164
connection.read-only: いいえ
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.metered: 不明
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
connection.dns-over-tls: -1 (default)
lines 1-24

IP アドレスの確認

pi@raspberrypi:~ $ nmcli connection show <プロファイル名> | grep ipv4.addresses
ipv4.addresses: 192.168.10.113/24

IP アドレスの設定

以下の例では、IP アドレスを 192.168.10.113、プレフィックス長を 24 に設定。

sudo nmcli connection modify <プロファイル名> ipv4.addresses 192.168.10.113/24

DNS サーバーの確認

pi@raspberrypi:~ $ nmcli connection show <プロファイル名> | grep ipv4.dns:
ipv4.dns: 192.168.10.1

DNS サーバーの設定

以下の例では、DNS サーバーを 192.168.10.1 に設定

sudo nmcli connection modify <プロファイル名> ipv4.dns 192.168.10.1

接続を切断

sudo nmcli connection down <プロファイル名>

接続

sudo nmcli connection up <プロファイル名>

nmtui: TUI でネットワーク接続を設定

sudo nmtui

Linux プロンプトを日本語化する方法

· 約1分
ひかり
Main bloger

Linux のプロンプトを日本語化する方法を紹介します。

1. 日本語ロケールのインストール

次に、日本語のロケールが存在しない場合は、それをインストールします。以下のコマンドを実行します。

sudo apt update
sudo apt install language-pack-ja

2. ロケールの設定

日本語のロケールを設定します。以下のコマンドを実行します。

sudo update-locale LANG=ja_JP.UTF8

3. システムの再起動

最後に、システムを再起動します。これにより、新しいロケール設定が反映されます。

sudo reboot

以上で、Linux プロンプトが日本語化されます。

RaspberryPi のプロンプトを日本語化する方法

· 約1分
ひかり
Main bloger

Raspberry Pi のプロンプトを日本語化する方法を紹介します。

1. ロケールの設定

日本語のロケールを設定します。以下のコマンドを実行します。

  1. スペースで以下のようにチェックを入れ OK する
  2. ja_JP.UTF-8 を選択し OK する
sudo dpkg-reconfigure locales

# [*] ja_JP.UTF-8 UTF-8

2. 再起動

再起動します。

sudo reboot

以上。

Ubuntu (WSL2 含む) に pyenv と Python をインストールする方法

· 約1分
ひかり
Main bloger

依存パッケージのインストール

参考: Home · pyenv/pyenv Wiki

sudo apt update
sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

Pyenv のインストール

参考: pyenv/pyenv-installer: This tool is used to install pyenv and friends.

curl https://pyenv.run | bash

~/.bashrc に初期化スクリプトを書き込む

# ~/.bashrc を開く
code ~/.bashrc

以下を書き込みます。

export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

Python のインストール

インストール可能なバージョン一覧を表示

pyenv install -l

Python のインストール

Python 3.12.2 をインストールします。

pyenv install 3.12.2

Python のバージョンを指定

デフォルトのバージョンを Python 3.12.2 に設定します。

pyenv global 3.12.2

python -V # Python 3.12.2

Ubuntu (WSL2 含む) に dotnet をインストール方法

· 約1分
ひかり
Main bloger

参考: パッケージ マネージャーを使用せずに Linux に .NET をインストールする - .NET | Microsoft Learn

インストールスクリプトのダウンロード

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh

インストールスクリプトへ実行権限付与

chmod +x ./dotnet-install.sh

dotnet SDK をインストール

./dotnet-install.sh

最新版をインストールする場合は

./dotnet-install.sh --version latest

パスを通す

$HOME/.bashrc を開き、以下を追記

export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

WSL2 で SSH のトンネルを使用して、WSL2 上のサーバーを LAN に公開する方法

· 約2分
ひかり
Main bloger

Step1. WSL 側に OpenSSH Server をインストール

WSL2 に OpenSSH Server をインストールします。 それと、sshd サービスを立ち上げます。

# WSL2 側
sudo apt install openssh-server
sudo service sshd start

Step2. Windows 側で公開鍵を登録

Windows に公開鍵を登録していない場合は、以下のコマンドを実行します。

# Windows 側
ssh-keygent -t ed25519

次に WSL2 に公開鍵を登録します。

# Windows 側
$pubkey = $(cat $HOME\.ssh\id_ed25519.pub)
wsl -- echo $pubkey `| tee -a `$HOME/.ssh/authorized_keys

Step3. SSH でトンネルを通す

Windows から WSL2 に対し、SSH 接続を行います。

# Windows 側
ssh (wsl -- hostname -I).trim() -g -L8081:localhost:8080

コマンドを区切って説明します。

  • (wsl -- hostname -I).trim() は WSL2 の IP アドレスを取得します
  • -g はポートを LAN にフォワーディングします (外部の端末から 192.168.x.x のようなアドレスで参照可能になります)
  • -L はローカルフォワードのオプションです。サーバーのポートをローカルに転送します
  • 8081localhost:8080 は ローカルの 8081 にアクセスすると、localhost:8080 に転送されるという意味です。 ここでいう localhost はサーバー側から見た localhost です

Step4. サーバーを立ち上げる

公開対象となるサーバーを WSL2 上で立ち上げます。

# WSL2 側
ruby -run -e httpd . # ディレクトリ一覧が公開される

Step5. サーバーにアクセスする

http://localhost:8081 または、http://<ipconfig で表示される IP アドレス>:8081 でサービスにアクセスできます。

トンネル接続によるデメリットとしては毎回トンネルを通すのが面倒なことです。 不安定ですが、netsh interface portproxy ~ による設定を行っても同じようにできます。