文系プログラマによるTIPSブログスマートフォン用の表示で見る文系プログラマによるTIPSブログ文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。playframeworkTwitterGooglePocketやっとtree-maps復旧しましたよ〜なんでデプロイが失敗しだしたのか結局解らなかったよ!!tree-mapsはとりあえず機能を使ううえでは問題無いレベルに復旧しました。og:title等の設定が残っていますが、アプリに操作に影響を与えるものではありません。雑感tree-mapsに一体何が起きたのか突如デプロイが失敗しだすtree-mapsは以下の環境で開発していました。SDKv1.9.17ざっくりこんな感じでした。ClientLoginがついに無くなるtree-mapsは今年始めくらいに1度デプロイしたきりで、しばらくデプロイしていませんでした。先週GooglemapClusterのアイコンが404になってるよ〜、というバグ報告がきたので修正してデプロイしようとしたら、謎の404エラーが発生しました。v1.9.17は内部でClientLoginという機能を使ってデプロイ時の認証をしていたようなのですが、実は結構前からDeprecated(非推奨、いずれ削除される)だったようで、今回ついに削除に至ったため、謎の404が発生したわけでした。バージョンアップする事で解決しました。今度は403が発生しだすさてSDKのバージョンアップをして認証処理ができるようになったですぞ〜、等と呑気にコンソールを眺めていると、今度は403(認証失敗)が発生しました。(app_id=u's~tree-maps').どうもOAuthの認証周りで古いトークン情報が残ってしまっていたらしく、以下を削除する事で再びOAuthのウインドウが表示されるようになりました。以下でアップロードされたファイルサイズをみても65MByteになっていて問題無さそうだし、特にエラー報告はないのにフロントは404です。https://console.cloud.google.com/appengine恐らくですが、Playのgae:deployの仕組みが最新のAppengineSDKに対応できておらず(フォルダ構成等)、デプロイは正常終了するのにGAEがそれを認識できずに404になった???と想像しています。frameworkはv1系ですし、今更v1系、しかもGAE関連が更新される事なんて無いだろうなあ・・・・という絶望に襲われました。作り直そうぜ!!という事で、作りなおす事にしました。pluginはgooglecodeのsvnで管理されていたようなのですが、最近googlecodeは廃止され、githubへの移行が促されていました。slim3はもう開発がストップしているようで、移行されていません。v2.5といえば、java-webの暗黒期じゃないか・・・死ぬなよ・・・tree氏、playを捨てて素のservletで再実装する事を決意doGetとかdoPostとかを見て「うわぁ・・・」と思いつつ、せっせと夜鍋して実装しました。web.xmlのルーティングがくっそ難しくね?とか愚痴りつつも、少しづつ実装は進みます。v1系はgroovyテンプレートになっており、汎用性がありません。これをGAE上の素のservletで動かす事はできない(できるかもしれません)ので、他のテンプレートエンジンに差し替える必要がありました。今回はthymeleafを採用してみました。ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:60)なんでだよ!!実は握りつぶされていたエラースタックトレースを見ると内部的にognlを使っているようで、そこでエラーが発生しているようです。accessed.」になる理由がさっぱり解りません。頑張ってステップ実行して内部に潜っていくと、以下の部分で例外エラーが発生している事が解りました。accessed」が発生している事が解ります。"invoke.tree.constants.GooglemapLang.getName")ここで注目するのは「java.security.AccessControlException」の部分です。javaのセキュリティ上アクセスできないが故の例外エラーである事が解ります。accessed」???という疑問が起きていたわけです。ognlとjava.security.AccessControlException、この単語をキーにググってみると、以下に行き着きました。programmingpanda.blogspot.jpこの中で重要なのは以下で、Ognl側でセキュリティを設定できる事が解りました。accessed」が発生するようなので、最終的に以下のfilterを作成し、web.xmlに登録する事で、getterにアクセスする事ができました。してしまっていいものなのか、不明です。昔の人達はよくこんなので実装してたなあ、と関心しますね。v1世代なので親近感はあるのですが。結局約1週間で再実装→フロント機能復旧に漕ぎ着ける事はできました。accessedの調査をしていました。・・・「実装していた時間は実は2日くらい」です。素のservletもThymeleafもそれ程時間をかけずに実装できました。そもそもGAE/Jはスピンアップが激遅(画面表示するまでにトータル10秒以上かかる場合も多いです)なので、フレームワークを使ってGAE/Jで実装するのは極力控えた方がいいかもしれませんね。いう事で、次からはGAE/Gでgolangにしたいと思っています。GAE/Gのスピンアップは50msという爆速らしいので、期待大です。ただでさえスピンアップがGAEの中で最遅なのに、フレームワーク等を使うと初期化に激しく時間がかかるので、結果としてスピンアップ後の画面表示が10秒近くかかってしまうのですよね。世間ではGAEの注目度は非常に低いですよね。超スピードでオートスケールしてくれるし、デプロイの仕組みも簡単なので、かなりいいと思うのですけど。JDKが未だに1.7系だったり、servletもv2.5系だったり、datastoreがクッソ遅く制限が厳しすぎるのが敬遠される理由の一つとして挙げられるのかもしれませんね。東京リージョンにGAE/GOをデプロイしようと思ったらこれだよ!2016-12-14GAEを東京リージョンに変更して高レイテンシの呪縛から解放されよう!大分乗り遅れた感が強いですが、東京リージョンに変更しました。週間)昔は業務系SIer、今はベンチャー企業でプログラムを書いています。INFILEを実行できるようにするmacのAutomatorでhomebrewのコマンドをFinderのサービスから実行できるようにするReactオススメ書籍React自体の基礎、AtomicDesignの適用、CSSの運用手法の歴史的な経緯とメリットデメリット、Reduxの基礎、redux-sagaによる非同期処理、サーバサイドレンダリング、テスト、lint、を学ぶ事ができます。単行本(ソフトカバー)この商品を含むブログを見るAngularオススメ書籍Angularを学ぶなら絶対以下がおすすめです!バインディング、ディレクティブ、パイプ、フォーム、コンポーネント、サービス、ルーティング、httpClientによる非同期httpリクエスト、テスト、angular-cli、を非常に丁寧な説明で網羅的に解説しています。大型本この商品を含むブログを見るSEOオススメ書籍SEOを学ぶなら絶対以下がおすすめです!クローラに対して何をどうすればサイトの巡回効率・速度を上げる事ができるのか、どういったマークアップをする事が標準仕様なのか。巷に溢れる業者による経験則に基づくオレオレSEO情報は一切無く、全てGoogle等のオフィシャルな情報に基づいて何をすべきか、どんな手段があるのかを解説されています。プログラマな私が業務で行った施策が多く書かれており、プログラマ寄りで高度な内容となっており、巷のビギナー向けの曖昧な情報集とは一線を画しています。Amazonアソシエイト・プログラムの参加者です。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。