Google Apps Script をトリガーから関数に引数がある場合、あるオブジェクトが渡される

最近、KPIをDBやらGoogle Analytics などから値を引っ張ってきて、Google Spreadsheetに値を入れるというお仕事をしている一環で、よく Google Apps Script のトリガーを触ります。

そのトリガーから起動される関数の引数に渡される値が、手動起動の場合と トリガー起動の場合で異なってややはまったのでその挙動の違いをブログに残しておきます。

手動起動

以下のようなPGを書いて、▶️ を押して実行すると

f:id:shohu33:20160418154144j:plain

引数は undefined ということがわかります。まぁ何も引数指定していないので当たり前ですね

f:id:shohu33:20160418154218j:plain

自動起動

ただ、以下のようなトリガーを設定して実行すると

f:id:shohu33:20160418154324j:plain

以下のようなオブジェクトが入っていることがわかります。

f:id:shohu33:20160418154736j:plain

この不思議なオブジェクトは

どうも Time-driven events というやつが入っているようで、トリガー実行時に勝手に渡されるようです。

f:id:shohu33:20160418154838j:plain

ちなみにトリガー実施日時は以下のようにとれるようです。もっと良い取り方ありそうな気もしますが、、、

targetDay = new Date(event['year'] + '/' + event['month'] + '/' + event['day-of-month']);

このような挙動の違いを把握して、トリガー実行する必要があるので気をつけてトリガー実行しましょう。

様々なブラウザへのPUSH(プッシュ)通知サービス「PushAssist」

一度自分のサイトに訪問したユーザーを、再び自分のサイトを思い出してもらってまた訪問してもらいたい!アプリのように通知できたら、、、と思っている人は結構いるんじゃないかと。

そのような中、ブラウザを開いているとPUSH通知してくれるサービスが最近、どんどん登場しています。

こういったサービスを選ぶときに対応できるブラウザ、端末が多いとより多くの人に通知できるサービスを選びたいものです。いくらブラウザでPUSH通知できるといっても、ChromeではできるけどSafariではできない、といったように限られたブラウザしかできないと威力も半減ですよね。

その中でも、様々な端末に対応可能な「PushAssist」を触ってみました。

 

f:id:shohu33:20160415195806j:plain

 

対応端末

PC, Mobileそれぞれの以下ブラウザに対応しているようです。 

Chrome 42以降

f:id:shohu33:20160415200129j:plain

 

Safari 

f:id:shohu33:20160415200153j:plain

 

Firefox 44以降

f:id:shohu33:20160415200243j:plain

 

アカウントの違い

特にMobileでのブラウザPushを見てみたいので、Premiumアカウントでトライアルできないか試してみることにした。「Mobile Website Notifications」というやつ。

f:id:shohu33:20160415202211j:plain

早速アカウントを作る

アカウントを作成しようとしたら以下エラーメッセージが表示。

Japan じゃダメなのか? とりあえず、よくわからないのでなぜ会員登録できないのか問い合わせをしているので、回答待ち。

f:id:shohu33:20160415201904j:plain

とおもったら、電話番号いれてくれということらしいので、電話番号いれたところ先に進んだが、クレジットカード情報いれたくないのでSTAY。

 

 

 

ブログ再開します

誰ももはや自分のブログ見ていないと思いますが、こっそり再開します。

最近、年齢重ねたこともあり求められるスキルも技術的なところよりも、マネージメントやら調整やらのスキルを求められることが多くなってきました。そういうこともやれないことはですが、何かしっくりこなく満足できる結果がここ最近得ることがありませんでした。

以前から決意しようと思ってもなかなか決めきれずいた事があったのですが、状況的にそうもいってられないので決意することから始めようと思います。

事業グロースハッカー(美)」
ようは事業をグロースするためになんでもやる、美おっさんを目指そうと思います。

(美おっさんめざすのは、今日誕生日の(子会社の方の)社長が美おっさんを目指すといっていたので、負けじと(美)という文字を入れてみたかっただけです)

 

よ〜し、やるぞぉ!


どこまで続くかなぁ。

Virtualbox上のNginxでホストマシンと共有している静的ファイル(CSSなど)の更新が検知されない

タイトルの問題が発生して、ちょっとはまったのでメモ。

http://serverfault.com/questions/269420/disable-caching-when-serving-static-files-with-nginx-for-development

を参考にすると、以下設定を nginx.confにしてやればよいことがわかった。

sendfile  off;

これで mac で修正したcssがすぐにゲストOS側のnginxで反映されるようになったー。

 

sendfileについては

http://heartbeats.jp/hbblog/2012/02/nginx03.html

が参考になる。

nginxのproxy_cacheが効かないと思ったら response headers に Expires とかはいってると駄目なのね

nginxでproxy_cacheさせようと思ったけど、どうも効かない。

nginxのlogに $upstream_cache_status を出力してみたけど MISS ばっかりで HIT にならなかった。

http://wiki.nginx.org/HttpUpstreamModule#.24upstream_cache_status

 

調べていると、abコマンドでアクセスするとHIT. ブラウザからアクセスすると必ずMISS。

abコマンドは HTTP1.0, ブラウザからアクセスするとHTTP1.1の違いがあるぞ、

このあたりの違いによって何か違うんかなぁと思って調べていたら 

--------

http://wiki.nginx.org/HttpProxyModule#proxy_cache

The following response headers flag a response as uncacheable unless they are ignored: 

Set-Cookie

Cache-Control containing "no-cache", "no-store", "private", or a "max-age" with a non-numeric or 0 value

Expires with a time in the past

X-Accel-Expires: 0

--------

 

だって。response header に 特定の条件の値がある場合はキャッシュしないよと。

もう少し調べていったら proxy_ignore_headers を指定すると、これで指定した値は無視してキャッシュしてくれるようになる模様。

http://wiki.nginx.org/HttpProxyModule#proxy_ignore_headers

結局以下のように設定したら、HITしまくりますた。

--------

proxy_ignore_headers Expires;

-------- 

しばらく様子見てみよう。

 

 

gunicornでgraceful reload

gunicorn で graceful な再起動方法を探していたらマニュアルにのってるじゃ、ありませんか。

http://gunicorn.org/faq.html


How do I reload my application in Gunicorn?
You can gracefully reload by sending HUP signal to gunicorn:
$ kill -HUP masterpid

なんで masterpidもとめるのがすぐわからなかったので、pkill つかってリリース時に 実施する事でグレースフルな再起動になりますた。(なったはず


pkill -HUP -f 'run_gunicorn'

ファイルかえて pkill やったら更新が確認でけた。

追記 でも結局挙動が不安定(ソースが反映されたりされなかったり)だったので結局


pkill -f 'run_gunicorn'

しちゃってます。。。

Unity 関連技術まとめ

諸事情でUnity3.4今触ってるのでUnityに関する技術をまとめていきます。
随時更新してきます。

それにしても、Cocos2dとかで一から作るより非常に楽だよねUnityって。
ただ、MacBookAir メモリ2G の開発環境だとちと辛い。。。

unity monodevelop

unity monodevelop 文字化け

http://d.hatena.ne.jp/shunsuk/20091027/1256643206
でも、まだところどころで文字化けをまだする

unity ツール系

テラインに配置するオブジェクトのツールキット入手

地形にいろいろ配置するオブジェクトが無料で手に入る。

terrain toolkit download
http://unity3d.com/support/resources/unity-extensions/terrain-toolkit

unity公式サイトから Terrain Assets をダウンロード方法
Window -> Asset Storeでウィンドウを開き「Terrain Assets」で検索し Unity Technologies公式の素材集をDLしてインポート

Tips系

unity コンフィグ画面作成

設定画面はゲームを作る上で必要になるので覚えておいた方がよいな。
http://d.hatena.ne.jp/tueda_wolf/20120110

ライブラリ系

PathFinding 指定した場所に、キャラクターを移動する際のライブラリ

これ便利そう。まだ試してないが今後試していく予定。

http://forum.unity3d.com/threads/67417-A*-Pathfinding-2.9-Is-Released-(Unity-3-Compatible)?highlight=path
http://www.arongranberg.com/unity/a-pathfinding/download/

sample系

SHADOWGUN

ハイクオリティのUnity製ゲーム「SHADOWGUN」のSample Level(サンプルステージ)が公開されてる
http://blogs.unity3d.com/2012/03/23/shadowgun-optimizing-for-mobile-sample-level/

アングリーバード的なゲームをつくる

サンプルもDLできるのでステキです
http://unity.creator.ms/unity-004.html