技術メモ

【Windows】Subversion(SVN)サーバを移行する

2024/09/19追記

Subversion本体のダウンロード元であるCollabNetがリンク切れになっていました。
ただ、私が利用している「file:///C:/svn/プロジェクト名/」の形式であれば、TortoiseSVNだけインストールしておけば、チェックアウトなどの機能が使えるようになっています。
私の利用方法であれば、TortoiseSVNだけインストールしておけば大丈夫でした。

以下は参考までに残しておきます。

はじめに

個人開発で利用していて自分しか使わないSVNがあるのですが、PC買い替えのため移行しました。

1台のPC上でSVNサーバとクライアントを兼ねており、大人数が使う場合には問題が出るかもしれませんが、あくまでも個人用としては問題なかったので残しておきます。

移行環境

移行元

  • Windows 10 20H2
  • subversion 1.8.17(CollabNet)
  • TortoiseSVN 1.9.5

移行先

  • Windows 10 20H2
  • subversion 1.12.0(CollabNet)
  • TortoiseSVN 1.14.1

メモ:SVNのバージョンは、コマンドプロンプトから「svn –version」を実行すると分かります。

移行手順

subversion本体をインストール

https://www.collab.net/downloads/subversion(リンク切れ) から、「Subversion 1.12.2 (Windows 64-bit)」をダウンロードします。

ここで不安になったのですが、ダウンロードされたファイル名が「CollabNetSubversion-client-1.12.2-1-x64.exe」とあり、「クライアント?サーバ用じゃないのか?」と思ったのですが、ちゃんとサーバ用でした。クライアントコマンドも入っているという意味みたいですね。

インストール自体はデフォルトのまま進めて完了しました。

TortoiseSVNをインストール

クライアントとして利用します。
https://tortoisesvn.net/downloads.html から、「TortoiseSVN 1.14.1 – 64-bit」をダウンロードします。

こちらもデフォルトのまま進めてインストールを完了しました。

リポジトリの移行

旧PCからフォルダごと持ってきただけで完了しました。
尚、チェックアウトする時は「file:///C:/svn/プロジェクト名/」のような形式で指定しています。

おわりに

WindowsPCにSVNを構築することについて書かれたサイトが少ない気がします。
特に最近更新されたページが無かったので、次の移行のときには厳しくなってくるかもしれません。
念のため、インストーラ自体は残しておいた方が良いと思います。

 

【Visual Studio】ソリューション内の 1 つ以上のプロジェクトが正しく読み込まれていません。エラーが発生する

内容

ソリューションファイルを開くと、以下のエラーメッセージが表示され、プロジェクトが(利用不可)の状態になる

ソリューション内の 1 つ以上のプロジェクトが正しく読み込まれていません。
詳細については、出力ウィンドウを確認してください。

このメッセージをOKを押して閉じると、以下のようにエラー原因が表示される。

原因

Zipファイルを解凍せずにそのまま開いて、slnファイルをダブルクリックして実行したから。

解凍してあげればOK

 

【Windows Bat】エラーレベルをクリアする

正常に完了するコマンドを実行すればOK

rem ★エラーを起こす
rem エラーを起こすために存在しないフォルダを指定 cd c:\not_exists_folder rem エラーレベルを確認すると1になっている echo %errorlevel%
rem ★エラーをクリアする rem エラーレベルをクリアするために成功するはずのコマンドを実行する(結果はいらないので>nulで捨てる) cd > nul rem エラーレベルを確認すると0になっている echo %errorlevel%

 

【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″が複数記載されている場合に発生