WordPress移行手順(雑)

今回の移行手順を簡単に紹介。

移行手順(MySQL+Apache HTTPD)

  1. 新サーバーにApache HTTPD,letsencrypt,MySQL,PHP(最低限php-mysqlndモジュールは必須)を導入
  2. 旧サーバーのMySQLのWordPress用DBをmysqldumpでバックアップファイルをエクスポート
    mysqldump -u “ユーザー名” [-p ] “WordPress用DB名” > “バックアップファイル名”
  3. 新サーバーのMySQLにWordPress用DBを作成。アクセスユーザ-も作成し、権限を与える。
  4. 新サーバーのMySQLのWordPress用DBに1.で作成したバックアップファイルをインポート
    mysql -u “ユーザー名” [-p] “WordPressDB名” < “バックアップファイル名”
  5. WordPress最新版を展開。
    この際、所有者をapache:apacheとしないと、更新やプラグインなどの取得時にftpの認証画面が表示されてしまうので注意。
    ※最新版でなくて、前サーバーの<wordpressフォルダ>内容をそのままコピーでも良いのかも
  6. WordPress下のwp-config-sample.phpをwp-config.phpにリネームするかコピーする。
  7. wp-config.phpの下記の部分を現行システムの物に書き換える。
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );

/** Database username */
define( 'DB_USER', 'username_here' );

/** Database password */
define( 'DB_PASSWORD', 'password_here' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

/**#@+
 * Authentication unique keys and salts.
 *
 * Change these to different unique phrases! You can generate these using
 * the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
 *
 * You can change these at any point in time to invalidate all existing cookies.
 * This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

/**#@-*/

    上記のAUTH_KEY以下はPHPコメントにもあるとおり、https://api.wordpress.org/secret-key/1.1/salt/から取得するのが簡単。

    この後、管理者としてサイトにアクセスし、旧サーバーで使用していた、themaやplug-in等を追加。(以前の内容をそのままコピーしていたら、要らないのかも)

    <wordpressフォルダ>/wp-content/uploadsに前サーバーuploadsの内容をコピー。
    (ここも上記と同様)

    また、サイトヘルスステータス等を見て、必要なphpモジュール等をインストール。

    今回行なったのはこんな感じ。

    カテゴリー: 保守・運用, 日記的なもの | コメントする

    サーバー引越ししました

    OSが古くなったので、WordPressのサーバーを引越ししました。

    CentOS 7⇒Alma 10です。

    引越しタイミング等もあり、多少コメント落ち等あるかもしれません。

    今後は、こちらのサーバーで記事を更新していきます。

    カテゴリー: お知らせ | 1件のコメント

    Python in Excel

    今更だが、Python in Excelを試してみた。

    といっても、統計とか解析とかの難しい方じゃなくて、もっと単純な物だけど・・・

    PythonコードをExcelに埋込むには、セルを選んでリボンから行なうか、=PY関数を使用する。

    Ctrl+Enterでコードをコミットすると、結果が表示される。

    ここで、xl関数はExcelのセルを表している。

    次にPythonの関数定義だが、同じようにセルを指定して関数を定義することが出来るが、その際、関数定義の最後にその関数名を入れないと、関数オブジェクトとして登録されないので注意!
    さらに、関数は使用するセルより前に定義されていないと、認識しないようだ。

    とりあえず、簡単な例だが、Pythonでセルデータを扱うことができた。統計や解析に付いては、デモやライブラが用意されているので、そちらを参照願う。

    カテゴリー: Excel, Office, python, 技術系 | コメントする

    C#14の新機能(一部)

    .NET10でC#バージョンが14となる。C#14で言語仕様に追加された部分から使えそうなものを一部抜粋してみた。ただし、.NET10自体がPreview版なので、今後変更されることがあるかもしれない点は注意して欲しい。実際に試してみた環境は.NET10 Preview4である。

    拡張メンバー

    拡張メンバーはC#13までの拡張メソッドをより分かりやすくしたもの。

    以下のような感じで定義可能。

    // C# 14 拡張メンバー定義
    public static class MyExtensions {
        // string型変数の拡張メンバー
        extension(string source) {
            // 文字列を反転させる拡張メソッド
            public string ReverseStr() {
                return new string(source.Reverse().ToArray());
            }
            // 文字列が数字列かどうかを判定する拡張プロパティ
            public bool IsNumber
            {
                get {
                    bool stat;
                    double d;
                    stat = double.TryParse(source,out d);
                    return stat;
                }
            }
        }
        // stringの拡張staticメソッド
        extension(string) {
            // string.IsAllZero(string)の様に使用する
            public static bool IsAllZero(string str) {
                bool stat = true;
                foreach(var s in str) {
                    if (s != '0') {
                        stat = false;
                        break;
                    }
                }
                return stat;
            }
        }
    }

    extension(型 変数名)構文を使用することで、指定型のインスタンス拡張メンバーを定義出来る。また、extension(型)構文を利用し、staticメソッドを定義すると、指定型のstaticメソッドとなる。
    (ちなみに、extention(型 変数名)ブロックで、staticメソッドを定義しても型のstaticメソッドになるようだ。ただし、上記変数名はstaticメソッド中では使用できない。)

    string s = "123.456";
    Console.WriteLine(s.ReverseStr());
    Console.WriteLine(s.IsNumber);
    Console.WriteLine(string.IsAllZero(s));
    // 結果
    // 654.321
    // True
    // False

    C#13までは、インスタンスプロパティや型のstaticメソッドは定義できないのでちょっと便利かも。もちろん、今まで通りの定義も可能。

    // C# 13以前の拡張メソッド定義
    public static class MyExtensions13 {
        public static string ReverseStr13(this string source) {
            return new string(source.Reverse().ToArray());
        }
    }

    fieldキーワード

    fileldキーワードを使用すると、バッキングfieldを定義することなく、入力値のチェックや制限をかけることが可能。

    // C# 14 fieldキーワード
    public class MyClass {
        /// <summary>
        /// Valプロパティ(設定できる最大長を制限している)
        /// fieldキーワードを指定すれば、バッキングfieldを宣言しなくても、
        /// 制限等をかけることが可能。
        /// </summary>
        public string? Val {
            set => field = value?.Length > 5 ? value.Substring(0,5) : value;
            get;
        }
    }
    var c = new MyClass();
    c.Val = "1234";
    Console.WriteLine(c.Val);
    c.Val = "123456789";
    Console.WriteLine(c.Val);
    // 結果
    // 1234
    // 12345

    ちょっとした機能追加だけど、それなりに使えそう。

    最初にも書いたが、Preview版なので、今後変更されることがあるかもしれない。また、上記の機能を実際に試したい場合、.csprojの<PropertyGroup><LangVersion>preview</LangVersion>を追加する必要があるので注意。

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net10.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <LangVersion>preview</LangVersion>
      </PropertyGroup>
    
    </Project>

    カテゴリー: .NET, C#, 技術系 | 3件のコメント

    Mac MAUI Pickerの動作

    MacでMAUI Appを動かしてみたところ、Pickerの動作するが変だったので、メモ。

    MacでPickerを動かしてみたら、他のプラットフォームで動作が異なった。

    WinUIやAndroid(シミュレータ)でPickerを動かすと、期待通りの動きとなったが、Macではまともに動作しなかった。

    <Picker Title="一つ選んでね" 
    	SelectedIndexChanged="Picker_SelectedIndexChanged">
    	<Picker.ItemsSource>
    		<x:Array Type="{x:Type x:String}">
    			<x:String>選択1</x:String>
    				<x:String>選択2</x:String>
    				<x:String>選択3</x:String>
    				<x:String>選択4</x:String>
    				<x:String>選択5</x:String>
    		</x:Array>
    	</Picker.ItemsSource
    </Picker>

    で、調べてみたら、どうも、Titleが付いているとNGらしい。Titleをプラットフォーム条件で外すと、キチンと(?)動作した。

    <Picker Title="{OnPlatform Android='1つ選んでね',
    		WinUI='1つ選んでね',
    		iOS='1つ選んでね'}"
    	SelectedIndexChanged="Picker_SelectedIndexChanged">
    	<Picker.ItemsSource>
    		<x:Array Type="{x:Type x:String}">
    			<x:String>選択1</x:String>
    			<x:String>選択2</x:String>
    			<x:String>選択3</x:String>
    			<x:String>選択4</x:String>
    			<x:String>選択5</x:String>
    		</x:Array>
    	</Picker.ItemsSource>
    </Picker>

    でも、これでは、分かりづらいので、UIデザインを変更しないとダメだね。

    前にも書いたけど、このぐらい簡単なプラットフォーム差異はMAUI側で吸収して欲しい。

    というか、Macにこの手の差異が生じているのは、MacでのMAUIアプリ使用率が低いのだろうか?それで、手を抜いている?

    カテゴリー: .NET, Mac, MAUI, 技術系 | コメントする

    MAUI macでのFontAttribute

    作成したMAUIプログラムをWindowsやAndroid(Emulator)で確認したところ、指定したFontAttributeがちゃんと、反映されているのだが、macで確認すると、反映されていないことに気づいた。

    ・・・
    <Label Text="Bold Style"
        FontSize="24"
          FontAttributes="Bold"/>
    <Label Text="Italic Style"
           FontSize="24"
           FontAttributes="Italic"/>
    ・・・

    調べてみた結果、FontFamily指定の問題らしい。とりあえず、FontFamilyをEmptyにすると、FontAttributeが反映された。

    ・・・
    <Label Text="Bold Style"
           FontSize="24"
           FontAttributes="Bold"
           FontFamily="Empty"/>
    <Label Text="Italic Style"
           FontSize="24"
           FontAttributes="Italic"
           FontFamily="Empty"/>
    ・・・

    この位、プラットフォーム間で統一できないものだろうか・・・

    カテゴリー: .NET, Mac, MAUI, 技術系 | コメントする

    C# – コレクションのスライス表記

    古い話になるけれど、C#8.0から、配列や数値インデックスを持つコレクションのスライス表記ができるようになった。
    この表記ちょっと分かりづらかったので、簡単にまとめてみた。

    ここでは、文字列を例に挙げる。
    以下のような、文字列があった場合。

    string s = "0123456789";
    // ^n - 最後からn番目を表す
    > s[^1]  
    '9'
    
    // ..表記で範囲指定(スライス)
    // [s..e]表記で、sはスタートインデックス,eはエンドインデックス+1
    
    > s[..^1]	// 0~最後から2番目
    "012345678"
    
    > s[1..4]	// index 1~3
    "123"
    
    > s[3..]	// index 3以降
    "3456789"
    
    > s[^3..]	// 最後から3番目以降
    "789"
    
    > s[^5..^2]	// 最後から5番目から最後から3番目
    "567"

    という感じ。

    スライスの場合、[s..e]の表記で、sは含む,eは含まないという点に注意。

    カテゴリー: .NET, C#, 技術系 | コメントする

    C#13 paramsコレクション

    .NET9.0でC#はVersion 13になった。
    Version 13での新機能は余り目立ったものは無いが、
    paramsコレクションは使えそうだ。

    paramsとは、メソッドの同じ型の引数を可変にするもので、C# 12までだと、
    以下のような感じで、配列しか指定できなかった。。

    T f(T1 p1, T2 p2, ... , params T3[] p) {}

    C#13からはコレクション全般が使用できるようになった。
    これによりどのような利点があるかというと、以下のようなパターンを全て1つの定義でまかなえるようになることだ。

    > string JoinString(string delim , params IEnumerable<string> prm) => string.Join(delim,prm);
    > JoinString("," , "Paul","John","George","Ringo")		// 引数の列挙
    "Paul,John,George,Ringo"
    > JoinString("," , ["Paul","John","George","Ringo"])	// 配列
    "Paul,John,George,Ringo"
    >List<string> lst = ["Paul","John","George","Ringo"];
    > JoinString("," , lst)									// リスト
    "Paul,John,George,Ringo"
    >JoinString("," , lst.Where(v=>v.Contains("o")))		// クエリ
    "John,George,Ringo"

    チョット使えそうなのでメモ。

    カテゴリー: .NET, C#, 技術系 | コメントする

    .NET 9 MAUI Blazor Web

    11/12に.NET9が正式リリースされた。

    MAUI関連で、下記プロジェクトテンプレートが増えていた。

    .NET MAUI Blazor Hybrid and Web App maui-blazor-web

    元々ある、”.NET MAUI Blazor アプリ maui-blazor”はMAUIアプリでBlazorコンポーネントを使えるようにするプロジェクトテンプレートだが、これは何かと思って、早速プロジェクトを作成すると、Blazor WebサイトとMAUI Blazor Hyblidの双方で、コンポーネントを共有するプロジェクトテンプレートだった。

    このプロジェクトテンプレートを使用すると、MAUIアプリプロジェクト,とBlazor Webアプリプロジェクト、共有コンポーネントプロジェクトの3つが作成され、MAUIアプリ,Blazor Webアプリの双方からコンポーネントが共有するためのスケルトンが作成される。

    チョット気になったのでメモ。

    カテゴリー: .NET, Blazor, MAUI, 技術系 | 1件のコメント

    調子に乗って・・・

    Mac mini M4(最低スペック)がamazonで本家サイトより、かなり安かったので調子に乗って買ってしまった。思ったより小さい。

    Macなんぞ、使うのは20年以上ぶりだから、イマイチ使い勝手がわからない。

    まず、LogiCoolのキーボードをWindowsと共有しているので、cmdだとかctrlとか・・・

    一番困るのは日本語入力切替だね。もう、色々ググりまくり。最悪、マウスでどうにか切替は出来るけど・・・

    当然、VSCodeと.NET SDKは入れて、動作確認はOK。動作は速い事は速いね。

    すっかり忘れていたけど、メニューバーが画面の一番上でアプリが占有するのは未だにそうなんだな、これは頂けない・・・VSCode起動して、「あれ、メニューが出てこないぞ?」と思ったよ・・・

    後、VSCodeをコマンドラインから起動する方法が分からなくて調べたら、VS Codeのコマンドパレットから、「shell command: install ‘code’ command in PATH」を実行しなければならない。この辺りはちょっと面倒だね。

    とりあえず、色々、イジってみよう。

    ちなみに、この投稿はMacから・・・

    カテゴリー: Mac, 日記的なもの | 1件のコメント