본문 바로가기

반응형

분류 전체보기

(59)
갑자기 발생한 react-native run-android 에러 상황 01. 오늘 새벽까지 잘 작동했던 react-native run-android 가 오후에 실행했더니 에러가 발생했다. 아니 코드 한 줄 바꾼게 없는데 왜?? 내용을 보면 빌드는 성공한 것 같은데 에뮬레이터에서 앱을 실행시키지를 못했다. 내 작업환경은 macOS에서 안드로이드 앱을 디바이스 없이 에뮬레이터로만 확인하는 중. android build Error type 3 Error: Activity class { } does not exist. 같은 문구로 구글링해서 몇 가지 블로그 글을 찾았지만 따라해도 해결되지 않았다. 대부분 제시한 해결방법은 안드로이드 스튜디오에서 상단 메뉴에 build > Clean Project 를 한 후 안드로이드 스튜디오 재 실행 > rebuild project 클릭 >..
프로젝트 0주차 회고 - 주제선정과 기획 1차 프로젝트를 꾸역꾸역 끝내고 나니 이런 식으로 하나의 제품이 만들어지는구나 를 어렴풋이 알게 되었다. 1차에서는 뭐가 뭔지 모르는 중에 큰 기능 정의만 가지고 페이지들을 만들었고 코드가 작동하는 것에만 급급해서 동료들의 도움을 받아가며 겨우 끝마쳤다. 뿌듯함과 아쉬움이 반반. 그리고 쉴틈 없이 바로 이어지는 파이널 프로젝트. 7주간 진행되는 프로젝트인 만큼 적어도 주 단위로는 기록하자고 한다. 1. Project Idea 이번에도 해은 님의 아이디어로 진행하기로 했다. 이름하여 개.구.리. 개발자/구석에서/이제 나와! 라며 개발자들의 사이드 프로젝트를 위한 커뮤니티 앱이다. 개발자들은 대부분 사이드 프로젝트를 해 보고 싶은 마음은 있지만, 마음 맞는 멤버를 구하기는 어렵다. 그들을 위한 플랫폼으로 개..
state 불변성 관리, immer 라이브러리 써보기. 프로젝트를 진행하면서 전에 써보지 않은 redux-saga, hooks, styled-components 등을 적용해보고 있다. 또 한 가지는 immer 인데 코드 반영 전후로 필요성과 문법을 살펴보고 정리해둔다. 레퍼런스 : https://immerjs.github.io/immer/docs/example-reducer https://react.vlpt.us/basic/23-immer.html immer 가 무엇이고 왜 쓸까? 리액트에서는 배열이나 객체를 업데이트 할 때 직접 수정하지 않고 불변성을 지켜주면서 업데이트를 해야 한다. 객체의 경우 Spread syntax (...)를 사용하고, 배열의 경우 push, splice 같은 함수 대신 concat, filter, map 등의 함수를 사용해야 함...
쿠키, 세션, 토큰에 관하여 처음 관련 자료를 접했을 때 쿠키와 세션은 독립적인 별개의 것이라고 생각했는데 그렇지 않았다. 애매하게 혼동되는 쿠키, 세션, 토큰의 개념을 한번 더 정리합니다. http 통신은 stateless 한 그 특징 때문에 사용자의 주고받은 개별 통신에 대한 정보를 저장하지 않는다. 때문에 같은 사용자가 여러 번 요청을 하더라도 그것을 알 수 없음. 따라서 사용자에 대한 상태를 파악할 수 없음. 이 것을 보완하기 위해 쿠키와 세션이 있음. Cookie 쿠키는 일종의 서버와 클라이언트가 대화하기 위한 수단. 브라우저가 서버와 연결이 되었을 때 브라우저에서 자동적으로 쿠키를 생성하고, response 할 때 쿠키를 담아서 보낸다. 특정 호스트에서 생성된 쿠키는 이후 모든 요청마다 서버로 전송됨 요청 해더의 set-..
MySQL : connection 중복 이슈 MySQL 연동하는 과제를 진행하면서 GET/POST 시에 계속 에러가 발생했다. DB 연결은 되었지만 요청을 하면 매번 아래와 같은 타입 에러가 발생했다. TypeError: db.query is not a function. //도대체 왜!! 쿼리 스트링에는 오류가 없었기 때문에 에러 로그로는 원인을 알 수 없었다. 아직 디버깅이 서툴기 때문에 에러 로그로 확인이 안 될 때가 가장 답답한데, 시간을 많이 허비하고 나서야 원인이 DB 연결 쪽의 이슈라는 것을 발견했다. 원인은 DB connection의 중복. node-mysql 모듈을 사용하는 경우 mysql.createConnection()을 하고 나면 아래에 connection.connect()로 다시 연결할 필요가 없다고 한다. 불필요한 코드이고 ..
MySQL: SQL문 입력하다 ' 또는 `을 입력했을 때 이번 주 데이터베이스 입문, 지난 이틀간 에러를 해결할 수 없어 MySQL을 설치했다 설치했다 지웠다를 몇 차례 반복했다. 원인을 명확하게 알 수 없었고 뭐가 뭔지 모르는 상태라 분노가 상승했지만 튜토리얼과 여러 블로그들의 도움을 받아 어찌어찌 연동에 성공하고 심신의 안정을 찾을 때 즈음. sql문을 입력하다가 작은따옴표가 실수로 입력됐다. 그리고 빠져나올 수가 없었다. 순간 너무 화가 났다!! 해결방법 : sql문 끝에 작은따옴표(') 또는 백 틱(`)을 입력한 경우 다시 한번 같은 부호를 입력해 주고 세미콜론(;)을 닫아준다. mysql> SHOW TABLES' '> '> ; '> ; //세미콜론 만으론 안끝남 '> '> '> //원래의 화살표(->) 모양이 '> 또는 `> 이렇게 바뀌어 나옴 '> ..
JavaScript: Promise, async & await 이해 이전 과제를 진행하던 중에 Promise라는 개념이 이미 몇 차례 등장했었는데 그때는 그때 당장 익혀야 할 다른 것들이 많아서 프로미스는 공부하지못했다. 나중에 다루게 될 개념이라고 들었기 때문에 이런 게 있구나 정도로 넘겼음. 하지만 자바스크립트에서 비동기 처리는 중요한 부분이기 때문에 이번에 정리를 해 둔다. 레퍼런스: MDN: Using promises 캡틴판교: 자바스크립트 Promise 쉽게 이해하기 비동기 처리 자바스크립트의 비동기 처리란 특정 코드의 연산이 끝날 때까지 기다리지 않고 다음 코드를 먼저 실행하는 것.(non blocking) 비동기 처리의 예로는 setTimeout(), ajax 통신을 들 수 있다. 이런 특징은 코드를 실행하는 시간을 효율적으로 쓸 수 있지만, 실행되는 순서를..
ES6: Destructuring (구조분해 할당) 이번 스프린트부터 리액트를 다루게 되는데, ES6 문법을 잘 알고 있어야 리액트를 활용한 과제를 진행할 수 있다고 한다. 그중 Destructuring이 익숙지 않아 블로그에 정리해 본다. Destructuring assignment란? 배열이나 객체의 속성을 해체하여 그 값을 변수에 담을 수 있게 하는 JS 표현식인다. 간단히는 배열과 객체를 좀 더 편하게 다루기 위해 ES6에서 추가된 방법이다. 해체라는 단어가 모호하기 때문에 이전 문법과 비교해서 예시를 보는 게 이해하기 쉬웠다. Array destructuring 이전 문법에서 우리가 배열에서 어떤 값을 추출하기 위해서는 아래와 같이 변수들 각각의 인덱스를 지정해 주어야만 했다. var number = [1, 2, 3, 4, 5]; var a = ..