시작을 할 때, 어떻게 시작을 하는가?계획을 세우는가, 무지성으로 실행을 옮기는가. 이 같은 말을 하는 이유는 매일같이 생각하는 나 자신을 향한 질문이기 때문이다. 계획을 세우고 실천으로 옮긴다.이번 추석 또한 계획대로 움직인 것 같아 뿌듯하면서도 다른 한 편으로는 매우 아쉽다. 나 자신에 대한 가능성을 스스로 거 둬 차는 기분이 들어서이다.어렸을 적에 넘어지고 다시 일어서며, 실패하더라도 두렵지 않았지만 시곗바늘이 한 바퀴를 돌 때마다 슬슬 실패라는 단어가 두려워지기 시작한다. 넘어지지 않고 싶어하며, 도전이라는 단어를 기피한다.항상 새로운 것을 생각하면서도 완벽이라는 단어에 집착한 나머지 도전이라는 단어는 시들어간다. 한 바보를 바라보며, 문득 생각이 든다.굳이 계획을 세워야할까? 오늘 문득 어느..
📑 Proxy 소개구조 디자인 패턴이다.어떤 객체에 대한 접근을 제어하거나 기능을 확장하려고 할 때 사용클라이언트가 객체를 직접 사용하는 대신에 Proxy라는 대리자를 통해 객체에 접근하도록 만든다.실제 객체와 같은 인터페이스를 구현함으로써, 클라이언트가 실제 객체와 동일하게 Proxy 를 사용할 수 있게 해 준다.Proxy 는 실제 객체의 생성과 관리, 생명주기를 관리하거나, 접근을 제어하며, 요청을 가로채 추가적인 행동을 수행하고 나서 실제 객체로 요청을 전달. 📝 구성 요소요소설명Subject ( 주제 )실제 객체와 Proxy 객체가 구현해야 하는 인터페이스클라이언트는 Proxy를 실제 객체처럼 사용할 수 있다.Real Subject ( 실제 주제 )Proxy가 대신하여 요청을 처리하는 실제..
📝 State 정리행동 패턴 디자인입니다.객체의 내부 상태가 변경될 때마다 객체의 행동을 변경할 수 있도록 합니다.객체의 상태를 클래스로 캡슐화합니다.상태에 따라 동일한 작업을 다르게 처리할 수 있습니다.코드의 유지보수를 용이하게 만들 수 있고, 객체 지향 원칙에 보다 잘 부합하게 해 줍니다. 디자인패턴 중, 가장 잘 나오는 기능 중 하나는 동적바인딩입니다.동적바인딩을 사용하는 이유에는 대표적으로 Strategy와 Command 패턴이 있다고 생각됩니다. (Strategy) 전략적으로 사용할 것인지, (Command) 여럿 선택 중 하나를 선택할 것인지에 대한 선택입니다.여기서, 동적바인딩을 Main에서 굳이 할 필요가 있을까?동적바인딩으로 인해서, Main의 코드가 길어지는 모습을 볼 수 있습니다...
💭 Command 패턴이란?행동 디자인 패턴이다.요청을 객체의 형태로 캡슐화하여 사용자가 요청을 보내는 측과 요청을 수행하는 측을 분리하는 패턴요청 실행, 취소, 로깅, 트랜잭션 등의 기능등 확장이 가능하다.복잡한 명령 시퀀스나 작업을 관리할 때 매우 유용하다. Command 패턴은 디자인 패턴 중 가장 어려웠던 패턴 중 하나였습니다. 그 이유가 왜 굳이 이렇게까지 분리를 해야 하는가???라는 부분에서 시작했습니다. 얼핏 봤을 때는 Strategy패턴과 유사하면서도 또 다르게는 이렇게 비효율적으로 코드를 만들어야 하는 이유를 몰라서였습니다. 먼저 Command 패턴의 구성요소를 먼저 소개해드리겠습니다. 💭 구성요소 요소 설명 Command 명령을 나타내는 인터페이스 명령을 실행하는데 필요한 메서드 exe..
🛜 구입 링크https://www.coupang.com/vp/products/8261059322?vendorItemId=90862059354&sourceType=MyCoupang_my_orders_list_product_title&isAddedCart= 한성컴퓨터 GK777SE 오피스마스터 8K 폴링레이트 윤활 저소음 기계식 키보드 뽀송 - 유선키보드 |쿠팡에서 0.0 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 0 제품도 바로 쿠팡에서 확인할 수 있습니다.www.coupang.com 🎁구매 후기지인의 추천으로 구입하게 되었습니다. '한성 키보드 뽀송'입니다!키보드박스부터 디자인이 부드러운 솜사탕을 연상케 만듭니다. 박스를 열었을 때의 모습입니다.제가 선택한 '모카 코코아' 키보드 모습..
📋 전략 패턴객체의 행동으로 캡슐화알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경 가능한 행동패턴동일 계열의 알고리즘군을 정의각 알고리즘을 별도의 클래스로 캡슐화이들을 서로 교체 가능하도록 만든다.클라이언트와 알고리즘 자체의 구현 사이의 결합도를 최소화 전략 패턴이란, 서울에서 부산에 간다고 가정을 했을 때 우리가 선택할 수 있는 방법은 다양할 수 있습니다.버스, 기차, 자전거 등 여러 가지가 존재합니다. 여기서 비용을 최소화 한다면 자전거를 탈 것이고, 시간을 최소화한다면 기차를 탈 것입니다.이 처럼 상황에 따라서 사용하는 객체가 달라질 수 있는데 이를 Strategy 패턴이라고 부릅니다. 💭 구성 요소 요소설명Context ( 문맥 )전략을 사용하는 역할전략을 이용하여 특정 작업..
💭 쿠키의 구성// 기본 쿠키 설정document.cookie = "username=John Doe";// 쿠키에 만료일을 추가document.cookie = "username=John Doe; expires=Fri, 31 Dec 2024 23:59:59 GMT";// 도메인, 경로, 보안 설정document.cookie = "username=John Doe; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/; domain=example.com; Secure; HttpOnly";ChatGPT가 알려준 cookie의 구성 모습입니다. cookie를 삽입할 때, 다양한 형태로 저장하게 되는데, 왜 이런 형태가 나왔는지를 알아보도록 하겠습니다. 💭 쿠키의 기본 규칙// 기..
🥠 Promise 코드 사용하기//promisefunction gogo() { console.log('start'); let pro = new Promise((resolve, reject) => { let success = false; if(success) { //성공 resolve('this is success'); } else { reject('fail'); } }); pro.then(resolve => { console.log(resolve); }) .catch(reject => { console.log( reject); }) ..
🍀 SingleTon객체 지향 프로그래밍에서 특정 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴이다.이 패턴을 사용할 시, 전역 변수를 사용하지 않고도 객체에 전역적으로 접근이 가능해진다.시스템 전체에 걸쳐 특정 지원에 대한 일관된 접근을 제공 하는데 유용 🧑💻 코드보기Singleton.classpublic class Singleton { //private 정적 인스턴스 private static Singleton instance; // private 생성자 private Singleton() {}; //public method public static Singleton getInstance() { if(instance == null..
🍁 중첩 클레스✔️ class안에 class를 의미한다.✔️ class 안에 class가 있어서 Inner Class라고도 부르기도 한다. 🍁 중첩 클레스 종류분류설명인스턴스 멤버 클레스A 객체가 선언 되었을 때, 그 안의 B객체가 존재한다.A 객체에 접근하고 B 객체에 접근할 수 있다.정적 멤버 클레스A 객체와 상관없이 B 객체가 이미 만들어져 있다. ( static )A 객체에 접근하지 않아도 B 객체에 접근할 수 있다.로컬 클레스A 객체 안의 method 혹은 생성자에서 B 객체에 접근할 수 있다. ✔️ 중첩 클레스에서 먼저 파악할 것은 '멤버'라는 명칭이다. class 안의 class를 의미한다. 우리가 생각하는 Inner Class이다. 여기에는 익명 클레스도 존재하지만, 이는 다음장에서..
상속일상속에서의 상속이란, 부모의 것을 물려받는다라는 의미를 지녔습니다. 그러면 JAVA 프로그래밍 속에서의 상속이란 무엇일까요? 사진처럼 고양이와 강아지가 있습니다.두 마리의 동물은 서로 다른 개성으로 가진 동물로 유명합니다. 그러나 이 둘의 공통점이 존재합니다.그것은 이 두 마리는 동물이라는 점 입니다. 그럼 저희는 이를 동물Class로 생성하게 됩니다.class 동물 { String name; public void print() { System.out.println("울음 소리"); }}그런데, 동물 Class는 고양이와 강아지라는 것을 정의할 수는 있으나 이를 강아지class와 고양이class라고 정의하기는 어렵습니다. 왜냐하면, 어디까지나 동물class를 빌려 쓴 고양이와 강아지이기 때..
💡 Local에서 Remote Branch 확인하는 방법git branch -agit branch -a 명령어를 입력하게 되면, 해당 repository의 remote영역의 branch를 모두 가져올 수 있게 됩니다.여기서 빨간색 영역은 remote에 저장된 branch를 의미 합니다. 💡 RemoteBranch를 local로 가져오는 방법git checkout -t [ Remote Branch 명 ]위의 설명의 branch -a로 불러온 리스트에서, 가지고 오고 싶은 Branch 명을 작성 합니다.결과는 remotes/origin/main의 앞 명칭은 모두 삭제가 되고, origin/main만 가지고 오는 것을 확인할 수 있게 됩니다.
git에서 download 파일 만들기git에서 다운로드 파일을 지목합니다. 여기서 필요한 것은 평상시 git에서 어떻게 다운로드가 가능한가 입니다.Raw를 통해서 git의 파일을 다운로드가 가능합니다. 🌱 Raw를 마우스 우클릭 - 다른 이름으로 링크 저장 을 누르시면, 해당 파일에 대한 링크가 생성 됩니다.이 발생 된 URL을 호출하게 되면, 다운로드 링크가 완성 됩니다.
An error has occurred. See error log for more detail 해당 에러에 대한 조치 방법은 크게 2가지가 존재합니다. Error 조치하기첫 번째 방법✔️ 이클립스의 workSpace를 먼저 찾아야 합니다. 저의 Eclipse는 제 계정명 아래에 eclipse-workspace 곳에 파일이 존재합니다.여기서 .metadata - plugins로 접속 하도록 합니다. ✔️ org.eclipse.e4.workbench의 workbench.xmi를 삭제 하도록 합니다. 이후, 안 될 경우 두 번째 방법을 찾도록 합니다. 두 번째 방법 eclipse 실행하는 원본 환경으로 접속 했을 때, eclipse.ini 파일을 찾도록 합니다. 여기서 Java Version을 맞춰..
‘Requesting Java AST from selection’ has encounterd a problem. Java 코드를 이클립스가 제대로 못 갖고 오는 것에 대해 Error가 발생하게 되었습니다.해당 Error글 해결해보도록 하겠습니다. ❤️ Error 조치하기⭐ 이클립스 상단 => Window => Preferences을 클릭한다. ⭐ Java => Editor => Mark Occurrences로 들어가서 4번의 체크박스를 해제하록 합니다. 이후 해당 에러가 사라진 것을 확인 할 수 있습니다.
Spring Project 생성하기Eclipse에서 Project를 만들 때 New Dynamic Web Project를 선택해야 합니다. New Dynamic Web Project를 만드는 과정은 JSP를 만드는 과정과 동일합니다.과정은 복잡하지만, 이클립스와 Java Version마다 만드는 방법이 달라지므로 해당 방법을 고안했습니다. 이 방법이 귀찮았다면, SpringBoot로 만드는 것을 추천드립니다. 해당 방법의 Version은 Java 11과 Tomcat 9.0을 사용합니다.이클립스는 2022 - 03 버전을 사용합니다. Spring Legercy가 제대로 안 만들어지는 이상한 호환성을 가진 이들의 조합이라고도 할 수 있습니다.만들기 전에 자신의 Version을 제게 맞추실 필요는 없습니다. ..
Java 설치하기Java는 현재 많이 사용되는 언어 중 하나이다.이를 설치하기 위해서는 아래의 링크를 통해서 설치하면 된다. https://www.oracle.com/kr/java/technologies/downloads/ Download the Latest Java LTS FreeSubscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.www.oracle.com링크를 통해서 java를 설치할 수 있다.현재 24년 기준, Java의 최신판이 바로 보이는 것을 확인할 수 있다. 여기서 현재와 거리가 먼 과거의 버전이 필요하다면 스크롤 아래로 이동하면 과거의 ..
Router 을 설명하기 앞서서React에서의 Page 이동을 한 마디로 표현 하자면, 빨간색 레고블럭을 뜯고 파란색 레고블럭으로 변경한다라는 의미이다.이를 정확하게 알기 위해서는 Component라는 개념을 먼저 숙지를 하고 있으면 매우 좋다. React에서 한 페이지를 표현 할 수 있는 것을 Component라고 부른다.Component는 독립적이며, Component 하나가 하나의 React 코드이자, 이 하나로 하나의 페이지를 표현이 가능하다.그런 이를 한 개의 소스코드라고 가정할 때, 이러한 Component들이 모여서 하나의 페이지를 이룬다. 그러면 하나의 페이지를 이루기 위해서 최소 1개의 Component에서 여러개의 Component들의 집합이 형성 되었다.그렇다면, 만약 이 하나의 페이..
AXIOS으로 파일 보내기 axios로 파일을 보내기 위해서는 간단하게 알아야 할 것이 있다. FormData라는 객체이다. Object처럼 Key와 Value로 이루어져 있지만, 데이터를 넣는 방법은 append를 이용해야 한다. let formData = new FormData(); console.log(formData); formData.append('input', this.inputText); formData.append('inputFile', document.getElementById('input File ID').files[0]); 여기서 중요한 점은 FILE을 formData안에 append 한다는 부분이다. try { axios.post('http://localhost:3000/fileIn..
반복 되는 하루 속에서 아주 자그만한 것이 계기가 되어 거제시 까지 가게 되었다. 그 계기는 아주 사소할 수 있어도, 바쁜 일상 속에서의 스트레스를 탈출하고픈 마음이 서울로 부터 멀리 갈 수 있는 힘을 싣는다. 첫 번째 여행의 도착지는 거제의 천상의 섬이라고 불리우는 거제시 외도, 보타니아이다. 자그만 섬인 줄 알았던 그곳은 놀랍게도 섬 하나가 하나의 정원이자 놀이터였다. 무인도를 정원으로 가꾼 것인지, 이 섬은 항상 관광객들을 반긴다. 바닷가를 바라보면 다른 항구에서 출발한 배들이 모여들고 선착장은 사람들로 붐빈다. 이곳의 시작은 정말 혼잡스럽다. 비 오는 날씨에도 사람이 이렇게 많다면, 맑은 날씨는 오죽할까 싶기도 하지만 비오는 날씨라서 오히려 이쁜 사진이 잘 나오는 듯한 그림도 연출된다. 이는 마치..