タグ

ブックマーク / tyru.hatenablog.com (52)

  • Vim で端末ウィンドウを複製する - Humanity

    Vim で端末ウィンドウを使ってるとスクロールされた出力を見たくなる時があると思います。 ただシェルでコマンド実行中なので、 <C-w>N すると出力も止まってしまう。なるべくなら出力を止めたくないと思います(たぶん)。 そういう時は以下を vimrc に貼り付ければ <C-w>y で端末ウィンドウの複製バッファができます。色とかもそのまま。 追記 (9/25) すみません、以下のコードだとやっぱりスクロールされた出力は見れませんでした…直すのでお待ちください…というか誰か直してください… tnoremap <C-w>y <C-w>:<C-u>call <SID>dup_term_buf()<CR> function! s:dup_term_buf() abort let file = tempname() call term_dumpwrite('', file) call term_d

    Vim で端末ウィンドウを複製する - Humanity
  • AppVeyor で Go のバージョンを固定する方法 - Humanity

    的に Go アプリのテストは以下を参考にしたら概ねうまく言ってたんだけど、 (最新じゃなく)バージョン固定してる場合に問題となったため書いておく。 blog.markvincze.com 起こった問題 最近 AppVeyor の Go のバージョンが上がって Go 1.10 をデフォルトで使うようになった。 上記記事の設定だと GOROOT の定義が抜けてるために以下のようなエラーが出るようになった。 compile: version "go1.10" does not match go tool version "go1.9.4" 対応策 GOROOT 設定すればいいだけ。 今開発してる Volt というツールでは Go 1.9 でテストしたかったので以下のように指定した。 他のバージョンまたはアーキテクチャでテストしたい場合は C:\go19 じゃなく別のパスにする必要がある。 v

    AppVeyor で Go のバージョンを固定する方法 - Humanity
    atm_09_td
    atm_09_td 2018/03/18
  • netupvim で Windows でも最新の Vim を追いかけよう - Humanity

    これは Vim Advent Calendar 2017 その2 の21日目の記事です。 github.com 内容は上記リポジトリの README.md のパクリです。 netupvim 便利だよ!って事が言いたかった。 序文 WindowsVim を使っているとふと最新の Vim を欲しい時があります。 そんな時 netupvim があればダブルクリックで最新の Vim を取得できます。 最新の Vim をサクッと持ってくる リリースから以下のファイルを含むフォルダを解凍し、そのまま UPDATE.bat を実行するだけです。 netupvim.exe UPDATE.bat RESTORE.bat …が、ちょっと待ってください。 今回は最新版の Vim が欲しいのでしたが、普通に実行すると少し古めの Kaoriya の安定版がダウンロードされてきてしまいます。 netupvim

    netupvim で Windows でも最新の Vim を追いかけよう - Humanity
  • Vim 8 時代のがんばらないプラグイン管理のすすめ - Humanity

    これは Vim Advent Calendar 2017 の20日目の記事です。 皆さん Vim しておられるでしょうか。 Yes と答えた方、プラグインマネージャーは使っていますか? 巷では Vim のプラグイン管理にはプラグインマネージャーを入れる必要があるかのような勢いで「まずプラグインマネージャーを入れる」といった記事が沢山ありますが、 個人的にはプラグインマネージャーより Vim 標準で使える パッケージ機能 をまず試してみてほしいです。 この機能はざっくり言うと「ディレクトリ以下に置いたプラグインを読み込む」ほぼそれだけですが、必要十分な機能は揃っていると思います。 またちょっとの工夫であなたの使っているプラグインマネージャーの機能も代替できるかもしれません。 もしかしたらプラグインマネージャーほどの多機能さは必要ないことに気付くかもしれませんよ? 記事ではそんな多機能は求め

    Vim 8 時代のがんばらないプラグイン管理のすすめ - Humanity
  • Windows Subsystem for Linux で便利な alias (clip) - Humanity

    alias clip=/mnt/c/Windows/System32/clip.exe echo Hello | clip とかしてクリップボードにコピーできて便利。

    Windows Subsystem for Linux で便利な alias (clip) - Humanity
  • :terminal コマンドが使える Windows 版 Vim の配布状況 (2017/09/15 時点) - Humanity

    tyru.hatenablog.com この記事を書いた後 Windows でも :terminal コマンドが使える Vim が配布されるようになったのでその配布状況をメモしておく。 Vim バイナリの配布 URL 一覧 まず初めに Vim のバイナリへのリンク集を vim-jp では提供しているので貼っておく。 *1 Redirects このリンクの「Vim official binary」と付いてるものが :terminal コマンドに対応しています(現時点では)。 方法その(1): Vim official binary を使う というわけで、Vim official binary のバイナリをダウンロードすれば、すぐに :terminal コマンドが使える GVim が手に入る。 github.com ただ +kaoriya ではないので細かい部分で差異があります。 例えば家の

    :terminal コマンドが使える Windows 版 Vim の配布状況 (2017/09/15 時点) - Humanity
  • open-browser.vim で Windows Subsystem for Linux 上の Vim から URL 開けるようになった - Humanity

    github.com これで WSL 上であろうとなかろうと意識せず URL を開けるはずです。 最近は WSL の Vim ばっかり使ってるので個人的にうれしい機能追加です(追加したの自分だけど)。 WSL は Windows の世界と分断されてると思い込んでたのですが、 /mnt で Windows のファイルシステムを触れるのは知ってたものの、 Windows の実行ファイル(PE フォーマットの実行ファイル)も起動できるのは知りませんでした。 bash から /mnt/c/Windows/System32/notepad.exe とか開けるんですね。 というわけで直接 Windows で動いてる Vim *1 でも叩いてる rundll32.exe を直接叩いて URL を渡すだけでした。あっけない。 *1:この表現は誤解を招くような… WSL も同じサブシステム上で動いてるし。な

    open-browser.vim で Windows Subsystem for Linux 上の Vim から URL 開けるようになった - Humanity
  • Go 言語の range は2番目の返り値に同じ参照を返す場合がある - Humanity

    言葉で説明するのだるいので次のコードを見てください。 package main import ( "fmt" ) func main() { array := []int{1, 2, 3} // これだと &a が同じアドレスになってしまうことがある // (range は array[i] のコピーを返す) for i, a := range array { fmt.Printf("%d: %p\n", i, &a) } // こうするか fmt.Println("----------------------------") for i := range array { a := array[i] fmt.Printf("%d: %p\n", i, &a) } // こうしないといけない fmt.Println("----------------------------") for i

    Go 言語の range は2番目の返り値に同じ参照を返す場合がある - Humanity
    atm_09_td
    atm_09_td 2017/08/27
  • Vim の :terminal がもたらすもの - Humanity

    追記 記事を書いた後いろいろ状況が変わって :terminal コマンドが使える Vim が配布されるようになったので、 とりあえず現時点(2017/09/15)での状況を書きました。 tyru.hatenablog.com 序文 今絶賛開発中の Vim の :terminal コマンドについて書こうと思う。 :terminal コマンドを実行するとシェルが開き、Vim 上で操作することができる、というもの。 つまり実質的に Vim は端末ソフトウェアとなった。 その上 Vim script で端末上の様々な内容にアクセスしたり変更することができる。 expect コマンド、parallel-ssh のようなツールを Vim script で自作することも可能となった。 しかし、すでにそれらのコマンドがある以上 Vim プラグインで実現する必要性は薄いだろう。 Vim の :termin

    Vim の :terminal がもたらすもの - Humanity
  • 最近知った top コマンド tips - Humanity

    今更すぎるけど便利だったので。 top で起動した後に M でメモリ使用量が多い順にソートできる。 P で CPU 使用率。 そしてさらにデフォルトではプログラムの引数は表示されていないが、c と打つと表示できる。 例えば KVM 上で動かしている VM のプロセスをメモリ使用順に並べたい場合、 top で起動した後に M でソートしただけだと VM のプロセスは全て qemu-kvm としか表示されないが、 c を打つと引数も表示されるので何の VM か分かったりする。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 25165 qemu 20 0 3728792 2.960g 7532 S 4.3 19.2 208:59.85 qemu-kvm 25569 qemu 20 0 2679196 1.929g 4488 S 2.6

    最近知った top コマンド tips - Humanity
  • Bash on Windows のショートカット実行で .bash_profile を読み込ませたい - Humanity

    ショートカットはこれ。 自分の場合 C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Bash on Ubuntu on Windows.lnk にインストールされてた。 結論としては ~/.profile に -f ~/.bashrc && . ~/.bashrc を書いて BoW のショートカットのパスは C:\Windows\System32\bash.exe ~ --login(--login を追加)にすれば無事 ~/.profile が読み込まれる。 --login を指定しただけだとコンソールで色が付かなくなるが、なぜかというと ~/.bashrc で環境変数 PS1 を設定してプロンプトに色を付けている ~/.bashrc が読み込まれるのは「対話シェル(-i)」かつ「ログインシェル(–l

  • Windows での最速 Node.js 環境構築 - Humanity

    Windows での Node 環境のセットアップが楽になってるな。npm install -g windows-build-tools だけで済むようになってる。もう手動で Python とかインストールしなくていいのか。 https://t.co/r9KDFUp23Z— tyru (@_tyru_) 2017年3月12日 というわけで Windows で Node.js 環境をセットアップする方法をまとめてみる(もしかして前からこれぐらい簡単だったのかもしれないけど…)。 1. Nodist をインストール Node.js を直接インストールせず、まずは Nodist をインストールする。 github.com 今だと v0.8.8 が最新だった。 2. windows-build-tools をインストール 次に管理者権限で Powershell を起動*1して、npm instal

    Windows での最速 Node.js 環境構築 - Humanity
  • Java の Web アプリで色んなコードを共通化したい - Humanity

    この記事は Java EE Advent Calendar 2016 5 日目の記事です。 昨日は lbtc_xxx さんの「JPA Builder パターン」 でした。 明日は glory_of さんです。 Java の Web アプリを書く時、共通化したいけどどうすればいいか、 どう書くのが推奨されているのかをまとめてみました。 Java をガッツリやるようになったのは最近なので、間違った事を言ってたら指摘して頂けると助かります。 共通のプロパティが色んなクラスで増えてきた (CDI の @Produces) JAX-RS の @Produces (javax.ws.rs.Produces) と混同しないようにしましょう。 基底クラス作って継承するとなると、基底クラスが fat になりがちで、テストする時に対象のメソッド以外にも色々セットアップしなきゃならなくなったりして面倒です。 他

    Java の Web アプリで色んなコードを共通化したい - Humanity
  • Java 8 でインスタンスを遅延して構築するいくつかの方法 - Humanity

    シングルトンを構築するには、enum を使うのがスレッドセーフだしお手軽です。 なぜなら enum の初期化は1つのスレッドから1度だけ行われると規定されているからです。 また、コンストラクタを private にしてもコンパイルエラーにはならず、何の問題もなく初期化できます。 @ApplicationScoped class EntityManagerProducer { @Produces public EntityManager getEntityManager() { return EntityManagerSingleton.INSTANCE.get(); } private static enum EntityManagerSingleton { INSTANCE; private EntityManager em; private EntityManagerSingleton

    Java 8 でインスタンスを遅延して構築するいくつかの方法 - Humanity
  • DB 設計と URL 設計、SPA、バックエンドについてダラダラと書いた - Humanity

    昨日 Web アプリの DB 設計をちゃんとやろう、と思ってふとノートに色々と書いていた。 その時に何となく感じる事があったのでメモする。 色々当たり前の事も書いてあると思うけど、わざわざブログに書いてるのは、自分の中で一頭の中の線が繋がった気がしたから、書き留めておきたいと思った。 ただ、以下の文章は自分でも何度も同じような事を冗長に書いてるなーと思う。 それは恥ずかしながら自分がこれまで DB 定義を見る事はあっても、自分でまともに DB 設計をしたのってこれがほぼ初めてのような気がするので、 初めての分野なら、冗長で拙くて読みづらいのはしょうがないと思って、自分の考えの整理のために書き殴る事にした。 SPA や API-first で設計を行っていく事が多くなるにつれ、これらのアプリはより DB 設計が重要となってくると思う。 画面、APIDB のどこを起点として設計を始めるか、

    DB 設計と URL 設計、SPA、バックエンドについてダラダラと書いた - Humanity
  • 最近の Java EE について調べてみた - Humanity

    私は仕事Java に関わってきましたが、実質仕事で関わってきたプロジェクトはまだ3~4年ぐらい、 そしてそのプロジェクトの中にはいくつかコードを書く仕事ではなく Excel 仕事がメインというプロジェクトもあり、 正直言うとあまり積極的に Java に関わろうとはしませんでした。 そんな自分が最近、自宅サーバを管理する時にちょっとした Web アプリ(というか Web GUI)がほしいと思って Java で作ろうと思って色々調べた程度のまとまらない文章なので、 以下の文章は沢山の間違いを含むと思います。よって識者の方のコメントをお待ちしています。 最近は(という程最近でもないけど)Java SE 環境でも Java EE の機能がある程度使えるようになってきた。 それを後押しした *1 のが、Spring Boot、 Dropwizard、 WildFly Swarm、Payara M

    最近の Java EE について調べてみた - Humanity
  • 非対話的に ~/.ssh/known_hosts を更新 - Humanity

    qiita.com 基は上記記事の host="target-hostname" ssh-keygen -R $host ssh-keyscan -H $host >> ~/.ssh/known_hosts でいいのだけど、(少なくとも自分の環境だと) ssh-keyscan で出力した1列目のカラムにホスト名しか出力されず、 その後別のレコード(行)としてIPアドレスが登録されてしまっていた。 hoge ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCq9UXuh/sKm4oBs68VlfAvjc/WaV83brTXkoTOLr2339XxMMzDQQ1FX9jP4Ie6rUfoDrvA1t8N2peJoG2e1rvPgtNAabZxz92l0V1+XYYhEf6Y0n0ZzXv4pf+YWfcj6VtXcQaoaxQ0PieREStTluOShAdA8

    非対話的に ~/.ssh/known_hosts を更新 - Humanity
  • React 入門以前 (Windows で環境構築) - Humanity

    犬さんにいろいろ教えてもらった。 @Linda_pp さんて今 TypeScript + React で NyaoVim とか書いてる感じですか?今 ES6 と TypeScript どっちがいいかなぁと思ってるのですが…— tyru (@_tyru_) June 24, 2016 @_tyru_ はい,型チェックがほしい+豊富な型定義の資産が使いたいので TypeScript で書いてます (NyaoVimReact でなく Polymer ですが).どっちが良いかは一概には言えないと思います.最近だと Flow 使っている人もちらほらいますし.— 3歳 (@Linda_pp) June 24, 2016 @_tyru_ これから React さわってみるかという感じですか?それなら書き慣れている JS のほうが絶対良いです.TypeScriptJavaScript は差分小

    React 入門以前 (Windows で環境構築) - Humanity
  • Vim runtime で必須そうなファイルを調べてみた - Humanity

    @todesking 必須そうなの選別しました。ご査収ください (Vim 体のソースコードからこれらのファイルのみ持ってきて $VIMRUNTIME 環境変数セットすればいけそう) https://t.co/OhumjyeU10— tyru (@_tyru_) February 22, 2016 Vim runtime files (at 7.4.1386) - Google スプレッドシート これらのファイルを Vim のソースコードから取得してコミットするスクリプトを Travis CI で回せば自分だけの runtime ディレクトリが作れますね。 Vim のソースコードを検索して探したりもしましたが、文字列連結で Vim script を実行させたりしている邪悪な部分などもあり、うまく拾えてないファイルもあるかもしれません。 よってあくまで参考程度にして下さい。そしてツッコミお待

    Vim runtime で必須そうなファイルを調べてみた - Humanity
  • Perl で $HOME 以下にモジュールやコマンドをインストールして使用するための環境変数の設定 - Humanity

    dlnico.plを久しぶりに更新した - Humanity 上の記事にもちょろっと書いたんですが、Perlで cpanm のデフォルトインストール先を $HOME にする perl コマンドでインストールしたモジュールを使用できるようにする cpanm コマンドでインストールしたモジュール付属のコマンドを使用できるようにする ための設定。 想定 .bash_profile に書く $HOME/perl5 にインストールする 設定 mkdir -p $HOME/perl5 # 1. cpanm のデフォルトインストール先を $HOME にする export PERL_CPANM_OPT="-L $HOME/perl5" # 2. perl コマンドでインストールしたモジュールを使用できるようにする [ "$PERL5LIB" ] && export PERL5LIB="$HOME/perl

    Perl で $HOME 以下にモジュールやコマンドをインストールして使用するための環境変数の設定 - Humanity
    atm_09_td
    atm_09_td 2016/02/14