일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바
- Spring
- bytecode
- 스프링부트
- 개발
- 보안
- ORM
- Spring Boot
- 스프링
- JPA
- 안드로이드
- 웹 개발
- node.js
- BCI
- 웹
- 스프링 부트
- 파이썬3
- rabbitmq
- 파이썬
- HTTP
- db
- python3
- java
- 디자인 패턴
- 자료구조
- 장고
- mysql
- django
- Python
- 데이터베이스
- Today
- Total
목록개발 (7)
semtax의 개발 일지
Hexagonal Architecture 개요 이번 포스팅 에서는, 육각형 아키텍처(Hexagonal Architecture) 에 대해서 알아보고 간단한 예제를 통해 실제로 어떻게 육각형 아키텍처를 적용 하는지에 대해서도 알아보도록 하겠습니다. 계층화 없는 코드 = 스파게티 먼저 육각형 아키텍처를 설명하기 전에, 제가 첫 프로젝트를 진행했을때의 이야기를 해보겠습니다. 제가 모 기관에서 안드로이드 APK 보안취약점 분석을 수행해주는 서비스를 진행했을때, 저는 모듈화나 아키텍처에 대한 개념이 거의 없었습니다. 그래서 저는 입력값 검증 로직, 실제 비즈니스 로직, 데이터베이스 저장 로직 들을 전부 컨트롤러에 해당하는 메소드에 몰아넣어서 작성 하였습니다. 사실 맨 처음에 개발을 할때는 코드가 몇 줄 되지 않아서..
개요 이번 포스팅에서는 pyenv를 설치해서 python 버전관리 하는법을 알아보도록 하겠다. 버전관리 아래의 상황을 가정해보자. 당신이 열심히 파이썬으로 개발을 하고있는데, 당신의 컴퓨터에는 python 3.8 버전이 깔려있다. 하지만, 회사 운영환경은 python 3.6 버전을 쓰고 있고, 당신은 지금 개인 프로젝트를 python 3.8버전으로 하고있다. 게다가, 당신이 받은 다른 업무는 python 3.5를 쓰고 있는 상황이다. 또한, 이 3가지 버전마다 호환이 안되는 부분이 존재해서 단 1버전만을 선택해서 개발을 할 수 가 없는 상황이다. 이럴때 당신은 어떻게 하겠는가? 위와 같은 상황을 위해서 한 컴퓨터에(단일 OS에) 여러가지 파이썬 버전(python 3.8, 3.7, 3.5)이 공존할수 있게..
개요 이번 문서에서는, expressjs에서 static file 경로를 설정해주는 방법을 알아보도록 하자. Static 파일들은 클라이언트에서 동작하는 자바스크립트나 css, html과 같은 리소스 파일들을 지칭한다. 이러한 파일들은 단어뜻 그대로 변하지 않는 데이터이므로 따로 관리를 해주는 것이다. Static 파일 설정하기 express.js 에서는 아래와 같이 static 파일 경로를 설정해 줄 수 있다. app.use(express.static('public')); 위와 같이 설정한 경우, 아래 URL로 접근하면 static파일에 접근이 가능하다. http://localhost:3000/images/kitten.jpg http://localhost:3000/css/style.css http://..
1. 자바 제네릭(Generic) & 타입구조 소개 사실 자바 제네릭은, 초창기 자바에는 존재하지 않는 문법이었다. 그래서 타입이나 메서드 정보와 문법적으로 흡사함에도 불구하고, 해당영역이 아닌, 별도의 다른영역에 저장된다. 또한 제네릭같은경우 실제 실행되는 바이트코드에는 영향을 미치지 않기 때문에 별도의 영역에 저장을 해도 따로 문제가 생기지는 않는다. 자바 스펙문서상에서 제네릭의 문법은 아래와 같은 EBNF(Extended Bacus-Naur Form)으로 정의되어있다. 문법의 정의가 꽤나 복잡하다는것을 알 수 있다. TypeSignature: Z | C | B | S | I | F | J | D | FieldTypeSignature FieldTypeSignature : ClassTypeSignatu..
Expressjs에서 JSON Request Body 파싱하기 expressjs에서 웹 서비스를 제작 했을때, json으로 이루어진 Request Body를 받았을 경우, 요청값을 제대로 받아오지 못하는 문제가 발생한다. expressjs에서는 이러한 문제를 해결하는 방법으로 크게 2가지 방법을 사용할 수 있다. body-parser 모듈 사용(4.16 이전 버전). express.json() 사용 1. Express 4.x ~ 4.16 이전 버전인 경우(body-parser 사용) expressjs 4.16 이전 버전에서는 위와 같은 문제를 해결하기 위해 body-parser라는 외부 모듈을 사용해야 한다. 설치방법은 아래와 같다 npm install body-parser 설치한 모듈은 아래와 같이 사..
1. 개관 이번시간에는, Expressjs에서 지원하는 라우팅 기능과 HTTP Method에 대해서 알아보도록 하겠습니다. 2. Expressjs Routing 위키피디아에 라우팅이라는 단어를 쳐보면 전혀 관련 없어 보이는 네트워크 이야기가 나오고 최적경로와 같은 이야기가 나옵니다. 사실 Expressjs와 같은 웹 프레임워크에서 이야기하는 라우팅이라는 단어가 전혀 관련이 없어 보일수는 있지만 경로를 찾아준다는 맥락에서는 관계가 있다고 볼 수 있습니다. 즉, 웹 프레임워크에서의 라우팅은 사용자가 특정 URL에 접근을 하면 해당 URL에 대응되는 이벤트 핸들러를 찾아서 그에 대응되는 함수를 실행 해준다는 면에서 공통점이 존재합니다. Expressjs에서는 아래와 같은 방식으로 라우팅을 수행합니다 const..
1. 자바 클래스 구조 1-1. 자바 클래스 전체 구조 컴파일된 자바 클래스의 개략적인 구조는 아래와 같이 구성되어있다. 클래스 메타정보 버전, 식별자 등 소스파일 이름 상속관련 정보들 클래스 접근자에 대한 정보 클래스 내에 선언된 필드들의 목록 메서드와 생성자들의 목록 어노테이션 정보 상수 목록들(Constant Pool) 바이트 코드 내부 클래스 정보 그림으로 나타내면 아래와 같다. 1-2. Internal Name 컴파일된 클래스에서, 클래스 이름들은 소스코드와는 다르게 내부적으로 "java/lang/String"과 같은식으로 사용이 된다. 이를 Internal Name이라고 부른다. 참고로, 자바의 Class 클래스를 이용해서 해당 이름을 얻어올 수 있다. 1-3. 타입 및 메서드 명명 규칙 컴파..