jetty 500 internal server error log 남기기. 프로그래밍 코드&지식모음

황당하게도 인터널 서버 에러가 jetty 로그에 남지 않는다. 잡히지 않는다. 물론 디버거를 걸어둔 상태라면 Exception이든 Error든 나오긴 하지만 서비스 도중 아주 가끔 생긴다면 난감할따름. 알아차리기도 힘들다.

더큰 문제는 딱히 로그에도 없으니 확인 할 방법이 없다.

그래서 찾아보니 다음과 같이 jetty error page를 바꾸면서 확인이 가능하다.

http://stackoverflow.com/questions/18138595/how-do-i-suppress-jetty-8s-default-errorhandler

즉 web.xml에서 error page로 JSP servlet 을 하나 등록시키고 거기서 로그를 찍는 방식이다.


C++ json UTF16 프로그래밍 코드&지식모음

https://code.google.com/p/rapidjson/

wstring json = L"##json string##";
GenericDocument< UTF16<> > d;
d.Parse<0>(json.c_str());
if (d.HasParseError() == false )
{
auto & nick = d[L"nick"];
if ( nick.IsString() )
{
wstring strnick = nick.GetString();
}
}

대충 이런식. 이 라이브러리 예제가 없어. 의외로 C++에 UTF16 지원하면서 Thread safe한 라이브러리가 별로 없. 

Ansi String만 지원하는 라이브러리를 써서 UTF16 을 ansi string으로 변환해서 썻더니.. 다른 언어는 다 괜찮은데 일본어에서 죽고 -_-;;

64bit OS에서 32bit 작업관리자 실행. 프로그래밍 코드&지식모음

C:\Windows\SysWow64\taskmgr.exe 

dump용.

Unity or NGUI UIDraggablePanel 버그? 프로그래밍 코드&지식모음

기본적인 추가 삭제 로직은 http://blog.naver.com/crazylulu/120161934786 와 같음.

1. 증상 : Unity 의 NGUI의 UIDraggablePanel 의 Item을 추가 삭제 하는 코드를 작성중에 PC와는 달리 안트로이드 플래폼에서 최초 추가시가 아닌 삭제 후 추가시 아이템의 위치가 랜덤하게 바뀜. ( Cell 의 위치에는 맞게. 하지만 맨위로 정렬되지 않음 )

2. 원인 : UIGrid에 chlid를 Destroy(obj)로 삭제시 안드로이드는 parent의 children 목록에서 항상 2개 정도의 가비지가 남아있음.
(NGUITools.DestroyImmediate 도 마찬가지) , ios는 테스트 안해봄. java쪽 문제일지도.

3. 해결 : UIGrid 단에서 DetachChildren()을 불러주면 가비지를 남기지 않고 모든 child들이 삭제됨.

4. 번외 : UIDraggablePannel의 bound를 갱신하는 경우 호출되는 CalculateRelativeWidgetBounds은 아이템의 모든 UIWiget을 돌면서 bound를 계산, 따라서 아이템에 여러가지 UIWiget을 사용했을경우 효율이 안좋음. 별도의 아이템의 bound를 관리하는게 나을듯.

저같은 경우 아이템의 백그라운드를 UISlicedSprite를 사용하는데 다음과 같이 UISlicedSprite로 바운드를 계산하는 함수로 하나 더 추가해 주면 아이템 갯수만큼만 루프를 돌게됨. 

        mBounds = NGUIMath.CalculateRelativeSlicedSpriteBounds (mTrans, mTrans);

        public Bounds CalculateRelativeSlicedSpriteBounds (Transform root, Transform child)
{
UISlicedSprite[] widgets = child.GetComponentsInChildren<UISlicedSprite>(true) as UISlicedSprite[];

............................나머지코드는 CalculateRelativeWidgetBounds와 같음 

boost::multi_index modify 할때 주의 사항. 프로그래밍 코드&지식모음

boost::multi_index의 modify 는 delete + insert 라고 보면 된다.

equal_range나 전체 멤버를 for each로 도는 경우 루프문 안에서 modify 를 하면 루프문 안에서 erase한것과 마찬가지로 
이터레이터가 길을 잃고 헤메이다가 프로그램이 돌아가신다.



오큘러스 리프트 + 레이져 히드라 데모.




상당히 자연스럽네요. 평면 모니터에서 레이져 히드라는 크게 감흥이 없었는데 (위모트 2개?) 입체로 보이는 환경에서는 적응하면 재미있는것들을 많이 할 수 있겠네요.

1 2 3 4 5 6 7 8 9 10 다음