リンス・コンディショナー,トリートメント

リンス・コンディショナー → 髪の「表面」をなめらかにする
トリートメント → 髪の「内部」に成分を浸透させ,補修する
花王より)

これらの定義はメーカー間で違いがある.

リンス・コンディショナ

明確な違いはなく,ほぼ同じもの.保湿効果の高さが異なる場合もある.
どちらも髪表面をコーティングし,保湿する役割がある.

トリートメント

髪の表面を整えながら,同時に髪の内部に栄養(加水分解シルク,加水分解コラーゲン)を補給できる.
トリートメントは,リンス・コンディショナーの機能を併せ持っていることがほとんど!
内部を補修しつつ,表面をコーティングしてなめらかにし,指通りをよくしてくれる.

使い方

1.シャンプー後,水気をきる
2.毛先から揉み込むようにつける(時間を置いてなじませる)
3.しっかりすすぐ

コンディショナー → 1分程度
トリートメント → 3から10分程度(内部に浸透させる)
!どちらも頭皮につけないように注意する(頭皮につくと毛穴が詰まりやすくなる)

特にダメージが酷いときは併用可能.
その場合は,トリートメント→コンディショナーの順で使用する.


www.kao.com
https://www.weleda.jp/column/organiclife/haircare/94#:~:text=%E3%83%AA%E3%83%B3%E3%82%B9%E3%81%A8%E3%82%B3%E3%83%B3%E3%83%87%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC%E3%81%AF%E3%80%81%E9%AB%AA,%E3%81%AE%E3%81%BF%E3%81%A8%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

Discordへのアマプラ更新通知

概要

AmazonPrimeVideoの新エピソードが更新されると,通知してくれるサービス(自分でいちいち確認するのが手間だったため)
DiscordにはWebhookという簡単に投稿できるサービスがあり,チャンネルなどで通知分けが容易などのメリットがある
言語にはPythonを使用し,自宅のUbuntuサーバーでCronによる定期実行している

github.com

Pythonによる実装

調べてみると同じようなことをしている人がいたので,大いに参考にした.(初めはWindowsのPowerAutomate?を使おうと思っていたが,よくわからなかったのでやめた)
コードの骨組みは次のサイトを参考にした.てかほとんどコピペ
qiita.com

エラー処理や,ログ処理を行っていて本格的ですごい.

期待していた動作をほぼ行っていたので,少しだけ改造.

pklファイルによる保存

エピソード数の変化を検知するために,取得したい作品と,そのエピソード数をローカルで保存しておく必要がある.
上サイトでは,URLの保存などにCSVを使っていたが,自分は辞書形式({"タイトル":"エピソード数"})のようにしたかったので,いろいろ調べた結果,Pythonのpickleモジュールを使うことにした.
通常のファイルと同様に,with openでファイルの操作ができる.(pklファイルはバイナリ扱い?で,読み込みや書き込み時はrb,wbを用いるっぽい)

参考サイト↓
qiita.com

BeautifulSoupによるスクレイピング

BeautifulSoupを用いて,Htmlなどの要素を検索する.今回は,アマプラVideoサイトHTML中の,各エピソードにのみ含まれるIDを検索するようにした.
同じ要領でタイトルも取得できるようにした.なので,スクリプトに監視したいサイトのURLだけ貼っておけば,更新された作品を教えてくれる.
BeautifulSoupとpklを併用する時の注意点として,BeautifulSoupで取得した文字列をそのままpklに突っ込んで保存しようとすると,エラーが発生するので,dictionary[str(titl)] = hogeのようにstrで変換しておく.

Discordにおける通知

Discordでの通知には,Webhookを用いた.イメージとしてLineNotifyと同じで,Discord上で取得したWebhookのURLにPythonなどでrequestすることで,メッセージをDiscordのチャンネルに送れる.
今回のbotは投稿のみの一方通行botである.
投稿自体は,Webhookを使うことで容易にできた.しかし,Discordのロールへのメンションで少し手間取った.

Webhook使用時のメンション

Discordでは,各位に与えられたロールに@ロールとすることで,限定的なメンションをすることができる.
これをWebhookで行おうとしたが,@hereや@everyoneしかうまく機能しなかった.

調べてみると,ロールへのメンションはIDを使う必要があるみたい.下記のサイトが参考になった.
note.com

まずは,Discordの開発者モードを(詳細設定にある)ONにする必要がある.これによって,各チャンネルや各ユーザー,各ロールに紐づけられたIDを取得できる.
上記サイトによると,このIDを使って,ユーザーへのメンションの場合は,"<@ユーザーID>"とすれば良いみたい.
ロールの場合も,"<@%ロールID>"とすることで無事メンションすることができた.

またこのサイトによると,IDを簡単に取得する方法として,Discord上で"\@here"のように,メンション発言の手前にバックスラッシュをつけて投稿することで,簡単にIDを得られるみたい.

その他

今回の開発では,Logの処理を初めてみたので印象的だった.今回みたいなサーバー上で常時動作させるプログラムの際は,活用したほうが良いかもしれない.
ロギングについて勉強する必要がある.まあその時が来たら.
qiita.com
qiita.com

睡眠前のブルーライト

睡眠障害を有さない若年男性における就寝前の光照射による起床後の主観的睡眠感,注意力および作業効率の変化 -白熱電球と青色光の比較-」

論文URL
https://www.niph.go.jp/journal/data/69-5/202069050008.pdf

P:睡眠障害を有さない若年男性(20-23歳)
I:ブルーライト(467nm)照射(1時間)
C:白熱電球(780nm)照射(1時間)
O:主観的睡眠感、睡眠状況、注意力、作業効率

目的:本研究は,就寝前のブルーライトを主波長とする青色光照射が,睡眠障害を有さない若年男性の主観的睡眠感,注意力,作業効率に及ぼす影響を調査することである.
方法:対象は,12人の睡眠障害を有さない若年男性(年齢:20-23歳)であった.対象者は就寝前の 1 時間,♳白熱電球,♴青色光の 2 条件で照射を受けた.照射を行った翌朝,主観的睡眠感と注意力,作業効率について測定を行った.主観的睡眠感はOSA睡眠調査票(MA版),注意力は精神運動ヴィジランス課題,作業効率はパーデューペグボードを用いた.
結果:白熱電球照射後とブルーライト照射後の 2 条件間で主観的睡眠感に有意な差は認められなかった.作業効率は,ブルーライト照射後で白熱光照射後と比較し有意に低下した.また,ブルーライト照射後の注意力では10分間の測定時間の内,後半 5 分部分で反応時間が有意に延長した.
結論:本研究の結果は,就寝前のブルーライト照射が翌日の注意力と作業効率を低下させる可能性があることを示唆する.

キーワード:睡眠,ブルーライト,作業効率,注意,主観的睡眠感

主観的睡眠感について

本研究では、白熱電球ブルーライトの間に主観的睡眠感の有意な差が見られなかった。
別の研究において、睡眠時間を5時間に制限した場合、主観的眠気が増加した。7時間睡眠では主観的眠気に有意な差は生じなかった。

睡眠の客観的評価

深睡眠率は、青色光で有意に低下していた。(白熱電球:15.5±4.5、青色光:12.7±4.9)
深睡眠は心身の回復に関係するといわれ、深睡眠率が日中のパフォーマンスに影響を与える可能性がある。

文字コードについて(UTF-8,UTF-16)

UTF(UCSTransformationFormat)とは

UTF-*

Unicode文字のエンコード方法の1つ.Unicodeは,世界中に存在するさまざまな言語の文字を統一して使えるようにするためのコードセット.
UTF-7UTF-8UTF-16などの種類がある.UTF-*は,*ビットの可変長マルチバイトで文字を表現する.

BOM(ByteOrderMark)

BOMは,Unicodeで符号化したテキストの先頭に付与される数バイトのデータの事.Unicodeのデータであることやどの種類の符号化形式を採用しているのかを判別している.(ex.BOM付のUTF-8であれば,先頭の3バイトがBOMであり<0xEF 0xBB 0xBF>となる)

Excelなどのアプリでは,BOM付きでなければ符号化方式がUTF-8なのかUTF-16なのか,あるいは別の文字コードなのか判断できない事がある.
HTMLファイルの場合は,BOM無しで保存するほうが良いとされている.これは,Webページを処理するPHPなどのプログラムがBOM付テキストファイルを正常に処理することができないことがあるから.

BOM付きと無しの違いは,先頭の3バイトがあるか無いかの違い.

UTF-8UTF-16

UTF-8 (8-bit UCS Transformation Format)
UCS-2で定義される文字集合を用いて記述された文字列をバイト列に変換する方式の1つ。1文字を1~6バイトの可変長マルチバイトに変換する。

UTF-16 (16-bit UCS Transformation Format):
UCS-2で定義される文字集合を用いて記述された文字列に、UCS-4の一部の文字を埋め込むためのエンコード方式。UTF-8と併用することができる。UCS-2で利用できる文字数を大幅に増やすことができる。

UCS-2(Universal multi-octet Character Set 2)

Unicodeとほぼ同じもので、UCS(Universal multi-octet coded Character Set)の中のある特定の部分を指し示すものです。UCS-4の群00の面00に配置され、2バイトの値として定義されています。世界の主要な言語で使われる文字のほとんどを収録しています。

UCS(Universal multi-octet Character Set 4)

実際にはUCS-4のことで,UCS-2はUCS-4の一部。UCS-4は4バイトの値で定義され、上位のバイトからそれぞれ群、面、区、点と呼ばれます。現在は群00の面00で定義されているUCS-2のみに文字が配置されていて、それ以外の空間には文字は配置されていません。

UTF-16の場合,2バイトで表現できる文字はそのまま2バイトで表し,それ以外の文字は4バイトで表す.
英数も日本語も全て2バイト.

UTF-8は,英数を1バイト,日本語は3バイトで表現.

つまり,英数の割合が多い場合はUTF-8のほうが効率が良いが,日本語が多い場合はUTF-16のほうが効率が良いといえる.
世界的に見ればUTF-8を標準として使用することが多い.

UTF相互変換をやってる人もいる.
qiita.com

Ubuntuでいろいろ

・RDP

1.Ubuntuのインストール

2.Ubuntu側の設定

ターミナルからxrdpをインストール

sudo apt install xserver-xorg-core xorgxrdp xrdp

ターミナルでxrdpの設定

cat <<EOF > ~/.xsessionrc
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
EOF

こっちも同様にターミナルで

sudo sed -e 's/^new_cursors=true/new_cursors=false/g' -i /etc/xrdp/xrdp.ini

cat <<EOF | \
sudo tee /etc/polkit-1/localauthority/50-local.d/xrdp-color-manager.pkla
[Netowrkmanager]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF

sudo systemctl restart xrdp
sudo systemctl restart polkit

最後にUbuntu機のIPアドレスを確認

ip -4 a

Ubuntuからログアウト

3.Windowsから接続

Win機からRDPと入力してリモートデスクトップ接続を起動
先ほど調べたIPアドレスを入力
ユーザー名とパスワードはUbuntuのものを入力

orenda.co.jp

Ubuntuでスクショ

スクリーンショットにはshutterを使用。aptでインストールする

$ sudo add-apt-repository ppa:linuxuprising/shutter
$ sudo apt install shutter

使い方はこんな感じ

shutter -e -n --disable_systray --window=.*XMTrading* -o '%y-%m-%d_%T.png'

window=で任意のウィンドウを指定する。-oオプションで名前を付けられる。

あとGoogleDriveにスクショを保存したかったのでマウントもした。

$ sudo add-apt-repository ppa:alessandro-strada/ppa
$ sudo apt-get update
$ sudo apt-get install google-drive-ocamlfuse

Googleアカウントの認証

google-drive-ocamlfuse

ブラウザが開くのでアカウントの認証とアクセスの許可をする。

最後にマウントしたいディレクトリを作ってマウント。

google-drive-ocamlfuse ~/GoogleDrive

なんかログアウトしたり再起動するとマウントが解除されてるので、アンマウントして再マウントとか何回かやってるとまたマウントできるようになる。

symfoware.blog.fc2.com
pineplanter.moo.jp

・Cronで定時実行

まずCronのインストール

sudo apt install -y cron

statusでCronの実行状態を見ることができる

sudo systemctl status cron

スケジュール設定はターミナルから設定できる

crontab -e

ここに設定を書き込む。設定例

0 0 * * 1-5 ~/dirauto.sh

先頭から分 時 日 月 曜日である。この例だと月曜から金曜(1-5)の0時0分にdirauto.shが実行される

*/30 * * * 1-5 DISPLAY=:10.0 ~/auto.sh

*/xのようにすることでxごとに実行されるようにもできる。
DISPLAY=っていうのでディスプレイを指定している。数字は「echo $DISPLAY」で調べられる。スクリーンショットするには必要だけど、つけなくても動くと思う。
あと、シェルスクリプトが動かないときはchmodで権限を付与してみると動くかもしれない。