전체 글45 안드로이드 기기에서 로컬 PC 서버에 접속하는 방법 안드로이드 앱 개발 중 로컬 PC에서 실행 중인 서버(localhost) 에 접속해야 하는 경우가 있다.하지만 에뮬레이터와 실제 안드로이드 기기는 접근 방식이 다르기 때문에 헷갈리기 쉽다.안드로이드 에뮬레이터localhost 그대로 접속 가능http://10.0.2.2: 로 PC의 localhost 에 접근 가능하다.안드로이드 실기기 (USB / Wi-Fi)localhost 그대로는 접속 불가능실기기에서 localhost는 기기 자기 자신을 의미한다. 1. 실제 안드로이드 기기에서 로컬 PC 서버에 접속하는 방법방법 1. 같은 Wi-Fi에 연결 + PC의 로컬 IP로 접속가장 직관적인 방법이다.# 예시http://192.168.0.10:8081전제 조건PC와 안드로이드 기기가 같은 Wi-Fi 네트워크서버.. 2026. 1. 30. [네트워크] 요청한 도메인이 있는 DNS 서버를 찾아가는 과정 Q. AWS Route53, 가비아 등 여러 DNS 서비스가 있는데, 내가 요청한 도메인이 있는 DNS 서버를 찾아가는 과정은 어떻게 되는가? 하나의 요청이 실제로 어떤 DNS 서버를 찾아가는지 전체 흐름은 아래와 같습니다. 1. 도메인을 등록할 때 “어떤 DNS 서버가 authoritative(권한)인지”를 지정함도메인을 가비아에 등록했다고 가정해 보겠습니다.도메인을 등록하면 반드시 NS(네임서버) 기록을 지정해야 합니다.# 예시example.comNS → ns-123.awsdns-12.com # Route53 형식NS → ns-456.awsdns-34.net이 NS 정보를 등록업체(가비아, Route53, GoDaddy 등)가 TLD 서버(.com, .net 등)에 등록해 줍니다.이 순간부터 “ex.. 2025. 11. 27. [Flutter] 플러터 위젯 overflow 해결 Flutter 앱 개발에서 기기 해상도 / 배율(density) / 화면비(aspect ratio) 차이로 인해 overflow 문제가 생기는 건 아주 흔한 이슈입니다.이 문제를 모든 기기에서 안정적으로 대응하는 구조로 만들려면 고정된 픽셀 대신 반응형(responsive) 또는 비율 기반(layout-aware) 레이아웃으로 설계해야 합니다. 문제 원인Container, SizedBox 등에 고정된 width / height 값을 주었을 때→ 어떤 기기에서는 화면보다 커지며 RenderFlex overflowed 발생또는 Column / Row 안에서 자식 위젯이 남은 공간보다 커지는 경우 해결 방법아래 3가지만 지켜도 대부분 해결됩니다. 1. 고정 크기 대신 가변 크기 사용MediaQuery.of(.. 2025. 11. 27. MySQL vs Redis 세션 락 처리 방식 MySQL과 Redis의 세션 락(Session Lock) 처리 방식에 어떤 차이가 있는지 알아보겠습니다. 1. 시작하기에 앞서: 세션 락은 왜 필수일까?웹 애플리케이션을 만들다 보면 '세션'이라는 개념을 반드시 만나게 됩니다. 사용자의 로그인 정보나 장바구니 내용 등을 서버에 저장하는 기술이죠. 그런데 만약 여러 요청이 거의 동시에 이 세션 데이터에 접근하려 한다면 어떻게 될까요? 바로 이때 '세션 락'이 필요합니다. 간단한 '장바구니 시나리오'를 생각해 봅시다. 사용자가 장바구니에 상품을 추가하는 요청과 특정 상품을 삭제하는 요청을 거의 동시에 보냈다고 가정해 보겠습니다. 락이 없다면 다음과 같은 데이터 손실이 발생할 수 있습니다.요청 1 (상품 추가): 현재 장바구니 상태 [A, B]를 읽어옵니다... 2025. 11. 25. [Flutter] 비동기 작업 WidgetsBinding.instance.addPostFrameCallback vs Future.microtask WidgetsBinding.instance.addPostFrameCallback와 Future.microtask는 모두 비동기 작업을 스케줄링하는 방법이지만, 실행 타이밍과 사용 목적에서 중요한 차이가 있습니다. 1. 실행 타이밍addPostFrameCallbackWidgetsBinding.instance.addPostFrameCallback((_) { // 현재 프레임이 완전히 렌더링된 **후**에 실행 print('프레임 렌더링 완료 후 실행');}); Future.microtaskFuture.microtask(() { // 현재 이벤트 루프가 끝나는 **즉시** 실행 (프레임 렌더링과 무관) print('이벤트 루프 완료 후 즉시 실행');}); 2. 실행 순서 비교@overridevoid.. 2025. 6. 9. 이전 1 2 3 4 ··· 9 다음