コンテンツにスキップ

Home

Firefox終了時にBookmarkをエクスポート

Firefox 終了時に Bookmark を HTML 形式で任意のディレクトリにエクスポートします。

xBrowserSync を使ってたらブックマークがたくさん消えてしまった経験があるため、定期的にバックアップをとりたいって思いました。

about:config の設定をすれば対応できるのがわかったので設定手順を残します。

  1. about:config を開く
  2. 以下設定をする
key value
browser.bookmarks.autoExportHTML true
browser.bookmarks.file 保存先のパス(ファイル名含む)
  1. Firefox を再起動する。

これで、Firefox 終了時に保存先パスにエクスポートされます。

参考

『自己肯定感という呪縛』

転職活動をしていると、自分の強みが分からず悩んでいました。自己肯定感が低いから強みが見つからないのだろうと思い、この書籍を購入しました。

自己肯定感がどういうものなのか、自己肯定感を高めるにはどうしたらいいかを、心理学調査や文化的背景を踏まえながら説明してくれています。

本書の中で、不安になることは悪くなく、むしろ成長のためには必要、的なことが書かれていて、ネガティブ思考な私としては救われたような気持ちになりました。

{{< blogcard "https://www.amazon.co.jp/dp/B09N91B8XZ/" >}}

以下は私が本書で気になった部分の抜粋です。(自分用メモ)


第1章 | 安易な「自己肯定感を高めないと」信仰の落とし穴

  • 自己肯定感とは、生まれ落ちた文化のもとで生き抜く力をつけていくことによって得られるもの。
  • つまり、自己肯定感が高いということは、「適応力があること」を意味し、自信をもって社会に向かっていけることにつながる。
  • 向上心が強い人は、自己肯定感がそこまで高くない傾向にある。逆に向上心が低い人は、自己肯定感が高くなっている。
  • 自己肯定感はただ高ければいいというようなものではない。ただ褒めるだけでは真の自己肯定感は得られない
  • 褒めれば自己肯定感が高まるというのは幻想にすぎない。こどもに対して褒めて育てて叱らない考え方が広まっている。その結果、打たれ弱く、傷つきやすくなり、きつい状況で頑張れなくなっている。
  • 向上心や能力を認め、成長していくように期待を込める、つまり成長していく存在として認めることが大切。
  • 人から期待されると自然と頑張るもの。そこに適応感や達成感が得られれば、自己肯定感が高まる。
  • 期待に応えられず傷ついているときこそ、向上心をもって頑張る姿勢、頑張ったプロセスを評価し、認めてあげることが大切

第2章 | 「欧米人の自己肯定感は高い」は、ほんとうか?

  • 欧米人は自己肯定感が高く、日本人は自己肯定感が低いという調査結果が出ているが、文化的要因が関係している。
  • アメリカの幼稚園・保育園の先生や園児の保護者は、「自信」をもてる子になることが最も大切だとしている
  • 日本の幼稚園・保育園の先生や園児の保護者は、「共感・同情・他の人への心配り」ができる子になることが最も大切だとしている。
  • 「生徒の学習到達調査(PISA)」でアメリカと日本を比較した場合、日本 > アメリカとなっている。欧米人の自己肯定感が高さは自分を過大評価する心理を反映している。
  • 意識調査を日本語で答える場合と、英語で答える場合で回答傾向が違ってくる。
  • できない人ほど楽観的で、自分の能力を実際以上に見積もり、できる人ほど不安が強く、自分の能力を実際以下に見積もる。
  • 日本で自己肯定感の向上といって褒めることばかりしても、文化的背景的に合わず、傷つきやすく、心が折れやすい子どもや若者が増えてしまった。
  • 本来、日本人は忍耐強い。感情をできるだけ抑制して相手に気をつかわせないようにする。

第3章 | 「自己肯定感が高くないと幸せになれない」という幻想

  • 自己肯定感を高める上で大切なことは、たとえ結果が出なくてもバンがっていることを認めてあげること、失敗してもそれを反省し、今後に生かそうとする姿勢を認めてあげること。
  • 思春期から青春期に、自己否定しなつつ、もがき苦しむ中で、自己形成が進んでいく。その中でも成長しつつある自分を感じることが、真の自己肯定感につながっていく。
  • 褒めることの弊害として、「自分は特別」という思いが強くなり、地道に頑張ることができないナルシスト的な性格になりやすい。
  • 人とうまくやっていけるかどうかは、自己肯定感を大きく左右する要因と言える。社会規範が内面化されることで、社会への適応感が高まり、自らの社会性に誇りを感じるようになっていく。
  • 下方比較というのは、自分より劣る人と比べることを指す。ひどく傷ついたときの一時的な対処法としては有効だが、こればかりに頼っていると、成長路線からいつの間にか逸れていってしまう。
  • 上方比較というのは、自分より優れた人と比べることを指す。上方比較には向上心を刺激する効果がある。ほんとうに仕事ができる人、あるいは「できる人」になるための成長軌道に乗っている人は、無意識のうちに上方比較をしている。例としてトップアスリートが挙げられる。
  • 「こんな自分じゃダメだ」というのは、表面上は自己否定であっても、ほんとうに自己否定しているわけではない
  • そこには自分に対して期待する気持ちがある。自分に期待しているからこそ、もっとマシな自分になろうと思う。さらに言えば、期待に応えられる自分だと信じているからこそ、今の自分じゃダメだと思える。
  • きつい状況に追い込まれても、諦めずに頑張ることによって、逆境を乗り越えることができた、という経験を積み重ねることで自己効力感が手に入る。ただ、頑張っても結果につながらない場合は、プロセスに目を向けるように促すことが大切。

第4章 | 成功者・一流アスリートがもつ真の自己肯定感とは?

  • 成功者ほど、安易な自己肯定をしない
  • ネガティブな感情を感じるのは、悪いことではなく、むしろ高いモチベーションを持って取り組んでいる証拠と言える。
  • 失敗を直視し、改善点を発見し、次につなげていくことで仕事力が高まっていく。
  • 自己を肯定するなら、今の自分の力ややり方を肯定するのではなく、絶えず不安を抱えつつ今の自分を乗り越えようともがき苦しむ自分の姿勢こそ肯定すべき。

第5章 | 「真の自己肯定感」はこうして育まれる

  • 自己肯定感というのは、あくまでも地道な努力の結果として自然に身につくものであって、小手先のテクニックで手に入るようなものではない。
  • 自己評価の形成要因の整理。自己肯定感に関して言えば、これらの自己評価要因が絡み合って自己肯定感が形成されていく。
  • 他者から与えられた評価や評価的態度
  • 他者との比較
  • 実際の成功・失敗体験
  • 理想とする自己像との比較
  • 自己肯定感を高めるキーワードは向上心と好奇心。
  • 人生に挫折はつきもの。大事なのは打たれ強さを身につけること。
  • 自己肯定感は他人との関係性の中で育まれていく。
  • ポジティブな空想は、それによって安心してしまい、気が緩み、モチベーションが低下するといったネガティブな効果をもつ可能性が高いと言えそう。
  • 「不安の効用」を活用すれば、能力や質の向上にもつながる。
  • 日本の仕事の着実さは、不安の強さがもたらしている。
  • 自己を超えた何ものかのために検診することが大切。だれかのために役に立っている自分、世の中のためになることに必死に取り組んでいる自分、そんな自分を感じるとき、自然に自己肯定感が高まっていく。

AfterShokzのOPENCOMMを購入

1月の初めにAmazonセールでAfterShokzのOPENCOMMが安くなってたので購入しました! 19998円 → 14998円

PXL_20220106_103308519PXL_20220106_102948612

骨伝導イヤホンは同社のOPENMOVEを2ヶ月前に買って使い心地が良かったので、今回はWeb会議用に購入。仕事のミーティングや転職の面接で使っていますが今のところ問題はなさそう。

イヤホン・マイクともに問題ないので気になっている人は試してみる価値はありますね。

概ね満足しているのですが、1つ欠点と思ってるところは、パーカーなどフードがある服を着ているときは、バンドが当たって定位置からズレてしまうとこです。

それを踏まえてもとても良いイヤホンです。これからも長く使っていきたいと思います。

AWS SDK for PHP を使ってメール送信

Amazon SES を初めて使ったのでメモ。 regionがAsia Pacific (Tokyo)の場合は制限があるみたいなので注意。

最大送信量 1日あたりの送信割り当て
1秒あたり1通 24時間あたり200通

前提

コード

<?php
require 'vendor/autoload.php';

$client = new \Aws\Ses\SesClient([
    'version' => 'latest',
    'region' => 'ap-northeast-1',
    'credentials' => [
        'key'    => 'hogehoge',
        'secret' => 'fugafuga',
    ],
]);

$from = 'from@example.com'; // Amazon SESでVerifiedしたメールアドレス
$to = 'to@example.com';
$charset = 'UTF-8';
$subject = '件名';
$body = '本文';

$result = $client->sendEmail([
    'Destination' => [
        'ToAddresses' => [$to],
    ],
    'ReplyToAddresses' => [$from],
    'Source' => $from,
    'Message' => [
        'Body' => [
            'Text' => [
                'Charset' => $charset,
                'Data' => $body,
            ],
        ],
        'Subject' => [
            'Charset' => $charset,
            'Data' => $subject,
        ],
    ],
]);

// 送信ID
$messageId = $result['MessageId'];
echo "Email send. Message ID: {$messageId}\n" ;

HTML形式で送信したい場合は、TextHtmlにすればOK。

参考

はてなブログカードを使ってカード型のリンクを貼る

htmlにこれを書くだけでカード型リンクになります。

<iframe
  class="hatenablogcard"
  style="width:100%;height:155px;max-width:500px;"
  src="https://hatenablog-parts.com/embed?url=【ブログURL】"
  frameborder="0"
  scrolling="no"
>
</iframe>

自分のブログでも使いたいけど、いちいち書くのが面倒だったので、<a>class="blogcard"を定義したらカード型リンクになるような JavaScript を書いた。

<a class="blogcard" href="xxxx"></a>
// jQueryです
$("a.blogcard").each(function () {
  const url = $(this).attr(`href`);
  const iframe = $(`<iframe>`)
    .addClass(`hatenablogcard`)
    .attr(`src`, `https://hatenablog-parts.com/embed?url=${url}`)
    .attr(`frameborder`, 0)
    .attr(`scrolling`, `no`);
  $(this)[0].outerHTML = iframe[0].outerHTML;
  $(this).remove();
});
iframe.hatenablogcard {
  width: 100%;
  height: 150px;
  max-width: 500px;
}

参考

{{< blogcard "https://dev.classmethod.jp/articles/embed-link/" >}}

Amazon Lambda Layer の作成

まず、Amazon Lambda Layer とは下記のものです。

一言で言えば、複数のLambda関数でライブラリを共有できる仕組みです。

Lambda の Python は標準である程度ライブラリが利用できるようになってますが、 pandas や numpy 、 requests など利用できないライブラリもあります。 「ライブラリを追加したい + 複数のLambdaで共有したい」ときに Amazon Lambda Layer を活用すると便利になります。 また、既存のライブラリ以外にも独自で作成したライブラリもLayer化すれば共有できるのでいい感じです。

手順

  1. ライブラリを ZIP にまとめる
  2. AWS Lambda から レイヤーの作成を行う
  3. Lambda関数からレイヤーを選択する

以下、 requests を例に説明します。

1. ライブラリを ZIP にまとめる

ターミナル等から任意のディレクトリで以下を実行する。

mkdir python
pip install -t python requests
zip -r9 layer.zip python
2. AWS Lambda から レイヤーの作成を行う
  1. AWS Lambdaのコンソールから 2. その他リリース > レイヤー を選択する。
  2. 画面右上の レイヤーの作成 ボタンからレイヤーの作成を行う。
  3. 各項目を適当に入力して、さっき作成したZIPファイルをアップロードし、作成ボタンを押す。これでレイヤーの作成は完了です。
3. Lambda関数からレイヤーを選択する
  1. requests を使いたいLambda関数を開き、関数の概要 のところにある Layers を選択する。
  2. レイヤーの追加 ボタンからさっき作成したレイヤーを選択する。
  3. import requests を定義すれば、利用できます。

参考

Firefoxからタブを非表示にする

Firefox でタブを縦で使うために Tree Style Tab - ツリー型タブ をインストールしています。 ただ、これを使うとタブが2箇所に表示されてて既存のタブが邪魔なので、userChrome.cssを使って非表示にしたので、備忘録として残しておきます。

Firefox before

userChrome.css の作成場所

アドレスバーにabout:supportを入力してトラブルシューティング情報にアクセスする。 アプリケーション基本情報に プロファイルフォルダー とあるので、finder や explorer で開きます。

トラブルシューティング

プロファイルフォルダー を開いたら、 chrome フォルダを作成します。 userChrome.css の作成場所になります。

finder

コード

@charset "UTF-8";
/* chrome://browser/content/browser.xhtml */

/* タブの非表示 */
#titlebar {
  display: none;
}

/* サイドバーの微調整 */
#tabbrowser-tabs {
  visibility: collapse !important;
}

#sidebar {
  min-width: 65px !important;
}

結果

保存したら、Firefox を再起動して確認します。ブラウザ上部のタブが消えてるはずです。

Firefox after

追記 2022-01-19

userChrome.css が効かない場合がある。 about:config を開いて、 toolkit.legacyUserProfileCustomizations.stylesheets を入力。 値を true に変更しておこう。

サブブランドやMVNOの通信料金比較

プライベートでサブブランドや MVNO の通信料金を調べる機会があったのでまとめました。

2021 年 10 月末時点での通信料金比較です。 5 社をピックアップして比較しました。

今回の比較は月々にかかる料金と通信の品質をメインに調べています。

基本料金

音声通話 + データ通信の料金の一覧です。(税抜)

基本データ容量 ahamo UQ mobile ワイモバイル OCN モバイル ONE BIGLOBE モバイル
1GB - - - 700 円 980 円
3GB - 1480 円 1980 円 900 円 1200 円
6GB - - - 1200 円 1700 円
10GB - - - 1600 円 -
10GB - - - - 3400 円
15GB - 2480 円 2980 円 - -
20GB 2700 円 - - - 5200 円
25GB - 3480 円 3780 円 - -
30GB - - - - 7450 円

その他比較

項目 ahamo UQ mobile ワイモバイル OCN モバイル ONE BIGLOBE モバイル
回線 ドコモ au ソフトバンク ドコモ ドコモ / au (選択可能)
5G × ×
通話料金 22 円/30 秒 22 円/30 秒 22 円/30 秒 10 円/30 秒 1 10 円/30 秒 1
無料通話分 1 回につき 5 分間まで無料 なし なし なし なし
家族割 なし あり 2 あり あり 3 あり
割引料金 - 全回線が対象
3GB: 900 円/月
15GB: 1900 円/月
25GB: 2700 円/月
2 回線目以降が対象
3GB: 900 円/月
15GB: 1900 円/月
25GB: 2700 円/月
2 回線目以降が対象
200 円割引
2 回線目以降が対象
200 円割引

通信速度の比較

ahamo ≧ ワイモバイル ≧ UQ mobile > OCN モバイル ONE > BIGLOBE モバイル

ahamo、ワイモバイル、UQ mobile の通信品質は安定しているので、いつでも速くて快適に使えます。 OCN モバイル ONE、BIGLOBE モバイルは、平日の昼辺りで通信速度が低下しますが、インターネットを普通に利用できる程度の通信速度は出るので、あまり気にするほどでもなさそうです。

まとめ

  • データ通信の安定を選ぶなら、ahamo・UQ mobile・ワイモバイル
  • 電話を書けることが多いなら、ahamo
  • 安さを求めるなら、OCN モバイル ONE

  1. 専用アプリから電話をかけると 10 円/30 秒で通話可能です。専用以外のアプリからの通話料金は 22 円/30 秒になります。 

  2. でんきコース または インターネットコース のどちらかに加入した場合に適用されます。詳細はこちらから。 

  3. OCN 光モバイル割 に加入した場合に適用されます。詳細はこちらから。 

Amazon API Gatewayでバイナリデータを返す

API Gateway を使ってバイナリデータを返却する場合、設定が必要だったのでメモしとく。

困ってること

画像が表示されない。

細かいこと書くのがめんどうなので図にしました。

occurrence.png

やったこと

API Gatewayの設定でバイナリメディアタイプに text/html を設定

Lambdaプロキシ統合を使用して、バイナリデータを処理するAPI Gateway APIを設定するにはどうすればよいですか? によると、ブラウザから送信してるAcceptヘッダーのデフォルトが text/html らしいので、バイナリメディアタイプとして追加する必要があるらしい。

注: ウェブブラウザは複数の値を含む Accept ヘッダーを自動的に送信します。デフォルトでは、最初の値は常に html/text です。API Gateway は最初の値のみを参照するので、text/html をバイナリメディアタイプとして API に追加する必要があります。そうでないと、次のエラーメッセージが表示されます

Linuxでユニットファイルを作って自動起動させる

PHPのビルトインサーバとNode.js Express アプリケーション用のビルトインサーバのユニットファイルを作成して自動起動できるようにしました。 凝ったことをしないのであれば、service ファイルを作成するだけでOKなので簡単です。

実行させるコマンドは以下です。

  • PHP
  • php -S 0.0.0.0:8000 public/index.php -t public
  • Node.js
  • node ./bin/www

service ファイルに書くときは、 php コマンドや node コマンドをフルパスで書くと確実に動くので、パスを確認しておきます。

$ which php
/usr/bin/php
$ which node
~/.nvm/versions/node/v16.11.1/bin/node

確認したら、service ファイルを作ります。ファイル名はなんでもOKです。ここではphp.servicenodejs.serviceとします。

  • /etc/systemd/system/php.service
[Unit]
Description = serve php

[Service]
ExecStart = /usr/bin/php -S 0.0.0.0:8000 public/index.php -t public
Restart = always
Type = simple
WorkingDirectory = /home/ec2-user/php-app
User = ec2-user
Group = ec2-user

[Install]
WantedBy = multi-user.target
  • /etc/systemd/system/nodejs.service
[Unit]
Description = serve nodejs

[Service]
ExecStart = /home/ec2-user/.nvm/versions/node/v16.11.1/bin/node ./bin/www
Restart = always
Type = simple
WorkingDirectory = /home/ec2-user/nodejs-app
User = ec2-user
Group = ec2-user

[Install]
WantedBy = multi-user.target

WorkingDirectory にアプリケーションのルートディレクトリを指定して ExecStart にコマンドを指定します。他の項目については説明できないので各々で調べてください。

それでは、ビルトインサーバを起動しましょう

$ sudo systemctl start php
$ sudo systemctl start nodejs

開始したら状態を確認します。以下のようになっていればOKです。

$ sudo systemctl status php
● php.service - serve php
   Loaded: loaded (/etc/systemd/system/php.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-10-14 01:30:20 UTC; 1h 8min ago
 Main PID: 10612 (php)
   CGroup: /system.slice/php.service
           └─10612 /usr/bin/php -S 0.0.0.0:8000 public/index.php -t public

$ sudo systemctl status nodejs
● nodejs.service - serve nodejs
   Loaded: loaded (/etc/systemd/system/nodejs.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-10-14 02:16:43 UTC; 23min ago
 Main PID: 8875 (node)
   CGroup: /system.slice/nodejs.service
           └─8875 /home/ec2-user/.nvm/versions/node/v16.11.1/bin/node ./bin/www

自動起動の設定をする場合は、以下コマンドを実行してください。

$ sudo systemctl enable php
$ sudo systemctl enable nodejs