Intro컬렉션을 사용할 때, 특히 중복을 허용하지 않는 Set을 사용할 경우, 우리는 보통 사용하는 클래스의 equals와 hashCode만 올바르게 오버라이드하면 된다고 생각한다. HashMap에서는 그랬을지 몰라도 TreeSet을 사용할 때는 상황이 조금 달라진다.TreeSet은 내부적으로 요소를 정렬하는 과정에서 compareTo 메서드를 사용하는데, 이를 간과하면 문제가 발생할 수 있다. compareTo 메서드는 단순히 정렬만을 위한 것이 아니라, 중복을 체크하는 데도 사용되기 때문이다.이 글에서는 TreeSet에 집어넣는 클래스의 equals, hashCode 뿐만아니라 compareTo에 대해서도 신경 써야 하는 이유에 대해 살펴본다.문제 상황TreeSet은 삽입된 데이터를 자동으로 정렬하..
ALL 482
첫 번째 티셔츠 첫번째 릿코드 티셔츠 를 받은지 1년이 조금 넘었다. 딱히 티셔츠를 받고자 했던건 아니지만, 몇 안되는 취미중 하나로 데일리 문제들을 매일 풀다보니 어느덧 다시 6,000 포인트가 쌓여있었다. 첫 티셔츠를 받을때는 그렇게 포인트가 모이는데 오래걸리는 느낌이라 Weekly Contest도 꼬박꼬박 참여하고 몇주마다 포인트가 얼마나 쌓였는지도 확인해보곤 했었는데.. 이번에는 벌써 또 6천점이 넘게 모여있네? 싶었다. 첫 티셔츠 이후로는 컨테스트 참여도 전혀 하지 않고 있다. 나름의 실시간 경쟁 및 컨테스트 종료 직후 발표되는 순위에서 오는 묘한 긴장감을 즐겼었는데 AI로 발달 이후로 참여에 대한 동기가 상당히 줄었다. 공정한 경쟁이란 측면을 중요시 여겼던 점에서 참여자체를 하나의 스포츠 정도..
Intro 요즈음 간편 로그인은 대세를 넘어 필수로 자리잡았다. 서비스를 개발하는 입장에서도 고객의 아이디와 암호를 보관하는 부담이나 복잡한 인증 시스템을 개발하는 수고를 덜을 수 있기 때문에 안쓸 이유가 없다. 다만, 간편 로그인의 워크플로는 서비스마다 조금씩 다르고 기존에 학습했던 인증 시스템과는 다른 개념이기 때문에 어느정도 전체적인 워크플로를 파악하는게 선행되어야 한다. 이번 글에서는 카카오 로그인을 활용한 간편 로그인을 개발하며 살펴본 전체적인 흐름에 대해 각 단계별로 간략이 정리해보려한다. 가장 좋은건 카카오가 제공하는 문서 를 참고하는 것이다. 카카오 공식 문서가 아주 잘 작성되어 있으나 본인이 초보자라 무슨말인지 잘 모르겠다 하면 이 글로 코드와 함께 전체적인 흐름을 파악해보자. 준비 카카..
Intro 기존에 Granafa 등을 통해 별도의 관제 시스템을 운영하고 있지만, 서비스 어플리케이션과 모니터링 어플리케이션들이 비용상문제로 같은 서버에서 작동하고 있기 때문에 네트워크 장애등의 상황에서 제대로 장애 상황이 전파되지 않을 것이 염려되었다. 이러한 상황을 방지하기 위해 간단히 서버의 응답 여부정도만 확인할 수 있는 보조 모니터링 서비스를 찾아보았고, 괜찮은 무료 서비스인 UptimeRobot을 발견하여 공유하려 한다. 회원가입 먼저 홈페이지에 접속한다. https://uptimerobot.com/ Register for FREE 클릭해 회원가입을 하면 되는데 회원가입은 이메일주소, 비밀번호만 입력하면 간단하게 완료된다. 이후 이메일 인증만 하면 끝. Monitor 등록 가입 후에는 모니터링..
Intro 오라클 클라우드에서는 램 1GB 짜리 무료 인스턴스를 무려 2개나 준다. 그 덕에 3년간 잘 사용해왔는데 갑자기 인스턴스가 먹통이되었다. 오라클 클라우드 로그인도 안되길래 오라클 기술지원에 문의를 하니 이유는 따로 말해줄 수 없지만 계정을 terminate 시켰단다. 단순하게 톰캣 띄워놓고 개발용으로만 꾸준히 써왔을 뿐이니 특별히 약관을 위배한건 없었을텐데 카드 등록도 필요 없을때부터 시작한덕에 계속 공짜로 써왔던게 밉보였나 싶다. 한참 전부터 위 이메일같이 말도안되는 cpu 점유율을 운운하며 (램은 항상 80% 이상 사용 했으니, cpu로 핑계를 댔나. 솔직히 웹 어플리케이션 서버에 CPU 계속 뛰는 일이 있을 수가 없다) 사용안하니 끌께~라고 메일보내놓고 기습적으로 서버를 강제 종료 해대도..