geek-branch

書き置きです。

"高校数学でわかる線形代数"を読んだ

"高校数学でわかる線形代数"を読み終えた。この本を買ったのは半年程度前だったのだが、なかなか読む時間が取れず今までいた。

大学の科目で線形代数を現在学習しているため、補助教材として使用した。

内容的にはかなりわかりやすく、かなり理解の助けになった。教科書のような感じではなく、行列や行列式の歴史も含め書かれている。その辺を僕は楽しめる人間なので楽しく読めた。

あと線形代数の学習については問題集として"スバラシク実力がつくと評判の線形代数キャンパス・ゼミ"を使用し学習している。

 

PythonのimportがVSCodeでunresolved importされる現象の対処

起こったことをそのまま書いたらルー語のようなタイトルになった。

Pythonの計算ライブラリを用いて線形代数の学習をしていたのだが、importで波線が引かれ続けるのがすごく気になった。カーソルを当てるとunresolved importと表示される。

importはできているらしく動作に問題はないのだが、コード補完も効かないためストレスを感じ、対処した。

行ったこととしては、

  1. 環境におけるPythonの使用バージョンの設定
  2. プロジェクト内のsetting.json、.env等のファイル追加

の2つだ。

まず、python --versionなどで現在のバージョンを調べたところ、2.7系のバージョンが使用されていた。

Pythonにはpyenvというツールがあり、それを使用することで複数バージョンのPython環境を使用できるらしい。

下記記事を参考にPythonの使用バージョンを変更した。

qiita.com

変更したものの、そのままだと状態を保持してくれないらしくターミナルを閉じると2.7に戻ってしまったため、下記質問を参考に対処した。

teratail.com

それでもunresolved importは解決できなかったため、以下の記事を参考にファイルを追加した。

blog.mrym.tv

これでとりあえずは解決した。学習を進めようと思う。

"痛快!コンピュータ学"を読んだ

痛快!コンピュータ学をつい先日読み終えた。1年くらい前に購入して積読していたものだ。

偶然にも大学の指定教科書となっていて、少しテンションが上がった。内容はコンピュータの歴史に触れながら、ハードウェアやソフトウェア、インターネットについて学べる内容になっている。とても面白い書籍だった。本書はコンピュータに詳しくない人でも(興味があれば)、楽しく読めると思う。

ちょうど、著者や著者の関わっているプロジェクトについてのこんなニュースを読んだ。

news.yahoo.co.jp

TRONというのはOSの名称で、坂村健氏のプロジェクトである。本書で存在は知っていたが、ここまで世界に広がっているとは知らなかった。

もう少しTRONについて深く知ろうと思う。

学習記録: 2020/04

学習記録晒し↓

2020/04

英語: 10m

技術: 26h40m

数学: 19h00m

大学: 58h15m

total: 104h05m

 

大学の勉強が始まった。現在はコンピュータ概論、線形代数、プログラミングを学んでいる。

プログラミングとコンピュータ概論については特に問題は起きていないのだが、線形代数はちょくちょく詰まることがある(今月の学習記録の「数学」は指定教材ではない教材を用いた線形代数の学習である)。

今のところ楽しく学べている。休みの日にコードを書く量は減ってしまったが、今まで学んでこなかったことを学んでいる充実感がある。

 

Atcoder ProblemsのStreak Ranking更新が切れた

最悪だ。コンピュータ概論の勉強をしていたところ、気がついたら0時を超えていた。

何をやらかしたかというと、Atcoder ProblemsのACを切らしてしまった(何日連続でACが取れたかのランキングがタイトルにあるStreak Ranking)。

とりあえずこれを書いている時点(2020/4/23)だと39日連続ACで1100位になれるらしい。

登録者数が約18万3000人であることを考えると相当すごいと思う。続けている限り落ちようがないし。

ああ、本当に最悪だ。結構食らっている。

"Effective Modern C++"を読んでいる

Effective Modern C++を読み直している。

C++11/14で気をつけたいtipsが記載されており、僕の中では一番思い入れが強いC++の書籍である。

というのも、この書籍に出会うまではいまいちモダンなC++の書き方というものを知らなかった。

僕の周りにはベターCのように書く人が多く、ネットなんかでたまにC++11以降の機能を見かけては「なんだこれは」と衝撃を受けていた。

モダンなC++の書き方を知りたい、と1年ほど前に購入したのだが、とても助けられている。

当時は型推論すら知らず、まともに読み進められなかったことを覚えている。そもそもの機能の知識が全くなかったのだ。

C++の書籍は沢山あるが、C++11以降とそれまででは様々なことが大きく違う。

C++11/14について学びたい人にはかなりお勧めできる。

読み終えたら次はC++テンプレートテクニック第2版を読み直そうと考えている。

テンプレート関数で配列を受け取る

テンプレート関数に配列を渡したいなーとたまに考えることがあった。
しかし、T[]で受け取ることはできないし、T*で受け取ってもサイズの情報を引数だけで持たせることはできないしなあ、と考えていたけれど、以下のコードで可能だった。

#include <iostream>

template<typename T, std::size_t N>
std::size_t array_size(T (&)[N]) {
    return N;
}

template <typename T>
void cout_array(T& param) {
    for (std::size_t i = 0; i < array_size(param); ++i) {
        std::cout << param[i] << std::endl;
    }
}

int main() {
    int arr[5] = {5, 4, 3, 2, 1};
    cout_array(arr);
}

参照で受け取り、配列のサイズを返す関数を用意することで問題なく配列を渡した処理ができる。
Effective Modern C++を読み直しているのだけれど、やはり技術書は知識が乏しい段階で読むのと多少知識が備わった段階で読むのとでは理解のレベルが変わってくると思う。
時間を見つけて購入したC++の書籍を全部読み直したい気持ちがある。