본문 바로가기
반응형

전체 글202

OSI 7계층 물리 계층 전기적인, 기계적인 신호를 주고 받는 역할을 하는 계층. 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다. 비트의 0, 1의 단위로 통신한다. 이 계층에 속하는 대표적인 장비는 통신 케이블, 허브, 리피터 등이 있고, 데이터의 종류나 오류를 제어하지 않는다. 데이터 링크 계층 P2P간의 신뢰성 있는 전송을 보장하기 위한 계층이다. 전송 데이터에 대한 CRC 오류제어와 흐름제어가 필요하다. 네트워크 위의 개체들 간 데이터를 전달하고 물리 계층에서 발생할 수 있는 오류를 찾아내고 수정하는데 필요한 기능적, 절차적 수단을 제공한다. 주소 값은 물리적으로 할당 받는데, 네트워크 카드가 만들어질 때부터 맥 주소가 정해져 있다는 뜻이다. 네트워크 브릿지나, 스위치 등이 이 계층에서 동작하며 직접 이.. 2022. 2. 21.
SOLID (객체 지향 설계) SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. S ( Single responsibility principle ) 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 그리고 그 책임을 완전히 캡슐화해야 한다. 이것은 클래스를 더욱 튼튼하게 만들기 위함이다. 만약 한 클래스가 여러 책임을 가지고 있다면 수정 과정에서 같은 클래스의 일부 출력 코드가 망가질 위험이 대단히 높다. 클래스는 설계도 도면과 마찬가지이다. 자동차 설계도에서 자동차를 만드는 방법만 가지고 있어야하지 완전히 다른 것을 만드는 방법까지 가지고 있을 필요도 없고 가지고 있어서도 안된다. O (.. 2022. 2. 21.
[4] 인덱스 데이터 OpenSearch에는 인덱스 API와 _bluk API 두 가지가 있다. 새로운 데이터가 점진적으로 ( 소규모 비즈니스의 고객 주문 등 ) 쌓이는 구조의 경우 인덱스 API를 사용하여 개별적으로 문서를 추가할 수 있다. 데이터의 흐름이 더욱 천천히 쌓이는 경우 ( 마케팅 웹사이트에 대한 주간 업데이트 등 ) 파일을 생성하여 _bluk API로 보내는 것이 좋습니다. 많은 수의 문서에 대해 함께 묶어서 _bluk API를 사용하면 우수한 성능을 제공 받을 수 있습니다. 하지만 문서가 그보다 방대하다면 개별적으로 인덱스를 생성하는 것이 좋습니다. 데이터를 검색하려면 먼저 인덱스를 생성해야 합니다. OpenSearch는 고유 ID를 사용하여 각 문서를 식별합니다. // Index API 요청 PUT /_do.. 2022. 2. 18.
[3] 인덱스 생성과 설정 예제 :: Index Naming Restrictions 모든 문자는 소문자만 가능. 인덱스 이름의 시작은 '_'나 '-'로 시작될 수 없음. 인덱스 이름은 다음의 문자열을 포함할 수 없음. ( :, ", *, +, /, \\, |, ?, #, >, or < ) Movie라는 이름을 가진 인덱스의 생성 예시 기본적으로 settings와 mappings라는 key를 가진 JSONObject로 인덱스에 대한 설정 정보를 입력한다. // movie라는 이름을 가진 인덱스의 생성 예 PUT /movie { "settings": { "number_of_shards": 1, "number_of_replicas": 1, "shard": { "check_on_startup": false } }, "mappings": { ".. 2022. 2. 17.
[2] Opensearch와 클러스터 설정 Opensearch 구성은 cluster setting API에서 설정할 수 있다. 특정 부분은 opensearch.yml 파일을 수정하고 다시 시작해야되는 부분이 있는데, 이 특정 부분을 제외하고는 가능하면 cluster setting API를 사용하는 것이 좋다. cluster setting API는 클러스터 내 전체 노드의 설정을 적용하지만 opensearch.yml파일을 수정하는 것은 각각의 노드 설정을 변경하는 것이 된다. opensearch.yml 파일을 수정해야되는 특정부분은 네트워킹, 클러스터 구성, 로컬 파일 시스템에 대한 수정 작업이 이루어질 때이다. Opensearch에서 데이터를 검색 및 집계하기 전에 클러스터 생성부터 이루어져야 한다. 단일 노드 또는 다중 노드 클러스터로 작동할 .. 2022. 2. 14.
[1] OpenSearch란? Opensearch와 일반 RDB 비교 1. OpenSearch란? Elastic NV는 소프트웨어 라이선스 전략을 변경하는 바, 퍼미시브 ALv2 라이선스 하에서 Elasticsearch 및 Kibana의 새로운 버전을 더 이상 릴리스하지 않는다고 발표함으로써, AWS에서 마지막 ALv2 버전의 Elasticsearch 및 Kibana에서 갈래를 생성하고 유지 관리하기로 한 것을 Opensearch라고 지칭하였다. 2. OpenSearch와 일반 RDB 비교 일반 RDB 엘라스틱서치(Opensearch) 비고 Database, table index , type 일반 RDB는 하나의 Database 내에 여러개의 table을 가질수 있으나, 엘라스틱서치 6 (?)부터는 index당 오직 하나의 type 만 가질수 있습니다. 엘라스틱서치 7 에.. 2022. 2. 12.
경기지역화폐 사용처 확인 방법 알아보기! 비용문제로 인해 서비스를 내리게 되었습니다 (_ _) 카카오톡에서 편하게 경기지역화폐 사용처를 찾을 수 있는 지도를 만들었습니다. 아직 경기도 전역 검색은 안되는데 금방금방 업데이트하고 있어요! 아직 안나오는 지역들도 금방 추가할 예정입니다. 카톡채널 '경기지역화폐 사용처'라고 검색하면 나오고 한 눈에 위치를 볼 수 있어 좋고, 느리지도 않아서 빠르게 찾아 볼 수 있습니다. 또한 카테고리별로 찾을 수 있고, 상호명으로도 빠르게 찾을 수 있어서 좋아요. 친구 추가 하시고 채팅방에서 아래 사용 방법버튼 누르시고 사용처보기 버튼 누르시면 바로 찾아 보실 수 있습니다! 아래 링크 남겨드릴게요~! 경기지역화폐 사용처 카카오톡 채널 링크 : http://pf.kakao.com/_mSdxaxb 경기지역화폐 사용처 경.. 2020. 4. 16.
[Spring] JPA Specification Example Spring JPA Specification Simple Example 스프링 JPA Specification 예제 - Extended 'JpaSpecificationExecuter' class Repository 인터페이스에 JpaSpecificationExecutor 클래스를 extend 시켜주었다. public interface UserRepository extends CrudRepository, JpaSpecificationExecutor { } - Created methods for criteria API Specification 객체를 리턴하는 메소드를 따로 구현하였다. userId가 인자로 받은 id인 경우와 name이 인자로 받은 name인 경우(동등비교 equal)이다. public st.. 2019. 4. 2.
[ES 6] 모듈이란? 1. ES6 새로운 모듈 구현 방법 ES6 모듈은 ES6부터 신설된 모듈 시스템이고 자바스크립트 언어 자체에 내장된 표준 모듈이다. 비교적 구문이 간결하고 성능이 우수하며 많은 최신 API가 ES6 모듈로 패키징되고 있다. A. 모듈 Export - ES6 모듈은 변수, 함수, 클래스, 기타 엔티티를 익스포트할 수 있다. 모듈에서 익스포트 시 사용하는 export 구문은 아래와 같은 형식들이 있다. export {a}; // 1 export {a, b}; // 2 export {a as variableA}; // 3 export {a as default}; // 4 export default function () {}; // 5 export {c, d} from "myAnotherModule"; // 6.. 2017. 9. 19.
[ES 6] Class 구문과 상속 1. class 구문 ES6의 클래스는 기존 모델에 단지 새롭게 추가된 구문일 뿐, 새로운 객체 지향 모델은 아니다. 단순히 생성자와 상속을 좀 더 간단하고 명확한 구문으로 다룰 수 있게 해주는 구문이다. 클래스는 사실은 함수이며 생성자로 사용한 함수를 생성하는 새로운 구문의 일원이다. 다음은 클래스를 선언하는 방법이다. class User { constructor(name, age) { this._name = name; } } let user = new User("유저"); console.log(user._name); User클래스를 생성 후 그 안에 constructor 메소드를 정의했다. 그리고 클래스의 새 인스턴스, 즉 name 프로퍼티가 있는 객체를 생성했다. 클래스 바디 안의 모든 코드는 기본.. 2017. 9. 19.
[ES 8] async/await 2017/09/15 - [Javascript/ECMAScript 2015 (ES6)] - [ES 6] Promise 비동기 요청 1. async/await Promise 패턴의 then 체이닝도 복잡하다! 더욱 간단한 방법이 async/await입니다. async/await은 프로미스 객체를 아래 예제처럼 다양한 함수식에서 쓰일 수 있습니다. async function getUser(userIdx) { try { let user = await Database.query(`query`); return user; } catch(e) { console.log(e.message); } } let getUser = async function (userIdx) { let user = await Database.qu.. 2017. 9. 15.
[ES 6] Promise 패턴을 사용한 http request 요청 Promise 패턴은 이벤트/콜백 패턴의 골칫거리(콜백헬)를 해소하고 비동기 코드를 마치 동기 코드처럼 표현하는 것을 말한다. 1. Promise 생성자 Promise 생성자는 Promise 인스턴스를 생성한다. 이 때 비동기 작업에 해당하는 실행자 콜백을 넘기는데, 실행자는 귀결(resolve)콜백과, 버림(reject)콜백 두 파라미터를 가진다. 작업이 성공하면 resolve, 실패하면 reject콜백이 실행된다. 아래 예제를 보자. function httpRequest(url, method) { return new Promise((resolve, reject) => { let request = new XMLHttpRequest(); request.open(method, url); request.ad.. 2017. 9. 15.
[Firebase] 서버리스? Firebase Functions! 1. Firebase Function이란 무엇일까? Firebase Function을 사용하게 되면 HTTPS 요청에 의해 트리거된 이벤트에 대한 응답으로 백엔드 코드를 자동으로 실행할 수 있는 기능이다. Firebase에는 실시간 데이터베이스, 인증, 스토리지, 호스팅, FCM(Firebase Cloud Messaging), Analytics등을 제공하는데, Function으로 데이터베이스나 스토리지에 요청을 보내 저장이나 데이터를 가져올 수 있다. * Firebase Function에 대한 설명은 Firebase 홈페이지에도 한글로 잘 나와있다. 2. Firebase Function 설치 및 배포하기 우선 Firebase Console에 접속하여 프로젝트를 생성한다. Firebase 홈페이지 (위 링.. 2017. 9. 15.
[ES 6] Symbol 1. Symbol Symbol은 ES6에서 처음 선보인, 완전히 새로운 원시 타입으로, 심볼값은 유일하며 변경할 수 없다. 심볼은 리터럴 형식이 없고 Symbol() 함수로 생성한다. 이 함수는 호출할 때마다 유일한 심볼을 반환한다. 또한 심볼에 관한 서술을 선택인자로 줄 수 있다. 심볼 자체에 접근하려는 시도는 아니고 단지 디버깅 용이다. 서술이 동일해도 심볼까지 동등하진 않다. let a = Symbol(); let b = Symbol(); let c = Symbol('설명'); console.log(a === b); // false 자바스크립트에서 객체의 프로퍼티 키는 보통 문자열 타입이었지만, ES6부터는 문자열과 심볼 둘 다 가능하다. let obj = null; let a = null; let.. 2017. 9. 11.
[ES 6] Arrow Function - 화살표 함수 1. 화살표 함수 (Arrow Function) ES6부터 '=>' 연산자로 함수를 생성하는, 화살표 함수가 처음 생겼다. 화살표 함수는 보다 간결한 구문을 지닌 익명 함수이다. let add = (x, y) => { return x + y; }; let result = add(1, 2); console.log(result); // 3; 문이 하나 밖에 없는 화살표 함수는 {}를 생략할 수 있다. let add = (x, y) => x + y; 2. 화살표 함수에서의 this 화살표 함수에 this 값은 해당 스코프의 this 값과 같다. 여타 함수에서 this가 콘텍스트 객체를 가리키는 것과는 대조적이다. var obj = { func : function() { console.log(this); // .. 2017. 9. 11.
반응형