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

카테고리

분류 전체보기 (2851)
Unity3D (894)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (189)
협업 (64)
3DS Max (3)
Game (12)
Utility (142)
Etc (99)
Link (34)
Portfolio (19)
Subject (90)
iOS,OSX (52)
Android (16)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday


[링크] http://docs.apteligent.kr/crittercism_man/quickstart.html

반응형
Posted by blueasa
, |

[펌] 반복문 유틸

Programming/C# / 2016. 12. 7. 17:54
// 반복문 관련
    // For Array
    public static void ForToArray

(T[] pArray, Action pCallback) { if (null == pArray) return; if (null == pCallback) return; int iMaxCount = pArray.Length; for (int iLoop=0; iLoop < iMaxCount; ++iLoop) { pCallback(pArray[iLoop]); } } // For Enum public static void ForToEnum(Action pCallback) { var pEnumerator = Enum.GetValues(typeof(T)).GetEnumerator(); while (pEnumerator.MoveNext()) { pCallback((T)pEnumerator.Current); } } // For List public static void ForToList(List pList, Action pCallback) { if (null == pList) return; if (null == pCallback) return; int iMaxCount = pList.Count; for (int iLoop = 0; iLoop < iMaxCount; ++iLoop) { pCallback(pList[iLoop]); } } public static void ForToList(List pList, Func pCallback) { if (null == pList) return; if (null == pCallback) return; int iMaxCount = pList.Count; for (int iLoop = 0; iLoop < iMaxCount; ++iLoop) { if (true == pCallback(pList[iLoop])) break; } } // For Dictionary public static void ForToDic(Dictionary pDic, Action pCallback) { if (null == pDic) return; if (null == pCallback) return; var pEnumerator = pDic.GetEnumerator(); while (pEnumerator.MoveNext()) { var kvp = pEnumerator.Current; pCallback(kvp.Key, kvp.Value); } } public static void ForToDic(Dictionary pDic, Func pCallback) { if (null == pDic) return; if (null == pCallback) return; var pEnumerator = pDic.GetEnumerator(); while (pEnumerator.MoveNext()) { var kvp = pEnumerator.Current; if (true == pCallback(kvp.Key, kvp.Value)) break; } } // For One public static void For(int iStartIndex, int iMaxIndex, Action pCallback) { for (int iLoop = iStartIndex; iLoop pCallback) { for (int iLoop = iStartIndex; iLoop < iMaxIndex; ++iLoop) { if (true == pCallback(iLoop)) break; } } // For Double public static void ForToDouble(int iMaxToFirst, int iMaxToSecond, Action pCallback) { for (int iLoop1 = 0; iLoop1 < iMaxToFirst; ++iLoop1) { for (int iLoop2 = 0; iLoop2 < iMaxToSecond; ++iLoop2) pCallback(iLoop1, iLoop2); } } public static void ForToDouble(int iMaxToFirst, int iMaxToSecond, Func pCallback) { for (int iLoop1 = 0; iLoop1 < iMaxToFirst; ++iLoop1) { for (int iLoop2 = 0; iLoop2 < iMaxToSecond; ++iLoop2) { if (true == pCallback(iLoop1, iLoop2)) return; } } } // Inverse For Double public static void ForInverseToDouble(int iMaxToFirst, int iMaxToSecond, Action pCallback) { for (int iLoop1 = iMaxToFirst; iLoop1 >= 0; --iLoop1) { for (int iLoop2 = iMaxToSecond; iLoop2 >= 0; --iLoop2) pCallback(iLoop1, iLoop2); } } public static void ForInverseToDouble(int iMaxToFirst, int iMaxToSecond, Func pCallback) { for (int iLoop1 = iMaxToFirst; iLoop1 >= 0; --iLoop1) { for (int iLoop2 = iMaxToSecond; iLoop2 >= 0; --iLoop2) { if (true == pCallback(iLoop1, iLoop2)) return; } } }


[출처] 이상호

반응형
Posted by blueasa
, |

[펌] Loop Dictionary

Programming/C# / 2016. 12. 7. 17:43
Code (CSharp):
  1. var enumerator = my_dictionary.GetEnumerator();
  2. while( enumerator.MoveNext() )
  3. {
  4.     // Access value with enumerator.Current.Value;
  5. }



[출처] https://forum.unity3d.com/threads/c-dictionary-loop.337804/

반응형
Posted by blueasa
, |


[링크]

http://devlecture.tistory.com/entry/%ED%8C%8103-iOS-%EC%95%B1-%EB%82%B4%EB%B6%80-%EB%B0%B0%ED%8F%AC-adhoc-OTA-%EA%B0%80%EC%9D%B4%EB%93%9C-Dropbox-%ED%99%9C%EC%9A%A9

반응형
Posted by blueasa
, |


[링크] http://wonzopein.com/31

반응형
Posted by blueasa
, |


iPhone 기업용 개발자 등록 과정(1)-기업용 개발 프로그램 비교


iPhone 기업용 개발자 등록 과정(1)-등록


iPhone 기업용 프로그램 배포 - In-House 방식(1)


iPhone 기업용 프로그램 배포 - In-House 방식(2)


기업용 프로그램 배포준비(1)-KeyChain 생성 및 인증서 등록


기업용 프로그램 배포준비(2)- 테스트용 디바이스 등록


기업용 프로그램 배포준비(3)- App ID 등록


기업용 프로그램 배포준비(4)- Provisioning 등록

반응형
Posted by blueasa
, |

KB국민은행 수수료 면제 통장 - 국민 ONE 통장 이용하기(통장전환하기)



KB국민은행 이체수수료 면제 받기

은행거래를 가끔씩 하다보면 얼마 안되는 금액이지만 지불하면서도 아까운 돈이 있다. 바로 은행 계좌이체 수수료 인데 대다수의 은행에서는 몇가지의 조건들을 내세워 면제나 할인받을 수 있는 방법들을 제시하고 있다. 필자가 주로 이용하는 KB 국민은행에서도 거래등급에 따라 계좌이체 수수료를 면제해주고 있는데 실상 이 등급에 들어가기가 여간 까다롭다. 그러다 보니 우리같은 서민들은 솔직히 등급을 올리기가 만만치 않다. 계좌 잔고가 얼마 없거나 은행 거래 실적이 부족한 사람들은 해당 등급에 들어가서 계좌이체 수수료를 면제받기 어럽기 때문이다. 

예전에 신용카드를 좀 많이 써서 올라갔던 등급이 며칠내로 만료가 된다는 안내를 받고, 계좌이체 수수료를 면제받을 수 있는 방법이 있나 찾아보았다.  검색 후  KB 국민은행에서 계좌이체 수수료를 면제받을 수 있는 새로운 예금상품을 출시했다는 기사를 접하게 되었다. 조건도 까다롭지 않고 가입도 쉬워 계좌이체 수수료 면제용 계좌를 개설하기로 결정했다. 





- KB 국민ONE통장 계좌이체 수수료 면제 조건 : 

계좌이체 수수료를 면제받기 위해서는 매월 이 통장에서 공과금 이체(세금, 통신비, 보험료 등) 실적이 있거나 KB 신용카드(신용, 체크) 결제실적이 1건만 있는 경우에도 계좌이체 수수료 등 3개 수수료(전자금융타행이체수수료, KB자동화기기 시간외출금수수료, 타행자동이체 수수료)를 무제한 면제받을 수 있다.

급여이체, 연금수령, 가맹점결제 중 1건 이상 추가 실적이 있는 경우에도 계좌이체 수수료 등 3개 수수료(타행 자동화기기 출금 수수료 월5회, SMS 입출금내역통지수수료, KB자동화기기 타행이체 수수료 월10회)까지 추가 면제가 가능하다.


KB 국민은행 계좌이체 수수료 면제 통장 - 국민 ONE 통장 이용하기(통장전환하기)


계좌이체 수수료 면제 통장을 만들기 위해 시간을 내서 은행에 다녀와야겠다고 생각을 하던 중 인터넷 뱅킹 메뉴를 둘러보다가 특별한 메뉴를 발견하게 되었다. 

KB 국민은행 계좌이체 수수료 면제 통장 - 국민 ONE 통장 이용하기(통장전환하기)


보통 인터넷 은행에 들어가도 이체를 하거나 조회를 하고 나오는 경우가 대다수라 이런 메뉴가 있는줄도 몰랐는데, 예금전환이라는 메뉴가 눈에 들어왔다. 예금전환 메뉴를 클릭하고 들어가니 기존에 사용하던 은행계좌를 다른 통장으로 변경이 된다는거였다. 어차피 기존 통장이 계좌이체 수수료 면제나 특별한 혜택이 있어서 가입했던게 아니었던 터라 반가운 마음에 바로 다음단계로 진행했다. 


KB 국민은행 계좌이체 수수료 면제 통장 - 국민 ONE 통장 이용하기(통장전환하기)


우선 예금전환을 할 통장을 선택한 후 전환할 상품(계좌이체 수수료면제를 받기 위한 상품)을 선택하고 확인을 누르면 된다. 


KB 국민은행 계좌이체 수수료 면제 통장 - 국민 ONE 통장 이용하기(통장전환하기)



이후 몇가지 인증절차를 거치고 나면 별다른 문제 없이 종료. 


계좌이체 수수료 면제용 통장개설을 위해 시간을 내서 은행에 가지 않아도 원하는 상품(계좌이체 수수료 면제용 통장)으로 전환이 가능해서 혜택이 있는 통장으로 변경이 가능하다. 계좌번호나 거래내역도 기존대로 유지되고 단지 상품만 변경이 되는거라 사용하면서 바꿔야 할것도 아무것도 없다. 

KB 국민은행 이외에 농협에서도 지원이 되고, 인터넷 뱅킹이 되는 대다수의 은행에서 지원이 되는것 같다. 인터넷 뱅킹을 이용하는 사용자라면, 은행에 가지 않고도 쉽게 처리가 가능하니 시간도 절약되고 참 좋은 기능인것 같다. 



* 세줄요약

- KB국민은행 계좌이체 수수료 면제는 KB국민ONE통장을 만들면 몇가지 실적만으로 여러수수료 면제가 가능하다.


- 통장을 새로만들러 은행에 방문하지 않아도 기존통장을 KB국민ONE통장으로 예금상품 전환이 가능하다.


- 타 은행도 인터넷뱅킹에서 지원이 된다.



[출처]

http://pixxie.tistory.com/entry/KB%EA%B5%AD%EB%AF%BC%EC%9D%80%ED%96%89-%EC%88%98%EC%88%98%EB%A3%8C-%EB%A9%B4%EC%A0%9C-%ED%86%B5%EC%9E%A5-%EA%B5%AD%EB%AF%BC-ONE-%ED%86%B5%EC%9E%A5-%EC%9D%B4%EC%9A%A9%ED%95%98%EA%B8%B0%ED%86%B5%EC%9E%A5%EC%A0%84%ED%99%98%ED%95%98%EA%B8%B0

반응형
Posted by blueasa
, |


TelephonyManager tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

     String networkOperator = tel.getNetworkOperator();
     int mcc = 0, mnc = 0;
     if (networkOperator != null) {
         mcc = Integer.parseInt(networkOperator.substring(03));
         mnc = Integer.parseInt(networkOperator.substring(3));
     }

wifi 모델은 제대로 값을 읽지 못한다는 이야기가...;;;

Locale.getDefault().getCountry(); <- KR 을 리턴함.(세팅된 언어셋을 리턴하는 것이다...;;)
이걸 받아서 아래 링크쪽에 정의된 mcc랑 매핑을 시켜서 사용해야 할 것 같음

https://android.googlesource.com/platform/frameworks/opt/telephony/+/f39de086fddea9e9f6b8c56b04d8dd38a84237db/src/java/com/android/internal/telephony/MccTable.java

IP를 통해서 국가를 얻어올 수 있는 방법이 있다.



http://api.hostip.info/get_json.php <- 현재 접속한 ip address의 국가 정보를 리턴한다.
ex) 
{"country_name":"KOREA, REPUBLIC OF","country_code":"KR","city":"Seoul","ip":"210.182.216.2"}

자세한 내용은 아래 링크를 확인
http://codereview.stackexchange.com/questions/23102/getting-country-based-on-ip

국가 이름과 mcc를 매핑한 리스트는 아래와 같다.
<item>202,gr</item>
<item>204,nl</item>
<item>206,be</item>
<item>208,fr</item>
<item>212,mc</item>
<item>213,ad</item>
<item>214,es</item>
<item>216,hu</item>
<item>218,ba</item>
<item>219,hr</item>
<item>220,rs</item>
<item>222,it</item>
<item>225,va</item>
<item>226,ro</item>
<item>228,ch</item>
<item>230,cz</item>
<item>231,sk</item>
<item>232,at</item>
<item>234,gb</item>
<item>235,gb</item>
<item>238,dk</item>
<item>240,se</item>
<item>242,no</item>
<item>244,fi</item>
<item>246,lt</item>
<item>247,lv</item>
<item>248,ee</item>
<item>250,ru</item>
<item>255,ua</item>
<item>257,by</item>
<item>259,md</item>
<item>260,pl</item>
<item>262,de</item>
<item>266,gi</item>
<item>268,pt</item>
<item>270,lu</item>
<item>272,ie</item>
<item>274,is</item>
<item>276,al</item>
<item>278,mt</item>
<item>280,cy</item>
<item>282,ge</item>
<item>283,am</item>
<item>284,bg</item>
<item>286,tr</item>
<item>288,fo</item>
<item>289,ge</item>
<item>290,gl</item>
<item>292,sm</item>
<item>293,si</item>
<item>294,mk</item>
<item>295,li</item>
<item>297,me</item>
<item>302,ca</item>
<item>308,pm</item>
<item>310,us</item>
<item>311,us</item>
<item>312,us</item>
<item>313,us</item>
<item>314,us</item>
<item>315,us</item>
<item>316,us</item>
<item>330,pr</item>
<item>332,vi</item>
<item>334,mx</item>
<item>338,jm</item>
<item>340,gp</item>
<item>342,bb</item>
<item>344,ag</item>
<item>346,ky</item>
<item>348,vg</item>
<item>350,bm</item>
<item>352,gd</item>
<item>354,ms</item>
<item>356,kn</item>
<item>358,lc</item>
<item>360,vc</item>
<item>362,ai</item>
<item>363,aw</item>
<item>364,bs</item>
<item>365,ai</item>
<item>366,dm</item>
<item>368,cu</item>
<item>370,do</item>
<item>372,ht</item>
<item>374,tt</item>
<item>376,tc</item>
<item>400,az</item>
<item>401,kz</item>
<item>402,bt</item>
<item>404,in</item>
<item>405,in</item>
<item>410,pk</item>
<item>412,af</item>
<item>413,lk</item>
<item>414,mm</item>
<item>415,lb</item>
<item>416,jo</item>
<item>417,sy</item>
<item>418,iq</item>
<item>419,kw</item>
<item>420,sa</item>
<item>421,ye</item>
<item>422,om</item>
<item>423,ps</item>
<item>424,ae</item>
<item>425,il</item>
<item>426,bh</item>
<item>427,qa</item>
<item>428,mn</item>
<item>429,np</item>
<item>430,ae</item>
<item>431,ae</item>
<item>432,ir</item>
<item>434,uz</item>
<item>436,tj</item>
<item>437,kg</item>
<item>438,tm</item>
<item>440,jp</item>
<item>441,jp</item>
<item>450,kr</item>
<item>452,vn</item>
<item>454,hk</item>
<item>455,mo</item>
<item>456,kh</item>
<item>457,la</item>
<item>460,cn</item>
<item>461,cn</item>
<item>466,tw</item>
<item>467,kp</item>
<item>470,bd</item>
<item>472,mv</item>
<item>502,my</item>
<item>505,au</item>
<item>510,id</item>
<item>514,tl</item>
<item>515,ph</item>
<item>520,th</item>
<item>525,sg</item>
<item>528,bn</item>
<item>530,nz</item>
<item>534,mp</item>
<item>535,gu</item>
<item>536,nr</item>
<item>537,pg</item>
<item>539,to</item>
<item>540,sb</item>
<item>541,vu</item>
<item>542,fj</item>
<item>543,wf</item>
<item>544,as</item>
<item>545,ki</item>
<item>546,nc</item>
<item>547,pf</item>
<item>548,ck</item>
<item>549,ws</item>
<item>550,fm</item>
<item>551,mh</item>
<item>552,pw</item>
<item>602,eg</item>
<item>603,dz</item>
<item>604,ma</item>
<item>605,tn</item>
<item>606,ly</item>
<item>607,gm</item>
<item>608,sn</item>
<item>609,mr</item>
<item>610,ml</item>
<item>611,gn</item>
<item>612,ci</item>
<item>613,bf</item>
<item>614,ne</item>
<item>615,tg</item>
<item>616,bj</item>
<item>617,mu</item>
<item>618,lr</item>
<item>619,sl</item>
<item>620,gh</item>
<item>621,ng</item>
<item>622,td</item>
<item>623,cf</item>
<item>624,cm</item>
<item>625,cv</item>
<item>626,st</item>
<item>627,gq</item>
<item>628,ga</item>
<item>629,cg</item>
<item>630,cg</item>
<item>631,ao</item>
<item>632,gw</item>
<item>633,sc</item>
<item>634,sd</item>
<item>635,rw</item>
<item>636,et</item>
<item>637,so</item>
<item>638,dj</item>
<item>639,ke</item>
<item>640,tz</item>
<item>641,ug</item>
<item>642,bi</item>
<item>643,mz</item>
<item>645,zm</item>
<item>646,mg</item>
<item>647,re</item>
<item>648,zw</item>
<item>649,na</item>
<item>650,mw</item>
<item>651,ls</item>
<item>652,bw</item>
<item>653,sz</item>
<item>654,km</item>
<item>655,za</item>
<item>657,er</item>
<item>702,bz</item>
<item>704,gt</item>
<item>706,sv</item>
<item>708,hn</item>
<item>710,ni</item>
<item>712,cr</item>
<item>714,pa</item>
<item>716,pe</item>
<item>722,ar</item>
<item>724,br</item>
<item>730,cl</item>
<item>732,co</item>
<item>734,ve</item>
<item>736,bo</item>
<item>738,gy</item>
<item>740,ec</item>
<item>742,gf</item>
<item>744,py</item>
<item>746,sr</item>
<item>748,uy</item>
<item>750,fk</item>



[출처] http://nicelee.egloos.com/m/3025913

반응형
Posted by blueasa
, |

[펌] MCC/MNC

Unity3D/Tips / 2016. 11. 30. 15:47

MCC(Mobile Country Code)와 MNC(Mobile Network Code) 쌍은 통신사를 구분하기 위한 국가-통신사 코드 조합으로 우리나라에서 많이 쓰이는 CDMA, LTE 이외에 GSM, UMTS, TETRA 등에서도 사용된다. ITU-T에서 E.212를 통해 MCC/MNC를 제안했으며, 요즘은 보통 USIM에서 위 값의 조합을 가져올 수 있다.

안드로이드의 경우, SYSTEM PROPERTIES 중 하나인 gsm.operator.numeric에서 MCC+MNC 조합인 PLMN ID를 가져올 수 있다.

만약 3자리 이상이라면, 앞의 3자리가 MCC 그 나머지를 MNC로 보면 된다.  위의 23410의 경우, 영국(234)의 O2 통신사(10)이다.

MCC를 얻는 함수 예제는 아래와 같다.

그럼 MCC/MNC는 어디에 쓸까? 보통의 서비스들은 다국어 번역만 지원하고 사용자가 셋팅에서 언어를 바꿀 수 있게 하면 된다.

하지만, 구글 플레이 스토어나 애플의 앱스토어처럼 국가마다 다른 앱이나, 캠페인을 진행하고 싶은 경우 MCC를 참조할 수 있다. 그리고 간혹 통신사만의 캠페인을 진행하는 경우 MNC를 참조할 수 있다.

그런데 왜 번거롭게 USIM의 MCC/MNC를 이용해서 서비스를 다르게 보여주려고 할까? 사용자가 접속하고자 하는 국가를 고르면 되는 것 아닌가?

마켓의 경우는 앱을 다운로드 받기 때문에 단말이 네트워크에 연결되어 있어야 한다. Wi-Fi가 아니라면 통신사 망을 통해 데이터를 전송하기 때문에  USIM의 값이 중요하다. 그리고,  USIM을 구입할 나라라면 사용자가 더 거주할 확률이 높다고 판단하기 때문으로 보인다. 마지막으로, 신용카드 결제가 아닌 핸드폰 요금에 청구되는 소액결제의 경우(P-SMS와 캐리어 빌링이 대표적이다) USIM의 통신사에 따라 결제 여부가 달라지기 때문에 마켓에서는 USIM의 데이터를 더 신뢰한다.

클래시 오브 클랜처럼 게임을 만든다면 다국어 번역만 지원하고 사용자의 현재 언어를 파악하여 언어를 보여주거나 사용자가 셋팅에서 스스로 바꿀 수 있는 방법만 제공하면 되겠다. 애플이나 구글의 인앱결제들이 어떻게든 결제를 할 수 있게 고민할테니 말이다.

그 밖에

MCC/MNC는 USIM에 저장되어 있기 때문에, USIM을 따라다닌다. 단말을 구분하고 싶다면 IMEI 값을 참고하자. 2012년 5월부터는 완전히 공개된 정보가 되어 단말의 뒷면(배터리 탈착 부분)에서 확인할 수 있다.

참조


[출처] http://sunphiz.me/wp/archives/1047

반응형
Posted by blueasa
, |

Assets/UCSS/Scripts/Protocols/HTTPProtocol.cs(20,63): error CS0234: The type or namespace name `MovieTexture' does not exist in the namespace `UnityEngine'. Are you missing an assembly reference?


유니티에 WWW wrapper 에셋(http://u3d.as/8e6)을 추가하고 안드로이드로 빌드하려고 시도하니 위와 같은 에러가 나서 뭐지 했는데


찾아보니 아래와 같은 글이 있다.

MovieTexture는 모바일에서 더이상 지원을 하지 않는다고 한다.(PC빌드 전용인가?)


as of 2015/10/6, MovieTextures are still not supported on Android and iOs


First, any code using "MovieTexture" MUST be set only for PC builds. The game I am working on is for Android and PC, so I use the following preprocessor commands:

  1. #if UNITY_ANDROID
  2. Handheld.PlayFullScreenMovie("");
  3. #else
  4. MovieTexture stuff;
  5. #endif


그래서 해당 에셋의 MovieTexture 부분에 iOS/AOS에서 안돌아가게 아래와 같이 define을 추가했다.


#if UNITY_PRO_LICENSE && !UNITY_WEBGL && !UNITY_IOS && !UNITY_ANDROID

        public EventHandlerMovieTexture     movieTextureCallback;

#endif


#if UNITY_PRO_LICENSE && !UNITY_IOS && !UNITY_ANDROID

    void GetMovie()

    {

// 중략..

    }

#endif




[참조] https://forum.unity3d.com/threads/movietexture-has-no-definition-for-iphone-android.73338/

[참조] http://answers.unity3d.com/questions/377854/why-cannot-build-movie-texture-on-android.html


반응형
Posted by blueasa
, |