2026. 9. 25. 23:50

@notifee/react-native

@react-native-firebase/app

@react-native-firebase/messaging

react-native-callkeep

react-native-voip-push-notification

Android 전용

@react-native-firebase/app
 - React Native에서 firebase를 쓰기 위한 기본 모듈
 - Firebase 프로젝트와 앱을 연결 

 - 아래 messaging이 동작하려면 반드시 필요


@react-native-firebase/messaging
 - FCM 푸시를 받는 모듈
(Firebase Cloud Messaging)
- getToken()/onTokenRefresh()

기기 FCM 토큰을 받아 /account/push-token에 등록
- setBackgroundMessageHandler()

앱이 꺼져 있어도 푸시가 오면 JS 코드 실행
착신 알림이 오는 시작점
- onMessage()

앱이 화면에 떠 있을 때 온 푸시를 처리

 

서버는 priority HIGH인 data 메시지로 보냄
그래야 절전 모드(doze)에서도 바로 도착

@notifee/react-native
- 로컬 알림을 세부적으로 꾸밀 수 있는 라이브러리
FCM은 메시지를 전달
화면을 보이는 건 이 쪽이 담당
CALL + fullScreenAction:
잠금 상태에서 전체화면 수신 화면으로 띄움
[거절]/[받기] 액션 버튼, 반복 벨소리(loopSound),
40초 뒤 자동 제거(timeoutAfter)
onBackgroundEvent/getInitialNotification
앱이 꺼진 상태에서 받거나 거절을 눌렀을 때 그 동작을 처리
Android 13 이상에서는 알림 권한을 요청
requestPermission

iOS 전용

react-native-voip-push-notification
- Apple CallKit(iOS 기본 전화 수신 UI)을 다루는 라이브러리


react-native-callkeep

 

 

2026. 8. 27. 15:11

OCI의 Ubuntu 이미지는 22번 포트만 열린 iptables 규칙을 탑재

 

VCN 보안 목록에서 80을 열어도 인스턴스 안쪽 방화벽에서

 

한 번 더 막히기 때문에 브라우저에서 안 보임

 

# REJECT 규칙(5번) 앞에 80/443 허용 삽입

sudo iptables -I INPUT 5 -p tcp --dport 80 -m state --state NEW -j ACCEPT

 

 

2026. 8. 4. 13:40

1. mariadb 설치

sudo apt update

sudo apt install mariadb-server -y

 

2. mariadb 실행 상태 확인

sudo systemctl status mariadb

 

sudo systemctl start mariadb

sudo systemctl enable --now mariadb

 

3. 보안 설정

sudo mariadb-secure-installation

 

여기서

 - root 비밀번호 설정

 - 익명 사용자 삭제 

 - 테스트 DB 삭제

 - 원격 root 로그인 여부 설정

 

4. mariadb 작성

sudo mariadb -u root -p

 

5. 데이터베이스 schema 작성

 

CREATE DATABASE apple CHARACTER SET
utf8mb4 COLLATE utf8mb4_unicode_ci;

 

CREATE USER 'apple'@'localhost' IDENTIFIED BY 'PASSWORD';

GRANT ALL PRIVILEGES ON apple.* TO 'apple'@'localhost';

FLUSH PRIVILEGES;

SELECT VERSION();  -- 10.5이상 확인

EXIT;

 

6. 생성한 DB user로 접속

mariadb -u apple -p

 

 

2026. 8. 3. 19:16

python 3.10.12와 python 3.12.13이 동시 설치 되었을 때 

 

python --version 치면 

 

Python 3.12.13 으로 나오도록 설정

 

ls -l /usr/bin/python /usr/bin/python3

 

sudo apt remove python-is-python3

 

sudo update-alternatives --install

/usr/bin/python python /usr/bin/python3.12 2

 

sudo update-alternatives --install

/usr/bin/python python /usr/bin/python3.10 1

 

 

 

2026. 7. 14. 11:12

min-width : 이보다 작아지지 마

 

max-width: 이보다 커지지 마

 

우선순위 규칙

 

min-width > max-width > width

 

너비가 줄어들거나 늘어날 때 요소가 움직이는 범위

 

   min-width          max-width
      │                   │
      ▼                   ▼
 ─────┤███████████████████├─────
      └─── 실제 허용 범위 ───┘
   (이 안에서 width가 자유롭게 조절됨)

 

1. max-width 

.container {
  width: 100%;      /* 화면에 꽉 차게 */
  max-width: 800px; /* 단, 800px는 넘지 마 */
  margin: 0 auto;   /* 가운데 정렬 */
}

 

 

2. min-width

 

너무 좁아지는 것 방지

 

.button {
  min-width: 120px; /* 글자가 짧아도 최소 120px */
  padding: 10px;
}

동작:

  • 버튼 글자가 "확인"(짧음)이든 "저장하고 계속하기"(김)든
  • 최소 120px는 유지 → 버튼들이 들쭉날쭉하지 않고 정돈됨

3. 세 속성 함께 사용

 

.box {
  width: 1000px;    /* 1000px 원하지만... */
  max-width: 600px; /* 600px 넘지 마 (width를 이김) */
  min-width: 300px; /* 300px 밑으로 가지 마 */
}