전체 글 277

안드로이드 개발시 자동복원 기능 주의사항

자동 복원 조건자동 복원이 정상적으로 이루어지려면 아래 조건을 만족해야 합니다.패키지명이 동일해야 함백업된 데이터는 패키지명 기준으로 저장되므로 패키지명이 다르면 복원되지 않습니다.같은 서명(Signing Key)으로 서명된 앱이어야 함Google Drive의 백업 데이터는 **앱 서명 키(SHA-1 해시 값)**도 함께 저장됩니다.즉, 동일한 패키지명이더라도 다른 키로 서명된 앱을 설치하면 복원이 되지 않습니다.예를 들어, 개발 중 디버그 키(debug.keystore)로 빌드한 앱과 배포용 서명 키로 빌드한 앱은 복원되지 않을 수 있습니다.Google 계정이 동일해야 함백업된 데이터는 사용자의 Google Drive에 저장되므로, 같은 Google 계정으로 로그인해야 복원됩니다.백업이 정상적으로 저장..

카테고리 없음 2025.02.20

http 통신시 중복 로그인을 방지하는 방법 고찰.

기본적인 중복 로그인 방지 방법사용자의 마지막 로그인 정보 저장 사용자가 로그인할 때마다 마지막 로그인 시간 및 기기 정보를 저장 새로운 로그인 요청이 오면 기존 세션을 만료기존 세션 강제 종료 동일한 계정으로 로그인할 경우 기존 세션을 삭제 새 로그인만 허용하고 이전 세션을 무효화Redis 또는 In-Memory 캐시 사용 로그인된 사용자의 세션을 Redis에 저장하고 관리 중복 로그인 요청이 오면 이전 세션을 삭제서버에서 세션을 만료,삭제,무효화 시키면, 해당 세션을 사용하는 클라이언트는 로그아웃 된것으로 간주됨. 로그인 시점에 서버에서 관리되는 세션을 핸들링 해주는것이 핵심. 브라우저에서 Cookie를 사용하여, 세션 처리되는 방식처럼,API에서도 비슷한 구현이 필요한 상황이다. 구현 시나리오 1 ..

dev/web 2025.02.13

이벤트 루프 vs 쓰레드풀 매커니즘 비교

이벤트 루프(Event Loop)와 쓰레드 풀(Thread Pool)은 병렬 작업과 동시성을 처리하는 두 가지 주요 매커니즘입니다.이들은 각각 다른 설계 철학과 구현 방식을 기반으로 동작하며, 사용 사례에 따라 장단점이 있습니다.아래에서 두 방식의 작동 원리와 차이점을 비교하여 설명하겠습니다.1. 이벤트 루프(Event Loop)작동 원리단일 쓰레드 기반:이벤트 루프는 하나의 쓰레드에서 모든 작업을 처리합니다.작업이 블로킹되지 않도록 비동기적 방식으로 요청을 처리합니다.작업 큐(Task Queue):작업 요청이 들어오면 작업 큐에 등록됩니다.이벤트 루프는 큐에 저장된 작업을 하나씩 가져와 처리합니다.비동기 I/O:I/O 작업(네트워크, 파일 등)을 비동기로 실행하여 완료 시 콜백이나 프라미스(약속된 작업..

카테고리 없음 2025.01.06

언어별 멀티쓰레드 프로그래밍 구현방식

언어별로 멀티쓰레드 프로그래밍 구현 방식은 해당 언어의 철학, 런타임 환경, OS 지원, 그리고 기본적으로 제공하는 쓰레딩 API에 따라 달라집니다. 주요 언어들에서의 차이를 살펴보겠습니다:1. C/C++방식: POSIX Threads(Pthreads) 또는 Windows API를 주로 사용.특징:저수준 API 제공으로 세밀한 제어 가능.Pthreads는 Unix 계열 시스템에서 표준.Windows에서는 CreateThread 같은 Windows API를 사용.성능이 뛰어나지만 메모리 관리나 동기화 문제는 개발자 책임.동기화:Mutex, Condition Variable, Semaphore 사용.스레드 안전성을 위해 철저한 관리 필요.2. Java방식: Java는 자체 JVM 쓰레드 관리 시스템을 제공...

카테고리 없음 2025.01.06

Blazor WebApp 그리고 @rendormode

Blazor WebApp을 프로젝트를 생성,@rendermode의 차이를 경험해보고 싶었으나, 여러 제약사항들 걸리면서 개념을 정리해보기로 했다. 렌더링 방식은 총 4가지@rendermode 미지정 - Static SSR - 정적 서버렌더링 대화형 X@rendermode InteractiveServer - 대화형 SSR@rendermode InteractiveWebAssembly - 대화형 CSR@rendermode InteractiveAuto - 대화형 SSR+CSR (번들 다운로드 상태에 따라, 자동) CSR을 사용하기 위해서는 별도의 Client프로젝트(WebAssemblyHost 사용) 구성하여야 한다.Client프로젝트는 wasm으로 빌드되어, 클라이언트에게 전달되어 CSR이 되는 방식, 고로 ..

카테고리 없음 2025.01.03

.net Blazor 호스팅 모델에 따른 차이

블레이저에 대한 관심이 생겨,만지작 거리다보니, 블레이저 프로젝트 템플릿 종류에 따른 차이가 궁금해졌다. 템플릿 이름 약식 이름 언어 태그---------------------------------------------- -------------------------- ---------- ------------------------------------------------------------------------------Blazor WebAssembly 독립 실행형 앱 blazorwasm [C#] Web/Blazor/W..

카테고리 없음 2024.12.31

firebase cloud functions에서 storage 사용시 권한 이슈

firebase cloud functions을 사용하여 API를 구성해보던 중이미지 파일을 업로드하려, storage에 접근, getStorage().bucket().file('filename').save(buffer)위처럼 파일 저장을 했더니,{"severity":"ERROR","message":"Error: Unable to upload image Error: *****@gmail.com does not have storage.objects.create access to the Google Cloud Storage object. Permission 'storage.objects.create' denied on resource (or it may not exist).\n at entryFromAr..

카테고리 없음 2024.11.25

stateless 인증과 jwt, 그리고 위변조에 대한 이야기

항상 개발을 하다보면, 인증 처리 방식에 대한 고민이 많다. 모바일이 보편화 되고, SPA 웹앱으로 개발하는 일도 많다보니, 세션을 사용하는 일은 거의 없다. 대세의 jwt를 쓰면서도, 자유롭게 설정 가능한 payload는 가끔 또 고민의 고민을 낳고 있다. 그렇게 사용하게 된 jwt의 장,단점에 대해 이야기를 해본다. stateless 인증으로 jwt를 채택하여 얻게 되는 장점은 많다.서버사이드 세션관리가 필요없으므로, scale-out하기에 용이하다.단순하고 직관적이면서도, 위변조는 안된다. 하지만 , payload가 노출은 되므로, 신경 쓸 부분이 많다.예를 들어 payload에 중요한 정보를 넣어서는 안되고탈취에는 취약하므로, 방지책도 고려해야 한다. 또한, Issuer나 Audience, Iat..

dev/web 2024.11.08

네이버클라우드 bash_history 해제

네이버 클라우드에서 Server상품으로 ubuntu를 사용중, history가 안되는 현상이 발견( ~/.bash_history 파일이 로그인시 초기화 되는 현상) ~/.profile ~/.bashrc를 뒤져보아도, 특이사항은 안보임 다른 쉘 초기화 스크립트를 찾아보니 /etc/profile이 범인.sudo vi /etc/profile 하단에TMOUT=324000HISTFILESIZE=0HISTSIZE=500 이런 부분이 있었다. 세션 타임아웃과 history 관련 변수를 바꿔버리고 있었으니, 주석 처리하면 끝.

카테고리 없음 2024.10.28