itこの広告は、90日以上更新していないブログに表示しています。2016-03-10Electronをブラウザとして使う場合の証明書エラーとBasic認証の処理ElectronElectronアプリのUIは基本的にローカルのHTMLファイルを利用して作るので、パスさえ間違えなければ間違いなくHTMLをロードして表示できます。場合によっては<webview>を使って簡易ブラウザ/アプリ内ブラウザのようなものを実装することもあるかと思います。このときに少しハマったところがあったのでメモとして残しておきます。SSL/TLS証明書エラーhttpsを使う時にSSL/TLS証明書の検証でエラーがある場合*1、Electronは何もせず通信失敗となります。この時appモジュールのcertificate-errorイベントが発生するので、event.preventDefault()で元の動作を止め、callback(true)を呼び出すことでエラーを無視して通信を続行することができます。問答無用でエラーを無視してもいいですが、ユーザーに確認させたいのであれば以下のようにcallbackを非同期で呼び出すことができます。});});Basic認証こちらもやはり、そのままではElectronは何もしてくれません。loginイベントが発火するので、これを使います。'secret');});こちらはかなり厄介です。証明書エラーの時のようにユーザー名とパスワードの入力を促すダイアログを出したいところですが、Electronはテキスト入力をGUIで受け付けるためのAPIを持っていないからです。ブラウザ側で動作するRendererプロセスであってもwindow.promptさえサポートされていません。*2つまり、ユーザー名・パスワードの入力ダイアログはなんとかして自力で用意しなければなりません。自分の場合はRenderer側でBootstrapを使っているので、そのダイアログを利用しようかと思っています。入力ダイアログ専用のBrowserWindowを作成してしまうのも手かもしれません。*1:通常のブラウザであれば警告表示になる場面、例えば自己署名証明書*2:スレッドをブロックするからなんだとか。wordpress.comが良くなかったというわけではないんですが、自分みたいな記事だけ書く人間にはwordpressを使えることのメリットがあまりなかったように思います。確かにwordpressが使えるけどそれ以上でもそれ以下でもなく。CMSとして使っていたわけではないですし、プラグインがほぼ使用できないので実はwordpressである意味がほぼないという...ブログタイトルはふっと浮かんだものなので特に意味とか無いです。Blogとかよりはいくらかマシかと。何はともあれよろしくお願いします。Electron前記事でElectronのフォントを変更する方法を書いていたのですが、0.36になってからは内部のChromeのバージョンが上がり、この方法が使用できなくなっていました。最近公開になった0.36.5で、ついにデフォルトフォント関連のパラメータを指定する機能が追加されました。(と言っても、自分にとって重要なwebviewへの対応はまだなのですが...)この機能の使い方自体は難しくなく、BrowserWindowでウィンドウを作成する際、オプションのwebPreferencesに使用したいフォントを指定してあげるだけです。確認した限り、すべてのパラメータを指定する必要はないようです。}});フォントの選択機能を付けるのであれば、以下のページが参考になるかと思います。ElectronElectronでは楽にアプリを作れるのは良いのですが、日本語についてはいわゆる中華フォントが表示されてしまうという問題がありました。これを解決する方法を見つけた、という記事を元々書こうとしていたんですが、つい最近リリースされたv0.36.0で内部のChromeのバージョンが47に上がったせいか、きちんと日本語フォントで表示されるようになっていました。ゴシック)とはいえ、webViewの中身のフォントを外部から変えるといった用途には使えるので一応書き残しておきます。(自分が確認した限りでは0.36.3)では使えなくなっています。45から47になる際にフォント関連の動作が変わっているようです。0.36.5からはデフォルトフォントを変更にできるようになりました。適切に活用していきましょう。->Electronのデフォルトフォントを変更するローカルのHTMLファイルをロードするようなElectronアプリの場合、通常通りCSSでfont-familyを指定してやればもちろんフォントを変更できます。webViewタグを使って外部ページをロードする場合、当然ながら元のサイト側でフォントが指定されることになります。このとき、sans-serifやmonospaceが適用されるとElectronでは中華フォントが使用されてしまっていました。webContentsやwebViewタグではinsertCSS()を使ってCSSを後から適用できますが、当然ながら全要素のfont-familyを変更するわけにはいきませんので、うまくこの問題を解決できませんでした。UIとMSゴシックをそれぞれsans-serifとmonospaceとして設定する、という方法をとりました。sans-serif;でフォント指定されているため)まずWindowsのロケールを判定するためにos-localeをインストールしておきます。os-localeあとはfont-faceを設定するためにCSSを準備しておき、webViewのDOMの準備ができたタイミングでinsertCSS()でCSSを適用します。}});前の記事のデスクトップ通知もそうですが、こんな強引に見える方法が動いてしまうHTML関係っていかがなもんなのかとは感じます。JavaScriptElectronではNotificationを使ってWebアプリケーションと同様にデスクトップ通知をすることができます。electron-mattermostのようにBrowserWindowやWebViewに外部HTMLを読み込んで表示するだけのアプリケーションでは、通知の動作が外部HTMLによって操作されるので、元のElectronのままでは以下のような動作を実現することができませんでした。7ではトーストの代わりにバルーンを表示するそこでNotificationを直接上書きしてみたところ、デスクトップ通知の動作を変更できました。};});通知を表示する部分に関してはElectronに頼りたいので、NativeNotificationに元々のNotificationを保持させておきます。その後、Notificationのコンストラクタやメンバを再設定することで通知動作を変更する、というコードになっています。このコードでは受け取った通知関連のパラメータをそのままthis.notificationに渡してやることで元の通知動作を維持しつつ、通知元のBrowserWindowを表示します。Electronの通知でなく他の方法で通知を表示したければ、コンストラクタの中身を書き換えることになります。Notification()が呼び出されたときに、変更された動作を使って通知を発生させられます。STM32前回の続き。OpenOCDでの標準入出力とCMakeを使ったビルドについて。ところで全然関係ないんですが、OpenOCDを終了してもう一度起動すると、だいたい接続に失敗してUSBを繋ぎ直さないといけないんですが何なんですかね。STM32最近久しぶりにマイコンボードを買いました。Discoveryです。数年前に発売されたものなので既にそれなりに情報があると思うのですが、自分が使いたい方法などあるので記事にしておきます。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。