ラベル Dev の投稿を表示しています。 すべての投稿を表示
ラベル Dev の投稿を表示しています。 すべての投稿を表示

2017年3月24日金曜日

【技術メモ】SpringCloudAWS が ECS TaskRole を使わない問題を突破する

サーバー運用っていいですよね。(1ヶ月20日ぶり2回目)

最近作っているサービスはその性質も相まってコンテナでの動作と相性が良さそうなので、基本的には Docker Container として動くことを前提に環境周りを構築しました。

すいません。うそです。適当に言いました。

実際の運用はご多聞に洩れず AWS ECS を使っています。
が、あまり情報が無いのも事実で何か起こる度に調査やら前に進まない試行錯誤やらで MP aka 精神力 を激しく削られるのも事実ではあります。

なにより日本語の情報が「とりあえず動かしてみた」的なものしかなく、実際ハマった内容なんかは大体 StackOverflow あたりを探すか SpringBoot 関連の issue 漁るかくらいしか方法がない。

とはいえ、実務上での利用が増えてこないとこういう事例自体出てこないと思うので、では実務上で使ってハマったのだから公開していこう、とそんな感じです。

さて。

今回は Spring Cloud AWS を利用していてある機能が動かなかったことから始まりました。
Spring Cloud for Amazon Web Services

どうやってその現象の理由を探したのか、結局どういう方法をとって解決したのかを遡ってみたいと思います。

2017年2月6日月曜日

【技術メモ】AWS CloudWatch から Hipchat に Alarm を送信する方法

サーバー運用っていいですよね。

AutoScaling でポチポチっとインスタンス増やしておけば Application Load Balancer に組み込まれて ECS Cluster が指示通り Conteiner を動かしてくれる。いやぁ、いい世の中になりました。

さて。

AWS でサーバーを運営していると当然の如く直面するのは、設定でも構築でも CloudFormation の JSON が読みづらいことでもなく、監視なわけですよ。
AWS 関係ないですけど。大体どのサーバーも一緒ですけど。いや、なんていうか CloudFormation あれは別なエクストリームAWSですけど。

で、今回たまたま環境が Hipchat 「も」あったということで CloudWatch の Alarm を Hipchat に送って監視のトリガーにしてみました。

運用としては正直インスタントすぎるのであくまでも例として。

今回やることは
  • SNS Topic に送った CloudWatch の Alarm を
  • Lambda 経由で
  • Hipchat に送る
です。

2016年8月24日水曜日

【Kotlin】Java から Kotlin への移植中に起きた private メンバ参照エラー

とある既存の Java の (SplingBoot) プロジェクトを Kotlin に移植中、突如 build が通らない現象が起こりまして。

なんでかなー?
Kotlin 的には Getter を class に差し込むし、この記述で Private な訳ないんだけどなー?

という現象に引っかかったので久々の技術メモを。

結論としては、 Gradle の Java plugin と Kotlin plugin と Lombok の中がよろしくないということのようで


  • Kotlin は compileJava が dependsOn されているので先に compileJava が走る。
  • その後に compileKotlin される。
  • 結果、参照している Lombok で実装しているクラスのメンバは Delombok される前なのですべて Private なので当然エラーになる。


という流れでした。

状況を説明するためのテストコードとしてはこんな感じです。



ことの発端になったログはこんな感じでした。
$ ./gradlew build
:compileKotlin
e: /home/hoge/repos/LombokConflict/src/main/kotlin/Application.kt: (3, 15): Cannot access 'id': it is 'private' in 'DataModel'
e: /home/hoge/repos/LombokConflict/src/main/kotlin/Application.kt: (4, 15): Cannot access 'description': it is 'private' in 'DataModel'
:compileKotlin FAILED
FAILURE: Build failed with an exception.
@Data 指定してあるし、Getterいるしなんでだろう?

と思ったので、 DeLombok したコードの状態で build すると

$ ./gradlew build
:compileKotlin
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestKotlin UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build 
BUILD SUCCESSFUL 
Total time: 8.041 secs

BUILD SUCCESSFUL!!!

Google翻訳「成功したビルド」




Compile が通るんですよ。

で、こりゃ gradle の流れがおかしいか?と思って調べてみた結果。


http://stackoverflow.com/questions/35517325/kotlin-doesnt-see-java-lombok-accessors

唯一の回避策としてはコンパイル順序を制御することだ、とありますが上のとおり Gradle の pulugin 経由だともはやどうしようもなさそうです。

公式でも同じ内容があって、


なんか似たようなこと言ってますね。
module を分けるなどをすれば問題ない。
論理的根拠は Kotlin はバイトコードからそれらを参照するが Lombok は On the fly でそれらを生成する。
だそうで。

PreCompiler と PostCompiler の違い、と言ってしまえばそれまでな気はしますし、だからといってお互いに修正する方向には来ないんだろうなーという気もしています。

結局、既存プロジェクトを Kotlin へ順次移行するのは Lombok と衝突する。
似たもの同士、近くによるとロクなことがない、という人生教訓になりましたとさ。

めでたくないです。つらいです。

ということで、 Java 、とくに SpringBoot で作られた既存のプロジェクトを Kotlin に移植するのは一気にやるか、またはサブプロジェクトとスコープを調整し直すかなにかしないといけませんよ、ということのようです。

特に Annotation もりもりの SpringBoot の移植はそれなりの規模になると、ちょっと気合入れて手を入れないと厳しそうな感じでしょうか。

今回のソースコード一式はこちら。

https://github.com/grim13b/LombokConflict


2016年1月20日水曜日

【技術メモ】Fragment で Kotlin + Anko を使ってサンプルを作った話

まもなく 1.0 の 正式リリースを迎えそうな Kotlin + Anko で Android アプリを作ってみて何作目かになったのでメモします。

ボタンだけがあって、ボタンを押すと「本当はhttp requestを投げる。今は諸般の事情で5秒寝る。」だけのアプリです。

Anko の情報があまり多くないので体系立てて覚えにくいけど、 Helper だったり細かいものが充実してきたらきっと便利かなぁ、どうかなぁ。

個人で作る分には試行錯誤が楽しいので、いまのところ欲しいツールをぽいぽい作るにはいいかなー、と思っています。

特に苦労することもないのですがあまり Fragment + Anko という組み合わせの情報が無いのでソースコードまるっとあれば何か参考になるかな的な感じです。

2015年7月1日水曜日

【音楽】テスト音源を作って波形を見たら驚くほど歪んでた【初アルバムリリース】

テスト音源ていいですよね。
意味がわからないですね。

9曲構成でテスト音源作りました。 初アルバムです。皆さんよかったら聴いてください。
もっと意味がわからないですね。

ちょっと前に友人と話をしていて
「テスト音源ってスイープだったりあまり細かくない単一周波数だけでいまいち使いにくいよね。」 
なんていう話になりまして。
「じゃあ作るよ。横軸が一定なのでその横軸に合わせてsinカーブ出力するだけだし。」
と安請け合いしてしまいました。

その結果、出来上がったのは驚くほど歪んだ波形だったので、少し考え方を変えて今回のネタにしました。

結局出来上がったテスト音源は
  • 44.1 kHz - 16 bit
  • 96 kHz - 16 bit
  • 192 kHz - 16 bit
という3つのパターンでした。
出来上がった音源は、どなたでも自由に、許可無く、利用できます。
コメントなりtwitterなりでご連絡いただければ喜びます。

2015年3月1日日曜日

【技術メモ】CakePHP2.4.xでFacebookのAccessTokenを検査する方法のメモ

何を思ったのか突如 PHP を触ることになりまして。
大昔の PHP は使ったことあったのですがここまでカオスな様変わりしていたのは驚きました。

さて。

今回のメモは飛んできたアクセストークンがその Facebook APP で利用できるのか、正しく認証されたものなのかどうかを確認する方法です。

調べていて体系だった情報がなかったのでざっくり順序立てたコードをメモとして残しました。

2014年10月6日月曜日

【技術メモ】githubのatomをUbuntu14.04に入れてみた時の話 10/6追記

テキストエディタってなにを入れたらいいか迷いません?
vi いれとけ
emacs だろjk
やめるんだ!宗教戦争が始まるぞ!!!


Sublime Text など優秀で有名なものも出てきました。

そんな中でオープンソースのエディタたちも多く見かけるようになりました。
Adobe - Brackets  http://brackets.io/
Eve - Light Table http://www.lighttable.com/
github - atom IDE https://atom.io/


github からエディタがでたのかーそれは気になるなー

なんて思って当時飛びついてWeb開いていきなり

mac only

とか言われて凹んでいたりしたわけですが。



ちょっと前に webupd8 team の ppa に入ってたみたいなのでちょっと入れてみました。

2014年8月3日日曜日

【C#】Windows7 以下で FeliCa を読んでみる

最近仕事で C# を使うことが多くなりまして。

NFC というか FeliCa の情報取りたいなーと使い方を調べていると、大体 FeliCa の SDK 使うことを基本に書かれている内容ばかりなのと、ID 読むだけならゴロゴロ情報はあるのですがそれ以外があまり無くて少し困ったのでメモを。
別にオープンな領域に書かれているモノを呼ぶのに SDK 使わなくたってできるでしょ?カード側からそれを受け取るコマンド送れば終わりでしょ?4時間もあれば終わるでしょ。
なんて迂闊なことを行ってしまって見事にハマってしまいました。

今回のメモは FeliCa の非暗号化部分を読み込むところがメインです。

書かれているパラメータの意味は PC/SC や FeliCa の仕様書を読んでみてください。
FeliCaのオープンな部分を読むだけとはいえ、なんかあれこれ煩いことになるのも面倒なのでソースまでは公開してません。

PC/SC をお話するのは PC/SC-Sharp を使っています。
Async な Task を組んだり、Monitor の実装があったり、P/Invoke 周りやデータの変換諸々が非常に楽になります。

2013年10月4日金曜日

【IT】AWSでEC2とRDSの連動でホストが見つからないと怒られてハマったネタ

ここ1〜2日くらい、ちょっとばかり実験したいことがあってAWSをいじってました。

必要なデータをJSONで返すだけなので、EC2だけでどうにかなると言えばどうにかなるのですが、まあせっかくなのでRDSと連動させてみようか、と余計なことをしたのが運の尽きでした。

で、RDSとEC2を連動させた時にMySQLに入れずハマったので自分用にメモを残します。

2013年8月25日日曜日

【Firefox】newbieのためのFirefoxOSで自作サンプルを動かす方法のメモ

先日、某所に行っていた友人に進撃の火狐を購入してきてもらいました。

せっかくなのでとりあえず火狐さんに手を付けてみようかなーと思っていた矢先に10分くらい悩んだのでメモを書きます。

まずは、朝早くから並んでくれた友人ありがとうございました。

本の作成に携わった友人、諸先輩みなさんお疲れ様でした。非常に楽しい本です。

EffectiveAndroidは電子化の話も出始めていて非常に良い流れだと思っています。

「Effective Android」電子書籍化決定!

2013年8月3日土曜日

【Java】ドラゴンクエスト1のふっかつのじゅもんをつくる何かを作ってみた

もともと仕事上、誰かにソースを公開することがまず無くあまり人様に自分の書いたソースコードをお見せする機会も中々なく、最近はヘッドホンの改造記事とかばかりなので、たまには技術メモらしいことをしてみようということで、そんなに需要もなかろうと思い死蔵させていたソースを公開することにしました。

その名も
ふっかつのじゅもんびるだー
です。

センスないですね。

これをライブラリにしたAndroidアプリもあるのですが、そっちはまた別の機会にでも公開しようと思います。

一応簡単な使い方的なのはREADMEに書いて有りますが詳しくはtestあたりを適当に見てください。

なお、このプログラムはSATOH_Yoshiyuki氏の記事と掲載されているソースコードをパクリ元に作成されました。
氏の公開された情報と姿勢に感謝いたします。

「復活の呪文」資料室


普通こう書かないな?とか、なんかバグってない?とか、そんなのがありましたらツッコミください。

あ、でもマサカリとかだと心が折れてしまうのでやさしくおねがいします。

ドラゴンクエスト用ふっかつのじゅもんビルダー
http://grim13b.github.io/FukkatsuNoJumonBuilder/

2013年7月30日火曜日

2013年7月29日月曜日

【音楽】Takstar Pro80改造記録1 交換用ケーブル編【そこまで悪くない出来】

先日入手したTakstar Pro80のケーブル交換と着脱化を目論み、改造に踏み切りました。

最初はピン配列の役割決定とそれに準ずるケーブルの作成からです。

ケーブルの作成に伴い、必要な部品は

  • miniXLRメスコネクタ
  • ステレオミニプラグ
  • 1芯シールド平行線や2芯シールド線などステレオ信号の転送に使えるケーブル

です。

今回はオヤイデのHPC-24Sというケーブルを使っています。

続きはこちらから。