일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- @jsonproperty
- 스프링의 정석
- Kafka
- 시큐리티
- 패스트캠퍼스
- 스웨거
- EC2
- 항해99
- 개인프로젝트
- MYSQL
- 쇼트유알엘
- CentOS
- WEB SOCKET
- 웹개발
- 프로그래머스
- Spring Security
- AWS
- JWT
- DB
- 데이터베이스
- 생성자 주입
- JavaScript
- docker
- emqx
- visualvm
- 남궁성과 끝까지 간다
- 스파르타코딩클럽
- Spring
- 카프카
- java
- Today
- Total
목록전체 글 (337)
Nellie's Blog
오늘 공부한 내용 트러블슈팅 1. 2. 소스트리에서 commit후, push가 안되는 문제.. 터미널에서 해결 khj@DESKTOP-TONFSUI MINGW64 ~/Desktop/athumb (cbjung) $ git branch * cbjung khj@DESKTOP-TONFSUI MINGW64 ~/Desktop/athumb (cbjung) $ git checkout -b error: switch `b' requires a value khj@DESKTOP-TONFSUI MINGW64 ~/Desktop/athumb (cbjung) $ git checkout -b hjkim2 Switched to a new branch 'hjkim2' khj@DESKTOP-TONFSUI MINGW64 ~/Desktop/at..
오늘 공부한 내용 트러블슈팅 1. 데이터베이스에 값이 전달되지 않음 → id값을 에 넣어야 하는데 과 에 생긴 문제 2. 버튼이 가운데정렬이 되지 않은 문제 → style 에서 } 로 닫지 않아 생긴 문제 3. 디비에서 데이터를 가져오지 못하는 문제 → 몽고디비 폴더 이름을 제대로 설정하지 않아서 생긴 문제. user 에서 athumb로 수정하니 해결 4. 메인페이지에서 로그인을 클릭하니 에러가 나는 문제 → 를 제대로 설정하지 않아서 생긴 문제. - 잘못된 코드 로그인 - 수정한 코드 로그인 5. 로그인 화면에서 쿠키 전송 이후 코드 진행 오류의 문제 → 아래 한줄을 login_hj.html에 추가하지 않아서 생긴 문제 - 개발자 도구에서 , network - paload에서 값이 전송되는지를 파악하기..
1. Github에 있는 저장소(Repository)를 Clone하기 깃헙 코드 복사하여 2번에 붙여넣기 클론 후 전체선택 하고 Pull ! 2. 프로젝트를 Github로 Commit / Push하기 커밋 - 선택해서 파일 스테이지로 올려주고 - 코멘트작성 - 커밋 - Pull! 리모트 브랜치를 열어보면 HEAD와 main이 있다. HEAD는 현재 작업중인 브랜치를 의미한다. 지금은 HEAD와 main의 차이가 없지만, 이후에 프로젝트를 진행하다 보면 branch와 merge 과정을 다수 거친다. 임의의 branch에서 checkout을 받으면, 해당 branch가 HEAD가 된다. https://velog.io/@jkh9615/%EC%86%8C%EC%8A%A4%ED%8A%B8%EB%A6%ACsource..
1. 회원가입 기능 1) 해시함수란? 알고리즘의 한 종류로서 임의의 데이터를 입력 받아 항상 고정된 길이의 임의의 값으로 변환해주는 함수. 회원가입 창에서 비밀번호를 입력하면 그대로 저장할 수 없다. 개발자도 모르고 아무도 알 수 없게 해야하기 때문에, 해시함수를 사용해서 암호화 해야 한다. pw_hash = hashlib.sha256(pw_receive.encode('utf-8')).hexdigest() 디비에 이렇게 저장된다. 암호화를 한 값은 해커가 가져가도, 이 암호가 어떤 비밀번호인지 해석할 수 없다. 우리가 회원가입에 사용할 암호화기술은 해시함수 sha256 이다. 비밀번호를 sha256 방법(=단방향 암호화. 인코딩만 가능하고 디코딩 불가. 풀어볼 수 없음)으로 암호화해서 저장한다. SHA2..
오늘 공부한 내용 프리온보딩이 끝나면서, 새로운 팀이 구성되었다. 미니프로젝트를 기획하고 4일만에 배포하라는 미션을 받았다. 금일 6시까지 SA를 제출하고, 7시에 로그인/회원가입세션을 듣고 8시20분에 기술매니저님 코칭을 받았다. 로그인 / 회원가입 세션 강의내용 - 회원가입 : 해시함수 사용 (알고리즘의 한 종류로서 임의의 데이터를 입력 받아 항상 고정된 길이의 임의의 값으로 변환해주는 함수) - 로그인 : JWT 사용 (JSON Web Token의 줄임말로, JSON 객체를 사용해 정보를 안정성 있게 전달하는 웹표준) 깃허브 브랜치 생성 - 깃허브 자체에서 생성하는 방법과, 명령어 코드로 생성하는 방법 두가지가 있다. 나는 깃허브 내에서 팀원명으로 구성된 4개 브랜치를 생성하였다. 어려웠던 내용 로..
팀명 : 10조 일자 : 11/14 - 11/17 1. 프로젝트 명 어떰b (A Thumb) 2. 소개 내가 좋아하는 브랜드의 상품 후기가 한번에! 관심 브랜드 별로 상품 후기를 게시하고 댓글로 소통함으로써 내게 알맞는 상품을 찾아 구매하도록 정보를 공유하는 패션아이템 플랫폼입니다. 3. 와이어 프레임 1) 로그인 페이지 2) 회원가입 페이지 3) 글 목록 페이지(메인 페이지) - 목록이 많아야 하기 때문에 나이키, 아디다스 홈페이지에서 크롤링으로 당겨오기 4) 글 작성 페이지 - 구매링크 붙일 때는 쿠팡 링크 (법적으로 안전) 붙이기 - 추후 문제 없도록 robot.txt 확인해서 사용할 것 - 사진 첨부는 갤러리 사진이 아닌 url 붙일 것(손이 많이 가기 때문에 주특기 프로젝트 때 구현 하기) 4...
오늘 공부한 내용 오전 8시부터 오후9시까지 도서관에서 공부했다. 인프런 강의 게시판 63강 완강!! 게시판 코드 쭉 복습. 코드를 쭉 보다 보니까 이해가 좀 되는 것 같다! 배포도 시도 했으나 실패했다...ㅜㅜ 어려웠던 내용 flask는 배포가 간단했는데 spring은 뭐가 많다.. 배포하려고 리눅스에 jdk 등등을 설치하려 하는데 yum설치를 해야해서 업데이트?를 하래서 했다가 yum설치를 하려고보니 또 오류나서 vi를 수정해야 한대서 수정했다가,,,, 또 오류나고.... 오류의 늪에 빠졌다. 좀 해결하려고 하니 이번엔 또 톰캣이 말썽이었다. 원래 잘 열리던 게시판도 안 열렸다. 톰캣을 또 지우고 다시 깔고...... 거의 두시간을 톰캣오류를 못찾아서 헤맸다ㅠ.. 하 증말...;; 내일 다시 해봐야겠..
55. 글 작성하기1 로그인한 사용자가 게시글 작성기능 구현하기. 1. 글쓰기 버튼 클릭시 주소창에 인덱스 번호 나타내기 로그인을 하고, 자유게시판을 클릭해보면 주소창에 인덱스번호가 나타난다. 그런데 글쓰기를 누르면 인덱스번호가 나타나지 않는다. 어떤 게시글에서 작성한 글인지 알아야 데이터를 저장할 수 있기 때문에, 파라미터로 전달 될수 있도록 세팅하자. BoardController에서 @RequestParam으로 board_info_idx받아오고, board/main.jsp에 아래와 같이 수정하기 2. write.jsp에 폼 커스텀태그 세팅하기 & BoardController에 writeContentBean주입받기 write.jsp에 modelAttribute 추가하기. BoardController에 ..
오늘 공부한 내용 오전 8시부터 오후1시까지 도서관에서 공부했다. 인프런 강의 게시판 60-62강 페이징처리 등 어려웠던 내용 페이징처리가 어려웠다. 선생님이 게시판 만들기의 꽃이라고 했는데 과연 그런 것 같다!! 궁금하거나 부족한 내용 Jsp 문법도 한번 공부하면 좋을것같다 ㅎㅎ 느낀점 게시판만들기 어렵긴 하지만 흥미롭고 신기하다. 모르는게 많지만 그렇기 때문에 배우는 재미가 있어서 좋다. 더 열심히 해야지!
오늘 공부한 내용 오전 8시부터 오후 10시까지 도서관에서 공부했다 인프런 강의 게시판 글 작성하기 57-59강 게시글 업로드 및 수정방법 혼자공부하는자바 참조타입 어려웠던 내용 게시판 코드의 흐름이 잘 이해가 안된다. 답답하다 ㅠ 궁금하거나 부족한 내용 혼공자를 전에 한번 봤지만 다시 보니 모르는게 꽤 많았다. 앞부분을 잘 안보게 됐었는데 항해에서 시켜서 다시 들춰보니 뭔가 새롭다. 역시 책은 2회독이상 해야되나보다. 자바 공부를 더 꼼꼼히 해야겠다. 느낀점 스프링 강의 끝나면 자바를 더 꼼꼼히 하고싶다.
1. 참조 타입과 참조 변수 자바의 타입은 크게 기본타입과 참조타입으로 분류된다. 참조타입이란 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스를 말한다. 메모리 사용 영역 JVM은 운영체제에서 할당받은 메모리 영역(Runtime Data Area)을 다음과 같이 세부 영역으로 구분해서 사용한다. - 메소드 영역 JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역. 코드에서 사용되는 클래스(.class)들을 클래스 로더로 읽어 클래스별로 정적 필드(static field)와 상수, 메소드 코드, 생성자코드 등을 분류해서 저장한다. - 힙 영역 객체와 배열이 생성되는 영역. 만약 참조하는 변수나 필드가 없다면 의미없는 객체가 되기 때문에 JVM이 쓰레기로 취급하고 쓰레기수집기(Garb..
오라클 DB는 단지 tool 일 뿐이다. (오라클DB에 데이터 저장하는거 아님!) memory에서 작업한 데이터를 HDD로 보내준다. HDD에서 memory로 가져오기도 한다. CPU는 HDD에 접근하는 것이 오래 걸리기 때문에 Memory에 접근을 하게 된다. 오라클DB에서 작업을 한 후, commit을 안하게 되면 Memory에 있던 작업한 데이터가 날아가 버리게 된다. 꼭 작업을 완료한 후, 데이터가 날아가지 않도록 HDD에 저장하는 과정인 commit을 꼭 해줘야 한다. 출처 https://slidesplayer.org/slide/11249693/
트랜젝션 관리 개념 데이터베이스에서는 데이터의 일관성과 무결성을 보장하기 위해서는 반드시 트랜잭션 관리가 필요하다. 트랜잭션이란 데이터베이스 내에서 하나의 그룹으로 처리되어야 하는 명령문들을 모아 놓은 작업 단위이다. 예를들어 그룹이 하나 이상의 SQL문장으로 구성되어 있다고 가정할 경우 4개의 SQL문장이 하나의 그룹으로 묶여진 작업단위의 경우 4개의 SQL문장이 완전히 처리되거나 All-OR-Nothing방식으로 처리된다. 이것은 트랜잭션 내의 모든 처리대상 명령문들이 반드시 완전히 수행되어야 하며 만약, 모두가 완전이 수행되지 않고, 어느 한 문장이라도 에러가 발생한다면, 트랜잭 묶인 전체 명령문은 모두 취소가 된다. 트랜잭션의 형식? 한 트랜잭션을 프로그래밍 언어나 데이터 조작 언어로 개발된 사용..
오늘 공부한 내용 오전 8시부터 오후 9시반까지 도서관에서 공부했다 인프런 강의 게시판 글 작성하기 54-56강 RequestScope SessonScope 쿠키 데이터베이스구조 혼자공부하는자바 조건문 반복문 어려웠던 내용 게시판에 이미지업로드하는 방법 게시판 정보수정 쪽에서 계속 500?에러나서 Mapper쪽에서 한참 찾았는데 알고보니 오라클디비에서 insert하고 commit을 안해서 그랬었다..!! 커밋을 생활화 하자!!! 궁금하거나 부족한 내용 다 부족한거같다 느낀점 게시판만들기 빨리 끝내고 싶다 ...😥
1. 조건문 - if 문, switch문 switch문은 if문처럼 조건식이 true일때만 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행된다. 변수의 값에 따라서 실행문이 결정되기 때문에 코드가 간결하다. 2. 반복문 - for문, while문, do-while문 while문에 true를 사용하면 무한루프를 돌게된다. 종료시키려면 변수의 값을 false로 만들거나, break문을 이용한다. - 문제 (while문작성. p161) - 정답 public class hh { public static void main(String[] args) { while(true) { int a = (int)(Math.random() * 6 ); int b = (int)(Math.random() * 6 ); ..
48. 회원가입 - 유효성 검사 처리 1. join.jsp에서 form 태그를 스프링에서 제공하는 커스텀태그로 변경하기 커스텀태그라이브러리 추가 - 수정 전 이름 아이디 중복확인 비밀번호 비밀번호 확인 회원가입 - 수정 후 action을 user/join_pro 로 바꾸고 modelAttribute="joinUserBean"도 추가 form:label, form:input, form:errors 로 변경 이름 아이디 중복확인 비밀번호 비밀번호 확인 회원가입 2. 컨트롤러에서 join메소드의 매개변수 joinUserBean 넣어주기 join.jsp에 modelAttribute="joinUserBean" 이라고 등록을 했으므로 아래와 같이 UserController에서 join메소드에 "joinUserBea..
오늘도 8시 도서관 출석하여 9시반까지 공부했다. 윤재성 스프링 MVC 50~53강 게시판 회원가입 저장처리, 로그인처리, 상단메뉴 및 로그아웃처리, 로그인확인처리 강의를 들었다. 인터셉터는 이렇게 쓰는 거구나, 로그인 로그아웃 처리도 이렇게 일일이 해주는거구나... 등등을 깨달았다. 근데 어렵다 😂 항해99에서 10시부터 입학시험을 풀었다. 기능구현하기인데 파이썬 로직을 추가하여 화면에 띄우는 것이었다. 처음엔 당황했는데 30분만에 풀고 시험장을 나왔다. 기분이 좋았다. 그리고 항해에서 하는 출첵 및 공부시간 기록 사이트가 있는데 다같이 공부하는 느낌이 나서 자극되고 좋다. 맘에든다. 오늘도 열심히 공부해서 뿌듯한 하루다 😊
문제 설명 각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요. 예각 : 0
아래 부분을 추가했다. app.py에서 파이썬 문법으로 평당 가격을 구하는 로직을 만들고, db에 저장한후, index.html에서 price를 가져와서 temp_html에도 추가해준후, #order-box에 append해줬다. 끝 ^_^
오늘은 8시 도서관 출석하여 10시까지 공부했다. 개인공부위주로 했다. 윤재성 스프링 MVC 46~49강 게시판 상단메뉴 구성하기, 유효성 검사, 아이디중복확인 강의를 들었다. 유효성 검사 어렵다.. 뭐가 많고 복잡하다. 얼른 익숙해져야겠다.. 항해99에서 진행하는 혼자공부하는자바 챕터3. 연산자도 공부했다. 다 아는거라 생각했는데 , 연습문제에서 몇문제 막히는걸 보고 자바부터 탄탄하게 해야겠다는 생각이 들었다. 개선할 점은 8시부터 바로 공부 시작하기!!!! 다이어리 쓰다보면 점점 늦어진다. 그래도 열심히 공부해서 뿌듯한 하루다 !!
1. 연산자와 연산식 연산의 우선순위 산술 → 비교 → 논리 → 대입 연산자 산술 : + - * / % 비교 : == > 0 && y 0, y 90) ? "A" : "B"; 논리연산자 &와 &&의 차이 &&는 앞의 피연산자가 false라면 뒤의 피연산자를 평가하지 않고 바로 false라는 산출 결과를 낸다. &는 두 피연산자 모두를 평가해서 산출 결과를 낸다. 따라서 &&가 더 효율적이다. - ..
46. 상단 메뉴 구성하기(Java) 데이터베이스에서 게시판 이름들을 가져와 메뉴를 구성해보자. 상단 메뉴는 모든 요청에 대해 처리해야 하므로, Interceptor에서 처리시켜야 한다. 1. 이렇게 쿼리문을 구성해보자. 2. 만든 쿼리문 복사해서 TopMenuMapper인터페이스 생성 & ServletAppcontext에 추가 3. 실제로 데이터베이스에 접속해서 작업을 실행시킬 dao클래스를 만들기 & 만든TopMenuMapper인터페이스 주입받기 4. 만든 dao클래스를 또 service에 주입받기! 5. 인터셉터 만들기 & ServletAppcontext에 추가 이렇게 서비스까지 만들었으니 컨트롤러에서 서비스를 주입받아 사용하면 되는데, 지금 우리는 상단메뉴를 구성해야 하는데, 상단메뉴는 어떤 주소..
오류페이지에서 추천해준 JSP에 가보니 노란밑줄,, 읽어보니 "items" does not support runtime expressions 라고 뜬다.... JSTL 문제였다. 태그라이브러리에 /jsp 를 추가해줘야 한다. - 수정전 - 수정후
항해 1일차이다. TIL이란 것에 대해 배웠다. 오늘부터 TIL을 써보도록 해야겠다. TIL은 'Today I Learned(오늘 내가 배운 것)' 으로 일일 회고이다. 일일 회고를 하는 본질적인 이유는 '일하는 나의 성장'이며,지표의 성장이나 프로젝트의 진척도가 아닌, 나는 이 과정에서 무엇을 배웠는가에 집중해야만 '일하는 나의 성장'을 스스로 확인할 수 있다. TIL은 '성취 > 개선 > 학습'의 순서로 구성된다. 오늘은 뭘 잘했나, 뭘 개선해야 하는가, 뭘 배웠나 에 집중해서 작성한다. 오늘 일정은 9시, 1시에 일주일 설명 및 TIL 특강, 3~9시는 혼공자 자습 및 토론으로 이루어졌다. 아날로그에 익숙한 나로서는 ZEP환경, 게더타운? 같은 가상환경이 익숙하지 않아서 불편했다. 집에서 공부하는 ..
챕터1. 자바 환경설정 - 소스파일 : 프로그래밍 언어로 작성된 파일 - JDK가 설치되면 기본적으로 C:\Program Files\java 폴더가 생성된다. - 자바 컴파일러와 실행 명령어는 JDK 설치 폴더\bin 폴더에 있다. - JDK는 Java SE(Standard Edition)라는 스펙을 준수해서 만들어지므로 JDK버전과 Java SE버전은 동일하다. Java SE버전 표기 방식 : Java SE (주버전).(개선버전).(업데이트버전).((장기지원서비스버전)) - JDK 설치 폴더 안의 bin폴더를 Path환경변수에 등록하는 이유는 다른 경로에서 bin폴더 안에 있는 명령어를 사용할 수 있도록 하기 위함이다. 챕터2. 변수와 타입 자동타입변환 (기본타입을 크기순 정렬) byte < short..
40. 미니프로젝트 게시판 4개, 게시판당 상위 5개 게시글 표시, 더보기, 로그인, 회원가입, 정보수정, 글쓰기, 첨부파일 업로드 등의 기능을 넣고 게시판을 작성해보자. 41. Spring MVC 프로젝트 구조 클라이언트 요청 발생 → 서버는 요청정보 분석하여 컨트롤러로 전달 → 필요한 작업을 해주는 서비스의 메소드로 전달 (만약 서비스의 메소드 중에서 데이터베이스와 관련된 코드가 있다면 DAO클래스를 만들어 호출시킴) → 컨트롤러는 서비스의 메소드가 전달해준 값을 받아서 브라우저로 전달 @Bean : 메서드를 통해 반환하는 객체를 Bean으로 등록합니다. @Component : 개발자가 만든 클래스의 객체를 생성하여 Bean으로 등록합니다. @Controller : Component의 일종으로 사용자..
이클립스에서 Maven - Update project... 를 누르니, Cannot nest whatcha/src/main/~ inside whatcha/src'. To enable the nesting exclude 'main/' from whatcha/src' 에러 발생 해결: 1. pom.xml을 열어서, src를 확인 2. sourceDirectory 요소를 pom에서 지운다
1. EC2 서버 구매하기 더보기 웹 서비스를 런칭하기 위해 클라이언트의 요청에 항상 응답해줄 수 있는 서버에 프로젝트를 실행시켜야 한다. 언제나 요청에 응답하려면, 1) 컴퓨터가 항상 켜져있고 프로그램이 실행되어 있어야하고, 2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹 서비스에 접근할 수 있도록 해야한다. 서버는 그냥 컴퓨터이기 때문에, 외부 접속이 가능하게 설정한 다음에 내 컴퓨터를 서버로 사용할 수 있다. AWS라는 클라우드 서비스에서 편하게 서버를 관리하기 위해서 항상 켜 놓을 수 있는 컴퓨터인 EC2 사용권을 구입해 서버로 사용해 보자. 클릭 만으로 내가 원하는 서버(컴퓨터)의 설정을 정하고, 거기에 컴퓨터를 실행시키기 위한 운영체제(OS..
34. Interceptor Spring Framework강좌에서 AOP를 배웠었다. 스프링프레임워크에서 어떤 메소드를 감시하고 있다가 그 메소드를 호출할 때 그 메소드가 동작되는게 아니라 그 메소드의 호출을 가로채가서 다른 메소드를 호출하는 개념이 AOP이다. 그 AOP를 Spring MVC에서 적용한 요소가 Interceptor이다. Interceptor는 요청주소에 대해 관심을 갖고 요청이 발생하게 되면 요청주소를 확인하여 컨트롤러의 메소드를 호출하기 전이나 후에 다른 메소드를 호출할 수 있도록 가로채가는 개념이다. 요청 발생 시 호출되는 메소드의 코드가 중복되는 부분이 있을 때 인터셉터를 통해 처리하면 중복을 최소화할 수 있다. 로그인 여부 확인, 등급별 서비스 사용권한 확인 등의 작업을 처리할 ..
27. Properties 어플리케이션을 개발할 때 프로그램 실행 중 절대 변하지 않는 값들이 있을 수 있다. 매우 중요한 개념이다. 예를들어, 데이터베이스 접속정보나 업로드폴더경로 등등.. 이러한 값들을 여러군데에서 중복 사용한다면 수정할 때도 여러 코드를 수정해야 하는 번거로움이 있다. 이런 번거로움을 덜기 위해 Properties라는 개념이 있다. 변하지 않는 값들을 properties파일에 작성하고 이를 가져다 사용할 수 있다. 1. 먼저, 아래처럼 data1.properties 파일을 만들어준다. properties파일을 작성해보자. 그런데 이때 Properties파일에 한글을 작성하면 아래와같이 유니코드문자형태로 변환이 된다. 이러면 유지보수에 어렵다. Property Editor설치로 해결이..