전체 글 285

온라인 시대, 비활성유저가 되자

온라인으로 상품을 구매하면서 부터..오픈마켓이 생기고, 여러가지 쇼핑 플랫폼이 등장하고..스마트폰이 대중화되고..온라인 마케터들의 고심은 깊어간다. 아이폰 등장 2007년을 기준으로, 2010년까진 과도기였던 것 같고,2020년대는 전성기라도 봐도 무방해 보인다.SNS 아니 인별 활용은 기본이고, 라이브방송으로 물건을 판다. 마케팅은 어차피 영원한 무한 경쟁이다. 시장을 독점을 하지 않는 이상!영업직원?이 오프라인 카드 발급시키러 발로 뛰던 그 시절에도..지금은 카드발급시 (얼마이상 쓰면) 현금 캐시백을 해준다. 모든 마케팅의 목표는 매출 극대화 프로모션을 진행해기존 유저들에겐 쿠폰을 뿌리고, 여기저기 노출을 시켜 복귀유저, 신규유저 유입을 늘리는 것 결국 마케팅은 돈이다, 진짜 SNS에서 소문이 나서,..

life 2026.03.05

엔터프라이즈 ORM과 1차캐시

DB CRUD 작업을 쿼리없이 ORM을 처리하면 참 편리한데,여러 언어들과 다양한 ORM들의 차이를 이해하지 못하면, 난감한 상황이 발생하곤 한다.기본적인 ORM의 뜻대로, 객체와 매핑이 되는건 동일하지만동적 타입 언어들과 정적 타입 언어들은 확실히 다르다. 난감한 상황으로써, ORM의 1차캐시에 대해 알아보자. Java진영의 JPA를 예로 들면, Persistence Context (Enitity Manager) 에서 1차캐시를 관리한다.같은 객체를 한번만 조회하고, 이후에는 캐시에서 읽는 효율적인 쿼리동작을 가능하게 한다.1차캐시를 기반으로, CRUD가 즉시 실행되지 않는 형태가 많다. (장점이자 단점인 부분) 전제>> 1차 캐시는 "트랜잭션 범위 메모리 캐시"이다. DB와 동기화되기 전까지는 메모리..

dev/database 2026.02.24

C# ConfigureAwait 이해

C#의 비동기 처리는 아주 사용자 친화적으로 구성되어편리하게 Task + async/await로 구성할 수 있다. 사실 내부 비동기 매커니즘은 복잡한데,SynchronizationContext와 Managed Thread Pool 등등 살펴볼 필요가 있다. 이글의 목적은 ConfigureAwait 를 이해하는것이다. 대략 적인 사용법은await SomeTask().ConfigureAwait(false); 같은 방식인데, ConfigureAwait의 역할은 무엇인가?? ConfigureAwait(false)“원래 컨텍스트로 돌아오지 말고 아무 데서나(대개 ThreadPool) 이어서 실행해도 됨”라이브러리 코드에서 데드락 방지/성능에 유리한 경우가 많음UI 업데이트가 필요하면 false 쓰면 안 됨(돌아올..

dev 2026.01.15

MariaDB 트랜잭션 사용시 고려사항

트랜잭션 설계시, 주의, 고려 해봄직한 내용 Java기준, 멀티쓰레드 + 커넥션 풀 환경이라면, 단일 서버 + 단일 DB 환경일지라도, 동시성 제어가 필요한 환경이다. 데이터 유실, 업데이트 누락, Read -> Write 불일치 등등 반드시, 트랜잭션 + 잠금이 필요하다. START TRANSACTION을 해주더라도, 원자성을 보장해주다는 개념이지, 동시성 제어와는 무관하다. 위험한 방법 1START TRANSACTION;SELECT gold FROM player WHERE account_id=?; -- 그냥 읽기-- 애플리케이션에서 계산UPDATE player SET gold=? WHERE account_id=?;COMMIT;전형적인 “SELECT→비즈니스 계산→UPDATE”다른 트랜잭션이 중간에..

dev/database 2025.12.26

SNS와 수익화

일단 인스타그램(Instagram) 그리고 인플루언서(influencer)를 알아보자. 인스타그램(Instagram) 출시일: 2010년 10월 6일창립자: 케빈 시스트롬(Kevin Systrom) & 마이크 크리거(Mike Krieger)최초 플랫폼: iOS (아이폰 전용 앱으로 시작)안드로이드 버전 출시: 2012년 4월 3일이후 2012년 4월, 페이스북(Facebook)이 약 10억 달러에 인스타그램을 인수하며 폭발적으로 성장 인스타그램 -> 광고플랫폼광고 성장 시기 요약1. 2015년: 공식 광고 플랫폼 도입2015년 9월, 인스타그램이 전 세계적으로 **공식 광고 플랫폼(Instagram Ads)**을 열며 광고 산업이 본격 시작됨페이스북 광고 관리자(Facebook Ads Manager)를..

카테고리 없음 2025.05.29

.net string.GetHashCode() 그리고 Unity

string.GetHashCode() 메소드는 프레임워크 버전 별로 구현이 다르다. .NET Core 3.1 / .NET 6.0이상에서는 프로그램 실행시마다, 값이 바뀜 (not unique), 고유값으로 사용할 수가 없다. 하지만,.NET Framework 4.7.2같은 구 버전에는 항상 값이 동일하다. hash code가 같다고 string.Equals는 아니겠지만, 충분히 고유값으로 사용이 가능하다. Unity 6기준, scriptingBackend나 apiCompatibilityLevel에 관계없이 같은 값을 가진다.

dev/unity3d 2025.03.27

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

자동 복원 조건자동 복원이 정상적으로 이루어지려면 아래 조건을 만족해야 합니다.패키지명이 동일해야 함백업된 데이터는 패키지명 기준으로 저장되므로 패키지명이 다르면 복원되지 않습니다.같은 서명(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