Joonhoe Kim
TIL image

(Day 91) 스프링 프레임 워크 전환 후 리팩토링

실습이 많아서 내용 정리를 따로 모아서 해야겠다. 메서드의 파라미터를 final로 받도록 선언하기 메서드의 파라미터를 final로 받는 것. 리누스 토발즈는 이것을 싫어할 것이다. 로컬 변수를 반드시 필요하지 않은 경우에도 만드는 것을 아주 혐오한다. 그렇지만 파라미터를 final로 받고, 필요한 경우 로컬 변수에 값을 복제하여 사용하는 코드는 꽤...

TIL image

(Day 84) 스프링 프레임워크는 요청에 따라 다른 메서드를 호출한다.

PDF 이전에는 코드트리 풀면서 문제를 정리해야겠다는 생각이 크게 들지 않았다. 근데 요새는 해야겠다고 느낀다. 시뮬레이션, 완전탐색을 배우면서부터는 문제를 분류하고, 풀어내는 아이디어가 재미있으면서도 아주 중요하다고 느꼈기 때문이다. 그런 아이디어들을 글로 작성하고, 이미지로 시각화하면서 문서화하는 작업이 이제 필요한 시점이 됐다. 그리고, 이런 ...

TIL image

(Day 79) 미니 스프링 프레임워크

PDF 코드에 대해 익숙해지면 객체를 하나의 주체, 사람처럼 이해해서 읽게 된다. 코드를 더 빠르게 읽게 해주며, OOP의 방향을 따라가는 방법이다. 반면에 실제 코드를 따라가는 경우라면 객체가 아닌 메서드를 중심으로 흐름을 읽게 된다. 처음에는 메서드를 중심으로 읽게 된다. 메서드가 무슨 행동을 하는지에 대해서 익숙하지 않기 때문에. 메서드도 ...

TIL image

(Day 78) 미니 스프링 프레임워크

PDF 아.. 오늘 입실 입력을 까먹어서 지각처리가 됐다 😭😭😭 요새는 복습위주로 많이 하면서, 코드트리는 계속 꾸준히 하는 중. 오늘 목표는 제네릭 복습하기, 코드트리 100XP 이상, 서블릿 동작구조 복습, 프로젝트 프로토타이핑 진행이다. 완료~ 코드트리에서 어려움 문제 (시뮬레이션2 레이저)가 어려웠다. 막상 풀어보니, 문제가 복잡해도 ...

TIL image

(Day 77) 페이지 컨트롤러 자동생성 - 프론트 컨트롤러를 개선하기 위한 애너테이션의 사용

PDF Review 어제는 PageController 인터페이스를 삭제하고, RequestMapping을 해주는 애너테이션을 추가했다. 이에 따라 DispatcherServlet 클래스와 페이지 컨트롤러들을 수정했다. 핵심은 프론트 컨트롤러에서 페이지 컨트롤러를 다룰 때 인터페이스를 사용하는 방법에서 애너테이션을 사용하는 방법으로 변화했다는 것이다....

TIL image

카라비너로 키보드 더 편하게 쓰기

키맵핑이 없으면 너무 불편해 윈도우에선.. 윈도우에서는 처음엔 오토핫키로 직접 키맵핑을 해서 썼다. 그런데 가끔 관련 주제로 찾고 찾다보니 아주 좋은 소프트웨어를 찾았다. TouchCursor가 그것이다. 맥에선.. 한영전환 맥에서는 한영전환을 더 편하게 하고 싶어서 카라비너를 썼다. 사실상 필수나 다름없었다. 기본 설정인 캡스락 전환은 뭔가 애매하게...

TIL image

(Day 66) 웹 서버와 서블릿 컨테이너

주말간 리눅스 커맨드 라인을 공부했다. Review 아키텍처의 변화 이전의 클라이언트/서버 아키텍처는 웹 앱/서버 아키텍처로 변경됐다. 서버 앱이 톰캣 서버로 대체되었다. 톰캣 서버는 웹 서버와 서블릿 컨테이너로 구성된다. 클라이언트 앱은 웹 브라우저로 대체되었다. HTTP 프로토콜로 통신한다. 톰캣 서버는 네트워킹, HTTP(프로토콜), 멀티스...

TIL image

(Day 65) 아파치 톰캣, 자원의 표현과 요청/응답 프로토콜

인간은 망각의 동물이다. 원수도, 분노도, 서러움도 망각해버리니 계속해서 의식을 띄우며 기억을 덧씌워야 한다. 옅어지니까. TIL 톰캣 오너 변경 오라클이 9까지는 했음 10은 이클립스 재단이 관리했음 오라클/구글간 소송을 보고 이클립스재단이 패키지명을 java->jakarta로 패키지 이름을 바꿨음 시장에서 대부분의 업체들이 패키지를 j...

TIL image

(Day 60) JDBC와 DB 모델링에 관하여

PDF Review DB 모델링에 대해서 도서관이나 수족관같이 엄청난 하중을 지탱해야 하는 경우 구조상 슬래브나 컬럼 단면이 일반 주거용 건물과는 달라지게 된다. 소프트웨어도 목적에 따라서 DB가 달라진다. 요구-개념-논리-물리 제3정규화 제3정규화는 이행적 함수 종속성이라는 용어가 나오면서 사람들이 쉽게 이해하는 것을 방해한다. 아래는 C...

Preview Image

(Day 49) 병행처리, 프로세스와 스레드, 그리고 네트워크(Gateway, VPC)

PDF Review CO/CL DNS 서버와 야코 순간 이게 생각났다. 알아? 몰라! 알아? 몰라! 알아? 몰라! 알아? 알아! Kids now, Kids then ISP 가 제공하는 DNS 서버에 물어보고, DNS 서버는 모르면 하위 서버에 물어보고, 하위 서버는 모르면 또 하위 서버에 물어보고, 이렇게 계속 물어보고 찾으면 IP주소를 반환하고! ...

Preview Image

(Day 48) 네트워크와 Concurrent 프로그래밍

PDF 강의 내용 2024년 1월 22일, 월요일 오늘은 교육센터에서 PC가 업그레이드와 함께 스토리지가 초기화되었다. 나는 내 소유의 랩탑들을 쓰고 있어서 환경을 재구성할 필요는 없었지만, 혹시라도 이 컴퓨터를 사용할수도 있는 다른 훈련생들을 위해, 연습겸 개발환경을 구성했다. SDK 기반으로 JDK 설정함 가장 범용성 높...

Preview Image

(Day 44) 프록시 패턴, Stateful VS Stateless, 동적 DAO 생성 (자동객체생성)

Review Proxy Pattern (GoF) Proxy는 라틴어 단어 “procurator”에서 파생된 단어이며, “Procurator”는 “대리인”이나 “대리인으로서 행동하는 사람”을 의미함. 한국어로 번역하면 대리인 정도가 될 수 있음. Proxy는 컴퓨터 과학 분야에서 주로 사용되며, 네트워크 통신, 보안, 캐싱 등 다양한 컨텍스트에서...

Preview Image

(Day 42) C/S App으로 진화! RMI란?

Review DAO 왜 썼니? (무슨 역할(목적)?) 이전에 핸들러는 UI처리 (콘솔 입출력) 및 데이터 처리 코드가 한 클래스 안에 있었다. 그러면 유지보수가 너무너무너무 힘들어진다. (=불가능해진다.) UI처리를 콘솔 입출력에서 GUI로, 혹은 웹 페이지로 변경한다면 그 때마다 데이터 처리 코드도 수정이 되어야 하는 것이다. 반대로 데이터 처리 코...

Preview Image

(Day 37) 버퍼, Serialization, UML, Stream(Byte, Character)

복습 버퍼 사용의 이유 버퍼를 쓰는 이유가 뭔가? 버퍼를 쓰는 이유는 프로그램을 더 빠르게 만들기 위함이다. 버퍼를 쓰면 왜 빨라지나? 컴퓨터는 cpu가 메모리를 다룰 때는 엄청 빠른데, 외부 저장장치에 접근하여 읽거나 쓸 때는 그에 비해서 엄청 느리다. 그래서 메모리 입출력의 횟수를 줄이기 위해서 버퍼라는 임시 저장공간을 메모리에 만들어서 우선 거기...

Preview Image

(Day 36) 입출력의 버퍼와 데코레이터 패턴

복습 파일 입출력 파일로 문자열이나 숫자 등의 데이터를 출력하고 읽을 수 있는가? FileInputStream, FileOutputStream 에 대해서 설명할 수 있는가? 무조건 바이트 배열로 입력하고 출력할 수 있는 스트림이다. 파일 입출력의 시초가 되었던 유닉스의 read()에서 유래했다. 상속 사용법 상속을 이용하여 기존 클래스에 기능을 추가할...

Preview Image

(Day 35) 익명클래스와 파일 입출력

복습 중첩클래스 로컬클래스 로컬클래스에서 enclosing 메서드의 변수를 사용하는 메커니즘을 설명할 수 있는가? 그것을 직접 사용하는 것이 아니라, 그 변수의 값을 할당하는 변수를 자동으로 컴파일러가 생성해주기 때문이다. (Non-Static Local Class) 이러한 변수는 바이트코드를 해석한 IDE의 윈도우에서 Synthetic 이라고 붙은 ...

Preview Image

(Day 33) 중첩클래스

23년의 마지막 금요일이다. 23년이 이제 진짜 가는구나. 복습 인터페이스를 이용한 객체 사용 규칙 정의 인터페이스 활용시 이점 교체가 쉬워진다! 이 인터페이스를 (구현한 클래스로 만든 인스턴스(객체)) 쓴다고 코드를 작성하면, 나중에 그 부분을 교체하지 않고 한 두줄의 코드만 변경하여 다형성을 구현할 수 있다. 인터페이스와 추상클래스를 결합해서 사...

Preview Image

(Day 31) 중첩클래스 및 실습

복습 예외처리 예외처리의 고전적 방법 예외를 처리하기 위한 방법은 어떻게 발전해왔나? 호출된 메서드에서, 호출한 메서드에게 정보를 전달하는 방식으로 생각하기 쉬운 것은 return value를 이용하는 것이다. ArrayList 클래스의 indexOf() 메서드가 그러한 방법을 사용한다. 원하는 값이 없는 경우 (예외가 발생한 경우) 인덱스의 값으로...

Preview Image

(Day 28) Object 클래스와 해시(Hash), Thread-Safe

28일차 23/12/21 복습 배운 내용 돌아보기 인터페이스 인터페이스 문법의 용도? 추상클래스에서 더 나아가서 어떤 메서드를 구현해야 할지만 알려주고 싶은 경우. 인터페이스 상속과 구현에 대한 설명? 인터페이스는 인터페이스를 상속할 수 있다. 인터페이스의 다중 상속이 가능한 경우, 불가능한 경우? 메서드 시그너처가 겹치는 메서드가 구현이 안되어 있...

Preview Image

(Day 27) OOP; 인터페이스와 equals()

복습 필드나 메서드에 접근을 제어해야 하는 상황은 언제가 있을까? 대부분의 상황에서 접근을 제어해야 할 것이다. 다른 클래스에서 필드에 임의 접근이 가능하다면 캡슐화가 깨진다. 캡슐화는 추상화를 지원하는 도구이고, 추상화는 현실 세계를 데이터와 연산자로 표현하기 위한 노력이다. 그래야 컴퓨터가 처리할 수 있으니까. Modifer 란? private ...

Preview Image

(Day 26) OOP; 추상클래스, 추상메서드, 인터페이스, 템플릿 메서드 패턴, modifier

추상 클래스의 용도는? 상속을 위해 존재하는, generalization을 위한 클래스이다. 인스턴스화를 할 수없다. (인스턴스 생성이 불가능하다.) 레퍼런스 선언은 가능하다. 다형적 변수를 구현한다. 인터페이스도 레퍼런스 선언은 가능하다. 컴파일러: 레퍼런스가 선언된 클래스를 기준으로 형식만을 검사한다. J...

Preview Image

(Day 25) OOP; 추상클래스와 추상메서드, 게터와 세터, 오버로딩 및 오버라이딩

복습 다형적 변수의 사용방법 컴파일러는 형식상 옳은지 아닌지만 검사한다. 자식 타입은 부모보다 변수나 기능이 더 많기 때문에, 자식 타입의 레퍼런스에 부모 클래스의 인스턴스 주소를 할당해 줄 수 없다. 형변환을 통해서 할당한다 하더라도, 부모 인스턴스에서는 자식 클래스의 변수나 메서드가 없기 때문에 런타임 오류가 발생할 것이다. (실제 그 레퍼런스가...

Preview Image

(Day 24) OOP; 추상클래스, 추상메서드, 오버라이딩

복습 생성자에 대한 설명? 클래스를 객체로 생성할 때(사용할 때) 단 한번 실행되는 메서드가 생성자다. 왜 생성자가 필요한가? 객체가 유효한 상태로 존재하기 위해서는 기본적인 설정이 필요하다. 그 기본적인 설정을 하는 것이 생성자다. 만약 기본적인 설정을 할 게 아무것도 없다면, 아무것도 하지 않고 아무 정보도 받지 않는 생성자인 기본생성자를 쓰면 ...

Preview Image

(Day 23) 싱글톤, 팩토리 메서드, 제네릭

23일(2023-12-14) 전략을 바꿔야겠다. 실습을 따라가는 것만 해도 하루 시간이 부족할 정돈데, 정리를 따로 해서 올리는 건 시간을 최적화해서 사용하지 못하는 걸로 판단된다. 일자별 내가 무엇을 배웠는지, 이것이 나에게 어떤 성장이 되었는지, 내가 어떤 생각을 하고 있는지를 일기처럼 적어야겠다. (다 상세히 서술하진 못해도) 학습시간 필기...