The Best three js 사용법 New Update

주제에 대한 새 업데이트 three js 사용법


Table of Contents

JavaScript Array concat() MethodW3Schools New Update

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, …

+ 여기서 자세히 보기

Read more

자바스크립트 배열 concat()

예 두 배열을 결합합니다

const arr1 = [“Cecilie”, “Lone”];

const arr2 = [“에밀”, “토비아스”, “리누스”];

const 자식 = arr1.concat(arr2); 직접 사용해 보기 » 다음 세 가지 배열을 결합합니다

const arr1 = [“Cecilie”, “Lone”];

const arr2 = [“에밀”, “토비아스”, “리누스”];

const arr3 = [“로빈”];

const 자식 = arr1.concat(arr2,arr3); 직접 시도 »

정의 및 사용

concat() 메서드는 두 개 이상의 배열을 연결(결합)합니다

concat() 메서드는 결합된 배열을 포함하는 새 배열을 반환합니다

concat() 메서드는 기존 배열을 변경하지 않습니다.

구문

array1.concat(array2, array3,. .., arrayX)

매개변수

매개변수 설명 array2

배열3

arrayX 필수.

결합할 배열.

반환 값

유형 설명 배열 결합된 배열.

브라우저 지원

concat()은 ECMAScript1(ES1) 기능입니다

ES1(JavaScript 1997)은 모든 브라우저에서 완벽하게 지원됩니다.

Three.js 강좌 – #1. 개발환경구성 New

동영상 보기

주제에 대한 새로운 정보 three js 사용법

안녕하세요, GIS Developer 김형준입니다.
유튜브를 통한 첫번째 강좌를 준비했습니다.
주제는 Three.js로 웹에서 3차원 그래픽 기능을 개발할 수 있는 JavaScript 라이브러리입니다.
첫번째 영상이며.. three.js 라이브러리를 이용해 웹 페이지를 코딩할 수 있는 웹 개발환경구성에 대한 내용입니다.
설치한 프로그램은 Visual Stdio Code, VS.Code의 확장 기능인 LiveServer입니다.
그럼 부디 필요한 분들에게 도움이 되시기를 바랍니다.
감사합니다.

three js 사용법주제 안의 사진 몇 장

 Update  Three.js 강좌 - #1. 개발환경구성
Three.js 강좌 – #1. 개발환경구성 Update

파이썬 파일 사용법 정리 (파일 읽기, 파일 쓰기, with문, pickle 모듈) 최신

26/03/2017 · 파일 모드 종류. r – 읽기모드 (디폴트). w – 쓰기모드, 파일이 있으면 모든 내용을 삭제. x – 쓰기모드, 파일이 있으면 오류 발생. a – 쓰기모드, 파일이 있으면 뒤에 내용을 추가 + – 읽기쓰기모드 t – 텍스트 모드, 텍스트 문자 기록에 사용 (디폴트). b – 바이너리 모드, 바이트단위 데이터 기록에 사용

+ 여기서 자세히 보기

#01 웹사이트에서 3D를 자유자재로?! – Three.js 강좌 New

아래 동영상 보기

주제에서 더 많은 유용한 정보 보기 three js 사용법

안녕하세요. 드디어 Three.js 강좌를 시작합니다. three.js란 웹페이지에 3D 객체를 쉽게 렌더링하도록 도와주는 자바스크립트 라이브러리입니다.
three.js 웹사이트 – https://threejs.org/
VS Code 웹사이트 – https://code.visualstudio.com/
웹사이트를 더욱 멋있게 생동감 있게 표현할 수 있는 기술이라서 평소에 3D툴을 다룰 줄 알거나 3D 인터렉션에 대해 관심있는 분들은 공부하셔도 좋을 것 같습니다.
three.js를 코드로 사용할 수 있도록 설치부터, three.js의 기본 구조를 파악하고, 간단한 도형을 불러오는 것부터, 빛을 불러오고, 질감을 입히고, 카메라를 세팅하고, 간단한 애니메이션도 적용해볼게요. 그리고 스크롤이나 마우스 오버, 클릭 등의 이벤트를 통한 인터렉션을 구현하는 방법도 당연히 배워보는게 좋겠죠?!
추가로 시포디나 블렌더 등의 3D툴로 작업한 3D 파일을 three.js에서 제공하는 loader를 통해 불러오는 것까지 해볼게요.
단, 우리가 배우고자 하는 three.js는 입문자에게 난이도가 조금 있는 기술이라서 충분한 학습 기간을 두고 인내심을 가진 상태에서 배우시는 걸 추천드립니다.
이 강좌를 원활하게 배우고자 한다면 HTML, CSS는 당연히 알고 있어야 하고, javascript의 기본적인 문법은 알아야 합니다.
00:00 시작
00:39 Three.js 강좌 소개
01:31 Three.js로 만든 웹사이트 예시
02:02 인터페이스 파악하기
03:55 강좌로 배워볼 예제 일부
#웹코딩 #3D #Three.js #JS #웹디자이너
🚀 디자인베이스 멤버십 가입하면 다양한 고급 강좌와 예제 파일을 받아볼 수 있어요
┗ https://www.youtube.com/channel/UCvYnDMeL-PFZhfIz6oc_U-Q/join
🌟예제 다운은 멤버십 회원 전용 커뮤니티에 올린 링크에서 받으실 수 있습니다.🌟
*디자인베이스 강좌는 Mac OS를 기준으로 해서 윈도우 사용자와 일부 차이가 있을 수 있습니다. 윈도우 사용자분들은 영상에서 커멘드(Cmd)라는 단축키 대신 컨트롤(Ctrl)을, 옵션(Option) 대신 알트(Alt)를 눌러주세요.

☞ 디자인베이스 소개 : http://designbase.co.kr/about/
☞ 공식 웹사이트 : http://designbase.co.kr/
☞ 네이버블로그 : https://blog.naver.com/designbasekorea

three js 사용법주제 안의 관련 사진

 New Update  #01 웹사이트에서 3D를 자유자재로?! - Three.js 강좌
#01 웹사이트에서 3D를 자유자재로?! – Three.js 강좌 New

Ramda Documentation Update

Receives three argument, value, key, obj. obj. The object to iterate over. Returns Object The original object. Added in v0.23.0. Iterate over an input object, calling a provided function fn for each key and value in the object. fn receives three argument: (value, key, obj). Open in REPL Run it …

+ 여기서 자세히 보기

Read more

__ 기능 v0.6.0에 추가됨 커리 함수 내에서 “간격”을 지정하는 데 사용되는 특수 자리 표시자 값으로, 위치에 관계없이 인수 조합을 부분적으로 적용할 수 있습니다

g 가 카레 삼항 함수이고 _ 가 R.__ 이면 g(1, 2, 3)이 동일합니다

g(_, 2, 3)(1)

g(_, _, 3)(1)(2)

g(_, _, 3)(1, 2)

g(_, 2, _)(1, 3)

g(_, 2)(1)(3)

g(_, 2)(1, 3)

g(_, 2)(_, 3)(1) REPL에서 열기 여기에서 실행 const Greeting = R.replace( ‘{name}’ , R.__, ‘Hello, {name}!’ ); 인사( ‘앨리스’ );

수학 숫자 → 숫자 → 숫자 매개변수 추가 a

b v0.1.0에 추가된 숫자를 반환 두 값을 더합니다

또한 REPL에서 열기를 참조하십시오

여기에서 실행 R.add( 2 , 3 ); R.추가(7)(10);

addIndex 함수 (((a …) → b) … → [a] → *) → (((a …, Int, [a]) → b) … → [a] → *) 매개변수 fn 다음을 수행하는 목록 반복 함수 콜백에 인덱스 또는 목록을 전달하지 않음 반환 함수 콜백에 (항목, 인덱스, 목록)을 전달하는 변경된 목록 반복 함수 v0.15.0에 추가됨 콜백 함수: 현재 인덱스, 전체 목록

예를 들어, 이것은 R.map 함수를 Array.prototype.map과 더 유사한 함수로 바꿀 것입니다

이것은 반복 콜백 함수가 첫 번째 매개변수이고 목록이 마지막 매개변수인 함수에서만 작동합니다

(후자는 list 매개변수가 사용되지 않는 경우 중요하지 않을 수 있습니다.) REPL에서 열기 여기에서 실행 const mapIndexed = R.addIndex(R.map); mapIndexed( ( val, idx ) => idx + ‘-‘ + val, [ ‘f’ , ‘o’ , ‘o’ , ‘b’ , ‘a’ , ‘r’ ]);

조정 목록 번호 → (a → a) → [a] → [a] 매개변수 idx 인덱스.

fn 적용할 함수.

list 제공된 인덱스의 값이 대체될 배열과 유사한 객체

반환값 배열 인덱스 ‘idx’에 있는 요소가 기존 요소에 ‘fn’을 적용하여 반환된 값으로 대체된 제공된 배열과 유사한 객체의 복사본입니다

v0.14.0에 추가됨 배열의 주어진 인덱스에 있는 값에 함수를 적용하고, 주어진 인덱스에 있는 요소가 함수 적용의 결과로 대체된 배열의 새 복사본을 반환합니다

참조 업데이트 REPL에서 열기 여기에서 실행 R.adjust( 1 , R.toUpper, [ ‘a’ , ‘b’ , ‘c’ , ‘d’ ]); R.adjust(-1, R.toUpper, [ ‘a’ , ‘b’ , ‘c’ , ‘d’ ]);

all List (a → Boolean) → [a] → Boolean 매개변수 fn 술어 함수.

list 고려할 배열

술어가 모든 요소에 의해 충족되면 부울 `true`를 반환하고 그렇지 않으면 `false`를 반환합니다

v0.1.0에 추가됨 목록의 모든 요소가 술어와 일치하면 true를 반환하고 일치하지 않는 것이 있으면 false를 반환합니다

존재하는 경우 두 번째 인수의 all 메서드에 전달합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

없음, 변환합니다

REPL에서 열기도 참조하십시오

여기에서 실행 const equals3 = R.equals( 3 ); R.all(equals3)([ 3 , 3 , 3 , 3 ]); R.all(equals3)([ 3 , 3 , 1 , 3 ]);

allPass Logic [(*… → Boolean)] → (*… → Boolean) 매개변수 predicates 검사할 술어 배열 반환 기능 결합된 술어 v0.9.0에 추가됨 술어 목록을 가져와서 주어진 조건에 대해 true를 반환하는 술어를 반환합니다

제공된 술어 중 하나라도 해당 인수에 의해 충족되는 경우 인수 목록입니다

반환된 함수는 승률이 가장 높은 술어의 승률과 일치하는 커리 함수입니다

REPL에서 anyPass 열기 참조 여기에서 실행 const isQueen = R.propEq( ‘rank’ , ‘Q’ ); const isSpade = R.propEq( ‘양복’ , ‘♠︎’ ); const isQueenOfSpades = R.allPass([isQueen, isSpade]); isQueenOfSpades({ rank : ‘Q’ , 슈트 : ‘♣︎’ }); isQueenOfSpades({ rank : ‘Q’ , suit : ‘♠︎’ });

항상 함수 a → (* → a) 매개변수 val 함수에서 래핑할 값 반환 함수 A Function :: * -> val

v0.1.0에 추가됨 항상 주어진 값을 반환하는 함수를 반환합니다

기본이 아닌 경우 반환된 값은 원래 값에 대한 참조입니다

이 함수는 다른 언어 및 라이브러리에서 const , constant 또는 K(K 결합자의 경우)로 알려져 있습니다

REPL에서 열기 여기에서 실행 const t = R.always( ‘Tee’ ); 티();

및 논리 a → b → a | b 매개변수 a

b v0.1.0에 추가된 모든 항목 반환 거짓이면 첫 번째 인수를 반환하고 그렇지 않으면 두 번째 인수를 반환합니다

두 입력이 모두 Boolean 인 경우 부울 및 명령문 역할을 합니다

또는

둘 다 참조 REPL에서 열기 여기에서 실행 R.and( true , true ); R.and( 참 , 거짓 ); R.and(거짓, 참); R.and(거짓,거짓);

andThen 함수 (a → b) → (Promise e a) → (Promise e b) (a → (Promise e b)) → (Promise e a) → (Promise e b) 매개변수 onSuccess 적용할 함수입니다

값 또는 값의 promise를 반환할 수 있습니다.

p 반환 ​​Promise `p.then(onSuccess)` 호출 결과 v0.27.1에 추가 성공적으로 해결된 promise 내부의 값에 onSuccess 함수를 적용한 결과를 반환합니다

이것은 함수 합성 내에서 promise로 작업하는 데 유용합니다

다른 방법도 참조 REPL에서 열기 여기에서 실행 const makeQuery = email => ({ query : { email }}); const fetchMember = 요청 => 약속. resolve({ firstName : ‘Bob’ , lastName : ‘Loblaw’ , id : 42 }); const getMemberName = R.pipe( makeQuery, fetchMember, R.andThen(R.pick([ ‘firstName’ , ‘lastName’ ])) ); getMemberName( ‘[email protected]’ ).then( 콘솔. log);

any List (a → Boolean) → [a] → Boolean 매개변수 fn 술어 함수.

list 고려할 배열

술어가 하나 이상의 요소에 의해 충족되면 부울 ‘true’를 반환하고 그렇지 않으면 ‘false’를 반환합니다

v0.1.0에 추가됨 목록의 요소 중 하나 이상이 술어와 일치하면 true를 반환하고 그렇지 않으면 false를 반환합니다

존재하는 경우 두 번째 인수의 any 메서드로 전달합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

없음, 변환합니다

REPL에서 열기 모두 보기 여기에서 실행 const lessThan0 = R.flip(R.lt)( 0 ); const lessThan2 = R.flip(R.lt)(2); R.any(lessThan0)([ 1 , 2 ]); R.any(lessThan2)([ 1 , 2 ]);

anyPass Logic [(*… → Boolean)] → (*… → Boolean) 매개변수 predicates 검사할 술어 배열 반환 함수 결합된 술어 v0.9.0에 추가됨 술어 목록을 가져와서 주어진 조건에 대해 true를 반환하는 술어를 반환합니다

제공된 술어 중 하나 이상이 해당 인수에 의해 충족되는 경우 인수 목록입니다

반환된 함수는 승률이 가장 높은 술어의 승률과 일치하는 커리 함수입니다

REPL에서 allPass 열기 참조 여기에서 실행 const isClub = R.propEq( ‘suit’ , ‘♣’ ); const isSpade = R.propEq( ‘정장’ , ‘♠’ ); const isBlackCard = R.anyPass([isClub, isSpade]); isBlackCard({ rank : ’10’ , suit : ‘♣’ }); isBlackCard({ rank : ‘Q’ , 슈트 : ‘♠’ }); isBlackCard({ rank : ‘Q’ , suit : ‘♦’ });

ap 기능 [a → b] → [a] → [b] 적용 f => f (a → b) → fa → fb (r → a → b) → (r → a) → (r → b) 매개변수 applyF

applyX 반환값 * v0.3.0에 추가됨 ap는 값 목록에 함수 목록을 적용합니다

존재하는 경우 두 번째 인수의 ap 메서드로 전달합니다

또한 치료된 기능을 응용 프로그램으로 취급합니다

REPL에서 열기 R.ap([R.multiply( 2 ), R.add( 3 )], [ 1 , 2 , 3 ]); R.ap([R.concat( ‘맛있는 ‘ ), R.toUpper], [ ‘피자’ , ‘샐러드’ ]); R.ap(R.concat, R.toUpper)( ‘Ramda’ )

조리개 목록 번호 → [a] → [[a]] 매개변수 n 생성할 튜플의 크기

list n-길이 튜플로 분할할 목록 반환값 배열 `n` 길이 튜플의 결과 목록 v0.12.0에 추가됨 연속 요소의 n-튜플로 구성된 새 목록을 반환합니다

n이 목록의 길이보다 크면 빈 목록이 반환됩니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

REPL에서 열기 변환도 참조하십시오

Run it here R.aperture( 2 , [ 1 , 2 , 3 , 4 , 5 ]); 조리개(3, [1,2,3,4,5]); 조리개( 7 , [ 1 , 2 , 3 , 4 , 5 ]);

append List a → [a] → [a] 매개변수 el 새 목록의 끝에 추가할 요소입니다.

list 새 항목을 추가할 요소 목록입니다

목록

반환값 배열 `el`이 뒤에 오는 이전 목록의 요소를 포함하는 새 목록입니다

v0.1.0에 추가됨 주어진 목록의 내용을 포함하는 새 목록을 반환하고 그 뒤에 주어진 요소를 반환합니다

prepend Open in REPL도 참조하십시오

여기에서 실행 R

append( ‘tests’ , [ ‘write’ , ‘more’ ]); R

append( ‘테스트’ , []); R

append([ ‘tests’ ], [ ‘write’ , ‘more’ ]);

apply Function (*… → a) → [*] → a 매개변수 fn args와 함께 호출될 함수

args 반환값으로 fn을 호출하기 위한 인수 * result `fn(…args)`에 해당하는 결과 v0.7.0에 추가됨 함수 fn을 인수 목록 args에 적용합니다

이것은 가변 함수에서 고정 인수 함수를 생성하는 데 유용합니다

fn은 컨텍스트가 중요한 경우 바인딩된 함수여야 합니다

미적용

REPL에서 Open 호출도 참조하십시오

여기에서 실행 const nums = [ 1 , 2 , 3 , – 99 , 42 , 6 , 7 ]; R.apply(수학. max, 숫자);

applySpec 함수 {k: ((a, b, …, m) → v)} → ((a, b, …, m) → {k: v}) 매개변수 spec 속성을 값을 생성하기 위한 함수에 재귀적으로 매핑하는 객체 이러한 속성에 대해

반환 함수 `spec’과 동일한 구조의 객체를 반환하는 함수로, 각 속성은 제공된 인수로 관련 함수를 호출하여 반환된 값으로 설정됩니다

v0.20.0에 추가됨 속성을 함수에 재귀적으로 매핑하는 사양 개체가 주어지면 제공된 인수로 연결된 함수를 호출한 결과에 각 속성을 매핑하여 동일한 구조의 개체를 생성하는 함수를 만듭니다

단지

REPL에서 열기 수렴도 참조하십시오

여기에서 실행 const getMetrics = R.applySpec({ sum : R.add, nested : { mul : R.multiply } }); getMetrics( 2 , 4 );

applyTo 기능 a → (a → b) → b 매개변수 x 값

f 적용할 함수 반환값 * `x`에 `f`를 적용한 결과 v0.25.0에 추가됨 값을 가져와 함수를 적용합니다

이 기능은 아구창 결합기라고도 합니다

REPL에서 열기 여기에서 실행 const t42 = R.applyTo( 42 ); t42(R

아이덴티티); t42(R.add(1));

상승 함수 Ord b => (a → b) → a → a → 숫자 매개변수 fn 비교할 수 있는 값을 반환하는 1차 함수

a 비교할 첫 번째 항목.

b 비교할 두 번째 항목

반환 숫자 `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), 그렇지 않으면 `0` v0.23.0에 추가됨 함수에서 오름차순 비교기 함수를 만듭니다

< 및 > 와 비교할 수 있는 값을 반환합니다

하강 참조 REPL에서 열기 여기에서 실행 const byAge = R.ascend(R.prop( ‘age’ )); const people = [ { name : ‘Emma’ , age : 70 }, { name : ‘Peter’ , age : 78 }, { name : ‘Mikhail’ , age : 62 }, ]; const peopleByYoungestFirst = R.sort(byAge, people);

연관 개체 Idx → a → {k: v} → {k: v} Idx = 문자열 | Int 매개변수 prop 설정할 속성 이름입니다

val 새 값입니다

obj 복제할 객체 반환값 Object 변경된 속성을 제외하고 원본과 동일한 새 객체

v0.8.0에 추가됨 개체의 얕은 복제를 만들어 지정된 속성을 지정된 값으로 설정하거나 재정의합니다

이렇게 하면 프로토타입 속성도 새 개체에 복사되고 병합됩니다

기본이 아닌 모든 속성은 참조로 복사됩니다

선택하다

REPL에서 열기 dissoc도 참조하십시오

여기에서 실행 R.assoc( ‘c’ , 3 , { a : 1 , b : 2 });

assocPath 개체 [Idx] → a → {a} → {a} Idx = 문자열 | 인트 | 기호 매개변수 경로 설정할 경로입니다

val 새 값입니다

obj 복제할 개체 반환값 개체 지정된 경로를 제외하고 원본과 동일한 새 개체입니다

v0.8.0에 추가됨 개체의 얕은 복제를 만들고 지정된 경로를 만드는 데 필요한 노드를 설정하거나 재정의하고 해당 경로의 꼬리 끝에 특정 값을 배치합니다

이렇게 하면 프로토타입 속성도 새 개체에 복사되고 병합됩니다

기본이 아닌 모든 속성은 참조로 복사됩니다

참조 dissocPath Open in REPL 여기에서 실행 R.assocPath([ ‘a’ , ‘b’ , ‘c’ ], 42 , { a : { b : { c : 0 }}}); R.assocPath([ ‘a’ , ‘b’ , ‘c’ ], 42 , { a : 5 });

이진 함수 (a → b → c → … → z) → ((a, b) → z) 매개변수 fn 줄 바꿈할 함수입니다

반환 함수 `fn`을 래핑하는 새 함수

새로운 함수는 arity 2가 되도록 보장됩니다

v0.2.0에 추가됨 정확히 2개의 매개변수를 허용하는 함수에서 모든 arity(nullary 포함)의 함수를 래핑합니다

관련 없는 매개변수는 제공된 함수에 전달되지 않습니다

단항

참조 REPL에서 nAry 열기 여기에서 실행 const takeThreeArgs = function ( a, b, c ) { return [a, b, c]; }; takeThreeArgs.length; takeThreeArgs( 1 , 2 , 3 ); const takeTwoArgs = R.binary(takesThreeArgs); takeTwoArgs.length; takeTwoArgs( 1 , 2 , 3 );

bind 함수 (* → *) → {*} → (* → *) 매개변수 fn 컨텍스트에 바인딩할 함수입니다

thisObj fn을 바인딩할 컨텍스트 반환 함수 `thisObj` 컨텍스트에서 실행할 함수

v0.6.0에 추가 컨텍스트에 바인딩된 함수를 만듭니다

참고: R.bind는 Function.prototype.bind의 추가 인수 바인딩 기능을 제공하지 않습니다

REPL에서 부분 열기도 참조하십시오

여기에서 실행 const log = R.bind( console. log, console ); R.pipe(R.assoc( ‘a’ , 2 ), R.tap(log), R.assoc( ‘a’ , 3 ))({ a : 1 });

둘 다 논리(*… → 부울) → (*… → 부울) → (*… → 부울) 매개변수 f 술어

g 또 다른 술어 반환 함수는 인수를 `f`와 `g` 및 `&&`의 출력에 함께 적용하는 함수입니다

v0.12.0에 추가 제공된 두 함수를 호출하고 결과의 &&를 반환하는 함수입니다

false-y이면 첫 번째 함수의 결과를 반환하고 그렇지 않으면 두 번째 함수의 결과를 반환합니다

이것은 단락되어 첫 번째 함수가 false-y 값을 반환하는 경우 두 번째 함수가 호출되지 않음을 의미합니다

기능 외에도 R.both는 판타지 랜드와 호환되는 응용 펑터도 허용합니다

그리고

REPL에서 열기 여기에서 실행 const gt10 = R.gt(R.__, 10 ) const lt20 = R.lt(R.__, 20 ) const f = R.both(gt10, lt20); f(15); f(30); R.both(Maybe.Just( false ), Maybe.Just( 55 )); R.both([ false , false , ‘a’ ], [ 11 ]);

call Function ((*… → a), *…) → a 매개변수 fn 나머지 인수에 적용할 함수.

args 임의의 수의 위치 인수

반환값 * v0.9.0에 추가됨 나머지 인수로 첫 번째 인수를 호출한 결과를 반환합니다

이것은 때때로 R.converge의 수렴 함수로 유용합니다

첫 번째 분기는 함수를 생성할 수 있고 나머지 분기는 해당 함수에 인수로 전달할 값을 생성할 수 있습니다

REPL에서 열기 적용도 참조하십시오

여기에서 실행 R.call(R.add, 1 , 2 ); const indentN = R.pipe( R.repeat( ‘ ‘ ), R.join( ” ), R.replace( /^(?!$)/gm ) ); const 형식 = R.converge( R.call, [ R.pipe(R.prop( ‘indent’ ), indentN), R.prop( ‘value’ ) ] ); format({ 들여쓰기 : 2 , 값 : ‘foo.bar.baz.’ });

chain List Chain m => (a → m b) → m a → m b 매개변수 fn 매핑할 함수

list 위에 매핑할 목록 반환 배열 v0.3.0에 추가된 `fn`이 있는 평면 매핑 `list`의 결과 체인은 목록 위에 함수를 매핑하고 결과를 연결합니다

chain은 일부 라이브러리에서 flatMap이라고도 합니다

존재하는 경우 FantasyLand Chain 사양에 따라 두 번째 인수의 chain 메서드로 전달합니다

두 번째 인수가 함수인 경우 chain(f, g)(x) 는 f(g(x), x) 와 동일합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

REPL에서 열기 여기에서 실행 const duplicate = n => [n, n]; R.chain(중복, [ 1 , 2 , 3 ]); R.chain(R.append, R.head)([ 1 , 2 , 3 ]);

클램프 관계 순서 a => a → a → a → a 매개변수 최소 클램프의 하한(포함)

최대 클램프의 상한(포함)

value 클램핑할 값 숫자 반환 `val < minimum`일 때 `minimum`, `val > maximum`일 때 `maximum` 반환, 그렇지 않으면 `val` 반환 v0.20.0에 추가됨 숫자가 범위 내에 있도록 제한합니다

문자열 및 날짜와 같은 다른 정렬된 유형에서도 작동합니다

REPL에서 열기 여기에서 실행 R.clamp( 1 , 10 , – 5 ) R.clamp( 1 , 10 , 15 ) R.clamp( 1 , 10 , 4 )

clone Object {*} → {*} 매개변수 value 복제할 객체 또는 배열 반환값 * `val`의 딥 복제 복사본 v0.1.0에 추가됨 그것에 대한 모든 참조를 유지합니다

소스 객체는 (중첩된) Array s 및 Object s, Number s, String s, Boolean s 및 Date s를 포함할 수 있습니다

기능은 복사되지 않고 참조로 할당됩니다

클론 메서드가 있는 경우 이를 전달합니다

소스 개체에 참조를 공유하는 여러 노드가 있는 경우 반환된 개체는 동일한 구조를 갖지만 참조는 복제된 값 내의 위치를 ​​가리킵니다

REPL에서 열기 여기에서 실행 const objects = [{}, {}, {}]; const objectsClone = R.clone(객체); 개체 === 개체복제; 개체[ 0 ] === 개체복제[ 0 ];

collectBy List Idx a => (b → a) → [b] → [[b]] ​​​​Idx = String | 인트 | 기호 매개변수 fn 기능 :: a -> Idx

list 그룹화할 배열 반환값 Array 각 하위 배열에 문자열 반환 함수가 동일한 값을 반환한 항목이 포함된 배열 배열입니다

v0.28.0에 추가됨 각 요소에 대해 키 반환 함수를 호출하고 반환된 값에 따라 결과를 그룹화한 결과를 기반으로 목록을 하위 목록으로 분할합니다

분할

참조 groupBy Open in REPL 여기에서 실행 R.collectBy(R.prop( ‘type’ ), [ { type : ‘breakfast’ , item : ‘☕️’ }, { type : ‘lunch’ , item : ‘🌯’ } , { type : ‘저녁’ , item : ‘🍝’ }, { type : ‘아침’ , item : ‘🥐’ }, { type : ‘점심’ , item : ‘🍕’ } ]);

비교기 함수 ((a, b) → 부울) → ((a, b) → 숫자) 매개변수 pred 첫 번째 인수가 두 번째 인수보다 작으면 true를 반환하고 그렇지 않으면 false를 반환하는 arity 2의 술어 함수 반환 함수 A Function: : a -> b -> a < b이면 `-1`, b < a이면 `1`, 그렇지 않으면 `0`을 반환하는 Int v0.1.0에 추가됨 두 번째보다 작습니다

REPL에서 열기 여기에서 실행 const byAge = R.comparator( ( a, b ) => a.age < b.age); const people = [ { name : 'Emma' , age : 70 }, { name : 'Peter' , age : 78 }, { name : 'Mikhail' , age : 62 }, ]; const peopleByIncreasingAge = R.sort(byAge, people);

Complement Logic (*… → *) → (*… → Boolean) 매개변수 f 반환 함수 v0.12.0에 추가됨 함수 f를 취하고 f가 “truthy” 값을 반환할 때 동일한 인수로 호출되는 경우 함수 g를 반환합니다

g는 false를 반환하고 f가 “falsy” 값을 반환하면 g는 true를 반환합니다

R.complement는 모든 펑터에 적용될 수 있습니다

REPL에서도 열리지 않음 참조 여기에서 실행 const isNotNil = R.complement(R.isNil); R.isNil( null ); isNotNil( null ); R.isNil(7); isNotNil( 7 );

기능 구성 ((y → z), (x → y), …, (o → p), ((a, b, …, n) → o)) → ((a, b, …, n) → z ) 매개변수. ..functions 구성할 함수 반환값 function v0.1.0에 추가됨 오른쪽에서 왼쪽으로 함수 합성을 수행합니다

마지막 인수는 임의의 타당성을 가질 수 있습니다

나머지 인수는 단항이어야 합니다

참고: 작성 결과는 자동으로 커링되지 않습니다

파이프 열기 REPL 참조 여기에서 실행 const classyGreeting = ( firstName, lastName ) => “이름의 ” + lastName + “, ” + firstName + ” ” + lastName constellGreeting = R.compose(R.toUpper, classyGreeting); YellGreeting( ‘제임스’ , ‘본드’ ); R.compose( 수학. abs, R.add( 1 ), R.multiply( 2 ))(- 4 )

composeWith 함수 ((* → *), [(y → z), (x → y), …, (o → p), ((a, b, …, n) → o)]) → ((a, b, …, n) → z) 매개변수 변압기 변환 함수

functions 구성할 함수 반환값 function v0.26.0에 추가됨 변형 함수를 사용하여 오른쪽에서 왼쪽으로 함수 합성을 수행합니다

마지막 함수는 임의의 승수를 가질 수 있습니다

나머지 함수는 단항이어야 합니다

참고: composeWith의 결과는 자동으로 커링되지 않습니다

변환 함수는 마지막 인수에 사용되지 않습니다

파이프와 함께

REPL에서 열기를 참조하십시오

여기에서 실행 const composeWhileNotNil = R.composeWith( ( f, res ) => R.isNil(res) ? res : f(res)); composeWhileNotNil([R.inc, R.prop( ‘age’ )])({ age : 1 }) composeWhileNotNil([R.inc, R.prop( ‘age’ )])({})

concat 목록 [a] → [a] → [a] 문자열 → 문자열 → 문자열 매개변수 firstList 첫 번째 목록입니다

secondList 두 번째 목록은 Array를 반환합니다

‘firstList’ 요소와 ‘secondList’ 요소로 구성된 목록입니다

v0.1.0에 추가 주어진 목록 또는 문자열을 연결한 결과를 반환합니다

참고: R.concat은 네이티브 Array.prototype.concat 메서드와 달리 두 인수가 같은 유형일 것으로 예상합니다

배열이 아닌 값으로 배열을 연결하면 오류가 발생합니다

존재하는 경우 첫 번째 인수의 concat 메서드로 전달합니다

판타지 랜드 호환 세미 그룹의 두 구성원을 연결할 수도 있습니다

REPL에서 열기 여기에서 실행 R.concat( ‘ABC’ , ‘DEF’ ); R.concat([ 4 , 5 , 6 ], [ 1 , 2 , 3 ]); R.concat([], []);

cond Logic [[(*… → Boolean),(*… → *)]] → (*… → *) 매개변수 쌍 [predicate, 변환기] 목록 반환 함수 v0.6.0에 추가됨 함수 fn 반환 if/else, if/else,. .

논리를 캡슐화합니다

R.cond는 [술어, 변환기] 쌍의 목록을 사용합니다

fn에 대한 모든 인수는 “truthy” 값을 반환할 때까지 각 술어에 차례로 적용되며, 이때 fn은 해당 변환기에 인수를 적용한 결과를 반환합니다

일치하는 술어가 없으면 fn은 undefined를 반환합니다

참고: 이것은 switch 문을 직접 대체하지 않습니다

cond에 전달된 모든 쌍의 두 요소는 모두 함수이며 cond는 함수를 반환합니다

하지 않는 한

REPL에서 ifElse 열기를 참조하십시오

여기에서 실행 const fn = R.cond([ [R.equals( 0 ), R.always( ‘water freezes at 0°C’ )], [R.equals( 100 ), R

always( ‘물은 100°C에서 끓는다’ )], [RT, temp => ” + temp + ‘°C’에서 특별한 일이 일어나지 않음 ] ]); fn( 0 ); fn(50); fn(100);

구성 함수 (* → {*}) → (* → {*}) 매개 변수 fn 래핑할 생성자 함수입니다

반환 함수 A 래핑된 커리 생성자 함수입니다

v0.1.0에 추가됨 동일한 인수로 호출되고 동일한 유형을 반환할 수 있는 커리 함수 내부에 생성자 함수를 래핑합니다

호출자 참조 REPL에서 열기 여기에서 실행 function Animal ( kind ) { this. kind = kind; }; Animal.prototype.sighting = function ( ) { return “이것은 ” + this. kind + “!” ; } const AnimalConstructor = R.construct(동물) AnimalConstructor( ‘돼지’ ); const animalTypes = [ “사자” , “호랑이” , “곰” ]; const animalSighting = R.invoker( 0 , ‘시선’ ); const sightNewAnimal = R.compose(animalSighting, AnimalConstructor); R.map(sightNewAnimal, animalTypes);

constructN 함수 번호 → (* → {*}) → (* → {*}) 매개변수 n 생성자 함수의 arity.

Fn 래핑할 생성자 함수

반환 함수 A 래핑된 커리 생성자 함수입니다

v0.4.0에 추가됨 동일한 인수로 호출되고 동일한 유형을 반환할 수 있는 커리 함수 내부에 생성자 함수를 래핑합니다

반환된 함수의 arity는 가변 생성자 함수를 사용할 수 있도록 지정됩니다

REPL에서 열기 여기에서 실행 function Salad() { this. ingredients = arguments; } Salad.prototype.recipe = function ( ) { const instructions = R.map( 성분 => ‘한 덩어리의 ‘ + 성분, 이. ingredients); return R

join( ‘

‘ , 지침); }; const ThreeLayerSalad = R.constructN( 3 , 샐러드); const 샐러드 = ThreeLayerSalad( ‘마요네즈’ )( ‘감자 칩’ )( ‘케첩’ ); console.log(샐러드.레시피());

함수 수렴 ((x1, x2, …) → z) → [((a, b, …) → x1), ((a, b, …) → x2), … ] → (a → b → … → z ) A 함수 뒤의 매개변수

after는 fn1과 fn2의 반환 값을 인수로 사용하여 호출됩니다

functions

functions 함수 목록

반환 함수 새 함수입니다

v0.4.2에 추가됨 수렴 함수와 분기 함수 목록을 수락하고 새 함수를 반환합니다

새 함수의 arity는 가장 긴 분기 함수의 arity와 동일합니다

호출될 때 이 새 함수는 일부 인수에 적용되고 각 분기 함수는 동일한 인수에 적용됩니다

각 분기 함수의 결과는 반환 값을 생성하기 위해 수렴 함수에 인수로 전달됩니다

REPL에서 useWith Open도 참조하십시오

여기에서 실행 const Average = R.converge(R.divide, [R.sum, R.length]) average([ 1 , 2 , 3 , 4 , 5 , 6 , 7 ]) const StrangeConcat = R.converge(R.concat, [R.toUpper, R.toLower]) StrangeConcat(“요델” )

count List (a → Boolean) → [a] → Number 항목을 비교하기 위한 매개변수 술어 반환 계산할 항목의 배열 목록 v0.28.0에 추가됨 주어진 목록에서 술어와 일치하는 항목 수를 반환 REPL에서 열기 실행 여기서 const 짝수 = x => x % 2 == 0 ; R.count(짝수, [ 1 , 2 , 3 , 4 , 5 ]); R.map(R.count(짝수), [[ 1 , 1 , 1 ], [ 2 , 3 , 4 , 5 ], [ 6 ]]); countBy Relation (a → String) → [a] → {*} 매개변수 fn 값을 키에 매핑하는 데 사용되는 함수.

list 요소를 계산할 목록입니다

반환값 개체 목록의 발생 횟수에 대한 키 매핑 개체입니다

v0.1.0에 추가 제공된 기능에 의해 생성된 키의 각 값과 얼마나 일치하는지에 따라 목록의 요소를 계산합니다

fn에 의해 생성된 키를 목록의 발생 횟수에 매핑하는 객체를 반환합니다

JavaScript 개체의 작동 방식 때문에 모든 키는 문자열로 강제 변환됩니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

REPL에서 열기 여기에서 실행 const number = [ 1.0 , 1.1 , 1.2 , 2.0 , 3.0 , 2.2 ]; R.countBy( 수학. floor)(숫자); const 문자 = [ ‘a’ , ‘b’ , ‘A’ , ‘a’ , ‘B’ , ‘c’ ]; R.countBy(R.toLower)(문자);

카레 기능 (* → a) → (* → a) 매개변수 fn 카레할 기능

반환 함수 새로운 커리 함수

v0.1.0에 추가 제공된 함수에 상응하는 카레를 반환합니다

커리 함수에는 두 가지 특이한 기능이 있습니다

첫째, 인수를 한 번에 하나씩 제공할 필요가 없습니다

f가 삼항 함수이고 g가 R.curry(f) 이면 g(1)(2)(3)이 동일합니다

g(1)(2, 3)

g(1,2)(3)

g(1, 2, 3) 두 번째, 특수 자리 표시자 값 R.__을 사용하여 위치에 관계없이 모든 인수 조합을 부분적으로 적용할 수 있는 “갭”을 지정할 수 있습니다

g가 위와 같고 _가 R.__이면 g(1, 2, 3)이 동일합니다

g(_, 2, 3)(1)

g(_, _, 3)(1)(2)

g(_, _, 3)(1, 2)

g(_, 2)(1)(3)

g(_, 2)(1, 3)

g(_, 2)(_, 3)(1) 부분

또한 REPL에서 카레N 열기를 참조하십시오

여기에서 실행 const addFourNumbers = ( a, b, c, d ) => a + b + c + d; const curriedAddFourNumbers = R.curry(addFourNumbers); const f = curriedAddFourNumbers( 1 , 2 ); 상수 g = f(3); 지(4); CurryN 함수 번호 → (* → a) → (* → a) 매개변수 length 반환된 함수의 arity.

fn 카레할 함수

반환 함수 새로운 커리 함수

v0.5.0에 추가됨 지정된 arity와 함께 제공된 함수에 해당하는 카레를 반환합니다

커리 함수에는 두 가지 특이한 기능이 있습니다

첫째, 인수를 한 번에 하나씩 제공할 필요가 없습니다

g 가 R.curryN(3, f) 이면 g(1)(2)(3)이 동일합니다

g(1)(2, 3)

g(1,2)(3)

g(1, 2, 3) 두 번째, 특수 자리 표시자 값 R.__을 사용하여 위치에 관계없이 모든 인수 조합을 부분적으로 적용할 수 있는 “갭”을 지정할 수 있습니다

g가 위와 같고 _가 R.__이면 g(1, 2, 3)이 동일합니다

g(_, 2, 3)(1)

g(_, _, 3)(1)(2)

g(_, _, 3)(1, 2)

g(_, 2)(1)(3)

지(_, 2)(1, 3)

g(_, 2)(_, 3)(1) REPL에서 카레 열기 참조 여기에서 실행 const sumArgs = (. ..args ) => R.sum(args); const curriedAddFourNumbers = R.curryN( 4 , sumArgs); const f = curriedAddFourNumbers( 1 , 2 ); 상수 g = f(3); 지(4); dec 수학 숫자 → 숫자 매개변수 n 숫자를 반환합니다

n – 1 v0.9.0에 추가됨 해당 인수를 감소시킵니다

inc Open in REPL도 참조하십시오

Run it here R.dec( 42 );

기본적으로 논리 a → b → a | b 매개변수 default 기본값.

val val이 null , undefined 또는 NaN이 아닌 한 기본값 대신 val val이 반환됩니다

반환값 * ‘null’, ‘undefined’ 또는 ‘NaN’이 아니면 두 번째 값, 그렇지 않으면 기본값 v0.10.0에 추가됨 null , undefined 또는 NaN이 아니면 두 번째 인수를 반환합니다

그렇지 않으면 첫 번째 인수가 반환됩니다

REPL에서 열기 여기에서 실행 const defaultTo42 = R.defaultTo( 42 ); defaultTo42( null ); defaultTo42( 정의되지 않음 ); defaultTo42(거짓); defaultTo42( ‘람다’ ); defaultTo42( parseInt( ‘문자열’));

하강 함수 Ord b => (a → b) → a → a → 숫자 매개변수 fn 비교할 수 있는 값을 반환하는 1차 함수입니다

a 비교할 첫 번째 항목.

b 비교할 두 번째 항목

반환 숫자 `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), 그렇지 않으면 `0` v0.23.0에 추가됨 함수에서 내림차순 비교기 함수를 만듭니다

< 및 > 와 비교할 수 있는 값을 반환합니다

REPL에서 열기를 참조하십시오

여기에서 실행 const byAge = R.descend(R.prop( ‘age’ )); const people = [ { name : ‘Emma’ , age : 70 }, { name : ‘Peter’ , age : 78 }, { name : ‘Mikhail’ , age : 62 }, ]; const peopleByOldestFirst = R.sort(byAge, people);

차이 관계 [*] → [*] → [*] 매개변수 list1 첫 번째 목록.

list2 두 번째 목록

반환값 배열 `list2`에 없는 `list1`의 요소

v0.1.0에 추가됨 두 번째 목록에 포함되지 않은 첫 번째 목록의 모든 요소 집합(즉, 중복 없음)을 찾습니다

객체와 배열은 참조 같음이 아니라 값 같음의 관점에서 비교됩니다

symmetricDifference, symmetricDifferenceWith, 없이

REPL에서 differenceWith Open도 참조하십시오

여기에서 실행하십시오

R.difference([ 1 , 2 , 3 , 4 ], [ 7 , 6 , 5 , 4 , 3 ]); R.차이([ 7 , 6 , 5 , 4 , 3 ], [ 1 , 2 , 3 , 4 ]); R.차이([{ a : 1 }, { b : 2 }], [{ a : 1 }, { c : 3 }])

differenceWith Relation ((a, a) → Boolean) → [a] → [a] → [a] 매개변수 pred 두 항목이 같은지 여부를 테스트하는 데 사용되는 술어.

list1 첫 번째 목록.

list2 두 번째 목록

반환값 배열 `list2`에 없는 `list1`의 요소

v0.1.0에 추가됨 두 번째 목록에 포함되지 않은 첫 번째 목록의 모든 요소 집합(즉, 중복 없음)을 찾습니다

두 개의 목록 요소에 제공된 술어를 적용하여 반환된 값에 따라 중복 여부가 결정됩니다

symmetricDifference, symmetricDifferenceWith

차이점 참조 REPL에서 열기 여기에서 실행 const cmp = ( x, y ) => x.a === y.a; const l1 = [{ a : 1 }, { a : 2 }, { a : 3 }]; 상수 l2 = [{ a : 3 }, { a : 4 }]; R.differenceWith(cmp, l1, l2);

dissoc Object String → {k: v} → {k: v} 매개변수 prop 분리할 속성의 이름입니다

obj 복제할 개체 반환 개체 원본과 동일하지만 지정된 속성이 없는 새 개체 v0.10.0에 추가됨 prop 속성이 포함되지 않은 새 개체를 반환합니다

생략 REPL에서 열기 assoc도 참조하십시오

여기에서 실행 R.dissoc( ‘b’ , { a : 1 , b : 2 , c : 3 });

dissocPath 개체 [Idx] → {k: v} → {k: v} Idx = 문자열 | 인트 | 기호 매개변수 path 생략할 값의 경로입니다

obj 복제할 객체 반환 객체 경로에 속성이 없는 새 객체 v0.11.0에 추가됨 주어진 경로에서 속성을 생략하고 객체의 얕은 복제를 만듭니다

이렇게 하면 프로토타입 속성도 새 개체에 복사되고 병합됩니다

기본이 아닌 모든 속성은 참조로 복사됩니다

REPL에서 assocPath 열기를 참조하십시오

여기에서 실행 R.dissocPath([ ‘a’ , ‘b’ , ‘c’ ], { a : { b : { c : 42 }}});

나눗셈 수학 숫자 → 숫자 → 숫자 매개변수 a 첫 번째 값.

b 두 번째 값

‘a / b’의 결과를 숫자로 반환합니다

v0.1.0에 추가됨 두 개의 숫자를 나눕니다

a/b와 동일합니다

REPL에서 Open을 곱하기도 참조하십시오

여기에서 실행 R.divide( 71 , 100 ); 상수 절반 = R.divide(R.__, 2 ); 절반(42); const 역수 = R.divide(1); 상호(4);

drop 목록 번호 → [a] → [a] 번호 → 문자열 → 문자열 매개변수 n

list 반환값 * v0.1.0에 추가된 첫 번째 `n` 요소가 없는 목록의 복사본 주어진 목록, 문자열 또는 변환기/변압기(또는 drop 메서드가 있는 개체)의 처음 n개 요소를 제외한 모든 요소를 ​​반환합니다

존재하는 경우 두 번째 인수의 drop 메서드로 전달합니다

변환, dropLast, dropWhile

REPL에서 열기도 참조하십시오

여기에서 실행 R.drop( 1 , [ ‘foo’ , ‘bar’ , ‘baz’ ]); R.drop( 2 , [ ‘foo’ , ‘bar’ , ‘baz’ ]); R.drop( 3 , [ ‘foo’ , ‘bar’ , ‘baz’ ]); R.drop( 4 , [ ‘foo’ , ‘bar’ , ‘baz’ ]); R.drop( 3 , ‘ramda’ );

dropLast 목록 번호 → [a] → [a] 숫자 → 문자열 → 문자열 매개변수 n 건너뛸 목록의 요소 수.

list 고려할 요소의 목록입니다

반환값 배열 첫 번째 `list.length-n` 요소만 있는 목록의 복사본 v0.16.0에 추가됨 주어진 목록의 마지막 n개 요소를 제외한 모든 요소를 ​​포함하는 목록을 반환합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

drop, dropWhile, dropLastWhile

REPL에서 TakeLast 열기도 참조하십시오

여기에서 실행 R.dropLast( 1 , [ ‘foo’ , ‘bar’ , ‘baz’ ]); R.dropLast( 2 , [ ‘foo’ , ‘bar’ , ‘baz’ ]); R.dropLast( 3 , [ ‘foo’ , ‘bar’ , ‘baz’ ]); R.dropLast( 4 , [ ‘foo’ , ‘bar’ , ‘baz’ ]); R.dropLast( 3 , ‘ramda’ );

dropLastWhile List (a → Boolean) → [a] → [a] (a → Boolean) → String → String Parameters predicate 각 요소에서 호출될 함수

xs 반복할 컬렉션입니다

반환 배열 `predicate`에서 `falsy` 값을 반환하는 후행 요소가 없는 새 배열입니다

v0.16.0에 추가 제공된 조건자 기능을 충족하는 주어진 목록의 모든 꼬리 요소를 제외하고 새 목록을 반환합니다

오른쪽에서 제공된 술어 함수로 각 값을 전달하고 술어 함수가 거짓 값을 반환할 때까지 요소를 건너뜁니다

술어 함수는 하나의 인수(값)에 적용됩니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

addIndex, drop, dropWhile

또한 takeLastWhile Open in REPL을 참조하십시오

여기에서 실행 const lteThree = x => x <= 3 ; R.dropLastWhile(lteThree, [ 1 , 2 , 3 , 4 , 3 , 2 , 1 ]); R.dropLastWhile( x => x !== ‘d’ , ‘Ramda’ );

dropRepeats 목록 [a] → [a] 매개변수 목록 고려할 배열입니다

요소를 반복하지 않고 배열 ‘목록’을 반환합니다

v0.14.0에 추가됨 연속적으로 반복되는 요소가 없는 새 목록을 반환합니다

R.equals는 평등을 결정하는 데 사용됩니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

R.dropRepeats([ 1 , 1 , 1 , 2 , 3 , 4 , 4 , 2 , 2 ]); dropRepeatsWith List ((a, a) → Boolean) → [a] → [a] 매개변수 pred 두 항목이 같은지 여부를 테스트하는 데 사용되는 술어.

list 고려할 배열입니다

요소를 반복하지 않고 배열 ‘목록’을 반환합니다

v0.14.0에 추가됨 연속적으로 반복되는 요소가 없는 새 목록을 반환합니다

같음은 연속 요소의 각 쌍에 제공된 술어를 적용하여 결정됩니다

일련의 동일한 요소 중 첫 번째 요소가 유지됩니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

REPL에서 변환 열기를 참조하십시오

여기에서 실행 const l = [ 1 , – 1 , 1 , 3 , 4 , – 4 , – 4 , – 5 , 5 , 3 , 3 ]; R.dropRepeatsWith(R.eqBy( 수학. abs), l);

dropWhile List (a → Boolean) → [a] → [a] (a → Boolean) → String → String Parameters fn 반복당 호출되는 함수.

xs 반복할 컬렉션입니다

반환값 배열 새 배열입니다

v0.9.0에 추가 제공된 조건자 기능을 충족하는 주어진 목록의 선행 요소를 제외하고 새 목록을 반환합니다

각 값을 제공된 술어 함수에 전달하고 술어 함수가 true 를 반환하는 동안 요소를 건너뜁니다

술어 함수는 하나의 인수(값)에 적용됩니다

있는 경우 두 번째 인수의 dropWhile 메서드로 전달합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

변환, addIndex

REPL에서 TakeWhile Open도 참조하십시오

여기에서 실행 const lteTwo = x => x <= 2 ; R

dropWhile(lteTwo, [ 1 , 2 , 3 , 4 , 3 , 2 , 1 ]); R.dropWhile( x => x !== ‘d’ , ‘Ramda’ );

논리(*… → 부울) → (*… → 부울) → (*… → 부울) 매개변수 f a 술어

g 또 다른 술어 `f`와 `g` 및 `||`의 출력에 인수를 적용하는 함수를 반환합니다

v0.12.0에 추가됨 || 연산, 참이면 첫 번째 함수의 결과를 반환하고 그렇지 않으면 두 번째 함수의 결과를 반환합니다

See also  The Best 아이튠즈 백업 Update

이것은 단락되어 있습니다

즉, 첫 번째 함수가 truth-y 값을 반환하면 두 번째 함수가 호출되지 않습니다

기능 외에도 R.either는 판타지 랜드와 호환되는 응용 펑터도 허용합니다

또는

REPL에서 열기를 참조하십시오

여기에서 실행 const gt10 = x => x > 10 ; 상수 짝수 = x => x % 2 === 0 ; const f = R.either(gt10, 짝수); f(101); f(8); R.either(Maybe.Just( false ), Maybe.Just( 55 )); R.either([ false , false , ‘a’ ], [ 11 ])

empty 함수 a → a 매개변수 x 반환값 * v0.3.0에 추가됨 해당 인수 유형의 빈 값을 반환합니다

Ramda는 Array( [] ), Object( {} ), String( ” ), TypedArray( Uint8Array [] , Float32Array [] 등) 및 Arguments의 빈 값을 정의합니다

.empty , .prototype.empty 를 정의하거나 FantasyLand Monoid 사양을 구현하는 경우 다른 유형이 지원됩니다

첫 번째 인수의 빈 메서드가 있는 경우 이를 전달합니다

REPL에서 열기 여기에서 실행 R

empty(Just( 42 )); R

비어 있음([ 1 , 2 , 3 ]); R

empty( ‘유니콘’ ); R.empty({ x : 1 , y : 2 }); R.empty( Uint8Array. from( ‘123’ ));

endWith 목록 [a] → [a] → 부울 문자열 → 문자열 → 부울 매개변수 접미사

목록 반환 부울 ​​v0.24.0에 추가됨 목록이 제공된 하위 목록으로 끝나는지 확인합니다

마찬가지로 문자열이 제공된 하위 문자열로 끝나는지 확인합니다

REPL에서 startsWith 열기 참조 R.endsWith( ‘c’ , ‘abc’ ) R.endsWith( ‘b’ , ‘abc’ ) R.endsWith([ ‘c’ ], [ ‘a’ , ‘b ‘ , ‘c’ ]) R.endsWith([ ‘b’ ], [ ‘a’ , ‘b’ , ‘c’ ])

eqBy Relation (a → b) → a → a → Boolean Parameters f

엑스

v0.18.0에 추가된 부울을 반환합니다

해당 도메인에서 함수와 두 개의 값을 취하고 값이 공동 도메인의 동일한 값에 매핑되면 true를 반환합니다

그렇지 않으면 거짓

REPL에서 열기 여기에서 실행 R.eqBy( Math. abs, 5 , – 5 );

eqProps Object k → {k: v} → {k: v} → Boolean Parameters prop 비교할 속성의 이름

개체1

obj2 반환 부울 ​​v0.1.0에 추가됨 두 개체가 지정된 속성에 대해 R.equals 용어로 동일한 값을 갖는지 여부를 보고합니다

치료된 술어로 유용합니다

REPL에서 열기 여기에서 실행 const o1 = { a : 1 , b : 2 , c : 3 , d : 4 }; const o2 = { a : 10 , b : 20 , c : 3 , d : 40 }; R.eqProps(‘a’, o1, o2); R.eqProps(‘c’, o1, o2);

같음 관계 a → b → 부울 매개변수 a

b 반환 부울 ​​v0.15.0에 추가됨 인수가 동일하면 true를 반환하고 그렇지 않으면 false를 반환합니다

주기적 데이터 구조를 처리합니다

존재하는 경우 두 인수의 equals 메서드에 대칭적으로 전달합니다

REPL에서 열기 여기에서 실행 R

equals( 1 , 1 ); R

equals( 1 , ‘1’ ); R

equals([ 1 , 2 , 3 ], [ 1 , 2 , 3 ]); 상수 a = {}; a.v = 에이; 상수 b = {}; b.v = b; R

같음(a, b);

진화 객체 {k: (v → v)} → {k: v} → {k: v} 매개변수 변환 객체에 적용할 변환 함수를 지정하는 객체.

object 변환할 개체입니다

반환값 Object 변환된 개체입니다

v0.9.0에 추가됨 변형 기능에 따라 객체의 얕은 복사본을 재귀적으로 발전시켜 새 객체를 생성합니다

기본이 아닌 모든 속성은 참조로 복사됩니다

해당 키가 진화된 객체에 존재하지 않는 경우 변환 기능이 호출되지 않습니다

REPL에서 열기 여기에서 실행 const 토마토 = { firstName: ‘Tomato’ , data: { 경과: 100 , 잔여: 1400 }, id: 123 }; const 변환 = { firstName : R.trim, lastName : R.trim, data : { 경과 : R.add( 1 ), 나머지 : R.add(- 1 )} }; R.evolve(변신, 토마토);

F Function * → Boolean Parameters Returns Boolean v0.9.0에 추가 항상 false를 반환하는 함수

전달된 모든 매개변수는 무시됩니다

T Open in REPL도 참조하십시오

Run it here R.F();

필터 목록 필터링 가능 f => (a → 부울) → f a → f a 매개변수 pred

filterable은 v0.1.0에 추가된 Filterable 배열을 반환합니다

술어와 Filterable을 취하고 주어진 술어를 충족하는 주어진 필터링 가능의 구성원을 포함하는 동일한 유형의 새 필터링 가능을 반환합니다

필터링 가능한 개체에는 일반 개체 또는 Array 와 같은 필터 메서드가 있는 모든 개체가 포함됩니다

존재하는 경우 두 번째 인수의 필터 메서드에 전달합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

변환, addIndex

REPL에서 열기 거부도 참조하십시오

여기서 실행 const isEven = n => n % 2 === 0 ; R

필터(isEven, [ 1 , 2 , 3 , 4 ]); R.filter(isEven, { a : 1 , b : 2 , c : 3 , d : 4 });

목록 찾기(a → 부울) → [a] → a | 정의되지 않은 매개변수 fn 요소가 원하는 요소인지 판별하는 데 사용되는 술어 함수

list 고려할 배열

반환값 개체 발견된 요소 또는 ‘정의되지 않음’입니다

v0.1.0에 추가됨 술어와 일치하는 목록의 첫 번째 요소를 반환하거나 일치하는 요소가 없으면 정의되지 않음을 반환합니다

존재하는 경우 두 번째 인수의 find 메소드에 전달합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

REPL에서 변환 열기를 참조하십시오

여기에서 실행 const xs = [{ a : 1 }, { a : 2 }, { a : 3 }]; R.find(R.propEq( ‘a’ , 2 ))(xs); R.find(R.propEq( ‘a’ , 4 ))(xs);

findIndex 목록 (a → Boolean) → [a] → 숫자 매개변수 fn 요소가 원하는 요소인지 판별하는 데 사용되는 술어 함수.

list 고려할 배열

반환값 숫자 발견된 요소의 인덱스 또는 ‘-1’

v0.1.1에 추가됨 목록에서 술어와 일치하는 첫 번째 요소의 인덱스를 반환하거나 일치하는 요소가 없으면 -1을 반환합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

인덱스 REPL에서 변환 열기를 참조하십시오

여기에서 실행 const xs = [{ a : 1 }, { a : 2 }, { a : 3 }]; R.findIndex(R.propEq( ‘a’ , 2 ))(xs); R.findIndex(R.propEq( ‘a’ , 4 ))(xs);

findLast List (a → Boolean) → [a] → a | 정의되지 않은 매개변수 fn 요소가 원하는 요소인지 판별하는 데 사용되는 술어 함수

list 고려할 배열

반환값 개체 발견된 요소 또는 ‘정의되지 않음’입니다

v0.1.1에 추가됨 술어와 일치하는 목록의 마지막 요소를 반환하거나 일치하는 요소가 없으면 정의되지 않음을 반환합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

REPL에서 변환 열기를 참조하십시오

여기에서 실행 const xs = [{ a : 1 , b : 0 }, { a : 1 , b : 1 }]; R.findLast(R.propEq( ‘a’ , 1 ))(xs); R.findLast(R.propEq( ‘a’ , 4 ))(xs);

findLastIndex 목록 (a → Boolean) → [a] → 숫자 매개변수 fn 요소가 원하는 요소인지 판별하는 데 사용되는 술어 함수.

list 고려할 배열

반환값 숫자 발견된 요소의 인덱스 또는 ‘-1’

v0.1.1에 추가됨 목록에서 술어와 일치하는 마지막 요소의 인덱스를 반환하거나 일치하는 요소가 없으면 -1을 반환합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

마지막 인덱스 REPL에서 변환 열기를 참조하십시오

여기에서 실행 const xs = [{ a : 1 , b : 0 }, { a : 1 , b : 1 }]; R.findLastIndex(R.propEq( ‘a’ , 1 ))(xs); R.findLastIndex(R.propEq( ‘a’ , 4 ))(xs);

flatten List [a] → [b] 매개변수 목록 고려할 배열입니다

반환값 배열 병합된 목록입니다

v0.1.0에 추가됨 모든 항목(및 모든 하위 배열)을 꺼내서 깊이 우선의 새 배열에 넣어 새 목록을 반환합니다

REPL에서 unnest 열기도 참조하십시오

여기에서 실행 R.flatten([ 1 , 2 , [ 3 , 4 ], 5 , [ 6 , [ 7 , 8 , [ 9 , [ 10 , 11 ], 12 ]]]]);

flip 함수 ((a, b, c, …) → z) → (b → a → c → … → z) 매개변수 fn 처음 두 매개변수를 반대로 하여 호출할 함수입니다

반환값 * 처음 두 매개변수의 순서를 반대로 하여 `fn`을 호출한 결과입니다

v0.1.0에 추가됨 처음 두 인수의 순서가 반대라는 점을 제외하고 제공된 것과 매우 유사한 새 함수를 반환합니다

REPL에서 열기 여기에서 실행 const mergeThree = ( a, b, c ) => [].concat(a, b, c); mergeThree( 1 , 2 , 3 ); R.flip(mergeThree)( 1 , 2 , 3 );

forEach List (a → *) → [a] → [a] 매개변수 fn 호출할 함수입니다

하나의 인수, value.

list 반복할 목록을 받습니다

반환값 배열 원래 목록입니다

v0.1.1에 추가됨 입력 목록에 대해 반복, 목록의 각 요소에 대해 제공된 함수 fn을 호출합니다

fn은 (값) 하나의 인수를 받습니다

참고: R.forEach는 기본 Array.prototype.forEach 메서드와 달리 삭제되거나 할당되지 않은 인덱스(희소 배열)를 건너뛰지 않습니다

이 동작에 대한 자세한 내용은 다음을 참조하십시오

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description 또한 Array.prototype.forEach와 달리 Ramda의 forEach는 원래 배열을 반환합니다

일부 라이브러리에서 이 함수의 이름은 each 입니다

존재하는 경우 두 번째 인수의 forEach 메서드에 전달합니다

addIndex Open in REPL도 참조하십시오

여기에서 실행 const printXPlusFive = x => console. log(x + 5 ); R.forEach(printXPlusFive, [ 1 , 2 , 3 ]);

forEachObjIndexed Object ((a, String, StrMap a) → Any) → StrMap a → StrMap a 매개변수 fn 호출할 함수입니다

세 개의 인수, value , key , obj.

obj 반복할 개체를 받습니다

반환 개체 원래 개체입니다

v0.23.0에 추가됨 입력 개체에 대해 반복하여 개체의 각 키와 값에 대해 제공된 함수 fn을 호출합니다

fn은 세 가지 인수(값, 키, obj)를 받습니다

REPL에서 열기 여기에서 실행 const printKeyConcatValue = ( value, key ) => console. log(key + ‘:’ + value); R.forEachObjIndexed(printKeyConcatValue, { x : 1 , y : 2 });

fromPairs List [[k,v]] → {k: v} 매개변수 쌍 출력 객체의 키와 값이 될 2요소 배열의 배열

반환값 Object `keys`와 `values`를 쌍으로 만든 객체입니다

v0.3.0에 추가됨 목록 키-값 쌍에서 새 개체를 만듭니다

키가 여러 쌍으로 나타나면 가장 오른쪽에 있는 쌍이 개체에 포함됩니다

REPL에서 toPairs 열기도 참조하십시오

여기에서 실행 R.fromPairs([[ ‘a’ , 1 ], [ ‘b’ , 2 ], [ ‘c’ , 3 ]]);

groupBy 목록 Idx a => (b → a) → [b] → {a: [b]} Idx = 문자열 | 인트 | 기호 매개변수 fn 기능 :: a -> Idx

list 그룹화할 배열 반환값 Object ‘fn’에 전달될 때 해당 키를 생성한 요소의 배열에 매핑된 키에 대한 출력이 ‘fn’인 개체입니다

v0.1.0에 추가됨 각 요소에 대해 키 반환 함수를 호출하고 반환된 값에 따라 결과를 그룹화한 결과를 기반으로 목록을 개체에 저장된 하위 목록으로 분할합니다

존재하는 경우 두 번째 인수의 groupBy 메서드로 전달합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

변환, indexBy

REPL에서 reduceBy 열기 참조 여기에서 실행 const byGrade = R.groupBy( function ( student ) { const score = student.score ; 반환 점수 < 65 ? 'F' : 점수 < 70 ? 'D' : 점수 < 80 ? ' C' : 점수 < 90 ? 'B' : 'A' ; }); const Students = [{ name : 'Abby' , score : 84 }, { name : 'Eddy' , score : 58 }, { name : 'Jack' , score : 69 }]; byGrade(학생);

groupWith List ((a, a) → Boolean) → [a] → [[a]] 매개변수 fn 두 개의 주어진(인접한) 요소가 같은 그룹에 있어야 하는지 여부를 결정하는 함수

list 그룹화할 배열입니다

또한 문자 목록으로 처리될 문자열도 허용합니다

반환값 목록 연결이 원래 목록과 동일한 요소의 하위 목록을 포함하는 목록입니다

v0.21.0에 추가됨 목록을 가져와서 제공된 기능에 따라 각 하위 목록의 요소가 모두 쌍별 비교를 만족하는 목록의 목록을 반환합니다

인접한 요소만 비교 함수에 전달됩니다

REPL에서 열기 여기에서 실행 R.groupWith(R.equals, [ 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 ]) R.groupWith( ( a, b ) => a + 1 == = b, [ 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 ]) R.groupWith( ( a, b ) => a % 2 === b % 2 , [ 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 ]) const isVowel = R.test( /^[aeiou]$/i ); R.groupWith(R.eqBy(isVowel), ‘aestiou’ )

gt 관계 순서 a => a → a → 부울 매개변수 a

b 반환 부울 ​​v0.1.0에 추가됨 첫 번째 인수가 두 번째 인수보다 크면 true를 반환합니다

그렇지 않으면 거짓

참조 lt Open in REPL 여기에서 실행 R.gt( 2 , 1 ); R.gt(2,2); R.gt(2,3); R.gt( ‘a’ , ‘z’ ); R.gt( ‘z’ , ‘a’ );

gte 관계 순서 a => a → a → 부울 매개변수 a

b 반환값 부울 v0.1.0에 추가됨 첫 번째 인수가 두 번째 인수보다 크거나 같으면 true를 반환하고, 그렇지 않으면 true를 반환합니다

그렇지 않으면 거짓

lte REPL에서 열기도 참조하십시오

여기에서 실행 R.gte( 2 , 1 ); R.gte(2,2); R.gte(2,3); R.gte( ‘a’ , ‘z’ ); R.gte( ‘z’ , ‘a’ );

has Object s → {s: x} → Boolean Parameters prop 확인할 속성의 이름.

obj 쿼리할 객체

속성이 존재하는지 여부를 반환합니다

v0.7.0에 추가됨 개체에 지정된 이름의 고유 속성이 있는지 여부를 반환합니다

REPL에서 열기 여기에서 실행 const hasName = R.has( ‘name’ ); hasName({ 이름 : ‘앨리스’ }); hasName({ 이름 : ‘밥’ }); hasName({}); 상수 포인트 = { x : 0 , y : 0 }; const pointHas = R.has(R.__, 점); pointHas( ‘x’ ); pointHas( ‘y’ ); pointHas( ‘z’ );

hasIn Object s → {s: x} → Boolean Parameters prop 확인할 속성의 이름.

obj 쿼리할 객체

속성이 존재하는지 여부를 반환합니다

v0.7.0에 추가됨 객체 또는 프로토타입 체인에 지정된 이름의 속성이 있는지 여부를 반환합니다

Open in REPL 여기에서 실행 function Rectangle ( width, height ) { this. width = width; 이. 높이 = 높이; } Rectangle.prototype.area = function ( ) { return this. width * this. height; }; const 정사각형 = new Rectangle( 2 , 2 ); R

hasIn( ‘너비’, 정사각형); R.hasIn( ‘면적’ , 정사각형);

hasPath 개체 [Idx] → {a} → 부울 Idx = 문자열 | 인트 | Symbol Parameters path 사용할 경로.

obj 경로를 확인할 객체

반환값 Boolean 경로가 있는지 여부

v0.26.0에 추가됨 개체에 경로가 있는지 여부를 반환합니다

개체의 자체 속성만 확인됩니다

REPL에서 열기도 참조하십시오

여기에서 실행 R.hasPath([ ‘a’ , ‘b’ ], { a : { b : 2 }}); R.hasPath([ ‘a’ , ‘b’ ], { a : { b : 정의되지 않음 }}); R.hasPath([ ‘a’ , ‘b’ ], { a : { c : 2 }}); R.hasPath([ ‘a’ , ‘b’ ], {});

헤드 목록 [a] → a | 정의되지 않은 문자열 → 문자열 매개변수 목록 반환값 * v0.1.0에 추가됨 주어진 목록 또는 문자열의 첫 번째 요소를 반환합니다

일부 라이브러리에서는 이 함수의 이름이 first 로 지정됩니다

초기화, 마지막

REPL에서 꼬리 열기도 참조하십시오

여기에서 실행 R.head([ ‘fi’ , ‘fo’ , ‘fum’ ]); R.헤드([]); R.head( ‘abc’ ); R.헤드( ” );

동일한 관계 a → a → 부울 매개변수 a

b 반환 부울 ​​v0.15.0에 추가됨 인수가 동일하면 true를 반환하고 그렇지 않으면 false를 반환합니다

동일한 메모리를 참조하는 경우 값은 동일합니다

NaN은 NaN과 동일합니다

0과 -0은 동일하지 않습니다

이것은 ES6 Object.is의 커리 버전일 뿐입니다

REPL에서 열기 여기에서 실행 const o = {}; R.동일(o,o); R.동일(1, 1); R.동일( 1 , ‘1’ ); R.동일([], []); R.동일( 0 , – 0 ); R.동일(NaN, NaN);

identity 함수 a → a 매개변수 x 반환할 값

반환값 * 입력 값 `x`

v0.1.0에 추가 제공된 매개변수만 반환하는 함수입니다

기본 또는 자리 표시자 기능으로 좋습니다

REPL에서 열기 여기에서 실행 R.identity( 1 ); const obj = {}; R.identity(obj) === obj;

ifElse Logic (*… → Boolean) → (*… → *) → (*… → *) → (*… → *) 매개변수 condition 조건자 함수

onTrue 조건이 참 값으로 평가될 때 호출할 함수.

onFalse 조건이 거짓 값으로 평가될 때 호출할 함수입니다

반환 함수 `condition` 술어의 결과에 따라 `onTrue` 또는 `onFalse` 함수를 처리하는 새 함수입니다

v0.8.0에 추가됨 조건 술어의 결과에 따라 onTrue 또는 onFalse 함수를 처리하는 함수를 만듭니다

때, 조건

Open in REPL이 아니면 여기에서 실행 const incCount = R.ifElse( R.has( ‘count’ ), R.over(R.lensProp( ‘count’ ), R.inc), R.assoc( ‘count’ , 하나 ) ); incCount({ 개수 : 1 }); incCount({});

inc 수학 숫자 → 숫자 매개변수 n 숫자를 반환합니다

n + 1 v0.9.0에 추가됨 해당 인수를 증가시킵니다

dec Open in REPL도 참조하십시오

Run it here R.inc( 42 );

포함 목록 a → [a] → 부울 매개변수 a 비교할 항목.

목록 고려할 배열입니다

동등한 항목이 목록에 있으면 부울 `true`를 반환하고 그렇지 않으면 `false`를 반환합니다

v0.26.0에 추가됨 지정된 값이 R.equals 용어로 주어진 목록의 하나 이상의 요소와 같으면 true를 반환합니다

그렇지 않으면 거짓

문자열에서도 작동합니다

REPL에서 열기도 참조하십시오

여기에서 실행 R.includes( 3 , [ 1 , 2 , 3 ]); R.포함( 4 , [ 1 , 2 , 3 ]); R.includes({ 이름 : ‘프레드’ }, [{ 이름 : ‘프레드’ }]); R.포함([ 42 ], [[ 42 ]]); R.includes( ‘바’ , ‘바나나’ );

indexBy 목록 Idx a => (b → a) → [b] → {a: b} Idx = 문자열 | 인트 | 기호 매개변수 fn 기능 :: a -> Idx

array 인덱싱할 객체의 배열 반환값 Object 주어진 속성으로 각 배열 요소를 인덱싱하는 객체입니다

v0.19.0에 추가됨 키를 생성하는 함수가 주어지면 객체 목록을 주어진 키로 객체를 인덱싱하는 객체로 바꿉니다

여러 개체가 인덱싱 키에 대해 동일한 값을 생성하는 경우 마지막 값만 생성된 개체에 포함됩니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

REPL에서 groupBy 열기 참조 const list = [{ id : ‘xyz’ , title : ‘A’ }, { id : ‘abc’ , title : ‘B’ }]; R.indexBy(R.prop( ‘id’ ), 목록);

indexOf List a → [a] → Number 매개변수 target 찾을 항목.

xs 검색할 배열

반환값 Number 대상의 인덱스, 또는 대상이 없으면 -1입니다

v0.1.0에 추가됨 배열에서 항목이 처음 나타나는 위치를 반환하거나 항목이 배열에 포함되지 않은 경우 -1을 반환합니다

R.equals는 평등을 결정하는 데 사용됩니다

색인을 찾으십시오

참조 lastIndexOf REPL에서 열기 여기에서 실행 R.indexOf( 3 , [ 1 , 2 , 3 , 4 ]); R.indexOf( 10 , [ 1 , 2 , 3 , 4 ]);

init List [a] → [a] 문자열 → 문자열 매개변수 목록 반환값 * v0.9.0에 추가됨 주어진 목록 또는 문자열의 마지막 요소를 제외한 모든 요소를 ​​반환합니다

머리, 꼬리

REPL에서 마지막 열기도 참조하십시오

여기에서 실행 R.init([ 1 , 2 , 3 ]); R.초기화([1,2]); R.초기화([ 1 ]); R.초기화([]); R.init(‘abc’); R.init(‘ab’); R.init( ‘아’ ); R.init( ” );

innerJoin 관계 ((a, b) → 부울) → [a] → [b] → [a] 매개변수 pred

엑스 ys는 v0.24.0에 추가된 배열을 반환합니다

pred , 목록 xs 및 목록 ys 를 취하고 pred 에 따라 ys 의 하나 이상의 요소와 동일한 xs 의 각 요소를 포함하는 목록 xs’를 반환합니다

pred는 각 목록의 요소를 기대하는 이진 함수여야 합니다

xs , ys 및 xs’ 는 의미적으로 세트로 취급되므로 순서가 중요하지 않아야 하지만 xs’ 는 순서가 지정되기 때문에 구현 시 해당 값이 xs 에 나타나는 것과 동일한 순서로 유지되도록 보장합니다

중복 항목은 제거되지 않으므로 xs에 중복 항목이 포함되어 있으면 xs’에 중복 항목이 포함될 수 있습니다

REPL에서 Open it here R.innerJoin( ( record, id ) => record.id === id, [{ id : 824 , name : ‘Richie Fury’ }, { id : 956 , name : ‘ 듀이 마틴’ }, { id: 313 , name: ‘Bruce Palmer’ }, { id: 456 , name: ‘Stephen Stills’ }, { id: 177 , name: ‘Neil Young’ }], [ 177 , 456 , 999 ] );

insert List Number → a → [a] → [a] 매개변수 index 요소를 삽입할 위치

elt 배열에 삽입할 요소입니다

list 에 삽입할 목록을 반환합니다

Array `index`에 `elt`가 삽입된 새 배열입니다

v0.2.2에 추가됨 제공된 요소를 지정된 인덱스의 목록에 삽입합니다

이것은 파괴적이지 않습니다

변경 사항이 있는 목록의 복사본을 반환합니다

이 기능의 적용으로 인해 목록이 손상되지 않았습니다

REPL에서 열기 여기에서 실행 R.insert( 2 , ‘x’ , [ 1 , 2 , 3 , 4 ]);

insertAll 목록 번호 → [a] → [a] → [a] 매개변수 index 하위 목록을 삽입할 위치입니다

elts 배열에 삽입할 하위 목록입니다

list 하위 목록을 삽입할 목록 반환 배열 `index`에서 시작하는 `elts`가 삽입된 새 배열

v0.9.0에 추가됨 지정된 인덱스에 있는 목록의 하위 목록을 삽입합니다

이것은 파괴적이지 않습니다

변경 사항이 있는 목록의 복사본을 반환합니다

이 기능의 적용으로 인해 목록이 손상되지 않았습니다

REPL에서 열기 R.insertAll( 2 , [ ‘x’ , ‘y’ , ‘z’ ], [ 1 , 2 , 3 , 4 ]);

교집합 관계 [*] → [*] → [*] 매개변수 list1 첫 번째 목록.

list2 두 번째 목록

반환값 배열 `list1`과 `list2`에서 모두 찾은 요소 목록입니다

v0.1.0에 추가됨 두 목록에 공통적인 요소로 구성된 세트(즉, 중복 없음)로 두 목록을 결합합니다

REPL에서 innerJoin 열기를 참조하십시오

여기에서 실행하십시오

R.intersection([ 1 , 2 , 3 , 4 ], [ 7 , 6 , 5 , 4 , 3 ]);

intersperse List a → [a] → [a] 매개변수 separator 목록에 추가할 요소.

list 삽입할 목록

반환값 배열 새 목록입니다

v0.14.0에 추가됨 요소 사이에 구분 기호가 삽입된 새 목록을 만듭니다

존재하는 경우 두 번째 인수의 intersperse 메서드로 전달합니다

REPL에서 열기 R.intersperse( ‘a’ , [ ‘b’ , ‘n’ , ‘n’ , ‘s’ ]);

into List a → (b → b) → [c] → a 매개변수 acc 초기 누산기 값.

xf 변환기 기능

변환기를 수신하고 변환기를 반환합니다.

목록 반복할 목록입니다

반환값 * 최종 누적 값

v0.12.0에 추가됨 변환기를 사용하여 목록 항목을 변환하고 누적기 유형에 따라 적절한 반복기 기능을 사용하여 변환된 항목을 누적기에 추가합니다

누산기는 배열, 문자열, 개체 또는 변환기가 될 수 있습니다

반복 항목은 배열에 추가되고 문자열에 연결됩니다

개체는 직접 병합되거나 2개 항목 배열이 키, 값 쌍으로 병합됩니다

accumulator는 또한 2-arity 감소 반복기 함수, 단계, 0-arity 초기값 함수, init 및 1-arity 결과 추출 함수 결과를 제공하는 변환기 객체일 수 있습니다

단계 함수는 감소에서 반복자 함수로 사용됩니다

결과 함수는 최종 누산기를 반환 유형으로 변환하는 데 사용되며 대부분의 경우 R.identity입니다

init 함수는 초기 누산기를 제공하는 데 사용됩니다

변환기를 초기화한 후 R.reduce를 사용하여 반복을 수행합니다

REPL에서 열기 변환도 참조하십시오

여기에서 실행 const numbers = [ 1 , 2 , 3 , 4 ]; const 변환기 = R.compose(R.map(R.add(1)), R.take(2)); R.into([], 변환기, 숫자); const intoArray = R.into([]); intoArray(변환기, 숫자);

invert Object {s: x} → {x: [ s, … ]} 매개변수 obj 반전할 객체 또는 배열 반환값 Object out 배열에 키가 있는 새 객체

v0.9.0에 추가됨 R.invertObj 와 동일하지만 값을 배열에 넣어 중복 값을 가진 객체를 설명합니다

참고 사항 invertObj REPL에서 열기 여기에서 실행 const raceResultsByFirstName = { first : ‘alice’ , second : ‘jake’ , third : ‘alice’ , }; R.invert(raceResultsByFirstName);

invertObj Object {s: x} → {x: s} 매개변수 obj 반전할 객체 또는 배열 반환 Object out 새 객체 v0.9.0에 추가됨 주어진 객체의 키를 값으로 사용하여 새 객체를 반환하고 값 ​문자열로 강제 변환된 주어진 객체의 ​

동일한 값을 처리할 때 발견된 마지막 키가 선호된다는 점에 유의하십시오

REPL에서 invert Open도 참조하십시오

여기에서 실행 const raceResults = { first : ‘alice’ , second : ‘jake’ }; R.invertObj(raceResults); const raceResults = [ ‘앨리스’ , ‘제이크’ ]; R.invertObj(raceResults);

호출자 함수 번호 → 문자열 → (a → b → … → n → 객체 → *) 매개변수 arity 반환된 함수가 대상 객체 이전에 취해야 하는 인수의 수.

method 호출할 대상 객체의 메서드 이름

반환 함수 새로운 치료된 함수입니다

v0.1.0에 추가됨 지정된 arity를 ​​가진 명명된 메서드를 인수 및 대상 개체와 함께 직접 제공하여 호출할 수 있는 함수로 바꿉니다

반환된 함수는 커리 처리되고 최종 매개변수가 대상 객체인 arity + 1 매개변수를 허용합니다

REPL에서 Open 구성 참조 여기에서 실행 const sliceFrom = R.invoker( 1 , ‘slice’ ); sliceFrom( 6 , ‘abcdefghijklm’ ); const sliceFrom6 = R.invoker( 2 , ‘슬라이스’ )( 6 ); sliceFrom6( 8 , ‘abcdefghijklm’ ); const dog = { speak: async() => ‘으악!’ }; const 말하기 = R.invoker( 0 , ‘말하기’ ); 발언(개).then(콘솔. log)

유형(* → {*}) → a → 부울 매개변수 ctor A 생성자입니다

val 테스트할 값 반환 부울 ​​v0.3.0에 추가됨 개체(예: val )가 제공된 생성자의 인스턴스인지 확인합니다

이 함수는 상속 체인이 있는 경우 이를 확인합니다

val이 Object.create를 사용하여 생성된 경우 R.is(Object, val) === true 입니다

REPL에서 열기 여기에서 실행 R.is( Object , {}); R.is( 숫자 , 1 ); R.is( 객체 , 1 ); R.is( 문자열 , ‘s’ ); R.is( String , 새로운 String ( ” )); R.is( 객체 , 새로운 문자열 ( ” )); R.is( 객체 , ‘s’ ); R.is( 숫자 , {});

isEmpty Logic a → 부울 매개변수 x 반환 부울 ​​v0.1.0에 추가됨 주어진 값이 해당 유형의 빈 값이면 true를 반환합니다

그렇지 않으면 거짓

REPL에서 빈 열기도 참조하십시오

여기에서 실행 R.isEmpty([ 1 , 2 , 3 ]); R.isEmpty([]); R.isEmpty( ” ); R.isEmpty( null ); R.isEmpty({}); R.isEmpty({ 길이 : 0 }); R.isEmpty( Uint8Array. from( ” ));

isNil 유형 * → 부울 매개변수 x 테스트할 값

‘x’가 ‘정의되지 않음’ 또는 ‘null’이면 부울 ‘true’를 반환하고, 그렇지 않으면 ‘false’를 반환합니다

v0.9.0에 추가됨 입력 값이 null인지 undefined인지 확인합니다

REPL에서 열기 여기에서 실행 R.isNil( null ); R.isNil( 정의되지 않음 ); R.isNil( 0 ); R.isNil([]);

join List 문자열 → [a] → 문자열 매개변수 separator 요소를 구분하는 데 사용되는 문자열.

xs 문자열로 결합할 요소

반환값 String str `xs`와 `separator`를 연결하여 만든 문자열입니다

v0.1.0에 추가됨 각 요소 사이에 구분 기호를 삽입하고 모든 요소를 ​​단일 문자열로 연결하여 만든 문자열을 반환합니다

REPL에서 split 열기도 참조하십시오

여기에서 실행 const spacer = R.join( ‘ ‘ ); spacer([ ‘a’ , 2 , 3.4 ]); R.join( ‘|’ , [ 1 , 2 , 3 ]);

juxt Function [(a, b, …, m) → n] → ((a, b, …, m) → [n]) 매개변수 fns 함수의 배열을 반환 함수 다음 값의 목록을 반환하는 함수 A 각각의 원래 `fns`를 매개변수에 적용합니다

v0.19.0에 추가됨 juxt는 함수 목록을 값 목록에 적용합니다

REPL에서 applySpec 열기를 참조하십시오

여기에서 실행 const getRange = R.juxt([ Math. min, Math. max]); getRange( 3 , 4 , 9 , – 3 );

keys Object {k: v} → [k] 매개변수 obj 속성을 추출할 개체 반환값 Array 개체 자체 속성의 배열입니다

v0.1.0에 추가 제공된 개체의 모든 열거 가능한 고유 속성의 이름을 포함하는 목록을 반환합니다

출력 배열의 순서는 다른 JS 플랫폼에서 일관성이 보장되지 않습니다

값, toPairs

REPL에서 열기를 참조하십시오

여기에서 실행 R.keys({ a : 1 , b : 2 , c : 3 });

keysIn Object {k: v} → [k] 매개변수 obj 속성을 추출할 개체 반환값 Array 개체 자체 및 프로토타입 속성의 배열입니다

v0.2.0에 추가됨 프로토타입 속성을 포함하여 제공된 개체의 모든 속성 이름이 포함된 목록을 반환합니다

출력 배열의 순서는 다른 JS 플랫폼에서 일관성이 보장되지 않습니다

값을 입력합니다

키 참조 REPL에서 열기 여기에서 실행 const F = function ( ) { this. x = ‘X’ ; }; F.prototype.y = ‘Y’ ; const f = 새로운 F(); R.keysIn(f);

마지막 목록 [a] → a | 정의되지 않은 문자열 → 문자열 매개변수 목록 반환값 * v0.1.4에 추가됨 주어진 목록 또는 문자열의 마지막 요소를 반환합니다

머리, 꼬리

REPL에서 init 열기도 참조하십시오

여기에서 실행 R.last([ ‘fi’ , ‘fo’ , ‘fum’ ]); R

마지막([]); R.last(‘abc’); R

마지막( ” );

lastIndexOf 목록 a → [a] → 숫자 매개변수 target 찾을 항목.

xs 검색할 배열

반환값 Number 대상의 인덱스, 또는 대상이 없으면 -1입니다

v0.1.0에 추가됨 배열에서 항목이 마지막으로 발생한 위치를 반환하거나 항목이 배열에 포함되지 않은 경우 -1을 반환합니다

R.equals는 평등을 결정하는 데 사용됩니다

마지막 인덱스를 찾으십시오

참조 indexOf REPL에서 열기 여기에서 실행 R.lastIndexOf( 3 , [- 1 , 3 , 3 , 0 , 1 , 2 , 3 , 4 ]); R.lastIndexOf( 10 , [ 1 , 2 , 3 , 4 ]);

length 목록 [a] → 숫자 매개변수 목록 검사할 배열입니다

반환값 숫자 배열의 길이입니다

v0.3.0에 추가됨 list.length를 반환하여 배열의 요소 수를 반환합니다

REPL에서 열기 여기에서 실행 R.length([]); R.길이([ 1 , 2 , 3 ]);

lens Object (s → a) → ((a, s) → s) → Lens s a Lens s a = Functor f => (a → f a) → s → f s 매개변수 getter

setter 반환 렌즈 v0.8.0에 추가됨 주어진 getter 및 setter 함수에 대한 렌즈를 반환합니다

getter는 포커스 값을 “가져옵니다”

setter는 포커스 값을 “설정”합니다

setter는 데이터 구조를 변경해서는 안 됩니다

set, over, lensIndex, lensProp

REPL에서 열기 보기를 참조하십시오

여기에서 실행 const xLens = R.lens(R.prop( ‘x’ ), R.assoc( ‘x’ )); R.view(xLens, { x : 1 , y : 2 }); R.set(x렌즈, 4, { x : 1 , y : 2 }); R.over(xLens, R.negate, { x : 1 , y : 2 });

lensIndex 개체 번호 → 렌즈 s a 렌즈 s a = 펑터 f => (a → f a) → s → f s 매개변수 n v0.14.0에 추가된 렌즈를 반환합니다

초점이 지정된 인덱스인 렌즈를 반환합니다

설정, 이상, n번째

REPL에서 열기 보기를 참조하십시오

여기에서 실행 const headLens = R.lensIndex( 0 ); R.view(headLens, [ ‘a’ , ‘b’ , ‘c’ ]); R.set(headLens, ‘x’, [ ‘a’ , ‘b’ , ‘c’ ]); R.over(headLens, R.toUpper, [ ‘a’ , ‘b’ , ‘c’ ]);

lensPath 개체 [Idx] → Lens s a Idx = String | 인트 | Symbol Lens s a = Functor f => (a → f a) → s → f s 매개변수 path 사용할 경로입니다

반환 렌즈 v0.19.0에 추가됨 초점이 지정된 경로인 렌즈를 반환합니다

설정, 끝

REPL에서 열기 보기를 참조하십시오

여기에서 실행 const xHeadYLens = R.lensPath([ ‘x’ , 0 , ‘y’ ]); R.view(xHeadYLens, { x : [{ y : 2 , z : 3 }, { y : 4 , z : 5 }]}); R.set(xHeadYLens, 1, { x : [{ y : 2 , z : 3 }, { y : 4 , z : 5 }]}); R.over(xHeadYLens, R.negate, { x : [{ y : 2 , z : 3 }, { y : 4 , z : 5 }]});

lensProp 개체 문자열 → Lens s a Lens s a = Functor f => (a → f a) → s → fs 매개 변수 k 반환 Lens v0.14.0에 추가됨 초점이 지정된 속성인 렌즈를 반환합니다

설정, 끝

REPL에서 열기 보기를 참조하십시오

여기에서 실행 const xLens = R.lensProp( ‘x’ ); R.view(xLens, { x : 1 , y : 2 }); R.set(x렌즈, 4, { x : 1 , y : 2 }); R.over(xLens, R.negate, { x : 1 , y : 2 });

리프트 함수 (*… → *) → ([*]… → [*]) 매개변수 fn 더 높은 컨텍스트로 들어올리는 함수 반환 함수 리프트된 함수

v0.7.0에 추가된 arity >= 1의 함수를 “리프트”하여 FantasyLand Apply 사양을 충족하는 목록, 함수 또는 기타 개체에 “매핑”할 수 있습니다

또한 참조 REPL에서 liftN 열기 여기에서 실행 const madd3 = R.lift( ( a, b, c ) => a + b + c); madd3([ 100 , 200 ], [ 30 , 40 ], [ 5 , 6 , 7 ]); const madd5 = R.lift( ( a, b, c, d, e ) => a + b + c + d + e); madd5([ 10 , 20 ], [ 1 ], [ 2 , 3 ], [ 4 ], [ 100 , 200 ]);

liftN 함수 번호 → (*… → *) → ([*]… → [*]) 매개변수 fn 상위 컨텍스트로 리프트하는 함수 반환값 function 리프트된 함수

v0.7.0에 추가된 함수를 지정된 arity로 “리프트”하여 FantasyLand Apply 사양을 충족하는 많은 목록, 함수 또는 기타 객체를 “매핑”할 수 있습니다

REPL에서 열기를 참조하십시오

여기에서 실행 const madd3 = R.liftN( 3 , (. ..args ) => R.sum(args)); madd3([ 1 , 2 , 3 ], [ 1 , 2 , 3 ], [ 1 ]);

lt Relation Ord a => a → a → Boolean 매개변수 a

b 반환값 부울 v0.1.0에 추가됨 첫 번째 인수가 두 번째 인수보다 작으면 true를 반환합니다

그렇지 않으면 거짓

gt Open in REPL도 참조하십시오

여기에서 실행 R.lt( 2 , 1 ); R.lt(2,2); R.lt(2,3); R.lt( ‘a’ , ‘z’ ); R.lt( ‘z’ , ‘a’ );

lte Relation Ord a => a → a → Boolean 매개변수 a

b 반환 부울 ​​v0.1.0에 추가됨 첫 번째 인수가 두 번째 인수보다 작거나 같으면 true를 반환합니다

그렇지 않으면 거짓

REPL에서 gte 열기도 참조하십시오

여기에서 실행 R.lte( 2 , 1 ); R.lte( 2 , 2 ); R.lte(2,3); R.lte( ‘a’ , ‘z’ ); R.lte( ‘z’ , ‘a’ );

map List Functor f => (a → b) → f a → f b 매개변수 fn 입력 목록의 모든 요소에 대해 호출할 함수.

list 반복할 목록

반환값 배열 새 목록입니다

v0.1.0에 추가됨 함수와 펑터를 취하여 각 펑터의 값에 함수를 적용하고 같은 모양의 펑터를 반환합니다

Ramda는 Array 및 Object에 적합한 맵 구현을 제공하므로 이 함수는 [1, 2, 3] 또는 {x: 1, y: 2, z: 3} 에 적용될 수 있습니다

존재하는 경우 두 번째 인수의 map 메소드로 전달합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

또한 함수를 펑터로 취급하여 함께 구성합니다

addIndex, 뽑기, 프로젝트

Transduce Open in REPL도 참조하십시오

여기에서 실행 const double = x => x * 2 ; R.map(더블, [ 1 , 2 , 3 ]); R.map(더블, { x : 1 , y : 2 , z : 3 });

mapAccum List ((acc, x) → (acc, y)) → acc → [x] → (acc, [y]) 매개변수 fn 입력 목록의 모든 요소에서 호출되는 함수.

acc 누산기 값

.list 반복할 목록입니다

반환값 * 최종 누적 값

v0.10.0에 추가됨 mapAccum 함수는 map과 reduce의 조합처럼 작동합니다

목록의 각 요소에 함수를 적용하고 왼쪽에서 오른쪽으로 누적 매개변수를 전달하고 새 목록과 함께 이 누적기의 최종 값을 반환합니다

iterator 함수는 acc와 value의 두 인수를 수신하고 튜플 [acc, value]를 반환해야 합니다

addIndex, mapAccumRight

REPL에서 열기 스캔도 참조하십시오

여기에서 실행 constdigits = [ ‘1’ , ‘2’ , ‘3’ , ‘4’ ]; const appender = ( a, b ) => [a + b, a + b]; R.mapAccum(appender, 0, 숫자);

mapAccumRight 목록 ((acc, x) → (acc, y)) → acc → [x] → (acc, [y]) 매개변수 fn 입력 목록의 모든 요소에서 호출되는 함수.

acc 누산기 값

.list 반복할 목록입니다

반환값 * 최종 누적 값

v0.10.0에 추가됨 mapAccumRight 함수는 map과 reduce의 조합처럼 작동합니다

목록의 각 요소에 함수를 적용하고 오른쪽에서 왼쪽으로 누적 매개변수를 전달하고 새 목록과 함께 이 누적기의 최종 값을 반환합니다

입력 목록을 오른쪽에서 왼쪽으로 이동한다는 점을 제외하고 mapAccum 과 유사합니다

iterator 함수는 acc와 value의 두 인수를 수신하고 튜플 [acc, value]를 반환해야 합니다

mapAccum

addIndex Open in REPL도 참조하십시오

여기에서 실행 constdigits = [ ‘1’ , ‘2’ , ‘3’ , ‘4’ ]; const appender = ( a, b ) => [b + a, b + a]; R.mapAccumRight(appender, 5, 숫자);

mapObjIndexed 객체((*, String, Object) → *) → 객체 → 객체 매개변수 fn

obj는 v0.9.0에 추가된 객체를 반환합니다

객체별 버전의 map

이 함수는 세 가지 인수(값, 키, obj)에 적용됩니다

값만 중요하면 map을 대신 사용하십시오

REPL에서 열기 지도 참조 여기에서 실행 const xyz = { x : 1 , y : 2 , z : 3 }; const prependKeyAndDouble = ( 숫자, 키, obj ) => 키 + (숫자 * 2 ); R.mapObjIndexed(prependKeyAndDouble, xyz);

문자열 정규 표현식 → 문자열 → [문자열 | 정의되지 않음] 매개변수 rx 정규식.

str 비교할 문자열 반환값 Array 일치 목록 또는 빈 배열입니다

v0.1.0에 추가됨 문자열에 대해 정규식을 테스트합니다

이 함수는 일치하는 항목이 없을 때 빈 배열을 반환합니다

이것은 일치하는 항목이 없을 때 null을 반환하는 String.prototype.match와 다릅니다

REPL에서 열기 테스트도 참조하십시오

여기에서 실행 R.match( /([a-z]a)/g , ‘bananas’ ); R.match( /a/ , ‘b’ ); R.match( /a/ , null );

mathMod 수학 숫자 → 숫자 → 숫자 매개변수 m 피제수.

p 계수입니다

반환 숫자 `b mod a`의 결과입니다

v0.3.0에 추가된 mathMod는 % 연산자(및 확장하여 R.modulo )와 달리 수학적으로 모듈로 연산자처럼 동작합니다

따라서 -17 % 5 는 -2 이고, mathMod(-17, 5) 는 3 입니다

mathMod에는 정수 인수가 필요하며 계수가 0이거나 음수이면 NaN을 반환합니다

REPL에서 모듈로 열기도 참조하십시오

여기에서 실행 R.mathMod(- 17 , 5 ); R

수학 모드( 17 , 5 ); R.mathMod( 17 , – 5 ); R.mathMod( 17 , 0 ); R

수학 모드(17.2, 5); R

수학 모드(17, 5.3); const 시계 = R.mathMod(R.__, 12 ); 시계(15); 시계(24); const SeventeenMod = R.mathMod(17); 세븐틴모드(3); 세븐틴모드(4); 세븐틴모드(10); 최대 관계 순서 a => a → a → a 매개변수 a

b 반환값 * v0.1.0에 추가됨 두 인수 중 더 큰 값을 반환합니다

분 REPL에서 maxBy Open도 참조하십시오

여기에서 실행 R.max( 789 , 123 ); R.max( ‘a’ , ‘b’ );

maxBy Relation Ord b => (a → b) → a → a → a 매개변수 f

b 반환값 * v0.8.0에 추가됨 함수와 두 개의 값을 취하여 제공된 함수에 전달할 때 더 큰 결과를 생성하는 값을 반환합니다

분바이

REPL에서 최대 열기도 참조하십시오

여기에서 실행 const square = n => n * n; R.maxBy(사각형, – 3 , 2 ); R.reduce(R.maxBy(제곱), 0 , [ 3 , – 5 , 4 , 1 , – 2 ]); R.reduce(R.maxBy(square), 0, []);

mean Math [숫자] → 숫자 매개변수 목록을 반환합니다

v0.14.0에 추가된 숫자를 반환합니다

주어진 숫자 목록의 평균을 반환합니다

REPL에서 열기 중앙값도 참조하십시오

여기에서 실행 R.mean([ 2 , 7 , 9 ]); R.mean([]);

median Math [숫자] → 숫자 매개변수 목록 반환 숫자 v0.14.0에 추가됨 주어진 숫자 목록의 중앙값을 반환합니다

REPL에서 열기를 참조하십시오

여기에서 실행 R.median([ 2 , 9 , 7 ]); R

중앙값([ 7 , 2 , 10 , 9 ]); R.median([]);

memoizeWith 함수 (*… → 문자열) → (*… → a) → (*… → a) 매개변수 fn 캐시 키를 생성하는 함수.

fn 메모화할 함수

함수 `fn`의 메모화된 버전을 반환합니다

v0.24.0에 추가됨 호출될 때 지정된 인수 집합에 대해 fn을 호출한 결과를 캐시하고 결과를 반환하는 새 함수를 만듭니다

동일한 인수 집합으로 메모된 fn에 대한 후속 호출은 fn에 대한 추가 호출로 이어지지 않습니다

대신 해당 인수 집합에 대한 캐시된 결과가 반환됩니다

키 충돌을 피하기 위해 키 생성을 구현할 때 또는 참조를 추적하는 경우 메모리 누수 및 변형 인수에 주의를 기울여야 합니다

REPL에서 열기 여기에서 실행 let count = 0 ; const factorial = R.memoizeWith( Number , n => { count += 1 ; return R.product(R.range( 1 , n + 1 )); }); 계승(5); 계승(5); 계승(5); 세다;

mergeAll List [{k: v}] → {k: v} 매개변수 목록 객체의 배열 반환값 Object 병합된 객체

v0.10.0에 추가됨 개체 목록에서 고유한 속성을 가진 하나의 새 개체를 만듭니다

키가 둘 이상의 개체에 있는 경우 해당 키가 있는 마지막 개체의 값이 사용됩니다

REPL에서 열기 줄이기 R.mergeAll([{ foo : 1 },{ bar : 2 },{ baz : 3 }]); R.mergeAll([{ foo : 1 },{ foo : 2 },{ bar : 2 }]);

mergeDeepLeft 개체 {a} → {a} → {a} 매개변수 lObj

rObj는 v0.24.0에 추가된 객체를 반환합니다

첫 번째 객체의 고유한 속성과 두 번째 객체의 고유한 속성을 병합하여 새 객체를 만듭니다

키가 두 객체에 모두 존재하고 두 값이 객체이면 두 값이 재귀적으로 병합됩니다.

그렇지 않으면 첫 번째 개체의 값이 사용됩니다

mergeDeepRight, mergeDeepWith, mergeDeepWithKey

참조 R.mergeDeepLeft({ name : ‘fred’ , age : 10 , contact : { email : ‘[email protected]’ }}, { age : 40 , contact : { email : ‘ [email protected]’ }});

mergeDeepRight 개체 {a} → {a} → {a} 매개변수 lObj

rObj는 v0.24.0에 추가된 객체를 반환합니다

첫 번째 객체의 고유한 속성과 두 번째 객체의 고유한 속성을 병합하여 새 객체를 만듭니다

키가 두 객체에 모두 존재하고 두 값이 객체이면 두 값이 재귀적으로 병합됩니다

그렇지 않으면 두 번째 개체의 값이 사용됩니다

mergeDeepLeft, mergeDeepWith, mergeDeepWithKey

참조 R.mergeDeepRight({ name : ‘fred’ , age : 10 , contact : { email : ‘[email protected]’ }}, { age : 40 , contact : { email : ‘ [email protected]’ }});

mergeDeepWith Object ((a, a) → a) → {a} → {a} → {a} 매개변수 fn

사물 rObj는 v0.24.0에 추가된 개체를 반환합니다

제공된 두 개체의 고유한 속성을 사용하여 새 개체를 만듭니다

키가 두 개체에 모두 존재하고 연결된 값도 개체이면 값이 재귀적으로 병합됩니다

그렇지 않으면 제공된 함수가 결과 값을 연결된 새 값으로 사용하여 연결된 값에 적용됩니다

열쇠

키가 하나의 개체에만 있는 경우 값은 결과 개체의 키와 연결됩니다

mergeDeepWithKey

참조 mergeWith Open in REPL 여기에서 실행 R.mergeDeepWith(R.concat, { a : true , c : { values ​​​​: [ 10 , 20 ] }}, { b : true , c : { values ​​​​: [ 15, 35] }});

mergeDeepWithKey 개체((문자열, a, a) → a) → {a} → {a} → {a} 매개변수 fn

사물 rObj는 v0.24.0에 추가된 개체를 반환합니다

제공된 두 개체의 고유한 속성을 사용하여 새 개체를 만듭니다

키가 두 개체에 모두 존재하고 연결된 값도 개체이면 값이 재귀적으로 병합됩니다

그렇지 않으면 제공된 함수가 결과 값을 새 값으로 사용하여 키 및 연결된 값에 적용됩니다

키와 연결됩니다

키가 하나의 개체에만 있는 경우 값은 결과 개체의 키와 연결됩니다

mergeDeepWith

REPL에서 mergeWithKey Open도 참조하십시오

여기에서 실행 let concatValues ​​​​= ( k, l, r ) => k == ‘values’ ? R.concat(l, r) : r R.mergeDeepWithKey(concatValues, { a : true , c : { thing : ‘foo’ , values ​​​​: [ 10 , 20 ] }}, { b : true , c : { 물건 : ‘막대’, 값 : [ 15 , 35 ] }});

mergeLeft 개체 {k: v} → {k: v} → {k: v} 매개변수 l

v0.26.0에 추가된 객체를 반환합니다

첫 번째 객체의 고유한 속성과 두 번째 객체의 고유한 속성을 병합하여 새 객체를 만듭니다

키가 두 개체에 모두 있는 경우 첫 번째 개체의 값이 사용됩니다

mergeDeepLeft, mergeWith, mergeWithKey

참조 mergeRight REPL에서 열기 여기에서 실행 R.mergeLeft({ ‘age’ : 40 }, { ‘name’ : ‘fred’ , ‘age’ : 10 }); const resetToDefault = R.mergeLeft({ x : 0 }); resetToDefault({ x : 5 , y : 2 });

mergeRight 개체 {k: v} → {k: v} → {k: v} 매개변수 l

v0.26.0에 추가된 객체를 반환합니다

첫 번째 객체의 고유한 속성과 두 번째 객체의 고유한 속성을 병합하여 새 객체를 만듭니다

키가 두 개체에 모두 있는 경우 두 번째 개체의 값이 사용됩니다

mergeDeepRight, mergeWith, mergeWithKey

참조 mergeLeft Open in REPL 여기에서 실행 R.mergeRight({ ‘name’ : ‘fred’ , ‘age’ : 10 }, { ‘age’ : 40 }); const withDefaults = R.mergeRight({ x : 0 , y : 0 }); withDefaults({ y : 2 });

mergeWith Object ((a, a) → a) → {a} → {a} → {a} 매개변수 fn

r 반환 개체 v0.19.0에 추가된 제공된 두 개체의 고유한 속성을 사용하여 새 개체를 만듭니다

두 객체 모두에 키가 존재하는 경우, 제공된 함수는 각 객체의 키와 연결된 값에 적용되며, 그 결과는 반환된 객체의 키와 연결된 값으로 사용됩니다

병합, mergeWithKey

참조 mergeDeepWith Open in REPL 여기에서 실행 R.mergeWith(R.concat, { a : true , values ​​​​: [ 10 , 20 ] }, { b : true , values ​​​​: [ 15 , 35 ] });

mergeWithKey 객체 ((String, a, a) → a) → {a} → {a} → {a} 매개변수 fn

r 반환 개체 v0.19.0에 추가된 제공된 두 개체의 고유한 속성을 사용하여 새 개체를 만듭니다

두 객체 모두에 키가 존재하는 경우 제공된 기능은 각 객체의 키와 연결된 값과 키에 적용되며, 그 결과는 반환된 객체의 키와 연결된 값으로 사용됩니다

병합하다, 병합하다

참조 mergeDeepWithKey Open in REPL 여기에서 실행 let concatValues ​​​​= ( k, l, r ) => k == ‘values’ ? R.concat(l, r) : r R.mergeWithKey(concatValues, { a : true , thing : ‘foo’ , values ​​​​: [ 10 , 20 ] }, { b : true , thing : ‘bar’ , values ​​: [ 15 , 35 ] }); 최소 관계 순서 a => a → a → a 매개변수 a

b 반환값 * v0.1.0에 추가됨 두 인수 중 더 작은 값을 반환합니다

최대 REPL에서 minBy Open도 참조하십시오

여기에서 실행 R.min( 789 , 123 ); R.min( ‘a’ , ‘b’ );

minBy Relation Ord b => (a → b) → a → a → a 매개변수 f

b 반환값 * v0.8.0에 추가됨 함수와 두 개의 값을 취하여 제공된 함수에 전달할 때 더 작은 결과를 생성하는 값을 반환합니다

맥스바이

REPL에서 열기를 참조하십시오

여기에서 실행 const square = n => n * n; R.minBy(제곱, – 3, 2); R.reduce(R.minBy(square), 무한대, [ 3 , – 5 , 4 , 1 , – 2 ]); R.reduce(R.minBy(square), 무한대, []);

modify Object Idx → (v → v) → {k: v} → {k: v} 매개변수 prop 수정할 속성.

fn 속성에 적용할 함수.

object 변형할 개체

반환값 Object 변환된 개체입니다

v0.28.0에 추가됨 fn 함수를 주어진 prop 속성에 적용하여 전달된 개체의 복사본을 만듭니다

See also  The Best 안드로이드 에서 ios 앱 사용 Update

함수는 호출되지 않으며 해당 속성이 개체에 없으면 개체가 변경되지 않습니다

기본이 아닌 모든 속성은 참조로 새 개체에 복사됩니다

REPL에서 열기 여기에서 실행 const person = { name : ‘James’ , age : 20 , dogs : [ ‘dog’ , ‘cat’ ]}; R.modify( ‘나이’ , R.add( 1 ), 사람); R.modify( ‘애완동물’ , R.append( ‘거북이’ ), 사람);

modifyPath Object [Idx] → (v → v) → {k: v} → {k: v} 매개변수 path 수정할 경로.

fn 경로에 적용할 함수.

object 변환할 객체

반환값 Object 변환된 개체입니다

v0.28.0에 추가됨 fn 함수를 주어진 경로의 값에 적용하여 전달된 개체의 얕은 복제를 만듭니다

함수는 호출되지 않으며 해당 경로가 객체에 존재하지 않는 경우 객체가 변경되지 않습니다

기본이 아닌 모든 속성은 참조로 새 개체에 복사됩니다

REPL에서 열기 여기에서 실행 const person = { name : ‘James’ , address : { zipCode : ‘90216’ }}; R.modifyPath([ ‘주소’ , ‘zipCode’ ], R.reverse, 사람); const 사람 = { 이름: ‘제임스’, 주소: [{ zipCode: ‘90216’ }]}; R.modifyPath([ ‘주소’ , 0 , ‘zipCode’ ], R.reverse, 사람);

모듈로 수학 숫자 → 숫자 → 숫자 매개변수 a 나누기에 대한 값

b 의사 모듈러스 반환값 숫자 `b % a`의 결과

v0.1.1에 추가됨 첫 번째 매개변수를 두 번째 매개변수로 나누고 나머지를 반환합니다

이 함수는 모듈로에 대한 JavaScript 스타일 동작을 유지합니다

수학적 모듈로의 경우 mathMod 를 참조하십시오

REPL에서 MathMod 열기도 참조하십시오

여기에서 실행 R.modulo( 17 , 3 ); R

모듈로(-17, 3); R

모듈로( 17 , – 3 ); const isOdd = R.modulo(R.__, 2 ); isOdd(42); isOdd(21); move List Number → Number → [a] → [a] 매개변수 from The source index

대상 인덱스로

목록 이동을 실현하는 역할을 하는 목록을 반환합니다

새로운 목록이 재정렬되었습니다

v0.27.1에 추가됨 요소 목록에서 인덱스에 있는 항목을 에서 인덱스로 이동합니다

새 요소 순서를 포함하는 새 목록이 생성됩니다

REPL에서 열기 R.move( 0 , 2 , [ ‘a’ , ‘b’ , ‘c’ , ‘d’ , ‘e’ , ‘f’ ]); R.move(- 1 , 0 , [ ‘a’ , ‘b’ , ‘c’ , ‘d’ , ‘e’ , ‘f’ ]);

곱하기 수학 숫자 → 숫자 → 숫자 매개변수 a 첫 번째 값.

b 두 번째 값

반환 숫자 `a * b`의 결과입니다

v0.1.0에 추가됨 두 개의 숫자를 곱합니다

* b와 동일하지만 카레

REPL에서 열기 나누기 참조 여기에서 실행 const double = R.multiply( 2 ); const 트리플 = R

곱하기( 3 ); 더블(3); 트리플(4); R

곱하기( 2 , 5 );

nAry 함수 번호 → (* → a) → (* → a) 매개변수 n 새 함수의 원하는 arity.

fn 줄 바꿈할 함수

반환 함수 `fn`을 래핑하는 새 함수

새 함수는 ‘n’이 보장됩니다

v0.1.0에 추가됨 정확히 n개의 매개변수를 허용하는 함수에서 모든 arity(nullary 포함)의 함수를 래핑합니다

관련 없는 매개변수는 제공된 함수에 전달되지 않습니다

단항

REPL에서 바이너리 열기 참조 여기에서 실행 const takeTwoArgs = ( a, b ) => [a, b]; takeTwoArgs.length; takeTwoArgs( 1 , 2 ); const takeOneArg = R.nAry( 1 ,takeTwoArgs); takeOneArg.length; takeOneArg( 1 , 2 );

부정 수학 숫자 → 숫자 매개변수 n v0.9.0에 추가된 숫자를 반환합니다

인수를 부정합니다

REPL에서 열기 여기에서 실행 R.negate( 42 );

없음 목록(a → 부울) → [a] → 부울 매개변수 fn 술어 함수.

list 고려할 배열입니다

술어가 모든 요소에 의해 충족되지 않으면 부울 `true`를 반환하고 그렇지 않으면 `false`를 반환합니다

v0.12.0에 추가됨 목록의 요소가 술어와 일치하지 않으면 true를 반환하고 그렇지 않으면 false를 반환합니다

존재하는 경우 두 번째 인수의 all 메서드에 전달합니다

변압기가 목록 위치에 있는 경우 변환기 역할을 합니다

어느

REPL에서 열기 모두 참조 여기에서 실행 const isEven = n => n % 2 === 0 ; 상수 isOdd = n => n % 2 !== 0 ; R.none(isEven, [ 1 , 3 , 5 , 7 , 9 , 11 ]); R.none(isOdd, [ 1 , 3 , 5 , 7 , 8 , 11 ]); not Logic * → Boolean 매개변수 a any 값 전달된 인수의 논리 역 논리값을 반환합니다

v0.1.0에 추가됨 ! 그 주장의

false-y 값이 전달되면 true를 반환하고 truth-y 값을 전달하면 false를 반환합니다

REPL에서 열기 보완도 참조하십시오

여기에서 실행 R.not( true ); R.not(거짓); R.not( 0 ); R.not( 1 );

n번째 목록 번호 → [a] → a | 정의되지 않은 숫자 → 문자열 → 문자열 매개변수 오프셋

목록 반환값 * v0.1.0에 추가됨 주어진 목록 또는 문자열의 n번째 요소를 반환합니다

n이 음수이면 인덱스 길이 + n의 요소가 반환됩니다

REPL에서 열기 여기에서 실행 const list = [ ‘foo’ , ‘bar’ , ‘baz’ , ‘quux’ ]; R.nth( 1 , 목록); R.nth(-1, 목록); R.nth(-99, 목록); R.nth( 2 , ‘abc’ ); R.nth( 3 , ‘abc’ );

nthArg 함수 번호 → *… → * 매개변수 n 반환 함수 v0.9.0에 추가됨 n번째 인수를 반환하는 함수를 반환합니다

REPL에서 열기 R.nthArg( 1 )( ‘a’ , ‘b’ , ‘c’ ); R.nthArg(- 1 )( ‘a’ , ‘b’ , ‘c’ );

o 기능 (b → c) → (a → b) → a → c 매개변수 f

g 반환 함수 v0.24.0에 추가됨 o는 단항 함수를 반환하는 커리 합성 함수입니다

compose 와 같이 o 는 오른쪽에서 왼쪽으로 함수 합성을 수행합니다

compose 와 달리 o 에 전달된 가장 오른쪽 함수는 단 하나의 인수로 호출됩니다

또한 compose 와 달리 o는 2개의 단항 함수만 허용하도록 제한됩니다

o라는 이름은 수학적 합성 연산자 ∘와 유사하기 때문에 선택되었습니다

파이프

작성도 참조 REPL에서 열기 여기에서 실행 const classyGreeting = name => “이름의 ” + name.last + “, ” + name.first + ” ” + name.last constellGreeting = R.o(R.toUpper, classyGreeting); YellGreeting({ 첫 번째 : ‘제임스’ , 마지막 : ‘본드’ }); R.o(R.multiply( 10 ), R.add( 10 ))(- 4 )

objOf 개체 문자열 → a → {String:a} 매개변수 키

val은 v0.18.0에 추가된 객체를 반환합니다

단일 키:값 쌍을 포함하는 객체를 생성합니다

REPL에서 열기 참조 여기에서 실행 const matchPhrases = R.compose( R.objOf( ‘must’ ), R.map(R.objOf( ‘match_phrase’ )) ); matchPhrases([ ‘foo’ , ‘bar’ , ‘baz’ ]);

of Function a → [a] 매개변수 x 모든 값 반환값 배열 `x`를 래핑하는 배열

v0.3.0에 추가 제공된 값을 포함하는 단일 배열을 반환합니다

이것은 의 ES6과 다릅니다

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of REPL에서 열기를 참조하십시오

여기에서 실행 R.of( null ); R.of([42]);

omit Object [String] → {String: *} → {String: *} 매개변수는 새 객체에서 생략할 문자열 속성 이름의 배열을 명명합니다

obj 에서 복사할 개체 반환 개체 `names’의 속성이 없는 새 개체입니다

v0.1.0에 추가됨 지정된 키를 생략한 개체의 부분 복사본을 반환합니다

REPL에서 열기 선택 R.omit([ ‘a’ , ‘d’ ], { a : 1 , b : 2 , c : 3 , d : 4 }); on Function ((a, a) → b) → (c → a) → c → c → b 매개변수 f a 이진 함수

g 단항 함수

어떤 값

b 임의의 값 임의의 반환 ‘f’의 결과 v0.28.0에 추가 이진 함수 f, 단항 함수 g 및 두 개의 값을 취합니다

각 값에 g 를 적용한 다음 각각의 결과를 f 에 적용합니다

P 결합자라고도 합니다

REPL에서 열기 여기에서 실행 const eqBy = R.on( ( a, b ) => a === b); eqBy(R.prop( ‘a’ ), { b : 0 , a : 1 }, { a : 1 }) const containsInsensitive = R.on(R.contains, R.toLower); containsInsensitive( ‘o’ , ‘FOO’ );

한 번 함수 (a… → b) → (a… → b) 매개변수 fn 한 번만 호출하는 래퍼로 래핑할 함수

반환 함수 래핑된 함수입니다

v0.1.0에 추가됨 fn 함수를 허용하고 반환된 함수가 호출된 횟수에 관계없이 fn이 한 번만 호출될 수 있도록 fn의 호출을 보호하는 함수를 반환합니다

계산된 첫 번째 값은 후속 호출에서 반환됩니다

REPL에서 열기 여기에서 실행 const addOneOnce = R.once( x => x + 1 ); addOneOnce( 10 ); addOneOnce(addOneOnce(50));

또는 논리 a → b → a | b 매개변수 a

b v0.1.0에 추가된 모든 항목을 반환합니다

true이면 첫 번째 인수를 반환하고 그렇지 않으면 두 번째 인수를 반환합니다

두 입력이 모두 Boolean 인 경우 부울 또는 명령문으로 작동합니다

그리고

REPL에서 열기 Run it here R.or( true , true ); R.or( 참 , 거짓 ); R.or( 거짓 , 참 ); R.or(거짓,거짓);

그렇지 않으면 Function (e → b) → (Promise e a) → (Promise e b) (e → (Promise f b)) → (Promise e a) → (Promise f b) Parameters onFailure 적용할 함수

값 또는 값의 promise를 반환할 수 있습니다.

p 반환 ​​Promise `p.then(null, onFailure)` 호출 결과 v0.26.0에 추가 실패한 promise 내부의 값에 onFailure 함수를 적용한 결과를 반환합니다

이것은 함수 합성 내에서 거부된 약속을 처리하는 데 유용합니다

andThen Open in REPL도 참조하십시오

여기서 실행 const failedFetch = id => Promise. reject( ‘bad ID’ ); const useDefault = () => ({ firstName : ‘Bob’ , lastName : ‘Loblaw’ }); const recoverFromFailure = R.pipe(FailedFetch, R.otherwise(useDefault), R.andThen(R.pick([ ‘firstName’ , ‘lastName’ ])), ); recoverFromFailure( 12345 ).then( 콘솔. log);

대물 렌즈 s a → (a → a) → s → s 렌즈 s a = Functor f => (a → f a) → s → fs 매개 변수 렌즈

v

x 반환값 * v0.16.0에 추가됨 주어진 렌즈에 의해 초점이 맞춰진 주어진 데이터 구조의 부분을 초점이 맞춰진 값에 주어진 함수를 적용한 결과로 “설정”한 결과를 리턴합니다

세트, 렌즈, lensIndex, lensProp, lensPath

REPL에서 열기 보기를 참조하십시오

여기에서 실행 const headLens = R.lensIndex( 0 ); R.over(headLens, R.toUpper, [ ‘foo’ , ‘bar’ , ‘baz’ ]);

pair List a → b → (a,b) 매개변수 fst

snd는 v0.18.0에 추가된 배열을 반환합니다

두 개의 인수 fst 및 snd를 취하여 [fst, snd]를 반환합니다

참조 objOf REPL에서 열기 여기에서 실행 R.pair( ‘foo’ , ‘bar’ );

부분 함수 ((a, b, c, …, n) → x) → [a, b, c, … ] → ((d, e, f, …, n) → x) 매개변수 f

args 반환 함수 v0.10.0에 추가됨 함수 f와 인수 목록을 가져와서 함수 g를 반환합니다

적용되면 g 는 처음에 제공된 인수에 f 를 적용한 결과를 반환한 다음 g 에 제공된 인수를 반환합니다

카레

REPL에서 partialRight 열기도 참조하십시오

여기에서 실행 const 곱하기2 = ( a, b ) => a * b; const 이중 = R.partial(곱하기2, [2]); 더블(3); const Greeting = ( salutation, title, firstName, lastName ) => salutation + ‘, ‘ + title + ‘ ‘ + firstName + ‘ ‘ + lastName + ‘!’ ; const sayHello = R.partial(인사말, [ ‘안녕하세요’ ]); const sayHelloToMs = R.partial(sayHello, [ ‘Ms.’ ]); sayHelloToMs( ‘Jane’ , ‘Jones’ );

partialObject 함수 (({ a, b, c, …, n }) → x) → { a, b, c, … } → ({ d, e, f, …, n } → x) 매개변수 f

props 반환 함수 v0.28.0에 추가됨 함수 f와 객체를 취하고 함수 g를 반환합니다

적용 시 g 에 인수로 제공된 객체와 초기에 깊이(오른쪽) 병합되어 제공된 객체에 f를 적용한 결과를 반환합니다

partialRight, 카레, mergeDeepRight

REPL에서 부분 열기도 참조하십시오

여기에서 실행 const multiple2 = ( { a, b } ) => a * b; const 이중 = R.partialObject(곱하기2, { a : 2 }); 더블({ b : 2 }); const 인사말 = ( { 인사말, 제목, 이름, 성 } ) => 인사말 + ‘, ‘ + 제목 + ‘ ‘ + 이름 + ‘ ‘ + 성 + ‘!’ ; const sayHello = R.partialObject(인사말, { 인사말 : ‘안녕하세요’ }); const sayHelloToMs = R.partialObject(sayHello, { 제목: ‘Ms.’ }); sayHelloToMs({ firstName : ‘Jane’ , lastName : ‘Jones’ });

partialRight 함수 ((a, b, c, …, n) → x) → [d, e, f, … , n] → ((a, b, c, …) → x) 매개변수 f

args 반환 함수 v0.10.0에 추가됨 함수 f와 인수 목록을 가져와서 함수 g를 반환합니다

적용되면 g는 처음에 제공된 인수가 뒤에 오는 g에 제공된 인수에 f를 적용한 결과를 반환합니다

REPL에서 부분 열기도 참조하십시오

여기에서 실행 const Greeting = ( salutation, title, firstName, lastName ) => salutation + ‘, ‘ + title + ‘ ‘ + firstName + ‘ ‘ + lastName + ‘!’ ; const GreetingMsJaneJones = R.partialRight(인사말, [ ‘미스.’ , ‘제인’ , ‘존스’ ]); GreetingMsJaneJones( ‘안녕하세요’ );

partition List Filterable f => (a → Boolean) → f a → [f a, f a] 매개변수 pred 요소가 어느 쪽에 속하는지 결정하는 술어.

filterable 목록(또는 기타 필터링 가능)이 파티션에 속합니다

반환값 배열 첫 번째는 조건자를 충족하는 요소의 하위 집합을 포함하고 두 번째는 충족하지 않는 요소의 하위 집합을 포함하는 배열입니다

v0.1.4에 추가됨 술어와 목록 또는 기타 필터링 가능한 개체를 취하고 각각 술어를 충족하거나 충족하지 않는 동일한 유형의 요소의 필터링 가능한 개체 쌍을 반환합니다

필터링 가능한 개체에는 일반 개체 또는 Array 와 같은 필터 메서드가 있는 모든 개체가 포함됩니다

거부하다

REPL에서 열기 필터도 참조하십시오

여기에서 실행 R.partition(R.includes( ‘s’ ), ​​​​[ ‘sss’ , ‘ttt’ , ‘foo’ , ‘bars’ ]); R.partition(R.includes( ‘s’ ), ​​​​{ a : ‘sss’ , b : ‘ttt’ , foo : ‘bars’ });

경로 개체 [Idx] → {a} → a | 정의되지 않은 Idx = 문자열 | 인트 | 기호 매개변수 path 사용할 경로.

obj 중첩 속성을 검색할 개체입니다

반환값 * `경로`의 데이터

v0.2.0에 추가됨 주어진 경로에서 값을 검색합니다

n번째

REPL에서 prop 열기를 참조하십시오

여기에서 실행 R.path([ ‘a’ , ‘b’ ], { a : { b : 2 }}); R.path([ ‘a’ , ‘b’ ], { c : { b : 2 }}); R.path([ ‘a’ , ‘b’ , 0 ], { a : { b : [ 1 , 2 , 3 ]}}); R.경로([ ‘a’ , ‘b’ , – 2 ], { a : { b : [ 1 , 2 , 3 ]}});

pathEq 관계 [Idx] → a → {a} → 부울 Idx = 문자열 | 인트 | 기호 매개변수 path 사용할 중첩 속성의 경로입니다

val 중첩 속성을 비교할 값

obj 중첩 속성을 검사할 개체 값이 중첩 개체 속성과 같으면 ‘true’, 그렇지 않으면 ‘false’ Boolean을 반환합니다

v0.7.0에 추가됨 개체의 중첩 경로에 R.equals 용어로 특정 값이 있는지 여부를 결정합니다

목록을 필터링하는 데 가장 많이 사용됩니다

REPL에서 열기 여기에서 실행 const user1 = { address: { zipCode: 90210 } }; const user2 = { 주소 : { 우편번호 : 55555 } }; const user3 = { 이름 : ‘밥’ }; const 사용자 = [ 사용자1, 사용자2, 사용자3 ]; const isFamous = R.pathEq([ ‘주소’ , ‘zipCode’ ], 90210 ); R

필터(isFamous, 사용자);

pathOr 개체 a → [Idx] → {a} → a Idx = 문자열 | 인트 | 기호 매개변수 d 기본값.

p 사용할 경로.

obj 중첩 속성을 검색할 개체입니다

반환값 * 제공된 객체의 ‘경로’에 있는 데이터 또는 기본값

v0.18.0에 추가됨 지정된 null이 아닌 객체가 지정된 경로에 값을 갖는 경우 해당 경로의 값을 반환합니다

그렇지 않으면 제공된 기본값을 반환합니다

REPL에서 열기 R.pathOr( ‘N/A’ , [ ‘a’ , ‘b’ ], { a : { b : 2 }}); R.pathOr( ‘해당 사항 없음’ , [ ‘a’ , ‘b’ ], { c : { b : 2 }});

경로 개체 [Idx] → {a} → [a | 정의되지 않음] Idx = [문자열 | 인트 | Symbol] 매개변수 pathArray 가져올 경로의 배열.

obj 중첩된 속성을 검색할 개체입니다

반환값 배열 “pathsArray”로 지정된 경로의 값으로 구성된 목록입니다

v0.27.1에 추가됨 개체의 지정된 경로에서 값을 검색합니다

REPL에서 열기 경로 참조 R.paths([[ ‘a’ , ‘b’ ], [ ‘p’ , 0 , ‘q’ ]], { a : { b : 2 }, p : [{ 질문: 3 }]}); R.paths([[ ‘a’ , ‘b’ ], [ ‘p’ , ‘r’ ]], { a : { b : 2 }, p : [{ q : 3 }]});

pathSatisfies Logic(a → Boolean) → [Idx] → {a} → Boolean Idx = String | 인트 | 기호 매개변수 pred

propPath

obj 반환 부울 ​​v0.19.0에 추가됨 주어진 경로에서 지정된 객체 속성이 주어진 조건자를 만족하면 true를 반환합니다

그렇지 않으면 거짓

참조 propSatisfies Open in REPL 여기에서 실행 R.pathSatisfies( y => y > 0 , [ ‘x’ , ‘y’ ], { x : { y : 2 }}); R.경로만족(R.is(객체), [], { x : { y : 2 }});

Pick Object [k] → {k: v} → {k: v} 매개변수 이름은 새 객체에 복사할 문자열 속성 이름의 배열입니다

obj 에서 복사할 개체 반환값 개체 `names’의 속성만 포함된 새 개체입니다

v0.1.0에 추가됨 지정된 키만 포함하는 개체의 부분 복사본을 반환합니다

키가 없으면 속성이 무시됩니다

소품

REPL에서 열기 생략 R.pick([ ‘a’ , ‘d’ ], { a : 1 , b : 2 , c : 3 , d : 4 }); R.pick([ ‘a’ , ‘e’ , ‘f’ ], { a : 1 , b : 2 , c : 3 , d : 4 });

pickAll Object [k] → {k: v} → {k: v} 매개변수 이름은 새 객체에 복사할 문자열 속성 이름의 배열입니다

obj 에서 복사할 개체 반환값 개체 `names’의 속성만 포함된 새 개체입니다

v0.1.0에 추가됨 이것은 존재하지 않는 속성에 대한 key: undefined 쌍을 포함한다는 점을 제외하고 pick과 유사합니다

REPL에서 열기를 참조하십시오

여기에서 실행 R

pickAll([ ‘a’ , ‘d’ ], { a : 1 , b : 2 , c : 3 , d : 4 }); R.pickAll([ ‘a’ , ‘e’ , ‘f’ ], { a : 1 , b : 2 , c : 3 , d : 4 });

pickBy Object ((v, k) → Boolean) → {k: v} → {k: v} 매개변수 pred 출력 객체에 키를 포함해야 하는지 여부를 결정하는 술어

obj 복사할 객체 반환값 개체 ‘pred’를 충족하는 속성만 있는 새 개체입니다

v0.8.0에 추가 제공된 조건자를 충족하는 키만 포함하는 개체의 부분 복사본을 반환합니다

필터

REPL에서 열기를 참조하십시오

여기에서 실행 const isUpperCase = ( val, key ) => key.toUpperCase() === key; R.pickBy(isUpperCase, { a : 1 , b : 2 , A : 3 , B : 4 });

파이프 함수 (((a, b,. .., n) → o), (o → p),. .., (x → y), (y → z)) → ((a, b,.

., n) → z ) 매개변수 functions 반환값 function v0.1.0에 추가됨 왼쪽에서 오른쪽으로 함수 합성을 수행합니다

첫 번째 인수는 임의의 승수를 가질 수 있습니다

나머지 인수는 단항이어야 합니다

일부 라이브러리에서는 이 함수를 sequence라고 합니다

참고: 파이프의 결과는 자동으로 커링되지 않습니다

REPL에서 열기 작성도 참조하십시오

여기에서 실행 const f = R.pipe (Math. pow, R.negate, R.inc); f (3, 4) ;

pipeWith 함수 ((* → *), [((a, b,. .., n) → o), (o → p),. .., (x → y), (y → z)]) → ((a, b,. .., n) → z) 매개변수 변환기 변형 함수입니다

functions 파이프할 함수 반환 함수 v0.26.0에 추가됨 변환 함수를 사용하여 왼쪽에서 오른쪽으로 함수 합성을 수행합니다

첫 번째 함수는 임의의 승수를 가질 수 있습니다

나머지 함수는 단항이어야 합니다

참고: pipeWith의 결과는 자동으로 커링되지 않습니다

변환 함수는 첫 번째 인수에 사용되지 않습니다

파이프

REPL에서 composeWith Open도 참조하십시오

여기에서 실행 const pipeWhileNotNil = R.pipeWith (? (F, res) => R.isNil (res) res: f (res)); const f = pipeWhileNotNil ([수학. pow, R.negate, R.inc]) f (3, 4) ;

pluck List Functor f => k → f {k: v} → f v 매개변수 key 각 객체에서 뽑아낼 키 이름.

f 고려할 배열 또는 펑터

반환값 배열 주어진 키에 대한 값 목록입니다

v0.1.0에 추가 제공된 목록의 모든 개체에서 동일한 이름의 속성을 제거하여 새 목록을 반환합니다

pluck은 R.map(R.prop(k), f)과 동일하므로 배열 외에 모든 펑터에서 작동합니다

소품, 소품

REPL에서 열기 프로젝트도 참조하십시오

여기에서 실행 var getAges = R.pluck ( ‘age’); getAges ([{이름: ‘프레드’, 나이: 29}, {이름: ‘윌마’, 나이: 27}]); R.pluck (0, [[1, 2], [3, 4]]); R.pluck( ‘발’, {a: {발: 3}, b: {발: 5}}) ;

prepend List a → [a] → [a] 매개변수 el 출력 목록의 맨 앞에 추가할 항목.

list 출력 목록의 맨 뒤에 추가할 배열

반환값 배열 새 배열입니다

v0.1.0에 추가됨 주어진 요소가 앞에 있고 그 뒤에 목록의 내용이 오는 새 목록을 반환합니다

REPL에서 열기 추가 참조 R.prepend ( ‘fee’, [ ‘fi’, ‘fo’, ‘fum’]) ;

product 수학 [숫자] → 숫자 매개변수 목록 숫자의 배열 반환값 숫자 목록에 있는 모든 숫자의 곱

v0.1.0에 추가됨 목록의 모든 요소를 ​​함께 곱합니다

REPL에서 열기 줄이기 R.product ([2, 4, 6, 8, 100, 1]) ;

project Object [k] → [{k: v}] → [{k: v}] 매개변수 props 프로젝트에 대한 속성 이름입니다

objs 쿼리할 객체 반환값 배열 `props` 속성만 있는 객체 배열

v0.1.0에 SQL select 문에 대한 합리적인 아날로그가 추가되었습니다

소품, 소품

참조 pluck Open에서 REPL 실행 const abby = {name: ‘Abby’, age: 7, hair: ‘blond’, grade: 2}; const fred = {이름: ‘프레드’, 나이: 12, 머리카락: ‘갈색’, 등급: 7}; const 아이들 = [애비, 프레드]; R.project ([ ‘이름’, ‘학년’], 아이들) ;

promap 함수 (a → b) → (c → d) → (b → c) → (a → d) Profunctor p => (a → b) → (c → d) → pbc → pad 매개변수 f 전처리기 함수, 에이 -> ㄴ

g 후처리 기능, c -> d

profunctor 프로매핑될 profunctor 인스턴스, 예

b -> c 새로운 profunctor 인스턴스를 반환합니다

예: a -> d v0.28.0에 추가됨 세 번째 기능, 즉 promap (f, g, h) (x) === g (h (f (x)))에 대해 각각 전처리 및 후처리로 두 가지 기능을 취합니다

FantasyLand Profunctor 사양에 따라 세 번째 인수의 promap 메서드(있는 경우)로 전달합니다

트랜스포머가 프로펑터 위치에 있는 경우 트랜스듀서 역할을 합니다

REPL에서 열기를 참조하십시오

), R.join( ”), R.map(decodeChar)) decodeString( “ziuli”)

소품 개체 Idx → {s: a} → a | 정의되지 않은 Idx = 문자열 | 인트 | 기호 매개변수 p 속성 이름 또는 배열 인덱스

obj 쿼리할 객체 반환값 * `obj.p`의 값

v0.1에 추가됨

Three.js 강좌 – #2. 기본 구성 요소와 코드 New

동영상 보기

주제에 대한 추가 정보 three js 사용법

안녕하세요, GIS Developer 김형준입니다.
Three.js에서 3차원 장면을 렌더링하는데 필요한 기본 구성 요소와 기본적인 코드에 대해서 설명합니다.
여기서 작성한 코드는 다른 강좌의 기본 코드로 사용됩니다.
자바스크립트의 class 키워드를 사용하여 객체지향 방식으로 예제 코드를 작성 하였습니다.
그럼 three.js를 학습하시고자 하는 분들에게 도움이 되시기 바랍니다.
감사합니다.

three js 사용법주제 안의 관련 사진

 New Update  Three.js 강좌 - #2. 기본 구성 요소와 코드
Three.js 강좌 – #2. 기본 구성 요소와 코드 Update

Training checkpoints | TensorFlow Core Update New

10/03/2022 · The phrase “Saving a TensorFlow model” typically means one of two things: Checkpoints, OR ; SavedModel. Checkpoints capture the exact value of all parameters (tf.Variable objects) used by a model.Checkpoints do not contain any description of the computation defined by the model and thus are typically only useful when source code that will use the saved …

+ 여기서 자세히 보기

Read more

“TensorFlow 모델 저장”이라는 문구는 일반적으로 다음 두 가지 중 하나를 의미합니다

체크포인트, 또는 저장된 모델.

체크포인트는 모델에서 사용하는 모든 매개변수( tf.Variable 객체)의 정확한 값을 캡처합니다

체크포인트는 모델에 의해 정의된 계산에 대한 설명을 포함하지 않으므로 일반적으로 저장된 매개변수 값을 사용할 소스 코드를 사용할 수 있는 경우에만 유용합니다

반면에 SavedModel 형식에는 정의된 계산에 대한 직렬화된 설명이 포함됩니다

매개변수 값(체크포인트) 외에 모델별로

이 형식의 모델은 모델을 만든 소스 코드와 무관합니다

따라서 TensorFlow Serving, TensorFlow Lite, TensorFlow.js 또는 다른 프로그래밍 언어(C, C++, Java, Go, Rust, C# 등 TensorFlow API)의 프로그램을 통한 배포에 적합합니다

이 가이드에서는 API를 다룹니다

체크포인트 쓰기 및 읽기.

설정

tf로 tensorflow를 가져옵니다

class Net(tf.keras.Model): “””단순한 선형 모델입니다.””” def __init__(self): super(Net, self).__init__() self.l1 = tf.keras.layers.Dense(5 ) def call(self, x): self.l1(x)를 반환합니다

네트 = 네트()

tf.keras 교육 API에서 저장합니다

저장 및 복원에 대한 tf.keras 가이드를 참조하세요

tf.keras.Model.save_weights는 TensorFlow 체크포인트를 저장합니다.

net.save_weights(‘easy_checkpoint’)

체크포인트 작성

TensorFlow 모델의 영구 상태는 tf.Variable 객체에 저장됩니다

이들은 직접 구성할 수 있지만 종종 tf.keras.layers 또는 tf.keras.Model과 같은 고급 API를 통해 생성됩니다

변수를 관리하는 가장 쉬운 방법은 변수를 Python 객체에 연결한 다음 해당 객체를 참조하는 것입니다

tf.train.Checkpoint , tf.keras.layers.Layer 및 tf.keras.Model 은 속성에 할당된 변수를 자동으로 추적합니다

다음 예제는 간단한 선형 모델을 구성한 다음 모델의 모든 변수에 대한 값을 포함하는 체크포인트를 작성합니다.

Model.save_weights로 모델 체크포인트를 쉽게 저장할 수 있습니다.

수동 체크포인트

설정

tf.train.Checkpoint 의 모든 기능을 보여주기 위해 장난감 데이터 세트와 최적화 단계를 정의합니다

def toy_dataset(): 입력 = tf.range(10.)[:, 없음] 레이블 = 입력 * 5

+ tf.range(5.)[없음, :] return tf.data.Dataset.from_tensor_slices( dict(x =입력, y=레이블)).repeat().batch(2)

def train_step(net, example, optimizer): “””‘optimizer`를 사용하여 `example`에서 `net`을 훈련합니다.””” tf.GradientTape()를 테이프로 사용: output = net(example[‘x’]) loss = tf.reduce_mean(tf.abs(output – example[‘y’])) variables = net.trainable_variables gradients = tape.gradient(loss, variables) optimizer.apply_gradients(zip(gradients, variables)) 반환 손실

체크포인트 객체를 생성합니다

tf.train.Checkpoint 객체를 사용하여 수동으로 체크포인트를 생성합니다

여기서 체크포인트하려는 객체는 객체의 속성으로 설정됩니다

tf.train.CheckpointManager는 또한 여러 체크포인트를 관리하는 데 도움이 될 수 있습니다.

opt = tf

keras.optimizers.Adam(0.1) 데이터 세트 = toy_dataset() iterator = iter(dataset) ckpt = tf.train.Checkpoint(step=tf.Variable(1), optimizer=opt, net=net, iterator=iterator) 관리자 = tf.train.CheckpointManager(ckpt, ‘./tf_ckpts’, max_to_keep=3)

모델을 훈련시키고 체크포인트합니다

다음 훈련 루프는 모델과 옵티마이저의 인스턴스를 생성한 다음 tf.train.Checkpoint 객체로 수집합니다

각 데이터 배치에 대한 루프의 교육 단계를 호출하고 주기적으로 체크포인트를 디스크에 씁니다.

def train_and_checkpoint(net, manager): ckpt.restore(manager.latest_checkpoint) if manager.latest_checkpoint: print(“Restored from {} “.format(manager.latest_checkpoint)) else: print(“처음부터 초기화 중입니다.”) for _ in range(50): example = next(iterator) loss = train_step(net, example, opt) ckpt.step.assign_add( 1) if int(ckpt.step) % 10 == 0: save_path = manager.save() print(“{}단계에 대해 저장된 체크포인트: {}”.format(int(ckpt.step), save_path)) print( “손실 {:1.2f}”.format(loss.numpy()))

train_and_checkpoint(네트, 매니저)

처음부터 초기화합니다

10단계에 대해 저장된 체크포인트:. /tf_ckpts/ckpt-1 loss 32.44 20단계에 대해 저장된 체크포인트:. /tf_ckpts/ckpt-2 loss 25.86 30단계에 대해 저장된 체크포인트:. /tf_ckpts/ckpt-3 loss 40단계에 대해 저장된 체크포인트 :. /tf_ckpts/ckpt-4 loss 12.79 50단계에 대해 저장된 체크포인트:. /tf_ckpts/ckpt-5 loss 6.51

복원하고 훈련을 계속하십시오

첫 번째 교육 주기 후에 새 모델과 관리자를 통과할 수 있지만 중단한 부분에서 정확히 교육을 선택할 수 있습니다

opt = tf.keras.optimizers.Adam(0.1) net = Net() dataset = toy_dataset() iterator = iter(dataset) ckpt = tf.train.Checkpoint(step=tf.Variable(1), optimizer=opt, net =net, iterator=iterator) manager = tf.train.CheckpointManager(ckpt, ‘./tf_ckpts’, max_to_keep=3) train_and_checkpoint(net, manager)

./tf_ckpts/ckpt-5에서 복원됨 60단계에 대해 저장된 체크포인트:. /tf_ckpts/ckpt-6 loss 1.58 70단계에 대해 저장된 체크포인트:. /tf_ckpts/ckpt-7 loss 0.88 80단계에 대해 저장된 체크포인트:. /tf_ckpts -8 손실 0.54 90단계에 대해 저장된 체크포인트:. /tf_ckpts/ckpt-9 손실 0.43 100단계에 대해 저장된 체크포인트:. /tf_ckpts/ckpt-10 손실 0.23

tf.train.CheckpointManager 객체는 오래된 체크포인트를 삭제합니다

위에는 가장 최근의 세 개의 체크포인트만 유지하도록 구성되어 있습니다.

print(manager.checkpoints) # 나머지 세 개의 체크포인트를 나열합니다

[‘./tf_ckpts/ckpt-8’, ‘./tf_ckpts/ckpt-9’, ‘./tf_ckpts/ckpt-10’]

이러한 경로, 예를 들어 ‘./tf_ckpts/ckpt-10’ 은 디스크에 있는 파일이 아닙니다

대신 인덱스 파일과 변수 값을 포함하는 하나 이상의 데이터 파일에 대한 접두어입니다

이러한 접두사는 CheckpointManager가 상태를 저장하는 단일 체크포인트 파일( ‘./tf_ckpts/checkpoint’ )로 함께 그룹화됩니다

ls. /tf_ckpts

체크포인트 ckpt-8.data-00000-of-00001 ckpt-9.index ckpt-10.data-00000-of-00001 ckpt-8.index ckpt-10.index ckpt-9.data-00000-of-00001

로딩 역학

TensorFlow는 로드되는 개체에서 시작하여 명명된 가장자리가 있는 방향 그래프를 순회하여 변수를 검사점 값과 일치시킵니다

에지 이름은 일반적으로 개체의 속성 이름에서 가져옵니다(예: self.l1 = tf.keras.layers.Dense(5) 의 “l1”)

tf.train.Checkpoint는 tf.train.Checkpoint(step=…)의 “step”에서와 같이 키워드 인수 이름을 사용합니다

위 예제의 종속성 그래프는 다음과 같습니다

옵티마이저는 빨간색, 일반 변수는 파란색, 옵티마이저 슬롯 변수는 주황색입니다

예를 들어 tf.train.Checkpoint를 나타내는 다른 노드는 검은색입니다.

슬롯 변수는 최적화 프로그램 상태의 일부이지만 특정 변수에 대해 생성됩니다

예를 들어 위의 ”에지’는 Adam 옵티마이저가 각 변수에 대해 추적하는 운동량에 해당합니다

슬롯 변수는 변수와 옵티마이저가 모두 저장되는 경우에만 체크포인트에 저장되므로 점선으로 된 모서리가 있습니다

tf.train.Checkpoint 객체에서 restore를 호출하면 요청된 복원을 대기열에 넣고 변수 값을 복원하는 즉시 Checkpoint 개체에서 일치하는 경로입니다

예를 들어, 네트워크와 계층을 통해 하나의 경로를 재구성하여 위에서 정의한 모델에서 편향만 로드할 수 있습니다

to_restore = tf.Variable(tf.zeros([5])) print(to_restore.numpy( )) # 모두 0입니다

fake_layer = tf.train.Checkpoint(bias=to_restore) fake_net = tf.train.Checkpoint(l1=fake_layer) new_root = tf.train.Checkpoint(net=fake_net) status = new_root.restore(tf.train. latest_checkpoint(‘./tf_ckpts/’)) print(to_restore.numpy()) # 복원된 값을 가져옵니다.

[0

0.] [3.2460225 3.2595956 3.360168 4.5620303 4.827786 ]

이러한 새 개체에 대한 종속성 그래프는 위에서 작성한 더 큰 체크포인트의 훨씬 작은 하위 그래프입니다

여기에는 tf.train.Checkpoint가 체크포인트 번호를 지정하는 데 사용하는 편향 및 저장 카운터만 포함됩니다

복원은 선택적 어설션이 있는 상태 개체를 반환합니다

새 체크포인트에서 생성된 모든 개체가 복원되었으므로 status.assert_existing_objects_matched가 통과합니다.

status.assert_existing_objects_matched()

계층의 커널과 최적화 프로그램의 변수를 포함하여 일치하지 않는 많은 개체가 체크포인트에 있습니다

status.assert_consumed는 체크포인트와 프로그램이 정확히 일치하는 경우에만 통과하고 여기에 예외가 발생합니다

지연된 복원

TensorFlow의 레이어 개체는 입력 모양을 사용할 수 있는 경우 변수 생성을 첫 번째 호출로 연기할 수 있습니다

예를 들어 Dense 계층의 커널 모양은 계층의 입력 및 출력 모양에 따라 달라지므로 생성자 인수로 필요한 출력 모양은 변수를 자체적으로 생성하기에는 정보가 충분하지 않습니다

Layer를 호출하면 변수 값도 읽기 때문에 변수 생성과 처음 사용 사이에 복원이 이루어져야 합니다

이 관용구를 지원하기 위해 tf.train.Checkpoint는 아직 일치하는 변수가 없는 복원을 연기합니다

deferred_restore = tf. Variable(tf.zeros([1, 5])) print(deferred_restore.numpy()) # 복원되지 않음; 여전히 0입니다

fake_layer.kernel = deferred_restore print(deferred_restore.numpy()) # 복원됨

[[0

0.]] [[4.4692097 4.6525683 4.7541327 4.786906 4.8251786]]

체크포인트를 수동으로 검사합니다

tf.train.load_checkpoint는 체크포인트 내용에 대한 낮은 수준의 액세스를 제공하는 CheckpointReader를 반환합니다

여기에는 각 변수의 키에서 검사점의 각 변수에 대한 모양 및 dtype에 대한 매핑이 포함됩니다

변수의 키는 위에 표시된 그래프와 같이 개체 경로입니다

참고: 체크포인트에 더 높은 수준의 구조는 없습니다

변수의 경로와 값만 알고 모델, 레이어 또는 연결 방법에 대한 개념이 없습니다

reader = tf.train.load_checkpoint(‘./tf_ckpts/’) shape_from_key = reader.get_variable_to_shape_map() dtype_from_key = reader.get_variable_to_dtype_map() 정렬됨(shape_from_key.keys())

[‘_CHECKPOINTABLE_OBJECT_GRAPH’, ‘반복자/.ATTRIBUTES/ITERATOR_STATE’, ‘net/l1/bias/.ATTRIBUTES/VARIABLE_VALUE’, ‘net/l1/bias/.OPTIMIZER_SLOT/옵티마이저/m/.ATTRIBUTES/VARIABLE_VALUES’ 바이어스/.OPTIMIZER_SLOT/옵티마이저/v/.ATTRIBUTES/VARIABLE_VALUE’, ‘net/l1/kernel/.ATTRIBUTES/VARIABLE_VALUE’, ‘net/l1/kernel/.OPTIMIZER_SLOT/optimizer/m/.ATTRIBUTES/VARIABLE_VALUE’, ‘net /l1/kernel/.OPTIMIZER_SLOT/optimizer/v/.ATTRIBUTES/VARIABLE_VALUE’, ‘optimizer/beta_1/.ATTRIBUTES/VARIABLE_VALUE’, ‘optimizer/beta_2/.ATTRIBUTES/VARIABLE_VALUE’, ‘최적화/감쇠/

VARIABLE_VALUE’, ‘optimizer/iter/.ATTRIBUTES/VARIABLE_VALUE’, ‘optimizer/learning_rate/.ATTRIBUTES/VARIABLE_VALUE’, ‘save_counter/.ATTRIBUTES/VARIABLE_VALUE’, ‘step/.ATTRIBUTES/VARIABLE_VALUE’에 관심이 있다면 net.l1.kernel의 값은 다음 코드로 얻을 수 있습니다

키 = ‘net/l1/kernel/.ATTRIBUTES/VARIABLE_VALUE’ print(“모양:”, shape_from_key[키]) print(“D 유형:”, dtype_from_key[키].이름)

모양: [1, 5] D유형: float32

또한 변수 값을 검사할 수 있는 get_tensor 메서드를 제공합니다

reader.get_tensor(키)

배열([[4.4692097, 4.6525683, 4.7541327, 4.786906, 4.8251786]], dtype=float32)

개체 추적

체크포인트는 속성 중 하나에 설정된 모든 변수 또는 추적 가능한 개체를 “추적”하여 tf.Variable 개체의 값을 저장하고 복원합니다

저장을 실행할 때 모든 도달 가능한 추적 개체에서 변수가 재귀적으로 수집됩니다

self.l1 = tf.keras.layers.Dense(5) 와 같은 직접 속성 할당과 마찬가지로 속성에 목록과 사전을 할당하면 내용을 추적합니다

.save = tf.train.Checkpoint() save.listed = [tf.Variable(1.)] save.listed.append(tf.Variable(2.)) save.mapped = {‘하나’: save.listed[ 0]} save.mapped[‘two’] = save.listed[1] save_path = save.save(‘./tf_list_example’) 복원 = tf.train.Checkpoint() v2 = tf.Variable(0.) assert 0

== v2.numpy() # 아직 복원되지 않음 restore.mapped = {‘two’: v2} restore.restore(save_path) assert 2

== v2.numpy()

목록 및 사전에 대한 래퍼 개체를 확인할 수 있습니다

이러한 래퍼는 기본 데이터 구조의 체크포인트 가능한 버전입니다

속성 기반 로딩과 마찬가지로 이러한 래퍼는 컨테이너에 추가되는 즉시 변수 값을 복원합니다

restore.listed = [] print(restore.listed) # ListWrapper([]) v1 = tf.Variable(0.) restore.listed.append(v1) # 이전 셀 assert 1의 restore()에서 v1을 복원합니다

== v1.numpy()

목록 래퍼([])

추적 가능한 객체에는 tf.train.Checkpoint , tf.Module 및 해당 하위 클래스(예: keras.layers.Layer 및 keras.Model ), 인식되는 Python 컨테이너가 포함됩니다

dict (및 collections.OrderedDict )

(및 ) 목록

튜플(및 collections.namedtuple, typing.NamedTuple)

다음을 포함한 다른 컨테이너 유형은 지원되지 않습니다

컬렉션.defaultdict

세트

다음을 포함한 다른 모든 Python 객체는 무시됩니다

INT

뜨다

요약

TensorFlow 객체는 사용하는 변수의 값을 저장하고 복원하기 위한 손쉬운 자동 메커니즘을 제공합니다.

2021 년 THREE.JS 시작! New

동영상 보기

주제에서 더 많은 유용한 정보 보기 three js 사용법

https://bit.ly/3vveoV6 – Become a frontend developer (50% off limited time!)
— Want to learn UI/UX? https://designcourse.com​
— Check out Bruno’s Three.js Course: https://bit.ly/3qU6elv (30% off for the first 15 students, using my code! Note, this is not a paid sponsorship.)
— Today, marks day #1 that we’re going to begin learning Three.js together. I’ve always wanted to create immersive webgl experiences, but I never sat for long enough and gave it a go. Recently, that’s changed — and I’m going to share what I’ve learned with you in order to create some awesome examples. Three.js allows you to harness the power of WebGL in order to create 3D experiences in the browser. There’s so much to learn, and today is just our first step. In the future, we’re going to be creating more elaborate examples.
The github repo for the threejs + webpack starter:
https://github.com/designcourse/threejs-webpack-starter
Bump map to convert to a normal map:
https://coursetro.s3.amazonaws.com/height2.jpg
0:00 – Introduction
2:56 – An Awesome Offer
3:29 – Installing the Three.js Starter
5:30 – Folder Structure / Project Overview
7:22 – Three.js Boiler Plate Explained
13:10 – Starting our Project
43:09 – Adding Interactivity
51:00 – Adding Other HTML Elements
56:24 – Final Thoughts
Let’s get started!
– – – – – – – – – – – – – – – – – – – – – –
Subscribe for NEW VIDEOS!
Learn UI/UX: https://designcourse.com
My personal FB account: http://fb.com/logodesigner
Coursetro FB: http://fb.com/coursetro
Coursetro’s Twitter: http://twitter.com/designcoursecom
Join my Discord! https://discord.gg/a27CKAF
^-Chat with me and others
– – – – – – – – – – – – – – – – – – – – – –
Who is Gary Simon? Well, I’m a full stack developer with 2+ decades experience and I teach people how to design and code. I’ve created around 100+ courses for big brands like LinkedIn, Lynda.com, Pluralsight and Envato Network.
Now, I focus all of my time and energy on this channel and my website Designcourse.com.
Come to my discord server or add me on social media and say Hi!

three js 사용법주제 안의 멋진 사진을 볼 수 있습니다

 Update  2021 년 THREE.JS 시작!
2021 년 THREE.JS 시작! Update

[Python] 파이썬 이미지 처리 pillow(PIL) 설치 및 사용 예제 … Update New

Attaches a palette to this image. The image must be a “P”, “PA”, “L” or “LA” image, and the palette sequence must contain 768 integer values, where each group of three values represent the red, green, and blue values for the corresponding p. pillow.readthedocs.io

+ 여기서 자세히 보기

Build a Mindblowing 3D Portfolio Website // Three.js Beginner’s Tutorial Update

아래 동영상 보기

주제에 대한 추가 정보 three js 사용법

Learn the basics of Three.js – a tool for building amazing 3D graphics with JavaScript. In this tutorial, we create an animated 3D scrolling animation for a portfolio website https://github.com/fireship-io/threejs-scroll-animation-demo
#3D #webdev #js
🔗 Resources
Three.js Docs https://threejs.org/
WebGL Overview https://youtu.be/f-9LEoYYvE4
Inspiration https://atelier.net/virtual-economy/
Scrolling Animation with Three.js
📚 Chapters
00:00 Mindblowing 3D Websites
00:42 What we’re building
01:19 What is Three.js
02:12 Project Setup
03:35 Scene
03:52 Camera
04:28 Renderer
05:07 Geometry
05:28 Material
06:02 Mesh
06:16 Animation Loop
07:13 Lighting
08:45 Three.js Helpers
09:17 Orbit Controls
09:56 Random Generation
11:05 Scene Background
11:37 Texture Mapping
12:57 Scroll Animation
14:36 CSS Grid
🤓 Install the quiz app
iOS https://itunes.apple.com/us/app/fireship/id1462592372?mt=8
Android https://play.google.com/store/apps/details?id=io.fireship.quizapp
🔥 Watch more with Fireship PRO
Upgrade to Fireship PRO at https://fireship.io/pro
Use code lORhwXd2 for 25% off your first payment.
🎨 My Editor Settings
– Atom One Dark
– vscode-icons
– Fira Code Font

three js 사용법주제 안의 사진 몇 장

 New  Build a Mindblowing 3D Portfolio Website // Three.js Beginner’s Tutorial
Build a Mindblowing 3D Portfolio Website // Three.js Beginner’s Tutorial New

{{configCtrl2.info.canonicalUrl}} – UpToDate New

UpToDate, electronic clinical resource tool for physicians and patients that provides information on Adult Primary Care and Internal Medicine, Allergy and Immunology, Cardiovascular Medicine, Emergency Medicine, Endocrinology and Diabetes, Family Medicine, Gastroenterology and Hepatology, Hematology, Infectious Diseases, Nephrology and Hypertension, Neurology, …

+ 여기서 자세히 보기

three.js Based Websites | Websites built with three js Update

동영상 보기

주제에 대한 추가 정보 three js 사용법

Three.js is the world’s most popular JavaScript framework for displaying 3D content on the web, providing you with the power to display incredible models, games, music videos, scientific and data visualizations, or pretty much anything else you can imagine, right in your browser and on your smartphone!

three js 사용법주제 안의 사진 몇 장

 Update  three.js Based Websites | Websites built with three js
three.js Based Websites | Websites built with three js Update

Serverless Framework – AWS Lambda Events – API Gateway 최신

// handler.js ‘use strict’; module.exports.hello = function (event, … There are three approaches for handling it: Let Serverless create and assign an IAM role for you (default behavior). Note that since this is a shared setting, this role is not removed when you remove the deployment.

+ 여기서 자세히 보기

Read more

API 게이트웨이 REST API

API Gateway를 사용하면 HTTP API를 배포할 수 있습니다

두 가지 버전으로 제공됩니다

v1, REST API라고도 합니다

v2는 HTTP API라고도 하며 v1보다 빠르고 저렴합니다

혼란스러운 이름에도 불구하고 두 버전 모두 모든 HTTP API(예: REST, GraphQL 등)를 배포할 수 있습니다

AWS 설명서에서 전체 비교를 읽어보십시오.

이 가이드에서는 http 이벤트를 통해 API Gateway v1 REST API를 사용하여 문서화합니다

API Gateway v2 HTTP API를 대신 사용하려면 HTTP API 가이드를 따르십시오.

요약:

API Gateway 사용에 대한 자습서를 찾고 있습니까? 다음 리소스를 확인하십시오

HTTP 엔드포인트를 AWS Lambda 함수에 대한 이벤트 소스로 생성하려면 Serverless Framework의 간편한 AWS API Gateway Events 구문을 사용하십시오.

AWS Lambda 함수와 통합하도록 HTTP 엔드포인트를 구성할 수 있는 5가지 방법이 있습니다

람다 프록시 / aws-proxy / aws_proxy(권장)

// (권장) 람다 / aws

/ http

http-proxy / http_proxy

/ 조롱

프레임워크는 사용자가 다른 방법을 제공하지 않는 한 기본적으로 람다 프록시 방법(즉, 모든 것이 Lambda에 전달됨)을 사용합니다

이들 간의 차이점은 lambda-proxy(표준 AWS 통합 유형 명명과의 호환성을 위한 대체 쓰기 스타일은 aws-proxy 및 aws_proxy임)가 HTTP 요청의 내용을 AWS Lambda 함수(헤더, 본문 등)에 자동으로 전달하고 AWS Lambda 함수의 코드에서 응답(헤더, 상태 코드, 본문)을 구성할 수 있습니다

반면 람다 방법을 사용하면 각 API 게이트웨이 엔드포인트의 구성(코드가 아님)에서 헤더, 상태 코드 등을 명시적으로 정의할 수 있습니다

람다 방법은 매우 지루하기 때문에 사용 사례를 지원하는 경우 람다 프록시 방법을 사용하는 것이 좋습니다

HTTP 백엔드와 통합하려면 http를 사용하고, HTTP 프록시 통합과 통합하려면 http-proxy를 사용하거나 테스트를 위해 모의를 사용하세요

실제로 백엔드를 호출하지 않고.

Lambda 프록시 통합

단순 HTTP 끝점

이 설정은 누군가가 GET 요청을 통해 hello에서 API 게이트웨이에 액세스할 때 hello 함수가 실행되어야 함을 지정합니다

예는 다음과 같습니다

기능: 인덱스: 핸들러: handler.hello 이벤트: – http: GET hello

; 모듈. exports.hello = 함수( 이벤트, 컨텍스트, 콜백) { 콘솔. log(이벤트); const 응답 = { statusCode : 200 , headers : { ‘x-custom-header’ : ‘내 헤더 값’ , }, 본문 : JSON. stringify({ 메시지 : ‘Hello World!’ }), }; 콜백( null , 응답); };

참고: 본문이 JSON 문서인 경우 직접 구문 분석해야 합니다

JSON

구문 분석(event.body);

“LAMBDA-PROXY” 이벤트 예(기본값)

{ “리소스”: “/”, “경로”: “/”, “httpMethod”: “POST”, “헤더”: { “수락”: “text/html,application/xhtml+xml,application/xml;q =0.9,image/webp,image/apng,*/*;q=0.8” , “Accept-Encoding”: “gzip, deflate, br” , “Accept-Language”: “en-GB,en-US;q =0.8,en;q=0.6,zh-CN;q=0.4”, “cache-control”: “max-age=0”, “CloudFront-Forwarded-Proto”: “https”, “CloudFront-Is-Desktop” -Viewer”: “true” , ​​​​”CloudFront-Is-Mobile-Viewer”: “false” , “CloudFront-Is-SmartTV-Viewer”: “false” , “CloudFront-Is-Tablet-Viewer”: “false “, “CloudFront-Viewer-Country”: “GB”, “content-type”: “application/x-www-form-urlencoded”, “호스트”: “j3ap25j034.execute-api.eu-west-2.amazonaws. com ” , “원산지” : “https://j3ap25j034.execute-api.eu-west-2.amazonaws.com” , “참조자” : “https://j3ap25j034.execute-api.eu-west-2. amazonaws. com/dev/” , “upgrade-insecure-requests” : “1” , “User-Agent” : “Mozilla/5.0(Macintosh, Intel Mac OS X 10_12_5) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome /59.0. 3071.115 사파리/537.3 6 “,”vi a “:”2.0 a3650115c5e21e2b5d133ce8464bea3.cloudfront.net (cloudfront) “,”x-amz-cf-id “:”0ndeixnreyhyckv8cc150mwcfclfpbjots1mexduke2wjwk5angv2wjwk5angv2a48c “,”x-forward-for “:”50.129.117.14, 50.112.234.94 “, “X-Forwarded-Port”: “443”, “X-Forwarded-Proto”: “https” }, “queryStringParameters”: null, “pathParameters”: null, “stageVariables”: null, “requestContext”: { “경로”: “/dev/”, “accountId”: “125002137610”, “resourceId”: “qdolsr1yhk”, “stage”: “dev”, “requestId”: “0f2431a2-6d2f-11e7-b799-51782 “identity” : { “cognitoIdentityPoolId” : null , “accountId” : null , “cognitoIdentityId” : null , “caller” : null , “apiKey” : “” , “sourceIp” : “50.129.117.14” , “accessKey” : null, “cognitoAuthenticationType”: null, “cognitoAuthenticationProvider”: null, “userArn”: null, “userAgent”: “Mozilla/5.0(매킨토시; Intel Mac OS X 10_12_5) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/59.0.3071.115 Safari/537.36”, “user”: null }, “resourcePath”: “/”, “httpMethod”: “POST”, “apiId ” : “j3azlsj0c4” }, “body” : “postcode=LS17FR” , “isBase64Encoded” : false }

확장 옵션이 있는 HTTP 끝점

여기에서 경로 posts/create.

functions: create: 핸들러: posts.create 이벤트: – http: 경로: post/create 메소드: post CORS 활성화 HTTP 엔드포인트에 대한 CORS 구성을 설정하려면 다음과 같이 이벤트 구성을 수정하면 됩니다

functions: hello: handler: handler.hello events : – http: 경로: hello 메서드: get cors: true cors를 true로 설정하면 다음과 같은 기본 구성이 가정됩니다

origin: ‘*’ 헤더: – Content-Type – X-Amz-Date – Authorization – X-Api-Key – X-Amz-Security-Token – X-Amz-User-Agent allowCredentials: false

다음 구성 원본에 배열을 제공하거나 쉼표로 구분된 원본 필드를 사용합니다

기능: hello: handler: handler.hello 이벤트: – http: 경로: hello 메서드: get cors: origins: – http://example.com – http://example2.com 헤더: – Content-Type – X-Amz -날짜 – 승인 – X-Api-Key – X-Amz-Security-Token – X-Amz-User-Agent allowCredentials: false

와일드카드를 사용할 수 있습니다

다음 예는 http:를 통해 example.com의 모든 하위 도메인과 일치합니다

cors: 출처: – http://*.example.com – http://example2.com

Access-Control-Allow-Origin에 대해 여러 값을 보낼 수 없으므로 이 구성은 응답 템플릿을 사용하여 요청 출처가 제공된 출처 중 하나와 일치하는지 확인하고 헤더를 다음 코드로 재정의합니다

# set ($ origin = $ input. params ( “Origin” ) # if ($ origin == “http://example.com” || $ origin == “http://*.amazonaws.com” ) # set ($ context

responseOverride

header

Access – Control – Allow – Origin = $ origin ) #end

cors 속성을 구성하면 CORS 실행 전 응답에서 Access-Control-Allow-Origin, Access-Control-Allow-Headers, Access-Control-Allow-Methods, Access-Control-Allow-Credentials 헤더가 설정됩니다

람다 통합을 사용하는 경우 , Access-Control-Allow-Origin 및 Access-Control-Allow-Credentials도 메서드 및 통합 응답에 제공됩니다.

명시적으로 true로 설정하지 않으면 Access-Control-Allow-Credentials-Header가 생략됩니다

.

Access-Control-Max-Age 실행 전 응답 헤더를 활성화하려면 cors 개체에서 maxAge 속성을 설정합니다

기능: hello: handler: handler.hello 이벤트: – http: 경로: hello 메서드: get cors: origin: ‘*’ maxAge: 86400

API 게이트웨이에 CloudFront 또는 다른 CDN을 사용하는 경우 추가 홉을 피하기 위해 OPTIONS 요청을 캐시할 수 있는 Cache-Control 헤더

See also  Top 디스 코드 동영상 올리기 Update

비행 전 응답에서 Cache-Control 헤더를 활성화하려면 cors 개체에서 cacheControl 속성을 설정합니다

함수: hello: handler: handler.hello 이벤트: – http: 경로: hello 메서드: get cors: origin: ‘*’ 헤더: – Content-Type – X-Amz-Date – Authorization – X-Api-Key – X- Amz-Security-Token – X-Amz-User-Agent allowCredentials: false cacheControl: ‘max-age=600, s-maxage=600, proxy-revalidate’

CORS 헤더는 단일 값도 허용합니다

기능: hello: handler: handler.hello 이벤트: – http: 경로: hello 메서드: get cors: 헤더: ‘*’

람다-프록시 통합과 함께 CORS를 사용하려면 다음과 같이 헤더 개체에 Access-Control-Allow-* 헤더를 포함해야 합니다

; 모듈. exports.hello = 기능( 이벤트, 컨텍스트, 콜백) { const 응답 = { statusCode : 200 , headers : { ‘Access-Control-Allow-Origin’ : ‘*’ , ‘Access-Control-Allow-Credentials’ : true , }, 본문 : JSON. stringify({ 메시지 : ‘Hello World!’ }), }; 콜백( null , 응답); };

AWS_IAM 권한 부여자가 있는 HTTP 엔드포인트

Lambda 함수를 호출하기 위해 인증을 받기 위해 호출자가 IAM 사용자의 액세스 키를 제출하도록 요구하려면 다음 예제와 같이 권한 부여자를 AWS_IAM으로 설정하십시오

기능: 생성: 핸들러: posts.create 이벤트: – http: 경로: posts/create 메소드: 포스트 권한 부여자: aws_iam

다음은 다음의 약식 표기법입니다

기능: 생성: 핸들러: posts.create 이벤트: – http: 경로: posts/create 메소드: 포스트 권한 부여자: 유형: aws_iam

사용자 지정 권한 부여자가 있는 HTTP 끝점

사용자 지정 권한 부여자를 사용하면 대상 AWS Lambda 함수보다 먼저 AWS Lambda 함수를 실행할 수 있습니다

이것은 마이크로서비스 아키텍처에 유용하거나 비즈니스 로직을 실행하기 전에 단순히 권한 부여를 수행하려는 경우에 유용합니다

다음과 같이 http 이벤트의 권한 부여자를 동일한 서비스의 다른 기능으로 설정하여 HTTP 끝점에 대한 사용자 지정 권한 부여자를 활성화할 수 있습니다

다음 예:

기능: 생성: 핸들러: posts.create 이벤트: – http: 경로: 포스트/생성 메소드: 포스트 권한 부여자: AuthorizerFunc 권한 부여자Func: 핸들러: 핸들러.권한 부여자Func

또는 더 많은 옵션으로 권한 부여자를 구성하려는 경우 다음 예제와 같이 권한 부여자 속성을 개체로 전환할 수 있습니다

기능: 생성: 핸들러: posts.create 이벤트: – http: 경로: posts/create 메소드: 포스트 권한 부여자: 이름: authorizerFunc resultTtlInSeconds: 0 identitySource: method.request.header.Authorization identityValidationExpression: someRegex 유형: 토큰 권한 부여자Func: 핸들러: 핸들러. authorizerFunc

Authorizer 함수가 서비스에는 없지만 AWS에는 존재하는 경우 다음 예제와 같이 함수 이름 대신 Lambda 함수의 ARN을 제공할 수 있습니다

기능: 생성: 핸들러: posts.create 이벤트: – http: 경로: posts/create 메소드: 포스트 권한 부여자: xxx:xxx:Lambda-Name

또는 더 많은 옵션을 사용하여 권한 부여자를 구성하려는 경우 다음 예제와 같이 권한 부여자 속성을 개체로 전환할 수 있습니다.

기능: 생성: 핸들러: posts.create 이벤트: – http: 경로: posts/create 메소드: 포스트 권한 부여자: arn: xxx:xxx:Lambda-Name managedExternally: false resultTtlInSeconds: 0 identitySource: method.request.header.Authorization identityValidationExpression: 일부정규식

권한 부여자 함수에 대한 권한이 외부에서 관리되는 경우(예: 권한 부여자 함수가 다른 AWS 계정에 있는 경우) 다음 예제와 같이 managedExternally: true 를 설정하여 함수에 대한 권한 생성을 건너뛸 수 있습니다

기능: 생성: 핸들러: posts.create 이벤트: – http: 경로: posts/create 메소드: post 권한 부여자: arn: xxx:xxx:Lambda-Name managedExternally: true

중요 참고 사항: 스택을 배포하기 전에 API Gateway에서 권한 부여자 기능을 호출할 수 있도록 허용하는 권한이 있어야 합니다

그렇지 않으면 배포가 실패합니다.

type 속성을 설정하여 요청 유형 권한 부여자를 사용할 수도 있습니다

이 경우, 귀하의 identitySource는 귀하의 정책 캐시에 대한 여러 항목을 포함할 수 있습니다

기본 유형은 ‘토큰’입니다.

기능: 생성: 핸들러: 게시물.생성 이벤트: – http: 경로: 게시물/생성 메서드: 사후 권한 부여: arn: xxx:xxx:Lambda-Name resultTtlInSeconds: 0 identitySource: method.request. header.Authorization, context.identity.sourceIp identityValidationExpression: someRegex 유형: 요청

선택적 액세스 토큰 허용 범위를 사용하여 다음 예제와 같이 기존 Cognito 사용자 풀을 권한 부여자로 구성할 수도 있습니다

기능: 생성: 핸들러: posts.create 이벤트: – http: 경로: posts/create 메소드: 포스트 권한 부여자: arn: arn:aws:cognito-idp:us-east-1:xxx:userpool/us-east-1_ZZZ 범위 : – 내 앱/읽기

기본 람다-프록시 통합을 사용하는 경우 속성이 event.requestContext.authorizer.claims에 노출됩니다

클레임으로 노출되는 속성을 더 자세히 제어하려면 통합으로 전환할 수 있습니다

람다 및 다음 구성을 추가합니다

클레임은 이벤트에 노출됩니다

east-1:xxx:userpool/us-east-1_ZZZ 클레임: – 이메일 – 닉네임

동일한 템플릿의 리소스 섹션에서 Cognito 사용자 풀을 생성하는 경우 CloudFormation의 Fn::GetAtt 속성을 사용하여 ARN을 참조할 수 있습니다

이렇게 하려면 권한 부여자에게 이름을 지정하고 COGNITO_USER_POOLS 유형을 지정해야 합니다

기능: 생성: 핸들러: posts.create 이벤트: – http: 경로: posts/create 메소드: 통합 후: 람다 권한 부여자: 이름: MyAuthorizer 유형: COGNITO_USER_POOLS arn: Fn::GetAtt: – CognitoUserPool – Arn 리소스: 리소스: CognitoUserPool: 유형: ‘AWS::Cognito::UserPool’ 속성:. ..

operationId가 있는 HTTP 끝점

메소드 엔드포인트의 이름을 제공하려면 operationId를 포함하십시오

이에 따라 AWS::ApiGateway::Method 내부에 OperationName이 설정됩니다

이에 대한 한 가지 일반적인 사용 사례는 일부 코드 생성기(예: swagger)에서 메서드 이름을 사용자 지정하는 것입니다

functions: create: handler: users.create events: – http: path: users/create method: post operationId: createUser

비동기식 통합 사용

이벤트 호출을 사용하여 람다 함수를 통합할 때 async: true를 사용합니다

이를 통해 API Gateway는 람다가 계속 실행되는 동안 200 상태 코드로 즉시 반환할 수 있습니다

달리 지정되지 않은 경우 통합 유형은 AWS.

functions: create: handler: posts.create 이벤트: – http: path: posts/create 메소드: post async: true입니다

Lambda 함수에서 예외 잡기

람다 함수에서 예외가 발생하는 경우 AWS는 요청을 완료하기 전에 프로세스가 종료됨과 함께 오류 메시지를 보냅니다

이것은 500 HTTP 상태에 대한 정규식에 의해 포착되고 500 상태가 반환됩니다.

Rest API에 대한 API 키 설정

당신은 serverless.yml에 provider.apiGateway 객체에 apiKeys 배열 속성을 추가하여 서비스 나머지 API에 의해 사용되는 API 키의 목록을 지정할 수 있습니다

당신은 명시 적으로 개인이며 API 키 중 하나를 비공개로 설정할 HTTP 이벤트 객체에게 개인 부울 속성을 추가하여 요청에 포함 할을 필요로하는 엔드 포인트를 지정해야합니다

API 키 그래서 당신은 다른 단계로 서비스를 배포 할 경우 아래에 정의해야합니다 귀하의 API 키는 단계 변수를 포함 할, 전 세계적으로 생성됩니다

API 키를 사용하면 선택적으로 usagePlan 객체를 사용하여, 사용 계획 할당량 및 스로틀을 정의 할 수 있습니다

값을 설정하면 설정에 의해 또한, 당신은 또한 비활성화를 선택 할 수 있습니다 API 키를 false로 속성을 사용할 수.

당신이 값을 변경하면 교체가 필요하고 CloudFormation은 같은 이름을 가진 두 개의 API 키를 허용하지 않는 것을 알고 있어야합니다

이 값을 변경 할 때 당신은 또한 이름을 변경해야한다는 것을 의미합니다

당신은 키의 이름을 걱정하지 않는 경우에만 값을 설정하고 CloudFormation 키의 이름을 수 있도록하는 것이 좋습니다.

여기에 서비스 나머지 API의 API 키를 설정하기위한 구성의 예입니다 :

서비스 : 내 서비스 제공자 : 이름 : AWS apiGateway : apiKeys : – myFirstKey – $ {옵트 : 단계} -myFirstKey – $ {ENV : MY_API_KEY} – 이름 : myThirdKey 값 : myThirdKeyValue – 값 : myFourthKeyValue 설명 : API 키 설명 고객 ID를 : 할당량 : 제한 : 키 usagePlan에 대한 고객 ID로 설정됩니다 문자열 5000 오프셋 : 2 기간 : MONTH 스로틀 : burstLimit : 200 만 부가 : 100 개 기능 : 안녕하세요 : 이벤트 : – HTTP : 경로 : 사용자 생성 / 방법 : GET 개인 : 사실

사람들은 API 키 이름이 아닌 실제 값을 유의하시기 바랍니다

당신이 당신의 서비스를 배포하면, 그 API 키의 값은 자동 AWS에 의해 생성하고 사용할 수 있도록 화면에 출력 될 것입니다

값은 있습니다.

–conceal 배포 옵션을 사용하여 출력에서 은폐 될 수있다이 나머지의 API에 연결하는 클라이언트는 그들의 요청의 x-API 키 헤더에 이러한 API 키 값 중 하나를 설정해야합니다

이것은 당신의 API에 대한 당신은 또한 설정 여러 사용 계획.

개인 속성이 true로 설정되어있는 기능에만 필요합니다

이 경우 당신은 당신의 API 키에 사용 계획을지도 할 필요가있다

다음은이 모양을 수있는 방법을 예입니다 :

서비스 : 내 서비스 제공자 : 이름 : AWS apiGateway : apiKeys : – 무료 – myFreeKey – $ {옵트 : 단계} -myFreeKey – 지불 : – myPaidKey – $ {옵트 : 단계} -myPaidKey usagePlan : – 무료 : 할당량 : 제한 : 5000 오프셋 : 2 기간 : MONTH 스로틀 : burstLimit : 200 만 부가 : 100 – 지불 : 할당량 : 제한 : 50000 오프셋 : 1 기간 : MONTH 스로틀 : burstLimit : 2000 만 부가 : 1000 개 기능 : 안녕하세요 : 이벤트 : – HTTP : 경로 : 사용자 / 방법을 만들 : 사실 : 개인 얻을

엔드 포인트 유형을 구성

API 게이트웨이는 특정 지역으로 API 게이트웨이 REST API를 연관 지역 엔드 포인트를 지원합니다

귀하의 요청이 REST API를 같은 지역에서 발생하고 기본적으로.

멀티 지역 응용 프로그램을 구축하는 데 도움이 될 수있는 경우는 대기 시간 줄일 수 있으며, 서버를 사용하지 않는 프레임 워크는 EDGE 엔드 포인트 구성을 사용하여 REST API를 배포합니다

당신은 지역 또는 PRIVATE 구성을 사용하려는 경우, 다음 서비스 나머지 API의 엔드 포인트 구성을 설정하는 구성 예입니다.

공급자 블록에서 endpointType 매개 변수를 설정 :

서비스 : 내 서비스 제공자 : 이름 : AWS endpointType : 지역 기능 : 안녕하세요 : 이벤트 : – HTTP : 경로 : 사용자 생성 / 방법 : 얻을

당신이 개인 엔드 포인트 구성을 사용하여 API 게이트웨이 REST API를 경우 API 게이트웨이는 VPC 엔드 포인트의 연결을 지원합니다

이 기능은 다음과 같은 AWS 국도 53 별칭의 생성을 통해 개인 API의 호출을 단순화 :

HTTP의 : //

-api 실행합니다

. amazonaws

COM

다음은 예제 구성입니다 :

서비스 : 내 서비스 제공자 : 이름 : AWS의 endpointType : 개인 vpcEndpointIds : – vpce-123 – vpce-456

요청 매개 변수

API 게이트웨이 테스트 및 SDK 생성에서 사용할 수 있도록 선택적 및 필수 매개변수를 함수에 전달하려면 true로 표시하면 필수 매개변수가 되고 false이면 선택 매개변수가 됩니다

functions: create: handler: posts.create events: – http: 경로: 게시물/생성 방법: 게시 요청: 매개변수: 쿼리 문자열: url: true 헤더: foo: false 경로: bar: false

경로 변수가 작동하려면 API Gateway는 다음과 같이 메서드 경로 자체에도 변수가 필요합니다

기능: 생성: 핸들러: posts.post_detail 이벤트: – http: 경로: posts/{id} 메소드: 요청 받기: 매개변수: 경로: id: true

요청 매개변수에 대해 다른 값을 매핑하려면 요청 매개변수의 required 및 mappingValue 속성을 정의합니다

functions: create: handler: posts.post_detail events: – http: path: posts/{id} method: get request: parameters: 경로: id: true 헤더: 사용자 정의 헤더: 필수: true mappingValue: context.requestId

허용되는 값 목록은 AWS 설명서를 참조하십시오

스키마 유효성 검사기를 요청합니다

API 게이트웨이에서 요청 스키마 유효성 검사를 사용하려면 콘텐츠 유형에 대한 JSON 스키마를 추가하십시오

JSON Schema는 JSON으로 표현되기 때문에 파일에서 포함시키는 것이 더 쉽습니다.

functions: create: handler: posts.create events: – http: path: posts/create method: post request: schemas: application/json: ${ 파일(create_request.json)}

또한 생성된 모델을 이름 및 설명 속성으로 사용자 지정할 수도 있습니다.

functions: create: handler: posts.create events: – http: path: posts/create method: post request: schemas: application/json: schema: ${ file(create_request.json)} 이름: PostCreateModel 설명: ‘게시물 생성을 위한 검증 모델’

다른 이벤트에서 동일한 모델을 재사용하려면 공급자 수준에서 전역 모델을 정의할 수 있습니다

글로벌 모델을 정의하려면 해당 구성을 provider.apiGateway.request.schemas에 추가해야 합니다

전역 모델을 정의한 후 키로 참조하여 이벤트에서 사용할 수 있습니다

application/json 콘텐츠 유형에 대해 제공자 모델이 생성됩니다.

제공자:. .

apiGateway: 요청: 스키마: post-create-model: 이름: PostCreateModel 스키마: ${file(api_schema/post_add_schema.json)} 설명: “A Model 게시물 추가를 위한 유효성 검사” 기능: 생성: 핸들러: 게시물.생성 이벤트: – http: 경로: 게시물/생성 메서드: 요청 게시: 스키마: 애플리케이션/json: 생성 후 모델

create_request.json에 포함된 샘플 스키마는 다음과 같습니다

{ “definitions” : {}, “$schema” : “http://json-schema.org/draft-04/schema#” , “type” : “object” , “title” : “루트 스키마” , “필수”: [ “사용자 이름”], “속성”: { “사용자 이름”: { “유형”: “문자열”, “제목”: “푸 스키마”, “기본”: “”, “패턴”: ” ^[a-zA-Z0-9]+$” } } }

참고: 스키마 유효성 검사기는 지정한 콘텐츠 유형에만 적용됩니다

다른 콘텐츠 유형은 차단되지 않습니다

현재 API Gateway는 JSON Schema draft-04를 지원합니다.

요청 측정을 위한 API 키 소스 설정

API Gateway는 API 요청을 측정하는 기능을 제공하며 측정에 사용되는 키 소스를 선택할 수 있습니다

요청의 X-API-Key 헤더에서 해당 키를 얻으려면 다음과 같이 옵션을 설정하십시오

서비스: my-service 제공자: 이름: aws apiGateway: apiKeySourceType: HEADER 함수: hello: 이벤트: – http: 경로: hello 메소드: get

또 다른 옵션은 AUTHORIZER입니다

이를 설정하면 API Gateway는 사용자 지정 권한 부여자가 제공하는 UsageIdentifierKey에서 해당 키를 가져옵니다

서비스: my-service provider: name: aws apiGateway: apiKeySourceType: AUTHORIZER functions: hello: events: – http: path: hello method: 가져 오기

람다 통합

이 방법은 더 복잡하고 http 이벤트 구문의 훨씬 더 많은 구성을 포함합니다

예 “LAMBDA” 이벤트(사용자 정의 전)

기본이 아닌 LAMBDA 통합 방법을 사용하는 경우에만 이것을 참조하십시오.

{ “본문” : {}, “메서드” : “GET” , “principalId” : “” , “stage” : “dev” , “cognitoPoolClaims” : { “sub” : “” }, “enhancedAuthContext” : {} , “헤더” : { “수락” : “text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8” , “인코딩 허용 ” : “gzip, deflate, br” , “Accept-Language” : “en-GB,en-US;q=0.8,en;q=0.6,zh-CN;q=0.4” , “CloudFront-Forwarded-Proto ” : “https” , “CloudFront-Is-Desktop-Viewer” : “true” , ​​​”CloudFront-Is-Mobile-Viewer” : “false” , “CloudFront-Is-SmartTV-Viewer” : “false” , “CloudFront -Is-Tablet-Viewer”: “false”, “CloudFront-Viewer-Country”: “GB”, “Host”: “ec5ycylws8.execute-api.us-east-1.amazonaws.com”, “업그레이드 -insecure -requests” : “1” , “User-Agent” : “Mozilla/5.0(Macintosh, Intel Mac OS X 10_12_5) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/59.0.3071.115 Safari/537.36” , “경유 “: “2.0 f165ce34daf8c0da182681179e863c24.cloudfront.net(CloudFront)” , “X-Amz-Cf-Id”: “l06CAg2QsrALeQcLAUSxGXbm8lgMoMIhR2AjVn=GsOFAiK ” , “X-Amz-Cf-Id” , “X-Amz-Cf-Id” : Amzn-Trace-Id” : “Root=1-5970ef20-3e249c0321b2eef14aa513ae” , “X-Forwarded-For” : “.94.11 120.169, 116.132.62.73” , “X-Forwarded-Port”: “443” , “X-Forwarded-Proto”: “https” }, “query”: {}, “경로”: {}, “identity”: { “cognitoIdentityPoolId”: “”, “accountId”: “”, “cognitoIdentityId”: “”, “호출자”: “”, “apiKey”: “”, “sourceIp”: “94.197.120.169”, “accessKey”: “”, “cognitoAuthenticationType”: “”, “cognitoAuthenticationProvider”: “”, “userArn”: ” “, “userAgent”: “Mozilla/5.0(매킨토시; Intel Mac OS X 10_12_5) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/59.0.3071.115 Safari/537.36” , “user”: “” }, “stageVariables”: {}, “requestPath”: “/request/path” 기본 요청 템플릿 Serverless는 즉시 사용할 수 있는 다음 기본 요청 템플릿과 함께 제공됩니다

이벤트 객체:.body.method.principalId.stage.headers.queryStringParameters.path.identity.stageVariables.requestPath.Custom 요청 템플릿

그러나 다음과 같이 고유한 요청 템플릿을 정의하고 사용할 수 있습니다(기본 요청 템플릿을 덮어쓸 수도 있습니다

기존 콘텐츠 유형에 대한 새 요청 템플릿을 정의하여):

함수: 생성: 핸들러: posts.create 이벤트: – http: 메서드: 경로 가져오기: 모든 통합: 람다 요청: 템플릿: text/xhtml: ‘{ “stage” : “$context.stage” }’ application/json: ‘{ “httpMethod ” : “$context.httpMethod” }’

e: 템플릿은 여기에서 일반 텍스트로 정의됩니다

그러나 ${file(templatefile)} 구문을 사용하여 외부 파일을 참조할 수도 있습니다

참고 2:. yml에서 다음을 포함하는 문자열: , { , } , [ , ] , , & , * , # , ? , | , – , < , > , = , ! , % , @ , `는 따옴표로 묶어야 합니다.

쿼리 문자열을 이벤트 객체에 매핑하려면 다음과 같이 API Gateway에서 $input.params(‘hub.challenge’) 구문을 사용할 수 있습니다

기능: 생성: 핸들러: posts.create 이벤트: – http: 메서드: 경로 가져오기: 모든 통합: 람다 요청: 템플릿: application/json: ‘{ “foo”: “$input.params(‘ ‘bar’ ‘)” }’

참고: 작은 따옴표로 묶인 문자열을 사용할 때 내용 안에 있는 작은 따옴표 ‘를 이스케이프하려면 이중화( ” )해야 합니다

그런 다음 람다 함수의 event.foo를 통해 쿼리 문자열 https://example.com/dev/whatever?bar=123에 액세스할 수 있습니다

문자열을 여러 줄로 나누려면 > 또는 | 구문이지만 다음 문자열은 모두 같은 양으로 들여쓰기되어야 합니다

> 구문에 대해 자세히 알아보세요

기본 요청 템플릿 중 하나를 제거하려면 다음과 같이 null로 전달하면 됩니다

기능: 생성: 처리기: posts.create 이벤트: – http: 메서드: 경로 가져오기: 모든 통합: 람다 요청: 템플릿: application/x-www-form-urlencoded: null

통과 행동

API Gateway는 Content-Type 헤더가 지정된 매핑 템플릿과 일치하지 않는 요청을 처리하는 여러 방법을 제공합니다

이 경우 요청 페이로드는 구성에 따라 변환 없이 통합 요청을 통해 전달되거나 415 – 지원되지 않는 미디어 유형으로 거부됩니다

이 동작을 다음과 같이 정의할 수 있습니다(지정하지 않은 경우 NEVER 값은 사용) :

기능: 생성: 핸들러: posts.create 이벤트: – http: 메서드: 경로 가져오기: 모든 통합: 람다 요청: passThrough: NEVER

3가지 옵션이 있습니다

거부될 때 값이 전달됨 NEVER 없음 정의된 템플릿이 없거나 Content-Type이 정의된 템플릿과 일치하지 않습니다

WHEN_NO_MATCH Content-Type이 정의된 템플릿과 일치하지 않습니다

Never WHEN_NO_TEMPLATES 정의된 템플릿이 없습니다

하나 이상의 템플릿이 정의되었지만 Content-Type이 일치하지 않습니다

이러한 옵션에 대한 자세한 설명은 api 게이트웨이 문서를 참조하십시오

참고:

누락/빈 요청 Content-Type은 API 게이트웨이 기본값(application/json)으로 간주됩니다

) API Gateway 문서는 “WHEN_NO_TEMPLATE”(단수)를 참조하지만 실제 값은 “WHEN_NO_TEMPLATES”(복수)여야 하므로 생성 중에 실패합니다

응답

Serverless를 사용하면 http 이벤트에 대한 사용자 정의 헤더와 응답 템플릿을 설정할 수 있습니다

사용자 정의 응답 헤더

다음은 사용자 지정 응답 헤더를 설정하는 방법을 보여주는 예입니다

기능: 생성: 핸들러: posts.create 이벤트: – http: 메서드: 경로 가져오기: 무엇이든 통합: 람다 응답: 헤더: 콘텐츠 유형: 통합.response.header.Content-Type 캐시 제어: ” ‘max-age = 120 ‘ “

참고: 헤더 값에 통합 응답 변수를 사용할 수 있습니다

헤더는 정의한 대로 API Gateway에 전달됩니다

Cache-Control 헤더를 ” ‘max-age = 120′”으로 전달하면 API Gateway가 값을 ‘max-age = 120′(작은따옴표로 묶음)으로 수신합니다

.

사용자 지정 응답 템플릿

API Gateway가 람다 출력을 변환하는 데 사용해야 하는 사용자 지정 응답 템플릿을 정의하려는 경우가 있습니다

다음은 브라우저에서 HTML로 렌더링하도록 람다의 반환 값을 변환하는 예입니다

기능: 생성: 처리기: posts.create 이벤트: – http: 메서드: 경로 가져오기: 무엇이든 통합: 람다 응답: 헤더: 콘텐츠 유형: ” ‘텍스트 / html'” 템플릿: $ input.path( ‘$’)

참고: 템플릿은 여기에서 일반 텍스트로 정의됩니다

그러나 $ {file (templatefile)} 구문을 사용하여 외부 파일을 참조할 수도 있습니다

.

상태 코드

서버리스는 예를 들어 리소스를 찾을 수 없다는 신호(404) 또는 사용자가 작업을 수행할 권한이 없다는 신호(401)

이러한 상태 코드는 API Gateway 구성에 추가될 정규식 정의입니다

참고: 이 장에 설명된 상태 코드는 람다 통합 방법과 관련이 있습니다(이 페이지 상단에 설명되어 있음)

기본 통합 방법을 사용하는 경우 상태 코드 및 메시지와 함께 람다 프록시 개체가 아래 예제와 같이 반환되어야 합니다

module. exports.hello = (이벤트, 컨텍스트, 콜백) => {콜백(null, {statusCode: 404, 본문: ‘찾을 수 없음’, 헤더: { ‘콘텐츠 유형’: ‘텍스트/일반’}}); };

사용 가능한 상태 코드

상태 코드 의미 400 잘못된 요청 401 권한 없음 403 금지됨 404 찾을 수 없음 422 처리할 수 없는 엔터티 500 내부 서버 오류 502 잘못된 게이트웨이 504 게이트웨이 시간 초과입니다

상태 코드 사용

주어진 상태 코드를 반환하려면 다음과 같이 반환된 메시지에 선택한 상태 코드와 함께 대괄호를 추가하기만 하면 됩니다

[401] 이 리소스에 액세스할 권한이 없습니다!.

다음은 람다 함수 내에서 404 HTTP 상태를 발생시키는 방법을 보여주는 예입니다

.

module. exports.hello = (event, context, callback) => {callback (new Error ( ‘[404] Not found ‘)); };

사용자 정의 상태 코드

Serverless에서 제공하는 기본 상태 코드를 재정의할 수 있습니다

이를 사용하여 기본 상태 코드를 변경하거나 상태 코드를 추가/제거하거나 각 상태 코드에 사용되는 템플릿 및 헤더를 변경할 수 있습니다

패턴 키를 사용하여 반환되는 코드를 지정하는 선택 프로세스를 변경합니다

” 패턴으로 상태 코드를 지정하면 기본 응답 코드가 됩니다

게시물 요청에 대해 기본값을 201로 변경하는 방법은 아래를 참조하세요

기본 상태 코드를 생략하는 경우

표준 기본 200 상태 코드가 생성됩니다

functions: create: handler: posts.create events: – http: method: post path: every integration: lambda response: headers: Content-Type: “‘text/html’ ” 템플릿: $input.path(‘$’) statusCodes: 201: 패턴: ” 409: 패턴: ‘.*”statusCode”:409,.*’ 템플릿: $input.path(“$.errorMessage”) 헤더 : 콘텐츠 유형: “‘application/json+hal'”

키를 콘텐츠 형식으로 사용하여 개체를 만들어 각 코드 및 콘텐츠 형식에 대해 다양한 응답 템플릿을 만들 수도 있습니다

기능: 생성: 처리기: posts.create 이벤트: – http: 메서드: 게시 경로: 모든 통합: 람다 응답: 헤더: 콘텐츠 유형: “‘텍스트/html'” 템플릿: $input.path(‘$’) statusCodes : 201: 패턴: ” 409: 패턴: ‘.*”statusCode”:409,.*’ 템플릿: application/json: $input.path(“$.errorMessage”) application/xml: $input.path(” $.body.errorMessage”) 헤더: 콘텐츠 유형: “‘application/json+hal'”

API Gateway에서 HTTP 프록시 설정

HTTP 프록시를 설정하려면 두 개의 CloudFormation 템플릿이 필요합니다

하나는 엔드포인트(CF에서는 리소스라고 함)용이고 다른 하나는 메서드용입니다

이 두 템플릿은 함께 작동하여 프록시를 구성합니다

따라서 your-app.com/serverless를 serverless.com에 대한 프록시로 설정하려면 serverless.yml에 다음 두 템플릿이 필요합니다

서비스: 서비스 이름 공급자: aws 함수:. .

리소스: 리소스: ProxyResource: 유형: AWS::ApiGateway::Resource 속성: ParentId: Fn::GetAtt: – ApiGatewayRestApi – RootResourceId PathPart: 서버리스 RestApiId: Ref: ApiGatewayRestApi ProxyMeth : 유형: AWS::ApiGateway::Method 속성: ResourceId: Ref: ProxyResource RestApiId: Ref: ApiGatewayRestApi HttpMethod: GET MethodResponses: – StatusCode: 200 통합: IntegrationHttpMethod: POST 유형: HTTP Uri: http://serverless.com IntegrationResponses: – StatusCode: 200

이 두 템플릿에는 많은 일이 있지만 간단한 프록시를 설정하기 위해 알아야 할 것은 프록시의 메서드와 끝점, 프록시를 설정할 URI를 설정하는 것뿐입니다

이제 serverless.yml 파일에 이러한 두 개의 CloudFormation 템플릿이 정의되어 있으면 서버리스 배포를 실행하기만 하면 서비스와 함께 이러한 사용자 지정 리소스가 배포되고 Rest API에 프록시가 설정됩니다

V를 사용하여 프라이빗 리소스 액세스 피씨링크

Edge Optimized 또는 Regional API Gateway가 있는 경우 VPC Link를 사용하여 내부 VPC 리소스에 액세스할 수 있습니다

API Gateway 프라이빗 통합에 대한 자세한 내용은 AWS 설명서를 참조하십시오

다음 구성을 사용하여 http-proxy vpc-link 통합을 가질 수 있습니다

– http: 경로: v1/repository 방법: 통합 가져오기: http-proxy connectionType: vpc -link connectionId: ‘{your-vpc-link-id}’ cors: true 요청: uri: http://www.github.com/v1/repository 방법: get

모의 통합

Mocks를 사용하면 개발자가 API에 대해 시뮬레이션된 메서드를 제공할 수 있으며, 이를 통해 통합 백엔드 없이 응답을 직접 정의할 수 있습니다

간단한 모의 응답 예제는 다음과 같습니다

기능: hello: handler: handler.hello 이벤트: – http: 경로: hello cors: true 메서드: 통합 가져오기: 모의 요청: 템플릿: application/json: ‘{“statusCode”: 200}’ 응답: 템플릿: $input

경로(‘$’) 상태 코드: 201: 패턴: ”

API 게이트웨이 및 API 리소스 공유

애플리케이션이 성장함에 따라 여러 개의 더 작은 서비스로 분할해야 할 수 있습니다

기본적으로 각 서버리스 프로젝트는 새 API 게이트웨이를 생성합니다

그러나 다음과 같이 serverless.yml에서 REST API ID와 루트 리소스 ID를 참조하여 여러 프로젝트 간에 동일한 API 게이트웨이를 공유할 수 있습니다

서비스: 서비스 이름 공급자: 이름: aws apiGateway: restApiId: xxxxxxxxxx restApiRootResourceId: xxxxxxxxxx websocketApiId: xxxxxxxxxx 설명: 일부 설명 함수:. .

애플리케이션에 중첩 경로가 많은 경우 이를 더 작은 서비스로 나눌 수도 있습니다

.

서비스: 서비스-a 제공자: apiGateway: restApiId: xxxxxxxxxx restApiRootResourceId: xxxxxxxxxx websocketApiId: xxxxxxxxxx 설명: 일부 설명 기능: 생성: 핸들러: posts.create 이벤트: – http: 메소드: 포스트 경로: /posts

서비스: service-b 제공자: apiGateway: restApiId: xxxxxxxxxx restApiRootResourceId: xxxxxxxxxx websocketApiId: xxxxxxxxxx 설명: 일부 설명 기능: 생성: 핸들러: posts.createComment 이벤트: – http: 메소드: 게시물 경로: /posts/{id}/comments

위의 예제 서비스는 모두 동일한 상위 경로 /posts를 참조합니다

그러나 기존 경로 리소스를 생성하려고 하면 Cloudformation에서 오류가 발생합니다

이를 방지하기 위해 /posts :의 리소스 ID를 참조합니다

서비스: 서비스 공급자: apiGateway: restApiId: xxxxxxxxxx restApiRootResourceId: xxxxxxxxxx websocketApiId: xxxxxxxxxx 설명: 일부 설명 restApiResources: 게시물: xxxxxxxxxx 기능:. ..

xxxxxxxxxx 설명: 일부 설명 restApiResources: /posts:. …xxxxxxxxx 기능: 둘 이상의 경로 리소스를 정의할 수 있지만 기본적으로 Serverless는 루트 리소스에서 경로 리소스를 생성합니다

루트( / )에 경로 리소스가 필요하지 않은 경우 restApiRootResourceId는 선택 사항입니다

서비스: service-a 공급자: apiGateway: restApiId: xxxxxxxxxx websocketApiId: xxxxxxxxxx 설명: 일부 설명 restApiResources: /posts: xxxxxxxxxx /카테고리: xxxxxxxxx 기능: listPosts: 핸들러: posts.list 이벤트: – http: 메소드: 경로 가져오기: /posts listCategories: 핸들러: category.list 이벤트: – http: 메소드: 경로 가져오기: /categories

공유 API 게이트웨이 및 API 리소스를 사용하는 가장 쉽고 CI/CD 친화적인 예

자체 서비스에서 API 게이트웨이 리소스를 정의하고 cloudformation 교차 스택 참조를 사용하여 restApiId, restApiRootResourceId 및 websocketApiId를 내보낼 수 있습니다.

서비스: my-api provider : 이름: aws 런타임: nodejs12.x 단계: 개발 지역: eu-west-2 리소스: 리소스: MyApiGW: 유형: AWS::ApiGateway::RestApi 속성: 이름: MyApiGW MyWebsocketApi: 유형: AWS::ApiGatewayV2::Api 속성: 이름: MyWebsocketApi 프로토콜 유형: WEBSOCKET RouteSelectionExpression: ‘$request.body.action’ 출력: apiGatewayRestApiId: 값: Ref: MyApiGW 내보내기: 이름: MyApiGateway-restApiId apiGateway – RootApiRootResourceId: NameRoot 값: FGResourceId: NameRoot 값 가져오기 websocketApiId: 값: 참조: MyWebsocketApi 내보내기: 이름: MyApiGateway-websocketApiId

이렇게 하면 API 게이트웨이가 생성되고 cloudformation 크로스 스택 출력을 사용하여 restApiId , rootResourceId 및 websocketApiId 값을 내보냅니다

이것을 가져오고 향후 서비스에서 참조할 것입니다

service: service-a provider: apiGateway: restApiId: ‘Fn::ImportValue’: MyApiGateway-restApiId restApiRootResourceId: ‘Fn::ImportValue’: MyApiGateway-rootResourceId websocketApiId: MyApiGateway-websocketApiId 기능: 서비스 기능

서비스: service-b 공급자: apiGateway: restApiId: ‘Fn::ImportValue’: MyApiGateway-restApiId restApiRootResourceId: ‘Fn::ImportValue’: MyApiGateway-rootResourceId websocketApiId: ‘Fn::ImportValue’: 이 방법을 사용하여 동일한 지역의 서비스 간에 API 게이트웨이를 공유할 수 있습니다

여기에서 이 제한 사항에 대해 읽어보십시오.

참고: restApiId 및 restApiRootResourceId에 대해 Fn::ImportValue와 함께 provider.tags를 사용할 수 없다는 것을 알았습니다

이렇게 하면 가져온 값이 해결되지 않으므로 오류가 반환됩니다.

수동으로 공유 API 게이트웨이 구성

브라우저에서 AWS 콘솔을 사용하여 API Gateway 콘솔로 이동합니다

이미 존재하는 API 게이트웨이를 선택하십시오

상단 Navbar는 다음과 같아야 합니다

API>apigateway-Name( xxxxxxxxxx )>리소스>/( yyyyyyyyyy )

여기서 xxxxxxxxx는 restApiId이고 yyyyyyyyyy는 restApiRootResourceId입니다.

공유 API 게이트웨이와 함께 권한 부여자를 사용하는 동안 참고하십시오

AWS API Gateway는 1개의 ARN에 대해 1개의 Authorizer만 허용합니다

각 단계와 서비스가 다른 API Gateway를 생성하기 때문에 기존 서버리스 설정을 사용할 때 괜찮습니다

그러나 공유 API 게이트웨이와 함께 작성자를 사용할 때 문제가 발생할 수 있습니다

이와 같이 다른 서비스에서 동일한 권한 부여자를 직접 사용하는 경우.

service: service-c provider: apiGateway: restApiId: ‘Fn::ImportValue’: apiGateway-restApiId restApiRootResourceId: ‘Fn::ImportValue’: apiGateway-rootResourceId functions: deleteUser : 이벤트: – http: 경로: /users/{userId} 권한 부여자: arn: xxxxxxxxxxxxxxxxxx

서비스: service-d 제공자: apiGateway: restApiId: ‘Fn::ImportValue’: apiGateway-restApiId restApiRootResourceId: ‘Fn::ImportValue’: apiGateway-rootResourceId 함수: deleteProject: 이벤트: – http: 경로: /project/{projectId} 권한 부여자: arn: xxxxxxxxxxxxxxxxxx

여기에 보고된 대로 cloudformation에서 오류가 발생했습니다

이에 대한 적절한 수정은 공유 권한 부여자를 사용하거나 각 기능의 권한 부여자에 고유한 이름 속성을 추가할 수 있다는 것입니다

이렇게 하면 동일한 API Gateway에 바인딩된 각 기능에 대해 다른 API Gateway 권한 부여자가 생성됩니다

그러나 RestApi당 권한 부여자는 10명으로 제한되어 있으며, 개발 차단을 해제하기 위해 한도 증가를 요청하기 위해 AWS에 강제로 연락해야 합니다.

Share Authorizer

자동 생성된 Authorizer는 기존 설정에 편리합니다

그러나 사용자 지정 권한 부여자를 정의해야 하거나 공유 API 게이트웨이와 함께 COGNITO_USER_POOLS 권한 부여자를 사용해야 하는 경우 AWS 제한으로 인해 고통스럽습니다

권한 부여 공유를 사용하는 것이 더 나은 방법입니다

기능: createUser:. .

이벤트: – http: 경로: /users. .

권한 부여자: 유형: COGNITO_USER_POOLS 권한 부여자 ID: Ref: ApiGatewayAuthorizer 범위: – myapp/myscope deleteUser:. .

이벤트: – http: 경로: /users/{userId}. .

유형: COGNITO_USER_POOLS AuthorizerId: Ref: ApiGatewayAuthorizer 리소스: 리소스: ApiGatewayAuthorizer: 유형: AWS::ApiGateway::Authorizer 속성: AuthorizerResultTtlInSeconds: 300 IdentitySource: method.request header.Authorization 이름: Cognito RestApiId: Ref: YourApiGatewayName 유형: COGNITO_USER_POOLS ProviderARN: – arn:aws:cognito-idp:${self:provider.region}:xxxxxx:userpool/abcdef

리소스 정책

리소스 정책은 API 호출을 제어하는 ​​데 사용되는 정책 문서입니다

Apigateway 리소스 정책 문서에서 더 많은 사용 사례를 찾아보세요

제공자: 이름: aws 런타임: nodejs12.x apiGateway: resourcePolicy: – 효과: 주체 허용: ‘*’ 작업: execute-api:Invoke 리소스: – execute-api:/ */*/* 조건: IpAddress: aws:SourceIp: – ‘123.123.123.123’

압축

API Gateway는 클라이언트가 압축된 페이로드를 수신할 수 있도록 하고 다양한 콘텐츠 인코딩을 지원합니다

제공자: 이름: aws apiGateway: minimumCompressionSize: 1024

바이너리 미디어 유형

API Gateway를 사용하면 이미지나 파일과 같은 바이너리 미디어를 응답으로 반환할 수 있습니다.

프록시 통합에서 바이너리 미디어를 반환하려면 binaryMediaTypes config:를 설정합니다

공급자: apiGateway: binaryMediaTypes: – ‘*/*’ 함수: binaryExample: 처리기: binaryExample.handler 이벤트: – http: 경로: 이진 메서드: GET

이를 Lambda 함수에 포함하면 올바른 콘텐츠 유형 헤더가 설정되었는지 확인하고 본문에 base64로 인코딩된 문자열을 제공해야 합니다

예를 들어, binaryExample.js 람다 핸들러 옆에 image.jpg 파일이 있다고 가정하면 핸들러는 다음과 같이 설정할 수 있습니다.

const fsp = 요구( ‘fs’ ).promises; const 경로 = 필요( ‘경로’); module. exports.handler = async() => ({ statusCode : 200 , headers : { ‘Content-type’ : ‘image/jpeg’ }, body : ( fsp.readFile(path.resolve(__dirname, ‘image.resolve(__dirname, ‘image.resolve(__dirname, ‘image.)) 대기) jpg’ ))).toString( ‘base64’ ), isBase64Encoded : true , });

자세한 CloudWatch 지표

자세한 CloudWatch 지표를 활성화하려면 다음 구성을 사용하십시오

공급자: apiGateway: 메트릭: true

AWS X-Ray 추적

API Gateway는 활성 추적을 활성화하지만 AWS X-Ray를 통해 즉시 사용 가능한 분산 추적 형식을 지원합니다

서버리스 애플리케이션의 API 게이트웨이에 대해 이 기능을 활성화하려면 serverless.yml에 다음을 추가합니다

공급자: 이름: aws 추적: apiGateway: true

참고: 외부 API 게이트웨이 리소스를 사용하고 provider.apiGateway.restApiId 설정을 통해 가져오면 provider.tracing.apiGateway 설정이 무시됩니다

API 게이트웨이 단계는 공급자 수준에서 정의된 태그 및 stackTags 값으로 태그가 지정됩니다

공급자: 이름: aws stackTags: stackTagKey: stackTagValue 태그: tagKey: tagValue

로그

다음 구성을 사용하여 API Gateway 로그를 활성화합니다

공급자: 이름: aws 로그: restApi: true

로그 스트림은 이름 지정 스키마 /aws/api-gateway/{service}-{stage} 를 따르는 전용 로그 그룹에서 생성됩니다

참고: 외부 API 게이트웨이 리소스를 사용하고 provider.apiGateway.restApiId 설정을 통해 가져오는 경우 , provider.logs.restApi 설정은 무시됩니다.

로그를 작성하려면 API Gateway에 CloudWatch 역할이 구성되어 있어야 합니다

이 설정은 모든 API에서 공유하는 지역별로 설정됩니다

이를 처리하는 세 가지 접근 방식이 있습니다

Serverless가 IAM 역할을 생성하고 할당하도록 합니다(기본 동작)

이것은 공유 설정이므로 배포를 제거해도 이 역할이 제거되지 않습니다

아직 할당되지 않은 경우 Serverless에서 배포 전에 생성한 기존 IAM 역할을 할당하도록 합니다

provider: logs: restApi: role: arn: aws:iam::123456:역할

Serverless가 CloudWatch 역할 구성을 관리하도록 허용하지 마십시오

이 경우 IAM 역할을 직접 생성하고 할당합니다

별도의 “계정 설정” 배포에서: provider: logs: restApi: roleManagedExternally: true

참고: Serverless는 사용자 지정 리소스 람다 함수를 사용하여 API Gateway CloudWatch 역할 설정을 구성합니다

iam.deploymentRole을 사용하여 서버리스 배포에 대한 제한된 액세스 IAM 역할을 지정하는 경우 사용자 지정 리소스 람다가 실행 중에 이 역할을 맡습니다.

기본적으로 API Gateway 액세스 로그는 다음 형식을 사용합니다

‘requestId: $ context. requestId, ip: $ context

ID. sourceIp, 호출자: $context

ID. caller, 사용자: $context

ID. user, requestTime: $ context. requestTime, httpMethod: $ context. httpMethod, resourcePath: $ context. resourcePath, 상태: $ context

상태, 프로토콜: $ 컨텍스트. protocol, 응답 길이: $ 컨텍스트. responseLength’

format 속성에 원하는 문자열을 포함하여 API Gateway 액세스 로그에 대한 고유한 형식을 지정할 수 있습니다

공급자: 이름: aws 로그: restApi: 형식: ‘{ “requestId”:”$context.requestId”, “ip”: “$context.identity.sourceIp” }’

기본 API 게이트웨이 로그 수준은 INFO입니다

다음을 사용하여 이것을 오류로 변경할 수 있습니다

공급자: 이름: aws 로그: restApi: 수준: ERROR

유효한 값은 INFO, ERROR.

logs 속성이 있으면 액세스 및 실행 로깅이 모두 활성화됩니다

둘 중 하나 또는 둘 다를 비활성화하려면 다음과 같이 하면 됩니다

공급자: 이름: aws 로그: restApi: accessLogging: false executionLogging: false

기본적으로 전체 요청 및 응답 데이터가 기록됩니다

다음과 같이 비활성화하려면 다음을 수행하십시오

공급자: 이름: aws 로그: restApi: fullExecutionData: false

웹 소켓에는 REST API와 동일한 구성 옵션이 있습니다

예시:

공급자: 이름: aws 로그: websocket: 수준: INFO fullExecutionData: false

기본 엔드포인트 비활성화

기본적으로 클라이언트는 기본 https://{api_id}.execute-api.{region}.amazonaws.com 엔드포인트를 사용하여 API를 호출할 수 있습니다

클라이언트가 사용자 정의 도메인 이름을 사용하여 API를 호출하도록 요구하려면 기본 엔드포인트를 비활성화하십시오.

Three.js 시작하기 New

아래 동영상 보기

주제에 대한 새로운 업데이트 three js 사용법

In this video we will look at the Three JS animation library using the WebGL renderer.
Sponsor: DevMountain Bootcamp
https://goo.gl/6q0dEa
💖 Become a Patron: Show support \u0026 get perks!
http://www.patreon.com/traversymedia
Code:
https://codepen.io/bradtraversy/pen/VOpZvp
Textures:
https://github.com/mrdoob/three.js/tree/master/examples/textures
Follow Traversy Media:
https://www.facebook.com/traversymedia
https://www.twitter.com/traversymedia
https://www.instagram.com/traversymedia

three js 사용법주제 안의 사진 몇 장

 New  Three.js 시작하기
Three.js 시작하기 Update

Microsoft – 클라우드, 컴퓨터, 앱 및 게임 New Update

가정용 또는 비즈니스용 Microsoft 제품 및 서비스를 살펴보세요. Surface, Microsoft 365, Xbox, Windows, Azure 등을 쇼핑하세요. 다운로드 항목을 찾고 지원을 받으세요.

+ 여기서 자세히 보기

Read more

동급 최고의 Surface 노트북으로 창의력을 발휘하십시오

이제 Windows 11과 함께 제공됩니다.

[A3] 생각보다 쉬운 webGL (feat. three.js) – 전기환 Update

동영상 보기

주제에 대한 새로운 업데이트 three js 사용법

[FEConf2018] 생각보다 쉬운 webGL (feat. three.js) – 전기환
https://docs.google.com/presentation/d/1dAX9mid8tf2JaVGusy6rN_GeZPHcI3M9sY9Q2z02huU/edit

three js 사용법주제 안의 사진 몇 장

 Update  [A3] 생각보다 쉬운 webGL (feat. three.js) - 전기환
[A3] 생각보다 쉬운 webGL (feat. three.js) – 전기환 New

iurl.nl 최신

js – The Progressive JavaScript FrameworkСерия игр: Victoria II A House Divided Victoria II: Heart of Darkness. Victoria II is a grand strategy wargame developed by Paradox Development Studio and published by Paradox Interactive, sequel to 2003’s Victoria: An Empire Under the Sun.

+ 여기서 자세히 보기

Read more

04:59 틴더보다 낫다!

당신은 남성 또는 여성을 찾고 있습니까? 남성 여성

너의 성별이 뭐니? 남성 여성

18세 이상입니까? 예 아니요

사이트에서 만나는 파트너와 섹스할 때 콘돔을 사용하는 데 동의합니까? 예 아니오

Top 9 Three.js Advance Project New Update

동영상 보기

주제에 대한 새로운 업데이트 three js 사용법

What is Three.js
Three.js is a cross-browser JavaScript library and application programming interface used to create and display animated 3D computer graphics in a web browser. Three.js uses WebGL. The source code is hosted in a repository on GitHub

three js 사용법주제 안의 사진 몇 장

 New  Top 9 Three.js Advance Project
Top 9 Three.js Advance Project Update

eil-meldung.de 업데이트

18/03/2022 · By JS | Last updated: October 13, 2021. 51-10. zip format (also called “zipfiles”). Includes supports for Unicode and encryption if appropriate USE flags have been selected. js. 1 (Deluxe 2010) E/F/G/J [Download] 106. reg files, but clicking on it will show the file contents in the With the unzip contents I want to load a table.

+ 여기서 자세히 보기

Read more

04:59 틴더보다 낫다!

당신은 남성 또는 여성을 찾고 있습니까? 남성 여성

너의 성별이 뭐니? 남성 여성

18세 이상입니까? 예 아니요

사이트에서 만나는 파트너와 섹스할 때 콘돔을 사용하는 데 동의합니까? 예 아니오

Three.js 강좌 – #5. 재질(Material) part-1 Update New

아래 동영상 보기

주제에 대한 추가 정보 three js 사용법

안녕하세요, GIS Developer 김형준입니다.
이번 영상은 Points와 Line에 대한 재질인 PointsMaterial과 LineBasicMaterial 그리고 LineDashedMaterial에 대한 설명입니다.
이러한 재질이 적용될 Object3D 타입인 Points, Line, LineLoop, LineSegments에 대한 내용도 함께 설명하고 있습니다.

three js 사용법주제 안의 멋진 사진을 볼 수 있습니다

 Update  Three.js 강좌 - #5. 재질(Material) part-1
Three.js 강좌 – #5. 재질(Material) part-1 Update

주제에 대한 추가 정보를 볼 수 있습니다 three js 사용법

파이썬 파일 사용법 정리 (파일 읽기, 파일 쓰기, with문, pickle 모듈) Update New

26/03/2017 · 파일 모드 종류. r – 읽기모드 (디폴트). w – 쓰기모드, 파일이 있으면 모든 내용을 삭제. x – 쓰기모드, 파일이 있으면 오류 발생. a – 쓰기모드, 파일이 있으면 뒤에 내용을 추가 + – 읽기쓰기모드 t – 텍스트 모드, 텍스트 문자 기록에 사용 (디폴트). b – 바이너리 모드, 바이트단위 데이터 기록에 사용

+ 여기서 자세히 보기

Three.js 강좌 – #1. 개발환경구성 New

동영상 보기

주제에 대한 새로운 정보 three js 사용법

안녕하세요, GIS Developer 김형준입니다.
유튜브를 통한 첫번째 강좌를 준비했습니다.
주제는 Three.js로 웹에서 3차원 그래픽 기능을 개발할 수 있는 JavaScript 라이브러리입니다.
첫번째 영상이며.. three.js 라이브러리를 이용해 웹 페이지를 코딩할 수 있는 웹 개발환경구성에 대한 내용입니다.
설치한 프로그램은 Visual Stdio Code, VS.Code의 확장 기능인 LiveServer입니다.
그럼 부디 필요한 분들에게 도움이 되시기를 바랍니다.
감사합니다.

three js 사용법주제 안의 사진 몇 장

 Update  Three.js 강좌 - #1. 개발환경구성
Three.js 강좌 – #1. 개발환경구성 Update

공간정보 오픈플랫폼 오픈API – Vworld 업데이트

[OpenLayers+Three.js] 3D뷰어 : 브이월드3D건물 + 포털타일맵 + 고도데이터 2020-12-20

+ 여기서 자세히 보기

5 분 만에 웹 사이트에 3D 모델 추가-Three.js 자습서 New Update

아래 동영상 보기

주제에 대한 새로운 정보 three js 사용법

How to add 3D model with 360 degrees view on website with JavaScript and Three.js in 5 minutes!
Source Code: https://redstapler.co/add-3d-model-to-website-threejs/
Three.js Crash Course: https://youtu.be/uzkedMF-l4Q
GLTFLoader.js: https://git.io/fjRPL
OrbitControl.js: https://git.io/fjRPt
Car Model: https://skfb.ly/6HpEG
=== Follow us on ===
Facebook: https://www.facebook.com/theRedStapler
Website: http://redstapler.co/
Twitter: https://twitter.com/redStapler_twit
#3DModel #ThreejsTutorial #WebDesign

three js 사용법주제 안의 멋진 사진을 볼 수 있습니다

 Update  5 분 만에 웹 사이트에 3D 모델 추가-Three.js 자습서
5 분 만에 웹 사이트에 3D 모델 추가-Three.js 자습서 Update New

{{configCtrl2.info.canonicalUrl}} – UpToDate 최신

UpToDate, electronic clinical resource tool for physicians and patients that provides information on Adult Primary Care and Internal Medicine, Allergy and Immunology, Cardiovascular Medicine, Emergency Medicine, Endocrinology and Diabetes, Family Medicine, Gastroenterology and Hepatology, Hematology, Infectious Diseases, Nephrology and Hypertension, Neurology, …

+ 여기서 자세히 보기

셰이더에 대한 Three.js 자습서 (초보자) Update

동영상 보기

주제에 대한 새로운 정보 three js 사용법

Follow me on:
Twitter: https://twitter.com/iced_coffee_dev
Github: https://github.com/simondevyoutube/
In this video I’ll be taking a look at customizing shaders in Three.js and JavaScript. This tutorial is very beginner friendly, we’ll be starting with what shaders are, before moving on to how to integrate and customize your own shaders in three.js and working through some easy examples. There’s a few api points to cover in Three.js, including classes like ShaderMaterial and RawShaderMaterial, as well as going over vertex/fragment shader and uniform support.
This is yet another video in a series aimed at beginners and new users of Three.js, aimed at helping you get started. There’s no requirement or background needed, beyond having watched other videos in the series. With each project, you should walk away with a solid understanding of both the concepts involved, such as what shaders are fundamentally, as well as working through concrete examples.
The three.js library is available in JavaScript for cross-browser 3d graphics, wrapping webgl and making high level functionality available in the web browser. It’s an extremely mature and well maintained library that I use for many of these videos.
In the video, we cover:
* WebGL Shaders, what they are, what vertex/fragment shaders are.
* Shader bindings, the difference between attributes, varying, and uniform values, and how to think about them.
* Three.js API’s such as ShaderMaterial and RawShaderMaterial
* How to instantiate and use your own shaders in Three.js/JavaScript

three js 사용법주제 안의 사진 몇 장

 Update  셰이더에 대한 Three.js 자습서 (초보자)
셰이더에 대한 Three.js 자습서 (초보자) Update

Serverless Framework – AWS Lambda Events – API Gateway 최신

// handler.js ‘use strict’; module.exports.hello = function (event, … There are three approaches for handling it: Let Serverless create and assign an IAM role for you (default behavior). Note that since this is a shared setting, this role is not removed when you remove the deployment.

+ 여기서 자세히 보기

[STEP] D3.js를 이용한 데이터 시각화 (무료 강의) New

동영상 보기

주제에 대한 새로운 업데이트 three js 사용법

기업 재직자, 일반인, 교원 등 누구나 D3.js와 같은 라이브러리 또는 데이터 시각화에 대해 관심이 있는 누구나 수강 가능한 무료 강의
때로는 한 장의 그림이 책 한 권의 설명 보다 더 설득력이 있다고 합니다. 우리 속담에도 백번 듣는 것보다 한 번 보는 게 낫다 라는 말도 있답니다. 같은 맥락으로 데이터도 분석하여 결과를 시각적으로 표현하여 전달하는 것이 훨씬 명확하고 효과적이라고 합니다.
결국 이제는 디지털 환경에서 생성되고 생산주기가 짧은 빅데이터를 결과를 이해할 수 있는 내용으로 시각화하는 것이 중요해졌다고 합니다.
데이터를 정보 시각화, 과학적 시각화, 인포그래픽으로 바꾸는 작업이 중요해진 오늘, 우리에게 어떠한 변화가 생겼을까요?
더 많은 내용이 궁금하신다면? https://goo.gl/f3J3Wv
한국기술교육대학교 온라인평생교육원

three js 사용법주제 안의 멋진 사진을 볼 수 있습니다

 New  [STEP] D3.js를 이용한 데이터 시각화 (무료 강의)
[STEP] D3.js를 이용한 데이터 시각화 (무료 강의) New Update

Microsoft – 클라우드, 컴퓨터, 앱 및 게임 Update New

가정용 또는 비즈니스용 Microsoft 제품 및 서비스를 살펴보세요. Surface, Microsoft 365, Xbox, Windows, Azure 등을 쇼핑하세요. 다운로드 항목을 찾고 지원을 받으세요.

+ 여기서 자세히 보기

Three.js 사실적인 머티리얼 리플렉션 튜토리얼 (8 분) Update

동영상 보기

주제에 대한 새로운 정보 three js 사용법

How to setup a realistic material reflection on three.js and create a stunning visual effect on website in 8 minutes.
Download Source Code: https://redstapler.co/three-js-realistic-material-reflection-tutorial/
********* Follow us on *********
Facebook: https://www.facebook.com/theRedStapler
Website: http://redstapler.co/
Twitter: https://twitter.com/redStapler_twit
********* Studio Equipment **********
Screen Capture Card: https://amzn.to/3hqVDM6
Mic: https://amzn.to/2Uy7dKw
Audio Interface: https://amzn.to/3pspAyJ
#ThreeJS #JavaScript #WebDev

three js 사용법주제 안의 멋진 사진을 볼 수 있습니다

 New  Three.js 사실적인 머티리얼 리플렉션 튜토리얼 (8 분)
Three.js 사실적인 머티리얼 리플렉션 튜토리얼 (8 분) Update

사용자가 주제에 대해 검색한 키워드 three js 사용법

Updating

스레드 끝 three js 사용법

Leave a Comment