본문 바로가기

전체 글

[JS: ES6+] 제너레이터/이터레이터 프로토콜로 구현하는 지연 평가 (2) #1 결과를 만드는 함수 reduce, take reduce를 통해 구현하는 함수 먼저, 객체로부터 url의 queryString을 만들어내는 함수를 만들어 볼 것이다. const queryStr = obj => obj; console.log(queryStr({ limit : 10, offset: 10, type: 'notice' })); // {limit: 10, offset: 10, type: "notice"} 이제 key와 value를 추출하는 코드를 작성해 볼 것이다. const queryStr = obj => go( obj, Object.entries, // key, value를 entries로 변환 map(([k, v]) => `${k}=${v}`), // 구조분해를 통해 key와 value를.. 더보기
[JS: ES6+] 제너레이터/이터레이터 프로토콜로 구현하는 지연 평가 (1) #1 range와 느긋한 L.range 지연 평가의 정의 컴퓨터 프로그래밍에서 느긋한 계산법(Lazy evaluation)은 계산의 결과 값이 필요할 때까지 계산을 늦추는 기법이다. 지연 평가는 필요 할 때까지 계산을 늦추면서 불필요한 계산을 줄일 수 있다. 이러한 지연 평가는 3가지 이점을 가지고 있다. 불필요한 계산을 하지 않으므로 빠른 계산이 가능하다. 무한 자료 구조를 사용 할 수 있다. 복잡한 수식에서 오류 상태를 피할 수 있다. 그럼 이제부터 일반적인 평가와 지연평가를 비교해보록 하자. range 와 L.range 비교 숫자하나를 받고 그 숫자의 크기만한 배열을 리턴 후에 그 값들을 더하는 range함수를 선언해볼 것이다. const add = (a, b) => a + b; const rang.. 더보기
[JS: ES6+] 장바구니 예제로 코드를 줄이고 HTML로 표현해보기 #1 go, pipe, curry를 활용한 코드 줄이기 실습 장바구니 예제 실습 앞에서 배웠던 [go, pipe, curry: https://opentogether.tistory.com/70?category=807380]를 기반으로 코드를 줄여보는 것을 한번 더 해볼것이다. /*외부 파일: fx.js*/ const go = (...args) => args.reduce((a, f) => { return f(a); }); const pipe = (...funcs) => arg => funcs.reduce((a, f) => f(a), arg); const curry = f => (a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._); const map = cur.. 더보기
[JS: ES6+] 코드를 값으로 다루어 표현력 높이기 (go, pipe) #1 go, pipe 함수를 통해 표현력을 높이기 go, pipe 함수란 무엇인가? 코드를 값으로 다룬다면 전체적인 코드의 표현력을 높일 수 있는데, go, pipe를 구현해서 표현력을 높여보자. 먼저 다음과 같은 코드가 있다고 가정하자. a(b,c(d,e())); 위 코드는 함수가 연속해서 중첩되어 가독성이 떨어져서, 작성하기도 해석하기도 힘들다. 이를 간편하게 더 읽기 쉽게 코드를 짜기 위해서 위에서 언급한 go, pipe 함수를 활용해보자. 우선 go 함수를 보자. go 함수는 인자를 받아 결과를 바로 산출해내는 함수로, 첫번째 인자는 시작되는 값을 받고, 나머지는 함수를 받아 첫번째 인자가 두번째 함수로 가서 결과를 만들고 그 결과가 또 세번째 함수로 가서 결과가 만들어지는 순으로 진행된다. 이러.. 더보기
[JS: ES6+] 이터러블 프로토콜을 따른 map, filter, reduce #1 map 이터러블 프로토콜을 따른 map 간단하게 먼저, map 함수는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다. var array1 = [1, 4, 9, 16]; // pass a function to map const map1 = array1.map(x => x * 2); console.log(map1); // expected output: Array [2, 8, 18, 32] 이제, 이터러블 프로토콜을 따른 map함수를 알아볼건데요, 먼저 map을 사용하지 않은 예제를 봅시다. const products = [ { name: '반팔티', price: 15000 }, { name: '긴팔티', price: 20000 }, { name: '후드티.. 더보기
[JS: ES6+] 제너레이터와 이터레이터 #1 제너레이터와 이터레이터 제너레이터 함수란? ES6에서 도입된 제너레이터(Generator) 함수는 이터러블을 생성하는 함수이다. 제너레이터 함수를 사용하면 이터레이션 프로토콜을 준수해 이터러블을 생성하는 방식보다 간편하게 이터러블을 구현할 수 있다. 또한 제너레이터 함수는 비동기 처리에 유용하게 사용된다. function* gen() { yield 1; yield 2; yield 3; } const genIter = gen(); console.log(genIter.next()); // {value:1, done: flase} console.log(genIter.next()); // {value:2, done: flase} console.log(genIter.next()); // {value:3, d.. 더보기
[JS: ES6+] ES6에서의 순회와 이터러블:이터레이터 프로토콜 #1 기존과 달라진 ES6에서의 리스트 순회 ( for of, for i++) //기존 리스트 순회 const list = [1, 2, 3]; for (var i = 0; i< list.length; i++) { console.log(list[i]); // 1 2 3 } //기존 문자배열 순회 const str = 'abc'; for (var i = 0; i< str.length; i++){ console.log(str[i]); // a b c } //바뀐 리스트 순회 for (const a of list) { console.log(a); // 1 2 3 } //바뀐 문자배열 순회 for (const a of str) { console.log(a); // a b c } #2 Array, Set, Map을.. 더보기
새로운 티스토리 편집기로 소스코드 작성팁 [스킨 적용하기] 1. 새로운 편집기에서 기본 텍스트로 나오는 코드블럭에 스킨 적용시키기 티스토리에 새로운 편집기가 생겨 난 후, 추가된 코드블럭으로 소스코드 작성이 쉽고 유용해질것 같았습니다. 아래처럼 코드블럭에 코드를 삽입한 후에, 말끔하고 이쁜 스킨의 코드가 적용되는가 싶더니... 막상 발행되는 글을 통해선 그 스킨이 전혀 적용 되지 않았습니다. 여기까지만 해도 소스코드가 이쁘게 적용될것만 같았으나... 전혀 적용되지 않고 단순 텍스트로만 보여서 낙담하고 있는 찰나.. 소스코드 스타일을 적용시킬 수 있는 방법을 찾았다! highlight.js 에서 CDN방식을 통해 스킨을 적용하는 것이다. 티스토리 관리자 창에서 "꾸미기 > 스킨 편집 > HTML 코드 수정"을 통해서 해당 코드를 삽입해준다. ※코드 삽입시 아래처럼.. 더보기
[ERP] 회계 요약 | 원가관리회계 - 원가의 개념과 배분 원가의 개념과 배분 원가관리회계의 기본개념 ①원가의 개념 원가의 의의 -원가: 제품을 제조하기 위해 소멸된 경제적 자원의 희생을 화폐가치로 측정한 것 -발생한 원가 중 아직 사용되지 않은 부분은 자산으로, 사용된 부분 중 수익획득에 기여한 비용부분은 매출원가로, 기여하지 못하고 소멸된 부분은 손실(영업외비용)으로 인식함 원가 미소멸원가 자산 재고자산 소멸원가 비용 매출원가 손실 영업외비용 원가의 분류 분류기준 내용 원가 3요소 재료비, 노무비, 제조경비 추적가능성에 따른 분류 직접원가(직접비), 간접원가(간접비) 원가형태에 따른 분류 변동원가(변동비), 고정원가(고정비) 제조활동에 따른 분류 제조원가, 비제조원가 의사결정의 관련성에 따른 분류 매몰원가, 기회원가 자산과의 관련성에 따른 분류 미소멸원가, .. 더보기
[ERP] 회계 요약 | 세무 회계 - 법인세 법인세ㅋ 법인세법 이론 ①법인세의 개념과 특징 법인세의 개념 ①법인세의 정의 법인이 얻은 소득에 대하여 부과하는 조세로, 법인세 납세의무자는 법인이 됨 ②조세의 분류 분류기준 구분 의미 ⇔ 구분 의미 과세주체에 따라 국세 국가가 부과하는 조세 지방세 지방자치단체가 부과하는 조세 전가성에 따라 직접세 소득신고자와 세금부담자가 일치 간접세 소득신고자와 세금부담자가 불일치 지출의 목적성에 따라 보통세 세금의 용도가 없고 일반적인 지출 목적세 특정지출 목적에 한정되어 있는 조세 과세표준단위에 따라 종가세 과세표준을 가격을 기준으로 매김 종량세 과세표준을 양의 기준으로 매김 세율의 구조에 따라 비례세 대소에 관계없이 일정한 세율을 매김 누진세 수량이 많아짐에 따라 높은 세율을 매김 ③법인세 과세대상소득 구분 내용.. 더보기
[ERP] 회계 요약 | 세무 회계 - 부가가치세 부가가치세 부가가치세의 총론 ①부가가치세의 의의와 특징 부가가치세의 의의 재화나 용역이 생산·제공되거나 유통 되는 모든 단계에서 창출된 부가가치를 과세표준으로 하여 과세하는 조세 (10% 세금을 부과하여 징수) 부가가치세의 특징 특징 내용 국세 나라가 징수하는 국세(지방세와 대립개념) 간접세 납세자(사업자)와 부담자(소비자)가 다른 조세로 조세부담은 최종소비자가 부담 (납세의무자와 담세자가 다름) 물세 사람에게 부과하는 것이 아니라 소비하는 물건에 부과된 것으로 물건에 부과된 세금을 소비하는 사람이 납부(인세와 대립개념) 일반소비세 모든 재화와 용역을 과세대상으로 하되, 면세대상은 제외(개별소비세와 대립개념) 단일세율(비례세율) 부가가치세는 10% 하나의 세율을 갖고 있으며, 소득의 수준에 따라 세율이 .. 더보기
[ERP] 회계 요약 | 재무 회계 - 부채 & 자본 & 수익과 비용 & 결산 부채 & 자본 & 수익과 비용 & 결산 유동부채 ①매입채무 외상매입금 재고자산 거래에 대해 외상으로 매입을 한 경우 외상매입금 계정을 사용 (원재료 외상 매입 시: 차변에 원재료 재고자산 증가 / 대변에 외상매입금 부채계정 증가) 지급어음 일반적 상거래에서 어음을 발행하면 지급어음 계정을 사용 (원재료 매입 후 어음 발행 시: 차변에 원재료 재고자산 증가 / 대변에 지급어음 부채계정 증가) (어음 만기에 상환 시: 지급 어음은 차변으로 기록) 비유동부채 ①부채성 충당부채 퇴직급여충당부채 ①퇴직급여 설정 퇴직급여(충당부채 설정액) = 퇴직급여 추계액 - (기초 퇴직급여충당부채 - 당기 퇴직금 지급액) ②퇴직급여 지급 -매 결산일에 퇴직급여충당부채를 보충법을 설정하며, 퇴직일에 퇴직급여충당부채를 차감하는 형.. 더보기