SSHでのgitリポジトリ公開
例えば「/home/hoge」以下にフォルダを掘って、sshで公開する方法。
1. フォルダ作成
mkdir -p /home/hoge/repos/project
2. 公開用bareリポジトリ作成
git clone --bare project project.git
これでリポジトリ作成完了。
sshでのcloneが可能になる。
※例:ローカルにsshでつないでclone git clone ssh://localhost/home/hoge/repos/project/project.git ※例:ローカルファイルのリポジトリをclone git clone file:///home/hoge/repos/project/project.git
Ubuntu上でMySQLデータをtmpfs上に配置する
テストが増えてRspecフル実行が10分以上かかる。何とかしたい。
→MySQLデータメモリ上に置いて速くすれば良いんじゃね?
ということで、MySQLのデータファイルをtmpfsに置くことで速度向上を計ってみた。
前提
- Ubuntu11.10
- MySQL5.1
手順
tmpfsのマウント
sudo mount -t tmpfs -o size=512m tmpfs /mnt/mysql_tmpfs/
MySQLデータのバックアップ
sudo service mysql stop sudo mv /var/lib/mysql /var/lib/mysql_backup
MySQLデータをコピー&シンボリックリンク作成
sudo mkdir /mnt/mysql_tmpfs/mysql sudo cp -rf /var/lib/mysql_backup/* /mnt/mysql_tmpfs/mysql sudo ln -s /mnt/mysql_tmpfs/mysql /var/lib/mysql
AppArmor設定
このままMySQLを起動したところ起動しないので、/var/log/mysql/error.logを見たところ「Plugin 'FEDERATED' is disabled.〜」とか言われている。
これはAppArmorにより許可されていない場所にデータが配置されているためであり、以下のように該当フォルダの許可設定を追加する必要がある。
sudo vi /etc/apparmor.d/usr.sbin.mysqld
# 追加 /mnt/mysql_tmpfs/mysql/ r, /mnt/mysql_tmpfs/mysql/** rwk,
MySQL起動
sudo service mysql start
JenkinsPersonaジェネレータ作成&コマンドーPersonaを作成してみた
今、自分の中でJenkinsPersonaPluginを使ったカスタマイズが熱いので、勢いでジェネレータを作成したので公開。
ついでにコマンドーPersonaを作成してみた。
※コマンドーは今週木曜、2012/6/28 13:25からテレ東で放送!
http://www.tv-tokyo.co.jp/program/detail/13645_201206281325.html
ジェネレータ
sinatra&Herokuで作成。
サイト: http://jenkins-persona-generator.herokuapp.com/
ソース: https://github.com/TrinityT/jenkins_persona_generator
コマンドーPersona作成
作成したプラグインファイルはここからDL可能。 https://github.com/downloads/TrinityT/jenkins_persona_generator/command_persona.zip
コマンドーPersona導入
既にJenkinsPersonaPluginをインストール済み前提です。
$JENKINS_HOME/persona以下に展開。
そのあとは「設定→ビルド後の処理→Associate Persona」でPersonaを指定すればOK。
unzip command_persona.zip mv command $JENKINS_HOME/persona/ chown jenkins:jenkins -R $JENKINS_HOME/persona/ service jenkins restart
これで君もネタJenkinsライフ!
Jenkins+schemaSpyでHTMLテーブル定義書を生成する
DBスキーマからテーブル定義書を生成する方法を探していた所、schemaSpyというツールを発見。
これとJenkinsを組み合わせて、常に最新のHTMLテーブル定義書を生成する方法を確立できた。
前提
- UbuntuServer11.10
- MySQL5.1
- JDK1.6系がインストールされていること
- Jenkins実行サーバで対象のDBにアクセス可能なこと
手順
JDBCコネクタインストール
sudo apt-get install libmysql-java # 確認 ls /usr/share/java/mysql.jar
schemaSpyのjarを配置
mkdir /var/lib/jenkins/schemaSpy cd /var/lib/jenkins/schemaSpy wget http://jaist.dl.sourceforge.net/project/schemaspy/schemaspy/SchemaSpy%205.0.0/schemaSpy_5.0.0.jar
Jenkinsに設定追加
以下をJenkinsの「ビルド手順:シェルの実行」に追加する。
※2012/9/21 追記 以下のは単独で定義する必要あり。他の「シェルの実行」と一緒の手順に追加すると、テストが失敗してもビルドは正常とみなされてしまうケースがあった。
# schemaSpyによるHTMLテーブル定義書生成 mkdir -p $WORKSPACE/schemaSpy java -jar /var/lib/jenkins/schemaSpy/schemaSpy_5.0.0.jar -dp /usr/share/java/mysql.jar \ -t mysql -o $WORKSPACE/schemaSpy -host localhost -u hoge -p fuga -db piyo -charset utf-8 # 静的ファイルを公開用フォルダ/var/lib/jenkins/userContentに置くと、http://~/userContent/から参照可能 mkdir -p /var/lib/jenkins/userContent/$JOB_NAME/ ln -fns $WORKSPACE/schemaSpy /var/lib/jenkins/userContent/$JOB_NAME/schemaSpy
これで http://~/userContent/$JOB_NAME/schemaSpy/index.html からテーブル定義書生成を閲覧可能になる。
Migrationでのコメント追加 と組み合わせるとイイ感じ。
補足
MySQLでschemaSpyを使用する場合でportを指定する場合は、portオプションが効かないのでhostオプションにport番号を追加(※localhost:13306みたいに)して実行する必要あり。
これは接続文字列が「jdbc:mysql://
×失敗(port:13306) java -jar /var/lib/jenkins/schemaSpy/schemaSpy_5.0.0.jar -dp /usr/share/java/mysql.jar \ -t mysql -o $WORKSPACE/schemaSpy -host localhost -port 13306 -u hoge -p fuga -db piyo -charset utf-8 ○成功(port:13306) java -jar /var/lib/jenkins/schemaSpy/schemaSpy_5.0.0.jar -dp /usr/share/java/mysql.jar \ -t mysql -o $WORKSPACE/schemaSpy -host localhost:13306 -u hoge -p fuga -db piyo -charset utf-8
参考URL
- http://d.hatena.ne.jp/okinaka/20120528/1338179444
- http://www.syboos.jp/oss/doc/schemaspy.html
- http://daipresents.com/2012/jenkins%E3%82%92%E3%81%9F%E3%81%A3%E3%81%9F1%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E5%85%AC%E9%96%8B%E7%94%A8maven%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AB%E3%81%97%E3%81%A6/
Rails2.3.14+MySQL5.1でテーブル&カラムコメントをMigrationで追加する
以前書いたエントリ でPostgresqlでのコメントを追加したが、Rails2.3.14案件でテーブル&カラムコメントをつける必要が出たのでメモ。
※2012/6/20 add_column_commentメソッドを一部修正
パッチ
これをconfig/initializers/column_comment.rbにでも入れておけば、Migration時にコメントを付加してくれる。
注意点
Rails2.3.14のMigration部分を思い切りコピペして改造しているため、意図しない動きになるかもしれない。
# NOTICE : Rails2.3.14のActiveRecordを前提としている。 module ActiveRecord module ConnectionAdapters class MysqlAdapter def create_table(table_name, options = {}) table_definition = TableDefinition.new(self) table_definition.primary_key(options[:primary_key] || Base.get_primary_key(table_name.to_s.singularize)) unless options[:id] == false yield table_definition if block_given? if options[:force] && table_exists?(table_name) drop_table(table_name, options) end create_sql = "CREATE#{' TEMPORARY' if options[:temporary]} TABLE " create_sql << "#{quote_table_name(table_name)} (" create_sql << table_definition.to_sql create_sql << ") #{options[:options]}" if options[:comment] create_sql << " COMMENT '#{options[:comment]}'" end execute create_sql end def add_column(table_name, column_name, type, options = {}) add_column_sql = "ALTER TABLE #{quote_table_name(table_name)} ADD #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}" add_column_options!(add_column_sql, options) if comment = options[:comment] add_column_sql = "#{add_column_sql} COMMENT '#{comment}'" end add_column_position!(add_column_sql, options) execute(add_column_sql) end def add_column_comment(table_name, column_name, comment = "") options = {} if column = columns(table_name).find { |c| c.name == column_name.to_s } options[:default] = column.default options[:null] = column.null else raise ActiveRecordError, "No such column: #{table_name}.#{column_name}" end define = select_one("SHOW COLUMNS FROM #{quote_table_name(table_name)} LIKE '#{column_name}'") current_type = define["Type"] current_extra = define["Extra"] add_comment_sql = "ALTER TABLE #{quote_table_name(table_name)} CHANGE #{quote_column_name(column_name)} #{quote_column_name(column_name)} #{current_type} COMMENT '#{comment}'" add_column_options!(add_comment_sql, options) add_comment_sql += " #{current_extra}" if current_extra.present? execute(add_comment_sql) end def add_table_comment(table_name, comment = "") add_comment_sql = "ALTER TABLE #{quote_table_name(table_name)} COMMENT '#{comment}'" execute(add_comment_sql) end end class ColumnDefinition attr_accessor :comment alias :_orig_to_sql :to_sql def to_commented_sql self.comment ? "#{_orig_to_sql} COMMENT '#{self.comment}'" : _orig_to_sql end alias to_sql :to_commented_sql end class TableDefinition alias :_orig_column :column def column(name, type, options = {}) _orig_column(name, type, options) if comment = options[:comment] column = @columns.find { |col| col.name == name } pos = @columns.index(column) @columns[pos].comment = comment end self end end end end
migrationファイルの書き方
以下の通り:commentオプション or 引数にで対応。
●テーブル作成時 create_table :hoge_masters, :comment => "hogehoge" do |t| t.string :code, :comment => "fugafuga" end ●カラム追加時 add_column :hoge_masters, :value, :integer, :comment => "コメコメ" ●テーブルコメント追加 ※独自作成機能 add_table_comment :hoge_masters, "テステス" ●カラムコメント追加 ※独自作成機能 add_column_comment :hoge_masters, :effective_value, "コメコメ111"
Windows上でCapsLock→Ctrl等のキー入れ替え
結構多用するのでメモ。
手順
「CapsLock→Ctrlに差し替え」「Esc↔半角/全角キー入れ替え」をしている。
- レジストリエディタを開く ※regedit
- 「HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→Control→Keyboard Layout」に移動
- バイナリデータ「Scancode Map」を作成
- 以下を記入して再起動
0000000000000000
0300000001002900
1D003A0000000000