본문 바로가기

전체 글89

Git Action 으로 배포시 Slack 알람 받기 Git Actions 을 사용하고 있는데, 누군가 배포를 진행하면 슬렉으로 노티를 발생시켜 구성원들이 배포 사실을 인지할 수 있도록 하려고 합니다. 1. 슬렉 앱 추가 Slack API 에서 Create New App을 선택하여 Bot App을 추가합니다. 2. Webhooks 설정 Incoming Webhooks를 선택 Add New Webhook to Workspace 를 눌러 추가 (이미지에는 없으나, Webhook을 허용할 채널을 선택하고, 채널을 선택하면 Webhook URL이 생성되는데 이를 복사하여 git secret 에 추가합니다.) 3. Git Secret 추가 복사한 webhook URL을 가져와서 시크릿을 추가 Name 은 SLACK_WEBHOOK_URL, Value 에는 복사한 We.. 2022. 7. 14.
Immutable Object란? 객체 지향 프로그래밍에 있어 불변 객체는 생성 후 그 상태를 바꿀 수 없는 객체를 말한다. (힙 영역에서 그 객체가 가리키고 있는 데이터 자체의 변화가 불가능) 불변 객체를 사용하면 복제나 비교를 위한 조작을 단순화 할 수 있고, 성능 개선에도 도움을 준다. 하지만 객체가 변경 가능한 데이터를 많이 가지고 있는 경우엔 불변이 오히려 부적절한 경우가 있다. 이 때문에 많은 프로그래밍 언어에서는 불변이나 가변 중 하나를 선택할 수 있도록 하고 있다. 대표적인 자바 클래스에는 String 이 있다. String a = "aa" 후 a = "bb" 는 "bb" 에 대한 새로운 객체를 만드는 것 다른 상황일 수도 있는데, 경험한 걸 설명하면 메소드 파라미터를 받을 때 final 이라는 파라미터를 사용한다. 이는 .. 2022. 7. 14.
HashTable vs HashMap HashTable VS HashMap 메모리 내에 key/value 짝으로 되어있는 데이터이다. 두 데이터 타입의 차이점을 알아보고자 한다. 1. 비슷한 점 추가, 삭제, 접근이 비슷하다. get() : 키를 통해 아이템 검색 remove() : 키를 통해 삭제 put() : 아이템을 추가 java.util 패키지 내에 속해있다. 2. 다른 점 두 데이터 타입은 매우 많은 다른 점이 존재하지만, 주된 것 몇 가지만 알아보자 HashTable 의 경우 암묵적으로 동기화되어 멀티 스레드 환경에서 동작하기 용이하다. 엑세스 시 스레드는 HashTable 을 락해 다른 스레드가 동시에 변경하는 것을 방지한다. 반대로 HashMap 의 경우에는 단일 스레드 환경에서 적합하다. 만약 멀티 스레드 환경에서 HashM.. 2022. 7. 14.
클래스 vs 인스턴스 클래스 vs 인스턴스 정말 흔하게 쓰는 단어이고, 사용도 할 줄 알지만 항상 그렇듯, 남에게 제대로 설명하지 못하면 결국은 도루묵이기에.. 이번 기회에 간단하게나마 정리해보고자 한다. 1. 클래스 클래스는 데이터와 로직을 묶어서 누구나 동일한 기능을 사용할 수 있게 하고, 누구나 필요한 자기만의 데이터를 보관하기 위해서 스펙을 결정해둔 것을 의미. 예를 들어 MP3 라면 곡 데이터는 전부 다르지만, 음악 감상 기능은 모든 MP3 가 동일한 기능이 지원되는 것 여기서 데이터는 변수, 로직은 메소드가 되겠다. 클래스는 연관되어 있는 변수와 메소드의 집합이다. 2. 인스턴스 클래스라는 일종의 설계도를 통해 제품을 만드는데, 이 제품을 인스턴스라고 한다. 예를 들면 MP3 myMp3 = new MP3(); 에서.. 2022. 7. 14.
2020년 회고 2019년을 회고한 게 엊그제 같은데 벌써 2020년을 회고하는 글을 쓰게 되었다. (실은 글을 쓴 것 자체가 엊그제 같다... 그만큼 2020년은 포스팅을 안한 것 같다.) 뭐 어쨋든, 2020년은 정말로 느린듯하면서도 빠르게 지나갔다. 그리고, 여러 가지 생각을 했었지만, 결과적으로는 1보 후퇴한 느낌의 한 해 이기도 하다. 대외적으로는 코로나가 있었고, 내적으로는 정말 긴 슬럼프를 겪었다. (물론 글을 쓰고 있는 시점에도 현재 진행형이고, 쓸까말까 하고 미루고 미루다 쓰는 것이기도 하다.) 이번 회고는 크게 4개의 파트로 나눌 수 있을 것 같다. 주변의 이직 연봉 협상에서의 의외 본격적으로 이직을 준비 그리고 지금, 원래도 대외적으로 뭔가를 잘 하진 않지만 코로나로 인해 더욱 안했던 한 해였고, 지.. 2022. 7. 14.
2019년 회고 이전에는 생각만 하고 남겨뒀던 것들을 블로그를 만들고 나니 써봐야 겠다는 생각이 들었다. 그렇게 하여 이번에는 2019년의 생각을 남기고자 한다. 실제로 작성을 생각했던 건 지난 주 였는데, 이러저러한 사정 때문에 이제서야 쓰게 되었다. (좀 더 늦추면 회고가 아닌 신년 다짐이 될 거 같기에..) 1. 업무 외적으로 받는 스트레스가 많았던 상반기 현재 회사는 지인의 소개로 작년 9월에 입사했었다. 당시 팀은 AI스피커 를 개발하는 팀이었고, 나름 신기술 셋(스프링 부트, Angular2, Junit5, AIML, 레디스 등) 으로 재밌었다. 하지만, 프로젝트의 중추를 맞고 있는 사수가 건강상의 이유로 퇴사하고 그 이후로는 정말 힘들었다. 새로운 상사가 오고 엄청나게 맞지 않았었고, 그런 업무 스타일로 인.. 2022. 7. 14.