목록전체 글 (259)
차근차근
0. 리액트 네이티브는 어떻게 동작할까? 리액트에서 가상(Virtual) DOM은 화면이 어떤 모습이어야 하는지 개발자가 작성한 내용과 실제 화면에 렌더링되는 것 사이에 존재하는 레이어에 해당한다. 브라우저에서 상호작용하는 사용자 인터페이스를 렌더링하기 위해서는 반드시 브라우저의 DOM을 수정해야한다. 이는 값비싼 동작으로, 과도한 DOM수정은 심각한 성능 저하를 유발한다. 그러나!! 리액트는 페이지의 변화를 바로 렌더링하지 않고 먼저 메모리에 존재하는 가상 DOM에서 변화가 필요한 곳을 계산하고 필요한 최소한의 변경사항만 렌더링한다. 브라우저의 DOM으로 렌더링하는 대신에 리액트 네이티브는 objective-C API를 호출하여 iOS 컴포넌트로 렌더링하고, 자바 API를 호출하여 안드로이드 컴포넌트를..
Learning React Native, 2nd Edition, by Bonnie Eisenman 정리 0. React Native란 무엇인가? 리액트 네이티브는 iOS와 안드로이드에서 동작하는 네이티브 모바일 앱을 만드는 자바스크립트 프레임워크이다. 리액트 네이티브는 사용자 인터페이스를 만드는 페이스북의 자바스크립트 라이브러리인 리액트에 기반을 두고 있다. 브라우저가 아닌 모바일이 타깃. 1. 리액트 네이티브의 이점 대상 플랫폼의 표준 렌더링 API를 사용한다. 작성한 마크업을 플랫폼에 따라 그에 상응하는 진짜 네이티브 엘리먼트로 전환한다. 게다가 리액트는 메인 UI스레드와 분리되어 실행되기에 앱의 역량을 줄이지 않아도 앱은 빠른 성능을 유지할 수 있다. props나 state가 변경될 때 리액트 네이..
0. 제목 백준 2178 미로 탐색 BOJ 2178 미로 탐색 C++ 2178 미로 탐색 1. 문제 https://www.acmicpc.net/problem/2178 2. 풀이 최단거리 구하는 문제로 BFS를 사용하였다. make_pair를 사용하여 좌표쌍을 큐에 push하였다. BFS특성상 한단계씩 뻗어 나가기때문에 최단거리를 구하는데 적합하다. 큐에는 탐색할 좌표들을 담아놓는다. 큐에 있는 좌표가 더이상 주변의 탐색을 모두 끝낸 좌표일때 pop을 해준다. dist배열의 값이 0이면 아직 방문하지 않은 것이고 1 이상이면 방문을 했다는 것이고 1이상의 숫자는 dist[i][j] 에 오기까지 거친 블록의 수이다. 주의할 점으로는 입력을 받을때 연속해서 받기때문에 scanf("%1d", &arr[i][j]..
0. Redux 리덕스는 state management 툴이다. 리덕스가 필요한 이유는, 컴포넌트는 local state를 가지고 있고, 앱은 global state를 가지고 있기 때문이다. 예를 들어, 인스타그램 사진이 하트를 만든다고 할 때 하트는 2개의 state가 있다. 하트누르면 빨간색, 안누르면 회색. 이 컴포넌트는 local state이 있는 것이다. 문제는 앱은 많은 컴포넌트를 기반으로 지어졌는데 또한 동시에 global state를 가지고 있다. global state의 예시는 유저가 로그인을 했느냐, 안했느냐의 여부이다. global state에서는 모든 컴포넌트가 영향을 받는다. 유저가 로그인을 했느냐, 안했느냐에 따라 앱이 어떻게 보이는지도 다르다. 즉, global state, l..
0. 제목 백준 7576 토마토 BOJ 7576 토마토 C++ 7576 토마토 1. 문제 https://www.acmicpc.net/problem/7576 2. 풀이 한단계씩 뻗어나가는 것이 효율적이라 판단하여 BFS를 사용하였다. make_pair를 사용하여 좌표쌍을 큐에 push하였다. 처음에 배열 값들을 입력받음과 동시에 그 값이 1이면 큐에 push 해주었다. 큐에는 탐색할 좌표들을 담아놓는다. 큐에 있는 좌표가 더이상 주변의 탐색을 모두 끝낸 좌표일때 pop을 해준다. 지금까지 풀었던 bfs문제들은 bfs함수내부에서 매개변수로 들어온 좌표들을 큐에 push 해주었다. 그러나 이 문제는 입력과 동시에 push 를 하였다. bfs함수내에서 한번의 루프를 돌때마다 한단계씩 뻗어나가고 서로 떨어져있는 ..
0. 제목 백준 2022 사다리 BOJ 2022 사다리 C++ 2022 사다리 1. 문제 https://www.acmicpc.net/problem/2133 2. 풀이 함수 func에서는 주어진 x와 y로 mid를 구한 후 기울기와 피타고라스정리를 이용하여 c에 관해 정리하였다. 수는 소수점 여섯째 자리까지 주어지므로 범위가 0.000001보다 큰동안 반복한다. 이분탐색을 통하여 범위롤 계속 갱신해주고 소수 여섯째자리의 정확도로 mid를 구한다. 절대/상대 오차는 0.001 까지 허용하므로 소수 셋째자리까지 출력해준다. 3. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #inclu..
0. 제목 백준 2003 수들의 합 2 BOJ 2003 수들의 합 2 C++ 2003 수들의 합 2 1. 문제 https://www.acmicpc.net/problem/2003 2. 풀이 startIdx를 이용해 합의 시작점을 저장해준다. sum이 구하고자 하는 합 M과 같아지면 가능한 경우의 수인 cnt를 1증가시켜주고 M을 넘어가면 while문을 빠져나간다. 만약 while문에서 sum이 M보다 작고 startIdx가 배열의 마지막 원소를 지나치면 즉, N+1 이 되면 while문을 빠져나온다. cnt를 출력하면 정답니다. 그런데 이러한 문제는 투포인터를 사용한다고 하면 된다. 위 방법도 그와 비슷한 방법이지만 투포인터의 내용을 살려 또 다른 코드를 첨부하겠다. 투포인터 방식을 사용하면 위 방식보다 ..
0. 제목 백준 1789 수들의 합 BOJ 1789 수들의 합 C++ 1789 수들의 합 1. 문제 https://www.acmicpc.net/problem/1789 2. 풀이 while문이 돌면서 sum에 num을 더해준다. num을 하나 더해주었으므로 cnt도 1 더해준다. 만약 sum이 구하고자 하는 값 S보다 커지면 현재 cnt 에서 1을 빼준다. 예를 들면, 18을 구하고 싶었다면 1,2,3,4,5,6 까지 가면 21로 18보다 커지고 3을 빼면 되므로 1,2,4,5,6 즉, 5개가 나온다. num은 한 loop가 지날때 마다 1씩 증가한다. 3. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include using names..
0. Getting the Weather 위치 정보 확인에서 받아온 위도, 경도를 토대로 api를 부른다. isLoaded = true를 쓰는 대신에 새로운 _getWeather이라는 새로운 함수를 만들었다.경도, 위도, 2개의 attrubutes를 얻게 되면 웹사이트에서 제공하는 api key를 사용한다. open weather map >> current weather data >> geo coordinates 를 그들의 서버에 보내면 날씨정보를 받아올 수 있는 것이다. 그것을 보낼 때마다 response를 json으로 하고 그 json을 console.log 할것이다. https://openweathermap.org/ Сurrent weather and forecast - OpenWeatherMap ..
0. Building the Loading View 아래 내용들은 노마드코더의 weather app tutorial을 토대로 작성하였다. 리액트 네이티브로 앱을 만들때, 항상 local state로 작업을 해야한다. shorthand property, 예를 들면 padding: 40 30 50 60, 이런것은 CSS와 다르게 작동하지 않는다. 아래 화면을 설명해보면 다음과 같다. 첫번째 컴포넌트 안에 state를 만들고 isLoaded: false로 저장을 하였다. 데이터 api를 불러오게 되면 이 값은 true가 될 것이다. 하지만 그 전에는 Loading 중이기 때문에 false이다. 그 컴포넌트 안에 컨디션을 만들었다. isLoaded? 이것은 로딩이 되었다면 , 아직 보여줄 자료는 없고(null)..