teslogger-server
少し前に以下で発表されたやつ
www.slideshare.net
試してみたかったけどClojure力が足りない
なんとか動かしたメモ
Leiningen はあらかじめ入れておく。公式ではbatファイルをお勧めされるけど、Windows10ではなんだったか忘れたがエラーになったと思うので、インストーラ使った気がする。
- teslogger-server を
git clone
して持ってくる。 - axebomber-clj が必要だが Clojars にないようなのでこれも
git clone
して持ってくるlein uberjar
して axebomber-clj-0.1.1-standalone.jar をビルド
- teslogger-server/lib/ に axebomber-clj-0.1.1-standalone.jar を配置
- teslogger-server/project.clj を修正した
:dependencies
[net.unit8/axebomber-clj "0.1.0-SNAPSHOT"]
をコメントアウト[net.unit8/ulon-colon "0.2.3"]
はSNAPSHOTじゃない
:resource-paths ["lib/axebomber-clj-0.1.1-standalone.jar" "resources"]
を追加
- clojure script をコンパイルする
lein cljsbuild once
- サーバを起動する
lein ring server
- ブラウザが起動して 【START TO EVIDENCE】が表示されたら teslogger を起動すればいい。
日付のパース
iAP上で日付を固定書式でパースしたいのだが。
DateTimeFormatter: intra-mart Accel Platform SSJS API Documentation
とある既存コードを眺めていて気になったので試してみた
Debug.browse( DateTimeFormatter.parseToDate('yyyy/M/d', '2015/9/9'), DateTimeFormatter.parseToDate('yyyy/MM/dd', '2015/9/9'), DateTimeFormatter.parseToDate('yyyy/M/d', '2015/09/09'), DateTimeFormatter.parseToDate('yyyy/MM/dd', '2015/09/09') );
結果は
1 Wed Sep 09 00:00:00 JST 2015 Date 2 Wed Sep 09 00:00:00 JST 2015 Date 3 Wed Sep 09 00:00:00 JST 2015 Date 4 Wed Sep 09 00:00:00 JST 2015 Date
そうだよねえ。
ちなみにパースに失敗すると例外が飛ぶ。javacript 側の try-catch で捕まえられるから、それで何とかするしかないねえ。
嵌り実況
- ファイルをアップロードする画面が必要になった。intra-mart Accel Platform 上なので当然
imuiFileUpload
を使うことを考える。 - ただアップロードするだけじゃなく、アップロードに際していくつか入力する項目が付属するので、ファイルは
imuiFileUpload
に任せて、imuiFileUpload
がアップロードしたファイルについての情報と付属項目を一緒に<form>
にいれてimuiAjaxSend
で送信するのが楽そう、と考える。 - 画面全体を
<form>
で囲ったらimuiFileUpload
のスタイルが剥がれて、おそらくまともに動作していない状態になった。- ファイルをアップロードする性質上フォームとは相性が悪いのか?
- 選択肢としてありそうなのは
imuiFileUpload
のouterFormId
属性の指定。- でもこれって単にマルチパートとして送信してしまうのでは?
- 別にそれでもいいんだけど、
imuiFileUpload
がサーバサイドで Session Scope Storage に自動的に保存してくれる機能を活かしたい
- とりあえず、全ての値を
hidden
で保持するフォームを作成して、入力された値はそこに転記してimuiAjaxSend
することにしようと考える。 - でも入力値はバリデーションしたいので、上記の転記先のフォームに対して
imuiValidate
のルールを定義して呼び出してみる。- エラーメッセージ表示は関数を与えることでコントロールできるので、バリデーション対象が
hidden
でもいけると踏んだ
- エラーメッセージ表示は関数を与えることでコントロールできるので、バリデーション対象が
- 何を入力してもまったくバリデーションエラーにならない(入力値に何を入れても
imuiValidate
の戻り値がtrue
) jQuery validation plugin hidden
でGoogle検索したらデフォルトではhidden
項目はバリデーションの対象にしないらしいことが分かる。これを無効にするにはバリデーションを無視する項目を指定する引数に[]
(空配列)を渡せばよいらしいことが書いてある。- 与えてみるが何も変わらない。
- DOMエレメントツリーを見ていると上記の転記先の
<form>
にnovalidate
なる属性が付与されていることを発見する。 - 調べてみると html5 の機能でバリデーションを無効にする指定らしい。StackOverFlowにてjQueryのvalidation pluginも何らかの条件下でこの属性を付与するようで困るというようなポストを見つけた。
- StackOverFlowの同スレッドにて
$("#form").removeAttr("novalidate")
せよとのポストが見つかったので試してみるもnovalidate
はなくなるが(あたりまえ)動作には変化ない。 - ここまで書いたところでふと思い当たってバリデーション無視対象を
[]
でなく''
にしてみる
・・・やっと imuiValidate
がエラーを返してきた。[-_-]
敗因は?
ファイルアップロードが中途半端に混ざってる画面設計か、もしくは4で outerFormId
使うほうを選んでたらもっと簡単に解決したのだろうか(試してない)。 あとはバリデーション無視対象はString型だよ、と一応公式ドキュメントには書いてあるので、それを見逃した点かな…。
あの人は今
消息が気になったので調べている。
Applet ってまだつかえるの?
たぶん・・・。
セキュリティ状況については正直もうわからない。恒常的に使い続けるものではなくなってそう。
Applet と Java Web Start どっちが良いのか?
AppletはHTMLに埋め込みのものだが、Java Web Startはそうではない?基本的には独立型のアプリケーションという形態のよう。デスクトップにショートカットを配置したりできる。
なので、カバーするユースケースはまったく同じというわけではないみたい。
参考: https://docs.oracle.com/javase/jp/6/technotes/guides/jweb/decision_guide.html
Applet は ローカルファイルにアクセスできないのでは?
上記の参考URLにあるが、Java Network Launching Protocol (JNLP) を使用して起動されたアプレットはローカルファイルへのアクセスが可能らしい。
Java Network Launching Protocol (JNLP) を使用してアプレットを起動するとはどういうことか?
参考: http://itpro.nikkeibp.co.jp/article/COLUMN/20090423/328953/
JNLPファイルがあればいい? でも現在動作しているアプレットを調べてみたが、特にそんなものはない様に見える。
Java FXは使えるのか?
使えそう。大分古い記事なので最新では事情が異なるかも。
参考: http://skrb.hatenablog.com/entry/20081031/p1
JavaFXを使うとして、プラットフォームはどう選べばよいのか
たとえば、多くのサーバ運用環境はJDK 7以前だろうが、 クライアントサイドで動くのでクライアントのバージョンが新しければよいのかな?
開発環境どうする
Eclipse + e(fx)clipse
参考: http://www.coppermine.jp/docs/programming/2013/12/efxclipse.html
Net BeansだったらデフォルトでJavaFXのための環境が付属するようだ。
JavaFX の Scene Builder の配布元が見つからない
オープンソース化してOracleからは配布していない?
YAPC::Asia Tokyo 2015
今年も行ってきました、ということで。
前回の感想エントリでは門外漢が行くべきかどうだかな〜と思っていたのだけど、いざ参加募集が始まったら迷ったものの結局行くことにした。前夜祭から参加。
Day 0
聞いたのは以下のトーク
PHP帝国の逆襲!(を願うPHPerが話す最近のPHPについてのクイックツアー PHP7対応版)
Yet Another Perl Conference の口火をきるのがPHPとRubyのトークというのがやはりここのところのYAPC::Asiaらしさなのかな。 多分 uzulla さんのトークを聞いたのは初めてなんだけど前年ベストトーク賞を取っているだけあってどんどん会場をあっためていくのはさすがとしか。 しかし内容はだいぶ濃かった。もともと長い枠向けに書いていたのか?かなりボリュームがある内容をどんどん喋っていくので、PHPに関してはせいぜいにわかというレベルの自分には途中まったくわからない点などもちらほら。
とはいえたまにPHPの案件などもあったりするのでPHP7情報は今後役に立ちそう。
はてなブックマークのトピックページの裏側
はてなブックマーク10周年おめでとう御座います。
ということで10周年の企画として作ったというトピックページの裏側がどうなっているかという話。意外と「これとこれとこれを使えばできる」というような話で随分簡単なんだなという印象。(まあ実際にはいろいろ困難もあるのだろうけど)
最近 elasticsearch をいじっているので自分の作っているもので使えそうかな〜と考えながら聞けた。
技術ブログを書くことについて語るときに僕の語ること
どうやればブクマを稼げるか、というところから話が始まった。個人的にここのブログにはどういったことを書いたものだかなというのはしばしば悩んでいるんだけど、あまりそういう悩みの参考にはならないかな、という雰囲気だった。
ただ最終的には
- 良いエントリを書くにはそれなりに時間も知見も必要になる
- 時間や知見が必要になるエントリを書くにはエネルギーが必要。
- エネルギーを得るためにブクマ(まあブクマじゃなくてもいいけど)を稼がねばならない
とうまくまとめられてしまった感じ。 ちまちまネットで調べたことを書き綴っても仕方ないというのは確かにそう思うんだよな〜。
Day 1
なぜだか 10:00 開場と感違いしていて 10:10頃到着。 オープニングトーク聞きたかったのだが失敗。
メリークリスマス!!
ラリーの英語トークだったんだけど、同時通訳のレシーバ売り切れだったのかもらえず、そのまま入ったのでとりあえず通訳なしで聞いてた。ホビットの話をしてたのはともかく、まあ全体的には細かい話がよくわからなかった。残念。
Perlの大将いい声で喋るな〜と思って眺めていた。
DeepLearning の前に知っておくことがある! 再帰型のニューラルネットワークや自己組織化マップについて語ろう
ニューラルネットワークの経緯的な話から始まってだいぶ頑張ってい急いで喋っていたのだけど、時間が足りずに全て説明仕切れていなかった感。今回聞いたトークでは割と多かったんだけど、説明がやたら早かった。
個人的には全然この辺の分野は知らないものの経緯的なところはなんとなく聞いたことはあって、逆にちょっと突っ込んだ話になると全くわからなかった。 ただ質疑応答の時間には全くよくわからない会話がされていたので、分かる人には分かる内容だったのだろう。
TBD
Rubyの大将のお話。
トークの導入でRubyを封印しますといってやっぱ封印解きますといった話の流れとか結構慣れた感じで全編面白おかしく聞くことができた。 すでにいろいろなところで書かれているけどRubyのまずかったところとして「Perlの影響を受けすぎた」「Lispの影響を受けすぎた」といったことをあげてた。けどまあ質疑応答でRubyのほとんどは正しいはずとも言い直していて結局どっちなのか感はある。
Rubyはほとんど書かないけど個人的にRubyの嫌いなところはto_sとか。短くしたいにしても中途半端な対応に見える。まあどうでもいいか。
後半Streemの話だったけど、パイプラインを構成して一向という2フェーズある感じが、わかりやすいのは間違いないのだけどなにかもやもやする。普通のソフトウェアなら設定とコードに分かれるような感じがあるからかな。
Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜
ベストトーク賞1位おめでとうございます。
はてなのサービスの内側の概要と、はてなブログを作るにあたってどういった設計を採っているかという話。途中幾つか書籍が引用されてて「最高」とのことなんだけど、喋ってる内容としては(十数年Webシステムを作っては壊ししている身としては)特に新しさはない感じではある。まあ結局こうなるのかというような。 しかしこういった現在の着地点を確認できるトークは安心して聞けるし、自分のやってきたことの振り返りになって良い。
ドメイン駆動設計はどうなんだろう?まあユビキタス言語等個別プラクティスそれぞれについていろいろあるが、個人的にはここ10年でさすがに無理が出てきていたり、時代にそぐわない部分が出てきているように感じている。
PietでLISP処理系を書くのは難しい
Pietってそもそも何か知らなくて、トークが始まる前の休憩時間にググってみたんだけどビットマップをインプットとして解釈する言語らしい。ただいろいろ制約が多くて(ただでさえビットマップを書くのが大変そうなのに)もう辛くて辛くて仕方ない、みたいな話だった。
ただのもの好きがやる事かと思ってたら質疑応答の時間にPiet処理系いじった経験のある人が出てきたりガチLISPerがそんなんじゃ困るみたいな意見を申し立てていて面白かった。
発表はちょっと準備不足感があって、トークの途中で出てきたURLとかちゃんと共有されるのか不安。
Perl6 on JVM: It works??
Perl6のサブセットというのかミニマルセットというのか、nqp(Not Quite Perl)というものが定められていて、nqpが動けば、そこでPerl6を動かすことができるということで、今のところParrot、More-VM、rakudo-startという3種のVMが開発中。で、以前はだいぶ遅かったんだけど、ここのところだいぶ早くなってきて実用的ですね!という話。 多分 nqp と rakudo の話はだいぶ前のrebuild.fmでtokuhiromさん出演回でも話をしていたのでその辺はなんとなく知っていたんだけど、インストールもだいぶ簡単にできるように整えられていますよ、というのは初めて聞いた。
スレッドに関してはJVM上で動いているrakudoはだいぶましだけどMore-VMでは動くけど思った風には動いてくれないということを言っていたので、まだ前途多難なのかもな~。
Lightning Talks Day 1
LTに関しては一言づつ
- 日本最多のオフィス訪問シリーズ 「行ってきたシリーズ」のTOP5+αとして日本のイケてるオフィスを紹介しちゃうよ!
- マイクロソフトオフィス(製品ではない)のPVが高いとのこと。あとISUCONのCMが半分
- Gitの作り方
- 意外とお手製でやれるという話。
- SaaSを組み合わせて作る, ぼくらの障害対応術!
- デモ中にガチ通知飛んできて最高
- cpm - an experimental cpan client
- 依存解決を並行処理して最高
- Norikraで作るPHPの例外検出システム
- システムでカバーしなければキャッチできない例外がPHPにはあるんです!
- RSSをざっくりクロールしてゆるふわにパースする
- 結構複雑なユーザ入力の検証なんかでよく出てくる問題。あまりがちがちにやるといい感じに処理できないという。
- Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
- 別の方面でも一度聞いたことがある話の気がする。なんでこういうのSlackがいいんだろうか。やってることはバッチとかシェルスクリプトのような気がせんでもないんだけど。
- YAPC?雨事情
- 今は北陸で働いているんだけど、確かにオフィスビルで仕事してた時代は本当に外に出るまで雨とか気にしない事が多かった気がする。窓の外を眺めさえすればいいはずなんだけど。
- Haskell Strikes Back
- (昔の) PHP が誇った最高の機能 register_globals の真実、そして未来へ
- マニュアル「その結果に驚くことでしょう」
- 「ちゃんとかけ」
- Perl同人活動報告2015
- レスペーパー化の時代にワープロであるところのMicrosoft Wordなんて不要になったんじゃと思ったけど意外と需要が生き残ってた
Day 2
どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?
個人的にはNode.jsでアプリケーションを書くことはないんだけど、フロントエンドのビルド環境としては度々使うので、まあ若干の不安があったので聴講。 コミュニティリーダーの交代とロールモデルの変遷について話していて、なかなか興味深かった。ほかのプロダクトなんかではどうなっているのか興味ある。Javaだと支配者がいたとしたら James Goslin だろうか。結構早い段階からJCPが成立していたような気がするけど。 取り合えず今後の使用に関しては問題ないのかな~という感触を得たけど、まあ先のことなんてわからないしな。
NASA主催の世界最大級ハッカソンSpaceAppsを運営した話
発表者の湯村さんは別の筋で見かけたことがあったので、リアル湯村さんを見に聴講。
SpaceAppsというハッカソンの運営は以前からやっていたのだけど、今回石川に住まいを移したのでリモートでの運営ということでいろいろ苦労したとのこと。Google Hangoutsを使ってたくらいの説明しかなかったと思うんだけど、個人的に今の仕事もいろいろチームが分散して作業することが多いのでその辺もっと突っ込んで聞いておけばよかったかも。
アイディアソンにはそれ専門の人を呼んでるといってたな~。どんなことをしているかも軽く話してくれてたけど、それでうまくいくのかどうかまったくわからないので何とも。
3分でサービスのOSを入れ替える技術
正直インフラ屋ではないものの、最近ちょいちょい手を出し始めているので興味があったので聴講。
インフラの現場がわかっていればいろいろ納得感があったのかもしれないけど、rebuild.fm で聞いたような単語がしっかり出てくるなーというような感覚で聞いてた。時系列で問題を順次解決していくような形で説明されてて内容はとてもわかり易かった。 SSHみたいな何でもできるみたいな手段は極力封じておいたほうがイノベーションが進む、みたいな考え方がでてきたんだけど、現場で初めからそのように思い至って進めたんだろうか。後から振り返ったらそうなってたというのならわかる気はするのだけど、そうでなければ自分ではそんな発想には至れなさそうだ。ただまあ、SSHが使えるようになるところまでも若干しんどいと思われるので、そのしんどいところを超えてしまえるのならSSHに頼らなくてもいいかも、とは考えられるのかな。
最後のBlue Green Deploymentのところはやはりストレージまでは対応できていないということで、その辺の「現状ここまで」感がわかったのもよかった。
ソーシャルゲームにおける AWS 移行事例
個人的に社内のあれやこれやをいい加減AWSでやれないのか、と思い始めていたので聴講。
移行時間を短くするためにいろいろ調べていて、実際に自分でやるときにも使えそうかもな~という感じで聞いていた。 MySQLに関してだいぶいろいろやっていて、今思い返してみるとこれらの問題はどうやって検出したんだろう?移行期間は手順をChef化したりRDSの検証をやったりで約一か月間くらいらしい。割となんども移行してみてテストしてを繰り返したのかな。
yrmcds って初めて聞いたなーと思ったら、Garoonのバックエンドなのか。
あと一つ上のトークでも出てきたけど、結構Consulが今回のYAPCでは頻出ワードだったみたい。まったくマークしていないのでちょっと手を動かしてみておくかなあ。
HTTP2 時代の Web
ベストスピーカー賞2位おめでとうございます。
mozaic.fm とどのくらい違うんだろうなどと思いながら聴講。
HTTP2を理解した上で移行しないのもありと話しながらも、言いたいこととしてはHTTP2使っていこうぜということだったんだろう。 多分個人的にはそんなに高トラフィックの対応を要求されることも多くないのでさして差し迫って必要という感覚ではないし、インフラがいつの間にか対応してたところに乗っかっていけるといいなくらい。ちょっと気になるとすれば、HTTPS化かなあ。
Lightning Talks Day 2
- MySQL 5.7の罠があなたを狙っている
- すごく面白かったし、役に立ちそうな情報が満載だった。個人的にはPostgreSQL派なので、MySQLは使わないかもしれないけど。
- 吉祥寺.pmというイベントを作った話〜聞きたいトークが有れば自分でイベントを作ろう!〜
- 勉強会毎回遠いよね。遠い遠い。
- 命名の話をします
- なんだかイマイチ落としきれていない感じだったけど
- botになる技術
- コンテンツ力が極まるとBotになれる
- モダンなクライアントサイド JavaScript に追い付くためのための小さな(しかし大変な)一歩の話
- あるある
- Evaluating your stylesheets
- Naoya 最高!
- Thank you for ${^ENCODING} variable
- perl 最高!
- 本物の "ロック" ってやつを魅せてあげますよ - 分散排他ロック篇
- 高信頼で高可用性で伝統も実績もある電話最高!
- コミュ力あげてこ
- 電話より伝統も実績もあるモールス最高!絶対やると思ってたけど
- CONBUの道具箱
- デモが圧巻でした
- Vim script静的解析の光と闇
- ざわざわ落とさなくても闇しかないと思ってた
The END
このエントリはさっき一度間違って公開してしまったんだけど、yuuki氏のアドバイスに従って予約投稿により平日にポストするとしようと思います。逆に被って埋もれてしまうかな。ま、それはさておき。
今回を以てYAPC::Asiaはいったん終了するとのことで、自分が参加したのは去年の今年の二回だけだったんだけど、今回も非常に楽しめました。
運営の方々、スピーカーの方々、参加者の方々、お疲れ様でした。ありがとうございました。
まだWSHで消耗してる
var shell = new ActiveXObject('WScript.Shell'); shell.run('java -version' , 0, true );
これを実行するとどういうわけか
Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. fatal: Not a git repository (or any of the parent directories): .git C:\test\test.js(2, 1) (null): エラーを特定できません
なぜ Git が・・・・。
ちなみに java
ではなく notepad
とかなら問題ない。Javaが何かしてんのかなあ。
var shell = new ActiveXObject('WScript.Shell'); shell.run('cmd /c java -version' , 0, true );
これならいける。
PSQLException: ERROR: キャッシュした計画は結果型を変更してはなりません
PSQLException: ERROR: キャッシュした計画は結果型を変更してはなりません
— もぐら㌠ (@carrotsword) July 27, 2015
なんなんこれ
— もぐら㌠ (@carrotsword) July 27, 2015
intra-mart Accel Platform のテナント環境セットアップやってる途中に こういうエラーでて進まなくなることがあったのだけど、Google先生で調べてみてもどうもリリース元のエラーメッセージの国際化関連のリソースか何かが出てくるだけでこれが一体なにを意味しているのかさっぱりわからない。 いろいろいじくり回してみたところおそらく、アプリケーションサーバ側の要求するコネクションか、PreparedStatementの数にPostgreSQL側がついていけないということみたい。
この「ついていけない」が具体的にどういう値がどうでってのは、結局のところ理解してない。
iAP側のmax-connectionとかprepared-statement-cacheとかの数を下げたところ問題なくテナント環境セットアップを完走したので、まあそういうことなんだろうというフワッとした知見を得た、という話。
追記 2016-04-11
PotgreSQLのprepared-statement-cacheの設定の仕方がPostgresql Driver, Version 9.4-1202 以降変更になっているらしい。
resin-web設定 — 設定ファイルリファレンス 第13版 2016-04-01 intra-mart Accel Platform
あとこの話は当然Oracleでも同様シチュエーションで同様の現象が発生する。