Akira's Tech Notes

Java/JVM | GNU/Linux | Emacs/Lisp | 知的好奇心駆動

header-icon
ネイティブでない日本語で思い付くことや気になることをダラダラ書く、体裁とかは気にしない。読みづらいと感じた時に随時更新する。

[メモ]Otcopressにプラグインを導入する-その1

1 TagCloudとカテゴリリスト

このから ダウンロードする

[akira@jizai tmp]$ git clone https://github.com/tokkonopapa/octopress-tagcloud.git
Cloning into 'octopress-tagcloud'...
remote: Reusing existing pack: 65, done.
remote: Total 65 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (65/65), done.
Checking connectivity... done.
[akira@jizai tmp]$

octopress-tagcloud/plugin/ 配下のファイルを octopress/plugins へコピーする。 octopress-tagcloud/source/ 配下のファイルを octopress/source へコピーする。

[akira@jizai tmp]$ cd octopress-tagcloud/
[akira@jizai octopress-tagcloud]$ cp -rfv plugins/* ~/.emacs.d/blogs/octopress/plugins
`plugins/tag_cloud.rb' -> `/home/akira/.emacs.d/blogs/octopress/plugins/tag_cloud.rb'
[akira@jizai octopress-tagcloud]$ cp -rfv source/* ~/.emacs.d/blogs/octopress/source
`source/_includes/custom/asides/tag_cloud.html' -> `/home/akira/.emacs.d/blogs/octopress/source/_includes/custom/asides/tag_cloud.html'
`source/_includes/custom/asides/category_list.html' -> `/home/akira/.emacs.d/blogs/octopress/source/_includes/custom/asides/category_list.html'
[akira@jizai octopress-tagcloud]$

octopress/_config.ymldefault_asides 項目に custom/asides/tag_cloud.htmlcustom/asides/category_list.html を追加する。

default_asides: [...., custom/asides/tag_cloud.html, custom/asides/category_list.html, ..... ]

このままだとTagCloudカテゴリリストが同じものになったしまうので、ここここ の記事を 参考してカテゴライズ機能を流用してTagCloud機能を実装する。以下TagCloud機能を実現する ためには変更及び追加したファイル一覧です。

[akira@jizai octopress]$ git status
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)

	modified:   _config.yml
	modified:   sass/partials/_archive.scss
	modified:   sass/partials/_blog.scss
	modified:   source/_includes/archive_post.html
	modified:   source/_includes/post/categories.html
	modified:   source/_layouts/page.html
	modified:   source/_layouts/post.html

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	plugins/tag_cloud.old.rb
	plugins/tag_cloud.rb
	plugins/tag_generator.rb
	source/_includes/custom/asides/related.html
	source/_includes/custom/asides/tag_cloud.html
	source/_includes/custom/tag_feed.xml
	source/_includes/post/tags.html
	source/_layouts/tag_index.html

記事書く際にヘッダの属性リストに tagscategory を記述するすればOKです。

---
title: "[メモ]Otcopressにプラグインを導入する-その1"
date: 2014-07-01
layout: post
category: misc
tags: Octopress blog
published: true
comments: true
---

2 QRコード

Google Chart APIで記事URLのQRコードイメージを自動的に生成する。

octopress/source/_includes/custom/asides/qrcode.html

<section>
  <!-- create at 2017/07/01 
       Google Chart Tools: Infographics
       https://developers.google.com/chart/infographics/docs/qr_codes?csw=1
  -->

  <div style="position: relative; text-align: center">

    <!-- Google Chart API でQRコード取得 -->
    <img src="http://chart.apis.google.com/chart?chs=180x180&amp;cht=qr&amp;choe=UTF-8&amp;chl=http://luozengbin.github.io/blog/2014-07-01-%5B%E3%83%A1%E3%83%A2%5Dotcopress%E3%81%AB%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%99%E3%82%8B-%E3%81%9D%E3%81%AE%EF%BC%91.html" alt="post-qrcode" height="180" width="180" />

    <!-- サイトのfaviconを重ねて表示する -->
    <div style="position: absolute; top: 75px; width: 100%; margin: 0 auto; text-align: center">
      <img style="border: 0.2em solid #FFF;" src="/favicon.png" alt="post-qrcode" height="30" width="30" />
    </div>
  </div>

</section>

octopress/_config.ymldefault_asides 項目に custom/asides/qrcode.html を追加 する。

default_asides: [...., custom/asides/qrcode.html, ..... ]

3 月間アーカイブ

作成中…

[検証]SSHトンネル機能でVPN環境の構築

友人に自宅のLAN内のコンテンツを共有するため、VPNについて検証しました。 自宅のルータはYamahaのRTX810です。このルータのVPN機能を使えば簡単に出来てしまうので面 白くないと思って、敢えてSSHのトンネル機能を使って0円VPN環境を構築してみた。

更に難易度を上げて、自宅WAN側のグローバルIPを公開せずにAmazonEC2インスタンスをVPN経路 に挟むことにしました。

[メモ]Emacsで漢字→かな変換

Emacsをドキュメントビューアとして使っていますが、時々漢字の読み方がわからないことに遭 遇します。漢字から意味を読み取ったとしても、読み方がわからない場合が多いい。いままで 一々ブラウザに切り替えて調べました。せっかくEmacsを使っているので自動化してみました。

[メモ]リモートXの接続方法

リモートLinuxサーバでXアプリを利用するケースはしばしばあります。 実現方式について調べてみた。

No サーバ側 クライアント側 備考
1 DISPLAY変数の指定 xhostよりアクセス許可 クライアント側6000番ポートの開放が必要
2 SSH X11 Forwarding ssh -X で接続する サーバ側:X11Forwarding yes が必要 
3 Xdmcp(udp:177) Xサーバとして動く Display Managerがエントリ画面になる
4 VNCサーバ(tcp:5901〜) VNCビューア よく使われる
5 XRDP XRDPクライアントソフト WindowsのRemote Desktop Procotol

VNCとXRDP以外のサーバとクライアントの役割

  • サーバ側: Xアプリを動かす側
  • クライアント側: Xサーバを動かす側

1 検証環境

  • クライアント: GDM経由でGnome3が動いているGUI環境
  • サーバ: CUIモードLinux環境
┏━━━━━━━┓      ┏━━━━━━━┓
┃ クライアント ┃      ┃   サーバ     ┃
┃  mimi-air    ┣━━━┫    pipi      ┃
┃192.168.100.13┃      ┃192.169.100.4 ┃
┗━━━━━━━┛      ┗━━━━━━━┛

[検証]ADF印刷プレビュー機能

Oracle ADFの印刷機能にたずさわる機会がありましたので、一部調査した内容を ここでメモしておきます。サンプルコードは Github に登録しています。

1 検証内容

  1. af:showPrintablePageBehavior タグの使い方
  2. 印刷内容の制御
  3. IE印刷プレビュー画面を出す

[検証]firewalldを遊んでみた

自宅の Raspberry Pi にfirewalldを入れて遊んで見ました。

1 firewalld情報収集から始まる

  • iptablesが土台となります、firewalldの設定はipatbles設定へ変換される
  • D-BUSのAPI経由でアプリケーションから制御が可能
  • 受送信ルールはゾーンファイルにて定義する
  • 受送信サービスタイプ(サービス名+ポートより識別する)による通信制限が可能
  • 受送信ICMPタイプによる通信制限が可能
  • 通信元のIPサブネットによる通信制限が可能
  • NICポートごとにゾーンファイルを適用することが可能 (複数同時適用可能かは未検証)

[メモ]Otcopressコンテンツ投稿自動化

emacsからblog投稿ツールいくつ試しました、最近以下のツール組み合わせで落ち着いた。

1 Octopress + Github Page でブログ環境を構築する

同じ環境で複数Rubyバージョンを利用できるようにするためRbenvを導入する。

1.1 Rbenvのインストール

$ cd ~
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ source ~/.bashrc

rbenvでインストール可能なバージョンリストを確認する。 rbenv install -l

1.2 RbenvによるRubyバージョンの切り替え

$ rbenv install 1.9.3-p0
$ rbenv global 1.9.3-p0
$ rbenv rehash
$ rbenv global
$ ruby --version

1.3 Octopressのインストール

GithubからOctopressをダウンロードする

$ git clone git://github.com/imathis/Octopress.git Octopress
$ cd Octopress
$ ruby --version  # ruby バージョン確認

必要なrubyライブラリをインストールする

$ gem install bundler
$ rbenv rehash
$ bundle install

Octopressテーマの初期化

$ rake install

octostrap3 Themeへ変更

$ cd Octopress
$ git clone https://github.com/kAworu/octostrap3 .themes/octostrap3
$ rake 'install[octostrap3]'

静的コンテンツの生成

$ rake generate

1.4 Github Pageサイトの準備

ここでは省略します。

1.5 OctopressコンテンツをGithub Pageにコミットする

$rake setup_github_pages    # githubリポジトリのurlを入力する
$rake generate
$rake deploy

2 emacsから記事を書く道具の整備

elpa を通して、=org-mode= で記事を書くための org-ocotpress をインストールする。 org-ocotpressは MELPAに登録してあるので、 M-x package-install org-ocotpress で インストールする。 org-ocotpress から記事を管理するため、emacsの設定とOcotpress のpermalink設定を以下のように変える。

octopress/_config.yml

permalink: /blog/:year-:month-:day-:title.html

emacs設定

(require 'org-octopress)
(setq org-octopress-directory-top       (concat user-emacs-directory "blogs/octopress/source"))
(setq org-octopress-directory-posts     (concat user-emacs-directory "blogs/octopress/source/_posts"))
(setq org-octopress-directory-org-top   (concat user-emacs-directory "blogs/octopress/source"))
(setq org-octopress-directory-org-posts (concat user-emacs-directory "blogs/octopress/source/blog"))
(setq org-octopress-setup-file          (concat user-emacs-directory "blogs/octopress/setupfile.org"))

blogs/octopress/setupfile.org

#+OPTIONS: H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:nil -:t f:nil *:t <:t
#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+OPTIONS: author:nil
#+OPTIONS: email:nil
#+OPTIONS: creator:nil
#+OPTIONS: timestamp:nil
#+MACRO: more @@html:<!-- more -->@@
#+MACRO: twitter [[http://twitter.com/$1][@$1]]
#+MACRO: github [[https://github.com/$1/$2][$2]]
#+PROPERTY: cache yes
#+STARTUP: odd
#+STARTUP: content

3 自動化スクリプト

コンテンツプレビュー自動化elispとshell script

(defvar org-octopress-top
  (concat user-emacs-directory "blogs/octopress/")
  "octopressブログテンプレートディレクトリ")

(defun org-octopress-preview ()
  "preview octopress content by call external shell script."
  (interactive)
  (message "preview octopress content ....")
  (lexical-let* ((default-directory org-octopress-top)
                 (preview-url "http://localhost:4000"))
    (deferred:$
      (deferred:process-shell "blog_preview.sh" org-octopress-top)
      (deferred:nextc it
        (lambda (x)
          (message "*** preview blog ***")
          (message x)
          (message "launch preview url %s" preview-url)
          (browse-url preview-url))))))

blog_preview.sh

#!/bin/sh
## Usage: blog_preview.sh
##
## Options: $1 octopressディレクトリの位置
##
## Comment: octopress配下にblog静的
##          コンテンツの生成とプレビュー
##################################################################### 

RUBY_VER="1.9.3-p0"
OCTOPRESS_DIR=$1

which rbenv
if [ $? = 0 ]; then
    # ruby バージョン切り替え処理
    rbenv global $RUBY_VER
    rbenv rehash
    global_ver=`rbenv global`
    if [ $global_ver = $RUBY_VER ]; then
        # blogコンテンツ生成とデプロイ
        echo "run rake with `ruby --version`"
        pushd $OCTOPRESS_DIR
        rake generate
        if [ -z "`netstat -nutl | grep 4000`" ] ; then
            echo ">>> Startup Preview"
            rake preview &
            sleep 2
        fi
        popd
    fi
fi

コンテンツをgithubへ自動同期化elispとshell script

(defun org-octopress-deploy ()
  "deploy octopress content to github page service."
  (interactive)
  (message "deploy octopress content ....")
  (lexical-let* ((default-directory org-octopress-top))
    (deferred:$
      (deferred:process-shell "blog_deploy.sh" org-octopress-top)
      (deferred:nextc it
        (lambda (x)
          (message "*** deploy blog ***")
          (message x))))))

blog_deploy.sh

#!/bin/sh
#!/bin/sh
## Usage: blog_deploy.sh
##
## Options: $1 octopressディレクトリの位置
##   
## Comment: octopress配下にblog静的
##          コンテンツの生成とデプロイ
##################################################################### 

RUBY_VER="1.9.3-p0"
OCTOPRESS_DIR=$1

which rbenv
if [ $? = 0 ]; then
    # ruby バージョン切り替え処理
    rbenv global $RUBY_VER
    rbenv rehash
    global_ver=`rbenv global`
    if [ $global_ver = $RUBY_VER ]; then
        # blogコンテンツ生成とデプロイ
        echo "run rake with `ruby --version`"
        pushd $OCTOPRESS_DIR
        rake generate
        rake deploy
        popd
    fi
fi

[検証]SMTPプロトコール監視してみた

自宅のPC環境にMTA(postfix)サーバを構築しました。 1周間ほど保持したので、telnet、nc、tcpdumpコマンドから メール送信処理の中身を観測してみたいと思います。

1 概要

VM環境を立てるのが面倒のため、loopbackインタフェースを通して ローカル環境内で検証を行う。

+--------------+         +-------------+
|              |         |             |
| クライアント +-- lo ----+  MTAサーバ |
|              |         |             |
+--------------+         +-------------+
  127.0.0.1                127.0.0.1:25

LPIC Lv2-201試験準備メモ1

1 MBRパーティショニング

  • 基本パテーション:MBR仕様の制限で基本パテーションは最大4つ
  • 拡張パテーション:一つ基本パテーションとして計算する

2 LVMスナップショート

スナップショートとはあるLVのカレント状態をバックアップする機能。 バックアップ方式としてファイルの増分内容を記録LV領域を作成しそのLV 領域にスナップショート作成時点からの変化履歴を記録する。 増分バックアップ方式であるため、初期作成時は容量消費しない。 対象LVに上ファイル変化があったたびにスナップショートLVに 変化内容が書き込まれるため、領域が消費される。

Java Mission Controlメモ

1 利用可能なJavaバージョン

  • Java SE Advanced (アドバンスド)
  • Java SE Suite

2 ローカルJavaプロセスの監視

監視対象Javaプロセス起動時に以下のオプションを追加する。

  • +UnlockCommercialFeatures:商用オプションロックを解除する
  • +FlightRecorder:フライドレコーダー機能を有効化する
$ java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder ......