최근 프로젝트 전체를 JavaScript에서 TypeScript로 변환하는 작업을 하면서 우연히 발견하게 된 아티클인데 좋은 지적인 것 같아서 정리해보았다. 1. strict 모드를 사용하지 않는 것 tsconfig.json에 strict 모드를 활성화 시키자. 2. Fallback으로 || 옵셔널 오퍼레이션을 사용하는 것 => ??을 사용하던지 더 나은 방법은 파라미터 레벨에서 fallback을 써주는 것이다. 3. any 타입을 사용하는 것 unknown타입을 대신해서 쓰자. any는 타입체크를 비활성화시킨다. 즉, 버그를 확인하기 어려워진다. 4. val as SomeType 강제로 특정 타입이라고 컴파일러에 알려주는 방식. function isArrayOfProducts (obj: unknown)..
가끔 라이브러리 자체에 버그가 있어서 바로 고쳐야하거나, 라이브러리만으로는 지원이되지 않는 기능이 들어가야하는 경우가 있다. 이때까지 오픈소스를 변경해서 사용하기 위해서는 Github에서 folk하고 수정 한 뒤 가져오는 방식밖에 없는줄 알았는데, 훨씬 단순한 방법이 있었다. patch-package라는 노드 모듈을 설치해서 사용하는 방식인데 1. 먼저 patch-package, postinstall-postinstall를 설치한다. yarn add patch-package postinstall-postinstall postinstall-postinstall이건 패키지 설치시 뿐만 아니라 패키지를 삭제할 때도 postinstall 스크립트를 실행해주는 라이브러리이다. 2. package.json 에서 p..
호스팅 서버에 ssh 방식으로 git 연동하기 Ubuntu14.04 LTS 호스팅 서버를 쓰고 있었는데, 본래 https로 시작되는 git URL로 연결을 요청하다 어느날 서버를 업데이트하려고 git pull을 하니 gnutls_handshake() failed: Handshake failed 과 같은 에러가 떴다. 찾아보니 해당 서버에서 발생하는 문제중 하나이며 빠른 해결방법은 https 방식이 아니라 ssh 방식으로 git 연동을 하는 것이라고 한다. ssh 연동 방법 해당 서버에 ssh 키를 생성한다. id_rsa.pub 파일에 생성된 public key를 Bitbucket, Github, Gitlab 같이 레파지토리 저장소에 추가한다. 각 플랫폼의 ssh 설정 페이지 Bitbucket - http..
필요한 것 서버리스 플랫폼 (Firebase Cloud Functions, AWS Lambda 등) 클라우드 스토리지 (Firebase Storage, AWS S3 등) Puppeteer Handlebars (HTML 템플릿 언어) 방법 각 서버리스 플랫폼에서 제공하는 프로젝트 초기화 방식으로 node.js 기반의 서버를 생성한다. puppeteer와 handlebars를 npm으로 설치 템플릿으로 사용할 HTML 파일을 클라우드 스토리지에 올려둔다. 함수 내부 플로우 클라우드 스토리지에서 파일을 다운받는다. API body로 템플릿에 필요한 파라미터를 가져온다. 추가 계산/분석 로직이 필요하면 작업한다. handlebars를 이용해 컴파일하고 결과물을 임시로 만든 html 파일에 저장한다. (node...
Socket.IO는 무엇인가? 브라우저와 서버간 이벤트 기반의 실시간, 양방향 통신을 가능하게 하는 라이브러리다. 원리 웹소켓 연결을 시도하고 가능하지 않으면 HTTP 롱폴링 요청에 대해 fall back 한다. ** 웹소켓은 통신 프로토콜로 서버와 브라우저간 양방향 (full-duplex) 낮은 지연 채널을 제공한다. 브라우저가 웹소켓을 지원 한다 (2020년 전체 브라우저의 97%가 웹소켓을 지원) 클라이언트-서버간 웹소켓 통신을 막는 요소 (프록시, 방화벽)은 없다. 이 같은 조건에 socket.io를 웹소켓 API의 래퍼로 고려할 수 있다. Socket.io는 (래퍼니까) 웹소켓 객체에 대해 추가적인 기능을 제공한다. 대표적인 기능 안정성 (프록시, 로드밸런서, 방화벽, 바이러스 감시 소프트웨어가..
Commit 한 메시지를 바꾸고 싶으면? git commit --amend -m "new message" git log --oneline => 변경된 메시지가 보임 같은 커밋에 몇 가지 파일을 더 추가하고 싶은면? git add -A git commit --amend -m "new message" staging에 add했는데 원하지 않을때? (이부분은 git command에서 알려줌) "Use git reset HEAD ... to unstage" 메시지 rm git status push전에 커밋을 지우고 싶을 때? (꼭 푸시전에, 안그러면 다른 사람들은 영향을 받음) git reset Reset --hard, --soft, --mixed 차이? git reset --soft HEAD~1 헤드를 바로 뒤..
1. 설치 Mac의 기본 셸은 bash 이지만 zsh도 기본 설치되어 있다. zsh로 기본 설정을 바꾸려면 다음과 같이 입력하면 된다. chsh -s $(which zsh) 2. Oh My Zsh zsh 설정을 관리하는 커뮤니티 기반 프레임워크이며 많은 함수, 헬퍼, 플러그인, 테마들을 가지고 있다. 설치를 하려면 curl이나 wget을 이용한다. # curl sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" # wget sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" 2-1. ..
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- egghead
- 아키텍처
- 소프트웨어 공학
- 스크럼
- iterms
- 최은영작가님
- retrofit
- 안드로이드
- go
- Android
- git 실수
- 쉽게 말하는법
- 구독료 계산기
- MVP
- 좋은 습관이란
- 창의성을 지휘하라
- git ssh 연동
- 애드 캣멀
- 소름돋는필력
- 이미지 일괄 변경
- node.js
- 이미지 여백주기
- release build issue
- 시간 관리
- 공존이 필요해요
- patch-packages
- multiDex issue
- React Native
- gradle
- 그리고 상상력
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
글 보관함