So-net無料ブログ作成

今日の出来事 プログラム [アーリーリタイア]

こんばんは

今日もすごく暑いです。

晴れてるので外に出たかったので少し離れたショッピングモールまで出かけました。

帰りに公園で自転車で散歩。

バラは少し散ってますね。

資産管理電卓のプログラムを進めて、net コマンドで HTML そのものを取得できるようにしました。

print(
 net(
  ^html,
  "https://stocks.finance.yahoo.co.jp/stocks/chart/?code=usdjpy"
 )
)


そして、xpath を適用できる xpath という組み込み関数を作りました。

print(
 xpath(
  net(^html,"https://stocks.finance.yahoo.co.jp/stocks/chart/?code=usdjpy"),
  "//td[@class='stoksPrice']"
 )
)


これで、円ドルの為替レートが取ってこれます。
net(^val,^kawase)

でも取ってこれますが内部的にはこういうことをしてるということです。
汎用的にスクレイピングができるようになりました。
なぜかというとネットなので直ぐに変わってしまうのでハードコーディングしていると対応しずらいからスクリプトで対応できるように外部に出しました。

linecalc30.jpg

こんな感じです。
簡単な記述で XPath が使えてるのがわかると思います。

後は、正規表現やファイル入出力を作ろうかと思います。

趣味でやってるだけですが、もう10000行を超えてきそうです。
一部スパゲッティになってます。

トランプさんこの炎天下ゴルフに相撲に年食ってるのに元気ですね、、、

阿部さん色々言われますが中国を見ても日本の国益を守るには今はトランプさんのご機嫌を取らないと資源のない日本はやってけないのがわかってるかもしれないです。

とりあえず明後日には急激に涼しくなるようですが、今は頑張り時という感じですね。

コメント(0) 
共通テーマ:日記・雑感

今日の出来事 夏日 [アーリーリタイア]

こんばんは

今日も暑い。

部屋の温度計が32度になってて、5月でまだ紫陽花も咲いてないんですが。

しかし、晴れてるので運動がてら久々に近くの池に鳥を見に行きました。

しかし、1匹もおらず。

居なくはないんですが、草むらに隠れていて全く姿が見えなかったです。

トランプさんそろそろ日本に来てる頃でしょうか。

最近為替も円高で会う方も大変だと思われます。

イギリスもメイ首相が交代したり、交代して次誰かがやってもうまくいくんでしょうか。

移民政策で無制限で受け入れるのはこういう結果になるという見本になりました。
日本もこれから50万人も受け入れるみたいなのでなんでもかんでも自由というわけにもいかないですね、、、

linecalc29.jpg

自分で作ったスネークゲームではまってしまい、結構奥が深いです、500点超えるのが難しい。
途中でのミスをリカバリするかそのまま進むか、先の戦略と反射神経を組み合わせる戦略ゲームなんですね。知らんかった。

コメント(0) 
共通テーマ:日記・雑感

今日の出来事 資産管理電卓でゲーム3 [アーリーリタイア]

こんばんは

今日はもう夏日という感じで暑い。

とりあえずは運動しないといけないので自転車で出かけましたが、日差しが危ないです。
帽子かぶらないとかなり日焼けしそうな勢いです。
熱射病や熱中症はしばらく気を付けないといけないかもしれません。

資産管理電卓で遊んでて、だいぶ言語仕様の矛盾とかも取れました。
いじっているうちにスネークゲームができてしまいました。

/*
 -------------------------
 スネークゲーム
 -------------------------
*/
seq(
 /* 仮想画面(80*12)を作る */
 let(txt,""),
 for(cnt , 1 , 80 , 1 , let(txt,stradd(txt," "))),
 let(txt,stradd(txt,"
")),
 let($disptxt,""),
 for(cnt , 1 , 12 , 1 , let($disptxt,stradd($disptxt,txt))),

 /* 
仮想画面に文字を表示する関数定義
@1: X(0始まり)
@2: Y(0始まり)
@3: 文字列
 */
 def($gm_dprint,"
seq(
 let(x,@1), /* @変数は代入不能なのでコピー */
 let(y,@2), /* @変数は代入不能なのでコピー */
 let(nodisp,0),
 if(lt(x,0),let(nodisp,1)),
 if(gr(x,79),let(nodisp,1)),
 if(lt(y,0),let(nodisp,1)),
 if(gr(y,11),let(nodisp,1)),
 if(not(nodisp),
  seq(
   let(stpos,int(y)*82+int(x)),/* 文字列挿入位置 */
   let(edpos,stpos+strlen(@3)), /* 文字列後半位置 */
   let($disptxt,stradd(substr($disptxt,0 ,stpos),@3,substr($disptxt,edpos,82*12)))
  )
 )
)
"),

 /* 
仮想画面より文字取得
@1: X(0始まり)
@2: Y(0始まり)
 */
 def($gm_getch,'
seq(
 let(x,@1), /* @変数は代入不能なのでコピー */
 let(y,@2), /* @変数は代入不能なのでコピー */
 let(ret," "), /* 帰り値 */
 if(lt(x,0),let(ret,"#")), /* 外は壁 */
 if(gr(x,79),let(ret,"#")),
 if(lt(y,0),let(ret,"#")),
 if(gr(y,11),let(ret,"#")),
 if(not(eq(ret,"#")),
  let(ret,substr($disptxt,int(y)*82+int(x),1))
 ),
 ret
)
'),

/* 画面表示関数定義 */
 def($gm_disp,"print(substr($disptxt,0 ,82*12))"),

/* 爆発ライン表示
 @1:表示文字
 @2:表示開始X
 @3:表示開始Y
 @4:Xベクトル
 @5:Yベクトル
 @6:回数
*/
 def($gm_line,'
seq(
 let(x,@2),
 let(y,@3),
 let(xv,@4),
 let(yv,@5),
 for(cnt , 1 , @6 , 1 ,
  seq(
   $gm_dprint(x,y,@1),
   $gm_disp,
   delay(5),
   let(x,x+xv),
   let(y,y+yv)
  )
 )
)
'
 ),

/* メインルーチン */

 /* オープニング表示 */
 while(1 , 
  seq(
   $gm_dprint(10 ,5 ,"push sps to start"),
   $gm_disp,
   delay(100),
   $gm_dprint(10 ,5 ,"                 "),
   $gm_disp,
   delay(50),
   if(rinput(^sps), loopend)
  )
 ),

 /* 初期化 */
 let(x,0),
 let(y,0),
 let(xv,1),
 let(yv,0),
 let(score,0),
 for(cnt,0 , 11 , 1 , $gm_dprint(79 ,cnt ,"|")),
 for(cnt,0 , 79 , 1 , $gm_dprint(cnt,11 ,"-")),
 while(1 ,
  seq(
   /* スコアアップ */
   let(score,score+1),

   /* 表示 */
   $gm_dprint(x,y , "#"),
   $gm_dprint(0 ,11 , stradd("SnakeGame--SCORE:",score)),
   $gm_disp,
   delay(1000/5 / (score / 100 + 1)),

   /* 更新 */
   if(rinput(^right)+rinput(^left)+rinput(^up)+rinput(^down),
    /* キー入力があった */
    seq(
     if(rinput(^right),seq(let(yv,0),let(xv,1))),
     if(rinput(^left),seq(let(yv,0),let(xv,-1))),
     if(rinput(^up),seq(let(xv,0),let(yv,-1))),
     if(rinput(^down),seq(let(xv,0),let(yv,1)))
    )
   ),
   let(x,x+xv),
   let(y,y+yv),

   /* 当たり判定 */
   if(not(eq($gm_getch(x,y)," ")),
    /* ぶつかった */
    loopend
   )
  )
 ),

 /* 爆発 */
 for(cnt , 1 , 15 , 1 , 
  $gm_line("*",x,y
   ,(rnd(70)+30)/100*if(gr(rnd(100),50) , 1 , -1)
   ,(rnd(70)+30)/100*if(gr(rnd(100),50) , 1 , -1)
   ,rnd(3)+3
  )
 ),

 /* ゲームオーバー */
 $gm_dprint(10 , 5 , "  GAME OVER  "),
 $gm_disp,

 /* 一時定義関数消去 */
 del($gm_disp),
 del($gm_dprint),
 del($gm_line),
 del($gm_getch),
 del($disptxt),

 /* スコアを値にする */
 score
)


linecalc28.jpg

左隅で爆発してます(笑)。

スコアが上がると速度が上がり操作が難しくなっていきます。
でも、パターンがあって結局角を曲がれるかどうかなんですが、、、

後はスロットや簡単なシューティングとか面白そうです。

ファーウェイのスマホがついに ARM のライセンスが使えなくなるようです。
昔の日本のように中国はアメリカに妥協すれば終わるんでしょうがしないですね。
他国も今まで潰されたりリストラされたり恨みもあり容赦ないです。
ARMのライセンスが使えなくてもやりようもあると思いますが、このままでは共産国専用スマホとなるのは間違いなさそうです。
これはいいのか悪いのか。
コンピューターテクノロジが石油のように政治的に取り上げられるようになるとは出世したなぁと思いますが。


コメント(0) 
共通テーマ:日記・雑感

今日の出来事 散髪とプログラム [アーリーリタイア]

こんばんは

今日も暑いです。

昨日は東京の方は凄い雨風で凄かったみたいです。
大阪は夜は凄かったですが朝はもう雨は無かったです。

月1の散髪に行こうと思って都心のQBハウスに行こうと思ったのですが、近場にある事を発見。

とりあえず、行ってみるかということで車で20kmぐらい離れてるんですが行ってきました。

普通に4人ぐらい散髪屋さんが居てて、ガラガラ。
こっちの方がいいかも。

ショッピングモール内に大きな本屋さんがあり座ってじっくり読めるのですが雑誌の最新刊を読んでました。
なぜか周りは宿題?をする学生ばかりでした。
量子コンピュータの概念やらなんやらの特集でしたが、はっきり言ってわかりませんでした。
もう少し詳しい解説本必要かなと思いましたが、とりあえずは今までのコンピュータとは領域はかぶらず超々並列計算が必要なアルゴリズムを解くのに必要または量子そのものの研究に使うという感じのようですが、今の1024ビットの暗号鍵ではもうダメな時代が来るかもしれず、Google も D-Wave という量子コンピュータのベンチャーから量子コンピュータを購入して研究しているそうです。暗号は量子コンピュータで解けない物の開発が必要ということですが、AI と並びできないことができるようになるので研究開発は進むと思いました。暗号関係なのでこちらの方も使われだすのは早いかもしれません。日本の研究者も最先端で活躍してるようでした。

100円のはちみつショウガカルピスが無いか探しましたがさすがになかったです。

今回都心で出なかったのは今月親連れて京都のお墓参りに行くかもしれずそのお金を浮かせるダメでもあります。

帰ってから少しプログラムの続きをしました。

linecalc27.jpg

為替等起動するたびに資産管理電卓で自動記録しているのですがグラフが C# の Chart を使ったので軸がまばらになったり色々するので正確な数値をツールチップで出るようにしました。
なぜかラベルを出さないとツールチップが出なかったり結構苦労しました、、、後日時表示も。

トランプさんが今度はロシアのパイプラインを阻止するといってるようです。
あちこちに喧嘩を売り続けるトランプさん。
もうこの人の後釜やれる人は居ないかもしれません。
中国は引けないのはわかりますけど、、、
予想が当たりキャリアがファーウェイのスマホの取り扱いをやめ始めてますね、、、
次の大統領になったら経済はどうなるんでしょうか。
いずれにせよ次の大統領の切り替わり目ぐらいが怖いですね、、、


コメント(0) 
共通テーマ:日記・雑感

今日の出来事 資産管理電卓でゲーム2 [アーリーリタイア]

こんばんは

今日は雨ばっかりでした。

雨が止んだすきに買い物行ってきました。
外に行かないと調子が悪いです。
納豆39円でゲット。

今日は雨なので一日プログラムやってました。
前作りかけの資産管理電卓上でのゲーム。

昔懐かし仮想画面を作ってカーソルの上下左右で動き回るところまで作ってました。

seq(
 /* 仮想画面(100*12)を作る */
 let(txt," "),
 for(cnt , 1 , 99 , 1 , let(txt,stradd(txt," "))),
 let(txt,stradd(txt,"
")),
 let($disptxt,txt),
 for(cnt , 1 , 12 , 1 , let($disptxt,stradd($disptxt,txt))),

 /* 
仮想画面に文字を表示する関数定義
@1: X(0始まり)
@2: Y(0始まり)
@3: 文字列
 */
 def(dprint,"
seq(
 let(x,@1), /* @変数は代入不能なのでコピー */
 let(y,@2), /* @変数は代入不能なのでコピー */
 if(lt(x,0),let(x,0)),
 if(gr(x,99),let(x,99)),
 if(lt(y,0),let(y,0)),
 if(gr(y,11),let(y,11)),
 let(stpos,(y+1)*102+x),/* 文字列挿入位置(''が文字0になるので最初の行は使わない) */
 let(edpos,stpos+strlen(@3)), /* 文字列後半位置 */
 let($disptxt,stradd(substr($disptxt,0 ,stpos),@3,substr($disptxt,edpos,102*12)))
)
"),

/* 画面表示関数定義 */
 def(disp,"print(substr($disptxt,102 ,102*12))"),

/* メインルーチン */
 while(1 , 
  seq(
   dprint(10 ,5 ,"push sps to start"),
   disp,
   delay(100),
   dprint(10 ,5 ,"                 "),
   disp,
   delay(100),
   if(rinput(^sps), loopend)
  )
 ),

 let(x,0),
 let(y,0),
 while(1 ,
  seq(
   /* 更新 */
   dprint(x,y , " "),
   if(rinput(^right),let(x,x+1)),
   if(rinput(^left),let(x,x-1)),
   if(rinput(^up),let(y,y-1)),
   if(rinput(^down),let(y,y+1)),

   if(lt(x,0),let(x,0)),
   if(gr(x,99),let(x,99)),
   if(lt(y,0),let(y,0)),
   if(gr(y,11),let(y,11)),

   /* 表示 */
   dprint(x,y , "*"),
   dprint(0 ,10 , stradd("pos:",x,",",y,"   ")),
   disp,
   delay(1000/60)
  )
 )
)

資産管理電卓は関数しか構文が無いので、一見見たことないようなプログラムに見えますが、全部関数なので書くの大変なだけで単純です。
関数 def を使ってローカル関数の定義なんかもできてしまいました。

linecalc26.jpg

スネークゲームは直ぐできそうです(笑)。

目の調子がまだ悪くてじっと見てると涙が出てきて瞼が痛くなるのでここらで切り上げました。

今日病院行こうかと思ったんですが、花粉症の影響がそろそろなくなる確認と朝起きたら症状が軽くなってるので地元の病院行くと噂になるし、長引くと医療費も大変なのでもうしばらく様子見ようと思います。

株が大変なのに資産生活してる身でそんなことでいいのかと言われそうですが、僕は配当で生活しているので配当は株価とは連動しておらず振り込まれる額は為替の影響分しかなくほとんど変わりません。
逆に赤字でも減配しなかったような会社を選んでるつもりです(というか選んだ銘柄がたまたまそうだった)。
株価はどうしようもなく、配当率が上がっていても投資資金もなくどうしようもないのです。

とはいうものの目も株価下落のストレスからかもしれず、ストレスを何とか発散させる方法を研究しないといけないと思っています(筋トレ?)




nice!(0)  コメント(0) 
共通テーマ:日記・雑感

今日の出来事 米中貿易戦争勃発と資産管理電卓でゲーム1 [アーリーリタイア]

こんばんは

今日は暑かったです。

目が調子悪いのであまり外は出歩かずに安静にしてた方がいいんですが、晴れてるのでまた自転車で外行ってしまいました。

シャンプーやら歯磨き粉やら連続で切れたので買い出しに行きました。

もう桜もなくて公園も緑で花が次々に咲いてきてます。
もうすぐ梅雨から本格的に夏です。

資産管理電卓(LineCalc)でリアルタイムキー入力を作ってみました。
なぜかというと作ってて往年のポケコンをどうしても思い出してしまい、ゲーム作れそうと感じたのでやってしまいました。

seq(
 let(x,1),
 while(1 ,
  seq(
   print(
    lpad("*",x)
   ),
   if(rinput(^right),let(x,x+1)),
   if(rinput(^left),let(x,x-1)),
   delay(1000/60)
  )
 )
)


上記でキーボードの左右キーで "*" が右左にリアルタイムで動きます(笑)

linecalc25.jpg

ありきたりだとスネークゲーム。
簡単なシューティングとかもできそうですが、昔知ってる人は知ってるポケコンの PB-100 というのがあって、あのキャラクタだけで作ったゲームが忘れられません。
パソコン買えずにソースコードが乗った本だけ買って脳内仮想でひたすらほしかった記憶があります。その後 PC-1501 というポケコンを買うのですが当時はとりあえず、欲しい、やりたい、という事だらけでした。今はマニュアルをほんとにボロボロになるまで使うという事もないでしょう。スマホなんかマニュアルなくてもみんな使えるぐらいコンピュータも一般化して、ゲームも高度になった感があります。
振り込みが遅くて株価も下がり自暴自棄になり遊んでいるのではないです。

配当は今日振り込みがあったのですが、ついに米中貿易戦争が勃発しそうです。
今後は株価と為替はどう動くかわかりませんが、良いようにもならない気もします。
とりあえず、換金は辞めています。
貿易戦争はキャピタルゲインで稼いでいる人にとっては朗報なのかもしれません、空売りとか相場の予想が立てやすくなりましたから。中国株は空売り対象になるでしょうね。ぼろもうけですね。
もうハイテク株などは利確している人が多数だと思います。
儲かってるでしょうね、、、うらやま。

nice!(0)  コメント(0) 
共通テーマ:日記・雑感