気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

gitクライアントツールのssh設定

TortoiseGit、SorceTreeのssh設定をまとめてみます。
2つ使う理由としては、TortoiseGitが差分が見やすい、 SorceTreeは現状が視覚的に見えるので。

TortoiseGit

参考URL

秘密鍵と公開鍵を生成

TortoiseGitをインストールした後に、 TortoiseGitのディレクトリ内にある「PuTTyPuTTYgen」を起動

Generateを押した後にマウスをぐりぐりと動かし、キーを作成。

Save private keyでを押して、praivat.ppk(秘密鍵)を作成。
Save public keyを押して、public.ppk(公開鍵)を作成。

TortoiseGitでの設定

右クリで表示する「Git Clone」のメニューを開いて

Load Putty Keyのところで、作成したprivate.ppkを設定。
これでリポジトリにある公開鍵で鍵がかかった情報に秘密鍵で鍵を開けに行き、
情報を取得できるようになる。

あとは、取得先のリポジトリURLを指定すればOK

Source Tree

秘密鍵と公開鍵を生成

「メニュー」→「ツール」→「SSHエージェントを起動」
PuTTYを立ち上げる。TortaiseGitと同じ要領でKeyを作成。

秘密鍵の登録

「メニュー」→「ツール」→「Launch SSH Agent」→「Pagentを起動」

Add Keyボタンで作成した秘密鍵を登録してパスワードを入力

Pagentは、pullやpushの際に毎回、パスワードを聞かれなくしてくれるツールです。

Git Clone設定

元のパス:リモート先のリポジトリURL
保存先パス:ローカルリポジトリのパス

以上です。

Javaシステム開発、新しい現場で押さえておきたい情報

サービス、アプリ

広告系、ECサイトandroidアプリなど
サービスによって、求められる技術が変わってくる。

社風

残業推奨か、残業制限か。
社員の顔色はどうか笑。顔色が悪い場合、サービスやシステムも思わしくない場合が多い。

業種にも寄るが、髪型・服装・喋り方などでもある程度わかる。

使用言語

Java, JavaScript(JQuery), Perlなど。RubyC++などサブで使っているかなども押さえておきたい。
どのくらいの割合で使うのか。

Junit単体テスト書いているか。書いているところは、企業体力ある気がする。
テストに工数さけるってことだから。

使用フレームワーク

フロント、サーバー、DBアクセスなどフレームワーク
独自フレームワークでないことを願いたい。

ソース管理

CVS(もうないか)、SVN、Git。 最近、ずっとSVNだったけど、Gitになったから復習しないとわかんね。

ビルド、デプロイ

Ant, Maven, gradle ビルドツール。大事だよね。gradleって便利なのかな。使ったことない。
Jenkins。Javaで他にCIツールってあるのかな。

ミドルウェア

Apche、Tomcat、Nginx。サーバー周り。
OraclePostgreSQL これはどれでもいいかな。DBMS毎のクセのあるSQLの書き方はいけない気がするし。

公開鍵暗号方式とは?

インターネットで安全に情報をやり取りするための暗号化の仕組みとして、
公開鍵暗号方式と、共通鍵暗号方式が上げられます。
違いは、暗号化や復号化する際に、「公開鍵」を使うか、「共通鍵」を使うかの違い。

公開鍵暗号方式

情報の暗号化と復号化に別々の鍵を使うのが特徴。
データの暗号化の際に、「公開鍵」を用い、復号化の際に、「秘密鍵」を用います。

公開鍵はその名の通り、公開されている鍵で、公開鍵を入手すれば、だれでも秘密鍵を持っている人に
安全に情報を贈ることができます。
逆に秘密鍵は、公開されず、厳重に保管することで保持している人だけが情報を見ることが
できるようになっています。

Apache Tomcatの基本を復習してみる

Java ServletをWebサーバー上で動作させるための「サーブレットコンテナ」の一つ。
作成したJava Servletの動作確認をするための簡易的なWebサーバーとしての機能も備えています。

本格的にWebサービスを作成する場合は、Apache(Webサーバーソフト)をサーバーにインストールして
サーバーを動作させます。

ディレクトリ構成

Tomcatで重要なディレクトリとファイルを記載します。

tomcat($CATALINA_HOME)
  ∟ bin ・・・Tomcatプログラム格納先
  ∟ conf ・・・各種設定ファイル格納先
    ∟ context.xml
    ∟ sever.xml
    ∟ tomcat-users.xml  
    ∟ web.xml
  ∟ lib ・・・必要なAPIを格納。DB接続など
  ∟ logs ・・・ログ格納先
  ∟ temp
  ∟ webapps ・・・作成アプリの格納先(デプロイ先)
    ∟ ROOT ・・・http://localhost:8080/でアクセスできる(ROOTの名前の通り、ルートでアクセス可)
      ∟ index.html
      ∟ WEB-INF ・・・WEB-INF以外は公開される。WEB-INF以下は、公開されない。設定ファイルなどを配置
        ∟ web.xml ・・・classes以下のクラスファイルへどのようなURLでアクセスさせるかを記載
        ∟ classes ・・・コンパイル済みファイルを格納
    ∟ docs・・・http://localhost:8080/docs/でアクセスできるアプリ
    ∟ examples
    ∟ host-manager
    ∟ manager
  ∟ work

設定ファイル

次にTomcatの設定ファイルの概要について確認していきます。

  ∟ conf ・・・各種設定ファイル格納先
    ∟ context.xml
    ∟ sever.xml
    ∟ tomcat-users.xml  
    ∟ web.xml

実際の設定ファイルの配置先は、conf¥Catalina¥localhost以下になります。 localhostはホスト毎のディレクトリ。

  ∟ conf ・・・各種設定ファイル格納先
    ∟ Catalina
      ∟ localhost
        ∟ ROOT.xml  ・・・ 静的ファイルを保持するプロジェクトの読み込み使ったりする
        ∟ sampleApp.xml ・・・実際に作成したアプリのcontext.xml

context.xml

コンテキストの登録を行うファイルです。
アプリの配置先とその呼び出し方を設定します。

<Context path="/hello"
docBase="c:/sampleApp/helloworld"/>

docBaseにアプリケーションのルートディレクトリを指定。
pathには、アプリケーションを呼び出すための文字列を指定します。

helloworld以下にindex.htmlが配置されている前提とすると。
呼び出す際は以下のようなURLとなります。

http://localhost:8080/hello/index.html

sever.xml

サーバー単位の設定ファイルです。
Webアプリケーションの登録、ロギング、アクセス方法などが指定してあります。

EnginタグのNameでCatalinaが指定してあったり、defaultHostでlocalhostが指定して
あったりします。Catalinaがサーブレットコンテナ。

昔は、Context pathの指定もこのファイルに存在していたが、現状は、context.xmlとなっている。

tomcat-users.xml

Webアプリケーションマネージャーを使う際にお世話になるファイル。
Webアプリケーションマネージャーは、ウェブ画面でサーバーの配備や起動、停止を行えるツールです。

ウェブ画面にログインするためのアカウントを設定したりします。

以下のアカウントを設定する場合、は以下のように設定します。
ユーザー名:admin
パスワード:pass

<tomcat-users>
<role rolename="manager"/>
<user username="admin" password="pass" roles="manager"/>

<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->
</tomcat-users>

web.xml

コンテキストの登録により、静的ファイル(.html)などは参照できますが、
Servletなどは、別途web.xmlに指定が必要です。

フレームワークを導入していると、独自の設定ファイルやアノテーションやクラス名からの推測で設定が不要だったりします。
フレームワークなしの場合の設定を押さえておくことで、Servletを用いていた際の基本設定を理解しておきます。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  version="2.4">

  <servlet>
    <servlet-name>helloworld</servlet-name>
    <servlet-class>HelloWorld</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>helloworld</servlet-name>
    <url-pattern>/helloworld</url-pattern>
  </servlet-mapping>
</web-app>

上記のようにサーブレットのクラス名とサーブレット名、サーブレット名と呼び出しURLに付与するパス名を 紐付けるように指定します。

以下のように呼び出します。

http://localhost:8080/hello/helloworld

IE11 社内サイト向けのCookieをOFFにする方法

IECookieをOFFにするには、インターネットオプション ⇒ プライバシータブ インタネット ゾーンの設定で バーを一番上に移動し、「すべてのCookieをブロック」を選択する。

もし、社内サイトへのCookieブロックを行いたい場合は、 ローカル イントラネットゾーン判別設定をOFFにして、インタネット ゾーンの設定の設定(CookieをOFF)を有効する必要があります。

ゾーン(セキュリティーゾーン)とは?

Webサイトが「ネットワーク上どの位置にあるか」を判定していずれかの"ゾーン"を割り当て、割り当てられたゾーンに 基づいてセキュリティー管理を行う、IE独自の機能です。

  • インターネットゾーン 通常のインターネット上のサイト。セキュリティー厳しめ
  • ローカルイントラネットゾーン 社内、内部ネットワーク。信頼できる管理者に管理されているため、セキュリティー緩め

他にも信頼済みゾーン、制限付きサイトゾーンなどがある。

ローカル イントラネットゾーン

ローカル イントラネットゾーンに追加されているサイトは問答無用でローカル イントラネットゾーンと判定。

どのゾーンにも追加されていないサイトは、設定よって自動判別がなされる。

以下の設定をON,OFFすることでローカル イントラネットゾーンと見なすかのルールを設定する。

  • ほかのゾーンにないローカル (イントラネット) のサイトをすべて含める
  • プロキシ サーバーを使用しないサイトをすべて含める
  • すべてのネットワーク パス (UNC) を含める

上記のチェックをすべて外すと、インターネットゾーンと判別されるようになる。

関連用語

UNCパス

Universal Naming Conventionの略称。 コンピュータネットワーク上のフォルダやファイルへアクセスするための構文

構文
\\<computer name>\<shared directory>\

例
\\pondermatic\public\studyarea.gdb
\\omnipotent\shared_stuff\wednesday\tools

HerokuにJavaアプリをデプロイする

昔、RubyでHerokuにアプリを上げたりしてましたが、
Javaアプリをデプロイするやり方がわからなかったので、作業メモとして、残します。

Herokuのアカウント作成していない方は、作成して下さい。
クレジットカード番号は、不要で、メールアドレスのみ登録ができるようです。

Heroku用開発ツールの設定

「Heroku Toolbelt」というコマンドラインツール(CLI)をダウンロード、インストールします。
このツールにより、herokuへのログインやデプロイを行うコマンドのインストールを行います。

以下のURLを参考。
DL&Install

設定できたら、ログインする。

$ heroku login
Enter your Heroku credentials.
Email: xxxx@xxxxxx.xxx
Password:xxxxxx
Logged in as xxxx@xxxxxx.xxx

Herokuへアプリ作成

アプリのルートディレクトリで、以下のコマンドを実行。
アプリ名を省略するとherokuでランダムな名称のアプリを作成してくれます。

$ heroku create [アプリ名]

これにより、Heroku上にgitリポジトリを作成し、そのリポジトリにローカルgitリポジトリが紐付けられる。
ローカルgitのremoteへHeroku上のgitリポジトリが設定される。
デフォルトのpush先が指定されるわけですね。

アプリのデプロイ

もし、すでにデプロイ済みでデプロイ先を変更したい場合は、以下が参考になるかもしれません。
Heroku 接続先URLを変更する

以下のコマンドで、デプロイします。herokuに対して、masterブランチをpushします。 mavenタスクがダダダッと走ります。エラーなく、完了すれば、デプロイ完了です。

$ git push heroku master

・
・
・
remote:        https://new-app123.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/new-app123.git
 * [new branch]      master -> master

以下でデプロイアプリを確認できます。お疲れ様でした。

$ heroku open

もし、エラーが出る場合は、ログを確認してみると良いです。

$ heroku logs

【参考】DB設定

アプリ内でposgreSQLを使用する設定をpom.xmlに書いておくと、Herokuに勝ってにDBが作成されます。

pom.xml内のposgreSQLの設定

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
</dependency>

flywayなどのマイグレーションを設定しておくとアプリデプロイ時にDB作成までやってくれますが flywayが未設定の場合は、テーブル作成やマスタデータ登録などが必要です。

ローカルにpsqlがインストールされていると以下のコマンドでheroku上のアプリのDBに接続できます。
この状態でSQLコマンドでテーブル作成をすると良いです。

$ heroku pg:plsql

・
・
--> Connecting to postgresql-xxx-11111
psql (9.5.0, server 9.6.1)
WARNING: psql major version 9.5, server major version 9.6.
         Some psql features might not work.
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

new-app123::DATABASE=>