목록분류 전체보기 (82)
호비시의 끄적끄적
2024년 새해 목표 중 하나인 꾸준하게 블로그 쓰기를 하려고 합니다. github blog가 여러모로 더 좋은것 같아 넘어갑니다 https://hobit22.github.io/
조합이란 nCr 수학에서의 조합(Combination)은 주어진 원소들 중에서 일부를 선택하여 순서에 상관없이 조합을 만드는 것을 말합니다. 조합은 선택된 원소들의 집합을 의미하며, 선택된 원소들의 순서는 고려하지 않습니다. 조합은 보통 "n 개 중에서 r 개를 선택하는 조합"으로 표현됩니다. 이는 n개의 원소가 있을 때, 그 중에서 r개를 선택하여 만들 수 있는 모든 부분집합을 의미합니다. 조합의 수를 구할 때는 주로 이항 계수(Binomial Coefficient)를 사용합니다. 중복조합 nHr 중복조합(Combination with Repetition)은 주어진 원소들 중에서 중복을 허용하여 원하는 개수만큼 선택하여 조합을 만드는 것을 말합니다. 일반적으로 조합은 중복을 허용하지 않는 조합(조합론적..
취업 결론부터 말하자면 취업에 성공했다. 거의 2달 동안 75군데 지원하였고, 서류합격은 10건 남짓, 1차 면접 합격은 5건, 최종합격은 1건이었다. 취업하기 까지의 과정을 짧게나마 정리해보고자 한다. 이력서 작성 부트캠프 항해99를 수료하고, 이력서를 작성하였다. 이력서를 작성할 때 이것 저것 많이 참고하였지만, 가장 도움이 됐던 것은 역시 워니님의 블로그(https://wonny.space/writing/work/engineer-resume). 어떤 것을 어필해야하고, 어떤 키워드를 넣어야 하는지, 피해야 할 점은 무엇인지 정말 잘 정리되어 있다. 이를 바탕으로 작성한 이력서를 작성하였고, 항해99 수료생들과 서로 이력서를 봐주며 피드백 해주고 보완해 나갔다. 물론 짧은 경력, 부족한 프로젝트, 모..

어댑터 패턴 Adapter pattern 어댑터 패턴이란 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. 코드의 재활용성을 증가시키고 기존 코드를 수정하지 않는다. 어댑터 패턴의 핵심은 호환성이다. 언제 사용할까 외부 구성 요소를 기존 시스템에 재사용하고 싶지만 호환되지 않는 경우 애플리케이션이 클라이언트가 기대하는 인터페이스와 호환되지 않는 경우 원본 코드를 수정하지 않고 애플리케이션에서 레거시 코드를 재사용하려는 경우 예제 설문 조사 대상자로부터 받은 설문 응답을 홈 페이지에 표시하는 온라인 포털 사이트를 상상해보자. 설문 조사 Response는 포털 사이트가 응답을 얻기 위해 협력하..

2022년 3월 부터 2022년 6월 초까지 약 99일간 진행했던 항해 99 6기 뒤늦은 회고. 개발자로서 더 성장하기 위해 시작했던 항해99 짧은 기간, 부족한 커리큘럼, 미숙한 운영 등 여러가지 불만은 많았지만 어느정도 목표는 이뤘다고 생각한다. 첫째, 공부하고 기록하는 습관. 항해 99일간 1273시간, 하루에 12시간 이상씩 공부하였다. 사람이 습관을 가지려면 3개월은 꾸준히 해야한다는 소리를 들은 적이 있다. 항해를 하는 동안 공부하는 습관은 내 몸에 베었고, 앞으로도 항해에서 해왔던 것 처럼 꾸준히 공부할 것이다. 또한 공부한 내용을 바탕으로 블로그를 작성하고 github을 관리하는 습관이 생겼다. 이는 평생 공부해야하는 개발자로서 꼭 필요한 습관이라 생각한다. 둘째, 협업의 경험 협업이라는 ..
Singleton Pattern 싱글톤 패턴이란 디자인 패턴중 하나로, 애플리케이션이 시작될 때 객채의 인스턴스가 오직 1개만 생성되는 패턴을 말한다. 사용하는 이유 메모리 낭비 방지 하나의 인스턴스만 고정 메모리 영역에 생성하기 때문에 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다. 속도 빠름 이미 생성된 인스턴스를 활용하기에 속도 측면에서 이점이 있다. 데이터 공유하기 유리 전역으로 사용하는 인스턴스이기 때문에 다른 여러 클래스에서 데이터를 공유하기 쉽다. 주의할 점 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유할 경우 다른 클래스의 인스턴스들 간에 결합도가 높아진다. 따라서 수정이 어려워지고, 테스트하기가 어렵다. 또한 멀티스레드 환경에서 문제점이 많다. 여러개의 인스턴스가 생..
Static 선언 class StaticSample{ // non - static 필드, 메소드 int n; void g() { ... } // static 필드, 메소드 static int m; static void f() { ... } } 특성 static 멤버는 클래스당 하나만 생성되는 멤버로서, 동일한 클래스의 모든 객체들이 공유한다. non-static 멤버는 객체가 생길 때 함께 생성되고, 객체가 사라지면 함께 소멸된다. 그러나 static 멤버는 프로그램을 시작할 때나 클래스 로딩 시에 생성된다. 그러므로 객체를 생성하기 전에 staic 멤버를 사용할 수 있다. 또한 생성된 객체가 소멸 후에도 static 멤버는 여전히 살아 있으며, 프로그램이 종료할 때 함께 소멸된다. static meth..

Spring Security 인증과 인가 인증 : 사용자가 본인이 맞는지 확인하는 절차 인가 : 인증된 사용자가 요청한 자원에 접근권한 여부를 판단하는 절차 Security 인증 방식 credential : 아이디 + 비밀번호를 이용 principal : 아이디 Security 의 주요 모듈 SecurityContext : Authentication를 가지고 있고 SecurityContextHolder에 담아 보관한다. Security 인증 과정 클라이언트가 아이디 비밀번호로 로그인 요청 AuthenticationFilter에서 UsernamePasswordAuthenticationToken을 생성하여 AuthenticationManager에 전달 AuthenticationManager는 Authenti..