xserverでは、shell_execの一部が動かない
謎の仕様。Xserverではshell_execは使える。ところが
shell_exec('php -v')
を使うとプロセスが返ってこないし、
shell_exec('python -V')
だと結果がNULLになる。
この仕様のせいで、friendicaが使えなくて困った。
Xserverにgitをインストールする
ググった情報のコピペだけでは出来なかったよ。まず
wget https://github.com/git/git/archive/master.zip
はOpenSSLのバージョンの関係で失敗するので
wget https://www.kernel.org/pub/software/scm/git/git-2.17.0.tar.gz
にした。ところがmakeが出来なかった。
tar zxvf git-2.17.0.tar.gz cd git-2.17.0 ./configure --prefix=$HOME/opt make -i all make -i install ~/opt/bin/git --version
make -i でエラー無視インストールすると上手くいった。
Excelの書式を全て削除するマクロ
Excelで書式が増えすぎた場合は手で削除するのはムリ。マクロで一気に消しましょう。
Sub Excelの書式を全て削除() Dim myStyle As style On Error Resume Next For Each myStyle In ActiveWorkbook.Styles If Not myStyle.BuiltIn Then myStyle.Delete End If Next End Sub
PHPがThread Safeなのか?x86なのか64なのか?
こうすりゃわかるのか。
>php -i|find "Thread Safety" Thread Safety => enabled >php -i|find "Architecture" Architecture => x86
humhubをWindowsにインストールする
PHPのSNS、どれを使うか悩んでいる。OXWALLは実際に運用したけど、すごく使いにくかった。Minds、Movimもイマイチ。Elggはバージョン3が中々出ない。というわけでhumhubにチャレンジ。Yiiフレームワークはあまり好きじゃないんだが…。
バージョンの注意事項
humhub 1.2以前はPHP7.2では動作しないので注意。PHPのバージョンを下げるか、humhub 1.3以降を使う。
ダウンロード
composer-asset-pluginをインストール
D:\xampp\source\humhub>composer global require "fxp/composer-asset-plugin:^1.2.0" Changed current directory to C:/Users/AppData/Roaming/Composer./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing fxp/composer-asset-plugin (v1.4.2): Downloading (100%) Writing lock file Generating autoload files
このあとcomposer Update。時間はかなりかかる。
LaravelでPHPUnitを使ってNo tests executed!
Laravel5.4でPHPUnit6を使ったときに「No tests executed!」が出る。Laravel5.4はPhpunit6に対応していないので、vendor内にあるphpunitを使うと解決できる。
php vendor\phpunit\phpunit\phpunit
Image source not readableの対処
大きな画像を送って「Image source not readable」が出た場合はphp.iniの「upload_max_filesize」の値を大きくすれば対処できる。
storeとupdateで共通で使えるバリデーション
storeとupdateでバリデーションを共通化したいけど、updateの時だけユニークチェックしたい。という時の書き方。あまりキレイじゃないね。。。
public function valid() { $validator = \Validator::make($this->toArray(), [ 'code' => 'required|max:255', ]); if ($this->id && !$validator->fails()) { $validator = \Validator::make($this->toArray(), [ 'code' => 'unique:titles,code,' . $this->id ]); } return $validator; }
Requestに値を入れてテストする
コントローラーをテストする時にRequestの変数に値を入れる。
$request = new Request; $request->merge([ 'name' => 'testname', ]); $controller = new \Lb\Http\Controllers\TitleController($request); $controller->update($request, 100); $title = Title::find(100); $this->assertEquals($title->name, 'testname');
長くなったLaravelのModelを分割
長くなったLaravelのModelを分割する方法の一つとして、私は上位モデルを使うときがある。
Titleモデルのうち、Updateに関する機能を独立させるときはこんな感じ。テーブル名を指定するのがポイント。
class TitleUpdate extends Title { protected $table = 'titles'; public function myvalidator($request) { return \Validator::make($request->toArray(), [ 'releasedate' => 'date_format:Y/m/d', ]); } }
PostgreSQLで大文字小文字検索
「iLIKE」を使えば、PostgreSQLで大文字小文字関係なく検索できる。
Mymodel::where('name', 'iLIKE', $name)->first();
Laravel5.3のログインをメールアドレス以外にする
Laravel5.3で、またやり方が変わったみたい。編集対象のファイルは
App\Http\Controllers\Auth\LoginController.php
public function username() { return 'username'; }
Laravel5.2からコンテナ登録方法が変わった
古い書き方
$this->app['myapp'] = $this->app->share(function($app) { return new Myapp; });
新しい書き方
$this->app->singleton('myapp',function($app) { return new Myapp; });