2019년 12월 25일 수요일

[AI 엔진] db 쿼리 추가 및 테스트 [C,I,U,D]



원문: https://blog.naver.com/ihaneter/221749959682
--> 지금까지 진행된 결과는 위 사이트에 게시되어 있습니다.
--> 이 내용은 AI 구현을 위해 Script Language의 개발 과정입니다.

안녕하세요 오타쟁이 한이터 백승기 입니다.
이제 부터는 DB 엔진을 이용해서 쿼리 테스트를 수행하고자 합니다.
첫번째작업 테이블이 완료 되었습니다.
쿼리 툴은 디비버(DBeaver)를 사용합니다.
1. Create, Insert, Update, delete의 기능을 테스트합니다.
void bsk_main() {
@sqla_init;
@sql_connect,/AI_PROJECT/AIxbsk/sqlite_db/test1.db;
@sqla+CREATE TABLE contacts(;
@sqla+ id1 INTEGER PRIMARY KEY,;
@sqla+ fname TEXT NOT NULL,;
@sqla+ lname TEXT NOT NULL,;
@sqla+ email TEXT NOT NULL UNIQUE,;
@sqla+ phone TEXT NOT NULL UNIQUE);
@sqla_run; //Create 테이블
@sqla_table, contacts ; // 테이블명 지정
@sqla_vars , id1, fname,lname,email,phone ; // 테이블변수 항목
@sqla_insert , '1', 'fname1', 'ln1', '1@1.com', '111-1111' ; //Insert 1
@sqla_insert , '2', 'fname2', 'ln2', '1@2.com', '222-1111' ; //Insert 2
@sqla_insert, '3', 'fname3', 'ln3', '1@3.com', '333-1111' ; //Insert 3
@sqla_delete, id1='3' ; //Delete
@sqla_where, id1='2' and phone='222-1111'; //Where
@sqla_update, fname='fname222',lname='lname222' ; //Update
@sqla_close;
};
// 위와 같이 쿼리문을 스크립트에 기능을 추가하고 적용해 보왔습니다.
// 쓰는 형식이나 문장구조는 전부 작업상의 신속성에 목표를 두었으므로
// 기존 스타일이 무엇이든지 고려하지 않습니다.
// ==> 실행 후 생성된 결과를 이미지로 캡쳐 했습니다.
// ==> 다음과 같이 DB 필드가 추가되고 수정되고 삭제되었습니다.
// ==> 다음의 스크립트문과 데이터를 조고 받는 Interface 차례입니다.
// ==> 실행 로그 입니다.
------- comfile_list -----------
make_split_src_1 src_list count = 1
func_name[0]=void bsk_main()
[00][00] [@sqla_init]
[00][01] [@sql_connect,/AI_PROJECT/AIxbsk/sqlite_db/test1.db]
[00][02] [@sqla+CREATE TABLE contacts(]
[00][03] [@sqla+ id1 INTEGER PRIMARY KEY,]
[00][04] [@sqla+ fname TEXT NOT NULL,]
[00][05] [@sqla+ lname TEXT NOT NULL,]
[00][06] [@sqla+ email TEXT NOT NULL UNIQUE,]
[00][07] [@sqla+ phone TEXT NOT NULL UNIQUE][)]
[00][08] [@sqla_run]
[00][09] [@sqla_table, contacts]
[00][10] [@sqla_vars , id1, fname,lname,email,phone]
[00][11] [@sqla_insert , '1', 'fname1', 'ln1', '1@1.com', '111-1111']
[00][12] [@sqla_insert , '2', 'fname2', 'ln2', '1@2.com', '222-1111']
[00][13] [@sqla_insert, '3', 'fname3', 'ln3', '1@3.com', '333-1111']
[00][14] [@sqla_delete, id1='3']
[00][15] [@sqla_where, id1='2' and phone='222-1111']
[00][16] [@sqla_update, fname='fname222',lname='lname222']
[00][17] [@sqla_close]
------- comfile_var -----------
------- run bsk_main ----------
[hi][INIT][sqla] [init][hi] db open or create SUCCESS /AI_PROJECT/AIxbsk/sqlite_db/test1.db
[sqla] [CREATE TABLE contacts(][]
[sqla] [ id1 INTEGER PRIMARY KEY,][]
[sqla] [ fname TEXT NOT NULL,][]
[sqla] [ lname TEXT NOT NULL,][]
[sqla] [ email TEXT NOT NULL UNIQUE,][]
[sqla] [ phone TEXT NOT NULL UNIQUE][)]
[sqla] [run][hi][EXEC] db_tbl_exec=CREATE TABLE contacts( id1 INTEGER PRIMARY KEY, fname TEXT NOT NULL, lname TEXT NOT NULL, email TEXT NOT NULL UNIQUE, phone TEXT NOT NULL UNIQUE);
*** sql_sqla_table [ contacts][]
*** sql_sqla_vars [ id1, fname,lname,email,phone][]
*** sql_sqla_insert [INSERT INTO contacts( id1, fname,lname,email,phone) values ( '1', 'fname1', 'ln1', '1@1.com', '111-1111')]
*** sql_sqla_insert [INSERT INTO contacts( id1, fname,lname,email,phone) values ( '2', 'fname2', 'ln2', '1@2.com', '222-1111')]
*** sql_sqla_insert [INSERT INTO contacts( id1, fname,lname,email,phone) values ( '3', 'fname3', 'ln3', '1@3.com', '333-1111')]
*** sql_sqla_delete [DELETE from contacts where id1='3']
*** sql_sqla_where [ id1='2' and phone='222-1111']
*** sql_sqla_update [UPDATE contacts set fname='fname222',lname='lname222' where id1='2' and phone='222-1111']
[hi] db_close
[sqla] [close]
G:\AI_PROJECT\cvtList\cvtList\x64\Debug\BskSuperPSR.exe(828 프로세스)이(가) 0 코드로 인해 종료되었습니다.
디버깅이 중지될 때 콘솔을 자동으로 닫으려면 [도구]->[옵션]->[디버깅]->[디버깅이 중지되면 자동으로 콘솔 닫기]를 사용하도 록 설정합니다.
이 창을 닫으려면 아무 키나 누르세요.

2019년 12월 17일 화요일

[AI 엔진] float 실수 변수 추가 및 테스트



AI 프로그램기능은 이제 함수 와 및 실수 연산을 수행할수 있게 되었습니다.
지금까지 개발내용은 다음의 블로그에서 확인 가능합니다.
진정한 AI 의 엔진 개발을 목표로 하고 있으며 이프로그램 은 계속 리셋되어
2019.10 부터 새로 개발중입니다.
https://blog.naver.com/ihaneter/221740768914


안녕하세요 오타쟁이 한이터 백승기 입니다.
이번에는 sin,cos,tan 함수 기능을 추가했고
추가한 sin,cos,tan 함수를 테스트합니다.
원래 정수만 인식 되도록 만든 AI 엔진입니다.
하지만 이번에 float 변수를 추가 했고 테스트를 진행하고 있습니다.
다음은 소스 스크립트 입니다.
string demo_math = ""
"void bsk_main() {"
" print ' sin(1)=',@sin(1);"
" print ' cos(3)=',@cos(3);"
" print ' tan(5)=',@tan(5);"
" print ' asin(1)=',@asin(1);"
" print ' acos(0.1)=',@acos(0.1);"
" print ' atan(5)=',@atan(5);"
" print ' ';"
" print ' sin loop 1 to 9;"
" loopfor II=1,9,1;"
" print ' sin(',II,')=',@cos(II),' cos(',II,')=',@tan(II),' sin(',II,')=',@tan(II);"
" loopend II;"
"};";
다음은 소스 스크립트의 실행 결과 입니다.
사실 int 와 float 는 모두 내부에서 실수 연산을 수행하도록 변경 하였지만
프로그램 내부에서 실수와 정수가 구분되도록 하여야 하기때문에
int 와 float 를 구분하였습니다.
이것이 장차 어떻게 발전할지 기대됩니다.
------- comfile_list -----------
make_split_src_1 src_list count = 1
func_name[0]=void bsk_main()
[00][00] [print][' sin(1)='][,][@sin(1)]
[00][01] [print][' cos(3)='][,][@cos(3)]
[00][02] [print][' tan(5)='][,][@tan(5)]
[00][03] [print][' asin(1)='][,][@asin(1)]
[00][04] [print][' acos(0.1)='][,][@acos(0.1)]
[00][05] [print][' atan(5)='][,][@atan(5)]
[00][06] [print][' ']
[00][07] [print][' sin loop 1 to 9]
[00][08] [loopfor][II][=][1][,][9][,][1]
[00][09] [print][' sin('][,][II][,][')='][,][@cos(II)][,][' cos('][,][II][,][')='][,][@tan(II)][,][' sin('][,][II][,][')='][,][@tan(II)]
[00][10] [loopend][II]
------- comfile_var -----------
------- run bsk_main ----------
sin(1)= 0.841471
cos(3)= -0.989992
tan(5)= -3.380515
asin(1)= 1.570796
acos(0.1)= 1.470629
atan(5)= 1.373401
sin loop 1 to 9
sin( 1 )= 0.540302 cos( 1 )= 1.557408 sin( 1 )= 1.557408
sin( 2 )= -0.416147 cos( 2 )= -2.185040 sin( 2 )= -2.185040
sin( 3 )= -0.989992 cos( 3 )= -0.142547 sin( 3 )= -0.142547
sin( 4 )= -0.653644 cos( 4 )= 1.157821 sin( 4 )= 1.157821
sin( 5 )= 0.283662 cos( 5 )= -3.380515 sin( 5 )= -3.380515
sin( 6 )= 0.960170 cos( 6 )= -0.291006 sin( 6 )= -0.291006
sin( 7 )= 0.753902 cos( 7 )= 0.871448 sin( 7 )= 0.871448
sin( 8 )= -0.145500 cos( 8 )= -6.799711 sin( 8 )= -6.799711
sin( 9 )= -0.911130 cos( 9 )= -0.452316 sin( 9 )= -0.452316