今日勉強したコンテンツ紹介  2019/1/7

今日参考になった動画コンテンツをご紹介します。

最近はc言語の学習を集中的にやっています。

c言語の学習や今後の様々な学びにおいて、非常にためになることを迫さんはこの動画でおっしゃっていました。

皆様も是非御覧ください。

 

要約:

  1. 変なプライドを捨て去ること。人からどう思われてもいいくらいに考える。
  2. 初心者時は人の真似から始めて徐々に慣れていくこと。我流に走るな。
  3. 完璧を目指そうとしないこと。
  4. 恥ずかしいという感情を捨てること。
  5. 自己投資には積極的になること。貯金は自己投資で余ったらするくらいの気持ちで。

  特に1,3,4は自分に当てはまる内容でした。

 


捨てることで成長速度が爆上がりした5つのもの

 

 

今日勉強したコンテンツ紹介 2019/01/04

普段から迫佑樹さんyoutube動画などで日々勉強しています。

アウトプットも兼ねて今日勉強した動画を載せておきます。

 

 

①人生を圧倒的に有利に進める『4つの資産』とは?


人生を圧倒的に有利に進める『4つの資産』とは?

 

人生を圧倒的に有利に進める4つに資産
知識資産→勉強など
情報資産→ブログ記事、ツイッターなど
人脈資産→知識資産や情報資産がある前提で、人に凄いと思われる(この人と付き合ったら自分が得しそうと思われる)と自然と人脈が出来てくる。作ろうと思って作るものではない。
金融資産→株や不動産。時間がかかる。

この4つの資産を意識して自分の中に資産をどんどん残していきたいです。

 

 

②【好きなことで稼ぐ】お金を払って楽しむか、お金をもらって楽しむか


【好きなことで稼ぐ】お金を払って楽しむか、お金をもらって楽しむか

 

お金を貰って楽しむなら「何かを生産する側になれ!」というインパクトのあるお言葉を頂きました。

自分が楽しいと思っていることに関する生産活動をすると楽しいはずで、
それが仕事にならないかもしれないが発信力を持つ事は大事ということです。

つまり、自分の好きなことをうまいこと発信・生産すると良いそうです。
結果的に上手くいけば、好きなことでお金を貰いながら楽しむ事が出来るということです。

好きなことでお金を稼ぐ迫さんオリジナルのループ

  1. 好きなことをとことんやってみる
  2. 発信する
  3. 教えてみる
  4. 稼ぐ

稼ぐとまではいかなくても、まずは自分が今好きなことをとことんやってみようと思いました。

 

c言語学習2019/1/4

 
苦しんで覚えるc言語から一部引用しています。
 

 

苦しんで覚えるC言語

苦しんで覚えるC言語

 

 

気づきやメモ
 
15章
改めて学んだこと
  • メモリ上の番号を表示する方法
  • ポインタという単語
  • ポインタの役割
  • 他言語のポインタ
 
 
 
 
 
  • メモリ上の番号を表示する方法
 
実は、変数につけられた番号は、プログラムで調べることが出来るのです。
 
番号を調べるのは意外に簡単で、printf関数で%p指定子を使うだけです。
ただし、変数名の前には、&をつける必要があります
次のプログラムは、int型変数iの番号を表示する例です。

#include
 
int main(void){
int i;
printf("%p\n",&i);
return 0;
}
このプログラムの実行結果は、次のようになるかもしれません。

0012FF80
これは筆者の環境で実行した結果ですが、結果の数字は、
パソコンや使用するコンパイラによって異なります。
指定された変数をどの番号のメモリに割り当てるのかは、
コンパイラ(正確にはリンカ)が自動的に決めてしまい、
更にその値もOSの仮想メモリ機能によって変化するからです。
 
 
  • ポインタという単語
1つ目は、ポインタ型です。
今まで出てきたint型やdouble型と同じような型です。
ただし、ポインタ型の場合、それらとは少し異なる特徴があります。
 
2つ目は、ポインタ値です。
これは、ポインタ型で扱える数値、要するにアドレスのことです。
整数や実数といった数値の区別と同様に、ポインタ値という区別があるのです。
 
3つ目は、ポインタ変数です。
これは、ポインタ型で宣言された、ポインタ値を記憶出来る変数のことです。
int型の変数やdouble型の変数と基本的には同じことです。
 
 
①ポインタ型
ポインタ型は、要するにアドレスを記憶する変数の型
他の型とポインタ型を合体させて作ります。
例: int型とポインタ型を合体させると、intへのポインタ型という型が出来ます。
double型の場合なら、doubleへのポインタ型が作り出されます。
また、intへのポインタ型に更にポインタ型を合体させて、
intへのポインタのポインタ型という、多重のポインタ型を作ることすら出来ます。
合体させる理由:
指定アドレスに記憶された数値を取り出すため
ポインタ型は、どんな型の変数のアドレスだったかわかる必要があります。
そこで、あらかじめ他の変数と合体した形でポインタ型として作っておけば、
そのポインタ型の変数に記憶された数値は、合体されている型であるとすぐわかります。
 
②ポインタ値
変数のアドレスの値
 
疑問: アドレスが単なる整数値であるなら、int型に記憶すれば事足りるはずなのに、何故、わざわざポインタ値などという新しい数値として扱う必要があるのでしょうか?
解答:ポインタ地と整数値ではその意味が違い、目的が全く別である。
通常の整数値は、プログラムの中で計算などを行うための数値ですが、
ポインタ値は、計算に使われる数値ではない。
結論:int型の変数で両方を扱っても、何のメリットもありません。むしろ、変数に記憶される数値が整数値なのかポインタ値なのかわかりにくくなります。であれば、いっそのこと、2つを別々の数値とした方がよほど便利になります。
 
 
③ポインタ変数
ポインタ型で宣言された実際の変数のこと。 この変数には、その元となった型の変数のアドレスを自由に代入できます。更に、記憶しているアドレスのメモリを読んだり書き換えたりすることが出来ます。
ポインタ変数の役目:
それが指し示しているアドレス番号のメモリの値を計算することです。
ポインタ変数そのものを計算に使うのではなく、それが指し示している変数を計算するのが、ポインタ変数の目的です。言い換えると、普段はポインタ変数として振る舞っているのですが、
指し示している変数の計算が必要な時には、普通の変数に変身する必要があるのです。
 
2つのモード:
ポインタ変数モードでは、たいした機能は備えていません。
具体的には、アドレスへの代入と足し算引き算だけしかありません。
何故なら、ポインタ変数モードに必要なのはアドレスの記憶だけだからです。
アドレスさえ記憶していれば、後は特に何もする必要がありません。
 
通常変数モードに切り替わった場合、その性質は通常変数と全く同じになります。
おかげで、通常の変数と同様に様々な演算子を使って計算することが出来ます。
当然、その時に使われるメモリは、ポインタ変数モードで記憶したアドレスになります。
 
 
 
 
  • ポインタの役割
疑問点: ポインタとは何の役に立つ機能なのか????
 
解答: ポインタの本当の使い方は、ショートカットとして使用することです。
Windowsのデスクトップに並んでいる、あのショートカットと同じです。
 
ショートカットは、どこか別の場所にあるファイルを指し示すファイルです。
ショートカットを開けば、その指し示しているファイルが開かれます。
にも関わらず、ショートカットは指し示すファイル自体ではないので、
ショートカットはどこにでも自由に作ることが出来ますし、
複数個作ったり削除したりしても、指し示すファイルには何の影響もありません。
 
これこそが、まさにポインタの役割そのものです。
ポインタ変数に、実際に存在する変数のアドレスを記憶しておけば、
そのポインタ変数が使える場所であれば、元の変数が使えない場所(→それぞれどこですか???)であっても、
ポインタ変数を通常変数モードに切り替えれば、元の変数と同じく使うことが出来ます。
まさに、ショートカットのような働きをさせることが出来るわけです。
 
 
 
 
 
  • 他言語のポインタ
他言語のポインタ

一般には、ポインタはC言語C++のみの機能だと言われています。 確かに、指定したメモリのアドレスを操作するという意味ではその通りです。 しかし、ポインタの本当の使い方はショートカットとして使うことであり、 その観点ならば、実用的なほとんどの言語にポインタがありますJavaの参照はまさしくそんな機能で、しかも頻繁に使われますし、 VisualBasicのSETステートメントなども同様と言って良いでしょう。 そもそも、ポインタがないのでは、連結リストや木構造などの、 複雑なデータ構造を実現出来ませんし、オブジェクト指向も困難です。 その意味では、仕組みが不明なJavaVisualBasicのポインタより、 仕組みがはっきりしているC言語のポインタの方が理解しやすいです。 他の言語の参照と、C言語のポインタの最大の違いは、自動なのか手動なのか、です。 他の言語の参照は、ほとんど自動でショートカットとして機能するようになっていますが、 C言語のポインタは、完全に手動であり、プログラマーが完全に理解して使わなければなりません。 そのかわり、上級者がC言語のポインタを使いこなすと、ポインタだけで、 ほぼあらゆる制御構造、あらゆるデータ構造、を実現可能な強力すぎる機能となります。 実際、C言語の様々な機能って、ほとんどポインタで成り立ってるといっても過言ではありませんし
 
 
 
 
 
 
 
 
 
 
 
 
 
15章の後半で学んだこと
  • ポインタ型の引数
  • 配列型の引数
①ポインタ型の引数
void func(int *pvalue);
int main(void)
{
int value = 10;
printf("&value=%p\n",&value);
func(&value);
printf("value=%d\n",value);
return 0;
}
void func(int *pvalue)
{
printf("pvalue=%p\n",pvalue);
*pvalue = 100;
return;
}
②配列型の引数
double getaverage(double data[10]);
int main(void)
{
double average,array[10] = { 1,2,3,4,5,6,7,8,9,10 };
average = getaverage(array);
printf("%f\n",average);
return 0;
}
double getaverage(double data[10])
{
int i;
double sum = 0;
for (i = 0; i < 10; i++)
{
sum += data[i];
}
return sum / 10;
}
double getaverage(double data[10]);
int main(void)
{
double average, array[5] = { 1,2,3,4,5 };
average = getaverage(array);
printf("%f\n", average);
return 0;
}
double getaverage(double data[10])
{
int i;
double sum = 0;
for (i = 0; i < 10; i++)
{
sum += data[i];
}
return sum / 10;
}
おかしな結果となった
引数の型は10要素になっているにもかかわらず、5個しか要素のない配列が渡せる。
その結果、関数側では強引に10個の要素を処理してしまい、おかしな結果となっています.
→要素数は無視されたという結果となった
double getaverage(double data[10]);
int main(void)
{
double average, array[10] = { 1,2,3,4,5,6,7,8,9,10 };
average = getaverage(array);
printf("%f\n", average);
printf("%f\n",array[3]);
return 0;
}
double getaverage(double data[10])
{
int i;
double sum = 0;
for (i = 0; i < 10; i++)
{
sum += data[i];
}
data[3] = 12;
return sum / 10;
}
→呼び出された関数の中で引数の値を変更すると、呼び出し元の引数の値を変更できた。
double getaverage(double data);
int main(void)
{
double average, array[10] = { 1,2,3,4,5,6,7,8,9,10 };
average = getaverage(array);
printf("%f\n", average);
printf("%f\n",array[3]);
return 0;
}
double getaverage(double data)
{
int i;
double sum = 0;
for (i = 0; i < 10; i++)
{
sum += data[i];
}
data[3] = 12;
return sum / 10;
}
→配列の宣言時に要素数を書かなくても実行された
→要素数は無視されている
素数を書かない状態でも、呼び出し元の引数(array[3])の値を変更することが出来た
→ポインタ型の引数を使った時と似ているのでは???
少し実験をする↓↓↓
double getaverage(double *data);
int main(void)
{
double average, array[10] = { 1,2,3,4,5,6,7,8,9,10 };
average = getaverage(array);
printf("%f\n", average);
printf("%f\n", array[3]);
return 0;
}
double getaverage(double *data)
{
int i;
double sum = 0;
for (i = 0; i < 10; i++)
{
sum += data[i];
}
data[3] = 12;
return sum / 10;
}
問題なく実行され1つ上のプログラムと同じ結果を得た
→配列要素をコピーして関数に渡していたのではない
→→配列の先頭のアドレスを渡していたことになる
つまり配列の先頭アドレスを渡すだけなら、要素数は関係ないので、上記のように関数宣言時に要素数が無視されることになる。
まとめると、下の①②③は同じ意味の仮引数宣言になる。
①int getaverage(int data[10]);
②int getaverage(int data)
③int getaverage(int *data);
ただし、この3つが同じ意味になるのは関数の仮引数宣言の場合のみ。
おかしなところはないだろうか??上記のプログラムをもう一度見てみる。
double getaverage(double *data);
int main(void)
{
double average, array[10] = { 1,2,3,4,5,6,7,8,9,10 };
average = getaverage(array);
printf("%f\n", average);
printf("%f\n", array[3]);
return 0;
}
double getaverage(double *data)
{
int i;
double sum = 0;
for (i = 0; i < 10; i++)
{
sum += data[i];//dataはポインタ変数なのに配列として要素を指定して計算している
}
data[3] = 12;
return sum / 10;
}
苦Cより説明すると↓↓
「数式の中に配列名を記述した場合、の記号の有無にかかわらず、
配列名は、配列の先頭要素へのアドレス(ポインタ値)として扱われます。
そして、その配列名にをつけた場合、そのアドレスに番号の値だけ足し算を行い、
その結果として、足し算された分の番号の要素として扱われているのです。」ということ。
→「ポインタ変数」を「配列」のように使うことが出来る
ポインタ変数を配列のように使用するプログラムを作ってみる
int main(void)
{
int *data;
int i, average = 0, array[10] = { 1,2,3,4,5,6,7,8,9,10 };
data = array;//ポインタ変数に配列を代入する
for (i = 0; i < 10; i++)
{
average += data[i];//ポインタ変数を配列のように使っている
}
printf("%d\n",average/10);
return 0;
}
→ポインタ変数に配列を代入すると、ポインタ変数を配列のように使うことが出来る=演算子で要素番号の指定が出来るという意味
→動的メモリ確保をする時に必要になるプログラム
普段は使わない
[]演算子で要素番号の指定する以外にも他の方法がある
実はポインタ変数用の書き方がある
int main(void)
{
int *data;
int i, average = 0, array[10] = { 1,2,3,4,5,6,7,8,9,10 };
data = array;//ポインタ変数に配列を代入する
for (i = 0; i < 10; i++)
{
average += *(data+i);//ポインタ演算!!(他の方法)
}
printf("%d\n", average / 10);
return 0;
}
こんな書き方もある
int main(void)
{
int *data;
int average = 0, array[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (data = array; data!= &array[10]; data++/*++ポインタ演算は高速な処理が出来る*/)
{
average += *data;
}
printf("%d\n", average / 10);
return 0;
}
組み込み系の話
ほとんどのパソコン向けのコンパイラは適切な最適化を行ってくれます。
さらに、パソコン用のCPUは内部のキャッシュの仕組みが複雑かつ高性能であり、
繰り返し処理をCPUが独自に最適化して、速度を向上するような仕組みがあります。
そのため、現代的なパソコンでは、どちらの書き方でも、結局同じ速度になります。
しかし、組み込み(家電などに内蔵される低性能なコンピュータ)ではそうとは限りません。
コンパイラによる最適化は十分には機能しないことも多いですし、
CPUの仕組みが単純なので、プログラムの書き方が、速度にそのまま反映されやすくなっています。
そういった場合には、ポインタ演算は現代でも有用です。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

c言語学習10日目

今日も進捗を書いていきます。

 

今日は「苦しんで覚えるc言語」の練習問題16を解きました。

その中で書き取り問題を記事にします。

 

苦しんで覚えるC言語

苦しんで覚えるC言語

 

 

 

 

問題: 3人分の、名前、年齢、性別、を入力して表示するプログラムを作りなさい。 ただし、データは構造体で記憶することとし、 また、データの入力と表示はそれぞれ専用の関数を作って行うこととする。
 
自分のプログラム(解答を少し見て修正した)と解答をアップします。
 
自分のプログラム
↓↓↓
typedef struct
{
       char name[256];
       int age;
       int sex;//man:0 or woman:1
}info;
info data[3];//「data」という変数名のinfo型構造体配列(3要素)の宣言
void input(info inputdata);
void output(info outputdata);
int main(void)
{
       input(data);
       output(data);
       return 0;
}
void input(info inputdata)//関数の引数としてinfo型の配列引数を宣言
{
       int i;
       printf("名前と年齢と性別を入力してください\n");
       for (i = 0; i < 3; i++)
       {
              printf("名前:");
              scanf_s("%s", &inputdata[i].name, 256);
              printf("年齢:");
              scanf_s("%d", &inputdata[i].age);
              printf("性別(1-男性、2-女性):");
              scanf_s("%d", &inputdata[i].sex);
       }
       return;
}
void output(info outputdata)
{
       int i;
       for (i = 0; i < 3; i++)
       {
              printf("名前:%s\n", outputdata[i].name);
              printf("年齢:%d\n", outputdata[i].age);
       }
       char sex[16];
       if (data->sex == 1)
       {
              strcpy_s(sex, 16, "男性");
       }
       else
       {
              strcpy_s(sex, 16, "女性");
       }
       printf("性別:%s\n", sex);
       
       return;
}
 
 
 
著者の解答
↓↓↓
typedef struct {
       char name[256];
       int age;
       int sex;
} People;
void InputPeople(People *data);
void ShowPeople(People data);
int main(void)
{
       People data[3];
       int i;
       for (i = 0; i < 3; i++) {
              InputPeople(&data[i]);
       }
       for (i = 0; i < 3; i++) {
              ShowPeople(data[i]);
       }
       return 0;
}
void InputPeople(People *data)
{
       printf("名前:");
       scanf("%s", data->name);
       printf("年齢:");
       scanf("%d", &data->age);
       printf("性別(1-男性、2-女性):");
       scanf("%d", &data->sex);
       printf("\n");
}
void ShowPeople(People data)
{
       char sex[16];
       printf("名前:%s\n", data.name);
       printf("年齢:%d\n", data.age);
       if (data.sex == 1) {
              strcpy(sex, "男性");
       }
       else {
              strcpy(sex, "女性");
       }
       printf("性別:%s\n", sex);
       printf("\n");
}
 

c言語学習9日目

学習メモを書いていきます。
記事内のプログラムは苦しんで覚えるc言語から引用しています。
苦しんで覚えるC言語

苦しんで覚えるC言語

 

 

 
 
 
構造体
・構造体型の宣言の仕方の復習→typedef
・構造体の引数 
 ・構造体で情報を渡す
  構造体変数は、それ自体が1つの変数として扱われる。したがって「構造体型の引数」を使うことが出来る。
  →メリット:一度に複数の情報を渡すことが出来る
 
生徒の身体測定
プログラム①
typedef struct//構造体タグを省略している
{
       int year;
       int group;
       int number;
       char name[64];
       double stature;
       double weight;
}student;//「student型」という名の「構造体型」を宣言した
              
              
//プロトタイプ宣言
void student_print(student data);
//main関数で構造体要素を決めている→関数の呼び出し
int main(void)
{
       student data;//「student型」を使用するための構造体変数dataを宣言
       data.year = 3;
       data.group = 4;
       data.number = 18;
       strcpy_s(data.name, 64, "MARIO");
       data.stature = 178.0;
       data.weight = 81.0;
       student_print(data);//関数の定義でstudent型(構造体型)の構造体変数dataを引数として定義したので、引数として通常の関数と同様にdataを使用している。
       return 0;
}
//構造体型の変数(構造体変数)を引数とした関数を定義
void student_print(student data)
{
       printf("[学年]:%d\n", data.year);
       printf("[クラス]:%d\n", data.group);
       printf("[出席番号]:%d\n", data.number);
       printf("[名前]:%s\n", data.name);
       printf("[身長]:%f\n", data.stature);
       printf("[体重]:%f\n", data.weight);
       return;
}
 
 
 ・構造体型のポインタ変数
  整数型のポインタ変数同様、構造体型のポインタ変数も作ることが出来る。
  書式としては二通りある
  →(*構造体ポインタ変数名).要素名
  →構造体ポインタ変数名->要素名
プログラム②
typedef struct//構造体タグを省略している
{
       int year;
       int group;
       int number;
       char name[64];
       double stature;
       double weight;
}student;//student型を宣言
int main(void)
{
       student *pdata,data;
       pdata = &data;
       (*pdata).year = 10;
       strcpy_s((*pdata).name, 64, "MARIO");
       printf("(*pdata).year:%d\n", (*pdata).year);
       printf("data.year:%d\n", data.year);
       printf("(*pdata).name:%s\n", (*pdata).name);
       printf("data.name:%s\n", data.name);
       return 0;
}
 
 ・構造体型のポインタ変数を引数に持つ関数の作成
 
生徒の身体測定
プログラム③
typedef struct//構造体タグを省略している
{
       int year;
       int group;
       int number;
       char name[64];
       double stature;
       double weight;
}student;
void student_print(student *pdata);//プロトタイプ宣言
int main(void)
{
       student data;//「student型」を使用するための構造体変数dataを宣言
       data.year = 3;
       data.group = 4;
       data.number = 18;
       strcpy_s(data.name, 64, "MARIO");
       data.stature = 178.0;
       data.weight = 81.0;
       student_print(&data);//構造体変数dataのアドレスを関数のポインタ変数に渡している
       return 0;
}
void student_print(student *pdata)
{
              printf("[学年]:%d\n", (*pdata).year);
              printf("[クラス]:%d\n", (*pdata).group);
              printf("[出席番号]:%d\n", (*pdata).number);
              printf("[名前]:%s\n", (*pdata).name);
              printf("[身長]:%f\n", (*pdata).stature);
              printf("[体重]:%f\n", (*pdata).weight);
              return;
}
 
 
プログラム①と③を比較してみる
①は関数に直接、構造体情報のコピーを渡している。
③は構造体型のポインタ変数を使用して、関数に構造体情報を渡している。
「苦しんで覚えるc言語」では③のように書くメリットは、
(1)関数内で値を変更ずることが出来る
(2)関数の呼び出しの高速化
らしいが、(1)の場面がまだ思い浮かばない
 
・構造体の配列
 プログラム例:
 student data[10];
   data[1].year=3;
   strcpy_s(data[1].name,64,"MARIO");
複数の生徒の身体測定の情報を記録しておくことは可能かと

「直感力を高める数学脳のつくりかた」を読み始めました!

「直感力を高める数学脳のつくりかた」を読み始めました!

直感力を高める 数学脳のつくりかた

直感力を高める 数学脳のつくりかた

 

 

今回も読書の仮設作りをしていきたいと思います。

 

目標:

1,数学力(数学脳)について知り手に入れたい

2,数学、科学の学習のコツが知りたい

3,その他の学習の頭の使い方が知りたい

 

 

目標達成までの道筋:

1,ゆっくりやること

2,うたた寝から学ぶこと

3,チャンクを増やし直感力を高める

4,自分の習慣の役立たせ方

5,勉強に取り掛かるためには

6,専門知識を増やし不安を和らげる

7,記憶力の高め方

8,自分の能力の正しい判断の仕方

9,脳の作り直し方

10,想像力を磨く

11,独習について

12,自信過剰にならないことについて

13,試験の効用

14,潜在能力の解き放ち方

1-14を学べば目標達成‼️

 

スタート地点:

1,理系学生だが、少し数学や科学に苦手意識があり、不安な気持ちがある。

2,理系科目の自分なりの効率的な学習法

(1)大枠を捉える

(2)式や公式のイメージ化

(3)反復練習

(4)自分の言葉で要約

が思いつく。

 

 

読み終わりましたら、気づきや感想をまとめていこうと思います‼️

「ムダにならない勉強法」を読み始めました!

今日から樺沢紫苑氏の「ムダにならない勉強法」を読み始めました!

 

ムダにならない勉強法

ムダにならない勉強法

 

 

今回も、「東大読書(東洋経済新報社)」で学んだ、読解力を養うための仮説作りをしておきたいと思います。

「読む力」と「地頭力」がいっきに身につく 東大読書

「読む力」と「地頭力」がいっきに身につく 東大読書

 

 

仮説作り:

①目標

  • 科学的に裏付けがある、自分が知らない勉強法を知って実践したい。
  • 自分が今までやってきた勉強法が科学的にどれだけ正しいのか知りたい。
  • 今よりも無駄にならない勉強時間を過ごしたい

②目標達成までの道筋

  1. 勉強によって得られること、勉強がうまくいかない理由
  2. 脳楽勉強法
  3. 大人の勉強法
  4. 真似ぶ勉強法
  5. 入出力勉強法
  6. スーパーアウトプット勉強法
  7. 10年連続勉強法
  8. 1~7を学べば目標達成

 

③現状

  • 新しいことを学ぶ時に成長が遅いと感じる
  • 自分の中で積み上げてきた勉強法はある
  • 中々結果が出ないときや空回りしてしまう事がある

 

 

今後、「自分なりの気付き」、「これはためになったなという内容」、「これだけは覚えておきたいという内容」、「全体の感想」をまとめる予定です。