일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- HTTP
- 웹
- 데이터베이스
- bytecode
- node.js
- rabbitmq
- 스프링부트
- 장고
- 자료구조
- 디자인 패턴
- 안드로이드
- JPA
- 스프링
- 개발
- 자바
- 스프링 부트
- ORM
- 웹 개발
- Spring Boot
- mysql
- db
- 보안
- django
- Spring
- 파이썬
- Python
- 파이썬3
- python3
- BCI
- Today
- Total
목록분류 전체보기 (104)
semtax의 개발 일지
개요 이번 시간에는 node.js의 프로세스 관리 도구인 pm2에 대해 소개를 하도록 하겠다. Process Manager 먼저 아래의 상황을 가정해보자. 만약 node app.js나 npm start 만을 이용해서 서비스를 띄운다고 가정을 해보자. 그런데, 예상하지 못한 상황(예를 들어 예상 못한 값이 들어와서 예외처리를 못한다거나, DB 커넥션 풀 개수가 꽉찼다거나, 모르고 에러 핸들러 1개를 깜박하고 처리를 못했다거나 등등)이 와서 서비스가 죽어버렸다. 그런데 당신은 자고 있어서 대처가 불가능 하였다. 이런 슬픈상황이 ㅠㅠ.. 또 아래와 같은 상황을 가정해보자. 당신이 node.js를 기반으로한 동접자 100명의 서비스를 운영한다고 가정해보자. 그런데 운이 좋아서 사용자가 갑자기 500명으로 5배 ..
개요 이번 포스팅에서는 웹 서비스 개발시에 유용하게 써먹을 수 있는 Fiddler라는 툴에 대해서 설명을 하도록 하겠다. Fiddler는 웹 디버깅 프록시 프로그램으로, HTTP와 HTTPS 프로토콜을 캡처해서 분석 할 수 있는 도구이다. 사실, 서버개발자 뿐만 아니라, 모바일 앱 리버싱 할때에도 쓰이고, 웹 해킹 문제 풀때에도 쓰이고, 클라이언트 개발할때도 쓰이고 여튼 다양하게 쓰인다. 사실, MAC OS X 에서는 Fiddler가 없었던걸로 알고 있었는데 맥 버전도 찾아보니 나와서 소개를 하게 되었다. 설치 https://www.telerik.com/fiddler 위 사이트에 방문해서 설치를 해주면 된다. 사용법 아래 사진은 Fiddler를 실행한 화면이다.(맥 버전 기준) 아래 사진이 HTTPS 패..
개요 이번 포스팅에서는, node.js 와 rabbitMQ를 이용해서 pub-sub패턴을 구현하는 내용을 진행하려고 합니다. Pub-Sub 패턴? Pub-Sub 패턴은 : Publisher Subscriber 패턴의 약자로, 발행자와 구독자 이 2가지로 나누어서 구독자(Subscriber)가 발행자(Publisher)에게 자기가 발행자의 정보를 받겠다고 구독 신청을 하면, 발행자가 자신에게 구독 신청을 한 구독자에게 메시지를 보내는 패턴을 말합니다. 쉽게 생각해서 TV 방송국과 시청자와의 관계를 생각하시면 됩니다. RabbitMQ Exchage 이전 포스팅에서 다루었던 개념을 다시 한번 복습해봅시다. Producer : 메시지를 보내는 사람 Queue : 메시지를 저장하는 큐(메시지 큐) Consumer..
개요 일정 규모 이상의 프로젝트를 진행할때에 있어서 모듈간 의존성이나, 코드의 품질을 관리하는것은 매우 중요하다. 그래서 많은 사람들(특히 소프트웨어 공학을 전공한 석,박사들)이 어떤 코드가 나쁜 품질의 코드인지 좋은 품질의 코드인지를 구분하는 많은 기준들을 만들어 냈다. 보통 아래와 같은 기준들이 존재 한다. Instability 해당 패키지 또는 모듈이 얼마나 바꾸기 힘든지를 나타내는 지표이다(보통 다른곳에서 많이 쓰고있는 모듈들이 바꾸기 힘드므로.) N(Efferent Coupling) / (N(Afferent Coupling) + N(Efferent Coupling)) 로 계산한다. Efferent Coupling : 다른곳에서 해당 패키지를 사용하고 있다는 의미 Afferent Coupling ..
개요 이번 시리즈 에서는 스프링 부트를 이용해서 간단한 웹 서버를 만들어 보도록 하겠습니다. 게시판을 만들기에 앞서 이번 포스팅에서는, 스프링 부트가 무엇인지에 대해서와 환경설정을 하는법을 다루도록 하겠습니다. 스프링 부트란? 스프링 부트를 설명하기 전에 먼저 스프링 프레임워크에 대해서 간략하게 설명하도록 하겠습니다. 맨 처음 소프트웨어의 위기가 찾아왔을때, 사람들은 그 고민을 해결하기 위해 객체지향 프로그래밍(OOP) 이라는 패러다임을 도입하였습니다. 하지만 막상 객체지향 프로그래밍을 도입하였음에도 이전보다는 생산성이 늘기는 했지만, 생각 보다 재사용성도 잘 되지 않았고, 유지보수도 여전히 힘들었습니다. 객체지향이나 절차지향, 함수 지향 패러다임 이전에 보다 근본적인 원인을 해결하지 못한 것이지요. 과..
개요 이번 포스팅에서는, rabbitMQ를 이용해서 작업 큐를 구현해보는 내용을 진행하도록 하겠습니다. 작업 큐(Work Queue) 란? 작업 큐는 쉽게 말해서 은행이나 식당에서 사용하는 번호표 같은것입니다. 사림들이 은행에 왔는데 창구가 꽉 찬 경우 번호표를 받고 대기 한 뒤, 차례가 오면 가서 업무를 처리하는 식이죠. 만약 이러한 번호표가 없다면 손님들이 대기하지 않고 떠나게 되겠죠. 즉, 작업 큐의 핵심은 오래걸리는 작업들의 요청이 허용량 이상으로 쏟아졌을때 큐를 이용해서 대기열을 둔 뒤에 실제 작업하는 사람이 작업을 하나씩 꺼내가서 작업을 한다는 것입니다. 이렇게 하는 경우 실제 작업을 시키는 사람의 입장에서는 요청을 즉시 즉시 받는것 처럼 느껴지는 것이지요. 즉, I/O를 요청하고나서 결과값을..
개요 이번 포스팅에서는 node.js로 메시지 큐 중에 하나인 rabbitmq를 사용하는 법에 대해서 다루도록 하겠습니다. What is Rabbitmq? Rabbitmq는 메시지 브로커 서비스로, 불특정 다수의 사용자가 다른 사람에게 메시지를 전달하려고 메시지 브로커에 메시지를 전달하면 메시지 브로커가 메시지를 받아서 보관하고 있다가 해당 메시지를 받으려는 사람이 보관한 메시지를 꺼내가는 형태의 서비스 입니다. 한마디로, 우체통이나 편지함을 생각해보면 쉽습니다. 편지를 보내려는 사람이 편지를 써서 우체통에 넣으면 받는 사람이 우체통에서 편지를 꺼내가는 구조이지요. 즉 정리하면 아래와 같습니다. 보내는 사람 = 메시지를 보내는 사람 받는 사람 = 메시지를 꺼내가는 사람 우체통 = 메시지 브로커 보통 Ra..
1. Tree API를 이용한 메서드 조작 ASM에서 제공하는 MethodNode는 대략적으로 아래와 같이 생겼습니다. public class MethodNode ... { public int access; public String name; public String desc; public String signature; public List exceptions; public List visibleAnnotations; public List invisibleAnnotations; public List attrs; public Object annotationDefault; public List[] visibleParameterAnnotations; public List[] invisibleParameter..