WSLでphp-fpmを動かしていると挙動がおかしい事がある

よくあるnginx+php-fpmの環境でlaravelを動かした時に遭遇したんですが、
レスポンスが返ってこないことが頻繁にある。
原因を調べていたら
fastcgi_finish_request
ここで止まってる模様。
関数の説明読めばわかりますが別になくても問題ないものです、
なのでこれを呼びだしているところをコメントアウトすれば解決します。
laravelの場合は vendor/symfony/http-foundation/Response.php の中に一か所だけあります。
他のものを動かす場合でもgrepで探して呼び出さないようにしてしまえば大丈夫だと思われます。

PhpExcelが更新されてないと思ったらPhpSpredsheetになってたようだ

PHPOffice/PhpSpredsheet(github)

phpからexcelを扱う場合、comを使う方法もありますが、それはWindowsでExcelが入っていないと使えないので、
一般的に使用されているようなサーバーでは使用できません。

PhpExcel/PhpSpredsheet使えばLinuxでも読み書き可能になります。
管理画面から直接Excel読ませたりとかできるようになるので手間が軽減できてなかなか良いです、
私の場合はExcelを汎用的にdbにインポートできるようなものを作って使ってます。

コーディング用の Fira Code を Eclipse 4.6.2(neon.2)で使ってみた

Fira Code(github)
対応表だと Windows版のEclipseは Doesn’t work となっているが完全に動かないわけではない。
設定はフォントをインストールした後(eclipseを起動していた場合でも再起動の必要はない)、
ウィンドウ→設定→一般→外観→色とフォント、基本の中にあるテキスト・フォントを選択して編集、Fira Codeを選択

PHPのコードでちょっと試してみた、
==,===,!==,==,!=
このあたりはちゃんと合字のものが表示される、
->,=>,<= この辺は合字になってない。一部はちゃんと表示されるし、合字にならない部分は元のままなので、 全部が合字にならないという以外は特に問題なさそうに見える、 あとは好みの問題かな。追記: .= も合字になってますね、まだ他にもあるかも。2017/10/16 追記: OSのせいなのかEclipseのバージョンが上がったせいなのかわからないけど日本語が表示されなくなるなぁ・・・ 以前はWindows7+Eclipse 4.6.2、今はWindows10+Eclipse 4.7.1a、 なんとなくOSの問題な気がするけどWindows7環境はなくなっちゃったんで試せない。

今度はCodeigniter

うーん、サーバーサイドの仕事に復帰?してからまだ1年も経たないのにずいぶんいろんなフレームワークを触る事になったもんだ。
FuelPHP,CakePHP,Laravel,Codeigniter,
Laravelは自主的にやったけど他は仕事の都合で使う事になった感じ。

まだあんまりコード書いてないけど、
Codeigniterも素直で使いやすそうな感じがする。

phpのフレームワークいくつか使ってみて軽く感想

fuelphp まぁ普通。
cakephp 最悪、勝手にいろいろするな!細かい事やろうとしないならいいのかもしれないが・・・
laravel 速度はともかく素直で使いやすい、さすが今一番人気なだけはある。

laravel本体とは別だけど yajra/laravel-datatables が使いやすくて good。
今度 phalcon も使ってみたいなー。

Laravel5.2のクエリビルダをオーバーライドしてみた

クエリビルダを直接使う場合はオーバーライドしたクラスを使えばそれで済むのだが、
モデルだとどうしていいかわからなかったので調べて実装してみた。
fuelphpとかだとmodelに書けば動いてくれたけど、
laravelの場合はクエリビルダを別に生成してるのでmodelオーバーライドしても有効にならない。

開始終了を入力して範囲検索する場合、
どちらか片方だけ入力した場合とか入力してない場合にいちいち毎回判定してwhereに振るのがめんどくさい。
ということで
whereBetweenをオーバーライドして勝手にやってくれるようにする。
適当に app\CustomQueryBuilder.php とかに以下を保存。
入力判定をemptyでやってるのは存在しない場合に null ではなく “” を返しているため、
数値で0を使いたい場合等は対策が必要。

<?php
namespace App;


use Illuminate\Database\Query\Builder;

class CustomQueryBuilder extends Builder
{
    /**
     * 指定なしならそのまま、片方だけなら where に振る
     *
     * @param string $column
     * @param array $values
     * @param string $boolean
     * @param bool $not
     * @return \App\ModelBase
     */
    public function whereBetween($column,array $values,$boolean = 'and',$not = false)
    {
        if( !empty($values[0]) && !empty($values[1]) ){
            return parent::whereBetween($column,$values,$boolean,$not);
        } else if(!empty($values[0])){
            return  $this->where($column,'>=',$values[0]);
        } else if(!empty($values[1])){
            return  $this->where($column,'<=',$values[1]);
        }

        return $this;
    }
}

モデルのクエリビルダ作ってるところをオーバーライドする、これを継承してモデル作れば全部に適用されて楽。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use DB;

class ModelBase extends Model
{
     protected function newBaseQueryBuilder()
    {
        $connection = $this->getConnection();
        $grammar = $connection->getQueryGrammar();
        return new CustomQueryBuilder($connection,$grammar,$connection->getPostProcessor());
    }
}

 

CakePHP2.8で作ってたものをLaravel5.2に移植してみるテスト

仕事が暇なので仕事中に実験的に移植中、
基本的にLaravelのほうがスマートに書ける感じ、
CakePHPはなんか余計な事してくれる感じが強くて嫌、特にDB周り、
そこら辺はLaravelだとイイ感じ。

ただ、機能的に存在してないものとかLaravelのほうが使いにくい部分もある、
そういうところは生php関数使ったりして補う。

FuelPHP 1.8がリリースされてますね

チェンジログ見てみたけどPHP7にも対応してるっぽい?
1.7を書き換えて使ってたんだけどそのまま使えるようになったのか、
今のプロジェクトはもうデバック段階に入ってるので使えないけど。

次はそもそも仕事がどうなるかわからんので使う機会があるかもわからない、
絶賛転職活動中。

visual studio 2015 でも BOM無しUTF-8はダメなのか

wxWidgets+wxformbuilder+eclipse+tdm-gcc
上の環境で開発したソースをコンパイルしようとしたらcp932だから云々言われて日本語使ってる所で怒られる、
結局以前のバージョンと同じでbom無しはUTF-8として処理してくれないようだ。
wxformbuilderはbom無しコードしか出力してくれないんで、formいじるたびにbomつける作業が必要になってちょっと面倒。

eclipseはライブラリ追加が面倒だ、一つ一つ登録しなければいけないし、インポートも出来ないんだよな、
visual studioだったら ls -1 *.lib の出力コピペするだけでいいから楽なんだけど。
かと言って vs は上記の文字コード問題が・・・

eclipseは最初の一度設定したら後はそのままなんで、開発中の手間を考えれば eclipse のほうが楽か。

visual studio 2015 でビルドした x64 exe に upx かけると起動できなくなる・・・なんでじゃろ?
tdm-gccで作ったほうは x64 でも upx かけて問題なく動くんだけどなぁ。

PGReliefの体験版を使ってみたが・・・

静的解析による品質向上支援ツール
FUJITSU Software PGRelief C/C++

体験版を軽く使ってみたんですが・・・
ちょっと使いにくいかなぁ、ファイルとかいちいち選択しないといけないってのが面倒、
ディレクトリ指定で一気に読み込んでくれたらいいのに。

あとマクロを手動設定しなければいけないのが面倒、
eclipse+cppcheckの場合だとマクロ定義なんかは勝手にやってくれるから楽チンなんだが。
まぁ、eclipseが便利すぎるので慣れてると他のツールが面倒だと感じるのは仕方ないか。

評価の内容そのものは悪くないんだろうけど、UIをもうちょっと改善して欲しい。

ダイアログなんかは独自のUI使ってるせいで操作性がいまいち、
通常のダイアログ使ってくれたほうが操作しやすいんだがなぁ。