[LinuxFocus-icon]
<--  | �����  | �����  | ������  | �����

������� | ������ | ������ | ��� LF
��� �������� �������� �� ��������� ������: English  Deutsch  Francais  Nederlands  Russian  Turkce  

[Photo of the Author]
����� Bob Smith
<bob/at/linuxtoys.org>

�� ������:

Bob �������� ������-������������� � ��������������. �� ������ ����� ��� ��������� ������ �� www.runtimeaccess.com � ��� �������� �������� �� www.linuxtoys.org.



������� �� �������:
Peter Demidov <p_demidov/at/rambler.ru>

����������:

 

������������ � ���������� ���������

Run Time Access

������:

Run Time Access - ��� ����������, ������� ��������� ��� �������� ��������� ������ � ����� ��������� ��� ������� ���� ������ PosgreSQL ��� ��� ����� � ����������� �������� ������� (����� ��, ��� � /proc). ������������� RTA �������� ������ ������ ������ ��� ������� ��������� ����� ����������� �����������, �����, ��� web, shell, SNMP, ��� framebuffer.

_________________ _________________ _________________

 

��������������� �����

������, � ��� ���� ��������� � ������� � ������� ��������. ��������� � ������ ��������� ���:
struct mydata {
    char   note[20];
    int    count;
}

struct mydata mytable[] = {
  { "Sticky note", 100 },
  { "Music note", 200 },
  { "No note", 300 },
};

���� �� �������� ���� ��������� � ����������� Run Time Access, �� ������� ��������� � ������������� ���������� ������ ��������� �� ��������� ������ ��� �� ������ ���������. ���� ������ ����� ��������� ���, ��� ���� �� ��� ���� � ���� ������ PostgreSQL. ��������� ������������ ��, ��� �� ������ ������������ Bash � psql, ���������� PostgreSQL ��� ��������� ������, ����� ������������� � ������ ������ � ����� ���������.

# myprogram  &

# psql -c "UPDATE mytable SET note = 'A note' LIMIT 1"
UPDATE 1

# psql -c "SELECT * FROM mytable"
   note     | count
------------+-------
 A note     | 100
 Music note | 200
 No note    | 300
#

��� ������ ��������� ����� RTA �����, ��� ������������ ���������� RTA � ����� ������������ �� ������ ������� �� ������������� RTA.

 

 

����� ���������������� ����������� -- ���� ������

������������ UNIX ������� � �������� ����������� ��������� ��� ���������������� ������ � /etc/application.conf, � ��� ����������������� ������ - � /var/log/application.log. ���� �������� ������, ��������, ������������ ��� ����������� ��������, ������� �������� �� ������������ � ���������������� ������������ ���������������� ����������. ������������ ������ ������ �������, ������ ��� ������ ��� ����� ��������� ����� ������������� ���������������� �����������, � �� ����� ����� ������ �� ���� ����������� ������������ �������������, ���������� � ����������� � �������� �� ����� ��� ������. �� ��� ���������� - ��� ������ �� ����� ����������.

�������� ������� ��������� �� ������ ����� ���������������� ����������� � �� - ������������ - �� � ��������� ����������� ����� ��������� ����� ����� �����������. ��� ��� ����� ������� - ��� �������� ���������������� ���������� �� �������, ��������� ����� ��������, � ������� ���������������� ���������� ��������� ����� ��������. ��� ��������� ���������� ����������� ��� �������������, � ���������� ����� ��������� ������������, ��� ��� ������ ����� ����� ���� �������� ����������. ��� ����� ����������� ��������� ����:

One service -- many interfaces

���� ����������������� ���������� �������� web, ��������� ������, framebuffer, SNMP, ���������� � LCD, LDAP, ������ Windows, � ������ ���������� �� ������. ���������� ����� API � �������� ��� ���� ���������������� ����������� ��� �� ������� �����. �� ����� API � ��������?

 

 

��������� ���� ������

RTA �������� ��� ������������� ���� ������ PostgreSQL ��� ����� API � ��������. ������������, ��������� � ���������� �������� � ������� ��������, ������� ��������� � API, ��� ������� � �� PostgreSQL. ��������� ����������������� ���������� ��������, ��� �������, �������������� � �� PostgreSQL. ���� ������ ����� ��� ������� ������������:

���������� RTA - ��� ����, ������� ��������� ���� ������� ��� ������� ������ �������� ������ � ��������� PostgreSQL. ����������� ����������, ������������� RTA ������ ��������� ���-������ ���:

RTA Application Architecture

����� �� �������� ��� management interface, ��� ��� �� ������������ ��� ���������, ���������� � ������������. �������� �� ��, ��� ������� ������ ���� ���������, �� ������ �������, ��� �� ������ ����� ����� ����������� ��� ������ ����������, � ��� ��� ������������ ����� ����� ������ � ����������.

PostgreSQL ���������� TCP � �������� ������������� ���������, ������� ����������, ����� ���� ���������� ����� ����������� � TCP ������ � ��������� ���������� �� ��������� ���������������� �����������. ��� �����, ���������� �� ��������� ���������� ���������� � RTA ��� ������ ������������ dbcommand(). ����� ������, ��������������� ��� �������� �������, ��������� � ������, ������������ �� dbcommand().

��� RTA ������, ����� ������� ��������? �� ������ ������� ��.

 

 

����������� ������

�� �������� RTA � ����� �������� �� ����������� ������ ������� ������������ rta_add_table(). �������� TBLDEF ��������� �������, � ��������� COLDEF ��������� �������. ��� ������, ������� ���������� ��� �������� ������� � ���������� RTA.

������ � ��� ���� ��������� �� ������� ����� 20 � �����, � �� ������ �������������� ������� � ����� ������ �����������. �� ������ ���������� ��������� � ������� ��������� �������:

    struct myrow {
        char    note[20];
        int     count;
    };

    struct myrow mytable[5];

������ ���� ��������� myrow �������� �������� � ������� ���� ������. ��� ���������� �������� RTA ��� �������, � ����� ������� �� ���������, ��� ��� ������, ��� �������� �� ������ ������ � ������� �� �� �� ������. �� ����� ����� ���������� callback-������������, ���������� ����� ������� ������� �/��� ����� ����, ��� �� �������. ��� ������ ������� �� ����� ������������, ��� count �������� ������ ��� ������ � ��� �� �����, ����� do_note() ���������� ����� ���������� ������ � ���� note. �� ������� ������ �� COLDEF, ������� �������� � TBLDEF, � ����� �� ����� COLDEF ��� ������� ����� ���������.

    COLDEF mycols[] = {
        {
            "atable",          // table name for SQL
            "note",            // column name for SQL
            RTA_STR,           // data type of column/field
            20,                // width of column in bytes
            0,                 // offset from start of row
            0,                 // bitwise OR of boolean flags
            (void (*)()) 0,    // called before read
            do_note(),         // called after write
            "The last field of a column definition is a string "
            "to describe the column.  You might want to explain "
            "what the data in the column means and how it is "
            "used."},
        {
            "atable",          // table name for SQL
            "count",           // column name for SQL
            RTA_INT,           // data type of column/field
            sizeof(int),       // width of column in bytes
            offsetof(myrow, count),  // offset from start of row
            RTA_READONLY,      // bitwise OR of boolean flags
            (void (*)()) 0,    // called before read
            (void (*)()) 0,    // called after write
            "If your tables are the interface between the user "
            "interfaces and the service, then the comments in "
            "column and table definitions form the functional "
            "specification for your project and may be the best "
            "documentation available to the developers."
    };

Callback-������� ����� ���� ��������� ����������, ������� ���� ����������. �� ������ �������� ������ ��������� � ������� ������� ��� ��������� ��� ���������������� ������ ����������.

�� ��������� RTA � �������� ����� �������� �� ����� �������, ����� ������ ������, ������ �������� COLDEFS ��� �������� ��������, ����� ��������, ��� save-����� ���� �� ������, ����� ��������� ������� ���� ����������, � ������ ��� �������� �������. ���� ������� �������� ����������� �������� ��������, �� ����� ��������� ����� � ����� ����� � �������. ���� ������� ������������ ����� ������� ������, �� ����� RTA ���������, ����� ��������� �� ����� �� ����� ������ � ���������.

TBLDEF   mytableDef = {
      "atable",                 // table name
      mytable,                  // address of table
      sizeof(myrow),            // length of each row
      5,                        // number of rows
      (void *) NULL,            // iterator function
      (void *) NULL,            // iterator callback data
      mycols,                   // Column definitions
      sizeof(mycols / sizeof(COLDEF), // # columns
      "",                       // save file name
      "A complete description of the table."
};

�������, �� ��������, ����� ��� �������, ������� SQL, ���� ����� ��, ��� � �� ��� � ���������. ������ ���������� �� mytable � atable ������ ����� ��������, ��� ����� �� ������ ���� �����������.

���� ���� ������������� ���, �� ������ ������ �������� RTA � ����� �������.

    rta_add_table(&mytableDef);

��� ���. ����� ������������ RTA ��� ���� ��������� ������������ ��� ��������� (COLDEFS � TBLDEF) � ��� ������������ (dbcommand() � rta_add_table()).

������������� ��� ��������, ����� ���� ��� ������������� � ���, ��� �������� RTA. ��� �� ������ ����������� ��� ��������� ������� ������. ������ ������� ������, ������ �������� RTA API � �������� ������ ��������� �� ����� RTA (www.runtimeaccess.com).

��� ������ �� ���������� ������� ��� ������������� � ����� ����������, RTA ���������� ����� ����� ���������� ������. ��� ����� ���������� �� ��� - ��� rta_tables � rta_columns, �������, �������, �������� ��������� ��� ��������� � �������� ���� ������ � ��������, ������������ ����. ��� ��� ���������� ��������� �������. ��������� ������� ������ �� ��, ��� ls ������ ��� �������� ������� � getnext() ������ ��� SNMP.

 

 

��������� ��������

����� �� ������, ������������ � RTA �������� ��������� PHP-���������, ������������ ��������� ������� ��� ��������� ����� RTA-������ � ���� web-��������. ����� ������ ������������ ��������, � ������� �� ��� ������� ���������� ������ 20 ����� ���� �������. ���� � ������� ���� ������������� ����, �� ������ �������� �� ������, ����� ������� ���� �������������� ��� ���� ������. ��� ��� ������� � �������������� ���������� ������ � ��������, ��������� � ��������� ��������. ����� ������ ��������� �� ��������� ���������:

Generic Table Editor

�������� ��� ������ ���������� ��������� ��� ���������� ���������� RTA ������� ����.

�������� ������ RTA

��� ���������������
rta_tables ������� ���� ������ � �������. ��� �������������, � �� ������ ��������, ��� ������ �������.
rta_columns ������ �������� ���� ������ ������ � �� ����������.
pg_user ������� ������������� Postgres. �� ���������� ��� ������� ���, ����� ����� ��� ������������ � WHERE-������ ���������� � ������� ��� �������� ������������ ��� super, createDB, trace ��� catupd ������������.
rta_dbg ������������ ������� ����������� �������. Callback � ���� 'target' ��������� � ������������� syslog(). �� ���� �������� � ���� ������� �� ������������ �� ����. ���� ��� ����� �������� �� �� ���������, ��� ���� �������� �������� rta ��� ��������� SQL_string(), ����� ���������� �������� ��� ������������� ���� ����� ���������.
rta_stat �������� ������������� � ������ ��� ������ rta.
mytable ��������� ������� ����������
UIConns ������ � TCP ����������� �� �������� ����������������� ����������

������, ���� ��� ������ ������ ��� ���������� ���� ������ LinuxFocus, ����� ������, ������ ���� ������ ����� ����� ������ �� ��������� ����������, ���������� �� RTA web-������� � �����-�����, ����������. ������� ������ - ��� ������ �� mytable.

 

 

��� �������

Run Time Access - ��� ����������, ������� ��������� ����������� ��������� ��� ��������� ����������������� ����������, ���������� � ����������� ������� PostgreSQL (libpq), � ����� ����������� ��� �������. RTA - ��� ���������, � �� ���� ������. ������� �� ���������� ������ ��� SQL �������: SELECT � UPDATE.

�������� ��� ������� SELECT:

  SELECT column_list FROM table [where_clause] [limit_clause]

column_list - ������ ���� ��������, ����������� ��������. where_clause - ������ ���������, ����������� ������� AND. ��������� ���������: =, |=, >=, <=, >, � <. limit_clause ����� ����� [LIMIT i] [OFFSET j], ��� i - ������������ ����� ������������ ����� � �� ���������� j ����� ����� ������� ������. ��������� ������� ����� ������ ���������� ���������.

  SELECT * FROM rta_tables

  SELECT notes, count FROM atable WHERE count > 0

  SELECT count FROM atable WHERE count > 0 AND notes = "Hi Mom!"

  SELECT count FROM atable LIMIT 1 OFFSET 3

��������� LIMIT � 1 � ����������� OFFSET - ��� ������ �������� ������������� ������. ��������� ������ ������������ ���� �� C (mytable[3].count).

��������� ������� UPDATE:

UPDATE table SET update_list [where_clause] [limit_clause]

where_clause � limit_clause - �� ��, ��� � ��������� ����. update_list - ��� ����������� �������� ������ ���������� ��������. ����� ��, ��������� ������� �������.

  UPDATE atable SET notes = "Not in use" WHERE count = 0

  UPDATE rta_dbg SET trace = 1

  UPDATE ethers SET mask = "255.255.255.0",
                    addr = "192.168.1.10"
                WHERE name = "eth0"

RTA ���������� ����������������� ����� ��� � �������, ��� � � ������ ��������, ���� ����� ������� ���������� ������� ������� ��� ���� ����������������� ���� SQL.

 

 

���������� � ������

�� ������ ������� RTA � ��� web-����� www.runtimeaccess.com (RTA ��������� ��� ��������� LGPL). ������ ��������� � ������ ������ RTA ��� ����������. ��������� ������ RTA ���������� ����� �������� PostgreSQL, ��������� � PostgreSQL ������ 7.4. ����������� ����������� ������������ Linux ���������� ������ 7.3. ���� �� ������ ������������ ������ ������ RTA ��� ��������� �������. ����� �������� ��������� ����������� � ����������, �� ������ ������������ ��������� ������.

����� ������������ �� ������ �������� ��������� ����������:

  ./doc            # a copy of the RTA web site
  ./empd           # a prototype deamon built with RTA
  ./src            # source files for the RTA library
  ./table_editor   # PHP source for the table editor
  ./test           # source for a sample application
  ./util           # utilities used in writing RTA

��������� Graham Phillips, RTA ������ 1.0 ����� ��������� autoconf. Graham ���������� RTA �� Linux �� Mac OS X, Windows � Free BSD. ��������� ����� 1.0 �� ������ ������� RTA ��������

  ./configure
  make
  make install      # (as root)

���������� �������� librtadb.so � ��������� ������������ ����� � /usr/local/lib. ����� ������������ RTA �� ������ �������� ��� ���������� � /etc/ld.so.conf � �������� ldconfig, ��� �� ������ �������� ��� ���������� � ���� ������ ����������:

  export LD_LIBRARY_PATH=/usr/local/lib

���������� �������� ������������ ���� RTA, rta.h, � /usr/local/include

Make �������� �������� ��������� � ���������� test � �� ������ ��������� ���� ���������, ������� � ���������� test � �������� ./app &. ������� netstat -nat ������ �������� ���������, ��������� ���� 8888. ������ �� ������ ��������� psql � �������� SQL ������� ������ ��������� ����������.

  cd test
  ./app &

  psql -h localhost -p 8888
  Welcome to psql 7.4.1, the PostgreSQL interactive terminal.

  Type:  \copyright for distribution terms
         \h for help with SQL commands
         \? for help on internal slash commands
         \g or terminate with semicolon to execute query
         \q to quit

  # select name from rta_tables;
      name
  -------------
   rta_tables
   rta_columns
   rta_dbg
   rta_stat
   mytable
   UIConns
  (6 rows)

� �� �����, ����� ��� �������� ��� ����� �� ���������� � ���� ������, �� ����� ���� ��� �� ���. �� ���������, ��� �� ������ ������������ ������ ��� �������: SELECT � UPDATE.

 

 

������������ RTA

������������ ��������� �������� ����������������� ���������� �� ������ ��������������� ������� ��������� � ������� ���������� ��������������, �����������, ������� � ������������.

� ����� ������ ��������������, ���������� ���������� ��� ������ ��� ��� ��������������, ��� ������ ���������� � �������� ����� ��, �� �������� ��� ��� ����������. ������������ �������, ����������� ��� ���������� ������ ���������� ��� ������ � ��������� ���������� ������ ����������. ������� ����� ����������� ���������� �������������� ������������ ������ ����������.

�� ����� ����������� ����������� ������ - ��� ��, ��� ������� �������� ������ � ��, � ���� ������� �������� ��. ���������� �� � ������ �������������, ��� �� ������ ���������� ������ ��-��������� � �����-���������, � ��� ����� ���������� ����������, ��� ����� ������ ������ �������� ������� �� �����. �.�. ���������� ����� Postgres � PHP, Tcl/Tk, Perl � "C", ���� ������������ ����� ������������ ���������� ���������� ��� ������.

������� �������� ������� � �����, ������ ��� �������� �� � ������ ����� ����� ����������� ������ ��������. ��������, �������� �� ����� ��������� ���� ��������� �� ������ � ��������� Postgres ��, ������� ����� ����� �� �������, ��� ����� ����� �����. �������� ������ ����� ���� ����� � ����� ������, �.�. ����� ������� �������� �������, ����� ����������� ��, � ����� ��������� ��������� ��������� � ���������� �� ����� ������ �����. ����������� ������������� ������������� ���������� ��������� ��� ������� �������� ����������� ������� �������, ��� ������ ������ ������� � ������������ ���������.

����������� ������ �������� ����� ���� ��������� � RTA. ��� �������� ������������� ������ ����������� ������ ���������������� ���������� � ��������� � ���������� �� ����� ������ ���������. ��������� �� �� ������ ��������, ��� �� ������� ����� ������ �������� ��: SNMP, ��������� ������, web, LDAP � ������ ����� ����������. ��� �������� ����� ����� ��� ��� ���� (�����!) ���� ��������� ���������� �� �� �����.

RTA ���������� ��������� ������ �������������, ������� �� ������ �������� ����� � ������:

 

 

����

��� ������ ����������� ����� ������� �������� � ���������� RTA � �� �����������. �� web-����� RTA ���� FAQ, ������ �������� API � ��������� �������� ���������� ��������.

��� RTA ����� ���������� ���� ��������� ������ � ���� ������ � ���� ������, ����� ��� ����� ���������� ��, ��� ����� � ����������� �������� �������. ( ������������� ������ File System in Userspace (FUSE) by Miklos Szeredi.) �� Web-����� ������ ���������� � ���, ��� ������������ ��������� �������� �������.

 

�������� �������

� ������ ������� ���� �������� �������. �� ���� �������� �� ������ �������� ���� ����������� ��� ����������� ����������� ������ ���������
 talkback page 

<--, ������� � ��������� �������� �������

Webpages maintained by the LinuxFocus Editor team
© Bob Smith, FDL
LinuxFocus.org
Translation information:
en --> -- : Bob Smith <bob/at/linuxtoys.org>
en --> ru: Peter Demidov <p_demidov/at/rambler.ru>

2004-06-01, generated by lfparser version 2.43