エンジニアもどきの雑記

メモ帳です。きっと。macアプリ配信windowsでもできるようになるまで絶対にメイン機にしないマン。特筆しない限り環境は【win10home,i5-7200u,8g,64bit,巨乳が好き】

Vimrcごちゃごちゃしすぎてたのでシンプルにした

なにがあったって色々足してたら急にvim-goが死んだ。
わけもわからずに色々詰め込み過ぎてどこかが影響したのだろう。

知っての通り、十月からGoの現場に入れたし、Go以外を書く機会がしばらくないので簡素にした。githubにも上がってるけど、ここにも

" text encoding
set encoding=utf-8
set fileencodings=iso-2022-jp.euc.jp,sjis,utf-8
set fileformats=unix,dos,mac

" set line number
set number

" colorshceme setting
colorscheme elflord
syntax on

" vim-plug
" if vim-plug is not exist
if has('vim_starting')
        set rtp+=~/.vim/plugged/vim-plug
        if !isdirectory(expand('~/.vim/plugged/vim-plug'))
                echo 'install vim-plug...'
                call system('mkdir -p ~/.vim/plugged/vim-plug')
                call system('git clone https://github.com/junegunn/vim-plug.git ~/.vim/plugged/vim-plug/autoload')
        end
endif

call plug#begin('~/.vim/plugged')
Plug 'junegunn/vim-plug', {'dir': '~/.vim/plugged/vim-plug/autoload'}
Plug 'faith/vim-go', { 'do': ':GoInstallBinaries'}
Plug 'scrooloose/nerdtree'
Plug 'Yggdroot/indentLine'
Plug 'terryma/vim-multiple-cursors'
Plug 'jiangmiao/auto-pairs'
Plug 'Shougo/neocomplcache'
Plug 'vim-airline/vim-airline'
call plug#end()

" vim-go settings
let g:go_fmt_command = "goimports"
let g:go_addtags_transform = "camelcase"
let g:go_highlight_types = 1
let g:go_highlight_fields = 1
let g:go_highlight_functions = 1
let g:go_highlight_function_calls = 1
let g:go_highlight_extra_types = 1
let g:go_highlight_build_constraints = 1

" nerdtree settings
nnoremap <silent><C-e> :NERDTreeToggle<CR>

" space settings
autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4

" indentLine settings
let g:indentLine_color_term = 239
let g:indentLine_char = '>'
set list listchars=tab:>.

" multiple cursor
nnoremap :mulc :MultipleCursorsFind

" neocomplcache
let g:acp_enableAtStartup = 0
let g:neocomplcache_enable_at_startup = 1
let g:neocomplcache_enable_smart_case = 1
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
let g:neocomplcache_dictionary_filetype_lists = { 'default' : '' }
inoremap <expr><C-g>     neocomplcache#undo_completion()
inoremap <expr><C-l>     neocomplcache#complete_common_string()
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
function! s:my_cr_function()
  return neocomplcache#smart_close_popup() . "\<CR>"
endfunction
inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
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()

" airline sttings
let g:airline_enable_branch = 0
let g:airline_section_b = "%t %M"
let g:airline_section_c = ''
let s:sep = " %{get(g:, 'airline_right_alt_sep', '')} "
let g:airline_section_x =
                        \ "%{strlen(&fileformat)?&fileformat:''}".s:sep.
                        \ "%{strlen(&fenc)?&fenc:&enc}".s:sep.
                        \ "%{strlen(&filetype)?&filetype:'no ft'}"
let g:airline_section_y = '%3p%%'
let g:airline_section_z = get(g:, 'airline_linecolumn_prefix', '').'%3l:%-2v'
let g:airline#extensions#whitespace#enabled = 0

" move cursor
noremap <S-h> ^
noremap <S-j> }
noremap <S-k> {
noremap <S-l> $

" word comple
nnoremap <C-f> <C-x><C-o>

" highlight text under cursor
nnoremap <silent> <Space><Space> "zyiw:let @/ = '\<' . @z . '\>'<CR>:set hlsearch<CR>"
" delete highlight
nnoremap <silent> <C-l> :<C-u>nohlsearch<CR><C-l>

" tab settings
nnoremap sj <C-w>j
nnoremap sk <C-w>k
nnoremap sl <C-w>l
nnoremap sh <C-w>h
nnoremap sJ <C-w>J
nnoremap sK <C-w>K
nnoremap sL <C-w>L
nnoremap sH <C-w>H

結局わかってないからコピペばかりだわ。
今度ちゃんと勉強しよう。
go書くだけならvim-goの機能とでこれだけでよさそう?
elflordは好きなんだよ

lua入れてなかったのでneocomplcacheで。<C-p>でいいしvim-goの補完あるけど一応。

vim scriptの勉強をどこかのタイミングで使用と思います。

【Go】Api叩く、とコマンドライン引数

お久しぶりです。

件の障害対応が終わりを告げ、今は後片付けというか、
諸々出てしまった不整合データをよしなにしてるところです。

なのでまだまだ忙しいですが、
そんな最中朗報が。

なんと10月からついにGo言語の現場に行けることになりました!

わーわー。

さらばphp。しばらくは戻らないだろう。
phpでできることは大体goの方が早かったり書きやすかったりするので、 phpの現場に行くことがあったり、phpの仕事が舞い込んでこなければ 書く機会自体がないと思う。

嫌いとかヘイトではなくて、ただただそういうことってだけ。

さて、いくつか参考サイトを見ながらフリーapiであるPixabayのapiをgoで叩いてみようと思います。

参考:GolangでAPIを叩く

package main

import (
        "fmt"
        "io/ioutil"
        "net/http"
        "net/url"
)

const ( 
         pixaUrl = "https://pixabay.com/api/?"
         apiKey = "TOKEN"
)

func main() {
        val := url.Values{}
        val.Add("key", apiKey)

        resp, err := http.Get(pixaUrl + val.Encode())
        if err != nil {
                fmt.Println(err)
                return
        }

        defer resp.Body.Close()

        execute(resp)
}

func execute(response *http.Response) {
        body, err := ioutil.ReadAll(response.Body)
        if err != nil {
                fmt.Println(err)
                return
        }

        fmt.Println(string(body))
}


もうまじでほぼそのまま。
tokenの取得とかはぐぐればすぐ出ると思うのでそちらで。

一部抜粋でとりあえず結果

db30c4090f3c67aa1e4b0b8df_1280.jpg","webformatHeight":480,"webformatWidth":640,"likes":33,"imageWidth":4592,"id":3680485,"user_id":1425977,"views":1774,"comments":34,"pageURL":"https://pixabay.com/en/flowers-cosmea-pink-garden-3680485/","imageHeight":3448,"webformatURL":"https://pixabay.com/get/ea33b90f2cfc043ed1584d05fb1d4796e271ebd21db30c4090f3c67aa1e4b0b8df_640.jpg","type":"photo","previewHeight":112,"tags":"flowers, cosmea, pink","downloads":1439,"user":"Heidelbergerin","favorites":7,"imageSize":3451018,"previewWidth":150,"userImageURL":"https://cdn.pixabay.com/user/2018/09/13/14-59-03-278_250x250.jpg","previewURL":"https://cdn.pixabay.com/photo/2018/09/15/23/06/flowers-3680485_150.jpg"}],"total":858500}

こんな感じでjsonデータが返ってきた。
超簡単。

ここからキーワード検索する。

コマンドライン引数で与えたいわけだけど、ググってみるとflagで取得するか、os.Argsで取得するかって二択の様子。
どっちがいいの? 教えてください。

とりあえず今回はflagを利用しましょう。

golangjp: flag パッケージ - golang.jp

import "flag"
して、

var s = flag.String("s", "", "input param s")
取得

falg.Parse()
して、

if *s != "" {
        val.Add("q", *s)
}


チェックして追加
(ここのチェックあってる?

で、検索。
試しに

go run main.go -s cat
とかすると結果がわかりやすい。
虎の画像が出てきたけど。

で、以下になりました。

package main

import (
        "flag"
        "fmt"
        "io/ioutil"
        "net/http"
        "net/url"
)

const (
        pixaUrl = "https://pixabay.com/api/?"
        apiKey  = "TOKEN"
)

var s = flag.String("s", "", "input param s")

func main() {
        val := url.Values{}
        val.Add("key", apiKey)

        flag.Parse()
        if *s != "" {
                val.Add("q", *s)
        }

        resp, err := http.Get(pixaUrl + val.Encode())
        if err != nil {
                fmt.Println(err)
                return
        }

        defer resp.Body.Close()

        execute(resp)
}

func execute(response *http.Response) {
        body, err := ioutil.ReadAll(response.Body)
        if err != nil {
                fmt.Println(err)
                return
        }

        fmt.Println(string(body))
}


以上!

絵の方はもう少し落ち着いてから!

じゃあな!

【日曜日恒例】絵が下手すぎるので書き始めようと思いますpart42,43,44

前回
dddpga1.hateblo.jp

絶賛障害対応中なので更新が滞ってます。
が、隙を見て書くには書いてるのでまとめて載せます。

はやく落ち着くといいなぁ。

外部の何十年もやってる人たちと協力してるけどまだまだ終わらないので、
かなり根が深い様子。

塗ってないのとか塗り途中のとかあるけど↑みたいな現状なので許してね。はーと


f:id:dddpga1:20180825115207j:plain
f:id:dddpga1:20180825115221j:plain
f:id:dddpga1:20180825115234j:plain
f:id:dddpga1:20180825115321j:plain
f:id:dddpga1:20180825115345j:plain

いやー。楽しいよ。
お絵描き。

でも全然進歩しない。
しかも今の障害で普段のコードの勉強もできてないからやばい。

頑張ろう。


ではまた次回

【日曜日恒例】絵が下手すぎるので書き始めようと思いますpart41

前回
dddpga1.hateblo.jp

スマホ向けにdmm..com現fanzaにて
ぬれすけパラダイスってゲームがあった。

ゲーム性は合わなくてすぐやめちゃったんだけど、
そこに出てくる先輩キャラが滅茶苦茶好みだった。

ってのを思い出したので書きました。

そして塗りました。

ついに塗った。

はい。

f:id:dddpga1:20180805223456j:plain

相変わらず模写だし、ペン入れてからミスに気付くけど、
こう見ると成長してるんだなぁって思いこんでます。

part1から最初の内のと見比べると大分進歩したよまじで。
タグから飛べるから是非見比べてみよう。


ではまた次回。

次回
dddpga1.hateblo.jp

iptablesを直接書き換えた時にはreloadしろって先生いいましたよね

すみません先生・・・


/etc/sysconfig/iptables

を直に書き換えたい時ってあるよね。
ipだけ書き換えたい時なんか、vimで入ってyyp
ってして書き換えるだけ。場合によってはそれにC-xとかC-aとかですぐ終わるし。


あるんだよ。

いちいちコマンド打ちたくねー時があるんだよ!


そんな時に編集してsaveってしてもダメです。
ダメでした。
編集前の状態に戻る。

試してないけどプロセスが生きててそこで保持してる値でもったままになるんじゃないかなー。


なので、reloadしてからsave


これで反映されるし、保存されてos再起動しても保持される。

以上!


【日曜日恒例】絵が下手すぎるので書き始めようと思いますpart40

前回
dddpga1.hateblo.jp

ついにpart.40です。ということは十か月です。
全然成長してないのが非常に残念ですが・・・

まぁ、でも。今日は初の試み。


線画を書きました。
ペンを買ってきて、とりあえずなぞりました。
消しゴムをかけました。

次は色を塗りましょう。

少しずつ進歩はしてるよねー


はい。

f:id:dddpga1:20180730020108j:plain

f:id:dddpga1:20180730020148j:plain

全然デジタルに戻らなくなったけど、
お絵描きは楽しいからまたね。
うん。


じゃあまた来週。


次回
dddpga1.hateblo.jp

【日曜日恒例】絵が下手すぎるので書き始めようと思いますpart39

前回
dddpga1.hateblo.jp

いやー。
暑いね。毎日が異常気象状態なのに出社させるとは何事か。

日本は狂ってやがる。

人は熱で死ぬぞ。
殺人者になる前に出社をさせるな。


日本の経営者よ。命を大事に。


はい。

f:id:dddpga1:20180723002612j:plain

スサトさん。
結婚したいゲームキャラNo.1のスサトさん。

今日まじで絵を書く気が起きなくてダラダラ書いてたんだけど、
書いてる内に力が入ってきて今までで一番まともな絵になった気がする。

ただ、気づいたんだけど、書けば書くほど手が汚れて線が汚れてで大変だ。
こういうのってどう避けるというか、対応すればいいんだろう。

また来週

次回
dddpga1.hateblo.jp