공부 (113) 썸네일형 리스트형 [프로그래머스] 햄버거 만들기 첫번째 풀이가 시간초과가 났다. 원인은 반복문 안의 indexOf()는 시간복잡도가 높음! stack 자료구조를 사용해봄. 이 자료구조는 First In Last Out 마지막에 들어온게 가장 먼저 나가는 식. 이 자료구조를 선택한 이유는 순서대로 1231이 들어올때마다 로직이 돌아야 한다. 따라서 마지막에 어떻게 값이 들어오는지가 중요하기 때문에 stack을 사용. 마지막 4개의 값들을 체크해주기만 하면 된다. 풀이 // 첫번째 풀이 방법 : StringBuilder를 이용해 ingredient값을 append() // -> while()문을 이용해 StringBuilder의 indexOf를 이용해 "1231"을 찾음 // -> 있으면 delete(index, index+4)해서 지워줌, answer+.. 23.12.18 오늘 쿠키로 로그인 하기 완! 하다가 마주쳤던 몇가지 트러블 슈팅기록! 쿠키를 이용해서 인증 처리를 하다가 만난 에러. 구글링을 해보니 쿠키값에는 인코딩된 값을 넣어줘야 한다고 한다. 다시 생각해보니까 예전에 쿠키값을 다룰 때 벨류에 값을 넣어줄 때는 이렇게 인코딩된 값을 넣어줬던 기억이 난다. token = URLEncoder.encode(token, "utf-8").replaceAll("\\+", "%20"); // Cookie Value 에는 공백이 불가능해서 encoding 진행 요렇게 URL로 인코딩된 값을 넣어주니 예쁘게 잘 들어간다. 아직 쿠키를 다루는게 완벽하진 않다. 확실히 헤더에 실어서 보내는것보단 몇가지 로직이 추가된다. 이렇다면 쿠키에 인증 정보를 담아서 보내는 것과, 헤더에 인증 .. 23.12.15 오늘의 뻘짓.. 인증/인가 파트를 쌩으로 모두 구현해보려고 했는데 도저히 사이즈가 안나왔다. 역시나 나중에 튜터님께 여쭤보니 이걸 쌩으로 구현하는 것보단 흐름을 이해하는데 더 초점을 두는 게 더 낫다는 말. 물론 나도 그게 좋을거 같긴 했는데.. 그래도 내가 박으면서 흐름을 좀 더 구체적이고 디테일하게 이해할 수 있는 시간! 내 프로젝트 MyFavorite을 이제 더 촘촘히 구현을 해보자!! 23.12.14 오늘부터 시작되는 개인 프로젝트! 나만의 음악 게시판 만들기. 이번 프로젝트의 목표는 기존 코드를 복붙 금지. 내가 직접 처음부터 할 수 있는 최대한 직접 짜기. 어려울 것 같은 부분(인증/인가파트)가 있지만, 그래도 내가 자주 해왔던 작업이니까 할 수 있다고 믿고 해보련다. 이렇게 해야 내가 지금까지 공부했던 것 중에서 뭐를 아는지? 뭘 모르는지 알 수 있겠다 싶었다. 그냥 인터넷에 있는 코드들을 긁어와서 사용하는 것도 방법이겠지만, 그건 이제 내가 내손으로 모두 할 수 있을 때 내 입맛대로 커스텀 할 수 있을거라 생각한다. 오늘 구현한 기능들은 다음과 같다. 첫번째로 회원가입 기능. 지금은 내가 혼자 쓰는 게시판이지만, 언젠가 배포할 날을 기대하며! [ ] 닉네임, 비밀번호, 비밀번호 확인을 requ.. 23.12.13 밀린 알고리즘 문제를 풀었다. 오늘 알고리즘을 공부하면서 느꼈던 것중 가장 컸던 것은 적절한 자료구조를 사용한다면 시간복잡도나 로직에 굉장히 좋다는 것. 프로그래머스의 "대충만든 자판" 문제를 풀 때 map을 이용해서 풀었더니 굉장히 잘 풀렸다. 처음 어떻게 해야할지 생각하는 것도 힘들었는데, map을 이용하니까 아주 간단한 풀이가 되더라.비슷하게 "숫자 짝꿍"도 다시 풀어봐야겠다. "숫자 짝꿍"도 map을 이용한다면 더 쉽게 풀 수 있을 것 같다. 오우 "숫자 짝꿍"을 생각보다 빨리 풀어버렸다. 내가 틀렸던 이유는 테스트 케이스11~15에서 시간초과가 떴었다. 그 이유는 String answer += i; 연산을 해서다. 공부를 해보니 String에 +연산을 하면 그냥 있는 문자열에 추가를 하는게 아닌.. 23.12.12 심화 +주차 시작 오늘부터 jpa 심화 과정을 밟는다. jpa는 jdbc에 편의성을 개선시킨 버전이기 때문에 처음은 jdbc부터 시작! 처음부터 인텔리제이가 말썽이였다. 스크린샷은 못찍었지만, 대충 내용은 인텔리제이가 이미 실행되고 있어 실행이 불가능하다는 것. 재부팅으로 해결! 두번째로는 test 코드를 작성하는데 한글이 깨져서 나왔다. 해결방법은 인텔리제이의 help에 가서 editCustomVM Option idea64.exe.vmoptios에서 맨 아래에 -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8 추가를 해주고 인텔리제이 재시작! 오늘은 이상하게 인텔리제이가 말을 안듣는 날.. 그동안 편하가 썼던 JPA를 안쓰고 JDBC만 쓰려니 여간 답답한게 아니다.. .. 23.12.11 팀프로젝트 발표까지 마쳤다. 이번 발표도 내가 했다. 이렇게 캐주얼한 분위기의 발표는 기회가 될 때마다 해야 된다고 생각했다. 나는 발표가 정말 너무 어렵고 너무 떨리지만, 이렇게 캐주얼하고, 준비가 덜된 상태에서도 발표를 할 수 있다면 피해선 안된다. 이런 경험들이 중요한 순간에 긴장을 덜어주고, 익숙해지겠지? 아무튼! 오늘 팀프로젝트를 마친 기념으로 프로젝트 회고를 진행해보자. [프로젝트 초반 나의 소극적 의사소통] 기본적인 사항은 지난 한달동안 진행했던 것들과 다르지 않다. 나는 이번에 인증/인가 파트를 맡았고, 유저 도메인을 맡아서 구현했다. 지난 프로젝트에서 했던 것들을 가져와서 쓰려니 이슈가 한개 발생했다. 내 코드 스타일과 팀원들과의 코드 스타일이 다르기 때문에 커스텀을 해줘야 한다는 것. .. 23.12.08 팀플을 마무리! 기본적으로 우리가 처음 기획했던 기능들은 모두 완료했다. 추가로 기능이 구현 된 것은 3개다. [백오피스] 1. 건우님이 구현하신 백오피스. 관리자 권한을 갖는 user는 막강한 권력을 휘두룰 수 있도록 했다. 게시글 수정/삭제 등 인증 정보가 필요한 api 요청을 할 수 있도록 구현이 됐다. 여기서 좀 더 디벨롭을 할 수 있다면 api 요청을 /api/admin으로 하면 더 예쁜 그림이 나올 것 같긴한데 아직 그부분까지는 다듬지는 못했다. [동적 쿼리] 2. 성훈님이 구현하신 쿼리/파람을 이용해 동적 쿼리 생성 솔직히 말해서 이거 그냥 툭 던진 거였다.. 이거 안어려울 줄 알았으니까!!! 동적 쿼리를 던지는게 생각보다 너무 어려웠다. 우리의 프로젝트는 mbti별 게시판 조회를 기획했다... 23.12.07 비상 초비상 [로그아웃 기능 구현 빵꾸] 로그아웃 기능 구현을 그냥 아예 잘못했다. 잊고 있었다. 내가 구현한게 아니었던 건데, 내가 테스트를 안하고있었다. 생각을 해보니 로그아웃은 jwt에서 방법이 없다. 왜냐? 클라이언트에게 넘겨준 토큰은 서버의 손을 떠났기 때문에(무상태성) 컨트롤 할 수 없다. 클라이언트가 가지고 있는 토큰에는 jwt 사인이 된 토큰이 있다. 사인이 된 토큰을 서버에 가져온다면 인증은 오케이다. 언제까지? 만료기한이 지나기 전까지! 그렇다면 서버는 만료 기한을 짧게 줄 수 밖에.. 그렇다면 유저는 불편한 경험을 하겠지? 조금밖에 사용을 안했는데 벌써 나가라고 하는게 마치 내가 노래방 다닐적 경험같군.. 그렇다면 토큰을 계속해서 갱신하면 된다. 솔루션은 토큰의 만료기한을 줄이고, 계.. 23.12.06 팀플을 본격적으로 한 후, 오늘 팀원들과 내가 기능 구현한 코드들을 합치면서 코드 리뷰를 진행했다. 역시 여러 사람들과 코드를 합치는게 진짜 어렵다. 깃부터 아주 말썽이였다. 오늘 내가 밥먹을 타이밍에 마침 딱 깃에서 머지할 때 문제가 생겼다..(내가 한 머지가 문제였던 것.) 밥도 못먹고 일단 문제부터 수정했다. 이유를 잘 알 수 없는데 내가 맡은(User도메인) Repository가 두개였다. 이유가 짐작은 가지만 정확한 이유를 찾기 전에 일단 수습부터 했다. 내가 짐작하는 이유는 이것. UserRepository의 위치가 애매했다. Repository 패키지 안에 있지 않고 혼자 따로 나와 있길래 새로 Repository 패키지를 만들어서 넣어놨는데, 머지할 때 뭔가 이상하게 합쳐졌나보다. 그래서 .. 이전 1 2 3 4 5 6 7 8 ··· 12 다음