Javaの正規表現を使用してRFC 5321に準拠したメールアドレスを確認する
RFC 5321:Simple Mail Transfer Protocol(SMTP)はメールサーバ間におけるメッセージの転送方式を定めた標準仕様です。 https://tools.ietf.org/html/rfc5321 RFC 5321に示されている記述は、ホスト名とIPアドレスの両方に関して考えると、過去であれば適していたと思いますが、現在の各サービスのメールアドレスの利用状況を見ると寛大すぎます。 真面目に書くと非常に長くなりメンテ出来るものではありません。 昔Andoidの内部ソースで使われ ...
RFC 5322に準拠させた正規表現 言語別
RFC5322で定義されている正規表現を、各言語の正規表現に変化させた形になります。 完全な電子メール正規表現は存在しないので、結局のところ何かの公式基準に従っていたとしても、自分が携わるサービスのルールによって使用可能文字のトレードオフが必要になるでしょう。 特にJavaは標準ライブラリが何らかの公式に準拠しているので、無理に正規表現を使わずそちらを使った方がいいと海外のナレッジサイトで昔から書かれています。 公式のRFC5322はこちら。 一般的なRFC5322 公式のEmail正規表現 (RFC 5 ...
Javaの正規表現を使用して有効なメールアドレスを確認する
メールアドレス形式の扱いはサービス単位で異なり、定まっていないので、メールアドレスの妥当性を判定する時に正規表現を使うことが多くなると思います。 基本的にはRFC5321かRFC5322、次点でRFC822に準拠したフォーマットが妥当だとは思いますが、すでに取得されているメールアドレスが存在するため、表記はサービス毎に見直し設定していく必要があります。 標準仕様の問題点は、言わずもがな既に世の中で使われているキャリアのメールアドレスに対応できないことです。 メールサーバの仕様や、携帯キャリアの独自ルールを ...
Androidの音量取得と音量設定
本記事はAndroid 8.0(API 26)以前を想定しています。 Androidアプリを触る際にメディアボリュームの現在値が必要だったのですが、音量取得のAPIを調べていると、何故か多くの場合STREAM_ALARM(STREAM_ALARMはアラームです)の取得サンプルが書かれているのですが、大体の場合取得したいのはメディアボリューム(media volume)だと思います。 メディアボリュームはAudioManager.STREAM_MUSICで取得可能です。 AudioManager audio ...
Android Studioのinstallation failed エラー
Android Studioでパッケージ構成を派手に変更したところ、application installation failedエラーが出るようになったのでエラー対応しました。 Failure [INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME: Invalid manifest package: must have at least one '.' separator] ビルド中にキャッシュが云々という警告と、上記のような警告がで出て困惑… エラーの内容は用はパッケージに階層 ...
Selenium WebDriver Javaでsleep頼みの待機を減らす方法|WebDriverWaitとExpectedConditionsの使い方
以前社内で夜間のCIが停止する現象に遭遇しました。 当時Seleniumのsleepで描画待ちを5秒で設定していたのですが、日中帯だと1、2秒で描画されるものでも、夜間だと通信帯域が細くなり描画に7秒かかっていたのです。 確かに一律Thread.sleep(10000);と記載してもいいのですが、全てのスリープを夜間用に最大時間にするとテストがものすごい時間になります。 この時、「webdriverは逐次sleepしなきゃいけないからいまいち」と言われたんですが、設定値を与えて都度待たせる方法もあるので、 ...




