본문 바로가기

프로그래밍

(18)
django blank=True 와 Null=True 의 차이 보호되어 있는 글입니다.
Bastion Host 란? Bastion Host 란 보안을 위해 고안된 Host로 외부 네트워크와 내부 네트워크 사이에서 일종의 게이트웨이 역할을 수행하는 호스트를 뜻한다. 특히 Private IP로만 접근이 허용된 서버를 외부에서 접속하고자 할 경우, Bastion Host를 경유하여 Private IP 서버에 접근하도록 설계되곤 한다. 이렇게 관리할 경우, Bastion Host에서 특정 IP로의 접근만 허용하거나, 통신 로그를 일괄적으로 관리할 수 있는 편리함이 보장된다. Bastion Host Best Practice 기본적으로, Bastion Host와 Private 인스턴스는 SSH 접근 인증에 개인 키를 사용한다. Bastion Host 에서 다른 인스턴스로 연결하는 경우에도 개인 키를 필요로 하는데, 여기에는 크게..
Postgresql 업데이트 이슈 오랜만에 postgresql 을 사용해서 개발을 해볼까 했는데 오래도록 사용을 안해서 그런지 9.x 버전이라 최신버전인 13.x 버전을 사용하고자 했다. brew 에서 간편하게 업데이트 하는 방법이 있더라. 9.5 -> 13.1 버전으로 업데이트 되었다. brew postgresql-upgrade-database 그 후 psql 명령어를 이용해서 접속을 시도하는데 아래와 같은 에러가 발생했다. The data directory was initialized by PostgreSQL version 9.5, which is not compatible with this version 13.1. 해당 에러는 이전 버전에서 사용하기 위해 데이터 폴더를 9.5 버전으로 초기화 되어있는데 이를 13.1 버전에서 사용하..
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 필자는 pyenv를 통해서 python 버전을 관리한다. 최근에 새로운 프로젝트를 python 3.8 버전에서 진행하고자 pyenv 명령어를 이용해서 3.8 버전을 인스톨했는데 아래와 같은 에러가 발생했다. Installing openssl-1.1.0j... BUILD FAILED (OS X 10.15.5 using python-build 20160303-852-g089b828b) Inspect or clean up the working tree at /var/folders/c5/d1_cb4j92f19h5q0_cbv7bpc0000gn/T/python-build.20200927163103.88116 Results logged to /var/folders/c5/d1_cb4j92f19h5q0_cbv7bpc00..
Docker image alpine vs slim vs slim-stretch 우리는 어떤 이미지를 선택해야하나? 각 Docker image마다 저마다의 규칙으로 태그를 설정한채 배포하고 있지만 docker-library 공식 문서를 보면 몇몇 이미지에서(전부 확인해보지는 않았다) 동일한 tag 규칙을 따르며 배포하는 것을 확인할 수 있는데, 그 태그의 종류는 아래와 같다. name:version name:version-slim name:version-alpine name:version-windowsservercore 사실 필자는 이러한 이미지 태그들의 차이는 확인하지 않고 상용 배포 시 alpine으로 배포하는 것이 용량이 작길래 별 생각 없이 alpine을 많이 써왔는데, 오늘은 문서에 작성되어있는 내용들을 토대로 각 태그들의 차이점을 기록해보려한다. (이미지 설명은 python이미지를 기반으로 설명하겠다.) n..
Mysql character set 과 collation 모든 데이터베이스 시스템은 텍스트 데이터를 어떻게 인코딩할 것인가를 결정해야한다. Mysql에서는 charater set이라는 속성값을 통해 이를 결정하는데, 다른 데이터베이스 시스템과는 다르게 mysql에서는 collaction이라는 속성도 존재한다. character set 위에서 말했듯이 characte set은 텍스트 데이터를 어떤 방식으로 인코딩하여 저장할 것인가를 결정하는 값이다. 한글 인코딩을 위해 가장 널리 사용되는 인코딩 방식으로는 UTF-8과 EUC-KR이 존재하지만 show character set; 명령어를 통해서 지원하는 인코딩 목록을 확인할 수 있다. # mysql 8.0.20 기준 +----------+---------------------------------+--------..
mysql character set error + django test django 와 mysql을 붙여서 개발을 하는 와중에 한글 데이터를 입력하자 아래와 같은 에러가 발생했다. self.errorhandler(self, exc, value) File "/home/swot/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler raise errorvalue File "/home/swot/venv/lib/python3.6/site-packages/MySQLdb/cursors.py", line 247, in execute res = self._query(query) File "/home/swot/venv/lib/python3.6/site-packages/MySQLdb/cu..
인코딩이란? (해당 포스트에서는 "문자 인코딩"에 국한하여 설명한다.) 문자, 동영상, 음악과 같은 사람이 현실에서 사용하는 데이터를 컴퓨터에 저장하기 위해서는 컴퓨터가 이해할 수 있는 데이터로 변환해야하는데 이 작업을 인코딩이라고 한다. 이런 인코딩을 위해서 탄생한 ASCII가 그 시초라고 할 수 있다. ASCII는 라틴 알파벳과 숫자, 특수 문자를 7비트 이진수로 대응한 인코딩 기법을 사용했는데, 이름에서도 알 수 있듯 ASCII는 미국 표준 문자코드 였기 때문에 라틴 알파벳을 제외한, 한중일 언어와 그 밖에 수많은 언어들에는 전혀 사용할 수 없는 명확한 한계가 있었다. 그래서 ASCII를 사용할 수 없는 산업이나 국가에서는 저마다의 고유한 인코딩 기법을 사용했으며 결국 다른 인코딩 기법을 사용하는 곳에서는 정보..