[C#]文字列を大文字/小文字無視して置換する方法 Replace()
C#で文字列を置換する際に、置換元文字列を大文字と小文字を無視してチェックしたい場合があります。 このような場合は、Regex.Replace()メソッドをRegexOptions.IgnoreCaseオプション付きでコールすればよいです。 string inStr = “abc ABC aBc”; string outStr = Regex.Replace(inStr, “abc”, “xyz”, RegexOptions.IgnoreCase);
続きを読む
書籍「サーバーレスシングルページアプリケーション」をWindows環境で実行する(sspaコマンド)
オライリーから出版されている書籍、サーバーレスシングルページアプリケーションでは、単体テストやサーバへのアクセスなどをsspaというコマンド経由で操作するように説明されています。 sspaコマンドな本書専用のコマンドですが、シンプルな内容で見れば何を行っているか直ぐに理解できるような内容です。ですが、基本的にLinuxやMacOS環境などbashが動く環境で実行するように説明が行われています。 今回は、サーバーレスシングルページアプリケーションの書籍の内容をWindows環境で動作させたのでその時の手順をメモしておきます。Windows10 Professionalが入ったPCで動作確認を行っ…
続きを読む
[PHP]Laravelからtwitter bootstrapを使う方法
PHPからbootstrapを使用する場合、bootstrapのサイトからcss/jsをダウンロードしなくても、composer経由でダウンロードすることが可能です。 bootstrapはベンダー名がtwbsで管理されているので、具体的には以下のコマンドでダウンロード可能です。 composer require twbs/bootstrap この場合、ダウンロードされたファイルはvendorの下に入るので、DocumentRootから見えない場所に設置されてしまいます。Laravelフレームワークを使用している場合、artisan asset:publishコマンドを使用することで、Webサー…
続きを読む
[PHP7.1]タイプヒンティングで関数の戻り値にvoidを指定したときのふるまい
PHP7.1では、タイプヒンティングで関数の戻り値で値を返さないことを明示するために、voidの指定が可能です。 voidを指定したときに、正しく実行できるコード、エラーが出るコードを確認してみました。 下記はOKパターンです。 <?php // OK: return文に戻り値を指定しないコードは正しく実行できる function foo_ok2() : void { return; } // OK: return文自体を書かなくてもよい function foo_ok1() : void { // do nothing. } 一方、下記コードはNGです。 // NG: “void”のタ…
続きを読む
[PHP]関数の戻り値にnull値の許容をタイプヒンティングさせる方法
PHP7では、関数の戻り値の方を制限するためのタイプヒンティング機能が追加されました。 PHP7.1では、このタイプヒンティングに対して、さらに”指定された型、もしくは、null”が返されること強制する、null許容型のタイプヒンティング機能が追加されました。 例えばstring or nullのreturnを強制したい場合、下記サンプルコードのように”?string”先頭へ”?”を付ければOKです。 <?php function foo($option) : ?string { if ($option == 1) …
続きを読む
[PHP]無名関数を定義して、即時実行したい場合は?
javascriptでは、オブジェクトの名前空間の問題により、無名関数を作ったうえで、作成した無名関数を即時実行したい場合が多くあります。 phpで同様の事を行いたい場合、どのような記述を行えばよいでしょうか? php7.0以降の場合は、javascriptと同様に下記のコードで実行することもできます <?php (function() { echo ‘hello world’; })(); php5.xのバージョンしか使えない場合は、上記のコードほどシンプルではありませんが、下記のコードで無名関数を即時実行可能です。 <?php call_user_func(function()…
続きを読む
[PHP]PHP7実行時、VCRUNTIME140.dll is missingエラーが出るとき
windowsでphp7を実行したとき、下記のエラーが出る場合があります。 Unable to start the program as VCRUNTIME140.dll is missing on your computer. Try reinstalling the program to fix this problem. 無いと出力されているVCRUNTIME140.dllですが、これはVisual C++ Runtime14.0の意味です。 ダウンロードページを見ると、下記の通りたしかにランタイムが必要との記載があります VC11, VC14 & VC15 More recen…
続きを読む
[PHP]composerのインストールでUnable to find the wrapper “https”エラー
PHPでcomposerをインストールしようとしたとき、以下のようにUnable to find the wrapper “https”エラーが出る場合があります。 >php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);” Warning: copy(): Unable to find the wrapper “https” – did you forget to enable it when you configured PHP? in Command line code on line 1 W…
続きを読む
XDebugを有効化したときのメモ
chromeにextensionを追加する インストール先 Xdebug helper インストールされたextensionのアイコンを右クリック -> オプションを選択する IDE keyの項目を、使っている開発環境に合わせる PHPの環境を作る XDebug.dllをダウンロードする https://xdebug.org/download.php php.iniに下記の定義を追加する [PHP_XDEBUG] report_zend_debug = 0 zend_extension = “C:\home\php\xdebug\php_xdebug-2.5.0-5.6-vc11-x86_64…
続きを読む
[FuelPHP]複数DBへ接続時、エラー”Database type not defined in”が出るときにチェックする事
FuelPHPでは、DBへの接続定義を, fuel/app/config/$ENV/db.phpで管理されています。 インストール直後の開発環境では、以下のようになってます。 return array( ‘default’ => array( ‘connection’ => array( ‘dsn’ => ‘mysql:host=localhost;dbname=fuel_dev’, ‘username’ => ‘root’, ‘password’ => ‘root’, ), ), ); これを、複数DBへの接続対応するために、例えば’default2…
続きを読む
[FuelPHP]Windowsだと問題ないのにLinux上だとClass not foundエラーが出るときにチェックすること
Windowだとクラスのロードが問題なく行えるのに、Linux上だとクラスのロードでエラーになる場合は、ファイル名の大文字・小文字のルールが間違っている可能性が高い(主に開発環境はWindowsで本番環境がLinuxだと気づきにくい)。 例えば、Model/ItemMst.phpという名前でモデルを作っている場合、Windowsだとファイル名の大文字小文字を無視するのでphpファイルの読み込みが行えるが、LinuxだとModel/itemmst.phpを読みに行こうとしてエラーになってしまう。 newで指定されだクラス名に対して、実際に何のファイル名でクラスローダがロードを試みているか確認した…
続きを読む
[php]phpQueryをcomposer経由でインストールする
PHPからwebページのスクレイピングを行うための有名なライブラリにphpQueryがあります。 phpQueryを使用すると、htmlに対してjQueryのようなセレクタで、取得したいタグの検索などが簡単に行えるので便利です。 今回はこのphpQueryをcomposer経由でインストールしたうえで、簡単な動作確認を行ってみました。 作業手順 phpQueryパッケージをインストールする まず、composer self-updateコマンドでcomposer自身のアップデートを行ったうえで、requireコマンドを使用してphpqueryパッケージのインストールを行います。 compose…
続きを読む
[FuelPHP] composer updateでfuelphp/upload 2.0.6のアップデートエラーが出るとき
FuelPHPのフレームワーク使用時にcomposer updateを実行した際、下記のエラーがでてパッケージをアップデートできない場合があります。 > composer update Your requirements could not be resolved to an installable set of packages. Problem 1 – fuelphp/upload 2.0.6 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system. …
続きを読む
[php]composer self-updateでエラー[Composer\Downloader\TransportException]が出るとき
composerを使用していてcomposer self-updateコマンド実行時に下記のエラーが出る場合があります [Composer\Downloader\TransportException] Your configuration does not allow connections to http://getcomposer.org/versions. See https://getcomposer.org/doc/06-config.md#secure-http for details. このエラーが出る理由ですが、composerはファイルのダウンロードをSSL対応したサイトから…
続きを読む
[php]composer self-updateでエラー[required for SSL/TLS protection]が出るときの対処法
PHPでcomposerのアップデートを行った時、opensslのライブラリでSSL/TLS protectionエラーが出る場合があります。※下記の例の”composer self-update”は、windowsの場合は環境によって”php.exe composer.phar self-update”になる場合もあります。 > php.exe composer.phar self-update [RuntimeException] The openssl extension is required for SSL/TLS protect…
続きを読む
‘cURL error 60’エラーが出たときの対処法 ‘cURL error 60: SSL certificate problem: unable to get local issuer certificate’
cURLを使用したプログラムでhttpsのサイトにアクセスしたとき、下記の例外が発生しました。 この問題を解消するために、調べた事・行ったことののメモを書いておきます。 環境: Windows10, PHP7.0.14, GuzzleHttp経由でcURLライブラリを利用 Fatal error: Uncaught exception ‘GuzzleHttp\Exception\RequestException’ with message ‘cURL error 60: SSL certificate problem: unable to get local issuer certificat…
続きを読む
[PHP]mcrypt_module_open()でエラー”Call to undefined method”が出るとき
phpのプログラムで、mcrypt_module_open()メソッドをコールしたとき、Call to undefined method…ワーニングが出る場合があります。 この場合、pho.iniでphp_mcrypt.dllモジュールが読み込まれていない可能性があります。php.iniを確認し、extensionの指定がコメントアウトされていたらコメントを外してください。 ;extension=php_mcrypt.dll ↓ extension=php_mcrypt.dll Windows環境で動作させる場合、PHP5.3以降ではMcryptのライブラリがphp.exeにstatic …
続きを読む
[FuelPHP]DB::query()を使って、SQL直書きでDBアクセスしたい
FuelPHPでDBをアクセスしたい場合、FuelPHP標準でO/Rマッパや、Model_Crud、クエリビルダー、DB::query()メソッドなど、様々なアクセス方法が用意されています。 簡単なプログラムを作る場合は、O/Rマッパ(ORMパッケージ)などを使ってもよいのですが、データのアクセスが多くなることが予測される場合、DBアクセスが抽象化された形での処理はパフォーマンスが低下する問題が後々出てきてしまいます。 このようなリスクがある場合、SQLを直接かけるDB::query()メソッドを使用すると、抽象化によるオーバーヘッドもないし、DBサーバの実行計画を見ながら詳細なクエリのチュー…
続きを読む
[C#]Form上の全TextBoxに対し、Ctrl-Aで全選択できるようにする方法
VisualStudioにてWinFormを使用したプログラムを作成時、TextBoxに対してCtrl-Aでテキストの全選択をしたい場合があります。 KeyDownイベントでSelectAll()させればよいのですが、対象となるTextBoxが多いときは、イベントハンドラを追加するのに手間がかかります。 このような場合は、下記のコードでForm上に存在する全てのTextBoxに対して、”Ctrl-Aで全選択”の機能をつけることができます。 private void Form1_Load( object sender, EventArgs e ) …
続きを読む
[ロリポップ]MySQLサーバのIPアドレスを調べる方法
ロリポップのMySQLサーバへSSHトンネリング経由で接続したかったのですが、サーバのIPアドレスが分からなかったので調べてみました。 調査時点で、下記のIPになってました。 mysql501.phy.lolipop.jp : 157.7.105.174 mysql502.phy.lolipop.jp : 157.7.106.56 mysql503.phy.lolipop.jp : 157.7.106.57 mysql504.phy.lolipop.jp : 157.7.105.175 mysql505.phy.lolipop.jp : 157.7.106.58 mysql506.phy.lo…
続きを読む