블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
using System.Text.RegularExpressions;

bool IsValidStr(string text)
{
    string pattern = @"^[a-zA-Z0-9가-힣]*$";
    return Regex.IsMatch(text, pattern);
}

 

텍스트의 문자열이 대소문자, 알파벳, 숫자, 한글인지 체크하는 정규식이다.

특수 문자를 사용할수 없게 한다.


참고 할만한 곳 : http://highplus.org/app/header/js/fun_form_check.js@cacheBreak=

 
 

출처 : http://tenuakan.tistory.com/108

 

 
반응형
Posted by blueasa
, |

Git : https://github.com/aws/aws-sdk-unity

http://aws.amazon.com/ko/mobile/sdk/

위 페이지에 들어가면 아래와 같이 Unity버전 AWS SDK를 다운로드 받을수있습니다.

다운로드를 받아서 ZIP파일을 풀면

아래와 같이 서비스 별로 SDK가 분류되어있는 것을 확인할수있을텐데요.

우리는 여기서 extas에 있는 aws-unity-sdk-cognitosync-2.0.0.4.unitypackage를 실행시켜주어 import해주도록 하겠습니다.

 

Import가 완료되면 프로젝트 탐색창에서 AWSSDK\example\Congnito Sync에 있는 CognitoSyncManagerSample.unity을 실행하여 장면을 연뒤 Play를 눌러 샘플을 실행해보도록 합시다.

Play를 누르게 되면 위 그림과 같이 AgumentNullException이 발생하는데요.

Play를 중단시키고 Hierachy에서 CognitoSyncManagerSample오브젝트를 선택하면 나타나는 Component의 Identity Pool Id값을 채워주어야하는데요.

해당 PoolId값을 만들려면 우선적으로 aws에 샘플에서 사용할 identity pool을 생성하여야합니다.

https://console.aws.amazon.com/cognito/create/.

Aws에 가입되어있다면 위 링크를 통해 새로운 identity pool을 생성할수있습니다.

이름 같은 경우 원하는대로 작성해서 넣으시면 되고 해당 샘플을 테스트 해보려면 Unauthenticated identities에 있는 Enable access to unauthenticated identities을 체크해두어야합니다. (기본값은 체크가 해제되어있습니다.)

샘플의 추가적인 Facebook 연동을 테스트하려면 FacebookSDK도 설치되어있고 추가적인 세팅이 필요하니 이번 포스트에서는 다루지않도록 하겠습니다.

 

어쨌든 생성을 하고나면 위와 같은 페이지로 이동하는데요. 설정에서도 확인할수있지만 해당 페이지에서도 Identity Pool ID를 확인할수있습니다. 이를 복사한뒤에 Unity로 돌아와서 CognitoSyncManagerSample의 Identity Pool Id값을 채워주도록 합시다.

 

해당 값을 채운뒤 다시 Play를 누르게되면 에러가 뜨지 않고 아래와 같은 화면을 볼수있습니다.

Full Name과 alias를 입력한뒤 Save offline을 누르면 단순히 기기내에 있는 cognito dataset에 저장을 합니다. 내부적으로는 아래와 같은 코드로 동작합니다.

playerInfo.Put("playerName"playerName);

playerInfo.Put("alias"alias);

 

playerInfo Dataset이라는 클래스로 선언이 되어있으며 이는 Put으로 특정 키와 값을 넣어줄수있습니다어플을 삭제하지않는 이상  값은 내부적으로 저장이 되도록 되어있습니다.

 

여기까지는 Unity에서 제공하는 PlayerPref 같은 기능을 하는것처럼 보입니다이번에는 Sync with Amazon Cognito버튼을 클릭해보도록 하겠습니다.

 

해당 버튼을 클릭하게 되면 내부적으로 비슷하게 Dataset Put해주는것까지는 Save offline 눌렀을때와 같지만 Put이후에 Dataset::Sychronize메서드를 호출해주어 AWS 있는 IdentityPool 저장해주도록 되어있습니다.

 

AWS Cognito Console 이동하여 Identity browser탭을 클릭하면 아래와 같이 cognito 통해 싱크된 사용자 데이터를 확인할수있습니다.

 

만약에 sychronize에서 문제가 생긴다면 Identity pool id 잘못되었거나 Unauthenticated identities에 있는 Enable access to unauthenticated identities을 체크를 하지않았는지 다시 한번 확인해보면 될것입니다.



출처 : http://lancekun.com/tc/200

반응형
Posted by blueasa
, |

해외에서 무료 푸시서비스로 개발자들에게 가장 추천받는 pushwoosh 서비스 연동 안내 방법(한글^^;)과 샘플코드입니다.

무료 푸시서비스를 검색하면 해외는 수십개가 나오는데 국내는 전무하네요... 암튼 앱개발자 분들 중

서버가 없거나 푸시서비스를 위하여 서버를 유지하기 어려운 경우에 사용하시면 좋습니다.


간단히 pushwoosh에 대해 말씀드리면 


- pushwoosh.com에서 제공하는 push 서비스로 사용이 무제한입니다.

 ( 단 다운로드 device가 1,000,000 이상인경우 부터는 유료버전을 사용해야 합니다.제가 만든 앱이 100만대 이상의 디바이스에 설치만 되면 ......쩝.. 그래서 전 그냥 완전 무제한이라 생각합니다. )

- 가입은 이메일 인증만 하면 됩니다.

- 이메일 계정당 5개의 앱을 관리 할 수 있습니다.

- 간단한 통계 정보를 보여줍니다.


기타 기능들은 많으나 여러 기능들을 사용하기 위해서는 유료버전을 사용하셔야 합니다. 그러나 해외에서 무료 푸시서버로 가장 추천을 많이 받는 서비스로 회사 또는 개인적으로 푸시서버를 유지하기 어려우신 분들은 한번 사용해보는 것도 나쁘지 않을 것 같습니다.


아래는 연동안내서와 네이티브 연동 코드 샘플입니다. 샘플코드는 applusform.com의 앱템플릿과 연동하는 코드도 몇 줄 있으나 대부분 네이티브코드인 관계로 개발자라면 쉽게 코드를 이해하실 꺼라 생각합니다.


http://www.applusform.com/down/Pushwoosh.pdf  [연동안내서]

http://www.applusform.com/down/Pushwoosh.zip  [연동안내서 + 샘플코드 (android, iOS)]





그럼 쉬운 앱개발 템플릿을 제공하는 ApplusForm 이었습니다~~ ^^;




[출처] http://www.androidpub.com/2552814

반응형

'Unity3D > Plugins' 카테고리의 다른 글

[펌] GPGS  (1) 2016.03.08
[펌] AWS Cognito + Unity3d  (0) 2016.02.14
[에셋] 유니티용 네트워크 엔진(넷드론)  (0) 2016.01.04
[에셋] Android Keyboard (with NGUI)  (0) 2015.12.23
[링크] Live2D 적용 및 튜토리얼  (0) 2015.12.17
Posted by blueasa
, |

BigNumber

Unity3D/Script / 2016. 2. 4. 16:49

[파일]


BigNumber.cs



[출처]

기억안남..;;

소스 제작자 분을 찾습니다~ -ㅁ-;

반응형
Posted by blueasa
, |

[파일]


YupScript.ms




스크립트 출처

http://forum.unity3d.com/threads/3dsmax-y-up-script.220104/

*ms스크립트 사용법: 맥스 화면에 Drag&Drop 하면 맥스에 스크립트 창이 뜬다. 




원문 출처 http://blog.naver.com/blue9954/220615535678


[원문에서 퍼온 글.]

3DMAX는 생소하게 느껴지시는 분들이 많겠지만, 건축CG를 목적으로 만들어진 툴입니다. 따라서 AutoCAD와 동일하게 높이를 Z로 계산하지만, 게임엔진... 예를 들어 유니티의 경우 높이를 Y로 계산합니다. 마야의 경우 애초에 영상물을 만들 목적으로 개발되어 화면을 기준으로 높이를 Y로 계산하기에 아무 문제없지만, 맥스의 경우 오브젝트의 피봇을 Y축을 위로 올라오게 일일이 수정해 주어야 합니다.
 이러한 작업을 원버튼으로 해주는 스크립트입니다. 사용 방법은 첨부한 스크립트를 맥스에 드래그해 넣은 다음, 원하는 오브젝트들을 선택하고 새로생긴 창의 버튼을 눌러 주면 됩니다.



Z와 Y. 축이 다른 이유는 사용하는 좌표계가 다르기 때문.

맥스: 오른손 좌표계  // 마야, 언리얼, 유니티: 왼손 좌표계.


좌표계에 대한 자세한 건, 아래 링크 참조.

http://tartist.tistory.com/65

블로그 내용 중에 기억하고 싶은 것 

좌표계가 달라서 생기는 문제는 맥스에서의 프랍이 엔진으로 넘어갈 때 Y축으로 90도 돌아가는 현상이다. 모든 더미와 뼈들은 맥스에서 제작(오른손 좌표계)해서 넘어오기 때문에 자동으로 부모의 축을 따라가기 때문에 문제가 없지만, 무기에 붙은 소켓 더미는 언리얼에서 제작(왼손 좌표계)되면 좌표계가 달라서 프랍이 혼선이 생기게 된다. 

그래서 무기 축 더미는 엔진에서가 아닌 맥스에서 만들어서 사용하여 문제를 해결했다는 내용.  


 

테스트해 본 결과 리뷰. 

왼쪽 주전자: 맥스에서 바로 꺼낸 주전자의 피벗을 보면 Z축이 위로 올라가 있는 것을 확인할 수 있다. 

오른쪽 주전자: 스크립트를 적용한 주전자. Y축이 위로 올라가 있다. 


보통 fbx로 익스포트 할 때 옵션을 아래 사진처럼 Y-up 으로 하고 익스포트를 하게 되어서 

맥스와 유니티, 언리얼을 오가며 보이는 캐릭터들의 방향에 육안으로 확인할 때의 다른점은 없었는데, 오늘 포스팅의 스크립트는 이대로 또 쓸 일이 있을 것 같다.

 예를들어, 메쉬만 엔진으로 데려갈 경우에 캐릭터가 90도 누워있는 현상은 익히 경험했기 때문이다. 이 스크립트를 사용하면, 맥스에서 보는 좌표와 엔진에서 보는 좌표가 동일하다는 장점이 있으니까. 







....궁금해서 테스트를 더 해볼까 한다... 축이 뭐길래. 


<물체의 축에 따라서 엔진에서의 차이.>

사진에서 왼쪽 유니티 인스펙터 창. 오른쪽 맥스 창


맥스 좌표 그대로 익스포트->유니티로 갖고왔을 때. (X축이 -90도 돌아가 있음)


축을 왼손좌표계로 돌려준 다음 익스포트-> 유니티로 갖고왔을 때.(맥스와 유니티 좌표 일치)


임포트 된 이 두 주전자를 유니티 씬으로 갖고왔을 때의 차이는 아래처럼 없어보인다.

실제로는 두 주전자의 축이 차이가 있지만 없어보이게만 할 뿐.

 유니티는 자체의 버텍스들을 y축기준으로 180도 회전시킨후에 rotation transform의 x축에 -90도를 적용하여 좌표계를 변환시키므로 버텍스가왼손 좌표계 기준으로 변환되는것은 아니다. x,y축 변경을 통해 그렇게 보이게 만들뿐이다. 


이 내용은 유니티 FBX Export 옵션에 대한 아래 설명에서 참조했다. 

http://wiki.maayalee.com/mediawiki/index.php?title=Unity3D_FBX_Export


이래도 저래도 어쨌든 제대로 보이는 디자이너와, 실질적인 축의 방향을 고려해야하는 프로그래머와의 작업방식의 차이가 있을 수 있기 때문에 각 파트에서 특별히 요청이 있을 때 고려해도 될 듯 하다. 


아래는 맥스와 축이 다른 엔진때문에 고민하는 프로그래머들의 질의 문답. 

http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=40302 




출처 : http://flowergardenia.tistory.com/84

반응형

'3DS Max' 카테고리의 다른 글

[Link] 3DS Max ScriptSpot  (0) 2016.10.10
[펌] Max Script에서 한글(주석 등) 깨짐 문제  (0) 2016.10.04
Posted by blueasa
, |

DL

Etc / 2016. 1. 29. 12:09

DLDldl는 다음 뜻을 가지고 있다.

  • dL, dl: 부피의 단위 데시리터(1dL=0.1L)
  • 데이터 통신을 지칭하는 의미로 데이터 링크라 부르며, 영어 Data Link의 약어이다.
  • 데이터 통신에서 서버에서 클라이언트로 데이터를 가져오는 것을 다운로드라고 하며, 영어로 download의 약어이다.
  • 델타 항공의 IATA코드이다.
  • DL, Distribution List는 메시지 통신 처리환경이 전달하는 정보 대상의 수신자인 사용자들로 구성된, 사전에 지정되어 있는 특정 집단(예:회사·단체 등 조직) 및 그 특정 집단 내의 다른 DL들(부문·부서 등)이다.




출처 : https://ko.wikipedia.org/wiki/DL

반응형

'Etc' 카테고리의 다른 글

크런치  (0) 2016.03.27
[링크] KB 국민 파인테크 (FINETECH) 카드란? [8가지 혜택]  (0) 2016.03.15
[펌] 소녀  (0) 2015.12.18
FYI (for your information)  (0) 2015.09.15
바이럴 마케팅  (0) 2015.09.14
Posted by blueasa
, |


[링크] http://missgamer.kr/47

반응형
Posted by blueasa
, |
새해 복 많이 받으세요.
그나저나 애플은 신년 첫날부터 테러 들어갑니다... 작년에 이미 예고한 테러지만요...
뭐냐면... "니네 앱이 IPv6 지원 안하면 리젝될거임 ㅋㅋ"입니다.

거두절미하고, 리젝 안당하려면 이렇게 해야 합니다. 

1. 네트워킹 프레임워크를 사용할 것 
2. IPv4 전용 API를 쓰지 말 것
3. 하드코딩 주소를 쓰지 말 것 




출처: 링크 

각 설명을 들어가 보겠습니다.

----------------

1. 네트워킹 프레임워크를 사용할 것 

iOS SDK 자체에 있는, 소켓 윗단에 구현되어 있는 네트웍 프레임워크라던지, 혹은 제3의 네트워크 프레임워크를 쓰는 것을 권장한다는 뜻입니다. 네트웍 프레임웍을 쓰신다면 위 2는 웬만하면 고려 안하셔도 될 것입니다. 만약 써드파티 네트웍 프레임웍을 쓰시고 있으시면, 해당 프레임웍 개발자에게 이 질문을 꼭 하셔야 하겠습니다. "IPv6 지원하나요?"

네트웍 프레임웍의 일종인 프라우드넷은 IPv6에 대응되어 있습니다. 2015년 12월 업그레이드 릴리즈에서 대응했습니다. 프라우드넷을 쓰시는 분은 IPv6 지원을 원하시면 2015년 12월 업그레이드 혹은 이후 릴리즈를 적용하셔야 합니다. 

----------------

2. IPv4 전용 API를 쓰지 말 것

직접 소켓 프로그래밍을 하신다면, IPv4 전용 API를 쓰시면 안됩니다. 가령 이런 함수들을 쓰시면 안됩니다. (이런 함수들을 쓰는 것 자체가 애플에서 리젝되는지는 확인되지는 않았습니다만, 아무튼 프라우드넷에서는 이들 함수들을 전혀 쓰지 않습니다.)

inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()

IPv6에서 잘 작동하는지 테스트하려면, IPv6 주소만 있는 네트워크 환경을 만들어야 합니다. 여러가지 방법이 있는데요, 저희의 경우 맥 기기를 이용해서 만들었습니다. 

----------------

3. 하드코딩 주소를 쓰지 말 것 

애플에서는 '하드코드 주소'라고 표현했는데요, 이는 대중들에게 쉽게 의미를 전달하려고 일부러 저렇게 표현한 것 같습니다. 
정확한 명칭은 IP literal입니다. 가령, "11.22.33.44"입니다.

한편 우리가 흔히 말하는 '호스트 네임' 가령 "server1.mygame.com" 같은 것은 FQDN(fully qualified domain name)이라고 부릅니다.

만약 하드코드 주소 즉 IP literal을 직접 이용해서 서버에 접속하면 어떻게 되냐고요? 일부 IPv6 네트워크의 클라이언트가 IPv4 네트워크의 서버에 접속을 못하는 경우가 발생할 수 있습니다. (iOS 9.2 이후부터는 이 문제가 일부 해결되긴 합니다만 이 또한 모든 IPv6 네트워크에서 된다는 보장도 없습니다.)

이 반대도 마찬가지입니다. 클라이언트는 IPv4인데 서버가 IPv6인 경우요.

접속을 왜 못하는지는, NAT64/DNS64의 작동 얼개로 설명됩니다. 내용이 길기 때문에 일단 논외 하겠습니다.

그럼 어떻게 해야 하느냐? 애플이 지령(?)한대로 따라야 합니다. 서버는 IPv4 literal 대신 FQDN으로 접근 가능해야 합니다. 클라이언트는 서버에 접속할 때 FQDN을 써야 하고요.

위 내용을 예로 들어 설명하자면, 

- 11.22.33.44 ==> 애플에서 밴 먹임
- server.mygame.com ==> Ok
- 11:22:33:44:55:66:77:88 ==> 애플에서 밴 먹임





서버 세팅을 하시는 분들은, 각 서버에 대한 DNS 세팅을 모두 해주어서 각 서버가 FQDN을 가지게 해주어야 하죠. 그리고 클라이언트는 각 서버에의 접속을 할 때 IP literal이 아니라 FQDN으로 서버에 접속을 해야 하겠죠.

만약 각 서버에 대해 지금 당장 FQDN을 배정하기 힘들 때를 위해, 프라우드넷에는 응급처치 방법을 제공합니다.

프라우드넷 기반 서버에 접속하는 IP literal을 입력하되, IPv4에 물려있는 다른 서버 X의 FQDN도 추가로 입력하면 됩니다. X는 실제로 접속은 안하니 걱정 마시고요, 그저 DNS 검색 대상만 될 뿐입니다. 이것이 있으면, 100% 보장하지는 않습니다만, [1] IPv4 literal만 갖고도 서버에 접속을 할 수 있습니다. 

CNetClient* nc = CNetClient::Create();
p.m_serverIP = "11.22.33.44";
p.m_publicDomainName1 = "www.nettention.com";
p.m_publicDomainName2 = "www.nts.go.kr"; // 네 그렇습니다. 국세청입니다. -_-;;;
nc->Connect(p);

(C#도 가능하나 일단 생략)

어떻게 IPv4 literal만 갖고 접속을 할 수 있냐면... NAT64의 '주소조합 알고리즘'을 구현했기 때문입니다. 이 또한 내용이 기므로 일단은 생략 ^^

아무튼 위 API를 쓰는 것은 어디까지나 응급처치 방법입니다. 완전한 해결을 하려면 애플의 지시(?) 사항 "FQDN으로 서버에 접속해라"를 따라 주어야 합니다.

---------------------

논외: IPv6 주소가 쫙 퍼지면 인터넷 공유기는 사라지지 않을까?

IPv6 주소가 쫙 퍼지면 인터넷 공유기는 "이론상으로" 사라져도 됩니다. 인터넷 공유기 자체가 모자란 인터넷 주소 갯수를 해결하기 위한 방법 중 하나니까요. 

그러나, IP 주소당 가격을 매기는 인터넷 상품을 파는 업체가 IPv6라 하더라도 IP 주소를호락호락 추가 비용 없이 뿌리지는 않을 것입니다. 그렇다면 얄짤없이 인터넷 공유기를 갖다 붙이는 노력을 안할래야 안할 수 없죠. 인터넷 공유기에 강한 프라우드넷도 IPv6 세상에서 여전히 존재 필요성이 있을 것입니다.

-----------------------

즐코딩 하세요~

-------------------

[1]: 맥 기기를 포함해서 일부 클라이언트 사이드 IPv6 인터넷 공유기에서는 정상 작동합니다.



출처 : http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture&no=458&z=4

반응형
Posted by blueasa
, |

자주 틀리는 맞춤법

한글 / 2016. 1. 12. 12:28




출처 : http://www.torrentby.me/humor/322174


반응형

'한글' 카테고리의 다른 글

[펌] 고자질의 어원  (0) 2016.05.09
[펌] 궁색한 변명? 군색한 변명?  (0) 2016.05.09
'돐', '돌'중 바른 표기는?  (0) 2015.10.14
~율과 ~률  (0) 2015.10.01
삼가  (0) 2015.09.09
Posted by blueasa
, |

* Memory 해제 관련...

*. Prefab 을 public GameObject variable 로 연결하면 1개가 살아있다...
     - Resource 로 옮기고 Resource.Load 후 Instantiate 해준다음 Resource.UnloadUnusedAsset으로 로드했던 prefab을 해제시키자.


* Texture

- WWW 혹은 다른곳에서 load 한 texture 들은 사용하지 않을때 DestroyImmediate 로 꼭 해제시켜줘야 한다. DestroyImmediate 해주면 바로 memory 에서 해제된다.


*. GameObject Destroy 는 memory 를 바로 해제시키지 않는다.
     - Resource.UnloadUnusedAssets 를 해야 memory 에서 해제된다.
     - GameObject 를 DestroyImmediate 해도 포함되있는 Texture, material, 등은 memory에서 해제되지 않는다.

*. Load 한 Texture 들을 Member 로 가지고 있으면 GameObject Destroy 시 memory 해제 안된다.
     - Texture 는 개별 DestroyImmediate 하여 바로바로 해제하자.




반응형
Posted by blueasa
, |