スキップしてメイン コンテンツに移動

投稿

ラベル(Error)が付いた投稿を表示しています

PHPのエラーレベル定数からエラー文字列を返すコード

PHPで定義されているエラー定数(int値)からエラー定数の文字列を返すコードです。 PHPのライブラリで定義されている情報だけで、キーが「エラー定数のint値 」値が「エラー文字列」となる連想配列を生成しています。 // 定義済みの定数を取得 $allConstants = get_defined_constants ( true ) ; // "Core"カテゴリに入っていて"E_"から始まる定数のみ取得 $errorConstants = array_filter ( $allConstants [ "Core" ] , fn ( $key ) = > strncmp ( $key , "E_" , 2 ) === 0 , ARRAY_FILTER_USE_KEY ) ; // エラー定数のint値 -> エラー文字列になるように連想配列を逆転 $errorCodeToString = array_flip ( $errorConstants ) ; // 使い方の例 echo $errorCodeToString [ E_COMPILE_ERROR ] ;

Firebase Toolsコマンドが実行ポリシーの設定が原因で実行できない問題の解決法

Firebase ToolsをインストールしてWindows PowerShell上からfirebaseコマンドを実行したのですが、下記の実行ポリシー関連のエラーが発生して正常に実行できませんでした。 PS C:\\Users\\user > firebase firebase : File C:\\Users\\user\\AppData\\Roaming\\npm\\firebase.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID = 135170. At line:1 char:1 + firebase + ~~~~~~~~ + CategoryInfo : SecurityError: ( : ) [ ] , PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess このあたりを参考に https://tecadmin.net/powershell-running-scripts-is-disabled-system/ 、管理者(Administrator)権限でPowerShellを開き、下記のコマンドを実行して解決しました。 PS C:\\Users\\user > Set-ExecutionPolicy RemoteSigned

Unity関連のクラスをWindowsのスタンドアローンアプリケーションから利用する際の注意点

Unityのアセンブリを参照してWindows上からスタンドアローンのアプリケーションを実行しようとしたところ、Unity Engine内からしかインスタンス化できないクラスがあったのでメモです。( visual studio - C# Security Exception - Stack Overflow でも投稿されています。) 例えば、GameObjectクラスをUnity Engine外からインスタンス化しようとすると下記のようなエラーが発生します。 System.Security.SecurityException : ECall メソッドをシステム モジュールにパッケージ化しなければなりません。 英語だと下記のエラーメッセージになります。 ECall methods must be packaged into a system module Stack Trace: GameObject.ctor() ちなみにVector3の構造体(struct)はUnity Engine外から参照しても問題ありませんでした。 実際にクラスや構造体を利用してみて調べていくしかなさそうです。

Visual Studioで「Source file '...' could not be found」のエラーを解消する方法

問題 Visual Studio上でC#のプロジェクトをビルドを実行したところ「Source file '...' could not be found」のエラーが発生してビルドできなくなってしまいました。 少し調べたところ、Visual Studioのプロジェクトファイル(csproj)のXMLのProject > ItemGroup > Compileのエントリに存在しないファイルが含まれていることが原因でした。 解決法 Visual Studio上からプロジェクトを一度Unloadして、csprojから当該のXMLエントリを削除して、再度プロジェクトをReloadしたところ解決しました。 (プロジェクトのUnload -> Relaodは念のために実施しました)。 下記のようなXMLエントリを探せばOKです(Include属性のファイル名部分はダミーです)。 <ItemGroup> <Compile Include="dir\something1.cs"> <Compile Include="dir\something2.cs"> <Compile Include="dir\missing.cs"> ... </ItemGroup> [補足] 通常のVisual Studioとかで作成したプロジェクトは、csproj内でCompileエントリが直接設定されていることは少ないようです。Unityから作成したプロジェクトなので、1ファイルずつCompileのエントリが設定されていたようです。

PHPのlibxmlでのエラーの扱い方

PHPでXML形式のデータを扱うにはlibxmlライブライを使うことが一般的です。 libxml内でのエラー発生時の処理は、libxml_use_internal_errorsの設定で、下記の2通りの設定が可能です。 libxml_use_internal_errors(false): Exceptionとして投げる。 libxml_use_internal_errors(true): libxml_get_errors()で取得。※libxml_clear_errorsで事前にエラーをクリアしておく方が無難。 libxml_use_internal_errors(true)に設定して、Exceptionを発生させないようにする関数のサンプルを示します。 $excecutionに実際のXML処理を渡します。 function executeInLibXmlUseInternalErrors(callable $execution) { // 現在のlibxml_use_internal_errorsの設定を処理後に戻すために保存 $useErrors = libxml_use_internal_errors(); try {   libxml_clear_errors(); libxml_use_internal_errors(true); return $execution(); } finally{ // 処理が終わったらlibxml_use_internal_errorsの設定をもとに戻す libxml_use_internal_errors($useErrors); } } // 下記はXPathでDOMDodumentからXMLの要素を取得する場合の使用例です。 // XMLの処理中にもExceptionが発生しないので、プログラム内で処理することができます。 $xpath = '/xpath'; $file = '/path_to_xml_file'; $result = executeInLibXmlUseInternalErrors(function