日付 | 当選数 | 当選サービス | |
---|---|---|---|
12/1 | 1 | 【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
12/2 | 1 | InfoseekNewsラッキーくじ | |
12/3 | 3 | Rakuten Link限定ラッキースロット 第2弾、楽天ブログ ラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
12/4 | 1 | 楽天トラベル ラッキーくじ | |
12/5 | 2 | 楽天Edy スマホ ラッキーくじ、楽天トラベル ラッキーくじ | |
12/6 | 3 | 楽天リワード ラッキーくじ、楽天ブログ ラッキーくじ、【楽天レシピ】ラッキーくじ | |
12/7 | 2 | InfoseekNewsラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
12/8 | 1 | マネ活ラッキーくじ | |
12/9 | 0 | ||
12/10 | 2 | 【楽天カード】じゃんけん勝者限定くじ、【楽天ポイント活動部】ラッキーくじ(2021年11月~2月通 | |
12/11 | 2 | 【楽天ポイント活動部】ラッキーくじ(2021年11月~2月通常版)、楽天トラベル ラッキーくじ | |
12/12 | 2 | マネ活ラッキーくじ、 楽天リワード ラッキーくじ | |
12/13 | 3 | 【楽天ポイント活動部】ラッキーくじ(2021年11月~2月通常版)、楽天トラベル ラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
12/14 | 1 | 楽天リワード ラッキーくじ | |
12/15 | 1 | 楽天トラベル ラッキーくじ | |
12/16 | 2 | 【楽天ポイント活動部】ラッキーくじ(2021年11月~2月通常版)、楽天トラベル ラッキーくじ | |
12/17 | 2 | 【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天トラベル ラッキーくじ | |
12/18 | 0 | ||
12/19 | 0 | ||
12/20 | 0 | ||
12/21 | 1 | 楽天Edyラッキーくじ | |
12/22 | 1 | 楽天トラベル ラッキーくじ | |
12/23 | 1 | 【楽天くじ広場】ラッキーくじ | |
12/24 | 2 | 【楽天レシピ】ラッキーくじ 、【楽天toto】楽天totoラッキーくじ | |
12/25 | 2 | 楽天リワード ラッキーくじ、楽天トラベル ラッキーくじ | |
12/26 | 2 | 楽天Edyラッキーくじ、マネ活ラッキーくじ | |
12/27 | 1 | 楽天リワード ラッキーくじ | |
12/28 | 3 | Rakuten Link限定ラッキースロット 第3弾、【楽天ポイント活動部】ラッキーくじ(2021年11月~2月通常版)、楽天トラベル ラッキーくじ | |
12/29 | 1 | マネ活ラッキーくじ | |
12/30 | 0 | ||
12/31 | 0 | ||
合計:40、平均=1.3 |
2021年12月1日水曜日
楽天ラッキーくじの当選を整理する。【2021年12月】
2021年10月31日日曜日
楽天ラッキーくじの当選を整理する。【2021年11月】
日付 | 当選数 | 当選サービス | |
---|---|---|---|
11/1 | 1 | 楽天トラベル ラッキーくじ | |
11/2 | 1 | 【楽天ブックス】facebookラッキーくじ | |
11/3 | 0 | ||
11/4 | 0 | ||
11/5 | 1 | 楽天ラッキーくじ | |
11/6 | 0 | ||
11/7 | 4 | Rakuten Link限定ラッキースロット 第2弾、楽天リワード ラッキーくじ、楽天リワード ラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
11/8 | 0 | ||
11/9 | 3 | マネ活ラッキーくじ、楽天ブックス・ラッキーくじ、楽天トラベル ラッキーくじ | |
11/10 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版 | |
11/11 | 2 | マネ活ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版) | |
11/12 | 1 | 楽天トラベル ラッキーくじ | |
11/13 | 2 | Rakuten TV ラッキーくじ、Rakuten Link限定ラッキースロット 第2弾 | |
11/14 | 2 | 【楽天toto】楽天totoラッキーくじ、リワード特集ページ ラッキーくじ | |
11/15 | 3 | 楽天Edyラッキーくじ、マネ活ラッキーくじ、楽天トラベル ラッキーくじ | |
11/16 | 1 | マネ活ラッキーくじ | |
11/17 | 3 | 楽天カードラッキーくじ、楽天リワード ラッキーくじ 、マネ活ラッキーくじ | |
11/18 | 1 | 楽天ブログ ラッキーくじ | |
11/19 | 11 | LINE限定 毎日引けるくじ、楽天トラベル ラッキーくじ | |
11/20 | 1 | 楽天トラベル ラッキーくじ | |
11/21 | 3 | 【楽天カード】じゃんけん勝者限定くじ、【楽天ブックス】facebookラッキーくじ、Rakuten TV ラッキーくじ | |
11/22 | 3 | 【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版)、楽天トラベル ラッキーくじ、Rakuten TV ラッキーくじ | |
11/23 | 2 | 【楽天カード】じゃんけん勝者限定くじ、楽天リワード ラッキーくじ | |
11/24 | 2 | 楽天トラベル ラッキーくじ、楽天ブログ ラッキーくじ | |
11/25 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版) | |
11/26 | 0 | ||
11/27 | 2 | 楽天リワード ラッキーくじ、楽天トラベル ラッキーくじ | |
11/28 | 0 | ||
11/29 | 2 | マネ活ラッキーくじ、楽天トラベル ラッキーくじ | |
11/30 | 1 | 楽天トラベル ラッキーくじ | |
合計:54、平均=1.8 |
2021年10月3日日曜日
【moto】motoでtransact_write_itemsをモックする。【Python】
motoでtransact_write_itemsをモックする。
moto と transact_write_items で検索すると、motoを拡張してモックする方法が上位に表示される。詳しく調べていないが、moto 2.2.4 では拡張せずともモックできるので、サンプルを提示したい。
この記事ではテストコードは一部だけ記載するので、完全なものは https://github.com/tomohikoseven/moto_transact_write_items を参照ください。
実装コード
実装したコードは、ClickCountというテーブルにItemをトランザクションで追加・更新(アトミックカウンタ)するものです。DynamoDBをご存知の方には、簡単なものかと思います。
簡単に説明すると、以下の実装コードはハッシュキー:month は文字列 YYYYMM を、レンジキー(ソートキー):date は文字列 YYYYMMDD を期待して、1トランザクションで2つのItemに対し、clickCountをカウントUPするものになります。
トランザクションの1つ目は日付の末尾が00となっており、月間のclickCountをカウントUPします。今回の記事では気にすることではないです。
(index.py)
import boto3
client = boto3.client('dynamodb', region_name='ap-northeast-1')
def lambda_handler( month:str, date:str ):
try:
response = client.transact_write_items(
TransactItems=[
{
'Update' : {
'Key' : {
'hKey': { 'S': month },
'rKey': { 'S': month + '00' }
},
'TableName':'ClickCount',
'UpdateExpression': 'ADD clickCount :increment',
'ExpressionAttributeValues' : {
':increment': { 'N': '1' }
}
}
},
{
'Update' : {
'Key' : {
'hKey': { 'S': month },
'rKey': { 'S': date }
},
'TableName':'ClickCount',
'UpdateExpression': 'ADD clickCount :increment',
'ExpressionAttributeValues' : {
':increment': { 'N': '1' }
}
}
}
]
)
except Exception as e :
print("===")
print(e)
raise e
return 200
テストコード
pytestでテストコードを実行します。
motoでモックするテストコードを記述したことがある方は難しいことはないです。mock_dynamodb2をimportして、アノテーション@mock_dynamodb2をテストケースに付けてやればよいです。
(test_index.py)
# 本当のテストは1ケースだけではないので、ここでは余分なライブラリがインポートされています。
from importlib import import_module
import boto3
from moto import mock_dynamodb2
from unittest import mock
from botocore.exceptions import ClientError
import pytest
@mock_dynamodb2
def test_success(set_dynamodb_Count):
# mock dynamodb
table = set_dynamodb_Count()
month = '202101'
date = '20210101'
from src.index import lambda_handler
res = lambda_handler( month, date )
item = table.get_item(Key={'hKey':month, 'rKey': date})
assert res == 200
assert item['Item']['clickCount'] == 1
conftest.pyに set_dynamodb_Count を記載しています。テストにはこちらも必要になります。test_index.pyと同一フォルダに置いてください。
(conftest.py)
import pytest
import boto3
@pytest.fixture
def set_dynamodb_Count():
def definition():
dynamodb = boto3.resource('dynamodb', region_name='ap-northeast-1')
dynamodb.create_table(
TableName='ClickCount',
KeySchema=[
{
'AttributeName': 'hKey',
'KeyType': 'HASH'
},
{
'AttributeName': 'rKey',
'KeyType': 'RANGE'
}
],
AttributeDefinitions=[
{
'AttributeName': 'hKey',
'AttributeType': 'S'
},
{
'AttributeName': 'rKey',
'AttributeType': 'S'
}
],
)
return dynamodb.Table('ClickCount')
return definition
2021年9月30日木曜日
楽天ラッキーくじの当選を整理する。【2021年10月】
日付 | 当選数 | 当選サービス | |
---|---|---|---|
10/1 | 0 | ||
10/2 | 3 | 楽天Edyラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
10/3 | 1 | 毎日チャンス マネ活ラッキーくじ!楽天ポイントが当たる | |
10/4 | 0 | ||
10/5 | 0 | ||
10/6 | 1 | 【楽天ブックス】facebookラッキーくじ | |
10/7 | 3 | 楽天ラッキーくじ、楽天カレンダーラッキーくじ、【楽天カード】じゃんけん勝者限定くじ | |
10/8 | 1 | 楽天トラベル ラッキーくじ | |
10/9 | 4 | 楽天Edyラッキーくじ、スマートフォン限定 楽天ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版)、楽天トラベル ラッキーくじ | |
10/10 | 0 | ||
10/11 | 2 | 楽天Edyラッキーくじ、楽天トラベル ラッキーくじ | |
10/12 | 1 | 楽天トラベル ラッキーくじ | |
10/13 | 1 | 【楽天ブックス】facebookラッキーくじ | |
10/14 | 13 | 【楽天カード】じゃんけん勝者限定くじ、LINE限定 毎日引けるくじ、楽天トラベル ラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
10/15 | 0 | ||
10/16 | 2 | 楽天カードラッキーくじ、楽天トラベル ラッキーくじ | |
10/17 | 2 | InfoseekNewsラッキーくじ、楽天トラベル ラッキーくじ | |
10/18 | 1 | 楽天トラベル ラッキーくじ | |
10/19 | 4 | Rakuten Link限定ラッキースロット 第2弾、楽天リワード ラッキーくじ、楽天トラベル ラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
10/20 | 11 | 【楽天カード】じゃんけん勝者限定くじ、LINE限定 毎日引けるくじ | |
10/21 | 4 | 毎日チャンス マネ活ラッキーくじ!楽天ポイントが当たる、【楽天カード】じゃんけん勝者限定くじ、【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版)、【楽天ブックス】facebookラッキーくじ | |
10/22 | 0 | ||
10/23 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版) | |
10/24 | 1 | Rakuten Link限定ラッキースロット 第2弾 | |
10/25 | 2 | 楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ | |
10/26 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版) | |
10/27 | 0 | ||
10/28 | 1 | 【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
10/29 | 1 | 楽天トラベル ラッキーくじ | |
10/30 | 1 | 楽天×ぐるなび ラッキーくじ | |
10/31 | 2 | Rakuten Link限定ラッキースロット 第2弾、楽天トラベル ラッキーくじ | |
合計:64、平均=2.1 |
2021年8月31日火曜日
楽天ラッキーくじの当選を整理する。【2021年9月】
日付 | 当選数 | 当選サービス | |
---|---|---|---|
9/1 | 0 | ||
9/2 | 1 | 楽天Edy スマホ ラッキーくじ | |
9/3 | 3 | マネ活ラッキーくじ、楽天カードスマホじゃんけん勝者限定くじ、【楽天toto】楽天totoラッキーくじ | |
9/4 | 0 | ||
9/5 | 3 | 【楽天カード】じゃんけん勝者限定くじ、リワード特集ページ ラッキーくじ、楽天Car車検 ラッキーくじ | |
9/6 | 4 | マネ活ラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ | |
9/7 | 3 | 楽天Edyラッキーくじ、楽天カードスマホラッキーくじ、楽天カードラッキーくじ | |
9/8 | 2 | Rakuten Link限定ラッキースロット 第1弾、楽天トラベル ラッキーくじ | |
9/9 | 4 | マネ活ラッキーくじ、楽天カードスマホラッキーくじ、【楽天カード】じゃんけん勝者限定くじ、楽天トラベル ラッキーくじ | |
9/10 | 1 | リワード特集ページ ラッキーくじ | |
9/11 | 2 | 楽天トラベル ラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
9/12 | 2 | 楽天ブログ ラッキーくじ、楽天カードスマホラッキーくじ | |
9/13 | 1 | マネ活ラッキーくじ | |
9/14 | 3 | マネ活ラッキーくじ、スマートフォン限定 楽天ラッキーくじ、楽天×ぐるなび ラッキーくじ | |
9/15 | 14 | Rakuten Link限定ラッキースロット 第1弾、マネ活ラッキーくじ、楽天ブログ ラッキーくじ、LINE限定 毎日引けるくじ、【楽天ブックス】facebookラッキーくじ | |
9/16 | 1 | Rakuten Link限定ラッキースロット 第1弾 | |
9/17 | 2 | 【楽天ブックス】facebookラッキーくじ、スマートフォン限定 楽天ラッキーくじ | |
9/18 | 2 | 楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ | |
9/19 | 1 | 楽天トラベル ラッキーくじ | |
9/20 | 0 | ||
9/21 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版) | |
9/22 | 0 | ||
9/23 | 2 | 毎日ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版) | |
9/24 | 0 | ||
9/25 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年9月~11月通常版) | |
9/26 | 1 | 楽天ブックス・ラッキーくじ | |
9/27 | 0 | ||
9/28 | 2 | 楽天トラベル ラッキーくじ、楽天ブログ ラッキーくじ | |
9/29 | 2 | Rakuten Link限定ラッキースロット 第1弾、楽天トラベル ラッキーくじ | |
9/30 | 1 | 楽天トラベル ラッキーくじ | |
合計:53、平均=1.8 |
2021年8月11日水曜日
【HTML】過去入力したメールアドレスのサジェスト表示の方法
<input id="email" type="email" />
id="email" を付けないと、フィールドにフォーカスを当てたときにサジェスト表示されない。
passwordだと、パスワード保存設定(Chrome系のブラウザの設定)だったり、iCloudキーチェーンの有効化設定+パスワード自動入力設定を有効化しなければならないが、メールアドレスに関してはその必要がないみたい。
【正規表現】連続する同一文字を含む文字列かどうかを判断する。【JavaScript】
var continueChar = function( str ) {
const regexp = /(.)\1{3,}/; // 4つ連続で同一文字を含む
return regexp.test( str );
};
exports.continueChar = continueChar;
2021年8月2日月曜日
楽天ラッキーくじの当選を整理する。【2021年8月】
日付 | 当選数 | 当選サービス | |
---|---|---|---|
8/1 | 1 | 楽天ブログ ラッキーくじ | |
8/2 | 13 | 【楽天くじ広場】ラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天カードラッキーくじ、LINE限定 毎日引けるくじ | |
8/3 | 1 | 楽天ブログ ラッキーくじ | |
8/4 | 1 | 楽天カードスマホじゃんけん勝者限定くじ | |
8/5 | 0 | ||
8/6 | 20 | マラソンスロット PC&SP版 | |
8/7 | 20 | マラソンスロット PC&SP版 | |
8/8 | 1 | アプリ限定 楽天ラッキーくじ | |
8/9 | 30 | LINE限定 毎日引けるくじ、マラソンスロット PC&SP版 | |
8/10 | 2 | 【楽天レシピ】ラッキーくじ、【楽天レシピ】ラッキーくじ | |
8/11 | 0 | ||
8/12 | 2 | 【楽天カード】じゃんけん勝者限定くじ、【楽天カード】じゃんけん勝者限定くじ | |
8/13 | 0 | ||
8/14 | 1 | Rakuten TV ラッキーくじ | |
8/15 | 1 | 楽天トラベル ラッキーくじ | |
8/16 | 3 | 【楽天カード】じゃんけん勝者限定くじ、楽天ブログ ラッキーくじ、【楽天toto】楽天totoラッキーくじ | |
8/17 | 2 | 楽天カードスマホラッキーくじ、楽天トラベル ラッキーくじ | |
8/18 | 0 | ||
8/19 | 3 | 【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版)、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天トラベル ラッキーくじ | |
8/20 | 4 | 楽天カレンダーラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版)、【楽天カード】じゃんけん勝者限定くじ、楽天トラベル ラッキーくじ | |
8/21 | 0 | ||
8/22 | 12 | Rakuten Link限定ラッキースロット 第1弾、LINE限定 毎日引けるくじ、楽天トラベル ラッキーくじ | |
8/23 | 1 | 楽天トラベル ラッキーくじ | |
8/24 | 1 | 楽天トラベル ラッキーくじ | |
8/25 | 3 | 楽天保険の総合窓口ラッキーくじ、楽天トラベル ラッキーくじ、楽天カードラッキーくじ | |
8/26 | 0 | ||
8/27 | 2 | 楽天カーサービスアプリ ラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
8/28 | 0 | ||
8/29 | 2 | 【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天Car車検 ラッキーくじ | |
8/30 | 2 | 楽天トラベル ラッキーくじ、楽天ブログ ラッキーくじ | |
8/31 | 4 | Rakuten Link限定ラッキースロット 第1弾、楽天カードスマホラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版)、楽天トラベル ラッキーくじ | |
合計:127、平均=4.09 |
2021年7月21日水曜日
【FIRE前】2021年7月の支出
夫婦2人+猫1匹の支出
項目 | 支出額 | 備考 |
---|---|---|
家賃 | 7.5万円 | |
食費 | 4.8万円 | |
電気・ガス・水道 | 0.0万円 | 給与日が早く、支払い前なので、0万円。 |
日用品 | 0.3万円 | |
服 | 0.4万円 | |
整髪 | 0.0万円 | |
医療 | 0.0万円 | |
通信費 | 0.7万円 | |
お小遣い | 1.9万円 | 夫婦二人分 |
寄付 | 0.28万円 | 子供食堂へ寄付。 |
生命保険料 | 0.2万円 | |
その他 | 0.6万円 | 書籍代とか。 |
合計 | 16.68万円 |
下記書籍をベースとして、早期リタイアを目指しています。
2021年7月2日金曜日
【FIRE前】FIRE後の国民年金の支払いをどうするか。
夫婦2人+猫1匹で生活をしています(FIRE前)。
FIREした後、支出の中でなかなかの割合を占めるものがあります。国民年金です。
一人あたり約1.6万円なので、夫婦であれば年間約38.4万円の支出です。下記書籍をベースとして、早期リタイアを目指しています。
2021年6月30日水曜日
楽天ラッキーくじの当選を整理する。【2021年7月】
日付 | 当選数 | 当選サービス | |
---|---|---|---|
7/1 | 1 | 楽天トラベル ラッキーくじ | |
7/2 | 1 | 【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
7/3 | 2 | マネ活ラッキーくじ、リワード特集ページ ラッキーくじ | |
7/4 | 1 | 【楽天ブックス】facebookラッキーくじ | |
7/5 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版) | |
7/6 | 1 | 【楽天くじ広場】ラッキーくじ | |
7/7 | 1 | 楽天トラベル ラッキーくじ | |
7/8 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版) | |
7/9 | 15 | マネ活ラッキーくじ、スマートフォン限定 楽天ラッキーくじ、LINE限定 毎日引けるくじ、【楽天カード】じゃんけん勝者限定くじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天トラベル ラッキーくじ | |
7/10 | 4 | マネ活ラッキーくじ、楽天カードスマホじゃんけん勝者限定くじ、楽天カードスマホラッキーくじ、楽天カードラッキーくじ | |
7/11 | 2 | 【楽天カード】じゃんけん勝者限定くじ、楽天トラベル ラッキーくじ | |
7/12 | 3 | 【楽天くじ広場】ラッキーくじ、楽天×ぐるなび ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ | |
7/13 | 1 | Rakuten TV ラッキーくじ | |
7/14 | 10 | LINE限定 毎日引けるくじ | |
7/15 | 3 | 楽天トラベル ラッキーくじ、楽天カードスマホラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
7/16 | 13 | マネ活ラッキーくじ、楽天ブログ ラッキーくじ、LINE限定 毎日引けるくじ、楽天ブックス・ラッキーくじ | |
7/17 | 1 | 【楽天くじ広場】ラッキーくじ | |
7/18 | 3 | 楽天ブログ ラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、Rakuten TV ラッキーくじ | |
7/19 | 3 | 楽天カードスマホラッキーくじ、【楽天toto】楽天totoラッキーくじ、楽天トラベル ラッキーくじ | |
7/20 | 2 | 【楽天レシピ】ラッキーくじ、楽天トラベル ラッキーくじ | |
7/21 | 2 | 楽天Edyラッキーくじ、【楽天カード】じゃんけん勝者限定くじ | |
7/22 | 13 | LINE限定 毎日引けるくじ、【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版)、楽天トラベル ラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
7/23 | 11 | LINE限定 毎日引けるくじ、楽天トラベル ラッキーくじ | |
7/24 | 1 | 楽天トラベル ラッキーくじ | |
7/25 | 14 | LINE限定 毎日引けるくじ、【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版)、楽天トラベル ラッキーくじ、楽天デリバリー ラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
7/26 | 1 | 楽天トラベル ラッキーくじ | |
7/27 | 1 | 楽天トラベル ラッキーくじ | |
7/28 | 0 | ||
7/29 | 1 | 楽天カレンダーラッキーくじ | |
7/30 | 2 | 楽天Edyラッキーくじ、楽天カーサービスアプリ ラッキーくじ | |
7/31 | 3 | 楽天Edy スマホ ラッキーくじ、楽天ブログ ラッキーくじ、楽天カードスマホラッキーくじ | |
合計:117、平均=3.8 |
2021年6月28日月曜日
【FIRE前】何をポイントにお金が貯まっていったのか。
- 家は買わない。買うとしても老後に現金一括で購入。
- 保険は最低限の保証のもののみ。一人1000円/月程度のもの。
- 車は買わない。
- 結婚式は挙げない。写真のみ。
- 所得が低い方(私)を生活費とする。
- 急な支出は生活費以外から。
- 新婚旅行はハワイへ
下記書籍をベースとして、早期リタイアを目指しています。
2021年6月27日日曜日
【FIRE前】FIRE時の金融資産目標はどうするか。
4%ルールの原論によれば、株式:75%、債券:25%の割合が成功確率が一番いいわけですが、株式:100%と現金(生活費2年分)でFIREしようとしてます。
別のサイトによると、4%ルールをより長期間に適用した結果は、株式100%の方が高確率で成功します。(以下の画像を参照。)
(引用:Early Retirement Now)つまり、株式100%でFIREしようとしています。
【FIRE時の目標資産】項目 | 目標額 | 備考 |
---|---|---|
VOO | 6000万円 | 楽天証券では、手数料無料で購入可能。 |
現金 | 600万円ほど | 株式市場が暴落した際に生活費を下ろす。2年分程度。 |
なぜ、VOOかというとバンガード社の人気米国株ETFの中で、インデックスで成績がよいものだったためです。2020/07現在、VOOの目標額の83%を達成しています。
VOO以外の株(個別株、米国ETF)を新型コロナによる株式市場暴落時に仕込んでいましたので、それらを売却してVOOに付け替えていきたいと思います。下記書籍をベースとして、早期リタイアを目指しています。
2021年6月26日土曜日
【FIRE前】2021年6月の支出
夫婦2人+猫1匹の6月の支出
項目 | 支出額 | 備考 |
---|---|---|
家賃 | 7.5万円 | |
食費 | 4.7万円 | |
電気・ガス・水道 | 0.6万円 | 水道代は含まず。 |
日用品 | 0.65万円 | |
服 | 0.4万円 | |
整髪 | 0.1万円 | |
医療 | 0.38万円 | 歯医者代 |
通信費 | 1.16万円 | 契約事務手数料5000円含む。後で戻ってくる。 |
お小遣い | 1.5万円 | 夫婦二人分 |
寄付 | 0.28万円 | 子供食堂へ寄付。 |
生命保険料 | 0.2万円 | |
交通費 | 0.15万円 | |
その他 | 0.1万円 | 書籍代とか。 |
合計 | 17.72万円 |
下記書籍をベースとして、早期リタイアを目指しています。
【FIRE前】朝食、昼食、夕食は何を食べているか。
FIRE前ですが、お弁当や総菜ではなく、自炊をするように心掛けています。
【朝食】フルグラ+コーンフレーク+オートミール(インスタント)+豆乳(低脂肪)。
【昼食】野菜+豚肉たっぷりの味噌汁のみ。
【夕食】野菜+豚肉たっぷりの炒め物。もしくは麺類(袋ラーメン、そうめんなど)。
だいたいこのようなもの。炒め物の場合、ご飯を付けたりもします。
食費はだいたい楽天Edyで払うのですが、マネーフォワードで見ると月4万円使っていました。おー、使っているな。
フルグラ
オートミール(インスタント)
2021年6月22日火曜日
【FIRE前】FIRE時の年間支出目標
夫婦2人(子供なし、猫1匹)40代でのFIRE時の年間支出目標
項目 | 目標額 | 備考 |
---|---|---|
家賃 | 80万円 | 月6万円、更新料、火災保険を含む |
食費 | 36万円 | 月3万円 |
電気・ガス・水道 | 14.4万円 | 月1.2万円 |
日用品 | 4.8万円 | 月0.4万円 |
服 | 4.8万円 | 月0.4万円 |
整髪 | 2.4万円 | 月0.2万円 |
医療 | 4.8万円 | 月0.2万円 |
通信費 | 12万円 | 携帯:0.5万円/二人、インターネット:0.5万円 |
交通費 | 7万円 | 主に帰省代 |
お小遣い | 24万円 | 月1万円/一人 |
国民健康保険 | 4万円 | 減免7割適用を仮定。 |
所得税・住民税 | 0万円 | |
国民年金 | 0~39.8万円 | 約1.6万円/月/一人。余裕がないときは延納。 |
合計 | 204~234万円 |
2021年5月31日月曜日
楽天ラッキーくじの当選を整理する。【2021年6月】
日付 | 当選数 | 当選サービス | |
---|---|---|---|
6/1 | 0 | ||
6/2 | 3 | 【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天カードスマホラッキーくじ、【楽天レシピ】ラッキーくじ | |
6/3 | 1 | 【楽天くじ広場】ラッキーくじ | |
6/4 | 1 | 【楽天toto】楽天totoラッキーくじ | |
6/5 | 1 | 楽天トラベル ラッキーくじ | |
6/6 | 1 | 【楽天toto】楽天totoラッキーくじ | |
6/7 | 23 | 楽天Edyラッキーくじ、楽天スーパーSALE スロット<第2弾>PC&SP版、マネ活ラッキーくじ、楽天トラベル ラッキーくじ | |
6/8 | 0 | ||
6/9 | 20 | 楽天スーパーSALE スロット<第2弾>PC&SP版 | |
6/10 | 11 | 楽天カードスマホラッキーくじ、LINE限定 毎日引けるくじ | |
6/11 | 3 | Rakuten TV ラッキーくじ、【楽天ブックス】facebookラッキーくじ、楽天トラベル ラッキーくじ | |
6/12 | 3 | 楽天トラベル ラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、【楽天カード】じゃんけん勝者限定くじ | |
6/13 | 1 | 楽天リワード ラッキーくじ | |
6/14 | 2 | 【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版)、スマートフォン限定 楽天ラッキーくじ | |
6/15 | 1 | マネ活ラッキーくじ | |
6/16 | 2 | マネ活ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ | |
6/17 | 4 | スマートフォン限定 楽天ラッキーくじ、InfoseekNewsラッキーくじ、楽天トラベル ラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
6/18 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版) | |
6/19 | 2 | 楽天トラベル ラッキーくじ、楽天カードスマホじゃんけん勝者限定くじ | |
6/20 | 2 | 楽天トラベル ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版) | |
6/21 | 1 | 【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
6/22 | 3 | 楽天ブログ ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版)、【楽天ポイント活動部】ラッキーくじ(2021年6月~8月通常版) | |
6/23 | 0 | ||
6/24 | 0 | ||
6/25 | 12 | リワード特集ページ ラッキーくじ、LINE限定 毎日引けるくじ、楽天トラベル ラッキーくじ | |
6/26 | 2 | 楽天トラベル ラッキーくじ、Rakuten TV ラッキーくじ | |
6/27 | 10 | LINE限定 毎日引けるくじ | |
6/28 | 3 | 楽天Edyラッキーくじ、楽天カレンダーラッキーくじ、楽天トラベル ラッキーくじ | |
6/29 | 2 | 【楽天カード】じゃんけん勝者限定くじ、【楽天カード】じゃんけん勝者限定くじ | |
6/30 | 12 | LINE限定 毎日引けるくじ、楽天カードラッキーくじ、Rakuten TV ラッキーくじ | |
合計:127、平均=4.2 |
2021年5月30日日曜日
【JavaScript】Day.jsでの日付妥当性をisValid()で。
Day.jsで日付の妥当性は isValid() を使うとできます。しかし、検索をすると使えない(日付の検証には使えない。)と結果が出てきます。それは誤りで、plugin を利用すれば可能です。customParseFormat を追加しましょう。
ポイント
- プラグイン customParseFormat を追加。
- dayjs() の第3引数 strict に true を指定。
const dayjs = require('dayjs');
// プラグイン 追加
const customParseFormat = require('dayjs/plugin/customParseFormat');
dayjs.extend(customParseFormat);
console.log( dayjs( '20210102', 'YYYYMMDD' ).isValid() ); // => true
console.log( dayjs( '20210132', 'YYYYMMDD' ).isValid() ); // => true
console.log( dayjs( '20210102', 'YYYYMMDD', true ).isValid() ); // => true
console.log( dayjs( '20210132', 'YYYYMMDD', true ).isValid() ); // => false
console.log( dayjs( '2021013a', 'YYYYMMDD', true ).isValid() ); // => false
【JavaScript】Day.jsのAPIサンプル(Parse編)
Day.jsの使い方を知るためにサンプルを作っています。
Parse
日付や時刻を含む文字列や数値からオブジェクトを作成するものです。作成されたオブジェクトはUTC時間だったりするので、利用時は気を付けないと想定とずれた時間になります。
Parse
テキストをオブジェクトに変換します。日本語の日付を使うなどする場合など、「Invalid Date」でエラーとなってしまうときは、CustomParseFormat プラグインを利用することも頭に入れておくとよいです。
const dayjs = require('dayjs');
// JST:2021-04-30 00:00:00
// UTC:2021-04-29 15:00:00 (日本との差は-9時間のため)
console.log( dayjs('2021-04-30', 'YYYY-MM-DD').toDate() );
// => 2021-04-29T15:00:00.000Z (UTC)
console.log( dayjs('2021年04月30日', 'YYYY年MM月DD日').toDate() );
// => Invalid Date (日本語があるとパースできない.)
// プラグインを追加
const CustomParseFormat = require('dayjs/plugin/customParseFormat');
dayjs.extend(CustomParseFormat);
console.log( dayjs('2021年04月30日', 'YYYY年MM月DD日').toDate() );
// => 2021-04-29T15:00:00.000Z (日本語があってもパースできる.)
console.log( dayjs('2021年04月30日', 'YYYY年MM月DD日').locale('ja').format() );
// => 2021-04-30T00:00:00+09:00 (日本でロケールしてみただけ.)
Now
現在時刻のオブジェクトを取得します。日本時間にするには ロケール変換+format() します。
const dayjs = require('dayjs');
let now_utc = dayjs();
let now_jst = dayjs().locale('ja');
console.log( now_utc.toDate() );
// => 2021-04-30T00:09:31.085Z (こちらは0時)
console.log( now_jst.format() );
// => 2021-04-30T09:09:31+09:00 (こちらは9時. toDate() はUTCになってしまうので注意.)
String
ISO 8601形式の文字列からオブジェクトを作成します。日付と時刻の間に"T"を付け、時刻の後ろに"Z"や"+0900"などを付与した文字列です。
const dayjs = require('dayjs');
let utc = dayjs('2021-04-15T15:00:00.000Z');
console.log( utc.toDate() );
let jst = dayjs('2021-04-15T15:00:00.000+0900');
console.log( jst.locale('ja').format() ); // toDate()はUTC時間で出力される
String + Format
事前に日付のフォーマットわかっていれば、引数の日付の文字列からオブジェクトが作成できます。注意すべきは CustomParseFormat プラグインを使わなければいけないことです。補足ですが、dayjs()の第4引数に真偽を指定すると、結果が変わります。
const dayjs = require('dayjs');
// プラグイン
const customParseFormat = require('dayjs/plugin/customParseFormat');
dayjs.extend(customParseFormat); // プラグイン追加
let jst = dayjs('2021年10月18日', 'YYYY年MM月DD日', 'ja');
console.log(jst.locale('ja').format());
let jst_imp = dayjs('2021年10月32日', 'YYYY年MM月DD日', 'ja');
let jst_strict = dayjs('2021年10月32日', 'YYYY年MM月DD日', 'ja', true);
console.log(jst_imp.locale('ja').format());
// => 2021-11-01T00:00:00+09:00 第4引数がtrueでない場合、日付の繰り越しが起こる.
console.log(jst_strict.locale('ja').format());
// => Invalid Date 第4引数がtrueの場合、日付の厳密性がチェックされ、存在しない日付の場合、
エラー(Invalid Date)になる.
日付のフォーマットが1つではなく複数指定される可能性がある場合でもオブジェクト作成できます。日付のフォーマットを配列で指定してあげます。
const dayjs = require('dayjs');
const customParseFormat = require('dayjs/plugin/customParseFormat');
dayjs.extend(customParseFormat);
let date = dayjs("2001-12-25", ["YYYY", "YYYY-MM-DD"], 'ja', true);
let date2 = dayjs("2001", ["YYYY", "YYYY-MM-DD"], 'ja', true);
console.log(date.locale('ja').format()); // => 2001-12-25T00:00:00+09:00
console.log(date2.locale('ja').format()); // => 2001-01-01T00:00:00+09:00
let date3 = dayjs("2001-25-12", ["YYYY", "YYYY-MM-DD"], 'ja', true);
let date4 = dayjs("2001-25-12", ["YYYY", "YYYY-MM-DD"], 'ja');
console.log(date3.locale('ja').format()); // => Invalid Date
console.log(date4.locale('ja').format()); // => 2001-01-01T00:00:00+09:00
Unix Timestamp (milliseconds)
ミリ秒を表す数値を指定することでオブジェクトを作成します。基準日は1970年1月1日午前0時です。引数に指定したミリ秒だけ加算された日時のオブジェクトが作成されます。
const dayjs = require('dayjs');
let date = dayjs(0);
console.log( date.toDate() );
// => 1970-01-01T00:00:00.000Z
let date1 = dayjs(1);
console.log( date1.toDate() );
// => 1970-01-01T00:00:00.001Z
Unix Timestamp (seconds)
秒を表す数値を指定し、オブジェクトを作成します。基準日は1970年1月1日午前0時です。引数に指定した秒だけ加算された日時のオブジェクトが作成されます。
const dayjs = require('dayjs');
let date = dayjs.unix(0);
console.log( date.toDate() );
// => 1970-01-01T00:00:00.000Z
let date2 = dayjs.unix(1);
console.log( date2.toDate() );
// => 1970-01-01T00:00:01.000Z dayjs()をラップしている.
let date3 = dayjs( 1 * 1000 );
console.log( date3.toDate() );
// => 1970-01-01T00:00:01.000Z
Date
JavaScriptのDateオブジェクトからオブジェクトを作成します。Dateオブジェクトのクローンを返すため、元のDateオブジェクトを変更しても、Day.jsオブジェクトは変更されません。その逆も同様です。
const dayjs = require('dayjs');
var d = new Date(2019, 7, 18); // monthは0-11を指定し、1月-12月を扱う罠.
var day = dayjs(d);
console.log( d ); // => 2019-08-17T15:00:00.000Z
console.log( day.toDate() ); // => 2019-08-17T15:00:00.000
Object
オブジェクトからDay.jsオブジェクトを作成します。ObjectSupport プラグインを追加して使用します。
const dayjs = require('dayjs');
const ObjectSupport = require('dayjs/plugin/objectSupport'); // プラグイン
// プラグイン追加.
dayjs.extend(ObjectSupport);
let now = dayjs();
let date = dayjs({ hour:15, minute:10 });
console.log( now.toDate() );
// => 2021-05-01T07:51:36.994Z
console.log( date.toDate() );
// => 2021-05-01T06:10:00.000Z
// 当日の日本時間15時10分を指す?。UTCにすると9時間前なので、6時10分となる。
now = dayjs();
let date2 = dayjs({}); // 空のオブジェクトは現在日時
console.log( now.toDate() );
// => 2021-05-01T07:54:59.148Z
console.log( date2.toDate() );
// => 2021-05-01T07:54:59.148Z
let date3 = dayjs({ year :2010, month :3, day :5, hour :15, minute :10, second :3, millisecond :123});
console.log( date3.toDate() );
// => 2010-04-05T06:10:03.123Z
// monthは0-11の整数で、1月-12月を表す.
Array
配列からDay.jsオブジェクトを作成します。arraySupport プラグインを追加する必要があります。dayjs([]) は現在時刻です。
const dayjs = require('dayjs');
const ArraySupport = require('dayjs/plugin/arraySupport');
dayjs.extend(ArraySupport);
// [ 年、月、日、時、分、秒、ミリ秒 ]
let date = dayjs([2010, 1, 14, 15, 25, 50, 125]);
console.log( date.toDate() );
// => 2010-02-14T06:25:50.125Z
// month部分は0-11を指定することで、1月-12月を表します。
// ログ出力ではUTC時間になるため、時刻が9時間前となります。
let date2 = dayjs([2010, 6]); // July 1st
console.log( date2.toDate() );
// => 2010-06-30T15:00:00.000Z
// month:6 は7月のこと。7/1 00:00:00から-9時間となり、6/30 15:00:00となる。
// UTC時間は面倒だ。
UTC
UTC時間のDay.jsオブジェクトを作成します。
const dayjs = require('dayjs');
const utc = require('dayjs/plugin/utc');
dayjs.extend(utc);
let date = dayjs();
console.log( date.format() );
// => 2021-05-02T09:10:25+09:00
// 日本で実行しているので、format()は日本時間が出力される。
let date_utc = dayjs().utc();
console.log( date_utc.format() );
// => 2021-05-02T00:10:25Z
// 日本で実行していても、format()はUTC時間で出力される。
Dayjs Clone
Day.jsオブジェクトを複製して、同じオブジェクトを作成します。2種類の方法があり、複製元からclone()を使うか、dayjs()の引数に複製元を渡すかです。
const dayjs = require('dayjs');
let a = dayjs();
let b = a.clone();
console.log( a.toDate() ); // => 2021-05-02T00:18:31.274Z
console.log( b.toDate() ); // => 2021-05-02T00:18:31.274Z
a = dayjs();
b = dayjs(a);
console.log( a.toDate() ); // => 2021-05-02T00:18:31.325Z
console.log( b.toDate() ); // => 2021-05-02T00:18:31.325Z
Validation
日付が正しいかチェックします。customParseFormat プラグインを使用します。注意しなければならないのは、dayjs()の第3引数の真偽です。厳密に日付の正しさを求めるならば true を指定します。そうでない場合、日付が正しくない場合でも繰り上げなどの計算をしてくれます。
const dayjs = require('dayjs');
// プラグイン
const customParseFormat = require('dayjs/plugin/customParseFormat');
// プラグインを追加
dayjs.extend(customParseFormat);
let date = dayjs('2021-03-19', 'YYYY-MM-DD', true);
console.log( date.isValid() ); // => true
let date2 = dayjs('2021-15-19', 'YYYY-MM-DD', true);
console.log( date2.isValid() ); // => false
// 日付の形式が合っていればOKのやりかた。
let date3 = dayjs('2021-13-19', 'YYYY-MM-DD');
console.log( date4.isValid() ); // => true. 日付の形式が合っていればOKとなる。
console.log( date3.toDate() );
// => 2022-01-18T15:00:00.000Z
// 日付を勝手に繰り上げする.
【JavaScript】MS932で文字を判断する。
JavaScriptを使って、MS932文字コードで文字を判断します。ライブラリは iconv-lite を利用。
const iconv = require('iconv-lite');
let buf = iconv.encode('亜', 'ms932' );
console.log( buf ); //=> <Buffer 88 9f> [0x88, 0x9f]の意味。
// MS932の亜に対応した数値。8ビットシフトするのがポイント。
let enc = buf[0] << 8 + buf[1]; // 0x889f
if ( enc === 0x889f ){
console.log('亜だね。');
}
【JavaScript】Day.jsで年齢計算をする。
基準日時点で生年月日から年齢はいくつかを計算します。
let base = dayjs(baseDate, YYYYMMDD, true); // 基準日 let birth = dayjs(birthday, YYYYMMDD, true); // 生年月日 let ibase = Number( base.format(YYYYMMDD) ); let ibirth = Number( birth.format(YYYYMMDD) ); return Math.floor( (ibase - ibirth)/10000 );
【JavaScript】Day.jsで日付演算処理を行う。
元となるソースはGitHub上にあります。
共通
共通的に必要となる定義を示します。フォーマット変換するので、プラグインを入れるのがポイントです。
const dayjs = require("dayjs");
// プラグインの追加
dayjs.extend(require("dayjs/plugin/customParseFormat"));
// フォーマット
const YYYYMMDD = "YYYYMMDD";
const YYYYMMDD_HHmmss = "YYYYMMDD HHmmss";
const YYYYMMDD_HHmmss_SSS = "YYYYMMDD HHmmss.SSS";
エラー判定処理
Day.jsの癖として、日付処理ができない場合は「Invalid Date」という文字列を返します(細かいことはわかりませんが。)。それを利用したエラー判定を行います。これは下で示していく自作APIが処理エラー時にnullを返したいために作られました。
function isValidDate(day) {
if (typeof day === "string") {
return day === "Invalid Date" ? null : day;
}
return day.isValid() ? day : null;
}
年齢計算
diff()のポイントは、基準日に対し過去が正の値・未来が負の値となることです。つまり基準日.diff(過去日) > 0 で、基準日.diff(未来日) < 0 です。
/**
* 年齢計算
* @param {string} baseDate 年齢計算の基準日 YYYYMMDD
* @param {string} birthday 生年月日 YYYYMMDD
* @returns 満年齢 or null(計算不可).誕生日に年をとる.
*/
exports.calcAge = (baseDate, birthday) => {
let base = dayjs(baseDate, YYYYMMDD, true);
let birth = dayjs(birthday, YYYYMMDD, true);
// 日付をパースできない.
if (!isValidDate(base) || !isValidDate(birth)) {
return null;
}
let ibase = Number( base.format(YYYYMMDD) );
let ibirth = Number( birth.format(YYYYMMDD) );
return Math.floor( (ibase - ibirth)/10000 );
};
日付計算(年)
日付計算において、年・月・日の加減算はadd()の引数に"year"、"month"、"day"を指定することで計算を行う。
/**
* 日付計算(年)
* @param {string} baseDate 基準日 YYYYMMDD
* @param {number} year 加減算する年
* @returns {string|null} 加減算後の日付 YYYYMMDD
*/
exports.addYears = (baseDate, year) => {
return isValidDate(
dayjs(baseDate, YYYYMMDD, true).add(year, "year").format(YYYYMMDD)
);
};
日付計算(月)
/**
* 日付計算(月)
* @param {string} baseDate 基準日 YYYYMMDD
* @param {number} month 加減算する月
* @returns {string|null} 加減算後の日付 YYYYMMDD
*/
exports.addMonths = (baseDate, month) => {
return isValidDate(
dayjs(baseDate, YYYYMMDD, true).add(month, "month").format(YYYYMMDD)
);
};
日付計算(日)
/**
* 日付計算(日)
* @param {string} baseDate 基準日 YYYYMMDD
* @param {number} day 加減算する日
* @returns {string|null} 加減算後の日付 YYYYMMDD
*/
exports.addDays = (baseDate, day) => {
return isValidDate(
dayjs(baseDate, YYYYMMDD, true).add(day, "day").format(YYYYMMDD)
);
};
日付フォーマッター
/**
* 日付フォーマット
* @param {string} baseDate 日付日時
* @param {string} format フォーマット. フォーマット形式はDay.js参照.
* @returns {string|null} フォーマット後日付
*/
exports.format = (baseDate, format) => {
return isValidDate(dayjs(baseDate).format(format));
};
月末算出
ライブラリが優秀なので、うるう年も対応しています。
/**
* 月末の日付を返す.
* @param {string} baseDate 日付 YYYYMMDD or YYYYMM
* @returns {string|null} 月末日付 YYYYMMDD
*/
exports.endOfMonth = (baseDate) => {
return isValidDate(
dayjs(baseDate, [YYYYMMDD, "YYYYMM"], true).endOf("month").format(YYYYMMDD)
);
};
日付比較
isBefore()は基準日と比較して比較対象日付が未来ならばtrue、過去ならばfalseとなります。つまり、基準日.isBefore(過去日 "day") はtrue、基準日.isBefore(未来日, "day")はfalseです。
/**
* 日付比較
* @param {string} baseDate 基準日 YYYYMMDD
* @param {string} compDate 対象日 YYYYMMDD
* @returns {number|null} 比較結果. 基準日 < 対象日 は -1, 基準日 = 対象日 は 0, 基準日 > 対象日 は 1
*/
exports.compare = (baseDate, compDate) => {
const base = dayjs(baseDate, YYYYMMDD, true);
const comp = dayjs(compDate, YYYYMMDD, true);
if (!isValidDate(base) || !isValidDate(comp)) {
return null;
}
if (base.isSame(comp, "days")) {
return 0;
}
return base.isBefore(comp, "days") ? -1 : 1;
};
日付差分日数
やっていることは年齢計算と同じで、年を計算するか日数を計算するかの違いです。
/**
* 差分日数
* @param {string} fromDate 基準日 YYYYMMDD
* @param {string} toDate 対象日 YYYYMMDD
* @returns {number|null} 計算結果. 基準日 < 対象日は 正の値、基準日 > 対象日は 負の値.
*/
exports.diffDays = (fromDate, toDate) => {
let from = dayjs(fromDate, YYYYMMDD, true);
let to = dayjs(toDate, YYYYMMDD, true);
if (!isValidDate(from) || !isValidDate(to)) {
return null;
}
return to.diff(from, "day");
};
エポック <-> UTC時間変換
UTC時間を使う場合、プラグインを追加します。またエポック時間には秒とミリ秒で使い方が違うので注意します。
エポック秒 to UTC時間
/**
* エポック(秒) to UTC変換
* @param {number} seconds Unixエポック
* @returns {string|null} UTC時間 YYYYMMDD hhmmss
*/
exports.epocSecToUtc = (seconds) => {
dayjs.extend(require("dayjs/plugin/utc")); // 本来はファイルの先頭で宣言
return isValidDate(dayjs.unix(seconds).utc().format(YYYYMMDD_HHmmss));
};
エポックミリ秒 to UTC変換
/**
* エポック(ミリ秒) to UTC変換
* @param {number} miliseconds
* @returns {string|null} UTC時間 YYYYMMDD hhmmss.SSS
*/
exports.epocMilliSecToUtc = (miliseconds) => {
dayjs.extend(require("dayjs/plugin/utc")); // 本来はファイルの先頭で宣言
return isValidDate(dayjs(miliseconds).utc().format(YYYYMMDD_HHmmss_SSS));
};
UTC to エポック秒
/**
* UTC to エポック(秒)
* @param {string} baseDate 日付
* @returns {number|null} エポック(秒)
*/
exports.utcToEpocSec = (baseDate) => {
dayjs.extend(require("dayjs/plugin/utc")); // 本来はファイルの先頭で宣言
let utc = dayjs.utc(baseDate);
if (!isValidDate(utc)) {
return null;
}
return utc.unix();
};
UTC to エポックミリ秒
/**
* UTC to エポック(ミリ秒)
* @param {string} baseDate YYYYMMDD HHmmss.SSS
* @returns {number|null} エポック(ミリ秒)
*/
exports.utcToEpocMilliSec = (baseDate) => {
dayjs.extend(require("dayjs/plugin/utc")); // 本来はファイルの先頭で宣言
let utc = dayjs.utc(baseDate);
if (!isValidDate(utc)) {
return null;
}
return utc.valueOf();
};
UTC <-> JST 変換
Day.jsオブジェクトは実行環境のロケールに合わせてしまうので、クラウドのリージョンなどの環境では注意が必要ですが、今回は環境に依存しないように実装しています。
UTC to JST
/**
* UTC to JST変換
* @param {string} baseUtc UTC時間. YYYYMMDD HHmmss
* @returns {string|null} 日本時間. YYYYMMDD HHmmss
*/
exports.utcToJst = (baseUtc) => {
dayjs.extend(require("dayjs/plugin/timezone")); // 本来はファイルの先頭で宣言
dayjs.extend(require("dayjs/plugin/utc")); // 本来はファイルの先頭で宣言
dayjs.tz.setDefault("Asia/Tokyo");
let utc = dayjs.utc(baseUtc, YYYYMMDD_HHmmss);
if (!isValidDate(utc)) {
return null;
}
return utc.tz().format(YYYYMMDD_HHmmss);
};
JST to UTC
/**
* JST to UTC変換
* @param {string} baseJst YYYYMMDD HHmmss
* @returns {string|null} UTC. YYYYMMDD HHmmss
*/
exports.jstToUtc = (baseJst) => {
dayjs.extend(require("dayjs/plugin/timezone")); // 本来はファイルの先頭で宣言
dayjs.extend(require("dayjs/plugin/utc")); // 本来はファイルの先頭で宣言
dayjs.tz.setDefault("Asia/Tokyo");
let jst = dayjs(baseJst, YYYYMMDD_HHmmss, true);
if (!isValidDate(jst)) {
return null;
}
return jst.utc().format(YYYYMMDD_HHmmss);
};
2021年5月23日日曜日
楽天ラッキーくじの当選を整理する。【2021年5月】
日付 | 当選数 | 当選サービス | |
---|---|---|---|
5/1 | 0 | ||
5/2 | 2 | 楽天トラベル ラッキーくじ、【楽天toto】楽天totoラッキーくじ | |
5/3 | 5 | 楽天PointClubアプリ ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版)、楽天カレンダーラッキーくじ、InfoseekNewsラッキーくじ、リワード特集ページ ラッキーくじ | |
5/4 | 1 | 楽天トラベル ラッキーくじ | |
5/5 | 4 | 【楽天ブックス】facebookラッキーくじ、【楽天カード】じゃんけん勝者限定くじ、リワード特集ページ ラッキーくじ、アプリ限定 楽天ラッキーくじ | |
5/6 | 11 | LINE限定 毎日引けるくじ、リワード特集ページ ラッキーくじ | |
5/7 | 1 | 楽天PointClubアプリ ラッキーくじ | |
5/8 | 0 | ||
5/9 | 13 | 楽天トラベル ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ、LINE限定 毎日引けるくじ、リワード特集ページ ラッキーくじ | |
5/10 | 1 | 【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版) | |
5/11 | 23 | 楽天Edy スマホ ラッキーくじ、マラソンスロット PC&SP版、リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ | |
5/12 | 3 | 楽天トラベル ラッキーくじ、【楽天レシピ】ラッキーくじ 、リワード特集ページ ラッキーくじ | |
5/13 | 1 | 【楽天くじ広場】ラッキーくじ | |
5/14 | 21 | マラソンスロット PC&SP版、楽天トラベル ラッキーくじ | |
5/15 | 1 | リワード特集ページ ラッキーくじ | |
5/16 | 0 | ||
5/17 | 3 | 楽天ブログ ラッキーくじ、毎日ラッキーくじ 、楽天トラベル ラッキーくじ | |
5/18 | 0 | ||
5/19 | 1 | マネ活ラッキーくじ | |
5/20 | 0 | ||
5/21 | 0 | ||
5/22 | 2 | リワード特集ページ ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版) | |
5/23 | 1 | 楽天ブックス・ラッキーくじ | |
5/24 | 0 | ||
5/25 | 10 | LINE限定 毎日引けるくじ | |
5/26 | 1 | 【楽天くじ広場】ラッキーくじ | |
5/27 | 3 | 楽天カードスマホじゃんけん勝者限定くじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天トラベル ラッキーくじ | |
5/28 | 2 | 【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版)、【楽天ブックス】facebookラッキーくじ | |
5/29 | 5 | リワード特集ページ ラッキーくじ、【楽天toto】楽天totoラッキーくじ、楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ、Rakuten TV ラッキーくじ | |
5/30 | 0 | ||
5/31 | 2 | 楽天カードラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
合計:117、平均=3.7 |
2021年4月1日木曜日
楽天ラッキーくじの当選を整理する。【2021年4月】
日付 | くじ数 | 当選数 | 当選サービス |
---|---|---|---|
4/1 | 5 | リワード特集ページ ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版)、楽天カードラッキーくじ、楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ | |
4/2 | 2 | 【楽天toto】楽天totoラッキーくじ、【楽天カード】じゃんけん勝者限定くじ | |
4/3 | 12 | リワード特集ページ ラッキーくじ、LINE限定 毎日引けるくじ、楽天カードスマホじゃんけん勝者限定くじ | |
4/4 | 1 | 楽天トラベル ラッキーくじ | |
4/5 | 3 | リワード特集ページ ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版)、楽天トラベル ラッキーくじ | |
4/6 | 2 | 楽天×ぐるなび ラッキーくじ、楽天トラベル ラッキーくじ | |
4/7 | 1 | リワード特集ページ ラッキーくじ | |
4/8 | 2 | 【楽天toto】楽天totoラッキーくじ、楽天PointClubアプリ ラッキーくじ | |
4/9 | 2 | 楽天カードスマホラッキーくじ、楽天ブックス・ラッキーくじ | |
4/10 | 2 | 楽天カードスマホラッキーくじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
4/11 | 12 | リワード特集ページ ラッキーくじ、楽天カードスマホじゃんけん勝者限定くじ、LINE限定 毎日引けるくじ | |
4/12 | 1 | リワード特集ページ ラッキーくじ | |
4/13 | 1 | リワード特集ページ ラッキーくじ | |
4/14 | 1 | 楽天ブログ ラッキーくじ | |
4/15 | 4 | 【楽天レシピ】ラッキーくじ、【楽天レシピ】ラッキーくじ、楽天PointClubアプリ ラッキーくじ、楽天PointClubアプリ ラッキーくじ | |
4/16 | 4 | 【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版)、楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天トラベル ラッキーくじ、Rakuten TV ラッキーくじ | |
4/17 | 1 | 楽天PointClubアプリ ラッキーくじ | |
4/18 | 2 | 楽天トラベル ラッキーくじ、リワード特集ページ ラッキーくじ | |
4/19 | 2 | 楽天PointClubアプリ ラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
4/20 | 1 | 楽天PointClubアプリ ラッキーくじ | |
4/21 | 1 | リワード特集ページ ラッキーくじ | |
4/22 | 4 | 楽天PointClubアプリ ラッキーくじ、楽天カードラッキーくじ、【楽天カード】じゃんけん勝者限定くじ、【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
4/23 | 2 | 【楽天×宝くじ】最大1000ポイントが当たる!楽天×宝くじラッキーくじ、リワード特集ページ ラッキーくじ | |
4/24 | 3 | Rakuten TV ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版)、スマートフォン限定 楽天ラッキーくじ | |
4/25 | 2 | リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ | |
4/26 | 1 | リワード特集ページ ラッキーくじ | |
4/27 | 2 | リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ | |
4/28 | 3 | 【楽天カード】じゃんけん勝者限定くじ、楽天カードスマホラッキーくじ、リワード特集ページ ラッキーくじ | |
4/29 | 2 | 楽天トラベル ラッキーくじ、楽天PointClubアプリ ラッキーくじ | |
4/30 | 0 | ||
合計:81、平均=2.7 |
2021年3月5日金曜日
Ubuntu Server 20.04 on RPi4 の初期インストール後のwifiネットワーク設定
目的
参考
実際のオペレーション
$ sudo cp -p /etc/netplan/50-cloud-init.yaml /etc/netplan/99_config.yaml $ sudo vi /etc/netplan/99_config.yamlファイルの修正内容は以下。wifis以下を追加した。固定IPアドレスの指定なので、そこは自身の環境に合わせる必要がある。
また、コロン(:)の直後に半角スペースがないことで、エラーになることがあるので注意。
network: ethernets: eth0: dhcp4: true optional: true version: 2 wifis: wlan0: access-points: "アクセスポイント名": password: "パスワード" dhcp4: false addresses: [192.168.0.118/24] gateway4: 192.168.0.1 nameservers: addresses: [192.168.0.1,8.8.8.8,8.8.4.4]
$ sudo netplan apply $ ping www.google.co.jp # 接続を試す。
2021年3月1日月曜日
楽天ラッキーくじの当選を整理する。【2021年3月】
日付 | くじ数 | 当選数 | 当選サービス |
---|---|---|---|
3/1 | 1 | リワード特集ページ ラッキーくじ | |
3/2 | 1 | リワード特集ページ ラッキーくじ | |
3/3 | 1 | 【楽天くじ広場】ラッキーくじ | |
3/4 | 2 | 【楽天ブックス】facebookラッキーくじ、リワード特集ページ ラッキーくじ | |
3/5 | 3 | 楽天PointClubアプリ ラッキーくじ、楽天カレンダーラッキーくじ、リワード特集ページ ラッキーくじ | |
3/6 | 2 | リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ | |
3/7 | 3 | リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ | |
3/8 | 4 | リワード特集ページ ラッキーくじ、毎日チャンス マネ活ラッキーくじ!楽天ポイントが当たる、【楽天toto】楽天totoラッキーくじ 、楽天トラベル ラッキーくじ | |
3/9 | 3 | リワード特集ページ ラッキーくじ、毎日チャンス マネ活ラッキーくじ!楽天ポイントが当たる、【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版) | |
3/10 | 14 | リワード特集ページ ラッキーくじ、【楽天レシピ】ラッキーくじ、LINE限定 毎日引けるくじ、【楽天くじ広場】ラッキーくじ、楽天トラベル ラッキーくじ | |
3/11 | 4 | リワード特集ページ ラッキーくじ、楽天リワード ラッキーくじ、毎日チャンス マネ活ラッキーくじ!楽天ポイントが当たる、楽天PointClubアプリ ラッキーくじ | |
3/12 | 2 | 楽天×ぐるなび ラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
3/13 | 2 | リワード特集ページ ラッキーくじ、楽天×ぐるなび ラッキーくじ | |
3/14 | 4 | リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ、Rakuten TV ラッキーくじ | |
3/15 | 2 | リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ | |
3/16 | 2 | 楽天ブログ ラッキーくじ、楽天トラベル ラッキーくじ | |
3/17 | 2 | 楽天PointClubアプリ ラッキーくじ、楽天カレンダーラッキーくじ | |
3/18 | 3 | リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版) | |
3/19 | 0 | ||
3/20 | 13 | リワード特集ページ ラッキーくじ、LINE限定 毎日引けるくじ、【楽天ポイント活動部】ラッキーくじ(2021年3月~5月通常版)、【楽天カード】じゃんけん勝者限定くじ | |
3/21 | 1 | 楽天トラベル ラッキーくじ | |
3/22 | 2 | 楽天ブログ ラッキーくじ、楽天トラベル ラッキーくじ | |
3/23 | 23 | マラソンスロット PC&SP版、楽天カードラッキーくじ、楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ | |
3/24 | 2 | リワード特集ページ ラッキーくじ、【楽天toto】楽天totoラッキーくじ | |
3/25 | 10 | LINE限定 毎日引けるくじ | |
3/26 | 2 | 楽天PointClubアプリ ラッキーくじ、【楽天くじ広場】ラッキーくじ | |
3/27 | 1 | 【楽天くじ広場】ラッキーくじ | |
3/28 | 0 | ||
3/29 | 3 | リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ | |
3/30 | 3 | リワード特集ページ ラッキーくじ、楽天カレンダーラッキーくじ、【楽天ブックス】facebookラッキーくじ | |
3/31 | 2 | 【楽天くじ広場】ラッキーくじ、楽天トラベル ラッキーくじ | |
合計:117、平均=3.8 |
2021年2月1日月曜日
楽天ラッキーくじの当選を整理する。【2021年2月】
日付 | くじ数 | 当選数 | 当選サービス |
---|---|---|---|
2/1 | 2 | 【楽天ポイント活動部】ラッキーくじ(2021年1月通常版)、楽天トラベル ラッキーくじ | |
2/2 | 1 | リワード特集ページ ラッキーくじ | |
2/3 | 0 | ||
2/4 | 3 | 楽天ブログ ラッキーくじ、楽天トラベル ラッキーくじ、InfoseekNewsラッキーくじ(SP) | |
2/5 | 1 | 【楽天ブックス】facebookラッキーくじ | |
2/6 | 0 | ||
2/7 | 1 | 楽天デリバリー ラッキーくじ | |
2/8 | 2 | 楽天トラベル ラッキーくじ、楽天PointClubアプリ ラッキーくじ | |
2/9 | 2 | リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ | |
2/10 | 2 | 楽天PointClubアプリ ラッキーくじ、楽天PointClubアプリ ラッキーくじ | |
2/11 | 2 | 【楽天くじ広場】ラッキーくじ、リワード特集ページ ラッキーくじ | |
2/12 | 2 | 楽天トラベル ラッキーくじ、楽天PointClubアプリ ラッキーくじ | |
2/13 | 3 | 楽天Edy スマホ ラッキーくじ、リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ | |
2/14 | 1 | 【楽天くじ広場】ラッキーくじ | |
2/15 | 1 | 楽天リワード ラッキーくじ | |
2/16 | 2 | 楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ | |
2/17 | 12 | ポイント獲得実績のお知らせメール購読者限定ラッキーくじ(2021/2/16~2/18)、リワード特集ページ ラッキーくじ、楽天ラッキーくじ | |
2/18 | 3 | 楽天ブログ ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年2月通常版)、【楽天くじ広場】ラッキーくじ | |
2/19 | 6 | 毎日チャンス マネ活ラッキーくじ!楽天ポイントが当たる、【楽天くじ広場】ラッキーくじ、楽天PointClubアプリ ラッキーくじ、【楽天toto】毎日最大1000ポイントが当たる!楽天totoラッキーくじ、楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ | |
2/20 | 1 | 楽天PointClubアプリ ラッキーくじ | |
2/21 | 1 | 毎日チャンス マネ活ラッキーくじ!楽天ポイントが当たる | |
2/22 | 4 | リワード特集ページ ラッキーくじ、毎日チャンス マネ活ラッキーくじ!楽天ポイントが当たる、【楽天ポイント活動部】ラッキーくじ(2021年2月通常版)、楽天トラベル ラッキーくじ | |
2/23 | 1 | リワード特集ページ ラッキーくじ | |
2/24 | 4 | リワード特集ページ ラッキーくじ、毎日チャンス マネ活ラッキーくじ!楽天ポイントが当たる、楽天ブックス・ラッキーくじ、楽天トラベル ラッキーくじ | |
2/25 | 2 | 楽天PointClubアプリ ラッキーくじ、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ | |
2/26 | 3 | リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ | |
2/27 | 14 | リワード特集ページ ラッキーくじ、LINE限定 毎日引けるくじ、【楽天ポイント活動部】ラッキーくじ(2021年2月通常版)、楽天PointClubアプリ ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ | |
2/28 | 0 | ||
合計:76、平均=2.7 |