「バグ対応のため、Let’s Encryptの一部証明書が3/4までになる」と同僚が教えてくれました。 “「バグの影響で特定のサーバー証明書を失効させる」とLet’s Encryptが発表、影響を受けるのは全体の2.6%” 0. 環境 [OS] CentOS 7.5 1. 確認 まず、Let’s Encryptから提供されている下記ツールに対象ホスト名(ドメイン)を入れて影響有無を確認します。 Check whether a host’s certificate needs replacement 2. 手順 影響ありの場合、対応方法は証明書を更新すればよいとのことなので、こちらを実行しました。 certbot renew よくログを見ると処理がスキップされ、更新されてない様子。 The following certs are not due for renewal yet: /path/to/pemfile expires on 2020-05-07 (skipped) /path/to/pemfile expires on 2020-05-14 (skipped) No renewals were attempted. サーバー負荷を下げるため、有効期限まで余裕があると更新されない仕様になってるようです。 なので強制的に更新するコマンドを実行しました。 certbot renew --force-renewal 今回は下記のメッセージが出てたので大丈夫そう。 Congratulations, all renewals succeeded. The following certs have been renewed: 前述のツールでOKが出るのと、ブラウザ上で証明書の期限が延びていることを確認しました。 ...

Read more

昔秀丸エディタなどで保存したShift_JISのファイルをVisual Studio Codeで開くと文字化けしたので設定方法をメモ。 0. 環境 [Visual Studio Code] 1.39.2 1. 手順 設定画面を開きます。 Windowsの場合、[Ctrl] + [,] Macの場合、[⌘ command] + [,] 検索ボックスにfiles.autoGuessEncodingを入力。 表示された”Auto Guess Encoding”のチェックボックスをONにする。 ...

Read more

CentOS8にphpを入れるときのコマンドが分からなかったので要点だけメモ。 0. 環境 [OS] CentOS8 (64bit) [PHP] 7.4 1. 手順 デフォルトのパッケージにはphp7.2までしか含まれていないので、remiリポジトリを足しました。 # dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm 下記コマンドでインストール可能なphpバージョンを調べます。 # dnf module list php “Stream”という欄に表示された名前を指定してインストールします。 下記は7.4を指定してますが、2019/10/19時点の安定版は7.3なので、本番環境の場合は注意して下さい。 # dnf module install php:remi-7.4 パッケージの操作方法については、下記に詳細がまとまっています。 2. 参考記事 How to install php on RHEL 8 / CentOS 8 Linux ...

Read more

4ヶ月くらい起動していなかったVirtualBoxで久々に開発をしようと思ったらエラーが発生しました。 ネット上の情報はあまりなく、下記のいずれかでした。Bはいつの時点に戻すか分からなかったので、Aでやることにしました。 (A)VirtualBoxを再インストール。 (B)Windowsの復元機能を使って、Windowsアップデート前の状態にする。 0. 環境 [OS] Windows7 (32bit) [VirtualBox] 4.3.26 -> 5.2.32 [Vagrant] 1.7.2 -> 2.2.5 1. 問題 VagrantからVirtualBoxを起動する構成です。(詳細はこちら) いつものようにvagrant upやvagrant resumeでVirtualBoxを起動しようとしたところ、このエラーが出ました。 エラーメッセージ supHardenedWinVerifyProcess failed with VERR_ASN1_CURSOR_TAG_MISMATCH: (rc=-22838) 2. 対応 内部エラーで複雑そうなので、一度VirtualBoxをアンインストールし、新しいバージョンをインストールしました。 32bit OSに対応してて、新し目のバージョン5.2.32を選択しました。(5.2.32のWindows hostsをクリック) 64bit OSを使ってる方は、もっと新しいバージョンの方がいいと思います。 VirtualBoxを再インストール後、vagrant upを実行すると下記エラーメッセージが表示されました。 エラーメッセージ The provider 'virtualbox' that was requested to back the machine 'default' is reporting that it isn't usable on this system. ...

Read more

JavaScriptで半角・全角カナの相互変換を行う疑似クラスです。シンプルなロジックなのでカスタマイズも簡単にできます。 下記ブラウザで確認していますが、何かあればこちらから連絡いただけると嬉しいです。 0. 環境 [OS] Windows7 [Browser] Chrome, Firefox(69.0), IE11 1. サンプル 使い方は下記サンプル内の”Test”を見て下さい。記載した2つのメソッドに文字列を渡すだけです。 2. 参考にした記事 JavaScriptで正規表現(文字列置換え編) Objectのkeyとvalueを反転させる。もしくはJSでenum的なものを作る。 ...

Read more

CursorWindowAllocationException が発生した時の対処方法です。 0. 環境 [Windows] 7 [Java] 1.8 [Android] 5.1.1 [Android API] 26 1. 問題 開発中のAndroidアプリでSQLiteを使ってます。 サブクエリを使って、今までより抽出データが多くなるSQLを書いたところ、画面遷移中に頻繁にクラッシュするようになりました。 しかも、特定のテスト機(Galaxy S4(Android5.0.1))のみです。 (A)エラー内容 Fatal Exception: android.database.CursorWindowAllocationException Cursor window allocation of 2048 kb failed. # Open Cursors=700 (# cursors opened by this proc=700) (B)エラー箇所 前述のサブクエリを適用した箇所とは全く別の箇所が毎回落ちるポイントでした。(下記2行目) Cursor cursorCountUsers = db.rawQuery("SELECT COUNT(user_id) FROM users", null); cursorCountUsers.moveToFirst(); int countUserId = cursorCountUsers.getInt(0); return countUserId; 2. 対策 Slackoverflowで同じ問題を見つけました。 まず、毎回同じ箇所で落ちるので、上記(B)にcursorCountUsers.close();を入れたけど直りませんでした。 ...

Read more

Android7 で android.os.FileUriExposedException が発生した時の対処方法です。 (文中の【】は読み替えて下さい) 0. 環境 [Windows] 7 [Java] 1.8 [Android] 5.1.1 [Android API] 26 1. 問題 Androidアプリから一時ファイルを作成して、そのURIを外部のアプリに渡すという処理を実装してました。 (ファイルを作成して、Gmailに添付するなど) Android7からfile://による指定ができなくなったため、下記のエラーが発生します。 android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/【アプリのパッケージ名】/temporary/【一時ファイル名】 exposed beyond app through ClipData.Item.getUri() URIはFileProviderで作らないといけないそうです。 2. 対策 2-1. AndroidManifest.xml まず、AndroidManifest.xmlにFileProviderの定義を追加します。 android:resourceには、2-2で作成するファイル名を指定。 2-2. res/xml/provider_paths.xml 次に、res/xml/provider_paths.xml を作成します。 後述の2-3でfileの保存先を Environment.getExternalStorageDirectory() の直下にしたので、それを表すexternal-pathを指定します。 また、直下なのでpathはカレントディレクトリになります。 2-3. 該当処理を行っているActivity 最後に、URIの生成を下記(1)から(2)に変更しました。 3. 参考 FileProviderリファレンス ...

Read more

MonitでApacheとMySQLを復旧させる最低限の設定です。 (文中のドメイン名やメールアドレスは読み替えて下さい) 0. 環境 [CentOS] 6.4 (64bit版カーネル) [Monit] 5.25.1 [Apache] 2.2.15 [MySQL] 5.1.73 1. セットアップ インストール # yum install monit 自動起動を設定 # chkconfig monit on 2. 設定 2-1. Apacheの監視設定 httpd.conf を開いて、 # vim /etc/monit.d/httpd.conf 下記を記載。 check process httpd with pidfile /var/run/httpd/httpd.pid start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if 5 restarts within 5 cycles then timeout if failed host example. ...

Read more

0. 環境 [Windows] 7 [Java] 1.8 [Android] 5.1.1 [Android API] 26 1. 問題 Androidアプリの開発で、自前のAPIからデータを取得する処理を組んでいたところ、下記エラーが発生するようになりました。 java.net.SocketException: Socket is closed コードはこちら。 2. 対策 まずAPI側でApacheのログを確認したところ、ステータスコード200で問題なしでした。 127.0.0.1 - - [05/May/2018:22:55:02 +0900] "POST /api/test HTTP/1.0" 200 11130 正常終了するケースとの違いは、レスポンスのデータ量が多くなってることかな。(上記ログ右端) 次にAndroidアプリ側の処理があやしいと考えて、いろいろ試した結果、HttpsURLConnectionのクローズのタイミングが問題だと分かりました。 同オブジェクトを参照しているオブジェクトを全て使い終わってから、クローズする必要がありそうです。(上記(1)→(2)に移す) また、クローズ処理を消すだけでも冒頭のエラーは出なくなりましたが、なるべくオブジェクトは明示的に閉じた方が良いと思います。 なので、最終的にオブジェクトの作成順とは逆にクローズしていく処理を入れました。(下記(3)(4)) ...

Read more

 更新日:2018年05月01日 0. 環境 [CentOS] 6.4 (64bit版カーネル) [Apache] 2.2.15 1. 問題 あるドメインが不要になったのでDNSから削除しました。 Let’s Encryptで証明書を発行していたドメインだったので、証明書の更新時に下記エラーが出るようになりました。 (“example.net”は読み替えて下さい) それ以外のドメインについては成功メッセージが出ているにも関わらず、ブラウザで確認すると証明書が更新されず、困りました。 1 renew failure(s), 0 parse failure(s) IMPORTANT NOTES: - The following errors were reported by the server: Domain: example.net Type: None Detail: DNS problem: NXDOMAIN looking up A for example.net Automated renewal failed 2. 対策 下記を撤去することで、certbot-autoで証明書を更新する際にエラーは出なくなりました。 # mv /etc/letsencrypt/live/example.net/ /tmp/ # mv /etc/letsencrypt/renewal/example.net.conf /tmp/ さらにApache設定ファイルから、証明書などを指定した箇所を削除します。 この状態で起動するかチェックするため、Apacheを再起動しておきましょう。 <VirtualHost *:4430> ServerAdmin admin@example. ...

Read more