05 Dec 2016, 19:11

職務履歴書をgithubで管理することにした

最近、github上で職務履歴書を書くのが流行っているらしい。たとえば、この記事

というわけで、自分も書いてみた。

寝る前にふと思いついて書いたので、これだと全くダメだと思うけれども、まずは書いてみることが大事という精神で頑張って書いてみた。

 

自分に足りないもの

こうやって書いてみると、自分に足りないものが見えてくる。

  • 登壇履歴

    • 自分のプロダクト(OSS)

      • 専門領域
      自分はシャイなので、どうも外へ出ていくのをためらってきた。

    それでは、エンジニアとしてダメなことはわかっている。何かきっかけでもあればいいのだが、なかなか腰が動かない。

    また、人に見せるための自分のプロダクトをもっていないところもダメ。

    自分の強みがないことにも気づいた。まずは、この気付きを大切にしたい。

    メリット

    githubのいいところは、修正履歴を残せるところ。自分の成長記録がコミットログで終えるところが嬉しい。

    これからどんどん成長させて、いつかは立派な職務履歴書を完成させたい。

    また、人に見せやすいところもメリット。エンジニアならgithubだよね。

    参考

13 Jul 2013, 05:13

最後にして最強のターミナルになれるか!Linux用端末『FinalTerm』

最近、hackernewsを流し読みしていますが、そんななかFinalTermなるものがあった。

FinalTerm、最後の端末,最終ターミナル。電車の終点みたい。(´・ω・`)

これは、Linux用のターミナルで、コンソール画面にクリックで操作できるような機能をグラフィック機能を追加したもの。UbuntuとFedora、Arch Linuxでインストールできるようだ。無料。

紹介動画はYoutubeにあります。まずは見るべし。

[//www.youtube.com/embed/bvROuipepmg?rel=0]

Ubuntuにインストールする

以下の3行だサクッと導入できた!!

sudo add-apt-repository ppa:finalterm/daily
sudo apt-get update
sudo apt-get install finalterm

ちなみに、CentOSに入れようとしたらGTK3がなくて2時間頑張ってもインストールできなかったことを、ここに未練がましく告白する。

試してみる。

FinaltermはGUIアプリケーションなので、finaltermで検索して起動するだけ。

デフォルトでは黒のグラス。クール!!(・∀・)

lsを押すと、リンクっぽい線がかかれた表示が。これをクリックすると、クリックしたディレクトリに対する操作がボップアップされる。ファイラみたいだ。

コマンドを打ち込もうとすると、ポップアップでコマンド履歴が出てくる。

他にも、Ctrl + (なにか)でコマンド実行できたり、いろテーマの変更ができたり。

いろいろ機能がありそうだけれども、それはおいおい調査。

使用感

デフォルトのターミナルに比べて、ほんのすこし速度がもっさりしている気がするが形容範囲。

コマンド補間やグラフィックな選択は、そこまでスンゲェΣ(゚∀゚ノ)ノとは思わなかった。zshみたいには、なれないぞ!そのうち、ウルトラタームとか、スーパータームとか、いろいろな亜種が増えてきそう。

見た目が綺麗なのがよいね。それだけでも、ターミナル乗り換えていいかも。

21 Apr 2013, 11:36

UnityとCMockの使い方が分かる本『Embedded Testing with Unity and CMock』を読んだ

UnityとCMockはC言語のためのxUnitとMockフレームワーク。UnityとCMockの使い方について、電子書籍とペーパーブックが出ている。6ドルくらいなので、購入して読んでみた。


Embedded Testing with Unity and CMock by Mark VanderVoord (eBook) – Lulu


内容はとても異色だ。まず、ページが正方形なのが、なんかおかしい。物語形式で話が進んでいく。途中に可愛い?!マンガチックなイラストがたくさんでてくる。文学表現が初めの方はおおくて、知らない単語が多かったりした。

前半がUnityの話、後半がCMockの話。全部で40ページくらいなので、あまり内容は深くない。使い方が説明されている。ツールについてくるドキュメントよりは詳しくツールが解説されている。特に、オプション周り。

この本、手順はしょりすぎ。。。けっこう苦労したので、補う意味で手順をメモしておく。

なお、UnityとCMock利用するためには、Rubyが必須ツール。Rubyスクリプトをガンガン使うため。事前にインストールすること。

CMockのダウンロード

githubからダウンロードします。unityやceelingというプロジェクトも必要になります。サブモジュール扱いされているので、それらも取得します。

#CMockをcloneする
$ git clone git://github.com/ThrowTheSwitch/CMock.git
# Unityとceelingをcloneする
$ git submodule init
$ git submodule update

CMockをcloneする

$ git clone git://github.com/ThrowTheSwitch/CMock.git

Unityとceelingをcloneする

$ git submodule init
$ git submodule update

Unityはどんなコンパイラだって、コンパイルできるらしい(と書いてあった)。まずは、自分が使う予定のコンパイラでUnityが動作するかチェックする。

Cygwinだと、どうもWindowsに解釈されるので、makefileをチョット修正。

$ cd CMock/vendor/unity
$ emacs makefile
$ make

こんな感じに修正。

#ifeq ($(OS),Windows_NT)    
# TARGET_EXTENSION=.exe
#else
TARGET_EXTENSION=.out
#endif

—————–

#ifeq ($(OS),Windows_NT)
# CLEANUP = del /F /Q build\* && del /F /Q $(TARGET1) && del /F /Q $(TARGET2)
#else
CLEANUP = rm -f build/*.o ; rm -f $(TARGET1) ; rm -f $(TARGET2)
#endif

—————-

./$(TARGET1)

これで174のテストが走る。Great! v(o´∀`o)v

別のコンパイラを試すには、makefileの先頭にC_COMPILER=gccという部分を修正する。

C_COMPILER=g++
C_COMPILER=gcc-3

CMockはデフォルトコンパイラがgccのようだが、他のコンパイラでのテスト方法がかワカラなかった。gccでのテスト方法は、以下を実行する。

$ cd CMock
$ rake

Unity編(p3~)

以下のようにコマンドを実行することで、MenacingLED.c/MenacingLED.h/TestMenacingLED.cができる。

$ ruby auto/generate_module.rb MenacingLED
File /home/TSUNEMICHI/src/unity/book/auto/../src//MenacingLED.c created    
File /home/TSUNEMICHI/src/unity/book/auto/../src//MenacingLED.h created
File /home/TSUNEMICHI/src/unity/book/auto/../test//TestMenacingLED.c created
Generate Complete

次に以下のコマンドでTestMenacingLED_Runner.cができる。

$ ruby auto/generate_test_runner.rb test/TestMenacingLED.c

makefileを編集する。以下の4つを追加する。作成された4つのファイルをコンパイルしてリンクし、実行ファイルを生成。実行する。

# Unity File
SRC_FILES = src/unity.c

# Source Files
SRC_FILES += src/MenacingLED.c
SRC_FILES += test/TestMenacingLED.c
SRC_FILES += test/TestMenacingLED_Runner.c

$ make
rm -f build/*.o ; rm -f book.exe ; mkdir -p build
gcc -Isrc -DTEST -DUNITY_SUPPORT_64 src/unity.c src/MenacingLED.c test/TestMenacingLED.c test/TestMenacingLED_Runner.c -o book.exe

./book.exe
test/TestMenacingLED.c:14:test_MenacingLED_NeedToImplement:IGNORE
-----------------------
1 Tests 0 Failures 1 Ignored
OK

CMock編(p14~)

S5モジュールを生成。

$ ruby auto/generate_module.rb S5    
File /home/TSUNEMICHI/src/unity/book/auto/../src//S5.c created
File /home/TSUNEMICHI/src/unity/book/auto/../src//S5.h created
File /home/TSUNEMICHI/src/unity/book/auto/../test//TestS5.c created
Generate Complete

S5_Exec()をS5.hとS5.cに空実装する。

同様にして、ButtonsとS5モジュールを生成する。

$ ruby auto/generate_module.rb Buttons    
$ ruby auto/generate_module.rb S5Ctrl

Buttons_CheckS5Switch と S5Ctrl_Silenceをヘッダに宣言する。

ここからが書いていないのだが、モックオブジェクトを生成する。以下をカレントディレクトリにコピーしてくる。

  • cmock/lib
  • cmock/config/
  • cmock/src(cmock.cとcmock.hが欲しい)

mocksディレクトリを作成して、cmock生成用のスクリプトを実行する。

$mkdir mocks
$ ruby lib/cmock.rb src/Buttons.h src/S5Ctrl.h
Creating mock for Buttons...
Creating mock for S5Ctrl...

Makefileを編集する。インクルードファイルにもmocksディレクトリを追加。

cmockを利用するためには、unity.cとcmock.cも同時にコンパイルしてやる。最終的なMakefileはこんな感じ

C_COMPILER=gcc 
TARGET_BASE = MenacingLED 
TARGET_BASE2 = S5 
TARGET_EXTENSION=.exe 
TARGET = $(TARGET_BASE)$(TARGET_EXTENSION) 
TARGET2 = $(TARGET_BASE2)$(TARGET_EXTENSION)

# Unity Files 
SRC_FILES   = src/unity.c 
SRC_FILES2  = src/unity.c

# CMock Files 
SRC_FILES  += src/cmock.c 
SRC_FILES2 += src/cmock.c

# Source Files 
SRC_FILES += src/MenacingLED.c 
SRC_FILES += test/TestMenacingLED.c 
SRC_FILES += build/TestMenacingLED_Runner.c

SRC_FILES2 += src/S5.c 
SRC_FILES2 += test/TestS5.c 
SRC_FILES2 += build/TestS5_Runner.c

SRC_FILES2 += mocks/MockButtons.c 
SRC_FILES2 += mocks/MockS5Ctrl.c

INC_DIRS  =-Isrc 
INC_DIRS +=-Imocks 
SYMBOLS=-DTEST -DUNITY_SUPPORT_64

CLEANUP = rm -f build/*.o ; rm -f $(TARGET); rm -f $(TARGET2) ; mkdir -p build

all: clean default

default: 
        ruby auto/generate_test_runner.rb test/TestMenacingLED.c build/TestMenacingLED_Runner.c 
        ruby auto/generate_test_runner.rb test/TestS5.c build/TestS5_Runner.c 
        ruby lib/cmock.rb src/S5Ctrl.h 
        ruby lib/cmock.rb src/Buttons.h 
        $(C_COMPILER) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES) -o $(TARGET) 
        $(C_COMPILER) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES2) -o $(TARGET2) 
        ./$(TARGET) 
        ./$(TARGET2)

clean: 
        $(CLEANUP)