REST APIの一般的なHTTP Status Code
より
まとめると
- 200 (OK)
- 成功汎用。Select結果など
- 201 (Created)
- リソース作成など。
- Updateのときもこれなんだろうか?
204 (No Content)
- リソース削除など。
400 (Bad Request)
- パラメータ不正、チェック不正など。
- 401 (Unauthorized)
- ログイン要求。
- 403 (Forbidden)
- アクセス・操作権限なし。
409 (Conflict)
- 既に登録済みだった、主キー重複など。
500 (Internal Server Error)
- ハンドリング不可エラー。
これクライアントでこまごま実装するのか。。ちょっと大変だな。
【Java】VisualVMでJavaのプロファイリング
【Java】マニフェストファイルと実行可能JARファイル
ファイル名に「.jar」がついたJARファイルがJavaライブラリの一般的な(ていうか唯一の?)形式。 JARファイルには、自身についてのメタ情報などを記載したマニフェストファイル(META-INF/MANIFEST.MF)という仕組みがある。 (マニフェストファイル、改行しないとダメだの色々フォーマットで口うるさいことで有名なようだ)
(マニュアル) https://docs.oracle.com/javase/jp/1.5.0/guide/jar/jar.html
実行可能JAR
マニフェストファイル中に「Main-Class」、javaコマンドおなじみのメインクラスをはじめから埋め込んだJARファイルを、 「実行可能JAR」と呼ぶそうだ。
つくり方は色々あるらしいが、以下参考できそうなものをリンク参照。
Jarファイルメモ(Hishidama's java-archive Memo)
Jarファイルメモ(Hishidama's java-archive Memo)
メインクラスをわざわざ書かなくていいのは素晴らしい。 けど、結局シェル作って
java -jar runnable.jar
【AngularJS1】$http,$q,Promise回りメモ
$httpサービス
$http | AngularJS 1.2 日本語リファレンス | js STUDIO
非同期なHTTPリクエストを提供してくれるサービス。 例えば、putでURL投げて結果を取得する例。
const url = 'http://api.hostname.com/manapi/user/add';
let data = {
userid : userid,
username : username,
passowrd : password,
};
$http.put(url, data)
.success(function(data, status, headers, config) {
let user_no = data.id;
alert(`ユーザーを登録しました。(ユーザーNo:${user_no}`);
})
.error(function(data, status, headers, config) {
alert('通信に失敗しました。時間をおいて再度ご実行ください。');
});
jQueryのajax()やget()などと機能自体は同じ。
Promiseパターンなオブジェクトを戻り値として返すので、 あとでメモる$qサービスなどと連携して楽に非同期制御が書ける。 (よく、こんな仕組みを考えたものだ。)
$qサービス
非同期処理のユーティリティクラス。
まとめるのがしんどかったのと 非常にわかりやすい記事があったので参考にさせていただいた。
こいつが非常に強力で、なるべくdirectiveやcontrollerでは直接サービス依存しないようにしている・・・。
Promise
Promiseとは (※以下はES6のPromiseについての資料です。Angularのとは用法が若干異なります。)
Angularは、Promiseパターンのオブジェクトを独自に提供している。 IE11など、ES6のPromiseを実装していないブラウザでも安心して?使える。
AngularのPromiseもES6と同様に、一般にPromiseパターン、そしてFutureパターン(こちらのほうの性格が強い)を足したような実装になっている。
【gulp】TypeScript → JavaScript変換構成メモ
SPA(Single Page Application)っぽいの作ってる。 タスクランナーに gulp を使って、TypeScript → JavaScriptな構成を作った。
流れとしては
TypeScriptでJavaScript(ES5)にコンパイル → browserifyでモジュール単位にまとめる → uglityで圧縮
でとってた。が、なんか色々問題となっていた。
①TypeScriptのES6 ←→ ES5 Polyfillが怪しい
バージョンにもよるんだろうけど、でもバージョンアップでPolyFill失われるのびびった。 (ex: ES6追加のString.prototype.startsWithをES5に変えてくれるPolyFillが、TypeScript 1.7.2 → 1.8.10 でなくなった)
正式に、Babel使うのがいいのかもしんない。
②CSSファイルの管理がちょっと辛い
Angular使ってる。 けどDirectiveごとにCSSが分かれていない。いちおう、sass(笑)使ってるので1ファイルにまとめることはできてるけど、 Directive増やすと、TypeScriptの定義はもちろん、sassのリンクするとこもメンテしないとだめ。 CSSって単純に結合しても全然普通に表示できちゃうよね。なんか無駄な努力している感。
単純にwebpack使えるなら使いたい。
目指す構成
TypeScriptでJavaScript(ES6)にコンパイル → babelでES5化 → webpackでモジュール単位にまとめる → uglityで圧縮
webpackが多機能すぎてちょっと色々いじらなきゃいけないけど、これが一番すっきりするはずだ。
手順とかあとで書く。
【JavaScript】ES5環境でもResolveを使う(Polyfill)
まだまだ根強いIEのシェア。
IE11がサポートするJavaScriptの企画は、ECMAScript5 (ES5)まで。 やっとコールバック地獄を抜け出す手段Promiseが提供されたのに、現状使えない。 (クライアントにブラウザこれ使ってね、といってもみんながみんなつかってくれない。。)
(参考) ECMAScript 6 compatibility table
が、PromiseはES5環境で聞くPoliyFillがあるそうだ。
GitHub - stefanpenner/es6-promise: A polyfill for ES6-style Promises
Promiseが実装されているかを見て、 なければ追加で低速だが・・・な実装を施す。
TypeScript向けにd.tsファイルもある。
とりあえず、手持ちのプロジェクトはこれを使おう。