소개
- 20년 경력의 자바 개발자
- 백엔드 프레임워크를 만들고 사용중인 지식과 경험이 있는 개발자
- 세상의 비즈니스 요구사항을 잘 이해하고 작동하는 코드로 단순하게 표현할 수 있는 개발자
- 세상의 모든 기술을 사용하는 사람 입장에서 쉽게 설명할 수 있는 정보처리기술사
강의
전체 1수강평
- 백엔드 프레임워크 만들기 (개정판)
- 백엔드 프레임워크 만들기 (개정판)
게시글
질문&답변
2024.11.07
이제 막 자바 문법 배웠는데, 이 강의를 수강해도 괜찮을까요?
안녕하세요. 제로입니다.서버개발을 이야기 하셨는데 입력과 처리 그리고 출력이 있는 프로그램을 의미하시는거죠? 스프링은 공통기능이 잘 만들어져 있고 그 공통기능을 활용해 프로그램을 쉽게 만들 수 있는 프레임워크 입니다. 따라서 스프링의 개념, 스프링을 활용한 쉬운 프로그램 정도를 이해하면 되고응용하고 디버그 하면서 프로그램을 만드시는 걸 추천합니다. 객체지향은 내가 만든 소스코드를 다른사람이 쉽게 사용할 수 있게 해주는 개념입니다.상속, 다형성, 캡슐화, 정보은닉 그리고 이런 기법을 활용해 재사용이 쉬운 코드를 만들게 되는거죠. 하지만 입력과 처리 출력을 가진 프로그램이 반드시 객체지향적일 필요는 없습니다.쉽고 직관적인 절차지향적인 코드로 기능을 빠르게 구현 한 뒤재사용이 필요할때 객체지향적인 코드로 리펙토링 하는걸 추천합니다. 따라서 질문하신 분의 답변을 정리하면스프링은 개념정도만 알아두고스프링 환경에서 디버그가 가능한 샘플 프로그램을 확보 한 뒤 이를 응용해 절차지향적으로 프로그램을 만들어 보세요.그리고 필요할 때 객체지향적으로 리펙토링 하는 과정을 경험하시길 바랍니다. 그 다음 제 강의를 통해 낮은 결합도 높은 응집도를 가진 재사용이 쉬운 코드를 만드는 법을 배우시는걸 추천합니다.
- 0
- 1
- 25
질문&답변
2024.09.29
섹션 2 의 심화 파트에 대한 (파일올리기) 질문이에요
안녕하세요. 제로입니다.심화과정의 코드는 8주차 소스코드를 기준으로 설명합니다.https://github.com/zeroshift01/code5/tree/master/inflearn08 심화 과정은7주차 까지 기본 과정 학습 후필요한 것 만 선택 수깅할 수 있도록 구성했습니다. 감사합니다.
- 0
- 2
- 36
질문&답변
2023.02.15
MasterController에서 ResourceBundle.getBundle() 질문입니다!
안녕하세요. 제로입니다. ResourceBundle init = ResourceBundle.getBundle("com.code5.fw.init");동작 과정을 설명드리겠습니다. 우리가 프로그램을 개발할 때 사용하는 통합개발환경(IDE, 인텔리제이, 이클립스)은많은 기능을 제공하고 있는데 그 중 자주 사용하는 기능은 자원관리와 빌드 그리고 실행 기능 입니다. 자원관리는 내가 만든 소스코드를 쉽게 찾고 수정할 수 있게 해주고빌드는 만들어진 소스코드를 컴파일 하고 실행 가능한 위치에 복사시켜주는 기능입니다.실행은 빌드된 자원을 기준으로 실행하게 되구요. 물어보신 내용을 이해하려면 빌드와 실행을 이해하시면 됩니다. 자원관리를 통해 init.properties 는 만들어지고 내용이 수정되고빌드를 통해 init.properties 자원이 특정 위치로 복사됩니다.인텔리제이 프로젝트 구성을 보면 빌드패스가 있을텐데빌드 패스는 [프로젝트루트]/WEB-INF/classes 로 설정이 되어 있고빌드 대상인 init.properties 가 [프로젝트루트]/WEB-INF/classes/com/init.properties 로 복사된다고 보시면 됩니다.물론 자원관리 기능이 있는 IDE 에 init.properties 자원이 2개가 있으면 불편하기 때문에IDE 에선 빌드 디렉토리 [프로젝트루트]/WEB-INF/classes 는 조회되지 않습니다. 빌드가 잘 되었으니 아래 코드가 실행을 합니다.ResourceBundle init = ResourceBundle.getBundle("com.code5.fw.init");IDE 는 프로젝트 구성에 사용된 CLASSPATH 를 찾고 JVM 에 넘겨줍니다.그리고 JVM 은 ResourceBundle.getBundle("com.code5.fw.init"); 컴파일된 바이트 코드를 이해하고/com/code5/fw/init.properties 자원을 찾습니다.자원을 찾기 위해 CLASSPATH 의 정보를 결합 /com/code5/fw/init.properties 를 찾게 되는데 이미지로 캡쳐해 주신 디렉토리 중 첫번째(0) 디렉토리 와 /com/code5/fw/init.properties 를 결합 파일을 찾고 init.properties 를 읽게 되는 겁니다. 개발자가 가장 고민하는 것 중 하나는 내가 만든 소스코드를 어떻게 하면 잘 찾게 하는 것에 있는데ResourceBundle 클래스는 이를 위해 클래스패스를 활용한다고 보시면 됩니다. "Can't find bundle " 오류가 발생하면제일 먼저 클래스패스를 확인하고 클래스 패스 경로에 해당 properties 자원이 있는지 확인하면 됩니다. 질문 감사하구요. 도움이 되었길 바랍니다. * 질문을 잘못 이해 했네요. 빌드는 java 파일일경우 컴파일 후 복사돠고 java 파일이 아닐경우 복사만 되는 과정입니다.클래스는 복사되는데 프로퍼티파일이 없는 경우라 하면 인텔리제이 빌드 설정에서 복사 예외 자원이 있는지 확인해 보시겠어요.
- 0
- 1
- 316
질문&답변
2023.02.12
m1 맥북 환경 구성 오류
혹시 사용 가능한 관계형 dbms 있으신가요?sqlite 특성때문에 M1 환경애서 제약이 있어사용가능한 RDBMS 가 있다면 그것에 맞게 환경 구성해 드리겠습니다.특정 was, 특정 dbms 에 의존적인(그 기능을 사용해야만) 프레임웍은 가치가 없는데해당부분에 대해 확장성을 보여 드리는 것도도움이 될 것 같습니다.
- 0
- 2
- 457
질문&답변
2022.09.15
getRequestDispatcher() 질문드립니다.,
안녕하세요. 제로입니다.챕텨 1 MasterController.java 를 보면 아래 코드가 있습니다.그걸 기준으로 설명드릴께요.RequestDispatcher dispatcher = request.getRequestDispatcher(jspUrl); dispatcher.forward(request, response);- getRequestDispatcher() 가 포워딩 역할인지?코드를 그대로 읽어보면request 객체에 있는 getRequestDispatcher() 기능을 통해 dispatcher 객체를 가져온 뒤dispatcher 객체에 있는 forward() 기능을 사용함을 알 수 있습니다.그렇기 때문에 getRequestDispatcher() 는 포워딩을 하는게 아닌RequestDispatcher 클래스로 포장된(형태가 정해진)dispatcher 객체를 얻을 수 있는 기능입니다.실제 포워딩은 dispatcher 객체에 있는 forward() 기능을 통해 합니다.- 다른 서블릿에 넘기는지dispatcher.forward(request, response); 기능은 출력을 다른 서블릿으로 넘기는게 아닙니다.request, response 객체를 같은걸 쓰기 때문입니다.- 객체바인딩이라고 봐도 되는지이후 강의때 IOC 와 DI 를 설명할텐데거기에는 동적으로 클래스를 로드 하고 객체를 생성하기 위한 생성자(초기값)을 개발자의 코드가 아닌 데이터로 실행하는 걸 볼 수 있습니다.좀 어렵게 이야기 했는데객체바인딩은 개발자의 코드가 아닌 데이터로 객체를 만들어내는 과정이라 볼 수 있고그렇게 보면RequestDispatcher dispatcher = request.getRequestDispatcher(jspUrl)코드를 통해 만들어진 dispatcher 객체는 객체바인딩을 통해 만들어 졌다고 볼 수 있습니다.jspUrl 이 데이터 역할을 합니다.질문 주셔서 감사합니다.
- 0
- 1
- 1.4K