伊達要一@とうきょうDD954の書棚と雑記

伊達要一の読んだ本の紹介と書評、それと雑記

本日の更新(2017/05/09)


昨晩は25時にゾルピデム*1を5mgとエバミールを服用して就寝するも眠れず。結局27時*2近くまで起きている羽目に。
そんなわけで今朝は8時前起床と寝坊モードでした。

朝から野暮用を片付けて昼をだいぶ過ぎてから病院へ。不眠と昼間の眠気対策で薬の処方を一部変更してもらうことに。ゾロ薬が減った関係で薬代がドカンと跳ね上がるorz

病院近くのコメダ珈琲Wi-fiを提供しているということで、試しにお出かけ。NTT系の回線ということで恐らく面妖なところには繋がらないと思われる*3けれども、1時間単位で一応つなぎ放題ということで、こもって作業するには悪くない環境ではないかと思う次第。ただ、コンセントが無いのが痛いところ。手持ちのCF-RZ4だと、恐らく3時間くらいでバッテリーがドロップしてしまうので。
まあ、タバコを吸いながらPCで作業が出来るのは非常に有り難いですね。このメリットはスターバックスには無いので。あとはコメダ珈琲スターバックスより優れていると思うところは、座席の間のパーテーションですね。出入りしているスターバックスには大概これが無くて非常に気が散るんですが、コメダにはこれがあって非常に集中しやすいです。

ちなみに色々と苦戦していたPythonの環境導入ですが、以下のサイトの情報をもとに上手いこと構築できた……と思われます。正直、これで問題が無いのか? と言われると非常に不安ではありますが。

Python3の環境構築(Linux、Mac) - Python学習講座
qiita.com

順序的には「pyenvの導入」「virtualenvの導入」をやってから、欲しいPythonのバージョンをpyenv経由で導入という順序です。上記サイトのパクりではありますが、メモのためコマンドライン等を以下記述。ちなみにUbuntu 16.04 LTSの場合です。

# git のインストール(すでに入っていれば不要)
sudo apt-get install  -y git

# Pythonインストール時に必要となるモジュール
# (Make関係。入っているものもあった)
sudo apt-get install -y make gcc
sudo apt-get install -y make build-essential
sudo apt-get install -y make libssl-dev
sudo apt-get install -y make zlib1g-dev
sudo apt-get install -y make libbz2-dev
sudo apt-get install -y make libreadline-dev
sudo apt-get install -y make libsqlite3-dev
sudo apt-get install -y make wget
sudo apt-get install -y make curl
sudo apt-get install -y make llvm
sudo apt-get install -y make libncurses5-dev
sudo apt-get install -y make libncursesw5-dev
sudo apt-get install -y make xz-utils
# ホームディレクトリに移動
cd ~/home

# pyenvのclone
git clone git://github.com/yyuu/pyenv.git ~/.pyenv

# virtualenvのclone
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
# ホームディレクトリに移動(念の為)
cd ~/home

# ~/.bashrcに環境変数追記
vim ~/.bashrc

# 以下を末尾に追記する。

# pyenv ini
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
# 追記したら :wq でvimを抜ける
# .bashrcの読み込み
source ~/.bashrc
# pyenvからインストール可能なバージョンを調べる
pyenv install -l
# インストールコマンド
# pyenv install 'バージョン番号'
# 同じバージョンの環境をコピーする
# pyenv virtualenv '元のバージョン' '作成したい環境名'
# インストール済のバージョンと環境の一覧
pyenv versions
# マシン全体で利用するバージョンの設定
# (基本的には使わない方が無難)
# pyenv global 'バージョンや環境名'
# 特定のディレクトリ配下のみ利用するバージョンや環境の設定
# (お遊び利用の場合こちらが無難)
# cd '対象ディレクトリ'
# pyenv local 'バージョンや環境名'
mkdir test_env_dir
cd test_env_dir
pyenv local 3.5.1



ここ数年ですか、本当に記憶力の減退が著しいです。
つぶやきでも書きましたけど短期記憶が特に酷くてふと思いついたことや気になったことを、他のことをやっているとすぐ忘れてしまいます。
思いついた時点でメモをすればいいだけなんでしょうけど……

*1:マイスリーのゾロ薬

*2:夜中の3時

*3:流石に試す勇気はない

本日の更新(2017/05/08)


昨晩は妙に疲れていたらしく21時半には睡眠薬も飲まず寝落ち。
今朝は一度4時ごろに起きて二度寝をしたけども、6時ごろ飼い犬がやたらと騒いでまた目が覚めて、7時ごろにほぼ目が醒めたもののうとうとし続けて結局7時半起床。
この中途半端な睡眠が良くなかったのか日中も眠かったりだるかったりと今一つな一日でした。

本日の更新(2017/05/07)


昨晩は後述する事情により相当に夜更かしモード。25時半過ぎにゾルピデムを10mgとエバミールを服用して就寝。
そういったわけで今朝は大寝坊モードで、11時過ぎの起床でした。本当は朝からやることが山のようにあったのだけども、全て吹っ飛びましたorz



で、何があったかというと、せっかく立てたUbuntu環境をふっ飛ばしてしまいました。
Pythonの環境分離用のアプリである「pyenv」を入れようとしたら、操作をミスったのか環境が吹っ飛びまして。えぇ、Vimすら立ち上がらないとか草も生えません。

昨晩なんとかOSの再インストールと基本的な設定関係をブチこんだんですが、途中で力尽きて就寝したら大寝坊ですよ。

今日は午前・午後と大分グダグダしてたけども、夕方くらいになってようやく重い腰を上げて残りを片付けました。

ちなみにインストール関係に関しては以下のサイトを参照。

Ubuntu 16.04 LTSをインストールした直後に行う設定 & インストールするソフト

UbuntuTips/Desktop/HowToSetCapsLockAsCtrl - Ubuntu Japanese Wiki

qiita.com

Python3の環境構築(Linux、Mac) - Python学習講座

Pyenvの使い方 - Qiita

万が一またふっ飛ばしたときようにインストール手順は作っておいた方がよさげですね。

本日の更新(2017/05/06)


昨晩は中々眠れず25時半前の就寝。ゾルピデム*1を10mgとエバミール服用。
今朝は案の定大寝坊の10時半前起床orz

午後になってUbuntuマシンを持って外出。
昨日買った入門 Python 3を見ながらポチポチ触る。

久々にコードを書く*2と楽しい。

あとは長いこと懸案だったVimのパッケージ管理をNeoBundle.vimからdein.vimへ変更。一部仕様がわからなくてあまりスマートな書き方が出来ない部分があったけど、とりあえず動く状態にはなる。
以下(出来のよろしくない).vimrc

" ########################################
" Yohichi Date's vimrc
"
" update:2017/05/06
" ########################################
" unset vi compatible mode (set vim mode)
if &compatible
  set nocompatible
endif

" Character Code & Line Feed Code
set encoding=utf-8               " vim encoding setting
scriptencoding utf-8             " Vim script file encoding setting
set fileencodings=ucs-bom,iso-2022-jp-3,iso-2022-jp,eucjp-ms,euc-jisx0213,euc-jp,sjis,cp932,utf-8 " File encoding setting(reference: http://itcweb.cc.affrc.go.jp/affrit/faq/tips/vim-enc)
set fileformats=unix,dos,mac     " File line feed setting

" ========================================
" dein.vim & plugin
" reference: http://qiita.com/yoza/items/2f8bd33a18225754f346
" ========================================

" Shougo/dein.vim
set runtimepath+=~/.vim/dein/repos/github.com/Shougo/dein.vim
call dein#begin(expand('~/.vim/dein'))

  " Shougo/vimproc
  call dein#add('Shougo/vimproc.vim', {'build' : 'make'})
  
  " Shougo/neocomplete & Shougo/neocomplcache
  if has('lua')
    call dein#add('Shougo/neocomplete')
      " neocomplete settings
      let g:acp_enableAtStartup = 0 " DISABLE Autocomplpop
      let g:neocomplete#enable_at_startup = 1 " USE neocomplete
      let g:neocomplete#enable_smart_case = 1 " USE smartcase
      let g:neocomplete#sources#syntax#min_keyword_length = 3 " SET minimum syntax keyword length
      let g:neocomplete#lock_buffer_name_pattern = '\*ku\*'
      
      " Define dictionary
      let g:neocomplete#sources#dictionary#dictionaries = {
        \ 'default' : '',
        \ 'vimshell' : $HOME.'.vimshell_hist',
        \ 'scheme' : $HOME.'/.gosh_completions'
      \ }

      " Define keyword
      if !exists('g:neocomplete#keyword_patterns')
        let g:neocomplete#keyword_patterns ={}
      endif

      " Plugin key-mappings
      inoremap <expr><C-g> neocomplete#undo_completion()
      inoremap <expr><C-l> neocomplete#complete_common_string()
      
      " Key-mappings
      " <CR>: close popup and save indent
      inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
      function! s:my_cr_function()
        return neocomplete#close_popup() . "\<CR>"
        " For no inserting <CR> key
        " return pumvisible() ? neocomplete#close_popup() * "\<CR>"
      endfunction
      " <TAB>: completion
      inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
      " <C-h>, <BS>: close popup and delete backword char
      inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>"
      inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"
      inoremap <expr><C-y>  neocomplete#close_popup()
      inoremap <expr><C-e>  neocomplete#cancel_popup()
      " Close popup by <Space>.
      " inoremap <expr><Space> pumvisible() ? neocomplete#close_popup() : "\<Space>"

      " ENABLE omni completion
      autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
      autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
      autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
      autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
      autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

      " Enable heavy omni completion.
      if !exists('g:neocomplete#sources#omni#input_patterns')
        let g:neocomplete#sources#omni#imput_patterns = {}
      endif
  else
    call dein#add('Shougo/neocomplcache')
      " neocomplcache settings
      let g:acp_enableAtStartup = 0              " Disable AutoComplPop.
      let g:neocomplcache_enable_at_startup = 1  " Use neocomplcache.
      let g:neocomplcache_enable_smart_case = 1  " Use smartcase.
      let g:neocomplcache_min_syntax_length = 3  " Set minimum syntax keyword length.

      let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'

      " Define dictionary.
      let g:neocomplcache_dictionary_filetype_lists = {
            \ 'default' : ''
            \ }

      " Plugin key-mappings.
      inoremap <expr><C-g>     neocomplcache#undo_completion()
      inoremap <expr><C-l>     neocomplcache#complete_common_string()

      " Recommended key-mappings.
      " <CR>: close popup and save indent.
      inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
      function! s:my_cr_function()
        return neocomplcache#smart_close_popup() . "\<CR>"
      endfunction
      " <TAB>: completion.
      inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
      " <C-h>, <BS>: close popup and delete backword char.
      inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
      inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
      inoremap <expr><C-y>  neocomplcache#close_popup()
      inoremap <expr><C-e>  neocomplcache#cancel_popup()
  endif

  " Shougo/neosnippet
  call dein#add('Shougo/neosnippet')
  call dein#add('Shougo/neosnippet-snippets')

  " Shougo/unite.vim
  call dein#add('Shougo/unite.vim')

  " mattn/webapi-vim
  call dein#add('mattn/webapi-vim')

  "ctrlpvim/ctrlp.vim"
  call dein#add('ctrlpvim/ctrlp.vim')

  " thinca/vim-quickrun"
  call dein#add('thinca/vim-quickrun')

  " tomtom/tcomment_vim
  call dein#add('tomtom/tcomment_vim')

  " nathanaelkane/vim-indent-guides
  call dein#add('nathanaelkane/vim-indent-guides')

  " haya14busa/incsearch.vim
  call dein#add('haya14busa/incsearch.vim')
  
  " davidhalter/jedi-vim
  " reference: http://myenigma.hatenablog.com/entry/2015/12/28/091342
  call dein#add('davidhalter/jedi-vim')

  " scrooloose/syntastic
  " reference: http://ton-up.net/technote/2013/11/26/vim-python-style-check-and-fix/
  call dein#add('scrooloose/syntastic')
    let g:syntastic_python_checkers = ['pyflakes', 'pep8']

call dein#end()

filetype plugin indent on " TO ENABLE the file type plugin / indent & detection of file type, including the plugin that has been read

" ========================================
" Edit
" ========================================

" Undo contine, before quit or reload Vim contine(7.3)
if version >= 703
  " Persistent undo & Save Undo Data
  set undofile "ENABLE Persistent undo(7.3)
  set undodir=~/.vimbackup "Save Undo Data(7.3)
endif

set clipboard+=unnamed  " Share Clipboard from GUI Copy Text.
set nrformats-=octal  " DISABLE octal. <C-a> & <C-x> (incremental & decrement) is affected.
set timeoutlen=3500    " Time to wait for the completion of the key code and mapped key sequence
set hidden        " It is NOT issued a warning when you open a new buffer from the buffer that does not save your edits
set history=50      " The number of saved history
set formatoptions+=mM  " DO NOT enter a space when you connect the line of Japanese
set virtualedit=block  " ENABLE free cursor when Visual block mode

set autoindent
set backspace=start,eol,indent
set whichwrap=b,s,[,],<,>,~
set mouse=
set nowritebackup    " DISABLE backup before UPDATE.
set nobackup      " DISABLE make backup files. And DELETE writebackup after success update.
set noswapfile      " DISABLE make swap files.

set ambiwidth=double  " To make sure 2bytes character.

" ========================================
" KeyMap
" ========================================
nmap <silent> <Tab> 15<Right>
vmap <silent> <Tab> <C-o>15<Right>
nmap <silent> <S-Tab> 15<Left>
vmap <silent> <S-Tab> <C-o>15<Left>

nmap <silent> <C-n>      :update<CR>:bnext<CR>
imap <silent> <C-n> <ESC>:update<CR>:bnext<CR>
vmap <silent> <C-n> <ESC>:update<CR>:bnext<CR>
cmap <silent> <C-n> <ESC>:update<CR>:bnext<CR>

nnoremap Y y$

" ========================================
" Display
" ========================================

set number " To display line number.

"""""""""""""""""""""""
" バックグラウンドが黒のときの色設定
"""""""""""""""""""""""
highlight StatusLine ctermfg=black ctermbg=gray
highlight CursorLine ctermfg=none ctermbg=darkgray cterm=none
highlight MatchParen ctermfg=none ctermbg=darkgray
highlight Comment ctermfg=DarkGreen ctermbg=NONE
highlight Directory ctermfg=DarkGreen ctermbg=NONE

set shortmess+=I " DISABLE splash(shortmessage)
"エラー時の音とビジュアルベルの抑制(gvimは.gvimrcで設定)
set noerrorbells
set novisualbell
set visualbell t_vb=
"マクロ実行中などの画面再描画を行わない
set lazyredraw
"Windowsでディレクトリパスの区切り文字表示に / を使えるようにする
set shellslash
"括弧の対応表示時間
set showmatch matchtime=1
"タブを設定
set ts=4 sw=4 sts=4

"Cインデントの設定
set cinoptions+=:0
"タイトルを表示
set title
"コマンドラインの高さ (gvimはgvimrcで指定)
set cmdheight=2
set laststatus=2
"コマンドをステータス行に表示
set showcmd
"画面最後の行をできる限り表示する
set display=lastline
"Tab、Space、行末の半角スペースを明示的に表示する
set list
set listchars=tab:>.,trail:_,extends:>,precedes:<,nbsp:%

set display+=lastline

""""""""""""""""""""""""""""""
"ステータスラインに文字コードやBOM、16進表示等表示
"iconvが使用可能の場合、カーソル上の文字コードをエンコードに応じた表示にするFencB()を使用
"// TODO:reference書く
""""""""""""""""""""""""""""""
if has('iconv')
  set statusline=%<%F\ %m\ %r%h%w%{'['.(&fenc!=''?&fenc:&enc).(&bomb?':BOM':'').']['.&ff.']'}%=[0x%{FencB()}]\ (%v,%l)/%L%8P\_
else
  set statusline=%<%F\ %m\ %r%h%w%{'['.(&fenc!=''?&fenc:&enc).(&bomb?':BOM':'').']['.&ff.']'}%=\ (%v,%l)/%L%8P\_
endif

function! FencB()
  let c = matchstr(getline('.'), '.', col('.') - 1)
  let c = iconv(c, &enc, &fenc)
  return s:Byte2hex(s:Str2byte(c))
endfunction

function! s:Str2byte(str)
  return map(range(len(a:str)), 'char2nr(a:str[v:val])')
endfunction

function! s:Byte2hex(bytes)
  return join(map(copy(a:bytes), 'printf("%02X", v:val)'), '')
endfunction

set wildmenu wildmode=list:full

" ハイライトを有効にする
if &t_Co > 2 || has('gui_running')
  syntax on
endif

"色テーマ設定
"gvimの色テーマは.gvimrcで指定する
syntax on
let g:molokai_original = 1
let g:rehash256 = 1
set background=dark
colorscheme molokai

""""""""""""""""""""""""""""""
"全角スペースを表示
" TODO: reference:書く
""""""""""""""""""""""""""""""
" デフォルトのZenkakuSpaceを定義
function! ZenkakuSpace()
  highlight ZenkakuSpace cterm=reverse ctermfg=darkMagenta gui=reverse guifg=darkMagenta
endfunction

if has('syntax')
  augroup ZenkakuSpace
    autocmd!
    " ZenkakuSpaceをカラーファイルで設定するなら次の行は削除
    autocmd ColorScheme       * call ZenkakuSpace()
    " 全角スペースのハイライト指定
    autocmd VimEnter,WinEnter * match ZenkakuSpace / /
  augroup END
  call ZenkakuSpace()
endif

""""""""""""""""""""""""""""""
"挿入モード時、ステータスラインの色を変更
"TODO:reference書く
""""""""""""""""""""""""""""""
let g:hi_insert = 'highlight StatusLine guifg=darkblue guibg=darkyellow gui=none ctermfg=blue ctermbg=yellow cterm=none'

if has('syntax')
  augroup InsertHook
    autocmd!
    autocmd InsertEnter * call s:StatusLine('Enter')
    autocmd InsertLeave * call s:StatusLine('Leave')
  augroup END
endif
if has('unix') && !has('gui_running')
  " ESCでキー入力待ちになる対策
  inoremap <silent> <ESC> <ESC>
endif

let s:slhlcmd = ''
function! s:StatusLine(mode)
  if a:mode == 'Enter'
    silent! let s:slhlcmd = 'highlight ' . s:GetHighlight('StatusLine')
    silent exec g:hi_insert
  else
    highlight clear StatusLine
    silent exec s:slhlcmd
    redraw
  endif
endfunction

function! s:GetHighlight(hi)
  redir => hl
  exec 'highlight '.a:hi
  redir END
  let hl = substitute(hl, '[\r\n]', '', 'g')
  let hl = substitute(hl, 'xxx', '', '')
  return hl
endfunction

" ========================================
" Search
" ========================================
" 検索時にハイライトを解除する
set nohlsearch

"検索の時に大文字小文字を区別しない
"ただし大文字小文字の両方が含まれている場合は大文字小文字を区別する
set ignorecase
set smartcase
"検索時にファイルの最後まで行ったら最初に戻る
set wrapscan
"インクリメンタルサーチ
set incsearch
"検索文字の強調表示
set hlsearch
"w,bの移動で認識する文字
set iskeyword=a-z,A-Z,48-57,_,.,-,>
"vimgrep をデフォルトのgrepとする場合internal
"set grepprg=internal

" ========================================
" Plugin Settings
" ========================================
" ----------------------------------------
" neosnippet
" ----------------------------------------
" Plugin key-mappings.
imap <C-k>     <Plug>(neosnippet_expand_or_jump)
smap <C-k>     <Plug>(neosnippet_expand_or_jump)
xmap <C-k>     <Plug>(neosnippet_expand_target)

" SuperTab like snippets behavior.
imap <expr><TAB> neosnippet#expandable_or_jumpable() ?
  \ "\<Plug>(neosnippet_expand_or_jump)"
  \: pumvisible() ? "\<C-n>" : "\<TAB>"
smap <expr><TAB> neosnippet#expandable_or_jumpable() ?
  \ "\<Plug>(neosnippet_expand_or_jump)"
  \: "\<TAB>"

" For snippet_complete marker.
if has('conceal')
  set conceallevel=2 concealcursor=i
endif

" ----------------------------------------
" unite
" ----------------------------------------
" STARTING at INSERT MODE
" let g:unite_enable_start_insert=1
" バッファ一覧
nnoremap <silent> ,ub :<C-u>Unite buffer<CR>
" ファイル一覧
nnoremap <silent> ,uf :<C-u>UniteWithBufferDir -buffer-name=files file<CR>
" レジスタ一覧
nnoremap <silent> ,ur :<C-u>Unite -buffer-name=register register<CR>
" 最近使用したファイル一覧
nnoremap <silent> ,um :<C-u>Unite file_mru<CR>
" 常用セット
nnoremap <silent> ,uu :<C-u>Unite buffer file_mru<CR>
" 全部乗せ
nnoremap <silent> ,ua :<C-u>UniteWithBufferDir -buffer-name=files buffer file_mru bookmark file<CR>
" ウィンドウを分割して開く
au FileType unite nnoremap <silent> <buffer> <expr> <C-j> unite#do_action('split')
au FileType unite inoremap <silent> <buffer> <expr> <C-j> unite#do_action('split')
" ウィンドウを縦に分割して開く
au FileType unite nnoremap <silent> <buffer> <expr> <C-l> unite#do_action('vsplit')
au FileType unite inoremap <silent> <buffer> <expr> <C-l> unite#do_action('vsplit')
" ESCキーを2回押すと終了する
au FileType unite nnoremap <silent> <buffer> <ESC><ESC> q
au FileType unite inoremap <silent> <buffer> <ESC><ESC> <ESC>q

" ----------------------------------------
" ctrlp
" ----------------------------------------
" Prefix: s
nnoremap s <Nop>
nnoremap sa :<C-u>CtrlP<Space>
nnoremap sb :<C-u>CtrlPBuffer<CR>
nnoremap sd :<C-u>CtrlPDir<CR>
nnoremap sf :<C-u>CtrlP<CR>
nnoremap sl :<C-u>CtrlPLine<CR>
nnoremap sm :<C-u>CtrlPMRUFiles<CR>
nnoremap sq :<C-u>CtrlPQuickfix<CR>
nnoremap ss :<C-u>CtrlPMixed<CR>
nnoremap st :<C-u>CtrlPTag<CR>

let g:ctrlp_map = '<Nop>'
" Guess vcs root dir
let g:ctrlp_working_path_mode = 'ra'
" Open new file in current window
let g:ctrlp_open_new_file = 'r'
" let g:ctrlp_extensions = ['tag', 'quickfix', 'dir', 'line', 'mixed']
let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:18'

" ----------------------------------------
" vim-indent-guides
" ----------------------------------------
let g:indent_guides_enable_on_vim_startup = 1

" ----------------------------------------
" incsearch.vim
" ----------------------------------------
map / <Plug>(incsearch-forward)
map ? <Plug>(incsearch-backward)
map g/ <Plug>(incsearch-stay)

ちなみに電源コードは持っていかずバッテリのみ運用だったけども、実質2時間強フルにPCを使ってどうにかバッテリーが保ったので、まあ数年落ちウルトラブックとしては許容範囲かな。

*1:マイスリーのゾロ薬

*2:「コードを書く」と言うほど大げさなことはやっていないが

本日の更新(2017/05/05)


昨晩は24時半過ぎにゾルピデム*1を10mgとエバミールを服用して就寝…… のはずが、不眠モード。結局寝たのは25時半過ぎくらいか。
今朝はそれでも7時過ぎに起床。そこそこしゃっきりしていたので、まずまずな感じですね。



昨晩、ブログを更新してからCF-RZ4にUbuntu 16.04 LTSを導入。最初は手順を考えて色々進めようと思ってたんですが、とりあえず入れてみて試行錯誤してみようということで急転直下の導入作業です。
とりあえず、Ubuntuを突っ込んでチョコチョコ設定を直したりしながら程度を進めてます。

で、明けて今日、Vimを突っ込んでほぼほぼ出先であれこれ出来るような状態になりました。これで長らく滞っていたFDの企画もしっかり進められると良いんですが。



午前中、布団を干したりする関係もあって自宅にこもってUbuntuマシンを弄っていたんですが、午後になって外出。図書館へ立ち寄ってから行きつけの喫茶店でWi-Fiに繋いで遊んでました。
ヘビー・スモーカーの類なもので、タバコが吸えない店は基本的に避けている*2こともあって、Wi-Fiが使えてタバコが吸えるこの店は大変貴重なものです。

それにしても毎回エラい量の資料を担いで出かけているもので、体中がバキバキになりますね。どうしても資料が無いと話にならないようなことをやっているので仕方がないんですが。



そんなわけで出先から追っかけていました>世界コンピュータ将棋選手権
自宅のマシンで大合神クジラちゃんのクライアントを走らせていたこともあって気になっていたんですが、堂々の4位でした。比較的プリミティブな評価関数と物量勝負なクラスタリングでここまで戦えたのはかなり面白い結果だと思います。

今回優勝したelmoですが、以下の記事を見ると評価関数と定跡のみで実行バイナリ自体にはそれほど独自性があるわけじゃないんですよね。これも非常に面白いところで、ディープラーニングのような手法で進化させているPonanzaとはある意味で別ベクトルを向いているようにも見えます。
ritomath-shogi.hatenablog.com

私自身は相当なヘボ将棋だからそこまでレベルの高いプログラム自体、触りたいという気持ちは無いのだけども、技術的には非常に興味深いところですね。



上述の通りUbuntuマシンの環境設定がほぼ終わったこともあって、早速Pythonの入門書を買っちゃいました。

つくづく「オライリー高ェ」と思ってならないわけですが、まあそこはしゃあないということで。

*1:マイスリーのゾロ薬

*2:スターバックスコーヒーはこの時点で対象外になる