chocolatey에서 설치한 php의 extension 활성화하기
chocolatey mysqli php chocolatey에서 php를 설치한 경우, mysqli 같은 extension이 꺼져 있네요. C:\tools\php83\php.ini 파일에서 플러그인을 활성화해주시면 됩니다. ;extension=exif ; Must be after mbstring as it depends on it exten...
chocolatey mysqli php chocolatey에서 php를 설치한 경우, mysqli 같은 extension이 꺼져 있네요. C:\tools\php83\php.ini 파일에서 플러그인을 활성화해주시면 됩니다. ;extension=exif ; Must be after mbstring as it depends on it exten...
도커를 오전에 배우고, 오후는 계속 팀프로젝트를 하는 중이다. 팀프로젝트를 하면서 느끼는 건, 배웠던 걸 혼자 적용하는 건 쉽지 않다는거.. 그래도 막히는 부분을 어떻게 뚫어가면서, 유튜브던 책이던 블로그건 정보를 찾아가면서 진행하니까 성장하는 것이 느껴진다. 최소한 전에 막혔던 부분은 덜 막히니까..
요즘 배운 부분은 텍스트로 정리하기 힘들었다. 실습을 따라하거나 Obsidian으로 시각화하거나, 팀프로젝트를 진행했다. 옵시디언으로 작성한 부분을 나중에 정리해서 올려야겠다. # 으로 시작하는 경우, 루트 권한이 가정됨 $ 으로 시작하는 경우, 사용자 권한이 가정됨 — 출처: https://github.com/eomcs/eomcs-docs 도커 ...
오늘은 스프링 부트로 전환했습니다. 실습내용을 옵시디언에 정리했는데 추후 스터디하고 다시 정리해서 올려야겠네요.
네이버 클라우드의 Object Storage 사용하기 Amazon S3 라이브러리 사용함
실습이 많아서 내용 정리를 따로 모아서 해야겠다. 메서드의 파라미터를 final로 받도록 선언하기 메서드의 파라미터를 final로 받는 것. 리누스 토발즈는 이것을 싫어할 것이다. 로컬 변수를 반드시 필요하지 않은 경우에도 만드는 것을 아주 혐오한다. 그렇지만 파라미터를 final로 받고, 필요한 경우 로컬 변수에 값을 복제하여 사용하는 코드는 꽤...
PDF join 데이터와 자바 객체 <resultMap id="BoardMap" type="Board"> <id column="board_no" property="no"/> <result column="title" property="title"/> <result column="conte...
PDF MyBatis @Override public void add(Member member) { //매번 세션 받아야 한다.. 커넥션을 공유하지 않도록 하기 위함이다. 내부적으로 DB커넥션풀을 쓴다. mybatis-config.xml 을 보면 <dataSource type="POOLED"> 라는 부분이 있다. 같은 스레드는 같은...
PDF Review @SessionAttributes, @ModelAttribute를 사용하여 세션 값을 제어할 수 있는가? 인터셉터의 구동에 대해 설명하고 구현하고 설정할 수 있는가? HttpMessageConverter에·대해 설명할 수 있는가? 요청으로 보낸 JSON 데이터를 객체로 자동 변환하여 request handler의 ...
PDF @modelAttribute 해당 이름을 가진 값이 세션에 있으면 우선적으로 세션에서 값을 꺼내고, 만약 세션에 없으면 파라미터에서 꺼내고 그조차도 없으면 빈문자열을 할당해둔다. 단 @SessionAttribute에서 명시된 값들은 세션에 없는 경우 에러를 띄운다. 파라미터에서도 꺼내지 않는다. Spring Framework에서 sess...
PDF Property 에 대한 복습 Field / Property 는 다르다. 게터/세터에서 다뤄질 때 Property라고 지칭된다. Getter만 있는 경우 Read-Only Property라고 한다. Setter만 있는 경우 Write-Only Property라고 한다. Getter, Setter 둘 다 있으면 Read/Writer Proper...
PDF Controller FrontController에게 파라미터에 값 받기 // 요청 핸들러의 아규먼트 - 프론트 컨트롤러로부터 받을 수 있는 파라미터 값 package bitcamp.app1; import java.io.PrintWriter; import java.util.Map; import javax.servlet.ServletContex...
PDF 이전에는 코드트리 풀면서 문제를 정리해야겠다는 생각이 크게 들지 않았다. 근데 요새는 해야겠다고 느낀다. 시뮬레이션, 완전탐색을 배우면서부터는 문제를 분류하고, 풀어내는 아이디어가 재미있으면서도 아주 중요하다고 느꼈기 때문이다. 그런 아이디어들을 글로 작성하고, 이미지로 시각화하면서 문서화하는 작업이 이제 필요한 시점이 됐다. 그리고, 이런 ...
PDF Review 어제는 애너테이션 및 Java Config를 통한 IoC 컨테이너의 설정을 실습했다. 주요 포인트는 아래와 같다. 서블릿 기반 웹프로젝트에 Spring WebMVC를 적용할 수 있는가? webapp/WEB-INF 에 app-servlet.xml과 같은 설정파일들을 두어야 하는 이유는? WEB-I...
PDF Review 어제는 애너테이션을 이용해서 Spring Framework의 IoC 컨테이너가 의존 객체들을 생성하는 방법들을 알아봤다. 주요 포인트는 아래와 같다. IoC 컨테이너의 원리는? 컨베이어 벨트와 작업자 객체의 비유 @Autowired 를 이용하여 의존객체를 주입하는 방법은? BeanPostProcessor 동작 원리와...
이클립스는 플러그인 몇 개 설치하면, 다음부터 켜는 데 1분은 걸리는 것 같다. 이 불편함을 해결해보자. 가장 중요한 건 시작할 때 플러그인을 activate 하는 것을 최소화 하는 것이다. 그 다음은 선택인데, 윈도우 기준으로 C:\Users\USERNAME\eclipse\jee-2023-12\eclipse\eclipse.ini 파일을 변경해준다...
PDF Review 어제는 IoC 컨테이너에 객체를 만들도록 설정하는 방법을 알아봤다. 정확히는 그 중에서 xml을 사용하는 방법에 대해서 알아봤다. (java-lang ex01~07) Spring IoC Container를 관통하는 핵심 시각화는 컨베이어 벨트와 작업자 객체였다. IoC 컨테이너에서 의존 객체들을 세팅하는데, 필요한 작업들을 ...
PDF IoC Container IoC Container = Inversion of Control => Dependency Object Injection 필요한 객체들 (의존하고 있는 객체들)을 본인이 생성하는 것이 아니라, 다른 것에서 생성해서 주입해준다는 것. 그래서 제어가 역전된다는 것. 예시를 들면 아래 코드에서 assignmentD...
PDF 코드에 대해 익숙해지면 객체를 하나의 주체, 사람처럼 이해해서 읽게 된다. 코드를 더 빠르게 읽게 해주며, OOP의 방향을 따라가는 방법이다. 반면에 실제 코드를 따라가는 경우라면 객체가 아닌 메서드를 중심으로 흐름을 읽게 된다. 처음에는 메서드를 중심으로 읽게 된다. 메서드가 무슨 행동을 하는지에 대해서 익숙하지 않기 때문에. 메서드도 ...
PDF 아.. 오늘 입실 입력을 까먹어서 지각처리가 됐다 😭😭😭 요새는 복습위주로 많이 하면서, 코드트리는 계속 꾸준히 하는 중. 오늘 목표는 제네릭 복습하기, 코드트리 100XP 이상, 서블릿 동작구조 복습, 프로젝트 프로토타이핑 진행이다. 완료~ 코드트리에서 어려움 문제 (시뮬레이션2 레이저)가 어려웠다. 막상 풀어보니, 문제가 복잡해도 ...
PDF Review 어제는 PageController 인터페이스를 삭제하고, RequestMapping을 해주는 애너테이션을 추가했다. 이에 따라 DispatcherServlet 클래스와 페이지 컨트롤러들을 수정했다. 핵심은 프론트 컨트롤러에서 페이지 컨트롤러를 다룰 때 인터페이스를 사용하는 방법에서 애너테이션을 사용하는 방법으로 변화했다는 것이다....
키맵핑이 없으면 너무 불편해 윈도우에선.. 윈도우에서는 처음엔 오토핫키로 직접 키맵핑을 해서 썼다. 그런데 가끔 관련 주제로 찾고 찾다보니 아주 좋은 소프트웨어를 찾았다. TouchCursor가 그것이다. 맥에선.. 한영전환 맥에서는 한영전환을 더 편하게 하고 싶어서 카라비너를 썼다. 사실상 필수나 다름없었다. 기본 설정인 캡스락 전환은 뭔가 애매하게...
PDF JSP 주요 태그들 directive element: <%@ %> : JSP 엔진에게 알려주는 정보로, 어떤 언어를 위한 JSP인지 (java 밖에 안쓰지만) 어떤 character set을 사용했는지, 이 페이지가 에러페이지인지 등등을 알려준다. declaration element: <%! %> : 멤버를 선언...
PDF JSP JSP의 구동 원리 웹서버가 jsp에 대한 요청을 HTTP 프로토콜을 따라 받는다. (java ee 기술이 다 구현된 웹서버거나, 서버쪽 기술만 들어간 서블릿 컨테이너만 존재하는 경우나 모두 같다) JSP로 만든 서블릿 객체를 찾아본다. 여기서 JSP로 만든 서블릿 객체란, 임시 폴더에 생성된 클래스 파일을 말한다. ...
실습 따라할 부분이 많아서 내용이 연습장 수준입니다 ㅠㅠ MVC 모델1, 모델2 모델1: 뷰와 로직을 JSP 페이지 하나에서 처리. 서블릿을 전부 JSP에 옮겨버림. 그만큼 JSP 코드가 길어지는데 JSP는 출력을 편하게 하려고 만든 것인만큼, java 소스코드를 작성하기엔 불편한점이 있음. 모델2: 요청을 서블릿만 받는다. 출력(뷰)는 J...
REVIEW 세션ID는 쿠키 테이블에 저장된다. 쿠키는 웹서버가 클라이언트의 웹 브라우저에 맡겨놓은 데이터다. 해커가 쿠키 내의 세션 ID를 탈취하여 서버에게 제시하면, 서버는 그 유효성을 확인할 수 없다. 쿠키는 이름/값/만료일/사용범위 데이터를 갖는다. 사용범위는 URL내에 어디에서 사용되는지를 정의한다. ...
벌써 72일째네.. REVIEW 서블릿간 공유하는 객체 : ServletRequest, ServletRequest. 라이프사이클: 요청이 들어오면 생성되고, 응답이 끝나면 삭제되는 생명주기를 가진다. forward / include TIL 서블릿의 동작구조를 알면 스프링 프레임워크도 이해하기 쉬워진다.
코드트리 문제가 점점 어려워지고 있다. 재밌다~ 어제 개인사정으로 잠을 제대로 못자고 오니까 오늘은 하루가 완전히 나가리다. 일찍 가서 자고 와야지… Review HTTP Method (GET / POST) refresh, redirect 일정 시간 뒤에 보내기, 바로 보내기 뒤 내용을 보내냐 보내지 않느냐 ...
Review 서블릿에서 한글 깨짐? (학습한 내용에서 그렇다는거고 이게 최선의 방법이란 이야기는 아님) 서블릿에서 텍스트를 클라이언트(웹 브라우저)로 보내는 방법? 서블릿에서 바이너리를 클라이언트(웹 브라우저)로 보내는 방법? FileInputStream 으로 서버나 다른 서버에 위치한 정적 자원을 Read해서 보낸다. ...
Review 서블릿 배치 방법? web.xml 에서 명시 서블릿 클래스에 @WebServlet() 에 value로 주면 된다. 한개 줘도 되고 여러개 줘도 된다. value={ "/.../...", "/.../*" } value인 경우 값이 1개 뿐인 경우는 중괄호 생략 가능 ...
Review CGI란?: Common Gateway Interface로 웹 서버가 실행하는 앱과 웹서버가 통신하는 인터페이스 스크립트 언어가 많이 쓰이는 이유?: CGI(Common Gateway Interface)에 스크립트 언어가 적합함 AS Architecture (Application Server): 서버에서 응용프로그램이 돌아가고...
Review ServletContextListener 이벤트 발생시 처리하기 위한 클래스 ServletContext 서블릿의 상태를 저장하기 위한 클래스. 서블릿간 공유의 필요성이 있는 객체를 공유할 수 있음. TIL Web Application의 등장 배경과 활용 HTTP 한번쯤은 들어봤을 HTTP 의 역사. The term hypertex...
무한 원숭이 정리 이 글 을 보다가 갑자기 구현해보고 싶어져서 작성했다. 무한 원숭이 정리는 보통 진화론과 생명의 발생에서 언급되는데, 원숭이가 뭔가를 이해하지 않고 계속 타자를 치면 결국에 어떤 것이든지 (의미있는 것을) 만들어 낼 수 있을 것이라는 정리다. 코드 //infinite monkey theorm import java.io.Buffer...
주말간 리눅스 커맨드 라인을 공부했다. Review 아키텍처의 변화 이전의 클라이언트/서버 아키텍처는 웹 앱/서버 아키텍처로 변경됐다. 서버 앱이 톰캣 서버로 대체되었다. 톰캣 서버는 웹 서버와 서블릿 컨테이너로 구성된다. 클라이언트 앱은 웹 브라우저로 대체되었다. HTTP 프로토콜로 통신한다. 톰캣 서버는 네트워킹, HTTP(프로토콜), 멀티스...
인간은 망각의 동물이다. 원수도, 분노도, 서러움도 망각해버리니 계속해서 의식을 띄우며 기억을 덧씌워야 한다. 옅어지니까. TIL 톰캣 오너 변경 오라클이 9까지는 했음 10은 이클립스 재단이 관리했음 오라클/구글간 소송을 보고 이클립스재단이 패키지명을 java->jakarta로 패키지 이름을 바꿨음 시장에서 대부분의 업체들이 패키지를 j...
TIL Servlet Container Servlet -let 은 작은 것을 의미하는 점미어다. Bullet amulet… server App + let 서버 앱의 작은 기능을 서블릿이라고 부른다. 서버 어플리케이션은 여러 작은 기능들을 모아서 만든다. 안사관리면 직원등록, 휴가신청, 퇴사관리, 경력증명서신청 등 여러 기능들이 있을 것이다. 작은 기...
시간이 참 빨리 간다. 어제 밤에 보니까 이 영상에서 사람들이 댓글로 불타고(?) 있던데.. https://www.youtube.com/watch?v=0t8RovnvRsI 미디어 특성상 조회수 유발을 위해, 그리고 작성이 쉬운 방향으로 컨텐츠가 만들어지다보니까 자극적인 것이 나온다. https://www.itworld.co.kr/mainnews/32...
설날 잘 보내구 왔다. 연휴간 코드트리 가장 첫 단계인 NL을 드디어 다 풀었다!! TIL 62Day에 배웠던 내용 리뷰 Application Server Architecture의 도입은 경쟁이 심해졌기 때문 글로벌 경쟁에서 제품/조직/업무에 변경이 많아지니 앱도 변경이 그만큼 많아짐. C/S Architectu...
PDF Review SQL Injection 차단 원리: Dynamic SQL 구성시 String에 SQL 구문을 삽입하여 전체 SQL문을 왜곡시킴 방어: PreparedStatement 사용하여, SQL문과 값을 구분하여 받도록 함. (파싱 자체가 필요가 없어지니 구문삽입이 불가) JDBC Programming TIL Applicat...
알고리즘 조각지식 (java 기준) 이스케이프 문자도 당연히 길이에 포함된다. (1자로 포함됨) next()와 nextLine() 메서드의 동작 상황 next() 메서드 동작 nextLine() 메서드 동작 첫 글자가 공백인 경우 공백 이후의...
PDF Review DB 모델링에 대해서 도서관이나 수족관같이 엄청난 하중을 지탱해야 하는 경우 구조상 슬래브나 컬럼 단면이 일반 주거용 건물과는 달라지게 된다. 소프트웨어도 목적에 따라서 DB가 달라진다. 요구-개념-논리-물리 제3정규화 제3정규화는 이행적 함수 종속성이라는 용어가 나오면서 사람들이 쉽게 이해하는 것을 방해한다. 아래는 C...
TIL DBA는 훨씬 배우는 게 많다. InnoDB 최적화, 클러스터링, 메모리테이블 등등등 세부 주제가 더 많다. 적당한 DDL DMS DQL 작성하는 건 백엔드 엔지니어의 소양인데, java로 치면 DBA에게 그것은 리터럴을 배운 정도이다. 데이터를 어떻게 저장할지, 퍼포먼스 스키마들의 변수들이 무엇을 의미하고 어떻게 활...
변수를 활용하기 아래 두 코드는 동일한 일을 하지만, typeNum이라는 변수를 활용하는 경우 코드를 읽기 훨씬 쉽다. 작성하거나 수정할 때도 더 용이하게 할 수 있다. for(int i = 0; i < 3; i++) { s = sc.next().charAt(0); t = sc.nextInt(); ...
Mini Project 소감 CLI도 디자인에 따라 느낌이 많이 달라지는구나 데이터 모델링 데이터 모델링을 신입에게 시킨다면 사실 미친 회사. 어디에 FK를 잘못 박는다거나 하면 아주 잘못된 결과가 발생할 것. SI 파견에서 단가때문에 경력 뻥튀기를 하는 잘못된 관행 (신입인데 중급으로 보낸다던가, 3~4년차인데 고급으로 보낸다던가) 뻥을 ...
PDF 24년의 1월이 다 갔다.. 코드트리 아주 열심히 하는 중..! Review SQL 문법 복습이 아주 많이 필요한 부분… 배웠던 건데도 오랜만에 보니 손에 잡힐듯 말듯 하다.
Assignment DBMS와 통신하는 java App 클라이언트 프로그래밍하기 CLI 환경에서 동작 메뉴 및 메뉴가 소속되는 그룹은 Composite Pattern 적용 JDBC Type4 Driver 적용 DAO 분리 Handler 분리 VO 분리 아직 도메인은 분리되지 않음 무엇을 만들 것인가? 어떤 데이터를...
PDF 24년의 1월이 다 갔다.. 코드트리 아주 열심히 하는 중..! Review DB’s Client 클라이언트마다 연결되는 스레드마다 설정이 있다. DBMS 라이센스에 따라 스레드 개수를 제한한다…!! (동시 커넥션 수 제어…) 근데 유저가 그걸 임의로 변경할 수 있다. 유저 세션 개수를 늘릴 수 있다는 거...
PDF 벌써 1월의 마지막 날이다. Review SQL 테이블의 생성, 변경, 삭제 null 값 허용/비허용 Column type (자료형) key candidate primary unique alternate artificial (surrogate) ...
PDF Review TIL SQL(Structured Query Language) 구조적 질의 언어라고 번역되는 SQL은 쉽게 말하면 DBMS에게 내릴 명령을 작성하는 프로그래밍 언어이다. SQL은 C, java, python 같이 통일된 컴파일러나 인터프리터가 있는 언어가 아니다. DBMS 제작사마다 어떤 SQL 명령은 지원하고, SQL 문법에 존...
PDF 이번 강의는 따라가느라 적은 내용이 상당히 적다… 반 강제적으로 한번 지식을 주입받았으니 내가 책이나 예제들을 보고 다른 포스팅을 남기면서 채워야겠다. Review DBMS Programming MySQL 설치 / 설정 사용자 등록 권한 설정 DBMS 프로그래밍이란? DBMS와 직접 통신...
PDF TIL Framework Netty ExecutorService와 같이 스레드풀 관리를 위한 API가 있듯이, 서버 관리를 위한 프레임워크가 있다. 한국인 개발자가 만들었다!! DBMS 아주 자세한 설명 Database는 번역이 필요없어진 외래어다. 데이터베이스는 아주 간단하게 말하면 데이터를 모아둔 것이다. DBMS는 Database M...
PDF Review Thread Life Cycle start() -> Running (able to use CPU resource) sleep() -> Not runnable (reject/unable to use CPU resource) When end the call of method -> Dead ...
PDF Review 클라우드에 리눅스 서버 생성하기 VPC (Virtual Private Cloud) 설정하기 ACL 설정하기 (Access Control List) Subnet mask 설정하기 (VPC 안에서 사용할 비트) 서버 생성하기 Server ACG 설정하기 (Acce...
PDF Review CO/CL DNS 서버와 야코 순간 이게 생각났다. 알아? 몰라! 알아? 몰라! 알아? 몰라! 알아? 알아! Kids now, Kids then ISP 가 제공하는 DNS 서버에 물어보고, DNS 서버는 모르면 하위 서버에 물어보고, 하위 서버는 모르면 또 하위 서버에 물어보고, 이렇게 계속 물어보고 찾으면 IP주소를 반환하고! ...
PDF 강의 내용 2024년 1월 22일, 월요일 오늘은 교육센터에서 PC가 업그레이드와 함께 스토리지가 초기화되었다. 나는 내 소유의 랩탑들을 쓰고 있어서 환경을 재구성할 필요는 없었지만, 혹시라도 이 컴퓨터를 사용할수도 있는 다른 훈련생들을 위해, 연습겸 개발환경을 구성했다. SDK 기반으로 JDK 설정함 가장 범용성 높...
Review I/O Stream 스트림: 데이터가 단방향으로 흘러가는 (전송되는) 것 ByteStream VS CharacterStream 둘 다 스트림이라는 것은 공통점 바이트단위로만 읽고 쓰거나, 자료형에 맞춰서 읽고 쓰거나의 차이 즉 입출력의 단위가 핵심적인 차이 Reader/Write...
Review CO/CL Connection Oriented VS Connection-less 차이 : 연결이 있어야 통신이 가능하냐? 연결이 일단 되어야(검사를 해야) 통신이 가능하면 CO 이다. 연결 여부와 관계없이(검사 없이) 통신이 가능하면 CL 이다. 그럼 연결, 정확히는 연결 검사를 어떻게 하나? 여기서 3-way Handshake 혹은 4...
Review Network Proxy Stateful, Stateless 한번 요청하고 연결을 계속 유지하는 경우, 즉 상태(State)를 유지하는 경우는 Stateful 통신이다. 한번 요청을 처리하고 연결을 끊고, 필요시 다시 연결하도록 하는 경우는 Stateless 통신이다. ServerSocket의 대기열과 accept() 메서드의 동...
Review Proxy Pattern (GoF) Proxy는 라틴어 단어 “procurator”에서 파생된 단어이며, “Procurator”는 “대리인”이나 “대리인으로서 행동하는 사람”을 의미함. 한국어로 번역하면 대리인 정도가 될 수 있음. Proxy는 컴퓨터 과학 분야에서 주로 사용되며, 네트워크 통신, 보안, 캐싱 등 다양한 컨텍스트에서...
Review Socket Socket을 이용하여 클라이언트/서버 애플리케이션을 만들기 Socket에 입출력 스트림을 연결하여 데이터 송수신하기 인터페이스의 활용 변수도 객체도 전부 인터페이스를 타입으로 쓴다. 그 인터페이스의 규칙에 따라 만든 것을 쓰겠다는 의미로, 코드의 유연성을 높이려는 목적이다. 이렇게 되면...
Review DAO 왜 썼니? (무슨 역할(목적)?) 이전에 핸들러는 UI처리 (콘솔 입출력) 및 데이터 처리 코드가 한 클래스 안에 있었다. 그러면 유지보수가 너무너무너무 힘들어진다. (=불가능해진다.) UI처리를 콘솔 입출력에서 GUI로, 혹은 웹 페이지로 변경한다면 그 때마다 데이터 처리 코드도 수정이 되어야 하는 것이다. 반대로 데이터 처리 코...
Review Generic 제네릭이란? 타입에 종속되지 않는 메서드와 클래스를 만들어 동일 기능을 여러 타입에 대해 보편적으로 사용할 수 있게 해주는 문법이다. 다르게 말하면, General, 범용적인 클래스와 메서드를 만들 때 쓰는 문법이 generic이다. 줄여 말하면, 범용 클래스를 제작하는 전용 문법이다. 제네릭의 사용법? <> ...
Review Terminology Functional Interface Lambda Grammer Static Method Reference Instance Method Reference Constructor Reference forEach( [lambda] ) 람다 문법과 메서드 레퍼런스 문법은 별개의 문법이며, 모두 functional in...
복습 JSON Library GSON jackson-databind Builder Pattern (GoF) Factory Method 보다 복잡한 옵션을 설정하여 인스턴스를 생성하려고 할 때 사용 만드려는 객체(레퍼런스 변수) = new 빌더().옵션설정(옵션).옵션설정(옵션).create(); 어… 그러면 빌더().create()만 하면 팩토리 메...
복습 Serialize / Deserialize 객체를 SSD, HDD 등의 스토리지에 저장하려면, 저장할 수 있는 형식으로 변경해야 한다. 그래서 일련의 바이트 배열로 변경하는 경우가 있는데, 이것을 Serialization이라고 표현한다. 그렇게 출력하고 저장한 바이트 배열을 읽어들여서 다시 인스턴스를 생성하는 과정은 Deserialization이...
복습 버퍼 사용의 이유 버퍼를 쓰는 이유가 뭔가? 버퍼를 쓰는 이유는 프로그램을 더 빠르게 만들기 위함이다. 버퍼를 쓰면 왜 빨라지나? 컴퓨터는 cpu가 메모리를 다룰 때는 엄청 빠른데, 외부 저장장치에 접근하여 읽거나 쓸 때는 그에 비해서 엄청 느리다. 그래서 메모리 입출력의 횟수를 줄이기 위해서 버퍼라는 임시 저장공간을 메모리에 만들어서 우선 거기...
복습 파일 입출력 파일로 문자열이나 숫자 등의 데이터를 출력하고 읽을 수 있는가? FileInputStream, FileOutputStream 에 대해서 설명할 수 있는가? 무조건 바이트 배열로 입력하고 출력할 수 있는 스트림이다. 파일 입출력의 시초가 되었던 유닉스의 read()에서 유래했다. 상속 사용법 상속을 이용하여 기존 클래스에 기능을 추가할...
복습 중첩클래스 로컬클래스 로컬클래스에서 enclosing 메서드의 변수를 사용하는 메커니즘을 설명할 수 있는가? 그것을 직접 사용하는 것이 아니라, 그 변수의 값을 할당하는 변수를 자동으로 컴파일러가 생성해주기 때문이다. (Non-Static Local Class) 이러한 변수는 바이트코드를 해석한 IDE의 윈도우에서 Synthetic 이라고 붙은 ...
24년이라니!! 복습 Iterator Design Pattern (GoF) 자료구조에서 값을 꺼내는 방법에 통일성을 부여하기 위해 발견된 패턴. 어떤 자료구조에서 값을 꺼내건 동일한 방식으로 꺼내기 위해 사용한다. 장점 통일성 단점 오버헤드 중첩 클래스(Nested Class) 사용 용도 어떤 하나의 클래스에서만 사용하...
23년의 마지막 금요일이다. 23년이 이제 진짜 가는구나. 복습 인터페이스를 이용한 객체 사용 규칙 정의 인터페이스 활용시 이점 교체가 쉬워진다! 이 인터페이스를 (구현한 클래스로 만든 인스턴스(객체)) 쓴다고 코드를 작성하면, 나중에 그 부분을 교체하지 않고 한 두줄의 코드만 변경하여 다형성을 구현할 수 있다. 인터페이스와 추상클래스를 결합해서 사...
학습 Linked List, Array List의 remove(Object) 메서드에서 구현 방법이 다른 이유? Linked List 에서 삭제하려는 값과 동일한 값을 가진 노드를 발견하고서, index를 받아서 삭제하는 remove() 메서드를 실행하여 나머지를 처리하는 경우 traverse를 두 번 해야 하는 비효율이 생긴다. 가비지컬렉션을 도와...
복습 예외처리 예외처리의 고전적 방법 예외를 처리하기 위한 방법은 어떻게 발전해왔나? 호출된 메서드에서, 호출한 메서드에게 정보를 전달하는 방식으로 생각하기 쉬운 것은 return value를 이용하는 것이다. ArrayList 클래스의 indexOf() 메서드가 그러한 방법을 사용한다. 원하는 값이 없는 경우 (예외가 발생한 경우) 인덱스의 값으로...
30일차 복습 날짜 관련 클래스 java.util.Date 클래스 사용할 줄 아는가? (날짜 및 시간 정보의 추출) java.util.Calendar 클래스 사용할 줄 아는가? java.sql.Date 클래스 예외처리 문법의 목적과 구동 방식을 설명할 수 있나? 문법오류가 아니고 실행 중 문제가 발생하면 그것은 대부분 예외...
23/12/22 복습 인스턴스를 복사하는 방법 Object 의 clone() 메서드를 사용하여 인스턴스 복제 가능. clone() 메서드를 사용하려면 Cloneable 인터페이스를 구현한다고 JVM에 알려줘야 함. COPY: Shallow VS Deep 인스턴스를 복제할 때, 깊은 복사와 얕은 복사는 의존 객체는 복제하지 않음. 인스턴...
28일차 23/12/21 복습 배운 내용 돌아보기 인터페이스 인터페이스 문법의 용도? 추상클래스에서 더 나아가서 어떤 메서드를 구현해야 할지만 알려주고 싶은 경우. 인터페이스 상속과 구현에 대한 설명? 인터페이스는 인터페이스를 상속할 수 있다. 인터페이스의 다중 상속이 가능한 경우, 불가능한 경우? 메서드 시그너처가 겹치는 메서드가 구현이 안되어 있...
복습 필드나 메서드에 접근을 제어해야 하는 상황은 언제가 있을까? 대부분의 상황에서 접근을 제어해야 할 것이다. 다른 클래스에서 필드에 임의 접근이 가능하다면 캡슐화가 깨진다. 캡슐화는 추상화를 지원하는 도구이고, 추상화는 현실 세계를 데이터와 연산자로 표현하기 위한 노력이다. 그래야 컴퓨터가 처리할 수 있으니까. Modifer 란? private ...
추상 클래스의 용도는? 상속을 위해 존재하는, generalization을 위한 클래스이다. 인스턴스화를 할 수없다. (인스턴스 생성이 불가능하다.) 레퍼런스 선언은 가능하다. 다형적 변수를 구현한다. 인터페이스도 레퍼런스 선언은 가능하다. 컴파일러: 레퍼런스가 선언된 클래스를 기준으로 형식만을 검사한다. J...
복습 다형적 변수의 사용방법 컴파일러는 형식상 옳은지 아닌지만 검사한다. 자식 타입은 부모보다 변수나 기능이 더 많기 때문에, 자식 타입의 레퍼런스에 부모 클래스의 인스턴스 주소를 할당해 줄 수 없다. 형변환을 통해서 할당한다 하더라도, 부모 인스턴스에서는 자식 클래스의 변수나 메서드가 없기 때문에 런타임 오류가 발생할 것이다. (실제 그 레퍼런스가...
복습 생성자에 대한 설명? 클래스를 객체로 생성할 때(사용할 때) 단 한번 실행되는 메서드가 생성자다. 왜 생성자가 필요한가? 객체가 유효한 상태로 존재하기 위해서는 기본적인 설정이 필요하다. 그 기본적인 설정을 하는 것이 생성자다. 만약 기본적인 설정을 할 게 아무것도 없다면, 아무것도 하지 않고 아무 정보도 받지 않는 생성자인 기본생성자를 쓰면 ...
23일(2023-12-14) 전략을 바꿔야겠다. 실습을 따라가는 것만 해도 하루 시간이 부족할 정돈데, 정리를 따로 해서 올리는 건 시간을 최적화해서 사용하지 못하는 걸로 판단된다. 일자별 내가 무엇을 배웠는지, 이것이 나에게 어떤 성장이 되었는지, 내가 어떤 생각을 하고 있는지를 일기처럼 적어야겠다. (다 상세히 서술하진 못해도) 학습시간 필기...
22일(2023-12-13) 복습 GRASP (일반적 책임할당 지침) 의 Information Expert 적용 정보를 가지고 있는 클래스가 그 정보를 다루게 해라. 그렇게 해야 클래스를 전문화시켜서 높은 응집력을 가지게 할 수 있다. GRASP: High Cohesion 응집력을 높여야 다른 프로젝트에서 사용가능하며, 기능 변경시 작업해야 하는 ...
21일 Open/Closed Principle? 기능 추가(확장)에는 열려있으나 코드 변경에는 막혀있어야 한다는 원칙이다. GRASP: Low-Coupling? 클래스와 클래스간의 결합이 적어야 재사용이 가능한 클래스를 작성할 수 있다. 죽는 순간 까지 햇갈릴 것이다. 헷갈리다? 햇갈리다? 배게? 베게? 어차피 모든 지식은 다 헷갈리게 된다. 인간의...
클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-22 남은 일자 : 111 일 ( 20/129 ) 본 내용은 제가 교육을 수강하며 기록한 내용으로, 정리되지...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 [Github] 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-22 남은 일자 : 128 일 ( 1/...