2015年5月21日木曜日

Eclipseのデフォルトコンテンツアシストの挿入がうざい


これがないと開発が思うように進まないほど、頼りきってるCtrl+Spaceショートカットなんですが、デフォルトの設定のままだと、Delete/BackSpaceキーを連打するハメになることがあります。
(もしかしたら、私だけ?)


Java/Editor/ContentAssistの項目のInsertionがデフォルトだとInsertsになっています。
どちらの設定であっても、例えば、

StringUtils.isE

まで入力した後に、Ctrl+Spaceを押すと、

StringUtils.isEmpty(cs)

とcsにフォーカスがあたった状態で、入力補完が行われます。
ですが、Insertsにしていると、

StringUtils.isEmpty(cs)

と入力した後に、カーソルを「s」と「E」の間において、Ctrl+Spaceの補完でisNotEmptyにした場合、

StringUtils.isNotEmpty(cs)Empty(cs)

こうなってしまうのです!
で、Delete/BackSpaceを連打するはめに。。。

イマイチInsertsにする状況がわからないですし、Eclipseのコード補完が煩わしいと思った方はoverwritesに変更すると良いです。

簡単!Spring frameworkでWEBサイトを作る ~Jnunitテスト~

でチョー初歩的な画面を作りました。

コントローラー内で全く処理がないので、テストは伝統的にブラウザから直接開いてOKとかNGとか確認できますが、今回はテスト・ツールを使ってみます。

src/test/java/demo/DemoControllerTests.javaなるものを作ります。

package demo;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = DemoApplication.class)
@WebAppConfiguration
public class DemoControllerTests {
 @Autowired
 private WebApplicationContext wac;

 private MockMvc mockMvc;

 @Before
 public void setup() {
  this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
 }

 @Test
 public void getDemoPage() throws Exception {
  ResultActions resultActions = mockMvc.perform(MockMvcRequestBuilders.get("/demo?name="));
  resultActions.andExpect(MockMvcResultMatchers.status().isOk());
  resultActions.andExpect(MockMvcResultMatchers.model().attributeDoesNotExist("name"));
 }
}
とでも書いておきます。

で、実行します。
DemoControllerTestsを右クリックしてDebug As→JunitTestをクリック
グリーンなら正常、レッドなら異常になるので、常に結果がグリーンになるようにしましょう。


余談ですが、modelのattributeがnullを期待する場合のチェックは以下の様に書いておくと良いです。
resultActions.andExpect(MockMvcResultMatchers.model().attributeDoesNotExist("name"));

Eclipseのレイアウトの変更

完全に好みの世界ですが、私は以下のような設定が見やすく感じます。


  • Show print marginをONにして200列くらいにする。
  • Show whitespace charactersをONにして、改行コードを非表示にする


すると
が
な感じになります。

また、フォーマットした時の形式も変更します。
改行をさせる列数を200くらいにしちゃいます。

結局のところ何が見やすいかは自分で適当にいじくりながら探していくしかないんですよね。。。

簡単!Spring frameworkでWEBAPIを作る

に続いて、RestAPIとやらを作ってみます。



コントローラーを作成します。

package demo.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoRestController {
 @RequestMapping("/restdemo")
 public Map demo(String name) {
  Map ret = new HashMap();
  ret.put("name", name);
  List list = new ArrayList();
  list.add(name);
  list.add(name);
  ret.put("list", list);
  Map map = new HashMap();
  map.put("name", name);
  ret.put("map", map);
  return ret;
 }
}

ちょっと長いですが、「List<String>~ret.put("map", map);」の行はなくてもいいです。
また、コントローラーからの返却値をMapではなく、独自のモデルにするのもNiceな考えですね。

demo/model/DemoModel.java
package demo.model;

public class DemoModel {
 private String name;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
}

demo/controller/DemoRestController.java
package demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import demo.model.DemoModel;

@RestController
public class DemoRestController {
 @RequestMapping("/restdemo")
 public DemoModel demo(String name) {
  DemoModel ret = new DemoModel();
  ret.setName(name);
  return ret;
 }
}


で、Spring boot appを起動させて
にアクセスすると


完成!

実際にリクエストを投げてテストする時にPostmanというChromeのプラグインを使用しています。

簡単!Spring frameworkでWEBサイトを作る ~org.thymeleaf+Spring MVC~

まず、新しいプロジェクトを作成します。
File→New→Otherと進みます。
表示されたダイアログで「Spring Starter Project」を選択してNextをクリック
作るプロジェクトの初期設定をします。簡単なWebアプリを作るならWebにチェックを入れてFinishをクリック
ここまでが、プロジェクトの初期作成段階になります。

次に、テンプレートエンジンを取り込みます。
pom.xmlをダブルクリックし、下側にあるDependenciesのタブを開いて、Addをおします。
<dependency>
 <groupId>org.thymeleaf</groupId>
 <artifactId>thymeleaf-spring4</artifactId>
 <version>2.1.4.RELEASE</version>
</dependency>
groupId、artifactIdを入力し、OKで画面を閉じた後にpom.xmlを保存します。

次に、コントローラーと呼ばれるクラスを作ります。
Fire→New→Classをクリック
PackageとNameの部分を適当に入力してクリック
package demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class DemoController {
 @RequestMapping("/demo")
 public String demo(String name, Model model) {
  model.addAttribute("name", name);
  return "demo";
 }
}

 とでも書いておきます。

次に、HTMLの作成です。
「src/main/resources/templates」にdemo.htmlを作成します。
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>demo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
とでも書いておきます。


Run→Debug As→Spring Boot Appをクリックすると起動されます。

http://localhost:8080/demo?name=hogehoge

にアクセスするとこんな感じのページが表示されます。

Spring boot appのお陰で、だいぶ簡単にWEBアプリが作れるようになりましたねー

簡単!Spring frameworkでWEBサイトを作る~準備編~

ダウンロード・解凍したeclipseを起動すると作業フォルダをどこにするかを決めるために、以下の画面が出ます。
デフォルトだとユーザーフォルダの下にworkspaceというフォルダができますが、私は解答したeclipseフォルダの下にworkspaceフォルダを作るようにしています。
WelcomeのタブはとじてOKです。
HelpメニューからEclipse Marketplace..をクリックします。

Findのテキストに「STS」と入力して検索し、使っているEclipseのバージョンに合わせてSpring Tool Suiteのインストールボタンを押します。
Confirmを押します。
「I accept the....」をチェックしてFinishを押します。
「Yes」を押して、Eclipseの再起動をします。
再起動が終わると、こんなタブが表示されます。

eclipseのダウンロード(Windows)

Java開発で最もポピュラーだと思うIDEのEclipseをダウンロードします。

https://www.eclipse.org/downloads/
自分の使用しているPCの環境に合わせてダウンロードしましょう。
でも、このダウンロードのページってたくさんEclipseと名のつくソフトがあってどれを選んでいいかわからない人もいると思います。

とりあえず、シンプルにWEB系のJavaの開発をするのであれば、

  • Eclipse IDE for Java Developers
  • Eclipse IDE for Java EE Developers
のどちらかでいいです。

下のほうが機能が豊富ですが、上のやつでも基本的なものは入っていますし、必要になったら後から追加もできます。私だったら上の基本的なヤツを使います。


で、使っているPCがWindows64bitなのでWindows64bitを選んでダウンロードページに進むとダウンロードリンクがあるページが表示されます。Download eclipse-javaxxxxxx.zip from:の下にあるリンクをクリックするとダウンロードができるので好きな場所に保存して、解答します。
私だったら、Cドライブ直下に解答します。

2015年5月20日水曜日

OneNoteがなかなか使えるかも!?

Windowsを使っている人ならうっすらご存知のOnenoteですが、よくわからないから使ってこなかったんですが、Surface買ってから使用頻度が増えてきました。



ペンタブレットかタッチディスプレイだとかなりノートチックに使用できるツールだと思います。
マウスで文字を書くのはちょっと使いにくくて微妙かもしれないですが、使いようもあるかと思います。
まだ使ってない人は是非ダウンロードしてみてください。
https://www.onenote.com/

OneNoteを開くと右下のトレイにショートカットアイコンが追加されますが、オプションから非表示にできます。

最近気づいたのですが、Chrome用のアドインが用意されてていてWEBページのクリップができるようです。なかなか便利

WEBページのクリップを取ってOneNoteでメモ書いて共有みたいにすれば使えるかもしれません。

画像化だけじゃなくて、動画のクリップもできればいいのに。。。

2015年5月19日火曜日

PDF変換WEBサービス

ネットの情報を画像にして保存しておくことがあるのですが、プリンターも持っていないけど、印刷したくなったのでメモ。

だいぶ前からですが、コンビニのプリンターはインターネット経由でファイルをアップロードすると印刷ができる仕組みがありますね(1枚20円くらいで)
私は、学生のころからの名残でセブンのネットプリントを愛用しています。ゼロックスのコピー機はなかなか優秀で、就活の時に手書きの履歴書をコピーしてもあまり見分けがつかなかったので重宝しましたw 当時もすでにITブームきてたのに手書きw 手書きだと文字から人柄がわかるw 真剣さが伝わるw 完全にオカルトですね。 話はそれましたが、

セブンイレブンのネットプリント
http://www.printing.ne.jp/

XML Paper Specification (XPS)に対応していないあたりがイケてないですが、まあいいです。


最近発見したのが、Smallpdfというサイト。
http://smallpdf.com/jp

いろんなメニューがあります。
元ファイルはドラッグ・アンド・ドロップでポイです。

表記が狂ってますが、ちょっとしたPDF設定ができます。
生成されたPDFは直接ダウンロードもできますし、GoogleDriveとDropboxに保存が可能です。

これで画像を簡単にPDFに変換できたので、後はセブンのプリンターで2IN1の両面印刷すれば、多少は経済的になります。

2015年5月9日土曜日

ウェブチェッカー

ちょっとした用事で、あるWEBサイトの変更の通知がほしい時があり、その時に見つけた優秀なWEBアプリのメモ。


何をやりたいのか簡単にいうと、URLとメールアドレスを指定して、ページに変更があった時に、指定したメールアドレスに通知がほしいということ。


メモしたのはビジュアルピングというサイトです。
http://visualping.io/



いくつか他のサイトを試したけど、ここのはWEBページの画像を任意の間隔で取得し、前回と比較して差分があったらお知らせが来るので前後でどれくらい変化があったのか画像で確認ができます。複数のサイトの登録が可能で、1回の処理で1クレジットを消費します。

新規メールアドレスには250クレジットもつくのでそれまでは無料で使用ができます。
250じゃたりない!!という場合は、捨てアドバンバン作って登録しなおせばいいだけですね。
そんなに難しい作業いらないし。


2015年5月1日金曜日

曲情報の文字化け

PCからAndroid端末に音楽を同期する時にコピペしてるのですが、文字化けに悩んだのでメモを残しておきます。

「Android 音楽 文字化け」のようにGoogleで検索すると、MP3TagやID3Uniなどのツールを使用して音楽ファイルに保存されているタグを「ID3v2.3」だけにしてみよう!なんてたくさん出てきます。

そんなこんなで、PCに保存されているMP3ファイルのタグを修正して、Androidにコピペしても、まだ文字化けを起こしていたので、こまった。


結局は治すことができたのですが、原因はおそらく「アルバム名・曲名に変な文字(®とかêとか)が入ってる」から。

試しに一般的な機種依存文字「①、〠」で試してみたんですが、Androidにコピーしても曲情報は文字化けしていませんでした。
(ちなみに、Windowsで曲を選択して右クリック→プロパティで®とか入力しても、曲情報は文字化けしませんでした。たぶん、ID3v2.3とかとして®などの特殊文字が存在する場合のみAndroidで曲情報が文字化けして表示されるんだと思います。)


なもんで、MP3のタグを修正したんだけど、まだ文字化けする場合は、曲やアルバムなどに変な文字がはいっているかチェックしてみるといいと思います。