전체 글96 Springboot - Sentry 연동 스프링 부트 프로젝트에서 에러 로그가 발생했을 시 센트리에 등록되고, 등록된 이슈를 슬렉으로 알람받을 수 있도록 합니다. 1. Sentry 프로젝트 생성하기 Project → Create Project 위와 같이 프로젝트를 생성하면, 의존성 추가 방법이나 사용 방법등이 나온 페이지가 나옵니다. 이제 의존성과 발급된 DSN을 스프링 프로젝트에 등록합니다. 2. Springboot 설정하기 센트리를 추가하고, 관련 설정은 logback을 통해 관리할 것입니다. dependencies { implementation 'io.sentry:sentry-spring-boot-starter:5.7.0' implementation 'io.sentry:sentry-logback:5.7.0' } build.gradle 에 .. 2022. 7. 15. 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. 이전 1 2 3 4 5 6 7 ··· 16 다음