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 밑으로 가지 마 */
}