ためすう

vim で EditorConfig を使う

2018-07-01

使ってみる

NeoBundle でインストールします

~/.vimrc で追記します

NeoBundle 'editorconfig/editorconfig-vim'

~/.editorconfig

[*]
trim_trailing_whitespace = true

[*.php]
tab_width = 4

参考

jekyll でページネーション

2018-06-30

目的

jekyll でページネーションの実現方法について調べました。

方法

jekyll のバージョン確認

$ bundle list | grep jekyll
  * jekyll (3.5.2)
  * jekyll-feed (0.9.2)
  * jekyll-paginate (1.1.0)
  * jekyll-sass-converter (1.5.0)
  * jekyll-watch (1.5.0)

上記にあるように jekyll のバージョンは 3.5.2 です。

Gem ファイルに追記

$ vim Gemfile

gem "jekyll-paginate"

_config.yml に追記

$ vim _config.yml

paginate: 5
paginate_path: "page/:num"

ここまでで、反映されるか試してみます

$ bundle exec jekyll s

  Dependency Error: Yikes! It looks like you don't have jekyll-paginate or one of its dependencies installed. In order to use Jekyll as currently configured, you'll need to install this gem. The full error message from Ruby is: 'cannot load such file -- jekyll-paginate' If you run into trouble, you can find helpful resources at https://jekyllrb.com/help/!

Gem ファイルに記載している jekyll-paginate が見つからないと言われているようです。

jekyll-paginate をインストールします。

jekyll-paginate のインストール

$ gem install jekyll-paginate

ローカルサーバーを立ち上げ直してみます。

$ bundle exec jekyll s

...
      Generating...
        Pagination: Pagination is enabled, but I couldn't find an index.html page to use as the pagination template. Skipping pagination.

エラーは出なくなりましたが、index.html を作成する必要があるようです。

index.htmlの用意

コードは、公式にあったものです。

---
layout: default
title: My Blog
---

<!-- ページ分割されたpostsに対してループ -->
{% for post in paginator.posts >}}
  <h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
  <p class="author">
    <span class="date">{{ post.date }}</span>
  </p>
  <div class="content">
    {{ post.content }}
  </div>
{% endfor >}}

<!-- ページネーションリンク -->
<div class="pagination">
  {% if paginator.previous_page >}}
    <a href="/page{{ paginator.previous_page }}" class="previous">Previous</a>
  {% else >}}
    <span class="previous">Previous</span>
  {% endif >}}
  <span class="page_number ">Page: {{ paginator.page }} of {{ paginator.total_pages }}</span>
  {% if paginator.next_page >}}
    <a href="/page{{ paginator.next_page }}" class="next">Next</a>
  {% else >}}
    <span class="next ">Next</span>
  {% endif >}}
</div>

これでページングが実装されました。

しかし、このままだと 2ページ目に遷移しようとするとページが存在しないと言われてしまいます。

リンク先を _config.yml で設定したものに合わせます。

ページングの修正

index.html 内のページングのリンク先を下記のように置き換えます。

<a href="/page/{{ paginator.previous_page }}" class="previous">Previous</a>

さらに 2 ページ目から 1ページ目に戻るとき、ページが存在しないと言われてしまいました。

ここでは、条件分岐を書いて回避することにします。

最終的に、index.html のページング部分は下記のようになります。

<!-- ページ分割されたpostsに対してループ -->
{% for post in paginator.posts >}}
  <h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
  <p class="author">
    <span class="date">{{ post.date }}</span>
  </p>
  <div class="content">
    {{ post.content }}
  </div>
{% endfor >}}

<!-- ページネーションリンク -->
<div class="pagination">
  {% if paginator.previous_page >}}
    {% if paginator.previous_page == 1 >}}
        <a href="/" class="previous">Previous</a>
    {% else >}}
        <a href="/page/{{ paginator.previous_page }}" class="previous">Previous</a>
    {% endif >}}
  {% else >}}
    <span class="previous">Previous</span>
  {% endif >}}
  <span class="page_number ">Page: {{ paginator.page }} of {{ paginator.total_pages }}</span>
  {% if paginator.next_page >}}
    <a href="/page/{{ paginator.next_page }}" class="next">Next</a>
  {% else >}}
    <span class="next ">Next</span>
  {% endif >}}
</div>

参考

scp でファイルのアップロード、ダウンロード

2018-06-24

目的

手元の PC とリモートサーバーとの間でファイルをやりとりするために使用しました。

使う度に調べ直しているので、まとめてみます。

方法

(以下 man コマンドより引用)

scp [-12346BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2

アップロード @ローカルホスト

index.htmlをアップロードする

$ scp -P 22 -i identity_file index.html admin@domain.com:/home/admin/

ダウンロード @ローカルホスト

$ scp -P 22 -i identity_file admin@domain.com:/home/admin/index.html ./

最後に

下記のようなイメージです

$ scp [移動したいファイルパス] [移動先のファイルパス]

vim でエクスプローラ時のコマンド

2018-06-24

vim のエクスプローラで実行できるコマンド

vim で エクスプローラを開いた時 ( :Ex ) に実行できるコマンドを調べました。

(まだ記載していないコマンドがたくさんあります)

|コマンド|説明| |–|————–| |%|新規ファイル作成| |d|新規ディレクトリ作成| |D|ファイル/ディレクトリの削除| |R|ファイル/ディレクトリの名前変更| |p|プレビュー(別ペインで開く)|

参考URL

MacVim で背景を透明にする

2018-06-23

目的

ターミナルの vim では設定が反映されているのに、MacVim で下記の設定が反映されていませんでした。

  • カラースキーマが効いてない
  • MacVim の背景を透明にする設定も効いてない

MacVim でも設定が反映されるようにします。

方法

  1. MacVim.app/Contents/Resources/vim/vimrc
  2. ホームフォルダ/.vimrc または _vimrc
  3. MacVim.app/Contents/Resources/vim/gvimrc
  4. ホームフォルダ/.gvimrc または _gvimrc
$ vim ~/.gvimrc

source ~/.vimrc
set transparency=20

これで MacVim の背景が透明になりました。

参考URL

jekyll でテンプレートの変更をする

2018-06-17

目的

jekyll という静的サイトジェネレータでテーマに minima を利用しています。

ページネーションを実現しようとした時、テンプレートファイルを修正する必要が出てきました。

現在、_layouts フォルダがないため、minima のテンプレートファイルを gem に置いてあるところから

ではなく、自分で用意したファイルから読み出せるようにします。

テンプレートファイルを設置する

$ cp -r ~/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/minima-2.1.1/_layouts/* _layouts/

ちなみに

minima の開発リポジトリを探してみます。

$ gem environment

一部抜粋

  - REMOTE SOURCES:
     - https://rubygems.org/

rubygems 内で検索して出てきました。

unix でファイル検索する

2018-06-16

目的

unix でファイル検索する方法を調べました。

方法

$ find ./ -name test

testのところには検索パターンを入れます。

たとえば zip ファイル を探したい場合は、下記のようにして検索します。

$ find ./ -name *.zip

最後にデータが修正されたのが 5 分以上前のものは、下記のように検索します。

$ find ./ -mmin +5

ファイルタイプで検索 (ディレクトリを検索)

$ find ./ -type d

ssh 接続をラクにする

2018-06-16

目的

ssh接続するときのコマンドを短くします。

方法

仮定

  • 接続するサーバー: example.com
  • 接続するユーザー: username
  • 接続するサーバーの秘密鍵: ~/.ssh/myssh.key

設定前の接続方法

$ ssh -i ~/.ssh/myssh.key username@example.com

設定後の接続方法

設定を記述します。

$ vim ~/.ssh/config
Host myhost
  HostName example.com
  User username
  Port 22
  IdentityFile ~/.ssh/myssh.key

これにより、下記で接続できます。

$ ssh myhost

(以下 man コマンドより引用)

     -F configfile
             Specifies an alternative per-user configuration file.  If a configuration file is given on the command line, the system-wide configuration file (/etc/ssh/ssh_config) will be ignored.  The default for the per-user configuration file
             is ~/.ssh/config.

参考URL

zip を使ってみる

2018-06-10

目的

使用する PC が Mac になってからコマンドで zip ファイルを作るようになったので

やり方のメモを残します。

方法

zip ファイルを作成します。

$ zip test.zip test.txt test1.txt

zipファイルをパスワード付きで生成します。

$ zip -e test.zip test1.txt test2.txt
Enter password:
Verify password:
updating: test1.txt (stored 0%)
updating: test2.txt (stored 0%)

man zipで見てみると、-e は –encrypt と同義でした。

( encrypt は暗号化という意味)

sudo su - について

2018-06-09

目的

$ sudo su -

というコマンドをよく使うのですが、- が何者なのか分からないので調査しました。

sudoについて

他のユーザーとしてコマンドを実行します

(以下 本より引用)

sudoコマンドで、どのユーザーとしてどのようなコマンドが実行可能かなどの制約条件は、設定ファイルsudoers(/etcや/usr/local/etcディレクトリにあります)にあらかじめ設定されていなければなりません

suについて

別のユーザー権限に切り替えます

(以下 man コマンドより引用)

     -l      Simulate a full login.  The environment is discarded except for HOME, SHELL, PATH, TERM, and
             USER.  HOME and SHELL are modified as above.  USER is set to the target login.  PATH is set to
             ``/bin:/usr/bin''.  TERM is imported from your current environment.  The invoked shell is the
             target login's, and su will change directory to the target login's home directory.

     -       (no letter) The same as -l.

要するに

$ su -

で root 権限に切り替えて、そのユーザーでログインしたのと 同じ状態にします

実験 (Vagrant環境にて)

環境変数を引き継がない場合

$ export MYABC=999
$ echo $MYABC
999
$ sudo su -
# echo $MYABC

環境変数を引き継ぐ場合

$ export MYABC=999
$ echo $MYABC
999
$ sudo su root
# echo $MYABC
999

root 権限で環境変数が引き継がれていないことが確認できます。

参考

  • [UNIXコマンド 本]()