시작을 할 때, 어떻게 시작을 하는가?계획을 세우는가, 무지성으로 실행을 옮기는가. 이 같은 말을 하는 이유는 매일같이 생각하는 나 자신을 향한 질문이기 때문이다. 계획을 세우고 실천으로 옮긴다.이번 추석 또한 계획대로 움직인 것 같아 뿌듯하면서도 다른 한 편으로는 매우 아쉽다. 나 자신에 대한 가능성을 스스로 거 둬 차는 기분이 들어서이다.어렸을 적에 넘어지고 다시 일어서며, 실패하더라도 두렵지 않았지만 시곗바늘이 한 바퀴를 돌 때마다 슬슬 실패라는 단어가 두려워지기 시작한다. 넘어지지 않고 싶어하며, 도전이라는 단어를 기피한다.항상 새로운 것을 생각하면서도 완벽이라는 단어에 집착한 나머지 도전이라는 단어는 시들어간다. 한 바보를 바라보며, 문득 생각이 든다.굳이 계획을 세워야할까? 오늘 문득 어느..
📑 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번의 체크박스를 해제하록 합니다. 이후 해당 에러가 사라진 것을 확인 할 수 있습니다.