목록분류 전체보기 (166)
공부기록
ORM (Object Relational Mapping) ORM은 객체지향 프로그래밍의 객체 (Object)와 관계형 데이터베이스 (RDBMS)의 데이터를 연결 (Mapping)하는 기술을 의미한다. 장점 ORM은 객체지향 프로그래밍에서 사용할 수 있는 가상의 객체지향 데이터베이스를 만들어 프로그래밍 코드와 데이터를 연결한다. ORM으로 생성된 가상의 객체지향 데이터베이스는 프로그래밍 코드 또는 데이터베이스와 독립적이므로 재사용성 및 유지보수가 용이하다. ORM은 SQL 코드를 직접 입력하지 않고 선언문이나 할당 같은 부수적인 코드가 생략되기에 직관적이고 단단하게 데이터를 조작할 수 있다. 단점 ORM은 프레임워크가 자동으로 SQL을 작성하기에 의도적으로 SQL이 작성되었는지 확인할 필요가 있다. 객체지..
개인적인 생각이므로 참고만 해주시길 부탁드립니다. 1. python으로 된 웹 프레임워크 파이선으로 되어있기 때문에 기본적으로 코드 작성이 간결하고 쉽다. 또한 파이선의 다양한 내장 함수(예 : map, filter)를 사용하여 다른 언어로는 for문을 사용하여 길게 써야 할 것을 한 줄로 코딩할 수 있다. 특히 데이터 프로세싱에서 이런 장점을 활용할 수 있다. 또한 python으로 된 다양한 외부 라이브러리 덕분에 다양한 비지니스 로직을 쉽게 구현할 수 있다는 장점이 있다. 2. django가 제공하는 다양한 내장 기능 python으로 된 웹 프레임워크에는 django와 flask가 있다. 이 둘의 차이는 기본적으로 얼마나 많은 기능을 제공하는지에 있다. django는 csrf_token과 같은 보안기..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vkjyy/btq42ADgtxg/hugyFLuqf14808a9lFbeek/img.png)
GITFLOW? gitflow는 git을 활용하여 효율적으로 작업을 하기 위한 개발기술이다. 작업은 병렬적으로 하되 완성된 코드는 하나로 모이는, 'decenteralized but centralized' 의 철학을 가지고 있다. 이 사진은 gitflow의 모든 것을 요약한 사진이라고 할 수 있다. Branches 여러 종류의 브렌치들을 통해 이러한 작업을 할 수 있다. 브렌치의 종류에는 master, develop, feature, release, hotfix 브렌치가 있다. master : 제품으로 출시될 수 있는 브렌치 develop : 다음 출시 버전을 개발하는 브렌치 feature : 기능을 개발하는 브렌치 release : 이번 출시 버전을 준비하는 브렌치 hotifx : 출시 버전에서 발생한..
CSRF Attack (Cross Site Request Fogery Attack) csrf 공격은, 위해한 웹사이트가 POST와 같은 액션을 사용할 때, 인증된 사용자의 인증정보를 무단으로 사용하는 것을 말한다. 이 때문에 사용자는 자신이 의도하지 않은 요청을 하게 된다. 예를 들어, 공격자가 사이트의 게시물에 어떤 사이트의 API를 이용하여 조작된 HTML을 만들면, 인증된 사용자가 그것을 사용하여 자신은 의도치 않았던 행위를 하는 것이다. CSRF Token django는 csrf 공격을 막기 위해 csrf token을 사용한다. 사용자가 post 요청이 있는 template을 요청하면, 장고는 cookie에 secret을 보내고, hidden form의 필드 'csrfmiddlewareto..
GIL 인터프리터를 cpython을 사용하고 다중 쓰레드 프로그래밍을 할 경우, 한 쓰레드 만이 인터프리터를 사용할 수 있는 상황, 즉 인터프리터에 mutex가 걸려있는 것을 말한다. 왜 일어나는가 cpython은 gc를 위해 reference counting을 사용한다. 문제는, reference count를 하는 객체를 사용하는 쓰레드들이 서로 상호배제 되어야만 메모리 누수와 같은 문제가 생기지 않는다는 것이다.이 때문에, cpython은 interpreter 자체에 락을 걸어 문제를 해결하게 되었다. 각 객체가 reference count 변수를 가지기에 객체마다 스스로를 위한 mutex를 가지는 것을 생각해 볼 수 있다. 하지만 이 경우, 많은 mutex에 의해 성능이 저하되고, 여러 개의 loc..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cJV5QM/btq4YtcZsLT/UDzM56AEPuZN850WMeub30/img.jpg)
SQL DB SQL은 Structured Query Language의 약자이며 그 자체로 DB는 아니지만, SQL을 통해서만 특정한 종류의 DB와 상호작용 할 수 있다. SQL은 RDBMS (관계형 데이터 베이스)로부터 CRUD기능을 가능케 한다. 이러한 DB는 2개의 특징을 가지고 있다. 1. 데이터 베이스에 저장된 데이터들은 엄격한 데이터 스키마를 따른다. 2. 데이터는 여러 개의 테이블들로 나누어지고 관계들을 통해 연결된다. 엄격한 스키마 데이터는 테이블에 레코드로써 저장되고 각 테이블은 명확히 정의된 구조를 가진다 - 속성값의 집합으로 인해 어떤 데이터가 이 테이블에 저장이 될 지 말지가 정해지게 된다. 구조는 필드의 이름과 자료형에 따라 정의된다. 당신은 이 스키마를 따르지 않는 레코드를 추가할..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bCN4dU/btq4Ufs3Gt0/raOhX7QV28M1qfCUfeahH1/img.png)
교착상태 회피 회피 방법은 발생 조건 1~3은 허용 자원 할당시 교착상태가 발상 가능하지 않도록 고려 예방 방법에 비해 더 많은 병행성을 제공 (효율성이 높음) 교착상태 회피는 프로세스가 자원을 요청하고 그 자원이 사용가능 할 때 그대로 할당해 주지 않고, 이 할당이 교착상태를 발생 시킬 가능성이 있는지 조사 교착 상태 발생 가능성이 있다면 자원을 할당하지 않음 문제점 - 현재 자원의 가용 개수와 프로세스 자원 요구량을 미리 알고있어야 한다. 회피 기법 프로세스 시작거부 프로세스가 시작하려 할 때 요구하는 자원 할당이 교착상태 발생의 가능성이 있으면, 프로세스를 시작시키지 않는 방법 자원 할당 거부 수행중인 프로세스가 요구하는 추가적인 자원 할당이 교착상태 발생의 가능성이 있으면, 자원을 할당하지 않는 ..
교착 상태 예방 교착 상태가 발생하기 위한 4가지 필요충분 조건 중 하나를 설계단계에서 배제 간접 예방 vs 직접 예방 간접 예방 조건 1~3중 하나를 허용치 않는다. 간접 예방 조건 4를 허용하지 않는다. 4가지 조건에 대한 해결 방안 상호배제 상호배제는 공유 자원의 일관성을 유지하기 위해 반드시 필요 점유 대기 프로세스가 자신이 사용할 모든 자원을 한번에 요청 모든 자원을 할당 받을 수 있다면 계속하고 그렇지 않으면 어떠한 자원도 할당 받지 않고 대기 비효율적 모든 자원을 할당받기 위해 오랜 기간 대기 하게 됨 한꺼번에 할당 받은 자원중 일부는 실제 수행이 끝날 때 쯤 사용될 수 있음. 실제로 이용되지 않으면서 점유될 가능성이 있다. 프로세스가 미래에 사용될 모든 자원 미리 예측 불가능 비선점 방법 ..