반응형
목록
분류 전체보기 (292)
[꼼꼼한 개발자] 꼼코더
👀 콘솔에서 빌드하는 경우는? 로컬에서 개발한 프로그램을 실행시킬 때는 IDE(인텔리제이, 이클립스)의 실행버튼 혹은 단축키로 실행시킬 수 있지만 서버에 배포한 경우에는 IDE에서처럼 실행시킬 수 없다. 그럴 경우 콘솔에서 jar파일을 간단한 명령어로 실행시킬 수 있으니 한번 콘솔로 진행해보도록 한다.💪🏻 🔨 콘솔에서 빌드부터 실행까지 1. 터미널을 열고 study에 hello-spring을 들어간다. 명령어 : cd study → cd hello-spring 2. ./gradlew build를 입력한다. 입력시 알아서 필요한 라이브러리르 다운로드 받기도하고 알아서 빌드가 된다 3. 빌드 후 bulid/libs에 들어가서 목록을 확인하면 자바 파일을 실행하는 18M크기의 java -jar 파일이 만들어져..
🖌 추상화 실습 쥐 클래스를 추상화하여 클래스와 인스턴스를 만들어보자 아래 그림은 main() 메서드 실행 직전의 T메모리 스냅샷이다 주목할 점은 Mouse의 속성들의 변수 저장 공간이 없다. 이유는 3개 속성 모두 Mouse 클래스에 속하지 않고 Mouse 객체에 속하기 때문. 즉 객체가 생성되야만 힙 형역에 할당되어 변수 공간이 생성된다. Mouse micky = new Mouse();라는 코드가 실행된다. 이때micky라는 참조변수가 가리키는 번지수는 100번이라고 가정한다. 그럼 아래와 같은 T 메모리 구조가 나타난다. 📌 static 예제 위에 설계도를 보면 꼬리(countOfTail)라는 속성이 보인다. 근데 ‘미키마우스’, ‘제리’, ‘찍찍이’ 모두 꼬리는 1개이다. 우리는 여기서 한 공간에..
👀 클래스 vs 객체 = 붕어빵틀 vs 붕어빵 은 잘못된 예시?? 아마 많은 사람들이 들었던 클래스와 객체의 관계의 예시일 것이다. 하지만 붕어빵틀 ↔️ 붕어빵 예시는 ‘클래스와 객체의 관계’의 예시가 ‘아니다’ 아래 코드를 보자. (쉽게 한글로 자바 코드를 흉내 내어 설명해 보겠다.) 뭔가 이상함을 눈치 챘을것이다. 그래도 어렵다면 좀 더 풀어서 설명해 보겠다. 붕어빵 틀을 생산하는 금형 기계가 있고 붕어빵 틀이 붕어빵을 찍어내서 ‘클래스’라고 한다. 그렇다면 같은 논리로 금형기계는 붕어빵틀을 찍어내는 클래스가 된다. 위에 말을 인간적인 말로 번역한다면 > “새로운 금형기계를 하나 만들었더니 붕어빵틀이 되었다..??” 이해가 어려운 예제이다. 금형기계와 붕어빵틀이 클래스와 객체 관계가 아니듯 붕어빵 틀..
👦🏻 객체 지향은 인간 지향이다 프로그래밍 언어의 발전사를 보면 개발자를 더욱 편하고 이롭게 하기 위한 과정이다. 기계중심의 기계어에서 조금 더 인간을 편하게 하는 어셈블리어 C, C++, 자바로 발전해 온 과정 모두 로우 레벨의 기계가 아닌 하이 레벨의 인간을 배려하기 위한 과정이었던 것이다. 그렇지만 절차적/구조적 프로그래밍까지의 과정은 인간이 기계를 이해하려는 노력에서 크게 벗어나지 못했다. 특히 포인터의 개념은 기계 수준으로 눈높이를 낮추지 않으면 이해하기 매우 힘들다. 그때 “우리가 왜 기계 종속적인 개발을 해야 하지?”라는 생각과 동시에 “우리가 눈으로 보고, 느끼고, 생활하는 현실 세계처럼 프로그래밍을 해보자!”라는 고민 끝에 객체 지향 개념이 탄생했다. 기존의 구조적 프로그래밍 언어에서 가..
🔨 정적 페이지 만들기 resources/static/경로에 index.html을 만들어 놓으면 welcome page로 인식한다. 💡Welcome Page란? 💡 정적페이지란? 도메인만 누르고 들어올 때의 첫 화면 파일을 던저주면 그 파일을 그대로 보여주는 페이지. index.html파일 안에 코드를 작성한다. 2. 서버 재시작(코드수정 시 필수 작업) 후 브라우저를 새로고침 하여 확인한다. 🔨 동적 페이지 만들기 hello.hellospring 아래에 controller라는 패키지를 생성 > controller 패키지 안에 HelloController(자바 클래스)파일을 생성 💡 컨트롤러란? web application에 첫 진입점을 말한다. @Controller 어노테이션 작성을 해줘야 한다. 2...
👀 라이브러리 살펴보기 build.gradle(사진 좌)를 보면 3가지의 라이브러리를(thymeleaf, web, test) 확인할 수 있다. 하지만 실제 라이브러리를 확인할 수 있는 External Libraries폴더에(사진 우) 들어가 보면려면 많은 라이브러리들이 보인다. 내가 받아오지 않는 라이브러리들도 다수 확인 된다. 이유는 gradle이나 maven같은 build 툴들은 의존관계를 전부 관리해 준다. 예시로 starter-web 라이브러리를 당겨오면 필요한 tomcat, spring web과 같은 필요한 다른 의존관계의 것들을 모두 당겨온다. 요즘은 Web Application을 만들려면 많은 라이브러리가 필요하다. 💡 Gradle, maven 같은 툴들은 의존관계가 있는 라이브러리를 함께 ..
🙋🏻♂️ 생성한 프로젝트 속 폴더의 구성과 역할들을 알아보자 .idea : IntelliJ 에서 사용하는 설정 파일 gradle/wrraper : gradle관련해서 gradle를 사용하는 폴더 src/main/java : 실제 패키지와 소스파일이 담겨있다 . src/main/resources : xml과 html같은 설정 파일이 들어간다. src/test : 테스트 코드들과 관련된 소스들이 들어간다 요즘 개발 트랜드에서 중요하다. 🧱 bulid.gradle 폴더는? 버전을 설정하기, 라이브러리를 내려받는 것. 예전에는 위 사진 속 코드를 하나하나 전부 코딩해야 한다. 현재는 spring.io 홈페이지에서 설정파일까지 제공이 된다 된다. 자세히 보면 프로젝트 생성때 선택했던 2.6.7 버전과 자바 언어..
❓필드 vs 속성, 함수 vs 메서드 필드는 영어, 속성은 한글, 함수는 한글, 메서드는 영어? 그렇다면 한글 → 영어, 영어 → 한글로 바꿔보자. 필드 → 지역 속성 → 프로퍼티 함수 → 펑션 메서드 → 방법 눈치챘을지 모르지만 함수라는 말과 메서드라는 말을 둘 다 사용해도 괜찮다. 하지만 객체 지향 프로그래밍을 배울 때 늘 비교되는 것이 절차적 / 구조적 프로그래밍이다 절차적 / 구조적 프로그래밍에서 전역변수를 필드라고 불렀고 기능적 요소를 함수라고 불렀다. 객체 지향 프로그래밍에서 같은 일을 하지만 이름을 그대로 따라 쓰자니 차별화가 없다고 생각했나 보다. 그래서 객체지향에서는 전역변수는 프로퍼티라고 부르고 함수를 메서드라고 부르기 시작했다. Field = 필드 = 속성 = 프로퍼티 = Proper..