반응형

프로그래밍 215

react-native release 모드로 배포시 주의할 점(http 안되는 문제).

개발모드에서는 잘 되던 앱이 react-native에서 release 모드로 테스트를 하거나 build를 한 후 먹통이 되는 경우가 있다. 가장 흔히 겪는 문제는 api 호출이 제대로 안되는 경우인데, 원인은 http 프로토콜을 사용하기 때문이다. 기본적으로 react-native는 release 모드에서 http의 호출을 막는다. 따라서 https를 사용하도록 설정해야하는데, 여의치 않을 때 다음과 같은 설정으로 http 모드를 허용해주는 방법을 사용한다. android/app/src/main/AndroidManifest.xml 에서 ... ... android:usesCleartextTraffic="true" 추가

안드로이드 앱 등록 프로세스 정리중...

이 글은 React-native로 개발한 앱을 Android 테스트용으로 등록하는 과정(2021/12/23일 기준)에 대한 정리다. 크게 두 단계로 나누어 생각하기로 한다. 첫 째로 React-Native에서의 준비단계는 abd파일 apk파일을 생성하는 것이다. 두 번째로 google play console에 등록하는 과정이다. 등록과정은 테스트 버전과 배포되는 공개 버전 사이에 큰 차이는 없으므로 참고가 될 것 같다. React-Native 단계 구글에 앱을 올리기 위해서 가장 많이 문제가 되는 부분이 바로 업로드 키 와 사이닝 키라는 개념인 것 같다. 이 부분을 자세하게 설명한 문서는 보지 못해서 초보 앱 개발자의 경우 많이 헤멜 것이다. 문서가 있긴 하지만 이미 개념을 잘 아는 사람을 위한 설명뿐이..

비동기 호출과 ErrorBoundarry에 대해

우리는 종종 비동기 api호출을 useEffect 내에서 할 경우가 있다. 이 때 async ~ await을 사용한다 가정한다. 에초에 useEffect에 전달되는 첫 번째 파라미터 함수는 동기함수며 동기 함수 내에서 비동기 호출을 처리를 하기 위해서는 호출할 비동기함수를 또 다른 비동기 함수로 감싸줘야 한다. async function fetchData() { ... } useEffect(()=> { const func = async ()=> { const response = await fetchData(); } func(); },[])그리고 위 코드 처럼 결국엔 func 함수가 비동기적으로 호출되기 때문에 호출 결과를 동기적으로 처리할 수 없다. 따라서 fetchData의 결과로 Error가 발생된다..

javascript(typescript) 비구조화 할당과 함수의 keyword argument 다루기

본론에 들어가기 전에 자바스크립트에 대해서 투덜거리고 싶다. 자바스크립트의 생태계는 너무 크다. 웹의 발전에 지대한 역할을 하며 지금까지 건재해왔지만 필자의 견해로는 언젠가는 이 틀을 깨트려야한다고 생각한다. 설명을 하면 너무 길어져서 결론만 말하면 자바스크립트는 너무 생태계가 복잡하다. 타입스크립트는 훌륭하지만 애초에 javascript의 한계를 보완하기 위해 만들었다. 그런데 typescript 또한 제대로 쓰려면 만만한 것이 아니다. 같은 동적 타이핑 언어인 python 진영에는 pydantic이라는 것이다. 지금까지 typescript와 pydantic을 비교해온 결과 pydantic이 더 깔끔하고 사용하기도 편리하다. 이번에 keyword argument를 자바스크립트에서 사용하는 방법을 정리 ..

javascript에서 시간 다루기 moment, new Date()

시간을 생성하고 표시하는 것은 매우 간단하다. 자바스크립트의 경우 new Date(); 를 사용한다. 하지만, 서비스시에 문제가 생기기 마련이다. 시간은 전 세계 공통이 아니다. 한국 시간과 UTC(협정 세계시 또는 GMT) 시간은 9시간의 차이가 있다. 일명 시차라고 하는 이 시간 간격 때문에 우리가 원하는 지역의 시간을 표시하기 위해서는 여러가지 사항을 고려해야한다. 같은 코드를 사용해도 사용하는 플랫폼, 디바이스에 따라서 다른 결과를 표시하기도 한다. 그래서 우리는 UTC시간을 베이스로 두고 지역마다의 시차를 +-로 표시한다. 한국은 +09가 된다. 지역에 따라서 플랫폼에서 사용하는 locale이 다르기 때문에 시간과 locale 두가지를 정확히 알고 적용해야한다. 한국에서는 3시라고 하지만 UTC..

redux-saga에서 websocket을 이용하기.

이 글은 redux-saga에서 websocket사용을 위해 필요한 사항들을 개인적인 방식으로 정리를 위한 글이므로 참고만 하시길 바랍니다. 발단은 이렇습니다.(1차 실패 과정) react(react-native)에서 socket통신을 위해 websocket을 사용하기로 결정합니다. - 소켓 통신이 필요한 페이지 로딩마다 websocket을 연결하는 방식을 사용할 수도 있으나, 이렇게 하면 소켓 연결과 종료가 빈번히 발생하여 소켓 연결의 의미가 퇴색되게 느껴집니다. 그리하여 로그인 시에 연결을 하고 로그아웃을 할 때 소켓을 종료시키도록 설계하려 합니다. 물론 소켓 통신이 필요없는 페이지에서도 연결 상태를 유지하므로 서버 리소스가 증가할 수 있다는 점은 염두해 둔 결정입니다. - 이 방법을 사용하기 위해서..

React Native 워밍업.

안드로이드와 IOS 모바일 앱 개발 방식은 여러가지가 있지만 React를 사용해온 경험으로 React Native를 사용하기로 했다. 개발상 별 어려움을 없을 것이라 생각했고 까다로운 부분은 초기 개발 환경 설정과 배포라고 생각된다. 우선 리액트 네이티브의 개발 방식은 두 가지로 생각하면 된다. - expo - react-native-cli 또한 개발자가 사용할 컴퓨터 환경은 3가지다. - windows - linux - mac 워밍업이라 자세한 내용이 아닌 대략 훑어본 것들을 정리한다. - expo는 많은 기능들을 패키징 시킨 개발 프레임웍이라 생각하면 된다. 예를들어 android와 ios 개발과 배포를 한번에 정리, react-native API를 좀 더 쓰기 쉽게 모듈화 시켜 제공. expo는 매..

sqlalchemy uselist와 참조무결성 on postgresql

python으로 된 백엔드 프레임 워크는 django를 사용하고 있습니다. 최근 몇가지 문제로 다른 프레임워크에 대해 살펴보고 있구요. 후보군으로는 golang의 gingonic과 python의 fastAPI입니다. 프레임워크의 이동은 간단한 것이아니기 때문에 다양한 기술에대해 살펴볼 필요가 있습니다. 최근 뜨고있는 fastAPI를 살펴보면서 ORM으로 sqlalchemy에 대해 알 필요가 있다고 여겨져서 이리저리 살펴보는 중입니다. 사실 django에서도 raw Query로 대부분을 개발해왔기 때문에 raw Query가 편하긴 합니다. 하지만 개발 속도와 가독성있고 안정적인 코드를 위해 약간의 성능을 포기하는 것도 나쁘지 않다고 생각되었네요. 어쨌든 sqlalchemy에 대한 해외 문서들을 살펴보던 중..

종로구, 강남구, 해운대구 건물에 대한 통계, 데이터 분석 자료

개발 중인 프로젝트를 위한 데이터 분석 과정 중 흥미로운 부분을 공유하는 글입니다. 프로젝트 성격상 분석한 모든 부분을 공유하지 못하여 아쉽네요. 한국의 건축물은 약 1000만개 정도 된다 짐작됩니다. 모든 데이터를 분석하기보다는 분석은 지역별 특징이 있을 거라 짐작되는 샘플 데이터 (종로구, 강남구, 해운대구)를 하였고, 데이터 분석 프레임웍은 pandas, 시각화는 matplotlib.pyplot, searborn을 적절히 섞어 사용하였습니다. 코드는 복잡하므로 생략하고 시각화 결과만 공유합니다. 종로구, 강남구, 해운대구 에 대한 건축물 vs 공동주택 개수 히스토그램 여기에서 공동주택이라함은 아파트와 다세대 주택, 연립주택을 포함하는 개념입니다. 다세대 주택과 연립주택의 차이는 연면적의 차이입니다...

반응형