フィブログ

うさんくさいプログラムの備忘録とか。

FireFoxでYoutubeのトップ画面がローディングで固まる問題

ふぃぶです。

 

標題の件でクソみたいな時間を過ごしました。

何かわかりませんが、Firefoxyoutubeのトップ画面が読み込みで固まってしまい何も表示されなくなりました。

 

症状分析

Youtubeのホームに行くと固まってしまう。

Firefox以外のブラウザでは正常に表示できる。

Firefoxのプライベートブラウザを使用すれば正常に表示できる。

・F12でブラウザのコンソール確認(何かjsファイルでエラーが発生してる。原因はこれ?)

 

よくあるクッキーとかキャッシュの問題かしらと思い色々やってみましたが全然解決島線でした。

 

やってみたこと

youtube.comのクッキー、キャッシュ履歴削除

→変化なし

ブラウザの全期間履歴削除(履歴とデータ全項目指定)

→変化なし

ブラウザの再起動

→変化なし

about:configなどの設定変更

→どれもこれも変化なし。

アドオンなどを全部OFF

→変化なし。

 

どうにもならねぇ・・・。

 

最終的な解決法

再インストールを使用かと思いましたが、FireFoxのリフレッシュ機能を先に使ってみました。

メニュー→ヘルプ→他のトラブルシューティング情報→Firefoxのリフレッシュ

 

リフレッシュが完了したら何とか起動しました。

ホントいい加減にしてほしい・・・そろそろChromeに移行し時なのかな。

一応ブラウザのパスワード情報などは飛んでないですが、ログイン情報すっ飛んだので各所にINし直しです。

めんどーい・・・!

 

 

klist purge がコマンドラインから打てない罠。

ふぃぶです。

 

企業等のファイルサーバにアクセスする際、一回ログインすると資格情報がキャッシュされて別のアカウントでアクセスできなくなることが多々あります。

 

大体PC自体を再起動するかnet use [パス] /DELETE コマンドを叩けばなんとかなるんですが、net useで削除しても資格情報キャッシュが消せなくてどうにもならない時が多いです。

そういった時に即時反映するコマンドがklist purgeとなりますが

これがコマンドラインから叩くと上手く動かないことがありました。

 

その原因がJDKに存在しているklistツールでした。

 

klistコマンドを叩くとjava側のklistツールのほうが選ばれてしまい

javaklistが引数不正でヘルプ情報を出力してきます。

 

これに気づくのがだいぶかかりました。

じゃあwindowsklist使うにはどうするかと言うと、exeをフルパスで指定します。

C:\Windows\System32 に klist.exeがあるのでこいつを叩いてあげればOK

 

 

Windowsコマンドと同じもん作らないでほしい…。

 

 

 

自分用に作ったFirefoxアドオンをインストールできる状態にする

ふぃぶです。

個人使用の都合でFirefoxのアドオンを作ることになりました。

どうやって開発するの?うんかんはデベロッパーサイトを参照になります。

https://developer.mozilla.org/ja/docs/Mozilla/Add-ons

 

で、つくったファイルをアドオンとしてインストールしようとする際

AMO(addons.mozilla.org)で署名をしないといけないとか

めんどくさすぎる工程が発生することが発覚しました。

というわけで手順ログです。

 

今回参考にさせていただいたサイト様はこちらになります。

(このブログより断然わかりやすいのでおすすめ)

<参考サイト様リンク>

https://forest-soft.xyz/blog/detail?id=18

 

では手順。

Firefox Browser Addonsにログイン

AMOにログインします(会員登録が必要ですが1分で終わります)

英語が苦手なかたは日本語のサイトに行かないと死ぬので以下からジャンプしましょう

https://addons.mozilla.org/ja/firefox/

※右上のログインをクリック

f:id:fiblog:20220402105159p:plain

 

メールアドレス等を入力して新規アカウントを作ったりなんだります。

 

注意点

アカウント作ってから一回ログアウトすると次回ログイン時に2段階認証設定を強制されます。※昔は任意だったけど今は義務化されてる。

セットアップしないと永遠とログインできなくなるのでしましょう。

アドオンの登録

画面右上部の「開発者センター」からページにアクセスします

f:id:fiblog:20220402111103p:plain

 

新しいアドオンの登録ボタンを押下

f:id:fiblog:20220402111248p:plain

 

自己配布用なのでon your ownを選択し続行

f:id:fiblog:20220402111403p:plain

作成したzipファイルをアップロードします。

エラーがあった場合はメッセージに従って対応しzip作り直します。

 

f:id:fiblog:20220402111523p:plain

 

アドオンの構成を確認します。

以下を使ってたらソースレビュー回さなきゃいけないようですが

特になければ大丈夫。いいえを選んで続けましょう

f:id:fiblog:20220402111849p:plain

 

以上で登録完了です。

登録したアイテムを見に行きましょう

f:id:fiblog:20220402111946p:plain

インストール用パッケージをダウンロードする。

登録したアドオンが表示されているのでクリックしましょう

f:id:fiblog:20220402112243p:plain

 

ステータスとバージョン管理をクリック

f:id:fiblog:20220402112341p:plain

 

アップロードした状態だとステータスが審査待ちになっています。

だいたい5分程度で承認状態になると思うので少しだけ待ちます。

f:id:fiblog:20220402112429p:plain

 

承認済みなったらバージョンをクリックします

f:id:fiblog:20220402112648p:plain

ファイルからxplファイルが表示されるので右クリックで

名前を付け保存します。

f:id:fiblog:20220402112735p:plain

 

あとはダウンロードしたこのファイルをFirefoxにインストールして完了です。

 

以上!

 

Javaが古すぎてoffice365へJavaMailが送れなくなった話

こんにちは、ふぃぶです。

 

Webアプリケーションでoffice365を介してメールを送ってる機能があったんですが突然メールが送れなくなりました。

解決したっぽいので記事を書いておきます。

 

エラーの始まり

突然起きました。

構成変えてないし、昨日まで遅れてたんだけど突然ダメになった…みたいな状況です。

 

SSLHandshakeExceptionの発生

Exceptionがこれでした。

どうやらメールサーバー(Office365)側と通信を確立する際のハンドシェイクに失敗してるっぽいです。なぜ…

 

構成などの確認。

Webアプリのメールが飛ぶざっくりした送るルートは

①Webアプリ(Java) ⇒ ②Office365 ⇒ ③送信

の流れです。

JavaMailにてSMTPサーバを「smtp.office365.com」に指定しTLS通信にてメールを送信してました。

イメージ的には①⇒②間でなんかエラーが出るようになりました。

 

結局なにがあかんかったのか。

どうやらJavaが古すぎたのが原因のようです。

Webアプリ側ではJava6を使用していました。最近はTLS1.2未満のバージョンは廃止される流れになっているのですがJava6はTLS1.2の通信をサポートしていないようです。

TLS自体の指定はできるんですがバージョンの指定ができない。

 ※これは私の推察ですが、TLSバージョンの指定がない場合SMTP側が対応可能な通信バージョンを提示してその中から良しなに決まるらしいので、今まではTLS1.2未満も許可されてたけどOffice365側でTLS1.2未満が許可されなくなったとかそういう感じではないかと。)

 

ちなみにWebアプリ側のJavaは上げらない状況です。

 

どう解決したの? ~SMTP中継する~

 Office365からは逃げられない

Javaも上げられない。

そんなわけで自サーバ内に中継用のSMTPサーバをひとつ立ててそこを経由することで解決しました。所謂SMTPリレーです。

Java→中継SMTP→Office365→送信

って流れですね

 

Java→中継の間はSSLを使わず暗号化無しで普通に通信します

中継SMTP側にTLSの設定をonにしOffice365側に流すように設定してあげればOK。

 SMTPwindowsコンポーネントの追加かなんかで簡単に出来るし再起動も必要ないため意外と手間はかからずに対応出来ました。

 

Javaに限らず古いシステムには潜在的リスクが出てくるので気をつけましょう。

 

UserControlのDependencyPropertyに値入れているのにバインドされない

ちわ、ふぃぶです。

 
掲題のとおりなんですが、DependencyPropertyに値をちゃんと設定してるのに
何か画面でバインドできないよ!ってことがおきて1日ハマりました。

 

で、いろいろ格闘したところ、

UserControlにdependencyproperty定義してるのに値がバインドできなかったのは

DataContext="{Binding RelativeSource={RelativeSource Self}}"をxamlに加えてなかったから。
 
これ、DataContextはSelf(自分のクラス)を参照しまっせ。っていう宣言らしく
記載してあげないと自分のクラスで設定したもんを参照してくれないみたいです。
 
 

WPFでリスト型を画面にBindingできないんだけど

こんにちわ、ふぃぶです。

まだxamlとかやってます。WPFとかやってます。

 

先日ListをBindingで表示しようと思ってやってみたら全然データが

画面にわたってこずハマりました。

 

で、さっそく結論。

データバインディングにコレクションつかうときは特に理由がない限りはObservableCollectionを利用する。 で解決。

 

ふぃぶはList型をViewModelに頑張って設定していましたがそれだけじゃダメっぽかったです。

なんかList型だけだと「変数変更されたわ」って情報(?)が画面に通知されないっぽく変数の値を変更しても画面は特に更新がかからないっぽいです。

 

この「変数変えたから画面更新してよ」っていうやり取りをするのがINotifyCollectionChangedインターフェースってものらしいんですが、ObservableCollection型というやつだとこれがデフォで実装されてるらしいです。

List型+INotifyCollectionChanged=ObservableCollection型。

 

コレクションをバインディングとして使う場合、ObservableCollection型を使うのがベターらしいです。

 

【結論に行きついた参考サイト様】

http://blog.okazuki.jp/entry/2014/10/29/220236

 

カネガネList型と何が違うんだろうと思ってたらこういうことだったぽい。

 

WPFを始めた際にBindingがどこ参照してるかよくわからない。あとMVVMってなんだ

こんばんわ、ふぃぶです。

 

最近WPFを扱うことがまま出てきました。

C#なんてやったことないのになんなんでしょうね。

MVVMとかいう単語も出てきて意味が分からないし。

 

と手探りでやってたもんですが、いい記事を見つけたのでメモ書き

 

d.hatena.ne.jp

 

非常にわかりやすかったです。

WPF関連の書籍や情報って本当少ないので助かります。

始める人は一読してみると入りやすいかもしれない。