12月15日

1月12日の予定
1限目は発表の準備やアプリの最終調整など。
2限目は各チーム15分で発表を行う。

発表内容は、発表用パワーポイントのテンプレートをベースにする。
(内容を踏襲していれば大幅に変更することも可)

デモの内容も考えておくこと。

  • 最初に作ったロバストネス図と現状の比較
  • デモは誰のパソコンで動かすのか
  • デモの内容
    1. トップ画面
    2. 登録済みコンテンツの表示
    3. 新規コンテンツの追加
    4. 追加したコンテンツを表示
    5. 追加したコンテンツの編集
    6. etc…
  • ここは見て欲しい!というところ

12月11日

「プロジェクトに接続が指定されていません。データベース固有の検証は実行されません。」という警告が出る場合の対処方法。
日本語で検索してもほとんどヒットしないので、対応する英語のメッセージを検索してみると、
「No connection specified for the project. No data-specific validation will be performed」が見つかる。

このメッセージで検索すると、以下のページが見つかる。

http://ask.programmershare.com/676_21118951/

No connection specified for project. No database-specific validation will be performed Eclipse Marker is related to JPA.

You can perform following things to eliminate markers:-

1.You can either add the required datatools

2.disable the JPA validator right-click on the project in which marker error is showing select Properties—>>>Validation).

検証を実行させたい場合はデータツールを追加する。

  1. プロジェクトのプロパティを開き、左側のリストで「JPA」を展開。
  2. 「エラー/警告」を選択。
  3. 「プロジェクト固有の設定を可能にする」をチェック。
  4. 「プロジェクト」を展開。
  5. 「指定された接続がないプロジェクト」の右側のドロップダウンを「無視」にする。

Criteria APIでテーブルの行をランダムに取り出す方法
Criteria APIのorderByでは昇順か降順しか指定できない。
ランダムに取り出すには、以下のコードで制約を記述する。

    criteria.add(Restrictions.sqlRestriction("1=1 order by rand()"));

12月8日

Tomcatが動作している場所の確認方法
「サーバー」ビューにある「Tomcat8サーバー」をダブルクリックする。

「サーバー・ロケーション」が、「サーバー・パス」に表示されているところが、サーバーが動作している場所。
Webアプリが動作しているのは、「サーバー・パス」内の「デプロイ・パス」。

12月4日

Submitする前に確認ダイアログを表示したい場合

<input type='submit'  value='送信' onclick='return confirm("よろしいですか?");'/>

HSQLDBでカラムの定義を変更したい場合
HSQLDBのSQL文法ドキュメントでALTER TABLEのところを見る。
Chapter 9. SQL Syntax

サンプルがいくつかあるので、マネすればできるはず!

例:

alter table mydata alter column memo clob

12月1日

SpringMVCでファイルアップロードをするための設定

tomcatのcontext.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
--><!-- The contents of this file will be loaded for each web application -->
<Context allowCasualMultipartParsing="true">

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->
</Context>

WEB-INF/web.xml

	<filter>
    	<filter-name>MultipartFilter</filter-name>
    	<filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
	</filter>
	<filter-mapping>
    	<filter-name>MultipartFilter</filter-name>
    	<url-pattern>/*</url-pattern>
	</filter-mapping>

application-config.xml

    <bean id="multipartResolver"
		class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
	</bean>

11月27日

YAGNI

YAGNI – Wikipedia
You ain’t gonna need it

機能は実際に必要となるまでは追加しないのがよい

ソースコードは短い方が良い。→ 読みやすい・理解しやすい・バグが出にくい

とりあえずテストにパスするコードを書いて、あとのリファクタリングでソースコードを整理するというやり方でもよい。

KISSの原則

KISSの原則
Wikipedia の YAGNI のページに関連リンクがある。

Keep it simple stupid の略語。

ファイルアップロード

ファイルアップロードは、Springの公式サイトに書いてある実装がわかりやすい。

Getting Started · Uploading Files – Spring

ファイルを保存する処理は、Webページには書かれてなく、ZIPファイルをダウンロードした中の FileSystemStorageService クラス内にある。
Serviceクラスを作ってもいいが、必要な部分をコントローラにコピーしてもよい。

@RequestMapping(value = "アップロード先URL", method = RequestMethod.POST)
public String handleFileUpload(@RequestParam("file") MultipartFile file, Model model) {
        // file を保存
        String filename = StringUtils.cleanPath(file.getOriginalFilename());
        try {
            if (file.isEmpty()) {
                throw new StorageException("空のファイルです " + filename);
            }
            if (filename.contains("..")) {
                // This is a security check
                throw new StorageException("ファイル名に「..」が含まれてます " + filename);
            }
            Files.copy(file.getInputStream(), Paths.get("保存先ファイル名"),
                    StandardCopyOption.REPLACE_EXISTING); // 上書き
        } catch (IOException e) {
            throw new StorageException("Failed to store file " + filename, e);
        }
        return "uploadcomplete"; // 完了後に表示するjsp
    }

11月20日

発表に使用するパソコンについて

発表で使用するパソコンは、教師用を使用する。
パワーポイントのファイルは、各グループのBacklogにアップロードし、そのファイルに教師用パソコンから開く。

作成したWebアプリのデモは、各グループの誰かのパソコン上で動作しているものを使用する。
パソコンの液晶の裏側に貼ってあるホスト名(pck403xx)にアクセスすれば、教室内の全員がそこで動作するWebアプリを使用できる。

発表用パワーポイント
発表に使用するパワーポイントは、以下のテンプレートを使用すること。

発表資料

11月13日

新規ファイルを追加してもアイコンが「?」にならない
EclipseでGitを使用していれば、新規ファイルを追加すればファイルのアイコンに「?」がオーバーレイされるはずなのに、これが表示されないという問題が発生した。プロジェクト内のどこに新規ファイルを作っても、Gitの管理下に追加できない状況になっていた。

調べた結果、プロジェクトを格納しているフォルダの上位フォルダに .gitignore ファイルが作成されていた。
その内容が、

/プロジェクトフォルダ名/

となっていたため、既存ファイル以外のすべての追加が無視されていた。

問題の1行を削除してコミットすることで、新規ファイルに「?」アイコンが表示されるようになった。

同じ問題で困っていた人↓
https://stackoverflow.com/questions/12808656/cant-add-new-file-to-repository-in-egit