전체 글 173

[React Native] 체크드 - 독서 기록 앱

체크드 독서 기록 앱 프로젝트 개요 분류 : 모바일 앱 일시 : 2022.03 ~ 스택 : React-Native, Styled-Component / Firestore, Firebase Authentication 주제 : 독서 기록 역할 : 개인 프로젝트 프로젝트 소개 체크드(Checked)는 독서 기록 모바일 어플리케이션입니다. 단순한 독서 진도 기록 뿐만 아니라 '금주의 명언', 다른 사용자가 읽은 책을 확인할 수 있는 '사람들이 방금 읽었어요', '큐레이터 추천 도서' 기능을 추가적으로 제공합니다. 프로젝트 기여 및 배운 점 React-Native 모바일 앱 개발 Atomic Design 적용 CodePush 적용 iOS, android 앱 기획, 개발, 출시 전 과정 경험 도서 검색 기능 구현 -..

프로젝트 2023.08.06

[자동매매] 23-08-05 모델 개선, 실제 도입

학기 수업에서 진행한 자동매매 봇 업데이트 기록입니다. 맥 미니 입양 중고로 맥 미니를 입양했습니다. 맥 미니에서 실제 매매, 모델 학습을 24시간 돌리고 있습니다. 항상 들고 다니는 맥북으로 원격 접속이 가능해서 편하게 모니터링할 수 있습니다. 모델 개선 : 리워드 리워드 지급 방식을 개선하였습니다. 제가 실제 도입하여 거래를 쭉 지켜본 결과 당연하지만 놓친 부분이 있었습니다. 업비트 거래 수수료입니다. 이전 모델은 수수료를 감안하지 않아 손해를 보는 경우까지 올바른 선택으로 간주, 학습하고 있었습니다. 업비트 거래 수수료를 반영하여 리워드를 지급하도록 모델을 학습시켰습니다. 모델 개선 : 거래 기간 증가 모델이 매수, 매도를 결정하는 거래 기간을 증가했습니다.(표현이 좀 이상하네요..) 6시간으로(3..

[알고리즘/기초] 피보나치 수

알고리즘의 기초 이론 중 하나인 피보나치 수에 대하여 간단하게 기록한 글입니다. 정의 피보나치 수는 첫째 항, 둘째 항이 1이고 N번째 항이(N>=2) 직전 두 항의 합을 값으로 가지는 수열입니다. 1. 연습 문제 기본적인 피보나치 수 관련 문제입니다. 2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 1-1. 방법 (시간 초과) 재귀적인 방식으로 솔루션을 작성할 수 있습니다. 허나 이 방식으로는 연습 문제를 해결할 수 없습니다. 연습 문제의 시간 제한이 1초이기 때문입니다. #..

컴퓨터공학 2023.08.05

[MacOS] python 가상 환경에서 tensorflow GPU 작업하기 (m1)

맥에서 tensorflow GPU 학습을 위해 공식 문서를 따라 하던 중 사용중인 ide인 vscode의 설정을 손봐야 했습니다. vscode 가상환경의 파이썬 커널 적용, tensorflow GPU 학습 방법을 안내합니다. 전제 이 블로그에 명시된 과정을 진행하기 전, apple tensorflow 가이드에 따라 가상환경 venv-metal을 만든 것으로 간주합니다. 터미널에서 가상 환경 활성화 먼저 터미널을 열어 아래 명령어를 통해 가상 환경 venv-metal을 활성화합니다. source ~/venv-metal/bin/activate vscode 열기 venv-metal가상 환경이 활성화된 상태에서 아래 명령을 통해 터미널에서 vscode를 엽니다. code . 만약 code 명령어가 설정되지 않은..

소프트웨어 2023.08.02

[React-Native] 아키텍처 정리

React-Native의 새로운 아키텍처를 공부해 보고 아주 간단하게 정리해 보았습니다. 정리 좌: 구 아키텍처, 우 : 신 아키텍처 JSC : javascript 엔진으로 apple 사에서 웹브라우저 사파리에 도입하였음 -> 현재 React-Native에서는 Hermes라는 자체 javascript 엔진을 기본 엔진으로 사용 중 codegen : JSI : javascript 엔진에 사용할 수 있는 API로 javascript C++ 소통을 돕는다. Fabric : 렌더링 시스템 TurboModules : 네이티브 기능 활용을 돕는 모듈 관련 글 [React-Native] 구 아키텍처 : 기존 Bridge 를 가진 아키텍처 새로운 아키텍처를 이해하기 위해서는 구 아키텍처를 알아야 합니다. 구 아키텍처에..

[React-Native] 아키텍처 : JSI, 렌더링 시스템 Fabric과 TurboModules

이전 브릿지를 사용한 구 아키텍처에서 javascript 코드와 렌더링 시스템과 서로 소통하기 위해선 JSON 으로 변환하는 과정을 반드시 거쳐야 했습니다. 이는 마치 한국인이 아프리카 은데벨레족과 소통하기 위해 중간에 미국인을 두고 번역을 하는 것과 마찬가지입니다. 이러한 구조는 성능 저하 문제를 야기했습니다. JSI (JavaScript Interface) JSI는 자바스크립트 엔진에 추가할 수 있는 API로 javascript와 C++ 오브젝트와 소통이 가능하도록 만들어줍니다. C++ 과의 소통이 가능하다는 점은 크로스플랫폼에서 크나큰 장점이 되는데요, 그 이유는 안드로이드 네이티브 코드는 C/C++로 설계 iOS 는 기본적으로 C/C++을 지원 하기 때문입니다. JSON 으로 변환하여 통신하는 방..

[React-Native] 구 아키텍처 : 기존 Bridge 를 가진 아키텍처

새로운 아키텍처를 이해하기 위해서는 구 아키텍처를 알아야 합니다. 구 아키텍처에 포함된 개념은 무엇이고, 구 아키텍처의 문제점은 무엇이었는 지 서술합니다. Bridge 네이티브와 javascript는 동일한 언어를 사용하지 않고, 동일한 아키텍처를 사용하지 않습니다. 브릿지는 javascript 코드와 네이티브 간 통신을 도와줍니다. javascript 코드를 JSON 형태로 전달받아 Shadow Tree 생성에 사용합니다. 생성된 Shadow Tree 정보를 네이티브에 넘겨주어 네이티브 UI를 그립니다. UI 업데이트(아래 스크린 샷 내 Platform UI 부분), 레이아웃 구성(아래 스크린 샷 내 Shadow Tree 부분), JS은 서로 각각 다른 쓰레드에서 실행되며, 이 세 쓰레드는 서로 비동..

[pyjwt] AttributeError: module 'jwt' has no attribute 'encode' 에러 해결

문제 상황 pyjwt를 설치하여 jwt encode 함수를 사용하려 하였으나 아래와 같은 에러가 발생하였습니다. Traceback (most recent call last): File "", line 1, in AttribureError: module 'jwt' has no attribure 'encode' 해결 방법 jwt 라이브러리 삭제 후 pyjwt 라이브러리를 설치하였음에도 발생할 수 있는 문제입니다. uninstall 명령을 통해 jwt 라이브러리를 삭제 시도하였음에도 jwt 라이브러리 디렉토리 파일이 삭제되지 않아 발생할 수 있는 문제입니다. 파이썬 라이브러리 설치 경로를 확인합니다. 임의의 설치된 라이브러릴 하나를 골라 설치 경로를 확인해 주세요. pip3 show reque..

소프트웨어 2023.07.26

[React-Native] ERESOLVE While resolving: undefined@undefined 에러 해결하기

발생 에러 npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: undefined@undefined npm ERR! Found: react-native@0.67.4 npm ERR! node_modules/react-native npm ERR! peer react-native@"*" from @react-native-community/cli@6.4.0 npm ERR! node_modules/@react-native-community/cli npm ERR! @react-native-community/cli@"^6.0.0" from react-native@0.67.4 npm ERR! react-n..

[React-Native] cli.init is not a function 문제 해결하기

발생 에러 /opt/homebrew/Cellar/react-native-cli/2.0.1/libexec/lib/node_modules/react-native-cli/index.js:302 cli.init(root, projectName); ^ TypeError: cli.init is not a function at run (/opt/homebrew/Cellar/react-native-cli/2.0.1/libexec/lib/node_modules/react-native-cli/index.js:302:7) at createProject (/opt/homebrew/Cellar/react-native-cli/2.0.1/libexec/lib/node_modules/react-native-cli/index.js:2..