基本コマンドメモ

日々の習慣

■ローカルブランチが何だったのか最初に把握

git branch

■まずは何がどうなっているのか現状把握

git status

■まずはリモートをローカルに同期しておく

git fetch

■ローカルにプル

git pull origin <<リモートのブランチ>>

■ぜんぶプル

git pull

■習慣としての現状把握

git status

変更を与える作業

手元の変更を全て破棄

■習慣としての現状把握

git status

■実際に手元の変更を破棄

git checkout .
git clean -f

■改めての 習慣としての現状把握

git status

open vm tools

Ubuntu 16.04 には open vm tools というものが入っているとのこと。VMware Tools の代わりに利用するとのこと。

sudo apt install open-vm-tools
sudo apt install open-vm-tools-desktop

Java で JSON 戻しサンプル (GET)

Jersey および Jackson ベースによるシンプルサンプル。

import java.net.URI;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriBuilder;
import org.glassfish.jersey.jdkhttp.JdkHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
	public static void main(final String[] args) {
		final URI uri = UriBuilder.fromUri("http://localhost/").port(8080).build();
		final ResourceConfig config = new ResourceConfig();
		config.register(Hello.class);
		JdkHttpServerFactory.createHttpServer(uri, config);

		for (;;) {
			System.out.print('.');
			try {
				Thread.sleep(10000);
			} catch (InterruptedException e) {
			}
		}
	}

	@Path("/")
	public static class Hello {
		// http://localhost:8080/person?name=Taro&age=54
		@Path("person")
		@GET
		@Produces(MediaType.APPLICATION_JSON)
		public Response person(@QueryParam("name") @DefaultValue("TaroYamada") String name,
				@QueryParam("age") @DefaultValue("17") int age) {
			Person person = new Person();
			{
				person.age = age;
				person.name = name;

				Job job = new Job();
				job.title = "leader";
				person.jobs.add(job);
			}

			try {
				return Response.ok(new ObjectMapper().writeValueAsString(person), MediaType.APPLICATION_JSON).build();
			} catch (Exception ex) {
				ex.printStackTrace();
			} catch (Error ex) {
				ex.printStackTrace();
			}

			return Response.status(Status.BAD_REQUEST).build();
		}
	}
}

色々調べてみましたが、結局のところは自力で Response をハンドリングするのが最も安全で応用力も高いことがわかりました。

フルコード

これを HTML に組み込む際の方法もメモ。無名関数で即時関数する方法も書き方をよく忘れるのでこれも備忘を兼ねます。

<html>
<head>
  <title>Simple innerHTML sample.</title>
</head>
<body>
  <h1>Simple innerHTML sample</h1>
  <div id="targetnode" />

  <script type="text/javascript">
  (function(){
    var newdiv = document.createElement("div");
    newdiv.innerHTML = "<p>Hello innerHTML world.</p>";
    document.getElementById("targetnode").appendChild(newdiv.firstChild);
    })();
  </script>
</body>
</html>