odanny がんばる

//TODO: たまに何か書こう

2020年目標と達成するために

2020年 目標一覧

  • 自己管理
    • お金の出入りの把握
    • 週5時間運動する
  • 学習
    • Kaggle Expert を目指す
    • 応用情報の取得
  • この目標を忘れない

達成のための工夫案

お金の出入りの把握

毎日30分家計簿をつける時間をスケジュールに組み込む。

支払いはできるだけクレカかLinePayにして手間を減らす。

週5時間の運動

スケジュールに組み込む。

内容は週の初めに決めておき、当日はこなすだけにする。

Kaggle Expert を目指す

3月までに「Kaggleで勝つデータ分析の技術」に目を通す。

順位や精度は指標にしない。費やす時間を週単位で管理する。

応用情報の取得

朝起きる練習をする(最重要)

この目標を忘れない

スプレッドシートを利用、slackで毎週リマインドするなど。

報酬で釣る。

ほしいものができたら、その欲求で頑張る。

今年も一年がんばろう

JavaからGitBashを実行したい

できた

ただし事前にC:\\program file\\git環境変数に追加しておく.(git-bash.exe と簡単に記述するため).MacLinuxの場合は `cmd ではなくて,対応するやつを使う.

private void openGitBash(String projectName) {
        try {
            // windows only
            ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "start", "git-bash.exe");
            pb.directory(new File(".\\" + projectName));
            Process process = pb.start();
            int ret = process.waitFor(); 
            System.out.println(ret);
       } catch (IOException exception) {
            exception.printStackTrace();
       } catch (InterruptedException exception) {
            exception.printStackTrace();
       }
    }

pb.directoryで実行するディレクトリを指定できるのと,pb.start() の例外処理をきちんとするのがポイント.

調べると,processBuilderではなく,Runtime を使用している記事も見かけるが,最近のJavaではprocessBuilderが良いようだ(Rntime も内部的に processBuilder になっているみたい)

茜ちゃんタイマーの野望

これまで

Python version

機能としては

  • タイマーのスタート,リセット(一時停できない)
  • 15分ごとに応援してくれる

ようになっていた.何分経過したか教えてくれるのと,30分経つと休憩を促してくれるので常に起動してる.

これは Python3 で書いてた.使ってたゲームエンジン pyxel のウィンドウサイズの限界が500x500であることと,将来的にタスクバーに常駐させたかったので,Javaに書き換えることにした.

Java version

単に移植するだけでは面白くないので,機能を追加することにした.

今のところ Python 版の機能に加えて

  • リポジトリgit status -s の行数を表示
  • 今何してるか表示

できるようになった.

これからの予定

これから実装したい内容は

  • リポジトリに簡単に飛べるようにするボタン
  • 作業時間と作業内容を記録して可視化
  • remote との差分(これ結構知りたい)
  • しゃべる内容を増やす(生成モデルわんちゃん?)
  • todo の表示
  • 起動,シャットダウン時のよくする作業の自動化

など.

とりあえず自分が便利に使えるようにぼちぼちやっていきたい.

アレシボメッセージ調べた

メモ帳に「アレシボメッセージしゅごい」と書いてあった

気になったので調べた(メモした当時の記憶がない…) en.wikipedia.org

概要

f:id:odanny:20191206134819p:plain
わかりやすい全体像(実際は二進数)

アレシボ・メッセージ(Arecibo message)は、1974年にアメリカ・プエルトリコにあるアレシボ電波望遠鏡の改装記念式典において宇宙に送信された電波によるメッセージである。このメッセージは地球から約25,000光年の距離にあるヘルクレス座球状星団 M13 に向けて送信された。太陽系外の天体をターゲットとしたものとしては電波によるMETI(Messaging to Extra-Terrestrial Intelligence)、すなわちActive SETI(能動的な地球外知的生命体探査)の最初の例である。(Wikipedia より)

ここには以下のようなメッセージを詰め込んだ(図の上からおおよそ色も対応させた)

  • 1~10 までの数字
  • DNAを形作る水素,炭素,窒素などの原子番号
  • DNAに含まれるヌクレオチドの数
  • DNAの二重らせん構造の図 - 人の絵平均身長
  • 地球の人口
  • 我々のいる太陽系の絵
  • アレシボ電波望遠鏡の絵パラボラアンテナの直系

全体で二進数1679けたで,210byteある.1679桁というのがポイントで,これはふたつの素数23, 73 の積なので,四角形に並べるにはこの二通りとなる.縦横逆に並べてしまった場合は意味をなさないので,受信し解読しようとする知性があれば解読できるだろうという意図のようだ.

英語版のWikipedia に詳細が書いてある.おもしろかった.

乾燥

読んでるときにこの本思いだした.

bookmeter.com

空間的にも時間的にも知的生命体がいる確率はかなり低いといわれている.地球の歴史のうち人類が生きている時代の短さを考えてみても,宇宙の広さに対して我々が移動できる空間の狭さを考えてみても,交流できるほどの近さに二つの文明ができるのはほとんどない(生命がいても微生物みたいなものだろうとか言われたりしてる)

遠いどこかでこの電波を受信してるタコ星人をイメージしたら楽しくなった.宇宙人にあってみたい!!

30日ではできないOS自作入門を借りた

勢いで借りた!!!

先駆者を調べると,毎日進捗書くといいながらも数日で挫折している人が結構いる.

モチベのために最後までやり切った人の記事をまとめとく.少しづつやっていきたい.

qiita.com ↑毎日書いてやり切った人!slackに記事が来るように設定しとこ.

bttb.s1.valueserver.jp ↑サラリーマンでやりきるのはまじで強い

blog.haramishio.xyz ↑一日2,3時間できっちり一か月でやり切った超人

vanya.jp.net ↑つよそう

今の状態

目指す姿(数か月後)

  • アセンブラやっぱりわからん
  • C言語やっぱりわからん
  • 本や記事見ても見たことあるがわからない言葉だらけ

ファミコンエミュレータ作りたい(調査)

ファミコンエミュレータ作るのすごいなあぁぁぁ!!!

が,知識がまったくない.CPUの命令の実装とかよくわからん.いつかの自分のためにリンクをまとめとく.

調べたもの

kamiyaowl.github.io rust (さっきの人)

yuiki.hatenablog.jp Kotlin

blog.bokuweb.me Javascript

qiita.com Javascriptの方のまとめ

sairoutine.hatenablog.com 別の方のjs実装

github.com java実装

pgate1.at-ninja.jp FPGA実装

nesdev.com ここにすべてがあるらしい

hp.vector.co.jp テスト用のROMなど

gikofami.fc2web.com ファミコンプログラミングのこと

medium.com 雰囲気がわかる

yizhang82.dev 概要と進め方

方針

記事によると

  1. CPUから始める
  2. NES ROMのサポートを追加
  3. PPUを実装
  4. スクロールのない簡単なゲームに挑戦(Donkey Kong/Popeye/balloon fight)
  5. スクロールの追加
  6. Yスクロールのあるゲームに挑戦(Ice Climer)
  7. スーパーマリオに挑戦
  8. APUサポートを追加
  9. mapoer を追加
  10. エミュレートがtricky なゲーム
  11. 機能拡充(デバッガ,セーブ/ロード,チートetc)

多くの人が7. スーパーマリオに挑戦をゴールにおいてるみたいなので,ここを目指そう.

うまく行かないとき

絶対詰まりまくって死ぬので…

  • ログを使う.
  • デバッガサポートのある既成のエミュレータと比較する.
  • 時間があれば,自分でデバッガを作る

www.mesen.ca

最後に

いつかやろう(いつやるんだろう…)