2016/01/26

jjugナイトセミナー行ってきた

jjugナイトセミナー

# Gitはじめの一歩
  • ファイルの状態のスナップショットを取り、それを履歴で管理しておくもの。
    • 初級者に伝えると理解が進む。
  • 用語
    • リモートリポジトリ:グローバルなリポジトリ
    • ローカルリポジトリ:自分のPC内にあるリポジトリ
    • ワークツリー:作業フォルダのこと
  • 反映手順
    • ワークツリーからローカルリポジトリへコミット
    • ローカルリポジトリからリモートリポジトリをコミット
  • コマンド
    • ローカル
      • リポジトリの作成
        • クローン:git clone:リモートリポジトリからローカルリポジトリを作る
        • 作成:git init:新規でリポジトリを作る
      • ローカルリポジトリの反映
        • 追加:git add:ファイルの追加
        • 反映:git commit:リポジトリへ反映
      • ローカルでの操作詳細
        • ワークツリーで編集 → インデックスへ反映(ステージ済)→ リポジトリへ反映(コミット)
      • 状態確認
        • git status:状態を確認することができる
    • リモート
      • リモートリポジトリとローカルリポジトリの紐付け
        • これがやっぱりわからない!?
      • リモートとローカルのやり取り
        • プル:git pul:作業ディレクトリまで持ってくる
        • フェッチ:git fetch:リモートリポジトリをローカルリポジトリに反映
        • マージ:git merge:ローカルリポジトリから作業ディレクトリへ反映
    • ブランチ
      • ブランチの切り替え
        • チェックアウト:git checkout:ブランチの切り替えを行う。
      • ブランチ統合
        • マージ:git merge:チェクアウトしているブランチへ他のブランチを統合する
          • fast-forward:対象のブランチ独自の変更がない場合(マージコミットができない)
          • non-fast-forward:対象のブランチ独自の変更がある(マージコミットができる)
        • リベース:git rebeas:他のブランチのHEADへチェックアウトしているブランチを統合する
    • その他コマンド
      • ログ:git log:コミットのログが見える
      • 差分:git diff:差分を確認する
      • タグ:git tag:コミットに名前をつける
  • 初心者がやりがち
    • 不要なファイルのコミット
    • gitとgithubを混同
      • ですよねー
    • コンフリクト恐怖症
      • <<<<<<< head
      • ====== 境目
      • >>>>>>> branch
      • これを落ち着いて手でマージ
  • tips
    • アボートでマージを取り消すことができる
    • コミットを取消せる
      • git revert コミット取り消し履歴が残る
      • git reset 履歴を残さず戻す
      • ※ リモート上はresetは原則しない。
    • コミットの内容を編集する
      • git commit —amend
      • ※ リモート上は危ないのでやらない
    • addの取り消し
      • git statusでヘルプが出てるよ
    • やっちまったやつ
      • git reflog 緊急戻しコマンド! GCで消えちゃうので使えないことも。。。
  • 本の紹介
    • Pro Git 無料だよ!!
  • 質問
    • addって何?
      • コミットの単位に意味を持たせるため、編集した内容のうち意味のある単位で切り取ってaddをしつつコミットする。
      • これって、作業ファイルの編集済み部分に対して何かしてコミットしていかなくても済むのでいいかも!?

# Git実践入門

# 資料関連

2015/10/19

macbook proでSDカードリーダから書き込めない!

嫁が4ヶ月ほど前にiPad miniを買ったのだが、それに合わせてSDカードリーダを買った。
それを今更開封してセッティングしたのだが、これ以外と優れもの。

無線を搭載していて、アクセスポイントとして端末から読み書きができる。
しかも、ルータの無線につなげることも可能!

早速設定をしたのだが、macbookからもWebDevでアクセス可能と歌われていたというのに、接続はできても、書き込み時に固まる。。。

取り急ぎ、データの投入は本体付属のリーダーでできるからいいかと直接さして書き込みを実施しようとしたところ、今回の本題!

なんと、書き込みができず、なんだこりゃと。

フォーマットが原因かと、あとはLockでもかかっているのかとさんざん試したが相変わらず書き込み不可!

諦めかけながら、google先生に問い合わせを続けたところ、以下のサイトを発見!
http://kanonji.info/blog/2013/11/26/macbook-pro%E3%81%AEsd%E3%82%AB%E3%83%BC%E3%83%89%E3%82%B9%E3%83%AD%E3%83%83%E3%83%88%E3%81%A3%E3%81%A6%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E3%81%8B%E3%81%8B/

同様の症状で困っている人がおり、しかも原因は、macのlockの仕組みの仕様とカード自体の仕様があっていないことらしい。。。

記述があるとおり、Lockのスライドを少しだけLock気味の解除に設定してさしてみると、あら不思議。

普通に書き込めましたとさ。

さてさて、取り急ぎ書き込めたのだが、問題はWebDevでアクセスが不調の方。
こっちは全くわからず、しばらく調べようと思う。。。

中途半端だぞ!

2015/09/02

ちょっとメモ

定期的にjolokiaからデータを抜いてファイル出力するデーモンプログラムを作る必要に迫られたので作ってみた。

とりあえず、ソースぺたり。

package jp.shibadog.daemon;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import javax.management.MalformedObjectNameException;

import org.jolokia.client.J4pClient;
import org.jolokia.client.exception.J4pException;
import org.jolokia.client.request.J4pReadRequest;
import org.jolokia.client.request.J4pReadResponse;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;

public class DaemonTool {

public static SimpleDateFormat sdf1 = new SimpleDateFormat(
"yyyy/MM/dd:HH:mm:ss");

@Option(name = "-c", aliases = "--config", usage = "コンフィグファイルの指定")
private String confPath = "";

public static void main(String[] args) {
DaemonTool dt = new DaemonTool();
dt.execute(args);
}

private void execute(String[] args) {

if (!init(args)) {
System.exit(1);
}

if (this.confPath != null && !"".equals(this.confPath)) {
JSONParser parser = new JSONParser();
String s = null;
try {
BufferedReader br = new BufferedReader(new FileReader(new File(
this.confPath)));
StringBuilder sb = new StringBuilder();
String tmp = br.readLine();
while (tmp != null) {
sb.append(tmp);
tmp = br.readLine();
}
s = sb.toString();
System.out.println(s);
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}

Object obj;
try {
obj = parser.parse(s);
JSONObject json = (JSONObject) obj;
System.out.println("request-url=" + json.get("requestUrl"));
} catch (ParseException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
}

ScheduledExecutorService service = Executors
.newSingleThreadScheduledExecutor();

J4pReadRequest req;
try {
req = new J4pReadRequest("java.lang:type=Memory", "HeapMemoryUsage");
req.setPath("used");
String urlRoot = "http://localhost:7001/jolokia-war-1.3.1";
String hostname = getHostName(urlRoot);

service.scheduleAtFixedRate(new ExecuteMBeanGetter(hostname, urlRoot, req),
0, 5, TimeUnit.SECONDS);
} catch (MalformedObjectNameException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} finally {

}
}

private boolean init(String[] args) {
boolean ret = false;
CmdLineParser parser = new CmdLineParser(this);

try {
// parse options
parser.parseArgument(args);

System.out.println("Starting application...");
System.out.println("Configuration   : " + confPath);
// System.out.println("Server mode : " + isServer);
// System.out.println("Destination : " + dst);

// your code
ret = true;
} catch (CmdLineException e) {
// print usage.
System.out.println(e);
parser.printUsage(System.out);
System.exit(1);
}
return ret;
}

public String getHostName(String urlRoot) {
String res = null;
J4pClient j4pClient = new J4pClient(urlRoot);
try {
J4pReadRequest req = new J4pReadRequest("java.lang:type=Runtime", "Name");
J4pReadResponse resp = j4pClient.execute(req);
String tmp = resp.getValue();
res = tmp.substring(tmp.indexOf("@") + 1);
} catch (J4pException | MalformedObjectNameException e) {
System.out.println(e);
e.printStackTrace();
}
return res;
}

class ExecuteMBeanGetter implements Runnable {
private J4pReadRequest req;
private String urlRoot;
private String hostname;

public ExecuteMBeanGetter(String hostname, String urlRoot2, J4pReadRequest req2) {
setUrlRoot(urlRoot2);
setReq(req2);
setHostname(hostname);
}

@Override
public void run() {
J4pClient j4pClient = new J4pClient(getUrlRoot());
try {
J4pReadResponse resp = j4pClient.execute(getReq());
System.out
.println(DaemonTool.sdf1.format(resp.getRequestDate())
+ "," + getHostname() + "," + resp.getValue());
} catch (J4pException e) {
System.out.println(e);
e.printStackTrace();
}
}

public J4pReadRequest getReq() {
return req;
}

private void setReq(J4pReadRequest req) {
this.req = req;
}

public String getUrlRoot() {
return urlRoot;
}

private void setUrlRoot(String urlRoot) {
this.urlRoot = urlRoot;
}

public String getHostname() {
return hostname;
}

public void setHostname(String hostname) {
this.hostname = hostname;
}

}
}

2015/08/31

weblogicのコマンド操作(アンデプロイ)

さてさて、無事weblogicがインストールできたわけだが、今回の目的というのも、weblogic serverにjolokiaをデプロイしたら、いろいろ壊れて大変なことになったのでそれを直すため環境を作って調べているわけなのだ。

まずは、jolokiaとweblogicは相性が悪いのか?というところから確認。

。。。普通にデプロイできるし見えるじゃん。

では次に、壊れちゃったweblogicを修復するためにweblogicのコマンドからアンデプロイの手段を調べる。

コマンドの公式リファレンスはこちら。
http://otndnld.oracle.co.jp/document/products/wls/docs92/deployment/wldeployer.html#wp1008316

さてはて、どうやら、Java上で動くweblogic.Deployerというものが存在するらしい。
このツールはオプションで接続情報を設定し、サブコマンドでいろいろ操作ができるというものの様子。

では早速、アンデプロイのコマンドはどんなものになるかというと。

java weblogic.Deployer -adminurl http://localhost:7001 -username weblogic -passowerd weblogic -stop jolokia
java weblogic.Deployer -adminurl http://localhost:7001 -username weblogic -passowerd weblogic -undeploy jolokia

という感じらしい。

という感じらしい、というのも、weblogic.Deployerが見つからずうまく動いてくれないため確認できなかったからである(ぉ

でも、調べているうちに、コマンドの使い方がわかったので、一旦OKとしようと思う。

この甘さ加減が問題だな。

以上。

MacOSのJDKインストール場所

ひっさしぶりに投稿。

といっても大した話ではなく。

MacでJDKのインストール場所がわからないという、超初歩的な話。


/Library/Java/JavaVirtualMachines

上記パス配下に入るらしい。

dmgでパッケージインストールしてもJAVA_HOMEが設定されなかったので、WebLogicのzipインストールをしようとして困ったので調べてみた。

と言っても、WebLogicのREADMEに書いてあるっていうね。

ほぼフリーみたいなもんなんだから、技術力あげなきゃね。。。

以上。

2013/04/09

C#で拡張メソッドをつか

仕事中に同僚が発見した便利そうな技を紹介

といっても、人のブログに乗ってたやつだけども。

http://d.hatena.ne.jp/siokoshou/20080124#p1

何をしようとしたかというと、Enumで宣言したエラーコードをもとにエラーメッセージを返す処理を書きたく、うまい変換手段を考えてた。
Enumで宣言したコードからToStringでEnumにひもづく文字列を取得するというもの。

拡張メソッドというやつが便利すぎるので今後取り入れたいと思う。

まぁ、そんだけ。

2013/04/05

SSMS IntelliSenseが言うことを聞かない時の対処


DBのオブジェクト構造を変更したとき、新しいオブジェクトでインテリセンスが効かなかったりする。
何かをきっかけに効くようになるため、放置していたが、ちょこちょこストアドやらビューやらを作ったり消したりしていると結構わけわからなくなるので調べてみた。

http://msdn.microsoft.com/ja-jp/library/ms173434.aspx

どうやら、ローカルキャッシュを持っているようで、これを更新することで最新の状態でインテリセンスを効かすことができるようだ。

方法としては以下の2パターン

1.[編集] → [IntelliSense] → [ローカルキャッシュの更新]
2.Shift + Ctrl + R

どちらも、クエリエディタが開いているときに操作可能な様。

まぁ、メニュー漁れよの一言だとは思うが。。。忘れそうなので記載する。