2014-01-01から1年間の記事一覧
JDK 8でビルドしたクラスファイルをJDK 7で実行するとClassNotFoundExceptionが発生する事象でハマったのでメモ。結論からいうと、ソースコードでJava 8に固有のクラスを直接参照していなくても、@Delegateによって間接的に参照されるケースがあります。 前…
多くの企業や教育機関ではインターネットアクセス用のプロキシサーバが導入されています。プロキシサーバの中にはユーザ認証を必要とするもの(認証付きプロキシ)があり、組織やチームの共用サーバを運用する上でしばしば問題を引き起こします。 例えば、共…
BintrayではJCenterからMaven Centralにパッケージを同期する機能がありますが、これを使うにはあらかじめパッケージのファイル(JAR, POM)にPGP署名を付与しておく必要があります。 BintrayではアップロードしたパッケージにPGP署名を付与する仕組みがある…
App EngineでAngularJSとScalaのアプリを開発する時のテンプレートプロジェクトを作りました。 クライアントサイドとサーバサイドを別のプロジェクトに分けています。App Engineは静的コンテンツの配信が高速なので、クライアントサイドでページをレンダリン…
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 に…
GitHubプロジェクトのContinuous IntegrationにはTravis CIが便利ですね。Travis CIはビルド中の標準出力(とエラー出力)をログに残してくれるので、ビルドが失敗した場合も原因を調べられるようになっています。しかし、テスト実行中のデバッグログなど、…
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にアクセスするWebアプリで、リッチテキストの編集をCKEditorで実現する方法を説明します。 要約するとAngularJSとCKEditorを組み合わせて使ってみたという内容です。 やってること Evernoteのノートを表示したり編集したりするWebアプリを作っ…
(追記) この記事は公開から時間が経っており、内容が古くなっています。2016年時点ではWebpackが圧倒的におすすめです。 JavaScriptやCSSのビルドを自動化することで、手作業による無駄な時間やミスを削減できます。また、誰でもビルドできるようになるため…
わいわいGroovy ~ 教えてG*小ネタ大会 - JGGUG G*ワークショップZ Jun 2014 - 日本Grails/Groovyユーザーグループ | Doorkeeper で発表の機会をいただいたので、拙作の Gradle SSH Plugin についてお話ししました。 speakerdeck.com Gradle SSH Pluginの開…
GradleからSSHを使うためのプラグインの新バージョンをリリースしました。 今回のリリースからグローバル設定 (global settings) で指定できる設定項目が大幅に増えました。 例えば、コマンド実行時にPTY allocationを指定するフラグはこれまでメソッドごと…
想定通りでした。インスタンスの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() //…
GroovyのCategoryを使って、ファイルパスを直感的に書く仕組みを導入してみます。 Fileのコンストラクタには親ディレクトリとファイル名を渡すことができますが、ディレクトリの階層が深くなると読みづらくなります。 例えば、baseDirの下のinnerDirの下のfi…
Apache MINA sshd(以下sshd)を使うとJavaVMだけでSSHサーバを実行できます。あらかじめ定義されているインタフェースを実装するだけで、認証やコマンド実行を受け付けることができます。 本稿では、SSH接続のコードをテストする場合にサーバサイドにsshdを…
App EngineでUnfiltered filterとScalateを使う場合のメモです。 Unfiltered filter クラスパスに依存関係を追加するだけでOKです。App Engine特有の考慮は必要ありませんでした。spin-upも早いので問題なさそうです。 import unfiltered.request._ import u…