목록전체 글 (265)
SW
0. Vanilla ToDo 간단한 ToDo에 Redux를 도입하는 과정을 잘 알기위해 먼저 다음과 같이 세팅한다. index.html index.js 위와 같이 코드를 작성한 후 실행시켜보면 항목을 추가할 때마다 ADD_TODO라는 action이 일어남을 콘솔에서 확인할 수 있다. 1. State Mutation Mutation은 변형이라는 뜻을 가지고 있다. Mutation의 예시를 보겠다. 아래코드에서는 friends를 변형한 것이다. 첫번째 friends에는 1명이 있었는데 두번째 friends에는 2명이 있다. 새로운 state를 create하고 그 새로운 state를 return할 것이다. mutation개념을 적용시킨 것은 다음과 같다. 이전 state를 가져온 후 text를 추가하여 ret..
0. 오류 react-native run-android를 실행했더니 다음과 같이 JAVA_HOME 오류가 떴다. zsh을 사용하고 있어서 JAVA_HOME을 vi ~/.zshrc 에서 설정하였다. 다음과 같이 설정이 되어있었지만 여전히 오류가 떴다. 1. 해결 현재 jdk13.0.1.jdk로 설정되어 있던 것을 8로 바꾸었더니 해결되었다. jdk8을 다음과 같이 설치하였다. 설치 후 vi ~/.zshrc 를 실행하여 JAVA_HOME을 다음과 같이 바꿔주었다. 다시 react-native run-android를 실행 이제 다음과 같은 에뮬레이터 화면을 볼 수 있다.
0. Vanilla Counter Redux는 기본적으로 Javascript Application들의 state(상태)를 관리하는 방법이다. React뿐만 아니라 Angular, Vue.js, Vanilla Javascript 등 원하는 곳에 쓸 수 있다. 먼저 project를 시작하기 위해 다음과 같은 명령어를 실행한다. 디렉터리가 만들어지고 해당 디렉터리로 이동한다. redux를 사용하지 않는 버전을 보기 위하여 /src/index.js에서 간단하게 코드를 작성한다. yarn start 명령어를 실행하면 다음과 같은 화면을 볼 수 있다. 1. Store & Reducer redux를 사용하는 버전에 대하여 살펴보겠다. 먼저 redux를 사용하기 위해 yarn add redux(혹은 npm instal..
0. 변수 값을 담는 상수, 변수는 val, var로 시작한다. val은 final로 값을 바꿀 수 없다. var는 값을 바꿀 수 있다. 타입을 정해줄때는 var hello2: String = "hello world2" 와 같이 :뒤에 붙여준다. 그런데 var hello2 = "hello world2"는 타입이 String임을 짐작할 수 있다. 따라서 :String을 생략할 수 있다. var hello3: String? 에서 ?는 null값이 올 수 있음을 알려주는 기호이다. 1. 배열 & 반복 & 캐스팅 listOf를 사용하여 배열을 만들 수 있다. 수정이 불가능하다. mutableListOf를 사용하여 배열을 만들 수 있다. 수정이 가능하다. 반복문의 기본 형태 : for(요소 in 배열) for문의..
0. 라우팅 라우팅은 한 곳에 소스가 너무 많아지면 복잡해져 관리가 힘들어지므로 분리해주는 것이다. API가 index.js 파일 내에 모두 들어가 있으면 복잡하고 각 목적에 맞지 않다. Rest API는 웹에서 API 통신을 할 때 규약으로 정형화해서 깔끔하게 구분이 가능하도록 만든 후 범용성이나 확장성에 유용하게 하려는 구조로 만드는 API이다. API는 뭘까? API는 TV의 리모콘과 같다. 볼륨 키우기와 같은 버튼(기능)의 집합이 리모콘이고 그것이 API라고 볼 수 있다. 1. API 설계 GET : 가져오기 POST : 추가 PUT : 수정 DELETE : 삭제 설계 : 특정 URL 주소로 API접속을 요청하면 각 주소에 따라 각각 CRUD되게 할 것이며, 그 방식은 RestAPI에서 사용하는 ..
0. 샘플소스 구성 폴더는 다음과 같이 구성되어 있다. index.js는 실제 logic이 들어가는 문법파일(javascript)이다. /view/pages/index.ejs는 화면을 나타내는 파일이다. ejs는 기존 정적인 값만 담을 수 있던 html에서 동적인 값(db에서 가져온 값 등)도 함께 표시할 수 있는 템플릿 엔진이다. package.json은 nodejs에서 필요한 파일들이 json형식으로 나열되어 있다. 1. DB 세팅 MongoDB를 사용할 것인데 MongoDB는 NoSQL이다. 테이블 형식이 아닌 JSON형식을 사용한다. DB에 접속하는 방법은 3가지가 있다. 콘솔창에서 명령어로 접속하는 방법 웹으로 접속(확인하는 용도) 코드로 접속(이 앱에서는 코드로 접속하는 방법을 사용하겠다.) ..
0. 사전 지식 다이어리 앱 자체만으로는 동작이 되지 않는다. 왜냐하면 일기를 썼으면 어딘가에 저장을 해야하고 불러올 수 있어야 하고 수정할 수 있어야 하기 때문이다. 방법은 있다. 단말기 자체에 있는 DB를 이용하는 것이다. 그러나 다른 핸드폰을 사용하게 되면 전에 있던 데이터를 사용할 수 없다. 그래서 서버가 필요한 것이다. 먼저 서버는 어떻게 만들까? 일단 서버사이드 언어로는 nodejs, JSP, php, django 등이 있다. 여기서는 Nodejs 를 사용할 것이다. 서버 언어는 데이터베이스에서 정보를 가져온 후 정보를 표시하는 뷰쪽으로 정보를 전달해준다. 뷰에서 사용자가 가져온 정보를 볼 수 있다. Nodejs는 Client, Server 두 역할을 모두 할 수 있다. 라이브러리와 프레임워크..
0. 꼬리 재귀 함수 기존의 재귀함수는 모든 재귀 호출이 완료될 때까지는 결과를 얻을 수 없었으나, 꼬리 재귀에서는 계산이 먼저 수행되고, 재귀 호출이 수행되는 구조이다. 컴파일러가 stackoverflow가 발생하지 않도록 효율적인 순환 기반의 버전으로 최적화 해준다. 마지막으로 수행하는 구문이 자신을 호출하는 구문이어야 하며 재귀 호출 후 다른 코드가 있으면 사용할 수 없다. 꼬리 재귀 함수를 사용하지 않는 경우는 아래와 같은 경우인데 n*factorial(n - 1) 이 마지막 작업이 아니기 때문이다. 다음은 fibonacci(n-1, b, a+b)를 마지막 작업으로 두고 작성한 함수이다. 이미지 2에서 n에 100을 대입하면 정상 작동한다. 그러나 10000을 대입하면 StackOverflow가 ..
0. 제목 백준 1182 부분수열의 합 BOJ 1182 부분수열의 합 C++ 1182 부분수열의 합 1. 문제 https://www.acmicpc.net/problem/1182 2. 풀이 브루트포스 방식으로 해결하였다. 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 #include using namespace std; int arr[20]; int N, S; int cnt; void dfs(int i, int sum){ if(i == N) return; if(sum + arr[i] == S) cnt++; dfs(i + 1, sum); dfs(i + 1, sum + arr[i]); } int mai..
0. 제목 백준 1987 알파벳 BOJ 1987 알파벳 C++ 1987 알파벳 1. 문제 https://www.acmicpc.net/problem/1987 2. 풀이 DFS와 백트래킹을 사용하는 문제이다. 방문 여부를 체크할 때 A~Z, 총 26개의 인덱스를 가진다. 상하좌우 이동하며, 방문하지 않았다면 true로 체크한다. 방문한적이 있다면 무시하고 넘어간다. 가장 깊게 들어간 최댓값이 정답이다. 3. 코드 #include #include #include #include using namespace std; char arr[21][21]; bool visitedAlpha[26];//A~Z int R, C; int dx[4] = {0,1,0,-1}; int dy[4] = {1,0,-1,0}; int df..