전체 글 514

추천의 종류 및 개념.

추천의 종류 및 개념. 추천에는 몇가지 방법을 제공한다. 아이템 자체의 내용을 분석해서 하는 추천하는 방법과 사용자들이 아이템을 평가한 이력을 분석해서 추천하는 방법이 대표적이다. 각 방법의 정확한 개념과 기본적인 사용법을 정의해본다. User-based Collaboration Filtering Item-based Collaboration Filtering Content-based Filtering 사용자 A 가 선호하는 아이템을 사용자 B 에게 추천한다. 사용자 A 와 B 의 연결고리는 유사도만 있다. Cold-start 단점이 있다. 사용자 A, B, C, D, E 모두 아이템 X 를 가지고 있다. B, C, D, E 가 모두 아이템 X 와 아이템 Y 를 좋아한다면 아이템 X 와 Y 의 유사도는 높..

화면 개발을 위한 몇가지 요소들.

화면개발을 위한 몇가지 요소들. web application 에서는 backend 못지않게 frontend 도 중요하다. 아무리 성능이 좋아도 사용자를 위한 UI 가 시원찮다면 저평가를 받게 되어있다. 화면을 개발할때 ui frameworks, components 등의 용어들이 사용되는데 개발시에 여러 용어들을 정확하게 정의하지 않고 혼용되면서 구성원들 간에 혼란이 발생할 수 있는데 용어부터 정확하게 정리해본다. UI Frameworks JavaScript Frameworks UI Components Frontend Frameworks 와 같의 의미이다. CSS 컨트롤이 필요하며 개발자보다는 디자이너나 퍼블리셔의 역량이 필요하다. 프로젝트 성격에 따라서 적절하게 customizing 해서 사용한다. 한번..

Spring Framework 에서 Batch 구현하기

Spring Framework 에서 Batch 구현하기 일반적으로 batch 작업은 일련의 작업을 몇개의 단위로 묶어서 연속적으로 일괄처리해주는 것을 말하며 일반적으로 일정시간(주로 야간)에 정기적으로 실행하거나 사용자의 요구에 의해서 실행된다. 규칙적으로 실행하기 위해서 scheduler 를 사용하며 background 에서 실행되기 위해서 thread 로 작동하는 경우가 많다. 이를 구현하기 위해서 몇가지 방법이 있는데, spring framework 에서는 1. 단순한 단일 작업이냐 아니면 2. 선/후행 작업으로 나눠지는 복잡한 작업이냐에 따라서 구현 방법을 달리한다. 전자의 경우 비즈니스 로직을 구현하고 thread 로 실행시킨다. 정기적으로 실행하는 경우는 scheduler 를 붙여서 구현한다...

Development/Spring 2017.09.21

Intellij Idea 에서 JUnit 사용하기.

Intellij Idea 에서 JUnit 연동하고 사용하기. intellij 가 버전업이 되면서 기존에 maven 프로제트 생성했을때 main 과 같은 depth 에서 자동으로 생성되던 test 디렉토리가 사라졌다. 이제 단위테스트를 하기 위해서는 수동으로 test 디렉토리를 생성해주어야 한다. 개발환경 JDK 1.8 Spring Framework 4.3.7 RELEASE MAVEN 3 Windows 10 프로젝트 환경설정에서 src 밑에 test > java 를 생성하고 java 디렉토리를 Tests 로 설정을 해준다. 소스상에서 테스트를 원하는 클래스명 위에 커서를 올린다음 alt + enter 를 치면 메뉴가 출력되는데 그중에서 create test 로 테스트할 클래스를 생성한다. destinati..

Development/IDE 2017.09.05

Spring Framework 과 Redis 연동

Spring Framework 과 Redis 연동하기. NoSQL 이란 Big data 를 처리하기 위한 분산 데이터 저장소를 통칭하며, Redis 는 key-value 형태의 데이터 저장소를 지원하는 NoSQL 의 일종이다. CAP(Consistency, Availability, Partition Tolerence) 특징중에서 CP 에 더 가까운 고속의 읽기/쓰기에 최적화 된 모델이다. 개발환경 JDK 1.8Spring Framework 4.3.7 RELEASEMAVEN 3Windows 10 Windows 용 Server 구동 Redis 는 Linux, Unix, MacOS 는 지원하지만 Windows 는 정식으로 지원하지 않는다. Windows 용 서버는 개발/스터디 용도로만 사용해야 한다. ......

Development/Spring 2017.08.07

Spring Framework 과 RMI 연동

Spring Framework 과 RMI 연동하기. RMI 는 JDK 1.1 부터 추가되었고 한때는 CORBA, EJB 와 함께 분산 시스템을 구축하기 위한 기술로써 사용되었으나 Java 에 국한되는 단점이 있었고 SOA, ROA 등의 개념을 탑재한 다른 기술들이 널리 사용되면서 현재는 많이 사용되고 있지는 않다. server 를 POJO 형태로 간단하게 띄우는 방법도 있고 Spring Framework 에 통합되어 제공하는 방법도 있다. POJO 샘플은 Java 책마다 기본적으로 제공되므로 Spring Framework 과 통합해서 Server / Client 로 사용하는 방법을 정리한다. Spring Framework 에서는 RMI 기능의 많은 부분을 자동화해서 내부적으로 지원하며 개발자(사용자)는 ..

Development/Spring 2017.08.04

Spring Framework 과 ActiveMQ 연동

Spring Framework 과 ActiveMQ 연동하기. 간단한 비동기화 로직은 스프링에서 제공하는 async annotation 을 사용해서 처리가 가능한데 대용량 데이터를 비동기로 안정적으로 처리하기 위해서는 메시지 서비스의 일종인 ActiveMQ 를 연동해서 사용한다. 전체적인 process 를 간략하게 설명하자면, Application Server 에서 listener container 를 구현하고 구현한 listener 를 통해서 ActiveMQ 와 통신한다. Application Server 에서 listener container 로 domain object 를 던져주면 converter 에서 jms message 로 변환해서 ActiveMQ 에 전달하고 ActiveMQ 로 부터 받은 jm..

Development/Spring 2017.07.25

Spring Security

Spring Security 스프링 2.x 버전 사용할때 security 살펴보고 10여년 만에 다시 볼려니 세월이 많이 지나서 다 잊어버렸고 실제 프로젝트에서는 spring security 보다는, authentication 은 자체 로직으로 처리하고 authorization 은 admin 에서 설정하는 방법을 많이 사용하다보니 spring security 는 점점 사용하지 않게 되었다. 이번 프로젝트에 spring security 를 적용해보고자 오랜만에 삽질을 하면서 article 을 정리해본다. 내가 원하는 기능은 1. 비밀번호 암호화해서 비교. - Sha256 을 이용한 암호화. 2. admin, user role 별로 페이지 접근 제어. 3. remember me 기능 적용. - 쿠키 또는 d..

Development/Spring 2017.07.20

유시민 항소이유서 전문

본 피고인은 1985년 4월 1일 서울지방법원 남부지원에서 폭력행위 등 처벌에 관한 법률 위반으로 징역 1년 6월을 선고 받고 이에 불복, 다음과 같이 항소이유서를 제출합니다. 다음 본 피고인은 우선 이 항소의 목적이 자신의 무죄를 주장하거나 1심 선고형량의 과중함을 호소하는데 있지 않다는 점을 분명히 밝혀두고자 합니다. 이 항소는 다만 도덕적으로 보다 향상된 사회를 갈망하는 진보적 인간으로서의 의무를 다하려는 노력의 소산입니다. 또한 본 피고인은 1심 판결에 어떠한 논란거리가 내포되어 있는지 알지 못하며 알고 싶은 생각도 없습니다. 자신의 행위의 정당성을 판단하는 기준으로서 본 피고인이 관심을 두고 있는 것은 하느님이 주신 양심이라는 척도이지 인간이 만든 법률은 아니기 때문입니다. 법률에 대한 전문지식..

잡담/신변잡기 2017.07.10

정치와 권모술수.

사람은 정치적이면서도 사실은 정치적인 사람을 싫어한다. 우리가 정치적인 사람이라고 하는 사람들의 유형은 일반적으로 윗사람의 기분을 잘 맞춰준다거나 자신의 이익을 관철하기 위해서 여기저기 영향력을 행사하려 한다던가 온갖 이간질을 일삼는 사람이라고 생각하고 있다. 사람은 정치적인 동물이기때문에 살면서 정치는 반드시 필요하다. 특히 조직의 리더이거나 장(將)의 경우 정치는 더욱 더 필요하다. 자신의 정치력에 의해서 조직의 존재여부가 결정된다. 정치의 원래 의미는 여러 인간 집단들 간의 상이한 의견들을 소통하고 조율해서 본인이 원하는 방향으로 이끌어가는 것을 의미한다. 조직의 리더라면 반드시 해야 하는 의무중에 하나다. 우리가 정치적인 사람이라고 하는 것들은 알고보면 정치가 아니라 권모술수를 의미하는 경우가 많..

잡담/신변잡기 2017.04.21