728x90

프로젝트를 무사히 만들고 샘플 페이지도 브라우저에 띄워 보았다. 이어서 settings.py 라는 프로젝트에 대한 구조? 속성? 을 담고 있는 파일을 공부해볼까 하다가... 장고에서 사용하는 프로젝트 Project 와 앱 Application 의 개념을 한번 정리하고 넘어가는 것이 좋을 것 같아서 끊기 신공을 한 번 더 사용해볼까 한다.

우리가 이전 포스팅에서 만든것은 프로젝트 Project 이다. PMP 자격 시험을 본 적이 있거나 프로젝트 관리에 대한 수업을 들어 보았다면 프로젝트는 여러개의 서브 프로젝트로 나뉘어 질 수도 있고, 프로젝트들이 모여서 프로그램을 이루고 어쩌고 하는 이야기들을 들어보았을 것이다. 장고에서도 동일한 개념일까? 이럴때에는 가장 좋은 것이 공식 문서를 보는 것!

길다. 하지만 볼드체가 있으니 차근히 살펴보도록 하자. 첫 문장 가라사데, <프로젝트 Project 라는 용어는 장고 웹 어플리케이션을 말해>. 와닿지 않는다. 조금 더 읽어보면, <프로젝트라 불리우는 파이썬 패키지는 settings 모듈로 정의되긴 하지만 다른 것들도 많이 포함하고 있어> 라고 한다. 이후에 이어지는 명령과 생성되는 파일은 우리가 지난 포스팅에서 봤던 것들인데... 요약하면 프로젝트는 하나의 큰 패키지와 같은 것! 이라는 느낌이다. 

세번째 문단에 오니 앱 혹은 어플리케이션에 대한 이야기를 하고 있다. <어플리케이션 Application 이라는 용어는 몇 가지 기능을 제공하는 파이썬 패키지를 말해> 라니... 그 다음 문장에 재활용 가능하다는 것을 보면 <프로젝트를 구성하는 기능의 집합 단위를 어플리케이션이라고 함> 정도가 될 수 있을 것 같다. 

가령 커뮤니티 사이트를 만드는 프로젝트라고 하면, <커뮤니티 사이트> 자체가 프로젝트의 개념이고, 그 안에서 사용되는 <게시판>, <쇼핑몰>, <개인정보관리기능> 같은 것들이 어플리케이션이라고 보면 무난할 것 같다. 그렇다면 우리가 지난 포스팅에서 프로젝트를 만든 이후에 해야할 것은 무엇일까? 바로 어플리케이션을 만드는 것이다. 

그럼 다음 포스팅에서 프로젝트 하위에 어플리케이션을 만드는 것을 해보고, 그 다음에 settings.py 를 살펴보는 것으로 해보자. 순서야 어떻든 우리가 필요한 것을 잘 이해하면 되는 거니까...!!

 

Applications | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com


이어지는 글들 살펴보기

 

Django, 파이썬 장고 - 프로젝트에 어플리케이션 생성하기

프로젝트도 만들었고 프로젝트와 어플리케이션의 차이도 살펴보았다. 이번 포스팅에서는 프로젝트 안에 어플리케이션을 생성해 보도록 하자. 딱히 무엇을 만들겠다는 계획이 있는 것은 아니지

ondemand.tistory.com

 

 

Django, 파이썬 장고 - 프로젝트 생성하기

파이썬에서 사용되는 웹 프레임워크 중 널리 사용되는 것이 장고 Django 와 플라스크 Flask 이다. 둘 다 장단점이 있겠지만 대략 어깨너머로 본 것과 바람을 타고온 이야기를 종합해보면 장고가 조

ondemand.tistory.com

 

728x90
728x90

HTTPS 통신을 위해서는 SSL/TLS 인증서가 필요합니다. 서버측에 Private Key 와 Public key 를 설치하고, 웹 브라우저로 대표되는 User-Agent 는 Public Key 를 전달받아 통신 구간의 암호화에 사용하게 됩니다. 이러한 인증서에는 여러가지 정보들이 담겨 있는데요 가장 대표적인 것으로 도메인 정보를 담고 있는 CN (Common Name) 입니다. 

네이버의 인증서 정보 - 일반 이름이 Common Name 입니다

 CN 이외에도 인증서에는 인증서와 관련한 여러가지 정보를 담기 위한 필드들이 존재합니다. 위의 네이버 인증서 정보에 나오는 주/도, 소재지, 조직 등의 모든 정보들이 인증서의 Public Key 에 포함되어 사용자에게 전달되는 값 들입니다. 네, 당연히 전송되는 용량에 포함되는 값들입니다. openssl 명령으로 이 인증서를 조금 더 자세히 살펴보면...

...인증서의 발급 체계에 따라 서버 인증서, 중간 인증서, 루트 인증서의 정보를 확인할 수 있습니다. 서버 인증서에 있는 C, ST, L, O 등의 값이 브라우저에 표시되었던 정보임을 알 수 있습니다. 가장 위에 있는 루트 인증서를 보면 OU Organization Unit 라는 값이 있는데요 여기에 www.digicert.com  이라는 인증서 발급사의 도메인 정보가 들어가 있는 것을 볼 수 있습니다.

OU 를 직역하면 조직 단위 내지는 부서명 정도가 될 것 같은데 좀 엉뚱한 정보가 들어가 있는 느낌이죠? 회사에서 사용하는 LDAP 정보를 살펴봐도 보통 OU 에는 부서 혹은 조직 단위에 따른 편제 정보가 들어가 있곤 합니다. SSL/TLS 인증서 세계(?)에서는 이 필드를 원래의 목적과 다르게 사용하는 경우가 많았고, 이로 인해 불필요한 바이트의 전송이 관례적으로 있어 왔다는 것을 짐작할 수 있겠습니다 (=우리의 소중한 데이터를 소모해 왔다는 것도...)

Digicert 에서는 더 이상 OU 를 쓰지 않겠다고 발표했군요

이 필드에 대한 논란이 있어온 이래 저렴한 인증서의 대명사였던 Sectigo (과거 COMODO 였죠) 는 진작에 필드를 제거했습니다. Sectigo 쪽에서는 SSL/TLS 인증서의 제품 정보를 표현하는 것과 같은 용도로 쓰이고 있었던 것 같습니다. 역시나 제정되었던 표준, 약속과는 다른 방향이었습니다.

Digicert 는 대한민국발 인증서 사태이후 시만텍의 인증서 사업을 인수해서 운영하고 있는 가장 큰 CA 중 하나입니다. 이제 Digicert 가 OU 필드를 인증서 발급에 사용하지 않고 인증서 정보에도 포함시키지 않을 것이라고 하니, OU 필드는 퇴출이 확정된 거라 봐도 무방할 것 같습니다. 아울러 사용자들은 자신의 인터넷 회선, 모바일 플랜에서 불필요한 전송 비용을 줄일 수 있게 된 것이기도 합니다. 

[ 참고 링크들 ]

 

Public certificates – Data entries that violate industry standards

If you only put a hyphen in the organization unit field, a CA will be unable to validate the value. However, if you enter an organization name that includes a hyphen in it (for example, Dev-Ops), this hyphen does not prevent a CA from validating your organ

docs.digicert.com

https://knowledge.digicert.com/alerts/ou-removal.html

 

DigiCert will deprecate the Organizational Unit field

Description DigiCert will deprecate the Organizational Unit (OU) field to simplify certificate ordering. Why is the OU field being removed? The OU field allows optional metadata to be stored in a certificate, however, it’s intended purpose is extremely l

knowledge.digicert.com

https://www.xolphin.com/news/Change_in_use_of_OU-fields_in_Sectigo_certificates

 

Change in use of OU-fields in Sectigo certificates

Change in use of OU-fields in Sectigo certificates 19 December 2019 As of December 15, 2019, Sectigo will change the use of OU fields for all new Sectigo certificates. From this date, it is no longer permitted to include non-organization-related informatio

www.xolphin.com

 

728x90
728x90

HTTP/2 시대가 시작되면서 다양한 성능 개선을 위한 사례들을 요즘 찾아보고 있습니다. QUIC 도 그중 하나이고 TCP Fast Open 이라는 표준 역시 살펴봐야 할 사례인 것 같습니다. 공부할 건 많고 시간은 없고 머리는 안돌아가고... 그래도 일단 필요한 링크들을 모아봅니다. 먼저 공부하시는 분들이 계시다면 정리해서 공유를... 굽신...


# TCP Fast Open - TCP 의 3 way handshake 로 발생하는 RTT 및 Latency 의 한계를 극복하려는 노력 / Handshake 할때부터 컨텐츠를 담아 전달해 보자는 것이 요지.



출처 : 구글 기술문서 (아래의 링크5)



링크1 - RFC 7413 - TCP Fast Open (Experimental) : https://tools.ietf.org/html/rfc7413

링크2 - Cent OS 7 + nginx 환경에서 TCP Fast Open 활성화 하기 : https://goo.gl/pRmWZO

링크3 - TCP Fast Open 위키피디가 : https://en.wikipedia.org/wiki/TCP_Fast_Open

링크4 - curl 7.49.0 의 특정 운영체제 버전에서 옵션 제공 : https://curl.haxx.se/libcurl/c/CURLOPT_TCP_FASTOPEN.html

링크5 - 구글에서 발표된 기술 문서 : http://goo.gl/rz1sqX

링크6 - Keycdn 의 아티클 (일종의 요약) : https://www.keycdn.com/support/tcp-fast-open/


- NoPD -

728x90
728x90
자바스크립트는 참 편리한 스크립트 언어이지만 다른 한편으로는 이해하기 힘든 녀석이기도 합니다. 이유인 즉선 너무 유연하게 사용할 수 있다보니 가끔 일반적인 언어, 컴퓨터 상식으로는 "왜 이렇게 동작하지?" 하는 경우들이 있기 때문입니다. 가장 대표적인 것이 조건 비교문을 이용하여 변수나 객체를 비교할때 입니다. 잘 동작할 것으로 생각했던 구문들이 정상적인 동작을 하지 않거나 예상치 못한 반응을 한다면 혹시 아래 표에 나온 경우중 하나가 아닌지 잘 살펴봐야 합니다. 아래 표는 http://dorey.github.io/JavaScript-Equality-Table/ 에서 업어왔습니다

 
Boolean 값인 True 와 1은 같은 값일까요? 그리고 True 와 "1"은 같은 값일까요? 조금 더 나아가 True 와 [1] 을 비교하면 어떻게 될까요? 두개의 이퀄 연산자(==)를 사용하여 자바스크립트에서 값을 비교하는 경우 위의 표에서 초록색으로 표시된 것처럼 결과가 리턴된다고 합니다. "" 와 0 이 같다는 생각을 해보셨나요? 혹은 "" 와 [[]] 가 같은 값으로 식별된다는 상상을 누가 해봤을까요? 

때문에 자바스크립트에서는 각 객체와 객체를 비교했을 때 값을 정확하게 예측하기 힘들다면 이퀄 연산자를 두개 이어쓰는 대신 세개(===)를 쓰는 것이 좋습니다. 세개의 이퀄 연산자를 사용하는 경우 엄격한 규칙에 의거하여 값을 비교하게 되고 이로 인한 조건 비교문의 오동작을 효과적으로 막을 수 있습니다. 세개의 연산자에 대한 부정형은 !== 이니 참고하시면 될 것 같습니다


훨씬 상식(?)에 가까운 결과를 보실 수 있습니다. 같은 형태의 자료형들간에 비교를 했을때 정확한 값이 나오는 것을 볼 수 있습니다. 자바스크립트를 쓰면서 뭔가 이해할 수 없는 동작이 발생하고 있다면 표를 참고하시고 연산자를 바꿔보는 것을 검토해 보세요. 우리의 시간은 소중하니까요. :-)

 

728x90

+ Recent posts