본문 바로가기

반응형

진리는어디에

(291)
MySQL transaction isolation level MySQL의 innoDB에서 제공하는 transaction isolation level. 한글로 하면 '트랜잭션 격리 수준'이라고 한다. 트랜잭션이란? 트랜잭션 격리 수준에 대해 알아보기 앞서, 트랜잭션이 무엇인지 먼저 알아보자. 트랜잭션이란, 데이터베이스의 상태를 변경하기 위해 수행하는 '작업의 단위'라고 정의 할수 있다. 예를 들어 데이터베이스로 부터 select하고 그 결과에 따라 update를 통해 해당 값을 변경하기까지의 모든 과정을 하나의 트랜잭션이라고 할수 있다. 트랜잭션이 하나의 작업 단위로서 올바르게 동작하기 위해서는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation, 독립성이라고 표현하기도 한다), 지속성(Durability). 이 4가지 조건이 만족..
구글/iOS 인앱 결제 서버 검증 - PHP (In-app purchase server side verification in PHP) iOS /* recept { "Store":"AppleAppStore", "TransactionID":"1000000629303951", "Payload":"MIIT+QYJKoZIhvBFja19....BkpGkqEZQbQ8l8fNdoKPFRDc=" } */ function IOSInappPurchaseVerify($recept_from_appstore) { $json = array(); $json["error_code"] = 0; $json["error_message"] = "success"; $json["order_id"] = ""; $json["product_id"] = ""; $json["purchase_date"] = 0; $json["user_seq"] = 0; $json["char_num"] ..
구글/iOS 인앱 결제 서버 검증 - Python (In-app purchase server side verification in Python) iOS import urllib, urllib2 import json import datetime import base64 class IOSInappPurchaseVerifier : url = "https://sandbox.itunes.apple.com/verifyReceipt" password = "PASSWORD" # receipt data should be encoded by base64 def verify(self, receipt, signature) : req = { "receipt-data": receipt,"password": IOSInappPurchaseVerifier.password } headers = {'Content-Type': 'text/Json; charset=utf-8'} re..
[C++] C++에서 C# delegate 만들기 Delegate란? 사전적 의미의 delegate는 '대리자'로써 뭔가를 대신 해준다는 의미고, C#에서의 delegate는 일종의 콜백 함수'리스트'로써 입력과 출력이 동일한 함수들을 일괄 호출하는데 사용된다. 이게 C++ 관점에서 보면 함수 포인터 리스트를 들고 있는 간단한 클래스 정도인데, 개념적으로도 어렵지 않고 구현하는 것도 그렇게 어렵지 않다. 말 그대로 함수 포인터 리스트를 만들어도 되고, 인터페이스 클래스를 정의하고 그걸 상속 받은 클래스 리스트를 만들어도 된다. 다만...필요할때 마다 매번 만드는게 은근 귀찮아 template과 operator overriding을 이용하여 재사용 가능한 delegate 클래스를 만들어 보도록 하겠다(c++ 11 이상). C# Delegate의 인터페이스..
[C++] 'template' 키워드를 한정자로 사용하기 템플릿 멤버 함수를 특별하게 구분해야 할 필요가 있는 경우 한정자로써 'template' 키워드를 사용한다. 아래 예제 코드를 보고 언제 'template' 키워드를 한정자로 사용해야 하는지 살펴보자 class A { public : template T function_m() {}; }; template void function_n(U argument) { char object_x = argument.function_m(); } 위 예제에서, 컴파일러는 템플릿 인자 U가 클래스 A의 인스턴스라는 것을 추론하지 못하기 때문에 'function_m'이 템플릿 멤버 함수라는 것을 알지 못하고 '
[Unity] 데이터 손실 없이 SerializedField 이름 바꾸기 유니티를 이용해 작업하다 보면 데이터를 저장하기 위해 SerializedField와 같은 어트리뷰트를 사용한다. 문제는 개발 도중 이 필드의 이름이 변경되어 기존 저장된 데이터들을 사용하지 못하게 되는 경우가 있다. 이런 경우 FormerlySerializedAs 어트리뷰트를 이용해 기존 버전과의 호환성을 유지해 줄 수 있다. 만일 아래와 같이 m_MyVariable이라는 멤버 변수를 사용하고 있는데 : class MyClass : MonoBehaviour { [SerializeField] private string m_MyVariable; } m_MyVariable의 이름이 다른 것으로, 예를 들자면 m_ABetterName와 같이 바뀐다면 기존에 m_MyVariable의 이름으로 저장된 데이터를 읽어..
Unity를 사용하기 전에 알아두면 좋은 기본 개념들 Unity가 편한 개발 엔진이라고 아무런 기본 지식 없이 마냥 닥치는대로 하려다보니 이래저래 어려움이 많다. 이 포스팅에서는 Unity를 사용하면서 개인적으로 계속 헷깔렸던 부분들을 정리 한다. Transform.SetParent 의 worldPositionStays 인자 worldPositionStays 가 true일 경우 : SetParent시 자식이 되는 오브젝트의 월드 좌표는 변경되지 않는다(화면상으로 보기엔 그냥 그대로 있는것 같다는 말). 하지만 부모가 변경 되었으므로 로컬 좌표가 변경된다(이것을 이해하기 위해서는 월드 좌표와 로컬 좌표의 개념을 알아야 한다. 하지만 나는 이미 알고 있으므로 이 포스트에서는 다루지 않는다). 예를 들어 부모가 없는 두 오브젝트(부모가 없다는 것은 월드 포지션과..
게임에서의 동기화 들어가며 이번 포스트에서는 네트워크 게임에서 주로 언급 되는 '동기화'라는 개념에 대해서 알아 보도록 하겠다. 게임에서의 동기화에 대해 이야기하기 위해 먼저 '동기화(syncronization)'에 정의해 보도록 하자. 교과서에서 나올 법한 말로 정의하자면 '동기화 그룹 내 개체들의 상태 변화와 이벤트 발생 순서를 모든 개체들이 동일하게 인지 할수 있게 하는 작업' 정도로 정의할 수 있다. 그리고 일반적으로 게임에서는 '실시간'이라는 조건이 추가된다. 실시간이라 하면 최대 지연 시간(transmission delay)이 일정 시간 이하로 제한 된다는 것을 의미한다. 동기화 그룹 내 개체들의 상태 변화와 이벤트 발생 순서를 모든 개체들이 동일하게 인지 할수 있게 하는 작업 오늘 포스트를 통해 생각해 볼 것..
리팩토링 - Position 클래스 만들다 보니 각 오브젝트의 위치 동일 여부를 매번 if(a.x == b.x && a.y == b.y)와 같이 비교하는것이 여간 귀찮은 일이 아닙니다. 그리고 위치를 리턴할 때도 애매합니다. 리턴 값은 한번에 하나 밖에 할수 없기 때문에 x 좌표와 y 좌표를 얻어 오는 함수를 각각 만들수 밖에 없습니다. 너무 번거롭고 귀찮은 일입니다. 그래서 이번 장에서는 좌표를 추상화한 'Position' 클래스를 만들겠습니다. 그리고 추가적으로 C#의 '참조 일치'와 '값 일치'에 대한 개념을 배워 보도록 하겠습니다. 먼저 Position 클래스를 정의해보겠습니다. public class Position { public int x; public int y; public Position(int x, int y) { th..
[Unity] Asset Bundle !!NOTE!! 유니티 2018.2 이상 버전 부터 AssetBundleManager의 지원을 중단한다는 공식 발표가 있었습니다. 2019.3 버전 부터 '어드레서블 에셋 시스템'이라는 새로운 에셋 관리 시스템이 추가 되며 , 2018 LTS 릴리스에서도 지원 된다고 합니다. 아래 내용들은 예전에 이런 것들이 있었구나..하는 역사 공부 정도로만 봐주시면 됩니다. 어드레서블 에셋 시스템은 -> https://blogs.unity3d.com/kr/2019/07/15/addressable-asset-system/에 있습니다. 내용도 알차고 한글로 잘 씌여져 있는지라 제가 따로 포스팅을 쓸 건덕지가 없네요. 들러 주셔서 감사합니다. 좋은 하루 되세요. 이번 포스팅에서는 어셋 번들의 기본 개념과 유니티에서 어셋스..

반응형