GeekFactory

int128.hatenablog.com

2013-01-01から1年間の記事一覧

Gradleプラグインの作り方

G* Advent Calendar 2013の19日目です。Gradleでビルドスクリプトを書いていると、他でも再利用できるタスクや関数が出てくることがあります。ビルドスクリプトの一部をプラグインに切り出すことで、他のGradleプロジェクトで再利用できます。bluepapa32さん…

MuninでJMX経由でJVMを監視する

MuninでJMX経由でJava VMを監視する方法のメモ。 前提 muninが正しく動いていること。 監視対象サーバでmunin-nodeが正しく動いていること。 監視対象サーバでJMXが正しく設定されていること。jconsoleでヒープ状況などが表示されるか確認しておきます。 方…

Gradleを開発プロジェクトで使うときのこと

G* Advent Calendar 2013の5日目です。今日はGradleを開発プロジェクトで使う時に考えることを書いてみます。いわゆるビルド職人の仕事をゆるふわに考えてみたいと思います。対象はJVMベースのWebアプリとバッチアプリとします。記述言語はJavaを想定してい…

GitHubのHTTPS認証でログインとは異なるパスワードを使う

gitコマンドからGitHubにアクセスするにはSSHやHTTPSが使えますが、プロキシがアレな環境ではHTTPSを使う場合もあると思います。HTTPSではパスワード認証が必要ですが、GitHubのログインパスワードとは違うものを使う方法に今さら気づいたのでメモしておきま…

Gradle SSH Plugin 0.1.9をリリースしました

ビルドツールのGradleでSSHを使うためのプラグインを作っています。ちょっと前にバージョン0.1.9をリリースしたので、宣伝のエントリを残しておきます。https://github.com/int128/gradle-ssh-pluginこのプラグインの主な用途はやはりデプロイでしょう。アプ…

Mac OS XをPXEサーバにしてLinuxをネットワークインストールする

Linux を使って別の PC に Linux をネットワークインストールする方法はよく知られていますが、Mac OS X を使って別の PC に Linux をネットワークインストールする方法は情報が少ないのでまとめてみました。本稿は Proxy DHCPによるネットワークインストー…

Groovyのmeta classによるメソッド置き換えとテスト

テスト対象コードにスリープが含まれていると、テストに時間が掛かってしまいます。いわゆるスローテストの問題です。そのため、スリープを無害なモックに置き換えることでテストの時間を短くする工夫がよく行われます。Groovyでは meta class でスリープメ…

SpockでClosureのコールバックをテストする

Spockでテストを書いている時に Closure のコールバックをどうやってテストするか調べたのでメモ。例えば Hoge#process(Closure) というメソッドがあるとします。何かを処理したら結果が Closure に渡される仕様とします。 class Hoge { /** * ほげを処理し…

Jenkinsでジョブの結果を集計する

Jenkinsはジョブを実行するだけでなく、結果を集計する機能にも優れています。Jenkinsには標準でJUnitの結果を集計する機能が付いており、これを応用すると、複数サーバで実行したジョブの結果を分かりやすく表示するといったことが簡単にできます。複数サー…

LinuxでActive Directory認証 (Apache httpd)

Active Directory認証を使うと、IDやパスワードを入力せずにWebアプリにログインできるようになります。すなわち、自動的にActive Directoryのユーザとしてログインした状態になります。シングルサインオンにより、利用者の負担を軽減できる、不正利用を抑止…

レジストリによるローカルイントラネットゾーンの追加

統合Windows認証という便利な仕組みがあります。これを使うと、IDやパスワードを入力せずにWebアプリにログインできるようになります。Active Directoryのユーザとしてログインした状態に自動的になります。WebサーバがWindowsである必要はなく、Linux上のAp…

LinuxでActive Directory認証 (with sssd)

Windowsの世界にはActive Directoryという優れた仕組みがありますが、Linuxでもその恩恵を受けることが出来ます。LinuxサーバがActive Directoryと連携することで、以下のようなメリットがあります。 管理者はユーザ情報を一元管理できるので、手間が減る。…

OpenLDAP で cn=config の管理者パスワードを忘れたら

OpenLDAP 2.3以降では slapd.conf の代わりにディレクトリ上で設定を管理する仕組みが用意されています。ずっと前に作ったディレクトリを触っていたら訳が分からなくなったので、自分用メモを残しておきます。 dc=example,dc=com のツリーに通常のディレクト…

EL6 で Apache httpd 2.4 と PHP 5.4 を使う

RHEL6系のディストリビューション(CentOS, Scientific Linux等)で Apache httpd 2.4.x, PHP 5.4.x を使う場合のメモです。前提条件 Apache httpd は自前でビルドする。 epel を有効化する。 remi を有効化する。ただし、PHP, MySQL のみに使う。 mod_php …

Re: ソフトウェア工学は失敗している

ソフトウェア工学が何を失敗しているかというと、その学問自体の認知度が低すぎることです。 ソフトウェア工学がどのような問題を扱う学問かが知られていない。どのような問題を扱う学問か知られていないので、その問題に直面している人がソフトウェア工学の…

Play 2.1 ScalaでJSONを受け取ってJSONを返す

Play for ScalaでJSONを読み書きする方法について書きます。ドキュメントではReads/Writes/Format combinatorsを定義する方法が書かれています。 val customReads: Reads[(String, Float, List[String])] = (JsPath \ "key1").read[String](email keepAnd mi…

GradleでMaven Central Repositoryに成果物をリリースする

Gradleでビルドした成果物をMaven Central Repositoryにリリースする方法を説明します。成果物の公開にあたってはSonatype OSSRHで申請が必要です。こちらのイケメンな記事が大変参考になります。こちらの記事ではMavenを使っていますが、本稿ではGradleを使…

GitとJenkinsを使ってChefを運用する(続き)

id:mi_kattun / Cookbookを完全にGitで管理するのであれば、サーバにgitやデプロイツールでCookbookをコピーしてchef-solo実行するほうがシンプルな気がするけどChef Serverを使うメリットは何なんだろう。一覧性かな http://b.hatena.ne.jp/entry/d.hatena.…

GitとJenkinsを使ってChefを運用する

Chefはリポジトリをバージョン管理する仕組みを持っていますが、チームでの協調作業を考えるとバージョン管理システムを使う方が運用しやすいと考えます。本稿では、GitとJenkinsを使ってChefを運用するための1つのパターンを考えます。以下があることを前提…

motionの動体検知イベントをfluentd + Zabbixで監視する

動体検知アプリケーションmotionのログをZabbixで監視してみました。参考になりましたら嬉しいです。 基本的な考え方 motionのイベントが発生するとログファイルにJSONを書き出します。そのログファイルをfluentdで監視し、Zabbixに通知します。具体的には、…

supervisorでデーモンプロセスを管理する

ディストリビューションで用意されていないパッケージをデーモン化したい場合、supervisorが便利です。init scriptを書くという面倒な作業をやらなくても簡単にデーモン化できます。それだけでなく、プロセスが終了してしまった場合に自動的に起動したり、一…

mod_proxyのフォワードプロキシでHTTPSを許可する書き方

以前にはまったので備忘録として。 HTTPSをプロキシする場合はトンネリングとなる*1。 AllowCONNECT でトンネリングを許可するポートを指定する。 <Proxy> を使ってアクセス制御できる。 <Proxy> にはトンネリング先のIPアドレス:ポートを書く。 Deny/Allow を書くと、アク</proxy></proxy>…

SharePointのREST APIを使ってリストに項目を追加する

開発チームの情報共有にSharePointを使っているケースでは、何かのバッチで項目を追加したいことがあります。例えば、自動テストの結果を記録したり、インスペクションに引っかかったモジュールを記録したりといった使い道が考えられます。SharePointのリス…

SSHとHTTPSでアクセスできるGitサーバの設計と構築

(追記) この記事は公開から時間が経っており、内容が古くなっています。本稿では、すでにプライベートなWebサーバを運用している人向けにGitサーバの構築方法を説明します。ひと手間をかけるだけでGitサーバを構成できます。Webサーバがない人はGitHubでプラ…

Jenkinsを用いた継続的RPMビルド

RHEL系を使っていて、yumで取得できないバージョンのパッケージを使いたい場合、一般に以下の選択肢があります: 他ディストリビューションのSRPMをビルドしてRPMを生成する。 配布元のtar ballをビルドしてRPMを生成する。 配布元のtar ballを /usr/local …

動体検知アプリケーションmotionを構築する

RHEL系で動体検知アプリケーションの motion を構築する手順のメモです。なお、Gentoo LinuxやDebianでは公式パッケージが用意されているのでもっと簡単です。 前提 Scientific Linux 6.3 x86_64 USBカメラが接続されていて /dev/video? が存在する。 /usr/l…

Proxy DHCPによるネットワークインストール

あけましておめでとうございます。元日からさっそくLinuxをインストールしておりますが、今年もよろしくお願いします。さて、DVDを使わずにLinuxをネットワークインストールする方法をメモしておきます。 前提 DVDを使わずにインストールしたい。DVDドライブ…