2016年4月2日土曜日

cordovaでwkwebview-engine-localhost を入れるとbuildに失敗する問題の対処

XCodeでビルドしてみると重複するシンボルがあるというリンカーエラーになっていた。

GCDWebServer.frameworkがリンクされているにも関わらず何故か.mと.hも別に組み込まれているために起きていた。
GCDWebServer.frameworkをリンク対象から外すことで問題が解消した。

cordova buildからだと下記のようなエラーでよくわからない。
基本的にビルドに失敗した場合はXCodeでビルドし直すとトラブルシューティングしやすいかもしれない。

Error code 65 for command: xcodebuild with args:

2016年3月8日火曜日

Imagemagickを使ってアルファ値付き(アンチエイリアス )のアイコン画像の色を置換する

フリーのアイコンなどをネイティブアプリで使う場合に色を変えたくなることがある。
そこで、ImageMagickを使って画像の色を一括置換したい。。
方法を検索してみると、コマンドを載せているブログがいくつかヒットするが、アルファ値を使ったアンチエイリアスが効いたアイコンをうまく扱える方法は見つけられない。

そこで仕方ないので作ったのがこちら。

gist: https://gist.github.com/dotneet/3f2a69924bce60209d0b

やっていること:
1.アルファ値を切り出しておく
2.置換後の色で塗りつぶした画像を用意する
3.切り出しておいたアルファ値を再度適用する

仕組み的に画像はアルファ値を除き単色で構成されているが条件になる。

Google Material Designのアイコンやいくつかのアイコンに対してはうまく機能した。

2016年3月3日木曜日

"Configuration with name 'default' not found"への対応

あるプロジェクトをgit cloneしてきてgradleを実行すると
"Configuration with name 'default' not found"
というエラーが発生して進まなくなった。

原因: サブモジュールがなかった

このエラーはbuild.gradleでサブプロジェクトが指定されているがサブプロジェクトのファイルが存在しない場合に発生するよう。

なので、サブプロジェクトをgitのサブモジュールとしているプロジェクトでは git submodule init, git submodule update をかけておかないとこのエラーがでる。

2016年2月17日水曜日

Dockerは現時点(1.9)では複数のネットワークインタフェースをうまく扱うことができない

どうやら、Dockerはデフォルトのネットワークインタフェース間でしか通信を行うことができないらしい。
例えば、eth0とeth1と2つのネットワークインタフェースを持つような構成になっている場合に、コンテナはeth1との通信が一切できない。

このブログに理由と解決方法が載っていた。

http://williamsbdev.com/posts/docker-connection-marking/

パケットがdocker0を通る前にパケットにfwmarkという印を付けることでちゃんとルーティングされるようにするらしい。
ちょっときもい。


2016年2月15日月曜日

Android端末からHTTPSに繋ぐとセキュリティエラーになる問題の対処

まれにAndroid端末に対応していないSSL証明書もあるらしいが、おそらくほとんどは中間証明書のインストールをミスっているだけだと思う。

SSL証明書の公開鍵証明書には証明書本体だけでなく中間証明書を追加すること。
中間証明書は公開鍵証明書の発行元が登録完了後にメールに添付してくるか、発行元サイトなどで公開されている。

サーバーの設定

秘密鍵

自分で作成した秘密鍵を設定

こんな感じになる:

-----BEGIN RSA PRIVATE KEY-----
~
-----END RSA PRIVATE KEY-----

公開鍵証明書

送られてきた証明書と中間証明書を結合したファイル。

こんな感じになる:

-----BEGIN CERTIFICATE-----
~公開鍵証明書
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
~中間証明書
-----END CERTIFICATE-----


2016年2月9日火曜日

クラウド時代のプログラマについて考えたみた。

クラウド時代のプログラマについて考えたみた。


オンデマンドインスタンス型プログラマ


オンデマンドインスタンス型のプログラマは時間単位の報酬で作業を受ける。
プログラマに作業依頼にするには、ウェブコンソールから「インスタンスの作成」を行う。
ここで様々な種類のプログラマから作業内容にあったインスタンスタイプを選ぶことができる。
インスタンスタイプについては後述する。

スポットインスタンス型のプログラマ


プログラマはもしも定時にあがることができたなら家で少しだけ作業ができる。
強調しておくが、”もしも” 定時にあがれたらだ。
この空いた時間帯に副業として作業を依頼する分には少しだけ安く作業を請け負うことができる。


リザーブドインスタンス


もしプログラマに長期的に作業をしてもらいたい場合は、リザーブドインスタンスがお得だ。
あらかじめ年間に一定以上の作業を依頼する約束をすることで、安く作業を請け負ってもらうことができる。
ただし、もし約束しただけの作業を依頼できなかった場合でも、同等の報酬は払わなければならない。

インスタンスタイプ


プログラマにもタイプが存在し、作業に応じて向き不向きがある。
このため、クライアント様においては、作業内容に応じて適切なプログラマのインスタンスタイプを選ぶことが重要だ。

m4インスタンス

m4インスタンスは汎用的に使えるプログラマインスタンスタイプだ。特にこれに対して強いというものはないが
大抵のことをそれなりな感じにこなしてくれる。
どのインスタンスタイプを選べば分からない場合はとりあえずこれを選んでおけばいい。

c4インスタンス

とにかく特定の作業を早くこなしてもらいたい場合はこのインスタンスを使う。
ただし、このインスタンスタイプのプログラマはたくさんのことを覚えたり、たくさんのことを同時に行うのは苦手だ。

r3インスタンス

c4とは反対に、色んなことを同時にさせたり、記憶力の良いプログラマを所望する場合はこのインスタンスだ。

まとめ

冗談はさておき、実際もっと短いスパンで色んな仕事をこなすというのも面白いきはする。