(旧)平凡エンジニアからの出発

https://atuyan39.hatenablog.com/ に移動しました。

ubuntu 20.04.1 LTSのセットアップ

概要

下記の状態となるように、Ubuntuのセットアップを行います。

Ubuntuの基本設定

aptの更新

$  sudo apt update
$  sudo apt upgrade

ubuntu version確認

$  cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Windows PCからUbuntuのHDDにアクセスできるようにする。

HDD mount

$  sudo fdisk -l

share folder作成

$  mkdir /mnt/hdd_alice/share
$  sudo chmod 777 /mnt/hdd_alice/share

smba

$  sudo apt install samba
$  sudo pdbedit -a [ユーザー名]

# ip addressの確認
$  ip address show

$  sudo systemctl restart smbd nmbd
$  sudo systemctl enable smbd nmbd

https://beightlyouch.com/blog/programming/ubuntu-fileserver-nas/

Windows PCからリモートデスクトップ接続できるようにする。

openssh

Terateramを使って、アクセス可能にする。

$  sudo apt-get install openssh-server 

qiita.com

remote desktopの設定

$  sudo apt -y install xrdp tigervnc-standalone-server
$  sudo systemctl enable xrdp
$  sudo systemctl start xrdp

qiita.com

エンジニア関係の記事まとめ NO.1

ITエンジニアって何? どんな能力が必要なの?
とても綺麗にまとめられている記事があったので、シェアします。

ITエンジニアについての全体像

  • ITエンジニアに必要な「技術力」と「人間力
    • 技術力 - 「開発」「インフラ」「運用・保守」
    • 人間力 - 「ヒューマンスキル」「ビジネススキル」
      • ①コミュニケーション力
      • ②誠実さ
      • ③ポジティブシンキング
      • ④リーダーシップ
      • ヒアリング力
      • ロジカルシンキング
      • ⑦プレゼンテーション力
  • 人柄(スタンス)で補う

最終的に、顧客も人間である。

engineer-club.jp

エンジニアのキャリアプランについて

キャリアプラン

目標を持つことは大切。
1つのことをグーっとやるのはあまり得意でない。
広く、浅く、いろいろな人の良さを引き出させるようになりたい。

type.jp

一転語

自分にはもう何もできることはないと思っていたが、まるで嘘のようだった。何も出来ないと思っていたのは、何も見ていなかったからだ。目に見える部分ばかりに気を取られて、目に見えないものを見る努力を忘れていた。
奇跡のリンゴ「絶対不可能」を覆した農家 木村秋則の記録 p.163】

amzn.to

【技術書】『プリンシプルオブプログラミング』を読んで No.1

目次

作業時間

2020/6/3

  • 18:15-19:15 読書(1H)
  • 19:15-19:45 ブログまとめ(0.5H)

作業報告

プリンシパルオブプログラミング(P.62まで)

第1章 前提~プログラミングの変わらぬ真実~

1.1 プログラミングに銀の銃弾はない

No Silver Bullet in programming.

  • プログラミングには、魔法のような解決策はないもの
  • プログラミングの成果物である「ソフトウェア」は、本質的に困難である
  • ソフトウェア開発の歴史を学び「複雑さ」と戦う
1.2 コードは設計書である

Code as design.

  • 設計行為の成果物はコードでしかありえない
  • プログラミングは設計であり、創造的な行為である
  • 設計というのは、、創造的な、かつ技芸の必要な行為である
1.3 コードは必ず変更される

Code will bechanged.

  • どのようなフェーズでも、様々な理由で、コードには必ず変更が入る
  • だからこそ、「変更に強いコード書く」ことを心がける
  • そのためには「コードが読みやすい」ということが最も大切

第2章 原則~プログラミングのガイドライン

2.1 KISS

Keep It Simple, Stupid

  • コードはシンプルに保つこと
  • コードに余計なことはしないこと
  • 「less is more」は「より少ないことは、より豊かなこと」
2.2 DRY

Don't Repeat Yourself.

  • 同じコードを重複して書いてはいけない
  • リファクタリングの時間やデグレのリスクを取ってでも、重複を排除すること
  • プログラミング技術の多くは、コードの重複を排除する目的がある
2.3 YAGNI

You Aren't Going to Need it.

  • コードは必要最低限に、今必要なコードだけ書くこと
  • コードの予想は外れて、結局利用されないことが多い
  • 汎用性よりも、単純性を考えること
2.4 PIE

Program Interntly and Expressively.

  • ソフトウェアの動作を把握するには、コードを読むしかない
  • コードは「書かれること」よりも「読まれること」の方がずっと多い
  • コードは「書く効率」よりも「読む効率」が優先することで価値が累積的に膨れ上がる
2.5 SLAP

Single Level of Abstraction Principle.

  • コードの抽象レベルを揃えることで書籍の目次のようになる
  • 名前で意図を伝えるために処理が1行であっても関数にしてかまわない
  • 「具体的な処理を書く作業」と「抽象化レベルを揃える作業」は別の作業と心得る
2.6 OCP

Open-Closed Principle

  • 拡張に対して開いているとは、「コードの振る舞いを拡張できる」ということ
  • 修正に対して閉じているとは、「コードの振る舞いを拡張してもその他のコードはまったく影響を受けない」ということ
  • OCPの代表的な技術は、オブジェクト指向の「ポリモーフィズム」が当たる
2.7 名前重要

Naming is important.

  • 命名」を最重要課題として認識し、慎重に取り組むようにする
  • 適切な名前を付けることができたら、その設計の大部分が完成したと考えてよい
  • コードを読み書きしているとき、プログラマは、常に脳への過負荷と戦っている!

所感

ほんとコード読むのは頭使う。
読みやすいコード、わかりやすいコードは本当にありがたい。
先人の知恵の詰まった技術書の勉強は毎日すべきだと思った。

一転語

人間はハングリー精神を失ったときに”若者”ではなくなります。その人が若者であるかどうかを分けるものは、このハングリー精神の有無なのです。「まだ十分ではない。まだ満腹していないぞ」という気持ちがあるかどうかです。
【勇気の法 p.118】

【9日目】平凡エンジニアがAIエンジニアになるまでの物語

目次

作業時間

2020/6/2

  • 24:00-24:30(0.5H)

作業報告

情報理論(1回目-無音)

機械学習と確率の関係?

分析の対象となるデータは無限にある。(世の中すべてがINPUT)
それに対して、学習に使うデータは有限。(無限だといくら時間があっても計算できない)
それゆえに、不確定な要素を考慮するために、`確率・統計のアプローチが必須となる。

所感

ちょっと期間が空いてしまったので反省。
講義を2,3回は繰り返し見て、理解を深めることにしていきたい。

一転語

苦しい時期というのは、十年以上、なかなか続くかないものです。その十年を突破していくためには、もちろん、耐え忍ぶ力、忍耐の力も必要です。しかし、その忍耐のなかに、「毎日毎日、一歩一歩、努力し抜く」「他人が何を言おうとも、自分は毎日一歩を進めていく」という努力の姿勢があることが大事なのです。
【真のエリートを目指して p.166】

【8日目】平凡エンジニアがAIエンジニアになるまでの物語

目次

作業時間

2020/5/18

  • 20:45-23:45(3H)

作業報告

線形代数中級

行列計算の高速化

線形代数は行列演算でできる。

GPU:画像の描画するための演算装置。

CPUは複雑な計算。if..else..の条件分岐が得意。
GPUは単純な計算。forループが得意。

対角行列・対称行列・直交行列
  • 対角行列:非対角成分がすべて0になる行列。
  • 対称行列:対角を軸として線対称になる行列。
  • 直交行列:大きさ変えず軸を入れ替える行列。回転する行列。 f:id:atuyan_blog:20200518233208p:plain
固有値問題

ある行列Aの固有値固有ベクトルがわかれば、行列Aの性質・振る舞いを解析できる。
定義:固有ベクトルvに行列Aをかけると長さがλ倍になる。このλを固有値という。 f:id:atuyan_blog:20200518233829p:plain 固有値はPCA(主成分分析)や次元削減で使われる。

固有ベクトルは方向の情報を持っている。
ノルムを1として、固有ベクトルを記載することの方が多い。
例: (0 ,1 ,1)よりも、(0 ,√1/2 ,√1/2)。

特異値分解

任意の行列に対して行える分解方法。
自然言語処理PCDでも使える。次元削減へ応用。 f:id:atuyan_blog:20200518233942p:plain

所感

深層学習の本が少し読めるようになって面白い。素読する。
これからは座右において講義を受けよう。

一転語

古い言葉にも「好きこそ物の上手なれ」といっている。実際何事でも好きになるまで努力すれば、自然それが上手になるまでやれるものであって、努力はついにその人を天才にし、名人にまでする。
【人生計画の立て方<新装版> p.134】

【自作PC】RyzenでPCを組みたい症候群

RyzenでPCを組みたい衝動に駆られました。

現在(2020/5/15)販売が予定されている
AMDの最新のチップセットB550とのことです。

ソケットAM4 B550マザーボード | AMD

f:id:atuyan_blog:20200515003357p:plain
B550仕様

発売日は、6月16日とのこと。

artjuku.com

ASRockのB450 Steel Legendのデザインが好きなので、
B550 Steel Legendが出ることを信じて組んでみたいです。

ASRock > B450 Steel Legend

f:id:atuyan_blog:20200515003614p:plain
B450 Steel Legend

今後は機械学習に最適なPCについても調査していきたいです。
そして、PCのパーツを考えているのは楽しいですね。

【7日目】平凡エンジニアがAIエンジニアになるまでの物語

目次

作業時間

2020/5/13

  • 23:30-24:30(1H)

作業報告

Python講座】Python入門

セッション33~34
str = input()  # ユーザー入力を受け取る
int(str)       # int型へ型変換

a = "A"
b = 1
c = "C"
print(a, b, c) # A1Cと表示される

len(str)       # strの長さを返す
max(x1, x2)    # 最大値を返す
min(x1, x2)    # 最小値を返す

intは小数切り捨て、roundは四捨五入。

所感

1日に少しでもいいからAI(E資格)の学習を進めるのだ。

一転語

 であるから、われわれはときどき出発点に立ち返り、心を静めて、
  「いったいおれはなんの目的でこんなことをしているのか」
 と自問することが必要である。

 これをしなければ、その日その日が目の前にちらつき、左右から来る要求のために大事から遠ざかり、最後の目的を見忘れる恐れがある。頑張りが弱くなるのもこういうときである。偉人はいざ知らず、平凡なわれわれはどれほど年をとっても、自分がはじめて志を立てたときの心持ちに戻って心を改めることがなければ、途中のうるさい小言に気力も意志も阻喪し、大望をも失ってしまう。
【私の自己実現 p.31】