「SE業務」カテゴリーアーカイブ

AIX上でシェルで文字列結合すると、文字列が上書きされてしまった

AIXでシェルで単に文字列結合して、標準出力したら、結合されずに上書きされてしまった。

やったこと↓

ファイルから読み取った文字列str1(12345)に、文字列ABCDを結合するので、結果は当然「12345ABCD」となるはず。。。

しかし、実際に動かしてみると、「ABCD5」となり、文字列が結合されず、str1に対して、str2が上書きされる結果となった。

最初はさっぱりわからなかったが、結局はstr1の末尾にCR(キャリッジリターン)が含まれていたからであった。

str1を読み取るファイルの改行コードがCRLFなっていたが、AIXの改行コードはLFのため、文字列を読み取った際に「12345」ではなく「12345<CR>」となっていたのである。CR(キャリッジリターン)はつまり、”カーソルを先頭に戻して”を意味するため、後続の文字列str2(ABCD)は一旦カーソルを先頭に戻した上で、結合されていたのであった。。。

わかってしまえば、大したことではないが一瞬何が起きてるのかさっぱりだった。改行コードはとても大事。


Oracleで実行されたDDLをログ出力する(ENABLE_DDL_LOGGING)

Oracleで実行されたDDLをログ出力する方法です。

ENABLE_DDL_LOGGINGという設定をTRUEにすることで、実行されたDDLをOracleのログに出力することができます。

まずは、現在の設定の確認。

FALSEになっているので、TRUEに変更します。

再度、設定を確認する。

TRUEになっています。この状態でなんでもいいので、DDL文を実行します。

記録されるのは、以下のDDL文。

  • ALTER/CREATE/DROP/TRUNCATE CLUSTER
  • ALTER/CREATE/DROP FUNCTION
  • ALTER/CREATE/DROP INDEX
  • ALTER/CREATE/DROP OUTLINE
  • ALTER/CREATE/DROP PACKAGE
  • ALTER/CREATE/DROP PACKAGE BODY
  • ALTER/CREATE/DROP PROCEDURE
  • ALTER/CREATE/DROP PROFILE
  • ALTER/CREATE/DROP SEQUENCE
  • CREATE/DROP SYNONYM
  • ALTER/CREATE/DROP/RENAME/TRUNCATE TABLE
  • ALTER/CREATE/DROP TRIGGER
  • ALTER/CREATE/DROP TYPE
  • ALTER/CREATE/DROP TYPE BODY
  • DROP USER
  • ALTER/CREATE/DROP VIEW

ログは以下のパスに出力されます。↓

例えば、ddl_orcl.logにはこんな感じでDDLがログ出力される。

余談だが、この機能を使った理由。。。。とある製品がDBを内包しており、製品のバージョンアップに伴い、テーブル定義を変更する処理を実行していた。バージョンアップの過程でどう変更しているのか、気になって仕込みました。


Eclipse EGit でGitHubにSSH接続する

これまでSVN一筋の開発現場で働いてきたが、ついにGitを覚えなくてはならなくなってしまった(やっとかよ。。。)

GitHub EnterpriseとEclipseでJavaの開発をすることになったが、作業現場の都合上、HTTPS接続ができないため、SSH接続でcloneした。その時の手順メモ。

GitHubのアカウントはあらかじめ作成しておきましょう。
https://github.com/

Step1. EclipseにSSHの設定を行う

Eclipseのウィンドウメニュー > 設定を開きます。
一般 > ネットワーク接続 > SSH2を開く。

以下のような画面が表示されるので、「RSA鍵の生成」を押下します。表示された「ssh-ras・・・・」という文字列は公開鍵です。後で利用します。

 

「秘密鍵の保存」を押下します。以下のようなダイアログが表示されます。秘密鍵と公開鍵の保存先が表示されています。

次に「キー交換方法」のタブを表示して、下図赤枠のチェックを外して、保存します。(GitHub側がこのキー交換方法をサポートしなくなったらしい)

Step2. GitHubに公開鍵を登録する

Githubにログインします。(https://github.com/

アイコンからSettingsを選択する。

Personal settings > SSH and GPG keysの画面で下図赤枠の「New SSH key」を選択する。

Keyのところに「ssh-ras・・」で始まる公開鍵の文字列を貼り付けて、「Add SSH key」を押下する。(Titleは特に何も入れなくてよい)

GitHubのパスワードを問われるので、入力します。

Step3. Eclipse EGitでリポジトリをcloneする

例として、jqueryのリポジトリをクローンします。こちらのURLにアクセスします。
https://github.com/jquery/jquery

緑色の「Clone or download」を押下すると、CloneするためのURLが表示されます。今回は、SSHで接続するので、「Use SSH」を選択します。

下図のようにSSH用のURLが表示されるので、コピーします。

Eclipseに戻って、パースペクティブをGitに切り替えます。

赤枠の「Gitリポジトリーのクローン」を選択します。

GitHubでコピーしたURLをURIの箇所に貼り付けます。すると、ホストとリポジトリー・パスは自動で反映されます。プロトコルは「ssh」。ユーザは「git」を入力します。パスワードを未入力のままでOKです。

ブランチの一覧が表示されるので、cloneしたいブランチにチェックを入れて、次へを押下。

完了を押下して、完了!!!

jqueryは結構大きいので、cloneするのも結構時間かかります。

終わると↓こんな感じ!

…((((*・o・)ノ Go Go♪.