ITインフラエンジニアのおつむの整理

ITインフラエンジニア(現ニート)の頭の整理場所。ほぼ日記になる予定。

Linux勉強(疎通確認、DNS)

LPIC2を勉強中。備忘として記載する。(LPIC以外で思いつきで調べたこと含む)

ポート番号指定の疎通確認方法

業務ではwindowsから疎通確認する機会が多いのでPowershellでtest-netconnectionコマンドをよく使用しているが、Linuxでは疎通確認したことないなと思い調べてみた。

nc -vz <宛先> <ポート番号>
nc -u -vz <宛先> <ポート番号> #udp
traceroute -T -p <ポート番号> <宛先>
traceroute -U -p <ポート番号> <宛先>
curl -v telnet://<宛先>:<ポート番号>

ncはcentosの最小インストールやAmazonLinuxに入っていなかったので、tracerouteとcurlが便利そうかな。 curlは覚えたら最近のWindowsコマンドプロンプトでも使えそう。ただUDPは確認できないが。

DNSについて

権威サーバとフルサービスリゾルバについてちゃんと知らなかったのでちょっと調べた。 ざっくりと権威サーバは自身のゾーン情報を回答するもの、フルサービスリゾルバはDNSキャッシュサーバで不明なDNS名は都度クライアントとして他のDNSサーバに問い合わせてキャッシュ更新するみたいなものならしい。

あとDNS関連コマンドはnslookupしかちゃんと使用したことなかったので個人的に気になるコマンドを整理。

nslookup <問合せDNS名> <DNSサーバ指定>
host -t <クエリタイプ> <ipアドレスもしくはDNS名>
dig <問合せDNS> <クエリタイプ: a, mx, any等>

digのanyオプションは全てのクエリタイプを確認できるので便利そう。あとdigは色々詳細が出てくるので、内容を覚えたい。

sshについて

実際にコマンドを確認する際、ipadのTermiusでサーバにssh接続してるんだけど、接続したまま他のアプリを操作していたら結構早めにssh接続が切れてしまった。sshdのClientAliveIntervalの設定をすればよいみたいな記事があるけど、teratermとかで接続している時はそんな頻繁に切れてない記憶があるので、ipadだとバックグラウンドにした際通信がされなくなって設定しても意味がなさそうな気がする。

とか色々調べたり考えたりしつつ、sshの余計なプロセスをkillしないとなーとプロセス一覧を見てたらどれをkillすれば良いのか迷った。

root     18407     1  0 Mar09 ?        00:00:00 /usr/sbin/sshd -D
root     31369 18407  0 12:16 ?        00:00:00 sshd: ec2-user [priv]
ec2-user 31401 31369  0 12:16 ?        00:00:00 sshd: ec2-user@pts/0
ec2-user 32510 31402  0 12:26 pts/0    00:00:00 grep --color=auto sshd

一番上はsshdのデーモン、一番下はgrepした結果。なので真ん中二つだけど、どっちでも良いのかな?と思いつつ、ec2-userでログインしてたし、pts(仮想端末?)を削除すれば良いかと思い、ec2-userのプロセスをkillしたらrootのほうもいなくなってた。 rootの方はなんなんだろと思い、privを調べてみたらprivilege separation(権限分離/非特権)らしい。初めて知った。

試しにrootの方をkillしようとしたら権限が足りないとなったのでsudoで削除したらec2-userのほうも削除された。そりゃそうか。

yum updateでtransactionが途中みたいなメッセージ出てた

AWXを使って月次update処理(yum)をしてるんだけど、なぜか以下メッセージが出てが起きてた。

{
    "changed": true,
    "results": [
        "Loaded plugins: extras_suggestions, langpacks, priorities, update-motd\n208 packages excluded due to repository priority protections\nResolving Dependencies\n--> Running transaction check\n---> Package containerd.x86_64 0:1.4.13-2.amzn2.0.1 will be updated\n---> Package containerd.x86_64 0:1.4.13-3.amzn2 will be an update\n---> Package runc.x86_64 0:1.0.3-2.amzn2 will be updated\n---> Package runc.x86_64 0:1.0.3-3.amzn2 will be an update\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch        Version               Repository              Size\n================================================================================\nUpdating:\n containerd      x86_64      1.4.13-3.amzn2        amzn2extra-docker       23 M\n runc            x86_64      1.0.3-3.amzn2         amzn2extra-docker      3.0 M\n\nTransaction Summary\n================================================================================\nUpgrade  2 Packages\n\nTotal download size: 26 M\nDownloading packages:\nDelta RPMs disabled because /usr/bin/applydeltarpm not installed.\n--------------------------------------------------------------------------------\nTotal                                               55 MB/s |  26 MB  00:00     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Updating   : runc-1.0.3-3.amzn2.x86_64                                    1/4 \n  Updating   : containerd-1.4.13-3.amzn2.x86_64                             2/4 \n  Cleanup    : containerd-1.4.13-2.amzn2.0.1.x86_64                         3/4 \n  Cleanup    : runc-1.0.3-2.amzn2.x86_64                                    4/4 \n  Verifying  : containerd-1.4.13-3.amzn2.x86_64                             1/4 \n  Verifying  : runc-1.0.3-3.amzn2.x86_64                                    2/4 \n  Verifying  : runc-1.0.3-2.amzn2.x86_64                                    3/4 \n  Verifying  : containerd-1.4.13-2.amzn2.0.1.x86_64                         4/4 \n\nUpdated:\n  containerd.x86_64 0:1.4.13-3.amzn2         runc.x86_64 0:1.0.3-3.amzn2        \n\nComplete!\n"
    ],
    "msg": "There are unfinished transactions remaining. You might consider running yum-complete-transaction, or \"yum-complete-transaction --cleanup-only\" and \"yum history redo last\", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).\n",
    "rc": 0,
    "invocation": {
        "module_args": {
            "lock_timeout": 30,
            "update_cache": false,
            "disable_excludes": null,
            "exclude": [],
            "allow_downgrade": false,
            "disable_gpg_check": false,
            "conf_file": null,
            "use_backend": "auto",
            "state": "latest",
            "disablerepo": [],
            "releasever": null,
            "skip_broken": false,
            "autoremove": false,
            "download_dir": null,
            "enable_plugin": [],
            "installroot": "/",
            "install_weak_deps": true,
            "name": [
                "*"
            ],
            "download_only": false,
            "bugfix": false,
            "list": null,
            "install_repoquery": true,
            "update_only": false,
            "disable_plugin": [],
            "enablerepo": [],
            "security": false,
            "validate_certs": true
        }
    },
    "changes": {
        "updated": [
            [
                "containerd",
                "1.4.13-3.amzn2.x86_64 from amzn2extra-docker"
            ],
            [
                "runc",
                "1.0.3-3.amzn2.x86_64 from amzn2extra-docker"
            ]
        ],
        "installed": []
    },
    "_ansible_no_log": false
}

yumが途中で失敗した・・・?理由がよくわからない。 とりあえず言われるがままyum-complete-transactionを実行してみた。

$ sudo yum-complete-transaction
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                                                            | 3.7 kB  00:00:00     
amzn2extra-docker                                                                                                                     | 3.0 kB  00:00:00     
amzn2extra-epel                                                                                                                       | 3.0 kB  00:00:00     
epel/x86_64/metalink                                                                                                                  | 8.7 kB  00:00:00     
epel                                                                                                                                  | 4.7 kB  00:00:00     
(1/4): amzn2extra-docker/2/x86_64/updateinfo                                                                                          | 6.4 kB  00:00:00     
(2/4): amzn2extra-docker/2/x86_64/primary_db                                                                                          |  89 kB  00:00:00     
(3/4): epel/x86_64/updateinfo                                                                                                         | 1.1 MB  00:00:00     
(4/4): epel/x86_64/primary_db                                                                                                         | 7.0 MB  00:00:00     
220 packages excluded due to repository priority protections
There are 1 outstanding transactions to complete. Finishing the most recent one
The remaining transaction had 91 elements left to run
Package matching cloud-init-19.3-3.amzn2.noarch already installed. Checking for update.
Package libicu-50.2-4.amzn2.x86_64 already installed and latest version
Package matching 32:bind-utils-9.11.4-9.P2.amzn2.0.4.x86_64 already installed. Checking for update.
Package matching python-urllib3-1.25.7-1.amzn2.0.1.noarch already installed. Checking for update.
Package file-5.11-36.amzn2.0.1.x86_64 already installed and latest version
Package matching libxml2-python-2.9.1-6.amzn2.4.1.x86_64 already installed. Checking for update.
Package 1:python2-lockfile-0.11.0-17.el7.noarch already installed and latest version
Package matching aws-cfn-bootstrap-1.4-32.amzn2.0.1.noarch already installed. Checking for update.
Package libtalloc-2.1.16-1.amzn2.x86_64 already installed and latest version
Package matching glibc-locale-source-2.26-35.amzn2.x86_64 already installed. Checking for update.
Package matching glibc-all-langpacks-2.26-35.amzn2.x86_64 already installed. Checking for update.
Package matching kernel-tools-4.14.186-146.268.amzn2.x86_64 already installed. Checking for update.
Package matching 32:bind-export-libs-9.11.4-9.P2.amzn2.0.4.x86_64 already installed. Checking for update.
Package strace-4.26-1.amzn2.0.1.x86_64 already installed and latest version
Package json-c-0.11-4.amzn2.0.4.x86_64 already installed and latest version
Package matching docker-19.03.6ce-4.amzn2.x86_64 already installed. Checking for update.
Package matching libgomp-7.3.1-9.amzn2.x86_64 already installed. Checking for update.
Package matching amazon-ssm-agent-2.3.1319.0-1.amzn2.x86_64 already installed. Checking for update.
Package matching selinux-policy-targeted-3.13.1-192.amzn2.6.3.noarch already installed. Checking for update.
--> Running transaction check
---> Package file-libs.x86_64 0:5.11-35.amzn2.0.2 will be erased
---> Package libnghttp2.x86_64 0:1.39.2-1.amzn2 will be erased
---> Package python-requests-toolbelt.noarch 0:0.8.0-1.el7 will be erased
---> Package python2-configargparse.noarch 0:0.11.0-1.el7 will be erased
---> Package python2-rsa.noarch 0:3.4.1-1.amzn2 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                                        Arch                         Version                                 Repository                         Size
=============================================================================================================================================================
Removing:
 file-libs                                      x86_64                       5.11-35.amzn2.0.2                       @amzn2-core                       2.9 M
 libnghttp2                                     x86_64                       1.39.2-1.amzn2                          @amzn2-core                       156 k
 python-requests-toolbelt                       noarch                       0.8.0-1.el7                             @epel                             277 k
 python2-configargparse                         noarch                       0.11.0-1.el7                            @epel                             106 k
 python2-rsa                                    noarch                       3.4.1-1.amzn2                           installed                         259 k

Transaction Summary
=============================================================================================================================================================
Remove  5 Packages

Installed size: 3.7 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : python2-configargparse-0.11.0-1.el7.noarch                                                                                                1/5 
  Erasing    : python2-rsa-3.4.1-1.amzn2.noarch                                                                                                          2/5 
  Erasing    : python-requests-toolbelt-0.8.0-1.el7.noarch                                                                                               3/5 
  Erasing    : file-libs-5.11-35.amzn2.0.2.x86_64                                                                                                        4/5 
  Erasing    : libnghttp2-1.39.2-1.amzn2.x86_64                                                                                                          5/5 
  Verifying  : libnghttp2-1.39.2-1.amzn2.x86_64                                                                                                          1/5 
  Verifying  : file-libs-5.11-35.amzn2.0.2.x86_64                                                                                                        2/5 
  Verifying  : python-requests-toolbelt-0.8.0-1.el7.noarch                                                                                               3/5 
  Verifying  : python2-rsa-3.4.1-1.amzn2.noarch                                                                                                          4/5 
  Verifying  : python2-configargparse-0.11.0-1.el7.noarch                                                                                                5/5 

Removed:
  file-libs.x86_64 0:5.11-35.amzn2.0.2                   libnghttp2.x86_64 0:1.39.2-1.amzn2           python-requests-toolbelt.noarch 0:0.8.0-1.el7          
  python2-configargparse.noarch 0:0.11.0-1.el7           python2-rsa.noarch 0:3.4.1-1.amzn2          

Complete!
Cleaning up completed transaction file

実行前に/var/lib/yum/transaction-* とか確認してみたけど、removingされた内容以外もいっぱい出力されてたけどなんだろ。 てか原因分からん。ansibleモジュールのオプション不足なのかネットワークが不安定だったのか、、、

(追記) そういえば最近自宅のネットワークが夜間めちゃくちゃネットワークスピードが遅くなることが起きてた。 au光マンションタイプだから他の部屋の人が大量に使用してると思われる。 自宅検証環境にAWXがあって、そこからAWS上のサーバに接続しているのでそれが原因か・・・?

自宅検証環境のSSDの調子がおかしい

最近気づいたらASRockで構築した自宅検証環境の様子がおかしい。 気づいたらストーレジが正常に認識されておらず、そのストレージ上のVMが停止している。

以下当たりの情報をもとにSSDの状態を見ても、現状は問題なさそう?SMART情報ってちゃんと見たことないから自信ないけど。 chiritsumon.net

次回再発したら見てみるか、、、

※正常時の備忘

[root@esxi67:/var/log] esxcli storage core device smart get -d  t10.NVMe____CT500P2SSD8_____________________________DF00004050A77964
Parameter                     Value  Threshold  Worst
----------------------------  -----  ---------  -----
Health Status                 OK     N/A        N/A
Media Wearout Indicator       N/A    N/A        N/A
Write Error Count             N/A    N/A        N/A
Read Error Count              N/A    N/A        N/A
Power-on Hours                4077   N/A        N/A
Power Cycle Count             20     N/A        N/A
Reallocated Sector Count      0      95         N/A
Raw Read Error Rate           N/A    N/A        N/A
Drive Temperature             57     70         N/A
Driver Rated Max Temperature  N/A    N/A        N/A
Write Sectors TOT Count       N/A    N/A        N/A
Read Sectors TOT Count        N/A    N/A        N/A
Initial Bad Block Count       N/A    N/A        N/A
[root@esxi67:/var/log]
[root@esxi67:/var/log] esxcli storage core device smart get -d  t10.NVMe____CT500P1SSD8_____________________________17E358280175A000
Parameter                     Value  Threshold  Worst
----------------------------  -----  ---------  -----
Health Status                 OK     N/A        N/A
Media Wearout Indicator       N/A    N/A        N/A
Write Error Count             N/A    N/A        N/A
Read Error Count              N/A    N/A        N/A
Power-on Hours                16411  N/A        N/A
Power Cycle Count             40     N/A        N/A
Reallocated Sector Count      0      95         N/A
Raw Read Error Rate           N/A    N/A        N/A
Drive Temperature             62     87         N/A
Driver Rated Max Temperature  N/A    N/A        N/A
Write Sectors TOT Count       N/A    N/A        N/A
Read Sectors TOT Count        N/A    N/A        N/A
Initial Bad Block Count       N/A    N/A        N/A

ちょっと勉強意欲がわいてきた

最近ポケモンUniteにはまったのと、自転車のミニベロロード(tern serge)購入して自分で没頭できる趣味が増えてきたので少しずつ自分を取り戻せてきた感じ。 前は仕事の勉強しなきゃと追い込まれてなんか燃え尽き症候群のようになったり病んでいたりしたけど徐々に回復中。 やっぱ没頭するのはいいね。

というわけで、少しずつ勉強意欲が復活してきたのでAWS勉強しようかなと思ったのですが、AWSの操作を実際にキャプチャとかに残したいなと思いキャプチャ取得関係を少し調べたり作成したりしてました。調べたことをちょっと紹介。

Windows(10想定)デフォルトの機能

Win+Shift+S

画面が静止して、キャプチャする領域を指定してクリップボードに保存できる。会社で今のところ最も使ってるショートカットと言っても過言じゃない。クリップボードなので、そのままチャットツールやエクセルにペースト可能。クリップボードに保存されたら画面右下に通知が出て、それをクリックするとそのまま画像の編集画面に行くのでちょっとした画面の指摘したいときはそこで赤い丸とかで囲んでチャットで聞いたりできて便利。おすすめ。

Win+PrintScreen

プリントスクリーンで取得される画面(基本全画面)を画像ファイルとして保存までしてくれるショートカット。保存先はデフォルトでユーザーごとのピクチャのフォルダ配下にスクリーンショットのフォルダが自動作成されてそこで作成されている。全画面のキャプチャになってしまうので、デュアルディスプレイだと2画面の横断して取得されてしまうので、次に紹介する方が使い勝手がいいと思う。

Win+Alt+PrintScreen

アクティブな画面を画像ファイルとして保存できるショートカット。↑のショートカットよりこっちの方が使う頻度は今後多いと思われる。ただ保存先がなぜかユーザーごとのビデオ配下にスクリーンショットとして作成されるので保存先が変。あとキャプチャ名がアクティブ画面の名前なので更新日付順にソートしないとちょっと見にくい。てかこれらのショートカット機能知らなかったのでWinShotをインストールして使ってたが今後はいらんな。。。

(オマケ)Win + g

ビデオ録画可能な画面が表示される。ブラウザとかの操作画面のビデオとか。PCから出力されている音声もちゃんと入ってた。ただ自分のPCが少し古くてスペック不足なのかわからないが音声はちょっとぶつぶつしていた。

エクセル証跡

↑で紹介したもの便利だが、個人的にエクセルに保存して縦スクロールしながら証跡を見たいなーと思い、VBAスクリプトとか落ちてないか調べて改修しました。 ※以下参考

qiita.com

' 参考 https://qiita.com/snaruse0608/items/4d6022c43e65fe0eee4c
Declare Function OpenClipboard Lib "user32" (Optional ByVal hwnd As Long = 0) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As Long)

Sub クリップボードにコピーした画像を貼り付ける()
    OpenClipboard
    EmptyClipboard
    CloseClipboard
    Dim CB As Variant
    Dim position As Long
    Dim size As Double: size = 1
    Do While True
        CB = Application.ClipboardFormats
        If Not ActiveCell.Row = 1 Then
            If StrConv(ActiveCell.Offset(-1, 0).Value, vbUpperCase) = "EXIT" Then GoTo Quit
        End If
        On Error GoTo ErrorQuit
        For i = 1 To UBound(CB)
            If CB(i) = xlClipboardFormatBitmap Then
                ActiveSheet.Paste
                'Selection.ShapeRange.Height = Cells(1.1).Height * position
                Set objShp = ActiveSheet.Shapes(Selection.Name)
                objShp.LockAspectRatio = msoTrue
                position = objShp.Height \ Cells(1.1).Height
                ActiveCell.Offset(position + 2, 0).Select
                OpenClipboard
                EmptyClipboard
                CloseClipboard
            End If
        Next i
        DoEvents
        Sleep 1
    Loop

Quit:
    MsgBox "停止しました。", vbInformation
    ActiveCell.Offset(-1, 0).ClearContents
    GoTo ToEnd
ErrorQuit:
    MsgBox "予期せぬ動作のため停止しました。", vbInformation
ToEnd:
End Sub

見直しとかしてないけど使った感じの挙動は問題ないと思ってる。改修点は以下。

  • スクリプトでは33行ごとにキャプチャを張り付けていたので、張り付けたキャプチャの高さに合わせて次のセルを選択するように
  • CPU使用率が20-40%位になっていたのでSleep処理を追加

修正した後に気付いたが、コメント欄で同じようなアドバイスがすでに書いてあった。。。まあ自分のVBA勉強だと思って、、、

最近ブログさぼっちゃった

ちょっと忙しかったり余裕がなかったりでブログちょっと期間空いちゃった。
週末アウトドアしたんすよ!それでへとへとになってしまい(笑) 楽しかったー。色々アウトドアグッズ買いたくなってしまった。次回は自分用の椅子を購入するのと、寝るときのマットだな。100均で買った安いヨガマットじゃ十分休めなかったよ。。。

で、ちょっとブログ更新さぼっちゃったなーと思い、あとでゆっくり投稿しようと思っていた自分が普段使用しているGASスクリプトをさっき投稿してみました!
もしここの記事を見つけることができた人は使ってみてください~。

チャットツール(Slack等)と連携したGmail整理用GASスクリプト

背景など

  • メインのメールでGmailを使用しており、基本的にInboxは空にして何を読んでいないか把握できるようにしたい
  • 良く届くメールやアラートメールは自動でアーカイブしたい。 ただちゃんと認識もしたい
  • Gmailの機能で自動ラベル付け・自動既読。GASスクリプトを定期的に実行し、ラベル付けしたメールをチャットツール(SlackやMattermost)に通知し、自動でアーカイブさせる

スクリプト内容

function myFunction() {
    //notification
    var pcg1 = "<channelName1>"; //★1
    var pug1 = "<webhookURL1>"; //★1
    var threads1 = GmailApp.search('label:#notification in:inbox'); //★2
    webhook(pcg1, pug1, threads1);
    
    //alert
    var pcg2 = "<channelName2>"; //★1
    var pug2 = "<webhookURL2>"; //★1
    var threads2 = GmailApp.search('label:#alert in:inbox'); //★2
    webhook(pcg2, pug2, threads2);
    
}

function webhook(postChannelGmail, postUrlGmail, threads) {
    var count = threads.length;
    Logger.log(postChannelGmail + "対象件数:" + threads.length); 

    for(var i = 0; i < count; i++) {
        var lastDate = threads[i].getLastMessageDate();
        var message  = threads[i].getMessages()[0]; // Get first message

        var datetime = lastDate.getFullYear() + "/" + (lastDate.getMonth() + 1) + "/" + lastDate.getDate()
        + " " + lastDate.getHours() + ":" + lastDate.getMinutes() + ":" + lastDate.getSeconds();

        Logger.log(datetime + " 件名:[" + threads[i].getFirstMessageSubject() + "]");

        //slackに通知
        sendHttpPost("* _**From**_ :" + message.getFrom() + "\n* _**Title**_ :" + threads[i].getFirstMessageSubject() + " \n* _**Full Text**_ :" + threads[i].getPermalink(), "Gmail",postChannelGmail, postUrlGmail);

        //アーカイブ
        threads[i].moveToArchive();
    }
  }
  
  function sendHttpPost(message, username, postChannel, postUrl)
  {
    var jsonData =
    {
       "channel" : postChannel,
       "username" : username,
       "text" : message
    };
    var payload = JSON.stringify(jsonData);
    var options =
    {
      "method" : "post",
      "contentType" : "application/json",
      "payload" : payload,
      "validateHttpsCertificates" : false
    };
  
    UrlFetchApp.fetch(postUrl, options);
  }

使い方

  • ★1の部分にチャットツールのチャンネル名、webhook設定したチャンネルのURLを入れる
  • ★2のところでチャットツールへ通知したいGmailのフィルターを設定している。自分は通知用(label:#notification in:inbox)、アラート用(label:#alert in:inbox)にチャンネルを分けて設定してる。1つでいい場合は該当の4行を削除すればいいよ。
  • 上記の通り、Gmailのラベルでフィルターしてる。なのでGmailの自動処理設定でラベル付け、自動既読を設定する。
  • 後は当該スクリプトをGASに登録して、定期的に実行している(自分は5分ごとにしている)

所感

  • 一時期メールが何百通も未読になってしまい、余裕があるタイミングで一気に確認してアーカイブしたりしてた。確認が大変なので適当な確認になってたし、ちょっと重要なメールを見逃していたりしてだいぶうんざりしてたんだけど、これができるようになり整理方法が増えたのがだいぶでかい。
  • あと自分でdockerで構築しているMattermost環境があるのでそれを有効活用したいってのもあった
  • ただまずは自分のGmailの分類を決める事が必要なので、どっちかというとそっちの方が大変よ、、、全く決まってないとき自分は二日間くらいかけて管理方法を決めたりしてました。(結局その時と管理方法も変わりましたが。たぶんこれからも変わりそう)
  • これのほかにも定期的に届いて残す必要のないメールを定期的に削除するGAS、未読メールは特定の時間にチャットツールにリマインドするGASもあります。気が向いたらまた投稿します。

ディスプレイ届きました!!!

よっしゃ!届いた!! 画面見やすい!快適!好き!!!

詳しいレビューやらなんやらは少し使用感を確認してから気が向いたらしようと思ってます。
もっと早くから買えばよかったね。まぁ場所が狭いからしょうがなかったが。

今日は業務終わった後に久しぶりにAmazon photosの整理をしてた。 Amazon プライム会員だと写真のストレージ無制限なんですよね。ありがてぇ。
まぁ自分スマホをPixel4使用しているのでGoogle photoもスマホ経由であれば無制限ですが。
ただGoogle photoって少し画面が見にくいんですよね。Amazon photosは見やすい印象。

あと家族で共有できるファミリーフォルダが地味に便利。
嫁と写真を撮ったやつをそこに放り込むだけでいいので。昔はLINEとかで都度送付してたのが、自動バックアップされてる写真を共有するだけでよくなった。

あとはビデオ系をどうするかだよなぁ。ビデオは無制限のクラウドストレージないし。
自宅でNAS構築するか、都度HDDとかに取り込むか。
HDD取り込みは面倒だしNASかなぁ。。。24時間つけっぱなしにしている検証用PCいるし。