본문 바로가기

반응형

분류 전체보기

(425)
[MySQL] InnoDB 엔진에서 쿼리별 잡히는 lock 쿼리별 잡히는 lock에 대해 알아 보기전에 InnoDB의 lock에 대해 먼저 알아 보는 시간을 가져 보려 했지만 워낙 잘 정리가 된 블로그가 있어서 공유한다. 아래의 내용들을 보기 전에 링크 되어 있는 블로그의 글을 먼저 읽어 본다면 많은 도움이 되리라 생각한다. MySQL InnoDB lock & deadlock 이해하기 - www.letmecompile.com/mysql-innodb-lock-deadlock/ SELECT … FROM consistent read 의 경우 transaction isolation level이 SERIALIZABLE이 아니면 lock을 잡지 않는다. LOCKING READ(SELECT … FOR UPDATE, SELECT … LOCK IN SHARE MODE), UPD..
[Unity] Texture2D를 Sprite로 변경 스프라이트 객체를 AssetBundle로 만들고 난뒤 AssetBundle을 통해 스프라이트 객체로 로드를 했는데 로드를 하지 못하고 null을 리턴하는 현상이 발생했습니다. Unity 4.3 버젼에서는 스프라이트는 어셋번들로 빌드하게 되면 텍스쳐로 로드해서 스프라이트로 변환 해야 한다고하는 군요. 그래서 텍스쳐를 스프라이트로 변경하는 방법에 대해서 살짝 짚고 넘어가보도록 하겠습니다. Rect rect = new Rect(0, 0, texture.width, texture.height); sprite.GetComponent().sprite = Sprite.Create(texture, rect, new Vector2(0.5f, 0.5f)); 참 쉽죠?ㅋ 추가 : Sprite Packer를 이용해 패킹한 s..
[C++/C#] CSV 파일 읽기 요즘 집에서 혼자 게임을 만들어 보려고 이것 저것 만지작 거리는 중이다. 게임의 메타데이터(아이템 정보, 몬스터 스탯, 퀘스트 같은 것)들을 엑셀로 관리하고 결과물을 csv 파일로 저장해서 사용할 예정이었다. 하지만... 언제나 그랬듯이 잘 되지 않는다. 요약 거두 절미하고 요약 부터 간다. 인터넷에서 검색 되는 대부분의 CSV 파일 읽기 프로그래밍 예제들은 콤마 대한 이스케이프 처리를 누락하고 있어 CSV 본문에 콤마를 사용 할 수가 없거나, 사용한다면 컬럼 개수가 늘어나 버리는 오류가 있다.이번 포스트에서는 엑셀에서 작성한 UTF8 인코딩 된 csv파일을 읽는 프로그램을 만들 때 흔히 놓치기 쉬운 부분을 살펴 보도록 한다. 엑셀에서 UTF8 csv 파일을 저장하면 UTF8-BOM(파일 앞에 3바이트가..
왜 내 TCP는 믿을 수 없을까? TCP는 정말 신뢰성을 보장해주는 프로토콜일까? 정말 책에 쓰인대로 내가 보낸 모든 데이터들은 상대방에게 신뢰성 있게 잘 도착할까? 라는 궁금증을 가지고 인터넷을 검색하던 중 우연히 "bert hubert finally blogs" 의 "The ultimate SO_LINGER page, or: why is my tcp not reliable"라는 흥미로운 글을 발견하여 짧은 영어 실력으로나마 번역을 시도해 보았다. 번역 중간중간 새로 알게 된 지식이나 보충 설명은 주석으로 추가하였으니 읽으면서 참고 부탁드린다. 원문이 궁금하신 분은 다음 링크를 따라가면 영문 버전을 볼 수 있다. https://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger..
TIME_WAIT vs CLOSE_WAIT TCP 소켓에는 총 11가지의 상태가 있고(netstat를 이용해 소켓의 상태를 보면 CLOSED, LISTEN, SYN_SENT, SYN_RECV, ESTABLISHED, CLOSE_WAIT, LAST_ACK, FIN_WAIT1, FIN_WAIT2, CLOSING, TIME_WAIT..중에 하나가 나온다) 그 중 사람들이 자주 헷갈리는 것이 TIME_WAIT와 CLOSE_WAIT는 요 두가지 상태이다. 오늘은 이 TIME_WAIT와 CLOSE_WAIT, 요 두 상태에 대해 말해 보도록 하겠다. 들어가기에 앞서, 용어 정리를 먼저 하도록 하자. Active Open : connect()를 호출 하는 쪽. 즉, SYN 세그먼트를 전송한 쪽. 종종 클라이언트가 된다. 하지만 100% 클라이언트라고 할 수는 ..
[C++11] 주요 변경/추가 사항 람다 표현식(Lambda Expressions) 람다 표현식은 함수를 선언한 곳에서 바로 호출 할 수 있도록 한다. 람다 표현식은 아래와 같은 형태를 가진다. [capture] (parameters) -> return-type { body } for_each() 알고리즘을 사용하여 문자열을 순회하며 대문자의 개수를 센다고 가정하자. 대문자인지 판단하기 위한 함수 객체를 넘겨 주는 대신 람다 표현식을 사용하면 보다 편리하게 코드 작성이 가능하다. int main() { char s[]="Hello World!"; int Uppercase = 0; //modified by the lambda for_each(s, s+sizeof(s), [&Uppercase] (char c) { if (isupper(c)) ..
boost::asio::spawn이 하는 일은 뭔가요? spawn의 전체적인 과정이 머리속에서 안그려짐. 1. spawn(io_service, my_coroutine)을 호출 했을 때, my_coroutine을 감싸고 있는 새로운 핸들러가 io_service 큐에 추가 되는건가? -> spawn이 호출 될 때, Boost.Asio는 몇몇 셋팅 작업을 거친 후 사용자가 제공한 엔트리 포인트로써의 함수를 사용하는 코루틴을 생성하는 내부 핸들러를 dispatch() 하기 위해 strand를 사용하게 된다. 이런 조건에서, 내부 핸들러는 spawn 내에서 호출 가능하다. 그리고 다른 때는 지연된 호출을 위해 io_service에 post 된다. 2. 코루틴 안에서 인자로 넘어온 yield_context를 호출 했을 때, async operation이 완료 될때 까지..
소켓 프로그래밍 - '네트워크에 중복된 이름이 있기 때문에 연결되지 않았습니다' 윈도우 소켓 프로그래밍을 할때 특히 대량 접속 프로그램을 만들때 저 에러가 뜬다면 프로세스에서 생성 할수 있는 소켓이 한계에 도달했다는 의미다. 프로그램이 active close를 하고 있는지 확인하고, 만일 active close를 하고 있다면 linger option을 꺼줘야 한다. 여기서 active close라는 것은 상대방이 close를 하는 것이아니라 프로그램 자신이 close를 호출하는 것을 의미한다. close를 호출하는 쪽은 TIME_WAIT 상태에 빠지게 되어 일정 시간동안 소켓 리소스를 해제하지 않고 유지하게 된다. 예를 들어 서버라면 수많은 클라이언트들이 접속을 할텐데 그 연결들에 대해 서버가 close를 호출하게 되면 TIME_WAIT에 빠진 소켓들을 다른 클라이언트로 부터의 연결..
MySQL transaction isolation level MySQL의 innoDB에서 제공하는 transaction isolation level. 한글로 하면 '트랜잭션 격리 수준'이라고 한다. 트랜잭션이란? 트랜잭션 격리 수준에 대해 알아보기 앞서, 트랜잭션이 무엇인지 먼저 알아보자. 트랜잭션이란, 데이터베이스의 상태를 변경하기 위해 수행하는 '작업의 단위'라고 정의 할수 있다. 예를 들어 데이터베이스로 부터 select하고 그 결과에 따라 update를 통해 해당 값을 변경하기까지의 모든 과정을 하나의 트랜잭션이라고 할수 있다. 트랜잭션이 하나의 작업 단위로서 올바르게 동작하기 위해서는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation, 독립성이라고 표현하기도 한다), 지속성(Durability). 이 4가지 조건이 만족..
구글 클라우드 런(Google Cloud Run) 사용해보기 백수가 되어 집에서 빈둥거리다 보니 서버를 하나 만들어서 공부도하고 소소하게 뭔가를 만들어 보고 싶은데 집 PC를 하루종일 켜놓고 있을 수도 없고, 공인 아이피가 아니라 외부에서는 접속도 할수 없다. 그렇다고 aws 같은 유료 서비스를 이용하기에는 비용적으로 부담이 되어 검색하다 보니 구글 클라우드 플랫폼에서 도커 기반 컨테이너를 서버리스 환경에서 운영할 수 있는 클라우드 런이라는 서비스를 발표 했다는것을 알게 되었다. 링크 : "구글, 도커 컨테이너 기반 서버리스 서비스인 클라우드 런 발표 - 44bits 작성" 위 링크를 따라가보면 '클라우드 런'에 대한 소개와 구글에서 제공하는 기본 예제 이미지(그림이 아니고 도커 이미지)로 클라우드 런을 사용해보는 방법에 대해 소개하고 있다. 하지만 예제는 구글 ..

반응형