Photopic) 스위프 8기 단기 프로젝트 후기, 뽀또픽

🔔 프로젝트 참여 과정 🔔 프로젝트 소개 참여 계기 이전 직장에서 레거시한 경험만 있다 보니 스킬업을 하기 위해, 내 레벨이 시장에서 어느 정도인지 측정하기 위해 참가했다. 스위프 8기 프로그램은 서류접수와 참가비만 있으면 됐다. 팀 빌딩 때 프로필을 보니 대부분이 20대이며, 취준생과 신입들이 많았다. 프로젝트 기간은 팀 빌딩기간부터 마지막 발표하는 날까지 1/15 ~ 3/15, 두달간 진행했다. 프로젝트와 팀원 우리 팀은 기획1, 디자이너1, 프론트2, 백엔드2(나 포함)로 구성했다. 스위프에서 팀 빌딩을 위해 각 프로필을 노션 페이지를 공유해줬는데 거기서 지금의 팀원들을 만났다. 프로젝트 아이디어는 여러 의견이 있었지만 “SNS에 어떤 사진을 올리는게 좋을까?“라는 의문을 해결하기 위해 사진을 투표하고 공유할 수 있는 “뽀또픽"이라는 서비스를 만들었다. ...

March 31, 2025 21:20 · 2 min · 357 words · nakji

4D4cat) 이 어노테이션은 왜 쓰는걸까?

🔔 어노테이션 종류와 용도 RequiredArgsConstructor Lombok 라이브러리에서 제공하는 어노테이션으로, 클래스 내의 final 필드나 @NonNull 어노테이션이 붙은 필드들을 초기화하는 생성자를 자동으로 생성해준다. 보일러 플레이트 코드를 줄여준다는 것에 이점이 있다. @Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; private final EmailService emailService; // Lombok이 아래와 같은 생성자를 자동으로 생성해줍니다. // public UserService(UserRepository userRepository, EmailService emailService) { // this.userRepository = userRepository; // this.emailService = emailService; // } // 서비스 로직... } Autowired와 차이점 실제로 기능은 동일하지만, 코드량의 차이가 있다. ...

January 23, 2025 13:33 · 3 min · 556 words · nakji

4D4cat) 네이버 로그인 연동을 위한 MVC 테스트 1

🔔 MVC Test 코드 작성 네이버 연동 페이지에 접근이 잘 되는가? LoginController.java @Controller @RequiredArgsConstructor @RequestMapping("/login") public class LoginController { private final NaverLoginService naverLoginService; @GetMapping("/naver") public void naverLogin(HttpServletResponse response) throws IOException { response.sendRedirect(naverLoginService.getNaverOauth2LoginUrl()); } } naverLogin {URL}/login/naver로 접근하면 Naver 로그인 인증을 위한 페이지로 이동된다. 리다이렉트 URL은 naverLoginService에서 받는다. NaverLoginService.java @Service @RequiredArgsConstructor public class NaverLoginService { private static final String BASE_URL = "https://nid.naver.com/oauth2.0"; private final AppProperties app; private final ThirdPartyProperties secrets; public String getNaverOauth2LoginUrl() { String authorizeUrl = BASE_URL+"/authorize"; String callbackUrl = getServiceUrl()+"/login/naver/callback"; return UriComponentsBuilder .fromHttpUrl(authorizeUrl) .queryParam("response_type", "code") .queryParam("client_id", secrets.naver().naverId()) .queryParam("redirect_uri", callbackUrl) .queryParam("state", "random") .toUriString(); } public String getServiceUrl() { return app.serviceUrl(); } } AppProperties 현재는 도메인 URL만 세팅되어 있다. ...

December 23, 2024 22:33 · 2 min · 303 words · nakji

4D4cat) 프로젝트 개선

🔔 프로젝트 소개 🔔 프로젝트 개선 과정 프로젝트 소개 4d4cat 의미 4d4cat 프로젝트는 내가 구현해보고 싶은 기능을 다 넣어서 원하는 때에 사용해보고자 만든 프로젝트이다. 이는 만화 도라에몽에서 나오는 4차원 주머니에서 여러 가지 물건을 꺼내는 것처럼 **4차원(4th-Dimension), 주머니(pocket)**를 변형해서 만든 명칭이다. 목적 구현하고 싶은 기능은 크게 데이터 수집과 서드 파티 사용이다. 데이터 수집 현재 구글 트렌드 데이터 기반으로 일별 인기 검색어를 저장 노출 기간은 최근 한달 이내의 데이터 구글 트렌드 API 관련 오픈소스 사용 인스타그램의 키워드도 수집하려고 했으나 최근에 지원 종료(예정) 서드 파티 ...

December 12, 2024 15:45 · 2 min · 227 words · nakji