페이지

2014년 6월 30일 월요일

Binary Exponential Backoff Algorithm

Exponential Backoff  (지수 백오프)

Wikipedia : Exponential backoff
http://en.wikipedia.org/wiki/Exponential_backoff


데이터통신 7장
http://www.aceking.co.kr/datacomm/data_07.html
7.2.1 Binary Exponential Backoff Algorithm
― 전송된 패킷간에 충돌이 발생하면 근거리망에 연결된 각 DTE는 불특정의 지연 시간을 기다린 후 재전송을 시도.
― Binary Exponential Backoff Algorithm이란?
 ⇒ ·지연 시간의 크기를 결정해 주는 알고리즘.
·지연 시간의 범위를 DTE마다 다르게 해줌으로써,
계속적으로 반복되게 충돌이 일어날 기회를 줄여줌.
(1) 원리
― 전송되는 패킷이 n번만큼 연속적으로 충돌이 발생하고, n이 16보다 작은 경우에는, 다음의 집합부터 숫자 K를 하나 Random하게 선택.
⇒ ·해당 DTE는 " K × 512 bit times " 만큼을
대기한 후 전송을 시도.
·여기서 " 512 bit times " 는 Slot Time과 같다.
(10 Mbps에서의 1 Bit Time은 초). 


2진 지수 백오프
http://terms.naver.com/entry.nhn?docId=1598412&cid=2956&categoryId=2956
동시 공동 이용/충돌 탐지(CSMA/CD) 방식의 구내 정보 통신망(LAN)에서 버스상의 충돌이 발생했을 때, 전송을 다시 시도하기까지의 지연 시간을 계산하기 위한 연산 중의 하나. 충돌이 일어날 때마다 임의 지연 시간을 점차 늘려 나가는 방식이다

임의 지연(random delay) 시간을 계산하는 알고리즘. 즉, CSMA/CD 방식의 근거리망에서 버스 상의 충돌이 일어나면 재전송을 위하여 지연 시간을 계산하는 알고리즘 중의 하나이며, 그 충돌이 있을 때마다 임의로 지연 시간을 늘여간다.


CSMA/CD에 대하여
http://blog.naver.com/semi7623?Redirect=Log&logNo=100008690900
데이터를 재전송하기 전에, 컴퓨터가 일정 시간을 대기하는 시간을 백오프(Backoff)라 한다.
http://anyflow.net/289
5. jam 신호 전송 후, 지수적 백오프(exponential backoff) 단계로 들어감. 지수적 백오프 알고리즘을 통해 값(K)를 얻어 K * 512 bit time을 기다렸다가 단계 2로 돌아감.


1.7 오류처리 1.7.2 오류 복구
http://blog.naver.com/ddrkcodz?Redirect=Log&logNo=10045488441
자원관련 비치명적 오류에 대한 전형적인 오류복구 방식은
잠시 시간을 둔 후에 다시 시도하는 것이다. 이 방법은 다른 상황에서도 적용가능하다.
예를 들어 네트워크 연결이 더 이상 작동하지 않음을 뜻하는 오류가 발생했다면,
응용프로그램이 짧은 시간동안 지연한 후에 연결을 다시 만드는 것이 가능할 수 있다.
응용프로그램에 따라서는, 매 시도마다 더 긴 시간을 기다리는
지수적 포기(Exponential backoff) 알고리듬을 적용 할 수도 있다.
어떤 오류가 복구 가능한지(즉 비치명적인지)를 결정하는 것은
궁극적으로 응용프로그램 개발자의 몫이다.
오류복구에 대해 합리적인 전략을 적용할수 있다면,
응용프로그램의 비정상적인 종료를 피함으로써 응용프로그램을 좀 더 견고하게 만들수 있다.


래치 (Latch)
http://blog.naver.com/kiyoun82?Redirect=Log&logNo=110070192557
Time-out (대기시간) Exponential backof sleep 알고리즘 사용
- 1/100 초 단위로 1,1,2,2,4,4,8,8.. 순으로 대기하며 최대 2초까지 증가
- 빠른 시간안에 래치 획득을 재시도하는 과정에서 지나친 스핀으로 인해 CPU를 과다하게 사용하는 것을 방지


18강. Ethernet의 구조
http://freeminderhuni.blogspot.kr/2013/09/network-security-06.html
지연시간(delay)을 가진후 재시도 (단위 us)
첫번째 : [0,51.2] 중에서 택일
두번째 : [0,51.2,102.4] 중에서 택일
세번째 : [0,51.2,102.4,153.6] 중에서 택일
N번째  : k x 51.2 us for randomly selected k=0...2^n -1
여러번 시도후에 포기 (보통 16번)
지수 백 오프(exponential backoff)


이동 통신 입문 ch7 : Wireless LANS
http://limetok.tistory.com/117
ㅂ. 만약 충돌이 일어났을 경우 더큰 Random back of time 을 사용한다. 보통 7(8)에서 시작해서 충돌이 발생할때마다 CW(경합윈도우)를 2배씩해서 맥시멈 255값을 가진다. (이를 지수적 백오프 : exponential backoff) 하지만 시간이 길어질수 있다는 단점이 있다.





2014년 6월 29일 일요일

블레이블루 크로노판타즈마 ( 약어: BB CP )





블레이블루 CP (크로노판타즈마 의 약어)

블레이블루 CP 초심자용 시스템 설명
http://blog.naver.com/neg100/220006815971





하쿠멘

전용게이지 곡옥 (勾玉)
- 모든 필사기 사용시 곡옥 소비
- 총 8개 보유
- 시간, 공격, 가드시 상승
- 한번 곡옥을 소비하면 2초 정도 곡옥 상승효과 없어짐
- A버튼 필사기 1개, B버튼 필사기 2개, C버튼 필사기 3개 소모
- 래피드 캔슬, 카운터 어설트 곡옥 4개 소모
- 디스토션 드라이브 곡옥 4개, 8개 소모
- 아스트랄 히트 곡옥 8개
- 탄속성 장풍 공격을 C버튼으로 베어낼시 곡옥 1개상승

하쿠멘 정식 기술표
http://sp.bbcp.ac/chara11.php

하쿠멘 가이드 
http://bbs1.ruliweb.daum.net/gaia/do/ruliweb/family/2047/read?bbsId=G001&articleId=3930637&itemId=76217

하쿠멘 공략
http://goguri.tistory.com/entry/%EB%B8%94%EB%A0%88%EC%9D%B4%EB%B8%94%EB%A3%A8-%ED%95%98%EC%BF%A0%EB%A9%98-%EA%B3%B5%EB%9E%B5

하쿠멘 필드콤보 & 기초OD콤

http://bbs1.ruliweb.daum.net/gaia/do/ruliweb/family/2047/read?articleId=6438172&objCate1=14&bbsId=G001&itemGroupId=362&pageIndex=1

CS2 하쿠멘 콤보 레시피
http://bbs1.ruliweb.daum.net/gaia/do/ruliweb/family/2047/read?bbsId=G001&articleId=4298458&itemId=76217
http://bbs1.ruliweb.daum.net/gaia/do/ruliweb/family/2047/read?bbsId=G001&articleId=4299882&itemId=76217

하쿠멘 대전영상 ( spark )
http://www.youtube.com/watch?v=XoOSWpJU1ZU

하쿠멘 OD 콤보
http://blly_zard.blog.me/70178192013

하쿠멘 귀축 -> 염마 콤보
http://blog.naver.com/neg100/70185447356

하쿠멘 JC 후 -> OD 콤보
http://blog.naver.com/neg100/70185447356

필드용 2A-연화-귀축-스탭2C-점캔 살짝딜레이JB-J2A-딜레이 공중대쉬JB-JA-착지2C-HJ2A-공중대쉬J2A-JC
구석근처용 2A-연화-귀축-스탭2C-HJ2A-J2C-착지2C-HJ2A-J2C-착지2C-J2A-공대J2A-JC
구석용 2A-연화-귀축(6C)-2C-HJ2A-착지직전J2C-착지6A-5C-2C-JB-J2Ax2-공대J2A-JC



아즈라엘

http://blog.naver.com/kain216/100202668841
http://www.youtube.com/watch?v=sKms8y7kGw8#t=32


뉴-13
기본기
http://blog.naver.com/neg100/70185447356
http://blog.naver.com/neg100/70180584273
http://tvpot.daum.net/v/vec88BEZBBZKGaaSsGEGa4d
http://bbs1.ruliweb.daum.net/gaia/do/ruliweb/family/2047/read?articleId=6363990&objCate1=14&bbsId=G001&searchKey=userid&itemGroupId=362&searchName=%EC%A7%A0%EC%86%90&itemId=&searchValue=.1rm8rLE46c0&platformId=&pageIndex=1


http://blog.naver.com/kain216/100203653127
진콤보정리
http://blly_zard.blog.me/70178192013




라그나
기본기
http://blog.naver.com/neg100/220007199690
Ragna 9203 damage combo
http://www.youtube.com/watch?v=_5OlAhU_W8c



칼 클로버

http://blog.naver.com/kain216/100202669163













 
타오카카

 
EX용













 
하자마
 


































유우키 테르미 - 콘솔용
http://blog.naver.com/skdso124/150178277440
http://blog.naver.com/kain216/100201655262

2014년 6월 27일 금요일

차트부스트 ( chartboost ) SDK 설정하기

차트부스트  ( chartboost ) SDK를 설치해보겠습니다.

https://www.chartboost.com/

에서 회원가입하시고


Add App 하시면


아래 이미지와 같이 등록해줍니다.
 만약 본인의 어플이 안드로이드 마켓에 등록이 되어있다면 Search App Store 하시고 이름을 검색하셔서 선택하시면 해당 작성은 자동으로 됩니다.
Test Mode Enabled 로 꼭 해줍니다.

제대로 했다면 아래 그림과 같아집니다.

SDK 에 녹색불 ( green light ) 이 들어와야한다는 퍼블리셔의 요청에따라 녹색이 되게 해야합니다.
여기서 고생을 좀 했습니다.

테스트 폰도 등록해보고..


아래 링크에 따라 SDK 를 설치해보고..
https://help.chartboost.com/documentation/android


녹색불이 들어와야하는 게 목적인데..
이것 저것 해봐도 안되는 상황이었습니다.

그러다 최초 앱 설정시에 Test Mode 아래있던 작은 Note 가 생각났습니다.

Note : Test mode automatically deactivates after 20 impressions

20번정도 광고노출후 자동으로 테스트모드가 비활성화된다는...


그러니 광고 노출 활성 테스트를 20번 정도하니 아래와 같이 알람이 왔습니다!!!




 녹색불이 들어왔네요!! 성공~~







2014년 6월 26일 목요일

Uploaded failed : you uploaded an apk that is not zip aligned




you uploaded an apk that is not zip aligned. You will need to run a zip align tool on your APK and upload it agian.

​라는 에러로 구글 apk 업로드가 안되는 경우가 발생했다.


zipalign -f -v 4 yourapp.apk output.apk     명령어로 압축 하고


그 output.apk 를 Upload 해주니 성공!!



ps1. 디버그가 가능한 APK를 업로드했습니다. 보안상의 이유로 Google Play에 게시하기 전에 디버그를 사용 중지해야 합니다. 라는 에러..

AndroidManifest 에 android:debuggable 에 꼭 false 를 해야 업로드 할 수 있다. 바꾸고 project-clean 은 필수

Assert failed : reference count should greater than 0

개발환경 : Cocos2d-x2.0.4, XCode 5.1.1

void CCObject::retain()
{
     CCASSERT(_referenceCount > 0, "reference count should greater than 0"); // 이 문제..                                   
     ++_referenceCount;
}

IOS ( Objective-C ) 메모리 관리 부터
IOS 는 안드로이드(Java)와 같은 Garbage Collection 이 없다. (C와 동일 개념)
그래서 retain 과 release (이거나 autorelease)의 개념을 사용한다.
retain 은 해당 객체를 몇군데에서 사용하고 있는지 수치로 가지고 있는다.  ( ++_referenceCount )
그리고 release 는 그 수치를 하나씩 삭제해준다.



물론 CCSprite 의 Create 메소드에선 autorelease 를 알아서 해주게 되어있지만. ( ex>> CCSprite* sprite = CCSprite::spriteWithFile("test.png"); //등등 )

m_SpriteArray = CCMutableArray<CCSprite*>::arrayWithObjects(a,b,c,NULL); // 이거와 같은 것에는

m_SpriteArray->retain(); // retain 을 꼭 해주고


Class::~Class() 같은 소멸자에

m_SpriteArray->release(); //를 꼭 넣어줘야한다.

2014년 6월 24일 화요일

Unity3d 에서 SVN 사용

작업환경 : Unity3d 4.5.0f6, Tortoise 1.8.7

현재(2014.06.25) 팀 작업중에 사용중인 유니티 SVN 셋팅 및 작업내용입니다.

Unity3d Setting
1. Edit - Project Settings - Editor - Version Control - Visible Meta Files

2. Edit - Project Settings - Editor - Asset Serialization - Force Text

3. Assets 과 ProjectSettings 만 남겨두고 과감히 delete

4. Tortoise SVN 파일 무시 추가 (Setting - General - Global ignore patten )
Temp Library Obj *.csproj *.unityproj *.sln *.user *.userprefs *.pidb *.suo

5. 팀원들이 서로 다르게 써야할 소스는 무시해 준다 ( 소스안 ID 등 )
해당파일 오른클릭 -> TortoiseSVN ->Remove from ignore list -> file name

6. TortoiseSVN -> Import

Work Start
1. 모든 팀원(Import한사람 포함)은 해당 Import된 경로에서 SVN CheckOut 받는다.

Work Issue
1. Unity3D 씬의 프리팹들은 되도록 프리팹파일화 해서 ADD 후 Commit 할것 (링크오류등이 해결되었다.)

2. TortoiseMerge - Diff (소스비교) 단축키 ctrl f10 (수정적용) , f8 (다음오류), 라인단위로 수정을 할 수도 있지만 ctrl+A(모두선택), ctrl+f10(Use mine text block 내꺼위주)나 ctrl+f9(Use theirs text block 상대위주) (변경), conflict 충돌 에러시에 - Edit Conflicts 로 수정가능. ( TortoiseMerge - Edit confricts 로 수정도 가능 )

3. Update-Commit 과정에서 충돌이 나면, TortoiseMerge 로 버젼을 수정, 병합하여 하나의 파일로 만들어 충돌을 해결 -> Resloved 가 되면 해결완료 -> Commit해서 꼭 서버에 다시 올려준다. TortoiseSVN->Resolved

4. TortoiseSVN -> Show log 를 하면 팀원이 Commit한 로그내용 전체를 확인 할수있다.

5. 유니티 IOS 빌드시 Append 버튼이 빌드할때마다 항상 비활성화 일 경우가 있다. Replace 만 활성되는... ( 내 경우엔 SVN ( subversion ) 사용시 ), 극단적으로는 Plugins - ios - all delete 하면 다시 Append 버튼이 활성화된다. 보면.. unity svn 사용시 보이게 해야하는 meta 파일이 문제인거 같다. (추측). Plugins folder 는 되도록 svn ignore 에 추가해야겠다.

6. 새로 추가, 삭제된 파일은 반드시 TortoiseSVN->ADD, Delete

속도가 느려졌다면 (효과는 모르겠음)
1. TortoiseSVN - Settings - Icon Overlatys
Exclude paths : 전체경로 (ex: D:\ )
Include paths : 원하는 경로 (ex: D:\SVN프로젝트경로)
원하는 폴더를 직접 명시해줌으로서 부분검색만 하게 하여 빠르게 할수있다.

2. TortoiseSVN - Settings - Log Caching
Enable log caching 체크해제 (로그캐싱사용)
Allow ambiguous URL 체크해제 (모호한 URL 허용)

Allow ambiguous UUIDs 체크해제 (모호한 UUID 허용)

안드로이드 디자인 개발 가이드라인 정리 (Android Design Develop Guide-line)

안드로이드 디자인 개발 가이드라인 정리해보았습니다.


1. Target SDK 값은 최신버젼으로 MIN 은 알아서.
targetSDK = 19 (>14)
하위 Support Pakage를 활용해라.

2. 런치 아이콘 - 정성껏 디자인
- 앱아이콘은 자기 어플에 맞게 디자인
- 안드로이드의 고유아이콘은 유지하는게 좋다.
- Information Design 앱 데이터, 수행, 인포메이션 - 자기에 맞게
- Interaction Design 은 안드로이드와 맞게 (일관된 사용자경험)
- Visual Design 은 중간쯤.

3. 더블터치 드래그

4. FullScreen - Lean Back, Immersive

5. Action Bar 를 사용해달라.- App icon
- View control
- Action buttons
- Action overflow
커스텀 Action Bar 는 사용자제. 서포트라이브러리 사용.
v7 appCompatLibrary (v2.1)

6. Up & Back 차이
Up - v7 appCompatLibrary 에서 지원해줌
뒤로가기 버튼 누르면 팝업을 나왔을경우
다시한번 뒤로가기 버튼을 누르면 팝업이 닫아져야한다.

7. App Structure탭(Tabs) - 상단에 위치 (표준API 사용) - 알아서 처리해주는 부분이 많으니.
네비게이션드로우  (Navigation Drawer) - (표준라이브러리를 사용해 줘라)
상단 액션바 영역을 움직이면안된다. 고정

8. 확인받기와 알려주기
- 다이얼로그, 토스트 - 언제어떻게사용해야하나.
1) 사용자에게 얼마나 영향을 주는 동작인가? -현금결제,데이터삭제 등
2) 사용자가 실수할 가능성이 큰동작인가?
- 네비게이션 백버튼 실수로 여러번, 액션버튼이 작을경우
3) 동작의 결과를 쉽게 되돌릴 수 있는가? - 실수로종료할경우 그전 상태를 저장해둔다.
4) 동작에 대한 충분한 사용자 피드백이 있는가?
* 다이얼로그와 토스트가 필요없는 것이 최선!

9. 앱종료시에는?
- 바로종료되는것이 베스트이긴하다.

10. Notification 사용
- 다양한 기능을 적극적으로 활용하라
- 사용자를 귀찮게하지말아라.
- 비슷한 종류의 알림은 하나로 모으기 (알림이 있다면, 추가적인 내용을 업데이트 하면된다.)
(GMail)
- 아이콘 가이드라인, 24dp, 형태는 단순, 오직 흰색만
- 다양한 스타일을 활용 (서포트패키지)- 이미지등

11. Responsive Design
- 다양한 디바이스에 맞춰서 디자인.
- 타블렛지원을 안하면 타블렛앱쪽 순위에 노출되지 않는다.
- Dp ( 1px = 160dpi ) 을 활용하라

12. Resource Qualifier 의 활용 - 다양한 셋의 리소스를 셋팅해놔라.
- smallestWidth, Available width, Screen pixel density (dpi)

13. 숫자는 따로 관리
- res/values/dimens.xml - <dimen name= "Page_margin">16dp</dimen>
- res/values-sw720dp/dimens.xml - <dimen name= "Page_margin">32dp</dimen>

14. 48 DP / 16sp ( 리스트바 크기 )

15. 고해상도 아이콘 다양하게 준비


16. Best Practice - Fancy 앱 참고




2014년 6월 23일 월요일

Unity Ios build - Disable Append Only Replace

유니티 IOS 빌드시 Append 버튼이 빌드할때마다 항상 비활성화 일 경우가 있다.

Replace 만 활성되는... ( 내 경우엔 SVN ( subversion ) 사용시 ),

극단적으로는 Plugins - ios Folder - all delete 하면 다시 Append 버튼이 활성화된다.

보면.. unity svn 사용시 보이게 해야하는 meta 파일이 문제인거 같다. (추측).

Plugins folder 는 되도록 svn ignore 에 추가해야겠다.

cocos2d-x Eclipse " libc Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1) " Error

개발환경 : Cocos2D-X 2.0.4 버젼, Visual Studio 2012

Cocos2D-X 를 안드로이드 버젼 이클립스로 빌드후 실행 할때

libc Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)

에러로 실행이 안될때가있다. (내 경우엔 안드로이드 중국 Unalis SDK 외부 라이브러리 적용 중 발생되었다.)

이 에러는 Cocos2D-X 의 Cpp 관련 에러인데 Cocos2D-X 2.2 이하 버젼 에서의 버그라 한다.

아래와 같이 Cocos2D-X 소스를 수정에 주면된다.

cocos2dx\platform\android\jni\Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp // 를 찾아서


JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnPause() { // 이부분에


// 아래와 같이 추가해준다.
if (CCDirector::sharedDirector()->getOpenGLView()) //OpenGLView 가 Null 이 아니라면
{
CCApplication::sharedApplication()->applicationDidEnterBackground();



수정해준뒤 build_native.sh 빌드해주면된다.

NGUI Button 버튼 만들기 (NGUI 3.6.x 기준, Unity3d 4.5.0f1, 4.x)

개발환경 : Unity3D 4.5.0f6, NGUI 3.6.3


대부분 개발자들이 2.x 대의 방법으로 쓰고 있어서 정리해봅니다.

기존 방법인 UIButtonMessage 를 Component 에 추가해서 쓰게되면




This is a legacy component. Consider using the Event Trigger instead.
"예전 컴퍼넌트니.. EventTrigger 를 써라." 라는 경고..

대부분 잘 돌아가니 대충 이걸 쓰는데요.

나중을 위해서라도 최신 방법을 쓰는게 좋겠지요.


//-----------------------------------------------------------------

UIEventTrigger 를 쓰기전에

3.X 부터 제공되고 있는 간단한 버튼메세지 추가방법을 보면



OnClick 이라는 것이 추가되었습니다.

적용하는 방법은



그림과같이
Notify -- 메세지가 전달될 GameObject
Method -- GameObject에 추가한 컴퍼넌트 의 함수 선택
Arg 0 -- 버튼자신의 게임오브젝트 (Arg 0 아래<GameObject>는 전달될 객체)
가 되겠습니다.

전반적구조

Hierarchy


StartButton 게임 오브젝트
ButtonManager 게임 오브젝트



ButtonComponet.cs 내용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using UnityEngine;
using System.Collections;
public class ButtonComponent : MonoBehaviour {
    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }
    public void ButtonMessage(GameObject _g)
    {
        Debug.Log(_g.name);
        switch (_g.name)
        {
            case "StartButton":
                Debug.Log("Start!!");
                break;
        }
    }
}

//---------------------------------------------------------------------

이걸 응용하여 이번에 추가된 UIEventTrigger 를 써보면

StartButton 게임 오브젝트에 Event Trigger 컴퍼넌트 추가



추가해보면 방금해본 OnClick 과 다를게 없습니다.
똑같이 게임오브젝트와 함수를 연결해주면 됩니다.


이를 이용해 오버, 아웃, 누르고있기, 떼기, 드래그 등등을 구현할 수 있습니다.



클릭 기능만 필요하다면 굳이  UIEventTrigger 를 추가해서 사용말고

UIButton - On Click 에 간단히 추가해서 사용하면 되겠지요.