kenanのブログ

闘病生活

コーディングを支える技術を読んだ。

大学図書館に置いてあったので借りてきた。

  • 3章 文法の誕生
  • 4章 処理の流れのコントロール
  • 5章 関数 辺りはとても勉強になった。

全体的に言えることだが、なぜ誕生したのか。その仕組みはどのようになっているか。ということが解説されていて今までモヤモヤしていた所がスッキリすることができた。

あと以下の2冊を読む予定。

はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)

はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

退職しました。

2017年10月から勤務なので1年3ヶ月出向先の企業様にはお世話になりました。

業務としてはWPFC#Windowsのクライアントアプリを増築していくお仕事をしました。 MVVMな設計と非同期処理を扱うのは初めての案件だったのでスレッドセーフになってないと例外がでたり、パフォーマンスが出なく苦労しました。 また、バージョン管理システムがなかったので自衛の為個人的にGitを導入したのも良い経験でした。

次の仕事は、先月からすでに始めていて8年ぶりにウェブの仕事になります。 京都のベンチャーを友人に紹介いただき業務委託という形でリモートワーク出来ることになりました。

Python(Django)とJavaScriptゴリゴリ書くお仕事になります。 まだ慣れないことが多々ありますが、少しずつ勉強して頑張っていきたいと思います。

エディタ環境設定

エディタ設定

キーバインド的にEmacs使いたい所だけど、VisualStudioCodeにした。

設定

ターミナルはWSLにした

"terminal.integrated.shell.windows": "C:/Windows/System32/wsl.exe"

lintを入れたかったのでvsCode拡張機能としてrubocopを入れた。

WSLでgemからrubocopをインストールした後に適当なディレクトリにbatファイルを作成する。

私の環境では以下の場所だったので

$ which rubocop
/home/kenan/.rbenv/shims/rubocop

このように作成した。

rubocop.bat
@echo off
wsl ~/.rbenv/shims/rubocop $^(echo '%*' ^| sed -e 's^|\\^|/^|g' -e 's^|\^([A-Za-z]\^)\:/\^(.*\^)^|/mnt/\L\1\E/\2^|g'^)

C:直下にbinフォルダを作成しrubocop.batを配置。

vscode拡張機能の設定を以下の様にした。

Rubocop: Execute Path: C:\bin\

基本設定

Render Whitespaceをallに変更した。

拡張機能

Japanese Language Pack for VS Code
Ruby
ruby-rubocop
Trailing Spaces
indent-rainbow
zenkaku

ショートカットキー

Ctrl+Bでサイドバー

Ctrl+@ターミナルへ移動できる。

Ctrl+1で1つ目のエディタ

とりあえずこれぐらい使えればとりあえず良さそう。

追記 2018/10/28

ターミナルがシンプルすぎたので軽く検索したらそれらしいカラースキーム設定があったので以下の様に設定した。

"terminal.background":"#090300",
"terminal.foreground":"#A5A2A2",
"terminalCursor.background":"#A5A2A2",
"terminalCursor.foreground":"#A5A2A2",
"terminal.ansiBlack":"#090300",
"terminal.ansiBlue":"#01A0E4",
"terminal.ansiBrightBlack":"#5C5855",
"terminal.ansiBrightBlue":"#01A0E4",
"terminal.ansiBrightCyan":"#B5E4F4",
"terminal.ansiBrightGreen":"#01A252",
"terminal.ansiBrightMagenta":"#A16A94",
"terminal.ansiBrightRed":"#DB2D20",
"terminal.ansiBrightWhite":"#F7F7F7",
"terminal.ansiBrightYellow":"#FDED02",
"terminal.ansiCyan":"#B5E4F4",
"terminal.ansiGreen":"#01A252",
"terminal.ansiMagenta":"#A16A94",
"terminal.ansiRed":"#DB2D20",
"terminal.ansiWhite":"#A5A2A2",
"terminal.ansiYellow":"#FDED02"

参考

VSCode + WSL

VSCodeで空白文字を見やすくする方法

VS Code の便利なショートカットキー

Base16 Terminal Colors for Visual Studio Code

Rubyを始めよう(WSL)

切っ掛け

弊社の新人エンジニア研修カリキュラムを惜しみなく公開してみる - Feedforce Developer Blog

参考書籍

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで

はRuby2.4.1対象だったのでrbenvで環境を作るところをメモ。

環境構築

開発環境系パッケージ

~$ sudo apt-get -y install git curl g++ make libssl-dev libreadline-dev libyaml-dev libxml2-dev libxslt-dev sqlite3 libsqlite3-dev nodejs

rbenv

~$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
~$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
~$ cd ~/.rbenv && src/configure && make -C src
~$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
~$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.bashrc:

eval "$(rbenv init -)"

~$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
~$ source ~/.bashrc

インストール確認テスト

~$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /home/kenan/.rbenv/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /home/kenan/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20181019-2-gd49b8a1)
Counting installed Ruby versions: none
  There aren't any Ruby versions installed under `/home/kenan/.rbenv/versions'.
  You can install Ruby versions like so: rbenv install 2.2.4
Checking RubyGems settings: OK
Auditing installed plugins: OK
~$ rbenv install 2.4.1
~$ rbenv global 2.4.1
~$ ruby -v 
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

参考URL

https://loumo.jp/wp/archive/20181004120007/

https://github.com/rbenv/rbenv

試して理解 Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識を読んだ

CPU・メモリ・ストレージ等の動きの解説やC言語のサンプルコードでの検証をイラストを交えてわかりやすく解説してあり以前読んだ 動くメカニズムを図解&実験! Linux超入門 と比べると圧倒的に読みやすかった。

Linux超入門」も詳細に解説してあったが細かすぎたのではじめに読むなら「Linuxのしくみ」にすべきだと感じました。

良かった点
  • サンプルコードの中身を理解を理解せずとも要点が後述してあったこと。
良くなかった点
  • ターミナル画面でパフォーマンス測定しているキャプチャ画像が本のサイズの問題で途中で折り返されて読みにくい
今後の予定

基礎的な本としては コンピュータの構成と設計-第5版- にしようか考えているのですが、仕事でC#をやっていて辛い局面が多々あるのでアプリケーションの設計や良い習慣などを学びたいという気持ちが高まっています。

一応以下の2冊がすでに手元にあって7割ぐらい読んでいるのですが、うまく消化できていない感じなのでお盆休みを利用してデスクトップアプリケーション等を作りながら読み直したいです。

C#実践開発手法 デザインパターンとSOLID原則によるアジャイルなコーディング

More Effective C# 6.0/7.0

プログラマの数学第2版を読んで。

読み始めようと思ってからだいぶ時間はかかりましたが先日ようやく読み終わりました。

2章 論理

ド・モルガンの法則では、資格試験で真理値表などの対応表を記憶するだけだったものが丁寧に解説されていて復習にとてもよかった。

4章 数学的帰納法

帰納の証明のあたりから理解が追いつかなくなってきた感じがありました。証明する考え方を読むとわかるしサンプルコードを見てもわかるけど自分の中でちゃんとわかってない感じでした。 なにか普段起きている出来事とかを例に当てはめて自分で考えたりしないとだめそう。

5章 順列・組み合わせ

5P3や、5C3などを試験とかで見たときにPってなんだ?Cってなんだ?ってずっとひっかかっていたのが 順列(Permutation)、組み合わせ(combination)の意味がわかっただけで長年のもやもやがだいぶすっきりした。

7章 指数的な爆発

log とかもlogarithm(ロガリズム)が対数という説明がされていてlogとはなんだったのかやっとわかった。

付録1 機械学習への第一歩

Σ(シグマ)とずっと向き合えなくてコンピューターサイエンスの本を見るたびにこの本は難しいから読めない・・・。と逃げていましたが 今回やっとどういう読み方なのか向き合えたのは大きな一歩だと思います。

感想

内容的に難しいと思わせるところもありましたが、解説の文章がとても優しく読みやすかったため 最後まで読み終えることができたので良い本だと感じます。

プログラマの数学第2版

プログラマの数学第2版

サツマイモ近状

植え付けは6月7日でした。

f:id:h_kenan:20180721082026j:image

f:id:h_kenan:20180721082022j:image

f:id:h_kenan:20180721081952j:image

活着率は99%ぐらいですね。

今年はマルチの口を大きく広げて苗を植えたあとに土をかけてマルチ焼け対策したのが良かったと思います。

あと一昨年サツマイモの生育に関係したか調べるためサンゴ礁の石灰を少量蒔いてみました。

あとは草取りとツル返しぐらいですかねー。秋が楽しみです。