spring data jpa 간단한 튜토리얼라한사 아github : https://github.com/arahansa/learnspringdatajpa
스프링 데이터 Jpa 간단한 튜토리얼 입니다. 초보용^^;
스프링 부트, 메이븐..
내용은 간단한 매핑, CRUD, 페이징, 스프링 부트조금.
자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ) DK LeeJava web development 10 (draft)
자바 웹 개발 시작하기
(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
2012. 1. 18
벌써 2년도 넘은 자료지만
그래도 필요하신분이 있을지 몰라서...
(지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ)
사실 마지막 주차는 발표자료 마무리가 부족하다.
그 당시 뭔가 급한일이 있어서;;; (일꺼라 추측)
지금와서 문서에 손을 대기는 좀 그래서 부족하지만 수정없이 배포한다.
뭔지 모르지만 발표Kyoung Up Jung2013년 8월 31일에 올렸던 speakerdeck에 올렸던 자료 백업
https://speakerdeck.com/perhapsspy/mweonji-moreujiman-balpyo-aspeseo-djangoro-olmgyeogan-sayeon
---
한 개발자의 성장기(아니 삽질기)입니다.
ASP 개발을 하다가 Django를 쓰게 된 이야기를 간략하게 재미위주로 적어보았습니다.
spring data jpa 간단한 튜토리얼라한사 아github : https://github.com/arahansa/learnspringdatajpa
스프링 데이터 Jpa 간단한 튜토리얼 입니다. 초보용^^;
스프링 부트, 메이븐..
내용은 간단한 매핑, CRUD, 페이징, 스프링 부트조금.
자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ) DK LeeJava web development 10 (draft)
자바 웹 개발 시작하기
(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
2012. 1. 18
벌써 2년도 넘은 자료지만
그래도 필요하신분이 있을지 몰라서...
(지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ)
사실 마지막 주차는 발표자료 마무리가 부족하다.
그 당시 뭔가 급한일이 있어서;;; (일꺼라 추측)
지금와서 문서에 손을 대기는 좀 그래서 부족하지만 수정없이 배포한다.
뭔지 모르지만 발표Kyoung Up Jung2013년 8월 31일에 올렸던 speakerdeck에 올렸던 자료 백업
https://speakerdeck.com/perhapsspy/mweonji-moreujiman-balpyo-aspeseo-djangoro-olmgyeogan-sayeon
---
한 개발자의 성장기(아니 삽질기)입니다.
ASP 개발을 하다가 Django를 쓰게 된 이야기를 간략하게 재미위주로 적어보았습니다.
Light Tutorial DjangoKwangyoun JungLight Tutorial Django
Studybee 3주차 - 가볍게 배우는 장고!!
Django를 이용해 블로그를 만들기 전에 가볍게 Django에 대해 알아보고 익숙해져 봅시다.
**http://www.studybee.kr 에서 운영하는 '초심자를 위한 웹개발' 클래스에서 만드는 교재이며,
장고를 이용해 간단하게 블로그를 만드는 것을 목표로 하고 있습니다.
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220Seomgi HanAWS위에 Django를 올려서 활용하고 있는 피플펀드의 서비스에서 성능개선을 위해 AWS CloudWatch, New Relic APM 등을 활용해 점검했던 포인트와 해결방법, 그리고 성과에 대해서 공유합니다.
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)SangIn Choung2014년 사내 세미나에서 발표했던 애자일 테스트 사례 발표
기존의 테스트(인력)가 애자일에서 어떤 형태로 일하는지를 소개
테스트 자동화 외에 다른 관점을 가진 다른 역할자간의 협업이 핵심 메시지 입니다
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
http://ndcreplay.nexon.com/NDC2017/sessions/NDC2017_0079.html 이곳에서 영상과 슬라이드를 함께 보실 수 있습니다.
개발이 테스트를 만났을 때(Shift left testing)SangIn Choung약 6개 프로젝트 대상으로 초기부터 테스트 전담자가 테스트 전략 수립, 교육, 설계, 자동화 테스트, 짝 테스트 등으로 협업을 한 사례.
이를 통해 향후 테스트 전담자의 역할을 확대해 보고, 테스트 안에서 다양한 역할자를 정의해 보려고 함
2. 팀 프로젝트 파일의 압축을 풀고 import 시킨다.
Import시 <errors running builder 'JavaScript
validator' on project (프로젝트 이름)>이와 같은 에러가
발생하는 경우 http://fillin.tistory.com/2 블로그를 참조해보자
10. 오라클에서 직접 데이터를 넣었다.
참고로 쿼리문을 이용해 넣을 생각이었지만
이상하게 자꾸 틀린 value 값을 입력한다는 에러가 발생해서
행추가 기능을 사용해서 입력했다.
11. 성공한 결과이다. 다만 한가지 결점이 있다.
회원 가입 페이지를 보면 주소 같은 값은 account 테이블이 아닌
Info 테이블에 저장된다. 두 테이블이 연동되어 있어서 그런듯하다.
하지만 지금 같은 방법으로는 처음 오라 클 에서 직접 입력했던 사용자
는
Info 테이블에 값이 존재하지 않게 된다. 따라서 정상적인 사용자로 이
용하기에는 부적합하다. 비정상적인 사용자는
차후 삭제 시키는 걸로 한다.
12. 관리자 메뉴에는
권한을 부여하는
기능이 존재한다.
하지만 그 권한
을 부여할
최초의 관리자는
오라클에서 설정
해준다.
관리자로 로그인
하면 mypage가
Admin으로 바
뀐 것을 볼 수 있
다.
17. 맵핑마다 출력문구를 배치하여 client 의 Q&A게시판 화면 요청이
어느 맵핑을 타는지 추적한다. 확인 결과
Value = “/Qalist” 맵 루트를 탄다.
(나중에 알았지만 아래 화면처럼 URL만 확인하면 금방 알수 있다.)
18. Q&A 와 Board 코드의 비교이다.
Model.addAttribute () 부분은 GUI 제작 때 사용했던 기억이 난다.
표를 만들 때 위의 속성을 표시해주는 부분과 연관이 있다.
(현재 문제가 있는 부분이 이곳 근처이다.)
19. 해당 맵핑의 시작하는 부분, 중간부분, 끝나는 부분에 검사용
출력 코맨트를 첨부 하여 문제가 발생하는 부분을 찾는다.
(결과 : test-QABoard-Alist-middle이 출력되지 않았다.
문제는 중간 부분에 있었다.)
20. 중간 부분의 코딩이다. 추적을 위해 심어놓은 코맨트가 작동하지 않는 이유는
윗부분인 if 문 두 개중 하나 혹은 둘 다 작동하지 않기 때문이다.
Count와 endPage, pageCount를
모두 출력해봐서 if문의 조건과 비교해본다.
결과는 if(count > 0) if(count >=0) 로
코딩을 수정함으로 문제는 해결됐다.
22. 보면 이름과 예약날짜는 텍스트 필드
방 번호는 select 박스로 되어있다.
(가격은 어차피 비활성화 되어있으므로 논외)
여기서 방 번호를 설정하면 이름과
예약날짜 방 번호가
모두 초기화되는 문제가 있었다.
23. URL을 보면 굉장히 수상한 부분이 발견된다.
방 번호를 203으로 선택해서 문제가 발생한 화면인데
조금 전 화면과 거의 같지만 URL 끝부분에
?roomNum=203 이라는 부분이 추가되어 있다.
24. 브라우저에서 확인 가능한 소스와
이클립스에서 소스를 비교하던 중
문득 “사이트 에러나 소스 에러는 나지 않았지?”
라는 생각이 들었다.
그리고 URL이 바뀌는 것과 데이터가 초기화
되는 부분을 고려해보니
DB의 “아직 입력되지 않은 데이터를
불러오는 것은 아닐까?” 라는 생각이 들었다.
33. 모조리 실패.
나중에는 소스를 고칠 때마다 에러 메시지가 뜨는
비참한 상황에 부딪히게 되었다.
(여기에는 결과 위주로 적지만 혹시나 4시간에 걸친
탐색과정이 어떤 논리로 진행됐는지 궁금하신 분은 개인적으로
연락바랍니다.)
34. 문제 해결의 계기가 된 것은 게시판코딩이었다.
(등잔 밑이 어둡다라는 말이 현실이 되었다…)
게시판의 제목이나 글 내용은 DB에 한글로 잘만 입력되고 있었던것
양쪽 파트의 코딩을 비교하니 한글 깨짐의 원인은
get 방식과 post 방식의 차이라고 결론이 나왔다.
(수업시간에 몇 번 강조되었지만 이렇게 애먹일 줄은 몰랐다…)
35. 구글에 검색어로 “spring get 한글 깨짐” 이라고 입력하니
금방 찾을 수 있었다. 초보 개발자들이 한번쯤은 걸리고 넘어가는
문제라고 한다.
하긴 코딩에 문제가 있는 게 아니라 서버 쪽 코딩을 수정해야 하니
경험이 없으면 쉽게 생각이 나지 않을 것이다…
36. DB에 정상적으로 입력된 모습이 보인다.
아직 테스트를 더 해야 하지만 게시판 등에서 실행했을 때는
작성자의 이름이 깨지지 않고 정상로딩 되는 것이 확인되었다.
40. 덧글을 입력해서 submit 시켜주는 코딩을 발견했다.
Action 설정을 확인해서 이 다음 과정이
QACommentInsert 라는 것을 알수있다.
(JSP 파일목록에 보이지 않으면 분명히 컨트롤러 쪽에 있다)
41. QABoard 덧글이 문제 였으니 당연히 QABoardController를
확인한다. 내려가다 보면 익숙한 value 값이 눈에 들어온다.
위 화면에서는 System.out.println()을 여러 개 배치하여
어느 부분에서 에러가 나오는지 확인하였다.
42. 위에서 출력한 값들의 결과이다.
보이는 대로 3번째 추적 구문이 출력되지 않았다.
그러므로 2번째와 3번째 추적 구문 사이에 있는
qaboarddao.QACommentInsert(qr);
여기서 문제가 발생했다는 것을 알 수 있다.
43. 여기서 오류화면과 방금 전의 추적구문을 비교해보면
이상한 점이 발견된다.
SQL문에서 받아야 할 값을 다섯 개인데 보내주는 값은
네 개뿐이다.(오류메시지를 이해했다면
이 결론에 도달하는데 10초도 안 걸릴 것이다…참고로
필자는 단지 거북하다는 이유로
추적방식을 썼다가 1시간 걸렸다.)
44. 여기까지 오면 해결은 간단하다.
문제가 되는 SQL문을 지워버리면 된다.
앞부분의 username과 뒷부분의 UserName 을 삭제하면
덧 글 기능이 정상작동하기 시작한다.