アーカイブ

Archive for 2014年12月

dotTrace 6.0, dotMemory 4.2のリモートエージェント

以前dotMemory4.0のリモートプロファイリングについて記事を書きましたが、dotTrace 6.0やdotMemory 4.2ではRemoteAgentの場所が変わっているので探してしまいました。

dotTrace5.*やdotMemory 4.0, 4.1の場合、各プログラムのインストーロフォルダーにRemoteAgentフォルダーがあるのでそれを利用します。例えば下記の場所に有るはずです。

  • dotTrace 5.5: %ProgramFiles(x86)%\JetBrains\dotTrace\v5.5\Bin\Remote
  • dotMemory 4.1: %ProgramFiles(x86)%\JetBrains\dotMemory\v4.1\Bin\Remote
    dotTrace 6.0やdotMemory4.2では、インストーラーが一新された影響で、プログラムの一式が%ProgramFiles(x86)%ではなく、%LOCALAPPDATA%にインストールされるようになったためこんなパスにZIPファイルとして配置されているはずです。
  • dotTrace 6.0:%LOCALAPPDATA%\JetBrains\Installations\dotTrace01\RemoteAgent.zip
  • dotMemory 4.2:%LOCALAPPDATA%\JetBrains\Installations\dotMemory01\RemoteAgent.zip

dotTraceやdotMemoryのコンソールからリモートエージェントに接続する方法はこれまでと変わりありません。dotTraceの場合、上記のZIPファイルへのショートカットのリンクがあるので、ここからもリモートエージェントのフォルダーを参照することができます。

image

プロファイル対象のプログラムを指定するUIと、プロファイリング中のスナップショットを取得したり破棄したりするUIがガラッと変わっていますね。

image image

広告

VB14で新しく増える構文で個人的に気に入っている構文ベスト3

VB TeamブログでVB14で採用される新しい構文について解説のエントリーが上がっています。
New Language Features in Visual Basic 14 (non-animated)

全体的に今までむず痒かった部分に手が入った感じですね。個人的にベスト3上げるとこの辺りが特に嬉しい!!

1位. 文字列の拡張書式構文

String.Formatの糖衣構文ですね。今までのString.Formatよりも可読性が上がって良い感じです。

まだPreviewには入っていないようです。(なんて訳せばいいんだろう。。。)

2位. 行継続中のコメント

これもなにげに嬉しい。VB10で行継続が明らかな場合は行継続子(_)が不要になりましたが、行継続中のコメントは相変わらず受け入れてくれなかったんですよね。

3位 ?.オペレーター

?.オペレーターは今までのVBから見るとちょっと驚く構文ですよね。記号っぽい構文はできるだけ採用してこなかったVBなのでびっくりしましたが、シンプルに書けるのは良い感じです。

まだ確認していないんだけれどこれらは糖衣構文なので、Visual Studio 14を使えばターゲーットフレームワークをVB14より低くしても問題ない機能ってことでいいのかな?

Oracle Database 12cではパッケージ仕様部で定義したコレクション型をパッケージ実装部のSQLで利用することができるみたい。

これまでPL/SQLの内部でSQLを発行するときにIN句に引数の値を利用するには、グローバルな型としてTYPE宣言した方の変数を引数としてもらい、表関数(TABLE)を使ってコレクションのネストを解除して問い合わせを行う必要がありました。

12cでもネストの解除を行う必要が有りますが、パッケージ仕様部で定義したコレクション型をSQLで利用できるようになったようです。

Oracleのマニュアルでは、新機能ガイドでこそっと紹介されています。

Oracle Database 12c 新機能ガイド
2.1.4.12 PL/SQLからSQLへのインタフェースで使用できるPL/SQL固有のデータ型

データ型がPL/SQLで宣言されたコレクションに対するPL/SQLプログラムで表演算子を使用できるようになりました。このとき、データ型としてPL/SQL結合配列を使用することもできます。(以前のリリースでは、コレクションのデータ型をスキーマ・レベルで宣言する必要がありました。)

詳しくはOracle® Database PL/SQL言語リファレンスを参照してくださいということですので、該当の記述があるOracle Database 12cリリース1(12.1)の変更点PL/SQLとSQL間のインタフェースを越えられるPL/SQL専用データ型の追加を参照してください。

例えばこんなパッケージ定義が有るとします。Test2.Sample1は引数にもらったコレクションを元にtestTableテーブルのId列をIn句で検索してヒットした件数を返します。

create or replace package Test2
as

type SampleArrayType is table of char(5);

function Sample1(arr SampleArrayType) return number;

end test2;

create or replace package body Test2
as

function Sample1(arr SampleArrayType) return number
is
   rowCount number(3);
begin
   select count(*) into rowCount
     from testTable
    where id in (select column_value from TABLE(arr));

   return rowCount ;
end Sample1;

end test2;

このSQLを次のような無名ブロックで実行します。

DECLARE
  ARR TEST2.SAMPLEARRAYTYPE := TEST2.SAMPLEARRAYTYPE(‘123’, ‘456’);
  v_Return NUMBER;
BEGIN
  v_Return := TEST2.SAMPLE1(
    ARR => ARR
  );
  DBMS_OUTPUT.PUT_LINE(‘v_Return = ‘ || v_Return);
END;

上記の無名ブロックは12cで実行すると期待通り実行できますが、11gでは下記のようなエラーメッセージが表示され実行できません。12c以前でIn句にコレクションを利用したい場合は、パッケージ仕様部ではなくスキーマのオブジェクトとして配列をTYPE宣言して上げれば同じ結果が得られます。

Error
[row:28,col:1] ORA-21700: オブジェクトが存在しないか、削除マークが設定されています。
ORA-06512: "XXXXX.TEST2", 行9
ORA-06512: 行5

なにげに嬉しいです。

カテゴリー:Oracle タグ: ,