본문 바로가기

전체 글8

몽고디비는 group by를 사용할 수 없을까? 몽고디비를 사용한 프로젝트에서 원하는 조건의 데이터를 조회해오기 위해서는 find 쿼리를 사용합니다 그렇지만 기존의 find 쿼리는 복잡한 조건을 적용시켜주거나, 데이터값을 가공시켜주기에는 적합하지 않습니다. 기존의 find 쿼리로는 group by를 사용할 수 없죠. 그러면 몽고디비는 group by를 사용할 수 없을까요? 아닙니다! aggregate를 사용해보세요! aggregate는 기본적으로 pipeline 구조를 사용합니다. 여러개의 stage로 이루어진 pipeline을 구성할 수 있고, 전 stage를 거친 결과가 다음 stage로 넘어가는 식입니다. 어떤 스테이지가 있는지는 미리 정해져있고, 필요한 가공/조회 작업들을 해주는 스테이지들을 적절하게 배치해주면 됩니다. 많이 쓰이는 stage들.. 2022. 7. 22.
데이터 재가공을 위해 사용할 때 유용한 함수 map과 reduce 최대한 많이 재사용할 수 있도록 작성한 쿼리문을 작성하고 데이터를 가지고 오게 되면, 원하는 형태로 데이터를 보여주기 위해 다양한 함수를 사용하여 재가공하게 된다. 해당 아티클에서는 앱잼기간 동안 실제로 데이터 재가공을 위해 사용했던 함수들을 소개하고, 어떤 상황에서 어떻게 사용했는지 예시를 들어보려고 한다. Array.map() arr.map(callback(currentValue[, index[, array]])[, thisArg]) arr.map((요소, 인덱스, 배열) ⇒ {return 요소}) 매개변수 더보기 callback 새로운 배열 요소를 생성하는 함수. 다음 세 가지 인수를 가집니다. - currentValue 처리할 현재 요소. - index (Optional) 처리할 현재 요소의 인덱.. 2022. 1. 28.
[SOPT 29] 첫번째 솝커톤 회고하기 게을러서 미루다 보니 회고가 조금 (많이) 늦어졌다. 솝커톤이 끝나고 2차 행사도 있었고, 기획 경선, 마지막 서버 세미나, 기디 팀빌딩 및 개발자 네트워킹 등등이 있었는데 드디어 내일! 개발 네트워킹을 앞두고 심란해하던 차에 정리할 겸 회고 글을 쓰게 되었다. (사실 이전에 이미 끝내둬야 했음,,) 솝커톤이 끝나고 기록해뒀던 글들과 팀원들과 함께했던 회고를 바탕으로 기억을 더듬어 작성해본다. 티켓팅부터 팀빌딩까지 솝커톤은 신청부터가 아주 아주 아주 힘든 편이다,, 그래도 서버파트는 모든 팀에 배정되므로 그나마 티오가 많은 편인데 클라파트(안드, 아요, 웹)은 4팀씩밖에 배정이 안되기 때문에 정말정말 빡세다고 들었다. 덕분에 수강신청에서도 잘 안쓰는 네이비즘을 켜놓고 티켓팅을 했다 ㅋㅋㅋㅋ (tmi: 우.. 2022. 1. 2.
SOPT 29기 서버 파트 지원서/면접 후기 이제야 후기를 쓰게 됐는데, 올해 2학기에 부족한 실력으로 지원했던 솝트에 합격했다. 나는 문과생이고, 코딩을 배운지 얼마 안된 복수전공생이었고, 올해 처음 프로젝트를 해본 코린이였는데 감사하게도 솝트 29기 서버 파트에 합격해서 전혀 생각치도 못했던 것들을 배워나가고 있다. 얼마전에 솝트 내에서 자체적으로 시행하는 해커톤인 솝커톤에 참가하게 되었는데, 솝커톤에 대한 리마인드를 진행해보기 전에 지원 과정부터 남겨두면 좋을 것 같아 포스팅을 쓰게 되었다. 계기 위에서 언급했다시피 나는 문과생이고, 프로젝트라는 것을 올해 처음 진행해보았다. 그 전에는 학교 복수전공을 하면서 들은 전공 기초 강의에서 파이썬, C, 웹 기초(http, 아주 조금의 JS) 지식만 가지고 있었고, 나랑 비슷하게 거의 아무것도 모르.. 2021. 11. 24.
AWS Amplify) 안드로이드와 AWS S3 버켓 연결하기 지난번에 작성한 AWS lambda 글에서는 S3와 Lambda function을 연결하는 내용을 다뤘었다. 그때 글에서 언급했다시피, 프로젝트의 궁극적 목표는 안드로이드와의 연결인데, S3 트리거를 활용한 람다 함수가 원활하게 돌아가도록 하려면, 안드로이드에서 S3 버켓으로 텍스트 파일이 업로드되도록 해야한다. AWS에서는 안드로이드와 S3 스토리지 서비스를 손쉽게 연결하도록 도와주는 서비스가 또 존재하는데 바로 AWS Amplify다. 커맨드창에서 간단하게 amplify 설정 및 타 서비스와의 연결을 할 수 있으며, 안드로이드에서 라이브러리를 추가해주면 업로드/다운로드와 같은 기능을 쉽게 구현할 수 있다. amplify 시리즈에서는 안드로이드와 amplify를 연결하는 과정과, 그 과정에서 겪은 어려.. 2021. 10. 20.
AWS Lambda 개발②) S3 버켓에 새로운 txt 파일 업로드하기 지난 글에서는 S3 트리거를 통해 업로드된 오브젝트 정보를 가져오는 글을 썼었다. 그렇다면 이번 글에서는 가져온 오브젝트 정보를 가지고, 또다른 S3 버켓에 람다를 활용하여 파일을 업로드하는 방법을 써보려고 한다. import json import urllib.parse import boto3 s3 = boto3.client('s3') def lambda_handler(event, context): bucket = event['Records'][0]['s3']['bucket']['name'] key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8') response = s3.get_object(B.. 2021. 8. 24.
AWS Lambda 개발①) S3 트리거를 통한 S3 오브젝트 정보 가져오기 (+txt파일) 현재 해보고있는 프로젝트에서 S3트리거를 사용한 aws 람다를 활용하고 있다. 간단하게 위와 같은 구조를 통해, 사용자가 s3의 첫번째 버킷에 txt파일을 업로드하면, 람다에서 txt 파일의 내용을 읽어와서 수정을 한 후, 새로운 txt 파일을 만들어서 S3의 두번째 버킷에 넣어주는 것이다. aws의 공식 문서에서, S3트리거를 활용한 썸네일 만들기 튜토리얼을 확인할 수 있지만, 텍스트 파일의 내용을 읽어오는 내용은 잘 찾을 수 없었기 때문에, 결론적으로 찾아보고 정리한 내용을 공유하고자 한다. 우선 S3 트리거를 사용하는 람다 코드 작성을 도와주는 블루프린트를 먼저 살펴보자. 람다 서비스 창에서 함수생성을 누르면, 위와 같은 창이 뜬다. 새로 작성은 기본적인 틀만 주고, 주요 기능 코드는 사용자가 스스.. 2021. 8. 19.
Lambda 번외) serverless framework 명령어 정리 람다를 더 잘 사용하기 위해서 udemy 강의를 듣던 중, serverless framework라는 것에 대해 알게 되었다. serverless framework란 aws 람다를 사용하면서, 람다 뿐만 아니라 S3 버킷 생성, 람다 함수 생성 및 실행 등 서버리스 아키텍처 전체를 매니징할 수 있게 해주는 오픈소스 프레임워크이다. 서버리스 프레임워크의 홈페이지에서 설치방법과 유저 가이드, 튜토리얼 등을 확인할 수 있다. 본 게시글에서는 콘솔 창에서 serverless를 제어할 수 있는 명령어들을 정리해보려 한다. (serverless framework의 공식 문서 중 CLI reference에서 해당 내용을 자세히 확인할 수 있다.) 본 게시글은 위에 언급한 udemy의 강의 내용을 정리하여 작성되었다. .. 2021. 8. 10.