読者です 読者をやめる 読者になる 読者になる

Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

Seasar2の環境構築&実行のメモ

Java Seasar2

f:id:fa11enprince:20150731131832j:plain Seasar2によるサンプルアプリを作成してみます。 今回はDoltengを使います。

1.前準備

JDKのインストール

http://www.oracle.com/technetwork/java/javase/downloads/index.html あたりからJava8(JDK8)のをインストールします

Eclipseのインストール

Eclipse IDE for Java EE Developers https://www.eclipse.org/downloads/eclipse-packages/ eclipse-inst-win64.exeをダウンロードしたら Cドライブ直下に移動して解凍します。 eclipseというフォルダができています。

Tomcaのインストール

Tomcat 9.0
http://tomcat.apache.org/download-90.cgi 32-bit/64-bit Windows Service Installer をダウンロードします。 そしてそのあとインストールします。
C:\Program Files\Apache Software Foundation\Tomcat 9.0 にインストールされると思います(64bit)

MySQLのインストール

バージョンは何でもよいのですがここからダウンロードしましょう! http://dev.mysql.com/downloads/mysql/ 特に何も気にせずDefaultのままでOKです。

MySQLのユーザ作成

コマンドプロンプトなどを立ち上げて

> mysql -uroot -p
> GRANT ALL PRIVILEGES ON *.* TO appuser@localhost IDENTIFIED BY 'password';
> SELECT Host, User FROM mysql.user;

を実行します。

Seasar2 pluginを入れる

eclipseを立ち上げます。 Welcomeページが出ますが、無視して閉じます。 Help > New Install Softwareから Addボタンを押して

Name: Seasar2 
URL: http://eclipse.seasar.org/updates/3.3/

でOKを押します。

Kijimuna
Resourcesynchronizer
S2JUnit4Plugin
SAStrutuPlugin

を選びNextを押します。あとは指示に従いインストールします。 最後にeclipseの再起動があります。

Seasar2アプリを作成

プロジェクトのセットアップ

Eclipseを立ち上げて右クリック > New > Project > Dolteng Project とします。 次にプロジェクト名とルートパッケージ名ですが何でもよいです。

Project Name: myseasar2
Root Package Name: myseasar2

としておきましょう。

JRE Containerは Use an execution environment JRE: JavaSE-1.7 にしましょう(JavaSE-1.8だとダメみたいです)。

Project Facet Settings
Presentation: SAStruts
Persistence: S2JDBC
Server Management: WTP(Servlet 2.5)

を選んでFinishを押します。

MySQL 関連する設定ファイルの書換え

Eclipseのworkspace\seasar001\src\resoruces\dataにある demo.sqlを開きます。 最初の2行はMySQLでは通用しないので消して次の3行を追加します。

USE TEST;
CREATE TABLE EMP(ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, EMP_NO INTEGER NOT NULL ,EMP_NAME VARCHAR(20),MGR_ID INTEGER,HIREDATE DATE,SAL NUMERIC(7,2),DEPT_ID INTEGER, VERSION_NO INTEGER);
CREATE TABLE DEPT(ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, DEPT_NO INTEGER NOT NULL,DEPT_NAME VARCHAR(20),LOC VARCHAR(20), VERSION_NO INTEGER);

MySQLワークベンチを立ち上げてそのSQLを実行します。

次に src\main\resources\jdbc.diconを書き換えます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components namespace="jdbc">
    <include path="jta.dicon" />

    <!-- MySQL -->
    <component name="xaDataSource"
        class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
        <property name="driverClassName">
            "com.mysql.jdbc.Driver"
        </property>
        <property name="URL">
            "jdbc:mysql://localhost:3306/test?useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC""
        </property>
        <property name="user">"appuser"</property>
        <property name="password">"password"</property>
    </component>

    <component name="connectionPool"
        class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
        <property name="timeout">600</property>
        <property name="maxPoolSize">10</property>
        <property name="allowLocalTx">true</property>
        <destroyMethod name="close" />
    </component>

    <component name="DataSource"
        class="org.seasar.extension.dbcp.impl.DataSourceImpl" />

</components>

test?以降がないと環境によっては

java.sql.SQLException: The server timezone value 'UTC' is unrecognized or represents more than one timezone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc timezone value if you want to utilize timezone support.

のようなエラーが出ます

src\main\resources\s2jdbc.diconも書き換えます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="jdbc.dicon" />
    <include path="s2jdbc-internal.dicon" />
    <component name="jdbcManager"
        class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
        <property name="maxRows">0</property>
        <property name="fetchSize">0</property>
        <property name="queryTimeout">0</property>
        <property name="dialect">mysqlDialect</property>
    </component>
</components>

pom.xmlの設定を変更します

mysql-connector-java 6以上だと動作しないものがあります。 さらにproject直下にあるpom.xmlを書き換えます

        <!--
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.0.69</version>
        </dependency>
        -->
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
        </dependency>

mysql-connectorの設置

Tomcat8のディレクトリにmysql-connectorを置きます。 http://central.maven.org/maven2/mysql/mysql-connector-java/6.0.3/ mysql-connector-java-5.1.39
をダウンロードして C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib に置きます。

s2jdbc-gen-build.xmlの実行

/libに mysql-connector-java-5.1.39を置いて リフレッシュ Java Build Path > LibrariesからJARの追加をする。

s2jdbc-gen-build.xml の1行目 gen-ddlをgen-entityに変えて実行します。 s2jdbc-gen-build.xml

<project name="myseasar2-s2jdbc-gen" default="gen-entity" basedir=".">

右クリック Run As > External Tools Configurations Targetタブでgen-entityになっている CommonタブでEncodingでUTF-8 Runを押します。

正常に実行できればクラスなどが自動生成されています。

備考

http://stackoverflow.com/questions/38083230/mybatis-generator-column-name-pattern-can-not-be-null-or-empty mysql-connector-javaのVersionが6以上だとs2jdbc-gen-build.xmlが動かない

Tomcatの設定

Server Viewでサーバーを新規作成します。 Tomcat v9.0 Serverを選択しNextを押します。 Tomcat Installation DirectoryではTomcat9をインストールしたディレクトリを選択します。 C:\Program Files\Apache Software Foundation\Tomcat 9.0 Add and Removeで myseasar2があるので追加します。 Finishを押すとサーバーが作成されます。

実行します

Server ViewからStartを押します。 http://localhost:8080/myseasar2/ と押すとHello worldと出ていると思います。

Scaffoldを利用します

Window > View > Database View を出します。 Database Viewで何度かクリックすると DeptとEmpが出てくるのでそれぞれを右クリックして Generate Scaffold Applicationとします。

ソースコードを書き換えます。

<h1>Hello world!</h1>

を消して

<li><s:link href="dept">dept</s:link></li>
<li><s:link href="emp">emp</s:link></li>

と書き換えます。

再びブラウザを立ち上げて実行します。

http://localhost:8080/myseasar2/

関連記事

fa11enprince.hatenablog.com

単方向リスト(Singly Linked List)の実装 (C++)

C++ Programming

f:id:fa11enprince:20160518180613j:plain
単方向リストを勉強がてら久々にビールを飲みながらC++で書いてみました。
これをやると、ポインタって何かってよく理解できますね。
しかしビールを飲むと、わけのわからないミスをしでかします…。

ソースコード


イテレーターがねえ!とか
追加するたびnewしてる…とかいろいろ足りないところありますが、
勉強で書くにはこれで十分でしょう。
双方向リストじゃないと微妙に実用性ないですね。
ちょこっと変えると双方向リストになります。

実行結果

$ ./list.exe
2
2 3
2 3 4
1 2 3 4
0 1 2 3 4
0 3 1 2 3 4
---------
0 3 1 2 3
3 1 2 3
3 1 3
3 1
---------
3 1 4

参考リンクなど(だけどその実装が微妙です…)

www.sanfoundry.com

MacにEclipse 4.5 Mars に Pleiades導入

Mac Java

f:id:fa11enprince:20100930152341j:plain

Mac版 Eclipseのダウンロード

Eclipse Downloads
ここからEclipse IDE for Java EE Developersをダウンロードします

Pleiadesをダウンロード

Eclipse 日本語化 | MergeDoc Project
ここからPleiades All in One 4.5.2のJava 64bit Standard Editionをダウンロードします。

Eclipseのインストール

ダウンロードしたeclipse-jee-mars-2-macosx-cocoa-x86_64.tar.gzを解凍します
その後、Eclipse.appを/Applicationsに移動します
なお、任意のフォルダに移動する場合はCommand + Shift + Gです
さらに、pleiades-e4.5-java_20160312.zipを解凍します
/Applications/Eclipse.appを右クリックしてパッケージの内容を表示を選択します。
次のものをごそっと全部Pleiadesからコピーします
Windowsと違ってフォルダごと移動すると中身が上書きされちゃうので注意です。
なのでFinderでやる場合はフォルダに潜ってファイル全選択をしてコピーがいいと思います。

コピー元 コピー先
pleiades/eclipse/dropins/ /Applications/Eclipse.app/Contents/Eclipse/dropins/
pleiades/eclipse/features/ /Applications/Eclipse.app/Contents/Eclipse/features/
pleiades/eclipse/plugins/ /Applications/Eclipse.app/Contents/Eclipse/plugins/

また、/Applications/Eclipse.app/Contents/Eclipse/eclipse.iniを書き換えます
ファイルの末尾に次を追加してください
javaagentの場所は/Applications/Eclipse.app/Contents/MacOSから見たpleiades.jarのPATHです

-Dfile.encoding=UTF-8
-Xverify:none
-javaagent:../Eclipse/dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

Eclipseを起動します

問題が起こりやすいのでコマンドラインから起動します。
そうすると原因を教えてくれます。
私はjavaagentのPATH指定で一度失敗しました

$ /Applications/Eclipse.app/Contents/MacOS/eclipse

なお、起動時に
「eclipse.appは壊れているために開けません。”ゴミ箱”に入れる必要があります」
というイケてないメッセージが出ましたら
システム環境設定 > セキュリティとプライバシー > ダウンロードしたアプリケーションの実行許可
で全てのアプリケーションを許可に変更してみてください。

はてなブログの目次記法の簡単カスタマイズ

はてなブログ

f:id:fa11enprince:20160508125616j:plain
目次記法なるものがあって、これは良い!とおもって使ってみました。
h3, h4などに相当するタグ(はてな記法でいえばアスタリスクですね)が
勝手に目次になってくれるやつですね。

使い方は

[:content]

です。こうすると…
f:id:fa11enprince:20160508125952p:plain

だっさwwwコミュ抜けるわ・・・となるわけです。

CSS改造します

ということでCSSを軽くいじります。
例によってデザインCSSのをいじります。

/* Table Of Content */
.table-of-contents {
    border: 1px solid #e4e4e4;
    padding: 20px 10px 20px 40px;
    list-style-type: none;
    border-radius: 5px;
    font-size: 90%;
    background-color: #eeeeee;
}
.table-of-contents:before {
    content: "目次";
    font-size: 110%;
}
.table-of-contents li,
.table-of-contents ul {
    list-style-type: none;
}
.table-of-contents a:link {
    color: #000000;
    text-decoration: none;
}
.table-of-contents a:hover {
    color: #000000;
    text-decoration: underline;
}

そうすると、多少ましになります。
f:id:fa11enprince:20160508130135p:plain
色が変わっているのはリンク踏んだところです。
ちなみに、マウスオーバーしたときに下線がひかれるようにしています。

参考リンク

www.yutakalog.com

Parallels Desktop 11にアップデートしてWindows10にアップグレードしました

Mac

f:id:fa11enprince:20160508123337j:plain

Parallels Desktop 11 for MacにアップデートしてWindows 8.1からWindows 10にアップデートしました。
はまりポイントが少しあったのでメモ

ハマりポイント

  1. そのままWindowsアップデートではメモリ要件に引っかかりクリアできない
  2. VMを2GB以上に設定してもメモリ制限に引っかかる
  3. 外部メディアのpsf形式のドライブをそのままダブルクリックしてもエラーになる
  4. Windowsの標準機能からマウントしようとするとエラーでできない

手順

Parallelsを11にアップデート

Parallels 10を使っていたので11にアップデートしました。
Parallels 10だとWindows 10に対応してません。
Windows 10をつかえるだけでなくサクサクになるそうです。

仮想環境のメモリを2048MBにする

4GBしか積んでないMacBook Airとかだとデフォルトで1GBなので変更しておく。
その際推奨値を超えてるなんて言われるけれども無視します。
Windows 10インストール後元に戻します。

Daemon Tools Liteを入手

メディアに焼くのも面倒なんでマウントします。
Windows標準機能ではマウントできませんでした。
また、外部メディアをすでに持っている場合でも、
ネットワークドライブのところに表示されているMac側に
マウントされたpsfをクリックしてもエラーになります。
Error Code is [0x7E]とか言われる。

ISOをマウントしてインストール

Deamon Tools Liteを起動してクイックマウントからISOを指定してマウントします。
エクスプローラーからマウントしたドライブを選択してsetup.exeをたたきます。

Windows 10のインストール作業

あとはWindows 10のアップグレードのウィザードのようなものの手順に従えば完了です

事後作業

仮想環境のメモリ等をデフォルトに戻します(必要であれば)

参考リンク

qiita.com