SVN から Git へ過去コミットログを担保した上で移行する

概要

リポジトリ管理を SVN から Git 移行する必要があり
その際に利用したコマンドをまとめます。

手順

まずリモートに移行先のリポジトリを作成しておきます。

以下コマンドを実行しようとしたら以下エラーが出た場合

1
2
3
4
5
6
7
$ git pull origin master

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

要約すると、公開鍵のパーミッション拒否されています、ということです。

remote repositoryにどのようにアクセスしようとしているかの確認をします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[svn-remote "svn"]
url = http://www.svn.rubygroupe.jp/svn/hogehoge
fetch = trunk:refs/remotes/svn/trunk
branches = branches/*:refs/remotes/svn/*
tags = tags/*:refs/remotes/svn/tags/*
[remote "origin"]
# url = git@github.com:xxxxxxxxx.git
<span style="color: #ff0000">url = https://github.com:xxxxxxxxx.git</span>
fetch = +refs/heads/*:refs/remotes/origin/*

再度 pull してみてください。

1
$ git pull origin master

あとがき

Git側がSVNを引き取ることを想定して用意しているという大人な対応に感謝

そもそも何故移行?という方はまずGitを触ってみてください。

MAMPにMemcacheをインストールしphpで動かすまで

概要

ローカル開発環境にMemcacheをインストールしたい。

環境

MacOSX Yosemite 10.10.1
MAMP3.0.7.3

注意

インストールするのはMemcacheです。Memcachedではないです。

ToDo

  • Memcacheのソースダウンロードしコンパイル
  • memcache.soをphp.iniから呼び出し
  • MAMP再起動

手順

  • Memcacheのソースダウンロードしコンパイル
  • memcache.soをphp.iniから呼び出し
  • php から利用 サンプル

以上

Python エラー対処: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability. _warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsec

概要

pysftp利用としたらgmp5以上にしてくれと怒られている。

pysftpを利用するのに必要なparamiko、
そのparamikoに必要なpycryptoがエラー出力している。

ToDo

gmp5 インストール
python リビルド
pycrypto アンインストール&インストール

手順

以上

CentOS で Python バージョンアップ

CentOS で Python バージョンアップ

経緯

pysftp を利用したかったが
元々インストール済みの 2.4 系が古く、動作しなかったため、
動作可能なバージョンを 2.7 系にアップする

環境

CentOS5.8(Final)

インストールする Python Version

Python2.7.6

インストール手順

yum でインストールすると他の不要なモジュールまでインストールしてしまい
依存関係を上書いてしまうので、ソースからビルドします。

  • pip インストール
  • paramiko, pysftp インストール

総評

Apache の再起動なし。既存 Python バージョンも残しで出来ました。

Ansible でサーバ環境構築

目的

Ansible でLAMP環境を構築する

経緯

Chefでサーバ環境構築していましたが、
設定ファイルが多い印象を持っていた為、
より敷居が低いという噂のAnsibleでの構築を考えました。

覚える為に

徐々に設定していく項目を増やしていく、
という方針で進めます。

個人的経験上ですが、
gitやQiitaでplaybookを見ていてもどの記述で何を実現しているか
を理解するのはとっつきにくく、理解せず実現させてしまう可能性もあるからです。

  • playbook.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ---
    - hosts: test-servers
    sudo: yes

    tasks:
    # Apache
    - name: be sure httpd is installed
    yum: name=httpd state=installed

    - name: be sure httpd is running and enabled
    service: name=httpd state=running enabled=yes

あとがき

以下サイトが大変参考になりました。

http://yteraoka.github.io/ansible-tutorial/

参考サイトを手順通り実行しても出来ない!
ということがよくあるので、
その際はサイトURLとできなかったことをまとめておくと
良いと思いました。

できないできない、と色々ネットサーフィンしてたら
また同じサイトを見てたりということもあるので。

さくらVPS CentOS6.5にRedisを導入しphpで動かすまで

Redis - ( レディス ) Remote Dictionary Server

Key Value Storeを構築できるツール

環境

  • さくらVPS CentOS6.5 Final
  • Redis 2.8.19 (2015/2月時点の最新Stable)
  • PHP 5.4.34

手順

  • Redisインストール
  • Redis設定
  • Redisデータ設定・取得テスト
  • chkconfig にRedis登録
  • phpredisインストール
  • php.iniにredis.so追加
  • httpd再起動
  • phpからcallして挙動確認

Redisインストール準備

1
2
$ sudo su
# yum -y install gcc make

Redisインストール
※圧縮ファイルをダウンロード→解凍→コンパイル

1
2
3
4
5
6
7
8
9
10
11
12
# cd /usr/local/src
# wget http://redis.googlecode.com/files/redis-2.2.12.tar.gz

--2014-09-12 14:59:10-- http://redis.googlecode.com/files/redis-2.2.12.tar.gz
redis.googlecode.com をDNSに問いあわせています... 74.125.204.82, 2404:6800:4008:c04::52
redis.googlecode.com|74.125.204.82|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 455240 (445K) [application/x-gzip]
`redis-2.2.12.tar.gz' に保存中

100%[==================================================================>] 455,240 555K/s 時間 0.8s
2014-09-12 14:59:12 (555 KB/s) - `redis-2.2.12.tar.gz' へ保存完了 [455240/455240]

圧縮ファイルの解凍/ビルド

1
2
3
# tar xzvf redis-2.2.12.tar.gz
# cd redis-2.2.12
# make && make install

設定ファイルバックアップ

1
# cp -p redis.conf  redis.conf.org

redis.conf 編集

1
# vi redis.conf

redis.conf変更内容

1
2
3
4
5
6
7
8
9
10
11
# daemon
#daemonize no
daemonize yes

# logfile
#logfile stdout
logfile /var/log/redis.log

#loglevel
#loglevel verbose
loglevel notice

redisサーバ起動

1
# redis-server redis.conf

クライアント起動

1
# src/redis-cli

redis設定の簡易テスト
データ設定

1
# set tanaka test

データ取得

1
2
# get tanaka
"test"

起動スクリプト作成 (init.dに作成)

1
sudo cp /usr/local/src/redis-2.2.12/utils/redis_init_script /etc/init.d/redis

設定ファイルをコピー

1
2
$ sudo mkdir /etc/redis
$ sudo cp /usr/local/src/redis-2.2.12/redis.conf /etc/redis/6379.conf

設定ファイル編集

1
$ sudo vim /etc/redis/6379.conf
1
2
3
4
5
6
7
8
9
10
11
#daemonize no   デーモン化の設定を有効化。
daemonize yes

# pidfile /var/run/redis.pid 起動シェルの設定にあわせる。
pidfile /var/run/redis_6379.pid

# logfile stdout ログファイル出力を、標準出力からファイルに変更
logfile /var/log/redis.log

# dir ./ working directoryにdumpファイルが生成されるらしいので、変更します。
dir /usr/local/redis/

後々仕様するディレクトリを作成しておく

1
sudo mkdir /usr/local/redis/

起動時に起動する様、chkconfigリストに登録

1
2
# /sbin/chkconfig --add redis
# /sbin/chkconfig redis on

service redis does not support chkconfig

「#」のすぐ後にスペースが入っていると上記エラーが出力されるので、スペースを削除する。

1
2
3
4
5
6
7
8
9
10
11
12
13
$ cat /etc/init.d/redis

# as it does use of the /proc filesystem.

REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

...
...

一行目の # as it does use of the /proc filesystem. が原因です。
この行を削除しましょう。

上記設定後、再度chkconfigリストに登録設定してください。

※可能であればrebootして起動確認

1
2
3
4
# reboot
# sudo su -
# cd redis-2.2.12
# src/redis-cli

phpredisインストール
//gitでソースを取得

** php.ini編集

1
2
[redis]
extension=redis.so

redisがphpのモジュールとして追加されているか確認

1
2
3
$ php -m | grep redis

redis

php.iniの更新を反映する為、apache 再起動

1
service httpd restart

以下例文で表示されるか確認

1
2
3
4
5
6
7
8
9
10
<?php
$redis = new Redis();

$redis->connect("127.0.0.1",6379);
$tmp = "redis (^-^)";
$redis->set("test_key",$tmp);
$res = $redis->get("test_key");

var_dump($res);
?>

Mac OS X に SonarQube 導入 - UnityのC#コーディング規約チェック

[f:id:kenzo0107:20140620233131p:plain]

環境

  • Mac OS X 10.9.3 (Marvericks)
  • SonarQube 4.3.1
  • SonarRunner 2.4

概要

  • C#のコーディング規約チェック管理ツールを導入します。

導入手順

①SonarQube, SonarRunnerをダウンロード

以下SonarQube公式サイトより
SonarQube, SonarRunnerをダウンロードして下さい。
※フォルダはどこに配置しても構いません。

http://www.sonarqube.org/downloads/

※2014.06.20現在、SonarQube4.2, MySQL5.6 では起動しないことを確認しています。
Homebrewでのインストールはバージョンが古いアプリケーションをDLする可能性があり、
動作保証が取れない場合があります。

②MySQL MacOSにインストール

以下ブログが非常にわかりやすかったです。

http://blog.hyec.jp/2014/02/mac-os-x-mavericksmysql.html

念の為、懸念箇所はここ!

1
2
3
4
...
Installing MySQL, administrator password required ...
Password:(ログインユーザのパスワードを入力)
...

上記で入力したパスワードを元にパスワードファイルが作成されます。

※ちなみに「seaside99」(九十九里浜)と入力しました。

ファイルを開くと「seaside99」でなく文字化け?という文字列が並んでいますが、
これがrootアカウントのパスワードです
[f:id:kenzo0107:20140621002405p:plain]

MySQLインストールが完了できたでしょうか?
以下実行し、MySQLを起動しましょう。

1
sudo /usr/local/mysql/support-files/mysql.server start

③SonarQube用のDatabase作成

    1. 以下実行し、MySQLにログイン
1
/usr/local/mysql/bin/mysql -u root -p(MYSQL_PASSWORD記載のパスワード)
    1. 「sonar」データベース作成
      以下実行でデータベース「sonar」作成
1
CREATE DATABASE sonar;

以下実行し、Databaseに「sonar」が追加されていることを確認する。

1
SHOW databases;

実行結果

1
2
3
4
5
6
7
8
9
10
11
mysql> SHOW databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sonar |
| test |
+--------------------+
5 rows in set (0.00 sec)
    1. 「sonar」ユーザを作成し、全権限を委譲
      ・ID:sonar PW:sonar のユーザ作成
1
CREATE USER 'sonar'@'localhost' IDENTIFIED BY 'sonar';

・sonarユーザに全権限付与

1
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost';

・権限反映

1
FLUSH PRIVILEGES;

・設定完了したので終わり

1
2
mysql> exit;
Bye

④sonar.properties編集

1
vim (SonarQubeのパス)/conf/sonar.properties

※「4.2」ディレクトリはバージョンなのでバージョンアップ時は変更してください。

以下Sonarが参照するMySQLのDB設定の為、「sonar.jdbc.url」のコメントアウトを外して有効化してください。

1
2
# Comment the embedded database and uncomment the following line to use MySQL
<span style="color: #e2241a">sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true</span>

⑤sonar-runner.properties編集

1
vi (Sonar-Runnerのパス)/conf/sonar-runner.properties

以下SonarRunnerが参照するDB設定、アカウント情報についてコメントアウトを外し有効化してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#Configure here general information about the environment, such as SonarQube DB details for example
#No information about specific project should appear here

#----- MySQL
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8

#----- Global database settings
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

#----- Security (when 'sonar.forceAuthentication' is set to 'true')
sonar.login=admin
sonar.password=admin

上記設定完了後、
SonarQubeを起動します。

1
2
3
4
5
6
7
8
$ (SonarQubeパス)/bin/macosx-universal-64/sonar.sh console
Running SonarQube...
wrapper | --> Wrapper Started as Console
wrapper | Launching a JVM...
jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
jvm 1 |
jvm 1 | 2014.06.25 11:00:48 INFO Web server is started

以上で MySQL, SonarQube が起動している状態になりました。

⑥SonarQubeでのプラグイン設定

以下のようなページが表示されます。
右上のLoginリンク押下します。

    1. Loginします
      Login : admin
      Password : admin
    1. 規約チェックするプラグインを設定する
      Settingリンク押下します。

設定ページが表示されます。

Pluginをインストールします。
・C#
・ReSharper
・StyleCop
・Japanese Pack

各リンクを押下し、installボタン押下

上記全Pluginをインストールすると以下のように表示されます。

この状態では、まだインストールが完了していません。
一度、SonarQubeを再起動させる必要があります。

「sonar.sh console」を実行したターミナルで
一度Ctr+CでSonarQubeをストップさせると以下結果が出力されます。

1
2
3
wrapper  | INT trapped.  Shutting down.
jvm 1 | 2014.06.22 01:48:15 INFO Web server is stopped
wrapper | <-- Wrapper Stopped

再度「sonar.sh console」を実行させ
SonarQubeにアクセス

http://localhost:9000

アップデートセンター>Installed Plugins
先ほどのPluginがインストール済みであることが確認できます。
※日本語化されてます。
[f:id:kenzo0107:20140622015442p:plain]

⑦コーディング規約チェックをしたいプロジェクト決定

例として、以下にUnityプロジェクトを配置しているとします。
~/Desktop/UnityProject/

同階層に「sonar-project.properties」作成します。

1
$ vim sonar-project.properties

内容は以下を入力してください。
※sonar.sources=(Unityのcsファイル格納パスを指定してください)

1
2
3
4
5
6
7
8
9
10
11
12
13
# Project identification
sonar.projectKey=Unity:DemoApp
sonar.projectVersion=1.0
sonar.projectName=AppliName

# Info required for Sonar
sonar.sources=~/Desktop/UnityProject/Assets/Scripts

# Comma-separated paths to directories with sources (required)
sonar.language=cs

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

⑧SonarRunner実行

例として、以下にSonarRunnerを配置しているとします。
~/Desktop/sonar-runner-dist-2.4/

sonar-project.properties作成した同階層で
sonar-runnerを実行

1
~/Desktop/sonar-runner-dist-2.4/bin/sonar-runner

ターミナルに以下が表示されると成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
INFO  - 37/37 source files analyzed
02:37:00.544 INFO - Sensor org.sonar.plugins.csharp.squid.CSharpSquidSensor@625cb0bb done: 1476 ms
02:37:01.246 INFO - Execute decorators...
02:37:05.536 INFO - Store results in database
02:37:05.839 INFO - ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard/index/Unity:DemoApp
02:37:05.945 INFO - Executing post-job class org.sonar.plugins.core.issue.notification.SendIssueNotificationsPostJob
02:37:05.974 INFO - Executing post-job class org.sonar.plugins.core.batch.IndexProjectPostJob
02:37:06.539 INFO - Executing post-job class org.sonar.plugins.dbcleaner.ProjectPurgePostJob
02:37:06.552 INFO - -> Keep one snapshot per day between 2014-05-25 and 2014-06-21
02:37:06.553 INFO - -> Keep one snapshot per week between 2013-06-23 and 2014-05-25
02:37:06.554 INFO - -> Keep one snapshot per month between 2009-06-28 and 2013-06-23
02:37:06.554 INFO - -> Delete data prior to: 2009-06-28
02:37:06.560 INFO - -> Clean AppliName [id=371]
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
Total time: 24.508s
Final Memory: 6M/87M
INFO: ------------------------------------------------------------------------

SonarQubeにアクセスするとProjects項目に
sonar-project.propertiesで指定した
sonar.projectNameリンクが表示されているので
リンク押下

コーディング規約のチェックが表示されます。

まずここまで出来たらあとは規約のカスタマイズになります。
本件は以上までとします。

カスタマイズはメニューの
品質プロファイル> Sonar Way
と進み、設定変更してみましょう。

補足

元々UnityのC#コーディング規約チェック実施する為に導入を試みましたが、
C#だけでなくJava, PHP, Python等かなり守備範囲が広いです。

他ブログではWindowsが多く、推奨環境としてはWindowsですが
MacOS Xで利用したい場合を本記事はまとめました。

Jenkins用Plugin [Sonar Plugin]も用意されており
定期チェックや他Jobと組み合わせてキックが可能です。

Mac OS X に wget インストール

ターミナルから以下実行

curlコマンドで圧縮されたwgetモジュール(wget-x.x.x.tar.gz)をダウンロードする。

curl -Oオプション 出力をオリジナルのシステムと同名のファイルに保存する

1
sudo curl -O http://ftp.gnu.org/pub/gnu/wget/wget-1.13.4.tar.gz

解凍

1
sudo tar zxvf wget-1.13.4.tar.gz

ディレクトリ内へ移動

1
cd wget-1.13.4

Makefileを作成

Makefile … インストール対象となるシステム特有の機能/情報のチェック状況を記述している

1
sudo ./configure –with-ssl=openssl

–with-ssl=openssl
のオプションを付けないと以下のようなエラーが出てインストールできない
configure: error: –with-ssl was given, but GNUTLS is not available.

Makefileを元にソースファイルのコンパイル

1
sudo make

インストール

1
sudo make install

試しに以下実行して、「index.html」がDLされていればOK !

1
wget http://yahoo.co.jp