タグ

ブックマーク / mattn.kaoriya.net (24)

  • Big Sky :: Vim をモダンな IDE に変える LSP の設定

    Go 言語の IDE 機能を得る為に何か知る必要はありません。Java の IDE 機能を得る為に何か知る必要はありません。HTML の IDE 機能をインストールする為に npm コマンドの使い方を覚えたり、LaTeX の IDE 機能をインストールする為に、配置場所を考える必要もありません。もしインストールを実行しても動かなかったら、それは vim-lsp-settings のバグです。 以前まででれば vim-lsp を導入すると Language Server の登録が必要でした。 if executable('gopls') au User lsp_setup call lsp#register_server({ \ 'name': 'gopls', \ 'cmd': {server_info->['gopls']}, \ 'whitelist': ['go'], \ }) au

    Big Sky :: Vim をモダンな IDE に変える LSP の設定
    Akaza
    Akaza 2020/01/01
  • Big Sky :: ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版

    はじめに 以下の記事では、僕の Vim の構成について記述しています。来はこの記事で vim-lsp の導入方法と私的 Go 編集環境について書こうと思っていましたが、あまりにも長くなってしまったので別途書く事にしました。僕は WindowsLinux しか使わないので、皆さんの環境で使うとうまく動かない可能性があります。また僕は最新の Vim 8 しか使いません。古めの Vim を使いません。neovim も使いません。それらをお使いの方はうまく動かない可能性があります。ご了承下さい。なお設定ファイルの配置スタイルは完全に僕個人の趣味ですので必ずしも僕の構成が正しい訳ではありません。 ぼくのかんがえたさいきょうの Vim こうせい Vim の設定は vimrc に記述するのですが、その設定方法には「汚くさせない」ための工夫が必要だと思っています。以下は僕が行っている「vimrc

    Big Sky :: ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版
    Akaza
    Akaza 2019/12/31
  • Big Sky :: 改訂2版 みんなのGo言語

    2016年、普段から現場でGoを使っている名立たるGoプログラマの皆さんと一緒に「みんなのGo言語」という書籍を執筆させて頂きました。 「みんなのGo言語」は他のリファレンスとは異なり、Go言語の最新事情をお伝えする事に主眼を置いて書きました。 インストール方法や使い方、モダンなテストの書き方、ツールの使い方等も執筆時点での最新情報を書かせて頂きました。 これはとても意義がある事だった感じています。 しかしこれは逆に、時間が経つにつれ執筆した内容が次第に古くなってしまうというリスクを伴います。幾つかの内容は、3年経った現在に合わなくなっている物も出てきました。紹介したツールの中には開発が止まってしまっている物もあれば、執筆時点で制限事項と記したけれども現在では解消している物も出てきています。そればかりではなく新しく追加されたコマンドや機能、新しい制限事項もあります。特に Go Modul

    Big Sky :: 改訂2版 みんなのGo言語
  • Big Sky :: IP アドレスからレンジを引いて CIDR 形式で表示するツールを作った。

    仕事でサーバを運用していると某国からのアタックがそこそこ多いのだけど、出来れば早急にブロックしてしまいたかったので IP アドレスから whois を引いて CIDR 形式で表示出来るツールを作った。昔はこういうの Perl で書いた気がする。 GitHub - mattn/iputil https://github.com/mattn/iputil ライブラリとして作ったけど、コマンドも用意してあります。 $ go get github.com/mattn/iputil/cmd/iprange 実行結果のイメージはこんな感じ。 $ iprange [IPアドレス] XXX.XXX.XXX.XXX/16 YYY.YY.YYY.YY/16 ... あとはこの結果を使って ufw (Universal FireWall) を使っているのであれば $ iprange [ヤバいIPアドレス] |

    Big Sky :: IP アドレスからレンジを引いて CIDR 形式で表示するツールを作った。
  • Big Sky :: ログイン認証をマイクロサービス化する「loginsrv」

    認証を持たないウェブアプリケーションをいざ認証に対応させようと思うと案外面倒でモチベーションを無くしてしまうなんて事もよく起きうる話です。特に社内向けのアプリケーションを作っていたら番で使う事になってしまって、なんて話は良くある話です。開発でDB を見るのはちょっと...。でも既存のコードをゴリゴリと触りたくない。そんな場合にログイン認証部分だけマイクロサービス化できると気持ちも幾分和らぎます。今日はそんなちょっと便利なサーバ「loginsrv」を紹介したいと思います。 GitHub - tarent/loginsrv: JWT login microservice with plugable backends such as OAuth2, Github, htpasswd, osiam loginsrv is a standalone minimalistic login se

    Big Sky :: ログイン認証をマイクロサービス化する「loginsrv」
    Akaza
    Akaza 2017/06/02
  • Big Sky :: Golang の channel の使い所

    golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその groutine と通信する為の仕組みと考えると分かりやすいです。 package main import ( "fmt" "time" ) func main() { task := make(chan string) taskquit := make(chan bool) workerquit := make(chan bool) go func() { loop: for { select { case <-taskquit: workerquit <- true break loop case job := <-task: fmt.Println(job) } } }() go func() {

    Big Sky :: Golang の channel の使い所
    Akaza
    Akaza 2016/07/06
  • Big Sky :: golang の channel を使ったテクニックあれこれ

    golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れていない人であればどう実装すればいいか分からないなんて事もあったと思います。しかし golanggoroutine/channel は、やっている内容の割にとても容易にスレッド間通信やキューイング、処理の受け待ち等を実装できる様になっています。尚、channel をどの様に適用したら良いかについては以下を参照下さい。 Big Sky :: Golang の channel の使い所 golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその grout... http://mat

    Big Sky :: golang の channel を使ったテクニックあれこれ
    Akaza
    Akaza 2016/07/06
  • Big Sky :: Vim の CtrlP matcher、cpsm がヤバイくらいに速すぎる

    Vim で CtrlP を使っている人もそこそこいるかと思いますが、ファイル検索が終わり文字をタイプした時に行を絞り込む部分(マッチャーと言います)がデフォルトの状態だと Vim script を使って処理される為、ファイル数が多くなるとモッサリして来ます。これを解消する為に幾らかの人が頑張っています。 FelikZ/ctrlp-py-matcher - GitHub Fast vim CtrlP matcher based on python https://github.com/FelikZ/ctrlp-py-matcher JazzCore/ctrlp-cmatcher - GitHub CtrlP C matching extension https://github.com/JazzCore/ctrlp-cmatcher junegunn/fzf - GitHub A comma

    Big Sky :: Vim の CtrlP matcher、cpsm がヤバイくらいに速すぎる
    Akaza
    Akaza 2016/01/29
  • Big Sky :: Vim にchannel(ソケット通信機能)が付いた。

    13年前、僕は vim-dev (Vim の開発グループ)に Vim からソケット通信が出来る関数群のパッチを書いて送りました。 Socket functions for vim. - Yahoo! Groups https://groups.yahoo.com/neo/groups/vimdev/conversations/topics/32576 その時は Bram (vimboss) に「PythonPerl インタフェースを使えるやないか、もしくは外部コマンドとか」と返されてしまいました。確かに言語拡張を使えば出来ますし、それに処理がブロッキングだったので実はそれほど有益では無かったかも知れません。 その後、このソケット通信のパッチは vimproc の一部に取り込まれ、シーケンシャルなソケット通信は出来る様になりました。しかし Vim には非同期インタフェースがありません。

    Big Sky :: Vim にchannel(ソケット通信機能)が付いた。
    Akaza
    Akaza 2016/01/29
    Life Changingだ。
  • Big Sky :: Software Design に Vim の Tech記事「Vim の細道」を連載します。

    こんにちわ。Vim 使ってますか?使ってない?使いましょう。 2015年になっても Vim 使ってる人いるの?なんて人もいますが、よく考えて下さい。Vim だけで出版物が何冊もあるんですよ?Vim script は GitHub 上だと Go や R と同じくらい人気のあるプログラミング言語なんですよ?(出展: The RedMonk Programming Language Rankings: June 2015 – tecosystems) 新しいテキストエディタがどんどん出てきて、イケてないテキストエディタはどんどん消えるのに、Vim は未だに人気があるエディタなんですよ?Vim がそんなに根強いのには理由があると思いませんか?使うの難しくて Vim やめてしまったけど、もういちどチャレンジしたいと思いませんか?普段使ってる Vim をもっと便利にしたいと思いませんか? 今も尚進化し

    Big Sky :: Software Design に Vim の Tech記事「Vim の細道」を連載します。
    Akaza
    Akaza 2015/08/20
  • Big Sky :: Windowsでもssh-agentとssh-addを使ってパスフレーズ入力を省略する。

    UN*X版だとssh-agentの実行結果が SSH_AUTH_SOCK=/tmp/ssh-suhGif2116/agent.2116; export SSH_AUTH_SOCK; SSH_AGENT_PID=5672; export SSH_AGENT_PID; echo Agent pid 5672; みたいになっててログイン時に eval `ssh-agent` とするんですがWindowsだと、そう簡単には行かない。 @echo off if not "%SSH_AGENT_PID%" == "" goto end for /f "eol=; tokens=1,2 delims==;" %%1 in ('ssh-agent.exe') do ( if "%%1" == "SSH_AUTH_SOCK" set SSH_AUTH_SOCK=%%2 if "%%1" == "SSH_AG

    Big Sky :: Windowsでもssh-agentとssh-addを使ってパスフレーズ入力を省略する。
    Akaza
    Akaza 2015/03/08
  • Big Sky :: 開発速度を加速するツール、goemon を書いた。

    SPA (Single Page Application) を書いていると、いちいちブラウザをリロードするのが面倒で、かつ js を minify してページをリロードするといった面倒な手間を出来れば何も設定せずにやりたい(もしくは微量な設定だけでやりたい)、という思いから goemon というツールを書きました。 mattn/goemon - GitHub https://github.com/mattn/goemon goemon は、コマンドラインツールとして使います。まず $ goemon -g > goemon.yml で goemon.yml を生成します。個人的にカスタマイズしたい人は生成されたファイルを変更して使って下さい。 # Generated by goemon -g livereload: :35730 tasks: - match: './assets/*.js'

    Big Sky :: 開発速度を加速するツール、goemon を書いた。
    Akaza
    Akaza 2015/02/24
    やったぜ goemon php -S localhost:8080 -t public_html/
  • Big Sky :: IDE としての Vim

    この文章は、http://yannesposito.com/Scratch/en/blog/Vim-as-IDE/ で掲載されている「Vim as IDE」の翻訳文です。 文内の全てはの筆者による物であり、訳文の内容については私による物となります。意訳が若干入っています。間違い等あればご連絡下さい。 Vim as IDE tl;dr: 如何に Vim を効率の良い IDE として使いこなすか Learn Vim Progressively (訳者注: 日語訳)では Vim が如何にテキスト編集に優れ、かつファイルを操縦できる偉大なテキストエディタであるかについて示した。この短い記事では、私が如何にして Vim を IDE として使っているかについて見る事が出来るだろう。そう、主に幾つかの素晴らしいプラグインを使う事により。 1. Vim Plugin Manager Vim のプラグイン

    Big Sky :: IDE としての Vim
    Akaza
    Akaza 2015/02/09
  • Big Sky :: Software Design の Vim 特集に寄稿させて頂きました。

    技術評論社さんの「Software Design 2015年1月号」の Vim 特集に寄稿させて頂きました。 第1章:犬でもわかる!? Vim導入&カスタマイズの超基……林田 龍一 コラム1:「とっつきにくい変態エディタ」だったVimが「私の素敵な相棒」に変わるまで……伊藤 淳一 第2章:IDE並みの機能を軽快な動作で! 実用Tips&対策[プログラマ編]……mattn 第3章:運用作業であわてないために 実用Tips&対策[インフラエンジニア編]……佐野 裕 第4章:vim-markdownという選択 実用Tips&対策[文書作成編]……mattn コラム2:Vimの真のチカラを引き出すパラダイムシフト Vimは編集作業をプログラムにする……MURAOKA Taro (a.k.a. KoRoN) Vimmer なら目次だけでヨダレが出そうな内容です。さらに今回は犬さんこと Linda_

    Big Sky :: Software Design の Vim 特集に寄稿させて頂きました。
    Akaza
    Akaza 2014/12/17
  • Big Sky :: WordPress のトラックバック機能が危ない

    トラックバック/ピンバック機能は XMLRPC というプロトコルが使われているんだけど、WordPress のトラックバック/ピンバック実装に問題があるらしく DDoS となる危険性があるらしい。 詳しくは以下のサイトを見て貰いたい。 More Than 162,000 WordPress Sites Used for Distributed Denial of Service Attack | Sucuri Blog Distributed Denial of Service (DDOS) attacks are becoming a common trend on our blog lately, and tha... http://blog.sucuri.net/2014/03/more-than-162000-wordpress-sites-used-for-distributed

    Big Sky :: WordPress のトラックバック機能が危ない
  • Big Sky :: Sublime Text2 の複数カーソル?それVimでも出来るよ

    Sublime Text2 の複数カーソル、なんかキャッチーだけど、それ Sakura でずいぶん前から出来てたし...。 Vim 使いは正規表現で一括置換するのでそもそも必要ない。 とかいうと「それ実装できない言い訳じゃん」とか言われそうなのでかるーく作ってみた。(実装中途半端) mattn/multi-vim - GitHub https://github.com/mattn/multi-vim なんですか!そのやる気のないプロジェクト名は!!! どんな風に動くかはこちらのページをご覧下さい。(デカいアニメーションgif注意) http://mattn.github.com/multi-vim/ http://mattn.github.com/multi-vim/ 作り続けられる自信があまりありません。

    Big Sky :: Sublime Text2 の複数カーソル?それVimでも出来るよ
    Akaza
    Akaza 2012/11/26
  • Big Sky :: 最近の GNU CoreUtils を使っている限り rm -rf / は --no-preserve-root 付けないと / は消せない

    何に関連して記事を書こうと思った訳でもないです。たんなる一人コードリーディングです。 GNU CoreUtils に入ってる rm を読みました。 GNU Project Archives http://ftp.gnu.org/gnu/coreutils/ 読んだのは coreutils-8.17.tar.xz に入ってる src/rm.c preserve_root 変数は 203行目にある main で int main (int argc, char **argv) { bool preserve_root = true; struct rm_options x; true に初期化されていて319行目 if (x.recursive && preserve_root) { static struct dev_ino dev_ino_buf; x.root_dev_ino = get

    Big Sky :: 最近の GNU CoreUtils を使っている限り rm -rf / は --no-preserve-root 付けないと / は消せない
    Akaza
    Akaza 2012/06/26
  • Big Sky :: VimでDBが操作できる vdbi-vim 作った。

    DB操作ツール Emacs DBI を作ってみた - 技術日記@kiwanami このツールの目的は、クロスプラットフォームで便利なDB操作環境を実現することです。 pgAdmin や MySQL Query Browser のようなGUIの良さをCUIで実現してみようとしてみました。すなわち、ぼくのかんがえたさいきょうのDBツールです。ちなみに、このツールにとってEmacsはただの実行環境です。Emacs使わない人でも使うと便利だと思います。 http://d.hatena.ne.jp/kiwanami/20120305/1330939440 VimもーVimもー! って事で作りました。 mattn/vdbi-vim - GitHub Database client for Vim https://github.com/mattn/vdbi-vim Emacs版はepcというRPCプロト

    Big Sky :: VimでDBが操作できる vdbi-vim 作った。
    Akaza
    Akaza 2012/03/07
    quickrunで満足してるからな…。
  • Big Sky :: Vimで編集中のMarkdownをプレビュー出来るプラグイン書いた

    Vimが良くも悪くも「エディタだ」と言われる要因として「画像や異なるグリフのフォントを同時に出せない」ことを上げられます。つまりVimHTMLやマークダウン等のプレビューを確認する為にいちいちブラウザを起動して確認し、ファイルを更新した際には読み込み直すという面倒な手間が掛かる事を意味しています。 まぁ専用ブラウザを作ればいいんだけど面倒で腰が重かったんだけど、ちょいと作ってみました。 mattn/mkdpreview-vim - GitHub MkdPreview Markdown previewer for vimmer https://github.com/mattn/mkdpreview-vim ファイルタイプがmarkdownなバッファで :MkdPreview! と実行するとプレビューワが起動します。 プレビューワが一度起動している状態なら、以後は他のVimからでも :Mkd

    Big Sky :: Vimで編集中のMarkdownをプレビュー出来るプラグイン書いた
    Akaza
    Akaza 2012/02/09
  • Big Sky :: モテる男のVim script短期集中講座

    ここで関数リファレンスのみ格納先の変数の先頭が大文字になっていますが、これはVim script特有の制限になります。 数値は一般的な言語と同じ様に四則演算できます。文字列については.を用いて連結します。 また文字列は添え字によるアクセスが可能で、pythonの様に echo "hello"[1:3] という記述が出来ます。その他文字列操作関数については:help evalに詳しく記述されています。 また型同士の比較についてはthincaさんの記事が役立ちます。 Vimスクリプト基礎文法最速マスター - 永遠に未完成 Vimスクリプト基礎文法最速マスター vim 流行ってるみたいなので遅ればせながら便乗。需要?何それおいしいの? Perl基礎文法最速マスター - サンプルコードによるPerl入門 Route 477... http://d.hatena.ne.jp/thinca/20100

    Big Sky :: モテる男のVim script短期集中講座
    Akaza
    Akaza 2011/12/02