반응형

[ MVC Structure ] Model-View-Controller 구조 패턴의 이해

MVC 구조란 Model, View, Controller등 3가지 요소로 구성된 구조의 개발 패턴을 의미한다. 이 MVC패턴을 사용하면 애플리케이션을 구성하는 시각적 요소와 데이터간 간섭 없이, 각각의 요소를 독립적으로 개발 함으로서 각 요소의 재사용이 가능할 뿐만 아니라, 유지보수에 있어서도 큰 이점이 있다.


MVC구조 패턴 각 구조의 역할은 다음과 같다.


1. Controller : 모델에 명령을 전달하여 상태를 변경하거나,  view에 명령을 전달하여 프리젠테이션을 변경하는 역할을 한다. 이때 view의 상태를 읽어 model에 전달하거나, model의 상태를 읽어 view에 전달하는 역할도 포함한다.

2. Model : 상태변화가 있을 때 이를 controller나 view에 통보하는 역할을 한다. 이 과정을 통해 view는 최신의 결과물을 프리젠테이션 할 수 있게 되며, model은 갱신된 data를 보관하게 된다.

3. View : 사용자에게 프리젠테이션 할 결과물을 생성하는 역할을 수행한다.


사용자를 중심으로 이 패턴을 다시 한번 정리하면 다음과 같다.

사용자가 browser를 통해 data를 요청하면, controller는 이를 받아 필요한 data를 model모듈로부터 받아 view에 전달하게 되며, view에서는 이 data를 browser를 통해 사용자가 볼 수 있도록 해준다. 이 과정을 진행하는 동안 보관해 두어야 할 data가 발생하면, controller는 이를 model에 전달하여 처리하게 된다.

즉 controller, model, view는 각각 logic, data, view를 담당하게 되며, 각각의 역할 범위를 명확히 하여 서로의 영역을 침범하지 않는 개발 방법을 MVC구조 패턴에 의한 개발이라고 할 수 있다.


[ MVC 패턴 개발 가이드 라인 ]

1. model은 애플리케이션 내부 data 및 view에 제공할 data만을 보관한다.

2. view는 유저에게 보여질 화면에 표시될 시각적 UI요소만을 보관한다.

3. controller는 model과 view를 연결하는데 필요한 logic만을 보관한다.

4. model은 사용자에게 보여질 모든 data를 가지고 있어야  한다.

5. view는 model이 보관하고 있거나, 보관하게 될 어떠한 data도 별도로 보관하지 말아야 한다.

6. view는 controller가 담당해야 하는 logic을 view내부에서 처리하지 말아야 한다.

7. controller는 model이나 view의 변동사항을 모니터링 할 수 있어야 한다.


즉 model, view, controller 각각의 요소들은 자신의 역할 이외에 상대방의 어떤 logic이나 data도 가지고 있어서는 안된다는 것 이다.

그 이유는 이렇게 역할이 명확히 구분되어 있어야만 기능의 추가, 오류 등이 발생하는 상황에서도 해당 부분만을 개발, 수정하여 생산성을 높일 수 있기 때문이다.


반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

프리미어 한글판 영어로프리미어 프로 한글판 메뉴를 영어로 바꾸는 방법은 다음과 같다.

[ 한글메뉴 → 영어메뉴로 전환 ]

1. 프리미어를 실행한 상태에서 Ctrl+F12 를 누른면 콘솔창이 열린다.

2. 콘솔창 왼쪽 상단의 '콘솔'이름 오른쪽의 햄버거(≡) 아이콘을 클릭하고, 'Debug Database view'메뉴를 실행한다.

3. 창이 전환되면 'ApplicationLanguage'의 설정을 ko_KR에서 en_US로 수정한 후 창을 닫는다.

4. 프리미어를 종료한 후 다시 시작한다.

5. 영문 메뉴로 잘 전환 되었는지 확인하고 즐긴다. ^o^

 

[ 영어메뉴 → 한글메뉴로 전환 ]

위의 방법과 동일하며 이번에는 en_US를 ko_KR로 바꿔주면 된다.

 

[ 영어메뉴와 한글메뉴 함께 나오게 하기 ]

1. 프리미어를 실행한 상태에서 Ctrl+F12 를 누른면 콘솔창이 열린다.

2. 콘솔창 왼쪽 상단의 '콘솔'이름 오른쪽의 햄버거(≡) 아이콘을 클릭하고, 'Debug Database view'메뉴를 실행한다.\

여기까지는 동일하고 이번에는

3. 창이 전환되면 'ApplicationLanguage' 바로 아래있는 'ApplicationLanguageBilingual'를 true로 전환한다.

4. 프리미어를 종료한 후 다시 시작한다.

5. 영문 메뉴로 잘 전환 되었는지 확인하고 즐긴다. ^o^

 

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

무료 글꼴 총정리

[코딩글꼴]

No.

Font Name

Company

License

 Remarks

 1

 D2 Coding

 네이버

OpenFontLicense

 

 

 

 

 

 

 

 

 

 

 

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

cafe24에서는 더 이상 WebMysql을 지원하지 않는다.

이제는 호스팅 가입자가 직접 접속할 수 있는 방법을 적용해야만 한다.

다행이 cafe24에서는 그 대표적인 방법 3가지를 제시하고 있다.

다음은 cafe24에서 제공하는 FAQ 링크이다.

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

크롬 웹스토어에서 Dark Reader를 검색하여 설치하면 간단히 설정할 수 있다.

툴바의 아이콘을 클릭하면 다크모드 설정을 조정할 수 있는 메뉴가 있어 편리하게 사용할 수 있다.

아직 다크모드를 지원하지 않는 웹사이트가 있기때문에 다크모드에서 식별이 어렵다면 dark reader을 off로 전환하면 원래의 모습으로 되돌아 간다.

 

Dark Reader는 크롬뿐만 아니라 파이어폭스, 사파리도 지원한다.

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

HTTP의 메소드인 GET과 POST의 차이점에 대해 살펴 본다.

 

[ GET ]

get 은 서버로 부터 정보를 조회하기 위한 HTTP메소드 이다.

request를 서버에 전달할 때 URL에 다음과 같은 방법으로 value_name과 value를 전달하게 된다.

http://www.example.com/request?name1=value1&name2=value2&name3=value3

URL 뒤에 question symbol(?)을 붙이고 그 뒤에 요청할 value이름과 값을 표시한다. value가 여러개인 경우는 ampersand symbol(&)을 이용하여 나열한다.

get의 특징은 다음과 같다.

- 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있다.

- 쿼리스트링을 사용하기 때문에 특정 페이지를 링크할 수 있다.

- 웹브라우저를 통해 웹페이지나 게시글 등을 조회하는 경우 주로 사용된다.

 

[ POST ]

post는 서버에 리소스를 생성하거나 변경하기 위해 사용된다. 따라서 GET과는 달리 URL이 아닌 HTTP메세지의 Body에 전달할 데이터를 담아 전송하게 된다.

HTTP메시지의 body는 데이터를 크기의 제한 없이 전송할 수 있어, POST request는 GET과는 달리 대용량의 데이터를 전송할 수 있다.

post의 특징은 다음과 같다.

- 대용량의 데이터 전송이 가능하다.

- 동일한 요청을 해도 응답은 항상 다를 수 있다.

- 서버의 상태나 데이터를 변경 시킬때 주로 사용된다.

 

흔히 GET은 서버에 전달되는 데이터가 외부로 노출 되고, POST는 노출되지 않아 보안을 위해 POST를 사용하는 것이 바람직하다는 정보를 볼 수 있다. 하지만 이는 잘못된 정보이다. 브라우저의 개발자 도구를 통해 POST로 전달되는 정보도 확인할 수 있기 때문이다.

 

바람직한 메소드 사용은 다음과 같이 정리 할 수 있다.

- 조회 : GET

- 생성 : POST

- 수정 : PUT 또는 PATCH

- 삭제 : DELETE

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

서비스 중에는 패스워드를 보안상 문제가 없도록 설정해야 하지만 개발용도로 로컬에 설치해서 사용할 경우 패스워드가 긴 경우 불편하다.

이런 경우 패스워드 정책을 변경하고, 패스워드를 재설정하는 방법을 정리한다.

먼저 mysql 프롬프트로 이동한다.

 # mysql -u root mysql

현재 패스워드 정책을 확인한다.

mysql> SHOW VARIABLES LIKE 'validate_password%';

+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.05 sec)

보통 위와 같이 설정되어 있다. 내용을 보면 길이는 8 이상, 특수문자, 대소문자 등이 1글자 이상 있어야 하는 것으로 되어 있다.

이를 변경하려면 SET GLOBAL 명령을 사용한다.

mysql> SET GLOBAL validate_password_policy=LOW;
--------------
SET GLOBAL validate_password_policy=LOW
--------------

Query OK, 0 rows affected (0.00 sec)

mysql> SET GLOBAL validate_password_length = 4;
Query OK, 0 rows affected (0.00 sec)

mysql> SET GLOBAL validate_password_mixed_case_count = 0;
Query OK, 0 rows affected (0.00 sec)

mysql>  SET GLOBAL validate_password_number_count = 0;
Query OK, 0 rows affected (0.00 sec)

mysql>   SET GLOBAL validate_password_special_char_count = 0;
Query OK, 0 rows affected (0.00 sec)

설정이 완료 되었으면 내용을 다시한번 확인해 본다.

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 4     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 0     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)

이제 아무런 제약없이 4개의 문자만으로 설정이 가능하다.

비밀번호 재 설정은 다음과 같다.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.00 sec)

 

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

각종 파일을 변환할 수 있는 사이트이다.

오디오, 동영상, 이미지, 문서, eBook, 압축파일 등을 변환할 수 있다.

convert.com

https://www.online-convert.com/

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,