ためすう

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コマンド 本]()

jekyll で下書きする

2018-06-06

目的

jekyll で下書きをする方法を調べました。

方法

  • _drafts ディレクトリを作成します。

  • _drafts の中に a-test.md ファイルを作成します。

表示を確認するには、--drafts オプションを利用します。

$ bundle exec jekyll s --drafts

参考

watch コマンドを使ってみる

2018-06-03

目的

並列で複数走らせるプログラムがあり、その監視のため watch コマンドを使いました。

方法

$ watch -n 10 "ps aux | grep php"

Every 10.0s: ps aux | grep php

vagrant  22355  0.0  0.5 109048  2744 pts/0    S+   10:26   0:00 watch -n 10 ps aux | grep php
vagrant  22356  0.0  0.2 106076  1292 pts/0    S+   10:26   0:00 sh -c ps aux | grep php
vagrant  22358  0.0  0.1 103336   916 pts/0    S+   10:26   0:00 grep php

これで 10秒ごとにコマンドを実行してくれます。

参考URL

rsync を使ってみる

2018-06-02

目的

ブログ記事をアップロードする時に ftp を使用していたのですが

下記の課題がありました。

  • ファイルを全部コピーするため、時間がかかる
  • サーバーに 1 度アップロードされたファイルは、残り続ける

この課題を解消するため、 rsync コマンドを使ってみました。

以下、構成です。

自分の PC -> レンタルサーバー

注意

レンタルサーバーでも rsync が利用できる必要があります。

また、ssh で接続できる必要があります。

解決策

自分の PC で下記コマンドを実行します。

$ rsync -auv -e "ssh -p [ポート番号]" ./ [ユーザー名]@[サーバー]:[ファイルパス]
  • [ポート番号]
  • [ユーザー名]
  • [サーバー]
  • [ファイルパス]

は自分の環境に合わせて変更してください。

例ですが、下記のようになります。

$ rsync -auv --delete -e "ssh -p 22" ./ user@example.com:~/

次に

このコマンドを使うのは特定端末からの想定ですが

複数人、複数端末から利用する場合

古いソースで同期しないようにする仕組みが必要になりそうです。

また、現在は秘密鍵の設定をしていないので、都度パスワードを入力しているので

秘密鍵を設定したいと思います。

参考

curl で post する

2018-05-27

目的

api を作成する機会がありました。

動作確認のためターミナルから api を実行する方法を調べました。

方法

url パラメータを POST する

$ curl http://localhost:9000/hoge -F "url=http://fugafuga.jp"

DELETE メソッドでアクセス

$ curl http://localhost:9000/hoge/1 -X DELETE

PUT メソッドで url パラメータを送る

$ curl http://localhost:9000/hoge/1 -X PUT -F "url=http://fugafuga.com"

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

       -d, --data <data>
              (HTTP)  Sends  the  specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and
              presses the submit button. This will cause curl to pass the data to the server using the content-type  application/x-www-form-urlencoded.   Compare  to
              -F, --form.
       -X, --request <command>
              (HTTP)  Specifies  a  custom  request  method to use when communicating with the HTTP server.  The specified request method will be used instead of the
              method otherwise used (which defaults to GET). Read the HTTP 1.1 specification for details and explanations. Common additional  HTTP  requests  include
              PUT and DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and more.

scp で帯域制限する

2018-05-26

目的

scp コマンドを使って、容量の大きいファイルをダウンロードしたり、アップロードしたりすると

ネットワークが重くなったり、途中で途切れたりすることがありました。

転送速度を帯域制限することにより制御します。

方法

例えば、 毎秒 5MB までを転送したいときは、

5 (MB) = 5 * 1024 * 1024 * 8 = 41943040 (bit) = 41943.040 (Kbit)

scp コマンドの l オプションを利用します。

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


     -l limit
             Limits the used bandwidth, specified in Kbit/s.

全体のコマンドは下記のようになります。

  • 手元の PC から index.html ファイルを domain.com のサーバーの /home/admin ディレクトリへ配置します。
  • identity_file は domain.com のサーバーへ入る秘密鍵です。
$ scp -P 22 -i identity_file -l 41943 index.html admin@domain.com:/home/admin/

参考