개발자 되는 중/TIL&WIL

내배캠 TIL 2022.01.06

SeonChoco 2023. 1. 6. 13:09

CS 특강 메모리 

A 함수 호출 -> 스택에 A 함수에 대한 지역변수, 파라미터들이 쌓임
A 함수 실행 완료 -> 스택에서 관련데이터 POP
B 함수 호출 -> 스택에 B 함수에 대한 지역변수, 파라미터들이 쌓임

 

메모리가 다 차도 가상메모리가 컴퓨터가 계속 돌아가도록 보호해준다.

어떻게?

 

서로 각각 독립적으로 가상 메모리를 할당받는다. => 다른 프로세스의 가상 메모리를 침범할 일이 없다.

64비트 운영체제 기준으로 2^64만큼의 가상 메모리 공간을 사용할 수 있다.

2^32 = 4GB이라서 4GB이상의 램(메모리?)을 장착할 수 없었다.

8GB < 2^64 인데 어떻게 되는거지?

 

이때 디스크가 나온다. 

그림 그리면서 공부하신대

 

페이지: 가상메모리에서 사용되는 메모리 영역을 일정한 크기로 나눈 블록

프레임: 물리 메모리에서 사용되는 메모리 영역을 일정한 크기로 나눈 블록

 

연두색: 현재 사용중인 페이지

빨간색: 현재 사용중이지 않은 페이지

 

연두색 페이지들은 실제 물리 메모리 영역에 저장 

페이지 테이블은 물리 메모리 영역 어디에 저장되는지에 대한 정보를 가진다

 

빨간색 페이지들은 디스크에 저장

디스크: 쓰이지 않는 페이지들의 유배 장소

 

빨간색 페이지가 다시 쓰이면?

1.페이지 테이블에 물리 영역에 자리가 있는지 물어본다 (매핑규칙이 있는지 확인 -> 있으면 바로 저장)

 

2. 물리 영역에 자리가 없으면 LRU least recently used 알고리즘을 이용해서 가장 안쓰이는 메모리의 프레임을 빼고 디스크로 보내서 자리를 만들어준다. 

 

3. 만들어진 프레임 자리에 해당 페이지가 들어간다 (매핑된다) = page swap

 

물리 메모리 영역이 부족해서 page swap이 너무 많이 일어나면 thrashing이라는 성능 저하 현상도 발생 

 

결론:  램에 자리가 많으면 page swap을 덜해도 되서 성능에 좋다.

 

알림은 챌린지로 남겨두면 좋을 것 같다.

(초기 세팅이 어렵다, 파이어베이스 노티피케이션 기능)

local notification

react-query

fetch 함수로 login API를 구현? useMutation을 이용해야한다

useMutation

Json server을 이용해서 한다면? 

어렵겠다...ㅠ 

firebase를 그냥 쓰면 안돼나?

허다은님이 이걸로 성공하셨나봐

useQuery 안에 useState, useEffect 다 들어있다.

useMutation도 비슷한데 body를 넣어줘야한다. (매개변수를 줘서 데이터베이스의 변화를 주는 경우는 useMutation을 써야한다) 

==> 이 두가지 훅은 이미 async await가 들어있다. 

 

delete, update, login 

async(붙이면 항상 promise)  await가 없으면 fetch의 리턴값은 여전히 promise

async await를 써주면 promise라서 비동기 작업 (pending ->  data, error)

query 

 

에러를 방지하기 위해 서로의 컴퓨터 상태와 기본 세팅을 최대한 똑같이 맞추는 세팅을 해주었다.

 

node 버전 선택해서 쓰는 법

http://megaton111.cafe24.com/2020/12/23/nvm%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-node-%EB%B2%84%EC%A0%84-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0/

 

NVM을 이용한 Node 버전 변경하기

NVM을 이용하면 노드 버전을 스위칭하여 사용할 수 있다

megaton111.cafe24.com

 

에러를 방지하기 위해 서로의 컴퓨터 상태와 기본 세팅을 최대한 똑같이 맞추는 세팅을 해주었다.

 

1.깃 레파지토리를 판다

2. create app 명령어 및 라이브러리 다운로드 명령어 다 넣어주기

 

폴더링 (폴더, 파일 이름과 위치를 정함)

node 버전 선택해서 쓰는 법

http://megaton111.cafe24.com/2020/12/23/nvm%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-node-%EB%B2%84%EC%A0%84-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0/

 

 

리드미 참고할 블로그 

https://gist.github.com/ihoneymon/652be052a0727ad59601

 

리액트 네이티브 폰트를 적용하는 법

정익님 일타 특강

import * as SplashScreen from "expo-splash-screen";
import { loadAsync } from "expo-font";

SplashScreen.preventAutoHideAsync();

export default function App() {
  const [appIsReady, setAppIsReady] = useState(false);

  useEffect(() => {
    const prepare = async () => {
      await loadAsync({
        "NotoSansKR-Regular": require("./assets/fonts/NotoSansKR-Regular.otf"),
      });
      setAppIsReady(true);
    };
    prepare();
  }, []);

  const onLayoutRootView = useCallback(async () => {
    if (appIsReady) {
      await SplashScreen.hideAsync();
    }
  }, [appIsReady]);

  useEffect(() => {
    onLayoutRootView();
  }, [appIsReady]);

  if (!appIsReady) {
    return null;
  }

 

expo-splash-screen

expo-font

다운 받아줘야한다.

 

스플래쉬를 의도적으로 늦춰줄것이다. 왜? 메인 페이지에서 필요한 정보들을 받아올 시간을 줄 수 있어요. 

splashScreen.preventAutoHideAsync()

splashscreen,hideAsync()

 

loadAsync를 이용한다 expo-font에서 임포트

 await 

font-family 해줘서 써줄 수 있다.  (전역에 쓰게 하려면 어떻게 해야해?) 

 

컴퓨터에서 못 읽는 ttf는 안드로이드용 otf는 ios 용 파일?

그래서 읽지 못하는 오류가 났다네요.

 

설명해주는 익스텐션 쓰시네 한글 설명? 

'개발자 되는 중 > TIL&WIL' 카테고리의 다른 글

내배캠 TIL 2022.01.09  (0) 2023.01.08
내배캠 TIL 2022.01.08  (0) 2023.01.06
내배캠 TIL 2022.01.05  (0) 2023.01.05
내배캠 TIL 2022.01.04  (0) 2023.01.04
내배캠 TIL 2023.01.03  (0) 2023.01.03