2020/01
-
로또는 한 번호로만 뽑는 게 나을까??김김 라이프 2020. 1. 26. 09:30
저는 매주 로또를 삽니다. 아주 희박한 확률이지만, 0%와 0.00000000001%로는 다르기 때문이죠! 또 투자 대비 가장 이익이 많은 투자라고 생각합니다. 아무튼 오늘도 로또 추첨에 대비해 5천 원을 질렀는데, 문득 궁금증이 생겼습니다. 한 번호로 쭉 계속 뽑는 게 나을까? 아니면 계속 다른 번호로 뽑는 게 나을까? 그래서 후다닥 코드를 짜서 실험을 해봤습니다. 실험 시나리오 모든 추첨에서 동일한 번호를 사용하는 고정 번호 리스트와 매 번 추첨마다 달라지는 동적 번호 리스트가 있습니다. 각각의 번호 리스트는 5개의 번호 집합을 가지고 있습니다. 즉, 로또 5천원 어치라는 것이죠. 그리고 1000번의 케이스로 각각 고정과 동적 번호 리스트가 각각 정확히 1등이 당첨될 때까지의 반복 횟수를 구하고 비교..
-
해시 함수 그리고 소금과 후추 (Hash Function & Salt & Papper)개발자 라이프 2020. 1. 22. 00:15
TL; DR 해시 함수(Hash Function)는 암호화 방식이 아님. 해시 함수는 입력 값에 대한 유일 값을 반환하는 함수. 해시 함수의 결과 값은 고정 길이를 가짐. 해시 함수의 결과 값은 입력 값으로 다시 복원할 수 없음. (단방향) 해시 함수는 비밀번호 저장에 사용됨. 해시 함수의 입력 값에 따라 출력 값이 정해져 있어 해킹을 당할 수 있음. 해시 함수 입력 값에 별도의 값을 더하는 것이 소금(Salt)와 후추(Papper). 소금은 각 입력 값마다 임의로 생성된 값 (즉, 각각 다른 임의의 값). 후추는 모든 입력 값에 공통으로 적용되는 값 (즉, 모두 같은 정적 값). 소금은 저장소에 같이 저장되고, 후추는 저장되지 않음. 결국, (입력 값 + 소금 + 후추)를 해시 함수에 적용하고 그 결과..
-
비대칭 키 암호화 방식 (Asymmetric Key Cryptography)개발자 라이프 2020. 1. 21. 23:30
TL; DR 대칭 키 암호화 방식(Asymmetric Key Cryptography)의 약점 보안 공개-개인 키가 쌍으로 생성된다. 공개 키(public key)는 외부로 배포될 수 있다. 개인 키(private key)는 키를 생성한 사람(주체)만 가진다. (즉, 외부로 배포되지 않는다.) 공개 키는 암호화에 사용된다. 개인 키는 복호화에 사용된다. 공개 키로 암호화된 메시지는 대응하는 개인 키로만 복호화 할 수 있다. 개인 키는 전달받은 메세지가 공개 키로 암호화되어 있는지 확인할 수 있다. 풀어서... 대칭 키 암호화 방식은 송 수신자가 동일한 키를 사용하여 메시지를 암 복호화합니다. 그렇기 때문에 둘 중 어디서라도 키가 유실되면 보안 위협이 발생합니다. 이러한 문제를 보완하기 위해 비대칭 키 암호..
-
리눅스 파일과 디렉토리 권한 정리개발자 라이프 2020. 1. 18. 17:13
들어가며 리눅스 환경에서 작업을 하다보면 permission denied 와 같이 권한과 관련된 에러를 자주 마주합니다. 이번 글은 리눅스의 파일과 디렉토리의 권한과 관련된 정리입니다. 다음과 같은 내용을 다룹니다. -rwxr-xr-x 의 의미 chmod, chown 명령어 파일과 디렉토리의 권한 알아보기 'ls -l' 명령어로 현재 디렉토리의 파일과 디렉토리 정보를 조회할 수 있습니다. 명령어를 실행하면 위와 같이 파일과 디렉토리에 대한 권한, 소유자, 소유 그룹, 크기 등이 출력되는 것을 확인할 수 있습니다. 특히 권한 부분은 이해하기 어려운 7자리 문자로 이루어져 있는데, 이것들은 4가지 부분으로 나눌 수 있으며 의미는 다음과 같습니다. - : 디렉토리 여부를 나타냅니다. 디렉토리인 경우 d 로 출..
-
나의 블로그 방황기 (깃 블로그 / 노션 / 티스토리 비교)개발자 라이프 2020. 1. 14. 22:13
들어가며 개발자 직군에 들어서며 기술 블로그는 필수라고 느꼈습니다. 그래서 나만의 블로그를 만들기 위해 이런저런 노력을 많이 했습니다. 이 글은 제가 깃 블로그, 노션, 티스토리를 이용하여 블로그를 운영해보고 느낀 것을 정리한 것입니다. 참고로 이제 티스토리에 정착하려고 합니다. 나의 블로그 방황기 장 단점 간략 비교 비교 내용 깃 블로그 노션 티스토리 글을 쓰기 쉬운가? 하 상 중 조회에 대한 통계를 할 수 있는가? 구글 애널리틱스를 별도로 붙혀서 가능 불가 가능 댓글 등 독자와 소통할 수 있는가? 디스커스를 별도로 붙혀서 가능 불가 가능 구글 에드센스를 붙일 수 있는가? 가능 불가 가능 일단 블로그는 자신의 생각을 잘 정리할 수 있도록 쓰기가 쉬워야 합니다. 이에 깃 블로그는 마크 다운 형식만 지원하..
-
JPA 네이티브 쿼리와 하이버네이트 1차 캐시개발자 라이프 2020. 1. 14. 21:46
들어가며 Spring에서 제공하는 JPA(Java Persistent Api)는 특정 키워드로 간편하게 쿼리를 생성해주는 쿼리 메소드(Query Method)를 제공해준다. 또한 사용자가 직접 쿼리를 작성하는 네이티브 쿼리(Native Query) 방식도 지원한다. 이번 글은 JPA의 네이티브 쿼리 방식으로 쿼리를 사용할 때, 하이버네이트 1차 캐시와 관련하여 발생할 수 있는 이슈에 대해 다뤄본다. JPA 네이티브 쿼리와 하이버네이트 1차 캐시 하이버네이트 1차 캐시 (Hibernate first-level cache) 데이터베이스와 커넥션을 맺고 조회하여 결과를 가져오는 과정은 매우 무거운 과정이다. 이런 무거운 과정을 줄이고 성능을 향상하기 위해 하이버네이트는 1차, 2차 캐시를 제공한다. 하이버네이..
-
카프카 운영 - 컨슈머의 오프셋 정보 변경하기개발자 라이프/카프카 2020. 1. 14. 21:40
들어가며 프로듀서가 메세지를 발행하는 과정에서 에러가 발생하여, 컨슈머가 해당 메세지를 소비하지 못하고 Hang이 걸리는 경우가 있다(고승범님 글 참조). 이러한 경우 컨슈머의 오프셋 정보를 강제로 변경할 필요가 있다. 이 글에서는 브로커 CLI 환경에서 오프셋 정보를 변경하는 방법에 대해 살펴본다. 오프셋 정보 변경하기 메세지 발행/구독 프로듀서에 메세지 발행 # 발행할 메세지 입력 /usr/bin/kafka-console-producer --broker-list kafka-server-host:9092 --topic donald-offset-update > ... 컨슈머에서 메세지 구독 (-> 오프셋 최신화) # 브로커에 쌓인 메세지 구독 /usr/bin/kafka-console-consumer --..
-
Kafka Streams State개발자 라이프/카프카 2020. 1. 14. 21:27
들어가며 카프카 스트림즈에 대한 개발 도중 아래와 같은 로그를 확인했습니다. 2019-12-09 17:22:50.108 INFO 51383 --- [-StreamThread-1] o.a.k.clients.consumer.KafkaConsumer : [Consumer clientId=privacyMaskingStream-b09c662d-26ce-4a51-969f-3372161deb7c-StreamThread-1-restore-consumer, groupId=null] Unsubscribed all topics or patterns and assigned partitions 2019-12-09 17:22:50.108 INFO 51383 --- [-StreamThread-1] o.a.k.clients.cons..