1. Hello, Tkinter World!

    Posted on 5月 15th, 2013 by cx20

    Tkinter

    Tkinter は Tcl スクリプト用の GUI ツールキット「Tk」を Python から呼出し可能にしたライブラリである。
    以下は Python による Tkinter の呼出し例となっている。

    ソースコード

    from Tkinter import *
     
    window = Tk()
    window.title( 'Hello, World!' )
    window.geometry( '640x480' )
     
    label = Label( text = "Hello, Tkinter World!" )
    label.pack( side = 'top', anchor = 'w' )
     
    window.mainloop()

    実行方法

    C:¥> python hello.py

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Tkinter World!                     |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  2. Hello, Ruby/Tk World!

    Posted on 5月 14th, 2013 by cx20

    Ruby/Tk

    Ruby/Tk は Tcl スクリプト用の GUI ツールキット「Tk」を Ruby から呼出し可能にしたライブラリである。
    以下は Ruby による Ruby/Tk の呼出し例となっている。

    ソースコード

    require 'tk'
     
    window = TkRoot.new
    window.title 'Hello, World!'
    window.geometry '640x480'
    label = TkLabel.new
    label.text 'Hello, Ruby/Tk World!'
    label.pack( 'side' => 'top', 'anchor' => 'w' )
     
    Tk.mainloop

    実行方法

    C:¥> ruby hello.rb

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Ruby/Tk World!                     |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  3. Hello, Perl/Tk World!

    Posted on 5月 13th, 2013 by cx20

    Perl/Tk

    Perl/Tk は Tcl スクリプト用の GUI ツールキット「Tk」を Perl から呼出し可能にしたライブラリである。
    以下は Perl による Perl/Tk の呼出し例となっている。

    ソースコード

    use Tk;
     
    $window = MainWindow->new();
    $window->title( 'Hello, World!' );
    $window->geometry( '640x480' );
     
    $label = $window->Label( -text => "Hello, Perl/Tk World!" );
    $label->pack( -side => 'top', -anchor => 'w' );
     
    MainLoop();

    実行方法

    C:¥> pl hello.pl

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Perl/Tk World!                     |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  4. Hello, Tcl/Tk(C言語) World!

    Posted on 5月 12th, 2013 by cx20

    Tcl/Tk(C言語)

    Tcl はシンプルな構文を持つスクリプト言語である。名前は「ツールコマンド言語(Tool Command Language)」に由来する。
    Tcl スクリプト用の GUI ツールキットとして Tk が開発され、バンドルされたものを Tcl/Tk と呼ぶ。Tk の人気は高く、Tcl/Tk 以外に Perl/Tk、Ruby/Tk と言った他の言語にも移植されている。
    以下は C言語 による Tcl/Tk の呼出し例となっている。

    ソースコード

    #include <tcl.h>
    #include <tk.h>
     
    int main( int argc, char* argv[] )
    {
        Tcl_Interp* interp;
        char command[] = 
            "wm title . \"Hello, World!\"\n"
            "wm geometry . \"640x480\"\n"
            "label .label -text \"Hello, Tcl/Tk World!\"\n"
            "pack .label -side top -anchor w";
        interp = Tcl_CreateInterp();
        Tcl_Init(interp);
        Tk_Init(interp);
        Tcl_Eval( interp, command );
        Tk_MainLoop();
        return 0;
    }

    コンパイル方法(Visual C++)

    C:¥> cl hello.c /link tcl85.lib tk85.lib

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Tcl/Tk World!                      |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  5. Hello, Tcl/Tk World!

    Posted on 5月 11th, 2013 by cx20

    Tcl/Tk

    Tcl はシンプルな構文を持つスクリプト言語である。名前は「ツールコマンド言語(Tool Command Language)」に由来する。
    Tcl スクリプト用の GUI ツールキットとして Tk が開発され、バンドルされたものを Tcl/Tk と呼ぶ。Tk の人気は高く、Tcl/Tk 以外に Perl/Tk、Ruby/Tk と言った他の言語にも移植されている。

    ソースコード

    wm title . "Hello, World!"
    wm geometry . "640x480"
    label .label -text "Hello, Tcl/Tk World!" 
    pack .label -side top -anchor w

    実行方法

    $ wish ./hello.tcl

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Tcl/Tk World!                      |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  6. Hello, Win32 API(Quercus) World!

    Posted on 5月 3rd, 2013 by cx20

    Win32 API(Quercus)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は Quercus にて SWT の非公開 API を使用した Win32 API 呼出しの例となっている。

    ソースコード

    <?php
    import org.eclipse.swt.internal.win32.OS;
    import org.eclipse.swt.internal.win32.TCHAR;
     
    $lpText = new TCHAR(0, "Hello, Win32 API World!", True);
    $lpCaption = new TCHAR(0, "Hello, World", True);
    OS::MessageBox(0, $lpText, $lpCaption, OS::MB_OK );
    ?>

    実行方法

    C:¥> java -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;resin.jar;. com.caucho.quercus.CliQuercus hello.php

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API World!
    ---------------------------
    OK   
    ---------------------------
  7. Hello, Quercus World!

    Posted on 5月 1st, 2013 by cx20

    Quercus

    Quercus は Java による PHP 実装である。
    PHP の構文が使える他、Java のライブラリが使用できる。

    ソースコード

    <?php
    echo "Hello, Quercus World!\n";
    ?>

    ソースコード(Java ライブラリを使用した場合)

    <?php
    import java.lang.System;
    System::out->println( "Hello, Quercus World!" );
    ?>

    実行方法

    C:¥> java -cp resin.jar com.caucho.quercus.CliQuercus hello.php

    実行結果

    Hello, Quercus World!
  8. Hello, JDBC Type4(Oxygene) World!

    Posted on 4月 18th, 2013 by cx20

    JDBC Type4(Oxygene)

    JDBC(Java Database Connectivity)は、Java 用のデータベース接続 API である。実装方法によりType1~4の4つのタイプが存在する。
    Type4 は DBMS のクライアントライブラリを使用しない Pure Java の DBMS ドライバである。
    以下は Oxygene による JDBC ライブラリの使用例となっている。

    ソースコード(Oxygene + JDBC Type4 + SQL Server)

    namespace hello;
     
    interface
    uses
        java.sql.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
     
        conn := DriverManager.getConnection("jdbc:sqlserver://;server=localhost", "sa", "P@ssW0rd");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type4 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    コンパイル&実行方法(Oxygene + JDBC Type4 + SQL Server)

    C:¥> oxygene Hello.pas -mode:Java
    C:¥> java -Xbootclasspath/a:sqljdbc4.jar -jar hello.jar

    ソースコード(Oxygene + JDBC Type4 + Oracle)

    namespace hello;
     
    interface
    uses
        java.sql.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("oracle.jdbc.driver.OracleDriver");
     
        conn := DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type4 World!' AS Message FROM DUAL");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    コンパイル&実行方法(Oxygene + JDBC Type4 + Oracle)

    C:¥> oxygene Hello.pas -mode:Java
    C:¥> java -Xbootclasspath/a:ojdbc6.jar -jar hello.jar

    ソースコード(Oxygene + JDBC Type4 + MySQL)

    namespace hello;
     
    interface
    uses
        java.sql.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("com.mysql.jdbc.Driver");
     
        conn := DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "P@ssW0rd");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type4 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    コンパイル&実行方法(Oxygene + JDBC Type4 + MySQL)

    C:¥> oxygene Hello.pas -mode:Java
    C:¥> java -Xbootclasspath/a:mysql-connector-java-5.1.22-bin.jar -jar hello.jar

    実行結果

    Hello, JDBC Type4 World!
  9. Hello, JDBC Type2(Oxygene) World!

    Posted on 4月 17th, 2013 by cx20

    JDBC Type2

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

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

    namespace hello;
     
    interface
    uses
        java.sql.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("oracle.jdbc.driver.OracleDriver");
     
        conn := DriverManager.getConnection("jdbc:oracle:oci:@orcl", "scott", "tiger");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type2 World!' AS Message FROM DUAL");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    コンパイル&実行方法

    C:¥> oxygene Hello.pas -mode:Java
    C:¥> java -Xbootclasspath/a:ojdbc6.jar -jar hello.jar

    実行結果

    Hello, JDBC Type2 World!
  10. Hello, JDBC Type1(Oxygene) World!

    Posted on 4月 16th, 2013 by cx20

    JDBC Type1

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

    ソースコード(Oxygene + JDBC Type1 + ODBC + Jet データベース)

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=.\\hello.mdb", "", "");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    ソースコード(Oxygene + JDBC Type1 + ODBC + ACE データベース)

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\\hello.accdb", "", "");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    ソースコード(Oxygene + JDBC Type1 + ODBC + SQL Server)

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={SQL Server};SERVER=(local)", "sa", "P@ssW0rd");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    ソースコード(Oxygene + JDBC Type1 + ODBC + Oracle)

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={Oracle in OraDb11g_home1};DBQ=ORCL", "scott", "tiger");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message FROM DUAL");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    ソースコード(Oxygene + JDBC Type1 + ODBC + MySQL)

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={MySQL ODBC 5.1 Driver};Server=localhost", "root", "P@ssW0rd");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    実行方法

    C:¥> oxygene Hello.pas -mode:Java
    C:¥> java -jar hello.jar

    実行結果

    Hello, JDBC Type1 World!