일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- db
- 스프링
- 개발
- 스프링 부트
- 스프링부트
- 파이썬3
- 웹 개발
- bytecode
- Python
- 안드로이드
- 데이터베이스
- 장고
- HTTP
- Spring
- JPA
- 파이썬
- mysql
- 웹
- BCI
- python3
- 보안
- java
- 디자인 패턴
- ORM
- 자바
- 자료구조
- Spring Boot
- django
- node.js
- rabbitmq
- Today
- Total
목록개발 (99)
semtax의 개발 일지
1. Postgres SQL 설치 아래 명령어를 이용해서 PostgreSQL을 설치한다. brew install postgresql 설치가 완료 되었으면 아래 명령어를 이용해 postgresql 서비스를 시작한다. pg_ctl -D /usr/local/var/postgres start && brew services start postgresql 서비스가 정상적으로 실행됬는지 확인하기 위해서, 아래 명령어를 이용해서 확인 해준다. postgres -V 2. Postgres SQL 설정하기 개요 PostgresSQL을 설치하고 나면, 기본적으로 postgres 유저가 자동으로 생성이 된다. 또한, PostgresSQL 에서는 postgresSQL 연결을 위해서 psql이라는 쉘을 제공 한다. 이를 이용해서 ..
개요 이번 문서에서는, 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://..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cz1ER3/btqA1AfQJkp/2tK93zENACyr36J8MJh2DK/img.png)
개요 최근 프로젝트를 수행하다, 서비스에서 메모리를 생각보다 너무 많이 사용하는것 같아서 해당원인을 분석해보고 싶었다. 하지만, pm2 monit이나 이런거로는 구체적으로 어떤부분에서 많이 쓰였는지를 알 수가 없어서 방법을 찾던중 크롬 개발자도구에서 node.js 의 메모리나 CPU 사용량을 프로파일링 할 수 있다는것을 찾아서 유용하게 사용하였다. 사용법 크롬 개발자도구에서 프로파일링 하는법은 아래와 같다. 1. node.js로 서비스를 실행할때 "--inspect" 옵션을 주고 서비스를 실행 node --inspect app.js 2. package.json start 항목에 "node_arg": ["--inspect"] 추가. { "name": "imqa_web_api", "version": "2.2..
1. 자바 제네릭(Generic) & 타입구조 소개 사실 자바 제네릭은, 초창기 자바에는 존재하지 않는 문법이었다. 그래서 타입이나 메서드 정보와 문법적으로 흡사함에도 불구하고, 해당영역이 아닌, 별도의 다른영역에 저장된다. 또한 제네릭같은경우 실제 실행되는 바이트코드에는 영향을 미치지 않기 때문에 별도의 영역에 저장을 해도 따로 문제가 생기지는 않는다. 자바 스펙문서상에서 제네릭의 문법은 아래와 같은 EBNF(Extended Bacus-Naur Form)으로 정의되어있다. 문법의 정의가 꽤나 복잡하다는것을 알 수 있다. TypeSignature: Z | C | B | S | I | F | J | D | FieldTypeSignature FieldTypeSignature : ClassTypeSignatu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/OAg0v/btqA4AFAWd7/aES0mj59B0N7Nefhm3MKak/img.png)
1. JVM은 어떻게 클래스 파일을 실행하는가? 일단 자바가 어떠한 방식으로 컴파일된 클래스 파일을 실행하는지 알아보자. 먼저, JVM(자바 가상 머신)이 컴파일된 클래스파일을 읽어서 메모리에 로딩을 한다. 그 다음에, JVM이 클래스 파일에 있는 바이트코드를 순차적으로 읽으면서 그에 맞는 동작을 수행한다(사실 요즘에는 JVM이 속도를 위해서 자주 사용하는 부분을 파악해서 Just in time 방식을 이용해서 해당 부분을 미리 Native Code로 변환을 해서 실행을 한다). 이때 자바에서는 이러한 바이트코드들을 실행하는 기본 단위가 스레드(Thread)이다. 또한, 자바에서는 각 스레드 별로 Execution Stack(JVM Stack)을 1개씩 가지고 있다. 또한 각 스레드에서 함수를 호출할시 ..
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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mK0zs/btqA04M1lbq/488K1UfUlyjNuw6BMKjmo0/img.png)
1. 자바 클래스 구조 1-1. 자바 클래스 전체 구조 컴파일된 자바 클래스의 개략적인 구조는 아래와 같이 구성되어있다. 클래스 메타정보 버전, 식별자 등 소스파일 이름 상속관련 정보들 클래스 접근자에 대한 정보 클래스 내에 선언된 필드들의 목록 메서드와 생성자들의 목록 어노테이션 정보 상수 목록들(Constant Pool) 바이트 코드 내부 클래스 정보 그림으로 나타내면 아래와 같다. 1-2. Internal Name 컴파일된 클래스에서, 클래스 이름들은 소스코드와는 다르게 내부적으로 "java/lang/String"과 같은식으로 사용이 된다. 이를 Internal Name이라고 부른다. 참고로, 자바의 Class 클래스를 이용해서 해당 이름을 얻어올 수 있다. 1-3. 타입 및 메서드 명명 규칙 컴파..