전체 글 173

[AWS/EC2] AWS EC2에서 XV6 실습 환경 구축하기

실습용 운영체제 XV6를 AWS EC2 인스턴스에서 설치하고 운용하는 방법을 안내합니다. 가상화 프로그램이 온전히 작동하지 않는 맥OS Silicon 기기에서 XV6를 실습하기 위한 대안입니다. 업데이트 EC2 Ubuntu 20.04 LTS 인스턴스를 사용하는 것을 전제합니다. 업데이트를 한번 해주세요. sudo apt-get install xv6 클론 sudo git clone https://github.com/mit-pdos/xv6-public.git qemu 에뮬레이터 설치 sudo apt install qemu-kvm xv6 이미지 생성 make 터미널에서 xv6 구동 GUI 환경이 아닌 터미널에서 xv6 운용 시 -nographic 옵션이 있는 에뮬레이터를 실행해야 합니다. qemu-nox에 관..

소프트웨어 2023.02.13

[MacOS] Homebrew로 node 버전 바꾸기

vscode 코드에 궁금한 점이 생겨 로컬에 클론하게 되었습니다. 로컬 노드 버전이 19.04 인데 vscode 모듈 중 일부가 노드 v19를 지원하지 않아 앱 실행이 불가능했습니다. homebrew를 통해 node 버전을 바꾸어 보겠습니다. 로컬 node 버전 확인 저는 node 19.04가 로컬에 설치되어 적용되고 있었습니다. node -v 원하는 node 버전 설치 homebrew 공식 사이트에서 원하는 node 버전을 확인하고 설치합니다. 저는 v18로 설치해보겠습니다. https://formulae.brew.sh/formula/node#default node Homebrew’s package index formulae.brew.sh brew install node@18 설치된 node 확인 설치..

소프트웨어 2023.02.13

[Basic] 기본 알고리즘 정리노트

간단하게 정리한 알고리즘 기법 정리 노트입니다. String Two pointers : 두 개의 피봇을 활용해 탐색하는 기법 (이중반복 -> 단일반복) / 배열 Sliding window : 고정 길이 Two pointers, 시간 복잡도 최소화 / 해쉬맵과 함께 활용 Prefix sum : 일종의 전처리 기법 Rabin Karp algoritm : 라빈 카프 알고리즘, 긴 스트링을 해싱하여 연산량을 축소 e.g.) 0번째문자ASCII * 2^2 + 1번째 문자 ASCII * 2^1 + 2번째 문자 ASCII * 2^0 Search BFS : graph, visitied, queue 활용 DFS : recursion Backtracking : DFS를 주요 활용하나 탐색 도중 조건에 부합하지 않는 경우를..

컴퓨터공학 2023.02.13

[Python3] 다차원 리스트 생성

계속 까먹는 파이썬 다차원 리스트 생성, 알고리즘 문제 푸는 데 유용한 도구가 되니 더 이상 까먹지 않도록 블로그에 기록합니다. 생성 모든 원소 값 0을 갖는 2차원 리스트를 생성합니다. n = 2 table = [[0 for _ in range(n)] for _ in range(n)] # [[0,0], [0,0]] 주의점 아래 프로그램을 실행하여 동일한 결과를 얻을 수 있으나, 일반적인 다차원 리스트를 생성하는 것이 아닌 각 인덱스에 대한 참조 리스트를 생성합니다. n = 2 table =[([0]*n)] *n # [[0,0], [0,0]] table[1][1] 값을 1로 만들고자 할 때, table[0][1] 또한 1로 변경되는 것을 확인할 수 있습니다. print(table) # [[0,0], [0..

[React-Native] Pressable 컴포넌트로 재사용 가능한 버튼 구성하기

Presssable 컴포넌트는 RN 앱 개발을 위해 반드시 알아야 하는 컴포넌트입니다. press 상호작용에 관한 기능을 제공하는 컴포넌트이기 때문에 적절히 커스텀해서 버튼 등의 기능을 대신할 수 있습니다. (RN 기본 컴포넌트 Button 컴포넌트는 너무 빈약합니다.) 구성 그러나 Pressable을 재사용 가능한 버튼으로 바로 사용하기에는 난감한 문제들이 있습니다. 버튼 뿐만 아니라 기타 press event에도 대응하기 위해(버튼 그 이상의 목적으로 광범위한 용도를 위해) 만들어졌기 때문입니다. import React from "react"; import { Pressable, Text } from "react-native"; const ButtonCustom = ({ onPress, text, t..

[React-Native] react-native-webview 안드로이드 플랫폼에서 웹뷰를 출력하지 않는 문제

앱 내 웹뷰를 이식하려고 했습니다. 웹뷰를 사용하기 위해 react-native-webview 라이브러리를 사용하려 했으나.. 안드로이드 플랫폼에서 정상적으로 출력이 되지 않았습니다. 빈 공간만 출력되었습니다. IOS 플랫폼에선 정상적으로 원하는 웹뷰가 출력되었습니다. 안드로이드 플랫폼에서만 발생하는 문제였습니다. 깃허브 issue 항목에 비슷한 문제에 대한 해결 방법을 찾을 수 있었습니다. 상위 컴포넌트 없이 리턴 View 나 ScrollView 같은 상위 컴포넌트가 존재할 때 리턴하는 경우 발생하는 문제였습니다. 잘못된 예) return ( ); 올바른 예) return ; 참고 : react-native-webview/issues/1426#issuecomment-1207378759 White bla..

[React-Native] react-native-google-singin 앱 심사에 통과하기 위한 앱 서명 인증서(SHA-1) 키 적용하기

debug 빌드에서 잘 기능하는 구글 소셜 로그인이 동작하지 않아 플레이 스토어 심사에서 승인받지 못했습니다. 찾아보니 앱 서명 인증서 SHA-1 키를 파이어베이스 콘솔에 추가해야 한다고 합니다. (디버그 환경에서는 상관이 없으니) 귀찮다고 추가 안했던 기억이 나네요... SHA-1 키 복사 구글 플레이 콘솔 -> 앱 선택 -> 설정 -> 앱 무결성 -> 앱 서명에서 앱 서명 인증서(SHA-1) 지문을 복사합니다. 파이어베이스 콘솔 적용 파이어베이스 콘솔 -> 프로젝트 선택 -> 프로젝트 설정 -> 디지털 지문 추가를 클릭합니다. 복사한 SHA-1 키를 붙여넣은 후 저장합니다. (선택) Release 빌드 SHA-1키 콘솔에 적용하기 구글 로그인이 Release 빌드에서도 정상적으로 기능하도록 Relea..

[Appstore Connect] 앱 스크린샷 업로드 오류를 Curl API를 통해 우회적으로 해결하기

앱 미리보기에 업로드 하려는데 업로드가 되지 않았습니다. 가끔 웹 클라이언트가 먹통이 되는데요, 이 문제를 Appstore connect API를 활용해 해결해보겠습니다. API 키 생성 Appstore connect -> 사용자 및 엑세스 -> 키 에 들어가서 새로운 키를 생성합니다. API키를 생성했으면 목록 우측에 API 키 다운로드 링크를 통해 API 키를 다운로드합니다. 생성한 API키는 한번만 다운로드 가능합니다. Ruby script 작성 터미널을 열어 다음과 같이 루비스크립트를 작성합니다. ISSUER_ID, iss, KEY_ID, kid 를 올바는 값으로 바꿔주세요. AuthKey_XXXXXX.p8 는 다운로드한 API 키 파일 명으로 바꾸어 주세요. 만료일(exp)을 늘려 주는 게 좋습..

[React-Native] 개발할 때 알면 좋은 팁

RN 플랫폼을 통해 모바일 앱을 개발할 때 잊어버리기 쉬운 좋은 팁이 여럿 있습니다. 한 포스트로 쓰기에는 사소하지만 까먹을 때마다 보기 좋은 팁들을 모아봤습니다. 제 블로그를 찾아주신 다른 분들에게도 도움이 되었으면 좋겠습니다. 팁 서드파티 라이브러리 사용을 최대한 지양하세요. 그 중 제대로 관리되는 라이브러리는 소수입니다. 나중에 의존성 지옥에 갇혀요 (저처럼) 가벼운 라이브러리는 컴포넌트로 스스로 구현하는 것이 좋습니다. 하나라도 의존성에서 벗어나게 하세요. 지금 제공되는 기본 컴포넌트로도 충분합니다. Button보다 TouchableOpacity 및 TouchableWithoutFeedback 컴포넌트를 사용하세요. Button컴포넌트는 기능이 정말 빈약합니다. 네이티브 버튼을 구현하고 싶다면? ..

[React-Native] 안드로이드 커스텀 폰트 출력 문제 IncludeFontPadding 해결하기

커스텀 폰트 문제가 android에서 발생했습니다. 추가 마진(아니면 패딩)이 모든 커스텀 폰트에 적용되어 있습니다. 문제 이해 구글링하여 이 문제에 관한 많은 글을 찾을 수 있었습니다. React Native Android Text Component extra padding android:includeFontPadding React Native - Text Style Props - IncludeFontPadding 안드로이드 TextView 기본값이 참인 includeFontPadding 속성이 적용된 것이 문제였습니다. 적용 includeFontPadding 속성이 거짓임을 명시해줍니다. include-font-padding: false; 적용 예 1: import styled from "styled..