CLOVA スキル 「筋トレ応援団」リリース
リリースができました!
ボディビルダーからお年寄りまで筋トレを楽しんで取り組めるようなものを目指しました。
カウント速度を変えられる
カウント速度ごとにBGMが7種。ランダムで流れる
筋トレ結果は後からアプリで確認できる
また月間種目別カウント数で集計。偏差値を算出します。
nginxでstaticファイルのリライトの方法
結局あきらめた
プロジェクトのフォルダに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; }
静的ファイルを定義しようとしたけどうまくいかず諦めました。
グラフ
APEXCHARTS.JS
ApexCharts.js – Open-Source HTML5 JavaScript Charts
タイムゾーンに頭を悩ませたけれど
筋トレ応援団の筋トレ履歴データを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();