본문 바로가기
반응형

전체 글124

객체지향 설계 5원칙 (SOLID) 안녕하세요 앵과장입니다. 한때는 한참 객체지향 설계에 대해서 물어보는 회사들이 많이 있는데 꼭 알아야만 하는 건 아니지만 알면 정보에 하나가 될 수 있으니 가볍게 정리만 해보도록 하겠습니다. 아시죠 말보다는 실천과 행동이 중요하며 서비스를 지속적으로 성장시킬 수 있는 구조와 꾸준한 리펙토링이 동반되어야 합니다. 설계의 원칙 지금은 다양한 방법들이 존재하며 서비스에 상황 그리고 목적에 따라 변할 수 있습니다. 서비스는 항상 일관성이 유지되어야 하며 직관적이며 협업하는 관계에서는 더 좋은 방법도 중요하지만 모두가 동일한 도메인에 대한 지식과 커뮤니케이션 가능한 코드가 우선인 점 항상 유념해주시면 좋을 것 같습니다. 책임(Responsibility) 특정 액터의 요구사항을 만족시키기 위한 일련의 함수의 집합 .. 2021. 10. 20.
마이크로서비스 MSA 코드 파편화 복잡도 최소화 안녕하세요 앵과장입니다. 마이크로 서비스에 대해서 오랜만에 생각 정리를 해볼까 합니다. 닭잡는데 소잡는 칼이 필요는 없지만.. 모놀리딕, 마이크로서비스 말이 많지만 오늘은 마이크로서비스만 집중해보도록 하겠습니다. 마이크로 서비스 마이크로 서비스를 처음 시작한 게 SKP 개발자센터 프로젝트를 만들 때 처음 시작했을 때니 2011~2012년도였던 것 같습니다. 마이크로 서비스라는 개념이 잘 이해가 되지 않았는데 지금은 여러 서비스 플랫폼에서 많은 사용을 하고 있습니다. 마이크로 서비스는 현재 엔터프라이즈급 또는 새로 시작하는 스타트업에서도 많은 부분 프로덕트 구성에 있어서 적합한 트렌드라고 생각됩니다. 다만 AWS 구성에 대한 비용 MSA 아키텍처에 필요한 리소스 등을 전부 초반에 만족시키기에는 부담스러울 .. 2021. 10. 15.
알고리즘 8편 Hash 난이도3 베스트앨범 lamda 함수형 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 베스트 앨범 Hash 난이도 3 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres [i]는 고유번호가 i인 노래의 장르입니다.. 2021. 10. 4.
알고리즘 7편 Hash 난이도2 key value 위장 의상경우의수 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 오늘은 프로그래머스 Hash 난이도 2 위장 코딩해보도록 하겠습니다. 프로그래머스에서 3번째 문제이며 1번 2번을 풀어보셨다면 3번째도 풀어볼 수 있을만한 난이도입니다. 그럼 지금 시작하도록 하겠습니다. package com.programmers.problem /** * 문제 설명 BJ들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 BJ가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류이름 얼굴동그란 안경, 검정 선글라스 상의파란색 티셔츠 하의청바지 겉옷긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때.. 2021. 9. 21.
알고리즘 6편 Hash 로 2개 배열 중복값 찾고 지우기 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 2021년 그것도 9월이네요 벌써 내 나이 40대 초반도 지나가고 있네요 오늘은 연휴 시작 토요일입니다. 다들 즐거운 한가위 추석 되시고 놀지 말고 공부하세요 알고리즘 문제는 다양한 곳에서 찾아서 배울 수 있으니 시간 날 때마다 풀어보시기 바랍니다. Hash hash에 대한 문제를 풀기 전에 우선 우리가 소스에서도 많이 봐왔던 Hash에 대해서 가볍게 알고 넘어가도록 하겠습니다. hash 많이 쓰잖아요? HashMap HashSet HashTable HashArray Hash를 그토록 쓰는데 Hash에 대해서 설명을 해봐!? 어.. Hash 요? Key, Value로 이루어진 데이터 정도라고 설명할 수는 있는데 좀 더 이해할 수 있도록 설명 가능한 방법이 있을까요? 또 제가 좋아.. 2021. 9. 18.
알고리즘 5편 특정 문자열 찾기 및 최소거리 탐색 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 알고리즘 잘해쳐나가고 있나요? 저도 개발을 이렇게 나이먹고 문제해결방법 하고 있을줄은 몰랐습니다. 아에 못할거라고 생각하고 접근을 안했는데 하니까 됩니다. 갑자기 이런짤이 생각이 나네요 이제는 고인이되신 현대그룹 정주영 회장님입니다. 일단 해보시기 바랍니다. 좀더 일찍해볼껄 그랬네여 문자열 과 문자에대한 부분을 단계적으로 접근하면서 느낀건 아무것도 모르면 기초부터 하나씩 풀어나가는게 필요한것 같습니다. 오늘의문제 문자열 a 에 문자 s를 0으로 변경하고 문자s를 기준으로 1씩 증가되는 문자열을 만들어보세요 문자열 a : "abcdeapplea" 문자 s: 'a' abcdeapplea 01221012210 이렇게 나와야 정상적인 출력입니다. 음..... 전 아직인가봅니다 어떻게 해.. 2021. 9. 16.
알고리즘 4편 정규표현식 말고 아스키 코드로 문자 숫자 필터링하기 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 모든 문제풀이는 kotlin 으로 진행하겠습니다. 오늘은 문자를 처리할때 알파뱃 대소문자만 필터링할때 또는 숫자만 처리할때 필요한 문자열처리에 대해서 알아보려고합니다. 빈도수는 자주 사용되는점 인지하세요!! 문자열을 필터링 할때 보통 어떻게 진행 하시나요? 문자열 필터링 저는 주로 regex 정규표현식으로 처리를 한적이 많습니다. 많은 샘플들이 정규표현식을 선호하기도합니다. 인터넷 검색해보면 많은 사람들이 정규표현식을 사랑합니다. 원하는 문자열에 형태를 validation 할수 있습니다. 오늘의 문제 영어 알파뱃과 특수문자로 이루어진 문자열중에서 영어 알파뱃만 뒤집고 특수문자는 자기자리에 있는 문자열로 출력해보세요 예시) A!P!P!L!e e!L!P!P!A val regex = .. 2021. 9. 14.
알고리즘 3편 Char 문자열 뒤집기 한판 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 모든 문제풀이는 kotlin 으로 진행하겠습니다. Java 만 하다 보니 좀 다른 언어로 진행해보고 싶었고 앞으로 kotlin으로 개발을 해보고 싶다는 생각도 들어서 알고리즘부터라도 진행해보도록 하겠습니다. 문자열 관련 문제를 풀다 보면 단계적으로 비슷한 부분들을 학습하게 됩니다. 문자열을 char배열로 변경해야 한다든가 또는 대소문자만 가지고 와야 한다든가 뒤집어야 할 때 말입니다. 여러 가지 방법으로 진행할수 있지만 현재 단계는 1단계라는 점 그리고 가장 가볍게 여러가지 생각을 하지 말고 접근하는 법부터 진행해야 합니다. 우선 내가 현재 알고 있는 지식으로 최대한 문제를 접근해봅니다. 그래야 리펙토링을 하더라도 이해가 될 수 있기 때문입니다. 처음에 시간이 오래 걸린다고 해서.. 2021. 9. 13.
알고리즘 2편 문장(문자열) 과 단어 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 이거 굳이 -0- 이런 말 안 해도 되는데 일단 제가 하는 게 항상 최선에 방식도 아니고 더 좋은 개발 방법이나 잘하시는 분들이 있을 겁니다. 저도 10년 차 이상 개발자이지만 이런 거 해본 적도 없는 안타까운 직장인이라 공부한다는 접근이니 소스에서 좀 더 좋은 방법이 있다면 댓글로 추가해주시면 저도 공부하면서 많은 도움이 될 것 같습니다. 모든 문제풀이는 kotlin으로 진행하겠습니다. Java 만 하다 보니 좀 다른 언어로 진행해보고 싶었고 앞으로 kotlin으로 개발을 해보고 싶다는 생각도 들어서 알고리즘부터라도 진행해보도록 하겠습니다. 문장(문자열) 과 단어 오늘은 문장 과 단어를 처리하는 문제를 풀어보도록 하겠습니다. 문장 그리고 단어 단어들이 여러 개 있는 형태를 문장.. 2021. 9. 13.
알고리즘 1편 어디부터 시작하면될까요? 점진적인 시작 나쁜머리를 굴려보자 개발자 면접 준비기초 안녕하세요 앵과장입니다. 오늘은 알고리즘 동기부여 그다음 편 시작해보기입니다. 알고리즘 어떻게 시작해야 됩니까? 저처럼 경력은 있는데 알고리즘이 부족해서 시작하는 분들도 있을 것이고 개발자가 되기 위해서 공부하는 사람 취미로 개발이 해보고 싶은 분들까지 있을 겁니다. 알고리즘이 왜 필요한 건가요? 회사생활 정말 알고리즘만 하면 연봉 올라가나요? 아니요!! 일머리가 돌아가야 합니다. 경력 10년 이상 동안 정말 알고리즘을 몰라도 개발자가 되고 경력이 오르고 연봉이 오르나요? 가능합니다. 회사생활은 개발만 잘한다고 되는 건 아닙니다. 일머리가 있어야 회사생활이 가능합니다. 약간에 센스, 커뮤니케이션, 눈치, 아부, 운, 낄낄 빠빠, 주변 사람 들까지 적절하게 버무려지면 사회생활 레벨업이 됩니다. 눈치 없는 .. 2021. 9. 12.
알고리즘 0편 시작 동기부여! 내가 누군지 아니 개발자다! 노예가 아니구! 개발자 면접 준비 기초 안녕하세요 앵과장입니다. 알고리즘을 해야 하나요? 경력자분들 중 저와 비슷한 생각을 하시는 분들도 있을 거라고 생각합니다. 경력이 17년 이상 되다 보니 연봉이 낮은 편은 아닙니다 그렇다고 높다고 생각해야 될까 할 정도로 높은 편도 아닙니다. 이렇게 되다 보니 굳이 알고리즘을 준비해서 면접을 봐야 하나 라는 생각을 어느 순간 가져버리고 사는 순간... 개발회사 생태계를 못 따라가고 있는 나를 발견했습니다. 인스타, 블로그, 유튜브 조회수에 목말라서 허덕이고 관심을 받고 싶는 것을 좋아하는 내가 개발자로서는 생각보다 그렇게 노력을 해본 적이 있나라는 생각이 들었습니다. 사실 시간 대비 효율이라고 개발 알고리즘 풀 시간에 다른 부분들을 끌어올려야겠다는 생각으로 이것저것 하고 있는데 하면서 알게 되었습니다. .. 2021. 9. 11.
Aws ses(Amazon SImple Email Service)를 이용한 Spring Boot Email 발송 기능 Java Source 안녕하세요 앵과장입니다. 오늘은 Aws ses를 이용해서 JAVA Springboot 기반 email 발송 기능을 만들어보겠습니다. 회사에서 진행하는 서비스플랫폼에서 사용할 기능을 개발하고 있는중입니다. (ps 어라 왜 서비스플랫폼에 메일발송이 없는지 의아해 할수 있는데....좀 안타까운곳에 이직해서 멘탈깨지는중입니다) 라떼는 언제냐 KTH가 파란포탈을 만들어서 광고 할때 기억에 메일마다 2기가인가 4기가 준다니 너도나도 사람들이 파란포탈에서 제공하는 메일을쓰려고 가입하고 그랬던 기억이 있네요 그때 파란포탈 이메일 개발팀에 대략 4~5명정도 였고 PHP로 개발되어있었습니다. 그분들 그때 밤세고 장애처리하고 엄청 복잡했었는데 이제는 이렇게 AWS에서 제공하는 SES로 간단하게 사용이 가능합니다. 단계정리 .. 2021. 9. 2.
728x90