본문 바로가기

전체글98

DynamoDB Pagination 삽질 기록 Pagination을 해야할 일이 생겼다. 문제는 지금 사용중인 DB가 DynamoDB 라는것. 오래전에 RDBMS를 이용해서 게시판을 구현해본적은있지만 DynamoDB같은 nosql로 구현해본적은 없었다 결론부터 말하자면, 포기했다. 애초에 DynamoDB로 게시판같은 Pagination을 하려는게 문제(?)였다 삽질 정리내용 우선 기획자님의 요구사항은 개인메모장같은 기능이었다. 페이지마다 5개씩 글을 볼수있어야했다 일단 쿼리 params에 아래의 옵션을 추가해야한다 ScanIndexForward: false Limit: 5 ScanIndexForward는 오름차순, 내림차순을 정하는 옵션이다 기본적으로 DDB는 정렬 순서가 오름차순인데 게시판처럼 최근글일수록 위로 오게하려면 내림차순으로 바꿔야한다. .. 2020. 3. 12.
aws lambda 콘솔창 코드 정렬 단축키 가끔 모듈하나도 필요없는 단순한 함수는 웹콘솔창에서 작성하기도하는데, 코드 정렬키를 몰라서 짜증났었다. 코드 정렬 단축키는 맥북기준으로 command + shift + B 윈도우는 아마 control + shitf + B 일듯 단축키는 오른쪽 상단에 톱니바퀴 모양을누르고 KEYBINGINGS 에 가면 볼수있다 . 2020. 2. 20.
AWS Lambda + RDS 연결하기 삽질.. RDS Mysql 8.0 과 Lambda를 연결해야될일이 생겼다 람다도 서버리스라고 뭐 특별할거없이 그냥 node.js랑 mysql 연결하듯이 하면된다 사실 공부하던시절에는 php를 썼지 node.js 를 써본적이 없어서 처음해보는것이었다..ㅋ 단순하게 예제 몇개보고 그냥 mysql 모듈설치후, 람다에 올려서 테스트를 해보려고했는데 connection.connect 함수자체가 실행이안된다.. 왜안되는지 겁나 삽질했다 .. 근데 이렇게 (event)=> 앞에 async를 제거하니까 잘된다.. 띠용 알고보니 Mysql 모듈에선 async await 이안된다고.. ㅋㅋ Mysql2 모듈설치해서 바로 해결했다. 2020. 2. 17.
AWS Lambda 시간관련 에러 호출되면 호출된 시간 기준으로 가장 최근 데이터를 꺼내오는 람다 함수를 새로 만들었다. 잘 동작하는 거 같았고, 뭔가 버그가 생길 정도로 복잡한 함수도 아니었다 그런데! 해당 데이터는 시간이 지날수록 점점 커져야 되는데, 일정시간 후에 실행해봐도 계속 같은 값을 반환하는 현상이 발생했다. DB를 확인해보니 DB에 저장된 값은 정상적으로 계속 커지고 있었다. 잠깐 멍 때리다가 cloudwatch에 있는 로그를 보니, 함수가 호출된 시간으로 값을 뽑아 오는 게 아니라 특정 시간의 값만 계속 꺼내오고 있었다. 아마도 currentTime을 exports.handler = async(event) => { } 밖에 선언해서, 람다가 새로 호출되어도, 이전에 저장해 두고 잇던 currentTime을 계속 갖다 쓰는.. 2020. 2. 11.
기상청 API 좌표 위도경도 변환하기 기상청 API를 이용하면 좌표를 얻을수가있는데 , 그 좌표를 위도경도로 바꾸는코드가 공식문서에 제공된다 하지만 C언어로만 제공되기때문에,, 지금쓰는 JS코드로 변경할 필요가있었다 찾아보니 어떤분이 감사하게도 공유 해주셨다 https://gist.github.com/fronteer-kr/14d7f779d52a21ac2f16 위 링크의 소스코드를 이용해서 조금 수정하고, 서울 좌표 입력하고 함수 실행해보면 37.579871128849334 126.98935225645432 이런식으로 나온다, 그대로 복붙해서 구글지도에 검색해보면 서울 나온다 ,, 잘 변환된다 굳굳 2019. 12. 17.
DynamoDB TTL 설정하기 DynamoDB에서 기본제공해주는 TTL(Time To Live)은 데이터를 자동으로 삭제해주는 기능이다 TTL을 epoch 시간 값으로 저장하면 그 시간이 지났을때, 48시간내에 해당데이터가 삭제된다 직접 해보면 이해가 더 잘된다. 먼저 test라는 테이블을 만들자 아직 데이터는 하나도 넣지않은상태이다 그다음 테이블 세부정보화면에 TTL(Time to live) 속성 에서 TTL 관리를 누른다 TTL 속성칸에 본인이 TTL을 걸고싶은 속성명을 입력하면된다 나는 deleteTime 을 입력했다 TTL이 적용됐다 이제 항목으로가서 항목만들기를 누르고 데이터를 넣어보자 TTL은 epoch 시간 값을 넣어야한다 나는 이렇게 데이터를 저장했다. deleteTime 속성에 (TTL) 이 자동으로 붙었다 TTL 속.. 2019. 12. 5.
개발자 에어팟 프로 짧은 후기 우리 회사 디자이너님이 에어팟 프로 출시 당일에 바로 구매하셨다 그날 체험해봤는데 처음경험하는 노이즈 캔슬링이 정말 신세계였다 그이후로 계속 사고싶었는데.. 비싼가격 때문에 며칠 동안 고민하다가 결국 쿠팡에서 32.9만원 주고 구매했다 다음날 바로 배송와서 좋았음 나는 작지만 반복해서 들리는 소리에 스트레스를 굉장히 많이 받는편이다 볼펜딸깍거리기, 슬리퍼 질질 끌때나는소리 , 뭐 먹을 때 쩝쩝거리는 소리 ( 난 이정도까진 아니긴한데 미소포니아 라는게 있다고 한다.. 링크참고 ) 개발자는 개발할 때 집중이 많이 필요한데 , 가끔씩 들리는 그런 소리가 나의 집중을 심각하게 방해했다 ( 전혀 집중이안되고 스트레스는 덤 ) 그래서 나는 새벽 2~5시 사이 정말 고요한 시간에 혼자 코딩하는 것을 좋아한다 실제로 .. 2019. 11. 30.
유용한 사이트 모던 Javascript 튜토리얼 https://ko.javascript.info/ 우연히 위 사이트를 알게되었고, 쭉 읽어보면서 몰랐거나, 애매하게 알고있었던 부분들 정리하고있다. 자잘한 팁들과, 그 이유까지 알려주기때문에 굉장히 유용하다 사이트 디자인도 깔끔하고 한눈에 잘 들어온다 특히 주석챕터에서 이부분은 너무 공감돼서 그냥 전문 그대로 긁어왔다 왜 이런 방법으로 문제를 해결했는지를 설명하는 주석 무엇이 적혀있는지는 중요합니다. 그런데 무슨 일이 일어나고 있는지 파악하려면 무엇이 적혀있지 않은 지가 더 중요할 수 있습니다. ‘왜 이 문제를 이런 방법으로 해결했나?‘라는 질문에 코드는 답을 해 줄 수 없기 때문입니다. 문제 해결 방법이 여러 가지인데 왜 하필이면 이 방법을 택했는지 의문이 들 때가 있습니다. 선택한 방법이 가장 나은 .. 2019. 11. 20.
AWS Lambda 에러 대체뭘까.. 람다 콘솔창에서 간단한 문제때문에 함수 파라미터 숫자만 바꾸면서 실행해보고있었다 근데갑자기 "errorType":"Runtime.UserCodeSyntaxError", "errorMessage":"SyntaxError: Unexpected token 이런에러가 떳다.. 코드상에 아무런 문제가없고 잘실행되던 코드인데 단지 파라미터값 숫자하나를 다른숫자로 바꿨을뿐인데 ?? 대체왜 이런에러가뜨는걸까 아직까지 이유를모르겠다 그냥 일시적인 에러인가 ? 현재 잠정적으로 내린 결론은 코드를 수정한뒤 저장하자마자 실행해서 제대로 저장이 안된상태에서 실행이된거같다..라고 결론내렸다 실제로 어떤 파라미터를 3으로 바꾸고 실행했더니 위같은 에러가 발생했는데, 3을 지웠다가 다시 그대로 3 입력하고 저장한뒤 잠시 기다렸다가 .. 2019. 11. 11.
EC2앞에 Network Load Balancer 추가하기 삽질 IOT 장비가 EC2로 보내는 부하를 분산하기위해 로드밸런서를 새로 도입하기로했다 그과정에서 수많은 삽질이 있었는데 ,, 이번글은 내가겪은 순서대로 삽질한것을 그냥 쭉써보려고한다 맨처음에 ELB 서비스를 이용하기위해.. AWS 서비스 검색창에 Elastic Load Balancing ( ELB )을 검색했는데 안나오고 EC2만 나와서 뭐지..??? 싶었는데 ELB 생성을 EC2 대시보드에서 하는거였다 .. ㅋㅋ.. 대시보드 하단에보면 로드밸런싱이라는 항목이있다 저기서 로드밸런서를 클릭하고 상단을 보면 로드밸런서 생성이 가능하다 로드밸런서는 하나만있는줄알았더니 이렇게 3종류가있다 .. Application Load Balancer Network Load Balancer(신규) Classic Load Bal.. 2019. 11. 7.