저는 과거에 신입 UI 디자이너였습니다. 그 때에 처음 입사했던 회사에서 개발자들이 있었는데 개발자들과 소통하면서 디자인을 하던 저와는 전혀 다른 그들의 일에 관심을 갖게되었습니다. 방법을 찾다가 처음에는 흔히 알려진 국비지원을 고민 하던중 지인에게 코드스테이츠라는 곳에서 ‘2017 J2S Conference’ 가 있는데 들어보라는 권유를 받았고, 현직 개발자, 코드스테이츠에서 수료를 끝낸 개발자, 코드스테이츠 관계자들의 강연을 듣고 코드스테이츠에서 배움으로써 개발자가 되어야겠다는 결심을 하였습니다. 결코 쉬운 결심이 아니였지만 정말 고민을 많이 하였는데 다른 이유도 아닌 돈때문이였습니다. 부모님의 지원을 받을 수 없는 입장이기때문에 국비지원을 하려고 했던 이유도 마찬가지였었는데, 현실적으로 생각했을때 Immersive Course까지 하려면 몇백만원이라는 돈이드는데 적은 돈도 아니거니와 배우면서 일을 할 수 없기때문에 생활비까지 걱정해야했습니다....
CodeStates Immersive 후기 (2)
Immersive에서의 약 5주의 시간동안 진행하던 Sprint가 지나고, 6주 Solo week가 지나고, First Project, Final Project를 진행하게 되었습니다. 2주 프로젝트 당시의 스프린트단위로 쪼갠 task들 저와 같이 했던 4명은 overEats라는 팀명으로 배달의 민족이라는 app을 하나하나 뜯어보며 비슷하게나마 제작해보는 프로젝트를 하게 되었는데 4명이 같이 고민을 하며 함께 으쌰으쌰해서 사용자의 플로우가 어떻게 될지 DB의 구조가 어떻게 될지 어떤걸 사용할지 등등 프로젝트 전반에 걸쳐서 구성을 하는 과정이 너무 즐거웠습니다. 함께 고민하고 문제를 해결하고, 할 일을 나누고, 모든 것이 저로서는 처음이였지만 너무나도 즐거웠습니다....
express 이용해보자!
npm install express npm에서 express를 설치 매우 간단하지만 완성된 서버 //server.js const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hello World!'); }); app.post('/post', (req, res) => { console.log(req.body); res.send('Got a POST request'); }); app.listen(3000, () => { console.log('Example app listening on port 3000!'); }); node server.js get은 body를 작성할수 없다. post는 body를 작성해서 받아올수 있다. 로그인 및 회원가입 처럼 데이터가 오가는 것은 post를 이용한다.
mac에서 react-native 설정
Mac에서 xcode를 이용해서 IOS 실행하는 방법 brew install watchman 페이스북의 파일시스템 변환해주는 툴이다. npm install -g react-native-cli 로 react-native 설치 appStore에서 xcode 설치 react-native init AwesomeProject react-native 실행 [폴더명] 폴더에 들어간 후에 react-native run-ios 실행하면 디바이스까지 뜬다. Mac에서 android-studio를 이용해서 android 실행하는 방법 위에 과정을 먼저 실행해야한다. android-studio를 설치 설치중에 설치유형을 선택하라는 메세지에서 ‘사용자 정의’설정으로 Android SDK Android SDK Platform Performance (Intel ® HAXM)( AMD는 여기를 참조하십시오 ) Android Virtual Device 다음을 누르면 확인페이지가 나오고 모두 설치하면된다....
mongoDB 권한 설정하는 방법
use admin show users use admin cur = db.system.users.find() cur.count() db.createUser 해당 데이터베이스의 유저객체를 생성한다. 관리자 계정 생성 예시 use test db.createUser( {user: "testUser", pwd: "test", roles: ["readWrite", "dbAdmin"] } ) 읽기권한, 특정 데이터베이스 읽고쓰기 권한 계정 생성 예시 use admin db.createUser( {user: "testUser", userSource: "test", roles: ["read"], otherDBRoles:{ testDB2: ["readWrite"] } } ) db.dropUser 해당 데이터베이스의 유저객체를 삭제한다. 삭제 예시 use testDB db.dropUser("testUser") 사용자 관리자는 데이터베이스나 다른 관리 기능을 운영하는 권한 말고 사용자를 생성할 수 있는 권한만 갖고 있어야 한다....
S3에 파일을 업로드 하는 방법
npm install aws-sdk —save const AWS = require('aws-sdk'); const fs = require('fs'); AWS.config.loadFromPath('<<config 파일위치>>'); AWS.config.update({ region: 'ap-northeast-2' }); aws-sdk : s3 접근에 필요한 모듈 fs : 파일을 읽어오는 모듈 config.loadFromPath: accessKeyId, secretAccessKey 를 config파일에 저장해둔다. 서버에서 접근하려면 accessKeyId 와 secretAccessKey가 필요하고, 이 두개의 키는 AWS에서 S3에 접근 가능한 IAM User를 생성하면 발급! config.json { accessKeyId: "비밀비밀", secretAccessKey: "더 비밀비밀" } region을 적어준다. (서울은 “ap-northeast-2”) * IAM란 Identity and Access Management의 약자로, AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스다....
TIL-0201
목표 React-native 다뤄보기 IOS 화면 띄우기 android 화면 띄우기 Android-studio 설정 xcode를 설치해서 IOS가상 디바이스로 띄워서 확인했고, android-studio를 이용해서 android 환경의 가상 디바이스를 확인했고, expo를 이용해서 실제 디바이스에서 확인하였다. 웹과 다르게 모바일은 환경을 구성해줘야하는데 그런 환경설정 부분들만 잘 해준다면 쉽게 react-native로 hello world를 띄울수 있었다. !! 다양한 실험을 했고, 매우 좋은 공부였다. 파일을 열고 App.js 에서 <Text>텍스트</Text>, <View>뷰<View/>, <Image>이미지</Image> 와 style을 주는법, style 객체로 빼서 여러 효과 적용시켜보고, 사용했다. 버튼을 만들었는데 버튼은 잘 되지 않았다…...
TIL-0202
목표 server get, post 조작하기 database 공부하기 npm 이해하기 서버를 다루다가 서버가 꺼지지 않고 계속 동작해서 테스트를 돌릴 수가 없을 때가 있었다. lsof -i:[포트번호] 를 이용해서 적어넣은 포트번호가 실행되고 있는지를 확인한다. kill -9 [PID] 실행되고 있다면 PID번호가 나오는데 적어 넣고 사용하면 강제종료된다. post를 보내려고 하다 보니 데이터를 담을곳과 꺼내올 곳이 필요해 데이터베이스를 공부했다.,… database 공부하기 이전에 공부하긴 했지만 한번더 확인하고 정리해본다. mysql -u root -p; 패스워드까지 입력하면 mysql에 들어간다. SHOW DATABASES;...
TIL-0203
목표 socket.io 공부하기 socket.io 공부하기 어제 서버를 만들어 보다가 오늘 socket.io에 대하여 공부를 하였다. socket.io란 모듈을 이용해서 서버와 클라이언트를 지속적으로 통신하도록 만들어준다. npm install --save socket.io 설치를 먼저 해야한다. const express = require('express'); const http = require('http'); const path = require('path'); const socketIO = require('socket.io'); const app = express(); const publicPath = path.join(__dirname, '../client'); app.use(express.static(publicPath)); let server = http.createServer(app).listen(3000, () => { console.log('listening.....3000'); }); let io = socketIO(server); io.on('connection', socket => { console....
TIL-0206
한 일 회원가입 DB 저장하기 로그인 DB 탐색하기 주소변경 DB 변경하기 database 공부하기 회원가입 처음에 회원가입을 만들면서 간단한 클라이언트 페이지를 만들고 시작했는데 fetch로 POST요청을 보내도 서버로 요청이 오고 응답도 잘 오는데 보내는것이 잘 되지 않았다. 1시간정도 해메다가 이유는 content-type이 바뀌질 않아서 요청이 가도 body를 읽을수가 없는 것이였다. 크롬 개발자 도구에 네트워크 탭을 잘 확인 해야겠다… 이후에 postman으로 계속 회원가입을 만들었고, 그 다음 문제점은 DB에 넣고 중복을 체크하는 문제였다. 쿼리문 다음에 쿼리문을 넣는것이 잘 되지 않았고, 이것도 한두시간 헤메다가 결국 비동기 문제라는 것을 깨달았고, 비동기를 처리하기 위해 여러 방법을 찾았다....
TIL-0207
한 일 mysql로 만든 DB nosql(mongoDB)로 변경 회의 kick off meeting 회의 프로젝트 팀 내부에서 회의를 했다. 간략하게 solo week 동안 무엇을 공부했는지 서로 공유하고, 어떻게 맞춰볼지를 토의했다. DB변경 제안이 나왔고, DB마다 장단점이 있어서 시도해보는 것도 좋을것 같고, 프로젝트와 소소하게 더 맞는 nosql로 변경했다. 그리고 android studio와 expo의 차이점도 얘기를 나누고, AWS에서 어떤식으로 적용할지도 토의 했다. kick off meeting 우리가 어떠한 방식으로 진행할지와 앞으로 어떤식으로 하면 좋을지 엔지니어님과 얘기를 나누었다. 우선 시도해보는 것에 매우 큰 중점을 두고 방향성만 잃지 않으면 된다고 말씀하셨다....
TIL-0208
한 일 AWS DocumentDB 사용법 - 실패 AWS Document DB 사용법 AWS를 이용해 mongoDB를 사용하는 방법을 공부했다. 로컬에서만 동작하던 데이터베이스를 클라우드 컴퓨터에 올려놓고 사용하기 위해 사용법을 익히고 시도했다. brew install mongo 생성하고 클러스터를 만들고, 인스턴스 3개가 만들어졌다. 금방만들어져서 된건가 싶은 정도였는데 역시나 되지 않았다. 연결하는 방법자체에 문제도 있었고, 계속 검색하면서 명령어를 이것저것 시도하다보니 엄청나게 꼬인 기분이였다. 그 이후에 엔지니어님의 도움을 받아서 mongo DB를 잘못 했던 것이 아닌 권한문제때문에 collection을 저장할 database의 폴더를 읽지 못하는 문제였다....
TIL-0209
한 일 AWS DocumentDB - 중단 AWS EC2 - 성공 팀 프로젝트 체크인 AWS Document DB 시간투자를 조금 하다가 잘 되지 않았는데 크레딧이 사용되었다. 그래서 삭제하였다. AWS EC2 이후에 그냥 EC2를 이용해서 시도를 해봤는데 되었다. 권한없이 연결만 되는지 보았는데 너무 수월하게 연결이 되었다. 인스턴스를 생성하고 pem키를 이용해 연결을 하였다. 그리고 이후에 mongo DB 공식문서를 읽으면서 순서대로 진행하니 쉽게 되었다. 팀 프로젝트 체크인 오후에 막히는 부분이나 앞으로 해야되는 부분들에 대해 궁금증을 가지고 있었는데 명확해졌다....
TIL-0210
한 일 API문서 수정 카테고리 + 주소 JEST API문서 수정 API를 보내는 문서를 수정해서 notion 에 작성했다. 로그인,회원가입,회원탈퇴,음식점(카테고리+주소)에 맞게 요청을 받으면 응답해준다. 어떤값을 보내줘야 하는지와 어떻게 결과가 나오는지, 어떤 status code를 보내주는지 작성했다. 앞으로 작성하면서 계속해서 수정하게 될 것이다. 카테고리 + 주소 이전엔 카테고리만 분류해서 데이터를 보내줬으나, 오늘 주소를 같이 확인해서 데이터를 보내주게 변경했다. 그리고 데이터를 리스트따로, 메뉴따로, 보내려고 했으나, 서버로 쓰는 컴퓨터가 좋지않아서 속도가 오래걸렸다. 그래서 한번에 보내주고 클라이언트에서 보관하고 있는 방식으로 다시 리팩토링을 하였다....
TIL-0212
한 일 Json 토큰 리팩토링 cors JSON 요청을 받아서 응답을 해주는 과정에서 res.end() 를 하면 잘 전달이 되는데 res.json() res.send() 의 경우에는 전달이 되지 않는다….. 이문제는 계속해서 찾아봐야 겠다…. 로그인을 성공할 때 토큰을 클라이언트에 전달해줘야 하는 과정에서 필요한 부분이다. 토큰( JWT ) 토큰은 클라이언트와 서버가 로그인을 한 이후로 로그인정보를 필요로 하는 작업등에서 계속해서 로그인 정보를 요청하고 응답할때마다 전송해주는 경우에는 너무나도 보안이 취약하기 때문에 세션,쿠키 와 토큰등등의 방법으로 보안적인 이슈를 해결한다....