鈍足ランナーのIT日記

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

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

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

筋トレ応援団の筋トレ履歴データを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();

postgresql リモートアクセス

# postgresql.confの編集

#pg_hba.confの編集
データベースとユーザは絞って設定

# データベース再起動

#iptables
/etc/sysconfig/iptablesでポートを解放

# ipatables反映
sudo service iptables restart

# データベース、ロールの作成

create role hoge password hoge;
create database db owner hoge;
alter role hoge login;

eng-entrance.com

MP3ファイルが1秒ぴったりにならない

sox input.mp3 output.mp3 trim 0 1
soxi output.mp3

どうやっても1.04秒のファイルしかできない。おかしいと思っていたら。。

http://www.manbou2ndclass.net/2016/02/mp3.html

どうやら、そういうものらしい。

wavで出力すると

sox input.mp3 output.wav trim 0 1
soxi output.wav

1秒ぴったりできた!

スマートスピーカーアプリのBGMをなんとかしたい

アプリのBGMをなんとかしたい。
クラウドワークスに発注したけれど、結構お金がかかりそうな予感。五千円以上。
クオリティ高いものはできるかもだけど。

ロイヤリティフリーというキーワードで探していけば良さそうだ。

www.looperman.com


drums.kirakira-soundeffect.com

tadaoto.com

https://www.250music.jp


www.motionelements.com