분류 전체보기 38

[DynamoDB] 비동기 처리 - 익명함수를 기다리지 않고 return 하는 문제

다이나모에 쿼리를 보내고 그 값을 클라이언트에 전달하는 상황이었다. AWS 독스에 있는 코드를 참고해서 docClient.query(params, function(err, data) { if (err) { console.error("Unable to query. Error:", JSON.stringify(err, null, 2)); } else { console.log("Query succeeded."); data.Items.forEach(function(item) { console.log(" -", item.year + ": " + item.title); }); } }); 의 형식을 이용해, 쿼리의 값을 바로 함수로 넘기고, 그 값을 가공해 클라이언트로 넘기려고 하였다. export default as..

DB 2022.01.21

[DynamoDB] DynamoDB의 구성 요소들(key, index)

MySql을 쓰다가, DynamoDB로 넘어오게 되었다. 지금까지 써본 DB라고는 RDBMS가 전부였으니 이런 NoSql의 개념이 너무나도 어려웠었다. 특히 정보가 적은 DynamoDB는 더더욱 그랬다. 만약 내가 AWS를 쓰고 있지 않았다면 얘를 쓸 일은 없었을듯 하다...ㅋㅋㅋ 스키마, 칼럼으로 이뤄진 RDBMS를 사용하다, key-value라는 형태를 가진 DynamoDB를 마주하게 되면 자꾸 RDBMS의 개념을 다이나모에 대입하게 된다. 처음엔 key가 칼럼명이고, value는 그 값이라고 생각했는데 오히려 그러니 이해가 더더욱 안 되었다. [DynamoDB의 구성] 다이나모도 역시 테이블로 구성이 되어있다. 스키마가 없는 테이블. RDBMS의 한 row를 다이나모에서는 item이라고 보면 된다...

DB 2022.01.14

[AWS] serverless webSocket을 이용해 DM 앱 만들기 - 2

고생고생하던 채팅앱을 드디어 완성했다. 에러가 나던 부분들은 보통 권한 문제였어서 코드 상으로는 크게 고칠 게 없었다. 1. 코드 수정 부분 (1편에서 유튜브 동영상을 보면 예제 코드가 있습니다. 아래는 그 코드에서 수정한 부분들입니다.) * const result = await docClient.query(params).promise(); if (result.Items) { ... } 이 부분에서 if 부분이 작동이 안 됐다. 왜인지는 모르겠으나 변수에 잘 저장이 안 된 것으로 판단하고 docClient.query(params, async function (err, data) { ... } 이렇게 바로 처리해주었다. result를 data로 바꾸기만 하면 된다. * 위 문제처럼 try { await a..

AWS 2022.01.03

[AWS] serverless webSocket을 이용해 DM 앱 만들기 - 1

디엠 기능을 만들어야 하는 상황이 생겼다. 보통 채팅 기능이라고들 한다. 나는 DM이라는 말이 더 편해서 DM으로 사용 중. 처음엔 nodejs의 socket 통신을 이용하려고 했는데 aws를 쓰고 있는만큼 aws를 이용해서 소켓통신을 하는 게 좋을 것 같아 aws에 관해 계속 서칭을 했다... 이게 얼마나 삽질이 될지는 몰랐다... nodejs socket은 자료가 매우 많아서 비슷하겠거니 했는데, aws는 자료가 엄청 없다. 특히 한국어 자료는. 또 어떻게 채팅을 구현하냐도 천차만별이라서, 내가 원하는 기능 찾기가 매우매우 힘들었다. 지금 아직 완벽하게 진행은 못했지만, 우선 한 만큼만 공유해보려 한다. 먼저 저에게 많은 도움을 주신 유튜브 영상을 소개합니다. 이 영상을 보고 98%정도 따라했다. 2..

AWS 2021.12.27

[DB] NoSql의 종류 및 차이

지금까지 쭉 MySql을 쓰다가 좀 더 제약이 없는 DB가 필요해졌다. 그래서 RDBMS와 NoSql을 섞어 쓰기로 했다. 기존 쓰던 유저 데이터들은 RDBMS로, 로그 관리는 NoSql로 쓰는 걸로. 종류마다 정의나 차이점은 구글링 하면 자료가 많으니 내 식대로 풀어서 이해해보겠다. *NoSql의 종류 나는 NoSql이라면 MongoDB정도만 알고 있었는데 이런 브랜드 말고 데이터 저장 방식에도 종류 차이가 있다는 걸 알았다. 2. Wide Column Store, Wide Column Database 4. Graph Database 1. Key - Value Database - 사진처럼 key와 value 쌍으로 저장한다. - value에 모든 데이터 타입을 허용한다. boolean, integet부..

DB 2021.12.22

[리눅스] 파이프와 리다이렉션의 차이

*본 글은 전문적으로 파이프와 리다이렉션의 차이를 쓴 글이 아니며, 저의 느낌을 쓴 글입니다. 리눅스 미니쉘을 만들면서 리다이렉션과 파이프의 차이가 궁금해졌다. 둘 다 입출력과 관련된 명령어 같아서 정확히 뭐가 다를까 싶었다. 개인적으로 느낀 바로는, 파이프는 함수의 사용이고, 리다이렉션은 printf의 사용이라고 느꼈다. 파이프 사용은 함수에서 argument를 넘겨주는 느낌. 가공한 값을 넘겨줘서 또 가공한다. 리다이렉션 사용은 fprintf 느낌. 가공한 값을 정해진 장소에 쓰거나 읽기만 한다. 뭔가 이렇게 비유해보니 좀 더 와닿는 느낌ㅎㅎ!

리눅스 2021.11.13

[AWS] 이모지 저장하기

프론트엔드와 DB 모두 utf8mb로 설정했는데도 이모지가 저장되지 않아 이상했었는데, 답은 서버에 있었다. 서버에서 보내면서 utf8로 보내고 있어 이모지가 깨져 통신됐던 것. aws console -> RDS -> 파라미터 그룹 -> 수정 으로 진행하면 된다. 아래 블로그에서 바꾸라는 것만 다 바꿨더니 잘 됐다. 참고: https://velog.io/@lake/MySQLMaria-DB%EC%97%90-%EC%9D%B4%EB%AA%A8%ED%8B%B0%EC%BD%98Emoji-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0 MySQL(Maria DB)에 이모지(Emoji) 저장하기 Issue 프로젝트 진행중 이모지(Emoji)를 DB에 저장해야 했다. MySQL에서 한글 및 다른 언어..

AWS 2021.10.26

[리눅스] 미니쉘 만들기

시스템 관련 수업을 들으면서, 미니쉘 만들기 실습을 진행했다. 이전 과제에서 기본 미니쉘을 제작했고, 이번 과제에서는 리다이렉션과 파이프를 적용했다. 난이도를 낮추어 한 줄에 하나의 IPC만 허용하였다. 선배님의 과제와 인터넷을 참고하여 진행하였는데... 이전 과제를 최대한 변형하지 않고 진행하려고 하니 코드가 아주 엉망이 됐다ㅋㅋㅋㅋ... 하면서 너무너무 거슬렸지만 제출이 우선이라서 그냥 패스 ㅎㅎ.. Pipe // pipe cmd function void ex_launchPipe(char **args, char **argsPipe) { int pipefd[2]; pid_t pid1, pid2; //pipe if (pipe(pipefd) < 0) { printf("\nPipe could not be i..

리눅스 2021.10.23