動かざることバグの如し

近づきたいよ 君の理想に

NFSマウント時の最強オプション晒す

まあタイトルは嘘で、AWSとか大御書の推奨オプションをメモするだけ(

AWS

rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport

マウントに関する追加の考慮事項 - Amazon Elastic File Systemに記載されている。

  • rsize=1048576 – 各ネットワーク読み取りリクエストに対して NFS クライアントが受信できるデータの最大バイト数を設定します。この値は、EFS ファイルシステム上のファイルからデータを読み取る際に適用されます。パフォーマンスが低下しないように、可能な限り大きいサイズ (最大 1048576) を使用することをお勧めします。
  • wsize=1048576 – 各ネットワーク書き込みリクエストに対して NFS クライアントが送信できるデータの最大バイト数を設定します。この値は、EFS ファイルシステム上のファイルにデータを書き込む際に適用されます。パフォーマンスが低下しないように、可能な限り大きいサイズ (最大 1048576) を使用することをお勧めします。
  • hard – NFS リクエストがタイムアウトした後の NFS クライアントのリカバリ動作を設定します。これにより、NFS リクエストは、サーバーが応答するまで無期限に再試行されます。データの整合性を確保できるように、ハードマウントオプション (hard) を使用することをお勧めします。soft マウントを使用している場合は、timeo パラメータを 150 デシ秒 (15 秒) 以上に設定してください。これにより、ソフトマウントに固有のデータ破損が生じるリスクを最小限に抑えることができます。
  • timeo=600 – NFS クライアントがレスポンスを待機するのに要するタイムアウト値を設定してから、NFS リクエストを 600 デシ秒 (60 秒) に設定します。タイムアウトパラメータ (timeo) を変更する必要がある場合は、少なくとも 150 の値を使用することをお勧めします。これは 15 秒に相当します。これにより、パフォーマンスの低下を抑えることができます。
  • retrans=2 – NFS クライアントでリカバリアクションを試行する前に、そのアクションのリクエスト試行回数を 2 回に設定します。
  • noresvport – ネットワーク接続が再確立された時に、新しい Transmission Control Protocol (TCP) 送信元ポートを使用するように、NFS クライアントに指示します。これにより、ネットワーク復旧イベント後、EFS ファイルシステムでの中断のない可用性が保証されます。
  • _netdev – /etc/fstab に存在する場合、クライアントは、ネットワークが有効になるまで、EFS ファイルシステムをマウントすることはできません。

Alibaba Cloud

vers=4.0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport

Linux で NFS ファイルシステムをマウントする - ファイルシステムのマウント| Alibaba Cloud ドキュメントセンター

AWSとバージョンの指定有無しか違いなかった。もうこれで確定じゃん

Mac OSでフォーマットできないデバイスを初期化する

GUIでさっくりできるようにしろ令和だぞ

概要

Mac OSには標準で「ディスクユーティリティ」というディスク管理ツールがある。内蔵/外付けのディスクやUSBメモリGUIでフォーマットできるアプリで、Windowsでいうディスクの管理にあたる。

が、LinuxのUSBインストーラー用に改造したUSBメモリとかだと正常に初期化できなかったりする。そこでコマンドツールで無理やり初期化する。

やり方

まずは diskutil list でディスクの一覧表示。ここで初期化したい対象のディスクのパスを控えておく。今回は「/dev/disk2」

diskutil list


/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +960.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume MacOS                   107.4 GB   disk1s1
   2:                APFS Volume Preboot                 23.1 MB    disk1s2
   3:                APFS Volume Recovery                515.1 MB   disk1s3
   4:                APFS Volume VM                      4.3 GB     disk1s4

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *16.0 GB    disk2
   1:             Windows_FAT_32 boot                    268.4 MB   disk2s1
   2:                      Linux                         15.7 GB    disk2s2

いざ初期化。当然だがデータが全部飛ぶので注意。

diskutil eraseDisk free MYDISK /dev/disk2

Fat32形式でフォーマットする場合は以下

diskutil eraseDisk FAT32 MYDISK /dev/disk2

で、どの形式でフォーマットできるのか調べたいときは以下

diskutil listFilesystems
Formattable file systems

These file system personalities can be used for erasing and partitioning.
When specifying a personality as a parameter to a verb, case is not considered.
Certain common aliases (also case-insensitive) are listed below as well.

-------------------------------------------------------------------------------
PERSONALITY                     USER VISIBLE NAME
-------------------------------------------------------------------------------
APFS                            APFS
  (or) APFSI
Case-sensitive APFS             APFS (Case-sensitive)
ExFAT                           ExFAT
MS-DOS                          MS-DOS (FAT)
MS-DOS FAT12                    MS-DOS (FAT12)
MS-DOS FAT16                    MS-DOS (FAT16)
MS-DOS FAT32                    MS-DOS (FAT32)
  (or) FAT32
HFS+                            Mac OS Extended
Case-sensitive HFS+             Mac OS Extended (Case-sensitive)
  (or) HFSX
Case-sensitive Journaled HFS+   Mac OS Extended (Case-sensitive, Journaled)
  (or) JHFSX
Journaled HFS+                  Mac OS Extended (Journaled)
  (or) JHFS+
Free Space                      空き領域
  (or) FREE

Chrome拡張機能で現在のタブのURLを取得する

環境

manifest v2

コード

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, tabs => {
  const url = tabs[0].url
  alert(url)
})

backgrond.jsとかpopup.jsとかで使える。

tabsって入ってるからパーミッションに「Tabs」必須かなと思ったけどURL取得だけならいらないっぽい

参考リンク

Chrome拡張機能で現在のタブのURLを取得する

環境

manifest v2

コード

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, tabs => {
  const url = tabs[0].url
  alert(url)
})

backgrond.jsとかpopup.jsとかで使える。

tabsって入ってるからパーミッションに「Tabs」必須かなと思ったけどURL取得だけならいらないっぽい

参考リンク

JavascriptのencodeURIComponent()した文字をRubyでデコード

結論

javascriptエンコード

encodeURIComponent('ニンテンドースイッチ')
// => "%E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81"

Rubyデコード側

require 'uri'
URI.decode_www_form_component("%E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81")
# => "ニンテンドースイッチ"

これなんの形式なの

URL-encoded form dataググるとちゃんと出てくる。最初全然違うメソッドでデコードしようとしてバグり???????ってなってた。