javascript 値と型を比較するおもしろい演算子【===】

javascript でおもしろい演算子を発見しました。

これはまだ実際には試していないのですが、本に記載してあったのでここにメモしておきます。
明日にでも職場で実験してみようかと思います。

おもしろい演算子それは「値と型を比較する演算子」です。このように書くと、AとBの値と型を比較出来るようです。

A === B

イコールが3つもあります。おもしろいですね。

値の比較や型の比較はよく使いますけど同時に比較しているプログラムは見たことありませんでした。そして、値と型の両方を比較した場面は結構ありますよね。

これで、だいぶソースコードを短く出来るのではないでしょうか。


HTML リダイレクトの方法

Webページのリダイレクトの作り方をご紹介します。

リダイレクトの方法は色々とありますが今回も最も簡単だと思われる「HTML の head タグ内の meta タグに記述する」方法のご紹介です。

実際にはこのように記載します。
<meta http-equiv="refresh" content="1;URL=https://somegoro.blogspot.jp/">

上記のように記載すると、Webページにアクセスした1秒後に私のブログにリダイレクトされます。細かく見ていきましょう。

まず、これでリダイレクトのお願いをします。
http-equiv="refresh"

次に、これで移動するまでの秒数を指定します。
content="<移動するまでの秒数>

最後に、移動先のURLを指定します。これは相対パスでも大丈夫です。
URL=<移動先の URL>"


以上でリダイレクトが作れました。非常に簡単でしたね。
この方法はHTMLだけで使用できるのでサーバー環境を意識しない作りができるので、どの方法よりも簡単に作ることが出来るかと思います。



HTMLからjavaへデータ渡し

HTMLでWebページを作るのは簡単に出来るけどDBとの連携など処理側はどのように作るの?

と思っているかたは多いのではないでしょうか。私もそうです。久しぶりに仕事でWeb開発をしているのですが、この処理側との連携部分はかなり忘れていました。しかも調べてもあまりヒットしない。

ということで備忘録がてら書いておきます。
今回の記事で書くことは「HTMLからjavaへデータ渡し」です。

javaとの連携はどうやるの?と考えるにあたって、java側からHTMLへのデータ渡しの情報も必要になってくるかと思いますが次回以降の記事に書きます。(調べておきます)

まずはHTML側でデータ入力する部分を作ります。こんな感じに。
<form action="path/test.class" method="post">

このタグに説明すると、このような感じになります。
form このタグ内のものが送信されます。
action="クラス名"ここにjavaのクラス名を書きます。
method="post か get" データ送信の方法を書きます。

次はjava側です。
先ほどのタグ内で指定したtest.classは「HttpServlet」クラスの機能を持たせておきます。exendsなどで持てば簡単でしょう。

そしてHttpServletクラスの機能である「doPost」「doGet」のメソッドが呼ばれます。どちらが呼ばれるかはformタグ属性のmethodに指定した値に依ります。

以上、「HTMLからjavaへデータ渡し」でした。


javaアプレットが終了に向かっているらしい

javaアプレットが終了に向かっているらしい。だいぶ前の記事だけどこんなものを見つけました。

「さよならJavaアプレット。JDK 9からWebブラウザプラグイン機能を排除」
http://www.atmarkit.co.jp/ait/articles/1601/28/news095.html

主な理由としては、これまでjavaアプレットでやるようなことがHTML5とjavascriptで出来るようになって、Webブラウザがjavaアプレットpluginの導入を推奨しなくなったからだそうです。

なぜ推奨しなくなったかというと、セキュリティの問題です。HTMLとjavascript、javaアプレットを用いてWeb画面を作るなど複数のアーキテクチャを用いると各アーキテクチャ間の歪みが生まれやすいのです。

最近、Web開発をしていなかったのでこういった情報にはすっかり取り残されてしまっていました。
HTML5の普及と共に色々なアーキテクチャが刷新されていますね。これでだいぶ開発が楽になるのではないでしょうか。実に楽しみな展開ですね。


基本設計の仕方。必要な資料は何か。

まずは「ユースケース図」を作成して、顧客の要望を明確にする。

次に実現するためのシステムフローを「アクティビティ図」で記載する。


そして、次のような細かいレベルに落とし込む。
「コミュニケーション図」
「シーケンス図」
「クラス図」
「ER図」


これで製造の準備は整った。



アクティビティ図
アクティビティ図は、システムなどのフローを記述する表記法です。

コミュニケーション図
コミュニケーション図は、オブジェクト間のメッセージのやり取りを示す。シーケンス図とは、異なりオブジェクトを中心に記述します。

シーケンス図
正しい。シーケンス図は、オブジェクト間のメッセージの流れを時系列に表す図です(下図参照)

ユースケース図
ユースケース図は、システムに要求される機能を、ユーザの視点から示したものです。

クラス図
クラス、属性、クラス間の関係からシステムの構造を記述する静的な構造図。リンク、関連、集約、汎化、特化、実現などの関係を表現することができる。

ER図
データベース化の対象となる実体(エンティティ)と実体の持つ属性(アトリビュート)、および実体間の関連(リレーションシップ)を表現する図。
任意のオブジェクトをその関連をデータモデル化することができるが、関係データベースの設計によく利用される。


ガベージコレクションについて解説

Javaで大規模システムを作ると「ガベージコレクション」が大変なことになるとの話を聞いたので調査してみました。以前、大規模システム作ったときにはそんな変な挙動は起きていなかったように思えるけども。実際にはどうなんだろうか。

ガベージコレクション

ガベージコレクションとは、日本語に直訳するとゴミ収集。プログラムが動的に確保したメモリに対して、使用しなくなったものを解放する機能のことです。次に詳細な解説が記載されている記事をご紹介します。

【Java】GCのお勉強

http://sakuramochi702.hatenablog.com/entry/2013/05/31/163350

図解付きでガベージコレクションの仕組みが書かれています。


【Java】GCとfinalizeメソッドの関係

http://sakuramochi702.hatenablog.com/entry/2013/06/03/125052

こちらも図解付きでガベージコレクションの仕組みが書かれています。finalizeメソッドの動作を含めての解説。


APサーバからの応答がなくなった、なぜ?―GCをチューニングしよう―

http://www.atmarkit.co.jp/ait/articles/0211/30/news002.html

ガベージコレクションで長時間の無応答状態が発生しないようにチューニングをしようと言うお話。


ガベージコレクション

https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3

wikipedia。全体的に説明されています。




これらの記事を読めばざっくりは理解できることでしょう。忘れたときにすぐ見返せるように記事にしておきました。話は変わるけど、リンクが長くなると記事の枠内からはみ出してしまうのは何なんだろうなぁ、文字や画像などリンク以外は上手く記事の枠内に収まるのに。ま、いいか。

それでは。





業務システムの運用フローの書き方

基本的にはフローチャートで記載する。
でも、私はユースケース図が良いと思う。それで、システム境界線内をもう少し詳細に記載していく。

フローチャートだと人間の作業が記載しずらい。かかる日数は把握しやすい。かかる日数を把握したいのならダイアグラムを記載すればいいかな。どこを短縮すれば全体の作業が短くなるか把握することが出来るし。


それらを踏まえて
→費用対効果を考慮して新旧システムを提案する。


【提案するときに考慮すべき項目】
・作業にかかる時間

・作業にかかる人数
 →人物の単価も考慮するかな

・作業にかかる心理的負荷
 →業務の進捗が可視化できていない
 →単純作業の繰り返し


それで開発費用をペイできるのはどのくらいですよとか言おうかな。そこまでは厚かましいだろうか。


設計書がないときは、推測ばかりになって時間がかかるわりに精度の高いものは出来ない。
なので、わからないことは聞いてしまおう。

現場では思いもよらない方法で使用されていることがある。




上司がクソ野郎になってきた

上司がクソだ。 全然勉強していなくて話が通じなくてクソ REST知らないってどういうことなんだろう。弊社標準になってから久しいJavaをまともに組めないってのはどういうことなんだろう。 計画上では詳細設計フェーズが半分を過ぎようというときに要件定義できていないってのはどう...