sosow0212의 등록된 링크

키자드에 등록된 총 885개의 포스트를 확인하실 수 있습니다.

Naver Blog

[개발 일기 #26] 1월의 개발 공부와 우테코 영어 이름, 창업 지원

23년도 1월이 되고나서는 우아한테크코스에 들어가기 위한 준비를 많이 했습니다. 자바 클린코드, 디자인 패턴 공부, 프로젝트, CS공부, 코테 준비 이렇게 5가지를 준비했습니다. 먼저 클린코드와 디자인 패턴 같은 경우는 이펙티브 자바와 구글을 통해서 따로 공부를 하는 중이고 CS 같은 경우는 전공으로 많이 열리지가 않아서 따로 네트워크, 운영체제, 컴퓨터 구조, 아키텍쳐를 책으로 공부하는 중입니다. 프로젝트는 작년부터 만들고있는 커뮤니티를 리팩토링과 기능 추가하는 과정에 있습니다. 아마 돌아오는 2월 안에는 많은 기능을 다듬고 배포하지 않을까 생각하고 있습니다. 코딩테스트 같은 경우 프로그래머스를 풀려고 했으나, 조금 더 문제를 많이 풀어보고 진행하는게 나을 것 같아서 현재는 백준 사이트에서 유형별로 가능하면 클린코드로 풀고있습니다. 우테코에 들어가기 전에 사용할 영어 닉네임을 정하라고 메일이 왔습니다. 초등학교 1학년 때부터 사용하던 Jay를 쓰기로 했습니다! 하지만, 3기에 이미

Naver Blog

[자바] 프로그래머스 - 개인정보 수집 유효기간 (2023 카카오 블라인드) 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/150370 코딩테스트 연습 - 개인정보 수집 유효기간 고객의 약관 동의를 얻어서 수집된 1~ n 번으로 분류되는 개인정보 n 개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야... school.programmers.co.kr 2023년도 카카오 블라인드 채용 코딩테스트 문제입니다. 프로그래머스 기준 현재 570명 풀이 완료 및 27%의 정답률을 기록하고 있습니다. 아마도

Naver Blog

스프링 서버를 Docker, Docker-compose로 멋들어지게 띄워보기

안녕하세요. Docker와 Docker compose는 개발을 하다 언젠가 쓰게 됩니다,. 한 번 쓰면 너무 편해서 이전으로 돌아가기 힘든 것 같습니다. 저는 처음에 Docker에 대한 개념도 잘 몰랐고, 왜 쓰는지에 대해도 몰랐습니다. 따라서 이번 글을 보시고 프로젝트에 적용하시기 전에 도커에 대한 개념은 유튜브나 다른 블로그 포스팅을 보고 참고하고 보시는 것을 추천드립니다. 처음에 저 같은 경우는 도커 세팅에 관한 글은 많지만, 실제로 너무 두루뭉실한 얘기들이 많아서 따라하기가 너무 힘들었습니다. 그래서 노드 개발하는 친구에게 많이 물어보고 귀찮게 했습니다. 오늘 글을 통해서 우리가 배워볼 건 다음과 같습니다. Docker, Docker-compose, .env 민감 정보 감추기, yml 설정하기 서버 띄워보기 Docker, Docker-compose, .env 민감 정보 감추기, yml 설정하기 먼저 Docker, Docker-compose.yml 파일을 세팅해줘야합니다. 이

Naver Blog

[우아한테크코스 5기] 사전 준비 메일과 서울 살이 시작!

오늘은 우아한테크코스 사전 준비 메일이 도착했습니다. 위와 같이 교육 시작일에 대한 안내와 준비 사항에 대해 메일이 왔습니다. 이제 합격했다는게 정말 실감이 납니다c️ 일단 영어 이름을 얼른 생각해봐야하는데 정말 고민입니다. 앞으로도 쭉 쓸 것 같아서 약 2주동안 친구들과 함께 신중히 생각해봐야겠습니다! 해당 되는 사람들은 국민내일배움 카드를 통해서 K-digital 신청을 해야해서 오늘 신청을 했습니다. 마지막으로 학교에 전화해서 휴학 신청도 했습니다! 이렇게 우테코 관련 돼서는 아직 다 끝내지는 못했지만 얼추 정리가 됐습니다. 우테코 활동을 하면 일과가 끝나고도 늦게까지 공부할 생각이고, 통학에 시간을 뺏기기 싫어서 자취를 해야겠다고 생각했습니다. 그래서 가급적 선릉역 근처로 잡으려고 오늘 부동산에 갔습니다. 선릉역과 가까운 좋은 매물은 금방 빠지고, 매물 자체가 많이 없었습니다. 그래도 다행히 운 좋게 마지막 방을 봤는데 선릉역에서 5분거리이고, 거의 풀 옵션에 상권이 너무 마

Naver Blog

[자바] 백준 13023 : ABCDE / 그래프, DFS 풀이

https://www.acmicpc.net/problem/13023 13023번: ABCDE 문제 BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다. 오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다. A는 B와 친구다. B는 C와 친구다. C는 D와 친구다. D는 E와 친구다. 위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다. 둘째 줄부터 M개의 줄에는 정수 a... www.acmicpc.net 골드5 난이도의 정답률 약 29% 난이도의 문제입니다. 그래프를 구현한 후 dfs로 탐색하는 결합 유형입니다. 문제 분석 친구 관계를 구하는 문제입니다. 문제에서 주어진 예시를 통해 문제를 간단하게 풀이하자면 다음과 같습니다. 문

Naver Blog

[자바] 백준 2573 : 빙산 / dfs, bfs 풀이 (비슷한 문제)

https://www.acmicpc.net/problem/2573 2573번: 빙산 문제 지구 온난화로 인하여 북극의 빙산이 녹고 있다. 빙산을 그림 1과 같이 2차원 배열에 표시한다고 하자. 빙산의 각 부분별 높이 정보는 배열의 각 칸에 양의 정수로 저장된다. 빙산 이외의 바다에 해당되는 칸에는 0이 저장된다. 그림 1에서 빈칸은 모두 0으로 채워져 있다고 생각한다. 2 4 5 3 3 2 5 2 7 6 2 4 그림 1. 행의 개수가 5이고 열의 개수가 7인 2차원 배열에 저장된 빙산의 높이 정보 빙산의 높이는 바닷물에 많이 접해있는 부분에서 더 빨리 줄어들기 때문에, 배열에서 빙산의 각 부분에 해당되는 칸에 있는... www.acmicpc.net 골드4 난이도, 정답률 26% 문제입니다. 문제 자체는 쉬우나, 문제를 해결하기 위해서 해야 하는게 많아서 정답률이 낮아보입니다. 이 문제는 두 가지의 문제를 복합시킨 느낌입니다. 풀이 후 밑에 어떤 문제인지 적어두겠습니다! 문제 분석 이

Naver Blog

스프링부트 커뮤니티 API 서버 만들기 #18 Redis를 이용해서 포인트 랭킹 구현하기 (Sorted Set = ZSet)

아직 배우는 단계라서 정확하지 않을 수 있습니다! 피드백 해주시면 참고하겠습니다 :) 추후에 구글링 및 더 많은 공부를 더 진행한 후 깨끗히 리팩토링 진행하도록 하겠습니다. https://github.com/sosow0212 sosow0212 - Overview sosow0212 has 70 repositories available. Follow their code on GitHub. github.com 오늘은 Redis를 이용해서 포인트 랭킹을 구현했습니다. Redis를 단순 저장의 목적으로 사용한 것 같아서 마음에 쏙 들지는 않지만 일단 공부한다고 생각하고 진행해보았습니다. 먼저 랭킹 기획 방향은 이렇게 생각했습니다. 1. 처음에 회원가입을 한다면, Point 도메인을 만들고 MySQL 데이터베이스에 포인트 저장하고 Redis ZSet에 삽입 2. 포인트 조회시 Redis를 통해 빠르게 조회하고 업데이트시에도 마찬가지로 처리 3. 주기적으로 MySQL에 백업 이렇게 생각했는데 2

Naver Blog

2023년 꼬름이 삼형제 4박5일 일본 도쿄 즉흥 여행기

스미마셍? 일본에서 가장 많이 사용한 단어입니다. 오늘은 2022.12.30 ~ 2023.01.02 일본 도쿄 여행기를 남겨보겠습니다. 역시 이번에도 주인공은 저 포함 베스트후렌도 승범이(타칭 범죄도시 악역 박지환 배우님), 태민이(자칭 조규성 선수)입니다. 연말에 좋은 일이 생겨서 가벼운 마음으로 출발했습니다. (사실 공항에서 짐 때문에 태민이 캐리어에 짐을 다 넣어서 진짜 가볍게 감) 저희는 일단 숙소와 비행기만 예약하고 아무런 계획도 세우지 않고 갔습니다. 저는 슈퍼 계획러라 마음이 좋지는 않았지만, 살면서 한 번쯤 이래보고 싶어서 도전해봤습니다. 2022.12.30 (일본 도착) 살 쪄서 도라에몽 손이 됐네요. 비행기가 오전 8시 30분 출발인데, 탑승 전 카운터에서 짐 때문에 체크인 시간이 조금 걸렸습니다. 항상 해외 여행 갈 땐 1시간 30분에서 2시간 일찍 공항에 도착하는게 좋을 것 같습니다. 저희의 숙소는 타카다노바바에 ELM 숙소입니다. 신주쿠, 하라주쿠, 시부야 근

Naver Blog

[자바] 프로그래머스 : 큰 수 만들기 (그리디 풀이) 접근 방법 및 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 2... school.programmers.co.kr Level 2, 그리디 문제입니다. 문제 분석 문제 자체는 이해하기 되게 간단합니다. 예시 하나를 보면 바로 이해할 수 있습니다. number = "12312

Naver Blog

[우아한테크코스 5기] 백엔드 최종 합격 후기와 자소서 그리고 모든 과정에 대해서

정말 길고 힘들었던 우아한테크코스 선발 과정이 끝이 났습니다. 아직도 백엔드 부분 합격이라는게 어안이 벙벙하고 믿기지가 않네요. 작년에 누군가의 글을 보면서 꼭 가고 싶다라고 생각했는데, 그 당시 많이 해둔 것도 없고 본격적으로 어떤 분야로 취업을 할지 고민을 할 때였습니다. 다행히도 좋은 친구들과, 좋은 인연들로 인해서 제대로 된 개발과 함께 많은 활동을 하면서 실력과 스스로를 어필할 수 있는 쓸 것들이 생겼습니다. 누군가 이 글을 보고 작년의 저와 같은 생각을 할 수 있을 거라고 생각합니다. 저는 공부를 하면서 배워도 배워도 끝이 없어서 끝이 없는 터널을 가는 것 같고 항상 힘들었습니다. 모든 분들이 이렇다고 생각하기에 조금이나마 도움이 됐으면 좋겠습니다. 대부분은 취준 과정에서 우테코 지원을 하실텐데, 후기 글을 통해서 하시는 것에 있어서 조금이나마 도움이 될 수 있으면 좋겠습니다! 우테코에 떨어지더라도, 프리코스 과정동안 정말 기본기를 배울 수 있으니 정말 좋은 프로그램이라고

Naver Blog

[개발 일기 #25] 12월의 개발 공부와 연말

22년 12월 31일 기준으로 지난1년동안 하루도 빠짐없이 공부를 해왔습니다 내년에도 1일 1 커밋 활동으로 실력도 키우고 꾸준히 진행해 보겠습니다. 이번 달에는 먼저 종강을 맞이했습니다. 12월 초에는 우테코 최종 코테 공부를 하고 합격을 기다리느라 공부를 어영부영했습니다. 시험공부도 하느라 아무래도 알고리즘도 많이 풀지 못했고, 유의미한 공부를 많이 하지는 못한 것 같습니다. 그래도 우아한테크코스에 합격한 것에 너무 만족했습니다. 합격하고 나서는 기존 레거시 프로젝트를 갈아엎었습니다. 기존 프로젝트는 더티코드와 오로지 기능 구현만 했는데, 지금 봤을 때 효율적으로 좋지도 않은 코드였고 하나를 바꾸면 뭉터기로 다 고쳐줘야 하는 문제점이 있었습니다. 그래서 배운 것들을 바탕으로 도메인 메서드로 최대한 분리하고 클린코드 작업을 했습니다. 이제 1월에는 무엇을 공부해야 할까 많이 생각해 봤는데 'CS, 알고리즘, 프로젝트 리팩토링 및 기능 추가'이 세 가지를 골고루 진행할 예정입니다.

Naver Blog

스프링부트 커뮤니티 API 서버 만들기 #17 기본 키 타입, 네이밍 리팩토링 작업

안녕하세요. 신년의 첫 포스팅이네요! 다들 새해 복 많이 받으세요. 오늘도 커뮤니티 프로젝트 리팩토링에 대한 내용을 다룹니다. 레거시 프로젝트를 리팩토링 하는 것이 이렇게 힘든 일인줄 몰랐습니다 ㅠㅠ 이번 경험을 바탕으로 앞으로는 "처음부터 꼼꼼한 설계와 클린코드를 이용해서 프로젝트를 제작해야겠다."라고 생각했습니다. 오늘은 세 가지 작업을 했습니다. 도메인 기본 키 타입 리팩토링 작업 User 도메인 리네이밍 README.md 가독성 좋게 수정하기 1. 도메인 기본 키 타입 리팩토링 작업 현재 레거시 프로젝트의 도메인 기본 키 타입은 전부 int형으로 만들었습니다. 사실 int형으로 모두 기본 키 처리를 해도 상관은 없겠지만, 만약 프로젝트의 규모가 커지고 트래픽과 데이터가 많아진다면 데이터베이스에 수 많은 데이터가 쌓이게 될 것입니다. int 타입은 약 21억개의 데이터밖에 다룰 수 없습니다. 이해하기 쉽게 배달의민족 어플을 만들었다고 가정을 해보겠습니다. 만약 주문 관련 도메인

Naver Blog

[우아한테크코스 5기] 최종 코딩테스트 후기

오늘 우아한테크코스 최종 코딩테스트를 봤습니다. 이번 5기의 전체 지원자는 총 3000명정도 됐고, 저는 백엔드 코스에 지원했습니다. 백엔드 지원자를 100명을 뽑는데, 대략 200명 정도 최종에 갔으니 마지막 코테는 1:2의 경쟁률이라고 예상됩니다! 노트와 펜까지..! 우아한형제들 루터회관? 쪽 건물에서 코테를 진행했습니다. 12시에 도착해서 맨 앞자리에 앉고, 친구들과 카톡 하면서 긴장을 풀었습니다. 그렇게 기다리다가 13시에 본격적으로 시험이 시작 됐습니다. 전 기수 최종 코딩테스트 문제를 풀었을 땐 뭔가 되게 복잡스럽고 정신없게 풀어서 살짝 걱정됐습니다. [점심 메뉴 추천 미션] 문제를 보자마자 분석에 들어갔습니다. 문제 자체는 프리코스 3주 차 문제(다리 건너기 미션)보다 비슷하거나 살짝 어려웠던 난이도였습니다. 도메인과 Enum을 잘 써야 했기 때문에, 시작하고 약 30분 동안은 설계에 집중했습니다. 하여튼.. 도메인을 최대한 설계하고 바로 "Domain - (View,

Naver Blog

[자바] 프로그래머스 : 여행경로 (DFS 백트래킹) / 접근 방법 및 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상... school.programmers.co.kr Level 3, 정답률 43% 문제입니다. 실제 코딩테스트에 문제가 나온다면 이런 느낌이지 않을까 싶은 문제입니다. 어느정도 완전탐색에 익숙해지신 분들에게 추천 드

Naver Blog

스프링부트 커뮤니티 API 서버 만들기 #14 클린코드 리팩토링 (Comment, Report)

최근에 바빠서 레거시 프로젝트 리팩토링을 진행하지 못했습니다. 지난 번에 이어서 오늘도 클린코드로 리팩토링 해보겠습니다~ Comment API 리팩토링 오랜만에 댓글 API를 보니 바꿀게 한 두가지가 아니었습니다. 변수, 메서드명부터 시작해서 잘못된 stream 사용, 그리고 도메인 메서드로 분리할 수 있는 것들도 보였습니다. 오늘은 이것들을 바꿔볼 예정입니다. 기존 CommentService 먼저 보겠습니다. @RequiredArgsConstructor @Service @Slf4j public class CommentService { private final CommentRepository commentRepository; private final BoardRepository boardRepository; @Transactional(readOnly = true) public List<CommentDto> findAll(CommentReadCondition condition) { L

Naver Blog

스프링부트 커뮤니티 API 서버 만들기 #15 클린코드 리팩토링 (Admin API) / 도메인 메서드를 사용하는 이유

이제 어느정도 1차 클린코드 리팩토링 작업이 끝이나고 있습니다. 오늘은 Admin API 리팩토링을 진행하였습니다. 이 API에는 유저 관리와, 게시글 관리, 정지 관리를 담당합니다. 리팩토링 전 엉망진창인 기존의 Service 코드를 확인해보겠습니다. @RequiredArgsConstructor @Service public class AdminService { private final UserRepository userRepository; private final BoardRepository boardRepository; private final UserReportRepository userReportRepository; private final BoardReportRepository boardReportRepository; @Transactional(readOnly = true) public List<UserEditRequestDto> manageReportedUser() { L

Naver Blog

스프링부트 커뮤니티 API 서버 만들기 #16 도메인 단위 테스트를 만들어보자

기존 커뮤니티 프로젝트에는 Service, Controller 레이어의 테스트밖에 없었습니다. 레거시 프로젝트를 리팩토링 작업을 하면서 기존 Service 레이어에서 사용한 Setter, Getter 조합을 도메인 메서드로 바꾸면서 테스트 할 것들이 생겼습니다. Getter와 Setter의 사용이 최대한 제한되어 있는 상태에서 도메인 테스트 코드 작성을 진행해보겠습니다. 양이 너무 많다보니 예시로 하나만 업로드 하겠습니다. 오늘 예시로 사용될 도메인은 Message 도메인입니다. 먼저 도메인 코드를 확인해보겠습니다. @Data @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Message extends EntityDate { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(nullable = false) pri

Naver Blog

[자바] 백준 1328 : 고층 빌딩 (DP 풀이) 접근 방법 및 풀이

https://www.acmicpc.net/problem/1328 1328번: 고층 빌딩 문제 상근이가 살고있는 동네에는 빌딩 N개가 한 줄로 세워져 있다. 모든 빌딩의 높이는 1보다 크거나 같고, N보다 작거나 같으며, 같은 높이를 가지는 빌딩은 없다. 상근이는 학교 가는 길에 가장 왼쪽에 서서 빌딩을 몇 개 볼 수 있는지 보았고, 집에 돌아오는 길에는 가장 오른쪽에 서서 빌딩을 몇 개 볼 수 있는지 보았다. 상근이는 가장 왼쪽과 오른쪽에서만 빌딩을 봤기 때문에, 빌딩이 어떤 순서로 위치해있는지는 알 수가 없다. 빌딩의 개수 N과 가장 왼쪽에서 봤을 때 보이는 빌딩의 수 L, 가장 오른쪽에서 봤을 때 보이는 빌딩의 수... www.acmicpc.net 플래티넘5 난이도, 정답률 34% 문제입니다. 문제 풀이 문제를 풀기 위해서는 이 문제의 의도를 먼저 이해해야합니다. N개의 빌딩이 있고, 왼쪽에서 봤을 때 보이는 빌딩의 수는 L개, 오른쪽에서 봤을 때 보이는 빌딩의 수는 R개입니다

Naver Blog

[자바] 프로그래머스 - 명예의 전당 (1) / 구현 문제 Stream 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/138477 코딩테스트 연습 - 명예의 전당 (1) "명예의 전당"이라는 TV 프로그램에서는 매일 1명의 가수가 노래를 부르고, 시청자들의 문자 투표수로 가수에게 점수를 부여합니다. 매일 출연한 가수의 점수가 지금까지 출연 가수들의 점수 중 상위 k번째 이내이면 해당 가수의 점수를 명예의 전당이라는 목록에 올려 기념합니다. 즉 프로그램 시작 이후 초기에 k일까지는 모든 출연 가수의 점수가 명예의 전당에 오르게 됩니다. k일 다음부터는 출연 가수의 점수가 기존의 명예의 전당 목록의 k번째 순위의 가수 점수보다 더 높으면, 출연 가수의 점수가 명예의 전당에 오르게 되고 기존의 k번째 순... school.programmers.co.kr Level 1, 정답률 38%의 신규 문제입니다. 문제 자체는 쉬우나, 완료자가 많이 없어서 아직은 정답률이 낮아보입니다. 문제 분석 문제에서 주어진

Naver Blog

[원티드 프리온보딩] 백엔드 인프라 설계 with AWS week 1-1 (전반적인 AWS 인프라 소개)

Week 1-1. 교육 내용 전반적인 AWS에서 제공하는 서비스에 대한 간단한 소개를 교육 받았습니다. 기업에서도 AWS를 정말 많이 사용하는데, 어떤 포인트에서 어떤 서비스를 사용하는지 설명을 들었습니다. Week 1-1. 느낀점 현업에 나가기 위해서 정말 알아야할 것들이 많다는 것을 알았습니다. 실무적인 부분은 아무래도 신입 입장에서 부족하겠지만, 지식을 습득하고 실무를 진행한다면 적응과 배움이 더 빠르기 때문에 더욱 열심히 해야겠다고 생각했습니다. AWS 서비스는 지금까지 단순 EC2, S3, ELB는 간단하기 알았습니다. 이번 교육을 들으면서 CloudFront와 S3를 결합해서 사용하는 것을 듣고 "반드시 정해진 용도로만 사용하는 것보다 유동적으로 바꿀 수 있으면 바꾸는게 좋겠구나" 라고 느꼈습니다. 큰 서비스를 운영하면 사소한 것 하나만 줄여도 서버 비용을 크게 절약할 수 있기 때문에, 항상 어떤 부분에서 어떻게 최적화를 할지 고민을 하면서 공부해야겠습니다! AWS VPC

Naver Blog

넘버링 A13 브레이슬릿 #1901, #1902

최근에 넘버링이라는 브랜드에 홀린듯이 꽃혀버렸습니다. 모던, 클래식을 철학으로 제품을 만든다고 하네요. 오늘 리뷰할 제품은 #1901 브레이슬릿(실버, 블랙), #1902 브레이슬릿 (골드, 브라운) 제품 입니다. 까르띠에 탱크를 모티브로 만든 팔찌라고 하는데 이건 시계는 아니지만, 팔찌 같지는 않아서 너무 예쁜 것 같습니다. 10~11월에는 매물이 없었던 것 같은데 지금은 구매할 수 있어서 구매해버렸습니다~! 박스가 되게 심플하게 생겼습니다. 아 구매할 때 사이즈를 선택하는데, Men & Women 사이즈가 있는데 사실 착용했을 때 큰 차이가 없긴 했습니다. 손목이 진짜 얇거나 굵지 않고 그냥 평범하면 둘 중 아무 사이즈로 가셔도 될 것 같습니다! #1901 A13 Watch Bracelet #1901 제품은 저기 시계줄이라 해야하나 그 부분이 검정 소가죽입니다. 그리고 저기 알맹이 컬러는 골드와 실버가 있는데, 실버 색상으로 구매했습니다. 크으 너무 예쁜 것 같습니다. #1902

Naver Blog

[우아한테크코스 5기] 프리코스 합격, 최종 코딩테스트

우아한테크코스 5기 선발과정에서 프리코스 과정에서 합격했습니다. 최종 코테까지 갔다는게 아직도 어안이 벙벙하네요.. 코테가 이번 주 토요일인데, 정말 꼭 붙었으면 좋겠습니다! 학교 시험 기간인데 시험공부고 뭐고 최종 코테만 준비해야할 것 같습니다. 떨어지더라도 많은 것을 배우고 최종까지 갔다는 것에 만족하고 열심히 준비해보겠습니다

Naver Blog

도커를 이용해서 Redis 사용 및 스프링 프로젝트에 적용하기

오늘은 스프링 프로젝트에 Redis를 설정하고 어떻게 적용했는지에 대해 포스팅 하겠습니다. Redis 사용 준비 먼저 Redis 설치는 로컬에 하는 방법과, 도커를 이용하는 방법이 있습니다. 저는 Docker를 이용해서 설치해보도록 하겠습니다. 처음 시작하시는 분들이 있을 수 있기에 기본적인 Dockerfile도 같이 업로드 하겠습니다. 혹시 도커가 설치 안 되신 분들은 설치하시고 진행하시면 됩니다. Docker 세팅하기 Dockerfile FROM openjdk:11 ARG JAR_FILE=*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] 저는 Java11 버전으로 프로젝트를 만들었습니다. docker-compose.yml version: '3.8' services: mysqldb: image: mysql restart: always environment: MYSQL_DATABASE: capstone MYSQ

Naver Blog

[자바] 프로그래머스 - 실패율 (2019 카카오 블라인드) / HashMap 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하... school.programmers.co.kr Level1, 58% 정답률 문제입니다. 문제 간단 설명 이 문제를 간단하게 설명하자면 다음과 같습니다. 예시를 이용해서 설명하겠습니다. N(스테이지 수) = 5,

Naver Blog

[우아한테크코스 5기] 프리코스 종료 및 '다리 건너기' 미션 회고록

드디어 우아한테크코스의 프리코스 과정이 끝이 났습니다. 약 한 달 동안 정말 많은 것을 배운 좋은 기회였습니다. 최종에서 합격, 탈락 결과에 상관 없이 이번 프리코스를 통해서 많은 성장을 했고, 고민을 통해서 배우는 것이 얼마나 기억에 남고 좋은 학습 방법인지에 대해 알게 되었습니다. 프리코스를 진행하면서 전반적으로 제가 성장한 부분은 자바 기본기가 좋아졌다는 점이고, Stream 사용에 대해 많이 익숙해졌고, 테스트 코드의 중요성을 몸소 느꼈고, 클린코드와 리팩토링을 신경 쓰는 개발자로 성장한 것 같습니다. 이번 미션을 통해 개선한 점과 배운 점 그리고 앞으로의 계획 1. 도메인 사용 이번 미션의 조건인 메서드 길이는 10라인 이하를 지키기 위해서 변수 사용을 어떤 식으로 하고 메서드는 어떻게 나눠야 할지 생각을 많이 할 수 있었습니다. 또한 이번에 피드백으로 들어온 '객체는 객체스럽게'에 대해서도 고민을 많이 했습니다. 따라서 외부에서 getter를 써서 기능을 구현하지 않고,

Naver Blog

[개발 일기 #24] 11월의 개발 회고록 (새로운 기술 블로그, 우테코, 원티드 챌린지)

새로운 기술 블로그 먼저 이번 달의 새로운 이슈는 기술 블로그를 이전했습니다. 네이버 블로그를 정말 오랜 시간 동안 해왔고 익숙하지만, 앞으로를 생각한다면 구글 검색도 되고 개발자 풀이 더 넓은 티스토리가 좋다고 생각했습니다. 그래서 티스토리에 새로운 블로그를 만들었습니다. https://sosow0212.tistory.com/ 지금은 같은 글을 티스토리, 네이버 블로그에 둘 다 올리지만 아마 올해가 지난다면 티스토리로 완전히 전향할 것 같습니다. 지금 네이버 블로그는 모든 개발 공부의 일대기가 담겨있어서 목록을 보면 프론트엔드, 백엔드, 각종 언어들로 가득 차서 한눈에 제가 무엇을 했고 요즘은 무엇을 공부하는지 찾기가 힘듭니다. 서버 개발자의 꿈이 확실시돼서, 티스토리에는 이에 관해서 더 자세하고 꼼꼼한 글을 작성할 예정입니다. 우아한테크코스 배달의민족 운영사인 우아한형제들에서 운영하는 개발자 교육 프로그램인 우아한테크코스를 지원했고, 이에 따라 약 한 달 동안 진행하는 프리코스

Naver Blog

스프링부트 커뮤니티 API 서버 만들기 #13 기존 프로젝트 리팩토링 계획 및 진행하기

배우는 단계에서 진행한 포스팅으로 글의 내용이 정확하지 않을 수 있습니다! 오랜만에 열어보는 커뮤니티 프로젝트 올해 7월에 당근마켓 떨어지고 "API 서버 개발을 집중적으로 해야겠다"라고 생각했습니다. 그때 만든 커뮤니티 프로젝트입니다. 단순 게시판 API 서버가 아닌 Redis나 Querydsl 같은 기술적인 것을 적용도 해보고, 직접 해결도 해보고 싶은 마음에 만들었습니다. 한 8월까지 만들다가, 해커톤 및 개강하고 학교에서 진행한 SW 개발대회 참가하느라 건들 수 없이 저 멀리 잊혀진 프로젝트였는데, 계속 마음속으로는 언젠간 살려야겠다는 생각을 했습니다. 다른 건 몰라도 이 프로젝트만큼은 애정을 가지고 더욱 확장시켜보겠습니다 상황 분석 및 리팩토링, 개발 계획 "당시에는 이 정도면 훌륭하지" 라는 근자감이 있었는데 우테코 프리코스를 마치고 온 지금 보니 코드가 개판이었습니다. 나만 볼 수 있는 더티 코드에다가 당시에는 잘 못다뤘던 테스트코드를 적용할 생각에 벌써부터 재밌는데 생

Naver Blog

[자바] 프로그래머스 - 게임 맵 최단거리 (BFS) / 유사문제

https://school.programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 위 그림에서 검은색 부분은 벽으로 막혀있어 갈 수 없는 길이며, 흰색 부분은 갈 수 있는 길입니다. 캐릭터가 움직일 때는 동, 서, 남, 북 방향으... school.programmers.co.kr 정답률 52%의 어렵지 않은 bfs 문제입니다. 좌표 값(0,0) 에서 좌표 값(n, m)에 도달할 수 없다면 -1을 출력, 도달할 수 있다면 몇 번을 이동

Naver Blog

스프링에서 properties 파일을 통해 민감 정보 감추는 방법

개발을 하고 서버로 배포를 하면, 민감한 값을 숨겨야 하는 경우가 생깁니다. 데이터베이스 키 값을 숨긴다거나, jwt 키의 값을 숨기는 경우 등등 여러 가지 경우가 있는데, 이번 포스팅은 이에 대해 다룰 예정입니다. 데이터베이스 값 감추기 먼저 데이터베이스의 값을 감추는 방법에 대해 말씀드리려고 합니다. 기존 리팩토링 전 application.yml 파일은 다음과 같습니다. server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/capstone?useSSL=false&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update naming: physical-str

Naver Blog

클린코드에 대해서 알아보자 (리팩토링)

개발을 하다 보면 어느 포인트에서 클린코드라는 것을 접하게 됩니다. 대부분은 혼자 프로그래밍을 하면서 변수명, 함수명 혹은 로직 구조 설계에 대해 개개인적으로 습관이 굳어지게 됩니다. 따라서 사람마다 코드 스타일이 달라지게 되는데, 이는 협업할 때 타인이 코드 이해를 할 때 더 오랜 시간을 소모하게 됩니다. 따라서 개발자들은 클린코드를 작성하기 위해 노력해야 합니다. 클린코드 클린코드란 네이밍, 중복 제거, 하나의 역할만 수행하게 끔 코드를 작성해서 가독성이 높은 코드를 의미합니다. 즉, 위와 같은 조건으로 프로그래밍을 하면서 코드를 누구나 이해할 수 있는 것이 바로 클린코드를 의미합니다. 다음 예시를 통해 클린코드가 어떤 의미인지 조금 더 직관적으로 확인해보겠습니다. 기존 클린코드 적용 전 코드 public class CleanCode { public static void main(String[] args) { System.out.println(func1(10)); } public

Naver Blog

[자바] 프로그래머스 - 주차 요금 계산 (2022 카카오 블라인드) / HashMap 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/92341 코딩테스트 연습 - 주차 요금 계산 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다. 요금표 기본 시간(분) 기본 요금(원) 단위 시간(분) 단위 요금(원) 180 5000 10 600 입/출차 기록 시각(시:분) 차량 번호 내역 05:34 5961 입차 06:00 0000 입차 06:34 0000 출차 07:59 5961 출차 07:59 0148 입차 18:59 0000 입차 19:09 0148 출차 22:59 5961 입차 23:00 5961 출차 school.programmers.co.kr Level2, 정답률 57% 난이도의 2022년도 카카오 블라인드 채용 문제입니다. 문제 간단 설명 문제를 간단하게 요약하자면 다음과 같습니다. 매개변수로 들어오는 String[]

Naver Blog

[자바] 프로그래머스 - 피로도 / 백트래킹 알고리즘 정복하기

https://school.programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 8... school.programmers.co.kr 프로그래머스 정답률 55%, Level2 난이도의 백트래킹 문제입니다. 문제 간단 분석 이 문제를 간단하게 분석해보자면 다음과 같습니다. 먼저 던전을 탐험하려면 나의

Naver Blog

[우아한테크코스 5기] 프리코스 3주차 '로또 미션' 회고록

우아한테크코스 프리코스 3주 차가 끝났습니다. 지난번에 느꼈던 점과 공통 피드백을 바탕으로 이번 주 미션은 조금 다르게 구상했습니다. 먼저 기존에는 혹시나 망칠까 봐 커밋을 미루다가 마지막에 하는 경우가 있었습니다. 하지만 실제 시험에서 시간이 부족하고 집에서 하던 방식대로 못할 수가 있기 때문에 이번에는 최대한 기능 구현 목록을 상세하게 작성하고 순서대로 만들면서 커밋을 진행했습니다. 우려됐던 부분이 기능 목록 문서를 그대로 따라야 하는가에 대한 고민이었는데, 다행히도 중간중간 바뀔 수 있으니 살아있는 문서로 만들라는 말씀을 보고 문서를 변경하면서 진행할 수 있었습니다. 저번 주에 생각보다 MVC 패턴으로 구조화해서 하는 것이 까다로웠기 때문에, 이번 주에는 어떤 식으로 해야 효율적인지 기능 구현 목록을 작성하고, 패키지 별로 어떻게 만들지 모두 구상을 하고 진행했습니다. 이렇게 하다 보니 조금 더 빠르고 객체지향적으로 만들 수 있었습니다. 또한 제가 만든 기능을 리팩토링 하다가

Naver Blog

[캡스톤디자인2] 프로젝트 개요 및 플로우 / 서버 기초 작업

[캡스톤디자인2] 프로젝트 개요 및 플로우 / 서버 기초 작업 캡스톤디자인2 주제 및 의의 공공 데이터를 이용하여 의약품 관련 오픈 데이터를 활용하여, 사용자의 증상에 따라 적합한 정보만을 필터링하여 필요한 약품 및 동시 복용의 가능 여부 정보를 제공 요즘 현대 사회에서 접할 수 있는 의약품은 점점 많아지고 있습니다. 이를테면, 편의점 및 약국에서 구매할 수 있는 상비약의 종류도 다양해졌고 처방 받고 복용하는 약도 많아졌습니다. 이런 의약품을 섭취할 때, 같이 먹으면 안 되는 약도 있는데 보통의 경우 그냥 먹거나 검색을 하고 복용합니다. 문제는 함께 섭취하는 의약품에 대한 정보는 유명한 의약품에 한정되어 있습니다. 이런 경우 의약품은 보다 전문적인 분야라서 일반 사람들이 쉽게 알 수 없기 때문에 블로그 등 정보의 양도 적고 결국에 검색의 시간이 길어지게 됩니다. 저희는 이런 문제점을 파악하고 신뢰적인 공공 데이터 포털에서 제공하는 데이터를 가지고 서비스를 기획했습니다. 사용 기술 및

Naver Blog

[우아한테크코스 5기] 지원과 프리코스 시작

이번에 우아한테크코스 5기가 열려서 백엔드 코스에 지원하게 되었습니다. 우테코는 개발자가 되고싶은 학생들이 정말 가고 싶어하는 부트캠프입니다. 신청 이유야 정말 다양하겠지만, 제 생각에는 취업과 개발자로서의 성장, 소통하며 배우는 우아한형제들의 기업 문화를 배울 수 있다는 점이 가장 큰 것 같습니다. 저 또한 우아한형제들은 엄청난 트래픽을 받는 서비스 회사이기 때문에, 많은 걸 배울 수 있다고 생각했고, 정말 너무 가고 싶은 기업 중 하나이기 때문에 꼭 우테코에 참가하고 싶었습니다. 우테코 접수를 위해 몇 주 동안 자기소개서만 쓰고 지우고, 첨삭받고 한 것 같습니다. 너무 간절했기 때문에 꾸며내지 않고 있는 저의 모습 그대로 솔직하게 작성을 했습니다. 이번 5기는 저번 기수와 다르게 1차 코딩테스트가 없고 프리코스를 진행할 수 있습니다. 문제가 전부 같기 때문에 이전 기수의 프리코스 문제들을 풀어볼까 고민도 했었지만, 우아한테크코스에서 제공하는 가이드라인과 컨벤션을 확실하게 익히고

Naver Blog

기술 면접 준비 #3 : 네트워크, Java

Network 대칭키 암호화와 복호화에 같은 암호키를 사용하는 알고리즘 동일한 키를 주고받기 때문에 매우 빠르다. 하지만 전달 과정에서 해킹 위험에 노출 공개키 / 비대칭키 대칭키의 키 분배 문제를 해결하기 위해 고안 됐다. (대칭키일 땐 송수신자들만 키를 알아야함) 분배가 복잡하고 어렵지만 공개키와 비밀키로 분리할 경우, 남들이 알아도 되는 공개키만 공개해도 됨 자신이 가지고 있는 고유한 암호키(비밀키)로만 복호화 할 수 있는 암호키(공개키)를 대중에 공개한다. HTTP & HTTPS HTTP (HyperText Transfer Protocol) 인터넷상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약 HTTP는 텍스트 교환 -> 해킹 시 내용 노출되는 보안 이슈가 존재 HTTPS(HyperText Transfer Protocol Secure) 란? 인터넷상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약 HTTP

Naver Blog

[우아한테크코스 5기] 프리코스 1주차 회고록

우아한테크코스 5기, 1주차 프리코스 이번 우아한테크코스 1주차 프리코스 문제는 저번 기수와 달랐습니다. 코딩 테스트가 사라져서 그런지, 유형이 코딩 테스트 같은 느낌이었습니다. 제 생각이지만 기존보다 프리코스 1주를 더 하는 것을 보면, 1주차는 코테 느낌의 미션이고 그 후부터는 이전과 동일하지 않을까 조심스레 추측하고 있습니다. 총 7문제가 주어지고, 기능 요구 사항을 잘 맞추면서 풀면 됩니다. 문제의 난이도 같은 경우 개인적으로 5번까지는 정말 쉬웠고 6~7번은 난이도가 확 올라서 당황했습니다. 문제의 유형은 일반적인 문자열 및 구현 문제였습니다. 어떤 문제가 나왔고, 어떻게 풀었는지 문제의 유형은 일반적인 문자열 및 구현 문제였습니다. 사실 저번 기수까지는 한 눈에 알아볼 수 있는 변수명과 함수명을 작성하고, 인덴트 2도 맞춰야 했던 걸로 알고있습니다. 이번 1주차에는 별 다른 조건은 없었지만, 다들 슬랙을 보니 맞추시려고 하셔서 저도 이왕이면 우테코의 정신을 이으려고 깔끔하

Naver Blog

[자바] 프로그래머스 - 스킬트리

https://school.programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더 일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더 와 같은 스킬트리는 가능하지만, 썬더 → 스파크 나 라이트닝 볼트 → 스파크 → 힐링 → 썬더 와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유... school.programmers.co.kr 문제를 요약하자면 다음과 같습니다. 주어진 skill의 값이 "CBD" 라면, B를 스킬트리에 넣기 위해선 무조건 선행스킬인 C가 와야하고, D가 오려면 A,B 가

Naver Blog

[K-해커톤] 제10회 해커톤 수상 및 마무리

[K-해커톤] 제10회 해커톤 수상 및 마무리 4월부터 팀원을 모집하고 약 6개월간 열심히 한 결과 최종 결선에 들었습니다. 전국 200팀 중 17팀 이내로 들어야 결선이고, 동시에 수상 확정이니 결선오고는 마음은 조금 편했습니다. 개발을 시작하면서 전국 단위 해커톤을 나가서 수상도 받고 너무 감회가 새로웠습니다! 해커톤 전체 진행 과정이 궁금하시다면 같은 카테고리 내의 글을 참고해주시면 됩니다 :) 다들 짧은 발표와 함께 시연 영상으로 발표를 마쳤는데, 확실히 심사위원 분들이 대단하신 분들이라서 질문의 깊이가 본선 때보다 훨 깊었습니다. 각 팀별 발표를 진행하고 수상식을 진행하고 해커톤이 막을 내렸습니다. 오른쪽 사진과 같은 명함을 받고, 왼쪽 사진과 같은 세미나실에서 발표를 진행했습니다. 앞에 강단에서 발표를 진행했습니다. 그리고 다들 수상을 하고, 단체 기념 사진을 찍으면서 10회 해커톤은 끝이 났습니다. 이번 해커톤을 진행하면서, 기획과 디자인의 중요성을 많이 느꼈습니다. 개

Naver Blog

[우아한테크코스 5기] 프리코스 2주차 '숫자 야구 미션 회고록

이번 2주차 미션은 '숫자 야구' 미션이었습니다. 문제 해결을 위한 알고리즘은 간단하였지만, 구조화 및 클린코드 작성이 어려웠던 것 같습니다. 이번 미션을 진행하면서 배운 것, 느낀 점들을 적어볼까 합니다. 2주차 미션 진행 회고록 기존에 스프링을 꾸준히 하면서 MVC 패턴에 대해 잘 알고 있었다고 생각했습니다. 하지만, 미션을 진행하면서 스프링과 다른 방식이다 보니 어떤 식으로 구현을 할지 막막했습니다. 아마 우테코에서 기능 구현 목록을 먼저 작성하라한 의도가 이런 부분에서 "먼저 고민을 하고, 정해진 대로 구현을 해봐라!"라는 느낌인 것 같았습니다. 하여튼, 이번 미션을 통해서 MVC 패턴을 다시 공부하고, 적용을 했습니다. 또한 변수명과 메서드의 분리와 조금 더 협업하기 좋은 코드가 무엇인지 계속 고민하면서 코드를 작성했습니다. 아직은 기능 구현 목록을 작성하고 바로 코드로 넘어가기는 힘들지만 어떤식으로 진행해야 할지에 대해서는 감을 잡은 것 같습니다. 기존의 대책없이 개발을

Naver Blog

2023년 계획과 2022년도 회고록

이제 반오십까지 며칠 남지 않았습니다. 항상 연간 회고록을 보면 시간이 빨리간다고 적었더라고요. 늘 느끼지만 한살 한살 들 수록 한 해가 더욱 빨리 지나가는 것 같습니다. 작년에 세운 2022년도 계획과 성취여부 1. 자바 스프링 백엔드 프로젝트 진행, 인공지능 공부 및 활동 전국 대학생 앱 개발 챌린지 K-해커톤 수상 (스프링 프로젝트) 교내 SW 개발 대회 수상 (스프링 프로젝트) Community API Server 제작 및 리팩토링 진행 (스프링 프로젝트) Kotlin Simple Project 제작 (코틀린 맛보기 공부) 캡스톤디자인 다중 서버 프로젝트 진행 (스프링 프로젝트) 파이썬, 스프링 멘토 활동 진행 우아한테크코스 5기 지원 2. 알고리즘, 면접 공부하기 올해 초에 백준 티어 골드5에서 골드1로 올렸습니다. 프로그래머스를 본격적으로 풀기 시작해서 150문제를 풀었습니다. 면접 스터디, 개인 공부 진행, 전공 네트워크 공부 3. 정보처리기사, 장발하기, 다이어트 취업

Naver Blog

스프링부트 https 배포 후 CORS 에러 해결하기

스프링부트 https 배포 후 CORS 에러 해결하기 프론트엔드 개발자라면 아래와 같은 CORS 에러를 지긋지긋하게 보게됩니다. 혹은 서버 개발자들은, 프론트엔드 개발자에게 "CORS 터졌어요!" 라고 전달 받습니다. 서버 개발을 마치고 http 배포를 하게되면, CORS 문제를 해결해주기 위해 config 파일을 건들게됩니다. https 배포를 하면 http와 다르게 CORS 관련 코드 기존과 다르게 변경해줘야합니다. 먼저 기존에 http 배포 후 CORS 문제는 아래 코드로 해결할 수 있었습니다. @Configuration public class CorsConfig { @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); confi

Naver Blog

[요고요구] API 서버 제작 #5 : 팀프로젝트 마무리 및 배포 / 프로젝트 회고록 / 수상

[요고요구] API 서버 제작 #5 : 팀프로젝트 마무리 및 배포 / 프로젝트 회고록 / 수상 https://github.com/sosow0212/yogoyogu GitHub - sosow0212/yogoyogu: MJU ICT SW개발 대회 '요고요구' API 서버 MJU ICT SW개발 대회 '요고요구' API 서버. Contribute to sosow0212/yogoyogu development by creating an account on GitHub. github.com 최종 프로젝트 완성 코드는 위에 깃허브를 통해 확인하실 수 있습니다. 프로젝트 마무리 및 배포 백엔드 서버 배포는 지난 주에 끝났습니다. 프론트엔드 서버 배포 및 최종 완성을 기다리면서, 백엔드 서버를 http에서 https로 바꾸는 작업을 진행했습니다. 한국 도메인 사이트를 이용할 때 Route53 및 SSL 발급이 안 되는 이슈가 있어서 타 도메인을 이용하고 로드밸런서와 Route53을 이용해서 http

Naver Blog

[자바] 프로그래머스 : 숫자 짝꿍 (문자열, 구현)

[자바] 프로그래머스 : 숫자 짝꿍 (문자열, 구현) https://school.programmers.co.kr/learn/courses/30/lessons/131128 코딩테스트 연습 - 숫자 짝꿍 두 정수 X , Y 의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X , Y 의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X , Y 의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다. 예를 들어, X = 3403이고 Y = 13203이라면, X 와 Y 의 짝꿍은 X 와 Y 에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예... school.programmers.co.kr 정답률 21%, Level 1 문제입니다. 아직 65명 밖에 안 풀어서 정답률은 추후에 올라갈 수 있습니다

Naver Blog

[자바] 2019 카카오 블라인드 공채 : 오픈채팅방 (자료구조, 구현)

[자바] 2019 카카오 블라인드 공채 : 오픈채팅방 (자료구조, 구현) https://school.programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다. "[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다. 채팅방에서 닉네임을 변경한다. 닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된... school.programmers.co.kr 정답률 55%, Level 2 2019년도 카카오 블라인드 채용 코딩테스트 문제 문제 분

Naver Blog

[자바] 프로그래머스 : 타겟 넘버 (dfs, bfs, 완전탐색) / 유사 문제

[자바] 프로그래머스 : 타겟 넘버 (dfs, bfs, 완전탐색) / 유사 문제 https://school.programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solut... school.programmers.co.kr Level2, 정답률 57% 문제 분석 및 해결 매개변수로 int[] number

Naver Blog

[자바] 백준 2204번 : 도비의 난독증 테스트 (문자열, 해시)

[자바] 백준 2204번 : 도비의 난독증 테스트 (문자열, 해시) https://www.acmicpc.net/problem/2204 2204번: 도비의 난독증 테스트 2204번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 검색 도비의 난독증 테스트 다국어 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 2541 1317 1107 55.405% 문제 꿍은 도비에게 영어단어들을 제시한 후 어떤 단어가 대소문자를 구분하지 않고 사전순으로 가장 앞서는지 맞추면 양말을 주어 자유를 얻게해준다고 하였다. 하지만 인성이 좋지 않은 꿍은 사실 그러고 싶지 않았기 때문에 대소문자를 마구 섞어가며 단어들을 제시했다. 예를 들어, apPle은 Bat보다 앞서지만 AnT보다는 뒤에 ... www.acmicpc.net 브론즈1 정답률 55% 백준 보다가 해시로 풀기 좋은 문제가 있어서 올려봅니다. input n 과 String[n] 배열 요소의 값을 받아줍니다. 그리고

Naver Blog

[자바] 프로그래머스 : 영어 끝말잇기

[자바] 프로그래머스 : 영어 끝말잇기 https://school.programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → moth... school.programmers.co.kr Lv2, 정답률 68% 문제 해설 및 풀이 전형적인 구현 문제입니다. round 와 who 카운팅 해주는 부분만 신경쓰

Naver Blog

[개발일기 #23] 1일 1커밋 1년 달성 및 지금까지의 개발 회고록

[개발일기 #23] 1일 1커밋 1년 달성 및 지금까지의 개발 회고록 아직 일주일 정도는 남았지만 드디어 1일1커밋을 한지 일년이 됐습니다. 좋아하는 분야에서 1년동안 하루도 쉬지 않고 달려왔다는 생각에 너무 뿌듯한 것 같습니다. 놀고 싶은 날도 있었고, 여행 가는 날에도 있었지만 항상 공부를 조금이라도 하고 놀았습니다. 약 1년동안 정말 다방면으로 많은 역량이 상승 됐다는게 느껴집니다. 1년 전과 비교하면, 개발에 대해 거의 무지한 상태에서 프론트엔드도 공부하고, 스프링 공부도 하고, 전국 개발 대회에서 수상도 하고, 동기들도 알려줄 수 있다는 점에서 스스로 정말 많은 발전이라고 생각합니다. 무엇보다도 포기가 빠르고 금방 질려하는 제 성격상 좋아하더라도 맨날 하는 건 거의 없었는데, 1년간 하루도 쉬지않고 무엇인가 처음으로 이룬게 프로그래밍에 관련된 것이라서 더욱 보람차고 뿌듯한 것 같습니다. 도전을 진행하면서 항상 '정확한' 공부를 했다고는 자부할 수 없지만 늘 '올바른' 방향으

Naver Blog

기술 면접 준비 #3 : 네트워크, Java

기술 면접 준비 #3 : 네트워크, Java Network OSI 7계층 Application (응용 계층) - HTTP, FTP, DNS Presentation (표현 계층) - JPEG, MPEG Session (세션 계층) - API, Socket Transport (전송 계층) - 흐름 제어, 혼잡 제어, 오류 제어 전송 계층은 1:1 연결된 송신과 수신 호스트 즉, 종단간 호스트에 신뢰성 관련 기능을 제공한다. Network (네트워크 계층) - IP, ICMP, ARP Data Link (데이터링크 계층) - 오류 제어, 흐름 제어, 회선 제어 물리적으로 1:1 연결된 호스트 사이의 전송 즉, 직접 묶여있는 호스트-노드 또는 노드-노드 사이에서 신뢰선 관련 기능을 제공한다. Physical (물리 계층) - 전기적, 물리적 세부 사항을 정의하는 계층 계층을 나눈 이유 ==> 통신이 일어나는 과정에서 문제가 발생하면, 그 단계만 수정하면 되기 때문이다. TCP 3 way h

Naver Blog

[자바] 프로그래머스 : n^2 배열 자르기 (구현, 그리디)

[자바] 프로그래머스 : n^2 배열 자르기 (구현, 그리디) https://school.programmers.co.kr/learn/courses/30/lessons/87390 코딩테스트 연습 - n^2 배열 자르기 정수 n , left , right 가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n 행 n 열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n 에 대해서, 다음 과정을 반복합니다. 1행 1열부터 i 행 i 열까지의 영역 내의 모든 빈 칸을 숫자 i 로 채웁니다. 1행, 2행, ..., n 행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 arr 이라 할 때, arr[left] , arr[left+1] , ..., arr[right] 만 남기고 나머지... school.programmers.co.kr 정답률 60%, Level 2 문제입니다. 예시가 굉장히 친절한 문제였습니다. 문제를 보고

Naver Blog

AWS MySQL 데이터베이스 해킹 당한 후기 (비트코인 내놔!)

AWS MySQL 데이터베이스 해킹 (비트코인 내놔!) 서버 배포 후 테스트 하려고 데이터베이스를 아침에 들어갔는데 위에 사진과 같이 스키마 명이랑, 내부에 이상한 내용이 추가 되었습니다. 이게 뭔가 싶어서 자세히 봤는데 "비트코인 0.26개를 어디로 보내지 않으면 딥웹에 니 정보 다 뿌려버리겠다!" 라는 데이터를 인질로 잡은 해커의 소행이었습니다. 다행히도 서버 데이터에는 뭐 별 거 없어서 다시 팠지만, 어떻게 해킹 됐을까에 대해서 고민을 좀 해보았습니다. 먼저 교내 경진대회라서 큰 서버가 필요하지 않다라고 생각했기에, EC2 인스턴스 생성 후 RDS에 데이터베이스 연결을 하지 않았습니다. 즉 EC2 서버 안에 내부적으로 도커로 MySQL을 띄워서 쓰는 방식으로 진행했습니다. 비밀번호에 관해서도 별 생각 없이 쉬운 비밀번호로 (root 같은) 세팅했습니다. 해커 입장에서는 여러 호스트 주소에 접속을 시도하는 브루트포스 프로그램을 세팅해놓고 username, password 를 둘다

Naver Blog

[자바] 프로그래머스 : 다음 큰 숫자 (구현)

[자바] 프로그래머스 : 다음 큰 숫자 (구현) https://school.programmers.co.kr/learn/courses/30/lessons/12911 코딩테스트 연습 - 다음 큰 숫자 문제 설명 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한 사항 n은 1,000,0... school.programmers.co.kr 정답률 70%, Level 2 구현 문제입니다. 문제 해설 문제는 간단합니다. n이 주어질 때, n을 2진수로

Naver Blog

기술 면접 준비 #2 : 컴퓨터 구조, Java

기술 면접 준비 #2 : 컴퓨터 구조, Java Computer Architecture 고정 소수점 / 부동 소수점 고정 소수점 소수점이 찍힐 위치를 미리 정해놓고 소수를 표현하는 방식 (정수 + 소수) 장점 : 실수를 정수부와 소수부로 표현하여 단순하다. 단점 : 표현의 범위가 너무 적어서 활용하기 힘들다. (정수부 15bit, 소수부 16bit) 부동 소수점 실수를 가수부 + 지수부로 표현한다. 가수 : 실수의 실제 값 표현 크기 표현, 가수의 어디쯤 소수점이 있는지 나타냄 지수의 값에 따라 소수점이 움직이는 방식을 확용한 실수 표현법! 패리티 비트 / 해밍 코드 패리티 비트 정보 전달 과정에서 오류의 여부를 검사하기 위해 데이터 각 문자에 1비트를 전해 전송한다. 종류는 짝/홀수가 있으며 전체 비트에 짝/홀수에 맞게 비트를 정한다. 해밍 코드 데이터 전송 시 1비트의 에러를 정정할 수 있는 자기 오류정정 코드를 뜻함 패리티 비트를 보고, 1비트에 대한 오류를 정정할 곳을 찾아

Naver Blog

[자바] 2018 카카오 신입 공채 : 뉴스 클러스터링 (문자열, 구현)

[자바] 2018 카카오 신입 공채 : 뉴스 클러스터링 (문자열, 구현) https://school.programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용 카카오, 블라인드 전형으로 신입 개... school.programmers.co.kr 2018년도 카카오 신입 공체 1차 코딩테스트 문제인 '뉴스 클러스터링'

Naver Blog

[자바] 2022 카카오 블라인드 : 신고 결과 받기 (Hash, 구현)

[자바] 2022 카카오 블라인드 : 신고 결과 받기 (Hash, 구현) https://school.programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 ... school.programmers.co.kr 정답률 32%, Level 1 Level 1단계이지만, 정답률은 낮은 카카오 블라인

Naver Blog

[자바] 프로그래머스 : 괄호 회전하기 (스택, 구현)

[자바] 프로그래머스 : 괄호 회전하기 (스택, 구현) https://school.programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. () , [] , {} 는 모두 올바른 괄호 문자열입니다. 만약 A 가 올바른 괄호 문자열이라면, (A) , [A] , {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A , B 가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다. 대괄호, 중괄호, 그리고 소괄호로 이루어... school.programmers.co.kr 정답률 61%, Level 2 문제입니다. 비교적 쉬운 구현 + 스택 문제입니다. 문제 해설 및 풀이

Naver Blog

기술 면접 준비 #1 : 컴퓨터 구조, Java

기술 면접 준비 #1 : 컴퓨터 구조, Java Computer Architecture 컴퓨터의 구성 컴퓨터는 하드웨어와 소프트웨어로 구성 하드웨어는 '중앙처리 장치(CPU), 기억장치(RAM, HDD), 입출력장치(마우스, 프린터)' 로 구성 소프트웨어는 '시스템 소프트웨어(운영체제, 컴파일러), 응용 소프트웨어(워드, 카톡 등등)' 으로 구성 하드웨어는 시스템 버스로 연결되어 있고, 시스템 버스는 명령 제어 신호로 각 장치로 실어나르는 역할을 수행 중앙처리장치 CPU는 '주기억장치'에서 프로그램 명령어와 데이터를 읽고 처리 및 순서를 제어한다. 비교와 연산을 담당하는 산술논리연산장치(ALU) 와 명령어 해석 및 실행을 담당하는 제어장치, 속도가 빠른 기억장소인 레지스터로 구성 기억장치는 주/보조기억장치로 나뉘고 RAM, ROM은 여기 속한다. 실행중인 프로그램과 같은 프로그램에 필요한 데이터를 일시 저장한다. 보조기억장치는 하드디스크를 말하며, 주기억장치 RAM 같은 것에 비해

Naver Blog

[요고요구] API 서버 제작 #1 : 프로젝트 설정 및 도커 세팅 (Docker compose)

[요고요구] API 서버 제작 #1 : 프로젝트 설정 및 도커 세팅 (Docker compose) 교내 SW개발대회를 위한 백엔드 서버 개발기입니다. 프로젝트 설정하기 Java11, Gradle, Spring boot 2.7.3 디펜던시 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.projectlombok:lombok:1.18.22' compileOnly 'org.projectlombok:lombok' runtimeOnly 'mysql:mysql-connector-java' annotationProc

Naver Blog

[K-해커톤] API 서버 제작 #10 : Product 리팩토링 (이미지 추가)

[K-해커톤] API 서버 제작 #10 : Product 리팩토링 (이미지 추가) https://github.com/sosow0212/WhereHaveYouBeenToGo GitHub - sosow0212/WhereHaveYouBeenToGo: K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. Contribute to sosow0212/WhereHaveYouBeenToGo development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 생각해보니 상품 등록에 이미지 업로드 기능을 까먹었습니다. 가이드 상품인데 사진이 없으면 안되므로 오늘은 기존에 만든 Product API 를 리팩토링 했습니다. 리팩토링 시작 먼저 사진을 저장해야하므로, Image 엔터티를 만들어주겠습니다. package hackatho

Naver Blog

[요고요구] API 서버 제작 #2 : 메일 인증 회원가입 및 게시판 API 만들기

[요고요구] API 서버 제작 #2 : 메일 인증 회원가입 및 게시판 API 만들기 https://github.com/sosow0212/yogoyogu GitHub - sosow0212/yogoyogu Contribute to sosow0212/yogoyogu development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 자세한 코드는 본문에 없으니 깃허브 참조 부탁드립니다. 교내 건의 시스템을 넣는 서비스 특성상 반드시 구현해야 하는 기능이 두 가지가 있습니다. 1. 어떻게 교내 학생 회원인 걸 확인하고 가입하는지? 2. 어떻게 학생회 회원인 걸 확인하고 가입하는지? 위 두 가지의 경우가 해결되지 않으면 학교와 관련없는 타인이 게시판을 망칠 수가 있습니다. 따라서 오늘은 위 문제를 잡기 위해서 먼저 1번 과정, 교내 학생 회원 가입을 먼저 진행하겠습니다. 어떻게 교내 학생 회원인 걸 확인하고 가입하는지? 명지

Naver Blog

[요고요구] API 서버 제작 #3 : 게시판 말머리 달기 및 페이징처리, 학생회 답글 구현

[요고요구] API 서버 제작 #3 : 게시판 말머리 달기 및 페이징처리, 학생회 답글 구현 https://github.com/sosow0212/yogoyogu GitHub - sosow0212/yogoyogu: MJU ICT SW개발 대회 '요고요구' API 서버 MJU ICT SW개발 대회 '요고요구' API 서버. Contribute to sosow0212/yogoyogu development by creating an account on GitHub. github.com 자세한 코드는 깃허브에서 확인하실 수 있습니다. 질문 및 피드백은 환영입니다 :) 프론트엔드 쪽에서 기획을 살짝 바꿨습니다. 1. 게시글에 말머리 넣기 (학생회 분류) 2. 말머리에 해당하는 학생회만 답변 가능 3. 게시글 리스트 페이징 처리 10건씩, 최신순 및 좋아요 순 정렬 프론트엔드 측의 요구를 만족하기 위해서 먼저 게시글의 말머리를 넣었습니다. 말머리 구현을 위해서 처음에 Entity 를 하나 만들까

Naver Blog

[Docker] 도커 사용법 정리 / MySQL, 스프링부트 서버 같이 띄우기 (docker-compose)

[Docker] 도커 사용법 정리 / MySQL, 스프링부트 서버 같이 띄우기 개발환경 : 맥 M1 애플 실리콘 준비물 : 스프링부트 완성된 프로젝트 (java11, jdk16 으로 진행) 1. Homebrew로 Docker 설치하기 (터미널로 진행) 1-1. Homebrew 설치 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 1-2. Docker 설치 brew install --cask docker 2. 프로젝트 빌드 해주기 (.jar 파일을 만들어 줘야함) -> bootJar 클릭해주면 build-libs 안에 .jar 파일이 생깁니다. 3. Dockerfile 만들어주기 (.jar와 같은 위치에서) -> Dockerfile은 확장자명 없습니다. FROM openjdk:11 ARG JAR_FILE=*.jar COPY ${JAR_FILE} app.jar EN

Naver Blog

[요고요구] API 서버 제작 #4 : 스프링 AWS 배포하기 (docker, 프리티어 램 늘리기, https)

[요고요구] API 서버 제작 #4 : 스프링 AWS 배포하기 (docker, 프리티어 램 늘리기) 서버를 다 만들었으니, AWS EC2를 이용해서 배포해보겠습니다. (자세한 배포 내용은 추후에 따로 포스팅 하겠습니다! 백엔드-DevOps 탭에서 확인하실 수 있습니다.) 먼저 저희는 도커를 이용해서 프로젝트 개발 세팅을 진행해주었습니다. 도커 컨테이너에는 (MySQL + Jar 실행) 의 내용을 담아서 실행을 실행시키면, 데이터베이스와 스프링 서버가 같이 켜집니다. 데이터베이스는 로컬에서 이용할 것이기 때문에, 따로 AWS RDS 서버를 대여하지 않아도 됩니다. 1. AWS EC2 인스턴스 생성 (Ubuntu 22.04 LTS, 프리 티어) 해주고나서, 터미널에서 대여한 클라우드 서버로 들어가줍니다. 그리고 다음 명령어를 이용해서 클라우드 서버의 시간을 한국 시간으로 바꿔줍니다. sudo rm /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia

Naver Blog

기술 면접 대비 스터디 계획표

기술 면접 대비 스터디 계획표 개발자 기술 면접을 준비하는 사람들을 위한 계획표입니다. 커리큘럼은 깃허브 자료 조사 및 면접 후기 글을 바탕으로 제작했습니다. 기술 면접 및 알고리즘 준비 (With 승범, 태수, 태인, 상혁, 정환, 재호) <무엇을 할 것인가?> → 과 특성상 CS 과목은 많이 없으므로 CS와 기초 지식은 매주 병행 컴퓨터 구조 / 네트워크 / 운영체제 / 소프트웨어 / 데이터구조 / 데이터베이스 / 보안 / 알고리즘 자바/스프링 기술 면접 대비 <스터디 진행 방식> 매주 범위 공부 및 각자 파트 발표 및 매서운 질문 및 피드백 이전 범위 퀴즈 (각자 한 문제씩 랜덤으로 한 명한테 퀴즈 내기) 모의 면접 <언제 진행?> 스터디 주차 별로, 1회차씩 디테일하기 / 주 1회 매주 수요일 저녁 10시 온라인 (디스코드), 시간은 대략 4~50분 내외 시험기간 일주일 전 면제 <회식> 회식 → 다음주 일요일 (9월 18일) → 상혁이가 고르자 <주차 별 목표 학습> 1회차

Naver Blog

[K-해커톤] API 서버 제작 #9 : 상품 좋아요 처리 구현하기

[K-해커톤] API 서버 제작 #9 : 상품 좋아요 처리 구현하기 https://github.com/sosow0212/WhereHaveYouBeenToGo GitHub - sosow0212/WhereHaveYouBeenToGo: K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. Contribute to sosow0212/WhereHaveYouBeenToGo development by creating an account on GitHub. github.com 피드백 및 질문은 환영입니다 :) 오늘은 상품 좋아요 및 좋아요 취소 기능을 구현했습니다. 이제 굵직한 기능들은 모두 구현했고, 자잘하게 필요한 것들만 개발하면 해커톤 스프링 프로젝트는 완성입니다. 다음주가 개발 회의인데, 잠정적으로 이제 개발을 잠시 중단하고 회의를 마치고 필요한 기능들을 더 구현하면 마무리 될 것 같

Naver Blog

[Spring & Java] 스트림(Stream) 사용 이유 및 for loop와의 차이점 / 리팩토링 해보기 실전 예제

[Spring & Java] 스트림(Stream) 사용 이유 및 for loop와의 차이점 , 리팩토링 해보기 실전 예제 Java 기반 Framework 를 다루다보면 컬렉션 데이터를 처리하는 경우가 많이 생깁니다. 이런 경우에 스트림을 배우기 이전에는 for 문 혹은 forEach를 통해서 복잡하게 처리를 해주었습니다. 스트림은 이런 문제를 보다 간단하고 성능 개선을 위해 등장했습니다. 스트림을 게시글을 통해 함께 배워보고, 리팩토링을 해봅시다! 스트림(Stream) 이란? - 스트림은 Java8 에서 추가된 기능입니다. - 컬렉션 데이터를 선언형으로 쉽게 처리할 수 있습니다. - 스트림을 이용하면 루프문을 사용하지 않아도 되고, 루프문 중첩을 사용할 필요가 없습니다. --> 성능 개선 및 코드가 간결해집니다. - 병렬처리를 별도의 멀티 쓰레드 구현 없이 구현할 수 있습니다. 스트림(Stream) 연습 해보기 간단한 자바 코드로 스트림을 연습해보겠습니다. 예제는 다음과 같습니다.

Naver Blog

[개발일기 #22] 22년 9월의 개발 공부 - 해커톤 서버 개발 및 PS, 기술 면접 준비

[개발일기 #22] 22년 9월의 개발 공부 - 해커톤 서버 개발 및 PS, 기술 면접 준비 이번 달에는 개강을 했습니다. 항상 느끼지만, 개강하면 1학년 때처럼 정말 다 때려치우고 맨날 놀고 싶은 것 같아요c 8월 중순부터 현재까지 인프라에 대한 이론 공부를 주로 했고, 해커톤 서버 개발을 거의 다 끝냈습니다. 그리고 본격적으로 취준생이 되는 내년에 조금이라도 편하기 위해서 학교 친구들과 미리 기술 면접 스터디를 계획하고, 코테 준비를 위해서 프로그래머스 문제 또한 다시 풀고 있습니다. 그리고 공부하면서 항상 아무런 의심도 없이 써왔던 자바 문법이 문득 궁금해져서 찾아보고 기본기를 더 잡았고, 토이 프로젝트를 진행하면서 객체지향과 클린코드의 필요성 그리고 테이블 설계의 중요성을 많이 느꼈습니다. 특히나 포럼을 통해서 Entity 내부 메서드를 잘 활용하는 것 또한 중요하다는 것을 알게 되었습니다. 스프링 프레임워크 필터와 AOP에 대해 더 공부해야할 것 같습니다. 공통 로직을 따로

Naver Blog

[자바] 백준 1038 : 감소하는 수 (브루트포스 + 백트래킹) / 문제 접근 방법 및 풀이 유도하기

[자바] 백준 1038 : 감소하는 수 (브루트포스 + 백트래킹) / 문제 접근 방법 및 풀이 유도하기 https://www.acmicpc.net/problem/1038 1038번: 감소하는 수 1038번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 검색 감소하는 수 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 512 MB 20262 5957 4724 32.374% 문제 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 출력하는 프로그램을 작성하시오. 0은 0번째 감소하는 수이고, 1은 1번째 감소하는 수이다. 만약 N번째 감소하는 수가 없다면... www.acmicpc.net 골드5 난이도의 브루트포스 문제 문제 설명 및 해결 방법 구하기 문제는 N번째 감소하는 수를 구하는 문제입니다. 감소하는 수는

Naver Blog

[K-해커톤] API 서버 제작 #8 : 유저 맞춤형 상품 추천 및 태그 선택시 관련 상품 return 해주기

[K-해커톤] API 서버 제작 #8 : 유저 맞춤형 상품 추천 및 태그 선택시 관련 상품 return 해주기 https://github.com/sosow0212/WhereHaveYouBeenToGo GitHub - sosow0212/WhereHaveYouBeenToGo: K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. Contribute to sosow0212/WhereHaveYouBeenToGo development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 오늘은 유저의 태그에 맞는 맞춤형 상품 추천 기능과, 태그 선택시 그 태그에 해당하는 상품을 조회하는 기능을 구현했습니다. 태그 선택시 상품 조회는 인스타그램 및 점핏 사이트의 태그 검색과 유사하다고 생각하시면 됩니다. 프로젝트 주제가 '성향이

Naver Blog

[자바] 백준 14888 연산자 끼워넣기 / 브루트포스(백트래킹) 풀이, 문제 접근 방법 및 유사 문제

[자바] 백준 14888 연산자 끼워넣기 / 브루트포스(백트래킹) 풀이, 문제 접근 방법 및 유사 문제 질문 및 피드백은 환영입니다 :) https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 문제 N개의 수로 이루어진 수열 A 1 , A 2 , ..., A N 이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(×) 1개, 나눗셈(÷) 1개인 경우에는 총 6... www.acmicpc.net 문제 해설 및 분석 실버1 난이도의 브루트포스(백트래킹 이용) 문제입니다. 코딩테스트에

Naver Blog

[K-해커톤] API 서버 제작 #6 : 거래 내역 및 리뷰 처리하기

[K-해커톤] API 서버 제작 #6 : 거래 내역 및 리뷰 처리하기 https://github.com/sosow0212/WhereHaveYouBeen GitHub - sosow0212/WhereHaveYouBeen: K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 REST API 서버입니다. K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 REST API 서버입니다. Contribute to sosow0212/WhereHaveYouBeen development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 오늘은 거래 내역 및 리뷰 처리를 구현하였습니다. 이 두 가지를 위해서 테이블 설계에 고민할 점이 있었습니다. 1. 리뷰 작성의 유무는 어떻게 확인하는가? 2. 사용자가 동일한 상품을 여러 번 이용할 경우 리뷰는 어떻게 처리할 것인가? 이 두 가지를 한 번에 해결하기 위해서 History

Naver Blog

[K-해커톤] API 서버 제작 #7 : 유저 관련 API 만들기

[K-해커톤] API 서버 제작 #7 : 유저 관련 API 만들기 https://github.com/sosow0212/WhereHaveYouBeenToGo GitHub - sosow0212/WhereHaveYouBeenToGo: K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. Contribute to sosow0212/WhereHaveYouBeenToGo development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 오늘은 유저 관련 API 를 구현했습니다. 유저 API 에는 다음과 같은 기능이 들어있습니다. '유저 정보 조회, 정보 수정, 탈퇴, 현재 진행중인 거래 확인' 이걸 지금 만드는 이유는, 서버의 핵심 기능을 모두 구현하고 유저 조회를 구현하기 위해서입니다. 서버의 핵심기능이 담긴 테이블들

Naver Blog

[Spring] 서블릿 필터 & 스프링 인터셉터

현재 진행 중인 모든 프로젝트에서 고민하고 있는 부분이 있습니다. 현재 제가 만든 스프링 프로젝트에서 인증은 대부분 컨트롤러 레이어에서 처리합니다. 이 부분은 컨트롤러와 서비스 레이어 사이에 필터 계층을 두고 거기서 처리하는게 좋다고 현업에 계신 선배님에게 조언을 들었습니다. 이걸 필터 계층으로 옮기기 위해서 사전 공부가 필요하다고 생각했고, 마침 최근에 우아한 Tech 에서 좋은 테크톡이 업로드 되어서 영상의 내용과 저의 생각을 더해서 올려봅니다. 서블릿 필터 Filter는 J2EE 표준 스펙으로, Servlet API 2.3부터 등장했다. Dispatcher Servlet에 요청이 전달되기 전과 후에 부가작업을 처리하는 객체이다. 서블릿 필터에서는 init, doFilter, destroy 메서드를 제공한다. FilterConfig 는 필터의 정보를 담고있는 객체이고, 매개변수로 final을 붙여서 활용한다. doFilter 메서드에서는 final을 붙여 FilterChain 매

Naver Blog

[K-해커톤] API 서버 제작 #1 프로젝트 생성 및 초기 작업 / Member & Sign API

[K-해커톤] API 서버 제작 #1 프로젝트 생성 및 초기 작업 / Member & Sign API https://github.com/sosow0212/WhereHaveYouBeen GitHub - sosow0212/WhereHaveYouBeen: k-해커톤 '어디까지 가봤니?' 서비스의 API 서버입니다. k-해커톤 '어디까지 가봤니?' 서비스의 API 서버입니다. Contribute to sosow0212/WhereHaveYouBeen development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 프로젝트 리팩토링시 아래 내용들은 일부 바뀔 수 있습니다. K-해커톤 결선에 진출하고 본격적으로 '어디까지 가봤니?' 서비스의 API 서버를 개발하게 되었습니다. 먼저 스프링 서버의 설정은 다음과 같습니다. 일단 프로젝트 기본 설정은 다음과 같습니다. Java, Gradle Java11, JDK16, Jar Sp

Naver Blog

[K-해커톤] '어디까지 가봤니?' 서비스 API 서버 제작 계획

[K-해커톤] '어디까지 가봤니?' 서비스 API 서버 제작 계획 해커톤 결선 진출을 해서 프로토타입이 아닌, 본격적으로 프로젝트 제작을 시작했습니다. 팀원은 프론트엔드 2명, 머신러닝 1명, 백엔드 1명으로 구성되어있고, 저는 스프링부트를 이용한 전반적인 API 서버 제작을 맡았습니다. 또한 머신러닝을 활용하기 위해서 Python Flask 프레임워크를 이용해서 서버를 총 두 개 구현할 예정입니다. 본 게시글은, 추후에 구체적인 설계 회의를 진행하면서 더욱 채워져나갈 예정입니다. 서버 제작 예상 순서 1. Spring 서버 제작 2. Flask 서버 제작 3. AWS 배포 4. 연동 API 설계 추후 사진 첨부 예정

Naver Blog

[K-해커톤] 제10회 해커톤 본선 합격 및 결승 진출

정말 지옥의 해커톤 본선이 드디어 끝났습니다. 그동안 많은 회의도 하고, 서로 고민도 많이 했습니다. 발표를 제가 했는데, 하필 괌 여행간게 발표 전 주라서 어쩔 수 없이 괌에서 새벽까지 회의도 같이 참여했습니다. 단체 아이디어가 중요한 만큼 한 명이라도 제대로 안 하면 그대로 팀원들이 피해를 받습니다. 사실 떨어졌으면 속상할 뻔 했지만, 합격을 해서 정말 하나도 아깝지가 않고 오히려 너무 기분이 좋은 것 같습니다! 팀원들과 PPT 및 자료들을 만들고 발표 준비를 했습니다. 이번 본선 발표에서 합격해야 결선을 가고, 장려상 이상을 확보하기 때문에 발표 대본도 열심히 외웠습니다. 코로나로 인해 3년만에 처음으로 오프라인 발표를 한다고 그래서 도곡 카이스트로 갔습니다. 단상 앞에 서서 발표하기 때문에, 집에서 아무리 연습해도 환경이 달라서 어색할 수 있습니다. 그래서 조금 일찍 출발했습니다. 여기서 발표 연습 좀 미리 하다가 자료 세팅하고 발표를 진행했습니다. 발표를 마치고 다들 결과

Naver Blog

[K-해커톤] 제10회 해커톤 선발팀 합격

[K-해커톤] 제10회 해커톤 선발팀 합격 전국 대학생 개발자끼리 아이디어톤 + 메이커톤으로 겨루는 K-해커톤은 매년 한 번씩 열립니다. 언젠가 지원해야겠다라는 생각을 가지고 이번년도에 드디어 뜻이 맞는 같은 과 형들과 동생 한 명, 총 4명의 인원으로 지원을 했습니다. K-해커톤의 이번 주제는 사회문제 및 공익문제 혹은 지역의 특수성을 반영한 다양한 자유주제를 바탕으로 ICT 기술을 활용하는 챌린지입니다. 즉 아이디어톤 + 메이커톤이 결합된 해커톤이라고 보면 됩니다. 저희는 지역의 문제점을 주제로 웹앱 플랫폼 구축 및 개발을 기획했습니다. 사실 그동안 진행 과정을 포스팅 하고 싶었는데, 문제가 생길 수 있기에 조금 미뤘다가 결과가 나와서 오늘은 지금까지의 상황을 포스팅 해보려고 합니다. 이번 K-해커톤에는 엄청나게 많은 사람들이 참가했습니다. 저희 대학교의 상징 동물인 백마를 팀이름으로 걸고 자랑스럽게 통과했습니다 아이디어톤을 위해서 무슨 아이디어 수집? 그런 것도 많이 했는데

Naver Blog

[PS] 네트워크 프로토콜 중간고사 셀프 퀴즈

네프 시험 셀프 퀴즈 internet 과 Internet의 차이점 2. 이더넷의 통신 원리를 쓰고, 충돌시 재전송 처리는 어떻게 되는지? 3. 네트워크 계층, 전송 계층, 응용 계층의 프로토콜을 1개씩 쓰시오 4. MAC 주소는 hop-to-hop 통신을 한다 (O, X) 5. IP 주소는 End-to-end 통신을 한다 (O,X) 6. 분할과 재조립은 어느 layer에서 하는지? 그리고 이 layer의 데이터 형식은? 7. IPv4의 주소가 맞는지 판단해라 192.114.35.3.1 (O,X) 8. A 네트워크와 B 네트워크 간 통신을 할 때, MAC으로 A-B 통신을 할 수 있다. (O, X), 이유도 쓰시오 9. TCP/IP 와 OSI의 차이점을 쓰시오 10. AC : 1B : 3C : BB : 1A : BC 는 어떤 주소인가? 11. IPv6 와 IPv4의 차이점 2가지만 쓰시오 12. B 클래스의 서브넷 마스크를 쓰시오 13. 논리 링크 제어 (LLC) 란 왜 사용하는가?

Naver Blog

[자바] 프로그래머스 : 폰켓몬 / 해시 문제

[자바] 프로그래머스 : 폰켓몬 / 해시 문제 오랜만에 프로그래머스 코딩테스트 고득점 kit 문제에 들어가보니 해시 파트에 문제 하나가 추가 되었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 ... school.programmers.co.kr Level 1

Naver Blog

[자바] 프로그래머스 : 최소직사각형 / 완전탐색(브루트포스)

[자바] 프로그래머스 : 최소직사각형 / 완전탐색(브루트포스) https://school.programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 최소직사각형 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면... school.programmers.co.kr Level 1 난이도의 완전탐색 문제입니다. 문제 해설 명함 지갑의 사이즈를 구하는 문제입니다.

Naver Blog

[자바] 백준 : 5014 스타트링크 BFS 풀이 및 문제 접근법 / 유사 문제

[자바] 백준 : 5014 스타트링크 BFS 풀이 및 문제 접근법 / 유사 문제 https://www.acmicpc.net/problem/5014 5014번: 스타트링크 5014번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 질문 검색 스타트링크 다국어 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 34131 10808 8222 33.457% 문제 강호는 코딩 교육을 하는 스타트업 스타트링크 에 지원했다. 오늘은 강호의 면접날이다. 하지만, 늦잠을 잔 강호는 스타트링크가 있는 건물에 늦게 도착하고 말았다. 스타트링크는 총 F층으로 이루어진 고층 건물에 사무실이 있고, 스타트링크가 있는 곳의 위치는 G층이다. 강호가 지금 있는 곳은 S층이고, 이제 엘리베이터를 타고... www.acmicpc.net 골드5 난이도의 BFS 문제입니다. 문제 해설 이 문제에서는 엘레베이터로 목표한 층을 갈 수 있는지 알아내는 문제입니다. 엘레베이터는 버튼이 U(up),

Naver Blog

[K-해커톤] API 서버 제작 #2 서비스 핵심 태그 기능만들기 - Tag API

[K-해커톤] API 서버 제작 #2 서비스 핵심 태그 기능만들기 - Tag API https://github.com/sosow0212/WhereHaveYouBeen GitHub - sosow0212/WhereHaveYouBeen: k-해커톤 결승 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. k-해커톤 결승 프로젝트 '어디까지 가봤니?' 서비스의 API 서버입니다. Contribute to sosow0212/WhereHaveYouBeen development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 프로젝트는 추후에 리팩토링 될 수 있기 때문에, 블로그 글과 깃허브 소스코드가 맞지 않을 수 있습니다. 오늘은 저희 서비스의 핵심 기능은 태그 기능을 만들었습니다. 태그 기능 자체는 처음 만들어봤는데, 생각할 부분이 많았습니다. 테이블 설계 고민 원래 태그는 정해진 값을 사용하는게 맞지만, 추후에 어떻

Naver Blog

[K-해커톤] API 서버 제작 #3 상품 등록 API 제작 및 Entity 리팩토링(Member, Tag)

[K-해커톤] API 서버 제작 #3 상품 등록 API 제작 및 Entity 리팩토링(Member, Tag) https://github.com/sosow0212/WhereHaveYouBeen GitHub - sosow0212/WhereHaveYouBeen: K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 REST API 서버입니다. K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 REST API 서버입니다. Contribute to sosow0212/WhereHaveYouBeen development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 추후에 리팩토링으로 코드가 달라질 수 있기 때문에, 깃허브에 올라온 소스코드는 본 포스팅과 일치하지 않을 수도 있습니다. 오늘은 가이드의 입장에서 상품 등록하는 것을 처리해보고자 합니다. 가이드의 관광 상품 등록에는 관광에 대한 지역 및 정보가 들어

Naver Blog

[자바] 백준 : 1464 뒤집기 / 그리디 + 문자열

[자바] 백준 : 1464 뒤집기 / 그리디 + 문자열 https://www.acmicpc.net/problem/1464 1464번: 뒤집기 3 1464번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 검색 뒤집기 3 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 1001 324 257 36.096% 문제 세준이는 어떤 문자열 S를 뒤집으려고 한다. 문자열을 뒤집는 방법은 문자열의 길이를 N이라고 하자. i만큼을 뒤집는다는 소리는 그 문자열의 처음부터 정확하게 i개의 문자를 역순으로 뒤집는 것이다. 세준이는 1부터 N까지 수를 차례대로 생각한다. 그리고, 뒤집을지 안 뒤집을지 선택할 수 있다. 예를 들어, S="BCDAF" 이고, 세준이가 ... www.acmicpc.net 골드5 난이도의 그리디 + 문자열 문제입니다. 문제 해설 문자열 S에서 i만큼 뒤집으면, 문자열의 처음 문자부터 i개의 문자를 역순으로 뒤집는다는 뜻입니다. 문자는 뒤집을 수도

Naver Blog

[K-해커톤] API 서버 제작 #4 : 서버의 두 번째 핵심 기능 매칭 API 제작

[K-해커톤] API 서버 제작 #4 : 서버의 두 번째 핵심 기능 매칭 API 제작 https://github.com/sosow0212/WhereHaveYouBeen GitHub - sosow0212/WhereHaveYouBeen: K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 REST API 서버입니다. K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 REST API 서버입니다. Contribute to sosow0212/WhereHaveYouBeen development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 본 포스팅에 나오는 소스코드는 추후에 리팩토링으로 인해 깃허브 코드와 다를 수 있습니다. 아래 설명은 전반적인 흐름을 나타내므로 자세한 코드는 깃허브에서 보실 수 있습니다. 오늘은 서비스의 두 번째 핵심 기능인 매칭 기능을 구현했습니다. 매칭을 신청하고 나면 두 가지 경우

Naver Blog

[K-해커톤] API 서버 제작 #5 : 거래 기록 테이블 추가 및 방향 잡기

[K-해커톤] API 서버 제작 #5 : 거래 기록 테이블 추가 및 방향 잡기 https://github.com/sosow0212/WhereHaveYouBeen GitHub - sosow0212/WhereHaveYouBeen: K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 REST API 서버입니다. K-해커톤 결승 제출 프로젝트 '어디까지 가봤니?' 서비스의 REST API 서버입니다. Contribute to sosow0212/WhereHaveYouBeen development by creating an account on GitHub. github.com 질문 및 피드백은 환영입니다 :) 본 포스팅에 나오는 소스코드는 추후에 리팩토링으로 인해 깃허브 코드와 다를 수 있습니다. 아래 설명은 전반적인 흐름을 나타내므로 자세한 코드는 깃허브에서 보실 수 있습니다. 오늘은 거래 기록을 나타내주는 History 테이블 하나를 생성하고, 일부 코드 리팩토링을 할 예정입니다.

Naver Blog

[AWS] cron 으로 스프링 서버 자동 재시작 스크립트, 배포 마무리 및 문제점

[AWS] cron 으로 스프링 서버 자동 재시작 스크립트, 배포 마무리 및 문제점 지난 번에 이어서 cron으로 스프링 서버 재시작을 하기 위해서 mkdir 명령어를 이용해 cron-restart 디렉토리를 만들어줍니다. vi 명령어를 이용해서 spring-stop.sh 를 만들어줍니다. pgrep에서 파일명은 자신의 jar파일 명으로 해주세요. chmod 로 실행권한을 주고 실행해봅시다! 서버가 잘 꺼지는지 확인해보면 됩니다. Spring을 실행하는 파일 만들기 spring-restart.sh 위와 같은 파일을 만들어주는데, 경로는 본인의 경로를 이용하셔야합니다. nohup java -jar /home/ubuntu/aws-ver1/build/libs/aws-ver1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out & ==> 테스트시, 위에 코드로 스프링 서버 실행 spring-restart.sh 서버 재시작 스크립트입니다. chmod로 실행권한 주세요! 출처

Naver Blog

스프링부트 커뮤니티 API 서버 만들기 #11 Authentication 관련 리팩토링 및 컨트롤러 단위 테스트 변경 (JUnit5 Authentication 처리)

스프링부트 커뮤니티 API 서버 만들기 #11 Authentication 관련 리팩토링 및 컨트롤러 단위 테스트 변경 (JUnit5 Authentication 처리) https://github.com/sosow0212/community GitHub - sosow0212/community: Main project - Community Restful API Server (with TestCode, Redis ...) Main project - Community Restful API Server (with TestCode, Redis ...) - GitHub - sosow0212/community: Main project - Community Restful API Server (with TestCode, Redis ...) github.com 질문 및 피드백은 환영입니다 :) 안녕하세요. 커뮤니티 API 서버 만들기 프로젝트 제작 포스팅을 오랜만에 올립니다. 오랜만에 올리는 이유는, 문제

Naver Blog

스프링부트 커뮤니티 API 서버 만들기 #12 JUnit5로 Service 단위 테스트 만들어보기

스프링부트 커뮤니티 API 서버 만들기 #12 JUnit5로 Service 단위 테스트 만들어보기 https://github.com/sosow0212/community GitHub - sosow0212/community: Main project - Community Restful API Server (with TestCode, Redis ...) Main project - Community Restful API Server (with TestCode, Redis ...) - GitHub - sosow0212/community: Main project - Community Restful API Server (with TestCode, Redis ...) github.com 질문 및 피드백은 환영입니다 :) 사실 TDD 방식에서 테스트 코드는 미리 작성해야합니다. 저는 공부하고 테스트 코드를 작성하고자 지금 작성하지만, 원래는 미리 작성하는게 맞습니다! 오늘은 지금까지 만든 서버의 Se

Naver Blog

[명지대 스프링 멘토링] 프로젝트 발표 및 멘토링 종료

[명지대 스프링 멘토링] 프로젝트 발표 및 멘토링 종료 방학 2달동안 진행한 멘토링이 드디어 끝이 났습니다. 따라와준 멘티들 너무 고생했습니다 오늘은 각 팀이 한 달동안 준비한 프로젝트를 발표 했습니다. A / B 팀 둘다 쇼핑몰을 주제로 잡았고, 공통적으로 JWT 와 JPA 사용 경험이 적어서 어려워했습니다. API 만드는 것 또한 공부를 각자 하다보니 이제는 잘 만드는 것 같습니다. 두팀 모두 노베이스에서 2달 동안 이정도 수준의 프로젝트를 만들었다는 건 진짜 대단한 것 같습니다. 다들 노력도 많이 했고, 그만큼 좋은 성과를 얻어서 저도 기분이 좋습니다 다들 피드백 참조해서 리팩토링 진행해보시길 바랄게요. A팀 프로젝트 결과물 https://github.com/JangAJang/ShoppingMall GitHub - JangAJang/ShoppingMall: 명지대 22년도 스프링 멘토링 A팀 프로젝트 명지대 22년도 스프링 멘토링 A팀 프로젝트. Contribute to Jan

Naver Blog

[자바] 백준 : 1759 암호만들기 (브루트포스 + 백트래킹 조합) 풀이 및 문제 접근법 / 유사 문제

[자바] 백준 : 1759 암호만들기 (브루트포스 + 백트래킹 조합) 풀이 및 문제 접근법 / 유사 문제 https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 1759번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 질문 검색 암호 만들기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 50924 23988 16593 44.629% 문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o... www.acmicpc.net 백트래킹을 이용해서 단어 조합을 구하는 브루트포스 유형이고, 골드5 난이도 문제입니다. 문제 해석 암호 해석을 위해, 임의 암

Naver Blog

[AWS] 타임존 설정 및 종료스크립트 작성, cron의 주기적 실행

먼저 지난 번에 이어 서버를 종료시켜보겠습니다. netstat -nlpt => 현재 실행중인 프로세스 확인 ps -ef ==> 프로세스 아이디 확인 위에 명령어로 위에 사진처럼 java -jar를 찾아줍니다. 저 PID 번호 기억하고 (서버마다 다름) kill -9 16469 명령어로 종료시켜주면 됩니다. 다시 위에처럼 노헙으로 다시 서버를 백그라운드 실행시켜줍니다. 다시 서버 들어가보면 위에 사진 처럼 로그가 잘 뜨는 걸 확인할 수 있습니다. 방금 과정은 표준 출력을 mylog.out 으로 변경한 것입니다. 타임존 변경 및 종료스크립트 코딩하기 cd ~ timedatectl 위에 명령어를 순서대로 입력하면 위와 같이 나옵니다. 이제 타임존을 서울로 바꿔보겠습니다. 위에 명령어로 잘 바꿀 수 있습니다. 먼저 우리는 위에서 타임존을 변경했으니, 서버를 재시작 하겠습니다. 먼저 우리 서버의 프로세스를 찾기위해서는 ps -ef | grep *.jar | grep -v grep | awk

Naver Blog

[자바] 백준 : 13565 침투 (DFS 완전탐색 문제) / 문제 이해 과정 포함

[자바] 백준 : 13565 침투 (DFS 완전탐색 문제) / 문제 이해 과정 포함 https://www.acmicpc.net/problem/13565 13565번: 침투 문제 인제대학교 생화학연구실에 재직중인 석교수는 전류가 침투(percolate) 할 수 있는 섬유 물질을 개발하고 있다. 이 섬유 물질은 2차원 M × N 격자로 표현될 수 있다. 편의상 2차원 격자의 위쪽을 바깥쪽(outer side), 아래쪽을 안쪽(inner side)라고 생각하기로 한다. 또한 각 격자는 검은색 아니면 흰색인데, 검은색은 전류를 차단하는 물질임을 뜻하고 흰색은 전류가 통할 수 있는 물질임을 뜻한다. 전류는 섬유 물질의 가장 바깥쪽 흰색 격자들에 공급되고, 이후에는 상하좌우로 인접한 흰색 격자들로 전달될 수 있... www.acmicpc.net 실버2 난이도의 DFS/BFS 문제입니다. DFS 처음 배울 때, 익숙해지기 좋은 문제라서 DFS로 풀어보겠습니다. 코드를 보기 전에 문제를 이해해보겠

Naver Blog

맥북 프로 M1 Pro 14인치 8G/512GB 후기

어제 기존에 쓰던 맥북이 고장났습니다. 작년 초에 산 맥북 에어 M1 인데, 외부 충격도 없었고 평상시처럼 노트북을 키니깐 아래 사진처럼 나오더라고요ㅠㅠ 억장 와르르 도대체 왜 그러는지 찾아보니깐 맥북 에어 M1 에 설탕이슈가 있더라고요. 판이 얇아서 해외에서도 국내에서도, 아무런 충격없이 액정이 나가는 경우도 있었고 살짝의 충격에도 깨진다고 그러더라고요. 하여튼 저는 아무런 충격도 없이 갑자기 저러니깐 어이가 없었습니다c 그래서 결국 수리를 맡길까 아니면 새로운 맥북을 살까 고민했는데, 기존 맥북에 램이 부족해서 새로운 맥 사기로 결심했습니다. 그래서 바로 쿠팡에 가서 찾아보다가 M1 Pro 14인치와 M2 모델 중 고민했는데 M2와 프로나 가격 차이가 얼마 안나서 그냥 프로로 넘어갔습니다. 그래서 결국 M1 Pro 14인치 + SSD 512G + RAM 8GB 모델로 갔습니다. 구매한지 하루만에 와서 너무 좋았는데,쿠팡 배송 왜이래요 ㅋㅋ 촤라 언제나 포장 뜯는 순간은 설레는 것

Naver Blog

[AWS] 첫 번째 배포를 해보자 - 1

[AWS] 첫 번째 배포를 해보자 - 1 이번 포스팅에서는 배포하는 방법에 대해 다룹니다. 이번 배포에 대해 간단한 흐름에 대해 말씀 드리면 다음과 같습니다. 1. 스프링부트 프로젝트를 만든다. 2. 깃허브 저장소에 올려둔다. 3. AWS에서 임대한 EC2에서 깃허브에 올린 프로젝트를 다운 받는다. 4. EC2에서 자바 가동 환경을 위해 JDK를 설치한다. 5. nohup 백그라운드 실행 6. 로그 남기기 이 과정대로 진행합니다. 위에 방법은 문제점이 있습니다. 따라서 본 방법은 단지 흐름을 이해하기 위한 배포라고 이해하시면 됩니다. 프로젝트 생성을 해줍니다. Java11, Gradle / Spring Web, Lombok 을 달아주고 간단한 컨트롤러를 만들어줍니다. HelloController package com.example.awsver1.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.web.b

Naver Blog

[명지대 스프링 멘토링] Git을 이용해서 협업하는 방법 A to Z

[명지대 스프링 멘토링] Git을 이용해서 협업하는 방법 A to Z 이 글을 봐도 잘 모르겠으면, 각 팀별로 몇 명씩 설명 해줬으니 꼭 물어봐서 숙지하세요! 아래 순서대로 진행하면 됩니다. 1. 깃허브 프로젝트 클론하기 위에 사진처럼 '각 팀 팀장의 레포지토리에 저장된 프로젝트'를 눌러서 Code 누르고 HTTPS 주소를 복사해줍니다. * Fork 떠서 자신 레포지토리에 있는 걸 클론하면 안됩니다! 그리고 인텔리제이를 켜서, 폴더열기로 바탕화면을 열어준 후에 아래 사진처럼 '터미널' 클릭 후 아래 명령어를 입력해줍니다. git clone 방금복사한주소 완료가 됐다면, 다시 인텔리제이 폴더 열기를 누른 후, 방금 클론한 프로젝트를 열어줍니다. 2. branch 생성하고, 코드 커밋 및 pull request 날리기 이제는 작업을 할 차례입니다. 클론한 프로젝트를 열고 터미널에 아래와 같은 명령어를 입력해서 branch 를 먼저 만들어주고, checkout을 해줍니다. git bran

Naver Blog

딥디크 탐다오 오드뚜왈렛 후기

안녕하세요. 오늘 잠실 롯데 에비뉴엘에 가서 탐다오 향수를 샀습니다. 원래 오늘 구매하고 싶었던 향수는 '탐다오, 오드우드, 모하비고스트' 세 개 중에서 하나를 사고 싶었습니다. 에비뉴엘에 딥디크와 톰포드는 있지만, 바이레도는 없어서 모하비고스트는 포기하고 우디 계열 향수를 사려고 두 곳을 갔습니다. 오드우드와 탐다오 둘다 우디 계열 향수이지만, 탐다오는 뭔가 더 우디한 느낌이고, 오드우드는 탐다오보다 덜 우디하지만 고급진 느낌이었습니다. 레이어드도 생각해서 탐다오로 결정했습니다. 딥디크 매장에 탐다오는 두 가지의 종류로 나뉩니다. 1. 오드퍼퓸 탐다오 75ml 2. 오드뚜왈렛 탐다오 50ml / 100ml 냄새는 거의 똑같지만, 오드퍼퓸 제품은 향료 함유량이 더 높기 때문에 더 오래 지속되고, 가격도 몇 만원 정도 더 비쌉니다. 오드뚜왈렛이나 오드퍼퓸 둘다 오래 가긴 하지만, 더 긴 제품을 원하신다면 오드퍼퓸 제품으로 가시는게 낫습니다. 저는 오드뚜왈렛 100ml 제품으로 구매했고

Naver Blog

[개발일기 #21] 편하게 가자

[개발일기 #21] 편하게 가자 이제 기존보다는 조금 여유롭게 마음 먹고 취업 준비를 할 생각입니다, 지금까지 정말 강박증에 가깝게 혹사시키면서 공부를 했는데 이게 맞나 싶습니다c 개발이 너무 재밌기도 하지만, 취업이라는 목표 또한 같이 있어서 부담을 안 느낄 수는 없는 것 같습니다. 사실 1~2년 늦게 취업해도 큰 문제는 없지만, 뭔가 성격상 조금이라도 늦으면 불안불안해서 이번에는 이런 마인드부터 좀 고쳐먹어야겠습니다. 작년부터 진행한 1일1커밋은 이제 1년을 거의 다 채워가고 백준은 드디어 골드1을 찍었습니다. 커밋과 백준 둘 다 작년에 시작할 때에는 이렇게 할 수 있을까 생각을 했지만 지금 보면 아무 것도 아닌 것 같다고 느꼈습니다. 물론 열심히 했지만 지금은 이게 당연하니깐 별 생각이 없는것 같더라고요 지금 돌이켜보면 굳이 강박증처럼 1년을 이렇게 보낼 필요가 있나 싶었습니다. 여행 갈 때에도 노트북을 들고 꼭 아침에 일어나서 커밋하고 그런 것 자체부터가 처음에는 의지였지만,

Naver Blog

2022 여름 괌 여행기

2022 여름 괌 여행기 최근에 4박5일 괌으로 누나들과 여행을 다녀왔습니다. 비행기 타는데 날씨가 너무 좋았습니다 괌에 도착하자마자 입국 심사를 받았습니다. 한국 사람이 얼마나 많이 가는지, 심사하시는 분들이 한국말도 쓰시더라고요 ㅋㅋ 기본적인 쉬운 영어로 몇 가지를 물어봅니다. 입국 심사를 마치고 렌트카 받으러 택시를 탔습니다. 한인 렌트카를 빌렸는데, 앞 범퍼도 다 나가고 차 상태가 시동도 꺼지고 말도 안 됐습니다. 진짜 할말이 많지만 참겠습니다..; 괜히 이상한데 추천 받아서 가지 마시고, 차량 관리 잘 되고 진짜 유명한 곳으로 가시는게 좋습니다. 괌에서 운전은 한국 면허증만 있으면 별도의 국제 면허 필요 없이 한 달까지 운전 가능합니다. 운전도 좌회전을 제외하고 한국이랑 거의 비슷했습니다. 남부투어를 위해서라도 꼭 하루는 빌리는게 좋습니다 '두짓타니 괌 리조트'에 숙소를 잡고 갔습니다. 오션뷰인데, 한국 오션뷰랑 다르게 바다가 정말 깨끗해서 27층에서도 바닷물 안이 다 보

1 2 3 4 5 6 7 8 9