다음날 쓰는 늦은 TIL이다. 이 날은 엄청 여유롭게 공부하다가 늦은 시간 피드백 받고 부랴부랴 다시 공부했던 날이다 ㅎ.. 1. Spring MVC 1. DispatcherServlet ↔ Handlermapping: 요청을 받은 프론트 컨트롤러가 Handlermapping를 통해 어떤 컨트롤러의 어떤 함수를 써야하는지 알게된다 (Handlermapping에 api path와 컨트롤러 함수가 매핑되어있음) 2. DispatcherServlet ↔ Controller: 해당하는 컨트롤러에 클라이언트의 요청(+Model)을 넘겨주어 컨트롤러는 그 요청을 처리하여 Model과 View 데이터를 넘겨준다 3. DispatcherServlet ↔ ViewResolver: 전달받은 Model과 View를 View..
1. Spring 개인과제에서 전에 하기로 했던 계층 분리와 responseDto 관련 코드를 작성하여 오늘 AWD RDS와 연결하고, 배포까지 진행했다 responseDto는 하나의 클래스 안에 static inner class 세개를 담아서 각각 article list, article, null id 관련 에러 응답을 만들어 프론트에 보내지기 전에 감싸주는 역할을 주었다 이런식으로 중첩 클래스로 처리했을 때 생기는 문제가 있을 지 물어볼 계획이다 enum은 처리할 에러 상황이 너무나 적어서 쓰지 않았지만, 공부가 더 필요하긴 할 것이고, 확장성있게 짜는 것이 목표였다면 enum을 적용했어야 할 것 같다 팀과제도 미팅해서 진행했는데, JPA의 필요성을 다시 한번 알게 되었고, DNS 와 통신하는 것의 ..
금요일부터 시작한 주특기 주차에서 전 주차에 비해 갑자기 배우는 내용이 많아졌다보니 정신없으면서도 재밌는 것 같다. 개인과제로 스프링을 활용해 기본 CRUD 기능을 가진 게시판을 만드는 것, 팀 과제로 스프링을 배우면서 중요한 키워드를 정리하는 것을 할당받았다. 이미 알고 있는 내용과 주어진 학습 자료를 십분 활용해 일단 개인과제를 만들기 시작해서 어제(13일)에 기능 구현을 마쳤고, 기술 매니저님 피드백 이후 리팩토링하는 절차를 밟고 있다. 피드백 받기를 잘한 것 같다. 강의나 자료를 쭉 소화하고 만들기보다는 뭔가 그냥 무작정 만들어보고 싶었다. 빠르게 완성하고 강의자료에서 주어진 예제들을 더 연습하면서 스프링에 익숙해지면 될 것 같다. 1. OOP 기존의 절차 지향적인 개발 방식과는 다르게, 서로 관..
1. JAVA 어제부터 진행하던 개인 과제를 완성은 했다 일단 만들고 보자는 생각이 너무 강했는지, 만들때는 괜찮다고 생각했는데 피드백을 받으면서 코드를 다시 보니 꽤 고칠게 많아 보였다 컨트롤러가 서비스와 리포지토리 계층을 모두 주입 받고 있었고, 응답할 때의 로직도 너무 복잡한게 아닌가 싶었다 매니저님도 읽기 어려운 부분이 있다고 하시기도 했고, response 관련 의견이 가장 많으셨다 많은 부분을 구글링을 통해서 배웠는데, @JSONIgnore: 입력받는 비밀번호를 저장하고 응답에는 포함하지 않는 것 스프링 데이터 JPA로 내가 커스터마이징한 findAllByOrderByIdDesc() 메소드를 활용 @RestControllerAdvice와 @ExceptionHandler를 이용한 에러 처리 제네..
1. Spring 로그인 기능은 없는 CRUD 가능한 게시판을 만드는 것이 개인과제로 주어져서, 아는 지식을 활용해 바로 만들기부터 시작했다 일단은 리포지토리를 내장된 해시맵을 활용해 최대한 객체지향적으로 만들고 작동하는 것을 확인한 후 최종적으로 Mysql로 갈아끼울 계획을 세웠다 ui없이 api 테스트기를 통해 json형태로만 데이터를 주고받는 것이기 때문에 API에 모두 @Responsebody를 붙혔으며, id값으로 동적 라우팅을 구현하기 위해 메소드 매개변수에 @PathVariable 설정과, POST 요청 시 http body로 전송된 데이터를 받기위해 메소드 매개변수에 @RequestBody를 붙혀줬다 컨트롤러 관련한 것은 구글링으로 많이 알 수 있었다 @GetMapping() @Respon..
1. TIL/WIL 세션 참석할까 고민하다 들어갔는데, 좀 더 나은 TIL/WIL을 쓸 수 있는 계기가 되어서 좋았다 지금은 '어떤 것을 했고, 잘 안된 것은 무엇이고, 잘 된 것은 무엇인지, 느낀점 간략하게' 이 정도로 작성하고 있는데, 앞으로 시도해볼 것과 이를 바탕으로 나중에 시도해보고 나서 어떤 결과가 있었는지 추가로 넣으면 좋을 것 같고, 기술적인 내용이나 실제 코드를 첨부하면서 좀 더 자세히 작성하는 것도 더 많아지면 좋을 것 같다. 꼭 글이 아니더라도 음성이나 그림 등 다양한 방식으로 표현할 수도 있겠다 싶었다. 면접 팁: 두괄식, 명확한 기술용어 사용으로 불필요한 설명 없애기 공부 팁: 문제를 만나면 먼저 이를 해결할 수 있는 방법들을 적당히 추린 후에 하나씩 만만한 것 부터 시도하기 여러..
1. JAVA 과제의 요구사항에 맞게 나름대로 필드와 메소드를 구성해서 완성했다 상속을 사용했었는데, 애초에 설계한대로 자식 클래스별로 같은 필드라도 디폴트 값이 달라 각각 새롭게 정의하여 진행했을 때는 상속의 의미가 크지 않은 것으로 결론냈다 중복 필드 매번 재정의 getter/setter 메소드 쓸데없이 중복 changeGas 메소드 쓸데없이 중복 이후에 슈퍼클래스를 추상화하면서 공통 기능에 대한 처리를 해보고, 최종적으로 인스턴스 생성할 때 디폴트 값(요금, 최대 승객 수, 속도)를 입력하게 했을 때 상속의 효과가 가장 큰 것으로 보였다 원래 대략 알고있던 인터페이스와 추상클래스의 용도나 차이에 대해 더 알게 되었다 추상클래스: 미완성 설계도, 다중상속 불가 -> 자식에 공통기능 전파 인터페이스: ..
1. JAVA 오늘은 모든 시간을 spring 과제에 쏟았다 대중교통이라는 부모 클래스를 생성하고, 이를 상속받는 버스와 택시 클래스는 만드는 과제였는데, 필드를 오버라이딩 하는 것과 관련해서 뭔가 잘 풀리지 않는 느낌이었다 과제의 요구사항은 충분히 맞출 수 있을 것 같은데, 바람직하게 코드를 구성해서 완성해가고 있는 것인지에 대한 의문이 든다 나의 판단으로는 객체 생성할 때 사용자가 필드에 해당하는 값들을 지정해서 넣는 형태가 아니고 상당 수의 필드값의 디폴트 값이 자식 클래스끼리 차이가 있다보니, 일단 자식 클래스에서 그냥 새롭게 필드를 정의해서 덮어쓰는 식으로 진행했다 그 과정에서 배운 것: 자식 클래스에서 덮어쓴 필드의 getter setter 메소드는 오버라이딩 해야 원하는 결과가 나온다 부모 ..
1. JAVA 정렬 관련 compareTo 사용 (내 기준을 만들어서 정렬하는 방법) String.charAt(index) 정규표현식 String + int -> String (int가 문자열로 변환) 예) "a" + 1 -> "a1" char + int -> int (char이 해당하는 아스키코드의 숫자형으로 변환) 예) 'a' + 1 -> 98 배열과 문자열 조작 관련해서 조금씩 익숙해져가고 있긴한데, 이게 과연 스프링을 사용하는데 유용할지 의문이다 멘토님이 이번주 과제를 다하면, 더 크게 확장하여 객체지향적으로 개발해보면 언어에 대한 이해가 매우 좋아질 것이라고 조언 주셨다 또한 이후 주특기 주차, 프로젝트 주차가 진행되어도 꾸준하게 알고리즘을 놓지 않고 하루 한 문제 씩이라도 풀어보라고 해주셨다 ..
첫 주가 마무리 되었다. 바쁜 미니 프로젝트 4일과 비교적 널널한 기초 프로그래밍 주차 중 이틀을 소화한 상황이다. 프로젝트 기간 중에는 프론트와 백엔드 양쪽 코드를 모두 작성하고 버그 잡아내고 하면서 정신이 없었다. 가장 크게 배운 점은 TIL에서도 계속 언급했던 협업 관련 부분이다. 머리로만 알고 있던 협업의 어려움을 처음으로 제대로 느꼈던 경험이었고, 앞으로 이를 양분삼아 더욱 성장할 것이다. 기초 프로그래밍은 캠프 직전에 미리 예습하고 왔던 자바 언어에 좀 더 익숙해지는 과정이라고 받아들이고 있다. 파이썬과 비교할 수 없을 정도로 작성자가 불편하지만, 분명한 장점이 있다고 생각하고, 앞으로 주특기 배우고 프로젝트 할 때 도움될 것이라고 믿으면서 공부하고 있다. 아래는 이번주 키워드이다. 1. JW..