平衡点


2015/03/03

_ VPS の Debian を Jessie に上げた

読んで字の如く。

(2015-03-06) 誤字修正

upgrade

upgrade 自体は特に嵌らず。適当に /etc/apt/sources.list を書き代えて、

% sudo apt-get update
% sudo apt-get dist-upgrade

で終わった。

時刻合わせに systemd-timesyncd を使う

これまでは chrony を使っていたのだけれど、折角なので試しに systemd-timesyncd を使ってみることに。 systemd-timesyncd で時刻合わせを行なうには

  • /etc/systemd/timesyncd.conf の Servers 行を修正
  • VM 内では systemd-timesyncd が起動しない。VM は親とは別に時刻合わせをするべき、という記憶があるのだけれど、ドコの話だったっけ? うろ覚えだけれど、数日たったら数秒ズレていたので、

    mkdir -p /etc/systemd/system/systemd-timesyncd.service.d
    vim /etc/systemd/system/systemd-timesyncd.service.d/allow_vm.conf
    …
    % cat /etc/systemd/system/systemd-timesyncd.service.d/allow_vm.conf
    [Unit]
    ConditionVirtualization=
  • /etc/systemd/[service名].d ディレクトリ以下に拡張子 .conf で Unit ファイルを置くと、既存の設定に追加/上書きできることは覚えておいて良いと思う。
  • Unit ファイルの読み込みと systemd-timesyncd の起動

    % sudo systemctl daemon-reload
    % sudo systemctl start systemd-timesyncd

というわけで、結果

% timedatectl
      Local time: 火 2015-03-03 00:21:15 JST
  Universal time: 月 2015-03-02 15:21:15 UTC
        RTC time: 月 2015-03-02 15:21:14
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
 NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

状況が知りたかったら

% sudo systemctl status systemd-timesyncd

みたいな.

apache 2.4

気がついたら Apache が 2.4 になっていた。

  1. /etc/apache2/site-availabe 以下の置くファイルは拡張子 .conf じゃないと駄目ッポ。
  • 今迄そうだったっけ?
  1. Order allow,deny とかじゃなくて Require all granted みたいな記法で書く
  • compatible モジュールもある。デフォルト有効?
  • suexec に関して、明示的に Require all granted を書いておかないと何もできなかった。前からそうだっけ?

tdiary

テストも兼ねて、パッケージ更新してみたり。これについては別途。 index.fcgi が Internal Server Error で駄目。懐しの fcgiwrap を使って

#! /usr/bin/env ruby
# -*- coding: utf-8 -*-
# load '/usr/share/tdiary/index.fcgi'
require 'fcgiwrap'
FCGIWrap.each {
  load '/usr/share/tdiary/index.rb'
}

なんてしてみたら、きちんと動作した。はて…?

他にも幾つか…。

気がついた事があるので、そのうちまとめて 勉強会 で話そうかと思っていたり。


2015/03/08

_ 筋肉痛?

…もう若くない、ことを実感したりする日々。

寝ている時に、筋肉痛で目が覚める、というのは初体験であった。 右手を曲げると激痛。なんか、筋肉痛とは違った痛みの様な気がしないでもない。


2015/03/16

_ tDiary に bootstrap >= 3 を使う

tDiary のパッケージも更新できてちゃんと動いてるっぽいので、ついでに bootstrap >= 3 対応を試みてみた。 bootstrap(<= 2.x) 用のプラグインとして、既に tdiary-contrib/bootstrap-navi.rb at master · tdiary/tdiary-contrib があるわけで、これを元に幾つか修正を試みたり。

DOCTYPE を html5 に

必須ではなさそうだけれど、とりあえず試してみたり。 とはいえ、全然検証していないので単に DOCTYPE 宣言等をちまちまと弄っただけであったりする。

#!/usr/bin/env ruby
# -*- mode: ruby; coding: utf-8 -*-
#
# doctype_html5.rb: update DOCTYPE as html5
#
# Copyright (c) 2015 Youhei SASAKI <uwabami@gfd-dennou.org>
# License: WTFPL
#
@conf.html_lang = 'ja'
def doctype
%Q[<!DOCTYPE html>]
end

既存のプラグインのアレコレがちゃんと期待通りに動作するのか、は定かではない。

bootstrap >= 3 対応

やることは以下の二つ

  1. jquery を 1.9.1 に上げる
  2. js の読み込み
  3. bootstrap_navi の修正

このうち jquery を 1.9.1 にした事によって生ずる副作用に関しては、 全然検証していないことにご注意。

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# Show navi for twitter-bootstrap theme >= 3.x
#
# Copyright (c) KAOD Masanori <kdmsnr at gmail.com>
#               2015 Youhei SASAKI <uwabami@gfd-dennou.org>
# You can redistribute it and/or modify it under GPL.

def jquery_tag
    %Q[<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>]
end

def bootstrap3_init
  @conf['bootstrap3.navbar_class'] ||= "navbar-default"
  @conf['bootstrap3.show_site_name'] ||= false
  @conf['bootstrap3.show_nav_admin'] ||= false
  @conf['bootstrap3.show_search_form'] ||= false
end

def bootstrap3_navi(options = {})
  bootstrap3_init

  brand = ""
  if @conf['bootstrap3.show_site_name']
    brand += <<-EOS
      <a class="navbar-brand" href="#{h @conf.base_url}">#{h @conf.html_title}</a>
    EOS
  end

  menu = ""
  if @conf['bootstrap3.show_nav_admin']
    menu += <<-EOS
    #{navi_user.gsub(/span/, "li")}
    #{navi_admin.gsub(/span/, "li")}
  EOS
  else
    menu += <<-EOS
    #{navi_user.gsub(/span/, "li")}
  EOS
  end
  search = ""
  if @conf['bootstrap3.show_search_form']
    search += <<-EOS
      <form class="navbar-form" role="search"
        method="get" action="http://www.google.co.jp/search"
        onsubmit="$('#sitesearch').val($(location).attr('host'))">
        <input type="hidden" name="ie" value="UTF8">
        <input type="hidden" name="oe" value="UTF8">
        <input type="hidden" name="sitesearch" id="sitesearch">
        <input type="text" class="form-control" placeholder="検索" name="q">
      </form>
    EOS
  end

  <<-EOS
<nav class="navbar #{@conf['bootstrap3.navbar_class']} ">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      #{brand}
    </div> <!--/.navbar-header -->
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
       #{menu}
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li>
          #{search}
        </li>
      </ul>
    </div><!--/.nav-collapse -->
  </div><!--/.container -->
</nav><!--/.navbar -->
EOS
end

add_header_proc do
  header = " "
  header +=<<-EOS
   <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"  type="text/css" media="all">
    <link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"  type="text/css" media="all">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- [if lt IE 9]>
    <script src="extra_js/html5shiv.min.js" type="text/javascript"></script>
    <script src="extra_js/respond.min.js" type="text/javascript"></script>
   <![endif]-->
   <script src="bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
   <script src="extra_js/ie10-viewport-bug-workaround.js" type="text/javascript"></script>
  EOS
  if @conf['bootstrap3.navbar_class'] =~/fixed-top/
    header +=<<-EOS
<style type="text/css">
<!--
body{
    min-height: 2000px;
    padding-top: 70px;
}
-->
</style>
EOS
  else
    header +=<<-EOS
<style type="text/css">
<!--
body{
  padding-top: 20px;
  padding-bottom: 20px;
}
.navbar {
  margin-bottom: 20px;
}
-->
</style>
EOS
  end
  header
end

というわけで。日記を置いた所に bootstrap を展開して、上記プラグインを有効にすると bootstrap >= 3 が有効になる。 ついでに、 html5shiv.jsrespond.min.jsie10-viewport-bug-workaround.js を日記ディレクトリの extra_js フォルダに放り込んでおく。 そろそろコイツラいらないのかもしれないけれど、どうなんだろう。

あとは、ヘッダ・フッタを適宜変える。

ヘッダ:

<%= bootstrap3_navi %>
<div class="container">
  <h1>日記のタイトル、とか</h1>
</div>
<div class="container">
  <div class="main col-md-8 col-sm-12 col-xs-12">

フッタ:

</div><!-- /.main -->
  <div class="sidebar col-md-4 hidden-sm hidden-xs">
  …
  </div><!--/.sidebar -->
</div><!-- container -->

…とか?

tdiary.conf の設定項目は

@options['bootstrap3.navbar_class'] ||= "navbar-default"  # navbar の class 指定
@options['bootstrap3.show_site_name'] ||= false    # brand として @conf.html_title を表示する
@options['bootstrap3.show_nav_admin'] ||= false    # 「update.rb 」へのリンクを表示するか?
@options['bootstrap3.show_search_form'] = true     # Google のサイト内検索 を使うか?

としてある。

まとめ…?

とりあえず動くので良し、とするかなぁ…。どうデバッグして良いやら。浦島状態である。


2015/03/17

_ Subversion から Git への移行

最近、「もう Git で良いよ!」とお許し頂いたので、某リポジトリを Subversion から Git へ移行する作業を行なった。以下、そのメモ

Authors.txt の準備

そのままだと、コミットログが寂しい事になるので、既存の author を mapping するテキストを作成しておく。Subversion の working copy で

% svn log $SVN_URL | awk -F'|' '/^r[0-9]+/ { print $2 }' | sort -u

として、commit した人の一覧を出して、

svn username = Fullname <email address>

といった塩梅のテキストを作成しておく(以下、 Authors.txt とする)。

git svn でリポジトリを clone

以下で。

mkdir pkg
git svn clone $SVN_URL --prefix=svn-import/ \
  --stdlayout --authors-file=Authors.txt --no-metadata pkg

ここで、 pkg は実際に作成される Git リポジトリの名前. --stdlayout は、Subversion にありがちな trunk/tags/branches を Git の branch, tag に上手く mapping するための option. --no-metadata を指定すると、コミットログから SVN URL が削除される。Subversion を今後使うつもりがないなら指定しておくと良い。

Subversion の情報の変換

上記で --prefix=svn-import/ としたので、Subversion の branch, tag は Git では全てブランチとして

% git branch -r
svn-import/hogehoge
svn-import/herohero
  :
svn-import/tags/hogehero-0_5

となる。このうち svn-import/tags を Git の tag に変換する。

ついでに、CVS 由来の、バージョン番号を =_</span>:)) で区切った番号付けを変更したり。

結果、以下の様なスクリプトを走らせた。

#! /bin/sh
for branch in `git branch -r | egrep "svn-import/tags/.+$"`; do
    version=`basename $branch | sed 's/_/./g'`
    subject=`git log -1 --pretty=format:"%s" $branch`
    GIT_COMMITTER_DATE=`git log -1 --pretty=format:"%ci" $branch` \
                      git tag -f -m "$subject" "$version" "$branch^"
    git branch -d -r $branch
done

タグはこれで良いかな。ブランチは不要そうなの軒並削除。 ついでに、今後弄らないであろう古いタグの名前付けを整理したり。

svn-remote.svn の削除

git svn で clone したので、Subversion関連の情報が .git 以下に残っている。 これを消すと終了

% git config --remove-section svn-remote.svn
% rm -rf .git/svn .git/{logs/,}refs/remotes/svn-import/

まとめ

Git に慣れた身としては、 git-svn に比べて、やはり快適である。

…そして、過去の VCS から引き継いできたコミットログなので、ChangeLog の生成をどうするか、という点で悩み始める、など。いっそ git log をそのまま貼りつけてやろうかしらん。コミットがアトミックじゃないので、適宜 squash した方が良いだろうか。

あとは、リポジトリの外部公開かな。 Gitweb - Git SCM Wiki を使うのがやっぱり一般的なんだろうかね。


2015/03/20

_ Wanderlust で分割メールを扱う

とある研究会の記念写真(まあ、今時 JPGですよね)がメールで送られてきたのだけれど、久々に分割送信されたメールであった。

さて、Wanderlustで読めた筈だよなぁ、とかジタバタすることしばし。

(setq wl-message-auto-reassemble-message/partial t)

としておくと良い、ということであった。


連絡先など
最近の日記
一覧
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|02|03|04|08|09|10|11|12|
2013|01|02|03|04|05|06|08|09|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|09|10|
2016|02|03|
2017|01|02|03|05|06|07|09|11|12|
2018|03|06|07|10|11|12|
2019|01|02|03|04|05|07|10|12|
2020|01|02|03|04|05|08|09|10|11|12|
2021|01|02|03|05|06|07|08|09|11|12|
2022|01|02|03|04|05|06|08|10|11|12|
2023|02|03|04|06|08|09|11|12|
2024|01|02|03|
Back to Top ▲