0.248 (16) を 10 進数の分数にする問題の簡単な解き方 (基本情報技術者試験)
「16 進数の少数 0.248 を 10 進数の分数で表したものはどれか。」の問題について簡単に解く方法を紹介します。
ポイント
16 進数の問題は 2 進数を使う
手順
-
16 進数を 2 進数に変換
0.248(16) = 0.0010 0100 1000(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) -
2 進数を 10 進数に変換
0100 1001(2) / 0010 0000 0000(2) = (64 + 8 + 1) / 512
= 73 / 512
Matplotlib (Pyplot) でよく使うコードの例
よく使うものを例としてコードとグラフを紹介します。
目次
- グラフを作成
- グラフをプロット
- タイトルの設定
- 軸ラベルの設定
- グラフの上端・下端を設定
- グラフの左端・右端を設定
- グリッドの表示
- 目盛りの設定
- 目盛りの削除
- 目盛りの色の設定
- グラフの間隔を調整
- 画像を保存
グラフを作成
まず使用するライブラリを読み込んでおきます。
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")
300 dpi で保存
fig, ax = plt.subplots()
plt.savefig("graph300.png", dpi=300)
よく使う dotnet コマンドまとめ
Linux のネットワーク管理コマンド nmcli と nmtui
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 プロンプトを日本語化する方法
Linux のプロンプトを日本語化する方法を紹介します。
1. 日本語ロケールのインストール
次に、日本語のロケールが存在しない場合は、それをインストールします。以下のコマンドを実行します。
sudo apt update
sudo apt install language-pack-ja
2. ロケールの設定
日本語のロケールを設定します。以下のコマンドを実行します。
sudo update-locale LANG=ja_JP.UTF8
3. システムの再起動
最後に、システムを再起動します。これにより、新しいロケール設定が反映されます。
sudo reboot
以上で、Linux プロンプトが日本語化されます。
RaspberryPi のプロンプトを日本語化する方法
Ubuntu (WSL2 含む) に pyenv と Python をインストールする方法
依存パッケージのインストール
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 をインストール方法
参考: パッケージ マネージャーを使用せずに 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 に公開する方法
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
はローカルフォワードのオプションです。サーバーのポートをローカルに転送します8081
とlocalhost:8080
は ローカルの8081
にアクセスすると、localhost:8080
に転送されるという意味です。 ここでいうlocalhost
はサーバー側から見たlocalhost
です
Step4. サーバーを立ち上げる
公開対象となるサーバーを WSL2 上で立ち上げます。
# WSL2 側
ruby -run -e httpd . # ディレクトリ一覧が公開される
Step5. サーバーにアクセスする
http://localhost:8081
または、http://<ipconfig で表示される IP アドレス>:8081
でサービスにアクセスできます。
トンネル接続によるデメリットとしては毎回トンネルを通すのが面倒なことです。
不安定ですが、netsh interface portproxy ~
による設定を行っても同じようにできます。