본문 바로가기

전체 글118

[RN] 왜 리액트 네이티브인가 장점 하나의 언어로 두가지 플랫폼(Android, iOS) 제공 가능 비용 및 시간 절감 JSX 사용 (리액트 개발자가 이미 알고 있는 언어로 개발이 가능) 단점 유지보수를 위해 리액트 네이티브 개발자가 있어야 함 iOS 와 달리 JavaScript에서는 변수나 함수의 파라미터의 타입을 지정하지 않음 (=> 이 부분은 TypeScript로 해결 가능) React Native 동작 방식 웹 용으로 사용되는 동일한 리액트 라이브러리를 리액트 네이티브가 사용하며 JavaScriptCore 내에서 동작한다. 메시지는 네이티브 플랫폼 API에 비동기적으로 보내지며 성능을 위해 배치로 수행된다. 리액트 네이티브는 HTML 요소인 컴포넌트 대신 모바일 플랫폼을 위해 구현된 컴포넌트를 제공한다. JavaScriptCo.. 2019. 10. 1.
[ReactJS] 재사용할 수 있는 컴포넌트 제작 이 페이지는 재사용할 수 있는 컴포넌트 제작에 대해 설명하며 리액트 & 리액트 네이티브 통합 교과서를 기반으로 작성했습니다. 일체형 컴포넌트의 어려움 특정 기능에 대해 하나의 컴포넌트만 구현한다면 작업이 간소화된다. 최소한 유지해야 할 컴포넌트가 많지 않고 모든 것이 컴포넌트의 내부에 있기 때문에 데이터의 통신 경로가 많지 않을 것이다. 그러나 이 개념은 팀 개발의 협업을 어렵게 하고 컴포넌트가 커질 수록 추후 리팩토링하는 것이 더 어려워진다. (나의 경우는 퍼블리셔가 있는 회사에서 HTML을 주면 일체형 컴포넌트를 만들게 되는 점이 있었다...이제 이걸 잘 나누자) JSX 마크업 구현하고자 하는 일체형 컴포넌트를 작성하자. 너무 길어서 깃헙 주소로 대체 - https://github.com/PacktP.. 2019. 9. 17.
[ReactJS] 이벤트 핸들링 - 리액트 방식 이 페이지는 책(리액트 & 리액트 네이티브 통합 교과서)과 리액트 공식 사이트(ko.reactjs.org)를 참고하여 정리한 페이지입니다. 이벤트 처리 React 엘리먼트에서 이벤트를 처리하는 방식은 DOM 엘리먼트에서 이벤트를 처리하는 방식과 매유 유사합니다. 몇 가지 문법적인 차이는 다음과 같습니다. React의 이벤트는 소문자 대신 캐멀 케이스(camelCase)를 사용합니다. JSX를 사용하여 문자열이 아닌 함수로 이벤트 핸들러를 전달합니다. 예를 들어, HTML은 다음과 같습니다. Activate Lasers React에서는 약간 다릅니다. Activate Lasers 또 다른 차이점으로, React에서는 false를 반환해도 기본 동작을 방지할 수 없습니다. 반드시 preventDefault를.. 2019. 9. 17.
[React-Native] console.error: "React Native version mismatch. react-native init AwesomProject 로 프로젝트를 만들어서 빌드를 하면 실행이 안된다. RN의 버전이 안맞아서 그렇다고 해서, rm -rf node_modules/ rm package-lock.json rm -rf ios/build/ 까지 지우고 npm install react-native run-ios 를 실행했는데도 안된다.. react-native -v 으로 확인도 하고 package.json 의 react-native 버전도 확인했는데 안됐다.. 그래서 결국 init 할 때 버전을 픽스해서 세팅했다. react-native init App --version 0.52.0 위 방법으로 최신 버전인 0.60.0 으로 했는데 안되는걸로 보아.. 뭔가 이상하다!! 2019. 8. 29.
[문서번역] thread를 사용한 성능 향상시키기 해당 페이지는 안드로이드 개발 문서 Better performance through threading의 번역본입니다. thread를 사용한 성능 향상시키기 Android에 thread를 사용하면 당신의 앱의 성능을 향상키실 수 있습니다. 이 페이지는 thread를 사용할 수 있는 몇 가지 양상에 대해 설명하고 있습니다. : UI 또는 메인 thread 작업; 앱의 생명주기와 thread 운선순위의 관계 그리고 thread 복잡성을 관리하는데 도움이 되는 플랫폼이 제공하는 방법. 이러한 영역 안에서 이 페이지는 잠재적인 함정과 그것들을 피하기 위한 전략들에 대해 설명하고 있습니다. 메인 thread 사용자가 당신의 앱을 시작할 때, Android는 실행 thread와 함께 새로운 Linux 프로세스를 생성.. 2019. 8. 12.
[알고리즘] 삽입정렬, 인서션 소트 (Insertion Sort) 삽입정렬, 인서션 소트 (insertion Sort) i번째 인덱스의 값을 0부터 i-1번째의 값들 중 자신의 위치를 찾아 정렬을 완성하는 알고리즘. 처음 key값을 "두번째 값"부터 시작한다. 최선의 경우: O(n) 비교 회수: 이동없이 한번의 비교만 이루어진다. 외부 루프: (n-1)번 최악의 경우: O(n^2) 비교 회수: 외부 루프 안의 각 반복마다 i번의 비교 수행 교환 회수: 외부 루프의 각 단계마다 (i+2)번의 이동 발생 영상으로 보기 - Folk Dance Insert-sort with Romanian folk dance Python Code def insertion_sort(arr): arr_len = range(1, len(arr)) for i in arr_len: arr_sort_l.. 2019. 8. 8.
[알고리즘] 선택정렬, 셀렉션소트 (Selection Sort) 선택정렬, 셀렉션소트 (Selection Sort) 1. 주어진 배열에서 최솟값을 찾아 맨 앞에 위치한 값과 SWAP한다. 2. 다음 수행시에 처음 위치의 값을 제외한 나머지 값들을 1번을 수행한다. 장점: 자료 이동 횟수가 미리 결정된다. 단점: 값이 같은 레코드가 있는 경우 상대적인 위치가 변경될 수 있다. 비교회수: 외부 루프: (n-1)번 내부 루프: n-1, n-2, ..., 2, 1번 교환회수: 외부 루프의 실행 회수와 동일 SWAP을 위한 3번의 이동이 필요 영상으로 보기 - Folk Dance Python Code def selection_sort(arr): arr_len = range(len(arr)) for i in arr_len: min_idx = i arr_sub_len = rang.. 2019. 8. 7.
[알고리즘] 거품정렬, 버블 소트(Bubble sort) 거품정렬, 버블소트 (Bubble Sort) 인접한 두 원소를 비교하여 정렬하는 알고리즘. 두 원소의 순서가 정렬되어 있지 않을 경우 두 원소를 swap한다. 1회전 수행 후 가장 큰 값이 뒤로가므로 2회전 때는 맨 끝에 있는 자료는 정렬에서 제외한다. 비교회수: n-1, n-2, ..., 2, 1 번 = n(n-1)/2 교환회수: 입력 자료가 역순으로 정렬되어 있는 최악의 경우, 한 번 교환하기 위하여 3번의 이동(SWAP 함수의 작업)이 필요하므로 (비교 횟수 * 3) 번 = 3n(n-1)/2 입력 자료가 이미 정렬되어 있는 최상의 경우, 자료의 이동이 발생하지 않는다. T(n) = O(n^2) 영상으로 보기 - Folk Dance Bubble-sort with Hungarian ("Csángó") .. 2019. 8. 6.