ためすう
公開鍵認証で ssh 接続する
2018-07-28目的
レンタルサーバーを借りているのですが、
ssh 接続する時にパスワードを都度入力しています。
今回、 公開鍵認証でパスワードを入力せずに ssh 接続するできるようにします。
方法
鍵の生成
ローカル PC で秘密鍵、公開鍵を作成します。
$ cd ~/.ssh
$ ssh-keygen -t rsa -f hogehoge
ここで生成された hogehoge.pub が公開鍵です。
公開鍵をレンタルサーバーに転送
scp コマンドなどを駆使して先ほど作成した hogehoge.pub (公開鍵) を
レンタルサーバーに転送します。
公開鍵をレンタルサーバーに登録
$ touch ~/.ssh/authorized_keys
$ cat hogehoge.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
パーミッションは 600 にするのが良いようなので、今回指定します。
(なぜ 600 なのかは別の機会に…)
これで ssh 接続する時にパスワードが不要になります。
終わりに
ssh-keygen で鍵を作成する時に色々と強度があるようです。
参考
brew コマンドが動かなくなっていた件
2018-07-22目的
brew コマンドでインストールしようとしたところエラーが発生しました。
どうにかして使えるようにした時の記録です。
発生したエラー
tmux を利用しようと思い、インストールしてみたところ下記のエラーが発生しました。
$ brew install tmux
==> Installing dependencies for tmux: makedepend, libevent
==> Installing tmux dependency: makedepend
==> Downloading http://xorg.freedesktop.org/releases/individual/util/makedepend-1.0.5.tar.bz2
Already downloaded: /Library/Caches/Homebrew/makedepend-1.0.5.tar.bz2
==> Downloading http://xorg.freedesktop.org/releases/individual/proto/xproto-7.0.25.tar.bz2
Already downloaded: /Library/Caches/Homebrew/makedepend--xproto-7.0.25.tar.bz2
==> ./configure --disable-silent-rules --prefix=/private/tmp/makedepend20180701-31856-1cid5cf/makedepend-1.0.5/xproto
checking for suffix of executables...
checking whether we are cross compiling... configure: error: in `/private/tmp/makedepend--xproto20180701-31856-1md6eg2/xproto-7.0.25':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details
READ THIS: https://git.io/brew-troubleshooting
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:921:in `connect': Failed to connect to: https://api.github.com/search/issues?q=makedepend+repo:Homebrew/homebrew+in:title+state:open&per_page=100 (GitHub::Error)
SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: tlsv1 alert protocol version
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:921:in `block in connect'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/timeout.rb:52:in `timeout'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:921:in `connect'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:851:in `start'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:313:in `open_http'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:709:in `buffer_open'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:210:in `block in open_loop'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:208:in `catch'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:208:in `open_loop'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:149:in `open_uri'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:689:in `open'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:30:in `open'
from /usr/local/Library/Homebrew/utils.rb:354:in `open'
from /usr/local/Library/Homebrew/utils.rb:384:in `issues_matching'
from /usr/local/Library/Homebrew/utils.rb:412:in `issues_for_formula'
from /usr/local/Library/Homebrew/exceptions.rb:145:in `fetch_issues'
from /usr/local/Library/Homebrew/exceptions.rb:141:in `issues'
from /usr/local/Library/Homebrew/exceptions.rb:184:in `dump'
from /usr/local/Library/brew.rb:162:in `rescue in <main>'
from /usr/local/Library/brew.rb:65:in `<main>'
brew が古くなったのかと思い、brew の update を試みました。
$ brew update
warning: unable to unlink .yardopts: Permission denied
warning: unable to unlink CONTRIBUTING.md: Permission denied
warning: unable to unlink SUPPORTERS.md: Permission denied
fatal: cannot create directory at '.github': Permission denied
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master
$ sudo brew update
Password:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/brew.rb:15:in `<main>'
解決するためにやったこと
困り果てていたところ、同じ問題に遭遇している人が解決策を書いていくれていました。
/usr/local のパーミッション の修正
$ ls -la /usr/local
total 96
drwxr-xr-x 23 root wheel 782 11 4 2017 .
$ sudo chown $(whoami):admin /usr/local
$ ls -la /usr/local
total 96
drwxr-xr-x 23 hogehoge admin 782 11 4 2017 .
Homebrew を更新
$ cd /usr/local/Library/Homebrew
$ git pull -q origin refs/heads/master:refs/remotes/origin/master
これで brew update が使えるようになりました。
$ brew update
参考
jekyll でシンタックスハイライトを導入する
2018-07-22目的
jekyll でシンタックスハイライトを導入します。
方法
Gem ファイルに rouge を記載する
gem "rouge"
_config.yml に highlighter を設定する
highlighter: rouge
syntax.scss を作成して、読み込む
$ rougify style monokai > syntax.css
自分は、 _includes/head.html
cssを読み込む行を追加しました。
php のコードをシンタックスハイライトしてみる
<?php
echo 'test';
参考
jekyll で検索を実装する方法- lunr の日本語対応
2018-07-21目的
jekyll で検索機能を実装するため、全文検索エンジンの lunr.js を導入する方法を調べました。
しかし、日本語での検索の対応に対応していなかったため、
下記を使い対応します。
導入
github のデモのファイルを参考にしながらセッティングしました。
ライブラリの設置
ライブラリの下記のファイルを配置します。
- lunr.stemmer.support.js
- tinyseg.js
- lunr.ja.js
言語設定
ライブラリを読み込んだら次は
どの言語を利用するかの設定をします。
下記のようにしました。
window.idx = lunr(function () {
this.field('id');
this.field('title', { boost: 10 });
this.field('author');
this.field('category');
// この行を追加しました
this.use(lunr.ja)
var that = this;
$.each(result, function(i, value) {
var row = $.extend({ "id": i }, value)
that.add(row);
});
});
日本語で検索できるようになりました。
jekyll で検索を実装する方法- lunr を使う
2018-07-16目的
jekyll で検索機能を実装するため、全文検索エンジンの lunr.js を導入する方法を調べました。
確認バージョン
- jekyll (3.5.2)
- lunr.js (2.2.1)
導入
チュートリアルサイトを参考に lunr を使おうとしたのですが 検索 - Jekyll Tipsに書いてあるコードそのままでは動きませんでした。
search_data.json ファイルの作成
ここはチュートリアル通りです。
---
layout: null
---
{
{% raw >}}
{% for post in site.posts >}}
"{{ post.url | slugify }}": {
"title": "{{ post.title | xml_escape }}",
"url": " {{ post.url | xml_escape }}",
"author": "{{ post.author | xml_escape }}",
"category": "{{ post.category | xml_escape }}"
}
{% unless forloop.last >}},{% endunless >}}
{% endfor >}}
{% endraw >}}
}
search.html ファイルの作成
ここはチュートリアル通りです。
---
layout: default
---
<form action="get" id="site_search">
<label for="search_box">Search</label><input type="text" id="search_box">
<input type="submit" value="search">
</form>
<ul id="results"></ul>
<script src="https://unpkg.com/lunr/lunr.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="/js/search.js"></script>
/js/search.js ファイルの作成
lurn.js で検索の元となるデータを lunr に渡すところと
検索結果を表示するところを修正しました。
全体は下記のようになります。
jQuery(function() {
// Download the data from the JSON file we generated
var data = $.getJSON('/search_data.json');
var result = [];
data.then(function(response) {
result = response;
window.idx = lunr(function () {
this.field('id');
this.field('title', { boost: 10 });
this.field('author');
this.field('category');
var that = this;
$.each(result, function(i, value) {
var row = $.extend({ "id": i }, value)
that.add(row);
});
});
});
// Event when the form is submitted
$("#site_search").on('submit', function(event){
event.preventDefault();
var query = $("#search_box").val(); // Get the value for the text field
var results = idx.search(query); // Get lunr to perform a search
// 検索結果の表示
display_search_results(results); // Hand the results off to be displayed
});
function display_search_results(results) {
var $search_results = $("#search_results");
// Are there any results?
if (results.length) {
$search_results.empty(); // Clear any old results
// Iterate over the results
results.forEach(function(value) {
var item = result[value.ref];
// Build a snippet of HTML for this result
var appendString = '<li><a href="' + item.url + '">' + item.title + '</a></li>';
// Add it to the results
$search_results.append(appendString);
});
} else {
$search_results.html('<li>No results found</li>');
}
}
});
これから
検索の質を高める
日本語での検索、本文の検索について対応していきたいと思います。
下記を使えばできそうです。
データ量が増えるとパフォーマンスが落ちそう
検索の元となっている json データは jekyll に投稿している全記事となるため
当然、記事の投稿数が増えれば json のデータも増えます。
初期読み込み時に json ファイルのデータをダウンロードしているので
パフォーマンスが悪くなる可能性があります。
Web API 化はどうだろうか
パフォーマンスに対応するため、Web API 化する方法を思いつきましたが
検索結果をサーバー側で生成して、表示という作りになりそうでした。
それだと、 lunr.js を使う意味があまりないかもしれません。
参考
yum のリポジトリについて
2018-07-15背景
yum について知りたかったので調べてみました。
yum とは
パッケージのインストール・アップグレード・検索・管理を行うコマンドです。
remi リポジトリ使いたい
$ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -Uvh remi-release-6.rpm
remi リポジトリの設定ファイルは下記です。
/etc/yum.repos.d/remi.repo
yum コマンドの実行時に remi のリポジトリのインストールは下記で行います。
$ yum --enablerepo=remi list
参考URL
jekyll で検索機能を実装する方法
2018-07-14目的
jekyll で検索機能を実装する方法を調べました。
方法1.
- Google カスタム検索を利用
下記のページから簡単に導入することができます。
jekyll で運用しているブログの url を変更したのですが、Google の検索結果に反映されるまでに時間がかかりました。
方法2. (※ 2018/06/09 時点: できませんでした)
- 全文検索エンジンの lunr.js を利用
$ gem install jekyll-lunr-js-search
しかし、エラーが発生しました。
Fetching libv8 3.16.14.19 Installing libv8 3.16.14.19 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users/hogehoge/.rbenv/versions/2.2.2/bin/ruby -r ./siteconf20180609-87351-bupw5i.rb extconf.rb
creating Makefile
/Users/hogehoge/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/libv8-3.16.14.19/ext/libv8/builder.rb:86:in setup_python!': libv8 requires python 2 to be installed in order to build, but it is currently
3.6.2 (RuntimeError)
from /Users/hogehoge/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/libv8-3.16.14.19/ext/libv8/builder.rb:53:in
build_libv8!’
from /Users/hogehoge/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/libv8-3.16.14.19/ext/libv8/location.rb:24:in install!'
from extconf.rb:7:in
extconf failed, exit code 1
Gem files will remain installed in /Users/hogehoge/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/libv8-3.16.14.19 for inspection. Results logged to /Users/hogehoge/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14⁄2.2.0-static/libv8-3.16.14.19/gem_make.out
An error occurred while installing libv8 (3.16.14.19), and Bundler cannot continue.
Make sure that gem install libv8 -v '3.16.14.19'
succeeds before bundling.
In Gemfile: jekyll-lunr-js-search was resolved to 3.3.0, which depends on therubyracer was resolved to 0.12.3, which depends on libv8
エラーが示す通り、therubyracer、libv8 のインストールを試みたりしたのですが
解決には時間がかかりそうなのでここでストップすることにします。
下記が github のリポジトリなのですが、今はサポートされてないのかもしれません。
- [slashdotdash/jekyll-lunr-js-search: [UNSUPPORTED] Jekyll + lunr.js = static websites with powerful full-text search using JavaScript](https://github.com/slashdotdash/jekyll-lunr-js-search)
```jekyll-lunr-js-search``` を利用せずに lunr を利用する方法を今度試してみます。
#### 以降、未実施
```_config.yml``` に ```jekyll-lunr-js-search``` を追記します
plugins: - jekyll-lunr-js-search ```
参考
jekyll で url 設定
2018-07-11目的
jekyll で url を設定する方法を調べた時のメモになります。
URL のルールを設定する
下記の 2 箇所で設定することができます。
- _config.yml に記載する
- 投稿ごとの Front Matter に記載する
今回は、全部の記事に反映させたかったので、 _config.yml に記載する方法でいきます。
下記を追加します。
permalink: /:year/:month/:day/:title
以上となります。
参考
bundler について
2018-07-08目的
静的サイトジェネレータの jeykll を利用するときに
bundler が出てきましたが理解できていないので今回調べました。
Bundler とは
アプリケーション単位で依存する gem パッケージを管理します。
Gem ファイルを作成
$ bundle init
Gem ファイルを元にインストール
$ bundle install
Gem ファイルを元にアップデート
$ bundle update
参考
jekyll でタイムゾーンの設定
2018-07-02目的
GitHub Pages で表示される投稿時間が意図通りになっていなかったため
タイムゾーンを設定します。
Front Matter に下記のように指定すると、ローカルサーバーでは意図通りの時間と
なっていましたが、GitHub Pages にアップロードすると、時間が9時間前のものとなっていました。
date: 2017-10-29 22:50:38 +0900
方法
timezone: Asia/Tokyo ```
GitHub Pages にアップロードされた後も時間が意図通りとなりました。