본문 바로가기

전체 글

Google Admob 을 이용하여 앱 내 광고 구현하기 앱 사용할 때 이런 광고를 본 적 있을 것임  필자도 이번에 회사 프로젝트를 진행하면서 앱에 이런 광고를 넣었는데 이 경험을 공유하고자 함(아래에 나오는 캡쳐들은 필자가 광고 등록 프로세스를 복기하려고개인 계정으로 다시 만들어 보면서 생성한 캡쳐임을 밝힘)  광고 게재 서비스가 Google Ads, Google Admob 등 여러가지가 있는데필자는 Google Admob 을 이용함코드 작성법은 공식 문서만 따라가도 쉬워서 pass 하고전체적으로 어떤 플로우로 진행해야 하는 지에 초점을 맞춰보겠음  #1. Google AdMob 콘솔에서 앱 등록하기 먼저 Google AdMob 콘솔에서 앱을 생성해야 함이때 생성하는 앱은 실제로 본인이 개발한 앱을 의미하는 것이 아니라, AdMob 콘솔에서 고유한 식별자(.. 더보기
AWS s3 presigned url 도입하는 과정에서 생긴 문제 Presigned Url 을 사용하게 된 계기기존에 s3 에 파일 업로드하던 구조는 다음과 같음 1. client 가 server 에게 파일 객체 전송 2. server 는 받은 파일 객체를 s3 에 업로드 이번에 새로 개발하는 기능은 특정 페이지에서 한 번에 100개 이상의 파일을 업로드를 할 수 있어야 했음 기존 방식으로 진행할 경우, 100개의 파일을 client 에서 server 로, server 에서 s3 로 전송해야 하기 때문에 서버에 상당한 부하가 걸릴 수 있을 것 같아서 그에 대한 해결책으로 presigned url 을 적용하게 됨 Challenge (찾아온 고비)로컬 컴퓨터에서 내 AWS 계정의 자격증명 (= s3 full access 권한 있음) 을 사용해 presigned url 을 .. 더보기
[오픈소스 컨트리뷰션] Node - WebSocket CLI 문서 수정 Node 의 WebSocket 관련 document 에기여해본 경험을 정리하고자 함➡️ 기여한 PR 링크:  https://github.com/nodejs/node/pull/54482 뭘 기여했는 지 결론부터 말하자면..Node에서 제공하는 WebSocket 은 현재 API 안정화 레벨 중 stable 레벨임그런데 문서 상에 여전히 experimental 레벨 인 것 마냥 잘못 기재된 부분이 있어서 이 부분을 수정하는 PR을 올림   여기서 등장하는 개념 정리✅ stable 레벨이라니?? 그게 뭔데???Node에서는 제공하는 각 API 에 대해 안정화 레벨을 나누고 있음 - Deprecated: 사용하지 말아야 할 기능 (하위호환성 보장 ❌)- Experimental: 아직 불안정하고 버그 리포팅 받으며.. 더보기
[오픈소스 컨트리뷰션] Node - fs.cpSync 벤치마킹 파일 수정 Node - File System 모듈의 cpSync 메소드에 대한벤치마킹 코드 가독성을 0.000001% 개선한 경험을 공유하고자 함 오케이 레츠고! 무슨 이슈를 해결했는가?fs.cpSync 가 force 라는 옵션을 파라미터로 받는데그 옵션의 디폴트값이 force:true 란 말임그런데 벤치마킹 코드에서 force:true 를 명시해서 보내고 있는 것임?!그래서 가독성 높이고자 force:true 를 없애는 PR 을 올림   여기서 등장하는 개념 정리✅ fs.cpSync 가 뭔데?Node 의 File System 모듈에서 제공하는 메소드로 파일이나 디렉토리를 다른 위치로 복사하는 기능임 여기서 force 옵션이 등장하는데 복사하려는 타겟 위치에 이미 파일이나 디렉토리가 존재하는 경우, 이를 덮어쓸 지.. 더보기
[오픈소스 컨트리뷰션] Node.js - SEA 관련 doc 수정 Node.js 에 오픈소스 컨트리뷰션한 내용을 공유하고자 한다. (비록 doc 수정이지만..🙃) 무슨 이슈를 해결했는가?운영체제A (ex. darwin-arm64) 에서 운영체제B (ex. linux-x64) 용Single Executable Application (*이하 SEA라고 칭함) 을 생성할 때,useCodeCache 설정과 useSnapShot 설정을 true 로 하면 해당 SEA 시작 시 충돌이 발생하는 이슈가 존재한다. 요약하자면 크로스플랫폼 SEA를 생성 후, 실행 시 에러가 발생하는 이슈 -   여기서 등장한 개념 정리✅ SEA (Single Executable Application) 이란?하나의 실행 파일로 패키징된 애플리케이션을 의미여러 파일로 구성된 애플리케이션을 단일 실행 파일.. 더보기
Node.js 소스코드 빌드 하기 전 mac 유저여서 아래 링크를 참고했슴다 (리눅스, 윈도우도 있음) https://github.com/nodejs/node/blob/main/BUILDING.md#macos-prerequisites node/BUILDING.md at main · nodejs/nodeNode.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on GitHub.github.com 그럼 나의 Node 빌드 여정을 풀어보겠음,, 참고로 여기서 Node 빌드하겠다는 건, 찐 Node 레포의 소스코드를 클론 받아서 빌드 해보겠다는 것임 일단 macOS 기준으로 Node 를 빌드하기 위한 prerequisites 이 아래와.. 더보기
API 설계 고민: 추가, 수정, 삭제가 한 번에 일어나는 구조 오늘은 내가 했던 API 설계 고민을 공유해볼것임 어느 날 회사에서 아래와 같은 시안을 건네 받았음 (회사꺼는 공개할 수 없기에 Tistory 관리자 페이지에서 최대한 비슷한 구조의 UI 를 가져왔슴다) 이 시안이 뭣이냐하면.. 우측 하단에 [변경사항 저장] 버튼을 누르면 CRUD 가 한 번에 일어나는 구조의 페이지임 삭제 혹은 수정만 하는 API 는 설계하기 쉬운데 CRUD 가 한 번에 일어나야한다고 생각하니 갑자기 머리가 지끈해짐 [저장] 버튼 누를 때 변경사항 있는 row 들은 API payload 로 전부 전달을 해야할 터인데... API 서버 입장에서 각 row 들이 수정/삭제/추가 중에 무엇인지는 어떻게 구분하지???? 아!!! row 에 id 값이 있으면 수정 혹은 삭제, id 값이 없으면 .. 더보기
DB 에 있어야하는 데이터인데 없는 경우, 에러 코드는 무엇을 써야 할까? (오늘꺼 지하철에서 폰으로 막 끄적이는거라 얘 뭐라는거지? 할 수 있음 주의) 개발자로써 항상 고민되는 사항.. 에러 코드, 에러 메세지를 어떻게 쓸 것인가...? 에러의 책임이 명확한 경우는 에러 코드 처리가 쉽다. 클라 잘못인 경우 400,404 쿼리에서 오류난 경우 500.. 그런데 DB 에 당연히 있어야할 데이터가 없는 경우, 그런건 어떻게 처리해야 할까 ?_? 뭐 예를 들어.. user 테이블에서 primary key 가지고 특정 유저 조회 했는데, 당연히 존재해야하는 password 값이 null 로 들어가있는 케이스가 있다면....? (구글소셜로그인이면 pwd 가 null 일 수 있자나! 금지. 애초에 막으면 됐자나 !금지. Just 가정임 가정.) 일단 이 사항은 클라의 잘못이 아니니까, .. 더보기