● 문제 상황 개발 환경에서는 서버 재기동 없이 변경사항을 바로 적용하기 위해 nodemon을 사용했는데, 실행 시 다음과 같은 오류가 발생했다. $ npm run dev > ui-project@1.0.0 dev > nodemon --watch 'client/**' --exec ts-node server/index.ts [nodemon] 2.0.15 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): client/** [nodemon] watching extensions: ts,json [nodemon] starting `ts-node server/index.ts` [nodemon] Internal watch failed: E..
function getMedian(arr) { // arr.sort((a, b) => { return a - b; }); console.log('arr=', arr); const max = arr.reduce((acc, cur, idx) => { if(arr[idx] > acc){ acc = arr[idx]; } return acc; }, 0); let counts = []; for(let i=0; i
Array.reduce() ● 기본 정리 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다. arr.reduce(callback[, initialValue]) callback : 배열의 각 요소에 대해 실행할 함수. 다음 네 가지 인수를 가짐 accumulator : 누산기. 콜백의 반환값을 누적. 콜백의 이전 반환값 또는, 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우에는 initialValue의 값임 currentValue : 처리할 현재 요소 currentIndex (Optional) : 처리할 현재 요소의 인덱스. initialValue를 제공한 경우 0, 아니면 1부터 시작 array (Optional) : reduce()를 호출..
Array의 요소(element)를 swap하는 방법 Array에서 두 요소(element)를 서로 바꾸고 싶을 경우, swap을 해야 하는데 javascript에는 별도의 swap 메서드가 없기 때문에 직접 사용해야 한다. 예를 들어, arr = [1, 2, 3, 4, 5] 배열에서 arr[1]과 arr[2]의 값을 서로 바꿔 [1, 3, 2, 4, 5]가 되도록 만들어보자. ● temp 변수 사용 가장 기본적인 방법이 temp 변수를 사용하는 것이다. const arr = [1, 2, 3, 4, 5]; let temp = arr[1]; arr[1] = arr[2]; arr[2] = temp; console.log(arr); // [1, 3, 2, 4, 5] ● 구조 분해 할당 사용 구조 분해 할당 구..
Array.some() 기본 정리 some() 메서드는 배열 안의 어떤 요소라도 주어진 판별 함수를 통과하는지 테스트합니다. arr.some(callback[, thisArg]) 매개변수 callback : 각 요소를 시험할 함수. 다음 세 가지 인수를 받습니다. currentValue : 처리할 현재 요소 index (Optional) : 처리할 현재 요소의 인덱스 array (Optional) : some을 호출한 배열 thisArg (Optional) : callback을 실행할 때 this로 사용할 값 반환값 callback이 어떤 배열 요소라도 대해 참인(truthy) 값을 반환하는 경우 true, 그 외엔 false. ※ 빈 배열에서 some()을 호출하면 무조건 false를 반환합니다. 사용..
문제 발생 Vue.js로 만든 클라이언트에서 OAuth2를 적용하기 위해 hydra를 사용했다. auth_code 발급까지는 성공했는데, 이 auth_code를 기반으로 access_token을 발급받는데 자꾸 invalid_client 에러가 발생했다. time="2020-11-10T01:55:43Z" level=error msg="An error occurred" debug="crypto/bcrypt: hashedPassword is not the hash of the given password" description="Client authentication failed (e.g., unknown client, no client authentication included, or unsupported ..
qs 사용 방법 qs 설치 # node v12 필요 npm install qs .vue 파일 수정 Vue.js로 만든 quasar 클라이언트에서 qs 모듈을 사용하는 방법 LoginGroupware.vue 그룹웨어 로그인 주의사항 import할 때, qs를 {}로 묶어서 하면 qs.stringify 실행 시 오류가 발생한다. vue.runtime.esm.js?5593:1888 TypeError: Cannot read property 'stringify' of undefined at VueComponent.created (LoginGroupware.vue?b71e:65) at invokeWithErrorHandling (vue.runtime.esm.js?5593:1854) at callHook (vue.r..
문제 발생 Vue.js에서는 기본으로 Hashbang 모드를 사용해 url에 #이 붙게 된다. 처음엔 상관없었는데 나중에 서비스 개발이 복잡해지면서 hydra와 연동해 User Agent를 리다이렉트 URL(Redirect URL)로 설정해야하는 상황이 왔다. 문제는 여기서부터 시작됐다. hydra를 호출할 때 redirect_url을 파라매터에 묶어서 보내는데, 이 redirect_url이 client 생성 시에 미리 지정한 callback URL과 정확히 일치하지 않으면 오류가 발생한다. 하지만 hydra client를 생성할 때 --callbacks URL에는 특수문자가 포함될 수 없다. #이나 %를 넣거나 urlencode 값으로 변경해서 넣으면 오류가 발생한다. 따옴표를 붙이고 환경변수로 설정해..
기본 내용 ● forEach() forEach()는 Array의 메서드로 주어진 함수를 배열 요소 각각에 대해 실행 ES6부터는 Map이나 Set에서도 지원 arr.forEach(callback(currentvalue[, index[, array]])[, thisArg]) callback : 각 요소에 대해 실행할 함수. 다음 세 가지 매개변수를 받음 currentValue : 처리할 현재 요소 index (Optional) : 처리할 현재 요소의 인덱스 array (Optional) : forEach()를 호출한 배열 thisArg (Optional) : callback을 실행할 때 this로 사용할 값 forEach()는 주어진 callback을 배열에 있는 각 요소에 대해 오름차순으로 한 번씩 실행..
기본 정리 ● Array.map() callback 함수를 각각의 요소에 대해 한번씩 순서대로 불러 그 함수의 반환값으로 새로운 배열을 생성 arr.map(callback(currentValue[, index[, array]])[, thisArg]) callback : 새로운 배열 요소를 생성하는 함수. 다음 세 가지 인수를 가짐 currentValue : 처리할 현재 요소 index (Optional) : 처리할 현재 요소의 인덱스 array (Optional) : map()를 호출한 배열 thisArg (Optional) : callback을 실행할 때 this로 사용할 값 ● Array.forEach() 주어진 callback을 배열에 있는 각 요소에 대해 오름차순으로 한 번씩 실행 arr.forE..
기본 정리 ● Array.map() callback 함수를 각각의 요소에 대해 한번씩 순서대로 불러 그 함수의 반환값으로 새로운 배열을 생성 arr.map(callback(currentValue[, index[, array]])[, thisArg]) callback : 새로운 배열 요소를 생성하는 함수. 다음 세 가지 인수를 가짐 currentValue : 처리할 현재 요소 index (Optional) : 처리할 현재 요소의 인덱스 array (Optional) : map()를 호출한 배열 thisArg (Optional) : callback을 실행할 때 this로 사용할 값 ● Array.filter() 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환 arr.filter(call..
비교 연산자 ==와 ===, !=와 !==는 비슷해 보이지만 자세히 보면 서로 다른 연산자이다. 그동안은 둘의 차이를 잘 모르는 상태에서 그냥 사용했지만, 오늘은 이에 대해 알아보도록 한다. javascript는 엄격한 비교(일치 비교)와 형변환 비교(동등 비교)의 두 가지 비교 방법을 가지고 있다. 동등 연산자 (==) 두 피연산자의 자료형을 일치시킨 후, 엄격하게 비교를 수행 1 == 1 // true "1" == 1 // true 1 == '1' // true 0 == false // true 0 == null // false 0 == undefined // false null == undefined // true 부등 연산자 (!=) 두 피연산자의 자료형을 일치시킨 후, 엄격하게 비교를 수행 1 ..
Array.sort() sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후, 그 배열을 반환한다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따른다. 기본 설명 arr.sort([compareFunction]) 매개변수 compareFunction(Optional) : 정렬 순서를 정의하는 함수. 생략하면 문자열의 유니코드 값에 따라 정렬. compareFunction(a, b) 0 : b를 a보다 낮은 인덱스로 정렬. (b가 먼저 나옴) 반환 값 정렬한 배열. 원 배..
Set 객체 Set 객체는 ES6에서 등장한 중복을 제거한 값들의 집합이다. Set 객체 선언 //new Set([iterable]); let mySet = new Set(); Set 객체 사용 특정 요소 추가: add Set 객체에 주어진 값을 갖는 새로운 요소를 추가 //Set.add(value) mySet.add(1);// Set { 1 } mySet.add(5);// Set { 1, 5 } mySet.add('hi');// Set { 1, 5, 'hi' } 특정 요소 확인: has Set 객체에 주어진 값을 갖는 요소가 있는지 확인 (boolean) // Set { 1, 5, 'hi' } //Set.has(value) mySet.has(1);// true mySet.has(3);// false m..
기존 Golang 제거 기존에 Golang을 /opt 디렉토리 내에 설치했기 때문에 해당 디렉토리를 모두 제거합니다. (일반적으로는 /usr/local 디렉토리 내에 설치됩니다) 버전을 변경하기 위해 재설치하는 것이므로 GOPATH와 GOROOT 등의 환경변수는 그대로 유지합니다. (/etc/profile 파일 변경 X) # golang 제거 sudo apt-get purge golang* cd /opt sudo rm -rf go # golang 제거 확인 go version Golang 설치 /opt 디렉토리 내에 golang을 설치합니다. (따로 지정하지 않을 경우 /usr/local 디렉토리 내에 설치됩니다) go 1.12 버전을 설치하도록 하겠습니다. # golang 설치 cd /opt sudo ..
- Total
- Today
- Yesterday
- Hyperledger Indy
- javascript
- Private Data
- 빅데이터 교육
- 하이퍼레저 페브릭
- codility
- 알고리즘
- ambrosus
- 어서와 데이터는 처음이지
- 코테
- ubuntu
- 코딩테스트
- 블록체인
- docker
- 코딜리티
- Hyperledger Fabric
- 기초 of 기초 데이터 개념
- 빅데이터 기초
- 빅데이터
- 빅데이터 강의
- Hyperledger Fabric v1.1
- 하이퍼레저 인디
- 문제풀이
- 직딩잇템
- 블록 체인
- DOCs
- 암브로셔스
- Blockchain
- Hyperledger Fabric v1.2
- 하이퍼레저 패브릭
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |