Windows版ForkでGitHubの認証をパスワードベースからトークンベースに変更したい

【対象ソフト】
git-fork.com
(お試し利用が無償であって、有償ソフトです)

【背景】
GitHubが2021年8月13日以降にパスワードでのGit操作が禁止になる。
GitHub、2021年8月13日以降パスワードでのGit操作を禁止へ | TECH+
そのため、その前にGitHubの認証をパスワードベースからトークンベースに変更したい。

【対応方法】
1.パスワード情報の削除
そもそも最初Forkで設定していた際に最初登録したもののどこに保管されているか把握できていなかった。
そのため、どこを書き換えたらいいのか分からなかったが、以下のサイトで丁寧に解説してくれていた。
ksby.hatenablog.com
入力された認証情報はWndowsの資格情報マネージャーに登録されるとのこと。
よって、githubの資格情報をまずは削除する。

2.GitHubの個人用トークンの作成
英語ではあるが丁寧に公式で解説してくれているので、それに従って生成する。
docs.github.com

3.Forkを起動して、GitHubにアクセス
Forkに登録しているGitHubリポジトリでpushなど実行を行う。
するとダイアログが表示されるので、先ほど発行した個人用トークンを設定する。

f:id:yoneyore:20210501223118p:plain
ここに発行した個人用トークンを設定する

【その他】
・Fork 1.59では画面の様なアクセストークンを入力するテキストボックスが表示されなかった。
 Fork 1.61にアップデートするとテキストボックスが表示された。
 この入力フォーム自体はGitHubが生成してそうなのに謎である。。(たまたまか?)
・forkのアップデートは自動で行われるが、手動は[File] - [Check for Updates]で行える。

mvnを実行すると"11は無効なターゲット・リリースです"と怒られる

【事象】
渡されたpom.xmlコンパイルを行うと、以下の様なエラーメッセージが発生する。

(中略)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.744 s
[INFO] Finished at: 2021-05-01T10:53:10+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project azure-javaweb-app: Fatal error compiling: 11は無効なターゲット・リリースです -> [Help 1]

【原因】
mavenコンパイルおよびターゲットの定義がJavaSE11を指していたため。
今回はCorreto8を用いて作業したかったため、コンパイルに失敗していた。

【対応方法】
以下の様に定義変更を行えばよい。

(中略)
    <maven.compiler.source>11</maven.compiler.source>  ← 8にする
    <maven.compiler.target>11</maven.compiler.target> ← 8にする

【補足】
source:ソースがどのJDKのバージョンの文法として書かれてるかを指定
target:指定されたリリースの仮想マシンをターゲットにしたクラス・ファイルを生成
    クラス・ファイルは、指定されたターゲット以降のリリースでは動作するが、それより前のリリースのVMでは動作しない
release:上記を纏めたオプション、JDK9以降はこちらのオプションを推奨

[参考リンク]
JDK11のjavac
javac
JDK8のjavac
javac
寺田さんがsource, target, releaseオプションに関して解説してくれている記事
2019年のJava:新春特別企画|gihyo.jp … 技術評論社

Maven3のはじめかた

Maven3のはじめかた

mvnからazureを利用しようとするとサブスクリプションエラーが発生する

【事象】
MS Learnのクラウドスキルチャレンジ Java 特別編の登録を行い、
最初の単元である Azure 上の Java の概要 - Learn | Microsoft Docs を実施しようとしていた。
Azureは自身MS Learnのアカウントはまだ無料登録したことなかったため、Azureの無料サブスクリプションを事前に紐づけていた。
また、Azure App Serviceがポータル経由で追加できることも確認を行っていた。
そこで、以下のコマンドを実行する事になっているので実行した。

mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config

しかしながら、以下の様なエラーメッセージが表示されてしまい、進めれなかった。

[INFO] Scanning for projects...
[INFO]
[INFO] ------------< org.springframework.samples:spring-petclinic >------------
[INFO] Building petclinic 2.4.5
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:1.12.0:config (default-cli) @ spring-petclinic ---
[WARNING] The POM for com.microsoft.azure.applicationinsights.v2015_05_01:azure-mgmt-insights:jar:1.0.0-beta is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO] Auth Type : AZURE_AUTH_MAVEN_PLUGIN, Auth Files : [C:\Users\hogehoge\.azure\azure-secret.json]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.526 s
[INFO] Finished at: 2021-04-30T19:38:43+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config (default-cli) on project spring-petclinic: Cannot get Web App list due to error: No available subscription found in current account.. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

【対応方法】
以下で解決した。
1.azure-secret.jsonというファイルが生成されているので削除
2.Azure CLIをインストール
3.コマンドプロンプトを起動し、az loginを実行
4.同じコンソールで、mvn~を実行

【原因】
不明
但し、GitHubで同じ様な記載を発見した。
github.com
az loginを実行後には、azureProfile.jsonというファイルが生成されていたが、元々生成されていたazure-secret.jsonと見比べたが色々フォーマットが違うところはあるが、自身のアカウント事態には紐づいてそうだったので、何が原因かは正直分からないがあまり追いかけるところではないかと思いこれで解決とする。

【補記情報】
azure.microsoft.com
B1:8.40[円/時間]、P1V2:22.400[円/時間]
azure-webapp-maven-pluginからは選択できないが、
Azure App ServiceにはF1:0[円/時間]や、D1:1.456[円/時間]というインスタンスもある。
それぞれ利用制限は厳しめであるが、簡単な検証用途であれば利用するシーンあるかも。

ProxyPassReverseにajp://~と書くのは間違い

【やらかしてたこと】
Apache HTTP Server(以後httpd)の後ろにTomcatを配置して処理を行っている。
そのため、proxy.confに以下の様に記載していた。

ProxyPass /hoge ajp://localhost:8009/hoge
ProxyPassReverse /hoge ajp://localhost:8009/hoge

ProxyPassReverseは、上記の記述では何も動かないただのおまじないだとようやく気付いた。

【ProxyPasReverseディレクティブ】
[マニュアル]
http://httpd.apache.org/docs/2.4/ja/mod/mod_proxy.html#proxypassreverse

[文法]

ProxyPassReverse path url

[機能概要]
httpdの後ろにTomcatがいる構成でTomcatがリダイレクト用レスポンスを返却する際、クライアントが直接Tomcatにアクセスさせない様に(必要であれば)調整するための機能である。
なお、ProxyPassは、httpd経由でTomcatにアクセスする際のURLを書き換えるための機能である。

f:id:yoneyore:20210324001859p:plain
リダイレクトの際もhttpdを経由して欲しいのにそうなってくれない場合に利用するディレクティブ

[挙動から理解した仕様]
・リダイレクトさせるためのレスポンスを返す際のLocationヘッダーを編集する。
・ProxyPassは、リクエストを書き換える機能のため、pathをurlに置換する。
 ProxyPassReverseは、レスポンスを書き換える機能のため、urlをpathに置換する。
・やっていることはLocationヘッダーに対して、文字列置換を行っているにすぎない。
 論理情報(url, ポート番号, コンテキスト名, プロトコル, etc...)は一切解釈してなさそう。
・urlは相対パスでも絶対パスでもどちらでも良い。
 但し、先頭一致はしている必要が有る(部分一致で置換はしていなさそう)。
・pathも相対パスでも絶対パスでもどちらでも作用した。
 (使い方として正しいかどうか分からないが、現時点では動く事は確認済)
Cookieを用いている場合は、Cookie側も想定通りか確認しておく必要がある。
 書き換えが必要な場合は、ProxyPassReverseCookieDomainやProxyPassReverseCookiePathを用いる。
・Locationディレクティブを用いて記述する事も可能である。

<Location "/hoge">
ProxyPass ajp://localhost:8009/hoge
ProxyPassReverse /hoge
</Location>

 但し、Locationディレクティブでは表現しにくい場合がある。
 その場合は、Locationディレクティブで無理にくくろうとせずに記述した方が良い。

【ProxyPasReverseディレクティブの具体例】
実際は個々のリクエストでなく、色々なリクエストを気にしないといけないので、下記例が実際に必要になることはないだろうが、ProxyPassReverseの理解を行う際の一助のために記載する。

[例1]
https://example.jp/hoge1/topにアクセスし、リダイレクトに/hoge1/menu1と返却する。
proxy.confに以下の様に記述しておいたとする。

ProxyPass / ajp://localhost:8009/
ProxyPassReverse /manager /hoge1/me

この場合、リダイレクトする際のURLは、https://example.jp/managernu1となる。

[例2]
https://example1.jp/hoge1/topにアクセスし、リダイレクトにhttps://example1.jp/hoge1/menu1と返却する。
proxy.confに以下の様に記述しておいたとする。

ProxyPass / ajp://localhost:8009/
ProxyPassReverse http://example2.jp/hoge2/menu2 https://example1.jp/hoge1/menu1

この場合、リダイレクトする際のURLは、http://example2.jp/hoge2/menu2となる。

【使いどころ】
・レスポンスのLocationがTomcatのホスト名を含めた絶対パスを返却してしまう場合
・レスポンスのLocationがdockerなど仮想環境のホスト名、ポート番号を返却すると駄目な場合
・レスポンスのLocationがTomcat内の外部には公開していないパスも含めた相対パスで返却してしまう場合

【その他】
・必要の無い場合は、書かなくても良いディレクティブ
・現時点でProxyPassReverse ~ ajp:// ~ と書いてたら削っても問題ないはず
 (実際は怖くてすぐ消せないけど…)

Androidで電話の着信のみ一時的に通知しない様にしたい

ユースケース
学習部屋などでスマホのデザリングを使ってネットは行いたい。
しかし、電話やLINEなどの対人が関わるアプリは遮断したい。

【対応方法】
1.フォーカスモードを用いる
2.サイレントモードを用いる

【フォーカスモード】
[効能]
特定のアプリの利用を一時的に遮断する。

[設定方法(Pixel5の場合)]
対応方法1:クイック設定パネル(※1)でフォーカスモードをONにする
対応方法2:設定 -> Digital WellbeingでフォーカスモードをONにする

※1 上部を下にスワイプしたら出てくるボタン群のこと

[カスタマイズ方法(Pixel5の場合)]
設定 -> Digital Wellbeing - フォーカスモード を選択するとアプリを選択できる。

[設定の注意点]
・フォーカスモード利用時でもバイブの設定などしていた場合は、連動する模様
 (この仕様がまだ作りこみされていないところかもしれないので今後変更になるかもしれない)
・通話が発生するとフォーカスモードのため遮断してますが解除しますか?
 というポップアップが表示される。これを非表示にする設定は今のところなさそう。

【サイレントモード】
[効能]
許可した内容以外を一時的に遮断する。

[設定方法(Pixel5の場合)]
対応方法1:クイック設定パネルでサイレントモードをONにする
対応方法2:設定 -> Digital WellbeingでサイレントモードをONにする
対応方法3:設定 -> Digital Wellbeingでおやすみ時間モード(※2)をONにし、
      おやすみ時間モードがONのときのオプションで
      おやすみ時間モードでサイレントモードをONにする設定をする

※2 ミュートにしたり、 画面をグレースケールに変更したりする機能

[設定の注意点]
・サイレントモードの詳細設定で通知の表示オプションを設定しないと通話が表示される
 お勧めの設定は通知の非表示、通知音なしである。
 この設定にすると、モードONの時には表示されないが、モードOFFの時に表示され検知できる。
 一方、カスタムで全設定をOFFにすると、アプリに着歴は残るが気づくタイミングが無い。

【共通の注意点】
楽天モバイルの場合は楽天Linkアプリを止める必要がある
 同様に利用している通話アプリがデフォルトと異なる場合はそちらを加える必要がある
 そのため、事前に遮断できるかどうか試しておいた方が無難
・電話を遮断する訳ではない
 相手からしたらコールしたまま待っている形となる。
 そのため、電話アプリなどを触っているともしかしたら繋がる可能性は可能性としてはあり得る。

【その他】
・アプリで非通知にする様なアプリがあるかもしれないが、そちらは未調査である。
 (該当しそうなアプリあったが、着信してすぐ切るみたいな挙動ぽかったのと、
  あまり通話関連の操作の権限を良く分からないアプリに設定したくないため)
機内モードも最近はBluetoothはONのままにできるので、
 ネットワークも使わないけど音楽は使いたいという人は検討の余地あり。
 但し、機内モードの場合は、相手先は圏外として取り扱われる。

ペイントだけでモザイク処理を実現する方法

【やりたいこと】
車のナンバープレートや人の顔など自分の変えたい部分だけ簡単にモザイク処理を行いたい

【対応方法】
1.Win → paintなどでペイントを起動
2.画像をペイントに読み込ませる
3.ホームメニューをクリックし、選択をクリック
4.モザイクかけたい領域を選択
5.Ctrl + wを押して、サイズ変更と傾斜を呼び出す
6.水平方向と垂直方向を100より大きい値を入力し画像を縮小(※1)
7.Ctrl + wを押して、再度サイズ変更と傾斜を呼び出す
8.水平方向と垂直方向を100より大きい値を入力し画像を拡大(※1)

※1 値の指定方法
100を6.の縮小で指定した値で割った値を、8.の拡大で100にかけた値として指定
例) 縮小で50を指定したら、拡大では200を指定する
なお、水平方向と垂直方向の値は、縮小・拡大時も同じ値
(縦横比を維持するのチェックボックスがONなら自動で同じ値が設定される)

【その他】
・縮小や拡大で指定できる値は1~500まで
・私のお勧めは、今のところ2パターン
 [原型留めるモザイク]
  20で縮小、500で拡大
 [原型留めないモザイク]
  20で縮小し、再度20で縮小
  その後、500で拡大し、再度500で拡大
・昔は4.の処理の後、Ctrl + -/+で縮小/拡大というショートカットができていたと思うのだが、今はどうもできない。
・この手法(MSペイントの画像縮小/拡大でモザイク処理)自体は、WoodStreamのデジタル生活で話されていた内容が原案です。
windows-podcast.com

P78 投資効果の検討(NPV/PBP/IRR/ROI)

NPV[Net Present Value]:正味現在価値

将来のある時点におけるお金の価値を、現在のお金の価値に換算したもの。
将来見込まれているキャシュイン/アウトを現在の価値に換算するために割引率を考慮する。
(キャッシュインであれば金利、キャッシュアウトであれば利息)
NPVがプラスであれば経済価値があり、マイナスであれば採算性がないことを指す。
NPV | みずほ証券 ファイナンス用語集

IRR[Internal Rate of Return]:内部収益率

NPVをゼロにする際の割引率を指す。
投資において最低限達成しなければいけない目標の利益率と考えられる。
glossary.mizuho-sc.com

PBP[Pay Back Period]:回収期間

投資額を回収するために必要な期間のこと
例えば、投資額が100万円、1年間のキャッシュインが50万円が続くのであれば、回収期間は2年である。

ROI[Return Of Invesment]:投資利益率

投資額に対する利益の割合で、利益/投資額で求めれる。

関連用語

ハードルレート

投資をする上での判断基準とする指標で、これよりも収益率が低いと投資不適切とする指標である。
一般的には、資本コスト[WACC:Weighted Average Cost of Capital]にリスクプレミアムを勘案した値となる。

資本コスト

資金調達のために企業が必要なコストのこと。
資本調達のための借入金の利息支払いや、社債のコスト、株式の配当金などを勘案した費用である。

ROE[Return of Equity]:自己資本利益率

自己資本に対する利益が占める割合で、当期純利益/自己資本で求めれる。
企業が自己資本をいかに効率的に運用して利益を生み出したかを表す指標である。

ROA[Return of Asset]:総資本経常利益率/総資産経常利益率

総資本・総資産を用いてどれだけ稼げているかを表した比率である。
経常利益/総資本or総資産で求める事ができる。
www.keieibunseki.com

自己資本・純資産・他人資本・総資本

返済する必要がない資金で、株主から集めた資金と、経営活動の結果得られた剰余金を合算したお金のこと。
類似語に純資産があり、これは自己資本に加え、新株予約権や少数株主持分なども含まれる。
対義語は他人資本であり、支払手形・買掛金・借入金・社債などを合算したお金のこと。
自己資本他人資本を合わせて総資本と呼ぶ。
kabusenlife.com

流動資産・固定資産・繰越資産・総資産

流動資産は、比較的短期間に換金できる資産である。
(ex. 現金、預金、受取手形売掛金棚卸資産短期貸付金、有価証券)
固定資産は、長期間にわたって利用または所有する資産である。
(ex. 土地、建物、機械、ソフトウェア、投資有価証券)
繰越資産は、支出の効果が1年以上にわたって影響するものとして資産として計上するものである。
(ex. 開発費、創業費、社債発行費、株式交付費、創立費)
繰延資産|意味は?種類は?会計処理はどうする?|税理士検索freee
総資産は、流動資産・固定資産・繰越資産を合算した値であり、金額は総資本と同じ値になる。