英語勉強計画 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エンジニアのキャリアを考える!

よく使うコマンドの使い方は以下が分かりやすかったです。

【Git】基本コマンド - Qiita

Licenseについて

リポジトリ作成時に Add a license: ボタンで指定ができます。

GPLを含む場合はGPLです。

一から作り始める場合やGPL含まないならMITがいいと思います。

自分の持っている特許が絡むならApatch2.0がいいと思います。

Githubの導入

背景

SVNやBitbucketをやめて、有名なGitHubを使っていきたいと思います。

GitHubは1リポジトリにつき3人まで無料であり、プライベートリポジトリも作成できます。今まで使っていたBitbucketにこだわる理由もありません。

(また、BitbucketはWebブラウザでの表示が遅いので、GitHubに乗り換えて解決すると嬉しい。遅いのが私の環境のせいだったらすみません。。。)

目的

今回の目的は以下に絞ります。

  • 一人でプロジェクト開始 (GitHubのユーザー登録から)
  • プライベートリポジトリを作成
  • Virtual BoxのUbuntu18.04上からGitを操作する

(GitHubの導入紹介サイトはたくさんあるため迷子になりがち)

Githubの導入

今回の目的に対しては、このサイトが一番分かりやすかったです。

このサイトの通りに進めていけばGitの導入はOKです。

ssh keygenの手順が丁寧であり、意味を理解しながら進めることができます。

employment.en-japan.com

注意1

ssh githubをするところで、

「PTY allocation request failed on channel 0」と出るので

ssh -T git@github.comとします。

注意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


  1. 番号付きリスト

  2. 番号付きリスト

  3. 番号付きリスト



以下は設定をいじりました。

<strong>foo</strong>で太字

<em>foo</em>で斜体

<b>foo</b>でピンクマーカー

<i>foo</i>でイエローマーカー

コード載せるとき

```で包みます。
```ruby
puts "hello"
```
といった感じです。

ブロック

ruby

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~~]

とするか、上のリンクボタンで挿入します。

Markdown参考サイト

www.manochang.com