Sinatraのあらかると

記録することで、環境構築で悩まない。

defxを使ってみる

環境

Neovim

Python3.7

Neovimのdein + toml設定は、

私のブログをみていれば環境構築できているはず。

なので、わからないとき検索してもらうことで割愛。

dein.toml

...
[[plugins]]
repo = 'Shougo/defx.nvim'
...

ショートコマンダーを使っていると

:Up

使ってないとき

:UpdateRemotePluigns

※ call dein#install()は起動時にしているものとする

使い方

Defx

・指定場所の一覧を表示してくれる
・これだけでは、Rubyで言う puts Dir.glob('*').sort のようなもの

フォルダの場所を指定

Defx Sample/Sample.rb

この場所を出力してくれる。でも、使ってもあまり意味ない。

これから、Nerdtreeのようになるか、Vimfilerのようになるか。

最新機能、コマンドなど調べ次第、更新していく。

defx.nvim/defx.txt

init.vimに追加

" defx Config: start -----------------

autocmd FileType defx call s:defx_my_settings()
    function! s:defx_my_settings() abort
     " Define mappings
      nnoremap <silent><buffer><expr> <CR>
     \ defx#do_action('open')
      nnoremap <silent><buffer><expr> l
     \ defx#do_action('open')
      nnoremap <silent><buffer><expr> E
     \ defx#do_action('open', 'vsplit')
      nnoremap <silent><buffer><expr> K
     \ defx#do_action('new_directory')
      nnoremap <silent><buffer><expr> N
     \ defx#do_action('new_file')
      nnoremap <silent><buffer><expr> d
     \ defx#do_action('remove')
      nnoremap <silent><buffer><expr> r
     \ defx#do_action('rename')
      nnoremap <silent><buffer><expr> h
     \ defx#do_action('cd', ['..'])
      nnoremap <silent><buffer><expr> ~
     \ defx#do_action('cd')
      nnoremap <silent><buffer><expr> q
     \ defx#do_action('quit')
      nnoremap <silent><buffer><expr> <Space>
     \ defx#do_action('toggle_select') . 'j'
      nnoremap <silent><buffer><expr> j
     \ line('.') == line('$') ? 'gg' : 'j'
      nnoremap <silent><buffer><expr> k
     \ line('.') == 1 ? 'G' : 'k'
      nnoremap <silent><buffer><expr> <C-l>
     \ defx#do_action('redraw')
      nnoremap <silent><buffer><expr> <C-g>
     \ defx#do_action('print')
    endfunction

" defx Config: end -------------------

これで、Vimfilerのように動作する。

起動時に立ち上げたいなら、

autocmd VimEnter * execute 'Defx'

init.vimのコメント( " )を外す(削除する)。これで、1度は起動時に立ち上がっている。

※ 何度か繰り返すときは、:Defxで起動する。

DeniteとDefxを用途によって使い分ける。Dark Power Toolsがまた一段と力を増している。

Defxが真の力を発揮したとき、そのときは記事を新しく書いてまとめたい。

それこそが、闇の力。ダークパワー。進化は止まらない。

[Twitter]

[変更点]

2018/08/19

・Defxの使い方を/doc/defx.txtから読み取れた
・Twitterで会話したのを記録した
・環境を追加した
・vimfilerとショートコマンダーにリンクを貼った
・不要な文に停止線を貼った
・文章を編集・更新・削除した
・指摘があったので、訂正しました。

Rubyで地域の天気予報を取得する

過去にWeather_HackerというRubyGemsがあったことを思い出します。今時は、jsonパースする例を見かけました。これを使って、Rubyで地域の天気予報を取得したいと想います。暑さ対策、熱中症などにならないために、天気予報をチェックして適切な行動をとりたいものです。オンラインで情報があることも、サイトがあることも、とてもいい時代になりましたね。10年前はそんな姿さえなく、私はなるべくこうして記録を書いていたものです。書籍より、訂正も更新も内容の編集もたやすいからですね。情報を共有することは大切なことです。

weather.livedoor.com

rubyコーディング例

require 'net/http'
require 'uri'
require 'json'
require 'time'
require 'date'

uri = URI.parse('http://weather.livedoor.com/forecast/webservice/json/v1?city=170010')
json = Net::HTTP.get(uri)
result = JSON.parse(json)
today_tel = result['forecasts'][0]['telop']
tomor_tel = result['forecasts'][1]['telop']
min_tem = result['forecasts'][1]['temperature']['min']['celsius']
max_tem = result['forecasts'][1]['temperature']['max']['celsius']
des = result['description']['text']
des1 = result['description']['publicTime']
des2 = DateTime.parse(des1)

#puts result
puts ' 天気予報 '.center(60, '-')
puts ''
puts '今日の天気は、' + today_tel + ' でしょう '
puts '最低気温は、' + min_tem + '' + ' でしょう '
puts '最高気温は、' + max_tem + '' + ' でしょう '
puts '明日の天気は、' + tomor_tel + ' でしょう '
puts ''
puts ' 天気予報 '.center(60, '-')
puts ''
puts ''
puts ' 天気概況文 '.center(60, '-')
puts
puts des
puts ''
print ' 天気概況文の発表時刻  '
puts des2.strftime('%Y年%m月%d日 %H時%M分%S秒')
puts ''
puts ' 天気概況文 '.center(60, '-')

出力結果

--------------------------- 天気予報 ---------------------------

今日の天気は、晴のち曇 でしょう
最低気温は、26℃ でしょう
最高気温は、34℃ でしょう
明日の天気は、晴のち曇 でしょう

--------------------------- 天気予報 ---------------------------


-------------------------- 天気概況文 ---------------------------

(気圧配置など)
 東日本は、高気圧に緩やかに覆われていますが、湿った空気が流れ込んで
います。

(天気分布など)
 石川県は、晴れ又は薄曇りとなっています。

(今日の天気 14日)
 高気圧に緩やかに覆われますが、気圧の谷や湿った空気の影響を受ける見
込みです。
 このため、
 石川県では、晴れ夕方から曇りで、加賀の山地を中心に、昼過ぎから夜の
はじめ頃は雨や雷雨で激しく降る所があるでしょう。
 また、高温が予想されます。熱中症の危険が特に高くなる見込みです。暑
さを避け、水分をこまめに補給するなど、十分な対策をとってください。

(明日の天気 15日)
 高気圧に緩やかに覆われますが、気圧の谷や湿った空気の影響を受ける見
込みです。
 このため、
 石川県は、晴れ夕方から曇りで、能登では、夕方から雨の降る所があるで
しょう。

 天気概況文の発表時刻  2018年08月14日 10時44分00秒

-------------------------- 天気概況文 ---------------------------

rubyist.hatenablog.com

以上です。是非、使ってみてくださいませ。

IT企業に入社

10年、はてなブログで環境構築とのちにリリース情報で別ブログを書いてきました。

想えば
・GitHubでレポジトリを作ってzinbeiなどを作りました。
・GitLabインスタンスを立ててプロジェクトを管理しました
・安価なパソコンを解体して仕組みを知りました
・ラズベリーパイで、PCの構造を知りました
・Rubyの記事を書きました
・Sinatraの記事を書きました
・Neovim/vimの話題を書きました
・Emacsの話題と入力補完辞書の話をしました
・Railsについて語りました
・MySQLについて話しました
・JavaでJRubyを使ってみました...など話題が豊富でした

決まるまではほんとに大変だったし、情けないこともありました。しかし今後は、PGとして仕事に就いたので更新の頻度は多くないかもしれませんが、内容の濃いもっと面白い話題を書いていけるように精進します。できれば暖かい目で応援していただければ幸いです。

spacemacsを導入して遭遇した例

qiita.com

SpacemacsというEmacsがあるようなんだ。

なんでも、NeovimでEmacsが動くような時代だと。

導入してみようじゃないか。

qiita.com

問題がある箇所

[[ -z "$TMUX" && ! -z "$PS1" ]] && exec tmux

これ、zshでpreztoやoh-my-zsh使っていたら誤解するところ。tmuxが原因のメッセージ。

焦らず対処しましょう。

deinの設定、最新。

"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath+=~/.config/nvim/repos/github.com/Shougo/dein.vim

" Required:
if dein#load_state('~/.config/nvim')
  call dein#begin('~/.config/nvim')

 let s:toml_dir  = $HOME . '/.config/nvim/rc' 
 let s:toml      = s:toml_dir . '/dein.toml'
 let s:lazy_toml = s:toml_dir . '/dein_lazy.toml'

 " Toml save reading...
 call dein#load_toml(s:toml,      {'lazy': 0})
 call dein#load_toml(s:lazy_toml, {'lazy': 1})

  " Let dein manage dein
  " Required:
  call dein#add('~/.config/nvim/repos/github.com/Shougo/dein.vim')

  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

"End dein Scripts-------------------------
~/.config/nvim (deinの設定先)
~/.config/nvim/rc (dein.tomlの保存先)
~/.config/nvim/repo (deinを設定したあとに出来るフォルダ)

あとの設定は、deoplete、python3_host_progやプラギン用など。

init.vimは164行ありますね。年収にしては少ない値ですが、tomlと合わせれば...なんてね。

※ ~/ の部分は各自のホーム、ユーザ名です

それでも、言うほどではなかった。ぐぬぬ

実際は、想像にお任せします。

そのtomlの参考サイト

github.com

過去のdein記事

takkii.hatenablog.com

takkii.hatenablog.com

回答例

・%を使わない方法

指定はないので、しなかったけれど挑戦はしてフリーズしたので、シンプルに修正。

x = "プロフェッショナル"
y = "ケイスケ"
z = "ホンダ"

(1..100).each do |k|
    case k
    when 30, 30*2,30*3
        print x + y + z
        puts ''
    when 15, 15*2, 15*3,15*4,15*5,15*6
        print y + z
        puts ''
    when 3, 3*2, 3*3, 3*4, 3*6, 3*7, 3*8, 3*9,3*10, 3*11,  3*12, 3*13, 3*14, 3*16, 3*17, 3*18, 3*19,3*20,3*21, 3*22, 3*23, 3*24, 3*26, 3*27, 3*28, 3*29,3*30,3*31,3*32,3*33
        puts y
    when 5, 5*2, 5*4, 5*5, 5*6, 5*7, 5*8, 5*9,5*10,5*11, 5*12, 5*14, 5*15, 5*16, 5*17, 5*18, 5*19,5*20
        puts z
    else
        puts k
    end
end

30の倍数にプロフェッショナルを追加

%を使わずに、いかがでしょうか。

Copyright © 2007-2018 Takayuki Kamiyama. All Rights Reserved.