koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

Mackerel UG × IDCFクラウド UG Meetup #1

に参加、LTしてきた。

共催イベントなのでconnpassページは双方に合わせて2つ!

LTスライドはこちら。

www.slideshare.net

続きを読む

CGI = Perl ? 懐かしインターネット上のプログラム言語

なんだか最近CGIという略語をよく見かける気がする。

CGIとは、インターネット上のサーバでプログラムを動かすための仕掛けで、20年くらい前の僕は CGIスクリプトPerl だと思っていた。

もちろん今では、CGIはCommon Gateway Interfaceの略であり、Perlに限らず何でもインタフェースして実行できる仕掛けだと知っている。

PHPスクリプトでも、シェルスクリプトでも、バイナリでも。

続きを読む

PHPでPNGのICCプロファイルを無視する

Chrome 68 はHTTPのサイトが警告表示されることが話題になっていましたが、他にもこんなことがあったようです。

var.blog.jp

どうやらこれまで無視されていた画像ファイルへ埋め込まれたICCプロファイルが反映されるようになった結果、表示が変化してしまったようです。

自分の周りでもユーザーがアップロードした画像を表示しているサイトで同じことが起きました。 やったね。

元と同じ表示を得るには、このICCプロファイルを削除してやれば良さそうです。 (これが正しい対応かにはやや疑問が残りますが)

そのサイトでPHPで画像を処理するときにはGDを使用しています。

このGDではICCプロファイルは無視されるようです。

github.com

つまり? 一度GDで何か処理してやれば無視できる。

<?php
    public static function normalize_image($baseImagePath, $outputImagePath) {
        // 一度GDで処理することでPNGのICCプロファイルを削除する
        $workimage = imagecreatefrompng($baseImagePath);
        imagesavealpha($workimage,true);
        imagepng($workimage, $outputImagePath);
        imagedestroy($workimage);

        return $outputImagePath;
    }

相当ダーティですが、これでICCプロファイルを消せました。

正しさより結果、この位でいい。


尚、この記事を書いていて、PHPのコードハイライトを有効にするには <?php が必要であることに気づきました。

一つ賢くなった。

OpenAPI Specification(Swagger Specification)はいいなと改めて思った

のでメモしておく。

OpenAPI仕様乱暴に言うと『RESTなAPIはこのように定義しましょう』という仕様で、その手の仕様、規格の中では一番よく見かける気がするものだ。

WSDLを知っている人なら、そのRESTなAPI版だと考えるとしっくりくると思う。

現在はバージョン3で、2まではSwagger仕様と呼ばれていたので、インターネット上にはまだSwaggerとしての情報の方が多い状態だ。

元々この仕様は良いものだと思っていたのだが、 先ほどOpenAPI仕様を元にAzureのLogic AppsCustom Connectorを作成してみた際に凄味を感じたので記事にしてその気持ちを忘れないようにした次第である。

続きを読む