최근 프로젝트 전체를 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. ..
빠른 테스트를 할 때, 또는 필요한 파일을 다운로드할 때 알아두면 POSTMAN보다 유용한 curl 사용법 // GET response curl url // GET raw response curl -i url // download (image, html ...) curl -OL url // specify the file name curl -o image-name.png url // request with Authorization curl -H "Authorization: my-secret-token" url /** POST, PUT **/ // post request, send JSON curl -X POST -d '{"answer": 42}' url // default content-ty..
맥에는 기본적으로 설치되어 있는 유틸리티 중 imagemagick이란 게 있다. (리눅스나, 윈도우, 모바일 OS 등에서도 실행을 할 수 있다고 한다.) 홈페이지 설명에 따르면 비트맵 이미지를 변환하거나 합치고 편집/생성 등을 할수 있고 다양한 포맷 (PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript, PDF, SVG 까지) 지원한다. 지원 기능은 다음과 같다 - resize - flip (좌우, 상하 변경) - mirror (플립과 차이가 뭐지?) - rotate (방향변경) - distort (기울이기) - shear (자르기?) - transform - adjust colors - 다양한 효과 적용 - 텍스트 그리기 - 라인 그리기 - 폴리곤 - 타원..
안드로이드 빌드 시, 라이브러리에서 버전이 맞지 않는 모듈을 import 해서 발생되는 이슈 첫 번째 방법 File > Invalidate Cache & Restart를 하면 되고, 필요한 모듈이 있다면 수동으로 각 모듈의 gradle 파일에 의존성 추가해서 다시 sync를 해준다. Sync 후에도 import가 제대로 되지 않으면 .idea 폴더를 삭제 후 다시 빌드해보자. 두 번째 방법 안드로이드 스튜디오 메뉴 Refactor > Migrate 세 번째 방법 에러가 나는 모듈을 확인해 import 가 제대로 되지 않은 모듈을 주석처리 또는 삭제한 뒤 해당 모듈을 다시 import 시켜준다.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- iterms
- retrofit
- Android
- React Native
- multiDex issue
- patch-packages
- 스크럼
- MVP
- 쉽게 말하는법
- 시간 관리
- egghead
- 구독료 계산기
- go
- 아키텍처
- 이미지 일괄 변경
- 좋은 습관이란
- 애드 캣멀
- node.js
- 소프트웨어 공학
- git ssh 연동
- 안드로이드
- 공존이 필요해요
- 그리고 상상력
- 이미지 여백주기
- 최은영작가님
- 창의성을 지휘하라
- gradle
- release build issue
- 소름돋는필력
- git 실수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함