개발하다보면 실무에서도 아키텍쳐를 변경해야할 때가 있다. 이 때, 구조를 수정할 때는 구조만 건들여야 한다. 수정하다보면 구조말고도 디테일한 부분이 눈에 밟혀 수정하고 싶은 충동이 생기는데, 그때 한 번에 개선을 하게 되면 다른 사람이 처리하는데도 힘들고, 사람이 다 기억하기도 힘들다. 그러니, 디테일한 것이 보여도 TODO 리스트에 적은 다음 넘어가고, 큰 구조를 먼저 변경이 완료된 후, 테스트까지 완료되면 커밋하고 나서 디테일한 것을 변경하자. 말씀을 듣자마자 과거에 경험했던 일들이 주마등처럼 스쳐 지나갔습니다... ㅋㅋㅋㅋ... 이 문구를 따로 저장해서 마음 속 깊이 새기도록 하겠습니다.
강의 9분에서 진행되던 파라미터를 Response에 다시 돌려주던 부분에서 저는 왜 에러 페이지가 뜰까 고민하다가 발견한 것을 정리했습니다. 강의 처음부터 service 메소드를 오버라이딩할 때 super.service(req, resp); 가 없었지만 Ctrl + Shift + A 를 통해 자동으로 생성할때에는 저 한 줄이 자동으로 붙습니다. 이를 제거해주지 않으면 에러페이지가 표시되고, 응답은 405로 표시됩니다. 저 코드의 의미는 부모 클래스의 service 메소드를 실행하라라는 의미인데, 들어가보면 아래의 코드를 만날 수 있습니다. if (method.equals(METHOD_GET)) { long lastModified = getLastModified(req); if (lastModified == -1) { // servlet doesn't support if-modified-since, no reason // to go through further expensive logic doGet(req, resp); } else { long ifModifiedSince; try { ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE); } catch (IllegalArgumentException iae) { // Invalid date header - proceed as if none was set ifModifiedSince = -1; } if (ifModifiedSince < (lastModified / 1000 * 1000)) { // If the servlet mod time is later, call doGet() // Round down to the nearest second for a proper compare // A ifModifiedSince of -1 will always be less maybeSetLastModified(resp, lastModified); doGet(req, resp); } else { resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED); } } } 나름 해석해보면 GET 요청이 올 때, doGet 메소드로 보내는 것을 확인할 수 있고, doGet 메소드는 아래와 같습니다. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String msg = lStrings.getString("http.method_get_not_supported"); sendMethodNotAllowed(req, resp, msg); } 코드를 보면 상속을 하지않은 원형 doGet 메소드는 405코드로 바로 응답하도록 작성되어 있는 것을 확인할 수 있습니다. 이를 해결하는 방법은 2가지가 있습니다. 상속받은 HelloServlet의 service 메소드에서 super.service(req, resp) 를 제거하는 것. 상속받은 HelloServlet에 doGet 메소드를 추가로 오버라이딩해서 그곳에 Response를 조작하는 코드를 작성하는 것이 있습니다. 이에 해당하는 방법의 코드는 아래와 같습니다. @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { super.service(req, resp); System.out.println("HelloServlet.service"); System.out.println("req = " + req); System.out.println("resp = " + resp); } @Override protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws IOException { // 파라미터 획득 String userName = req.getParameter("username"); System.out.println("userName = " + userName); // Response Header 설정 resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); // Response resp.getWriter().write("hello " + userName); } }
선생님 안녕하세요. 강의 듣고있는 수강생 입니다. 다름이 아니라 파이썬 프로젝트하면 포트폴리오로 활용하기에도 실용적으로 쓰기에도 불필요한 너무 작은 단위의 게임, 메모앱을 만든다든지 기껏해야 블로그만들기만 잔뜩 있는것 같습니다. 어쩌다가 인스타그램 만들기가 있구요. 혹시 파이썬 장고를 활용한 쇼핑몰 만들기 강의 개설에 대해서 계획이 있으신가요?
별건 아니지만 5분간 삽질한 내용 공유 드립니다. 19:25 부분에서 강사님이 말씀하신것처럼 필드 유지가 안되는 경우 @Getter @Setter public class MemberForm { @NotEmpty(message = "값이 존재해야 합니다.") private String name; private String city; private String street; private String zipcode; } MemberForm 모델에 수정자가 존재하는지 확인해보세요. @Setter를 사용하지 않는 습관때문에 간단한 것도 놓치네요. 혹시 저와 같은 문제를 겪으신 분을 위해 공유합니다.
안녕하세요 현재 영한님 스프링 강의를 듣고 있습니다. 우선 좋은강의만들어주셔서 감사합니다. 제가 지금 야생형으로 해서 JPA 활용1편을 거의 다들었고 JPA기본편을 들을 차례인데요, 개발바닥 이벤트로 영한님의 모든 강의를 구매해놓은 상태입니다. 그래서 문득 JPA강의를들으면서 MVC강의도 같이 들으면 좀더 이해가 잘 될까? 아니면 기존 야생형코스를 다듣고 MVC를 추가로 듣는게 나을까? 고민이 되더라구요 JPA활용1편을 무작정 들어보면서 흥미가 더 올랐고 모르는부분은 제가 찾아가면서 해보니 가면갈수록 내공이쌓여서?? 이해가 잘 되고 있습니다.ㅎㅎ 1월중순부터 지인들이랑 프로젝트를 하나 해보기로한 상황이기도하고.. 궁금해서 여쭤봅니다!
https://dacon.io/forum/404171 파이썬 초보자도 쉽게 따라 할 수 있는 데이콘의 파이썬 교육 콘텐츠! 파이썬 데이터 분석과 머신러닝을 기초부터 차근차근 학습하실 수 있습니다 이제 배우기 시작하시는 분들도 따라 하면서 실력을 키워 데이콘 교육대회뿐만 아니라 일반 대회에 참여하실 수 있도록 데이콘캠프가 응원합니다! #데이터사이언스 #인공지능 #파이썬 #AI #tensorflow #pytorch #r #데이터분석가 #데이터 #머신러닝 #딥러닝 #데이콘 #경진대회 #데이터분석 #ML #DL #Python #Dacon #Kaggle #해커톤 #Hackathon #코딩 #코딩교육 #코딩기초교육 #기초코딩교육 #코딩기초 #머신러닝교육 #머신러닝기초 #데이터분석기초 이용해주세요.
[대회명] 산업제어시스템 보안위협 탐지 AI 경진대회 [주제] 산업제어시스템 보안위협 탐지 [배경] 최근 국가기반시설 및 산업시설의 제어시스템에 대한 사이버 보안위협이 지속적으로 증가하고 있습니다. 국가 중요시설에 대한 사이버 공격은 국가와 사회에 돌이킬 수 없는 막대한 피해를 일으킬 수 있어, 세계 각국은 이에 대한 보안기술 개발에 전념하고 있습니다. 현장 제어시스템의 특성을 반영하고, 다양한 유형의 제어시스템 사이버 공격을 포함하는 산업제어시스템 보안 데이터셋은 AI기반 보안기술 연구를 위한 필수적인 요소입니다. 국가보안기술연구소는 이러한 연구현장의 요구에 발맞추어 GE, Emerson, Siemens 등의 산업용 제어기기, 센서, 액추에이터를 이용한 발전 모사 제어시스템 테스트베드를 2019년에 구축하였습니다. 이를 기반으로 산업제어시스템 보안데이터셋(HAI)를 지속적으로 개발하고 있으며, HAI 20.07과 HAI 21.03 데이터셋을 공개( https://github.com/icsdataset/hai ) 하여 연구현장의 데이터 부족 해소를 위해 노력하고 있습니다. HAICon 경진대회는 HAI 보안데이터셋을 활용하여 AI 기반 제어시스템 보안위협 탐지연구를 활성화하고 기술 보급하기 위한 목적으로 2020년에 이어 두 번째 대회를 개최하게 되었습니다. 대회용 데이터셋은 대회 종료 후 참가자들의 피드백을 반영하여 공개되며, 대회 입상팀들의 우수 탐지모델을 공개하여 관련 기술 이 한 단계 성숙하는데 도움이 되고자 합니다. [주최/주관/후원] 주최·주관 : 국가정보원, 국가보안기술연구소 후원 : 한국정보보호학회 [참가 대상] 내국인은 누구나 참여 가능 외국인은 내국인과 팀을 이루어야 참여 가능 단체(학교, 기업, 교육업체 등)는 별도 신청 총 상금 2,000만원 1 등 : 1,000만원 2 등 : 500만원 3 등 : 300만원 4 등 : 100만원 5 등 : 100만원 6~10등 : 소정의 부상 특별상 (3팀 이내) : 소정의 부상 모든 수상팀에게는 '한국정보보호학회장상' 수여 [안내사항] 상장, 상금, 부상은 팀 대표 1인에게 지급 단, 팀장이 팀원 전체의 '지급 동의서'를 수령 전 제출
📰 2021 빅데이터 통신 플랫폼 경진대회 🎫 코로나 시대와 함께하는 국민의 음식, 배달 문화 변화에 대한 시각화 처리 📅 대회 기간 : 2021년 07월 28일 ~ 2021년 08월 26일 🏆 총 상금 400만원(충북대 총장 또는 사업단장상 등 수상) 🌄 주최: 충북대학교, KT 통신 빅데이터 플랫폼 🔗링크: https://bit.ly/3kZnsyw #데이터사이언스 #인공지능 #tensorflow #pytorch #r #데이터분석가 #데이터 #머신러닝 #딥러닝 #데이콘 #경진대회 #데이터분석 #파이썬 #ML #DL #Python #Dacon #코로나 #해커톤 #Hackathon #충북대학교 #시각화 #KT
- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하 🌏 [데이콘] 자연어 기반 기후기술분류 AI 경진대회 오픈! 🍀 탄소중립 실현을 위한 기후기술 연구는 어떤 기술일까요? ! 📅 대회 기간 : 2021년 6월 21일 ~ 2021년 8월 16일까지 🏆 총 상금 600만원 🌄 주최: 녹색기술센터(GTC) 🔗링크: http://bit.ly/dacon_gtc #데이터사이언스 #인공지능 #GTC #녹색기술센터 #tensorflow #pytorch #r #데이터분석가 #데이터 #머신러닝 #딥러닝 #데이콘 #경진대회 #데이터분석 #파이썬 #ML #DL #Python #Dacon #Kaggle #해커톤 #Hackathon 기를 이용해주세요.