15 Jun 2014, 01:55

Futurismo Wiki 立ち上げ(Dokuwiki)

はじめに

以前, 高らかに Futurismo Wiki の立ち上げを宣言しました.

宣言しただけで, ちっともカスタマイズしていなかったので, カスタマイズ してみました.本記事は, その作業メモ.

とくに, SEO に関する情報についてまとめてみました.

SEO 対策

SEO Tips

SEO につよい設定方法は以下にある.これはすごい.

簡単なメモ.

  • URL 上の名前空間の区切りにスラッシュを使用 -> On
    • ページのランクをさらに高める?
  • canonical URL (正準 URL) を使用 -> On
  • 文書が存在しないページに”HTTP404/Page Not Found”を使用 -> On

Google にインデックスの許可

管理者メニュー > サイト設定から

Google ウェブマスターツール

default では, サイトマップが作成されないので設定する.

管理者メニュー > サイト設定から

  • Google サイトマップ作成頻度 (日数) -> 1

これで, サイトマップが作成されるようになった. doku.php?do=sitemap に アクセスすると, サイトマップが取得できる.

Google ウェブマスターツールにサイトを登録して, サイトマップの URL で doku.php?do=sitemap を指定して, 登録完了.

Google Analytics for DokuWiki

Google Analytics でアクセス解析.

まずは, Google Analytics でトラッキング ID 取得.

DokuWiki の設定

  • Google Analytics DokuWiki Plugin をインストール
  • サイト設定画面で,
    • [Google Analytics ID]:にトラッキング ID を入力
    • [Don’t count admin/superuser]:チェック
    • [Don’t count logged in users]:チェック

Google Adsense

アドセンスもテーマに挿入出きるみたい.ただ, Wiki のデザインを大切にし たいので, この Wiki には広告はいれないことにした.

おわりに

なにもしないと, Google 検索にまったくひっかからないんだということを 今更ながら知りました orz.

08 Jun 2014, 14:26

Windows環境でJenkinsからRSpecを実行するメモ

やりたいこと

Windows環境で、RSpecを夜中に連続実行したい。

cronを利用してもいいけど、Better cronな Jenkinsを使う方法を調べた。

なぜcronでなくてJenkins?

<div class="outline-text-3" id="text-1-1">
  <p>
    Jenkinsを利用する利点は、
  </p>

  <ul class="org-ul">
    <li>
      cron書式で設定Ok <ul class="org-ul">
        <li>
          <a href="http://futurismo.biz/archives/1490">cronとwatchrを使ってJenkinsからオレオレリポジトリ監視してみる | Futurismo</a>
        </li>
      </ul>
    </li>

    <li>
      グラフィカルな結果レポート
    </li>
    <li>
      ログが残せる
    </li>
  </ul>

  <p>
    ところかな。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://hazi.jp/2012-12/2203/">邪道Jenkins(スライド) | Hazi.log</a>
    </li>
    <li>
      <a href="http://image.slidesharecdn.com/jenkins-130706091448-phpapp02/95/slide-1-638.jpg?cb=1373120272">すごい cron ? &#8211; Jenkins 試した</a>
    </li>
  </ul>
</div></p>

むかしも挑戦したけど

<div class="outline-text-3" id="text-1-2">
  <p>
    今回はRCではなくて、WebDriver.
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/292">Selenium RCで自分のPCからテストケースを実行する | Futurismo</a>
    </li>
  </ul>
</div></p>

Environment

<div class="outline-text-3" id="text-1-3">
  <ul class="org-ul">
    <li>
      Windows 7 64bit
    </li>
    <li>
      Jenkins
    </li>
    <li>
      Ruby 2.0 p353
    </li>
    <li>
      RSpec 3.0
    </li>
  </ul>
</div></p>

Jenkins

Jenkins インストール

<div class="outline-text-3" id="text-2-1">
  <p>
    公式サイトからwarファイルをダウンロード。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://jenkins-ci.org/">http://jenkins-ci.org/</a> <ul class="org-ul">
        <li>
          jenkins.war
        </li>
      </ul>
    </li>
  </ul>
</div></p>

Jenkins起動

<div class="outline-text-3" id="text-2-2">
  <p>
    ワンラインで終わり。jenkins ワー!
  </p>

  <div class="org-src-container">
    <pre class="src src-language">C:\Jenkins&gt;java -jar jenkins.war

  <p>
    localhost の port 8080がデフォルトなのでアクセスする。おじさんがいれば成功。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://localhost:8080/">http://localhost:8080/</a>
    </li>
  </ul>

  <p>
    ほかにも、windowsインストーラからインストールする方法もある。むかし挑戦した。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/299">JenkinsをWindowsPCにインストールする | Futurismo</a>
    </li>
  </ul>

  <p>
    ハマった思い出があるので、今回は挑戦しない。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/331">WindowsバッチファイルをJenkinsで起動したらネットにアクセスできない | Futurismo</a>
    </li>
  </ul>
</div></p>

RSpecを連続実行

cron実行

<div class="outline-text-3" id="text-3-1">
  <p>
    新規ジョブを作成 > フリースタイル・プロジェクトのビルド > ビルド・トリガ > 定期的に実行を選択。
  </p>

  <p>
    5分に1度実行。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">*/5 * * * *

  <p>
    ビルド > Windowsバッチコマンドの実行を選択。入力欄にrspecの実行を記入。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">rspec "C:\cygwin\home\TSUNEMICHI\repo\selenium\selenium_spec.rb"

  <p>
    手動でビルドを実行してみて、起動が成功すればOK.
  </p>

  <div class="org-src-container">
    <pre class="src src-language">C:\Users\TSUNEMICHI\.jenkins\jobs\selenium-rspec\workspace&gt;rspec "C:\cygwin\home\TSUNEMICHI\repo\selenium\selenium_spec.rb" 

.

Finished in 18.02 seconds (files took 1.68 seconds to load) 1 example, 0 failures Finished: SUCCESS

テスト出力

<div class="outline-text-3" id="text-3-2">
  <p>
    せっかくなので、テスト結果の視覚化を。 ci_reporterというgemをつかうことで、RSpecの実行結果をJUnit形式のxmlに変換できる。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://github.com/nicksieger/ci_reporter/">nicksieger/ci_reporter</a>
    </li>
  </ul>

  <p>
    とのことだったが、rspec3は古いフォーマッタに対応していないとのことなので、今回は保留で。
  </p>

  <p>
    ほかにも、実行時間の視覚化もできるようだ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://sue445.hatenablog.com/entry/2013/03/17/015836">Jenkinsにスローテストのグラフを表示する &#8211; くりにっき</a>
    </li>
  </ul>
</div></p>

Special Thanks

RSpec

<div class="outline-text-3" id="text-4-1">
  <p>
    selenium-webdriverで、なぞのエラーがでて苦しむ。手動パッチをあてた。
  </p>

  <p>
    invalid byte sequence in UTF-8 (ArgumentError)
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://gosyujin.github.io/2013/03/18/selenium-firefox-loaderror/">Selenium WebDriverでFirefoxがロードできなくなった &#8211; kk_Atakaの日記@GitHub Pages</a>
    </li>
    <li>
      <a href="http://seesaawiki.jp/w/kou1okada/d/Cygwin%20-%20Ruby-1.9.3p327%20-%20win32/registry">Cygwin &#8211; Ruby-1.9.3p327 &#8211; win32/registry &#8211; PIB</a>
    </li>
  </ul>
</div></p>

Jenkins

<div class="outline-text-3" id="text-4-2">
  <ul class="org-ul">
    <li>
      <a href="http://codezine.jp/article/detail/7505">「Selenium2」テスト徹底活用! Jenkinsによる自動実行とSelenium Grid2による複数環境でのテスト (1/6):CodeZine</a>
    </li>
    <li>
      <a href="http://ozzy2010.blogspot.jp/2012/05/5web-jenkins-x-selenium.html">ソフトウェアテスト: 5分でできるWebテスト自動化 &#8211; Jenkins x Selenium</a>
    </li>
  </ul>
</div></p>

08 Jun 2014, 10:31

実行可能なドキュメント生成!AnsibleとOrg-modeで実現するRun Book Automation(RBA)

はじめに

org-babel-tangleをEmacsの外のコマンドラインから実行する方法を調べました。

そして、生成したyamlファイルをansibleにわたして実行することで、 実行可能なドキュメントを生成してみました。

関連する過去記事は以下。

Environment

<div class="outline-text-3" id="text-1-1">
  <ul class="org-ul">
    <li>
      ArchLinux
    </li>
    <li>
      Emacs 24.3
    </li>
  </ul>
</div>

Emacs の関数をコマンドラインから実行する

org-modeでかかれたドキュメントを コマンドラインから変換するためのスクリプトを調べた。

以下のサイトから直接スクリプトを引用する。

#!/bin/sh
# -*- mode: shell-script -*-
#
# tangle files with org-mode
#
DIR=`pwd`
FILES=""

# wrap each argument in the code required to call tangle on it
for i in $@; do
    FILES="$FILES \"$i\""
done

emacs -Q --batch \
    --eval "(progn
     (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
     (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\" t))
     (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
     (mapc (lambda (file)
            (find-file (expand-file-name file \"$DIR\"))
            (org-babel-tangle)
            (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
<p>
  このスクリプトを実行すると、コマンドラインからorg-babel-tangleが実行できる。
</p>

org-banel-tangleとansible-playbookを同時実行

枯れた自分のシェルスクリプトの知識を呼び覚まして、シェルスクリプトを書いた。

Indentをたもつために、以下のおまじないも加えた。

(setq org-src-preserve-indentation t)
<ul class="org-ul">
  <li>
    <a href="http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-makefile.html">Makefile Source Code Blocks in Org Mode</a>
  </li>
</ul>

<p>
  </div> </div> 

  <div id="outline-container-sec-4" class="outline-2">
    <h2 id="sec-4">
      virtualboxのインストールスクリプト
    </h2>

    <div class="outline-text-2" id="text-4">
      <p>
        以下のようなorgファイルを用意した。
      </p>

      <blockquote>
        <p>
          * VirtualBox
        </p>

        <p>
          &#8211; [[https://wiki.archlinux.org/index.php/VirtualBox_(%E6%97%A5%E6%9C%AC%E8%AA%9E)][VirtualBox (日本語) &#8211; ArchWiki]]
        </p>

        <p>
          以下のモジュールが必要。
        </p>

        <p>
          &#8211; virtualbox<br /> &#8211; virtualbox-host-modules<br /> &#8211; qt4
        </p>

        <p>
          #+begin_src yaml :tangle yes<br /> &#8212;<br /> &#8211; hosts: localhost<br /> sudo: yes<br /> tasks:<br /> &#8211; name: Install VirtualBox<br /> pacman: name=virtualbox,virtualbox-host-modules,qt4<br /> #+end_src
        </p>

        <p>
          ArchLinuxでゲストOSを動かすためにはKernelモジュールをロードする必要がある。
        </p>

        <p>
          #+begin_src yaml :tangle yes<br /> &#8211; name: Load Kernel Module<br /> command: modprobe vboxdrv<br /> #+end_src
        </p>
      </blockquote>

      <p>
        コマンドラインから実行して、virtualboxをインストール成功!カッコいい。
      </p>

      <div class="org-src-container">
        <pre class="src src-sh">[tsu-nera]% ./ansible-org-tangled.sh archlinux/virtualbox.org

PLAY [localhost] **************************************************************

GATHERING FACTS *************************************************************** ok: [localhost]

TASK: [Install VirtualBox] **************************************************** ok: [localhost]

TASK: [Load Kernel Module] **************************************************** changed: [localhost]

PLAY RECAP ******************************************************************** localhost : ok=3 changed=1 unreachable=0 failed=0

      <p>
        もちろん、org-modeなので、HTMLへの出力とかもできる。
      </p>

      <p>
        githubにアップするだげで、orgファイルはいい感じに表示されるところがよい。
      </p>

      <ul class="org-ul">
        <li>
          <a href="https://gist.github.com/tsu-nera/83084289c9c6660812de">https://gist.github.com/tsu-nera/83084289c9c6660812de</a>
        </li>
      </ul>
    </div>
  </div>

08 Jun 2014, 06:34

自分のデスクトップ環境の歴史を記録する!ansibleで設定ファイルをクラウド管理する方法

はじめに

いままで、このブログには自分がPCで実施した設定を技術メモとして書いてきた。

自宅でためした内容を会社でも実施することがかなりある。 どうせならば、ブログとして残すとともに、実行可能なスクリプトとして残したい。

ということで、構成管理ツールである、Ansibleを試すことにした。

今回は、ローカルマシン(ArchLinux)の設定を目的にして試してみます。

ちなみに、関連記事は以下。

Environment

<div class="outline-text-3" id="text-1-1">
  <ul class="org-ul">
    <li>
      Arch Linux
    </li>
    <li>
      Python 3.5
    </li>
  </ul>
</div>

Ansibleのインストール

Ansibleとは、いわゆる構成管理ツール。サーバの設定を自動化することができる。

sudo pacman -S ansible
<p>
  ちなみに、以下の方法ではbuildでエラーした。なんでかな?
</p>

<div class="org-src-container">
  <pre class="src src-language"># pip

sudo pacman -S python-pip sudo pip install ansible

easy_install

sudo pacman -S python-setuptools sudo easy_install ansible

Ansibleをつかってみる

ping

<div class="outline-text-3" id="text-3-1">
  <p>
    pingコマンドというのがあり、これでインストール後の疎通確認ができる。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">mkdir ansible

cd ansible echo ‘localhost’ > host ansible localhost -m ping -i hosts

  <p>
    hostsというのはインベントリファイルという。 インベントリファイルに登録されたホストにのみansibleは実行可能。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://github.com/yteraoka/ansible-tutorial/wiki/Inventory-File">Inventory File · yteraoka/ansible-tutorial Wiki</a>
    </li>
  </ul>
</div>

localで利用する

<div class="outline-text-3" id="text-3-2">
  <p>
    公式Docによると2つの方法がある。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># コマンドラインから --connection=localを設定

ansible-playbook playbook.yml –connection=local

playbookに以下を記述


gitを入れてみる

<div class="outline-text-3" id="text-3-3">
  <p>
    以下の記事を参考に、gitをインストールしてみる。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://qiita.com/itiut@github/items/e8b95ac9b9ea2a6ea701">AnsibleをUbuntuのローカルで使う &#8211; Qiita</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">---

コマンドラインから実行。-K オブションでパスワードを聞かれる。

ansible-playbook site.yml -i hosts -K

-i hostsは環境変数を設定することで省略可能。

export ANSIBLE_HOSTS=~/.ansible/hosts

/etc/sudoersで以下の一行を追加することで、-Kも書略できる。

# visudo
username ALL=(ALL) NOPASSWD:ALL

NTPの設定をしてみる

実施手順

<div class="outline-text-3" id="text-4-1">
  <div class="org-src-container">
    <pre class="src src-language"># ntpのインストール

pacman -S ntp

ntpサーバへの接続設定

cp ntp.conf /etc/ntp.conf

  <p>
    /etc/ntp.confの内容は以下。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># With the default settings below, ntpd will only synchronize your clock.

#

For details, see:

- the ntp.conf man page

- http://support.ntp.org/bin/view/Support/GettingStarted

- https://wiki.archlinux.org/index.php/Network_Time_Protocol_daemon

Associate to public NTP pool servers; see http://www.pool.ntp.org/

server -4 ntp.nict.jp server -4 ntp1.jst.mfeed.ad.jp server -4 ntp2.jst.mfeed.ad.jp server -4 ntp3.jst.mfeed.ad.jp

Only allow read-only access from localhost

restrict default nomodify nopeer noquery restrict 127.0.0.1 restrict ::1

driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp.log

  <p>
    こうなった。以下を参考にしたけれども、途中でわからなくなった。 すみませんが、リンク先参照ということで。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://gist.github.com/phillipuniverse/7721288">Set up NTP with Ansible, dedicating one as a timelord</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">---

ArchLinuxの設定を書いてみる

<div class="outline-text-3" id="text-4-2">
  <p>
    ArchLinuxで利用するツールをyamlファイルで管理。
  </p>

  <div class="org-src-container">
    <pre class="src src-yaml"><span style="color: #a9a9a9;">---</span>

まとめ

デスクトップをプレーンテキストでバージョン管理したい。

dotfilesで設定を管理することを、一歩おしすすめて、OS自体を管理したい。

調べながらなので、今回の設定は時間がかかり、またpacmanくらいしかつかいこなせていない。 けれども、これからこのdotansiblesも成長させていく。 ansibleはとてもシンプルな仕様なので、覚えるのも時間がかからないはずだ。

調べてみると、dotfilesを管理するようにansibleでdesktopを管理するも流行ってる?

dotfilesと同じように、少しずつ自分の成長過程をプレーンテキストで管理して記録していく。

BookMarks

公式Doc

<div class="outline-text-3" id="text-6-1">
  <ul class="org-ul">
    <li>
      <a href="http://docs.ansible.com/index.html">Ansible Documentation — Ansible Documentation</a>
    </li>
  </ul>

  <p>
    日本語訳
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://github.com/shkumagai/ansible-doc-ja">shkumagai/ansible-doc-ja</a>vv
    </li>
  </ul>
</div>

チュートリアル

<div class="outline-text-3" id="text-6-2">
  <ul class="org-ul">
    <li>
      <a href="http://yteraoka.github.io/ansible-tutorial/">Ansible チュートリアル | Ansible Tutorial in Japanese</a>
    </li>
    <li>
      <a href="http://apatheia.info/blog/2013/04/06/about-ansible/">構成管理ツール Ansible について &#8211; apatheia.info</a>
    </li>
    <li>
      <a href="http://qiita.com/seizans/items/54da2077ac8e2dcf5d6f">vagrant &#8211; Ansible コトハジメ &#8211; Qiita</a>
    </li>
    <li>
      <a href="http://demand-side-science.jp/blog/2014/ansible-in-wonderland-01/">不思議の国のAnsible – 第1話 – DSS Tech Blog</a>
    </li>
    <li>
      <a href="http://tdoc.info/blog/2013/04/20/ansible.html">ansibleを使ってみる — そこはかとなく書くよん。</a>
    </li>
    <li>
      <a href="http://docs.ansible.com/pacman_module.html">pacman &#8211; Manage packages with pacman — Ansible Documentation</a>
    </li>
    <li>
      <a href="http://d.hatena.ne.jp/akishin999/20130815/1376520672">Ansible の Playbook を使ってみる &#8211; akishin999の日記</a>
    </li>
    <li>
      <a href="http://www.infiniteloop.co.jp/blog/2013/08/ansible/">はじめてAnsibleを使う人が知っておきたい7つのモジュール</a>
    </li>
  </ul>

  <p>
    ローカルで利用する。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://cloverrose.hateblo.jp/entry/2013/09/07/112153">Ansibleをローカルで使ってみた &#8211; cloverrose&#8217;s blog</a>
    </li>
    <li>
      <a href="http://qiita.com/itiut@github/items/e8b95ac9b9ea2a6ea701">AnsibleをUbuntuのローカルで使う &#8211; Qiita</a>
    </li>
  </ul>

  <p>
    Ansibleの哲学・アーキ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://tdoc.info/blog/2014/01/20/ansible_beyond_configuration.html">Ansibleのアーキテクチャー: 構成管理を超えて — そこはかとなく書くよん。</a>
    </li>
  </ul>

  <p>
    ansible bestpractice.
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://docs.ansible.com/playbooks_best_practices.html#always-name-tasks">Best Practices — Ansible Documentation</a>
    </li>
  </ul>
</div>

その他

<div class="outline-text-3" id="text-6-3">
  <ul class="org-ul">
    <li>
      <a href="http://qiita.com/advent-calendar/2013/ansible">Ansible Advent Calendar 2013 &#8211; Qiita</a>
    </li>
  </ul>
</div>

08 Jun 2014, 05:45

ArchLinux インストール後の設定メモ

はじめに

前回ArchLinuxをインストールしたので、今回はインストール後の設定についてまとめます。

[toc]

wifiの設定

まずは、wifiを有効化。

iw dev
wpa_supplicant -B -i wlp2s0 -c <(wpa_passphrase "ssid" "psk")
dhcpcd wlp2s0
<p>
  起動時に自動でwifi接続するように設定。
</p>

<div class="org-src-container">
  <pre class="src src-language">pacman -S wpa_actiond

systemctl enable netctl-auto@wlp2s0.service reboot

<p>
  再起動してネットに接続できればOK.
</p>

ユーザ設定

ユーザの作成。

useradd -m -g users -G wheel -s /usr/bin/zsh tsu-nera
passwd tsu-nera
<p>
  sudoをパスワードなしで利用するために、visudoを設定。rootになって、
</p>

<div class="org-src-container">
  <pre class="src src-language"># これで emacsで visudoが起動できる。

VISUAL=emacs visudo

末尾に以下の行を追加。

tsu-nera ALL=(ALL) ALL

ツールの設定

pacman

<div class="outline-text-3" id="text-4-1">
  <p>
    ArchLinuxのパッケージ管理ツール、pacmanをまずはべんきょ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Pacman_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">pacman (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <p>
    よく利用するツールをインストール。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S emacs git zsh tmux openssh

  <p>
    すべてをアップデート。
  </p>

  <p>
    n#+begin_src language pacman -Syu #+end_src
  </p>
</div>

yaourt

<div class="outline-text-3" id="text-4-2">
  <p>
    pacmanのラッパー。 特徴は、Arch User Repositoryにあるツールをインストールすることができること。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Yaourt_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Yaourt (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>
</div>

gitの設定

<div class="outline-text-3" id="text-4-3">
  <div class="org-src-container">
    <pre class="src src-language">ssh-keygen -t rsa

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/1280">githubに新しいリポジトリを作成してローカルのリポジトリをアップロードする | Futurismo</a>
    </li>
  </ul>
</div>

my dotfiles

<div class="outline-text-3" id="text-4-4">
  <p>
    github上で管理しているdotfilesをインストールする。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">git clone https://github.com/tsu-nera/toolkit.git

git submodule update –init

  <p>
    つづけて、emacsも立ち上げる。 el-getでパッケージ管理しているので自動でtoolはおとしてくる。
  </p>
</div>

日本語環境の設定

文字コードの設定

<div class="outline-text-3" id="text-5-1">
  <p>
    ja_JP.UTF-8をつかう。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># locale.genを編集

emacs /etc/locale.gen

以下をコメントアウト

en_US.UTF-8 UTF-8 ja_JP.UTF-8 UTF-8

locale.gen生成

locale.gen

  <p>
    コンソール環境では文字化けする。X Window System環境をを整えてから以下を設定。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">echo LANG=ja_JP.UTF-8 &gt; /etc/locale.conf

export LANG=ja_JP.UTF-8

IM/IME

<div class="outline-text-3" id="text-5-2">
  <p>
    親指シフトが利用できる、ibus-anthyを利用する。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># インストール

sudo pacman -S ibus-anthy

設定

ibus-setup

  <p>
    日本語入力はなかなか苦労した。 なぜなら、ibus-daemonを起動しても日本語入力できなかったから。
  </p>

  <p>
    結論としては、/etc/clipboardに設定をした。.zshenvや.xinitrc, .profileはすべて失敗した。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># ibus

export XIM=ibus export XIM_PROGRAM=/usr/bin/ibus-daemon export XIM_ARGS=“–xim” export GTK_IM_MODULE=“ibus” export XMODIFIERS=“@im=ibus” export QT_IM_MODULE=“ibus” ibus-daemon -d -x

Font

<div class="outline-text-3" id="text-5-3">
  <p>
    Ricty を使う。驚いたのは、archlinuxだと、以下のコマンド一つでインストールできてしまうこと。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">yaourt -S ttf-ricty

  <p>
    いままで散々苦労してきたが、あまりに導入が簡単過ぎて感動した。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/1313">いつ変えるの?今でしょ!Windowsプログラマーのための『Ricty』</a>
    </li>
    <li>
      <a href="http://futurismo.biz/archives/2072">美は生産性に宿る!プログラマーのためのフォントRictyをLinux Mintに導入した</a>
    </li>
  </ul>
</div>

GUI環境の設定

X Window System

<div class="outline-text-3" id="text-6-1">
  <div class="org-src-container">
    <pre class="src src-language"># x window systemのインストール

pacman -S xorg-server xorg-server-utils xorg-xinit pacman -S mesa

ドライバを調べる。

$ lspci | grep VGA Intel Corporation Haswell-ULT Integrated Graphics Controller(rev 09)

  <p>
    ここから適切なドライバを探す。自分のPCは intelなので、 xf86-video-intelのようだ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Xorg_(%E6%97%A5%E6%9C%AC%E8%AA%9E)#.E3.83.89.E3.83.A9.E3.82.A4.E3.83.90.E3.83.BC.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">Xorg (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S xf86-video-intel

  <p>
    タッチパッドの制御のために以下もインストール。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S xf86-input-synaptics

  <p>
    ただし、TouchPadは普段は邪魔なので、無効化しておく。エイリアスを切って、off/onをする。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">alias touchpad_disable='xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 0'

alias touchpad_enable=‘xinput –set-prop “SynPS/2 Synaptics TouchPad” “Device Enabled” 1’

slim

<div class="outline-text-3" id="text-6-2">
  <p>
    軽量なログインマネージャー。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S slim archlinux-themes-slim slim-themes

  <p>
    /etc/slim.confを設定する。テーマは/usr/share/slim/themsにある。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># defaultユーザの設定

default_user tsu-nera

テーマの設定

current_theme archlinux-darch-grey

  <p>
    最後に設定を反映する。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">systemctl enable slim.service

reboot

xmonad/urxvt

<div class="outline-text-3" id="text-6-3">
  <p>
    タイル型ウィンドウマネージャのxmonad, ターミナルにurxvtをつかう。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Xmonad_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Xmonad (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <p>
    これは以前から利用しているからだ。なので、詳細は省略。(過去記事参照)
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/2165">タイル型ウィンドウマネージャという新たな世界観に衝撃を受けた!</a>
    </li>
    <li>
      <a href="http://futurismo.biz/archives/2163">省エネ時代の軽快ターミナル!rxvt-unicode(urxvt)でサクサクターミナル生活 </a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S xmonad xmonad-contrib dmenu xmobar, rxvt-unicode

サウンド設定

ALSA

<div class="outline-text-3" id="text-7-1">
  <p>
    サウンドカードのデバイスドライバ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Advanced Linux Sound Architecture (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S alsa-utils

  <p>
    alsamixerをコマンドラインから起動する。 (自分の環境では) F6 の サウンドカード選択でHDA Intel PCHを選択。
  </p>

  <p>
    自分の場合は、これで音がでなかったので、以下の作業をした。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture#HDMI_output_does_not_work">Advanced Linux Sound Architecture &#8211; ArchWiki</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language"># 音がでるデバイスを調べる。

$ aplay -l *** ハードウェアデバイス PLAYBACK のリスト **** カード 0: HDMI [HDA Intel HDMI], デバイス 3: HDMI 0 [HDMI 0] サブデバイス: 11 サブデバイス #0: subdevice #0 カード 0: HDMI [HDA Intel HDMI], デバイス 7: HDMI 1 [HDMI 1] サブデバイス: 11 サブデバイス #0: subdevice #0 カード 0: HDMI [HDA Intel HDMI], デバイス 8: HDMI 2 [HDMI 2] サブデバイス: 11 サブデバイス #0: subdevice #0 カード 1: PCH [HDA Intel PCH], デバイス 0: ALC269VC Analog [ALC269VC Analog] サブデバイス: 11 サブデバイス #0: subdevice #0

音がでるかテスト

$ apply -D plughw:1,0 /usr/share/sounds/alsa/Front_Center.wav

youtube

<div class="outline-text-3" id="text-7-2">
  <p>
    youtubeを見るためには、Adobe Flash Playerが必要。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Browser_Plugins_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Browser Plugins (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S flashplugin

その他

時刻設定

<div class="outline-text-3" id="text-8-1">
  <p>
    時刻が狂っているので時刻合わせをする。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/1487">CentOSで日本標準時の時刻をntpで取得するためのメモ | Futurismo</a> <div class="org-src-container">
        <pre class="src src-language">systemctl enable ntpd

まとめ

前回の記事のArchLinuxの導入までで、30時間はかかった気がする。。疲れた。 ArchLinuxの導入の大変さを身をもって実感。 自分の手で設定をつくりあげる、これは大変だけれども非常に達成感があった。

ArchLinuxは壊れやすいときくので、なるべく詳細にインストールメモを残してみた。 なんとなく、再設定をしそうな気がするので。ArchWikiの異常な丁寧さと詳細さに感嘆した。 困っても、大抵のことはここに書いてあったので、迷うことはなかった。

なぜ、Linux MintからArchLinuxに移行しようとしたのだろう?

ローリングストーンモデルに惹かれた点が大きい。 Linux Mintはアップデートにフルインストールが必要だけれども、ArchLinuxはコマンド一つだ。

しかし、それは表の理由だ。真の理由は、ブランドバリューに引かれたから。 ArchLinuxには、かたよったステレオタイプがある。

『私、ArchLinuxをつかってます』というと、なんだかマニアっぽい。 『私、vuittonのバッグを持っているの』というのと同じ。

芸術家をアーチストという、そしてまた、ArchLinuxをつかうひとも、アーチストという。

そんな自己満足感と達成感に浸っている。

Bookmarks

01 Jun 2014, 08:20

TaskJugglerを利用してorg-modeからガントチャートを作成してみる

はじめに

org-modeでタスク管理をしているのだけれども、 いくつかのプロジェクトをガントチャートで見る方法がないか調べてみた。

TaskJugglerというツールが使えそうなので、ちょっくら試してみた。

TaskJugglerについて

TaskJugglerは、オープンソースのプロジェクト管理ツール。

特徴は、以下。

  • ガントチャート
  • コマンドラインベース
  • プレーンテキスト管理

なんとも自分にとってはうれしい内容。

10年以上つづいているプロジェクトらしく、 ドキュメントが充実しているところがさらにうれしい。

Install

<div class="outline-text-3" id="text-2-1">
  <p>
    Rubyでかかれているので、gem installでいける。簡単簡単。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">% gem install taskjuggler

% tj3 –version TaskJuggler v3.5.0 - A Project Management Software

  <ul class="org-ul">
    <li>
      <a href="http://www.taskjuggler.org/tj3/manual/Installation.html#Installation">Installation</a>
    </li>
  </ul>

  <p>
    サンプルプロジェクトを試してみる。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">wget http://taskjuggler.org/tj3/examples/Tutorial/tutorial.tjp

tj3 tutorial.tjp

  <p>
    htmlが生成される。Overview.htmlを開いてみる。
  </p></p>
</div></p>

Org-modeでつかう

org-modeには、taskjugglerを使うためのelがすでにはいっている。以下をrequireする。

(require 'ox-taskjuggler)

<p>
  以下のコマンドでorgからtjpに変換できる。
</p>

<ul class="org-ul">
  <li>
    org-taskjuggler-export
  </li>
  <li>
    org-taskjuggler-export-and-
  </li>
  <li>
    org-taskjuggler-export-process-and-open
  </li>
</ul>

<p>
  org-exportの一部として動くのでよい。
</p></p>

サンプル

Resourceを設定しないと、デフォルトでリソースが tsu-neraになるが、 -という文字でsyntax errorになるので、allocate属性をつけた。

 * TaskJuggler search                   :taskjuggler_project:
 ** test
    :PROPERTIES:
    :task_id:  taskjuggler
    :allocate: tsune
    :Effort:   2h
    :END: 
  
 * Resources                           :taskjuggler_resource:
 ** Developers
    :PROPERTIES:
    :resource_id: tsune
    :END:

<p>
  <img src="http://lh4.ggpht.com/-PRa1tPiOxow/U4rhSe3INKI/AAAAAAAABEo/9u73Ez3Pp1s/2014-06-01-171555_796x882_scrot.png" /> </div>
</p>

まとめ

<div class="outline-text-2" id="text-5">
  <p>
    これは、使いこなせば強力なツールになりそうだ。org-modeとの連携がいい。
  </p></p>
</div></p>

その他。

<div class="outline-text-2" id="text-6">
</div>

<div id="outline-container-sec-6-1" class="outline-3">
  <h3 id="sec-6-1">
    Special Thanks
  </h3>

  <div class="outline-text-3" id="text-6-1">
    <p>
      TaskJuggler Offical Document
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://www.taskjuggler.org/tj3/manual/toc.html">Index</a>
      </li>
    </ul>

    <p>
      org-manual
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://www.gnu.org/software/emacs/manual/html_node/org/TaskJuggler-export.html">TaskJuggler export &#8211; The Org Manual</a>
      </li>
    </ul>

    <p>
      github
    </p>

    <ul class="org-ul">
      <li>
        <a href="https://github.com/taskjuggler/TaskJuggler">taskjuggler/TaskJuggler</a>
      </li>
    </ul>

    <p>
      ちょっとふるい。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://orgmode.org/worg/org-tutorials/org-taskjuggler.html">Creating Gantt charts by Exporting to TaskJuggler</a>
      </li>
    </ul>

    <p>
      TaskJuggler 3に対応した記事。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://orgmode.org/worg/exporters/taskjuggler/ox-taskjuggler.html">Exporting Gantt charts with Taskjuggler v3 (tj3)</a>
      </li>
    </ul>

    <p>
      日本語の記事。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://ichiroc.hatenablog.com/entry/2010/05/16/000500#">org-mode で管理しているプロジェクトをガントチャートにする &#8211; ichiroc subset</a>
      </li>
    </ul>
  </div></p>
</div>

<div id="outline-container-sec-6-2" class="outline-3">
  <h3 id="sec-6-2">
    Environment
  </h3>

  <div class="outline-text-3" id="text-6-2">
    <ul class="org-ul">
      <li>
        Ruby 2.0.0
      </li>
      <li>
        TaskJuggler 3.5
      </li>
      <li>
        Linux Mint 16
      </li>
    </ul>
  </div></p>
</div></p>

01 Jun 2014, 05:01

Lets Noteを買ったのでとりあえずWindows8とArchLinuxのデュアルブートにしてみた

はじめに

新しいノートPCを買った。Panasonicの Let’s Note.

いままで散々弄りまわしてきたVAIOだけれど、 最近になって裏のネジがなくなってしまった。 そのため、ディスプレイが今にも外れそうな危ない状態だ。

VAIOには名残惜しいものの、このままだといつ壊れてもおかしくない。 そんなわけで、新しいPCを買うことになった。 本心は、再びVAIOを購入したいところだったが、VAIOがヨドバシに売っていなかった。

ヨドバシの店頭においてある一番高い、30万に届くような高スペックのLet’s Noteを購入。

最高スペックには最高のOSを!

ということで、Windows8とArchLinuxとのデュアルブートにすることにした。

以下は、インストールするまでの作業メモです。

[toc]

Windows側での事前準備

まず、購入時にはWindows8.1がすでにインストールされている。 デュアルブート化のための準備をWindows側でする。

ArchLinux ディストリビューションを取得

<div class="outline-text-3" id="text-2-1">
  <p>
    以下から、最新版をダウンロード。日本のミラーサイトからダウンロードする。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://www.archlinux.org/download/">Arch Linux &#8211; Downloads</a> <ul class="org-ul">
        <li>
          archlinux-2014.05.01-dual.iso
        </li>
      </ul>
    </li>
  </ul>
</div></p>

インストール用にUSBメモリ作成

<div class="outline-text-3" id="text-2-2">
  <p>
    USBWriter for Windowsで、ダウンロードしたISOファイルをUSBメモリに焼く。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://sourceforge.net/projects/usbwriter/">USBWriter | Free software downloads at SourceForge.net</a>
    </li>
  </ul>
</div></p>

高速スタートアップ解除

<div class="outline-text-3" id="text-2-3">
  <p>
    手順にしたがって、高速スタートアップを無効にする。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://www.eightforums.com/tutorials/6320-fast-startup-turn-off-windows-8-a.html">Fast Startup &#8211; Turn On or Off in Windows 8</a>
    </li>
  </ul>
</div></p>

パーティションを切る

<div class="outline-text-3" id="text-2-4">
  <p>
    コントロールパネル→管理ツール→コンピュータの管理→記憶域→ディスクの管理を機動起動。
  </p>

  <p>
    購入時、ドライブ構成はこんな感じ。
  </p>

  <ul class="org-ul">
    <li>
      合計 240GB <ul class="org-ul">
        <li>
          回復パーティション 800MB
        </li>
        <li>
          EFIシステムパーティション 260MB
        </li>
        <li>
          Cドライブ 221GB
        </li>
        <li>
          回復パーティション 15GB
        </li>
      </ul>
    </li>
  </ul>

  <p>
    CドライブからArchLinux用のパーティションを切り出す。 150GB/70GBの 2対1くらいの比率にしておくか。適当だけど。
  </p></p>
</div></p>

リカバリディスク作成

<div class="outline-text-3" id="text-2-5">
  <p>
    いざというときのために、リカバリディスクを作成。 これはノートPCの説明書にしたがった。
  </p></p>
</div></p>

FAQを読む/ArchWayを読む

<div class="outline-text-3" id="text-2-6">
  <p>
    FAQとArch Wayを読んで、インストールして後悔しないか再度確認。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/FAQ_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">FAQ (日本語) &#8211; ArchWiki</a>
    </li>
    <li>
      <a href="https://wiki.archlinux.org/index.php/The_Arch_Way_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">The Arch Way (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>
</div>

<div id="outline-container-sec-2-6-1" class="outline-4">
  <h4 id="sec-2-6-1">
    KISS
  </h4>

  <div class="outline-text-4" id="text-2-6-1">
    <p>
      Keep It Simple, Stupid.
    </p>

    <p>
      シンプルにしとけよ、このバカチンが
    </p></p>
  </div></p>
</div></p>

ArchLinuxのインストール

基本的には以下のページにしたがう。

USBメモリから起動

<div class="outline-text-3" id="text-3-1">
  <p>
    F2からBIOSの設定を変更して、USBメモリから起動する。
  </p>

  <p>
    いきなりエラーしてワクワクするO(〃⌒▼⌒〃)O
  </p>

  <div class="org-src-container">
    <pre class="src src-language">failed to start loader

  <ul class="org-ul">
    <li>
      <a href="https://teksyndicate.com/forum/linux/loaderefi-error-arch-linux/168495">Loader.efi error Arch Linux | Tek Syndicate</a>
    </li>
  </ul>

  <p>
    Secure Bootが怪しいということで、以下のガイダンスにしたがう。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#Secure_Boot">Unified Extensible Firmware Interface &#8211; ArchWiki</a>
    </li>
  </ul>

  <p>
    rootでログイン成功。
  </p></p>
</div></p>

言語の選択

<div class="outline-text-3" id="text-3-2">
  <p>
    キーマップで日本語を設定。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">loadkeys jp106

  <p>
    文字コードも設定。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">nano /etc/locale.gen

ja_JP.UTF-8 UTF-8

locale-gen export LANG=ja_JP.UTF-8

無線の設定

<div class="outline-text-3" id="text-3-3">
  <p>
    pingしてダメなことを確認する。unknown hostと出てきた。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">ping -c 3 www.google.com

  <div class="org-src-container">
    <pre class="src src-sh">iw dev

phy#0 Interface wlp2s0

ip link set wlp2s0 up

  <p>
    エラーした。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">RTNELINK answerss: Operation not possible do to RF-kill

  <p>
    wifiの物理スイッチがOffになってただけだった。スイッチオンしたら成功。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">wifi-menu wlp2s0

  <p>
    wifi-menuではdhcp設定がうまくいかない。手動設定でうまくいった。pingも通る。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">wpa_supplicant -B -i wlp2s0 -c &lt;(wpa_passphrase <span style="color: #e6db74;">"ssid"</span> <span style="color: #e6db74;">"psk"</span>)

dhcpcd wlp2s0

パーティションを切る

<div class="outline-text-3" id="text-3-4">
  <p>
    以下を参考にパーティションを考える。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Partitioning_(%E6%97%A5%E6%9C%AC%E8%AA%9E)#GPT_.E3.81.8B_MBR_.E3.81.AE.E9.81.B8.E6.8A.9E">Partitioning (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <p>
    こんな感じ。swap領域はwikiを信じて作成しない。 rootとhomeを分けておくと rm -rfしたときにデータ復旧できる。
  </p>

  <ul class="org-ul">
    <li>
      / 20GB
    </li>
    <li>
      /home 130GB
    </li>
  </ul>

  <p>
    /bootは、EFI system partitionがあるのでそれをつかう。 (この用語についてはあとでまたでてくる)
  </p></p>
</div>

<div id="outline-container-sec-3-4-1" class="outline-4">
  <h4 id="sec-3-4-1">
    gdisk
  </h4>

  <div class="outline-text-4" id="text-3-4-1">
    <p>
      パーティションツールは、SSDを長持ちさせるために、GPTに対応したgdiskを利用する。
    </p>

    <p>
      (以前つかったことがある GPartedを試みたものの、GPTの設定方法がわからなかった。 どうも一旦すべてのパーティションを削除しないとgptは設定できないようだった)
    </p>

    <div class="org-src-container">
      <pre class="src src-sh">gdisk /dev/sda

    <p>
      nコマンドでパーティション追加。
    </p>

    <ul class="org-ul">
      <li>
        Parttition number は defaultなので Enter
      </li>
      <li>
        First sector は defaultなので Enter
      </li>
      <li>
        Last sector は +20G/Enter
      </li>
      <li>
        GUIDは は defaultなので Enter
      </li>
    </ul>

    <p>
      最後にwでディスクに書き込む。
    </p></p>
  </div></p>
</div></p>

ファイルシステムの作成

<div class="outline-text-3" id="text-3-5">
  <p>
    ext4でパーティションをフォーマットする。
  </p>

  <p>
    まずは、lsblkで device nameを確認
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">lsblk

  <p>
    容量と見比べて、今回は以下が対象。
  </p>

  <ul class="org-ul">
    <li>
      sda7 20G Root用
    </li>
    <li>
      sda8 126G home用
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-sh">mkfs.ext4 /dev/sda7

mkfs.ext4 /dev/sda8

  <p>
    lsblk -fでFSTYPEがext4であることを確認。
  </p></p>
</div></p>

パーティションのマウント

<div class="outline-text-3" id="text-3-6">
  <p>
    パーティションをマウントする。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">mount /dev/sda7 /mnt

mkdir /mnt/home mount /dev/sda8 /mnt/home

  <p>
    EFI system partitionを /boot/efiにマウントする。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">mkdir -p /mnt/boot/efi

mount /dev/sda2 /mnt/boot/efi

ミラーの選択

<div class="outline-text-3" id="text-3-7">
  <p>
    とりあえず、jaistとtukubaを最優先に設定。
  </p></p>
</div></p>

ベースシステムのインストール

<div class="outline-text-3" id="text-3-8">
  <p>
    ついにインストール。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">pacstrap -i /mnt base base-devel

fstabの生成

<div class="outline-text-3" id="text-3-9">
  <div class="org-src-container">
    <pre class="src src-sh">genfstab -U -p /mnt &gt;&gt; /mnt/etc/fstab

Chroot とベースシステムの設定

arch-chroot /mnt /bin/bash

<p>
  ごちゃごちゃしているのでメモは省略。
</p></p>

ブートローダ設定

ブートローダは使ったことがあるGRUBにする。

べんきょ

<div class="outline-text-3" id="text-5-1">
  <p>
    まずは、用語がわからないので、wikiをざっとながめる。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Unified Extensible Firmware Interface (日本語) &#8211; ArchWiki</a>
    </li>
    <li>
      <a href="https://wiki.archlinux.org/index.php/GUID_Partition_Table_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">GUID Partition Table (日本語) &#8211; ArchWiki</a>
    </li>
    <li>
      <a href="https://wiki.archlinux.org/index.php/UEFI_Bootloaders_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Boot Loaders (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <p>
    つぎに自分のシステムがUEFIとGPTに対応しているか調べる。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">parted /dev/sda print

  <p>
    冒頭にPartition Table:gpt, リストの2番目に EFI system partitionとかいてある。 どうやらGPTとESPがあるもよう。さすが、最新式。
  </p></p>
</div></p>

GRUBインストール

<div class="outline-text-3" id="text-5-2">
  <p>
    Arch WikiのUEFIシステムのインストール手順にしたがう。ツールを入れる。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">pacman -S grub efibootmgr dosfstools

  <p>
    以下のコマンドでインストール
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck --debug

デュアルブート対応

<div class="outline-text-3" id="text-5-3">
  <p>
    これもwikiにしたがう。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">pacman -S os-prober

grub-mkconfig -o /boot/grub/grub.cfg

  <p>
    grub-mkconfigがエラーする。 os-proberを単体で実行しても同じエラーメッセージがでる。 os-proberを削除するとエラーがでない。どうもこれが悪いみたい。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://unix.stackexchange.com/questions/105389/arch-grub-asking-for-run-lvm-lvmetad-socket-on-a-non-lvm-disk">partition &#8211; Arch GRUB asking for /run/lvm/lvmetad.socket on a non lvm disk &#8211; Unix & Linux Stack Exchange</a>
    </li>
  </ul>

  <p>
    manualで grub menuを設定する。/etc/grub.d/40_customを編集。 以下を書くことで、grubのmenuにwindowsを表示できる。ArchLinuxはかってに表示される。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">#!/bin/sh

exec tail -n +3 $0

This file provides an easy way to add custom menu entries. Simply type the

menu entries you want to add after this comment. Be careful not to change

the ‘exec tail’ line above.

if [ “${grub_platform}” == “efi” ]; then menuentry “Microsoft Windows 8.1 x86_64 UEFI-GPT” { echo “Loading Microsoft Windows 8.1…” insmod part_gpt insmod fat insmod search_fs_uuid insmod chain search –fs-uuid –set=root $hints_string $uuid chainloader /EFI/Microsoft/Boot/bootmgfw.efi } fi

menuentry “System shutdown” { echo “System shutting down…” halt }

menuentry “System restart” { echo “System rebooting…” reboot }

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #a9a9a9;"># </span><span style="color: #a9a9a9;">uuid</span>

grub-probe –target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi 1231-C3B2 # hints_string grub-probe –target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi –hint-bios=hd0,gpt2 –hint-efi=hd0,gpt2 –hint-baremetal=ahci0,gpt2

  <p>
    /boot/grub/grub.cfgに反映させる。このコマンドでgrub.cfgに追記される。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">grub-mkconfig -o /boot//grub/grub.cfg

  <p>
    ここまで完了したら、reboot!
  </p>

  <p>
    再起動してgrubメニューにArchLinuxとWindowsが表示されていることを確認。今日はつかれたので、ここまで。
  </p></p>
</div></p>

参考にしたページのBookMarks

ArchLinuxとは

<div class="outline-text-3" id="text-6-1">
  <ul class="org-ul">
    <li>
      <a href="http://dic.nicovideo.jp/a/arch%20linux">Arch Linuxとは (アーチリナックスとは ) &#8211; ニコニコ大百科</a>
    </li>
    <li>
      <a href="http://divide-et-impera.org/archives/1388">Ubuntuに飽きた俺達の楽園はArch Linuxにあった | Divide et impera</a>
    </li>
    <li>
      <a href="http://zaka-think.com/linux/archlinux/archlinux%E3%82%92%E3%82%84%E3%82%81%E3%81%9F%E7%90%86%E7%94%B1/">Archlinuxをやめた理由 | ざかしんく</a>
    </li>
  </ul>
</div></p>

インストール

<div class="outline-text-3" id="text-6-2">
  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Installation_Guide_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Installation Guide (日本語) &#8211; ArchWiki</a>
    </li>
    <li>
      <a href="https://wiki.archlinux.org/index.php/Beginners'_Guide_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Beginners&#8217; Guide (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>
</div>

<div id="outline-container-sec-6-2-1" class="outline-4">
  <h4 id="sec-6-2-1">
    Arch Linux のリリースを USB ドライブに書き込む方法
  </h4>

  <div class="outline-text-4" id="text-6-2-1">
    <ul class="org-ul">
      <li>
        <a href="https://wiki.archlinux.org/index.php/USB_Installation_Media_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">USB Installation Media (日本語) &#8211; ArchWiki</a>
      </li>
      <li>
        <a href="https://wiki.archlinux.org/index.php/Installing_Arch_Linux_on_a_USB_key">Installing Arch Linux on a USB key &#8211; ArchWiki</a>
      </li>
    </ul>
  </div></p>
</div>

<div id="outline-container-sec-6-2-2" class="outline-4">
  <h4 id="sec-6-2-2">
    パーティションの切り方
  </h4>

  <div class="outline-text-4" id="text-6-2-2">
    <ul class="org-ul">
      <li>
        <a href="https://wiki.archlinux.org/index.php/Partitioning_(%E6%97%A5%E6%9C%AC%E8%AA%9E)#GPT_.E3.81.8B_MBR_.E3.81.AE.E9.81.B8.E6.8A.9E">Partitioning (日本語) &#8211; ArchWiki</a>
      </li>
      <li>
        <a href="http://blog.volment.com/archives/=47">実は簡単Arch Linuxのインストール手順! | volment</a>
      </li>
      <li>
        <a href="http://qiita.com/syui/items/1ffec0f12c253cda122b">awesome &#8211; ArchLinuxのGUI環境設を整える vol.1 &#8211; Qiita</a>
      </li>
    </ul>
  </div></p>
</div>

<div id="outline-container-sec-6-2-3" class="outline-4">
  <h4 id="sec-6-2-3">
    デュアルブート関係
  </h4>

  <div class="outline-text-4" id="text-6-2-3">
    <ul class="org-ul">
      <li>
        <a href="https://wiki.archlinux.org/index.php/Windows_and_Arch_Dual_Boot_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Windows and Arch Dual Boot (日本語) &#8211; ArchWiki</a>
      </li>
      <li>
        <a href="https://wiki.archlinux.org/index.php/GRUB_(%E6%97%A5%E6%9C%AC%E8%AA%9E)#UEFI-GPT_.E3.83.A2.E3.83.BC.E3.83.89.E3.81.A7.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB.E3.81.95.E3.82.8C.E3.81.9F_Windows_.E3.81.AE.E3.83.A1.E3.83.8B.E3.83.A5.E3.83.BC.E3.82.A8.E3.83.B3.E3.83.88.E3.83.AA">GRUB (日本語) &#8211; ArchWiki</a>
      </li>
      <li>
        <a href="http://d.hatena.ne.jp/godai_0519/20140128/1390919028">ThinkPad X240をArch Linuxとのデュアルブートにするメモ &#8211; 堕(惰)プログラマ開発記録</a>
      </li>
      <li>
        <a href="https://spica.pw/blog/archives/=157">x240にArchとWindows8.1を共存させる | In the Spica</a>
      </li>
    </ul>
  </div></p>
</div></p>

その他

<div class="outline-text-3" id="text-6-3">
  <ul class="org-ul">
    <li>
      <a href="https://qiita.com/tags/archlinux">archLinuxに関する32件の投稿 &#8211; Qiita</a>
    </li>
    <li>
      <a href="http://qiita.com/xorphitus/items/3711895eb5d9f946c782">Arch Linux快適デスクトップ環境の構築 &#8211; Qiita</a>
    </li>
    <li>
      <a href="http://futurismo.biz/archives/2064">Windowsと Mint Linuxのデュアルブート環境をVAIOに構築した手順メモ | Futurismo</a>
    </li>
  </ul>
</div></p>

30 May 2014, 14:25

今の仕事のプロジェクト状況について

はじめに

今日は、愚痴な日記です。

不快に感じる人もいると思うので、そう感じたらreturnをお願いします。

ブログに個人的な感情をスケッチすることも、 あとで見返したときに懐かしく思うかもしれないので、 とりあえず今の感情を残しておく。

会議室によびだされる

今、会社で関わっているプロジェクトがうまくいっていない。

うまくいっていないというのは、 このままだと投資したお金を回収できないと言う意味。

今日は、会社で上司に呼ばれてこんなことをいわれた。

社員ひとりを1ヶ月養うのに、xx万円かかる。

なので、プロジェクトをxヶ月続けるとxx万円かかる。

つまり、1500万円回収しないといけないのにこのままだとぜんぜんダメだよ!

みんなが汗水たらして働いたお金を投資しているのに、こんなこと許されないよ!

この危機感自体は自分も常々感じていて全く同感なのだけれども、 会議室に呼ばれて対面でいわれると心がとてもイタい。

自分の市場価値って

このままだと、数ヶ月携わってきたプロジェクトが打ち切りになってしまう。

このままだと、自分は会社で利益を生み出すどころか、 会社にいくだけで毎日xx万円を消費するだけになってしまう。

自分の1行書くプログラムにどれだけの価値があるのだろうか?

プログラマはスキルによって市場価値が決まるのだときいて、 必死で毎日スキルを磨いているはずなのだが、 自分の生み出す珍妙なプログラムがお金を生み出すのか全く実感として沸かない。 プログラムをビジネスとしてお金につなげる感覚がまるでない。

ましてや、そこから1000万を越えるような利益が生まれるのだろうか?

日本の平均年収が400万円って、スゴいことではないか? 自分には、100万円も自力で稼ぐ自信がない。。。 生産性も平均以下だし、いつも工程遅延を起こすし。 自分の市場価値ってそもそもプラスなのだろうか??

先日先輩に、どうすればお金儲けができるか考えています、と言ったら、

残業すれば?

といわれた。それは、完全にズレている!

inovativeが降りてくるのを待っている

もう少し具体的に今関わっているプロジェクトのことを書くと、いわゆる

“Software-Defined” xxx

に関わるものを作っている。

自分のつくっているものは、世の中にあるものに対して 新規性がなく差別化ができてないというところが、転覆寸前なところだ。

敵はGoogleであり、Amazonであり、EMCであり、HPであり、 とにかく低予算と行き当たりバッタリなスキルでは 東郷平八郎もはだし逃げ出すような状況なのだ。

しかし、方向性は間違っていないと信じている。 Software-Definedを調べれば調べるほど、 これは単なるブームではなくて大きなうねりなることを感じる。 きっと、波に乗ればどんどん追加予算も投資してくれるはず。風は追い風なのだ。

Chuck’s Blogというブログで、 Software-Defined Storageに関する記事が怒涛のように投稿されて刺激された。

インフラまわりに関する知識はまるでシロウトなので、 まずは知識を頭に入れている。タイムリーにCourseraで SDNとOpenStackの講義が始まった。

Chucks氏は、Software-Definedの世界は、新しいなにかが生まれるといっている。

When it gets down to software-defined anything, the real question is — what the heck are we trying to do here?
Is our goal simply to do what we’re doing today, only do it incrementally better?
Or is our goal to re-invent the model of how things get done?

そのなにかをみつけて、実現させたい。 思いつかなければ1500万円がドブにすてられることになる。

お金が稼げるかという観点では、 プロジェクトがいつ打ち切りにされてもしかたがない状況。 それは、妥当な判断だとおもうし、それは早く判断してほしい。 このままだと生きているだけでリソースを食いつぶしてしまうので。

しかし、ようやくプロジェクトに愛着が沸いてきたのだ。 個人的にはなんとか延命させたい。 こんな状況でも、潰れる最後の日まで、希望を信ることにする。

29 May 2014, 12:36

Seleniumをブラウザなしで起動するための方法を調べた

やりたいこと

Seleniumでテストを実行するとき、いちいちブラウザを立ち上げると重くて遅い。

そこで、ブラウザを立ち上げずに、 ヘッドレス(headless)にSeleniumを実行する方法を調べてみた。

Seleniumは実行するブラウザを自由にいれかえることができる。 そこで、特殊なブラウザを指定することによって実現できそうだ。

Environment

<div class="outline-text-3" id="text-1-1">
  <ul class="org-ul">
    <li>
      windows 7 64bit
    </li>
    <li>
      ruby 2.0
    </li>
  </ul>

  <p>
    環境はRuby & Windowsです。
  </p>

  <p>
    [toc]
  </p></p>
</div></p>

Base

このコードを改造する。ベースのドライバは firefox

require "selenium-webdriver"

driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://google.com"
element = driver.find_element(:name, 'q')
element.send_keys "PhantomJS"
element.submit
puts driver.title

driver.quit

HtmlUnit Driver

HtmlUnit Driverの特徴は、

  • HtmlUnit は GUI を持たない WebBrowser の Java ベースの実装
  • ava 以外の言語でこのドライバーを使用するには Selenium サーバーが必要

ということで、以下からSelenium Serverを取ってくる。 検索窓から selenium-serverと検索して、最新版のjarファイルを落とす。

コマンドラインから起動。

> java -jar selenium-server-standalone-2.39.0.jar

<p>
  <a href="http://www.storklab.com/seleniumhq.org/docs/03_webdriver.html#htmlunit-driver">この</a> ページに従って、以下のように書く。
</p>

<div class="org-src-container">
  <pre class="src src-language">driver = Selenium::WebDriver.for :remote, :url =&gt; "http://localhost:4444/wd/hub", :desired_capabilities =&gt; :htmlunit

<p>
  ページの取得は成功したけれども、検索窓を探すことができなかった。別の手段をば。
</p></p>

PhantomJS Driver

PhantomJS Driverは、No Browserなブラウザ。(意味不明)

PhantomJSの内部でGhostDriverというものを利用して、 これでNo GUIなブラウザを実現しているらしい。

以下のサイトからwindows用のバイナリをダウンロードして、 phantomjs.exeするだけ。

phantomjs.exe --webdriver=9134

<div class="org-src-container">
  <pre class="src src-language">require "selenium-webdriver"

driver = Selenium::WebDriver.for(:remote, :url => “http://localhost:9134")

driver.navigate.to “http://google.com" element = driver.find_element(:name, ‘q’) element.send_keys “PhantomJS” element.submit puts driver.title driver.quit

<p>
  また、phantom.exeに環境変数PATHを通すことで、 以下のように書くことができる。
</p>

<p>
  こうすると、 rubyスクリプト起動の延長でphantomjsを起動してportに接続してくれる。
</p>

<div class="org-src-container">
  <pre class="src src-language"># driver = Selenium::WebDriver.for(:remote, :url =&gt; "http://localhost:9134")

driver = Selenium::WebDriver.for :phantomjs

gem headless

linuxだとこういう方法もある。

Xvfbという仮想ブラウザウ利用するのでwindowsではできない。

Special Thanks

25 May 2014, 05:37

Rubyの無名関数についての整理メモ

はじめに

Scalaで関数型プログラミングを勉強しているが、無名関数がよくわからない。

無名関数はRubyでいうところのブロックとのこと。

なので、慣れ親しんだ言語のRubyで整理してみることにした。

スタート地点

単純に、足し算について考えてみます。

# -*- coding: utf-8 -*-
# ふつうの足し算
def add2(x, y)
  x + y
end

p add2(1, 2)

# 関数の抽象
def add3(x, y)
  add2(x, y)
end

p add3(1, 2)

<p>
  ここまではさすがに理解できる。
</p></p>

ブロック渡し

無名関数

<div class="outline-text-3" id="text-3-1">
  <p>
    そもそも無名関数(Annonimous Functions)とは、 名前付けされずに定義された関数。 Function Literal(関数リテラル)、匿名関数といわれることもある。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://ja.wikipedia.org/wiki/%E7%84%A1%E5%90%8D%E9%96%A2%E6%95%B0">無名関数 &#8211; Wikipedia</a>
    </li>
  </ul>
</div>

<div id="outline-container-sec-3-1-1" class="outline-4">
  <h4 id="sec-3-1-1">
    メリット
  </h4>

  <div class="outline-text-4" id="text-3-1-1">
    <ul class="org-ul">
      <li>
        一度しか使わない関数の名前を付けなくて済む。
      </li>
      <li>
        名前の衝突を考えなくて済む。
      </li>
      <li>
        関数の引数などに直接渡せる
      </li>
    </ul>

    <p>
      Rubyだと、無名関数はブロックで表現される。do endでも表現される。
    </p>

    <p>
      明示的に変数として表現する方法とそうでない方法がある。
    </p>

    <ul class="org-ul">
      <li>
        明示的に渡すときは、引数に&をつけて、callメソッドで呼び出す
      </li>
      <li>
        暗示的に渡すときは、yieldで呼び出す
      </li>
    </ul>

    <div class="org-src-container">
      <pre class="src src-language"># ブロック渡し(明示的)

def add5(x, y, &proc) proc.call(x, y) end

p add5(1, 2){|x, y| x + y}

ブロック渡し(暗示的)

def add6(x, y) yield(x, y) end

p add6(1, 2){|x, y| x + y}

関数値

Procedure Values。関数を値としてメモリ上に保持すること。

Rubyでは、ブロックをProcオブジェクトとして、 メモリ上に名前をつけて束縛したものが、それにあたる。

lambda, procとして表現する方法がある。callメソッドで呼び出す。

# 関数値の導入
def add4(x, y, proc)
  proc.call(x, y)
end
proc = lambda{|x, y| x + y}
p add4(1, 2, proc)

# ラムダの糖衣構文
p add4(1, 2, ->(x, y){x + y})

カリー化

そして、よく分からない概念が、カリー化。

複数の引数をとる関数を、

  • 引数が「もとの関数の最初の引数」で
  • 戻り値が「もとの関数の残りの引数を取り結果を返す関数」

であるような関数にすること。

部分適用を容易にすることが可能になるというメリットがあるらしい。

# カリー化
curry = lambda{|x| lambda{|y| x + y}}
p curry.call(1).call(2)

# ラムダの糖衣構文
curry2 = ->(x){->(y) {x + y}}
p curry2.call(1)
p curry2.call(1).call(2)

# カリーの糖衣構文
curried_proc = proc.curry
p curried_proc.call(1)
p curried_proc.call(1).call(2)

実行結果

<div class="outline-text-3" id="text-5-1">
  <p>
    この結果をみると、Procオブジェクトとしてメモリ上にあることがよくわかる。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">3

#<Proc:0x007fd286805e48@sample.rb:45 (lambda)> 3 #<Proc:0x007fd286805b28 (lambda)> 3