koudenpaのブログ

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

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を作成してみた際に凄味を感じたので記事にしてその気持ちを忘れないようにした次第である。

続きを読む

Datadog の見込み客獲得施策を凄いなぁと思った

先日のAWS Summit Tokyo 2018後のDatadogの営業が印象的だったので、忘れないうちにメモしておく。

イベントの展示ブースで大量の名刺をばらまいてからしばらく後に、以下の様なキャンペーンの案内メールが着た。 (展示している企業は来場者の情報を収集できる)

クラウドサービスに登録して、チュートリアルを突破したら抽選で賞品をプレゼント、というものだ。 それだけならよくあるが、内容がなかなか印象的だった。

  • 1人のチュートリアル突破に対して1万円程度相当の賞品金額
    • 結構いい金額なのでは?
  • 10名中1名という見せ方
    • 10%で当たる、というのはなかなか高確率に感じられる
    • 当選確率は、例えば抽選で5名にで対象が50名だった場合と同じなのだけれど、10名中1名の方が確率高そうに感じる
      • 何なら、対象者が少なく抽選で何名に~の方が実際には高確率な可能性すらある
      • ユーザーには対象の人数が分からない
  • 費用の上限が明確な施策である
    • 対象メールアドレス把握できており、無限に対象者が増えることがない
    • AWS Summitに登録したメールアドレスで登録してください案内があった)

せっかくイベント出展というコストを払って得たメールアドレスに対して、特筆すべき事が書かれていない営業メールを送るだけの企業が多い中、これは相当印象に残った。

クラウドサービスは何はなくとも体感してもらわなくては始まらない。 実際問題効果的でありそうだ。

オチ

それだけ印象に残っている餌でも引っかからなかった獲物がここにいる。

だって面倒くさいのだもの。

自分の場合は一度Datadogを試したことがあったからという理由もあるけれど、ユーザー獲得は大変だろうなあ、と思った。

VSTS BuildのYaml定義

VSTSVisual Studio Team Services)のビルド機能はYAMLでの定義でも使用できると教えてもらったので試してみた。

なかなか良い感じなので、GAされたらコードベースでのビルド管理の選択肢の一つとして浮上してくるのではなかろうか。

GUIでやりたいこと(タスク)をサクサク探しつつざっくり定義して、そのYAMLを表示してビルドのコード管理を始める。のようなことができる。作業スタイルが広がるのがとても良さそう。

tech.guitarrapc.com

上記の記事は2018年1月のものだが、この記事を書いている時点でまだGAされていない。

なので、参照記事と変わらない手順で機能を有効化してから使うことになる。

有効化して先の記事で試したビルドYAMLを表示してみた。

f:id:koudenpa:20180611233814p:plain

続きを読む

VSTSのビルド機能で静的サイトをデプロイする

やりたくてやったこと。

  1. 静的サイトのリソースをビルドする
    • npm install
    • npm run build
  2. リソースを Azure Blob Storage にコピーする
  3. Azure CDN のエンドポイントをパージする

しばらくそれぞれ手動でやっていたのだけれど、何回もやるのは辛くなってきたので自動化した。

世の中には非常に強力なDevOps基盤としてVSTSVisual Studio Team Services)が存在する。

azure.microsoft.com

今回はそのビルド機能を使ってみた。リリース先がAzureなので楽だろう、という目論見だ。

実際楽だった。

f:id:koudenpa:20180611033219p:plain

ウィザードに従ってビルドのタスクを追加していくだけで、やりたかったことを実現できた。

続きを読む