목록Programming (14)
공부기록
JVM? Java Virtual Machine (이하 JVM)은 추상적인 컴퓨팅 머신이다. JVM은 Java 컴파일러에 의해 생성된 바이트코드를 기계어로 바꾸어주는 역할을 한다. JVM은 java로 작성된 프로그램에게 그들을 실행시키기 위한 프로그램으로 보여지게 된다. 때문에, java 프로그램들은 동일한 인터페이스와 라이브러리를 가지고 작성될 수 있게 된다. JVM은 특정한 OS에 호환되도록 만들어져서, Java 프로그램을 해당 OS에서 돌아가도록 만든다. 이러한 식으로 Java 프로그램은 플랫폼 독립성을 띄게 된다. 다만 JVM 자체는 플랫폼 종속적인 특성을 띈다. 자바 실행 과정 작성된 자바 코드는 Java Compiler 에 의해 바이트코드로 변환된다. Class Loader는 이 변환된 바이트코..
배포 환경의 구분 개발을 하고 서비스를 단 하나의 웹 컨테이너로 한다고 생각하자. 새로운 코드를 짜게 되면 그것을 테스트 해야하는데 이것을 서비스중에 동시에 한다는 것은 말이 안된다. 불안정한 코드로 인해 의도하지 않은 데이터 수정 및 삭제가 일어날 수도 있고, 테스트 중 코드를 수정하고 다시 서버를 올리는 것은 연속적인 서비스 중단을 낳게 된다. 이 때문에, 우리는 배포 환경을 구분하여 서비스를 배포하게 된다. 배포 환경 별 세팅을 구성함으로써 서비스 환경이 더욱 안정적이어 지고, 무중단 배포 만큼은 아니지만 수정된 사항이 완전히 안정화 된 이후에 서비스 환경에 단 한 번 수정이 이루어지기 때문에 업데이트 및 디버깅으로 인한 배포 중단이 최소화 될 수 있다. 1. 개발환경 서비스 개발자가 개발과 디버깅..
개인적인 생각이므로 참고만 해주시길 부탁드립니다. 1. python으로 된 웹 프레임워크 파이선으로 되어있기 때문에 기본적으로 코드 작성이 간결하고 쉽다. 또한 파이선의 다양한 내장 함수(예 : map, filter)를 사용하여 다른 언어로는 for문을 사용하여 길게 써야 할 것을 한 줄로 코딩할 수 있다. 특히 데이터 프로세싱에서 이런 장점을 활용할 수 있다. 또한 python으로 된 다양한 외부 라이브러리 덕분에 다양한 비지니스 로직을 쉽게 구현할 수 있다는 장점이 있다. 2. django가 제공하는 다양한 내장 기능 python으로 된 웹 프레임워크에는 django와 flask가 있다. 이 둘의 차이는 기본적으로 얼마나 많은 기능을 제공하는지에 있다. django는 csrf_token과 같은 보안기..
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..