主な修正点は:

・each が削除されたので、下のように current(), next() を使う形に書き換えた。

(参考:「PHP8 で Call to undefined function each() になる場合の対処法」)

(変更前)
    while (list($k, $v) = each($a)) {
         なんちゃら;
     }

(変更後)
     while ($c = current($a)) {
        $k = key($a);
        $v = $c;
         next($a);
         なんちゃら;
     }

・要素へのオフセットを使ったアクセス演算子「{}」が削除されたので、「[]」に置き換えた。

・MB_OVERLOAD_STRING, MB_OVERLOAD_REGEX が削除されたので、これを使って mbstring へのオーバーロードが可能かチェックするコードをコメントアウト。

→本当は、チェックをコメントアウトするだけではだめで、コード中で mbstring へのオーバーロードを前提にした関数の呼び出しをしている箇所を全て、明示的に mbstring 用の関数に置き換える作業が必要だが、あまりにも大変なのでまだやっていない。

ついでに、古いバージョンでサーバー内のソースコードを上書きしてしまい、きちんと動作しなくなった箇所が何カ所か出たので、エラー表示を元にコードの追加変更を思い出しながら復旧させた。

ちなみに、今回、 php8 で動作させてみたところ、まったく何もエラー内容が表示されず、「HTTP 500」とだけ表示されたため、エラーの内容を確認するために、 php.ini に、「display_errors = On」を追加して作業を行った。



今回の修正は、 pear xmlrpc パッケージにも行った。

XML/RPC.php と、XML/RPC/Server.php

の2つのファイルで、 each を使用している部分に対し修正を行っている。

・・・で、 php8 に対応できたと思っていたが、 pear xmlrpc パッケージへの修正で問題が見つかった。 xml_parser_create() で、 php7 まではリソースハンドルが返されており、それを前提とした設計がされているのだが、 php8 からはオブジェクトのインスタンスが返されるように変更されたため、このままでは正しく動作できない。当面 php7 での運用を続けながら、 pear xmlrpc の部分をどうするかを検討することにした。というわけで、 rNote-re の php8 への対応は、xml-rpc を除いた部分まで完了というのが現状だ。

[2022-04-22]

pear の XML-RPC パッケージを使用するのをやめて、 phpxmlrpc を使用するように修正してみたところ、どうやら php8 で XML-RPC が使用できるようになったようだ。ただし、 phpxmlrpc のソースをざっと眺めてみた感じ each が使用されている箇所があるようなので、場合によって phpxmlrpc に手を入れる必要が出てくるかも知れない。

キーワード: rNote-re php8


久しぶりに HTML LINT を使って当ブログのソースをチェックしてみたらエラーだらけになったので、内容を確かめてみた。

エラーとして報告されたもののうちで多かったのは、

<ARTICLE>~</ARTICLE> 内には H1/H2/H3/H4/H5/H6が必要です。

<SECTION>~</SECTION> 内には H1/H2/H3/H4/H5/H6が必要です。

だったが、これらの部分に実際は h2 などが存在しているのだ。

どうやら、 HTML LINT では、 article や section の開始タグの「直後」に h2 などがないと、 h2 などが存在しないという判断をしてエラーにするようだ。だが、文法上はそのような制限はないので、このエラーレポートは間違い。

ちなみに、 rNote-re では、セクション(section)や記事(article)を構造上区分けする意味合いで使用している。例えば section タグで囲まれた部分には、基本的に対応して画面に表示させる見出し文字列といったものは存在していない。(例えば、「ここはサイドメニュー部分」「ここは記事本体の部分」といった構造的な区分けを section タグで行っているのであって、見出し文字列を表示させるために section タグを使用しているわけではないから、ということ。)

また、<table>の属性として、枠線の太さなどを設定する border は HTML5 では廃止されたとしてエラーレポートが表示されるのだが、 HTML5 では、境界線の太さを指定するための border は廃止されたが、「枠線の有無を表す border 」は存在している(HTML5 & CSS3 リファレンス)。ところが、この文法に沿った記述も HTML LINT ではエラーとして扱われている。このエラー表示を減らすために、文法上正しい記述ではあるが border による枠線の有無の設定を削除して枠線の処理は全て CSS に移行したが、 HTML5 自体の仕様に反しているエラー表示なので納得できないものがある。

キーワード: rNote-re HTML LINT


Windows11へのアップグレードが可能なPCの条件については、1点分かりづらい点がある。それは、CPUの条件なのだが、例えば、@ニフティの、

Windows11へ更新可能かチェックする方法|必要スペックの一覧も紹介

には、プロセッサ(CPUのことを指す)の必要スペックとして、

>1GHz以上で2コア以上の64ビット互換プロセッサもしくはSystem on a Chip

>Windows11へアップデートするにはCPUがどのメーカーでも問題なく、動作周波数帯とコア数でアップデートできるかが決まります。

と、書かれている。

しかし、実はこの説明は正確ではない。

実際には、周波数とコア数だけでアップデートできるかが決まってはいない。

例えば、Intel Core i7 6700K は、動作周波数 4GHz で4コアなので、@ニフティの説明では「対象CPU」になるのだが、実際にはアップグレード対象外となるのである。

何故かと言うと、Windows11 へのアップグレードが許されているCPUには、動作周波数、コア数以外にも、「世代」という条件があるからだ。Intel の場合は、「第8世代以降」、AMDの場合は「Ryzen 2000以降」(「PC Watch」の記事より)の世代のCPUのみがアップグレードを許可されている。Intel の場合 Core i7 8700 以降、と言うことになる。マイクロソフト公式の記事には、アップグレード対象のCPUが列挙されているページがある(「Windows 11 でサポートされている Intel プロセッサ」)のだが、そのページには「対象となるCPUがどの世代からか」という情報はどこにも無いので不便である。

スペック的には何ら問題がないのに、CPUの世代で拒絶されてしまうのは理不尽であり、非常に残念でもあるが、マイクロソフトがそのように決定したため、上記世代以前のCPUの場合はWindows11へのアップグレードはできないことになる。

キーワード: Windows11 upgrade


蜃気楼の塔YE攻略ポイント 2022-01-30 (日) 00:16:45+09:00

ragnarok

1層目

マップ上、周りをぐるりと一周する形で囲んでいる外周の途中に何カ所かあるクリックポイントをクリックする。(クリックすると、ゲージが表示され、しばらく待たされる。ポイントによって早く完了するステータスが異なる。)すると、中央にいるボスとの戦闘が開始される。


2層目

精霊が召喚されボス戦になるが、定期的にクリスタルの中に精霊が隠れ、その間は無敵になる。無敵中は、何カ所かに「異常現象」が登場するので、近くにあるクリックポイントをクリックして「異常現象」を消してやる。すると、ボスの周りのクリスタルが消え、攻撃可能になる。


3層目

プラグの部屋では、まず周囲のMOBをある程度倒す。すると、外周にある装置のところでプラグを組み立て、中央にある装置に組み込み起動するギミックが始まるので、プラグを出来るだけ高い%になるまで組み立てて、起動を試みる。無事起動したらMOBとの戦闘が再開され、精霊を倒したら先に進めるようになる。

4層目への入場は、α、βの2チームが両方とも到着しているか確認してから行う。でないと後続が来なくて大変なことに。


4層目

ミラ戦開始時、草タイプのターゲットが何カ所かに登場するので、素殴りで素早く倒す。すると、クリスタルの囲いが消え、ミラ戦が開始される。

壁がミラを抱えるまで攻撃しないで待つ。

キーワード: 蜃気楼の塔YE 攻略


様々な数値の最大値について 2021-07-11 (日) 23:24:00+09:00

ragnarok

■所持金関係の上限

・所持金の上限:2,147,483,647 (32bit符号付)※符号なしだと4,294,967,296まで扱える。

・上限以上に取得した所持金は失われる。

・他のキャラクターとの取引で上限を超える場合は、取引がキャンセルされる。

・露店販売品の最大価格:1,000,000,000


■魔法スキルによるダメージ上限

・魔法ダメージの最大値:2,147,483,647÷100×属性倍率

※2,147,483,647は、32bit符号付数の最大値。符号なしだと4,294,967,296まで扱える。

(例1)水属性レベル4のMOBに風属性魔法で攻撃した場合(倍率2.2)のダメージ上限

→2,147,483,647÷100×2.2=47,244,640.234

(例2)不死属性レベル4のMOBに風属性魔法で攻撃した場合(倍率1.2)のダメージ上限

→2,147,483,647÷100×1.2=25,769,803.764

(参考)魔法ダメージのオーバーフローについて

(例3)LA,オラティオで不死4のMOBに対してSL魂版HLを撃った場合

属性倍率(聖・不死4)2.0と、「オラティオ≒聖属性倍率50%上昇」で、属性倍率2.5

LA=ダメージ2倍 ※ただし、LAはダメージ上限の計算の後にかかってくるので、

ダメージ上限は、21,474,836.47×2.5=53,687,091.175となり、

LA抜きでのダメージが 48,311,788 である場合、オーバーフローしない。

その値に、LAの2倍をかけると最終ダメージとなるので、

48,311,788 ×2=96,623,576 ダメージが出せる。


■物理スキルによるダメージ上限

・ダメージの最大値:2,147,483,647÷100=21,474,836.47

※2,147,483,647は、32bit符号付数の最大値。符号なしだと4,294,967,296まで扱える。

※属性倍率などをかけた最終ダメージ値がこの最大値を超えるとオーバーフローする。

[コメントの受付は終了しています ]
この記事のリンク元 | 1 | 1 |