山田健一のブログ

業務に強いフリーITエンジニア 山田健一のブログです

粉飴で自作パワーキューブ作成(その1)

経ヶ岳バーティカルリミットでもらった粉飴

f:id:yamadaken1:20171223212532j:plain

を使って見たいと思いつつ、もう年が明けてしまうぞ。。。
一念発起(大げさ)して「粉飴 レシピ」でぐぐってみると、粉飴100g+水分70gでエナジージェルが作れるというサイトを沢山見つけました。
それなら、KTFのTeruki Senokuchiさんから教わったパワーバーのジャムの代わりに粉飴が使えるんじゃないかと挑戦してみました。
ジャムの代わりなので、無添加リンゴジュースにしてみました。

エナジージェルより固めがいいんじゃないかと思い、約60gのリンゴジュースを鍋に入れ、弱火で温めながら、粉飴を少しずつ溶かしていきます。
(実はこのときに失敗しているのですが、このときは気づいていません)
そのうち、少しずつ投入するのが面倒になって、ドンと入れていしまったら、たくさんダマが出来てしまったので、リンゴジュースを少し追加しました。
なんとか、それなりに溶けたのですが、見た目がエナジージェルっぽくないです。
まあ、いいか、とパワーバー作りの工程に入りました。ジャムを投入する段階でエナジージェル(のはず)の鍋を見ると、カチカチの飴になっています。
ここで、失敗に気づきます。直接ジュースを温めたので、水分が飛んでしまったようです。
しかし、粉飴は温めると柔らかくなるので、柔らかくしてから、パワーバーに投入してパワーバーを作りました。

f:id:yamadaken1:20171223212659j:plain

四角い形にしたので、パワーバーというよりパワーキューブですね。
Teruki Senokuchiさんのレシピに比べるとしっとり感がなく、カチカチです。
いいところとしては、あまりべとつかないので、アーモンドプードル不要となることです。味は、好きな物を投入して作っているので、悪くはありません、
これを持って、米俵マラソンの練習に行くので、感想は別に書きます。

さて、余ってしまった、エナジージェル失敗作をどうしようか?
そうだ、これを使ってオリジナルのパワーキューブを作ろう!

こちらも別記事でレシピをまとめます。

 

 

JsonからテーブルにINSERT

yamadaken1.hatenablog.com

上記の記事の関連です。

 

世の中にはストアドが嫌いな人もいるので。。。
JsonからテーブルにINSERTする話です。

テストデータは前回と同じです。

こんなテーブルを用意します。

CREATE TABLE test
(
      item_code character varying
      ,product_name character varying
      ,req_qty numeric
)
;

テスト用なので、主キーもない手抜きのテーブルです。
このテーブルがあれば、次のSQLJSON配列から一気にレコードINSERTが出来ます。

 

INSERT INTO test
    SELECT
      *
    FROM
      json_to_recordset
('
[
 {
   "item_code": "A0001",
   "product_name": "KEYBORD",
   "req_qty": 10.283
 },
 {
   "item_code": "A0002",
   "product_name": "MONITOR",
   "req_qty": 526.267
 },
 {
   "item_code": "A0003",
   "product_name": "MOUSE",
   "req_qty": 610.39
 },
 {
   "item_code": "A0004",
   "product_name": "MAIN BOX",
   "req_qty": 341.751
 },
 {
   "item_code": "A0005",
   "product_name": "USB HUB",
   "req_qty": 371.524
 },
 {
   "item_code": "A0006",
   "product_name": "ROOTER",
   "req_qty": 1395
 },
 {
   "item_code": "A0007",
   "product_name": "WINDOWS10Pro",
   "req_qty": 1287
 },
 {
   "item_code": "A0008",
   "product_name": "VISUAL STUDIO 2016 PRO",
   "req_qty": 25
 }
]

')
      AS rec
      (
          item_code character varying
          ,product_name character varying
          ,req_qty numeric
      )
;

SELECT結果はこんな感じになります。

f:id:yamadaken1:20171208204857j:plain

 

 

PostgreSQLJson型とストアドファンクションの受け渡し

私はフリーITエンジニアとして、業務分析、業務改善提案を含む設計、製造、受入検査を含む検査、システム運用開始後の運用改善提案など、様々な分野を担当しています。

今回はPostgreSQLの話題です。

PostgreSQLではJson型があります。
非定型なデータを1つの列に保存するのに適していますが、定型的な業務ではテーブルの列にJson型が適している例は少ないと思います。

ただし、ストアドファンクションとのデータの受け渡しには威力を発揮します。
多数のデータを1度に登録したいときなど、INSERT文をループで回すのは、パフォーマンスもよくありません。
データを1度に渡してしまい、ストアドファンクション内でループさせることで良好なパフォーマンスを得られます。
そんなときにJson型が活躍します。

受け渡すデータはこんな感じです。

f:id:yamadaken1:20171207213401j:plain

これをJSON配列に変換するとこんな感じになります。

[
{
"item_code": "A0001",
"product_name": "KEYBORD",
"req_qty": 10.283
},
{
"item_code": "A0002",
"product_name": "MONITOR",
"req_qty": 526.267
},
{
"item_code": "A0003",
"product_name": "MOUSE",
"req_qty": 610.39
},
{
"item_code": "A0004",
"product_name": "MAIN BOX",
"req_qty": 341.751
},
{
"item_code": "A0005",
"product_name": "USB HUB",
"req_qty": 371.524
},
{
"item_code": "A0006",
"product_name": "ROOTER",
"req_qty": 1395
},
{
"item_code": "A0007",
"product_name": "WINDOWS10Pro",
"req_qty": 1287
},
{
"item_code": "A0008",
"product_name": "VISUAL STUDIO 2016 PRO",
"req_qty": 25
}
]

テスト用のストアドファンクションのソースです。

/*
test_sp_json

input parameters

p_json json
-- Json of -------
      item_code character varying
      ,product_name character varying
      ,req_qty numeric
-------------------

*/
/*
output(none)
*/
CREATE
  OR REPLACE
FUNCTION test_sp_json
(
p_json json
)
RETURNS integer
 AS
$$
DECLARE
  rec RECORD;
BEGIN
  FOR rec IN
    SELECT
      *
    FROM
      json_to_recordset(p_json)
      AS rec
      (
          item_code character varying
          ,product_name character varying
          ,req_qty numeric
      )
  LOOP
    -- 本体
    RAISE NOTICE 'item_code = %, product_name = %, req_qty = %',
            rec.item_code, rec.product_name, rec.req_qty;
  END LOOP;
  
  RETURN 0;
END
$$
language 'plpgsql'
;


Json型で受けたパラメーター p_json
json_to_recordset(p_json) でレコードセットに変換してループさせる処理になります。
ループの中にやりたい処理を書いてください。
ちなみにこの処理を実行するSQLは次のようになります。

SELECT * FROM test_sp_json('
[
 {
   "item_code": "A0001",
   "product_name": "KEYBORD",
   "req_qty": 10.283
 },
 {
   "item_code": "A0002",
   "product_name": "MONITOR",
   "req_qty": 526.267
 },
 {
   "item_code": "A0003",
   "product_name": "MOUSE",
   "req_qty": 610.39
 },
 {
   "item_code": "A0004",
   "product_name": "MAIN BOX",
   "req_qty": 341.751
 },
 {
   "item_code": "A0005",
   "product_name": "USB HUB",
   "req_qty": 371.524
 },
 {
   "item_code": "A0006",
   "product_name": "ROOTER",
   "req_qty": 1395
 },
 {
   "item_code": "A0007",
   "product_name": "WINDOWS10Pro",
   "req_qty": 1287
 },
 {
   "item_code": "A0008",
   "product_name": "VISUAL STUDIO 2016 PRO",
   "req_qty": 25
 }
]
');

実際には、プログラムから渡すので、こんなに長いことはないですが、ストアドファンクションのテスト用の書き方の例として捉えてください。
実行結果は次のようになります。

 

NOTICE: item_code = A0001, product_name = KEYBORD, req_qty = 10.283
CONTEXT: PL/pgSQL関数test_sp_json(json)の18行目の型RAISE
NOTICE: item_code = A0002, product_name = MONITOR, req_qty = 526.267
CONTEXT: PL/pgSQL関数test_sp_json(json)の18行目の型RAISE
NOTICE: item_code = A0003, product_name = MOUSE, req_qty = 610.39
CONTEXT: PL/pgSQL関数test_sp_json(json)の18行目の型RAISE
NOTICE: item_code = A0004, product_name = MAIN BOX, req_qty = 341.751
CONTEXT: PL/pgSQL関数test_sp_json(json)の18行目の型RAISE
NOTICE: item_code = A0005, product_name = USB HUB, req_qty = 371.524
CONTEXT: PL/pgSQL関数test_sp_json(json)の18行目の型RAISE
NOTICE: item_code = A0006, product_name = ROOTER, req_qty = 1395
CONTEXT: PL/pgSQL関数test_sp_json(json)の18行目の型RAISE
NOTICE: item_code = A0007, product_name = WINDOWS10Pro, req_qty = 1287
CONTEXT: PL/pgSQL関数test_sp_json(json)の18行目の型RAISE
NOTICE: item_code = A0008, product_name = VISUAL STUDIO 2016 PRO, req_qty = 25
CONTEXT: PL/pgSQL関数test_sp_json(json)の18行目の型RAISE

Total query runtime: 16 msec
1 行検索しました

 

 

第5回米俵マラソン完走記

米俵マラソン

www.komedawara.jp

を走ってきました。

今年から米俵10kg部門が増えました。

当然、私は米俵10kg部門にエントリーですが、目立つために米俵を3つ背負う作戦です。

f:id:yamadaken1:20171126223910j:plain

下から
米俵ワークショプで作った10kgの米俵
昨年の米俵ワークショプで作った5kgの米俵
そして、中身をワラだけにしたダミーの米俵
の合計15kgです。私設15kg部門と呼んでいます。

15kgの米俵は、南木曽町妻籠健康マラソンで完走実績がありますが、あまり練習できていないので、若干心配でした。それでも、とにかく頑張るのみです。

今年から、米俵持参部門があるため、計量もありましたが、余分に積んでいるので、当然パスになります。

米俵マラソン公式キャラクターたちと記念撮影です。

f:id:yamadaken1:20171126224031j:plain

飯田市aina(あい~な)さんが、無料のフットケアをしてくれていたので、お願いしました。下肢をマッサージしてもらっていい感じになりました。

天気は良いのですが、今一つ気温が上がらず、寒い開会式となりました。この段階では防寒具装着状態でした。

開会式の中でストレッチを指導してくれたので、いい感じに体が仕上がって来ました。

スタートラインに着くと、「去年2つ背負っていた人ですよね」と声をかけてもらえました。
いい感じです。この声で練習不足の不安は吹き飛んでいました。単純な性格に感謝です。
スタートもいい感じに切ることが出来ました(早くはないですけど)。
やはり3つの米俵は目立ちます。沿道からは「すごーい、頑張って」とか、「何キロ?」とか、非常にうれしい声援をもらいました。「15kgデース」と元気に答えます。これが更に元気を増加させます。
私を抜いていくランナーさんも「何キロなんですか?」と声をかけてくれます。「15kgデース」と答えるたびに元気が出てきます。
エイドのりんごも美味しいです。

本当に楽しい大会です。

最後の上りは歩いているのと同じくらいのスピードかとも思いましたが、SF-850をみると8分台/kmです。歩くのより早いぞ。ここでも元気をもらい、頑張って登ります。

終結果です。

f:id:yamadaken1:20171126224124j:plain

南木曽町妻籠健康マラソンよりも早く帰ってくることが出来ました。

その後の「ごはんですよ」の新米や、無料豚汁の美味しいこと。
そして、今年はおかず券100円分もついていました。ご飯をおかわりして、200円のきのこ汁(実質100円です)を買いましたが、きのこ汁に信州サーモンも乗っているというお買い得感あふれるきのこ汁でした。

aina(あい~な)さんに走る前のフットケアをしてもらったときに「帰りも来てください」と言われていたので、遠慮なくお願いしたら、とても気持ちのいいマッサージでした。
明日の筋肉痛はないかもしれない。


とにかく楽しい大会なので、これを読んでくれた皆さん、参加を検討してください。
米俵は1kg、3kg、5kgもありますし、空身で走る部門もありますので、「10kgは無理!」と思われた方も部門を選んで挑戦できます。

 

 

 

信州駒ヶ根ハーフマラソン2017完走記

信州駒ヶ根ハーフマラソン

http://koma-marathon.com/

ハーフマラソンの部を走ってきました。

出走前に、無料のテーピングをして貰い、R+Lさんのソックスとゲイター着用して走りました。

この大会は出走者数が多く、ハーフマラソンは約2,500人が走ります。
私は、今まで小規模の大会ばかり走っていたので、この規模の大会は初体験です。
出走人数が多いので、最初はペースが掴みづらいです。
ようやく、自分のペースくらいの塊に入れたころ、靴紐がほどけました。
ほどけないと言われているイアンノットで靴紐を結んだつもりでしたが、イアンノットもどきだったようです。
歩道に移り、普通の蝶結びに結び直しました。また、自分のペースくらいの塊に追いつかねば。。。
そうこうしているうちにコースは下り坂になります。
下りは、なるべくブレーキを掛けず、それでいて、急ぎすぎないようにコントロールしました。
小さなアップダウンはありますが、練習の成果か、小さなアップダウンはあまり気にすることなく走れました。
この大会の特徴の1つに「エイドの充実」があります。
なし、ミニトマト、梅干し、ぶどう、アイスが美味しかったです。
遅いくせにタイム狙いなので、そばはパスしました。
アイスは、スティックタイプのものです。アイスを食べるとちょっと喉が乾くのですが、食べ終わって少し走ったところにエードがあります。この絶妙な設定に感激です。
アップダウンヒル区間は、激坂と呼ばれていましたが、それほど苦しくはありませんでした。散歩コースを標高1,000mコースに変えた成果だと思います。
アップダウンヒル区間よりも終盤の上りが辛かったですね。
下ってから、最後に登るのは、結構きついです。
応援メッセージに「1位になってください」と書いてあったけど、「自分なりの達成感

 

は1位」なので、これで勘弁して貰おうと思います。

出走者が多いので、Facebookのラン友さんに挨拶できませんでした。
埼玉のはるな愛さんには、エードのところで抜かれたのですが、挨拶しようと思っても追いつけませんでした。

このコース、結構きついけど、沿道の応援が素晴らしいし、エイドも充実。人気ナンバー1になるのも分かる気がします。
大会結果がもうアップされていました。
部門順位は123/220。半分より上には行きたかったなあ。
男子順位は1213/1895。
アップダウンヒル区間種目別順位は122/223
アップダウンヒル区間男子順位は1242/1921
どれも半分よりちょっと下です。
SF-850PBによると累積標高が約400mです。ちょっと練習コースを工夫しないといけないですね。

f:id:yamadaken1:20170924202038j:plain

f:id:yamadaken1:20170924202107j:plain

f:id:yamadaken1:20170924202141j:plain

信州駒ヶ根ハーフマラソンの練習(4)

信州駒ヶ根ハーフマラソン

http://koma-marathon.com/

の練習ネタです。

今日は、ハーフの距離を走ることにしました。
今回も、補給食と水分を携行して走りました。水分はスポーツドリンク500ml、補給食はカロリーメイトブロックです。

私の練習コースは上り坂から始まるのですが、意外に調子よく走り出すことが出来ました。上り坂からほぼ平坦になる500mを5'50"/kmで走ることが出来ました。
工業団地横の道ではランナー集団にスレ違い、ハイタッチ!これで気分を良くしてスピードもアップします。
しかし、7km走ったあたりから、スピードが落ち始めました。水分補給や、カロリーメイト補給を行いましたが、カロリーメイトブロックはパサパサして、ランニング中の補給には向かないみたいです。水分も補給して、喉に押し込みます。
このあたりから、言い訳を考え出します。どうやら、気温が高いみたいですね。
タイムが期待できなくなってきました。
こうなるとモチベーションが下がってくるのですが、これに対抗するのも練習のうちと自分に言い聞かせて走ります。

信州駒ヶ根ハーフマラソンの練習(2)

yamadaken1.hatenablog.com

で、完走出来ていないので、とにかく完走を目指すことにしました。

折り返し地点のタイムが1:06'14"です。最悪の記録ですが、このペースが維持さえできれば、そうそう悪い記録ではありません。

ところが、どんどんペースが落ちてきます。
それでも完走目指してがんばります。
完走出来ずに、へこたれた地点に来たときは、あえて水分補給をして、気持ちを奮い立たせます。

しかし、このあたりから、苦しくなってきました。それでも歩かずにがんばります。
「ハーフってこんなに苦しかったっけ?」というのが今日の感想ですが、最後は下り坂なので、頑張ってゴールしました。

結果は 2:33'25"
2時間半は切りたかったなあ。。。

それでも前向きに「条件が悪くても2:33'25"!本番はもっと早く走れるはず」と考えることにしました。

教訓;「夏の暑さを舐めてはいけない」

f:id:yamadaken1:20170819210711j:plain

 

信州駒ヶ根ハーフマラソンの練習(3)

信州駒ヶ根ハーフマラソン

http://koma-marathon.com/

の練習ネタです。

実は、6月17日に坂道を楽しむ練習をした時に、足首を痛めたらしく、しばらくランを自粛していました。
それでも筋力は落としたくないので、ウォークを毎日、特に坂道を重点に続けてきました。7月29日に軽く走って、回復を確認してから、徐々にランをして来ました。
ウォークで登り、下りをランにするという姑息な練習方法も編み出してしまいました。
おかげで、8月5日の伊那まつりはしっかり踊れましたし、8月6日の爆水ランは完走できました。
次の大会は、信州駒ヶ根ハーフマラソンなので、しっかり練習したいところですが、無理をせずに、ゆっくりと走ることを心がけようと思いました。
とは言え、気持ちを抑えるのは苦手なので、新しいコースを開拓しました。基本は坂道練習です。いつもの散歩コースの延長で、山間部の舗装路を走るコースです。累積標高は約200m、距離は6.9kmです。回復ランにはちょうどいい感じです。
前回の練習で、ガス欠になったので、今回は、補給食も水分も携行して走りました。結果的にどちらも利用しませんでしたが、「備えあれば、憂いなし」です。

今回、新しいシューズを使いました。「完走からサブ5達成へ」という身の丈にあったシューズです。サポートもしっかりしていて、いい感じでした。
走り終わった後の足の感じも悪くありません。

徐々に距離を伸ばしていこうと思います。

f:id:yamadaken1:20170814114838j:plain