27 May 2013, 23:12

GNU Diffutilsを使い倒す!diff3を使って他人の修正ブランチを自分のブランチに3ウェイマージする

はじめに

会社で使用している版数管理システムではブランチ間のマージができない。。。他人の修正を自分のブランチに取り込めないぽい。。ヽ( ゚д゚)ノ

ブランチ間でマージをするためには、両者のファイルを比較して、手動でマージシなければいけいない。そんなバカな、なにか方法があるのだろうと思い、調べてみた。

やりたいこと

  • ブランチ間の自動マージ。
  • コマンドライン上からサクッとできる。
  • ただし、競合があるときや慎重にやりたいときは、手動マージ。

3 way mergeアルゴリズム

調べてみると、svnやcvsもできないらしい。git やMercurialだとできる。

その違いは何かというと、マージのためのアルゴリズムが違うのだった。

マージ (バージョン管理システム) – Wikipedia

  • svn、cvs ・・・ 2 way merge(2ウェイマージ)。2つのファイルの差分を比較してマージ。競合の解決は手動。
  • git、mercural・・・3 way merge(3ウェイマージ)。2つのファイルの共通の祖先との差分を比較してマージ。競合の解決は自動。

競合を自動マージするためには、3-way mergeを使う必要がある。

GNU Diffutilsを使い倒す!

3 way merge をサクッとこなすコマンドを探しいてたら、diff3というものを発見!これは、GNU Project のDiffutilsに含まれるコマンドの一つらしい。ということで、このDiffutilsを調べた。

Diffutils – GNU Project – Free Software Foundation

diffutils とは、cmp, diff, diff3 そして sdiff のプログラムを含むパッケージ。これらのツール群を駆使して、差分比較やマージをコマンドラインからすることができる。

実験

以下のようなファイルをもとに、ツールを検証してみる。

比較対象

# test1 ファイル
a
a
a
a
a

# test2 ファイル
a
a
b
a
a

diff

まずはdiffから。これはさくっと2つのファイルの差分をみるためにつかう。

[tsu-nera]% diff test1 test2
3c3
< a
---
> b

Man page of DIFF

sdiff

対話的にマージするためのツール。まずは、なにも指定しないと、両者を並べてdiffしてくれる。見やすい。

[tsu-nera]% sdiff test1 test2
a                                                               a
a                                                               a
a                                                             | b
a                                                               a
a                                                               a

差分だけをみるには、’-s’をつける。

[tsu-nera]% sdiff -s test1 test2
a                                                             | b

マージするには、-o “出力ファイル” をオプションでつける。マージする部分で、%のプロンプトがでるので、一つづつどうマージするか答える。手動マージで自動マージはしてくれない。

ed:     両方の版にヘッダーで飾って、利用し、編集。
eb:     両側の版を使用して編集。
el:     左側の版を使用して編集。
er:     右側の版を使用して編集。
e:      新版を編集。
l:      左側の版を使用。
r:      右側の版を使用。
s:      共通行を寡黙に含む。
v:      共通行を饒舌に含む。
q:      終了。

こんな感じでマージ。

[tsu-nera]% sdiff -o output test1 test2
a                                                               a
a                                                               a
a                                                             | b
%r
a                                                               a
a                                                               a

Man page of SDIFF

diff3

3 つのファイル間にある違いを探す 。つまり、

3 way mergeができる!(^_^)v

比較のためのアルゴリズムがdiffと異なるのだ。。基本は以下。

%  diff3 MINE OLDER YOURS

  • MINE ・・・自分のファイル
  • OLDER ・・・ 2つのファイルの共通の先祖
  • YOURS ・・・他人のファイル

共通の祖先を指定することがキモ。これで他人の修正を自分のファイルに取り込むことができる。

OLDER — –MINE

            |

             —YOURES

まずは実行。暗号めいた出力がでる。

[tsu-nera]% diff3 test1 test1 test2
====3
1:3c
2:3c
  a
3:3c
  b

====3で3つめのファイルに差分があることを示す。

マージするには、-mオプションをつける。すると標準出力にマージ結果が出力されるので、リダイレクトでファイルに書き出せばよい。

[tsu-nera]% diff3 -m test1 test1 test2 > output
[tsu-nera]% less output
a
a
b
a
a

Man page of DIFF3

まとめ

  • 差分を確認したいときは、sdiff -s で。
  • 自動マージするときは、diff3 -m で。
  • 手動マージするときは、sdiff -o で。

なんとか頑張れそう。

26 May 2013, 06:38

Cygwinにtreeコマンドをいれるためのメモ

Cygwinにはtreeコマンドがないようです。

いつものことながら手のかかる子( 一一)

ということで、ソースコードからインストールします。

treeソースコードの入手

curl -LO http://mama.indstate.edu/users/ice/tree/src/tree-1.6.0.tgz
tar xzfv tree-1.6.0.tgz
cd tree-1.6.0.tgz

 

treeコンパイル

続いてコンパイルですが、Cygwinの場合、makefileの修正が必要。Cygwinはコメントを外してくださいという箇所がMakefileのなかにあるので、コメントアウトを消します。

# Uncomment for Cygwin:
CFLAGS=-O2 -Wall -fomit-frame-pointer -DCYGWIN
LDFLAGS=-s
TREE_DEST=tree.exe
OBJS+=strverscmp.o

 

あとは、コンパイルしてインストールするだけ。デフォルトでは、/usr/bin配下にインストールされます。

% make && make install
% tree
.
├── CHANGES
├── color.c
├── color.o
├── doc
│ツꀀツꀀ ├── tree.1
│ツꀀツꀀ ├── tree.1.fr
│ツꀀツꀀ └── xml.dtd
├── hash.c
├── hash.o
├── html.c
├── html.o
├── INSTALL
├── LICENSE
├── Makefile
├── Makefile~
├── README
├── strverscmp.c
├── strverscmp.o
├── TODO
├── tree.c
├── tree.exe
├── tree.h
├── tree.o
├── unix.c
├── unix.o
├── xml.c
└── xml.o

1 directory, 26 files

26 May 2013, 04:13

Unityのテストフィクスチャフレームワークの使い方を調べてみた

以前、Unityの使い方について記事にしました。そのときは、スクリプトを使っていろいろとテストを書く方法を試したけれども、Unityはスクリプトを使わずにテストフィクスチャを利用する方法もあるみたい。

UnityとCMockの使い方が分かる本『Embedded Testing with Unity and CMock』を読んだ | Futurismo

今日の参考文献は、これです。

テストフィクスチャを使う

Unityには、テストフィクスチャを利用するためのフレームワークが付随している。

/unity/extras/fixture

にあります。これを利用する。このフレームワークはunity_framework.hをunityといっしょに使うことで、テストグループをまとめて実行できたりする。とりあえず、自分の環境で動作するかどうかまずはチェック。

% mkdir build
% rake

20 Tests 0 Failures 0 Ignored
OK

 

必要なもの

必要な物は2つ。

  • Unity本体
    • unity/src
  • Unitry Fixuture
    • unity/extras/fixture/src

これらは、Makefileでパスを通して使うので、Unityを適当な場所に配置します。ここでは、$HOME/tools/unityに配置した。

ソースコードとテストコード

今回のソースコードとテストコードはこんな感じで作成した。

ソースコード

// src/hogehoge.c
#include "hogehoge.h"
int hogehoge(void)
{
  return 1;
}

// src/hogehoge.h
#ifndef _HOGEHOGE_H
#define _HOGEHOGE_H

int hogehoge(void);

#endif // _HOGEHOGE_H

テストコード

//test/Testhogehoge.c
#include "unity_fixture.h"
#include "hogehoge.h"

TEST_GROUP(hogehoge);

TEST_SETUP(hogehoge)
{
}

TEST_TEAR_DOWN(hogehoge)
{
}

TEST(hogehoge,first)
{
  TEST_ASSERT_EQUAL(1,hogehoge() );
}

TEST(hogehoge,second)
{
  TEST_ASSERT_EQUAL( 2 , (hogehoge() + 1) );
}

TEST_GROUP_RUNNER(hogehoge)
{
  RUN_TEST_CASE(hogehoge, first);
  RUN_TEST_CASE(hogehoge, second);
}

簡単な解説

  • TEST_GROUP

テストグループの宣言。ここではhogehogeという名前。

  • TEST_SETUP

テストグループで共通して実施したい前処理を書く。

  • TEST_TEAR_DOWN

テストグループで共通して実施したい後処理を書く。

  • TEST

テストフィクスチャ本体。ここにテストを書く。

  • TEST_GROUP_RUNNER

テストをまとめて実行するためのグループランナー。

テストランナーとmain関数

テストランナー用のファイル AllTests.cを作成。これは、定形なので、コピペしよう。main関数もココに書く。もし、main関数が自分のコードにすでにあるならば、UnityMainをmain関数から呼び出す。

#include "unity_fixture.h"

static void runAllTests()
{
  RUN_TEST_GROUP(hogehoge);
  /** ここにTEST_GROUPを追加していく **/
}

int main(int argc, char* argv[])
{
  return UnityMain(argc, argv, runAllTests);
}

 

Makefileの作成

Makefileを作成します。ポイントは、

  • unity.cとunity_fixture.cをコンパイルすること。
  • unity/srcとunity/extras/fixtureにインクルードパスを通してあげること

でしょうか。

#---- Outputs ----#
TARGET_BASE = hogehoge
TARGET_EXTENSION=.exe
TARGET = $(TARGET_BASE)$(TARGET_EXTENSION)

#--- Inputs ----#
PROJECT_HOME_DIR = .
UNITY_HOME = $(HOME)/tools/unity
UNITY_FIXTURE = $(UNITY_HOME)/extras/fixture

C_COMPILER=gcc

# Unity File
SRC_FILES  =$(UNITY_HOME)/src/unity.c
# Unity Fixture File
SRC_FILES +=$(UNITY_FIXTURE)/src/unity_fixture.c

# Source Files
SRC_FILES += src/hogehoge.c

# Test Files
SRC_FILES += test/Testhogehoge.c
SRC_FILES += test/AllTests.c

INC_DIRS  =-Isrc
INC_DIRS +=-I$(UNITY_HOME)/src
INC_DIRS +=-I$(UNITY_FIXTURE)/src

#SYMBOLS=-DTEST -DUNITY_SUPPORT_64

CLEANUP = rm -f build/*.o ; rm -f $(TARGET); rm -f $(TARGET2) ; mkdir -p build

all: default

default:
        $(C_COMPILER) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES) -o $(TARGET)
        ./$(TARGET)

テストの実行

テストを実行すると、テストが通ります。♪(〃’▽’〃)

./hogehoge.exe
Unity test run 1 of 1
..
-----------------------
2 Tests 0 Failures 0 Ignored
OK

おまけ

このフィクスチャの使い方は、テスト駆動開発による組み込みプログラミング ―C言語とオブジェクト指向で学ぶアジャイルな設計のサンプルコードを見るとよく分かる。

サンプルコードは以下からダウンロードできる。

http://pragprog.com/titles/jgade/source_code

これをみると、unity.framework/extras/fixture/build配下に、MakefileWorker.mkというものを配置して、Makefileの最後でインクルードしている。

こっちのやり方のほうが綺麗だな。ディレクトリを指定すれば、配下のファイルを自動でコンパイルしてくれるので。また、オプションによっては、gcovを実行したりもできるっぽい。面白そう!( ^ω^)こんど調べてみよう。

というわけで、サンプルコードをダウンロードして、MakefileWorker.mkを手に入れましょう。自作のMakefileは書いておきます。

#---- Outputs ----#
TARGET_BASE = hogehoge
TARGET_EXTENSION=.exe 
TARGET = $(TARGET_BASE)$(TARGET_EXTENSION) 

#--- Inputs ----#
PROJECT_HOME_DIR = .
UNITY_HOME = $(HOME)/tools/unity
UNITY_FIXTURE = $(UNITY_HOME)/extras/fixture
UNITY_BUILD_HOME = $(UNITY_HOME)/extras/fixture/build

C_COMPILER=gcc

#UNITY_CFLAGS += -DUNITY_OUTPUT_CHAR=UnityOutputCharSpy_OutputChar

SRC_DIRS = \
     $(PROJECT_HOME_DIR)/src\

TEST_SRC_DIRS = \
          $(PROJECT_HOME_DIR)/test\
          $(UNITY_HOME)/src\
          $(UNITY_HOME)/extras/fixture/src\

INCLUDE_DIRS =\
  .\
  $(PROJECT_HOME_DIR)/src\
  $(UNITY_HOME)/src\
  $(UNITY_HOME)/src\
  $(UNITY_HOME)/extras/fixture/src\
  $(UNITY_HOME)/extras/fixture/test\

include $(UNITY_BUILD_HOME)/MakefileWorker.mk
 

 

ついでにgithubにも。

git://github.com/tsu-nera/embedded_testing_with_unity_and_cmock.git

25 May 2013, 13:39

Cygwin使いならば絶対に身につけておきたいコマンド5選+apt-cyg

Windows上で開発をするならばCygiwinは必須ツールですが、今日はそんなCygwin独自コマンドを紹介します。

この本を読みました。Cygwin本はいろいろ出ているけれども、今までで一番詳しい解説書だった。オススメ。

 

cygstart

cygstartは、Windowsでのデフォルト起動プログラムで、指定されたファイルを実行できる。たとえば、テキストファイルがサクラエディタで開くのがデフォルトならば、

cygstart hogehoge.txt

と入力すると、サクラエディタで開かれる。

自分の場合は、aliasを切って、さらに便利にしている。

alias c='cygstart'

さらに便利なのが、ディレクトリを指定すると、そのフォルダがエクスプローラで起動される。たとえば、

cygstart .

と入力することで、カレントディレクトリをエクスプローラで表示することができる。

cygcheck

cygcheckはCygwin プログラムの診断を行うユーティリティ。

  PROGRAM              list library (DLL) dependencies of PROGRAM

  -c, –check-setup    show installed version of PACKAGE and verify integrity

                       (or for all installed packages if none specified)

  -d, –dump-only      just list packages, do not verify (with -c)

  -s, –sysinfo        produce diagnostic system information (implies -c)

  -r, –registry       also scan registry for Cygwin settings (with -s)

  -k, –keycheck       perform a keyboard check session (must be run from a

                       plain console only, not from a pty/rxvt/xterm)

  -f, –find-package   find the package to which FILE belongs

  -l, –list-package   list contents of PACKAGE (or all packages if none given)

  -p, –package-query  search for REGEXP in the entire cygwin.com package

                       repository (requires internet connectivity)

  –delete-orphaned-installation-keys

                       Delete installation keys of old, now unused

                       installations from the registry.  Requires the right

                       to change the registry.

  –enable-unique-object-names Cygwin-DLL

  –disable-unique-object-names Cygwin-DLL

  –show-unique-object-names Cygwin-DLL

                       Enable, disable, or show the setting of the

                       “unique object names” setting in the Cygwin DLL

                       given as argument to this option.  The DLL path must

                       be given as valid Windows(!) path.

                       See the users guide for more information.

                       If you don’t know what this means, don’t change it.

  -v, –verbose        produce more verbose output

  -h, –help           annotate output with explanatory comments when given

                       with another command, otherwise print this help

  -V, –version        print the version of cygcheck and exit

多機能だ。自分が使うのは、もっぱらパージョンコマンド(-c)だ。

[tsu-nera]% cygcheck -c cygwin gcc ruby screen zsh
Cygwin Package Information
Package              Version          Status
cygwin               1.7.18-1         OK
gcc                  3.4.4-999        OK
ruby                 1.9.3-p385-2     OK
zsh                  5.0.2-1          OK

こんな感じで、コマンドのバージョンが一気に調べられる。

cygpath

これはあまり使わないけど、今回の記事のために調べてみた。

WindowsとCygwinでは、ファイルパスの記述方法がことなる。

  • Windows形式のファイルパスは “C:\Users\hogehoge”
  • Cygwin形式のファイルパスは”/cygdrive/c/Users/hogehoge”

ファイルパスをWindows形式からCygwin形式に、Cygwin形式からWindows形式に、簡単に変換できるコマンドがcygpathだ。

# Cygwin形式からWindows形式に
[tsu-nera]% cygpath -w /home/TSUNEMICHI/dotfiles
C:\cygwin\home\TSUNEMICHI\dotfiles

# Windoows形式からCygwin形式に
[tsu-nera]% cygpath -u "C:\cygwin\home\TSUNEMICHI\dotfiles"
/home/TSUNEMICHI/dotfiles

getclip

getclipは、Windows上のクリップボードにあるものを標準入力に出すことができるもの。

getclip > hogehoge.txt

などと、リダイレクトすると、ファイルに出力できる。

putclip

putclipはgetclipの逆で、Windows上のクリップボードに、出力をコピーすることができる。通常は、echoまたはcatと、パイプと組み合わせて使う。

echo 'hogehoge' | putclip
cat hogehoge.txt | pugclip

getclip/putclipの文字化け対策

CygwinはUTF-8だが、WindowsはShift-jis。なので、そのまま使うとすると、文字化けしてしまう。

そんなときは、nkfコマンドをうまくつかう。

# utf-8に変換してファイルへ
 getclip | nkf -w > hogehoge.txt

# Shift-jisに変換してクリップボードへ
nkf -s < hogehoge.txt | putclip

nkfはCygwinのデフォルトコマンドではないので、以下の記事を参照してください。

Cygwinにnkfをインストールして文字化け攻略する! | Futurismo

apt-cyg

デフォルト内部コマンドではないけれども、Cygwinを使うにおいては必須コマンドがこれ。Linuxのapt-get や yumのように、簡単にツールを導入することが可能となる。通常ならば、setup.exeを利用してツールをいれるのだが、コレさえあれば、setup.exeは不要となる。

これについては、過去記事をごらんください。

setup.exeはもういらん!Cygwinでコマンドラインからインストール/アップデートする[apt-cyg]を試す | Futurismo

25 May 2013, 12:56

zshは至高の利便性?!Cygwinにzshをインストール&設定した導入方法まとめ

シェルのなかで、至高の利便性を誇ると言われているzshを試してみました。きっかけは、この本を読んだので。作業メモを兼ねて、簡単に使い方を書きます。

 

zshとは

zshとは、シェルの種類のひとつ。Bashやtcshなどの、全てのシェルのいいとこどりをして開発された至高のシェル。”z”というのは、これで” これでシェルは完成で終わりだよ” という意味。

Z Shell – Wikipedia

zsh導入まで

zshインストール方法

Cygwinパッケージに含まれているので、setup.exeかapt-cygで取得します。

$ apt-cyg install zsh
$ zsh --version
zsh 5.0.2 (i686-pc-cygwin)

zshと打ち込むとzshになります。入力のためのコンソールが%になりました。

# zshに切り替える
zsh

zshをログインシェルにする

ログインしたときに、zshが起動するように設定します。

# ログインシェルの確認
% echo $SHELL
/bin/bash

普通はchshを利用するけれども、Cygwinではそれがない!なので、/etc/passwdを直接書き換えます。

% emacs /etc/passwd

# 変更前
tsu-nera:unused:1000:513:U-TSUNEMICHI-VAIO\TSUNEMICHI,S-1-5-21-2209003112-325970183-628590984-1000:/home/TSUNEMICHI:/bin/bash

# 変更後
tsu-nera:unused:1000:513:U-TSUNEMICHI-VAIO\TSUNEMICHI,S-1-5-21-2209003112-325970183-628590984-1000:/home/TSUNEMICHI:/usr/bin/zsh

すると、CygwinやCygtermはみごとzshで起動。しかし、母艦terminalのminttyだけがbashのまま・・・・(´・ω・`)。

いろいろと頑張ること1時間・・・ついにわかった!(・∀・)

ユーザ環境変数で、$SHELLがbashだった。

コントロールパネル – > システム -> システムの詳細設定 -> 環境変数からユーザ環境変数の設定画面へ。/bin/bashをを/usr/bin/zshに変更することで、minttyもzshで起動するようになった(^O^)

.zshrcの作成

.zshrcを作成すると、ログイン時に読み込まれる。$HOMEディレクトリにまずは作成。

touch .zshrc

.zshrcに書く内容は、いろんなサイトを参考に作ってみた。

自分の.zshrcファイルを公開 – 世界中の羊をかき集めて

あと、zsh最強シェル入門の本も参考にした。以下、便利そうなのをつまんで紹介。

screenで端末間のヒストリ機能の共有

zshは強力なヒストリ機能が魅力。特に、screenコマンドを使っていると、端末で実行したコマンドを全て共有したい場合がある。zshならば、端末ごとの共有だってできてしまう。以下2つの設定で有効になる。

## Screenでのコマンド共有用
## シェルを横断して.zshhistoryに記録
setopt inc_append_history
## ヒストリを共有
setopt share_history

他にも、重複排除などの機能もたくさん。

カレントディレクトリの表示

zshを利用すると、コンソール上にカレントディレクトリも表示することができる。もうpwdなんていらないのである。設定は以下。

SnapCrab_NoName_2013-5-24_17-47-24_No-00

# 色有効
autoload -U colors
colors

# 色を定義
local GREEN=$'%{\e[1;32m%}'
local BLUE=$'%{\e[1;34m%}'
local DEFAULT=$'%{\e[1;m%}'

# 通常のプロンプト
PROMPT=$BLUE'[%n]%# '$WHITE
# 右側のプロンプト。ここでカレントディレクトリを出す。
RPROMPT=$GREEN'[%~]'$WHITE
setopt transient_rprompt

グローバルエイリアスの設定

グローバルエイリアスを設定することで、コマンドの任意の場所で展開できるようになる。zshだけの機能。

例えば、ls -l L と入力すると、ls -l | less というように変換される。

alias -g L='| less'
alias -g H='| head'
alias -g T='| tail'
alias -g G='| grep'
alias -g GI='| grep -i'

Cygwinでwindowsパス形式のWaringを抑止する

zshでの操作の途中でこんなエラーが出る。

  MS-DOS style path detected: ./.zshrc\~
  Preferred POSIX equivalent is: ./.zshrc/~
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames

これは、CygwinがWindowsパス形式をWaringとするため。コントロールパネル – > システム -> システムの詳細設定 -> 環境変数からシステム環境変数の設定画面へ。

CYGWIN=nodosfilewarningというように、環境変数追加するとよい。

SnapCrab_環境変数_2013-5-22_8-21-18_No-00

gnupack Users Guide – 技術情報

 

他にも便利そうな機能はたくさんあるけれども、とりあえずはこのへんでやめておく。

25 May 2013, 12:45

Cygwinでgit push時にパスワード入力を省略する方法

Cygwinでgit pushするとき、いちいちパスワードをうつのが面倒だ。なにか回避方法がないものか?

普通の(Linux)の場合、$HOME/.netrcに以下を追加すればよいらしい。

machine github.com
login tsu-nera
password ****************

 

ただし、Cygwinではうまくいかず、_netrcという名前にしろとあったり。

これでもうまくイカなかった。しかたがないので、expectコマンドを使って、パスワード入力を自動化した。

追記

名前は.netrcにして、アクセス権限を変更したらうまくいくようになった!!

chmod 600 ~/.netrc

git clone https://ID@HOST/… できない場合の暫定対策 – iWA’s 雑記@はてな出張所

25 May 2013, 10:40

iPadのSplashtop XDisplayを使ってWindowsをデュアルディスプレイにする方法とモバイルルーターで接続できない場合の対処法
20130525200911.jpg

 

会社にも、プライベートにも、どこにいくにもVAIOとiPadをもちあるいているアタクシですが、今日はiPadをデュアルディスプレイとして利用できるアプリがあることを知り、鼻血がでるほど興奮したので、紹介します。

環境

  • Windows 7 64bit
  • iPad 3

Splashtop XDisplayの紹介

利用するには、iPadアプリ Splashtop XDisplayを入れます。これを入れることで、iPadをデュアルディスプレイにすることができます。

 

無料なのは10分間のみ。それからはプラグインを購入する必要がある。

(追記 2013/10/22 )

結局はSplashtop XDisplayではなくて AirDisplayに乗り換えた)

以下、Windowsパソコンとの連携ですが、MacやLinuxももちろん行けるはず。

Splashtop XDisplayの設定方法

順に説明します。

Windowsでの設定

PCに専用ソフトStreamerを入れる。ダウンロードは以下から。

トップリモートデスクトップアプリ | iPad からコンピューターにアクセス | Splashtop 2 | Splashtop

ダウンロードしたら、インストーラを起動するとインストールされます。ここからは、Streamerの設定。

まずはアカウントの作成。

ScreenClip.png

次に、セキュリティキーを設定します。これで変な人からアクセスされることを防ぐ。

ScreenClip.png

iPad側の設定

iPadにSplashtop XDisplayのAppをインストール。

Splashtop XDisplay

iTunesで見る

 

これで、アプリを起動すれば同一wifi内にあるパソコンを自動検出するはずが・・・

接続できない!!(ノД`)

不思議なエラーコードが出て、接続は確立できない。

s=00 E=84000121

イーモバイルのPocket wifiでハマったこと

Pocket wifiなどのモバイルwifiの場合、「プライバシーセパレータ(プライベートセパレーター)」を無効にする必要がある(デフォルト有効)以下、説明を引用。

プライバシーセパレータ

無線ルータとしての利用時、無線LANで接続されるPC間などのファイル共有、および無線LAN対応プリンタとの接続をする場合、以下にて 「プライバシーセパレータ」 の機能を無効 にする設定を行う必要があります

イーモバイルでの設定方法は、以下。

  1. ブラウザを起動し、http://192.168.1.1/へ接続
  2. GL01P設定ツールにログイン。ここは自分は購入時からなにも設定していなかった。デフォルトではadmin/adminで入れる。
  3. 初めて設定するばあいは、「かんたん設定」から、そうでない場合は、設定 -> 無線LAN基本設定 を選択。
  4. プライベートセパレータの設定を 有効から無効にして適用。
skitch.png

 

これでOK。

ついにデュアルディスプレイ

20130525185513.jpg

これはやべぇ、誰かあたしの鼻血を止めてください(*’∀’人)

[http://www.youtube.com/embed/nw1ZdZ57sp4?rel=0]

20130525200911.jpg

 

会社にも、プライベートにも、どこにいくにもVAIOとiPadをもちあるいているアタクシですが、今日はiPadをデュアルディスプレイとして利用できるアプリがあることを知り、鼻血がでるほど興奮したので、紹介します。

環境

  • Windows 7 64bit
  • iPad 3

Splashtop XDisplayの紹介

利用するには、iPadアプリ Splashtop XDisplayを入れます。これを入れることで、iPadをデュアルディスプレイにすることができます。

 

無料版と450円の有料版があります。無料版は10分間で接続が解除される制限があるため、お試しで使ってみるのはよいと思う。

以下、Windowsパソコンとの連携ですが、MacやLinuxももちろん行けるはず。

Splashtop XDisplayの設定方法

順に説明します。

Windowsでの設定

PCに専用ソフトStreamerを入れる。ダウンロードは以下から。

トップリモートデスクトップアプリ | iPad からコンピューターにアクセス | Splashtop 2 | Splashtop

ダウンロードしたら、インストーラを起動するとインストールされます。ここからは、Streamerの設定。

まずはアカウントの作成。

ScreenClip.png

次に、セキュリティキーを設定します。これで変な人からアクセスされることを防ぐ。

ScreenClip.png

iPad側の設定

iPadにSplashtop XDisplayのAppをインストール。

Splashtop XDisplay
iTunesで見る

 

これで、アプリを起動すれば同一wifi内にあるパソコンを自動検出するはずが・・・

接続できない!!(ノД`)

不思議なエラーコードが出て、接続は確立できない。

s=00 E=84000121

イーモバイルのPocket wifiでハマったこと

Pocket wifiなどのモバイルwifiの場合、「プライバシーセパレータ(プライベートセパレーター)」を無効にする必要がある(デフォルト有効)以下、説明を引用。

プライバシーセパレータ

無線ルータとしての利用時、無線LANで接続されるPC間などのファイル共有、および無線LAN対応プリンタとの接続をする場合、以下にて 「プライバシーセパレータ」 の機能を無効 にする設定を行う必要があります

イーモバイルでの設定方法は、以下。

  1. ブラウザを起動し、http://192.168.1.1/へ接続
  2. GL01P設定ツールにログイン。ここは自分は購入時からなにも設定していなかった。デフォルトではadmin/adminで入れる。
  3. 初めて設定するばあいは、「かんたん設定」から、そうでない場合は、設定 -> 無線LAN基本設定 を選択。
  4. プライベートセパレータの設定を 有効から無効にして適用。
skitch.png

 

これでOK。

ついにデュアルディスプレイ

20130525185513.jpg

これはやべぇ、誰かあたしの鼻血を止めてください(*’∀’人)

[http://www.youtube.com/embed/nw1ZdZ57sp4?rel=0]

19 May 2013, 11:56

縦分割ができる開発版screen(version 4.1.0)をCygwinに入れるメモ

SnapCrab_~_2013-5-19_20-46-31_No-00

最近イタク感動を覚えた記事が以下です。

卜部昌平のあまりreblogしないtumblr – 俺の .screenrc が火を吹くぜ

 

スッゲー!Σ(゚Д゚ノ)ノ

いつかはこんな画面を目指して自分も精進しようと決意しました。screenはデフォルトでは横分割しかできないけれども、開発版のscreenはなんと縦分割が可能!ということで、開発版のscreen(version 4.1.0)をソースからコンパイルしてみました。

縦分割はtmuxも実現可能。最近はtmuxが熱いらしい。screenは終わったとかうわさをきいたが、Google検索調査ではこんなかんじだった。

 

screenとは

screenとは、GNU プロジェクトのひとつ。今は、

GNU Screen – GNU Project – Free Software Foundation

仮想端末作り出し、端末を切り替えながら作業することを助けるツール。一つのコンソール上で、バーチャルなコンソールをいくつも作成して、それらをコマンドラインから切り替えられる。Emacsでも画面分割ができるが、あれをコンソールで実現する感じ。

コンソール画面を10個くらい開いている自分にとっては神ツールだ。

最新版 GNU screeenをインストールする

最新版は、ソースからコンパイルして、インストールする。

事前準備

以下のツールがコンパイルに必要なので、まだCygwinに入っていない場合はインストールすること。

  • gcc4
  • autoconf
  • automake
  • libncurses-devel
  • git
  • libcrypt-devel
  • ncurses(make installするとき、tieというコマンド実行で必要っぽい。これでえらーした)
$ apt-cyg install gcc4 autoconf automake libncurses-devel

gccのバージョンは4である必要があるので、一応確認。

$ gcc --version
gcc (GCC) 4.5.3
Copyright (C) 2010 Free Software Foundation, Inc.

ソースの取得

githubより取得して、github用のスクリプトを実行します。

$ git clone git://git.sv.gnu.org/screen.git
$ cd screen/src
$ ./autogen.sh

./configureを実行。デフォルトでは/usr/bin配下にインストールされるので、自分でインストール場所を変えたい場合は、./configure –prefix=“hogehoge/hogehoge”で指定する。また、–enable-colors256を指定すると、256色が利用できる。

これでMakefileが生成されたらmakeする。

$ ./configure
$ make
$ make install

インストール完了!ミッションコンプリート!!━━v(o´∀`o)v━━

$ screen -v
Screen version 4.01.00devel (GNUc2cd059) 2-May-06

GNU screen最新の縦分割を試す

縦分割について

縦分割を実行するには、(デフォルトでは) Ctrl + a, |でいけます。

横分割は Ctrl + a, Sです。

グレイトな結果ですね。

[http://www.youtube.com/embed/p18lXnKlg9E?rel=0]

256色の設定について

minttyで256色を有効にするには、.screenrcに以下を追記するとよい。

 TERM=xterm-256color screen

Cygtermだとこのリンクが参考になる。

.screenrcの設定や開発版の新機能の探検はまた今度で。

オススメ書籍

余談だけれども、screenについては以下の本で解説されている。zshの本なのに。。。

参考

SnapCrab_~_2013-5-19_20-46-31_No-00

最近イタク感動を覚えた記事が以下です。

卜部昌平のあまりreblogしないtumblr – 俺の .screenrc が火を吹くぜ

 

スッゲー!Σ(゚Д゚ノ)ノ

いつかはこんな画面を目指して自分も精進しようと決意しました。screenはデフォルトでは横分割しかできないけれども、開発版のscreenはなんと縦分割が可能!ということで、開発版のscreen(version 4.1.0)をソースからコンパイルしてみました。

縦分割はtmuxも実現可能。最近はtmuxが熱いらしい。screenは終わったとかうわさをきいたが、Google検索調査ではこんなかんじだった。

 

screenとは

screenとは、GNU プロジェクトのひとつ。今は、

GNU Screen – GNU Project – Free Software Foundation

仮想端末作り出し、端末を切り替えながら作業することを助けるツール。一つのコンソール上で、バーチャルなコンソールをいくつも作成して、それらをコマンドラインから切り替えられる。Emacsでも画面分割ができるが、あれをコンソールで実現する感じ。

コンソール画面を10個くらい開いている自分にとっては神ツールだ。

最新版 GNU screeenをインストールする

最新版は、ソースからコンパイルして、インストールする。

事前準備

以下のツールがコンパイルに必要なので、まだCygwinに入っていない場合はインストールすること。

  • gcc4
  • autoconf
  • automake
  • libncurses-devel
  • git
  • ncurses(make installするとき、tieというコマンド実行で必要っぽい。これでえらーした)
$ apt-cyg install gcc4 autoconf automake libncurses-devel

gccのバージョンは4である必要があるので、一応確認。

$ gcc --version
gcc (GCC) 4.5.3
Copyright (C) 2010 Free Software Foundation, Inc.

ソースの取得

githubより取得して、github用のスクリプトを実行します。

$ git clone git://git.sv.gnu.org/screen.git
$ cd screen/src
$ ./autogen.sh

./configureを実行。デフォルトでは/usr/bin配下にインストールされるので、自分でインストール場所を変えたい場合は、./configure –prefix=“hogehoge/hogehoge”で指定する。また、–enable-colors256を指定すると、256色が利用できる。

これでMakefileが生成されたらmakeする。

$ ./configure
$ make
$ make install

インストール完了!ミッションコンプリート!!━━v(o´∀`o)v━━

$ screen -v
Screen version 4.01.00devel (GNUc2cd059) 2-May-06

GNU screen最新の縦分割を試す

縦分割について

縦分割を実行するには、(デフォルトでは) Ctrl + a, |でいけます。

横分割は Ctrl + a, Sです。

グレイトな結果ですね。

[http://www.youtube.com/embed/p18lXnKlg9E?rel=0]

256色の設定について

minttyで256色を有効にするには、.screenrcに以下を追記するとよい。

 TERM=xterm-256color screen

Cygtermだとこのリンクが参考になる。

.screenrcの設定や開発版の新機能の探検はまた今度で。

オススメ書籍

余談だけれども、screenについては以下の本で解説されている。zshの本なのに。。。

参考

19 May 2013, 10:20

CentOS 6.4にJavaとJenkinsをインストールして設定する
SnapCrab_NoName_2013-5-19_19-6-4_No-00.png

CentOSにJenkinsサーバを導入する手順をまとました。この公式手順にしたがいます。

Installing Jenkins on RedHat distributions – Jenkins – Jenkins Wiki

環境

  • CentOS 6.4(ただし、Windows上のVMware Playerで動作している)
  • Jenkins 1.515
  • Java 1.7.0

Javaのインストール

JenkinsはJavaで動作するので、Javaが入っていない場合は、先に入れます。自分の場合は、入ってなかったので、入れました。

ちなみにここで注意が必要。CentOSのデフォルトjavaではJenkinsは動作しないらしい。Sun公式Javaと互換性のあるもの(Sun-compatible)が必要か。

すでにCentOS用のJavaが入っている場合は、削除してJavaを入れなおす。Sunと互換性のあるJavaを入れなおす。一番簡単な方法はjava-1.6.0-openjdkを入れること、と書いてある。記事が古そうなので、1.7を入れる。

sudo yum install java-1.7.0-openjdk

インストールできたか確認。

java -version
java version "1.7.0_19"
OpenJDK Runtime Environment (rhel-2.3.9.1.el6_4-i386)
OpenJDK Client VM (build 23.7-b01, mixed mode, sharing)

関係ないけど、Windowsに導入した以下の記事も参考。いろいろ雑学がのってます。

Java JDK インストール方法まとめ(Windows) | Futurismo

Jenkinsのインストール

公式HPにそってコマンドを叩くだけの簡単なお仕事。wgetも入れておくこと。

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum -y install jenkins

簡単かとおもったが、エラーした。。。

 Downloading Packages:
http://pkg.jenkins-ci.org/redhat/jenkins-1.515-1.1.noarch.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.


Error Downloading Packages:
  jenkins-1.515-1.1.noarch: failure: jenkins-1.515-1.1.noarch.rpm from jenkins: [Errno 256] No more mirrors to try.

以下のサイトを頼りに解決方法を探す。

CentOS6.2にJenkinsをインストールする手順 | mawatari.jp

rpmで直接インストールします。これでOK.

wget http://pkg.jenkins-ci.org/redhat/jenkins-1.515-1.1.noarch.rpm
sudo rpm -ivh jenkins-1.515-1.1.noarch.rpm

さあ、Jenkinsさん。Welcome to CentOS!

sudo /etc/init.d/jenkins start
Starting Jenkins                                           [  OK  ]

# 起動とともにJenkins起動するおまじない
sudo /sbin/chkconfig jenkins on

Windows上のブラウザからアクセスしようとするが・・・アクセスできないお(´・ω・`)

http://192.168.118.130:8080/

Jenkinsの設定

Jenkinsのデフォルトポートは8080なので、ファイアウォールの設定でポート8080を開ける。設定ファイル /etc/sysconfig/iptablesを編集する。

$ sudo emacs /etc/sysconfig/iptables

以下の一行を追加する。ただし、COMMITの上に追加すること。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

ファイアウォールの再起動を実施

$ sudo service iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]

Jenkins氏、北朝鮮より、間違えた、CentOSより来訪。

SnapCrab_NoName_2013-5-19_19-6-22_No-00.png

参考

19 May 2013, 03:58

CentOSインストール後の設定メモ(minimal)

前回、minimalモードでCentOSをインストールしましたので、今回はそのあとの設定についてまとめました。

CentOSを最小構成(minimal)でVMware Playerにインストールした | Futurismo

ネットワーク設定

minimalだと、デフォルトではネットワークが使えないので、ネットワークの設定をします。

まずは、ネットワークサービス停止

# /etc/rc.d/init.d/network stop

次に設定ファイルを開いて修正します。/etc/sysconfig/network-scripts/ifcfg-eth0

vi /etc/sysconfig/network-scripts/ifcfg-eth0

なんとviしか入っていない!emacsしか使えない自分にとってはいきなり大ピンチだった。以下の部分を修正する。

# NICの有効化

ONBOOT=”yes”

# DHCPサーバとして起動

BOOTPROTO=”dhcp”

このへんは、このページを参考にした。

◇ネットワークの詳細設定(CentOS5)◇初心者のためのLinuxサーバー構築講座(CentOS 自宅サーバー対応)☆お便利サーバー.com☆

修正が終わったら、ネットワークをスタート。

# /etc/rc.d/init.d/network start

ツールのアップデート

kernelを含め、ツール類を全てアップデートする。-yは全て質問にYesするおまじない。

# yum -y update

ユーザの追加

作業用のユーザを作成する。rootだとなんでもできてしまうため。

# useradd hogehog

# passwd hogehoge

# chmod 701 /home/hogehoge

作成したユーザにはsudoを実行できるようにする。

echo ‘hogehoge ALL=(ALL) ALL’ >> /etc/sudoers

一般ユーザでもroot権限が必要なコマンドを実行できるようにする 窶錀 sudo | Linuxで自宅サーバ構築

telnetできるようにする

telnetもデフォルトでは使えません。設定方法は別記事にまとめました。

CentOSでtelnetできるようにするまでの手順(クライアント・サーバ) | Futurismo

とりあえず、最小限サーバなのでこんなところか?必要に応じてまた追記する。

参考