오도원입니다.

건강과 행복을 위하여

반응형

Development 71

(Django) QuerySet과 객체 접근방식

1. QuerySet이란. QuerySet은 데이터베이스에서 전달받은 객체들의 list이다. 각 객체들은 DB에서 하나의 record(row)에 해당한다. Python으로 작성한 코드가 SQL로 mapping되어 QuerySet이라는 자료 형태로 값이 넘어온다. ORM 코드가 객체를 불러오지만 실제 DB에 쿼리가 이루어지는 것은 아니다. QuerySet의 lazy한 특성으로 인해 실제 데이터를 가져오기 위해서는 iterate시켜야한다. 2. 객체 접근방식 DB는 column(field)와 row(record)에 데이터가 저장된다. Django에서 필드에 해당하는 부분은 모델의 각 클래스 안에서 지정해준 속성들이다. 레코드에 해당하는 부분은 각 속성에 부여되는 값들이다. 테이블의 레코드마다 dictiona..

Development/Django 2020.09.08

Python. 깊은 복사와 얕은 복사; deep copy & shallow copy

1. 얕은 복사(shallow copy) a = {'name' : 'Kim', 'age' : 18} b = a b['name'] = 'Choi' print('b:', b) print('a:', a) 바로 할당을 할 시 얕은복사가 일어난다. ==로는 deep copy와 shallow copy를 구분할 수 없다. is함수를 써야 완전히 같은지 비교할 수 있다. is의 리턴값이 True일 경우 완전히 같은 값이다. 2. 깊은 복사(Deep copy) 1) import copy import copy a = {'name' : 'Kim', 'age' : 18} c = copy.deepcopy(a) c['name'] = 'Choi' print('c:', c) print('a:', a) 2) import json im..

Development/Python 2020.09.08

windows 환경에서 zappa 설치 에러 해결법(UnicodeDecodeError)

AWS lambda를 이용한 서버리스 실습을 위해 zappa를 설치할 때 에러가 발생했다. windows OS는 default encoding code가 CP949로 설정되어있으므로 kappa를 설치할 때 인코딩 문제가 발생한다. kappa 0.6.0 버전 이후로는 encoding를 설정해주지 않기 때문이다. 해결방법 1. kappa(0.6.0) 수동설치 kappa를 수동으로 설치하고 setup.py파일에 encoding='utf-8'을 추가하는 것이다. 2. Windows WSL2 이용 windows의 문제이므로 linux에서 설치하는 것이다. 바로 WSL2를 이용하는 것이다. 본인은 이 방법으로 문제를 해결했다. WSL2(Windows Subsystem for Linux 2)는 윈도우즈에서 리눅스 명..

Development 2020.09.02

벤더스터. 0901

업무 1. rest api 2. aws vpc 3. 데이터베이스 4. 장고, 자파 aws 람다 또는 인스턴스를 생성 후 rest api를 올려서 rds에 적용하는 것을 한 후에 코드 인수인계. 1. IAM AWS Identity and Access Management(IAM)는 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다. 2. Amazon VPC Amazon Virtual Private Cloud(Amazon VPC)에서는 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 ..

Development/TIL 2020.09.01

Javascript. 길이 n의 array를 특정 값으로 초기화하기; How to initialize an array's length.

1. 길이 n의 array생성 let arr = new Array(n); 2. array의 값을 k로 초기화 arr.fill(value); 길이 n 배열 생성 및 초기화 let arr = new Array(n).fill(value); 주의할 점 : n차원 배열 초기화는 안된다. n차원 배열을 초기화할 때 .fill(new Array())를 하게되면 같은 주소를 공유하는 문제가 발생한다. 예를 들어 2차원 빈 배열을 초기화한다고 해보자. let array2D = new Array(4).fill(new Array()); console.log(array2D); 길이 4의 2차원배열이 제대로 초기화된 것처럼 보인다. 하지만 index 1에 값을 넣는 순간 문제가 발생한다. array2D[1].push(2); 배..

Javascript. array of array에서 가장 긴 array index 찾기

reduce 함수를 사용하면 쉽게 구할 수 있다. let idxOfMaxLen = arrays.reduce((idx, tmpArr) => { tmpArr.length > arrays[idx].length ? idx + 1 : idx }, 0) 예시 var arrays = [ [1,1,1,1,1], [1,1], [1,1,1,1,1,1,1,1,1,1], [1,1,1,1] ] var indexOfLongestArray = arrays.reduce((idx, arr) => arr.length > arrays[idx].length ? idx + 1 : idx , 0) // print result: console.log( indexOfLongestArray ) 참고. https://stackoverflow.com/..

Nodejs. axios를 활용한 http 요청

axios로 특정 url 위치의 데이터를 받아오는 방법에 대해서 알아보자. router.get('/', async(req, res) => { res.json(); }) 위의 라우트에서 특정 url 데이터를 받아오고 해당 데이터를 json으로 전송하고자 한다. try { var ret = await axios.get('http://[api url]'); }catch(err) { console.log(err); } 받아온 response객체가 ret변수에 저장된다. router.get('/', async (req, res, next) => { try{ var ret = await axios.get('http://[api url]'); }catch(err){ console.log(err); } console...

Development/Node.js 2020.08.18

Python. windows cmd python console clear; 윈도우 cmd 화면에서 python 콘솔 초기화하는법

1. os 모듈이용 > import os > clear = lambda : os.system('cls') > clear() 물론 clear변수에 할당하지 않고 os.system('cls')만 해도된다. 참고로 리눅스 환경에서는 'cls'가 아닌 'clear'이다. 2. ANSI 이용 > print("\x1B[H\x1B[J") 해당 문자열을 출력하면 초기화된다. 하지만 이 문자열을 항상 외우고 다니기에는 어려우니 os를 이용한 방식을 추천한다.

Development/Python 2020.08.12
반응형