본문 바로가기

전체 글

(18)
자바 컬렉션을 Null Safe 하게 정렬하기 자바 8에 도입된 스트림(Stream)을 사용하면 컬렉션을 쉽게 정렬할 수 있다. (Stream이 아니더라도 List 인터페이스의 sort() 메서드를 사용할 수도 있다.) 예를 들어 Member를 나이 순으로 정렬한다면 아래와 같이 할 수 있다. List memberList = Arrays.asList(Member.of(10), Member.of(5), Member.of(20)); List sortedMemberList = memberList.stream() .sorted(Comparator.comparing(Member::getAge)) // member의 age 속성을 기준으로 정렬한다. .collect(toList()); System.out.println(sortedMemberList); 결과 [..
Mac에서 카프카 설치하고 메시지 발행, 컨슘 해보기 카프카 공식 사이트에서 제공하는 Kafka Quickstart 문서(https://kafka.apache.org/quickstart)를 따라하면 로컬 환경에 간편하게 카프카를 설치하여 메시지를 발행하고 소비하는 등 테스트를 해볼 수 있다. 따라서 실습 한 내용을 정리해보았다. Apache Kafka Apache Kafka: A Distributed Streaming Platform. kafka.apache.org 사전 준비사항 카프카는 JVM 언어 중 하나인 스칼라(Scala)로 구현되어 있기 때문에 사전에 Java가 설치되어 있어야 한다. 카프카 다운로드 및 설치 카프카 설치는 비교적 간단하다. https://kafka.apache.org/downloads 페이지에 접속하여 바이너리 압축 파일을 원하는..
SSD 교체후 남은 HDD로 외장하드 만들기 X220의 하드디스크를 SSD로 교체하고 남은 HDD를 그냥 놀리긴 아까우니 외장하드로 만들어 사용하기로 했다. 안그래도 카메라로 찍은 사진들이 맥북 용량을 차지하고 있어서 마침 잘 된 것 같다. 외장하드 케이스는 인터넷에서 쉽게 구할 수 있다. 나 같은 경우는 쿠팡에서 ipTIME 외장 케이스 HDD3225를 구매했는데, 다른 케이스들 보다 가격은 좀 높은데 USB 3.1과 C-Type 단자를 지원해서 이걸로 선택했다. 구매 링크 : https://coupa.ng/bJ0dpL ipTIME 하드외장 케이스 HDD3225 하드미포함 COUPANG www.coupang.com 구성품은 간단하다. 설명서, 파우치, 고정 나사와 스티커(?), USB C to A 케이블, 본체가 들어있다. 다음으로 X220에서 ..
MySQL의 격리수준 트랜잭션 격리 수준이란? 트랜잭션의 격리 수준(Isolation level)이란 DB에 동시에 여러개의 트랜잭션이 처리될 때 특정 트랜잭션에서 변경 또는 조회하고 있는 데이터를 다른 트랜잭션이 어느 정도까지 조회할 수 있는지를 결정하는 것을 말한다. 말 그대로 서로 다른 트랜잭션들이 서로 어느 정도까지 격리가 되어야 하는지를 나타낸 것이다. 격리 수준은 크게 아래의 4가지로 나뉜다. Read Uncoommitted Read Committed Repeatable Read Serializable 위에서 아래로 갈 수록 트랜잭션간 격리 수준이 높아지며, 일반적으로 격리 수준이 높아질수록 동시성은 떨어지게 된다. Read Uncommitted 격리 수준이 Read Uncommitted 일 때는 각 트랜잭션서의 ..
Thinkpad X220 SSD 교체 집에서 놀고있던 X220의 HDD를 SSD로 교체했다. 2013년인가? 대학생 때 학교 다니면서 과제도 하고 프로그래밍 공부도 하려고 중고로 80만원에 구매했던 기억이 난다. 화면은 작아도 키보드가 좋아서 코딩도 하고 이것 저것 많이 했는데 맥북을 사용하고 나서 부터 잊혀진 노트북. 그래도 간간히 윈도우에서 인터넷 뱅킹이나 민원24 같은 공공기관 업무 볼 때 종종 사용하긴 했는데, 문제는 HDD가 너무 느리다는것이었다. CPU는 i7이고 램도 8G라서 나쁘진 않은 스펙인데 HDD가 달려있다보니 전반적으로 느린건 어쩔수가 없어서 이번에 맘 먹고 교체하기로 했다. 준비물 : 드라이버, SSD, X220 먼저 기존의 HDD를 제거해준다. 노트북을 뒤집어서 왼쪽에 있는 나사를 풀어준 뒤 저 검은색 테이프?를 당..
윈도우 10 USB 부팅 디스크 만들기 맥북을 사용하고 나서 부터 잘 사용하지 않게 된 레노버의 X220 노트북을 좀 손 보기로 했다. 일단은 성능에 가장 큰 영향을 주는 HDD부터 SSD로 교체하기로 했다. 새 SSD에 윈도우를 설치하기 위해 알아보던 중 USB로 간단하게 윈도우10 부팅 디스크를 만들 수 있는 방법이 있어서 과정을 정리해본다. 1. USB 준비 집에 굴러다니는 USB를 하나 준비한다. 최소 8기가 이상의 USB가 필요하다. 노트북에 꽂는다. 이미 포맷이 되어 있으면 그냥 사용해도 큰 문제는 없지만 확실히 하기 위해 포맷을 먼저 진행한다. USB 드라이브 아이콘의 우클릭 메뉴에서 포맷을 클릭한다. 파일 시스템을 FAT32 형식으로 선택하고 시작 버튼을 클릭하여 포맷을 진행한다. 당연한 말이지만 포맷을 하면 USB의 모든 데이..
MySQL에서의 트랜잭션 MySQL에서의 트랜잭션 MyISAM은 트랜잭션을 지원하지 않음 InnoDB는 트랜잭션을 지원함 InnoDB 엔진은 쿼리 중 일부라도 오류가 발생하면 전체를 원상태로 만들어 두는 트랜잭션의 원칙을 따른다. MyISAM은 일부 오류가 발생하는 경우 부분 업데이트(Partial Update) 현상이 발생한다. 부분 업데이트 현상은 데이터의 정합성을 맞추는 작업을 어렵게 만든다. 트랜잭션이란 애플리케이션 개발에서 고민해야할 문제를 줄여 주는 아주 필수적인 DBMS의 기능이다. 트랜잭션 구현시 주의사항 트랜잭션은 DBMS 커넥션과 마찬가지로 꼭 필요한 최소의 코드에만 적용해야 한다. (프로그램 코드에서 트랜잭션의 범위를 최소화) 외부 네트워크 작업(메일, 큐 발송 등)은 반드시 트랜잭션에서 배제해야 한다. (롱..
Ubuntu에 Nginx 설치하고 실행 해보기(feat. Docker) 회사에서 nginx 설정을 볼 일이 생겼는데 직접 설정 해본 경험이 없어서 설정파일이 어디 있는지도 몰랐다. (..) 집에 있는 맥북에 nginx를 설치해서 설정을 이것 저것 해 보면서 공부를 하고 싶었으나, 맥에 직접 설치하면 괜히 지저분해 질 것 같아서 Docker를 이용해 설치를 해보았다. 도커 이미지 받기(pull) 도커 허브(https://hub.docker.com)에 가면 도커에서 제공하는 여러 이미지를 볼 수 있다. nginx 공식 이미지도 있긴한데, 나는 직접 설치하는 것 까지 해보고 싶어서 ubuntu 이미지를 받았다. 커맨드에서 아래 명령어를 입력해 ubuntu 이미지를 받는다. ➜ ~ docker pull ubuntu 다운 받은 이미지 목록을 아래 명령어로 확인한다. ➜ ~ docke..