2012年3月30日金曜日


JDBC アプリケーションのパフォーマンス チューニング

以下の節では、JDBC アプリケーションから最高のパフォーマンスを引き出す方法について説明します。

 


WebLogic のパフォーマンス向上機能

WebLogic には、JDBC アプリケーションのパフォーマンスを向上させるための機能がいくつか用意されています。

プールされた接続の使用によるパフォーマンスの向上

DBMS への JDBC 接続の確立には非常に時間がかかる場合があります。JDBC アプリケーションでデータベース接続のオープンとクローズを繰り返す必要がある場合、これは重大なパフォーマンスの問題となります。WebLogic データ ソース内の接続プールを使用すると、こうした問題を効果的に解決できます。

WebLogic Server を起動すると、データ ソース内の接続が開き、すべてのクライアントで使用できるようになります。クライアントでデータ ソースからの接続をクローズすると、その接続はプールに戻され、他のクライアントで使用できる状態になります。つまり、接続そのものはクローズされません。プールされた接続は、ほとんど負荷を生じることなくオープンしたりクローズしたりできます。

ステートメントとデータのキャッシング

DBMS のアクセスではリソースが大量に消費されます。プログラムで Prepared Statement または Callable Statement を再利用する場合、または複数のアプリケーションでの共有や、各接続どうしでの存続が可能な頻繁に使用するデータにアクセスする場合は、以下を使用してデータをキャッシュできます。

 


ベスト パフォーマンスのためのアプリケーション設計

データベース アプリケーションのパフォーマンスの良し悪しはほとんどの場合、アプリケーション言語ではなく、アプリケーションがどのように設計されているかによって決定されます。クライアントの数と場所、DBMS テーブルおよびインデックスのサイズと構造、およびクエリの数とタイプは、すべてアプリケーションのパフォーマンスに影響を与えます。

以下では、すべての DBMS に当てはまる一般的なヒントを示します。また、アプリケーションで使用する特定の DBMS のドキュメントによく目を通しておくことも重要です。

2012年3月28日水曜日


このシリーズの第1回では、どんな場合にXMLのデータ・バインディングを使用するかについて説明し、そしてデータ・バインディングのために利用できるいくつかのJavaフレームワークの概要を示しました。第2回では、サンプル文書を使用することにより、そのうちのいくつかのフレームワークのパフォーマンスを調べました。この第3回では、優れたテスト・スコアを示す新しいJiBXフレームワークについて詳しく説明します。まず、第2回で紹介したJiBXの基本的な点を改めて説明することにします。

JiBXは、もともとJavaテクノロジーにおけるXMLデータ・バインディングのパフォーマンスの限界を試すという私の実験から生まれたものです。それが実験の段階を超えたものになったため、私がJava中心 方式と呼ぶものの実験台として、それを利用することにしました。Java中心方式は、XMLの文法からオブジェクト・モデルを生成するために使用されるXML中心 方式とは逆のアプローチです。そのため、JiBXは、既に確立されているデータ・バインディング用フレームワークとはいくつかの点で意図的に異なるものになっています。

それらの相違点の中心になるのは、文書のアンマーシャリング時に使用される構文解析の技術です。既存のフレームワークは、いずれも広く使用されているSAX2のプッシュ型パーサーAPIに基づいています。JiBXは、新しいプル型パーサーAPIを使用しています。それにより、文書中の要素の列を処理するためのさらに自然なインターフェースが提供されます。このように、使用するAPIが違っているため、JiBXでは、アンマーシャリングを処理するコードとして比較的シンプルなものを使用することが可能です。

アンマーシャリングのためのコードがシンプルであることが、JiBXと他のフレームワークとの間の主な相違点の2番目です。つまり、他のフレームワークの場合には、独自のデータ・クラスを生成するか (アプリケーションではそれらのクラスを使用することが必要になる)、あるいはJava仮想マシン (JVM) にとって既知のクラス情報を使用してデータへの間接ランタイム・アクセスを提供するリフレクションと呼ばれるテクニックを使用するか、のいずれかになります。JiBXでは、既存のクラスに追加されるコードを使用します。それは、Javaコンパイラーの生成するバイナリー・クラス・ファイルと直接連動することになります。これにより、高速なデータの直接アクセスが実現され、しかもプログラマーが制御可能なクラスで動作するという柔軟性が保たれます。

JiBXの相違点の3番目は、このように既存のクラスを使用するということと関係があります。JiBXはバインディング定義ファイルを読んで、クラスに追加されるコードによるインスタンスとXMLとの間の変換方法を制御します。このような方式を採用しているデータ・バインディング・フレームワークはJiBXだけではなく、たとえばCastorもこの方式を使用していますが、JiBXは独自クラスとXML文書の間の関係を変更できるという点で他のフレームワークよりも大きく前進しています。

この記事の残りの部分では、上記の3点について詳しく説明します。実際のプロジェクトで別のフレームワークを使用するとしても、JiBXについてのこの説明を読めば、有益なヒントを得られることでしょう。

データ・バインディングの用語

以下は、この記事で使っている用語のミニ辞典です。

マーシャリングとは、メモリー内のオブジェクトのXML表現を生成する処理のことです。それには、元のオブジェクトからリンクされているオブジェクトも含まれることがあります。

アンマーシャリングとは、マーシャリングの逆の処理であり、XML表現からメモリー内にオブジェクトを (場合によってはリンク先オブジェクトのグラフ構造も) 生成します。

マッピングとは、オブジェクトとXML文書との間のマーシャリング/アンマーシャリングに使用する一連の規則です。文法に基づくコード生成を使用するデータ・バインディング方式では、生成されるオブジェクトに暗黙のマッピングが組み込まれていますが、JiBX (および他のいくつかのフレームワーク) では、明示的なバインディング定義を使用してマッピングを制御します。

文法とは、XML文書群の構造を定義した規則集です。XML仕様で定められている文書型定義 (DTD) 形式は、そのような文法の一種です。さらに、W3CのXML Schema形式 (以降「Schema)」も、文法として徐々に定着しつつあります。

プル方式によるパフォーマンス向上

JiBXと他のデータ・バインディング・フレームワークとの最も大きな違いは、入力XML文書の処理方法です。Java言語のためのXMLパーサーのほとんどには、アプリケーション・プログラムで使用するためのSAX2 APIが実装されています。このAPIは年月をかけて磨き上げられてきたものであり、数多くのパーサーの実装においてサポートされています。その中には、現在利用可能なもののうち最も機能豊富なものも含まれています。

SAX2 APIは広く使用されてはいますが、多くのXML処理に関していくつかの大きな欠点があります。それらは、SAX2に実装されているインターフェースのスタイル、つまりプッシュ構文解析方式によるものです。プッシュ構文解析では、パーサーAPIによって定義されるインターフェースを実装するメソッドをコード内に定義します。そして解析対象の文書と共に、それらのメソッドを (ハンドラーの形で) パーサーに渡します。パーサーは文書のテキストを読んでいき、XMLの規則に従ってそれを解釈し、文書のコンポーネント (要素や文字データ内容など) が出現したなら、ハンドラー・メソッドを呼び出すことによって報告します。パーサーが入力文書の処理を終了すると、アプリケーションに制御が戻りますが、その時点でもパーサーは制御を得たままです。

2012年3月26日月曜日


省略可能オペレーション (および UnsupportedOperationException 例外) を排除できるように、コアコレクションで不変性を直接サポートしてはどうでしょうか。

これは、API 全体でもっとも議論の余地のある設計上の決定事項です。静的な (コンパイル時の) 型チェックが望ましいのは明らかで、Java の標準でもあります。静的な (コンパイル時の) 型チェックが望ましいのは明らかで、Java の標準でもあります。可能ならばサポートしたかったのですが、これをサポートするとインタフェース階層のサイズが非常に大きくなり、実行時の例外の必要性を (かなり減らすことはできても) なくすことができません。

2012年3月24日土曜日


概要 : アプリケーションに SharePoint のワークフローに対するサポートを追加する処理と、そのサポートを、独自のワークフローを構築するためにクライアントが使用できるコンポーネントに分解する処理について、そのオプション、プロセス、および利点を説明します。この記事は 2 部構成の第 2 部です (印刷ページ数 : 17)。

David Mann (Mann Software, LLC (英語))

2008 年 6 月

対象 : 2007 Microsoft Office system、Microsoft Office SharePoint Server 2007、Microsoft Office SharePoint Designer 2007、Microsoft Visual Studio 2008 開発システム、Visual Studio Tools for Office (3.0)

この記事に付随するコード サンプルを、「Sample Code: Delivering Modular Workflow Functionality in SharePoint Server 2007 (英語)」からダウンロードしてください。

第 1 部「SharePoint のモジュール化されたワークフロー機能の提供 (パート 1/2)」をお読みください。

目次

「SharePoint のモジュール化されたワークフロー機能の提供 (パート 1/2)」では、Visual Studio で有効に機能するアクティビティを作成しましたが、これは Microsoft Office SharePoint Designer 2007 では機能しませんでした。そのため、まだ最後の目標までたどり着いたとは言えません。幸い、SharePoint Designer 用のカスタム アクションを作成する作業は、簡単な構成プロセスです。いくつか XML を記述する必要はありますが、コードの記述は不要です。

最初の作業では、Windows SharePoint Services または Microsoft Office SharePoint Server 2007 においてアクティビティとそのアセンブリの読み込み方法が認識されるように、web.config ファイルにエントリを追加します。これは、カスタム Web パーツ用の SafeControls エントリを追加する作業と非常によく似ています。

メモ :
ここでは、作成する必要があるエントリについて説明してから、開発環境においてこのエントリを手動で作成する方法の手順を確認します。ただし、展開用にアクティビティまたはアクションをパッケージ化する前に、インストール ルーチンで適切なエントリをクライアントのサーバーに確実に追加する必要があります。「Additional Resources」では、プロセス全体をはるかに簡単に行うためのツールをいくつか紹介します。

web.config ファイルを開きます。ファイルの末尾付近に、 というセクションがあります。すぐその下には、 子タグを含む というセクションがあります。次の例のように、新しいアクション用として新しい タグを追加します。

  

PublicKeyToken の値を厳密な名前キーの値に置き換えるのを忘れないでください。そうしないと、このエントリは機能しません。

カスタム Web パーツの作成に慣れた開発者であれば、このエントリが SafeControls エントリとほとんど同じであることに気付きます。SafeControls エントリに馴染みがない方でも、次の部分の意味はすぐに理解できます。

  • Assembly: 4 つの部分で構成される、アセンブリの完全な名前。Reflector (英語) などのツールを使用して簡単に取得できます。
  • Namespace: アクティビティに固有の名前空間。このサンプル シナリオの場合、これは CaseTrak.Activities です。
  • TypeName: 通常、"すべての型" を表すアスタリスクが含まれますが、特定のクラスをリストすることもできます。
  • Authorized: True を指定してアクティビティを "安全" にします。一方、false を指定すると、web.config エントリが無駄になります。

これで SharePoint 製品とテクノロジにアクションの内容を伝えて、このアクションを実行する準備が整ったので、次にこれを SharePoint Designer に伝える必要があります。これも簡単で、短い XML をいくつか記述するだけです。パス C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1041\Workflow に移動すると、このフォルダ内に WSS.ACTIONS というファイルがあります。このファイルには、カスタム SharePoint Designer アクションについての情報が豊富に含まれています。このファイル内で、SharePoint Designer アクションを使用して行うことができる、すべての例を確認できます。

残念ながら、このファイルは単なる XML ではあるものの長さが 700 行を超えるので、アクションのビルドに際して知っておくべきことを確認するためにすべてのオプションに目を通すのは少し困難です。この記事では、カスタム アクションをビルドするための、より一般的なオプションについて説明します。すべてのオプション (スキーマ定義を含む) の詳細については、「Additional Resources」を参照してください。

WSS.Actions ファイルについて最初に知っておくべきことは、他の SharePoint の既定ファイルと同様、ファイルの内容の変更が認められていないという点です。その代わり、同じディレクトリに独自の ACTIONS ファイルを作成する必要があります。Windows SharePoint Services および SharePoint Server は、このファイルを読み取って、カスタム アクションを既定のアクションと共にメモリに読み込みます。このためには、単にファイルを同じディレクトリに作成して、それに意味のある名前を付け、拡張子を .ACTIONS にします。今回の例では、CaseTrak.ACTIONS というファイル名を使用します。

サンプル用として、単純に Visual Studio でテキスト ファイルをソリューションに追加し、それに対して XML を追加します。後ほど、パッケージ化と展開を説明する際にこのファイルを処理するので、適切な場所にコピーします。

次のコード例は、作成した CaseTrak.ACTIONS ファイルの全内容です。内容はほとんど一目瞭然ですが、表 1 でさらに詳細を説明します。

 xml version="1.0" encoding="utf-8"?> <WorkflowInfo Language="en-us"> <Actions  Sequential="then" Parallel="and">                  <RuleDesigner Sentence="Set CaseTrak Status for %1 to %2">             <FieldBind Field="CaseID" Text="this Case" DesignerType="string" Id="1"/>             <FieldBind Field="CTStatus" DesignerType="Operator"  OperatorTypeFrom="DropDownMenu" Id="2" >                 <Option Name="Open" Value="1"/>                 <Option Name="Closed" Value="2"/>                 <Option Name="Pending" Value="3"/>                 <Option Name="Deferred" Value="4"/>                 <Option Name="InProcess" Value="5"/>             FieldBind>           RuleDesigner>         <Parameters>         <Parameter Name="CaseID"   Type="System.String, mscorlib" Direction="In" />         <Parameter Name="CTStatus" Type="System.Int32, mscorlib" Direction="In" InitialValue="5" />"Parameters>     Action>   Actions> WorkflowInfo>  

表 1. CaseTrak.ACTIONS ファイルの要素

要素 メモ

Action

ファイル内の各アクションには、独自の Action 要素があり、ここでそのアクションの詳細を説明します。ClassName 属性と Assembly 属性はその名のとおりです。Category はわかりやすく、例に示されているように、独自の値を指定して独自のカテゴリを SharePoint Designer の [アクション] ダイアログ ボックス内に作成できます。最後の属性 AppliesTo は、アクションをどの種類のリストに対して使用できるかを決定します。指定可能な値は、listdoclib、または all です。

RuleDesigner

SharePoint Designer のワークフローは、実行するアクションを記述する文という概念に基づいています。たとえば、"ドキュメントの所有者に電子メールを送信する" のような文として表されます。このため、実装可能な他の構成よりもユーザーにわかりやすくなっています。SharePoint Designer では、今回作成したアクティビティの文は "Set CaseTrak Status for case to " と表現されます。この はパラメータ (ここでは %1 と %2) に該当し、ワークフロー ビルダによって実際の値に置き換えられます。

FieldBind

2012年3月22日木曜日


広告

クラスは何かを行うための設計図です。そこで具体的に何をさせたいのかをクラスの中に記述していく必要があります。その処理を記述するのがメソッドとなります。

メソッドは『メソッド』で見たとおり実行する一連の処理をまとめたものです。ただし通常のメソッドがプログラム中からいつでも呼び出せるのに対してクラス内に記述されたメソッドはクラスから作成されたオブジェクトしか呼び出すことが出来ません。このようなメソッドをインスタンスメソッドと呼びます。

 class クラス名    def メソッド名(引数1, 引数2, ...)     処理   end  end 

例えばクラス名について表示するだけの簡単なインスタンスメソッドは次のようになります。

2012年3月18日日曜日

Excel VBA FAQ 2

[] [1] [2] [3] [H] [gu]


IuWFNg

IuWFNgH

    IuWFNguijvB[NV[gR}h{^IuWFNgB

    IuWFNgf[^R}hBR}hVBAu\bhvuvpeBvBvOIuWFNgAuXXXXIuWFNgXXXX\bhsvuXXXXIuWFNgXXXXvpeBlvB

    ASheet1[NV[gIAuSheet1IuWFNgSelect\bhsvBSheet1OXAuSheet1IuWFNgNamevpeBlvB


\bhvpeBH


NXCX^XH

    NXIuWFNgB[NV[gNXR}h{^NXNXB

    CX^XIuWFNguvBIuWFNgCX^XIuWFNgNX`iv}jB

    AExcel[NV[gNX`ASheet1CX^XB


IuWFNgQH

    IuWFNgCX^XIBvOAIuWFNgQgIuWFNgCX^XwBAIIAvOAu12IuWFNgvB

    AIuWFNgQAA\bhvpeBgBAA1:C3ZIuWFNgQ Range("A1:C3") BRangevpeBiExcel5.0/95Range\bhjIuWFNgApplicationIuWFNgvpeBAANeBuV[gAwRangeIuWFNgQB

    IuWFNgQAgAi[AIuWFNgQvpeB\bhgpBIuWFNgQi[SetXe[gggB
    AANeBuV[gA1:C3RangeIuWFNgQobji[ASet obj = Range("A1:C3") BARange("A1:C3").Clear Aobj.ClearB


RNVH

    IuWFNgCX^XWB
    AubN[NV[gWu[NV[gRNVvuWorksheetsRNVIuWFNgvBRNVIuWFNgBRNVOIuWFNgO`B

    RNVIuWFNgQgBAANeBuubNSheet1[NV[gIuWFNgQAuANeBuubN[NV[gRNVASheet1OV[gvwB

    R[h ActiveWorkbook.Worksheets.Item("Sheet1") B
    uActiveWorkbook.WorksheetsvuANeBuubN[NV[gRNVvIuWFNgQBu.Item("Sheet1")vuRNVASheet1OV[gvIuWFNgQB

    ItemvpeBiExcel5.0/95Item\bhjAWorksheetsRNVIuWFNgvpeBAAActiveWorkbook.Worksheets("Sheet1") B

2012年3月13日火曜日

</head><body id="readabilityBody" >back<p>(2005/2/24)</p><p>3</p><p>C</p><p>(JavaC#VB.NETC++)</p><p>(PerlPythonPHPRuby)</p><p>PowerShellMATLAB</p><p>1<br/>1</p><p>2C3</p><p>C++C++C++<br/>Haskell</p><p>CC</p><p>C<br/>CC<br/>C(JavaC++C#)C</p><p>Visual StudioC#<br/>WindowsC</p><p>JavaC++C# JavaC++C#1Java( )C#</p><p>()Unix/LinuxPerlWindowsPowerShell</p><p>](<br/>PerlPHPJavaScript</p><p>PythonRubyPerlPHP(Ruby)</p>

2012年3月11日日曜日

IPsec讖溯ョ莉墓ァ

IPsec讖溯ョ莉墓ァ

讎りヲ

RT繧キ繝ェ繝シ繧コ縺ョIPsec讖溯ッ、 IPsec繧偵▽縺九▲縺欸PN繧呈ァ狗ッ峨☆繧九→縺阪↓蠢隕√↑讖溯呈署萓帙@縺セ縺。 蝓コ譛ャ逧縺ェ蜍穂ス懊C2401〜RFC2409、RFC2451縺ォ縺励◆縺後>、縺薙l縺ォ蜉縺医※、 蜍慕噪縺ェIP繧「繝峨Ξ繧ケ縺ョ螟牙喧縺ォ蟇セ蠢懊☆繧「繝繧、繧「繝ォ繧「繝VPN」、 VPN縺ョ髫懷ョウ繧呈、懷コ縺励※繝舌ャ繧ッ繧「繝蝗樒キ壹∈謗・邯壹☆繧「繝医Φ繝阪Ν繝舌ャ繧ッ繧「繝」 縺ェ縺ゥ縺ョ讖溯呈戟縺」縺ヲ縺縺セ縺。 荳サ縺ェ讖溯ッ莉・荳九ィ縺翫j縺ァ縺。

※ 蜷後§讖溯ァ繧、繝輔ぃ繝シ繝繧ヲ繧ァ繧「縺ォ繧医▲縺ヲ、邏ー縺九↑驕輔>縺後≠繧句エ蜷医′縺ゅj縺セ縺。 繝輔ぃ繝シ繝繧ヲ繧ァ繧「縺ョ邏ー縺九>諠蝣ア縺ッ、繝ェ繝ェ繝シ繧ケ繝弱医r遒コ隱阪@縺ヲ縺上□縺輔>。


IPsec縺ァ縺ッ、證怜捷蛹悶&繧後◆IP繝代こ繝縺後う繝ウ繧ソ繝シ繝阪ャ繝医r邨檎罰縺励※騾∝女菫。縺輔l縺セ縺吶′、 縺薙医≧縺ォ證怜捷縺ォ繧医▲縺ヲ螳溽樟縺輔l繧句ョ牙ィ縺ェ騾壻ソ。邨瑚キッ繧偵ヨ繝ウ繝阪Ν縺ィ繧医セ縺。 迴セ螳溘医Φ繝阪Ν縺檎。ャ縺繧ウ繝ウ繧ッ繝ェ繝シ繝医〒隕繧上l繧九h縺縺ォ、 VPN縺ョ繝医Φ繝阪Ν繧ょシキ蝗コ縺ェ證怜捷縺ォ繧医▲縺ヲ螳医i繧後※縺繧九ァ、 繝医Φ繝阪Ν縺ッ莉ョ諠ウ逧縺ェ蟆ら畑蝗樒キ壹→縺ソ縺ェ縺吶%縺ィ縺後〒縺阪∪縺。

RT繧キ繝ェ繝シ繧コ縺ァ縺ッ、繝医Φ繝阪Ν繧「莉ョ諠ウ逧縺ェ蟆ら畑蝗樒キ」縺ィ縺ソ縺ェ縺、 縺薙樒キ壹↓逶ク蠖薙☆繧九う繝ウ繧ソ繝輔ぉ繝シ繧ケ繧繝医Φ繝阪Ν繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ 縺ィ繧医s縺ァ縺縺セ縺。RT繧キ繝ェ繝シ繧コ縺ォ縺ッ、 LAN繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ繧ПP繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ縺ィ縺縺繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ縺後≠繧翫∪縺吶′、 繝医Φ繝阪Ν繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ繧、縺薙l繧峨→蜷梧ァ倥↓謇ア縺縺薙→縺後〒縺阪∪縺。 縺溘→縺医12289;繝医Φ繝阪Ν繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ縺ァ谺。縺ョ縺薙→縺悟ョ溽樟縺ァ縺阪∪縺。

  • IP繝代こ繝縺ョ繝輔ぅ繝ォ繧ソ繝ェ繝ウ繧ー (髱咏噪繝輔ぅ繝ォ繧ソ縺ィ蜍慕噪繝輔ぅ繝ォ繧ソ)
  • 繝医Φ繝阪Ν繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ縺ォ蟇セ縺吶k髱咏噪・蜍慕噪邨瑚キッ蛻カ蠕。 (※1)
  • NAT繝繧」繧ケ繧ッ繝ェ繝励ち縺ォ繧医kIP繝代こ繝縺ョ繧「繝峨Ξ繧ケ螟画鋤

※1. 縺溘□縺、繝医Φ繝阪Ν繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ縺ァRIP繧偵▽縺九≧縺薙→縺ッ縺ァ縺阪∪縺帙s。 縺昴悶ォ繝シ繝繧」繝ウ繧ー繝励Ο繝医さ繝ォ(OSPF繧ВGP)縺ッ蜍穂ス懊@縺セ縺。

繝医Φ繝阪Ν繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ縺ョ譛螟ァ謨ー縺ッ讖溽ィョ縺ォ繧医▲縺ヲ谺。縺ョ繧医≧縺ォ 豎コ繧√i繧後※縺縺セ縺。繝、繝槭ワ繝ォ繝シ繧ソ縺ァ縺ッ、蜷梧凾縺ォ險ュ螳壹〒縺阪k譛螟ァ謨ー縺ィ、 蜷梧凾縺ォ蜍穂ス懊☆繧区怙螟ァ謨ー縺ッ蜷後§縺ァ縺。


繧イ繝シ繝繧オ繝シ繝舌剃ス懈舌☆繧区婿豕
RTX30001000
RTX2000500
RTX1500100
RTX1200100
RTX110030
RTX100030
RTX8106
RT300i + VPN繧「繧ッ繧サ繝ゥ繝ャ繝シ繧ソ500
RT300i100
RT200i20
RT140繧キ繝ェ繝シ繧コ20
RT107e6
RT105e30
RT105i、RT105p20
RT103i10
RT100i/RT102i10
SRT10010

縺薙峨く繝・繝。繝ウ繝医磯ュ縺ク


IKE縺ッ、Rev.3.00.09莉・髯阪吶∋縺ヲ縺ョ繝輔ぃ繝シ繝繧ヲ繧ァ繧「縺ァ繧オ繝昴医@縺ヲ縺縺セ縺。 蟇セ蠢懊☆繧騎FC縺ッ莉・荳九ィ縺翫j縺ァ縺。

Oracleのメッセージキューイング機能をJavaで使ってみる

みなさんは、「メッセージキューイング」というジャンルのソフトウェアをご存知でしょうか。IBMのMQシリーズなどがその代表格ですよね。システム間でデータを非同期にやり取りする際に、「キュー」という概念を導入し、送受信が確実に行われることを保証する、案件によっては非常に有用な機能です。

私にとっては非常に悔しいことに、メッセージキューイングを実現するためのソフトウェアって、どれも非常に高価なんですよね。もちろんコストに見合った機能を持っているからなのですが、それでも予算の絶対額が限られているプロジェクトではなかなか手が出せません。ですが! なんと有り難いことにOracleにはこのメッセージキューイング機能が、「アドバンストキュー」という名前で用意されています(Oracle8以降)。

それでは、Oracleのテーブルなどを利用してデータの送受信を行なう方法と、アドバンストキューイングを使う方法との違いは何なのでしょうか(通常のメッセージキューイングソフトを使える人はそちらを使うでしょうからあえて比較しません^^)。

メリットとしては、

  • コーディングの量が減少する
  • キューの基本的な機能を実装しているため、他のミドルウェアへの以降も行ないやすい

といったものがあるでしょうし、デメリットとしては、

  • 実績が少ない。実際、使っている事例を聞くことはほとんど無い。

というのが最大のものでしょう。ともあれ、使ってみることはそれほど難しくないので、まずは試してみるというのも悪い選択ではないと思います。

2012年3月8日木曜日

231位じゃだめですか? Amazonクラウドが1兆FLOPSを超えるスーパーコンピュータ並の「クラスターGPUインスタンス」を提供。1時間たったの172円 - Publickey

2010年11月16日

個人でもスーパーコンピュータの性能でトップ500に入るマシンを借りることができる時代になりました。しかも1時間あたりわずか172円。

Amazonクラウドは、ハイパフォーマンスコンピューティング(超高速計算)のために提供してきた「クラスターコンピュートインスタンス」に、グラフィックスカードに搭載されているGPUの能力を一般的な計算処理に使う「GPGPU(General Purpose GPU)」の機能を備えた「クラスターGPUインスタンス」の提供を開始したと発表しました。

2012年3月7日水曜日

verilog-HDL 入門

verilog-HDL 入門

1.始めに

本文書では verilog-HDL を用いてハードウエアを記述するために必要な 基礎を説明する。 とりあえず、なにがしかのハードウエアを記述し論理合成や テストを行えるようになることが目標である。verilog-HDL の詳細な文法については規格書や各種参考書を見て欲しい。

2. verilog-HDL の成り立ち

verilog-HDL は旧 Gateway Design Automation 社のシミュレータ専用言語であった。 元々はシミュレーション言語であるから、 ハードウエアを効率的に記述することは主目的では無かった。 しかし、これに論理合成ツールが加わることによって、HDL を用いて ハードウエアを記述し設計することが現実的になった。 このため大いに広まり、現在では IEEE の規格の一つになっている。

しかし、シミュレーション言語である verilog-HDL を 無理矢理ハードウエア記述に使っているため、 現実のハードウエアとの間に一部不整合が有る。 この点をふまえて、ハードウエア記述源として用いる場合には、 非効率なハードウエアを記述しないように注意する必要がある。

なお、より効率的な記述を取り入れると共に、 このような不整合を解消する試みとして Systemverilog が規格化されている。

3. verilog-HDL によるハードウエア記述の構造

図1.に verilog-HDL によってハードウエアを記述した場合の構造を示す。 verilog-HDL ではモジュール(module)と呼ばれる単位によって構造を記述する。 各部品をモジュールとして記述し、 このモジュールを繋ぎ合わせることによって全体を構成する。 繋ぎ合わせる時に実際に呼び出される実態をインスタンス(instance)と言う。 このように、モジュールはハードウエアの記述を行うだけで、実態としては働かない。 例えば、同一の構造をもった演算器を複数設置する場合、 その演算器の機能を記述するのがモジュールで、演算器1、演算器2と 名前を付けて設置されるものがインスタンスである。 インスタンス中でさらに別のインスタンスを呼び出す事もできる。 (再帰的呼び出しはできない)。

注意すべきは、ハードウエア記述言語は、一般的な 手続き型プログラミングとは全く違うということである。 古典的な手続き型プログラミングでは、 関数インスタンスが多少の内部状態を持つことが有っても、 各々の関数が呼び出されない限りその働きを気にする必要は無い。 これに対し、ハードウエアでは各々の構成要素は常に動いている。 全てが並列に動いていると言い換えても良い。 どちらかと言えば、イベント駆動型プログラミングにおいて、 そこらじゅうでイベントが起こっている状態に近い。

したがって、ハードウエア記述言語では常に各々の部品の動作に気を使う必要がある。 この点においては物理的なハードウエアの性質と何ら変わることはない。 結局ハードウエア記述言語というのは、 別々に動作する部品を設計しそれらを繋ぎ合わせる作業を、 文字を用いて行うための手段である。

4. モジュール

ここでは verilog-HDL の基本であるモジュールについて説明する。 まず、モジュールの構造の概要について述べ、 単純な 4 bit カウンタを例にモジュール内の構造を大まかに説明する。 細かい記述法については後続の節を参照して欲しい。

4.1 モジュールの基本構造

モジュールの構造の概要をリスト1に示す。 モジュールは大まかにいって、ポート記述、 変数記述、組み合わせ回路記述、順序回路記述から成る。 厳密にはこれは正しくないが、 ディジタル LSI を記述するという目的から見たときは、 このように考えて問題無い。

 リスト1 モジュールの構造の概要 module counter4(ポート名, ポート名,,, );    ポート記述     変数記述     組み合わせ回路記述     always 文      begin        順序回路記述      end endmodule 

4 bit カウンタを記述したモジュールをリスト2 に示す。"//"以降行末まではコメントである。 ここでは、細かい記述はともかく、モジュール内の構造に注目して欲しい。

 リスト2 モジュール記述の例 // 4 bit simple counter module counter4(                 //*************** port name list **************                 clk, // clock                 rst, // reset                 count // counter output                 //*********************************************                 );    //************** port definition **************    input clk, rst; // clock, reset    output [3:0] count; // counter output    //*********************************************     //*********** parameter declaration ***********    reg [3:0]         counter; // count register     wire [3:0]         count_tmp; // count up value    //*********************************************     //********* combination logic circuit *********    assign         count = counter; // connect to output    assign         count_tmp = counter + 1'b1; // count up    //*********************************************     //*************** state machine ***************    always @(posedge clk or negedge rst)      begin         if (~rst) // reset           begin              counter  

4.2 モジュール文

モジュールは module 文で始まり、endmodule 文で終わる。 module 文ではモジュール名を示し、つづく括弧内で引数として入出力ポート名を示す。

4.3 ポート属性記述部

module 文の直後にポートの属性とビット幅を記述する。 通常使うポートの属性は、input, output, inout の 3 つである。 ビット幅は通常 [ビット幅-1 :0] のように上位下位の順で指定する。 ビット幅が同じ場合は、"input clk, rst;" のように続けて記述できる。

4.4 変数定義部

言語仕様上は変数定義はモジュール内のどこでも記述できる。 モジュールが小さい場合はポート属性記述の次に変数定義を行うことが多い。 モジュールが大きい場合は、変数定義とその変数の使用場所があまり離れないように記述した方が良い。

4.5 組み合わせ回路記述部

変数定義部の後に組み合わせ回路を記述する事が多い。 リスト2 中では assign 文を用いて簡単な組み合わせ回路を表現している。 この assign 文を用いるか、function を用いて組み合わせ回路を記述する。 assign 文と function 文については後述する。

always 文を用いて組み合わせ回路を記述することもできるが、 記述が繁雑になる上に 論理合成で思わぬ結果が出ることもある。 always 文で組み合わせ回路を記述するのは避けた方が賢明である。

4.6 順序回路記述部

順序回路を含まないモジュールの場合は記述しない。順序回路を含む場合は、 多くの場合モジュールの最後に always 文を用いて順序回路を記述する。

always @( に続く信号名はセンシティビティリストと呼ばれる。 always 文はこのセンシティビティリストに記述された信号が変化したときのみ動作する。 posedge, negedge は各信号の立ち上がりで反応するか立ち下がりで反応するかを指定する。

論理合成をを用いて大規模なディジタル LSI を設計する事を考えると、 このセンシティビティリストにクロックとリセット 以外の信号を混ぜるのは避けた方が良い。

要するに普通にディジタル LSI を設計している場合には、 リセットする順序回路部分は always @(posedge clk or negedge rst) で始め、 リセットしない順序回路は always @(posedge clk) で始めると憶えれば良い。

(注)リセット信号は負論理であることが多い。

なお、一つのモジュール内にいくつでも always 文を記述することができるが、 繁雑さを防ぐために、できるだけ一モジュール内の always 文は 一つにまとめた方が良い。

4.7 リセット

リセット信号は実に厄介なしろものである。 現在では reset 信号は clock と同様に特別な配慮をする必要があるため、 論理合成時には理想的な信号線として扱い、 レイアウト時にリセットツリーを挿入することが一般的である。 このため、適切に遅延時間を算出するのが難しく、 リセット信号を論理に用いると静的タイミング解析時に問題が生じることがある。

例えば、リセット時に定数をレジスタ変数に代入する場合は良いが、 リスト3 のようにリセット時に変数の値を代入するような場合に問題となる。 これはチップの外から初期値を取り込むような場合に生じる。

2012年3月5日月曜日

最初のデザイン

最初のデザイン

それでは、XILINX ISEを使って開発を行うことにします。

最初に作るのは、LEDチカチカです。

本ボードには8個のLEDが搭載されているので、これをチカチカさせてみることにしましょう。

そして、基板上のプッシュスイッチが押されたら、チカチカの点滅方法を変えるようなデザインにします。

 

開発の流れは、

�/p>

(Verilog派の方はVerilog Moduleを選択し、ファイルの拡張子は.vとなります)

図7 VHDLファイルの新規作成

 

入出力ポートの定義

次の画面では、VHDLファイルで記述するモジュールの入出力ポートを定義します。

 

このサンプルデザインでは、水晶発振器からのクロックを受け取るポート、プッシュスイッチの状態を見るポート、LEDへ値を出力するポートの3種類のポートを定義します。

ポートの名前は、入出力がわかるように、末尾に_ip、_op、_bpをつけておくとよいでしょう。(_bpは双方向)

こうしておくと、回路内部の信号と外部のポートとの区別がしやすくなり、方向もわかるので便利です。

New Source Wizardの画面であ、Port Nameのところにxtalclk_ipと、pushsw_ipと、led_opの3種類のポートを定義してください。led_opは出力ポートなのでDirectionをoutに変更し、BusのチェックボックスをONにし、MSBに7、LSBに0と記述してください。

これでNextを押します。

 

図8 入出力ポートの定義

 

確認画面が出たら、Finishを押します。

図9 入出力ポートの定義の確認

 

すると、VHDLファイルの雛型が出来上がり、ISEの中で開かれます。

図10 VHDLファイルが作成されたISEプロジェクト

 

ISEのうれしいところは、この時点でVHDLの雛型が出来ていて、しかも、library IEEE・・などのおまじない構文が自動的に書かれていることです。

 

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

 

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--use IEEE.NUMERIC_STD.ALL;

 

-- Uncomment the following library declaration if instantiating

-- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

 

entity ledchika is

    Port ( xtalclk_ip : in  STD_LOGIC;

           pushsw_ip : in  STD_LOGIC;

           led_op : out  STD_LOGIC_VECTOR (7 downto 0));

end ledchika;

 

architecture Behavioral of ledchika is

 

begin

 

 

end Behavioral;

 

 

リスト1 新規に作成されたVHDLファイル

ここで、先頭の

use IEEE.STD_LOGIC_1164.ALL;

に加えて、

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

を追加することをお勧めします。

 

また、FPGAに用意されたプリミティブを使いたい場合は、

--library UNISIM;

--use UNISIM.VComponents.all;

のコメントを外してください。

 

VHDLはarchitecture〜begin〜endという構造をしていて、architectureとbegin間では信号や定数の宣言を行い、beginとendの間では論理式の記述を行います。

architecture

 

PROJECT ASURA R&D Light Propagation Volumes

Light Propagation VolumesXNAǼơפäƤꥯȤƤޤ˻ΤǤʤʤդ֤ޤ
ĤȡäƤä֤ɤȻפΤǡˡˤĤƤƤޤ
DirectXɤͤϡNVIDIASDK˼㤬ΤǸƤ

ޤ르ꥺγפǤʲΤ褦ʥƥåפˤʤޤ

Step.1 Reflective Shadow Map
Step.2 Radiance Injection
Step.3 Radiance Propagation
Step.4 Scene Lighting

ޤǽStep.1
Reflective Shadow Mapޤ뤳ȤϡGХåեʿ١ɶ֤ΰ֡ˡ٥ȥ롤«ˤʤΤ礷Ȥ̵Ǥflux(«ˤη׻ˡǤReflective Shadow Mapsʸ3.2Ϥ˵Ҥޤ
ֺǽˡƥԥ˱äͤ줿«׻ɬפ롣uniformʿԸˤĤƤϡȤʤ롣uniformФƤϡ«ΩγѤ뤿᥹ݥå;ǸפȽ񤤤Ƥޤ
ʤΤǡֳڤʼʿԸȤƥ饤Ȥ谷ŬꤷƤФ褤Ǥ礦ȤƼ갷ϡLight Propagation VolumesAppendix Bˤ餷᥽åɤܤäƤޤ

half GetTexelLum( const in RSMTexel texel )
{
return Luminance( texel.vColor ) * max( 0.h, dot( texel.vNormal, g_lightDir.xyz ) );
}

luminanceϵͤʤΤǡ餯Τ褦ʷ׻ˤʤȻפޤ
half Luminance( const float4 color )
{
return 0.299 * color.r + 0.587 * color.g + 0.114 * color.b;
}

ˡʸˤ񤤤Ƥ褦ˡΤޤޤβ(Virtual Point Light:VPL)ȤƻȤäƤޤȽŤΤǡ󥵥ץ󥰤ƽ٤ڸƤޤ
ɤAppendix B˺ܤäƤΤǡ򻲹ͤˤФ褤Ǥ礦
äƤ뤳Ȥ4ƥʬ򥵥ץ󥰤ơGetTexelLum()᥽åɤˤͤ׻Ǥ뤤ƥꤷޤˡե륿ݤޤե륿γݤϡ4ƥФƺǤ뤤ȷꤵ줿ȡ륻Ȥ2Υ׻Υ3̤ξ˿١ˡûΥ3̤ǤΤĤ뤫ȤƤޤơǸƤޤơ줿ͤϤȤǤ
Appendix BΥɤ򸫤Ȥ狼褦ˡåɰȤΤǡ餫ᥰåɤۤƤɬפޤåɥȡʬȤޤХåɤϹۤǤΤʤǤ礦

³Step.2Ǥ
󥵥ץ󥰤Reflective Shadow MapΥƥȤƳǼƤݻƤޤ
ΥƥåפǤϡƥȤƳǼ줿Ĵ´ؿǰ̤ơܥ塼ƥؤȳǼƤޤ
ޤˡ٥ȥ뤫2ޤǤSH򻻽ФޤȤϤη׻SHStep.1ǺGХåե«ФRGBʬݤ碌СĴ¤ǶͤޤޤȤϤRGBʬȤ̤ΥƥȤƵ᤿ͤ¸Ƥޤ
ΤޤޤǤϼʾˤ륢ƥեȤȯƤޤޤ򤱤뤿ˡǽäȤ餹ȤƤޤ

ϡStep.3Ǥ
̤̾ꡤǥ󥹤ãƤޤפܤФSHͤûƤФǤ
λAppendix C. Propagation scheme˺ܤäƤޤ

ǸˡStep.4
饤ƥ󥰤Ԥޤ饤ƥ󥰤Ϥäƥץã줿ǥ󥹥ܥ塼ͤȡSHѤơ饤ƥ󥰤Ԥޤ

ʤ櫓ǡΤϤ狼פȻפޤ

Light Propagation VolumesĶ³Ǥ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸ򻲾ȤƤ

----------------------------------------
6.2 Geometry-aware light injection and shifting

ޤФʶֶΤˡʾ򤵤뤿˳VPL pΥǥ󥹤γƤñͤ򥷥եȤɬפޤʿ9ȡˡ桹ϡˡ˸ǥ󥹤¤ˤƺǥȾʬǤͤ˸ǥ󥹤򥷥եȤ뤳Ȥ­ޤäơǾͤΥ顼Ƴ졤¿ξˤƼʾ򤱤ޤܺ٤ʼˤĤƤAppendix C򻲾ȤƤǤ⡤ñͤǥ󥹤򥷥եȤ뤳Ȥϴ˼ʾ˾ޤʤǥ󥹥֥꡼ǥ󥰤򤱤ˤϽʬǤϤޤ

6.3 Anisotropic upsampling of radiance volume

֥5.5˽Ҥ٤Τ褦˶Ū˶줿ǥ󥹤SHΥȥ饤˥֤ϺǽŪʥǥ󥹥ܥ塼δ֡˾ޤʤʾ֥꡼ǥ󥰤Ȥä褦ʽʥƥեȤ⤷ޤʿ9ȡˡФơʤȤ3Ĥβǽˡ¸ߤޤ

ǽ1Ĥϥͥƥ֤ʥץǡʾ褦ˡǡեåǥեȤñͤ줿VPLΩĤΤǤΥեåȤ1ĤΥĹΤǡ椨ˤƶ᤯֤줿֥Ȥˤư̤Ȥʤޤäơ桹ϤΥץϻѤޤ

2ܤΥץϡñͥơˤ뤤"ǥ"[DSDD07]ȸƤФХå饤ɤä뤳ȤΩޤϡȿФ˸ȥľǡǥ󥹤γƤ⤤"ȥ饹"Ĥ褦ˤޤäơȥ饤˥֤뤳ȤϽˤʤޤˡμreflective shadow map2褹ɬפȤȤǤǽˡ̥̾󥰤ȿͤ줿饤ƥ󥰡ˡ2˥ͥƥ֤ʥ饤ȤФ̥󥰤뤳ȤǤϥƥ˥åʣäޤñͥơΤãơθǡΥͥƥ֤ʥǥ󥹤ˤĤƷ֤ޤޤ̩ȿиΥȥξˤơְäưŤ줿Τϡ⤦Ĥ򤱤ʤǤɤäƤΤǡ桹ϤΥץȤޤ

Ǹˡ桹ϵǥ󥹥ܥ塼˰¸åץץ󥰤ˡȯޤˡμʥǥˡ˱äƥȥС뤳Ȥȡǥǥ󥹤ʬ׻뤳Ȥˤäƴְä֤򸡽Ф뤳ȤǤ

桹SHФ濴κʬѤޤʿ10ȡˡn˸濴κʬϥǥ󥹤θۤ׻뤳ȤǤ

ʼ

äơºݤΥǥ󥹤ĥǥ󥹤ʬӤ뤳ȤˤꡤˤĤơΥȥ饤˥֤ǥ󥹤γƤΥƻϤޤäƤ뤫ɤ׻뤳ȤǤޤ

9ˤˡη̤򼨤ޤ

--------------------------------------

դ
Ƥ4ʾ夿äƤޤޤˤĶ򽪤Ȼפޤ

Light Propagation Volumes in CryEngine3 Ķ--

ޤ󡢤ä깹˺Ƥޤ

Light Propagation VolumesĶ³Ǥ
ꤢʤΤǡޤǾ֤Ƥ
ȡޤɽӼϥåĥάΤǡʸ򻲾ȤƤ

------------------------------------------------------

6. Improvements and Optimizations

2012年3月4日日曜日

言語設計FAQ — プログラミング言語 Go ドキュメント v0.1 documentation

生立ち

このプロジェクトにはどのような歴史がありますか?

Robert Griesemer、Rob PikeおよびKen THompsonは2007年9月21日にホワイトボードに新しい言語の目標をスケッチすることを始めました。数日かけて、数ある目標から、何をするのかという計画と、この言語の美しい理想像が定まりました。他の仕事と並行して、隙間時間を利用して設計が続けられました。2008年1月までに、Kenはコンパイラについてのアイディアを追求することを始めました。それは、コンパイラの出力としてCのコードを生成することでした。この年の中頃までに、この言語はフルタイムのプロジェクトとなり、製品版コンパイラを製作するために十分な時間を費やすことになりました。2008年5月には、Ian Taylorが自主的に、ドラフト版の仕様をもとにして、GCC用のフロントエンド作りに取りかかりました。Russ Coxは2008年の終わり頃に参加し、言語とライブラリをプロトタイプから現実的な実装に導くことを助けました。

ほかにも沢山の人々にアイディアを出していただき、議論をし、ソースコードに寄与していただきました。

なぜ新しい言語を作るのですか?

Goは、既存のシステムプログラミング用言語と環境への欲求不満から生まれた言語です。プログラミングはとても難しいものとなってしまいましたが、それは言語の選択が一因でもあります。効率的なコンパイル、効率的な実行、または容易なプログラミングのいずれかを選ばなければなりません。なぜなら、主要言語において、これら3つを満たす言語は無かったからです。プログラマは、安全性と効率を楽に得ることを選択するために、C++ではなく、PythonやJavaScriptのような動的型付け言語や、C++より自由度を下げて拡張したJavaに乗り換えることが可能ではありました。

Goは、インタプリタ型の動的型付け言語の容易なプログラミングと、コンパイラ型の静的型付け言語の効率と安全性を兼ね備える試みです。また、現代的であり、ネットワークコンピューティングおよびマルチコアコンピューティングをサポートする狙いがあります。最後に、高速な実行を狙いとしています。その上で、1つのコンピュータで大きな実行可能ファイルをビルドすることが数秒で完了するのは当然のことです。これらの目標を実現するためには、数々の言語上の課題に取り組まなくてはなりません。表現力が豊かで軽量なシステム、同時並行性とガーベジコレクション、堅牢な依存関係の仕様、などなどを実現する必要があります。これらはライブラリやツールで上手に解決することは不可能です。ゆえに、新しい言語が生� ��れたのです。

Goの祖先は何ですか?

Goは基本的な文法の大部分はC言語系から受け継いでいます。また、宣言やパッケージについては、Pascal、Modula、Oberonから大きな影響を受けています。加えて、並行処理については、Tony HoareのCSP (Communicating Sequential Process) に影響を受けている言語であるNewsqueak、Limboから同じアイディアを取り入れています。しかしながら、全体としては新しい言語です。あらゆる点において、Goはプログラマが何をし、どうプログラムを作るのかということを考えられて設計されています。少なくとも私たち自身が行うプログラミングがより効率的に、より楽しくあるようにです。

What are the guiding principles in the design?

Programming today involves too much bookkeeping, repetition, and clerical work. As Dick Gabriel says, "Old programs read like quiet conversations between a well-spoken research worker and a well-studied mechanical colleague, not as a debate with a compiler. Who'd have guessed sophistication bought such noise?" The sophistication is worthwhile—no one wants to go back to the old languages—but can it be more quietly achieved?

Go attempts to reduce the amount of typing in both senses of the word. Throughout its design, we have tried to reduce clutter and complexity. There are no forward declarations and no header files; everything is declared exactly once. Initialization is expressive, automatic, and easy to use. Syntax is clean and light on keywords. Stuttering (foo.Foo* myFoo = new(foo.Foo)) is reduced by simple type derivation using the := declare-and-initialize construct. And perhaps most radically, there is no type hierarchy: types just are, they don't have to announce their relationships. These simplifications allow Go to be expressive yet comprehensible without sacrificing, well, sophistication.

Another important principle is to keep the concepts orthogonal. Methods can be implemented for any type; structures represent data while interfaces represent abstraction; and so on. Orthogonality makes it easier to understand what happens when things combine.

2012年3月2日金曜日

つぶやき 今日はパーマ

今日はパーマ


                                写真は再使用です

今日はパーマ

キートン  「父ちゃん、あんた昨日ブログの更新ばせんやったね」

カメロボット「おぅ、気分のわるうしてね」
      「ブログの、更新する気のせんでくさ」

キートン  「なんでね、」

カメロボット「母ちゃんが、あんまり、分からんこと言うけんくさ、
       母ちゃんば、しまきあげちゃったやね」
※ しまく=叩く、暴力を振るう
キートン  「嘘いいない、」

カメロボット「何でや、」

キートン  「そーらー、分かるくさ、僕は、あんた達と一緒に住んどうとばい」

カメロボット「そーやね」

キートン  「いったい、なんが、あったとな」

カメロボット「なーも、なかて、言い寄ろうが」

キートン  「あんた、相棒の僕にもかくすとな」

カメロボット「風邪、風邪たい

※まーいいたい、このうそこき、くそ親爺
 本当はなんか、あっとります

キートン  「父ちゃん、父ちゃんちゃ」

カメロボット「なんや」「ブログ更新のことなら、なーも答えんじぇ」

キートン  「もう、そげな事は、どうでもよか」

キートン  「母ちゃんが、呼びよったよ」

カメロボット「なんて、母ちゃんが呼びよるて、わかった

※なんかいな、もしかしたら、なかようしょうとか、言うっちゃなかろうね
 それなら、勝負パ○ツ、はいていかないかんね

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

キートン  「なんやったとね、がっかりした顔ばしとうが」

カメロボット「なんやったとねも、糞もあるか

キートン  「どうしたとね」

カメロボット「はぁん!この前の続き、パーマに行くけん送って行けげな」

キートン  「そげーん、頭にきとうとね」