• 전문가 요청 쿠폰 이벤트
*상*
Bronze개인인증
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 4
검색어 입력폼
  • 웹페이지 개발 환경 구축부터 테스트까지(이클립스, jdk, mysql, 톰캣) 설치,연동,테스트 윈도우10기준
    * 본 자료는 썸네일을 참고 하시기 바랍니다.
    공학/기술| 2017.01.16| 75페이지| 2,000원| 조회(201)
    미리보기
  • Bomb LAB 보고서 풀이과정(이미지첨부) 설명, 플로우차트, C언어표현, secert까지
    REPORT제목 : BombLab 보고서교 과 명 : 시스템프로그래밍※ 목 차 ※1. 개요2. Phase_13. Phase_24. Phase_35. Phase_46. Phase_57. Phase_68. Secret_phase1. 개요BombLab은 오브젝트 파일의 어셈블리 코드를 보아 함수의 흐름과 변수를 파악하여 문제를 풀어가는 것이다. C로 구현한 파일을 gcc로 컴파일 하여 어셈블리어로 표현한 파일을 해독하는 것이기 때문에 먼저 어셈블리어를 objump명령어를 이용하여 메모장에 옮긴 후 한글에 옮겨 한 줄 한 줄 읽어가는 식으로 시작을 하였다..TXT(메모장).HWP(한글)시작하기 전에 각 함수를 알아보기 위해 breakpoint를 설정한다.2. Phase_1- 코드- 해결방법위의 코드를 파악해보면 string_not_equal함수를 호출 하는 것을 보아 문장이 같은지 아닌지를 보는 것 같다. string_not_equal함수의 파라미터로는 0x8049860에 있는 것과 입력한 것인데 이 둘이 같아야 폭탄이 터지는 것을 피할 수 있는 것을 알 수 있다. 0x8049860에 무엇이 들어있는지 파악해보면 “The future will be better tomorrow.”이 들어가 있음을 알 수 있다.따라서 입력 값에 “The future will be better tomorrow.”을 입력하면 Phase_1을 통과하는 것을 볼 수 있다.- Flow Chart- C언어표현- 정답 : “The future will be better tomorrow.”3. Phase_2- 코드- 해결방법위의 코드를 파악해보면 read_six_numbers함수를 호출하는 것으로 보아 6개의 숫자를 맞추는 것 같다. 하지만 위의 코드에서 phase_1과는 달리 답을 쉽게 찾을 수가 없어 read_six_numbers함수를 보았다.read_six_numbers함수를 보면 메모리를 할당 한 후 0x8049c1f를 esp+4에 넣어주는 것을 볼 수 있다. 따라서 0x8049c1f가 무엇인sscanf@plt함수를 보자짧은데 뭐라는지 잘 모르겠다. 직접 확인을 해보아야 겠다.먼저 1을 입력해 보았다.1을 입력하니 1이 나왔다. 입력한 값이 그대로 나오는 건가? 입력한 값의 카운트 인가?0과 1을 입력해 보았다.0과 1을 입력하니 카운트 인거 같았다. 카운트가 1보다 커야 폭탄을 피할 수 있는 것을 알 수 있다.그리고 밑에를 보면 switch함수의 형태를 볼 수 있다. 일단 7개의 case가 있는 switch문이다. 여기서 입력 값이 7보다 작아야 하는 것을 알 수 있다. 그리고 입력 값에 대하여 점프를 한다. 0을 입력하면 0xb7=183, 1을 입력하면 0x17b=379, 2를 입력하면 0xe3=227, 3을 입력하면 587, 4를 입력하면 460, 5를 입력하면 917, 6을 입력하면 108임을 알 수 있다.입력을 해보자.답이 맞았다.- Flow Chart- C언어표현- 정답 : “0 183” (외에 6가지 더 있다)5. Phase_4- 코드- 해결방법위의 코드를 보면 0x8049c2e에 있는 것이 esp+4로 넣어지는 것을 알 수 있다. 0x8049c2e에 무엇이 있는지 보면숫자 하나를 입력 받음을 알 수 있다.다음으로 isoc99_sscanf@plt함수는 앞에서 알아본 함수와 같음을 알 수 있다. 카운트 함수로써 1과 다르면 폭탄을 call하는 것을 알 수 있다. 다음을 보면 입력한 수와 0과 비교하는 것을 알 수 있다. 0보다 크면 폭탄을 피해가는 것을 보아 양수를 입력해야 한다는 것을 알 수 있다. 다음으로 입력 받은 값을 esp에 옮긴 후 func4함수를 호출한다.func4함수를 알아보자.func4 함수를 보면 함수 안에서 함수를 또 부르는 것으로 보아 재귀 함수임을 알 수 있다.먼저 입력된 수가 1보다 작거나 같으면 +51로 점프를 하여 리턴을 하는 것을 알 수 있다. 만약 1보다 크면 lea "-0x1(%ebx),%eax"를 보면 ebx메모리에 있는 값에서 1을 뺀 후 그 주소를 eax로 보내고, "mov %eax,(%esp)“ }이런 식으로 앞에 1을 빼고 계산하기 때문이다.이제 다시 phase_4를 보면 func4함수에서 리턴 받은 값과 1055를 비교하여 같으면 폭탄을 피할 수 있는 것을 알 수 있다. 즉 답이 피보나치의 몇 번째 수가 0x1055=4181인지를 맞추는 것 같다.일일이 계산하면 오래 걸릴 것 같아 c를 이용해 피보나치를 구현하여 알아보았다.f즉 19번째 피보나치수열이 4181임을 알 수 있다.이에 따라 답이 18임을 알 수 있다. 답이 맞는지 확인해 보자.앞에 phase_1~phase_3이 입력하지 않았는데 통과하는 것은 text파일에 답을 저장해놓고 r text file name을 하여 자동 입력이 되게 하여 앞의 단계를 넘어간 것이다.- Flow Chart- C언어표현- 정답 : “18”6. Phase_5- 코드- 해결방법먼저 입력된 값이 string_length에 의해 길이가 구해진 후 6과 비교하여 같으면 폭탄을 피할 수 있는 것을 보아 답은 길이가 6인 char인 것을 알 수 있다. 그리고 중간을 생략하고 밑으로 내려가 보면 0x80498aa에 있는 것과 입력한 것에서 중간 생략한 과정을 거친 것과 string_not_equal함수의 파라미터로 들어가 같으면 폭탄을 피할 수 있음을 알 수 있다.먼저 0x80498aa가 무엇인지 알아보면너무 쉽게 답이 나오는 것 같아 의심은 해보지만 일단 확인을 해보자.역시 이렇게 쉽게 풀리는 것이 이상했다.그럼 앞에서 생략한 중간 과정을 알아보자.먼저 +49와 +55, +57을 보아 for문임을 알 수 있다. +31부터 +45까지 for문 안을 보면 ebx+eax+1을 edx에 넣은 후 edx와 0xf의 and값을 edx에 넣고 0x80498d4에 더해 edx에 넣고 eax번째 값으로 넣는다.0x80498d4에 무엇이 있는지 보자"isrveawhobpnutfg"임을 알 수 있다.대략 과정을 살펴보니 입력한 문자의 아스키코드와 0xf와 and값을 구한 후 "isrveawhobpnutfg"문자 중에 해당 번째의 숫자를 1부터 1을 뺀 값이 6보다 작아야 하는 것을 알 수 있다. 입력한 여섯 개의 숫자중 하나인 것 같은데 정확히 알지 못하니 확인을 해봐야겠다.두 가지 값을 입력해 보았는데 모두 같은 첫 번째 숫자였다.eax를 입력한 값의 첫 번째 숫자인 것을 알고, 계속해서 코드를 보면 첫 번째 숫자에서 1을뺀 수가 5보다 작거나 같으면 폭탄을 피할 수 있는 것을 알 수 있다. 다음으로 앞에서 0으로 선언했던 esi에 1을 더하고 6과 비교를 한다. esi가 6과 같으면 +106으로 점프를 한다. 그렇지 않으면 ebx에 esi를 넣는다. 그리고 0x28(%esp, %ebx, 4)를 eax에 넣어주고 0x24(%esp, %esi, 4)와 비교해서 다르면 폭탄을 면할 수 있다. ebx와 esi는 같은 수임을 알 수 있는데 먼저 앞에 x28(%esp, %esi, 4)는 두 번째 숫자 임을 알 수 있고, 다음 0x24(%esp, %esi, 4)는 첫 번째 값임을 알 수 있다. 이 둘이 같지 않으면 폭탄을 피할 수 있는 것을 알 수 있다. 다음은 ebx에 1을 더한 후 5와 비교하여 같거나 작으면 +57로 점프를 하는 것을 보아 반복문임을 알 수 있다. 즉 모든 수가 달라야 함을 알 수 있다.만약 반복문을 끝내면 다시 +30으로 가는데 esi값이 1이었으므로 0x28(%esp, %esi, 4)을 eax에 넣어주는데 이 값은 두 번째 값인 것을 알 수 있다. 이 숫자에 1을 빼 5보다 작거나 같아야 폭탄을 피할 수 있는데 이도 반복 문임을 알 수 있다. 이에 따라 모든 값에서 1을 뺀 값이 5보다 작거나 같아야 하는 것을 알 수 있다. 즉 모든 값이 6보다 작거나 같아야 하는 것을 알 수 있다. 이 두 가지 반복문을 마치고 +106으로 점프를 한다. ebx에 0을 넣고 이것을 esi에 넣은후 0x28(%esp, %ebx, 4)를 ecx에 넣는데 0x28(%esp, %ebx, 4)는 입력 값의 첫 번째 숫자이다. 그리고 eax에 1을 넣고 edx에는 0x804b2f4를 넣는다. 0x804b2f8에 eax를 넣고eax에 esp+28을 넣고 edx+8에 eax를 넣고 edx에 esp+32를 넣고 eax+8에 edx를 넣고eax에 esp+36을 넣고 edx+8에 eax를 넣고 eax+8에 0을 넣고 esi에 5를 넣는다.복잡해 보인다.정리해서 보면ebx에 esp+16을 넣고eax에 esp+20를 넣는다. ebx+8에 eax를 넣고edx에 esp+24을 넣는다. edx+8에 eax를 넣고eax에 esp+28을 넣고 edx+8에 eax를 넣고edx에 esp+32를 넣고 eax+8에 edx를 넣고eax에 esp+36을 넣고 edx+8에 eax를 넣고eax+8에 0을 넣는다0+4+8node1esp+16node2node2esp+20node3node3esp+24node4node4esp+28node5node5esp+32node6node6esp+360이런 식이되는 것이다.즉 원래 있었던 노드를 입력한 6개의 숫자 순서대로 놓고 노드의 순서를 다시 연결해주는 것이다.그다음 esi에 5를 넣고 eax에 ebx+8을 넣어서 eax를 edx에 넣어준다. 그리고 ebx와 edx를 비교하여 edx가 크거나 같으면 즉 앞 노드가 뒤에 노드보다 크거나 같으면 폭탄을 피할 수 있다. 그리고 ebx+8을 해준후 앞에서 5를 넣어준 esi에서 1을 뺀 다음 다시 +185로 점프해서 이를 반복한다. 그런데 5회반복인 것을 알긴 하겠는데 비교문이 없다. 0과 같지 않으면 반복하는 것인데 비교문이 없으면 자동으로 비교대상이 0으로 되는 것 같다.이렇게 phase_6을 살펴보았는데 결론은 주어진 노드의 값들을 큰 값부터 작은 값으로 정렬하는 순서를 입력하는 것이 답 같다. 앞에서 노드가 977, 138, 936, 834, 981, 385이므로 순서는 5 1 3 4 6 2가 되는 것 같다.확인을 해보자.- Flow Chart- C언어표현- 정답 : 5 1 3 4 6 27. Secret_phase정답을 모두 입력했는데 그냥 종료가 되었다. secret_phase는 나오지 않았다. 그래서 어떻게 s
    공학/기술| 2016.02.02| 40페이지| 5,000원| 조회(1,336)
    미리보기
  • MallocLAB explicit 보고서 평가D별로예요
    REPORT제목 : explicit교 과 명 : 시스템 프로그래밍※ 목 차 ※1. 개 요2. mm_explicit1. 개요explicit은 implicit과는 다르게 free블럭만 관리해주는 방식이다. 그리고 free블럭이 생기면 LIFO로 free list의 맨앞에 넣어준다. 앞에서 implicit는 수정해줄 때 마다 free블럭의 처음을 세팅해 주었지만 여기서는 항상 free블럭만 관리하고 LIFO로 넣어 주기 때문에 세팅이 필요없다.2. mm_explicit- MACROmacro는 ppt에 나와 있는데로 하였다. 대부분이 implicit의 macro랑 비슷하여 다른 몇 지만 설명해보면, HDRSIZE와 FTRSIZE는 헤더와 풋터 사이즈를 정의해 주었다. 그리고 GET8과 PUT8등 사이즈를 8단위로 하여 주소를 관리해 준다. 하지만 구현하면서 이 macro는 사용하지 않았다.- mm_init(void)init도 ppt에 나와 있는데로 구현하였다. 그리고 implicit의 초기화랑 비슷하다. 다만 블록의 앞부분에 다음 블록을 가리키는 주소와 이전 블록을 가리키는 주소를 저장을 해준다. 처음에는 앞뒤 블록이 없으므로 NULL로 저장해준다.PUT(h_ptr, NULL); 다음블럭을 가리키는 주소PUT(h_ptr + WSIZE, NULL); 이전블럭을 가리키는 주소이하 다른 것은 implicit과 동일하다.- *malloc(void)malloc은 요청받은 size byte만큼의 저장 공간을 할당해 주는 함수이다. 입력받은 사이즈에 따라 할당을 해주는지 어떤 사이즈로 할당을 해주는지 정하고 할당 해줄 공간이 없을 경우 free공간을 추가하여 추가받은 free공간을 할당해 준다.- free(void *bp)입력 받은 블록을 가용 메모리로 바꾸어 주는 함수로 해당 블록의 헤더와 풋터를 가용 상태로 바꾸어 주고 coalesce를 이용하여 해당 블록의 주변에 가용 블록이 있으면 정렬을 해준다.- realloc(void *oldptr, size_t size)할당 되어진 원래의 블록을 새로운 사이즈로 변경하여 주는 함수이다. 새로 할당 받을 사이즈에 따라 새로운 블록을 만들고 새로운 사이즈가 원래의 사이즈 보다 작으면 원래의 사이즈 보다 큰 부분에 있는 데이터는 복사가 되어도 쓸모가 없으므로 새로운 사이즈의 크기만큼만 복사해 준다. 그 반대이면 원래 블록에 있는 데이터를 모두 복사해준다.- *coalesce(void *bp)free된 블록을 입력받아 해당 블록의 앞과 뒤에 있는 블록이 free인지에 따라 free인 브럭이 있으면 해당 블록과 합쳐주는 함수이다. implicit과 달리 블록에서 다음 블록과 이전 블록을 가리키는 주소도 수정을 해 주어야 한다. 위에 이미지는 앞 뒤 블록이 모두 할당된 블록인 경우인데 이 경우에는 free list가 현재 NULL인지 아닌지에 따라 블록의 다음 블록을 가리키는 주소와 이전 블록을 가리키는 주소를 수정해주고 그렇지 않으면 첫 번째 블록 앞에 free된 블록이 올 수 있도록 수정해 준다.위에 있는 것은 앞 블럭은 할당 받은 블록이고 뒤에 블록만 free블럭인 경우이다. 따라서 뒤에 블록과 합쳐줘야 함으로 뒤에 블록이 free된 블록을 가리키고 free된 블록이 뒤에 블록을 가리키게 수정해 준다. 그리고 free된 블록의 뒤에 블록의 다음블럭이 존재하는 지에 따라 그 해당 블록과 free된 블록과 서로 가리킬수 있게 수정해준다.이 경우는 앞 블럭만 free블럭이고 뒤 블록은 할당 받은 블록일 경우이다. 앞 블럭이 할당된 블록이고 뒤에 블록이 free블럭인 경우를 반대로 생각하여 수정해 주면 된다.마지막으로 앞, 뒤 블록이 모두 free블럭 일때는 앞에서 했던 두가지를 합쳐서 앞 뒤블럭과 합치며 앞 블록의 이전블럭 뒷블럭의 다음 블록에 대한 가리키는 주소를 알맞게 수정 해준다.*위에 이미지를 보면 ^M이 나와 있는데 vi를 이용하지 않고 ‘알FTP'를 이용해 .c파일을 꺼내와서 visual studio로 편집을 하며 implicit.c파일에 있는 코드를 복사 붙여넣기를 하니 생겼다. 왜 생기는지는 이유를 모르겠다.- *place(void *bp, size_t asize)malloc에서 요청된 사이즈만큼의 크기를 가진 적당한 블록을 찾아 place에 보내는데 이 place함수는 이 입력된 블록과 입력된 사이즈에 따라 낭비되는 부분이 많아 블록을 나누어 할당할지 그냥 할당할지 정하여 요청 사이즈에 맞게 블록을 할당해 준다. implicit에 몇 가지만 추가해 주면 되는데 위에 경우는 입력받은 블록의 사이즈와 입력받은 사이즈의 차이가 16보다 크거나 같아 블록을 나누어 준다음 할당을 해주는 경우 인데 큰 free블럭이 작은 free블럭으로 나누어 지므로 큰 free블럭과 앞 뒤 블록에 대해 서로 가리키는 주소를 수정해준다.
    공학/기술| 2016.02.02| 15페이지| 3,000원| 조회(331)
    미리보기
  • MallocLab impicit 보고서
    REPORT제목 : implicit교 과 명 : 시스템 프로그래밍※ 목 차 ※1. 개 요2. mm_naive3. mm_implicit1. 개요Malloc Lab은 동적 저장 공간을 할당하기 위한 코드를 구현하는 것으로 주어진 mm-implicit.c 파일에 각자 방식대로의 동적 할당 코드를 구현하여 완성하는 방식이다. 이번 주의 과제는 implicit방식의 동적 할당으로 장점으로는 단순성이 있고, 단점으로는 블록을 할당할 때 드는 비용이 전체 할당된 블록과 할당되지 않은 블록의 수에 비례하는 것이다.2. mm_naiveMACROALIGNMENT 8 : 저장 공간을 double word 사이즈 단위로 할당 함으로 8로 선언ALIGN(size) (((size) + (ALIGNMENT-1)) & ~0x7) : size의 단위를 위에 선언한 단위로 맞추어 줌SIZE_T_SIZE (ALIGN(sizeof(size_t))) : size_t형 사이즈를 ALIGN을 이용하여 위에 선언한 단위로 맞추어 줌SIZE_PTR(p) ((size_t*)(((char*)(p)) - SIZE_T_SIZE)) : p에서 SIZE_T_SIZE 즉 8을 빼서 Header로 이동한 다음 해당 형을 size_t로 바꿈에 의해 앞에 4byte만 표현하여 p의 사이즈를 받아 옴사용 함수(1) int mm_init(void) : heap을 초기화 해주는 함수 구현이 되어있지 않아 0을 리턴(2) void *malloc(size_t size) : size바이트의 저장 공간 할당을 해주는 함수,ALIGN으로 입력받은 size를 SIZE_T_SIZE 즉 8을 더한 후 이 값보다 크거나 같은 8의 배수를 구하여 newsize에 넣어준다. 그리고 해당 newsize 만큼의 저장 공간을 p에 넣어 준다. 만약 p가 0 보다 작으면 즉 저장 공간을 받지 못하였으므로 NULL을 리턴 해주고 그렇지 않으면 p에 SIZE_T_SIZE 즉 8을 더하여 주고, p의 사이즈 값에 입력 받은 size를 넣어 준다. 그리고 p를 리턴 해준다.(3) free(void *ptr) : 할당 받은 ptr 메모리를 가용 메모리로 바꾸어 주는 함수 구현이 되어있지 않음(4) realloc (void *oldptr, size_t size) : 할당 받은 oldptr를 입력받은 size로 재 할당 해주는 함수. size가 0이면 free와 같으므로 free 시켜준후 0리턴, oldptr이 할당 받지 않은 메모리 라면 malloc으로 입력받은 size만큼 할당해준다. 이 두가지에 다 만족 하지 못하면 newptr에 malloc으로 입력받은 size만큼 할당하고 이 할당이 잘 되었는지 확인한 후 oldsize에 oldptr의 사이즈를 넣어주고, 원래의 사이즈와 다시 할당받기를 원하는 사이즈의 크기를 비교하여 작은값을 oldsize에 넣어주고 memcpy함수를 이용하여 원래 oldptr에 있었던 정보를 newptr에 oldsize만큼 복사해준다. 즉 입력 받은 size가 작으면 입력 받은 size만큼만 복사해주고 입력 받은 size가 더 크면 oldptr의 모든 정보를 복사해준다. 그리고 oldptr을 free시켜준다음 다시 할당받은 newptr을 리턴해준다.(5) *calloc (size_t nmemb, size_t size) : malloc과 같이 저장 공간을 할당해 주고 0으로 초기화 해주는 함수. malloc과 비슷 하지만 memset을 이용하여 0으로 모두 초기화 해준다.(6) mm_checkheap(int verbose) : heap을 확인하는 함수 구현이 되어있지 않음3. mm_implicit- MACRO함수를 구현하며 사용할 Macro들을 선언하였다. 간단한 설명은 주석에 달아놓았다. 몇 가지만 자세히 설명하면 ALIGN은 입력받은 사이즈에 7을 더한 후 !0x7과 AND 해주어 8단위로 맞추어준다 즉 입력된 사이즈 보다 크거나 같은 8의 배수 단위로 맞추어 주는 것이다. SIZE_PTR은 p에서 SIZE_T_SIZE 즉 8을 빼서 Header로 이동한 다음 해당 형을 size_t로 바꿈에 의해 앞에 4byte만 표현하여 p의 사이즈를 받아온다. HDRP는 받아온 블록의 포인터에 WSIZE 즉 4를 빼서 해당 블록의 Header 포인터를 받아온다. FTRP는 받아온 블록의 포인터에 해당 블록의 Header 포인터를 구해 그 Header 포인터에서 사이즈를 얻어 더해준 후 DSIZE 즉 8을 빼서 해당 블록의 Footer 포인터를 받아온다. NEXT_BLKP는 받아온 블록의 포인터의 Header에서 사이즈를 얻어 더해 줌으로 다음 블록의 포인트를 받아오고, PREV_BLKP는 받아온 블록의 DSIZE 즉 8을 빼주어 해당 블록의 앞에 있는 블록의 Footer를 얻어와 앞에 있는 블록의 사이즈를 얻어와 빼주어 앞에 있는 블록의 포인트를 받아온다.전역 변수로 사용할 것들을 선언.- mm_init(void)heap을 초기화 해주는 함수로 heap의 처음 블록의 헤더와 풋터를 설정해주고 free 블록을 생성해준다. malloc을 이용하여 요청하는 만큼의 메모리를 할당 해주기 위한 빈 저장공간을 미리 마련해 놓는 것이다.- *malloc(void)malloc은 요청받은 size byte만큼의 저장 공간을 할당해 주는 함수이다. 입력받은 사이즈에 따라 할당을 해주는지 어떤 사이즈로 할당을 해주는지 정하고 할당 해줄 공간이 없을 경우 free공간을 추가하여 추가받은 free공간을 할당해 준다.- free(void *bp)입력 받은 블록을 가용 메모리로 바꾸어 주는 함수로 해당 블록의 헤더와 풋터를 가용 상태로 바꾸어 주고 coalesce를 이용하여 해당 블록의 주변에 가용 블록이 있으면 정렬을 해준다.- realloc(void *oldptr, size_t size)할당 되어진 원래의 블록을 새로운 사이즈로 변경하여 주는 함수이다. 새로 할당 받을 사이즈에 따라 새로운 블록을 만들고 새로운 사이즈가 원래의 사이즈 보다 작으면 원래의 사이즈 보다 큰 부분에 있는 데이터는 복사가 되어도 쓸모가 없으므로 새로운 사이즈의 크기만큼만 복사해 준다. 그 반대이면 원래 블록에 있는 데이터를 모두 복사해준다.- *coalesce(void *bp)free 되어진 블록을 입력받아 해당 블록의 앞과 뒤에 있는 블록이 free인지에 따라 free인 블록이 있으면 해당 블럭과 합쳐주는 일을 하는 함수이다. 프리 블록이 어떻게 위치해 있냐에 따라 3가지 경우로 나뉘어 합쳐주는 작업을 한다.
    공학/기술| 2016.02.02| 12페이지| 3,000원| 조회(258)
    미리보기
전체보기
받은후기 1
1개 리뷰 평점
  • A+최고예요
    0
  • A좋아요
    0
  • B괜찮아요
    0
  • C아쉬워요
    0
  • D별로예요
    1
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 04월 18일 토요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
9:12 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감