技術メモ

【SQL Server】メールアドレスの@より前と後を分割して取得する

@の位置を取得して、その前後を取得すればOK。

/*サンプルテーブル*/
with sampleTable as (
	select 'hoge@example.com' as mailAddress union
	select 'hoge2@example.com' union
	select 'invalid_address'
)

select
	mailAddress as [メールアドレス],
	/*@より前の値を取得する*/
	substring(mailAddress, 0, charindex('@',mailAddress)) as [ローカルパート],
	/*@より後の値を取得する(末尾は適当に長くしている…)*/
	substring(mailAddress, charindex('@',mailAddress) + 1, 999) as [ドメインパート]
from
	sampleTable
where
	/*@が無いものはメールアドレスではないので除いておく*/
	mailAddress like '%@%'

 

【SQL Server2019】saでログインできない。

問題

SQL Server2019をデフォルトのままインストールを進めたところ、saでログインできなかった。

「ユーザー’sa’はログインできませんでした。(Microsoft SQL Server、エラー:18456)」エラーになる。

対処方法は以下。

saアカウントを有効にする

  1. Windows認証モードでSQL Server Management Studioへログイン(SQL Server 2019には同梱されていないので、Management Studioを追加でインストールする必要あり)
  2. オブジェクトエクスプローラーからセキュリティ→ログイン→saを右クリックしてプロパティをクリック
  3. 全般のパスワードを入力
  4. 状態のログインを有効に変更して「OK」をクリックして保存

認証モードで、SQL Server認証モードを追加

  1. オブジェクトエクスプローラーのサーバ名を右クリックし、プロパティをクリック。
  2. セキュリティのサーバー認証で「Windows認証モード」から「SQL Server認証モードとWindows認証モード」に変更して「OK」をクリックして保存
  3. オブジェクトエクスプローラーのサーバ名を右クリックし、「再起動」をクリック
  4. (マシン名)のMSSQL$SQLEXPRESSサービスを再起動しますか?というメッセージが表示されるので「はい」をクリックして再起動する。(このメッセージボックスがManagement Studioの裏に隠れてしまう場合があるので注意)

以上の点を実施することにより、saでログインできるようになった。

 

【C#】XML読み込み時、名前の先頭に ‘-‘ (16 進数値 0x2D) を使用することはできません。エラーが発生する

エラー内容

XmlSerializerを利用してXMLを読み込んだ際に、以下のエラーが発生した。

System.Xml.XmlException: 名前の先頭に '-' (16 進数値 0x2D) を使用することはできません。 行 49、位置 3。
   場所 System.Xml.XmlTextReaderImpl.Throw(Exception e)
   場所 System.Xml.XmlTextReaderImpl.ParseQName(Boolean isQName, Int32 startOffset, Int32& colonPos)
   場所 System.Xml.XmlTextReaderImpl.ParseElement()
   場所 System.Xml.XmlTextReaderImpl.ParseElementContent()
   場所 System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
   場所 System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
   場所 System.Xml.XmlDocument.Load(XmlReader reader)
   場所 System.Xml.XmlDocument.Load(Stream inStream)

原因

原因は単純で、コメント「<!–」を記載したはずが「<–」になってた(びっくりマークが無い)。。。

 

【WordPress】このサイトで重大なエラーが発生しました。への対処方法(リカバリーモード)

まとめ

プラグインが自動更新された後、「このサイトで重大なエラーが発生しました」と表示され、すべてのページにアクセスできなくなる問題が発生した。
管理者にリカバリーモードでログインできるページのURLが来たので、そちらからサイトにアクセスし、該当プラグインを無効化することで、ページが表示されるようになった。

 

問題が発生したことの認識

「サイトで技術的な問題が発生しています」というメールが届いた。
初めて見るメールだったので、サイトにアクセスしてみると、「重大なエラーが発生しました」という、同じく初めて見るメッセージのみになってしまっていた。

どのページも上記と同じになってしまい、ログインページにもアクセスできなくなった。

メールの受信順から、プラグインが更新されたことにより問題が発生してしてしまったのだろうということまでは分かった。

リカバリーモードでログイン

「サイトで技術的な問題が発生しています」というメールの本文を確認してみた。

こんにちは。

WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されました。

今回の場合、WordPress がプラグイン SiteGuard WP Plugin でエラーを捉えました。

まずはじめに、ご自分のサイト (https://juraku-software.net/) を開き、目に見える問題がないか確認してください。次に、エラーが発生したページ (https://juraku-software.net/xxxxxxxx) を開き、同様に問題がないか確認してください。

この問題をさらに調査するにはサーバーホストに連絡してみてください。

もしサイトが壊れていてダッシュボードに正常に接続できない場合、WordPress には特別な「リカバリーモード」があります。これによりダッシュボードに安全にログインし、さらに調査をすることができます。

https://example.com/wp-login.php?action=enter_recovery_mode&rm_token=xxxxxxxxxx&rm_key=xxxxxxxxxx

サイトを安全に保つため、このリンクは 1日 で有効期限が切れます。ですが、心配なく。有効期限後にこのエラーが再度発生すれば新しいリンクをお送りします。

この問題を解決しようとする際、以下の情報を聞かれるかもしれません。
WordPress バーション5.7.1
現在のテーマ: Twenty Fifteen Child (バージョン 1.0.0)
現在のプラグイン: SiteGuard WP Plugin (バージョン 1.6.0)
PHP バージョン7.4.12



エラー詳細
===============
エラータイプ E_COMPILE_ERROR が /home/xxxxxxx/wp-content/plugins/siteguard/siteguard.php ファイルの 60 行目で発生しました。 エラーメッセージ: require_once(): Failed opening required 'classes/siteguard-disable-author-query.php' (include_path='.:/usr/local/php/7.4/lib/php')

本文のリカバリーモードのリンクをクリックすると、ダッシュボードが表示された。

ここで直近で更新されたプラグインを無効化することで、無事復旧できた。

直接の原因

SiteGuard WP Pluginのバージョンアップの不備のようだ。
現在は解消され、このサイトも以下の画像に書いてある通りの対処を行い、再びSiteGuardを利用している(設定がすべて消えてしまったが…)。

【追記】BackWPupでも発生

2022/11/16 22:11に、BackWPupプラグインがバージョン 3.10.0 から4.0.0へ自動更新された直後に同じエラーが発生した。

同じく、管理者ページにアクセスしたところ、「サイトで技術的な問題が発生しています」というメールが届いたので、本文中のリカバリーモードのリンクをクリックし、該当のプラグインを無効にしたところ、アクセスできるようになった。
→いつ問題が修正されるか不明だったので、「UpdraftPlus」というプラグインに乗り換えた。バックアップ時刻を指定できないけど、今のところ問題なくバックアップが取得できていそう。

今後の対策

難しい…

プラグインは常に自動更新にしておきたいので、こまめにメールチェックをするしかないかな。

あとは、問題が発生したときにダッシュボードにも行けなくなることが分かったので、FTPでアクセスできることを定期的に確認しておくくらいかな(普段は使わないので)。

【WordPress】Google Analytics Dashboard for WPからSite Kitへの移行

以前から「Google Analytics Dashboard for WP」プラグインを利用していたのですが、あるときから大半の機能が有料化し、さらに謎の通知が多くなったため使いにくくなってしまいました。

Googleが提供している「Site Kit」というプラグインを使うと、Google AnalyticsとAdSense、PageSpeed Insightsをまとめて表示することができるのでおすすめです。

移行したときの手順ですが、先にSite Kitをインストールして、ウィザードに従って設定。その後、Google Analytics Dashboard for WPを無効化するだけで簡単です。(しばらく使って問題がなければ完全にアンインストールします)

▼ページごとにアクセス数が表示されるようになります

 

【C#】【EntityFramework】「列 ‘InvariantName’ は一意であるように制約されています。」エラーが発生する

エラー内容

System.Configuration.ConfigurationErrorsException: system.data のための構成セクション ハンドラーを作成中にエラーが発生しました。: 列 ‘InvariantName’ は一意であるように制約されています。値 ‘System.Data.SQLite.EF6’ は既に存在します。 (C:\xxxxxxxx\xxxxxxxxxx.exe.Config line 11) —> System.Data.ConstraintException: 列 ‘InvariantName’ は一意であるように制約されています。値 ‘System.Data.SQLite.EF6’ は既に存在します。

原因

App.configの<system.data>にinvariant=”System.Data.SQLite.EF6″が複数記載されている場合に発生

【C#】DataRowの各項目をまとめてConsole出力する

foreach (DataRow dataRow in dataTable.Rows)
{
Console.WriteLine(
string.Join(",",
Array.ConvertAll(dataRow.ItemArray, x => x.ToString()))
);
}
  1. DataRowのItemArrayがobject[]型で返ってくるためArray.ConvertAll()でstring[]型に変換する。
  2. string.Join()で、string[]型の値を「,」区切りで文字列結合する

【C#】【Selenium】session not created~エラーが発生する

エラーメッセージ

System.InvalidOperationException: ‘session not created: This version of ChromeDriver only supports Chrome version 85 (SessionNotCreated)’

「new ChromeDriver()」を実行すると発生した

対処方法

NuGetで、Selenium.WebDriver.ChromeDriverを最新版(インストールされているChromeと同じバージョン)に上げる。

上げた後、ソリューションのクリーンを実行した後に、ビルドすればOK

 

【Androidアプリ】電光ニュース(LED News)


Ver 1.2.1(2021/10/16公開)

YahooやNHKの最新ニュースを電光掲示板風に表示します。
机の横においてぼーっと眺めるのに最適です。
ダブルタップすれば、そのニュースがお使いのブラウザで表示されます。

タップすると設定画面が表示され、表示速度と文字色を変更できます。

ダウンロードはこちらからどうぞ。
Google Play で手に入れよう

 

 

 

広告付きの無料版はこちらから

Windowsアプリ版はこちらから

 

更新履歴(GooglePlayへの反映は数日遅れます)

  • Ver 1.2.1  2021/10/16
    広告付きの無料版公開開始
  • Ver 1.1.0  2021/07/19
    アイコンのデザインを変更しました(英語版のアプリタイトルであるLED NEWSのみに変更)
  • Ver 1.0.8  2021/04/29
    文字色で黄色を選択できるようになりました(緑、オレンジ、黄の3種類)
  • Ver 1.0.7  2021/04/28
    文字サイズの設定追加(大、中、小の3種類)
  • Ver 1.0.6  2021/04/24
    アプリのアイコンデザインを変更しました(電光ニュースのみから、英語版のアプリタイトルであるLED NEWS+電光ニュースの併記に変更)
  • Ver 1.0.5  2021/02/23
    設定画面を追加しました。タップすると速度と文字色を変更できます。
  • Ver 1.0.4  2021/02/05
    タップして変えた色を、次回起動時に復元する機能を追加しました。
  • Ver 1.0.3  2021/01/28
    タップするとオレンジ色、緑色に順番に変わる機能を追加しました。
  • Ver 1.0.2  2021/01/28
    アメリカ対応(The New York TimesのU.S.版を表示)
    イギリス対応(BBCを表示)
    中国(簡体字)対応(人民网を表示)
    ※Androidの地域と言語の設定にて自動で切り換えます。
  • Ver 1.0.1  2021/01/27
    英語対応(英語版のアプリタイトルはLED News)
    英語の場合は、The New York TimesのWorld版を表示します。
  • Ver 1.0.0  2021/01/18
    ダブルタップすると、ニュース内容がブラウザで表示される機能を追加しました。
    普段お使いのブラウザで表示されます。
  • Ver 0.0.1  2021/01/11
    新規公開を開始しました。