[DP, Android] RN 으로 작업할 때는 DP 라고 생각하고 그냥 디자인 받아서 width, height 값으로 작업하면 된다. 아래 코드는 그냥 참고용일 뿐. 대신 디자인을 받을 때 해상도가 좀 떨어질 경우 다시 좀 고해상도로 요청하면 된다. 디자이너도 DP 의 개념 단위로 작업을 해야 한다... (실제 작업은 고해상도 px 단위이지만 논리적으로는 DP 로 생각하고 작업해야한다.) DP 단위로 작업한다는 것은 비율적으로 작업한다는 의미이다. 한 픽셀 한 픽셀의 의미가 아니라 전체적인 비율로 작업하는 개념이어야 한다. 물론 그 전체적인 비율단위의 작업의 결과를 뽑아낼 때 한 픽셀 한 픽셀도 잘 맞아들어 가도록 정밀도 있게 작업하면 좋다. 하지만 실제 개발에 반영될 때 해당 이미지 자체는 거의 정확..
자바스크립트는 ECMA-262 를 만족하는 구현체를 가리킨다. Ecma 인터내셔널의 여러 기술 위원회(Technical Committee, 이하 TC) 중 TC39 라는 위원회가 이 명세를 관리한다. https://ahnheejong.name/articles/ecmascript-tc39/ 이런 문서는 optional chaining 검색하면 나오는데 정작 이것이 es2020 인지에 대해서는 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Optional_chaining https://github.com/tc39/proposal-optional-chaining
대답: Yes. 원래 그런 용도이다. 여기서 RNIap.getAvailablePurchases(); 이걸 통해서 나온 purchase 에는 transactionReceipt 가 undefined 인 경우가 있다. 서버로 purchase 를 통으로 보내서 validation 하려다보니 purchase.transactionReceipt 가 undefined 로 없을 경우 dataAndroid 값을 받게 하려고 해서 receipt: purchase.transactionReceipt || purchase.dataAndroid 이렇게 하면 더 안정적인 코드가 될 것 같았다. 아마 옛날에 테스트 한 사항이라 RNIap.getAvailablePurchases(); 에 대한 정확한 의미를 몰라서 잘못 생각했을 수도 있..
nested: 다음과 같이 Sender, Receiver 부분이 IUser 로 nested 된 형태로 필요한 부분까지 전체 데이터를 front 측 모델로 다룬다. export interface IUser { id: number; nickname: string; email: string; updatedAt: Date; createdAt: Date; } export interface IDM { id: number; SenderId: number; Sender: IUser; ReceiverId: number; Receiver: IUser; content: string; updatedAt: Date; createdAt: Date; } normalize: 다음과 같이 Sender, Receiver 가 string..
React 의 훅 그리고 Context API 에 대한 추상적인 고찰. React 훅은 마치 javascript 의 클로저 처럼 함수가 하나의 실행 영역을 가지는 것과 유사하게 파라미터를 받을 수 있고(마치 리액트 컴포넌트의 속성과 같이) 내부에서 사용될 수 있는 변수들이 존재하며 상태(state)와 동작(method) 을 가지는 기능 단위이다. 보통 하나의 기능 단위는 상태와 동작으로 정의될 수 있다. 그리고 함수형 프로그래밍 방식에서 추구하는 확실한 기능 단위의 조합 방식에도 부합한다. 리액트는 UI 라이브러리이며 그 기본 단위인 컴포넌트는 생명주기, 렌더링 관련된 기능과 속성, 상태, 동작과 같은 것을 가진다. 훅이 나오기 전 클래스 형 컴포넌트를 주로 사용하던 시기에 단순한 독립적인 유틸리티 함수..
Avatar 라는 재사용 가능 컴포넌트를 만든다고 할 경우 속성값으로 ImageStyle 이나 ViewStyle 의 타입을 가진 속성값을 받을 것이다. 이때 타입을 지정해줄 때 이렇게 TextStyle, ViewStyle, ImageStyle 로 해도 되지만 이렇게 할 경우 style={[styles.x, styles.y]} 와 같이 배열로 입력할 경우 오류가 난다. 그래서 style: ViewStyle | ViewStyle[] 과 같이 해주면 이 오류는 사라진다. 하지만 또 다시 style={[style.x, boldText ? style.bold : undefined]} 와 같이 조건에 따라 달라지는 속성값을 넣어줄 경우 또 오류가 난다. interface Props { textStyle?: Text..
아래 두가지 오류에 대해 정리해보면 첫번째 것은 navigate 메소드를 사용하고 resetRoot 를 사용하지 않으면 해결되었고 두번째 것은 그냥 내가 로직을 잘못짜서 그런 것이었다. Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. => 컴포넌트가 이미 사라졌는데 그 이후에 해당 컴포넌트의 상태값을 변경하는 로직이 수행될 경우 발생할 수 있다. 메..
실제로 throttle 과 debounce 의 경우 debounce 는 검색어 자동완성에 그리고 throttle 은 로딩 모달이 없는 단순 get 요청의 반복 요청의 빈도를 제한하는 정도로 사용된다. 보통은 생성, 수정, 삭제 같은 경우 isSubmitting 플래그로 로딩 모달과 함께 해당 요청의 응답이 없는 동안에는 클릭하지 못하도록 하는 방식을 사용한다. 생성, 수정, 삭제 같은 경우에 throttle, debounce 를 사용할 경우 결국은 이벤트를 두번은 수행하게 되기 때문이다. throttle 과 debounce 그리고 lodash 를 사용하여 실제 React 에 적용하는 법. throttle 은 이벤트 발생 즉시 실행되고 그 다음 지정한 시간 동안 발생되지 못하게 막고 그 시간이 지나면 다시..
https://typeofnan.dev/fix-the-maximum-update-depth-exceeded-error-in-react/ state 를 useEffect 안에서 setState 하면 무한렌더링 일어날 수 있다. [] 가 되도록 views 를 의존성 배열에서 제거하자. function App() { const [views, setViews] = useState(0); useEffect(() => { setViews(views + 1); }, [views]); return Some content; } function App() { const [views, setViews] = useState(0); useEffect(() => { setViews((v) => v + 1); }, []); ret..
React Native 는 React 의 철학 중 Learn once, Write everywhere 에 맞게 모바일 앱 개발에 있어서도 View 단의 라이브러리를 제공하고 이를 중간에서 연결해주는 브릿징 기술을 제공한다. React Native 는 Android 와 iOS 의 네이티브 모듈의 기능을 가져와 사용할 수 있다. (다른 OS 도 가능하다) 이러한 기능을 제공하는 것이 NativeModules 이며 이는 iOS 에서는 RCTBridgeModule 이라는 프로토콜을 구현한 Objective-C 클래스이다. 아직 타입이라던가 지원이 잘 안되는 네이티브 기능들도 있는데 TurboModules 라는 것이 나오게 되면 개선될 것이라 한다. 업그레이드에 대비하자. 현재는 React Native 의 경우 ..
결국 React Native 와 Nodejs 서버와의 aes 양방향 대칭키 암호화를 사용하기 위해서는 crypto-js 3.1.8 을 사용하면 된다. react-native-crypto-js 가 아니라 그냥 crypto-js@3.1.8 을 React Native 쪽에 사용해야 한다. node 쪽도 crypto-js 설치. (https://www.npmjs.com/package/crypto-js) 주간 다운로드 수가 500만이 넘어간다. 관련 사항(https://lifeonroom.com/study-lab/react-native-crypto-js/) 실무에 써먹기 좋은 글. crypto 기준. 단방향 암호화 비밀번호 저장을 위한 로직이 구체적으로 잘 나와 있다. https://zinirun.github.i..
여기서 aws route53 hosted zone 에 기본 등록되었던 name server 들 리스트를 확인할 수 있다. 적어두지 않고 삭제하였다면 여기서 확인 후 복원하자. whoisrequest.com/history/ AWS 에서 도메인을 등록 후 네임서버를 디지털 오션 것으로 사용하려면 hosted zone 에서 ns 레코드를 변경하는 것이 아니라 도메인 > 등록된 도메인 에서 이름 서버 부분의 내용을 변경해야 한다.
테스트 json api 제공해주는 것들. mohammedal-rowad.github.io/pollux/#/ jsonplaceholder.typicode.com
redux.js.org/style-guide/style-guide#reducers-must-not-have-side-effects Redux Style Guide [필수] * 상태를 Mutate 하지 말 것. * 리듀서는 Side Effect 를 가지면 안된다. - ajax, timeouts, promises, random, date.now, 리듀서 밖에서 관련 변수 수정 x, 리듀서 밖에 영향을 줄 수 있는 코드가 리듀서 함수에 있으면 x * Non-Serializable 값이 상태나 액션에 있으면 안된다. - Promises, Symbols, Maps/Sets, funtions, class instances 와 같은 것들이 Redux store state 나 dispatched action 에 있으면..
toolkit-saga https://velog.io/@suyeonme/React-Redux-toolkit에서-미들웨어-사용하기 toolkit 설명 https://kyounghwan01.github.io/blog/React/redux/redux-toolkit/#종합-예제 rn 과 toolkit 관련 블로그 https://post.naver.com/viewer/postView.nhn?volumeNo=29438367&memberNo=10070839 redux-toolkit 사용하면 combineReducer 와 devtools 를 사용하지 않아도 이미 적용되어 있다. 하지만 configureStore 에 devTools: process.env.NODE_ENV !== 'production', 이런 옵션으로 넣..
https://developers.google.com/gmail/api/v1/reference/ 결론은 요놈들을 본받자. https://developers.google.com/gmail/api/v1/reference/ https://developers.google.com/ad-exchange/buyer-rest/v1.3/ https://developers.google.com/ad-exchange/seller-rest/reference/v2.0/?hl=ko 페이팔 https://developer.paypal.com/docs/api/ 페이스북 https://developers.facebook.com/docs/graph-api/common-scenarios 드롭박스 https://www.dropbox.com/..
미국은 주거등록제도와 개인식별번호, 국가신분증 제도가 없다. 미국에서는 출생기록이 곧 국적기록이다. 그리고 출생, 사망, 혼인 등 사건별로 기록부가 작성되고 개인별로 기록되므로 철저한 사건별-개인별 기록제도가 시행되고 있다. 다만 신청지역, 발급그룹, 발급순서를 나타내는 각 3자리 숫자 총9개로 이루어진 사회보장번호(SSN: Social Security Number)는 결과적으로 강제적인 주민등록과 개인식별번호를 부여하는 것과 같은 효과를 낳는다. 그러나 미국에서 사회보장번호를 공개하는 것은 법으로 금지되어 있으며, 사회보장번호를 제공하지 않았다는 이유로 서비스 제공을 거부해서는 안 된다는 규정을 두고 있다. 미국의 경우엔 사회보장번호에 성별 정보는 없고, 사회보장번호 거부로 서비스를 제공하지 않을 수도..
[머니투데이방송 MTN 최보윤 기자] 앞으로 일반투자자도 창업 초기 단계의 벤처 기업에 연 500만원까지 온라인으로 투자할 수 있게 됩니다. 금융위원회는 5일 국무회의에서 이런 내용을 담은 '자본시장과 금융투자업에 관한 법률 시행령' 개정안이 통과돼 오는 25일부터 시행된다고 밝혔습니다. 시행령에 따라 사업 경력 7년 이하의 창업·중소기업은 크라우드펀딩을 통해 최대 7억원까지 사업 자금을 조달할 수 있습니다. 벤처기업ㆍ기술혁신형 중소기업, 중소기업이 신기술개발ㆍ문화사업 등 프로젝트 사업을 하는 경우에는 7년이 넘어도 가능합니다. 다만 이미 상장된 기업과 금융·보험업, 골프장업, 부동산업을 하는 기업은 제외됩니다. 일반 투자자는 연간 한 기업당 200만씩, 총 500만원까지 지분형 크라우드펀딩을 통해 투자..
http://www.cloudping.info/ CloudPing.info Amazon Web Services and AWS are trademarks of Amazon.com, Inc. or its affiliates in the United States and/or other countries. www.cloudping.info 서울 리전에서 opsworks 가 안된다. 물론 이미지 떠서 auto scaling 하거나 beanstalk 을 사용해도 된다. 오토 스케일링은 직접 EC2 한 개 생성하고 거기에 필요한 패키지 설치 및 설정 파일 들 고치고 해서 이미지를 뜬다. 그리고 부하에 따라 그 이미지가 자동으로 생성되도록 하는 방식이고 빈스톡은 기본 제공되는 이미지 nodejs 일 경우 nodejs ..
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImI0YTlhYjYxLWJhZDktMTFlYi05ZTg5LTdiY2Q3ZDNlNWQyOCIsImlhdCI6MTYyMTY3Mjk3Nn0.6yEtyy0L9c9p2RmLQiardzXFd1eX55gp82mX8BYa1lw.U2FsdGVkX1/VJ+g+cOfBprUS47+uvC46T9Y03B2F3/PW3gTl4H/Q+f64bDUdXv5pUeWx6qNAUtfkWK9nNeHQS4nFtk3ynpGpKy6PPnc6g5Q= fullToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImI0YTlhYjYxLWJhZDktMTFlYi05ZTg5LTdiY2Q3ZDNlNWQyOCIsImlhdCI6M..