수학 소녀의 비밀노트/비트와 2진법 2장(React 버전)을 실현해 보았다
15840 단어 React
개시하다
여러분 수학 소녀 공부하세요?최신 권1의 주제는'비트와 바이너리', 즉 바이너리에 관한 화제다.
수학 소녀의 비밀 노트/비트와 2진
제2장은'변환 픽셀'이라는 제목으로 16x16의 이미지를 비트 연산을 통해 변환(필터)한다.이전 권과 달리 루비로 구현한 예 절차가 공개됐다.
여기까지.
저번는 파이톤(matplotlib)에서 이뤄졌고, 이후 트위터에서는 "JavaScript로 이뤄졌다!"가끔 이런 사람을 보면 "소통이 참 좋네요"
리액트로 설치해 봤어요.
코드를 여기에 놓으세요.
https://github.com/junjis0203/math_girls-secret_notebook_bits_and_binary
필터
책에서는 필터를'수신','발송'형태로 입력·출력하고, 앞서 소개한 루비 구현에서도 파이버로 구현한다.
JavaScript에서도 async를 사용하여 노력하면 실현할 수 있지만 테마에서 벗어나 최종 형식의 필터를 고려하면 상태 관리가 번거롭기 때문에 일반적으로 입력 배열에 맡기고 출력 배열로 되돌아간다.
src/pixel-filter.발췌하다const right = (input) => {
const output = [];
for (let i = 0; i < 16; i++) {
let x = input[i];
x = x >> 1;
output.push(x);
}
return output;
};
Figure 구성 요소
구현된 주요 이미지를 표시합니다.이를 위해 Figure 구성 요소(src/pixel-component.js)를 제작했습니다.사용법은 이런 느낌이에요.
src/pixel-main0.jsconst world = <Figure lines={input1} clickable={true} />;
아래와 같다.파일로예)
클릭블이 사실이라면 클릭 후 흑백 반전이 나타나지만 엣지는 문제가 없고 크롬은 맨 아래 반응만 한다.이유는 line-height
를 0으로 설정한 것 같은데 어떻게 고쳐야 할지 몰라서 그냥 뒀어요.
구성 요소의 그림은render()→lines()→pixels(y,line)의 등급 구조입니다.원래는 Figure Pixel Line의 계층 구조였으나 사건 처리가 부모에게 거슬러 올라가는 게 번거롭다는 점을 고려해 Figure에서 모두 처리했다.
Store
이 실현의 주요 2. 상호작용성.이미지 웨이브를 입력하면 출력이 변경됩니다.
리액트의 구조와 장르를 잘 몰라서 힘들었지만 결국 다음과 같은 느낌을 줬다.const in1 = <Figure lines={input} clickable={true} store={store} dst_tag={'INPUT1'} />;
store.addFilter('INPUT1', right, 'OUTPUT1');
const out1 = <Figure store={store} src_tag={'OUTPUT1'} />;
책에서는 필터를'수신','발송'형태로 입력·출력하고, 앞서 소개한 루비 구현에서도 파이버로 구현한다.
JavaScript에서도 async를 사용하여 노력하면 실현할 수 있지만 테마에서 벗어나 최종 형식의 필터를 고려하면 상태 관리가 번거롭기 때문에 일반적으로 입력 배열에 맡기고 출력 배열로 되돌아간다.
src/pixel-filter.발췌하다
const right = (input) => {
const output = [];
for (let i = 0; i < 16; i++) {
let x = input[i];
x = x >> 1;
output.push(x);
}
return output;
};
Figure 구성 요소
구현된 주요 이미지를 표시합니다.이를 위해 Figure 구성 요소(src/pixel-component.js)를 제작했습니다.사용법은 이런 느낌이에요.
src/pixel-main0.jsconst world = <Figure lines={input1} clickable={true} />;
아래와 같다.파일로예)
클릭블이 사실이라면 클릭 후 흑백 반전이 나타나지만 엣지는 문제가 없고 크롬은 맨 아래 반응만 한다.이유는 line-height
를 0으로 설정한 것 같은데 어떻게 고쳐야 할지 몰라서 그냥 뒀어요.
구성 요소의 그림은render()→lines()→pixels(y,line)의 등급 구조입니다.원래는 Figure Pixel Line의 계층 구조였으나 사건 처리가 부모에게 거슬러 올라가는 게 번거롭다는 점을 고려해 Figure에서 모두 처리했다.
Store
이 실현의 주요 2. 상호작용성.이미지 웨이브를 입력하면 출력이 변경됩니다.
리액트의 구조와 장르를 잘 몰라서 힘들었지만 결국 다음과 같은 느낌을 줬다.const in1 = <Figure lines={input} clickable={true} store={store} dst_tag={'INPUT1'} />;
store.addFilter('INPUT1', right, 'OUTPUT1');
const out1 = <Figure store={store} src_tag={'OUTPUT1'} />;
const world = <Figure lines={input1} clickable={true} />;
이 실현의 주요 2. 상호작용성.이미지 웨이브를 입력하면 출력이 변경됩니다.
리액트의 구조와 장르를 잘 몰라서 힘들었지만 결국 다음과 같은 느낌을 줬다.
const in1 = <Figure lines={input} clickable={true} store={store} dst_tag={'INPUT1'} />;
store.addFilter('INPUT1', right, 'OUTPUT1');
const out1 = <Figure store={store} src_tag={'OUTPUT1'} />;
'INPUT1'
의 라벨로 store에 전체 그림을 던지기(Figure류의 dispatch 방법)'INPUT1'
에 투척되었을 때 동작하여 결과를 'OUTPUT1'
투척(Store류 디스패치 방법)'OUTPUT1'
(Figure류의onDispatch방법)참고로 이ddFilter의 설치(필터는listener의 일부분)는 매우 아름다워서 나는 자화자찬한다.
src/composer.발췌하다
addFilter(src_tag, filter, dst_tag) {
// listen tag and execute filter
const listener = {
onDispatch: (input) => {
const output = filter(input);
this.dispatch(dst_tag, output);
}
};
this.addListener(src_tag, listener);
}
Composer
따라서 활동에 대한 반응, 출력이 바뀌었으니 다시 한 번 보세요.const in1 = <Figure lines={input} clickable={true} store={store} dst_tag={'INPUT1'} />;
store.addFilter('INPUT1', right, 'OUTPUT1');
const out1 = <Figure store={store} src_tag={'OUTPUT1'} />;
촌스럽다.전혀 DRY가 아니야.그래서 저는 Composter라는 반을 설립하여 다음과 같은 내용을 쓸 수 있습니다.
pixel1.발췌하다const composer = new Composer();
const in1 = composer.makeSource(input1);
const r_block1 = composer.addFilter(in1, right);
const world = r_block1.component;
구조는 다음과 같다.
const in1 = <Figure lines={input} clickable={true} store={store} dst_tag={'INPUT1'} />;
store.addFilter('INPUT1', right, 'OUTPUT1');
const out1 = <Figure store={store} src_tag={'OUTPUT1'} />;
const composer = new Composer();
const in1 = composer.makeSource(input1);
const r_block1 = composer.addFilter(in1, right);
const world = r_block1.component;
{component: Reactコンポーネント, tag: 割り振られたタグ}
.다른 입력에 사용할 수 있습니다.최종 형식: 프레임 필터
그럼 약간 복선의 최종 형태.그림 테두리를 입력하는 필터에 대해 샤오리가 생각해 내지 못하면 리사가 답을 줄 것이다.
오른쪽 상단의 외딴 F는 사실상 마지막 AND 입력의 조각으로 CSS를 단독으로 만지작거리면 눈길을 끌 수 있다.
이걸 만든 코드는 다음과 같다.
pixel3.발췌하다const out1_1 = composer.addFilter(in1, right);
const out1_2 = composer.addFilter(in1, left);
const out1_3 = composer.addFilter(in1, up);
const out1_4 = composer.addFilter(in1, down);
const out2_1 = composer.addFilter2(out1_1, out1_2, and);
const out2_2 = composer.addFilter2(out1_3, out1_4, and);
const out3 = composer.addFilter2(out2_1, out2_2, and);
const out4 = composer.addFilter(out3, complement);
const out5 = composer.addFilter2(in1, out4, and);
실제 행동하는 모습은 이쪽이다.왼쪽 끝에 있는 4개의 F도 입력이기 때문에 동기화해야 하는데 분기를 이루려면 코드가 늘어나기 때문에 이번 결정은 불완전하다.
끝말
이번에는 리액트로 비밀 노트/비트와 바이너리 소개 필터 프로그램을 실시했다.ReactNative2를 사용해 봤기 때문에 Figure 구성 요소는 금방 만들어졌지만 입력→필터 실행&전파의 구조는 생각해 내는 데 오랜 시간이 걸렸다.더워서 기운이 없는 경우도 있다(웃음)
맞다
pixel3.발췌하다 <script src="pixel-filter.js"></script>
<script src="pixel-component.js"></script>
<script src="pixel-composer.js"></script>
<script src="pixel-main_common.js"></script>
어느 시대의 JS인 것 같은데?import과 Webpack을 잘 사용하고 싶은데 번거로워서 재료를 줄였어요.
선전
그럼 처음부터 쓴 것처럼 수학녀의 비밀 노트 최신권이'비트와 이진법'이라니!다음 권이 결정됐습니다.
수학 소녀의 비밀 노트/학습 대화
'수학을 못하는 아이를 어떻게 가르쳐야 하는가','모르는 것을 어떻게 가르쳐야 하는가'를 주제로 연재 당시 큰 반향을 일으켰던 시리즈가 곧 서적화됐다!수학뿐만 아니라 가르치고 배우는 것에 흥미가 있는 사람은 없는 사람도 반드시 읽어야 한다!
그나저나 내 광고는 한 푼도 떨어지지 않기 때문에 순전히 홍보다.
2019/8/26 현재↩
리액트네이티브를 써봤지만 리액트를 써본 적이 없다,'슈퍼사이언이 될 수 있는데 무공술을 못 쓴다'같은 사람이 있어서 리액트를 쓰는 것도 이번 동기라고 생각한다. ↩
Reference
이 문제에 관하여(수학 소녀의 비밀노트/비트와 2진법 2장(React 버전)을 실현해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/junjis0203/items/c5b953688e7a2c41ff1a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const out1_1 = composer.addFilter(in1, right);
const out1_2 = composer.addFilter(in1, left);
const out1_3 = composer.addFilter(in1, up);
const out1_4 = composer.addFilter(in1, down);
const out2_1 = composer.addFilter2(out1_1, out1_2, and);
const out2_2 = composer.addFilter2(out1_3, out1_4, and);
const out3 = composer.addFilter2(out2_1, out2_2, and);
const out4 = composer.addFilter(out3, complement);
const out5 = composer.addFilter2(in1, out4, and);
이번에는 리액트로 비밀 노트/비트와 바이너리 소개 필터 프로그램을 실시했다.ReactNative2를 사용해 봤기 때문에 Figure 구성 요소는 금방 만들어졌지만 입력→필터 실행&전파의 구조는 생각해 내는 데 오랜 시간이 걸렸다.더워서 기운이 없는 경우도 있다(웃음)
맞다
pixel3.발췌하다
<script src="pixel-filter.js"></script>
<script src="pixel-component.js"></script>
<script src="pixel-composer.js"></script>
<script src="pixel-main_common.js"></script>
어느 시대의 JS인 것 같은데?import과 Webpack을 잘 사용하고 싶은데 번거로워서 재료를 줄였어요.선전
그럼 처음부터 쓴 것처럼 수학녀의 비밀 노트 최신권이'비트와 이진법'이라니!다음 권이 결정됐습니다.
수학 소녀의 비밀 노트/학습 대화
'수학을 못하는 아이를 어떻게 가르쳐야 하는가','모르는 것을 어떻게 가르쳐야 하는가'를 주제로 연재 당시 큰 반향을 일으켰던 시리즈가 곧 서적화됐다!수학뿐만 아니라 가르치고 배우는 것에 흥미가 있는 사람은 없는 사람도 반드시 읽어야 한다!
그나저나 내 광고는 한 푼도 떨어지지 않기 때문에 순전히 홍보다.
2019/8/26 현재↩
리액트네이티브를 써봤지만 리액트를 써본 적이 없다,'슈퍼사이언이 될 수 있는데 무공술을 못 쓴다'같은 사람이 있어서 리액트를 쓰는 것도 이번 동기라고 생각한다. ↩
Reference
이 문제에 관하여(수학 소녀의 비밀노트/비트와 2진법 2장(React 버전)을 실현해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/junjis0203/items/c5b953688e7a2c41ff1a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(수학 소녀의 비밀노트/비트와 2진법 2장(React 버전)을 실현해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/junjis0203/items/c5b953688e7a2c41ff1a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)