분류 전체보기283 DTO instantiate (feat. Lombok, GET/POST) 여러분들은 아마 DTO에 값이 어떻게 채워져서 컨트롤러 메서드 내부의 인스턴스화된 오브젝트로 넘어오는지 궁금하지않나요? 제가 완벽히는 아니더라도 아는만큼 써놓겠습니다 오브젝트(객체)가 메모리에 올라와서 접근 가능하고, 처리 가능하게 되는 것을 인스턴스화된 객체, 인스턴스라고 합니다. 그럼 DTO는 언제 인스턴스화가 될까요? 기본적으로 Get 방식과 Post 방식은 스프링에서 처리 방식이 다릅니다 (이 밑부터는 반..말체 ㅎ) 1. Get Request + DTO Get요청에서의 DTO들은 모두 다 QueryString으로 들어간다 QueryString이란 ?{Key}={Value}&[Key}={Value} 방식으로 들어간다는 것이다 어차피 스프링에서 DTO로 만들어도 포스트맨 등에서는 Query Para.. 2022. 3. 10. IntelliJ Honey Tips 1. 멀티모듈) 프로젝트의 정보들이 너무 길 때 나는 이 프로젝트의 - ~/ 같은 경로도 보고 싶지 않고, 실제로 개발하다보면 깔끔함을 추구하고싶다 그럴때에는 여기 화살표를 눌러주자 그리고 패키지를 선택해주면! 난 이정도도 깔끔해진거같다! 또 다른 옵션으로는 프로덕션 / 테스트로도 볼 수 있다 실제로 테스트 코드만 볼 수 있다! 매우 좋음 짱짱 2. 멀티모듈, MSA 방식일때 내가 쓰고 있는 DTO가 어디에 있는건지 찾고 싶을 때가 있다. 파일은 열려잇는데, 이게 어느 모듈, 위치에 있는지 알고 싶을때가 있다. 이럴때 이 옵션을 체크하면 된다 이걸 체크해주면 현재 열려있는 파일이 어느 위치에 있는지 열리게 된다 현재 열려있는 AuthController를 프로젝트 경로에서 어디있는지 바로 열어준다 현재 C.. 2022. 3. 6. Springboot local 환경에서 https 적용하기 라 말하고 사실 CA에서 인증받지 않은 짜가 인증서로...ㅎ 보통은 간단하게 하면 배포 전에 직접 인스턴스 서버에 들어가서 let's encrypt을 쓰던가 zeroSSL등 다른곳을 이용해서 인증서를 받을것이다 나는 keytool을 이용할것이다 자바폴더에 있기 때문에 윈도우는 bin 폴더에 환경 변수설정만, 맥은 기본적으로 잡혀있거나 아니면 .bashrc에다 추가해주면 된다 $> keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000 이름과 성을 입력하십시오. [Boki]: Boki 조직 단위 이름을 입력하십시오. [Boki]: Boki 조직 이름을 입력하십시오.. 2022. 3. 3. Springboot Security SpEL 을 활용한 @PreAuthorize SpEL(Spring Expression Language)란? Spring expression language는 보통 SpEL로 표기하며 구두로는 스프링 EL이라고 지칭한다 인증은 각각 서비스에서 정해지는 방법이 있을것이고 filter나 interceptor에서 거를 거라고 생각하고 api호출시의 권한체크, @PreAuhorize의 여러 방법들에 대해서 알아보려고 한다 0. 인증이 필요하지 않을 경우 @PreAuthorize("isAnonymous()") 익명이라는 뜻이다. 이 경우 인증을 거치지 않더라도 동작한다 @PreAuthorize("isAnonymous()") @GetMapping("/test0") public String test0() { return "test0"; } 1. 인증이 필요할 경.. 2022. 2. 26. AOP/(Rest)ControllerAdvice Log를 꾸며보자(feat. NPE 관리) 클릭하면 큰 화면으로 볼 수 있습니다 맨 위 쿼리는 P6Spy를 이용해서 보여진 쿼리다. 저거 아니면 log4jdbc를 이용해서 볼 수도 있다. 저건 의존성 추가하고 Config 설정만 몇개 해주면 되서 패스하겠다. 밑에 보면 AOP(Aspect)에서 컨트롤러, 서비스단에서의 정보들을 로깅하고있는 것을 볼 수 있다. 애초에 내가 맥북을 쓰기때문에 다른 로그들도 [날짜] [LEVEL] [숫자] - 정보로 색이 입혀져서 뽑히는데 원래는 하얀색만 나온다는 것을 명심하자~~!^-^ 저렇게 이뿌게 로그를 찍을라면 그냥 컬러를 주면서, 맞는 포인트컷, Around 설정과 jointPoint에서 정보를 가져오는정도만 코드를 작성해주면 된다. 추가로 커스텀예외에서 런타임으로 태워서 받는 Advice에서도 적용을 해 줄.. 2022. 2. 26. JetBrains Live Template 활용하기 열심히 개발을 하고 있으면서 개발에 대한 내용을 쓰기보다 IDE활용을 올리는거같은기분이다... 저번주에는 회사동기가 단축키 잘쓴다고 하던데 기분이 좋았다 > for(String x : str) { } 추가로 마이바티스.xml의 위에 값들이 기억 안날수도있기에..ㅎ xml파일에서 mybatis라고 치면 이정도만 입력되게 해놧다 참고로 어느 ide에서나 다 있다 vscode에도 있을꺼다 근데 커스텀하기는 불편하다고 들었다 그럼 추가로 끝! 책에 대한 후기나, 개발 핫픽스적인 내용을 좀 올려야겟다..ㅎ 블로깅 넘 어려벙 2022. 2. 19. Mac에서 백그라운드로 프로세서 실행해놓고 계속 쓰기(feat. jar) nohup java -jar port-8888.jar & lsof -i tcp:8888 음 사실 윈도우도 마찬가지긴한데.. & 명령어와 nohup을 이용하면 된다 자주 쓰일만한 어플리케이션 가볍게 계속 켜두고 싶어서 찾아보게 되었다 실행 내역은 nohup.out에 쌓이게 되어서 cat hohup.out으로 상태를 확인할 수 있다(동적이 아니고 실행 로그겠지만) 터미널이 꺼져도 실행되기 때문에 개꿀~ 어차피 집에서 쓰는거라 jar파일은 포트번호로 네이밍을 해줬다. 또 집에서만 쓸거라 /경로가 입력되면 request에서 서버포트 뽑아내서 localhost:port/swagger-ui/index.html로 리다이렉션 시켰다ㅋ 잘되는지 확인~ 예시 입력값은 프로그래머스의 '거리두기 확인하기'로 정했다 스웨거 확.. 2022. 2. 19. IntelliJ (fancy ≠ operator, 이음자) 활성 1. 비활성화 2. 활성화 차이점을 알겠나요? 심플하게 != 에서 =에서 / 가 추가되었고 / =가 /= 가 된 느낌이죠!! 아주 가끔 이런거를 물어보는 사람들이 있어서 포스팅을 하게되었습니다 설정을 들어가주세요 맥북 기준 Command + , 윈도우는 Ctrl + Alt + S Editor(에디터) -> Font(글꼴) 에 들어가시면 Enable ligatures(이음자 활성화)라고 있습니다 체크를 해주시면 됩니다!! 2022. 2. 6. 인텔리제이 프로젝트명 수정하기 1. 파일 - Project Structure(맥 기준: Cmd + ;) 프로젝트 이름 수정 2. settings.gradle안에서 rootProject.name = 수정 3. 새로 고침 2022. 1. 16. 차례 하루에 아이템3개씩 읽거나 포스팅을 할것같다 화이팅!! 2장 객체 생성과 파괴: 아이템 1~9 3장 모든 객체의 공통 메서드: 아이템10~14 4장 클래스와 인터페이스: 아이템15~25 5장 제네릭: 아이템26~33 6장 열거 타입과 애너테이션: 아이템34~41 7장 람다와 스트림: 아이템42~48 8장 메서드: 아이템49~56 9장 일반적인 프로그래밍 원칙: 아이템57~68 10장 예외: 아이템69~77 11장 동시성: 아이템78~84 12장 직렬화: 아이템85~90 2021. 9. 17. 1장: 들어가기 자바가 지원하는 타입(type; 자료형)은 인터페이스(interface), 클래스(class), 배열(array), 기본타입(primitie)까지 총 네 가지다. 애너테이션(annotation)은 인터페이스의 일종이며 열거 타입(enum)은 클래스의 일종이다. 네 가지 타입 중 처음 세 가지는 참조 타입(reference type)이라 한다. 즉, 클래스의 인스턴스와 배열은 객체(object)인 반면, 기본 타입 값은 그렇지 않다. 클래스의 멤버로는 필드(field), 메서드(method), 멤버 클래스, 멤버 인터페이스가 있다. 메서드 시그니처는 메서드 이름과 입력 매개변수(parameter)의 타입드로 이뤄진다(반환값의 타입은 시그니처에 포함되지 않는다) 이 책은 상속(inheritance)을 서브클.. 2021. 9. 17. 1장: 깨끗한 코드 코드가 존재하리라 코드는 더 이상 문제가 아니라고, 모델이나 요구사항에 집중해야 한다는 사람도 있을 것이다. 코드는 사라질 가망은 전혀 없다! 왜? 코드는 요구사항을 상세히 표현하는 수단이니까! 어느 수준에 이르면 코드의 도움 없이 요구사항을 상세하게 표현하기란 불가능하다. 추상화도 불가능하다. 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다. 코드는 요구사항을 표현하는 언어라는 사실을 명심한다. 요구사항에 더욱 가까운 언어를 만들 수도 있고, 요구사항에서 정형 구조를 뽑아내는 도구를 만들 수도 있다. 하지만 어느 순간에는 정밀한 표현이 필요하다. 그 필요성을 없앨 방법은 없다. 그러므로 코드는 항상 존재한다! 나쁜 코드 프로그래머라.. 2021. 9. 17. 6장: 객체 지도 유일하게 변하지 않는 것은 모든 것이 변한다는 사실뿐이다. - 헤라클레이토스(Heraclitus of Ephesus) 여행 중에 다른 마을로 이동해야 하는데 길을 모른다고 가정해 보자. 이 경우 사람들은 다음의 두 가지 방법 중 하나를 이용해 길을 찾는다. 1. 지나가는 사람에게 마을까지 가는 길을 직접 물어본다 2. 지도에 표시된 길을 따라가는 방법 길을 찾는 입장에서는 어떤 방법을 사용하건 상관없이 목적지로 이동할 수 있겠지만 방법에 따라 길을 찾는 과정과 난이도면에서는 차이가 난다. 첫 번째 방법은 '기능적이고 해결책 지향적인 접근법(functional, solution-directed approach)'이다. 길을 가르쳐 주는 사람은 다른 마을까지 가는 경로를 단계별로 상세히 설명해야 한다. 사람.. 2021. 9. 12. 5장: 책임과 메시지 책은 이미 다 읽었고 요즘 최범균님이 저서인 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴 책을 보고 있는데, 앞부분의 객체지향 내용이 여기 객체지향의 사실과 오해에서 나오는 내용들이다!! 그럼 시작 의도는 "메시징"이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 모듈이 어떻게 커뮤니케이션하는가에 달려 있다. - 앨런 케이(Kay 1998) 책임감 분산(diffusion of responsibility): 사건에 대한 목격자가 많으면 많을수록 개인이 느끼는 책임감은 적어진다. 대부분의 사람들은 자신에게 명확한 책임이 없는 경우에는 어떤 사건에 대한 일을 타인의 책임으로 간주해버린다. 그에 반해 이를 보고할 책임이 명확하게 주어진 경우에는 신속하게 위기.. 2021. 9. 10. 4장: 역할, 책임, 협력 개인적으로 정말 중요한 장이라 생각한다...! 이미 책을 다 읽고나서 B-logging중이지만 RDD, 객체지향 설계의 핵심이 들어있는 파트라고 말할 수 있다.(블로그 주인 생각) 우리 모두를 합친 것보다 더 현명한 사람은 없다. - 켄 블랜차드(Ken Blanchard) 인간은 어떤 본질적인 특성을 지니고 있느냐가 아니라 어떤 상황에 처해 있느냐가 인간의 행동을 결정한다. 즉, 각 개인이 처해 있는 정황 또는 문맥(context)이 인간의 행동 방식을 결정한다는 것이다. 여기서 인간의 행동을 결정하는 문맥은 타인과의 협력이다. 협력이라는 문맥을 무시한 채 각 개인의 반응을 독립적으로 관찰하는 것은 무의미하다. 협력에 얼마나 적절한지에 따라 행동의 적합성이 결정되며 협력이라는 문맥이 인간의 행동 방식을 .. 2021. 8. 18. 3장: 타입과 추상화 일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는 것에 관한 모든 것이라는 것을 깨닫고 나면 (훌륭한) 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은 추상화를 정확하게 다루는 능력이라는 것이 명확해진다. - 키스 데블린(Keith Devlin)[Devlin 2003] * 스팅모어가 디자인한 1927년 런던 지하철 지도 * 해리 벡이 디자인한 1933년의 지하철 노선도 해리 벡은 지하철을 이용하는 승객들을 면밀하게 관찰한 후 승객이 꼭 알아야 하는 사실만 정확하게 표현하고 몰라도 되는 정보는 무시함으로써 이해하기 쉽고 단순하며 목적에 부합하는 지하철 노선도를 창조해 낼 수 있었다. 해리 백의 가장 위대한 업적은 지하철 노선을 추상화 한것이다. 추상화를 통한 복잡성 극복 해리 벡의 지.. 2021. 8. 16. 내가 그린 그림 너무나 똑같쥬? (양심 ㅇㄷ??) 2021. 8. 13. IntelliJ로 코딩테스트를 하는 분들을 위한 플러그인 보이시나요!? 왼쪽에 코드 치는 부분과 별개로 우측에 문제 부분이 나온것을... Embedded Web Browser라는 플러그인입니다 집에서 듀얼 모니터로 한다면 상관이 없지만, 카페에 노트북 하나 들고가서 코딩하시는분들은 알트탭이 월마나 귀찮은지, 특히 코테문제같은거를 풀때 아실거에요 인텔리제이 설정창에서 플러그인 탭을 누르시고 web browser를 검색하시면 embedded web browser가 나옵니다! 이거를 설치하면 우측 탭에 embedded web browser라는게 생깁니다 주소를 적는 쪽에 붙여넣기를 하고 Go를 누르면 이동됩니다 참고로 아쉬운점은 브라우저 내부에서 뒤로가기가 안된다는 점입니다 저는 혹시라도 보안을 생각해서 백준 비밀번호를 쉬운거로 바꾸고 저쪽에서 로그인 해서 제출한다.. 2021. 8. 8. 2장: 이상한 나라의 객체 객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다. - 레베카 워프스브록(Rebecca Wirfs-Borck)[Wirfs-Brock 1990] 객체지향 패러다임은 현실 세계의 존재를 소프트웨어 세계의 객체로 바꾸는 것이다. 그리고 이것은 좋은 방법이며 둘 다 일치한다 => 오해 객체지향 패러다임의 목적은 현실 세계를 모방하는 것이 아니라 현실 세계를 기반으로 새로운 세계를 창조하는 것이다 => 사실 객체지향과 인지 능력 인간은 본능적으로 세상을 독립적이고 식별 가능한 객체의 집합으로 바라본다. 많은 사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이.. 2021. 8. 6. 1장: 협력하는 객체들의 공동체 시너지를 생각하라. 전체는 부분의 합보다 크다. - 스티븐 코비(Stephen R. Covey) 객체지향이라 불리는 새로운 세상의 문을 연 대부분의 사람들은 "객체지향이란 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임"이라는 설명과 마주하게 된다. => 오해 객체지향 소프트웨어는 실세계의 투영이며, 객체란 현실 세계에 존재하는 사물에 대한 추상화 => 오해 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. => 사실 소프트웨어 시스템이 해결하려고 하는 실재는 잘해봐야 먼 친척밖에는 되지 않는다 - 버트란드 마이어(Bertrand Meyer) 실세계에 대한 비유가 객체지향의 다양한 측면을 이해하고 학습하는데 매우 효과적이다. => 사실 객체를 스스로 생각하.. 2021. 8. 2. 이전 1 ··· 10 11 12 13 14 15 다음