• 검색 결과가 없습니다.

본 강의에 들어가기 전

N/A
N/A
Protected

Academic year: 2023

Share "본 강의에 들어가기 전"

Copied!
56
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

본 강의에 들어가기 전

C 기초 특강

(2)

토론 주제

 과학(Science)/공학(Engineering)

 일반화(Generalization)/특별화(Specialization)

 아마추어(Amateur)/프로페셔널(Professional)

 하드웨어(hardware)/소프트웨어(software)

(3)

프로그래밍 언어

 인터프리터(interpreter)/컴파일러(compiler)

BASIC

FORTRAN Pascal

Visual BASIC

COBOL

C

C++

Visual C++

Java C#

Java Script PHP JSP Shell Python Ruby

(4)

C 언어 학습

 실습 환경

UNIX/LINUX 환경

vi 사용법

gcc(compiler) 사용법

 C 기초

Keyword 소개

기본 입출력 함수(printf, scanf)

타입, 변수, 기본 연산

조건문과 반복문 (if-else, for, while)

함수

포인터

라이브러리 활용

문자열

수학

파일 입출력

(5)

실습환경 구축

 Xshell4 설치

 www.netsarang.co.kr

 lily.mmu.ac.kr 계정 신청

 USB등으로 개인 폴더 유지

(6)

Xshell 사용법 (1)

 다운로드 및 설치

 (www.netsarang.co.kr)

 새로 만들기 – 연결

 이름(N) : 원하는 이름 지정 (lily)

 호스트(H) : lily.mmu.ac.kr

(7)

Xshell 사용법 (2)

 SSH 사용자 이름 : id 입력  SSH 사용자 인증 : 암호 입력

(8)

Xshell 사용법 (3)

문자코드 글자체, 크기

(9)

접속 초기 화면

 유닉스시스템 접속에 성공하면 메시지 출력

 마지막으로 접속한 시간과 IP 주소 출력

 홈디렉토리

 로그인한 직후의 작업 디렉토리

 프롬프트

 사용자의 입력을 기다리는 표시

 콘쉘 : $

(10)

기초명령의 사용

 banner

화면에 큰 문자를 출력

예 : banner unix

 date

날짜와 시간을 출력

 clear

화면을 깨끗이 지움

 man

명령에 대한 설명 출력

예 : man banner

(11)

현재 디렉토리 확인: pwd

 현재 작업 디렉토리의 절대 경로 출력

 사용법

pwd

ssh lily.mmu.ac.kr

$ pwd

/home/kgu

$

(12)

디렉토리 이동: cd

 현재 작업 디렉토리를 지정한 디렉토리로 이동

 디렉토리명을 지정하지 않으면 자신의 홈 디렉토리로 이동

 사용법

cd [디렉토리명]

ssh lily.mmu.ac.kr

$ cd /tmp

$ pwd /tmp

$ cd

$ pwd

/home/kgu

$

/tmp 로 이동

홈디렉토리

로 이동

(13)

디렉토리 파일 목록 확인: ls

 파일이나 디렉토리에 대한 정보 출력

 옵션

ls [옵션] [파일 또는 디렉토리명]

옵션 기 능

a

All. 시스템에 숨겨진 파일(디렉토리들)을 모두 보여줌

l

Long. 파일과 디렉토리에 대한 상세 정보를 보여줌

d

Directory. 디렉토리에 대한 정보만 출력

R

Recursive. 서브 디렉토리내의 모든 디렉토리들을 반복 출력

F

파일 종류를 구분. (실행 파일은 *, 디렉토리는 /를 붙임)

u

파일, 디렉토리 이름을 최종 접근 시간 순으로 화면에 출력

(14)

디렉토리 파일 목록 확인 - ls

 사용법

ssh lily.mmu.ac.kr

$ ls -a

. .. .profile

$ ls .profile .profile

$

현재 디렉토리의 모든 파일목록

지정한 파일 정보

1) ls 2) ls -a 3) ls -l 4) ls -al 5) ls -d 6) ls -F 7) ls -u 8) ls /tmp 9) ls /etc

10)ls /etc/passwd 11)ls –l /etc/passwd

(15)

파일 내용 보기: cat

 간단한 파일 보기 명령으로 짧은 파일에 적합

 옵션

-n : 행번호 출력

 사용법

 간단한 파일 생성도 가능

Cat > test.txt

화면 입력이 test.txt 파일로 생성됨

종료 시 Ctrl-d

cat [옵션] 파일명

ssh lily.mmu.ac.kr

$ cat /etc/hosts

#

# Internet host table

#

127.0.0.1 localhost 192.168.10.118 loghost

$

(16)

파일 내용 보기: more

 파일의 내용을 한 화면씩 출력

 옵션

 +행번호 : 지정한 행부터 출력

 명령

 다음 페이지 : space

 이전 페이지 : b

 종료 : q

 문자열 찾기 : /문자열

 사용법

more [옵션] 파일명

ssh lily.mmu.ac.kr

$ more /etc/services

(17)

파일 내용 보기: tail

 파일의 마지막 부분 출력

 옵션

 +행번호 : 지정한 행부터 끝까지 출력

 -숫자 : 화면에 출력할 행 수

 -f : 파일 출력이 종료되지 않고 주기적으로 반복 출력

 사용법

tail [옵션] 파일명

ssh lily.mmu.ac.kr

$ tail /etc/services

(18)

파일 복사: cp

 특정 파일이나 디렉토리를 다른 이름으로 복사

 옵션

-i : 파일을 덮어쓸 때 경고 메시지 출력

-r : 디렉토리 복사

 사용 형태

cp [옵션] 원본파일명 복사파일명

사용 형식 동 작

cp 파일1 파일2 파일1을 파일2로 복사.

cp 파일들 디렉토리 파일들을 디렉토리 밑에 같은 이름으로 복사.

cp -r 디렉토리1 디렉토리2 디렉토리1을 디렉토리2로 복사.

디렉토리1의 파일도 모두 복사됨.

(19)

파일 복사: cp

 사용법 실습하기

1) mkdir Unix/ch3 2) cd Unix/ch3 3) mkdir Practice 4) cd Practice

5) cp /etc/services test.txt 6) ls

7) cp /etc/services . 8) mkdir Temp

9) cp test.txt Temp 10)cp Temp Tmp

11)ls

12) cp -r Temp Tmp 13) ls Temp

14) ls Tmp ssh lily.mmu.ac.kr

$ cp hello.c h.c

$ cp f1.c f2.c f3.c dir1

$ cp -r dir1 dir2

$

(20)

파일 삭제: rm

 지정한 파일이나 디렉토리를 삭제

 옵션

 -i : 확인 후 삭제

 -f : 무조건 삭제

 -r : 디렉토리 삭제

rm [옵션] 파일명/디렉토리명

<주의>

한번 삭제한 파일은 되살릴 수 없음 !!

(21)

파일 이동: mv

 파일 이름을 바꾸거나 이동

 옵션

 -i : 확인 후 이동

 사용 형식

mv [옵션] 원래이름 새이름

사용 형식 동 작

mv 파일1 파일2 파일1의 이름을 파일2로 바꿈.

mv 파일명… 디렉토리 지정한 파일들을 디렉토리로 옮김.

mv 디렉토리1 디렉토리2 디렉토리1의 이름을 디렉토리2로 바꿈.

(22)

vi의 사용 방법

 파일 내용을 잘못 수정한 경우 버퍼의 내용 무시

 작업 취소 기능 제공

디스크 버퍼

(임시 저장장소)

① 편집기에서 파일 호출 ② 편집기에서

파일 수정

③ 파일 저장

(23)

vi의 동작 모드

Vi에서는 대소문자를 별도의 명령으로 해석한다.

명령 모드 입력 모드

i,I,a,A,o,O Esc 입력한 내용을

명령어로 해석

입력한 내용이 버퍼로 옮겨져 추가, 수정됨 vi 시작

커서이동 페이지이동

글자 삭제 줄 삭제 등

마지막행 모드

특별명령처리 vi 종료

:, /, ?

vi 종료

검색,저장 줄 이동 등 바꾸기 ZZ

q,q! w HDD Enter

Esc

(24)

vi 시작하기

vi

새로운 파일 시작

파일 저장할 때 이름 지정

vi 파일_이름

지정한 이름이 없으면 새로운 파일 생성

지정한 이름이 있으면 기존 파일 열기

ssh lily.mmu.ac.kr

$ vi

ssh lily.mmu.ac.kr

$ vi first

(25)

vi 초기 화면

 화면 크기에 따라 행과 칼럼수는 달라진다.

~ ~

~ ~

~ ~

~ ~

~ ~

~ ~

~ “first.txt” [새 파일]

80칼럼

26

(26)

입력 명령

 입력 명령(명령모드->입력모드)

명령키 수행 작업

i 커서 앞에 삽입 a 커서 뒤에 삽입

o 현재 줄 다음에 삽입

I 현재 줄 첫 칸 앞에 텍스트 입력 A 현재 줄 끝에 텍스트 입력

O 현재 줄 앞에 삽입

입력이 끝나면 “입력모드”에서 “명령모드”로 돌아와야 한다.

Esc

주의!

(27)

저장 및 종료 명령

저장 명령

저장하거나 종료하려면 “명령모드”로 돌아와야 한다.

종료 명령

(저장 후 종료 또는 그냥 종료)

명령키 수행 작업

:w  현재의 파일명으로 파일 저장 :w 파일명  지정한 파일명으로 파일 저장

명령키 수행 작업

:q  작업 내용을 저장하였으면 vi 종료 :q!  작업내용을 저장하지 않고 vi 종료 :wq 작업 내용을 저장한 후 vi 종료

:wq 파일명 작업 내용을 지정한 파일명으로 저장한 후 vi 종료 ZZ(shift-zz) 작업 내용을 저장한 후 vi 종료

(28)

[실습하기] 입력 및 저장

 실습하기

 실습 디렉토리 구성

 파일 생성 : text.txt

ssh lily.mmu.ac.kr

$ cd

$ mkdir Unix/ch4

$ cd Unix/ch4

$ vi test.txt

mane is Gil-dong Hong.

I wake up in the morning.

This is a living loom.

A that’s a bedloom.

(29)

[실습하기] 입력 및 저장

 실습하기

 vi test.txt

ssh lily.mmu.ac.kr

mane is Gil-dong Hong.

I wake up in the morning.

This is a living loom.

A that’s a bedloom.

ssh lily.mmu.ac.kr

My mane is Gil-dong Hong.

I wake up in the morning.

This is a living loom.

And that’s a bedloom. test2.txt

1) i 2) My

3) Esc키

4) G

5) o 6) nd

7) Esc키

8) :w test2.txt

(30)

커서이동명령 [1/3]

 화살표 키 이용

 H, J, K, L 키 이용

k

h

l

j

오른쪽 왼쪽

아래로 위로

이동 명령어

한 행 위 k

한 행 아래 j

한 문자 오른 쪽 l

한 문자 왼쪽 h

행의 시작 ^ 또는 0

행의 마지막 $

이전 행의 처음 -

다음 행의 처음 + 또는 

(31)

커서이동명령 [2/3]

 현재 화면에서 커서

이동 지정한 곳으로 이동

이동 명령키

키 화면 맨 위로 H

키 화면 중간으로 M

키 화면 맨 아래로 L

다음 단어의 첫문자로 w 이전 단어의 첫문자로 b 다음 단어의 끝 글자로 e

이동 명령키

줄 번호 n 위치로 :n 또는 nG 파일의 끝 줄로 이동 :$ 또는 G n줄 만큼 앞으로 이동 n+

n줄 만큼 뒤로 n-

현재 문장의 처음으로 (

다음 문장의 처음으로 )

현재 문단의 처음으로 {

다음 문단의 처음으로 }

(32)

커서이동명령 [3/3]

 커서이동 예제

1 #include <stdio.h>

2

3 main() { 4 char c;

5

6 printf(“Hello, C World\n”);

7 printf("=====\n");

8 printf(“select menu item\n");

9 printf("1. unix\n");

10 printf("2. linux\n");

11 printf("=====\n");

12 }

~

~

H

L M

^ $

j k

w

b

e

(33)

[실습하기] 커서 이동

 실습하기

 vi test.txt

ssh lily.mmu.ac.kr

My mane is Gil-dong Hong.

I wake up in the morning.

This is a living loom.

And that’s a bedloom.

1) 커서를 1행으로 이동 : 1G 또는 :1 2) 1행의 두번째 단어로 이동 : w 3) 2행으로 이동 : j

4) 커서를 좌로 이동 : ㅣ

5) 마지막 행으로 이동 : G 또는 :$

(34)

화면이동

 화면에 나타나지 않은 부분으로 화면 이동

#include <stdio.h>

main() {

printf(“Hello 1\n”);

printf(“Hello 2\n”);

printf (“Hello 8\n”);

}

ssh lily.mmu.ac.kr

printf(“Hello 3\n”);

printf(“Hello 4\n”);

printf(“Hello 5\n”);

printf(“Hello 6\n”);

printf(“Hello 7\n”);

이 동 명령키

반 화면 위로 ^u

반 화면 아래로 ^d

한 화면 위로 ^b

한 화면 아래로 ^f

한 줄만 위로 ^y

한 줄만 아래로 ^e

파일내용 다시 출력 ^l

(35)

[실습하기] 화면 이동

 실습하기

 vi /etc/profile

 왼쪽 순서에 따라 화면 이동을 실습

ssh lily.mmu.ac.kr

# ident

# The profile trap “” 2 3

export LOGNAME PATH if [ “$TERM = “” ]

…..

1):set nu 2)^u

3)^d 4)^f 5)^b 6)^y 7)^e 8)^l

9):set nonu

(36)

내용 삭제 및 취소

 명령모드에서 동작

명령어 삭제 대상 수행 작업

x, #x 문자 커서 위치의 문자 삭제(예:3x) dw, #dw 단어 커서 위치의 단어 삭제

dd, #dd 줄 커서 위치의 줄 삭제

D(shift-d) 줄의 일부 커서 위치부터 줄 끝까지 삭제

u 방금 수행한 명령 취소

U 해당 줄의 모든 편집 취소

(37)

[실습하기] 삭제 및 취소

ssh lily.mmu.ac.kr

My mane is Gil-dong Hong.

I wake up in the morning.

This is a living loom.

And that’s a bedloom.

ssh lily.mmu.ac.kr Gil-dong Hong.

I wake up in the morning.

This

1)1G 2)11x 3)jj 4)llll 5)D

6)j

7)dd

8)u

9)dd

10):w

(38)

내용 수정

 명령모드에서 동작

키 수정 대상 수행 작업

r 문자 현재 커서위치의 한 문자 변경 R 문자열 현재 커서부터 ESC 입력까지 변경

cw 단어 커서 위치부터 현재 단어의 끝까지 내용 변경 cc 줄 커서가 위치한 줄의 내용 변경

s, ns 문자열 현재 커서부터 내용 변경(예:5s)

C 줄 일부 커서 위치에서 줄 끝까지 내용 변경

(39)

[실습하기] 수정

ssh lily.mmu.ac.kr

My mane is Gil-dong Hong.

I wake up in the morning.

This is a living loom.

And that’s a bedloom.

ssh lily.mmu.ac.kr

My name is Gil-dong Hong.

I wake up in the morning.

This is a living room.

And that’s a bedroom.

1) 1G 2) w 3) cw 4) name 5) Esc키 6) jjw 7) r r 8) r ] 9) j j 10)7s

11)bedroom 12) Esc키 13):w

(40)

편집기능 – 복사, 잘라내기, 붙이기

 명령모드에서 동작

 행 삭제와 잘라내기는 동일한 동작이다.

명령어 수행 작업

yy, #yy 현재 행을 버퍼로 복사 (예:4yy)

p 현재 행 다음에 버퍼 내용 삽입

P 현재 행 위쪽에 버퍼 내용을 삽입

dd, #dd 현재 행을 잘라내기

(41)

버퍼의 사용

 버퍼

 Vi는 작업 내용을 버퍼에 저장 – 실행 취소 가능

 복사하기, 잘라내기에 사용

 버퍼 종류

 Unnamed buffer (이름 없는 버퍼)

 Named buffers (이름이 있는 버퍼) “a, “b, … “z

 Numbered buffers(번호가 있는 버퍼) “1, “2, …,“9

 사용 예

 “a3yy -> 현재 행부터 아래로 3줄을 a버퍼에 저장

 “ap -> a버퍼의 내용을 붙이기

(42)

범위지정 방법

 편집하는 범위를 지정하는 방법

 마지막행 모드에서 사용

 “: 범위 편집_명령” 형태로 사용

범위 의 미

1,$ 첫 줄에서 마지막 줄까지(파일내의 모든 줄)

% 첫 줄에서 마지막 줄까지(파일내의 모든 줄) 1,. 첫 줄에서 현재 줄까지

.,$ 현재 줄에서 마지막 줄까지

.-2 현재 줄에서 앞쪽으로 2번째 줄

10,20 10번째 줄에서 20번째 줄까지

(43)

마지막행 모드에서 복사와 잘라내기

 마지막행 모드에서 사용

명령어 수행 작업

:#y #으로 지정한 행을 복사(:10y -> 10행을 복사)

:<범위>y 범위로 지정한 행을 복사(예, :10,20y -> 10행~20행까지 복사) :#d #으로 지정한 행을 삭제(:10d -> 10행을 삭제)

:<범위>d 범위로 지정한 행을 복사(예, :10,20d -> 10행~20행을 삭제) :pu 현재 행 다음에 버퍼내용 붙이기

:#pu #으로 지정한 행 다음에 버퍼내용 붙이기(예, :5pu)

(44)

[실습하기] 버퍼를 이용한 복사

 실습하기

 vi test.txt -> test2.txt로 복사

ssh lily.mmu.ac.kr

My name is Gil-dong Hong.

I wake up in the morning.

This is a living room.

And that’s a bedroom.

ssh lily.mmu.ac.kr

My name is Gil-dong Hong.

And that’s a bedroom.

I wake up in the morning.

This is a living room.

And that’s a bedroom.

1) :3 2) yy 3) p 4) j 5) dd

ssh lily.mmu.ac.kr

My name is Gil-dong Hong.

I wake up in the morning.

This is a living room.

This is a living room.

And that’s a bedroom.

6) p

7) “ayy 8) :w

9) :e test.txt 10)“ap

test.txt

test2.txt

(45)

검색 기능

 마지막행 모드에서 사용

명령어 수행 작업

/문자열 현재 위치부터 파일 앞쪽으로 문자열 탐색

?문자열 현재 위치부터 파일 뒤쪽으로 문자열 탐색 n 다음 문자열 탐색

N 역방향으로 문자열 탐색

(46)

[실습하기] 문자열 탐색

 실습하기

 vi test.txt

ssh lily.mmu.ac.kr

My name is Gil-dong Hong.

And that’s a bedroom.

I wake up in the morning.

This is a living room.

And that’s a bedroom.

1)/room 2)n

3)?name 4)n

5)N

(47)

바꾸기 기능

 마지막행 모드에서 사용

명령어 수행 작업

:s/문자열1/문자열2/ 커서가 위치한 줄에서만 문자열1을 문자열2로 바꿈

:<범위>s/문자열1/문자열2/ <범위>안의 모든 줄에 대해서 각 줄

의 첫번째 문자열1을 찾아 문자열2

로 바꿈

:<범위>s/문자열1/문자열2/g <범위>안의 모든 줄에 대해서

모든

문자열1을 문자열2로 바꿈

:<범위>s/문자열1/문자열2/gc <범위>안의 모든 줄에 대해서 각 문

자열1을 문자열2로 치환할 때 수정

할지 안 할지를 묻는다

(48)

[실습하기] 범위를 이용한 바꾸기

 실습하기

 vi test.txt

ssh lily.mmu.ac.kr

My name is Gil-dong Hong.

And that’s a bedroom.

I wake up in the morning.

This is a living room.

And that’s a bedroom.

ssh lily.mmu.ac.kr

My name was Gil-sun Hong.

But that’s a bedroom.

I wake up in the morning.

This was a living room.

But that’s a bedroom.

1):s/dong/sun/

2):%s/is/was/g 3):2,5

s/And/But/g

4):w

(49)

기타 기능 [1/2]

 파일 읽어오기 / 여러 파일 편집

 vi에서 쉘 명령 실행

명령어 수 행

:r 파일명 지정한 파일을 현재 커서 위치에 삽입 :e 파일명 현재 파일 대신 지정한 파일을 읽음

:n vi 시작시 여러 파일을 지정하였을 경우 다음 파일로 이동

명령어 수행 작업

:!명령 vi를 중단하고 지정한 명령 수행 (vi로 돌아올 때 : ) :sh vi를 잠시 빠져나가서 쉘을 수행 (vi로 돌아올때 : exit)

(50)

[실습하기] 쉘 명령 실행

 실습하기

 vi test2.txt

ssh lily.mmu.ac.kr

My name is Gil-dong Hong.

I wake up in the morning.

This is a living room.

This is a living room.

And that’s a bedroom.

1):!ls -l 2)Esc키

3):sh

4)ls -l

5)exit

(51)

기타 기능 [2/2]

 알아두면 유용한 명령키들

명령어 수 행

:f 파일명 파일 이름을 지정한 이름으로 변경

:w %.old 현재 파일을 .old 이름으로 저장해 둘 때

^g 기본적인 파일정보 출력(파일명, 라인수 등) J 현재 줄과 다음 줄 연결

. 바로 이전에 수행한 명령 재 실행

~ 현재 커서 위치의 한 문자를 소문자 혹은 대문자로 전환

(52)

[실습하기] 기타 명령어

 실습하기

 vi test2.txt

ssh lily.mmu.ac.kr

My name is Gil-dong Hong.

I wake up in the morning.

This is a living room.

This is a living room.

And that’s a bedroom.

1):3 2)J 3)l 4)~

5).

6).

7):w

ssh lily.mmu.ac.kr

My name is Gil-dong Hong.

I wake up in the morning.

THIS is a living room.This is a living room.

And that’s a bedroom.

(53)

vi 환경 설정

 vi의 환경을 설정하는 특수명령과 변수들

명령어 수행 작업

:set nu 파일 내용의 각 줄에 줄 번호 표시 (보이기만 할 뿐 저장은 되지 않는다.) :set nonu 줄 번호 취소

:set list 눈에 보이지 않는 특수문자표시(tab:^I, eol:$ 등)

:set nolist 특수문자보기 기능 취소 :set showmode 현재 모드 표시

:set noshowmode 현재 모드 표시기능 취소

:set set으로 설정한 모든 vi변수 출력

:set all 모든 vi 변수와 현재 값 출력

(54)

환경변수

 주요 환경 변수

 :set 현재 설정 확인

 :set number 화면에 줄 번호 보이기

 :set nonumber 줄 번호 보이지 않기

 :set autoindent 자동 들여쓰기

 :set cindent C 언어 스타일 들여쓰기

 :syntax enable

 :syntax clear

 number 외에도 tabstop(탭 간격), filetype(파일 종류), cindent (들여쓰기 형식)등

 [실습하기]

 각 환경변수 설정 / 결과 화면 확인 후 캡처, 정리

(55)

기타 팁

 들여쓰기 재정렬

 =G

 = (들여쓰기)

 G (전 영역)

 =100G (현재 줄부터 100번째 줄까지 재정렬)

 [실습하기]

 20줄 이상의 C 프로그램 작성

 공백, 탭 등을 임의로 삽입하거나 삭제한 후

들여쓰기 재정렬 기능 확인

(56)

UNIX 환경에서의 C 프로그래밍

1. vi로 C 프로그램 작성

 예: vi test.c

2. 컴퍼일러로 실행파일 만들기

 예: gcc test.c (기본 실행파일 a.out)

 예: gcc –o test test.c (실행파일 test)

3. 오류 발생시 메시지 확인 후 1 실행

4. 실행하기

 예: ./a.out (현재 폴더의 a.out 실행)

 예: ./test (현재 폴더의 test 실행)

참조

관련 문서

학생들이 문제해결과정에 직접 참여 하기에 앞서 센터에서 진행하였던 XO 문제해결과정과 결과물을 보여줌 으로써 학생들의 이해를 높인다. 본 센터에서는 XO

태양광 에너지를 이용하려면 무엇이 필요할까. 추적식

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ).

프레지 상세 둘러보기...

순서 파일의 순서 키 필드에 대한 색인: 물리적 순서 Clustering index.. 키가 아닌 필드에 따라 물리적으로 정렬된 중복을

언어의 사회 통합, 사회통제 등의 기능과 일상생활관련 언어 문화적 특징. 언어의 사회 통합, 사회통제 등의 기능과 일상생활관련

약속, 사과, 칭찬, 욕 등과 같이 얶어가 가지는 마력적인 기능과, 얶어에 대핚 얶어사용자의 태도상의 특징들이

사업소에서 참가하면 기업명과 단체명이 전용 홈페이지에서 소개됨... 미야기현은 정부분, 후쿠시마현은 市町村ㆍ정부분의