Archive for the ‘library’ Category

  1. Hello, JDBC Type2(Groovy) World!

    Posted on 10月 2nd, 2012 by cx20

    JDBC Type2

    JDBC(Java Database Connectivity)は、Java 用のデータベース接続 API である。実装方法によりType1~4の4つのタイプが存在する。
    Type2 は JDBC と DBMS クライアントの API をマップさせたブリッジドライバである。
    例えば、Oracle であればクライアントライブラリとして OCI が使用される。
    以下は Groovy による JDBC ライブラリの使用例となっている。

    ソースコード(Groovy + JDBC Type2 + Oracle)

    import groovy.sql.Sql
    class Hello {
        static void main(args) {
            Sql sql = Sql.newInstance("jdbc:oracle:oci:@orcl", 
               "scott", "tiger", "oracle.jdbc.driver.OracleDriver")
            sql.eachRow("SELECT 'Hello, JDBC Type2 World!' AS Message FROM DUAL"){
                println it.Message
            }
        }
    }

    実行方法

    C:¥> groovy Hello.groovy
    C:¥> groovy -cp "ojdbc6.jar;." Hello.groovy

    実行結果

    Hello, JDBC Type2 World!
  2. Hello, Windows Forms(ClojureCLR) World!

    Posted on 6月 11th, 2012 by cx20

    Windows Forms(ClojureCLR)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は ClojureCLR における Windows フォーム の例となっている。

    ソースコード

    (System.Reflection.Assembly/LoadWithPartialName "System.Windows.Forms")
     
    (import '(System.Windows.Forms Form))
    (import '(System.Windows.Forms Label))
    (import '(System.Windows.Forms Application))
     
    (def form (Form.))
    (doto form
      (.set_Size (new System.Drawing.Size 640 480))
      (.set_Text "Hello, World!")
    )
    (def label1 (Label.))
    (doto label1
      (.set_Size (new System.Drawing.Size 320 20))
      (.set_Text "Hello, Windows Forms(ClojureCLR) World!")
    )
    (doto (.Controls form)
    (.Add label1))
     
    (. Application Run form)

    実行方法

    C:¥> Clojure.Main Hello.clj

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(ClojureCLR) World!   |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  3. Hello, Windows Forms(IronScheme) World!

    Posted on 6月 10th, 2012 by cx20

    Windows Forms(IronScheme)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は IronScheme における Windows フォーム の例となっている。

    ソースコード

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (clr-reference System.Windows.Forms)
    (clr-reference System.Drawing)
     
    (clr-using System.Windows.Forms)
    (clr-using System.Drawing)
     
    (begin
        (define form (clr-new Form))
        (clr-prop-set! Form Size form (clr-new Size 640 480))
        (clr-prop-set! Form Text form "Hello, World!")
        (define label1 (clr-new Label))
        (clr-prop-set! Label Size label1 (clr-new Size 320 20))
        (clr-prop-set! Label Text label1 "Hello, Windows Forms(IronScheme) World!")
        (define formControls (clr-prop-get Form Controls form ))
        (clr-call Form+ControlCollection Add formControls label1 )
     
        (clr-static-call Application (Run Form) form)
    )

    実行方法

    C:¥> isc Hello.ss

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(IronScheme) World!   |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  4. Hello, Windows Forms(IronRuby) World!

    Posted on 6月 9th, 2012 by cx20

    Windows Forms(IronRuby)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は IronRuby における Windows フォーム の例となっている。

    ソースコード

    require 'mscorlib'
    require 'System.Windows.Forms'
    require 'System.Drawing'
    include System::Windows::Forms
    include System::Drawing
     
    class HelloForm < Form
      def initialize
        self.Size = Size.new 640, 480
        self.Text = "Hello, World!"
        label1 = Label.new
        label1.Size = Size.new 320, 20
        label1.Text = "Hello, Windows Form(IronRuby) World!"
        self.Controls.Add( label1 )
      end
    end
     
    form = HelloForm.new
    Application.Run(form)

    実行方法

    C:¥> ir Hello.rb

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(IronRuby) World!     |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  5. Hello, Windows Forms(IronPython) World!

    Posted on 6月 8th, 2012 by cx20

    Windows Forms(IronPython)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は IronPython における Windows フォーム の例となっている。

    ソースコード

    import clr
    clr.AddReference("System.Windows.Forms")
    clr.AddReference("System.Drawing")
    from System.Windows import Forms
    from System import Drawing
     
    class HelloForm(Forms.Form):
        def __init__(self):
            self.Size = Drawing.Size( 640, 480 )
            self.Text = 'Hello, World!'
            label1 = Forms.Label()
            label1.Size = Drawing.Size( 320, 20 )
            label1.Text = 'Hello, Windows Forms(IronPython) World!'
            self.Controls.Add( label1 )
     
    if __name__ == '__main__':
        form = HelloForm()
        Forms.Application.Run(form)

    実行方法

    C:¥> ipy Hello.py

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(IronPython) World!   |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  6. Hello, Windows Forms(PowerShell) World!

    Posted on 6月 7th, 2012 by cx20

    Windows Forms(PowerShell)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は PowerShell における Windows フォーム の例となっている。

    ソースコード(PowerShell のみ)

    [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    $form = New-Object Windows.Forms.Form
    $form.Size = New-Object Drawing.Size 640,480
    $form.Text = "Hello, World!"
    $label1 = New-Object Windows.Forms.Label
    $label1.Size = New-Object Drawing.Size 320, 20
    $label1.Text = "Hello, Windows Forms(PowerShell) World!"
    $form.Controls.Add( $label1 )
    $form.ShowDialog()

    なお、PowerShell 2.0 から Add-Type コマンドレットを用いることにより C# や VB.NET のコードも呼び出せるようになっている。

    ソースコード(PowerShell + C#)

    $source = @"
    using System;
    using System.Drawing;
    using System.Windows.Forms;
     
    public class HelloForm : Form
    {
        public HelloForm()
        {
            this.Size = new Size( 640, 480 );
            this.Text = "Hello, World!";
     
            Label label1 = new Label();
            label1.Size = new Size( 320, 20 );
            label1.Text = "Hello, Windows Forms(PowerShell) World!";
     
            this.Controls.Add( label1 );
        }
        [STAThread]
        public static void Main()
        {
            HelloForm form = new HelloForm();
            Application.Run(form);
        }
    }
    "@
    Add-Type -Language CSharp -TypeDefinition $source -ReferencedAssemblies ("System.Drawing", "System.Windows.Forms" )
    [HelloForm]::Main()

    ソースコード(PowerShell + VB.NET)

    $source = @"
    Imports System
    Imports System.Drawing
    Imports System.Windows.Forms
     
    Public Class HelloForm
        Inherits Form
     
        Public Sub New()
            Me.Size = New Size( 640, 480 )
            Me.Text = "Hello, World!"
     
            Dim label1 As New Label
            label1.Size = New Size( 320, 20 )
            label1.Text = "Hello, Windows Forms(PowerShell) World!"
     
            Me.Controls.Add( label1 )
        End Sub
     
        <STAThread> _
        Shared Sub Main()
            Dim form As New HelloForm()
            Application.Run(form)
        End Sub
    End Class
    "@
    Add-Type -Language VisualBasic -TypeDefinition $source -ReferencedAssemblies ("System.Drawing", "System.Windows.Forms" )
    [HelloForm]::Main()

    実行方法

    C:¥> PowerShell -File Hello.ps1

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(PowerShell) World!   |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  7. Hello, Windows Forms(MSIL) World!

    Posted on 6月 6th, 2012 by cx20

    Windows Forms(MSIL)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は MSIL における Windows フォーム の例となっている。

    ソースコード

    //  Microsoft (R) .NET Framework IL Disassembler.  Version 4.0.30319.1
    //  Copyright (c) Microsoft Corporation. All rights reserved.
     
    // Metadata version: v4.0.30319
    .assembly extern System.Windows.Forms
    {
      .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .zV.4..
      .ver 4:0:0:0
    }
    .assembly extern mscorlib
    {
      .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .zV.4..
      .ver 4:0:0:0
    }
    .assembly extern System.Drawing
    {
      .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
      .ver 4:0:0:0
    }
    .assembly Hello
    {
      .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
      .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                                 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
      .hash algorithm 0x00008004
      .ver 0:0:0:0
    }
    .module Hello.exe
    // MVID: {FF5266CD-116D-4A87-B4A5-1B94604BA0FE}
    .imagebase 0x00400000
    .file alignment 0x00000200
    .stackreserve 0x00100000
    .subsystem 0x0002       // WINDOWS_GUI
    .corflags 0x00000001    //  ILONLY
    // Image base: 0x001E0000
     
     
    // =============== CLASS MEMBERS DECLARATION ===================
     
    .class private auto ansi beforefieldinit HelloForm
           extends [System.Windows.Forms]System.Windows.Forms.Form
    {
      .method public hidebysig specialname rtspecialname 
              instance void  .ctor() cil managed
      {
        // コード サイズ       94 (0x5e)
        .maxstack  4
        .locals init (class [System.Windows.Forms]System.Windows.Forms.Label V_0)
        IL_0000:  ldarg.0
        IL_0001:  call       instance void [System.Windows.Forms]System.Windows.Forms.Form::.ctor()
        IL_0006:  nop
        IL_0007:  nop
        IL_0008:  ldarg.0
        IL_0009:  ldc.i4     0x280
        IL_000e:  ldc.i4     0x1e0
        IL_0013:  newobj     instance void [System.Drawing]System.Drawing.Size::.ctor(int32,
                                                                                      int32)
        IL_0018:  call       instance void [System.Windows.Forms]System.Windows.Forms.Form::set_Size(valuetype [System.Drawing]System.Drawing.Size)
        IL_001d:  nop
        IL_001e:  ldarg.0
        IL_001f:  ldstr      "Hello, World!"
        IL_0024:  callvirt   instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
        IL_0029:  nop
        IL_002a:  newobj     instance void [System.Windows.Forms]System.Windows.Forms.Label::.ctor()
        IL_002f:  stloc.0
        IL_0030:  ldloc.0
        IL_0031:  ldc.i4     0x140
        IL_0036:  ldc.i4.s   20
        IL_0038:  newobj     instance void [System.Drawing]System.Drawing.Size::.ctor(int32,
                                                                                      int32)
        IL_003d:  callvirt   instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Size(valuetype [System.Drawing]System.Drawing.Size)
        IL_0042:  nop
        IL_0043:  ldloc.0
        IL_0044:  ldstr      "Hello, Windows Forms(MSIL) World!"
        IL_0049:  callvirt   instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
        IL_004e:  nop
        IL_004f:  ldarg.0
        IL_0050:  call       instance class [System.Windows.Forms]System.Windows.Forms.Control/ControlCollection [System.Windows.Forms]System.Windows.Forms.Control::get_Controls()
        IL_0055:  ldloc.0
        IL_0056:  callvirt   instance void [System.Windows.Forms]System.Windows.Forms.Control/ControlCollection::Add(class [System.Windows.Forms]System.Windows.Forms.Control)
        IL_005b:  nop
        IL_005c:  nop
        IL_005d:  ret
      } // end of method HelloForm::.ctor
     
      .method private hidebysig static void  Main() cil managed
      {
        .entrypoint
        .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) 
        // コード サイズ       15 (0xf)
        .maxstack  1
        .locals init (class HelloForm V_0)
        IL_0000:  nop
        IL_0001:  newobj     instance void HelloForm::.ctor()
        IL_0006:  stloc.0
        IL_0007:  ldloc.0
        IL_0008:  call       void [System.Windows.Forms]System.Windows.Forms.Application::Run(class [System.Windows.Forms]System.Windows.Forms.Form)
        IL_000d:  nop
        IL_000e:  ret
      } // end of method HelloForm::Main
     
    } // end of class HelloForm
     
     
    // =============================================================
     
    // *********** 逆アセンブルが完了しました ***********************
    // 警告: Win32 リソース ファイル hello.res を作成しました。

    上記コードは、以下の C# の実行ファイルを ildasm.exe で逆アセンブルしたものである。

    ソースコード

    using System;
    using System.Drawing;
    using System.Windows.Forms;
     
    class HelloForm : Form
    {
        public HelloForm()
        {
            this.Size = new Size( 640, 480 );
            this.Text = "Hello, World!";
            Label label1 = new Label();
            label1.Size = new Size( 320, 20 );
            label1.Text = "Hello, Windows Forms(MSIL) World!";
            this.Controls.Add( label1 );
        }
        [STAThread]
        static void Main()
        {
            HelloForm form = new HelloForm();
            Application.Run(form);
        }
    }

    コンパイル方法

    C:¥> ilasm Hello.il
    

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(MSIL) World!         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  8. Hello, Windows Forms(C++/CLI) World!

    Posted on 6月 5th, 2012 by cx20

    Windows Forms(C++/CLI)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は C++/CLI における Windows フォーム の例となっている。

    ソースコード

    #using <System.dll>
    #using <System.Drawing.dll>
    #using <System.Windows.Forms.dll>
     
    using namespace System;
    using namespace System::Drawing;
    using namespace System::Windows::Forms;
     
    public ref class HelloForm : public Form
    {
    public:
        HelloForm()
        {
            this->Size = System::Drawing::Size( 640, 480 );
            this->Text = "Hello, World!";
            Label^ label1 = gcnew Label();
            label1->Text = "Hello, Windows Forms(C++/CLI) World!";
            label1->Size = System::Drawing::Size( 320, 20 );
            this->Controls->Add( label1 );
        }
    };
     
    int main( array<System::String^>^ args )
    {
       HelloForm^ form = gcnew HelloForm();
       Application::Run(form);
     
       return 0;
    }

    コンパイル方法

    C:¥> cl Hello.cpp /clr /link /SUBSYSTEM:WINDOWS /ENTRY:main

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(C++/CLI) World!      |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  9. Hello, Windows Forms(JScript.NET) World!

    Posted on 6月 4th, 2012 by cx20

    Windows Forms(JScript.NET)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は JScript.NET における Windows フォーム の例となっている。

    ソースコード

    import System;
    import System.Drawing;
    import System.Windows.Forms;
    import Accessibility;
     
    main();
     
    class HelloForm extends Form
    {
        function HelloForm()
        {
            this.Size = new System.Drawing.Size( 640, 480 );
            this.Text = "Hello, World!";
            var label1 = new Label;
            label1.Size = new System.Drawing.Size( 320, 20 );
            label1.Text = "Hello, Windows Forms(JScript.NET) World!";
            this.Controls.Add( label1 );
        }
    }
     
    function main() {
        var form = new HelloForm;
        Application.Run(form);
    }

    コンパイル方法

    C:¥> jsc /target:winexe Hello.js

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(JScript.NET) World!  |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  10. Hello, Windows Forms(F#) World!

    Posted on 6月 3rd, 2012 by cx20

    Windows Forms(F#)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は F# における Windows フォーム の例となっている。

    ソースコード

    open System
    open System.Drawing
    open System.Windows.Forms
     
    type HelloForm() as this =
        inherit Form()
     
        do
            this.Size <- new Size( 640, 480 )
            this.Text <- "Hello, World!"
            let label1 = new Label()
            label1.Size <- new Size( 320, 20 )
            label1.Text <- "Hello, Windows Forms(F#) World!"
            do this.Controls.Add(label1)
     
    let form = new HelloForm()
    do Application.Run(form)

    コンパイル方法

    C:¥> fsc --target:winexe Hello.fs

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(F#) World!           |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+