英語勉強計画 2020/05/06
概要
上達のために必要な要素
- 能力にあった手法・教材
- 計画(目標とスケジュール)
- 継続
- 成長の可視化 (今の実力の計測・計測頻度)
「能力にあった教材」を選び、
なにを・いつまでに・どうやって、を明確にした「計画」を立て、
それが「継続」できそうかを判断する。
実行中は「成長の可視化」でモチベーション維持と成功基準への進捗を確認する。
ルール
モチベーション維持・成長持続のために以下を守る。
手法 :難しいリスニングや、ビジネス表現は1年間は手を出さない
継続 :1日1時間を必ず守る
成長の可視化 :TOEICテスト、ネイティブスピーカーの聞き取り、難しいことでの計測はしない。満足できる計測をする
計画 :目標・期限・実施策(なにを・いつまでに・どうやって)を明記する
能力にあった手法・教材
目的 (優先度準)
- スラスラ話せるようになりたい (スピーキング)
- 英語を読む時間を早くしたい (リーディング)
- リスニング能力を高めたい
自己分析
スピーキングもリーディングも覚えている単語数が少ないと感じる。
文法の応用が聞かない。文法を例文通りにしか使えない。使い方の幅を増やして、よく使う文法を増やしたい。
英語に読み慣れていない。
施策
これまで継続できなかったのが一番の問題なので、継続しやすくするために低いハードルにすることを最優先とする。
英単語:中学内容から復習する
文法 :一つの文法書を選んでそれをずっとやる
英会話:まず話すことに慣れる。普段から英会話のシミュレーションをする癖をつける
手法・教材
Input:英単語帳(まずは中学)、文法書
Output:オンライン英会話
英会話:予習
- topicを決める。明確にする
- simlationしておく
- new phraseを使うことを決心する
英会話:復習
何ができていなかったかを書く
何が言えなかったかを書く
継続
朝:+x分
夜:1時間
Excelに日記を記録し、何日やっているか、何時間やっているかを記録する。
今月でどこまでいけるか、スケジュールしておく。
今週何をするかを土日でスケジュールしておく。
今月に対して遅れ、進みを把握する。
成長の可視化
意図
積み立ててきた頑張りの量を見てモチベーション維持につなげたい。
今後のスケジュール・計画にフィードバックしたい。
計測できる項目
- 時間
- ページ数
- 単語数
- 文法数
計測方法
- 数値計測(1か月で新しい表現を〇個覚えたなど)
- 会話の途切れる数を数える
※ うまく使えることが重要のため、数値だけではいけないと考えた。
スピーキング判断ポイント
以下のフリートークのうち1つ選び、英語で言えなかった数を数える。
- 自己紹介
- 趣味の話
- 家族の話
- 今日のできごと
- 最近のニュース
- 他の国の話
計画
単語
1~30日で1000語
31~60日で+1400語
60~120日で+2600語
文法
1~30日でPart1~5を5周する
31~60日でPart6~13を5周する
61~90日でPart14~18
英会話
2日に1回 DMM英会話を行う。
1~60日までは英会話に慣れるためにDMMのテキストを使う。
英会話をしない日は予習を行う。
何を・いつまでに・どうやって
- 1000単語暗記を、30日までに、『中学校3年間の英単語が1000語覚えられる本』で決められた200単語1セットの暗記をすることで達成する
- 文法基礎の習得(主語~比較表現まで)を、30日までに、『一億人の英文法』を5サイクル読み込んで達成する
- 英会話表現を増やすために、30日までに、2日に1回DMM英会話を行う
その他メモ
参考サイト
https://www.pafricanmango.com/2019/11/12/dmmeikaiwa-kyouzai-syoshinnsya/
https://dokugaku.fun/dmm-eikaiwa-effect/
実行:予習
- topicを決める。明確にする
- simlationしておく
- new phraseを使うことを決心する
実行:復習
何ができていなかったかを書く
何が言えなかったかを書く
時間
1000時間必要らしい
1日1時間で3年。。。
予習
- topicを決める。明確にする
- simlationしておく
- new phraseを使うことを決心する
ODSC(目的・成果物・成功基準)
目標・期限・実施策(なにを・いつまでに・どうやって)
+かける時間・時間帯の把握
EOF
Verilatorのメリット・デメリット
無料のRTL SImulatorを探して、Verilatorに行きつきました。 なぜ選んだかを説明します。 これから使い方を書いていきたいですが、まずはメリット・デメリットをまとめました。
前提条件 (RTL Simに求めること)
- Virtual Box上のUbuntuまたはWSLからターミナルで実行したい
- 無料で使いたい
- 波形ファイルを出力したい
- VCSやNC Verilogに似た使い勝手がいい
- System Verilogに対応していてほしい
候補
ツール名 | メリット | デメリット |
---|---|---|
VCS | 高速 | 有料(個人で買えない) |
NCVerilog | 高速 | 有料(個人で買えない) |
Quartus(ModelSim) | WSLから実行できる | シミュレーションが遅い。VirtualBoxから実行できない? |
Icarus Verilog | 高速 | System Verilogのalways_ff記述などが書けない |
Verilogger Pro | ? | 有料。情報が少ない |
Veritak | 安い | 有料。情報が少ない |
Verilator | 高速 | 勉強が必要。詳細は下記 |
前提条件からQuartus(ModelSim)かVerilatorに絞り、 せっかくなのでRISC-Vと関わりのあるVerilatorを選びました。
Verilator デメリット詳細
RTLは合成記述しか書けない
例えばDelayが書けません。そのため、テストベンチのClockはC++またはSystemCで書く必要があります。 これがiverilogやvcsやncverilogと大きく違うところだと思います。
情報が少ない
日本語の情報は少ないうえに古く、最近のバージョンでの使い方が出てきません。
icarus verilogが一般的な無料のRTLシミュレータであり情報が多いです。System Verilog記述を使わないのであればicarus verilogを使った方がいいと思います。Versionで仕様が結構違う
過去のバージョン(10年前くらい)で使えたオプションやsystem Cのテストベンチ記述が、新しいバージョンでは使えなかったりするみたいです。(自分ができなかっただけのため、あまり確かな情報ではないですが)
バージョン違いのエラーと戦わないといけない可能性があります。
所感
とはいえ少し触ってみた感じではシミュレーションが高速でした。
System Cは流行っていない感じがあるので、C++のテストベンチを勉強したいと思いました。
Open SourceのRISC-V Coreのテスト環境として、テストベンチがCoreに同梱されていることもあるので、それを見て勉強していきます。
そして、今後ModelSimと比較していきたいと思います。
SCR1 make run_verilator (うまく動くバージョンメモ)
Verilatorはバージョンによって挙動が違います。(仕様修正 or バグ)
RISC-VのSCR1コアをverilatorで動かすのに苦労したので、忘れないようにメモしておきます。
環境
Vertual Box上のUbuntu (ubuntu-ja-18.04.3)
gcc
Syntacore社が用意したものを使いました。
http://syntacore.com/page/products/sw-tools
※riscv-gnu-toolchainのgithub最新版(v9.2.0)だとcomplianceテストが8個failします。。。
(failの例: ---Test: compliance_I-LHU-01.hex)
verilator
$ git clone https://github.com/verilator/verilator.git -b v4.018
※github最新版(v4.031)だとrtl sim中にadd.hexがどうとかいうエラーが出てうまくいきません。。。(ダメな記述がscr1_top_tb_ahb.svにある)
仕方ないのでバージョンを下げるとv4.018では動きました。
その他
riscv-tests、riscv-compliance、coremarkのインストールはdoc/scr1_um.pdfの「5. Simulation environment」の通り進めます。
dhrystoneは最初から入れてくれています。
確認の流れ
「5. Simulation environment」の通りに進めていきます。
つまり、上記の環境を用意し、scr1階層へ移動し
make run_verilator
を実行します。
これでscr1/Makefileのtestsに含むものをコンパイル&RTL Simできます。
ただし、helloで以下のエラーが出てきました。解決方法も以下に記載しました。
helloのコンパイルエラー
helloのコンパイル時に以下のエラーが出ます。
libmpfr.so.4: cannot open shared object file: No such file or directory
解決方法
linux - cannot open libmpfr.so.4 after update on ubuntu 18.04 - Stack Overflow
ここにあるように、以下のリンクを作って解決しました。
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
make run_verilator
を実行し、コンパイル&RTL Simが流れて以下が出ればOKです。
#-------------------------------------- # Summary: 188/188 tests passed #--------------------------------------
余談 (syntacore社が用意したgccの置き場)
私は以下のように起きました。(risc-v gccディレクトリを作り、そこへ入れてパスを通しました。)
mkdir ~/rvgcc && cd $_ cp ~/sc-riscv64-unknown-elf-gcc-20180126-linux64.tar.gz . tar zxvf sc-riscv64-unknown-elf-gcc-20180126-linux64.tar.gz echo PATH=~/rvgcc/sc-riscv64-unknown-elf-gcc-20180126-linux64/bin:$PATH
また、
https://github.com/riscv/riscv-gnu-toolchain
からgit cloneして
./configure --prefix=/opt/riscv --enable-multilib
するのが正しいと思いましたが、これもエラーが出て動きませんでした。
まとめ
以下の組み合わせで、SCR1をVerilatorでシミュレーションできます。
- SCR1:
Latest commit ec6abce on 28 Jan (ec6abced26e699e7bc53d64c78e5857b9328175c) - riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (GCC) 7.1.1 20170509 - verilator --version
Verilator 4.018 2019-08-29 rev UNKNOWN_REV
(余談) 次回、Verilatorについて思ったことを書きます。
Gitのおさらい
目的
勉強したことを忘れないようにまとめ直しました。
おさらい
GitHubでリポジトリ作成 git clone git@github.com:take-yU54/00_settings git branch develop git checkout develop # ~~ ここから開発スタート ~~ git add foo # fooディレクトリ以下すべてaddされる) git commit -m "comment" # (-a:すべて, -v:変更点表示) # ~~ ここからリモートリポジトリへpush ~~ git push origin develop # リモートリポジトリへpush git pull # リモートリポジトリと同期
ターミナルでmergeする方法
git checkout master
git merge develop # 差分をマージ
git push origin master
外部のリポジトリを自分のリポジトリのサブディレクトリとして登録する方法
## 自分の任意のリポジトリ内でaddする git submodule add https://github.com/foo/bar.git bar ## submoduleを最新にアップデートする git submodule update --init --recursive
参考サイト
一番最初はここを見ました。
今日からはじめるGitHub 〜 初心者がGitをインストールして、プルリクできるようになるまでを解説 - エンジニアHub|若手Webエンジニアのキャリアを考える!
よく使うコマンドの使い方は以下が分かりやすかったです。
Licenseについて
リポジトリ作成時に Add a license:
ボタンで指定ができます。
一から作り始める場合やGPL含まないならMITがいいと思います。
自分の持っている特許が絡むならApatch2.0がいいと思います。
Githubの導入
背景
SVNやBitbucketをやめて、有名なGitHubを使っていきたいと思います。
GitHubは1リポジトリにつき3人まで無料であり、プライベートリポジトリも作成できます。今まで使っていたBitbucketにこだわる理由もありません。
(また、BitbucketはWebブラウザでの表示が遅いので、GitHubに乗り換えて解決すると嬉しい。遅いのが私の環境のせいだったらすみません。。。)
目的
今回の目的は以下に絞ります。
(GitHubの導入紹介サイトはたくさんあるため迷子になりがち)
Githubの導入
今回の目的に対しては、このサイトが一番分かりやすかったです。
このサイトの通りに進めていけばGitの導入はOKです。
ssh keygenの手順が丁寧であり、意味を理解しながら進めることができます。
注意1
「PTY allocation request failed on channel 0」と出るので
注意2
Warning: Permanently added the RSA host key for IP address '104.192.143.1' to the list of known hosts.
といったwarningが出るのは
ssh-keygen -R 104.192.143.1
で解消されるらしいです。 (IPアドレスは適宜修正)
alias
git と毎回打つのはめんどくさいのでaliasを作成します。
まず.zshenvでalias g="git"とします。
次にgitで使うコマンドのaliasを作成します。
~/.gitconfig
を作成し以下を記載します。(既にある場合は上書きで以下を追記)
[alias] st = status co = checkout ls = ls-files br = branch # いい感じのグラフでログを表示 graph = log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s' gr = log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s' ci = commit # Untracked filesを表示せず,not stagedと,stagedだけの状態を出力する stt = status -uno # 行ごとの差分じゃなくて,単語レベルでの差分を色付きで表示する difff = diff --word-diff # ファイル名のみの差分を表示する difff = diff --name-only# staged diff diffs = diff --cached dp = diff --no-prefix dsp = diff --cached --no-prefix
とします。
上記はユーザーごとに設定する場合です。プロジェクトごとやリポジトリごとでも設定できるみたいです。
これでGit環境は完成です。
test
目的
はてなブログの書き方を練習します。
Textileに慣れていますが、Markdownにも慣れたいのでMarkdownで書いてみようと思います。
テスト (#1つ)
#2つ
#3つ
#4つ
文字サイズ150%
**で囲むと太字にできます。
<br>で改行します。
取り消し線
太字
イタリック
下線
下線太字赤色
引用
>で引用を書けます。
引用
文字色
<\font color="Red">akairo<\/font>のように指定。
akairo
orange
blue
表
|header1|header2|header3|
|:---|---:|:---:|
|align left|align right|align center|
|a|b|c|
header1 | header2 | header3 |
---|---|---|
align left | align right | align center |
a | b | c |
- リスト1
- リスト2
番号付きリスト
番号付きリスト
番号付きリスト
以下は設定をいじりました。
<strong>foo</strong>で太字
<em>foo</em>で斜体
<b>foo</b>でピンクマーカー
<i>foo</i>でイエローマーカー
コード載せるとき
```で包みます。
```ruby
puts "hello"
```
といった感じです。
ブロック
puts "hello"
elisp
(defun copy-word-at-point () (interactive) (let ((char (char-to-string (char-after (point))))) (cond ((string= " " char) (delete-horizontal-space)) (t (forward-char) (backward-sexp) (mark-sexp 1) (kill-ring-save (region-beginning) (region-end) t))))) (global-set-key "\C-t" 'copy-word-at-point)
System Verilog
System Verilogには対応してくれていないみたいなので、verilogで指定する。。。
always_ff @(posedge CLK or negedge RST_X) begin if (~RST_X) DOUT <= P_DTBW'(P_ASV); else DOUT <= DIN; end
インライン
puts "hello"
`一つで包む場合はインラインで表示できます。
参考
[Markdown参考サイト][http~~]
とするか、上のリンクボタンで挿入します。