*인*
Bronze개인인증
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 9
검색어 입력폼
  • 임베디드프로젝트 (Graphic LCD로 문자나 그림을 출력)
    ▣ 프로젝트를 수행할 때 얻게 되는 장점➊ LDS2000장비를 사용하지 않기 때문에 실습후에도 LDS2000장비에 대해 별도로 시간과 장소를 할애 하지 않아도 된다.❷ 실습의 틀에서 벗어나 창의적인 주제로 프로젝트를 할 수 있기 때문에 프로젝트에 대한 질을 향상시킬 수 있다고 본다.❸ 임베디스 소프트웨어를 직접 구상하고 만들어 봄으로서 차후 다른 여러 소프트웨어도 쉽게 제작할 수 있을거라 생각된다.❹ 프로젝트를 수행함으로써, 실무에 중점을 둘 수 있고 프로젝트 진행 능력과 프로젝트 운영 환경등을 체험할 수 있다.2. 연구개발 목표 이번 프로젝트의 최종 목표는 실습에서 배운 내용을 토대로 PC의 직렬포트나 병렬포트를 이용하여 Graphic LCD로 문자나 그림을 출력하는 것이다.❶ linux kernel2.4기반의 응용 프로그램을 통한 LCD화면에서의 GUI환경 구현❷ 매크로를 통한 예약그림과 예약문자 LCD화면 출력❸ 응용프로그램에서의 키조작을 통한 LCD화면의 메뉴이동3. 연구개발 내용 및 범위▣ 연 구 내 용❶ 연구 개발장비 확보 및 개발 환경 조성❷ Graphic LCD의 디바이스 드라이버 작성❸ 디바이스 드라이버와 사용자간의 응용프로그램 구현❹ 예약된 문자와 그림을 Graphic LCD에서 출력❺ 응용프로그램에서의 이미지 호출을 Graphic LCD에서 매크로 형식으로 출력❻ 사용자가 Graphic LCD의 메뉴를 보고 메뉴이동 키를 누르면 Graphic LCD에서의 메뉴이동....
    공학/기술| 2011.06.26| 40페이지| 3,000원| 조회(680)
    미리보기
  • [운영체제(OS) Shell(셸) 구현]운영체제(OS) Shell 구현
    1. 문제 제기(1) 환경 변수 관련(2) CD 명령어 구현(3) 히스토리 관련(4) 명령어관련i) && 와 || 관련ii) ; 와 ( ) 구현(5) 리다이렉션 관련(6) 파이프 관련2. 관련 연구(2) cdint chdir(const char *path)char * getcwd(char *buf, size_t size);해더파일 : unistd.hChdir() 함수에는 변경하고자 하는 경로 명을 인수로 전달한다.Getcwd() 함수는 현재의 경로 위치를 첫번째 인수 buf에 넘겨준다.(3) historyint isdigiit(int c);Int isalpha(int c);해더파일 : chtype.h(6) pipeint pipe(int file_descriptor[2]);해더파일 : unistd.hPipe()함수를 호출하면 파이프를 생성하고 file_descriptor배열에 파이프 디스크립터를두개 받아온다.3. 문제 해결 방법(2) cd 명령어 구현int chdir(const char *path);char * getcwd(char *buf, sizt_t size);위의 함수를 이용하여서 모든 cd 명령어의 옵션을 구현하였습니다.(3) 히스토리 관련History 라는 2차원 배열을 전역 변수로 선언하여 사용자가 입력모든 명령어를배열에다가 넣어두고.. 번호가 들어오면은 들어온 번호의 배열을 실행시켰고문자가 들어오면은 strstr() 함수를 이용하여서 가장 최근의 명령어를 찾아서 실행시켰습니다.(4) && 와 || 구현&& 와 || 를 먼저 파싱을 한 후에 && 와 || 의 개수만큼 반복을 한다.그런데 && 는 1번째 명령어가 참을 경우에만 뒤의 명령어를 실행하고 || 의 경우에는1번째 명령어가 참이 아닐 경우에도 실행을 한다.(6) 파이프 관련Pipe() 함수를 호출하면 파이프를 생성하고 file_descriptor 배열에 파이프 디스크립터를두개 받아온다.이중 file_descriptor[0]에는 파이프의 입력 디스크립터를 ,file_descriptor[1]에는 mmand */int run_pipeCmd(char *arg[]);/* run pipe command*/int run_orCmd(char *arg[]);/* run || command*/int run_andCmd(char *arg[]);/* run && command*/void redirect_in(char *arg[]); /* redirection "" */void redirect_out_add(char *arg[]);/* redirection ">>" */int builtin_func(char *arg[]);/* cd, pwd , exit Command */void cd_func(char *arg[]);/* change dirctory */void run_history(char arg[]);/* history command */void history_display(void); /* history display */void set_history(char arg[]); /* history command save */void pwd_func(char *argv[]);/* pwd*/void exit_func(char *argv[]);/* exit*/int back_func(char *arg[]);/* & */int pipe_check(char *arg[]);/* | check*/struct builtcmd {char *cmd;void (*fptr)(char *arg[]);}builtin[6] ={ {"cd", cd_func},{"pwd",pwd_func}, {"exit",exit_func},{NULL,NULL} };char history[100][20]; /* history save command */char history_Count;/* history Command Count */char env[100][100];/* */char temp_homedir[1024];/* Temp Home dirtoary */extern char **environ;char **pifunc(or_arglist)){run_orCmd(or_arglist);}}else if(pArgCnt == 2 || pArgCnt == 1){if(!builtin_func(arglist)){run_command(arglist);}}else if(!builtin_func(pipe_arglist)){run_pipeCmd(pipe_arglist);}pArgCnt = 0;/* pipe Command init */orCnt = 0; /* || Command init */andCnt = 0; /* && Command init */for(i=0; or_arglist[i]; i++)or_arglist[i] = NULL;for(i=0; and_arglist[i]; i++)and_arglist[i] = NULL;for(i=0; arglist[i]; i++)arglist[i]=NULL;}}char ** parse(char *line){// parseingchar *token;static char *arg[80];int i=0;if(line==NULL)return NULL;token=strtok(line," tn");while(token){arg[i++]=token;token=strtok(NULL, " tn");}arg[i]=NULL;return (char **) arg;}char ** pipe_parse(char *line){// pipe parseing ( | )char *token;static char *arg_pipe[80];int i=0;if(line==NULL)return NULL;token=strtok(line,"|");while(token){arg_pipe[i++]=token;token=strtok(NULL, "|");pArgCnt++;}arg_pipe[i]=NULL;return (char **) arg_pipe;}char ** or_parse(char *line){// parseing ( || )char *token;static char *arg_or[80g[0]);exit(1);}close(0);dup2(pfd[0], 0);close(pfd[0]);close(pfd[1]);execvp(arg[pipe_pos+1], &arg[pipe_pos+1]);perror("execvp");break;}else{execvp(arg[0], &arg[0]);exit(1);}default:if(back_flag==0){waitpid(pid,NULL,0);}waitpid(-1, NULL, WNOHANG);break;}return 0;}int run_pipeCmd(char *arg[]) // 참고 1번 참고 2번{int i,pid;char **arglist;char **arglist2;int pfd[2];if((pid = fork()) == 0){for(i = 0; i < pArgCnt-1;i++){pipe(pfd);switch(pid = fork()){case -1:perror("fork");exit(1);case 0:close(STDOUT_FILENO);dup2(pfd[1],STDOUT_FILENO);close(pfd[0]);close(pfd[1]);arglist = parse(arg[i]);execvp(arglist[0],arglist);break;default:close(STDIN_FILENO);dup2(pfd[0],STDIN_FILENO);close(pfd[0]);close(pfd[1]);}}arglist2 = parse(arg[pArgCnt-1]);execvp(arglist2[0],arglist2);}else{waitpid(pid, NULL, 0);}return 0;}int run_orCmd(char *arg[]){int i,pid;char **arglist;int pfd[2];if((pid = fork()) == 0){for(i = 0; i < orCnt;i++){pipe(pfd);switch(pid = fork()){case -1:perror("fork");exit(1);case 0:arglist = parse(argi]; i++){if(strcmp(arg[i], ">>") == 0)break;}if(arg[i]){if((fd = open(arg[i+1],O_WRONLY|O_APPEND,0644))==-1){perror("open");return ;}dup2(fd,1);close(fd);for(;arg[i+2];i++)arg[i] = arg[i+2];arg[i] = NULL;}}int builtin_func(char *arg[]){// builtin Commandint i;for(i = 0; builtin[i].cmd ; i++){if(strcmp(builtin[i].cmd,arg[0]) == 0){builtin[i].fptr(arg);return 1;}}return 0;}void cd_func(char *arg[]) 참고 1번 143page{// change dirtorychar* homedir;char path[1024];strcpy(path,getcwd(path,1023));if(arg[1]==NULL){homedir = getenv("HOME");}else if(strcmp(arg[1],"~")== 0){ /* home dir */homedir = getenv("HOME");}else if(strcmp(arg[1],"-") == 0){chdir(temp_homedir);}elsehomedir=arg[1];if(strcmp(arg[1],"-") == 0){chdir(temp_homedir);}else{chdir(homedir);}if(!strcmp(temp_homedir,path)== 0){strcpy(temp_homedir,path);}}void pwd_func(char *arg[]){// pwdchar path[1024];getcwd(path,1023);printf("%sn",path);}void exit_func(char *arg[]){exit(0);}void run_history(char arg[]){// history cmmand runint num;int}
    공학/기술| 2010.06.15| 23페이지| 2,000원| 조회(580)
    미리보기
  • [운영체제(OS) Shell(셸) 구현]운영체제(OS) Shell 구현
    #include #include #include #include #include #include #include #include #include #include #include #include #include /* User define function */char ** parse(char *line); /* parseing */char ** pipe_parse(char *line); /* pipe_parseing */char ** or_parse(char *line); /* || parseing */char ** and_parse(char *line); /* && parseing */int run_command(char *arg[]); /* command */int run_pipeCmd(char *arg[]); /* run pipe command */int run_orCmd(char *arg[]); /* run || command */int run_andCmd(char *arg[]); /* run && command */void redirect_in(char *arg[]); /* redirection "" */void redirect_out_add(char *arg[]); /* redirection ">>" */int builtin_func(char *arg[]); /* cd, pwd , exit Command */void cd_func(char *arg[]); /* change dirctory */void run_history(char arg[]); /* history command */void history_display(void); /* history display */void set_history(char arg[]); /* history command save */void pwd_func(char *argv[]); /* pwd */void exit_func(char *argv[]); /* exit */int back_func(char *arg[]); (void){char line[256]; /* User Input Save array */char pipe_line[256];char or_line[256];char and_line[256];char **arglist;int i;while(1){printf("myshell> ");fgets(line, 255, stdin);if(line[0]=='n')continue;if(line[0]== ' ')continue;line[strlen(line)-1]='';if(line[0] =='!'){run_history(line);continue;}strcpy(pipe_line,line);strcpy(or_line,line);strcpy(and_line,line);set_history(line);if(strcmp(line,"history") == 0){history_display();continue;}pipe_arglist = pipe_parse(pipe_line);or_arglist = or_parse(or_line);and_arglist = and_parse(and_line);arglist=parse(line); /* command paresing */if(andCnt >= 2){if(!builtin_func(and_arglist)){run_andCmd(and_arglist);}}else if(orCnt >= 2){if(!builtin_func(or_arglist)){run_orCmd(or_arglist);}}else if(pArgCnt == 2 || pArgCnt == 1){if(!builtin_func(arglist)){run_command(arglist);}}else if(!builtin_func(pipe_arglist)){run_pipeCmd(pipe_arglist);}pArgCnt = 0; /* pipe Command init */orCnt = 0; /* || Command init */andCnt = 0; /* && Command init */for(i=rn (char **) arg_pipe;}char ** or_parse(char *line){// parseing ( || )char *token;static char *arg_or[80];int i=0;if(line==NULL)return NULL;token=strtok(line,"||");while(token){arg_or[i++]=token;token=strtok(NULL, "||");orCnt++;}arg_or[i]=NULL;return (char **) arg_or;}char ** and_parse(char *line){// parseing ( && )char *token;static char *arg_and[80];int i=0;if(line==NULL)return NULL;token=strtok(line,"&&");while(token){arg_and[i++]=token;token=strtok(NULL, "&&");andCnt++;}arg_and[i]=NULL;return (char **) arg_and;}int run_command(char *arg[]){int pid;int back_flag = 0;int pfd[2], pipe_pos;back_flag = back_func(arg);switch(pid = fork()){case -1:perror("fork");break;case 0:if(strcmp(arg[0], "history") == 0){history_display();exit(1);}redirect_in(arg);redirect_out(arg);redirect_out_add(arg);if((pipe_pos=pipe_check(arg)) != 0){pipe(pfd);switch(fork()){case -1:perror("fork");exit(1);case 0://Child Processclose(1);dup2(pfd[1], 1); //참고1번 page126close(pfd[1]);close(pfd[0]);execvp(arg[0],&arg],arglist);break;default:close(STDIN_FILENO);dup2(pfd[0],STDIN_FILENO);close(pfd[0]);close(pfd[1]);}}arglist2 = parse(arg[pArgCnt-1]);execvp(arglist2[0],arglist2);}else{waitpid(pid, NULL, 0);}return 0;}int run_orCmd(char *arg[]){int i,pid;char **arglist;int pfd[2];if((pid = fork()) == 0){for(i = 0; i < orCnt;i++){pipe(pfd);switch(pid = fork()){case -1:perror("fork");exit(1);case 0:arglist = parse(arg[i]);execvp(arglist[0],arglist);break;default:waitpid(pid, NULL, 0);break;}}exit(0);}else{waitpid(pid, NULL, 0);}return 0;}int run_andCmd(char *arg[]){int i,pid,status = 0;char **arglist;if((pid = fork()) == 0){for(i = 0; i < andCnt;i++){if(status == 0){switch(pid = fork()){case -1:perror("fork");exit(1);case 0:arglist = parse(arg[i]);execvp(arglist[0],arglist);break;default:waitpid(pid, &status, 0);break;}}else{break;}}exit(0);}else{waitpid(pid, NULL, 0);}return 0;}// return value : 0 -- no redirect// : 1 -- redirectvoid redirect_in(char *arg[]){// redirectin() checkint i, fd;for(i = 0; arrcmp(builtin[i].cmd,arg[0]) == 0){builtin[i].fptr(arg);return 1;}}return 0;}void cd_func(char *arg[]) 참고 1번 143page{// change dirtorychar* homedir;char path[1024];strcpy(path,getcwd(path,1023));if(arg[1]==NULL){homedir = getenv("HOME");}else if(strcmp(arg[1],"~")== 0){ /* home dir */homedir = getenv("HOME");}else if(strcmp(arg[1],"-") == 0){chdir(temp_homedir);}elsehomedir=arg[1];if(strcmp(arg[1],"-") == 0){chdir(temp_homedir);}else{chdir(homedir);}if(!strcmp(temp_homedir,path)== 0){strcpy(temp_homedir,path);}}void pwd_func(char *arg[]){// pwdchar path[1024];getcwd(path,1023);printf("%sn",path);}void exit_func(char *arg[]){exit(0);}void run_history(char arg[]){// history cmmand runint num;int i;char temp[80];char **arglist;char *tmp;strcpy(tmp,arg);tmp = strtok(tmp,"!");if(isalpha(arg[1]) != 0) // 참고 3번{for(i=history_Count; i > 0; i--){if(strstr(history[i],tmp) != NULL){printf("%sn",history[i]);strcpy(temp, history[i]);break;}}}else{num = atoi(&arg[1])-1;strcpy(temp, history[num]);}a;}
    프로그램소스| 2006.08.21| 2,000원| 조회(2,226)
    미리보기
  • [어셈블리] 게임프로젝트
    Ⅰ. 프로젝트 개요Ⅰ-2. 프로젝트 목표 어셈블리언어에 대해 공부하고 그를 통해 프로그램을 작성 해 보자.Ⅰ-3. 개발 프로그램 엄마찾아 삼만리! (미로찾기 게임)
    프로그램소스| 2010.03.05| 10페이지| 1,000원| 조회(300)
    미리보기
  • 운영체제 임베디드 프로젝트(Qt 제어 예제를 응용하여 야구게임) 평가A좋아요
    목 차1. 연구개발의 필요성2. 연구개발 목표3. 연구개발 내용 및 범위4. 추진전략 및 방법5. 연구 결과6. 기대성과 및 활용방안7. 연구원 편성표8. 주요 연구기자재9. 연구추진 일정 및 계획첨부 : 소스코드1. 연구개발의 필요성Qt에 대해서 알아보기 위하여 Qt를 이용한 응용프로그램을 개발함으로써 좀 더 쉽게 접근할 수 있을 것이라고 생각했다. Qt는 UNIX와 X11 시스템을 위한 C++ 클래스 라이브러리이자 GUI Tool kit 으로 Qt/Embedded는 X-Window 없이 리눅스 커널이 제공하는 프레임 버퍼(Frame Buffer)를 이용하여 그래픽 장치에 접근하는 방식을 사용한다. 또, Qt/X11, Qt/Windows, Qt/MAC 버전과 소스 호환성을 가지고 있기 때문에 X11, Windows, MAC용으로 작성된 어플리케이션을 크게 수정하지 않고 임베디드용으로 쉽게 포팅할 수 있다.이런 Qt를 이용하여 기존에 KeyPad를 입력하여 LED를 제어하던 야구게임에서 좀 더 업그레이드하여 Qt를 이용하여 터치스크린으로 입력을 하여 동일한 야구게임에 적용을 해 보려고 한다. 기존 야구 게임에 Qt를 접목시킴으로써 Qt에 대한 충분한 학습과 예제를 통해서 숙지하고, 응용함으로써 확실한 이해를 도모할 수 있다.다음은 Qt/X11과 Qt/Embedded의 구성을 나타낸다.다음은 Qt/Embedded의 특징을 나타낸다.·Qt/Embedded의 특징- 옵션에 따라 630KB ~ 5MB 크기- 다양한 플랫폼 지원- Qt/X11, Qt/Windows, Qt/MAC과 소스 레벨 호환성- 여러 개의 어플리케이션들을 동시에 실행 가능- 비디오 프레임 버퍼에 직접 접근- 트루타입(TrueType)과 BDF(Bitmap Distribution Format) 글꼴 지원- 다국어, 유니코드, 국제화를 지원2. 연구개발 목표기존에 키패드를 이용하여 입력하는 야구게임에서 업그레이드하여, Qt 제어 예제를 응용하여 야구게임을 위한 응용 프로그램과 터치스크린 사이에 값을 전 Cross Compiler- Qt/Embedded- Tmake 1.8H/W- PC (Pentium 4)- LDS20009. 연구추진 일정 및 계획K : 아무개1, S : 아무개2일활동분야*************9303112345가중치▶ Qt 예제프로그램- 분석KSKS10▶ Qt/Embedded- 패치KS8- 컴파일KS5- 커널 설정KS7▶ 타겟보드 실행환경- 구축KS10▶ 터치스크린- 구현KKK15▶ 응용프로그램- 수정SSS10▶ 통합- 응용프로그램 통합KS4- 드라이버 통합SKS7▶ Test- 단위테스트KSKS7- 통합테스트KSKS7▶ 결과보고서 작성KSKSKS10가중치*************3103333100[ 참고 문헌 ][1] LDS2000 매뉴얼[2] LDS2000_매뉴얼_HW[2] IT EXPERT, 임베디드 리눅스, 박재호, 한빛미디어[3] 임베디드 리눅스 프로그래밍, 이연조, PCBOOK※ 첨부 : 소스코드 [디바이스 부분은 전 프로젝트와 동일하므로 생략]Baseball.cpp#include "baseball.h"#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int cnt = 0; // 야구게임 변수int A_num[3]; // 난수로 발생시킬 정답 ex> 8 9 2int I_num[3];// 사용자가 입력할 숫자 ex> 3 2 7int fd;// 파일 포인터Baseball::Baseball( QWidget* parent, const char* name, WFlags fl ): QWidget( parent, name, fl ){if ( !name ) // 화면설계에 대한 부분setName( "Baseball" );resize( 624, 480 );setSizePolicy( QSizePolicy( (QSizePolicy::);ball_3->setChecked( FALSE );ball_3->setTristate( FALSE );//line Editline = new QLineEdit( this, "line" );line->setGeometry( QRect( 100, 160, 411, 51 ) );QFont line_font( line->font() );line_font.setFamily( "adobe-helvetica" );line_font.setPointSize( 24 );line_font.setBold( TRUE );line->setFont( line_font );line->setText( tr( "Touch Number" ) );line->setMaxLength( 40 );line->setAlignment( int( QLineEdit::AlignCenter ) );strike = new QGroupBox( this, "strike" );strike->setGeometry( QRect( 100, 80, 190, 61 ) );cg.setColor( QColorGroup::Foreground, black );cg.setColor( QColorGroup::Button, QColor( 255, 170, 255) );cg.setColor( QColorGroup::Light, white );cg.setColor( QColorGroup::Midlight, QColor( 255, 212, 255) );cg.setColor( QColorGroup::Dark, QColor( 127, 85, 127) );cg.setColor( QColorGroup::Mid, QColor( 170, 113, 170) );cg.setColor( QColorGroup::Text, QColor( 85, 0, 0) );cg.setColor( QColorGroup::BrightText, white );cg.setColor( QColorGroup::ButtonText, QColor( 85, 0, 0) );cg.setColoton_exit->font() );button_exit_font.setFamily( "adobe-helvetica" );button_exit_font.setPointSize( 24 );button_exit_font.setBold( TRUE );button_exit->setFont( button_exit_font );button_exit->setText( tr( "Exit" ) );//Restart Buttonbutton_restart = new QPushButton( this, "button_restart" );button_restart->setGeometry( QRect( 120, 380, 180, 40 ) );QFont button_restart_font( button_restart->font() );button_restart_font.setFamily( "adobe-helvetica" );button_restart_font.setPointSize( 24 );button_restart_font.setBold( TRUE );button_restart->setFont( button_restart_font );button_restart->setText( tr( "Restart" ) );//Button GroupButtonGroup1 = new QButtonGroup( this, "ButtonGroup1" );ButtonGroup1->setGeometry( QRect( 90, 220, 421, 151 ) );ButtonGroup1->setLineWidth( 0 );ButtonGroup1->setTitle( tr( "" ) );//Button 0button_0 = new QPushButton( ButtonGroup1, "button_0" );button_0->setGeometry( QRect( 340, 80, 61, 61 ) );QFont button_0_font( button_0->font() );button_0_font.setFamily( "adobe-helvesetFamily( "adobe-helvetica" );button_7_font.setPointSize( 32 );button_7_font.setBold( TRUE );button_7->setFont( button_7_font );QFont button_2_font( button_2->font() );button_2_font.setFamily( "adobe-helvetica" );button_2_font.setPointSize( 32 );button_2_font.setBold( TRUE );button_2->setFont( button_2_font );QFont button_3_font( button_3->font() );button_3_font.setFamily( "adobe-helvetica" );button_3_font.setPointSize( 32 );button_3_font.setBold( TRUE );button_3->setFont( button_3_font );QFont button_9_font( button_9->font() );button_9_font.setFamily( "adobe-helvetica" );button_9_font.setPointSize( 32 );button_9_font.setBold( TRUE );button_9->setFont( button_9_font );QFont button_1_font( button_1->font() );button_1_font.setFamily( "adobe-helvetica" );button_1_font.setPointSize( 32 );button_1_font.setBold( TRUE );button_1->setFont( button_1_font );}return ret;}//초기화void Baseball::init(){line->clear(); //Text지우기line->setAlignment( int( QLineEdit::AlignRight) ); //오른쪽정렬//Strike Check 지우
    공학/기술| 2010.03.05| 34페이지| 2,000원| 조회(1,196)
    미리보기
전체보기
받은후기 2
2개 리뷰 평점
  • A+최고예요
    0
  • A좋아요
    1
  • B괜찮아요
    1
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 06월 01일 월요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
2:22 오후
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감