우리는 너무나도 편리한 택배 세상에 살고 있습니다 택배 회사도 정말 무지하게 많습니다 이커머스 서비스를 운영할때는 고객을 위한 배송조회기능이 반드시 포함되는데요 일부 이커머스는 택배사의 배송조회 페이지를 그대로 연결하기도하고 일부 이커머스는 택배사의 배송조회 상태는 자사의 디자인 컨셉과 유사하게 변경하여 제공하기도 합니다 택배회사마다 UI가 서로 다르기 때문이기도 하죠 그래서 이커머스를 운영할때 API형태로 배송조회를 받고자 하는 경우는 대부분 유료 서비스를 이용하게 됩니다 그런데 무료서비스도 있다는거 알고 계셨나요? https://tracker.delivery/ Delivery Tracker | Delivery Tracker여러분의 서비스에 쉽고 빠르게 배송조회 기능을 연동 해보세요. Tra..
s3에 파일을 저장할때 Cache-Control 메타정보를 지정하지 않으면 저장된 s3 객체가 cloudfront를 통해 서빙될때 해당 리소스에는 Cache-Control 헤더가 응답되지 않습니다 Etag나 Last-Modified 헤더는 자동으로 응답되긴 하지만 이 값으로는 여전히 브라우저의 캐시정책에 의존적일수밖에 없습니다 보다 명시적으로 cache-control : max-age를 지정하기 위해서는 s3 에 오브젝트를 저장할때 메타 정보를 포함시켜야하는데요 저장할때마다 cache-control을 지정하지 않는 방법을 사용하지 않더라도 이방법 말고도 다른 방법이 있습니다 바로 cloudfront function을 이용하여 cloudfront로 요청된 응답 헤더에 헤더를 바로 추가하는 방법입니다 ht..
꽤 오래된 인텔 PC를 2대 가지고 있다가 최근에 AMD로 2대 모두 교체를 했습니다 CPU를 교체하게되면 CPU 소켓이 변경되기 때문에 메인보드를 반드시 변경해야합니다 다만, CPU의 종류와 무관한 케이스, 파워, 램, CPU쿨러와 같은 장비는 그대로 재활용이 가능합니다 다만 CPU 쿨러의 경우는 구입할때 AMD용 부품과 인텔용 부품이 모두 포함되어있는데요 이렇게 CPU 종류가 변경되는 경우를 위해서 잘 챙겨두셔야 합니다 인텔과 AMD는 규격이 달라서 CPU 쿨러 브라켓의 규격이 다릅니다 저는 CPU 쿨러로 존스보의 제품과 다크플래쉬의 제품 이렇게 1개씩을 가지고 있습니다 두개 브랜드 모두 CPU 쿨러 제품에서 상위 랭크를 하는 브랜드입니다 그런데 이번에 AMD로 교체하면서 나머지 부품을 찾을..
일본여행을 할때 번거로운것중에 하나가 대중교통이용하기 입니다 그래도 일본은 대중교통이 매우 잘되어있지만, 일본을 여행하는 우리 입장에서는 지역이 낯설고 요금체계가 낯설고 표 구매하는 방법이 낯섭니다 그런데 아이폰이 있다면 마치 국내에서 삼성폰으로 교통카드 탑승하듯이 할수 있다는것 알고 계셨나요 저도 지인이 알려주어서 이번에 일본 여행을 할때 이용해보았는데요 사용방법도 무척이나 쉽고 편했습니다 특히나 매번 대중교통을 이용할때 표를 사러가지 않아도 되는 점과, 현금을 들고다녀야한다는점, 그리고 남은 동전을 들고다녀야하는 번거로움들이 모두 사라졌습니다 사용하기 위해서는 일단 현대카드가 필요합니다 저는 이방법을 소개해드릴께요 그리고 애플지갑에 현대카드를 등록해 주세요 자 그리고 애플 교통카드(스이카)..
이 포스팅은 토스의 그 어떠한 지원도 받은 것이 없습니다 최근 일본 여행을 했는데 토스체크카드가 정말 톡톡히 역할을 다했습니다 일단 토스 외화 계좌를 만드세요 토스 외화 계좌를 이용하여 엔화를 사고팔때 환차익, 환차손이 없습니다 이 말인 즉슨, 정말로 엔화 시세 그대로 한화를 엔화로 환전하고, 남은 엔화를 엔화 시세 그대로 한화로 다시 환전할수 있다는 것입니다 그래서 부담없이 외화게좌에 엔화를 환전하여 넣어놓습니다 물론 엔화가 오르거나 내릴때 이득 또는 손해가 발생할수 있습니다 그리고 이렇게 외화 계좌에 넣어놓은 엔화는, 토스체크카드를 통해 일본에서 결제할때 자동으로 엔화 그대로 수수료 없이 빠져나갑니다 마치 국내에서 체크카드를 쓸때처럼 말이죠 그리고 또하나의 장점 일본은 아직 그래도 많은 곳들이..
https://typescript-eslint.io/rules/explicit-function-return-type/ explicit-function-return-type | typescript-eslint Require explicit return types on functions and class methods. typescript-eslint.io 해당 lint는 다음과 같은 케이스에서 모두 오류, 경고를 발생합니다 // 함수에서도 void를 선언해야함 function test() { return; } // 변수에 할당하는 함수에도 number를 선언해야함 var fn = function () { return 1; }; // 애로우펑션에서도 string을 선언해야함 var arrowFn = () =..
swagger live demo redoc live demo 우리가 많이 사용하고 있는 openapi를 볼수 있는 UI 툴은 잘 알려진 swagger가 있지만, 그의 대체제인 redoc도 있다는것 아셨나요? 이것은 swagger UI 이고 이것이 redoc UI 입니다 redoc은 3개의 컬럼 기반으로 좌측에 path, 가운데 params, 우측에 example이 보여지는 형태의 구성입니다 사람마다 swagger, redoc 호불호가 있겠습니다 nestjs 프로젝트에서 redoc을 적용하는것도 어렵지 않습니다 https://www.npmjs.com/package/@jozefazz/nestjs-redoc @jozefazz/nestjs-redoc NestJS ReDoc (Swagger UI Alternati..
구글태그매니저는 태그매니저라는 매개체를 통해 front 소스코드의 변경없이 이벤트를 심을수 있는 매우 좋은 도구입니다 모든 이벤트 로깅을 구글 태그 매니저를 통하여 하도록 하면, front 소스코드에서 이벤트 로깅과 관련된 모든 코드를 격리할수도 있습니다 이게 더더욱 가능한 이유가 추상화된 트리거를 통해 추상화된 변수영역들을 넘겨준다면 해당 트리거를 통해 전달받은 변수값들을 요리조리 변경하여 GA, BRAZE, 앰플리튜드 등등 여러 매체에 데이터를 전송할수 있습니다 전달받은 변수값을 조작하기 위해서 이러한 방법으로 가능합니다 변수값을 생성할때 "맞춤 자바스크립트"를 설정하면 정말로 빈 종이에 javascript 변수값을 적어내려갈수 있습니다 제가 실제로 사용하고 있는 예제로 설명을 드려볼까합니다 기존에 ..
1. 타입 추론이 어려운 비어있는 오브젝트로의 초기화, null 초기화를 피해주세요 // ❌ 작성자의 변수 선언 의도를 알수 없음 const wrongTypeVariable1 = {} // const wrongTypeVariable1 = null; const wrongTypeVariable2 = { a: 3, } const wrongTypeVariable3 = {} wrongTypeVariable3.b = 'aaa'; 변수 선언시에 타입의 선언이 없이 빈 object를 할당하거나, null을 할당해도 동작에는 이상이 없으나, 코드를 읽는 사람으로 하여금 해당 변수가 향후 어떤 값을 갖게되는지 예측할수 없어 모든 로직을 훑어야만 합니다. 해당 변수가 어떠한 역할을 하며 어떠한 형태의 값을 갖게 되는지 선언..
// post_data.json { "hello": "world" } $ ab -p post_data.json -T application/json -H 'Authorization: Bearer aaaabbbbccccddddeeee' -c 10 -n 200 http://api.example.com/users apache bench(ab)는 쉽게 사용할수 있는 벤치마킹 도구인데요 post method api를 체크하고자 할때 사용하는 방법을 기록차 남겨둡니다
- Total
- Today
- Yesterday
- 공모전
- 아이디어
- CSS
- 웹표준
- 구글
- 트위터
- 앱
- 네이버
- 벤처
- 어플리케이션
- iPhone
- 스마트폰
- 아이폰
- 안드로이드
- 경진대회
- 창업
- php
- Apple
- android
- JavaScript
- 게임
- 앱스토어
- 대학생
- 애플
- AWS
- 모바일
- 자바스크립트
- 소프트웨어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |