鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

CLOVA スキル 「筋トレ応援団」リリース

リリースができました!

ボディビルダーからお年寄りまで筋トレを楽しんで取り組めるようなものを目指しました。

カウント速度を変えられる

カウント速度ごとにBGMが7種。ランダムで流れる

筋トレ結果は後からアプリで確認できる

また月間種目別カウント数で集計。偏差値を算出します。

clova.line.me

nginxでstaticファイルのリライトの方法

リライトしたい!

/liff/js/hoge.jsを/dist/hoge.jsへ書き換えたい。つまりliffを外したい。

結局あきらめた

プロジェクトのフォルダにvue.config.jsを置いて

module.exports = {
	publicPath: '/liff/'
}

nginx.conf

        location ^~ /liff/ {
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_pass http://pushup_front;
           rewrite ^/liff/(.*)$ /$1 break;
        }

静的ファイルを定義しようとしたけどうまくいかず諦めました。

タイムゾーンに頭を悩ませたけれど

筋トレ応援団の筋トレ履歴データをPostgreSQLに格納するのですが、将来的には
グローバルで使われることを考慮してどのように
格納すればいいのか割と真面目に考えたつもり。

DBはタイムゾーン付きのtimestampを使用する

CREATE TABLEでtimestamp with time zoneタイプで定義した。
あとは、insert文でcurrent_timestampを使うだけ。日本時間で保存されることになる。

今月の筋トレ回数を求める検索

クライアントのタイムゾーンで検索してあげればいい。将来的にはAsia/Tokyoを可変にすればいいのではないか。
PostgreSQLタイムゾーンの変換を委譲しちゃう感じです。

var moment = require('moment-timezone');
var today = new moment().tz('Asia/Tokyo');
var firstDay = new moment({year : today.year(), month: today.month(), day: 1}).tz('Asia/Tokyo').format();
var lastDay = new moment({year : today.year(), month: today.month()+ 1, day: 0}).tz('Asia/Tokyo').format();

SQLでfirstDay,lastDayの範囲指定で検索する。lastDayの00:00:00も含まれてしまうけれど!!
まぁいいか。

もっと簡潔に書ける

今月の範囲
var moment = require('moment-timezone');
var firstDay = new moment().startOf('month').tz('Asia/Tokyo').format();
var lastDay = new moment().endOf('month').tz('Asia/Tokyo').format();

今日の範囲
var moment = require('moment-timezone');
var firstDay = new moment().startOf('day').tz('Asia/Tokyo').format();
var lastDay = new moment().endOf('day').tz('Asia/Tokyo').format();

今週の範囲
var moment = require('moment-timezone');
var firstDay = new moment().startOf('week').tz('Asia/Tokyo').format();
var lastDay = new moment().endOf('week').tz('Asia/Tokyo').format();

まじかい、便利すぎじゃろ。

タイムスタンプの格納と検索について

筋トレ応援団の筋トレ履歴データをPostgreSQLに格納するのですが、将来的には
グローバルで使われることを考慮してどのように
格納すればいいのか割と真面目に考えたつもり。

DBはタイムゾーン付きのtimestampを使用する

CREATE TABLEでtimestamp with time zoneタイプで定義した。
あとは、insert文でcurrent_timestampを使うだけ。日本時間で保存されることになる。

今月の筋トレ回数を求める検索

クライアントのタイムゾーンで検索してあげればいい。将来的にはAsia/Tokyoを可変にすればいいのではないか。
PostgreSQLタイムゾーンの変換を委譲しちゃう感じ。

var moment = require('moment-timezone');
var today = new moment().tz('Asia/Tokyo');
var firstDay = new moment({year : today.year(), month: today.month(), day: 1}).tz('Asia/Tokyo').format();
var lastDay = new moment({year : today.year(), month: today.month()+ 1, day: 0}).tz('Asia/Tokyo').format();