원영's
life is short

원룸에서 사용할 DELL 모니터 선택 후기

Intro

대부분의 사회초년생들은 자취를 원룸에서 시작할 것이다.(글쓴이도 그렇다)

원룸(혹은 오피스텔)에서 빌트인되어 있는 옷장, 침대 등을 사용하지만 보통은 데스크탑, 모니터가 있는 경우는 드물다.

데스크탑이 반드시 필요하다면 모니터와 데스크탑을 방안에 둬야한다. 이때, 어떤 모니터를 사면 좋을까?


Requirement

원룸에서 모니터를 사야할 때 고려해야할 사항은 아래와 같다.

# 몇인치 모니터?
# 브랜드?
# 가격대?
# 패널종류?
# 해상도?
# hdmi 등 각종 기능?

우선 상기 질문에 대해 나는 아래와 같이 판단했다.


# 몇인치 모니터?

Answer : 27인치이하면 좋을것 같다. 27치 초과제품은 비쌀뿐더러 원룸에서 티비만큼이나 자리를 차지할 것이다. 19인치는 너무작으므로 24 혹은 27인치로 결정.


# 브랜드?

Answer : 모니터를 한번쓰면 오래 사용 가능한 것을 사며, 국내AS 여부도 중요 결정 포인트. 삼성, LG, DELL, HP 중에 선택하기로 결정.


# 가격대?

Answer : 저렴하면 저렴할 수록 좋으나 브랜드와 모니터 크기에 알맞는 금액이면 좋을 것같고, 이에 따라 최소 10만원 최대 30만원까지 가능.


# 패널종류?

Answer : 가격에 따라 반응성이 좋은 tn패널도 좋으나 아무래도 원룸에서 티비대용으로 쓸려면 상하좌우에서 어디서든 볼 수 있는 IPS패널 급이면 좋을것같음.


# 해상도?

Answer : 27인치면 QHD이상이면 좋겠으나 가격적 측면에서 불리하고, 24인치에서 FHD급이면 무난히 사용가능할 것으로 보여 24인치 FHD로 결정.


# hdmi 등 각종 기능?

Answer : hdmi는 필수, 나머지 port는 옵션. 피벗이 되도 좋고 안되도 좋음. 피벗이 된다면 유튜브 직캠영상을 잘볼수 있을 것으로 예상. 피벗모니터를 통해 외장모니터로서 코딩하기도 편함.


상기 5개 질문/답변에 만족하는 제품군은 아래와 같이 추려졌다.


Products

※ 참고 : 하기 가격은 2019년 2월 17일 Danawa.com 기준 가격입니다.

LG전자 24MK430H(141,800원)
삼성전자 S24F350(125,900원)
DELL Professional P2417H(159,000원)

HP N246v(163,090원)


4개의 모니터들은 모두 24인치, IPS(혹은 PLS)의 광시야각 패널, 1920x1080(FHD), HDMI라는 공통점을 가지고 있다. 명암비, 반응속도 등에서 다소 차이가 나는 부분이 있으나 게임을 자주 하지는 않기 때문에 고려사항이 아니다.


고심끝에 상기 모니터 중 최종적으로 고른 모델은 델 P2417H모델이다.

DELL P2417H

Why P2417H?

델 P2417H모델을 고른이유는 아래와 같다.

# DELL모니터에 대한 신뢰.
# 90도 피벗이 됨에도 불구하고 피벗이 안되는 삼성, 엘지모델에 비해 겨우 2, 3만원 차이. (+ VESA hole 존재)
# 모니터 내장 USB hub
# LG, 삼성, HP모델은 높낮이 조절이 불가능.

상기 4개만 보더라도 원룸에서 사용하기 편리하고, 평소에 데스크탑으로 사용하다가 필요시에 피벗하여 노트북의 외장모니터로 사용하기도 좋다.

최종적으로 델 P2417H모델을 11번가에서 구입하였다.

11번가 주문완료


이제 배송만을 기다리고 있다 :)

'일상 > 리뷰' 카테고리의 다른 글

원룸에서 사용할 DELL 모니터 선택 후기  (0) 2019.02.17
태그호이어 포뮬러1 쿼츠 리뷰  (0) 2019.02.14


0  Comments,   0  Trackbacks
댓글 쓰기

태그호이어 포뮬러1 쿼츠 리뷰

TAG Heuer formula 1 (blue dial)

태그호이어도 많은 종류가 있었지만 특히나 내가 필요했던 요건은 아래와 같았다.


1. 쿼츠

2. 크로노그래프

3. 가죽이 아닐것, 스틸, 나토밴드, 고무밴드 가능


사실 시계를 살때, 특히 명품시계라면 대부분 사람들은 오토매틱을 구매하는 편이 많다.

그러나 개인적으로 오토매틱 시계의 정교함과 멋짐보다는 편리함을 추구하기에 쿼츠모델로 고려하였다.


태그호이어의 쿼츠모델은 생각보다 다양하다.


아쿠아레이서, 포뮬러1, 링크, 카레라

종류에 상관없이 모두 존재 했으나.. 


한국 태그호이어 청담 부띠끄 매장에는 포뮬러1과 아쿠아레이서 쿼츠만 존재했고,

최종적으로 포뮬러1, 그 중에서도 블루다이얼을 골랐다.


블루다이얼 모델은 정품 나토밴드가 함께 출시되어 상황에 따라 적절하게

교체하여 세련됨과 고급스러움을 함께 지닐 수 있다.



나토밴드도 함께 구매하였으나 한국으로 배송오는데 3달이 걸린다고 한다.



태그호이어의 구성품(박스, 시계보관함, 쇼핑백)



시계보관함은 스폰지와 단단한 외부자제로 되어있어

여행갈때 혹은 장기보관시 유용해 보인다.



제품박스



제품박스를 개봉하면 블루다이얼

태그호이어 포뮬러1 쿼츠 모델이 나온다.


기본색이 블루다이얼이긴 하지만 보는 방향과 빛의 변화에 따라

어두운 파랑으로 보여 너무 캐쥬얼하지 않으면서도 고급스러운 느낌을 주기때문

캐쥬얼복장부터 양복까지 다양하게 사용할 수 있다.



태그호이어의 포뮬러1 시리즈는 캐주얼한 스포츠 시계로서

일상생활 어디서든 스피드를 즐기는 사람들을 위해 만들어진 시계이다.


43mm 사파이어 크리스탈로 되어 있으며, 방수는 200m까지 가능하다.

파랑 알루미늄 배젤로 TACHYMETRE로 꾸며져있다. 배젤은 돌아가지 않는다.



무게는 177g 정도이며 밴드의 넓이는 22mm

시계의 두께는 11.5mm 인데, 크로노그래프임에도 불구하고

두껍다는 생각이 들지않을 정도로 적당하다.



시계의 우측에는 크로노그래프를 위한 start, reset button이 있다.


start버튼을 한번누르면 시작, 한번더 누르면 stop이다.

stop상태에서 reset버튼을 누르면 다시 초기상태로 돌아온다.



3시 방향에 작은 원은 시간을 나타내는 초침

6시 방향에 작은 원은 크로노그래프 작동시 0.1초 단위를 나타내고,

9시 방향에는 크로노그래프 작동시 분단위를 나타낸다.



착용샷. 파랑 하양 주황이 적절하게 어우러져 스포티한 느낌을 준다.

시침, 분침, 각 시간은 야광으로 밤에도 확실히 인지 가능하다.


또한 4시방향에 있는 일 표시를 통해 오늘이 몇일인지도 알 수 있다.



기존에 가지고 있던 TISSOT 1853 시계와 태그호이어 비교 샷으로

TAG Heuer Formula 1 Quartz모델 리뷰를 마친다.

'일상 > 리뷰' 카테고리의 다른 글

원룸에서 사용할 DELL 모니터 선택 후기  (0) 2019.02.17
태그호이어 포뮬러1 쿼츠 리뷰  (0) 2019.02.14


0  Comments,   0  Trackbacks
댓글 쓰기

Kafka broker와 java client의 버젼 하위호환성 정리

하위 호환성은 기술 및 컴퓨터 분야에서 새 제품이 이전 제품을 염두에 두고 만들어진 제품에서 별도의 수정 없이 그대로 쓰일 수 있는 것을 뜻한다. 


Kafka는 1.XX version으로 올라가기 전까지는 "one-way" 하위 호환성을 가지고 있었다. 신규 버젼의 broker는 옛날 버젼의 client를 지원했으나, 신규 버젼의 client는 옛날 버젼의 broker을 지원하지 못한다는 뜻이다. Client버젼을 높이기 위해서는 반드시 broker의 버젼을 높여야 했으므로, kafka client 업그레이드에 허들로 작용했다. 


카프카 커뮤니티는 KIP-97 ticket을 통해 "two-way" 하위 호환성을 가지도록 하는 방안을 논의하였고 이후에 호환성 protocol을 정의하여 broker 버젼과 client 버젼이 동일하지 않더라도 동작가능하도록 정리하였다. 이를 통해 아래와 같은 Kafka broker - Kafka client의 호환성을 정리할수 있게 되었다.


 Kafka broker 버젼

Java client 호환성 

 Kafka stream 호환성

 Kafka Connect 호환성

 0.10.0

 0.10.1을 제외한 모든 버젼 가능

 0.10.0 버젼만 가능

 0.10.1을 제외한 모든 버젼 가능 

 0.10.1

 모든 버젼 가능

 모든 버젼 가능

 0.10.1 이하 버젼 가능

 0.10.2

 모든 버젼 가능

 모든 버젼 가능

 모든 버젼 가능

 0.11.0

 모든 버젼 가능

 모든 버젼 가능

 모든 버젼 가능

 1.0.0

 모든 버젼 가능

 모든 버젼 가능

 모든 버젼 가능


상기와 같은 표와 같이 client가 호환된다고해서 모든 broker의 신규 기능을 쓸수 있는 것을 보장하지 않는다. client version이 올라갈때 마다 신규 브로커를 위한 기능이 추가 된다. 신규 client에서 새로운 기능의 api를 호출하면 옛날 버젼 broker에서는 당연히 사용이 불가하고, 호출시 ObsoleteBrokerVersion exception이 발생하므로 주의해야한다.


각 broker 버젼별 사용 불가한 client api들은 아래와 같이 정리할 수 있다.


 Kafka broker 버젼

Features that newer clients might notice missing

 0.10.0

  AdminClient requests

# Topics

  # createTopics

  # deleteTopics

  # createPartitions

# ACLs

  # createAcls

  # describeAcls

  # deleteAcls

# Configs

  # describeConfigs

  # alterConfigs

# Log Dirs

  # describeLogDirs

  # describeReplicaLogDirs

  # alterReplicaLogDirs

 0.10.1

  AdminClient

# Topics

  # createPartitions

# ACLs

  # createAcls

  # describeAcls

  # deleteAcls

# Configs

  # describeConfigs

  # alterConfigs

# Log Dirs

  # describeLogDirs

  # describeReplicaLogDirs

  # alterReplicaLogDirs

 0.10.2

  AdminClient

# Topics

  # createPartitions

# ACLs

  # createAcls

  # describeAcls

  # deleteAcls

# Configs

  # describeConfigs

  # alterConfigs

# Log Dirs

  # describeLogDirs

  # describeReplicaLogDirs

  # alterReplicaLogDirs

 0.11.0

# Topics:

  # createPartitions

# Log Dirs

  # describeLogDirs

  # describeReplicaLogDirs

  # alterReplicaLogDirs

 1.0.0

 N/A

Reference

# KIP-97: Improved Kafka Client RPC Compatibility Policy

Compatibility Matrix



0  Comments,   0  Trackbacks
댓글 쓰기

Back-end 개발자라면 답변가능한 Questions


OS, Linux, Network

# 프로세스와 쓰레드 차이

프로세스 - 실행되고 있는 프로그램의 개체. CPU 시간이나 메모리 등 시스템 장원이 할당되는 독립적인 개체. 다른 프로세스와 상관 없이 독립적으로 자원을 할당 받음. 프로세스 간의 통신을 위해선 파이프, 파일, 소켓 등을 사용하여 통신하여야 함 

쓰레드 - 프로세스 안에 존재하여, 프로세스의 자원을 공유하는 개체 흔히 경량 프로세스라고 부름 각 쓰레드는 별도의 레지스터와 스택을 갖고, 힙 영역은 공유.


# System call이란?



# Shared memory?


# 해쉬알고리즘의 종류 및 특징?

MD5 SHA-1


# Swap memory는 무엇이고 언제발생하는가?


# Java에서 Memory mapped file은 언제 사용하는가?


# OSI 7 layer


# Http연결시 세션과 쿠키 차이점


# Http의 Keep alive 개념?


# Get, Post 차이점


# TCP vs UDP


# L7 switch란?


Java Programming

# Java 8, 9, 10 차이점 설명

# Java에서 Integer는 몇바이트인가?

# Collection package들 설명

# Call by value, call by reference 차이 및 Java에서 동작방식


# Overload와 override차이

오버로딩 - 똑같은 함수에 매개변수를 변경하여 선언하는 법

오버라이딩 - 부모 클래스로 부터 상속 받은 메소드의 내부 구현 로직을 변경하는 방법


# Hashtable, hashmap 차이


# ArrayList, LinkedList 차이


# JVM GC 종류 및 원리


# Java NIO(new io)?


# Java refrection?


# servlet?


# Singleton패턴이 무었이고 어떨때 사용가능한가?


# Threadsafe란?


# mutex와 semaphore 차이?

프로세스 혹은 쓰레드 간의 통신 시에 shared memory 등을 쓰는 경우 하나의 자원에 두 개 이상의 프로세스 혹은 쓰레드가 접근하는 경우에 문제가 발생. 이를 제어하기 위해 쓰레드에서는 뮤텍스를 사용하며, 프로세스에서는 세마포어를 사용 함 

뮤텍스 - 상호배제라고도 하며, Critical Section을 가진 스레드의 Running time이 서로 겹치지 않도록 각각 단독으로 실행하게 하는 기술 synchronized 또는 lock을 통해 해결 

세마포어 - 리소스 상태를 나타내는 간단한 카운터 공유 리소스에 접근할 수 있는 프로세스의 최대 허용치만큼 동시에 사용자가 접근하여 사용할 수 있음.


# Spring boot란? 왜 쓰는가?


# ORM이란?


# Design pattern아는 것 나열 및 설명


# String, StringBuffer, StringBuilder 차이


# Java에서 int와 long차이


# Gradle vs Maven



DevOps

# Kubernetes란?

# Container의 종류 및 써야하는 이유?

# Jenkins란?

# 무중단 배포를 위한 방법?

# 마이크로 서비스 아키텍쳐란 무었인가?

BigData

# Hadoop의 특징 및 장단점

# Kafka의 특징 및 장단점

# 각종 Queue application의 차이 설명

# MapReduce설명

# 샤딩과 파티션 차이





0  Comments,   0  Trackbacks
댓글 쓰기

자바 가비지 컬렉션 설명 및 종류

Getting Started

JVM 기반 언어와 C, C++과 가장 큰 다른점은 free()와 같은 메모리접근을 통한 명시적 메모리 해제 여부이다. 자바는 OS메모리 영역에 직접 접근하지 않고 JVM이라는 Process이자 가상머신을 통해 접근한다. 
자바 application은 System.gc()와 같은 명시적 명령어를 통해 garbage collection을 수행할 수 있으나, 권장되지 않는다. 대신 JVM의 옵션에 따라 Serial GC, Parallel GC, CMS(Concurrent Mark Sweep) GC, G1 GC(after java 7)이 사용되고, 각 GC들은 특정 알고리즘과 주어진 옵션에 따라 메모리 관리를 하게 된다.

What is garbage?

Java application에서는 가비지 컬렉션을 통해 더이상 사용되지 않는 오브젝트들을 제거한다. 가비지 컬렉션에서 '더이상 사용되지 않는'의 의미는 'Unreachable object'라고 말할 수 있다. Unrechable object들은 Stack에 도달할 수 없는 Heap영역의 객체단위라고 할수 있다.

Unreachable object

Java application에서 unreachable object를 보여주는 예제를 아래에서 확인해보자.


Integer i = new Integer(4);
// 레퍼런스변수 i는 새로운 Integer 객체 인스턴스를 가르킨다.
i = null;
// 레퍼런스변수 i는 null로 할당됨
// 이전에 만든 Integer객체 인스턴스는 unrechable object가 된다.

heap memory 영역에 object가 선언된 이후 i에 null이 선언되면서 Integer(4)는 어느 누구도 참조하지 않는 unreachable object가 되었다. 이 object는 곧 JVM의 GC에 의해 반환된다.


Garbage Collections 과정

가비지 컬렉션의 과정에 대해 확인해보자.
참고로 C언어와는 다르게, deallocating memory과정은 가비지 컬렉터에 의해 자동으로 실행된다.

Step 1: Marking

가비지 컬렉터는 메모리에서 live object를 확인 하고, unrechable object가 무엇인지 마킹하는 절차를 진행한다.

Step 2: Normal Deletion

가비지 컬렉터는 unrechable object를 삭제한다.

Step 2a: Deletion with Compacting

가비지 컬렉터중 일부는 memory를 더욱 효과적으로 쓰기위해  unreachable object를 삭제함과 동시에 압축을 진행하기도 한다.

Java Garbage Collection 용어 정리

# Young Generation : 최초로 new object가 생성되었을 경우 heap memory에서 위치하는 공간. MinorGC가 발생하면 unreachable object는 삭제되고, surviving object(참조되고 있는 객체들)은 Old generation으로 이동한다.
# Old Generation : Long surviving object들이 머무는 공간. Old generation이 가득차게되면 MajorGC가 발생한다.
# MinorGC : Young generation에서 발생하는 GC
# MajorGC : Old Generation에서 발생하는 GC
# Full GC : Heap memory전체를 clear하는 작업
# Stop the World Event : MinorGC 발생시 Stop the world event가 발생한다. MinorGC를 수행할때는 모든 application thread가 중지하고, 예외는 없다.
# Permanent generation : Java application에 필요한 클래스의 메타데이터를 자장하는 곳. Java8을 기준으로 Permanent generation은 heap memory가 아닌 native memory로 관리됨.(참고문서 : Java8에서 permSize를 대체하는 옵션?)

Java Garbage Collector의 종류

Serial GC

-XX:+UseSerialGC
MinorGC, MajorGC 모두 순차적으로 수행, Deletion and Compacting 수행

Parallel GC

-XX:+UseParallelGC
여러 CPU를 효과적으로 활용하기 위해 GC수행시 멀티스레드를 사용. Default로 young generation에서만 멀티스레드를 활용하나, 옵션을 통해 old generation에서도 멀티스레딩 활용가능. Deletion and Compacting 수행

CMS(Concurrent Mark Sweep) Collector

-XX:+UseConcMarkSweepGC
가비지 컬렉션 작업을 애플리케이션 스레드와 동시 수행. stop-the-world시간 최소화. Compacting수행하지 않아서 memory를 더 많이 차지.

G1 Garbage Collector

-XX:+UseG1GC
Java7부터 사용가능. 여러 CPU와 아주 큰 memory에서 효과적인 GC를 활용하기 위함. Oracle문서에 따르면 heap size가 6GB보다 클 경우 GC의 latency를 0.5sec이하로 낮출수 있다고 한다.(Oracle G1 GC문서) Java9에서는 default GC로 설정되어 있다.(이전까지는 Parallel GC가 default)

Oracle에서 G1 GC를 사용을 권하는(Recommend) 기준

# Full GC durations are too long or too frequent. 

# The rate of object allocation rate or promotion varies significantly. 

# Undesired long garbage collection or compaction pauses (longer than 0.5 to 1 second)


※ 일부 사진 및 내용은 Oracle Garbage collection Basics 공식문서에서 가져왔습니다.



0  Comments,   0  Trackbacks
댓글 쓰기