본문 바로가기
반응형

분류 전체보기127

LocalDate, LocalTime, LocalDateTime 날짜 타입 사용법 계산 비교 타입 월 마지막 날짜 찾기 Rest API Response Json String 문자열 변환 날짜 처리하는 내용은 이상하게 항상 검색하게 되는데.. 참 이거 맨날 할때마다 외워지지도 않고 검색하는게 당연하기 때문에 15년넘게 검색을 했으니 이제는 좀 정리할때도 된것같아서 정리를 해보자!! LocalDate, LocalTime, LocalDateTime 자바에서는 각 버전별로 사용해왔었던 날짜처리 클래스가 있는데 가볍게 설명하고 최근 가장많이 사용하고있는 LocalDate, LocalTIme, LocalDateTime 에 대한 날짜 타입 비교, 계산, 포맷, 변환, Josn 표기방법까지 알아보자!! 날짜 타입의 변천사 Java 1.0 java.util.Date 날짜와 시간관련 기능을 제공 Date 라는 클래스의 이름과 달리 특정 시점을 날짜가 아닌 밀리초 단위로 표현 Date date = new .. 2022. 9. 7.
오늘회 서비스 종료 전직원 권고사직 루머소식 그게 나라면.. 개발자입장에서 바라보는 스타트업 오늘회 APP에서 대게도 사먹고, 꽃게, 회, 삽겹살부터 참 알차게 사먹었던 기억이 있는데 품질도 괜찮고 배송도 좋았는데 9월2일 하루아침에 갑자기 서비스 종료된다는 기사도 접하고 APP에 들어가봐도 품절이라고 되어있었는데 9월5일 들어가보니 그래도 "10월에 만나요!" 로되어있다. https://shop-pc.onul-hoi.com/ 오늘회 :: 찾아가는 내손안의 수산마켓 100만이 인정한 초신선 식재료 필수앱! 맛있는 회부터 돼지고기, 채소·과일까지! 맛있는 먹조합보고 구매까지 한번에! shop-pc.onul-hoi.com 10월에 투자금이나 배송업체나 공급사에 대금이 돌아오는건가? 스타트업 가도 괜찮을까 ? 오늘회 서비스플랫폼이 하루만에 날라가는것을 보면서 ... 요새 정말 금리도 오르고 투자금이 .. 2022. 9. 5.
annotation 만들기, 커스텀 어노테이션 만들기, annotation 설명 종류 타입 Annotation 이란 ? java (1.5) 부터 등장했으며 프로그램에 추가적인 정보를 제공하는 메타 데이터라고 할수있다. 메타데이터란 어플리케이션에서 처리해야 할 데이터가 아니라 컴파일 과정과 런타임에서 코드를 어떻게 컴파일하고 처리할 것인지에 대한 정보를 말한다. 이런 Annotation 옵셥(@Retention)에 따라 컴파일 전, 컴파일 시기, 런타임 시기에도 처리되도록 할수있다. Java 의 리플렉션을 사용하여 런타임 시기에 어노테이션의 메타 데이터를 바탕으로 AOP를 구성하는데 큰 도움을 줄수있다. 이러한 메타 데이터를 활용하여 비지니스 로직과 분리하여 대상의 유효성 체크, 값 주입, 역활 주입 등을 수행할 수 있어 코드를 간결하게 작성할수 있다. - 주의사항 Annotation 자체는 특.. 2022. 9. 4.
Mac OS 맥북 Homebrew m1 설치 방법 Homebrew 설치 하는이유? mac OS 에서 다양한 패키지를 설치하기 위해 맥주모양 아이콘이 심볼인 편리함을 도와주는 도구입니다. M1 맥북출시 이후 정상적으로 설치 되지 않아서 많은 맥유저들이 살짝 당황했었던 기억이 있는데!! homebrew 에서 설치하는 방법을 변경해서 지금은 정상적으로 설치되는것을 확인할수 있습니다. - 간편하고 빠릅니다. window 환경과 다르기 mac은 리눅스 기반이기 때문에 커맨드창에 명령어로 마우스나 클릭이벤트보다 쉽고 직관적으로 내가 원하는 프로그램 설치가 가능합니다. - window에서는 프로그램설치시 불필요한 기능들이 나도모르게 설치되는데 brew사용시 원하는 기능들만 설치가 됩니다. 체크박스같은건 없어요 - brew로 설치한 앱들은 brew list로 확인할수.. 2022. 8. 30.
Swagger UI Java 면접과제 Springboot SpringDoc 적용 API문서 자동화 Mock 데이터 샘플 만들기 API 문서 자동화 사용하는 이유? Swagger UI API를 설정하고 문서 자동화 하는 이유는 내가 만든 API 인터페이스 문서를 잘 정리해서 다른 개발자들과 사용하는 모든 사람들에게 편의성을 제공하고 어떤 동작을 하는지에 대한 부분을 잘 표현하기 위함이라고 생각하면 됩니다. 최근에 사용했던 목적을 정리해보면 면접 과제용 API 개발하고 표현하기 위해서 많은 시간을 사용한것 같고 프로젝트 진행하면서 프론트앤드와 개발 진행하고 있는데 일정이 빠듯하다보니 Mock 데이터를 구성해서 API를 제공하는 목적으로 사용하면서 필요한부분 Swagger UI API를 표현하는 몇가지 유형 그리고 간단하게 API호출하는 테스트 코드까지 만들어 보려고 합니다. Rest Doc을 많이 사용하나요? Swagger UI A.. 2022. 8. 29.
Java Functional Programming 스트림 설명 종류 그리고 고차함수 스트림 (Stream) Stream 은 Java 8버전부터 추가되었습니다. 아래 제공하는 여러가지 데이터를 처리할수 있는 기능들을 제공합니다. 상당히 편리하지만 제대로 알고써야 편리한 기능입니다. Filter, Sorted, Map, Match, Reduce, groupingBy 원시 타입을 위한 IntStream, LongStream 같은 원시타입을 다루는 스트림과 레퍼런스 타입(클래스, 일반 컬렉션 객첵)등을 다루는 일반 스트림이 존재합니다. 스트림은 아래와같이 일련의 작업등을 특정한 조건에 대입하여 원하는 데이터를 제어하는 기술입니다. 스트림을 가장 쉽게 설명한건데 우리가 데이터를 받을때 첨부터 원하는 데이터만 받을수도 있지만 위에 그림처럼 데이터(꽃게, 물고기, 해파리) 들 중에 원하는 물고기만 .. 2022. 8. 13.
Java Functional Programming 함수형 프로그래밍으로 가기위한 용어정리 불변객체, 일급함수, 고차함수, 커링 자바 프로그래밍중 함수형 프로그래밍을 아직 많이 접해보지 않았다면 아직은 우리에게 익숙한 변수 함수를 이용한 데이터 코드를 보여드리도록 하겠습니다. 굳이 약간 어그로가 될수도 있을만한 코드를 공유드립니다. 같은 기능에 대해서 "절차지향 코드", "객체지향 코드", "함수지향 코드" 3가지를 살펴 보도록 하겠습니다. 절차 지향 적인 코드 레벨 변수와 함수를 이용해서 데이터를 가공하는 부분에 초점을 두고있으며 데이터 가공 목적이 강하기 때문에 데이터가 정확하다면 중복된 코드레벨이 발생할수 있지만 단점으로는 길어질수 있는것 같습니다. 그리고 value가 변하게되면 코드들에 Static value들이 존재하기때문에 운영 리소스에 소비되는 시간이 많이 발생해서 피로도가 증가할것 같습니다. class Main { .. 2022. 8. 12.
Rest API 호출시 보일러 플레이트 코드를 리펙토링 하는 방법, 같은 모양의 양을 줄여보시오!! 내몸에 익숙함을 바꿔야하는데 ... 프로젝트를 진행하면서 Functional 형태의 구현을 해봐야되겠다는 생각을 늘하지만 갑자기 코딩 스타일을 바꿔나간다는것이 어렵다고 느껴지고 실제로도 익숙해지기까지 시간이 걸립니다. 사람은 누구나 익순한것을 좋아하는데 이유는 위험요소도 적고 자연스럽기 때문입니다. 내가 컨트롤 가능한상태를 구성하기 때문에 표현하기도 쉽다는 생각이 드는데 문제는 내가알고있는것보다 더 좋은 방법들은 계속 생겨나고 발전하고 생태계 전반적으로 적용하기도합니다. 자칫 잘못하면 서비스들은 성장하는데 내자신만 멈춰있는 느낌을 받을수도 있습니다. 머리로는 알고있고 새로운것을 습득해 나가야한다고 인지는 하지만 참 여러가지 이유로 멀리하게되는데 하나씩 내가 소화가능한 만큼씩 접근해 나가도록 하겠습니다. .. 2022. 8. 9.
MSA 아키텍처 프로젝트 빅뱅 방식으로 God Object 처리시 발생하는 Tell Dont ask 역시 회사 생활은 쉽지가 않다. 아!!!!!!!!! 너무너무 힘들고 지쳐서 그래도 이렇게 기록을 정리해두는게 좋은거같아서 모진 풍파에 대한 경험을 기록합니다. 시간이 지나서 이또한 웃으면서 예기할수 있는 프로젝트의 한부분으로 남았으면 하는 개인적인 소망입니다. 프로젝트의 이슈 MSA프로젝트는 블로그에서도 몇번 언급한적이 있는데 기존에 모놀리딕 한부분을 쪼개서 처리한다가 단순하게 예기하면 그런 방향이라 리소스가 처음보다 2~3배정도 된다 라고 예기할수 있을것 같습니다. 현실 프로젝트에서는 사실 이부분 또한 쉽지는 않다고 생각하고 모든 개발자들의 상황이 그런것 같습니다. MSA에서 진행하는 작업은 프론트에 데이터를 조회해서 제공해주는 부분을 하고있는데 안타까운 부분은 원천데이터를 처리하는데 있어서 내가 컨트.. 2022. 8. 8.
Springboot Rest API GetMapping 방식 @Setter 없이 @ParameterObject, @AllArgsConstructor 2가지로 @ModelAttribute 사용 하는 방법 안녕하세요 앵과장입니다. Rest API 개발하다보면 Get방식으로 구현하다가 생각보다 많은 파라메타를 전달해야하는 상황이 발생할수 있습니다. 이때 GET 방식 말고 POST로 방향을전환하게 되는데 나는 데이터를 조회할때는 GET Method를 사용하고 싶다 근데 파라메타를 일일이 나열하고싶지 않다 라고하시는 개발자 분들을 위해서 해당 내용을 정리하고자합니다. GET Method 구현시 아래처럼 파라메타가 많아졌을때 어찌해야하나요? 구현하다보니 swagger ui api 에 최대한 파라메타를 노출시키려고 하다보니 아래처럼 구성이 된것을 확인하게되었는데 swagger 에는 노출이 되었는데 코드레벨에서 봤을때는 나중에 파라메타 수정도 용이하지 않을꺼 같고 Controller class 코드가 가독성있는 형태.. 2022. 6. 23.
Rest Api 개발할때 @Setter 안쓰고 조회기능 만들기 Get Post 언제 상황에 맞게 써야하나요? 안녕하세요 앵과장입니다. 해당 내용은 개발하면서 지극히 주관적인 내용을 정리라는 내용이라는 점 참고하세요 Rest Api 개발할 때 Get Post 언제 별도로 사용해야 하나요? 최근 개발하는 프로젝트가 백앤드 개발이긴 한데 클라이언트 개발자가 사용하는 BFF레이어 개발을 주로 진행을 하다 보니 언제 Get을 쓰고 Post는 언제 사용해야 되는지에 대해서 고민을 하게 됩니다. Get 방식 고민을 했던 기능에 대해서 예시를 들어보도록 하겠습니다. 30개 정도의 메뉴가 비슷한 유형에 조회 기능입니다. Client에서 호출할 때 필수(Required) 또는 제외 가능(Option)입니다. 각기능에서 요청에 필요한 Request 파라미터는 1개~40개 정도까지 다양합니다. 초반 개발할 때는 Get방식으로 구현을.. 2022. 5. 26.
Type Boolean Integer to boolean integer 차이점 Java Wrapper형 과 Primitive형 언제 쓰면되나? 안녕하세요 앵과장입니다. 벌써 2022년 봄지나가네요 그만큼 프로젝트 일정도 중간을 향해 달려가는중입니다. 한참 코드리뷰를 진행하고 있다보니 알고 있지만 다시한번 또 제목에서 언급한것처럼 기본형(Wrapper) 그리고 참조형(Primitive) 사용하는방법 언제쓰면 좋은지 정리 하도록 하겠습니다. Wapper 타입 Primitive 타입 종류 Boolean boolean Integer integer Byte byte Short short Long long Float float Double double Character character Boxing UnBoxing 에 대해서 많은 부분 설명을 하고 있는데 사실 개발진행하면 박싱 언방식보다는 좀더 용도에 초점을 맞춰서 설명하는게 실용성에서 고민을 해보도록 .. 2022. 5. 3.
728x90