学んだことのログ

プログラミングとかものを作るのが好きです

オブジェクトとプロパティ

オブジェクト 

var member = {
    name:"katou",
    age:"19"
}

こういうやつ

名前:値のセットを複数持てる。

プロパティ

オブジェクトが持ってる名前と値のセット

    name:"katou",

こういうやつ

プロパティの名前の部分がプロパティ名

値の部分は値(そのまま)

なのでプロパティは

プロパティ名:値

で表現できる。

上のオブジェクトはnameというプロパティとageというプロパティを持ったオブジェクト、ということになる。

プロパティには関数を設定することもできる

var counter = {
    number:0,
    print:function(){
        counter.number++;
        console.log(counter.number);
    }
}

counterというオブジェクトにprintというプロパティを設定、値に関数を設定。

counterのオブジェクトからプロパティを呼び出すときにプロパティに設定した関数が呼び出される。

ちなみに・・・

こうやって現実世界にあるものをオブジェクトとかで単純化したのがモデル、単純化して表現するのをモデリングというらしい。

あんまり使ったことのない言葉だった。

JavaScriptのDateのmonth(月)の罠

何故か月だけ0始まり

例えば2000年10月31日のDateを作りたいとき、こう書くと

var myBirthDay = new Date(20001031);

実際にはこう出る

Thu Nov 31 2000 00:00:00 GMT+0900 (日本標準時)

2000年11月31日

年と日はちゃんと入力したとおりだが、月だけ+1されている

理由

月は0始まりだから。

0,1,2,3,4,5,6,7,8,9,10,11…という感じで0から数字を数えると10番目は11になる。

そのため10と入力しても実際は0始まりの10番目の11月が出力される。

なので、10月のDateをnewしたいときはこう書く。

var myBirthDay = new Date(2000931);

Mon Oct 31 2000 00:00:00 GMT+0900 (日本標準時)

無事に10月31日と出力された。

JSでnew DateするときやDateを使って日時を計算するときは月が0始まりなのを忘れずに。

 

VSCodeで簡単にテーブルのテンプレートを作る方法

やり方

例えば2列ヘッダー1行、2列のデータ行6行のテーブルを作りたいとき

①table>(tr>th*2)+(tr>td*2)*6を入力

②tabを押下

table>(tr>th*2)+(tr>td*2)*6  

できた

      <table>
          <tr>
              <th></th>
              <th></th>
          </tr>
          <tr>
              <td></td>
              <td></td>
          </tr>
          <tr>
              <td></td>
              <td></td>
          </tr>
          <tr>
              <td></td>
              <td></td>
          </tr>
          <tr>
              <td></td>
              <td></td>
          </tr>
          <tr>
              <td></td>
              <td></td>
          </tr>
          <tr>
              <td></td>
              <td></td>
          </tr>
      </table>  

思ったこと

今までいちいち書いてたから便利

これはVSCodeの便利機能なのかな

追記

Emmentという便利機能らしい!まとめたい

6/24の日報

やったこと

・応用情報 基礎理論分野:新規10問

・応用情報 基礎理論分野:復習10問

・応用情報 ランダム:20問

(勉強時間3時間ほど)

隙間時間に20問ぐらいと、あとは分野別に参考書を見ながらがっつり10問ずつぐらいを進めていくのが自分のペースに合っていそうなことが分かった。

基礎理論は苦手分野なので時間がかかるが、ここをしっかり理解しておきたい。どちらかというと合格することより資格を勉強することで知識を身に着けることが目的なので、分からないところは飛ばさず理解できるまでやる、を目標に。

明日やること

・応用情報 基礎理論分野:新規10問

・応用情報 基礎理論分野:復習10問

・応用情報 ランダム:20問

AtCoder AC3つ

・N高のオンライン授業 1講座

応用情報は日課なので引き続き。追加でAtCoderを1日3問くらいACする習慣をつけたい。N高は無料なのに内容がすごくいいのでおすすめ

やりたいこと

積ん読を読み切る

・復習で基本情報の参考書もう一周くらい

受験予定資格と勉強の状況

応用情報技術者

理由

今の役職から1個上がるには必須なので受けないといけない

勉強状況

5月から空き時間に午前の過去問を解いていってる。体感基本情報と範囲も被ったりしているのでとりあえず数を解けば対策になりそう。ただ、解いて点数が取れてもあまり資格の意味がないと思うので、基礎の抜け漏れを埋めていく意味で各分野とも過去問以外に勉強としては網羅したい。

受験日

10/18(日)

JavaSilver・Gold

理由

何か一つ言語をしっかり勉強しておきたいと思って。

勉強状況

黒本で過去問を解いていたが、ほぼ同じ問題が出されると知り、過去問ばかりではあまり勉強をする意味がないと分かり紫本で勉強中。使ってきた言語のはずが知らないことが多くて理解が浅かったと反省中。理解した上で合格したい。

受験日

Silver:7/26(日)

Gold:(9月頭くらいに受けたい)

 

TOEIC

理由

ドキュメントやリファレンスがとにかく英語が多いので読めた方が仕事が楽そう。

勉強状況

上記2資格よりゆるくやっているが、合格/不合格の試験ではないので一旦直近の9月に向けてリスニングやリーディングの勉強中。主にYoutubeや映画を英語字幕で見て理解する感じで進めている。

受験日

 

9/13(日)

 

今年は秋までに上記の資格を受ける予定だが正直コロナの第2派でどうなるやらという状態。ただ、勉強自体はどれも役に立つので勉強する習慣をつけて進めていく。

6/22の日報

先週くらいに新給与が発表されたけど思ったような額じゃなくて落ち込んだ。去年結構がんばった自覚があるから余計に…

まあその額が評価ということで改めてがんばろうと思うし、今後納得いかないときは別方向に飛び出していけるようちゃんと色々磨いておく必要があると思った。

楽しみつつ色々勉強をしていきたい。今はとにかくAtCoderが楽しいけど、解くだけじゃなくて何かものづくりとしてのアウトプットも残していきたい。

環境変数とかPATHを通すとかJAVA_HOMEとか

経緯

環境構築の手順書でよく「環境変数を設定する」とか「JAVA_HOMEに以下を設定」みたいな記述があるけどいまいち内容を理解せず実施していたので、実際何をやってるんだっけっていうのを整理してみた。

環境変数とは

OSが使う変数。PCの環境周りについて色々定義された変数。

例えばWindowsだとコマンドプロンプトでsetコマンドを実行すると、環境変数とその変数に何が設定されているかが一覧でぶわーっと表示される。

 ・HOMEDRIVE=C:

 ・JAVA_HOME=C:\Program Files\AdoptOpenJDK\jdk-11.0.7.10-hotspot

 ・USERNAME=(ユーザ名)

的な感じで、そのPCが使ったり持ったりしてるパスとか設定とかを変数として定義している。

 ちなみにWindows環境変数には

①システム環境変数

②ユーザ環境変数

の2種類がある。

システム環境変数

さっき環境変数はOSが使う・持ってる環境変数と言いましたが、基本的にOSが使うものは「システム環境変数」になる。

これはどのユーザであっても参照することが可能な環境変数だ。しかし、この環境変数を何かしら編集しようとする場合はWindowsの管理者権限が必要になる。

ユーザ環境変数

ユーザ環境変数Windowsにログインしたユーザが使ったり持ったりする変数で、これはこのログインユーザのみが参照・編集が可能である。他のユーザは参照すらできない。

「PATHを通す」とは

ざっくり言うと、 PCに実行プログラムの場所を教えて、プログラム名だけで実行できるようにすること。

「PATH」とは上記で説明した環境変数の一つで、フォルダのファイルパスが列挙された環境変数で、PCはコマンドから実行可能ファイルのファイル名が入力された場合に、

現在のディレクトリ内⇒環境変数 PATH に設定されたディレクトリ内、という順で合致する順次実行可能ファイルを探しに行く。

・Path=C:\Program Files\AdoptOpenJDK\jdk-11.0.7.10-hotspot\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32…

コマンドで実行プログラム名のみを記述して実行すると、PCはこのPATHという環境変数の値に;区切りで設定されたフォルダを先頭から見に行き、実行プログラムが存在するかを確認していく。

・C:\Program Files\AdoptOpenJDK\jdk-11.0.7.10-hotspot\binを確認

・C:\WINDOWS\system32を確認

・C:\WINDOWSを確認…

そのため、PATHを通すというのは、この環境変数に実行プログラムのフォルダを追加してあげることで、実行プログラム名だけでプログラムを実行できるようにすることである。

JAVA_HOMEとは

こちらも「PATH」と同じく「JAVA_HOME」という環境変数。PATHが実行可能ファイルを探しに行く先だとすると、JAVA_HOMEはJDKがインストールされているディレクトリが指定されている。そのためPATHの場合は実行ファイルが置かれている。

・Path = C:\Program Files\AdoptOpenJDK\jdk-11.0.7.10-hotspot\bin

を指定するけど、JAVA_HOMEはJDKのインストールされたディレクトリなので

JAVA_HOME = C:\Program Files\AdoptOpenJDK\jdk-11.0.7.10-hotspot

を指定する。

なんでPathとJAVA_HOME両方設定する必要があるの?

これについては、アプリケーションによってPathを参照するところもあればJAVA_HOMEを参照するところもあるため。

Eclipseやら何やらのJavaを使用するアプリケーションがJavaがどこにインストールされているのかを探すときに、このJAVA_HOMEという環境変数に指定されたディレクトリを見に行くため、設定をしておく必要がある。

じゃあ、JAVA_HOMEだけでいいじゃんと思ったりもするが、PATH に設定されたディレクトリに含まれるプログラムは、どのディレクトリからも参照することができるため、JAVA_HOMEを指定しないけどJavaを使用するアプリケーションなどから呼び出せるようPathにも設定をしておく必要がある。