본문 바로가기

포스트464

[Kafka] 카프카 자주 사용하는 명령어 카프카 클러스터를 운영하다보면 몇 가지 자주 사용하는 명령어들이 있다. 대부분 kafka-topic.sh 같은 스크립트를 이용한 쉘 명령어다. 토픽 생성 카프카 토픽은 kafka-topics.sh 스크립트를 이용해서 생성할 수 있다. $ kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 2 --partitions 10 --topic MyTopic 사용된 옵션은 다음과 같다. --create : 토픽 생성을 하겠다 --bootstrap-server : 토픽 생성을 위해 붙을 브로커 주소 --replication-facotr : 리플리케이션 팩터, 데이터를 몇 카피나 저장할지 --partitions : 토픽의 파티션.. 2021. 10. 6.
2021년 8월 독서 통계 2021년 8월에는 총 4권의 책을 읽었다. 배틀그라운드로 유명한 크래프톤의 창업 이야기를 그린 책이다. 블루홀이라는 회사가 창업되는 이야기에서부터 '테라'라는 게임이 만들어지고, 해외에 도전하는 과정에서 발생하는 다양한 갈등과 갈등을 넘어가면서 있었던 일들이 적나라하게 그려져있다. 크래프톤이라고하는 성공한 회사의 시작부터 현재까지를 그리는 책인데, 성공담이나 미담만을 모은 자서전류의 책이 아니었다. 스타트업을 창업하고 기업을 이끌어나가는 경영진 입장에서 어떻게 회사의 미래를 그려야하는지를 그리고 있다. IT 업계의 직원 입장에서만 있다가 스타트업의 창업자 혹은 경영진 입장에서 회사를 어떻게 이끌어나갈지 고민하는 과정들이 담겨 있다. 아마도 스타트업 창업을 준비하고 있거나 스타트업에서 경영진으로 일하는 .. 2021. 9. 5.
[Java] Optional 사용법 및 예제 자바 8부터 Optional이라는 클래스가 지원되기 시작했다. Optional 클래스란 어떤 목적으로 사용되는지 알아보자. Java NPE 예방 자바 프로그램 코드를 작성하다보면 null 값에 대해 고려해야하는 경우가 많다. null 값을 제대로 처리하지 않으면 NPE(NullPointerException)을 만나게된다. 안정적인 실행을 위해 NPE가 발생하지 않도록 중간중간 null 체크를 해줘야하는데, 이게 코드를 여간 더럽히는게 아니다. 예를 들어보자. List items = getItems(); System.out.println(items.size()); getItems() 메소드를 통해 문자열 리스트 객체를 얻어온 다음 엘리먼트 개수를 출력하는 간단한 코드다. getItems() 메소드가 nul.. 2021. 8. 19.
[Git] Github 이슈, 라벨, 마일스톤 기능 및 사용법 깃허브에서 이슈(Issue)는 프로젝트를 진행하면서 발생하는 다양한 이벤트들을 의미한다. 발견된 버그나 추가할 기능, 개발해야할 새로운 이슈나 설계사항들을 이슈로 만들어서 동료들과 협업을 진행할 수 있다. 참고로 깃허브의 공식 문서에서 이슈는 다음과 같이 정의하고 있다. Use GitHub Issues to track ideas, feedback, tasks, or bugs for work on GitHub. Issues let you track your work on GitHub, where development happens 깃허브 이슈 깃허브 이슈 생성 개발자는 깃허브 저장소 페이지의 이슈 탭에서 새로운 이슈를 생성할 수 있다. 이 때, 개발자는 해당 저장소에 이슈를 생성할 수 있는 권한을 가지고 .. 2021. 8. 12.
[Git] Github 커멘트(댓글) 관련 기능 및 사용법 깃허브를 협업 도구로 사용할 때, 가장 많이 사용하는 기능은 단연 '댓글(커멘트)' 기능이다. 동료 개발자들과 커멘트를 주고 받으면서 문제도 해결하고 소스코드도 수정한다. 깃허브에서 커멘트를 달 때, 이슈 맨 아랫쪽에 커멘트를 입력할 수 있는 창을 이용하면 된다. 커멘트는 마크다운 문법을 이용해 작성할 수 있다. 자주 사용하는 마크다운 기능은 커멘트 입력창 오른쪽 상단에 다양한 아이콘으로 표시되어 있다. 마우스 오버를 해보면 각각 어떤 기능인지 힌트를 준다. (물론 자주사용다하보면 그냥 마크다운 문법을 사용하게 된다) 작성된 커멘트는 작성된 시간 순서에 따라 블로그 댓글처럼 이슈 아랫쪽으로 주렁주렁 달리게 된다. 커멘트(댓글) 인용 여러사람이 하나의 이슈에 커멘트를 남기다보면 답해야할 타이밍을 놓치는 경.. 2021. 8. 11.
[Java] 자바 가비지 컬렉션 기초(Garbage Collection Basic) 자바 개발자라면 '가비지 컬렉션(Garbage Collection)'에 대해서 고민하게 되는 순간이 온다. 토이 프로젝트나 작은 프로젝트에서는 가비지 컬렉션에 대한 관심이 적다. 가비지 컬렉터의 선택이 성능에 미치는 영향보다는 어떤 알고리즘을 사용했는지, 어떤 라이브러리를 사용하는지, 어떤 설정으로 구동하는지가 더 중요하다. 하지만 일정 규모 이상의 프로젝트를 진행하다보면 결국 가비지 컬렉터의 선택까지 고민하게 된다. 실력있는 자바 개발자라면 가비지 컬렉션의 동작에 대한 이해를 하고 자신이 구현하는 애플리케이션에 맞는 적당한 가비지 컬렉터를 선택, 설정들을 튜닝할 줄 알아야한다. 가비지 컬렉션(Garbage Collection) C언어나 C++ 같은 언어에서 메모리 관리는 프로그래머의 책임이다. 필요한 .. 2021. 8. 10.
[Git] 크롬 깃허브 플러그인 - Better Pull Request For GitHub 이제 많은 기업들에서 협업 도구로 깃허브를 사용한다. 특히 깃허브 엔터프라이즈를 사내 협업 도구로 도입하면서 동일한 코드에 여러 사람들이 작업을 하며 협업하는 경우가 많아졌다. 깃허브를 통해 코드 작업을 하게되면, Pull Request를 통해 공통의 코드를 관리하게 된다. 로컬 저장소에서 소스코드를 수정하고 테스트한 다음 마스터 브랜치 혹은 개발 브랜치로 커밋 내용들을 PR보내면 동료들이 PR 내용을 리뷰하고 피드백을 주거나 코드를 머지하게된다. 따라서 PR은 협업의 가장 중요한 작업 중 하나가 되었다. 깃허브의 PR 페이지를 조금 더 효과적으로 탐색할 수 있는 크롬 확장 프로그램이 있다. Better Pull Request For GitHub 이름부터가 PR 페이지를 좀 더 보기 좋게 만들어주는 확장.. 2021. 8. 9.
[Git] GitHub 저장소 페이지 단축키 깃허브를 협업툴로 사용하는 조직이 많지만 의외로 깃허브 저장소 페이지에서 단축키를 사용할 수 있다는 것을 모르는 경우가 많다. 우선 레파지토리의 탭을 이동하는 단축키는 [G] 키와 각 탭의 첫 글자를 조합하면 된다. 예를 들어 'Code' 탭은 [G] + [C]로 이동할 수 있고, 'Issues' 탭은 [G] + [I] 로 이동할 수 있다. 'Go to {XXX 탭}'에서 G와 탭 이름의 첫 글자를 따왔다고 생각하면 된다. (그 밖에 [G] + [B]를 누르면 Projects, [G] + [G]를 누르면 Discussions로 넘어간다) Code 탭에서 파일을 찾는 페이지로 넘어가려면 [T] 키를 누르면된다. 그러면 찾고자하는 파일 이름을 입력할 수 있고, 하단에는 이름에 해당하는 검색 결과가 표시된다... 2021. 8. 9.
[Hadoop] HDFS 아카이브(HAR) 생성 및 사용법 예제 하둡 파일시스템, HDFS의 가장 큰 단점은 파일의 개수가 늘어나면 네임노드의 메모리 부하가 늘어난다는 점이다. 따라서 하둡 파일시스템을 사용할 때, 작은 파일을 여러개 생성하기보다는 큰 파일을 적게 생성해서 사용하는게 좋다. 하지만 일반 사용자들에게 HDFS를 오픈하면 작은 파일들이 여러개 생기는 경우를 피할 수 없다. 하둡은 이런 상황에 대비할 수 있게 HDFS위에 저장되는 파일의 개수를 줄일 수 있는 방안으로 HAR(Hadoop Archive) 기능을 제공한다. HAR(Hadoop Archive) 하둡의 아카이브는 우리가 일반적으로 사용하는 파일의 압축과 비슷한 개념이다. tar 명령으로 디렉토리에 존재하는 파일들을 하나의 아카이브 파일로 묶어주는 동작과 마찬가지로 하둡은 특정 디렉토리의 서브 디렉.. 2021. 8. 9.