sagantaf

なんでも自分の思ったこと、経験したことを書いて生きます。

sklearn〜LabelEncoderラベルエンコーダーを使って経過日数を算出する

はじめに

ここでは例えとして年始1/1から何日が経ったか算出する

sklearnのライブラリの一つであるLabelEncoderのfitとtransformを使う



方法

まずはライブラリのインポートと、ラベルエンコーダーのオブジェクトの生成

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

from sklearn.preprocessing import LabelEncoder

# doy = Day of Year
le_doy_raw = LabelEncoder()
le_doy_raw.fit(pd.date_range('2018-01-01', '2018-12-31', freq='1 D'))

Output:
LabelEncoder()


date_rangeを使うとdatetime形式で格納される

le_doy_raw.classes_[:5]

Output:
array(['2018-01-01T00:00:00.000000000', '2018-01-02T00:00:00.000000000', '2018-01-03T00:00:00.000000000', '2018-01-04T00:00:00.000000000', '2018-01-05T00:00:00.000000000'], dtype='datetime64[ns]')


今回は月日の情報さえ取れれば良いので、mapでラベルを変換する

le_doy = LabelEncoder()
le_doy.fit(pd.date_range('2018-01-01', '2018-12-31', freq='1 D').map(lambda x: x.strftime('%m-%d'))) 
le_doy.classes_[:5]

Outrput:
array(['01-01', '01-02', '01-03', '01-04', '01-05'], dtype=object)



サンプルとして2/1から3/31までの1週間ごとの日付を格納したDataFrameを作成

df = pd.DataFrame({'date':pd.date_range('2017-02-01', '2017-3-31', freq='1 W').map(lambda x: x.strftime('%m-%d'))})
df
  date
0 02-05
1 02-12
2 02-19
3 02-26
4 03-05
5 03-12
6 03-19
7 03-26



transformメソッドを使って上で作成したデータセットの日付が1/1から数えて何日経ったかを算出できる

df["dayofyear"] = le_doy.transform(df.date)
df
  date dayofyear
0 02-05 35
1 02-12 42
2 02-19 49
3 02-26 56
4 03-05 63
5 03-12 70
6 03-19 77
7 03-26 84


これで例えば2/5は1/1から数えて35日目ということがわかる
機械学習のモデルの特徴量として経過日数を取り込む時に重宝する


Astropy〜チュートリアルを通して使い方を学ぶ(1)

はじめに

Astoropyのチュートリアルを参考にして、使い方を学んでいく。


まずは一つ目のチュートリアルGetting Started with astropy.coordinates」を参考に、astropy.coordinatesを使って画像を表示させてみる。

このチュートリアルでは、「ヒクソン・コンパクト銀河群」の画像を利用している。

ヒクソン・コンパクト銀河群 - Wikipedia

ヒクソン・コンパクト銀河群 (英: Hickson Galaxy Groups、HCG )は、ポール・ヒクソンにより1982年に出版されたカタログ[2]に掲載された集団規模が比較的小さい銀河集団の総称である。


まずは基本セットのimport

from urllib.parse import urlencode
from urllib.request import urlretrieve

from astropy import units as u
from astropy.coordinates import SkyCoord
from astropy.table import Table

import numpy as np
from IPython.display import Image


matplotlibでastropyの描画ライブラリを使えるように設定

astropy.coordinatesパッケージのSkyCoordクラスで天球座標を表すことができる

天球座標とは、赤緯赤経と呼ばれる緯度経度のような尺度を使って地球から見た星の座標を示す

from astropy.visualization import astropy_mpl_style
import matplotlib.pyplot as plt
plt.style.use(astropy_mpl_style)
%matplotlib inline


SkyCoordオブジェクトを作る

from_nameというメソッドを使ってヒクソン・コンパクト銀河群のデータを取ってくる

sc = SkyCoord.from_name('HCG 7')
type(sc)

 astropy.coordinates.sky_coordinate.SkyCoord

SkyCoordというタイプのオブジェクトになっている また、scだけを実行すると、天球座標を表示できる

sc

RAは赤経、Decは赤緯を表す(RA=Right Ascertion, Dec=Declination)

SkyCoordのメソッド一覧はdirメソッドで確認できる

dir(sc)

['T', '__abstractmethods__', '__bool__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', (省略) 'temperature', 'to_pixel', 'to_string', 'transform_to', 'transpose', 'v_bary', 'velocity', 'z_sun']


作成したオブジェクトの赤経RA、赤緯Decを表示するには以下様々なコマンドがある

sc.ra

9∘48′58.5′′

sc.ra.hour

0.6544166666666668

sc.dec

0∘53′17.016′′

sc.dec.hour

0.05920400000000001


そのほか、SkyCoordの使い方は公式ページで確認できる

次に画像イメージをダウンロードする

画像の範囲を設定するための変数を用意

im_size = 12 * u.arcmin
im_size

12′

arcminは角度の単位。1arcminで1度の60分の1を表す(日本語では、分と呼ぶ)
単位の記号は1'
つまり 12' は、12/60=1/5度という小さい角度を表す

画像の大きさを設定するための変数 および 画像取得元のベースとなるURL を設定

im_pixels = 1024
cutoutbaseurl = 'http://skyservice.pha.jhu.edu/DR12/ImgCutout/getjpeg.aspx'

取得したい画像のパラメタを設定

query_string = urlencode(dict(ra=sc.ra.deg,
                              dec=sc.dec.deg,
                             width=im_pixels, height=im_pixels,
                             scale=im_size.to(u.arcsec).value/im_pixels))

上記では天球座標として作成したscの値を指定
 sc.ra.deg, sc.dec.deg (9.81625, 0.88806)
scaleパラメタでim_sizeを秒単位に変換している
 im_size.to(u.arcsec) 720′′



設定したパラメタとベースとなるURLを使って、取得したい画像をURLとして設定し、保存

url = cutoutbaseurl + '?' + query_string
urlretrieve(url, 'HCG7_SDSS_cutout.jpg')

('HCG7_SDSS_cutout.jpg', <http.client.HTTPMessage at 0x7f62d1631828>)


保存した画像を表示する

Imageメソッドで保存した画像のファイル名を指定することで表示させられる

Image('HCG7_SDSS_cutout.jpg')

f:id:sagantaf:20181118231449p:plain



パラメタを変更して画像の表示を変えてみる

画像パラメタquery_stringで指定する内容を変えることで画像の表示が変わる

まずは簡単に変更できるように関数を用意

def show_image(im_size, im_pixels):
    query_string = urlencode(dict(ra=sc.ra.deg,
                              dec=sc.dec.deg,
                             width=im_pixels, height=im_pixels,
                             scale=im_size.to(u.arcsec).value/im_pixels))
    url = cutoutbaseurl + '?' + query_string
    urlretrieve(url, 'HCG7_SDSS_cutout.jpg')
    return(Image('HCG7_SDSS_cutout.jpg'))


より広範囲の画像を出力には、im_sizeを変更することで対応できる

im_size2 = 60 * u.arcmin
show_image(im_size2, im_pixels)

f:id:sagantaf:20181118231532p:plain

逆も然りで、im_sizeを12から4にすることで、より詳細な画像を出力することができる

また、画像サイズの変更はim_pixelsを変えることで可能

im_size2 = 4 * u.arcmin
im_pixels = 512
show_image(im_size2, im_pixels)

f:id:sagantaf:20181118231552p:plain


まとめ

天体画像の取得・保存方法と色々な画像表示の方法について学んだ

Docker実践〜dockerコンテナに外部からアクセスするためにポートフォワード設定を追加する

はじめに

コンテナを構築した後、アプリケーションを追加したりして、

「新たなポートを使って外部からコンテナにアクセスしたい!」 「でもコンテナを作り直したくない!」

となった時、コンテナを止めずにポートフォワード設定を追加する方法を書きます。 また、誤って設定してしまった時の設定削除方法も最後の方に記載しています。

Dockerのポートフォワードの設定

Dockerのポートフォワードの設定は、コンテナ起動時などに-pオプションを使って設定できますが、裏ではiptablesで実現されています。

そのため、今回のように稼働しているコンテナのポートを追加する時もiptablesのNATとFilteringの設定を編集します。


1. まずはコンテナのIPアドレスを確認する

設定を追加したいコンテナ名をhogeとすると、

$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' hoge

で確認できます。 普通は、 172.17.0.2 のようなIPアドレスになっています。


2. NAT設定

まずはNAT設定からです。

コンテナが稼働しているホストマシンのポートを--dport で指定し、コンテナのIPアドレスとポートを --to-destination で指定します。この時のIPアドレスは 上記1 で確認したアドレスになります。

下記の例は、ホストマシンの8001番ポートにアクセスした時に、コンテナ 172.17.0.2 の 8888 ポートに接続されるようにしたい時のコマンドです。8888はpython Jupyterのデフォルトポートです。

$ sudo iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 8001 -j DNAT --to-destination 172.17.0.2:8888

イメージ図:

f:id:sagantaf:20181118153602p:plain

図のように、ユーザがブラウザでJupyterに接続しようと「http://ホストマシンIPアドレス:8001」のURLにアクセスすると、リクエストはホストマシンに届いた後に、コンテナhogeの8888ポートにフォワードされ、Jupyterのプロセスへと到達する形になります。


3. Filtering設定

次はFilteringの設定です。

コンテナのIPアドレス-d で指定し、ホストマシンのポートを --dport で指定します。

$ sudo iptables -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8001 -j ACCEPT

2.のNATの設定だけでなく、Filteringの設定もしないと外部からのアクセスができませんので、忘れずに設定が必要です。


4. 設定できたか確認

最後に想定通りに設定されたかを確認します。

以下のコマンドでiptablesの現在の設定をファイルに保存できます。

$ sudo iptables-save > iptables.txt

保存したら、中身を表示して、想定通りのNATとFirtering設定になっているかどうかを確認してください。

もし想定と異なる設定をしてしまっていた場合は次の5.を確認ください。


5. 誤って設定した時の削除方法

NAT設定の削除方法

まずは間違っている設定の行番号を確認します。

$ sudo iptables -t nat -L --line-numbers

そして確認した行番号を指定して下記の削除コマンドを実行します。(X に行番号を入れます)

$ sudo iptables -t nat -D DOCKER X


Filtering設定の削除方法

こちらも同じく間違っている設定の行番号を確認します。

$ sudo iptables -L --line-numbers

確認した行番号を指定して下記の削除コマンドを実行します。(X に行番号を入れます)

$ sudo iptables -D DOCKER X

これで設定が削除されていますので、$ sudo iptables-save > iptables.txt で設定を確認してみてください。


6. シェルスクリプトにして楽に設定できるようにしました

1〜4の手順をシェル化!
引数で ホストマシンのポート、コンテナ名、コンテナのポート の順で指定するようになっています。

#!/bin/bash

if [ $# -ne 3 ]; then
  echo "引数は右記のように指定してください:host port, container name, container port"
  exit 1
fi

host_port=$1
container=$2
container_port=$3

ip=`sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${container}`

if [ $? -gt 0 ]; then
  echo 'cannot get IP address of ${container}'
  exit 1
fi

echo 'IP Address is '${ip}
echo 'host port = '${host_port}', container port = '${container_port}
read -p 'ok? (yes/no): ' yn
case ${yn} in
  yes) ;;
  no) echo 'abort.' ; exit  ;;
  *) echo 'should yes or no' ; exit  ;;
esac

# NAT
sudo iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport ${host_port} -j DNAT --to-destination ${ip}:${container_port}

if [ $? -gt 0 ]; then
  echo 'NAT設定でエラー発生'
  exit 1
fi

# Filtering
sudo iptables -A DOCKER -d ${ip}/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport ${container_port} -j ACCEPT

if [ $? -gt 0 ]; then
  echo 'Filtering設定でエラー発生'
  exit 1
fi

# save
sudo iptables-save > iptables.txt
echo 'iptables.txtに現在のiptablesの設定を保存'

参考文献

Docker

Docker

Docker実践ガイド 第2版 (impress top gear)

Docker実践ガイド 第2版 (impress top gear)

Astropy〜Linux環境にインストールする方法

Astropy をインストールする方法を書いておく。

Anacondaを使っている場合はデフォルトでインストールされている。 以下のコマンドでバージョンを確認するだけで済む。

$ conda list |grep astropy
astropy                   3.0.2            py36h3010b51_1
pytest-astropy            0.3.0                    py36_0

astropyが表示されればOK。

pipを使ってインストールする

方法としては、単純にpipでastropyを指定してインストールするだけ。

$ pip install astropy --no-deps


すでにnumpyなどをインストールしていて、バージョンを変えたくない場合は、--no-depsのオプションを付けて、Astropyだけをインストールする。
ついでにNumpyもインストールしてしまいたい場合は、オプションをつけずに下記のようにインストールする。

$ pip install astropy 
Collecting astropy
  Downloading https://files.pythonhosted.org/packages/9a/dd/379071efa94c223c596594a429ab41b8e1bb7052e40c733842a9f28674c3/astropy-3.0.4-cp36-cp36m-manylinux1_x86_64.whl (6.0MB)
    100% |################################| 6.0MB 222kB/s
Collecting numpy>=1.10.0 (from astropy)
  Downloading https://files.pythonhosted.org/packages/22/02/bae88c4aaea4256d890adbf3f7cf33e59a443f9985cf91cd08a35656676a/numpy-1.15.2-cp36-cp36m-manylinux1_x86_64.whl (13.9MB)
    100% |################################| 13.9MB 117kB/s
Installing collected packages: numpy, astropy
Successfully installed astropy-3.0.4 numpy-1.15.2

numpyも一緒にインストールされていることが分かる。

またAstropyを動かすには以下のライブラリが必須になる。
・python3.5もしくは3.6
・numpy 1.10.0 以降
・pytest 3.1以降

先述の通り、numpyはastropyをインストールする時に合わせてインストールされるが、pytestはされないので、以下のコマンドでインストールする。

$ pip install pytest


他にもscipyとかmatplotlibなどに依存した機能もあるけど、必要になったときにインストールする。

Astropyがインストールされたかどうか確認する

ここで公式ページの通りに実施すると、以下のRuntimeErrorが発生する。

$ python3
Python 3.6.5 (default, Apr  1 2018, 05:46:30)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import astropy
>>> astropy.test()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/hoge/.local/lib/python3.6/site-packages/astropy/utils/decorators.py", line 827, in test
    func = make_function_with_signature(func, name=name, **wrapped_args)
  File "/home/hoge/.local/lib/python3.6/site-packages/astropy/tests/runner.py", line 260, in test
    return runner.run_tests(**kwargs)
  File "/home/hoge/.local/lib/python3.6/site-packages/astropy/tests/runner.py", line 601, in run_tests
    return super(TestRunner, self).run_tests(**kwargs)
  File "/home/hoge/.local/lib/python3.6/site-packages/astropy/tests/runner.py", line 202, in run_tests
    self._has_test_dependencies()  # pragma: no cover
  File "/home/hoge/.local/lib/python3.6/site-packages/astropy/tests/runner.py", line 182, in _has_test_dependencies
    raise RuntimeError(cls._missing_dependancy_error)
RuntimeError: Test dependencies are missing. You should install the 'pytest-astropy' package.


実はpytestじゃなくてastropy-pytestをインストールする必要があったということ。。。
そのため、一旦Ctrl+dでpythonを抜けて、pytest-astropyをインストールする。

pip3 install pytest-astropy


これでテストが実施できる。 再度テストコマンドを実行すると以下のように表示されるはず。(かなり時間がかかる場合がある)

$ python3
Python 3.6.5 (default, Apr  1 2018, 05:46:30)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import astropy as ap
>>> ap.test()
/usr/lib/python3.6/importlib/_bootstrap.py:219: ImportWarning: can't resolve package from __spec__ or __package__, falling back on __name__ and __path__
  return f(*args, **kwds)
========================================= test session starts =========================================
platform linux -- Python 3.6.5, pytest-3.8.1, py-1.6.0, pluggy-0.7.1

(中略)

=============== 10183 passed, 335 skipped, 66 xfailed, 5059 warnings in 446.75 seconds ================
0


test session starts
が表示されれば問題なくテストが開始されており、Astropyが使える状態になったということ。

参考ページ ・Astropy公式ページ https://astropy.readthedocs.io/en/stable/install.html

上記公式ページには、ソースからビルドする方法も書かれている。

GIt入門 いまさらだけど基本的なことをまとめてみた!

Gitとは

Gitとはファイルのバージョン管理システムのこと

バージョン管理とは、ファイルの過去の状態も保存しておき、どのように変更されてきたか管理することを表している。

普段、WindowsMacでエクセルファイルやテキストファイルを作って書いて保存して、を繰り返すと、同名ファイルは都度「上書き保存」されて、過去どんなことを書いて消してしまったのかが残らない。

一人だと過去の履歴が消えても、そんなに困ることは少ないが、 複数人でひとつのファイル(例えば経費管理のファイルや、Pythonのコードファイル)を編集するとなると、他の人が行った内容の変更に間違いがあったり、いまいちな点があったりして元に戻したい、となるときが結構ある。

そんな時に、過去の履歴があってすぐに戻せるとしたら、かなり助かるはず。

だからGitのようなバージョン管理システムが開発された。

基本用語

リポジトリ:過去のバージョンも履歴として残しておける、ファイルを保存するための貯蔵庫。個人リポジトリ(=ローカルリポジトリ)と、共有リポジトリ(=リモートリポジトリ)の2種類ある。

commit:個人リポジトリに変更を記録すること。要するにPC内にファイルを保存すること。

push:共有リポジトリに変更を記録すること。要するにインターネット上でチームなどと共有している場所にファイルを保存すること。

pull:共有リポジトリの情報を同期すること。要するにインターネット上の共有しているファイルの状態をPC内に持ってくること。

f:id:sagantaf:20180912231826p:plain


使い方

- インストール

GitはMacの場合、デフォルトでインストールされている。

$ git version
git version 2.16.1

Windowsの場合、自分でインストールする必要がある。



- 個人の情報を設定

GitHubでリモートリポジトリを使うために、gitを使い始める前にアカウントとメルアドを設定する必要がある。

$ git config --global user.name "自分のアカウント名"
$ git config --global user.email "登録したメールアドレス"



- PCに個人リポジトリ(=ローカルリポジトリ)を作成

git init コマンドで現在いる場所に隠しディレクトリ ".git" が作成される。

$ pwd
/Users/hoge/.git/
$ git init
Initialized empty Git repository in /Users/hoge/.git/
$ ls -a .git/
.     HEAD        description info        refs
..      config      hooks       objects

.gitディレクトリの中には様々なファイルやディレクトリが生成される。



- ローカルリポジトリにファイルをcommitする

自分のPCのファイルをローカルリポジトリに置く前にステージングエリアと呼ばれる場所に置く必要がある。ステージングエリアに置くことで、このファイルをGitで管理するよ!と宣言することになるイメージ。 その後、commitしてローカルリポジトリにファイルを置くことができる。

$ touch test.txt
$ echo "This is test." >> test.txt
$ git add test.txt
$ git commit

git commit をするとvimが開くので、一番上にコミットメッセージを追記して、保存すればOK。 (vimが開いたら、Escボタンで編集できるようになる。メッセージを追記したらもう一度Escを押して、:wqと押してEnterすることで保存できる)

f:id:sagantaf:20180913004354p:plain



- gitで管理したくないファイル(例えばパスワードファイル)の設定

gitignoreというファイルを作り、その中に管理したくなりファイル名を書いて置くことで、commitされなくなる。

VirtualBoxでWindows10にUbuntu16.04の仮想環境を構築する

 

Windows10のPCにUbuntu16.04の仮想環境を構築します。

VirtualBoxを利用します。

 

 

まずは以下のページからVirtualBoxをダウンロード

→「Windows host」をクリックするとダウンロードが始まる

Downloads – Oracle VM VirtualBox

 

 

以下のページからUbuntu16.04をダウンロード

Ubuntu 16.04.5 LTS (Xenial Xerus)

 

 

ダウンロードしたVirtualBoxを開き、インストール

→ひたすら「NEXT」や「YES」を押すだけ

 

 

インストール後、VirtualBoxを起動すると、以下の画面が最初に表示される

f:id:sagantaf:20180901135042p:plain

 仮想マシン(VM)を構築するために、まずは「新規」をクリック

 

 

f:id:sagantaf:20180901135323p:plain

名前を入力して次へ

 

 

f:id:sagantaf:20180901135416p:plain

メモリを好きなサイズに設定し、次へ

 

 

f:id:sagantaf:20180901135428p:plain

「仮想ハードディスクを作成する」を選択して、「作成」

 

 

f:id:sagantaf:20180901135510p:plain

VDIのまま次へ

 

f:id:sagantaf:20180901135528p:plain

可変サイズのまま次へ

 

f:id:sagantaf:20180901135537p:plain

好きな名前を入力し、ディスクサイズを設定し、「作成」

 

 

f:id:sagantaf:20180901135550p:plain

仮想環境が追加された

電源ONする前に、 「設定」を押して、ストレージ→コントローラー:IDEの「空」を選択する

 

 

f:id:sagantaf:20180901135712p:plain

ディスクの絵をクリックし、「仮想光学ディスクファイル」を選択

 

 

f:id:sagantaf:20180901135839p:plain

先ほど、ダウンロードしたUbuntuのiイメージファイルを選択して開く

 

 

f:id:sagantaf:20180901135930p:plain

OKを押す

 

 

f:id:sagantaf:20180901140145p:plain

これでダウンロードしたディスクから起動されるようになった

 

「起動」を押して、新しいウィンドウが開くことを確認

 

 

f:id:sagantaf:20180910224807p:plain

 

 日本語を選択しようとウィンドウを押すと、以下の画面が出る

f:id:sagantaf:20180910224844p:plain

 

「仮想環境にマウスとキーボードの制御が持っていかれるので、ローカル(Windows)に戻したいときは、Right Conrtolを押す必要がある」という警告文

「キャプチャー」をクリックして、「日本語」をキーボードの矢印キーを使って選択し、Enterを押す

 

 

f:id:sagantaf:20180910225156p:plain

Ubuntu Serverをインストール」でEnter

 

 

f:id:sagantaf:20180910225756p:plain

<はい>を選択 

 

 

f:id:sagantaf:20180910225820p:plain

「日本」のままEnter 

 

 

f:id:sagantaf:20180910225839p:plain

「Japanese」のままEnter 

 

 

f:id:sagantaf:20180910225902p:plain

「Japanese」のままEnter 

 

しばらくインストール処理が続く。。。

f:id:sagantaf:20180910225941p:plain

 

f:id:sagantaf:20180910230120p:plain

好きなホスト名を入力し、続ける

 

 

f:id:sagantaf:20180910230211p:plain

 好きなユーザの本名を入力し、続ける

 

 

f:id:sagantaf:20180910230239p:plain

好きなユーザ名を入力し、続ける

(このユーザ名が後ほどログインするときに入力するものになる)

 

 

f:id:sagantaf:20180910230321p:plain

f:id:sagantaf:20180910230338p:plain

パスワードを2回入力し、続ける 

 

 

f:id:sagantaf:20180910230449p:plain

短いパスワードの場合、上記のメッセージが出るが、気にしない人はそのまま進める

 

 

f:id:sagantaf:20180910230527p:plain

 暗号化してセキュリティを高めることができるが、気にしない人はそのまま進める

 

また、しばらく待つ。。。

 

f:id:sagantaf:20180910230752p:plain

 タイムゾーンが「Asia/Tokyo」になっていればそのまま<はい>を選択

なっていない場合は、<いいえ>を押して自分で設定する

 

 

f:id:sagantaf:20180910230914p:plain

「ガイド - ディスク全体を使い、LVMをセットアップする」でEnter 

 

 

f:id:sagantaf:20180910230939p:plain

 そのままEnter

 

 

f:id:sagantaf:20180910230955p:plain

 <はい>を選択

 

 

f:id:sagantaf:20180910231033p:plain

 好きな容量を記入して<続ける>

 

 

f:id:sagantaf:20180910231100p:plain

 「パーティ初認具の終了とディスクへの変更の書き込み」でEnter

 

 

f:id:sagantaf:20180910231132p:plain

  <はい>を選択

 

しばらく待つ。。。

f:id:sagantaf:20180910231153p:plain

 

f:id:sagantaf:20180910231323p:plain

プロキシが必要であれば入力して設定する

必要なければそのまま続ける 

 

またしばらく待つ。。。

f:id:sagantaf:20180910231349p:plain

 

意外と時間かかる、、、

 

 

 

f:id:sagantaf:20180910231658p:plain

 好きな項目を選んでEnter

 

 

f:id:sagantaf:20180910231748p:plain

 好きなソフトをスペースキーで選択してEnter

あとからでもインストールできるので、とりあえずそのままEnterでもOK

 

またしばらく待つ

 

f:id:sagantaf:20180910232038p:plain

<はい>を選択

 

 

f:id:sagantaf:20180910232123p:plain

ようやくインストール完了

ウィンドウが変わり、起動処理が始まる

 

 

しばらく待つとログイン画面になる

f:id:sagantaf:20180910232248p:plain

先ほど自分で設定したユーザ名とパスワードを入力してログインする。

 

あとは好きなように使っちゃってください。

 

 

 

 

 

 

昼飯後の眠気をどう解消するか? 原因と対処法をまとめてみた

 

昼飯を食べた後に、自分のデスクに戻ってしばらくすると、ほぼ必ず襲ってくる眠気。

眠すぎて、気付いたら首がひん曲がっていたこともある。。。

 

そこで色々調べ、考え、まとめてみた。

  

まず気になるのは、昼食後に眠くなるのはなぜか、その原因

①脳に血液が回らないから

眠くなる原因としてよく聞くのは、

食べ物を消化するために、内臓に血液が回り、脳に血液が回らなくなるから、

ということ。これは確かに納得出来る。

そして、消化に時間がかかると、ずっと眠いということになる。

 

では、消化に時間がかかるのはどんな時か。

 ・よく噛まずに食べる

 ・消化の悪いものを食べる

 ・水分の取りすぎで胃酸が薄まる

とかが思いつく。水分の取りすぎが良くないのは、何かの雑誌かテレビで言ってた気がする。

 

②血糖値が下がるから 

また、食後に血糖値が下がるから、眠くなる、というのもよく聞く。

なぜ食事で糖質を摂取してるのに、血糖値は下がるのか?

それは

「糖質を摂る(白米とか)と血糖値が上がる。すると体内でインシュリンと呼ばれる血糖値を下げる働きをするホルモンが分泌される。人間の眠気というものは、血糖値が下降したとき起こる傾向がある。」

ということらしい。(下記参照)

nemgym.com

 

つまり、糖質をとる→インシュリンが分泌される→血糖値が下降する→眠くなる、ということになる。

 

また、半概日性リズム(サーカセミディアン・リズム)という、12時間周期で眠気がやってくる生活リズムも昼間に眠くなる原因とひとつらしい。(下記参照)

allabout.co.jp

 

つまり、たとえ昼食を食べなくても、人間の生活リズムから午後の眠気はやってくる、ということになる。

 

ここで昼食後に眠くなる原因をまとめると、

  • 食べ物の消化により、脳に血液が回らなくなるから
  • 糖質を摂取することにより、インシュリンが分泌され、血糖値が下がるから
  • 人間の生活リズムが12時間周期だから

 

 

 

では、どう対策すれば良いか。

・野菜を先に食べて、血糖値の上昇を緩やかにする

・15~20分くらい仮眠する(それ以上長いと深い眠りに入り、起きにくくなるため)

・仮眠前にはカフェインを摂る(甘いコーヒーは糖質を摂ることになるのでNG)

・ストレッチをして血流を良くする、すこしの間電気イスをして足の血液を脳に送る

・午後に人と会話する仕事、もしくは期限がせまっている仕事をする

・昼食時および食後に水分を取りすぎない

 

などが考えられる。

 

人の性格や置かれている環境はそれぞれ違うので、色々試してみて自分に合うもの、効果があったものを取り入れていくのが良いと思う。

 

 

とりあえず野菜を食べる🥦

ストレッチをする