본문 바로가기

분류 전체보기43

평가전략 (Evaluation Strategy) 평가전략이란? 프로그래밍 언어에서 함수 호출의 argument의 순서를 언제 결정하고 함수에 어떤 종류의 값을 통과 시킬지 결정하는 것 parameter 와 argument의 차이 그동안 parameter와 argument를 명확히 구분하지 않고 혼용하여 사용했는데 둘의 차이는 아래 예시 코드의 주석을 통해 확인할 수 있다. parameter는 함수 선언부에 정의 되고, arguments는 함수 호출부에서 사용된다. let arg = 1; let myFunc = function(param) { // parameter (매개변수) //... }; myFunc(arg); // arguments (인자) Call by Value - imutable arguments로 값이 넘어올 때 복사된 값이 넘어온다. c.. 2022. 2. 11.
에러노트 - can't perform a react state update on an unmounted component 문제가 되었던 사항 can't perform a react state update on an unmounted component 라는 warning 발생 해결과정 이슈 서칭 많은 초보 리액트 개발자들이 실수하고 있는 부분이어서 쉽게 원인을 찾아낼 수 있었다. 말 그대로 unmount된 컴포넌트의 상태를 업데이트 할 수 없고 이는 수행되지 않지만 메모리 누수를 일으킬 수 있다는 내용의 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 as.. 2022. 2. 9.
자바스크립트의 메모리 누수 (Memory Leaks) Memory Leaks 메모리 누수란? 부주의 또는 일부 프로그램 오류로 인해 더 이상 사용되지 않는 메모리를 해제하지 못하는 것 자바스크립트의 메모리 스택 메모리: 단순 변수 (String, Number, Boolean, Null, Undefined, Symbol, Bigint) 힙 메모리: 참조 데이터 타입 (Object, Array, Function) MDN 문서의 자바스크립트 메모리 관리 C 언어같은 저수준 언어에서는 메모리 관리를 위해 malloc() 과 free()를 사용한다. 반면, 자바스크립트는 객체가 생성되었을 때 자동으로 메모리를 할당하고 쓸모 없어졌을 때 자동으로 해제한다(가비지 컬렉션). 이러한 자동 메모리 관리는 잠재적 혼란의 원인이기도 한데, 개발자가 메모리 관리에 대해 고민할 .. 2022. 2. 8.
컴퓨터 구조와 레지스터 컴퓨터의 구성 요소 하드웨어 중앙처리장치 CPU(Central Processing Unit): 실행 프로그램의 명령 해석, 실행, 장치제어, 각종 레지스터로 구성된다. MPU(Micro Processor Unit): CPU를 LSI(고밀도 집적회로)화 한 일종의 통합 장치 사물 인터넷 디바이스 H/W 플랫폼 (ex - 아두이노: 대표적인 오픈소스 H/W 플랫폼, Respberry Pi 등등) 주변장치 기억장치(Memory unit) RAM(Random Access Memory) DRAM(주기억장치) SRAM (2차 캐시기억장치) ROM(Read Only Memory) 보조기억장치 FlashMemory 하드 디스크 입력장치 소프트웨어 시스템소프트웨어 응용 소프트웨어 주 기억장치와 보조기억장치의 관계 전원 .. 2022. 1. 21.
Pthread Pthread thread 표준 API POSIX thread 또는 Pthread라고 부른다. Pthread API 저수준 API로 100여갸의 함수 제공 유닉스 시스템 핵심 스레딩 라이브러리 다른 스레딩 솔려순도 Pthread 기반으루 구현 Pthread 라이브러리 헤더 파일에 정의 모든 함수는 pthread_로 시작 두가지 그룹으로 나뉜다 스레드 관리: 생성, 종료, 조인, 디태치 함수 등 동기화: 뮤텍스 (상호배제) 등 동기화 관련 함수 기본 라이브러리와 분리된 libpthread 라이브러리에 구현되어 있으므로 컴파일시 명시적으로 -pthread 옵션이 필요하다. gcc -pthread test.c -o test 스레드 생성 // thread: 생선된 스레드 식별자 // attr: 스레드 특정 설정.. 2022. 1. 19.
CodePush 적용 적용 과정 AppCenter 설정 npm install -g appcenter npm install appcenter appcenter-analytics appcenter-crashes npm install react-native-code-push AppCenter 앱 생성 Appcenter 페이지에서 생성 또는 cli 활용 Appcenter 페이지 Release Type = Production Platform = React Native cli appcenter apps create -d appName-aos -o android -p react-native appcenter apps create -d appName-ios -o ios -p react-native AppCenter 로그인 appcenter.. 2022. 1. 17.
쉘 스크립트 쉘 스크립트 쉘을 사용해서 프로그래밍을 할 수 있다 서버 작업 자동화 및 운영을 위해 익혀둘 필요가 있다 쉘 명령어를 기본으로 하되 몇가지 문법이 추가된 형태 기본 문법 쉘 스크립트는 파일로 작성 후, 파일 실행 파일의 가장 위의 첫 라인은 #!/bin/bash 로 시작 쉘 스크립트 파일은 실행 권한을 가지고 있어야 한다 일반적으로 파일이름.sh 와 같은 형태로 파일 이름을 작성한다 Hello World 출력 #!/bin/bash echo 'Hello World' 주석 #로 주석처리 변수 선언 변수명=데이터 변수명=데이터 사이에 띄어쓰기는 허용되지 않는다 사용 $변수명 으로 사용된다 #!/bin/bash name="DabinLim" age=29 mycareer="IT" echo $name $age $my.. 2022. 1. 14.
트러블 슈팅 - FlatList 최적화 문제가 되었던 사항 Flatlist로 페이지네이션한 리스트의 항목이 70개 이상이 되는 경우 눈에 띄게 버벅이는 현상 ListHeaderComponent에 넘긴 TextInput에서 한글자 입력할때마다 키보드 창이 dismiss되는 현상 해결과정 Flatlist 최적화 방법에 대하여 찾아보며 문제를 해결하였다. 1번 문제의 경우 유니크한 key값을 지정하지 않아 발생한 이슈였으며 2번 문제의 경우 인라인 함수 작성으로 인해 한글자 입력시마다 (setState 호출시마다) 상태 변화로 인해 ListHeaderComponent로 넘긴 함수가 재호출 되어 발생한 이슈였다. 기존 코드 예시 // render header const renderHeaderView = () => ( ); ... name} conte.. 2022. 1. 13.
시스템 프로그래밍 - 프로세스 관리 프로세스 관리 프로그램: 바이너리, 코드 이미지, 응용프로그램 또는 실행 파일 프로세스: 실행 중인 프로그램 (메모리 적재 + 프로세스 상태 정보 포함) 스레드 리눅스 프로세스는 기본 스레드 포함 싱글 스레드 프로세스: 기본 프로세스 멀티 스레드 프로세싀: 여러 스레드 존재 프로세스 ID pid, 각 프로세스는 해당 시점에 unique한 pid를 가짐 pid 최대 값은 32768 = 2의 15승 부호형 16비트 정수값 사용 최근 할당된 pid가 200이라면, 그 이후는 201, 202 식으로 할당 $ sudo vi/proc/sys/kernel/pid_max 프로세스 계층 최초 프로세스: init 프로세스, pid 1 init 프로세스는 운영체제가 생성 (단군 할아버지) 다른 프로세스는 또다른 프로세스로부.. 2022. 1. 10.
react-native-webview을 통해 띄운 웹과 앱간의 인터랙션 진행중인 프로젝트에서 신규 개발을 진행하던 중 웹뷰로 띄워지는 화면에서 특정 버튼 클릭시 앱 내에서 필요한 화면으로 이동해야 하는 기능을 구현하게 되었다. 이전에 지도를 webview로 띄웠던 경우에는 지도 웹 또한 직접 구현하였기 때문에 JavaScript의 postMessage를 활용한 경험이 있었지만 이번에는 해당 웹을 수정하기는 어려운 상황이었고 react-native-webview에서 제공되는 injectedJavaScript를 이용해 구현하기로 하였다. WebView 컴포넌트 예시코드 injectedJavaScript 예시코드 웹뷰가 로드될때 특정 javascript 코드를 심어줄 수 있다. 아래의 예시는 클릭한 버튼의 value 속성값을 받아 해당하는 상세 정보를 보여주는 페이지로 이동하는 .. 2022. 1. 10.