728x90

 ABAP 프로그램에는 Data Type과 Data Variable(Data Object)이 존재한다.

Data Type

- 프로그램에서 사용할 수 있는 데이터의 타입을 정의

- ABAP Dictionary의 타입을 프로그램에서 참고하여 사용할 수 있다, 즉 테이블 구조 그대로 변수로 사용 가능

 

Data Variable

- Data Type을 참고하여 값을 저장할 수 있는 변수

- 프로그램의 실행 시점에 메모리를 차지하는 데이터 변수

- Data Object : ABAP 프로그램이 실행되는 동안 메모리를 점유하게 되는 물리적인 단위. 이름이 없는 문자열, Text Symbol, 예약어(키워드), Constants 등이 존재. Data Variable보다 상위 개념이지만 같은 것으로 봐도 공부하는데 지장 없음.

 

Data Type의 종류

3가지 그룹의 Data Type이 있다. 

- Predefined ABAP Type : kernel 레벨에서 정의되어 있는 기본 데이터 타입. 

- Local Data Type in Rrogram : ABAP 프로그램 내에서 사용하기 위해 정의한 Local Type

- Global Data Type in ABAP Dictionary : 모든 ABAP 프로그램에서 사용할 수 있는 Global Data Type. TYPE 구문의 이용할 수 있다. 그래서 ABAP Dcitionary 오브젝트인 Table(Table Field), Data Type, Data Element, Structure, Table Type 등을 사용하여 Data Type이나 Data Variable을 선언한다.

 

 

TYPE과 DATA 선언

" Predefined ABAP Type 이용 변수 선언
DATA : GV_NUM  TYPE I.
DATA : GV_DECI TYPE F.

" 프로그램의 Local Type을 이용하여 변수 선언
TYPES : BEGIN OF T_STRUCT,
  COL1 TYPE C,
  COL2 TYPE I,
  COL3 TYPE D,
 END OF T_STRUCT.
 
DATA : GS_STRUCT TYPE T_STRUCT.
DATA : GV_VAR LIKE GS_STRUCT-COL1.
 

" ABAP Dictionary의 Type을 이용한 변수 선언
DATA: GV_CARRID TYPE S_CARR_ID.
DATA: GV_CONNID TYPE SFLIGHT-CARRID.
DATA: GV_MATNR TYPE MARA-MATNR.

DATA : GV_NUM TYPE I VALUE 123.

DATA : GV_NUM2 TYPE N LENGTH 2.
 
DATA : GV_NUM3 TYPE P DECIMALS 3.
 

- TYPE : 변수의 타입을 정의한다. 3가지 Data Type 모두 사용 가능

- LIKE : 미리 생성된 Data Variable과 동일한 타입의 변수 선언할 때 사용

- VALUE : 모든 데이터 타입은 initial value(default value)가 존재한다. VALUE 옵션으로 초기값 설정이 가능하다. 기본적으로 VALUE IS INITIAL 구문이 생략되어 있다고 보면된다. 다만 Constants 변수를 선언할 때는 VALUE 옵션이 필수이다.

- LENGTH : 필드의 길이 설정. C, N, P, X 타입에만 사용 가능

- DECIMALS : DATA TYPE P 에서만 사용 가능. 1~14 사이의 소수 자리 수를 설정.

  데이터 타입 접두어
1 필드 V 또는 D
2 구조체 S
3 상수 C
4 인터널 테이블 T
5 클래스 O
6 RANGE R
7 데이터 참조 변수
(=데이터 오브젝트)
F

- 이외에도 ABAP 프로그램에만 존재하는 PARAMETERS와 SELECT-OPTIONS 변수는 각각 P, S와 같이 한 자리 접두어만 사용하여 구분한다.

PARAMETERS : P_CARRID TYPE S_CARR_ID.

SELECT-OPTIONS : S_CARRID FOR SFLIGHT-CARRID.

 

전역 변수 정의 / 지역 변수 정의

- ABAP에서의 전역 변수(Global Variable)은 한 프로그램 내에서 또는 함수 그룹 내에서 접근할 수 있는 데이터 유형을 의미한다.

- 변수명은 주로 G로 시작한다. ( GV_XXX, GT_XXX )

 

- 지역 변수는 프로그램의 함수나 서브루틴과 같은 모듈 내에서만 유효한 변수를 말한다.

- ABAP NAMING RULE 점검하기 위한 T-CODE : SCI

 

 

 

Predefined ABAP TYPE

1. Numeric Data Type

Type I : Integer

- 값의 범위 -2^31 ~ (2^31 - 1)

- 정수 타입

- 정수가 아닌 것은 Round(반올림)

- Counter, Item 수, Index 등에 쓰임

 

Type : P

- 소수 자리 허용

- 가용 Size 1~16byte.(32자리까지 표현 가능)

- 소수 자리 최대 14자리

- 프로그램 속성 세팅 시 Fixed point arithmetic 체크해야 사용 가능하며 그렇지 않으면 Integer로 표현됨.

- 정확한 계산이 필요한 경우 사용됨

- 자바의 String처럼 일반적인 자료형이 아니라 편의를 위해 만든 자료형이므로 더 느리다.(java의 BigDecimal 클래스와 비슷하지 않을까?)

- 자리 수를 선언하지 않으면 기본적으로 8byte로 선언(15자리 숫자, 1자리 부호)

- 소수점을 표현할 때는 DECIMALS 옵션을 추가한다.

Fixed point arithmetic

 

 

Type F

- 값의 범위는 10^-307 ~ 1-^308

- 지수 형태로 표현되므로 FLTP_CHAR_CONVERSION과 같은 function module 사용하여 데이터 타입을 바꿔서 출력

- 정확도가 높아야 하는 계산에는 Type P 사용할 것. 매우 작거나 큰 수를 위한 경우만 Type F 권장

- Value 범위가 넓거나 반올림 오류가 중요하지 않을 경우만 권장 ( 부동 소수점과 관련된 내용임 )

 

 

Numeric Operator(연산자)

Operator Calculation Priority  동일 키워드
+ Adds the operands 1  ADD N TO M
- Subtracts the right operand from the left 1  SUBTRACT N FROM M
* Multiplies the operands 2  MULTIPLY M BY N
/ Divides the left operand by the right 2  DIVIDE M BY N
DIV Integer part of the division of the left operand by the right, with positive remainder 2  
MOD Positive remainder of the division of the left operand by the right; a remainder other than zero is always between zero and the size of the right operand 2  
** Raises the left operand to the power of the right 3  

 

 

 

2. Character Type

Type 초기길이 가능길이 초깃값 의미
C 1 1 - 65535 '...' Text Field (alphanumeric characters)
D 8 8 '00000000' Date field (Format : YYYYMMDD)
N 1 1 - 65535 '0....0' Numeric text field (numeric characters)
T 6 6 '000000' (format : HHMMSS)

- C 타입은 데이터 선언 시 문자 길이를 명시적으로 선언해야 함. 지정하지 않으면 1자리

- N 타입은 I와 달리 빈 부분은 0으로 채웟 ㅓ출력함

 

DATA : GV_DATE TYPE D.

GV_DATE = SY-DATUM.

GV_DATE = GV_DATE + 3. " 3일 후

 
DATA : GV_TIME TYPE T.
GV_TIME = SY-UZEIT.
GV_TIME = GV_TIME - 60. " 60초 이전
 

* SY-DATLO, SY-DATLO는 유저의 TIME ZONE(SU01에서 확인 가능)

- 다른 시간대에 위치한 사용자들을 위한 기능. 

- 타 시간대에 위치한 프로그램을 만들었고 그 프로그램에는 생성일자와 시간이 찍힌다면 그 시간대를 기준으로 데이터가 생성되어야 할 것이다. 이런 경우에는 DATE, TIME 필드를 2개씩 만들어서 유저를 위한 유저 시간대 생성일자, 시스템을 위한 시스템 시간대 생성일자를 모두 기록하여야 사용자 편의와 정확한 기록을 위한 시간 필드를 모두 구현할 수 있을 것이다. ( 그게 아니면 입력된 국가 필드를 만들어서 시스템 DATE와 TIME을 가지고 해당 국가의 시간대로 변환해주는 함수를 써서 출력하는 방법도 있을 것이다. )

 

SU01

 

* 가변 길이 타입인 STRING과 16진수인 HEXADECIMAL은 잘 안 쓰이는 듯하여 생략

 

 

728x90

'OLD' 카테고리의 다른 글

EASY ABAP - 5. SQL  (3) 2024.04.05
EASY ABAP - 4-2. Data Type(2)  (1) 2024.04.04
EASY ABAP - 3. TMS와 CTS  (2) 2024.04.04
EASY ABAP - 2. Package에 대해서  (1) 2024.04.01
EASY ABAP - 1. 개발을 위한 기본적인 ABAP Workbench T-CODE  (1) 2024.04.01
728x90

https://www.guru99.com/transport-management-system-tms.html 

https://www.guru99.com/how-to-configure-tms.html

 

 일반적인 개발환경에서 형상관리 기능을 Git이나 Svn을 사용하지만 SAP은 시스템 자체에 형상 관리 기능이 구현되어 있어 이 기능을 사용한다. 품질 서버나 운영 서버를 내리지 않고 ABAP 소스코드를 커밋하면 자동으로 배포까지하여 곧바로 사용자들이 사용할 수 있게 된다. 

 누군가 사용중인 프로그램의 소스코드를 사용자가 다수 접속해 있을 때 반영하는 것은 문제가 될 수 있지만 아무도 사용하지 않는 프로그램의 경우 큰 문제가 없다(백그라운드로 돌릴 프로그램 같은 경우).

 

Transport Layer

STMS에서 전송 경로 아이콘을 클릭했을 때

- SAP 전송경로는 SAP사에서 Support Package를 반영할 때 사용하고 ZDEV는 고객사에서 프로그램을 개발하고 IMG 세팅 후에 다른 서버(또는 클라이언트)로 전송할 때 사용한다.

 

CTS(Change Request)

1. CTS(Change and Transport System)

- CTS는 개발 서버에서 변경된 사항을 운영 서버에 반영하거나 고객 환경에 적합하도록 커스터마이징하는 데 사용하는 Tool이다. 형상관리와 배포를 수행하는 시스템이라고 보면 된다.

 

- CTS 번호가 곧 형상관리를 위한 버전을 나타내는 번호라고 볼 수 있다.

2. Transport Organizer(SE09)

- Abap Workbench와 Customizing Request를 통합하여 CTS 관리하는 프로그램

- Workbench Request : Client Independent 속성의 오브젝트 ( 프로그램, 테이블, 함수 등 )

- Customizing Request  : Client Dependent 속성의 오브젝트 ( IMG 세팅 등 )

3. Request No 

- Request No = CR = CTS NO 같은 의미의 용어들

- CR(Change Reqeust)은 클라이언트에서 다른 클라이언트로 전송할 수 있다.(SCC4)

- CR(Change Reqeust)은 시스템에서 다른 시스템의 클라이언트로 전송할 수 있다.(STMS)

 

- 사용중인 오브젝트의 CR이 import되어버리면 예기치 않은 종료현상 등이 발생할 수 있으니 SM04 등으로 사용자가 얼마나 있는지, 누가 무엇을 사용중인지 파악한 후에 반영하는 것이 좋다.

SM04
SE09

1. CTS 오브젝트 조회

2. CTS 소유주 변경 

3. 다른 CTS를 포함시킬 수 있음

 

KEDK945942 : Task Request

KEDK945941 : Change Request

- Task Request를 먼저 트럭 모양 버튼을 눌러 릴리즈해야 Change Reqeust를 릴리즈 할 수 있다.

- TMS 설정에 따라 릴리즈 시 자동으로 이관되기도 하고 수동으로 직접 다른 서버로 이관해야 하는 작업이 필요하기도 하다.

728x90
728x90

오라클 프로세스 구조

프로세스란?

- 실행 상태에 있는 프로그램. 실행 상태라서 메모리나 자원을 가지고 있다.

스레드 

- 프로세스 내에 존재하는 실행 단위. 하나의 프로세스 안에서 처리를 병렬로 하고 싶을 때 사용

 

일반적인 프로세스와 데이터베이스 프로세스의 차이

- 데이터베이스를 사용하지 않는 프로그래밍에서는 일반적으로 개개의 프로세스가 자신이 가진 변수(데이터)를 처리하는 것이 일반적이지만 데이터베이스의 프로세스는 여러 프로세스나 사용자가 하나의 데이터베이스(데이터 집합)에 접근한 다는 점이 큰 차이점이다. 즉, 여러 사용자나 프로그램이 데이터베이스의 데이터를 공유한다.

 

 

오라클이 여러 개의 프로세스로 구성된 이유

 위의 그림을 보면 RECO, PMON, SMON, DBW0, LGWR, ARC0 등 오라클 데이터베이스는 여러 개의 프로세스를 지니고 있다. 이와 같이 여러 종류의 프로세스가 있기도 하고, DBW0, DBW1 ... 와 같이 동일한 종류의 프로세스가 여러 개 있기도 하다. 

 동일 종류의 프로세스가 여러 개인 이유는? - 디스크 I/O 대기시간에 CPU를 쉬게 하는 낭비를 최소화하도록 다른 프로세스가 CPU를 사용하여 다른 일을 해서 CPU를 쉬게 하지 않도록 하기 위함일 것이다. DBWx, ARCx 모두 디스크에 데이터를 I/O하는 작업을 하는 프로세스이다.

 

서버 프로세스와 백그라운드 프로세스의 역할

 오라클은 서버 프로세스와 백그라운드 프로세스로 구성되어 있다.

- 서버 프로세스 : SQL문을 처리하는 프로세스

- 백그라운드 프로세스 : 서버 프로세스를 도와주는 프로세스, 위 그림에서 RECO, PMON, SMON, DBW0, LGWR, ARC0 들이 해당된다.

오라클 시스템 구조

 클라이언트(유저 프로세스)는 서버 프로세스와 통신한다. 이 때 클라이언트는 자바, C, SQL*Plus등 데이터베이스 입장에서의 사용자를 의미한다.

 

각 프로세스가 수행하는 처리

  1. SQL문의 수신 - 서버
  2. SQL문의 파싱 - 서버
  3. 데이터 읽기 - 서버
  4. 데이터 기록 - 백그라운드(DBWR)
  5. SQL문의 결과 회신 - 서버
  6. 로그 기록 - 백그라운드(LGWR)
  7. 각종 정리 - 백그라운드(PMON)
  8. 로그 보관 -백그라운드(ARC0)

서버 프로세스 : 1, 2, 3, 5 역할 수행(수신-파싱-읽기-회신)

백그라운드 프로세스 : 4, 6, 7, 8 역할 수행 

- 예를 들어 '4. 데이터 기록'은 서버 프로세스가 하지 않고 DBWR이 한다. 즉 서버 프로세스는 디스크에서 데이터를 읽어오지만 데이터를 기록은 하지 않는다.

- 서버 프로세스가 모든 일을 다 하게 되면 회신이 늦어지는 단점이 생겨 이를 백그라운드 프로세스에게 넘기고 클라이언트 응대에 집중한다.

 

 

*참고로 서버 프로세스는 shadow process, foreground process 라고도 불린다. 서버 프로세스라는 용어는 오라클에서만 클라이언트의 요청에 대응하여 SQL을 처리하는 프로세스를 가리키기 위해 쓰이는 용어에 가깝다.

 

 

공식 문서

https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/process-architecture.html#GUID-A4FA88C6-8447-4636-911C-5864E0DC8572

 

 

728x90
728x90

http://aladin.kr/p/pNCjM

 

그림으로 공부하는 오라클 구조

일본의 데이터베이스 잡지인 DB Magazine의 인기 연재물 ‘그림으로 공부하는 오라클 입문’을 재구성한 책이다. 오라클 아키텍처의 세계를 그림으로 체험함으로써 그 어떤 오라클 책보다도 쉽고

www.aladin.co.kr

 

오라클을 이해하기 위한 필수 키워드

  1. 병렬 처리를 가능케 하고 높은 처리량을 실현한다.
  2. 응답(response)을 중시한다.
  3. 커밋한 데이터는 지킨다.

오라클의 동작 원리를 공부할 때 위의 3가지 관점을 가지고 공부하면 이해하기에 좋다.

디스크의 동작

 디스크에 데이터를 넣고 꺼내는 I/O작업이 메모리에 비해 현저히 느리기 때문에 디스크 I/O 작업은 최소화 되어야 한다. 이를 이해하기 위해서는 디스크와 메모리의 차이를 알아야 한다.

 메모리(RAM)은 데이터에 대한 빠른 접근을 위해 데이터를 임시로 저장하고 있는 저장소이다. 컴퓨터가 꺼지면 들고 있던 데이터가 사라지는 단점이 있지만 데이터에 대한 빠른 접근을 가능하게 한다.

 반면에 디스크는 HDD, SDD와 같이 데이터를 영구적으로 저장하는 저장 장치이다. 메모리의 데이터에 접근하는 것은 전기적 신호로 이루어지지만 디스크의 데이터에 접근하는 것은 암(Arm)을 움직이게 하는 기계적인 동작이 필요하기 때문에 메모리와 비교해서 상당히 느리다.

 따라서, 디스크에 접근하는 I/O의 시간과 횟수를 줄여야 시스템의 성능이 좋아진다. 

 

어떻게 디스크 I/O 대기시간을 줄일까?

  1.  인덱스 사용하기 : 데이터베이스의 인덱스를 통해 처음부터 모든 데이터를 훑지 않고 원하는 데이터가 어디 있는지 인덱스를 통해 확인한 후 원하는 랜덤 엑세스 방식으로 데이터를 찾아간다. 이렇게 하면 데이터를 full scan하는 시퀀셜 엑세스 방식보다 빠르게 데이터를 찾을 수 있다.
  2. 랜덤 엑세스 : 인덱스로 확인한 ROWID를 통해 데이터를 찾아갈 때 한 번에 하나의 블록만 엑세스하는 것을 랜덤 엑세스라고 한다. 이 때, 찾으려는 데이터가 항상 물리적으로 연속적인 공간에 저장되어 있지는 않으므로 디스크를 회전시켜가며 찾아야 한다. 그래서 적은 양의 데이터에 접근할 때에는 한 번에 하나의 블록만 특정하여 접근하는 랜덤 엑세스 방식이 좋으나 데이터의 양이 전체 데이터의 15% 이상(절대치 아님)되면 디스크 계속 회전시켜  왔다갔다 하는 랜덤 엑세스 방식보다는 시퀀셜 엑세스(데이터를 그냥 처음부터 훑어 가며 여러 블록 씩 접근하는 것)방식이 효율적일 수 있다. 즉 인덱스를 사용한 엑세스가 무조건 효율적인 것은 아니다!

 

 

※오라클은 랜덤 엑세스를 'db file sequential read'라고 표시하며, 시퀀셜 엑세스는 'db file scattered read'라고 표시한다.

- 표현이 정반대로 되어 있는 것 같은데 이는 메모리에 데이터가 적재되는 방식이 다르기 때문이다.

- 오라클은 데이터를 블록 단위로 메모리에 배치한다.

- 랜덤 엑세스는 1개의 블록만을 읽어 오므로 읽어온 데이터(블록)은 메모리에서 연속이다(sequential)

- 시퀀셜 엑세는 여러 개의 블록을 읽어 와 메모리에 분산적으로(scattered) 배치된다.

- 따라서 위와 같이 용어의 혼동이 발생하는 것이다.

- 정리하자면 랜덤 엑세스와 시퀀셜 엑세스는 '디스크'에서 데이터에 접근하는 방식의 구분이며, db file sequential read와 db file scattered read은 가져온 데이터(블록)을 메모리에 적재하는 방식을 구분한 것이다.

 

 

 

728x90
728x90

1. Package란?

- Development Class라고도 불리며, 프로그램과 같은 오브젝트를 기능별로 관리하기 위해 도입.

- ABAP Dictionary와 R/3 Repository Obejct를 생성하면 반드시 특정 Package에 포함시켜야 한다.

 

2. Package의 기능

- 오브젝트(프로그램 등)의 구조화(Structure)

- 오브젝트 기능을 모듈화(Encapsulation, Modularization)

- 오브젝트를 기능별로 구별(Classification)

 

- 예를들면 영업모듈은 ZSD, 생산모듈은 ZPP로 명명하여 패키지를 생성한 뒤 각 모듈에 해당하는 오브젝트들을 모아서 그룹으로 관리한다.

 

Packge의 속성

SE80에서 본 ZSDD 패키지

- Transport Layer : 전송 계층

- Software Component : SAP사가 소프트웨어 버전을 관리하는 Software Component를 의미.

- Record Object Changes in Transport Requests : 체크되어 있으면 패키지 내에서 CTS NO라고 부르는 Change Request가 생성되어 버전 별로 소스가 관리된다.

 

Software Component의 속성

- Packge들을 모아서 관리하는 상위 개념

- 버전 별로 관리, SAP Upgrade 또는 Patch를 적용할 수 있음

- Object는 Package에 귀속, Package는 Software Component에 할당되어 고객에게 배포-인도

- Support Package를 적용한다는 것 = SAP사에서 Software Component 버전을 생성하여 고객에게 배포하는 것

- Software Component가 HOME이라는 것은 고객 전송 계층을 의미하며 SAP에서 제공하는 Support Package와는 관련이 없지만 영향은 받을 수 있다.

- Local Component는 자동 전송 기능을 사용하지 않아 CTS를 생성하지 않는다. (Record~Requests 항목이 체크되어 있지 않음)

시스템 - 상태 메뉴에서 소프트웨어 컴포넌트 확인

 

3. Package 생성

SE21 에서생성 시 뜨는 팝업

- Short Description : 패키지 내역(설명)

- Application Component : Application Hierachy에서의 위치를 정의한다. 필수 사항 아님

- Software Component : HOME 선택. 이외 Component는 SAP에서 사용(연습 시에는 LOCAL) - $Zxxx로 생성하면 알아서 로컬로 잡힘

- Transport Layer : 전송 계층 선택

- Package Type : Not a Main Package 선택. Sub Package를 생성하여 Main Package에 하위 패키지로 넣을 수 있다.

 

패키지 속성

- Properties : 위와 같이 패키지 세부 속성 설정

- Use Accesses : 다른 패키지의 Element를 사용하려할 때 설정

- Package Interface : 패키지의 오브젝트들을 패키지 인터페이스에 포함하여 오브젝트들을 그룹으로 관리할 수 있음

- Package Included : Sub Package 추가

 

4. Package 포함된 오브젝트 옮기기 (SE03)

SE03

- 위 기능으로 패키지에서 패키지로 오브젝트들을 옮길 수 있음. 

- 개인적인 생각으로는 패키지를 분리해서 관리하고 싶을 때나 통합해서 관리하고 싶을 때 쓸 듯

 

 

728x90
728x90
T-CODE Description Detail
SE80 Object Navigator ABAP 개발과 관련된 Workbench가 통합
SE38 ABAP Editor ABAP Program을 생성/변경/조회
SE37 Function Builder Function module 생성/변경/조회
SE11 ABAP Dictionary Table, View, Structure 등의 Object 생성
SE16 Data Browser Table 데이터를 생성/변경/조회
SE93 Maintain Transaction 트랜잭션 코드를 생성/변경/조회
SE43 Area Menu Maintenance SAP Menu 생성/변경/조회
SE21 Package Builder Package 생성/변경/조회
SE24 Class Builder Class 생성/변경/조회
SE09 Transport Organizer CTS(Change Request) 릴리즈/생성/변경

 

728x90
728x90

http://aladin.kr/p/jGRFj

 

탄탄한 문장력

블로그, 자기소개서, 업무 보고서 등 종류를 불문하고 당신이 써놓은 문장을 찬찬히 들여다보라. 습관처럼 쓰는 지루한 표현들, 읽는 이의 눈높이에 맞지 않는 문장들, 욕심 때문에 길게 늘어놓

www.aladin.co.kr

 

기본원칙 1. 두괄식으로 써라

결론부터 제시하라

- 설명문은 주로 한 가지 주제나 쟁점 설명 및 요약

- 그러므로 가장 중요한 내용이나 결론이 가장 앞에 나와야 함

- 글의 목적을 제시하고 그것을 뒷받침하는 사실이나 세부 내용들을 보여주는 것

- BLOT : Bottom Line on Top - 글을 쓰고 맨 마지막 문장을 첫 문장으로 옮기는 것. 글쓰기 습관을 바로잡는 교육법

 

기본원칙 2. 쪼개라

주제를 몇 개의 부분으로 쪼개서 본론을 만들고, 머리말을 활용하라

- 쓰고자 하는 바를 2~4개 부분으로 쪼갠다(3개가 가장 추천됨)

- 3개로 나눈 후 전통적 방식인 '다섯 단락 글쓰기'를 해보자. 

- 서론/본론1~3/결론 총 5개의 부분으로 된 글을 써보자.

 

"글쓰기에서 3은 마법의 숫자다. 3가지의 핵심 아이디어나 개념을 중심으로 글을 구성하라."

 

- 머리말을 활용한다.

- 머리말은 본론에 나와 있는 각 단락의 내용을 요약하고 글의 목적이나 주제를 요약하여 전달해야 한다.

 

 

요약/생각

- 설명문의 구조는 두괄식과 주제 쪼개기, 그리고 머리말이 핵심

- 글의 전체적인 구조 서론-본론-결론에서 서론은 본론에 대한 머리말로 활용하라.

- 본론에 쓸 주제를 세 부분으로 나누고 각 부분을 머리말-본문 구조로 작성하라. 이 때 각 본문은 두괄식으로 작성한다.

728x90
728x90

- 아파치Apache - 톰캣 Tomcat  연동하는 이유?  AJP란?

https://cheershennah.tistory.com/142

 

- 인메모리 데이터베이스

https://en.wikipedia.org/wiki/In-memory_database

https://bommbom.tistory.com/entry/%EC%9D%B8%EB%A9%94%EB%AA%A8%EB%A6%ACIn-memory-DB-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%A2%85%EB%A5%98-%EB%B9%84%EA%B5%90

 

728x90

+ Recent posts