GeekFactory

int128.hatenablog.com

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

@DelegateでJavaバージョンの差異が顕在化するケース

JDK 8でビルドしたクラスファイルをJDK 7で実行するとClassNotFoundExceptionが発生する事象でハマったのでメモ。結論からいうと、ソースコードでJava 8に固有のクラスを直接参照していなくても、@Delegateによって間接的に参照されるケースがあります。 前…

認証付きプロキシの内側で共用サーバを運用する

多くの企業や教育機関ではインターネットアクセス用のプロキシサーバが導入されています。プロキシサーバの中にはユーザ認証を必要とするもの(認証付きプロキシ)があり、組織やチームの共用サーバを運用する上でしばしば問題を引き起こします。 例えば、共…

Bintray PGP Signingを試す

BintrayではJCenterからMaven Centralにパッケージを同期する機能がありますが、これを使うにはあらかじめパッケージのファイル(JAR, POM)にPGP署名を付与しておく必要があります。 BintrayではアップロードしたパッケージにPGP署名を付与する仕組みがある…

Template project of AngularJS, Scala and Unfiltered on App Engine

App EngineでAngularJSとScalaのアプリを開発する時のテンプレートプロジェクトを作りました。 クライアントサイドとサーバサイドを別のプロジェクトに分けています。App Engineは静的コンテンツの配信が高速なので、クライアントサイドでページをレンダリン…

SSHログインごとに独立したコンテナを割り当てる

SSHのログインごとに独立したコンテナを割り当てる方法を書きます。 手順 まず、適当なユーザを作って公開鍵でログインできるようにしておきます。 sudo useradd -m -G docker newworld sudo -u newworld -i mkdir -m 700 .ssh sudo -u newworld -i tee .ssh…

実行中のコンテナと同じ名前空間でプロセスを実行する

Dockerで実行中のコンテナに入って調査するにはnsenterを使います。正確には、nsenterコマンドを使って、コンテナと同じ名前空間でプロセスを実行します。 nsenterコマンドにはコンテナのPIDや諸々の引数を渡す必要があるので、下記を .bashrc や .zshrc に…

Travis CIでビルドのアウトプットを外部に保存する

GitHubプロジェクトのContinuous IntegrationにはTravis CIが便利ですね。Travis CIはビルド中の標準出力(とエラー出力)をログに残してくれるので、ビルドが失敗した場合も原因を調べられるようになっています。しかし、テスト実行中のデバッグログなど、…

OpenLDAPデータのバックアップとリストア

OpenLDAPのデータをバックアップしてリストアする方法のメモ。 前提 OpenLDAP 2.4 CentOS 7 バックアップ ディレクトリ本体と設定(cn=config)をLDIFに出力します。 sudo slapcat > ldap-20140727.ldif sudo slapcat -b cn=config > ldap-config-20140727.l…

Evernote API + AngularJS + CKEditor

Evernote APIにアクセスするWebアプリで、リッチテキストの編集をCKEditorで実現する方法を説明します。 要約するとAngularJSとCKEditorを組み合わせて使ってみたという内容です。 やってること Evernoteのノートを表示したり編集したりするWebアプリを作っ…

npm + gulp + bower でビルド自動化

(追記) この記事は公開から時間が経っており、内容が古くなっています。2016年時点ではWebpackが圧倒的におすすめです。 JavaScriptやCSSのビルドを自動化することで、手作業による無駄な時間やミスを削減できます。また、誰でもビルドできるようになるため…

#JGGUG でGradle SSH Pluginについて話しました

わいわいGroovy ~ 教えてG*小ネタ大会 - JGGUG G*ワークショップZ Jun 2014 - 日本Grails/Groovyユーザーグループ | Doorkeeper で発表の機会をいただいたので、拙作の Gradle SSH Plugin についてお話ししました。 speakerdeck.com Gradle SSH Pluginの開…

Gradle SSH Plugin 0.3.3 released

GradleからSSHを使うためのプラグインの新バージョンをリリースしました。 今回のリリースからグローバル設定 (global settings) で指定できる設定項目が大幅に増えました。 例えば、コマンド実行時にPTY allocationを指定するフラグはこれまでメソッドごと…

meta classにmix inした場合の影響範囲

想定通りでした。インスタンスのmeta classにクラスをmix inした場合は、そのインスタンスのみに影響します。 class X { def x() { 100 } } class Y { def y() { 200 } } def x1 = new X() x1.metaClass.mixin Y println x1.x() // -> 100 println x1.y() //…

Categoryを使ってファイルパスを直感的に書く

GroovyのCategoryを使って、ファイルパスを直感的に書く仕組みを導入してみます。 Fileのコンストラクタには親ディレクトリとファイル名を渡すことができますが、ディレクトリの階層が深くなると読みづらくなります。 例えば、baseDirの下のinnerDirの下のfi…

SSH接続のコードをApache MINA sshdでテストする

Apache MINA sshd(以下sshd)を使うとJavaVMだけでSSHサーバを実行できます。あらかじめ定義されているインタフェースを実装するだけで、認証やコマンド実行を受け付けることができます。 本稿では、SSH接続のコードをテストする場合にサーバサイドにsshdを…

App EngineでUnfiltered filterとScalateを使う

App EngineでUnfiltered filterとScalateを使う場合のメモです。 Unfiltered filter クラスパスに依存関係を追加するだけでOKです。App Engine特有の考慮は必要ありませんでした。spin-upも早いので問題なさそうです。 import unfiltered.request._ import u…