'▼ 게임개발 ▼ > 게임개발 - 프로그래밍' 카테고리의 다른 글
□ 정규표현식 테스트 페이지 링크 (0) | 2015.01.08 |
---|---|
□ Big-O (0) | 2014.12.09 |
□ 포물선 운동 (0) | 2014.11.24 |
■ 곱셈과 나눗셈 연산속도 (0) | 2014.05.07 |
■ C# - DateTimePicker CustomFormat (0) | 2013.12.19 |
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
□ 정규표현식 테스트 페이지 링크 (0) | 2015.01.08 |
---|---|
□ Big-O (0) | 2014.12.09 |
□ 포물선 운동 (0) | 2014.11.24 |
■ 곱셈과 나눗셈 연산속도 (0) | 2014.05.07 |
■ C# - DateTimePicker CustomFormat (0) | 2013.12.19 |
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
테스트 사이트
regular expression
. : 임의의 문자로 공백도 인정됨
* : 특정형태가 0번이상 반복
+ : 특정형태가 1번이상 반복
? : 특정형태가 1번이하 반복
[] : 한문자의 범위를 지정
- : 한문자의 범위를 지정할때 시작과 끝을 분리
^ : 문자열의 시작
$ : 문자열의 끝
_ : 쉼표 공백 $ ^
regular expression 예제
a.b : aab,acb,a b,a+b
a* : 없음 ,a,aa,aaa,aaaa
(ab)* : 없음,ab,abab,ababab,,
.* : 없음, 어떤 문자열이라도 상관없음
a?bb : bb,abb
[a-z]b : ab,bb,cb,,,zb
as-path에 regular 적용 예
^100$ : 100
100 : 100.100 200.100 200 300
^100 : 100, 100 200, 100 200 300
^100.* : ^100
^$ : 자신의 AS에서 발생시킨것
_100_ : ^100$,100,^100,100$ 를 모두포함
regular expression
. : 임의의 문자로 공백도 인정됨
* : 특정형태가 0번이상 반복
+ : 특정형태가 1번이상 반복
? : 특정형태가 1번이하 반복
[] : 한문자의 범위를 지정
- : 한문자의 범위를 지정할때 시작과 끝을 분리
^ : 문자열의 시작
$ : 문자열의 끝
_ : 쉼표 공백 $ ^
regular expression 예제
a.b : aab,acb,a b,a+b
a* : 없음 ,a,aa,aaa,aaaa
(ab)* : 없음,ab,abab,ababab,,
.* : 없음, 어떤 문자열이라도 상관없음
a?bb : bb,abb
[a-z]b : ab,bb,cb,,,zb
as-path에 regular 적용 예
^100$ : 100
100 : 100.100 200.100 200 300
^100 : 100, 100 200, 100 200 300
^100.* : ^100
^$ : 자신의 AS에서 발생시킨것
_100_ : ^100$,100,^100,100$ 를 모두포함
route-server>show ip bgp regexp _701_
BGP table version is 6457879, local router ID is 12.129.193.235
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* 4.0.0.0 199.106.200.1 0 17233 701 3356 i
*> 4.17.225.0/24 199.106.200.1 0 17233 701 11853 64
6 6496 6496 6496 i
*> 4.17.226.0/23 199.106.200.1 0 17233 701 11853 64
6 6496 6496 6496 i
*> 4.17.251.0/24 199.106.200.1 0 17233 701 11853 64
□ 링크 - 해쉬테이블 / 해쉬맵 / 해쉬셋 (+ 쿼터니온) (0) | 2015.03.02 |
---|---|
□ Big-O (0) | 2014.12.09 |
□ 포물선 운동 (0) | 2014.11.24 |
■ 곱셈과 나눗셈 연산속도 (0) | 2014.05.07 |
■ C# - DateTimePicker CustomFormat (0) | 2013.12.19 |
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
binary search tree is a sorted data structure
binary search ree is already sorted.
there will be no need to waste memory or processing time sorting records
Array
Insert = O(1) +(heap allocation overhead)
Search = O(n)
Delete = O(n)
Sorted Array
Insert = O(n)
Search = O(log n)
Delete = O(n)
Linked List
Insert = O(1)
Search = O(n)
Delete = O(n)/O(1)
Sorted List
Insert = O(n)
Search = O(n)
Delete = O(n)/O(1)
Balanced Binary Tree
Insert = O(logN)
Search = O(logN)
Delete = O(logN)
Hash Table (BST) - Using a 'good' hash function
Insert = O(1)
Search = O(1)
Delete = O(1)
http://www.csee.umbc.edu/courses/undergraduate/202/spring07/Lectures/ChangSynopses/modules/m33-big-O/slides.php?print
For functions f(n) and g(n), we say that "f(n) is Big-O of g(n)" if
There exists a constant c > 0 there exists a constant n0 such that
for all n ≥ n0, 0 ≤ f(n) ≤ c * g(n)
We write f(n) = O(g(n)), but the "=" is not the usual meaning.
The intention is to allow us to say
Technically, 101,000,000*n is O(n), but programs with that running time is still very slow.
Asymptotic running times for n items:
Insert | Search | Delete* | |
---|---|---|---|
Arrays | O(1) | O(n) | O(n) |
Sorted Arrays | O(n) | O(log n) | O(n) |
Linked Lists | O(1) | O(n) | O(n)/O(1) |
Sorted Linked Lists | O(n) | O(n) | O(n)/O(1) |
*Running time for deletion from a linked list depends on whether you already have a pointer for the node to be deleted.
Suppose we have n items inserted and do n searches:
If we have all n items before hand, we can sort them all at the same time in O(n log n), plus n * O(log n) for n searches for O(n log n) time total.
If not, we need binary search trees.
For each node in a binary search tree, its left child (if any) holds a smaller number and its right child (if any) holds a larger number.
There are several schemes for maintaining a O(log n) height for a binary search tree n nodes: AVL trees, Red-Black trees, B-trees, 2-3 trees, ...
For such trees:
Using a "good" hash function:
In the worst case, all items have the same hash index and a closed hash table degenerates into an unsorted array.
There are provably good hash functions.
□ 링크 - 해쉬테이블 / 해쉬맵 / 해쉬셋 (+ 쿼터니온) (0) | 2015.03.02 |
---|---|
□ 정규표현식 테스트 페이지 링크 (0) | 2015.01.08 |
□ 포물선 운동 (0) | 2014.11.24 |
■ 곱셈과 나눗셈 연산속도 (0) | 2014.05.07 |
■ C# - DateTimePicker CustomFormat (0) | 2013.12.19 |
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
□ 링크 - 해쉬테이블 / 해쉬맵 / 해쉬셋 (+ 쿼터니온) (0) | 2015.03.02 |
---|---|
□ 정규표현식 테스트 페이지 링크 (0) | 2015.01.08 |
□ Big-O (0) | 2014.12.09 |
■ 곱셈과 나눗셈 연산속도 (0) | 2014.05.07 |
■ C# - DateTimePicker CustomFormat (0) | 2013.12.19 |
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
//■Benchmark
//long start = Time.time;
float n = 0;
for (int i = 0; i < 1000000; i++)
{
n = (Time.deltaTime + Time.smoothDeltaTime + Time.fixedDeltaTime) * 0.333f;
}
xLog.i(CPlayer.me,"term1:" + n);
n = 0;
for (int i = 0; i < 1000000; i++)
{
n = (Time.deltaTime + Time.smoothDeltaTime + Time.fixedDeltaTime) / 3f;
}
xLog.i(CPlayer.me, "term2:" + n);
□ 정규표현식 테스트 페이지 링크 (0) | 2015.01.08 |
---|---|
□ Big-O (0) | 2014.12.09 |
□ 포물선 운동 (0) | 2014.11.24 |
■ C# - DateTimePicker CustomFormat (0) | 2013.12.19 |
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
□ Regular expression (0) | 2013.10.17 |
년/월/일' 현태의 날짜 정보를 핸들링 할 수 있도록 제공하는 달력 모양의 UI 컨트롤
예를 들면 매년 28.29,30.31 이런 불편함을 해소하기 위해서 DateTimePcker(=DTP) 컨트롤을 사용한다.
주요속성 | |
Format | 입력 받을 정보의 종류와 형식을 결정 |
MinDate | |
MaxDate | 입력받을 날짜의 범위 |
Value | 사용자가 선택한 날짜와 시간 |
ShowCheckBox | 날짜 옆에 체크박스를 붙여서 날짜 자체의 유효성 검사 |
ShowUpDown | 달력을 표시하지 않고 직접 값을 증감시킴 |
DropDownAlign | DropDOwn되는 달력의 정렬방법을 지정 |
dateTimePicker3.CustomFormat = "MMMM dd,yyyy-dddd";
dateTimePicker3.Format = DateTimePickerFormat.Custom;
TxtResult.AppendText("Custom format 출력 결과");
TxtResult.AppendText(dateTimePicker3.Text);
d | 한 자리 또는 두 자리 날짜입니다. |
dd | 두 자리 날짜입니다. 한 자리로 된 날짜 값 앞에는 0이 옵니다. |
ddd | 세 문자로 된 요일 약어입니다. |
dddd | 요일의 전체 이름입니다. |
h | 12시간 형식의 한 자리 또는 두 자리 시간입니다. |
hh | 12시간 형식의 두 자리 시간입니다. 한 자리로 된 값 앞에는 0이 옵니다. |
H | 24시간 형식의 한 자리 또는 두 자리 시간입니다. |
HH | 24시간 형식의 두 자리 시간입니다. 한 자리로 된 값 앞에는 0이 옵니다. |
m | 한 자리 또는 두 자리 분입니다. |
mm | 두 자리 분입니다. 한 자리로 된 값 앞에는 0이 옵니다. |
M | 달을 나타내는 한 자리 또는 두 자리 숫자입니다. |
MM | 달을 나타내는 두 자리 숫자입니다. 한 자리로 된 값 앞에는 0이 옵니다. |
MMM | 세 문자로 된 달의 약어입니다. |
MMMM | 달의 전체 이름입니다. |
s | 한 자리 또는 두 자리 초입니다. |
ss | 두 자리 초입니다. 한 자리로 된 값 앞에는 0이 옵니다. |
t | 한 문자로 된 A.M./P.M. 약어이며, A.M.은 "A"로 표시됩니다. |
tt | 두 문자로 된 A.M./P.M. 약어이며, A.M.은 "AM"으로 표시됩니다. |
y | 한 자리 연도이며, 2001은 "1"로 표시됩니다. |
yy | 연도의 마지막 두 자리이며, 2001은 "01"로 표시됩니다. |
yyyy | 완전한 형태의 연도이며, 2001은 "2001"로 표시됩니다. |
□ Big-O (0) | 2014.12.09 |
---|---|
□ 포물선 운동 (0) | 2014.11.24 |
■ 곱셈과 나눗셈 연산속도 (0) | 2014.05.07 |
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
□ Regular expression (0) | 2013.10.17 |
□ 기타 가물가물 (0) | 2013.10.02 |
iOS도 인앱해킹에서 자유롭지 않습니다.
요즘 거의 모든 게임이 freemium 형태로 배포되고 있습니다.
사용자는 무료로 게임을 다운로드, 설치하여 이용할수 있고, 게임 내에서 결제를 통해 아이템 구매를 하는 방식이죠.
매출이 모두 인앱구매에서 나오기 때문에
인앱구매에 대한 해킹의 대비가 허술하면 그만큼 매출에서 손해를 보게 됩니다.
인앱구매검증시 구매결과가 담긴 영수증에 대해서 애플을 통해 한번더 조회하면 좀 더 안전한 인앱구매기능을 구현할수 있습니다.
① 사용자가 앱에서 인앱구매요청을 합니다. 앱스토어 아이디와 비밀번호를 입력하면 구매요청이 전송됩니다.
② 구매가 승인되면 애플은 해당 주문에 대한 처리결과를 보내줍니다.
대부분 이렇게 2개 단계로 인앱구매를 진행하고 승인된 주문에 대해서 해당 아이템을 게임 내에서 부여받게 됩니다.
좀 더 강화된 보안을 위해서는 전송받은 구매 결과가 유효한 결과인지, 애플서버에 한번더 조회하는 절차를 거치면 됩니다.
그리고 이 절차는 좀 더 안전하게 하기 위해 원격지의 서버를 통해 진행하는것이 좋습니다.
③ ②에서 전송받은 주문정보를 원격지의 서버로 보냅니다.
④ 원격지의 서버는 주문정보를 애플로 조회요청합니다.
이 내용은 애플 개발자 문서에도 정리되어 있습니다.
⑤ 애플로부터 조회요청한 결과를 받아 해당 주문이 유효한것으로 판정되면 원격지서버는 해당 주문에 대한 처리를 합니다. 예를 들면 해당 회원의 코인이나 아이템을 지급한다던가 하는 것들이죠.
⑥ 해당 주문처리가 모두 완료되면 원격지의 서버는 해당 사용자에게 최종 처리결과를 통보하면 됩니다.
iOS에서의 인앱방지는 위와 같은 절차로 진행하시면 됩니다.
해당 기능을 도와주는 라이브러리도 이미 나와있네요
□ 포물선 운동 (0) | 2014.11.24 |
---|---|
■ 곱셈과 나눗셈 연산속도 (0) | 2014.05.07 |
■ C# - DateTimePicker CustomFormat (0) | 2013.12.19 |
□ Regular expression (0) | 2013.10.17 |
□ 기타 가물가물 (0) | 2013.10.02 |
□ 동적 프로그래밍(Dynamic Programming) (0) | 2013.10.02 |
case 0: data.bonus_score=1; data.bonus_coin=1; data.start=0; data.depth=200000; break;
case 1: data.bonus_score=2; data.bonus_coin=1; data.start=200000; data.depth=240000; break;
case 2: data.bonus_score=2; data.bonus_coin=2; data.start=440000; data.depth=288000; break;
case 3: data.bonus_score=3; data.bonus_coin=2; data.start=728000; data.depth=345600; break;
case 4: data.bonus_score=3; data.bonus_coin=3; data.start=1073600; data.depth=414720; break;
──────────────────────────────
연속된 문자열에서 특정데이터 추출을 위해,
정규표현식을 사용하여, 특정 데이터를 선택.
──────────────────────────────
[replace]
insert into user_level ([level],bonus_score,bonus_coin,exp_stack,exp_section) values (\1, \2, \3, \5)
\0 은 선택된 문자열 전체.
■ 곱셈과 나눗셈 연산속도 (0) | 2014.05.07 |
---|---|
■ C# - DateTimePicker CustomFormat (0) | 2013.12.19 |
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
□ 기타 가물가물 (0) | 2013.10.02 |
□ 동적 프로그래밍(Dynamic Programming) (0) | 2013.10.02 |
□ DAO (Data Access Object) / VO (Value Object) (0) | 2013.07.19 |
오버로딩 시그니쳐 signature
Dangling pointer : 초기화 안 된 포인터 상수
■ C# - DateTimePicker CustomFormat (0) | 2013.12.19 |
---|---|
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
□ Regular expression (0) | 2013.10.17 |
□ 동적 프로그래밍(Dynamic Programming) (0) | 2013.10.02 |
□ DAO (Data Access Object) / VO (Value Object) (0) | 2013.07.19 |
Android - 바야바엔진 - 아이폰 포팅 (0) | 2013.02.27 |
동적 프로그래밍(Dynamic Programming)
하나의 대문제(Univ_Problem)는
여러개의 소문제(Sub_Problems)에 대한 결과값을 통해 해결한다.
이 때,
일부 소문제의 결과값을 도출하기 위해
다른 소문제의 결과값을 필요로 하는 경우가 생긴다.
(=중복되는 계산을 요구)
따라서, 하나의 소문제를 해결할 때마다, 결과값을 테이블에 저장하여,
중복되는 계산을 요구하는 경우, 테이블에서 해당 소문제의 결과값을
divide and conquer 기법에서는
분할 객체간에는 독립성을 가지기 때문에, 필요한 경우 합치기만 하면 된다.
dynamic programming 에서는
분할 객체(소문제)간 중복되는 계산을 요구하기도 한다.
피보나치의 경우
"Fn = F(n-1) + F(n-2), (n>=2)" 의 계산에
분할 정복 방법을 적용한다면,
F(10) = F(9) + F(8) 인데
F(9)를 구하기 위해서는 다시 F(8)을 구해야 하기 때문에
중복되는 계한을 요구한다.
동적 프로그래밍에서는
소문제의 해 [ F(8) ]를 표에 저장해 놓으므로,
F(9)의 계산에 필요한 F(8)의 값을 계산후 테이블에 저장하여,
F(10)의 계산에 필요한 F(8)의 값을 요구할 때, 테이블을 참조하여
중복된 계산을 피한다.
[출처] 동적 프로그래밍(Dynamic Programming)이란?|작성자 moonv11
□ 인앱결제 보안강화 플로우 (0) | 2013.11.19 |
---|---|
□ Regular expression (0) | 2013.10.17 |
□ 기타 가물가물 (0) | 2013.10.02 |
□ DAO (Data Access Object) / VO (Value Object) (0) | 2013.07.19 |
Android - 바야바엔진 - 아이폰 포팅 (0) | 2013.02.27 |
□ sin cos TABLE (0) | 2013.02.20 |
DAO (Data Access Object)
Data에 접속하는 객체. (DataBase/파일/메모리/네트워크 등)
어떠한 저장소에 데이터를 입력하거나 조회하거나 수정/삭제 처리 담당.
VO (Value Object)
데이터의 값(Value) 그 자체.
□ Regular expression (0) | 2013.10.17 |
---|---|
□ 기타 가물가물 (0) | 2013.10.02 |
□ 동적 프로그래밍(Dynamic Programming) (0) | 2013.10.02 |
Android - 바야바엔진 - 아이폰 포팅 (0) | 2013.02.27 |
□ sin cos TABLE (0) | 2013.02.20 |
● fopen() 함수에서 r+, w+ 모드의 차이 파일처리 (0) | 2013.01.14 |
────────────────────────────────
■[ Create a New Xcode project ]
iOS - application - OpenGL Game
Product Name : 게임이름
Organization : 아이디
Company Iden : 회사.프로젝트
->bundle : 회사.프로젝트.게임이름
데스크탑 - 프로젝트 폴더에 Create
────────────────────────────────
■[ Build ]
space -> iPhone 6.1 Simulator (Target)
Product -> Clean / Build
────────────────────────────────
■[ remove ]
AppDelegate.h ┐
AppDelegate.m │
ViewController.h ├→ move to Trash
ViewController.m │
main.h ┘
────────────────────────────────
■[ copy ] (복사시 모두체크)
□(newGroup)BayabaLib
엔진 헤더파일들
□플젝
AppDelegate.h
AppDelegate.mm
EAGLView.h
EAGLView.mm
ViewController.h
ViewController.mm
MainWindow.xib
ViewController.xib
□Suporting Files
main.m
□Frameworks
libBayabaLib.a
────────────────────────────────
■[ STL 추가 ]
플젝 선택 - Build Phases
Targets - space - Link Binary With Libraries - [ + ]
-> QuartzCore.framework [Add]
────────────────────────────────
■[ info 기본윈도우 설정 ]
Supporting Files -> 프로젝트-Info.plist -> 리스트 우클릭 Add Row
-> Main nib file base name : MainWindow
────────────────────────────────
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■ GameMain ■■
프로젝트폴더 우클릭 - [ New Files ] - CocoaTouch - ObjectiveC Class
- Class GameMain
- Subclass of NSObject
GameMain.h
GameMain.mm (m:ObjectiveC / mm:OC+C)
생성되면 프로젝트 폴더로 이동
#import "GameMain.h"
#import "BayabaLib.h"
#define
- GameInfo 는 삭제됨 (해당 멤버는 전역으로 사용가능)
- &배열
- BOOL
- Random : random();
#import <stdio.h>
int random(int num)
{ return rand()%num;
}
────────────────────────────────
[치환] 찾기
MyRand.nextInt -> [rand] -> ReplaceAll
private -> [ ] ->
System.currentTimeMillis()
timeGetTime()
────────────────────────────────
[GameMain.h]
exturn DoGame();
exturn LoadLogoData();
[ViewController.mm]
#import "GameMain.h"
SetBackGroundColor(xxxxx);
LoadLogoData();
drawFrame
{
ClearScreen();
DoGame();
}
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
임시
────────────────────────────────
[ ViewController.mm ]
1. 선언부에
Sprite loho;
2. 스프라이트 로드
SetBackGroundColor( 1.0f, 1.0f, 1.0f );
logo.LoadSprite("logo.spr");
3. onDrawFrame (1/60)
drawFrame 함수에
{
logo.PutAni(240,400,0,0, FALSE);
}
────────────────────────────────
□ 기타 가물가물 (0) | 2013.10.02 |
---|---|
□ 동적 프로그래밍(Dynamic Programming) (0) | 2013.10.02 |
□ DAO (Data Access Object) / VO (Value Object) (0) | 2013.07.19 |
□ sin cos TABLE (0) | 2013.02.20 |
● fopen() 함수에서 r+, w+ 모드의 차이 파일처리 (0) | 2013.01.14 |
● MFC - 파일저장 (0) | 2013.01.14 |
PI = 3.141592... (approximately 22/7 = 3.1428)
radians = degress x PI / 180 (deg to rad conversion)
degress = radians x 180 / PI (rad to deg conversion)
Rad | Deg | Sin | Cos | Tan | Csc | Sec | Cot | ||
---|---|---|---|---|---|---|---|---|---|
.0000 | 00 | .0000 | 1.0000 | .0000 | ----- | 1.0000 | ----- | 90 | 1.5707 |
.0175 | 01 | .0175 | .9998 | .0175 | 57.2987 | 1.0002 | 57.2900 | 89 | 1.5533 |
.0349 | 02 | .0349 | .9994 | .0349 | 28.6537 | 1.0006 | 28.6363 | 88 | 1.5359 |
.0524 | 03 | .0523 | .9986 | .0524 | 19.1073 | 1.0014 | 19.0811 | 87 | 1.5184 |
.0698 | 04 | .0698 | .9976 | .0699 | 14.3356 | 1.0024 | 14.3007 | 86 | 1.5010 |
.0873 | 05 | .0872 | .9962 | .0875 | 11.4737 | 1.0038 | 11.4301 | 85 | 1.4835 |
.1047 | 06 | .1045 | .9945 | .1051 | 9.5668 | 1.0055 | 9.5144 | 84 | 1.4661 |
.1222 | 07 | .1219 | .9925 | .1228 | 8.2055 | 1.0075 | 8.1443 | 83 | 1.4486 |
.1396 | 08 | .1392 | .9903 | .1405 | 7.1853 | 1.0098 | 7.1154 | 82 | 1.4312 |
.1571 | 09 | .1564 | .9877 | .1584 | 6.3925 | 1.0125 | 6.3138 | 81 | 1.4137 |
.1745 | 10 | .1736 | .9848 | .1763 | 5.7588 | 1.0154 | 5.6713 | 80 | 1.3953 |
.1920 | 11 | .1908 | .9816 | .1944 | 5.2408 | 1.0187 | 5.1446 | 79 | 1.3788 |
.2094 | 12 | .2079 | .9781 | .2126 | 4.8097 | 1.0223 | 4.7046 | 78 | 1.3614 |
.2269 | 13 | .2250 | .9744 | .2309 | 4.4454 | 1.0263 | 4.3315 | 77 | 1.3439 |
.2443 | 14 | .2419 | .9703 | .2493 | 4.1336 | 1.0306 | 4.0108 | 76 | 1.3265 |
.2618 | 15 | .2588 | .9659 | .2679 | 3.8637 | 1.0353 | 3.7321 | 75 | 1.3090 |
.2793 | 16 | .2756 | .9613 | .2867 | 3.6280 | 1.0403 | 3.4874 | 74 | 1.2915 |
.2967 | 17 | .2924 | .9563 | .3057 | 3.4203 | 1.0457 | 3.2709 | 73 | 1.2741 |
.3142 | 18 | .3090 | .9511 | .3249 | 3.2361 | 1.0515 | 3.0777 | 72 | 1.2566 |
.3316 | 19 | .3256 | .9455 | .3443 | 3.0716 | 1.0576 | 2.9042 | 71 | 1.2392 |
.3491 | 20 | .3420 | .9397 | .3640 | 2.9238 | 1.0642 | 2.7475 | 70 | 1.2217 |
.3665 | 21 | .3584 | .9336 | .3839 | 2.7904 | 1.0711 | 2.6051 | 69 | 1.2043 |
.3840 | 22 | .3746 | .9272 | .4040 | 2.6695 | 1.0785 | 2.4751 | 68 | 1.1868 |
.4014 | 23 | .3907 | .9205 | .4245 | 2.5593 | 1.0864 | 2.3559 | 67 | 1.1694 |
.4189 | 24 | .4067 | .9135 | .4452 | 2.4586 | 1.0946 | 2.2460 | 66 | 1.1519 |
.4363 | 25 | .4226 | .9063 | .4663 | 2.3662 | 1.1034 | 2.1445 | 65 | 1.1345 |
.4538 | 26 | .4384 | .8988 | .4877 | 2.2812 | 1.1126 | 2.0503 | 64 | 1.1170 |
.4712 | 27 | .4540 | .8910 | .5095 | 2.2027 | 1.1223 | 1.9626 | 63 | 1.0996 |
.4887 | 28 | .4695 | .8829 | .5317 | 2.1301 | 1.1326 | 1.8807 | 62 | 1.0821 |
.5061 | 29 | .4848 | .8746 | .5543 | 2.0627 | 1.1434 | 1.8040 | 61 | 1.0647 |
.5236 | 30 | .5000 | .8660 | .5774 | 2.0000 | 1.1547 | 1.7321 | 60 | 1.0472 |
.5411 | 31 | .5150 | .8572 | .6009 | 1.9416 | 1.1666 | 1.6643 | 59 | 1.0297 |
.5585 | 32 | .5299 | .8480 | .6249 | 1.8871 | 1.1792 | 1.6003 | 58 | 1.0123 |
.5760 | 33 | .5446 | .8387 | .6494 | 1.8361 | 1.1924 | 1.5399 | 57 | .9948 |
.5934 | 34 | .5592 | .8290 | .6745 | 1.7883 | 1.2062 | 1.4826 | 56 | .9774 |
.6109 | 35 | .5736 | .8192 | .7002 | 1.7434 | 1.2208 | 1.4281 | 55 | .9599 |
.6283 | 36 | .5878 | .8090 | .7265 | 1.7013 | 1.2361 | 1.3764 | 54 | .9425 |
.6458 | 37 | .6018 | .7986 | .7536 | 1.6616 | 1.2521 | 1.3270 | 53 | .9250 |
.6632 | 38 | .6157 | .7880 | .7813 | 1.6243 | 1.2690 | 1.2799 | 52 | .9076 |
.6807 | 39 | .6293 | .7771 | .8098 | 1.5890 | 1.2868 | 1.2349 | 51 | .8901 |
.6981 | 40 | .6428 | .7660 | .8391 | 1.5557 | 1.3054 | 1.1918 | 50 | .8727 |
.7156 | 41 | .6561 | .7547 | .8693 | 1.5243 | 1.3250 | 1.1504 | 49 | .8552 |
.7330 | 42 | .6691 | .7431 | .9004 | 1.4945 | 1.3456 | 1.1106 | 48 | .8378 |
.7505 | 43 | .6820 | .7314 | .9325 | 1.4663 | 1.3673 | 1.0724 | 47 | .8203 |
.7679 | 44 | .6947 | .7193 | .9657 | 1.4396 | 1.3902 | 1.0355 | 46 | .8029 |
.7854 | 45 | .7071 | .7071 | 1.0000 | 1.4142 | 1.4142 | 1.0000 | 45 | .7854 |
Cos | Sin | Cot | Sec | Csc | Tan | Deg | Rad |
angle (degrees) | 0 | 30 | 45 | 60 | 90 | 120 | 135 | 150 | 180 | 210 | 225 | 240 | 270 | 300 | 315 | 330 | 360 = 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
angle (radians) | 0 | PI/6 | PI/4 | PI/3 | PI/2 | 2/3PI | 3/4PI | 5/6PI | PI | 7/6PI | 5/4PI | 4/3PI | 3/2PI | 5/3PI | 7/4PI | 11/6PI | 2PI = 0 |
sin(a) | (0/4) | (1/4) | (2/4) | (3/4) | (4/4) | (3/4) | (2/4) | (1/4) | (0/4) | -(1/4) | -(2/4) | -(3/4) | -(4/4) | -(3/4) | -(2/4) | -(1/4) | (0/4) |
cos(a) | (4/4) | (3/4) | (2/4) | (1/4) | (0/4) | -(1/4) | -(2/4) | -(3/4) | -(4/4) | -(3/4) | -(2/4) | -(1/4) | (0/4) | (1/4) | (2/4) | (3/4) | (4/4) |
tan(a) | (0/4) | (1/3) | (2/2) | (3/1) | (4/0) | -(3/1) | -(2/2) | -(1/3) | -(0/4) | (1/3) | (2/2) | (3/1) | (4/0) | -(3/1) | -(2/2) | -(1/3) | (0/4) |
[출처] sin, cos, tan table표|작성자 넌소중햇
□ 동적 프로그래밍(Dynamic Programming) (0) | 2013.10.02 |
---|---|
□ DAO (Data Access Object) / VO (Value Object) (0) | 2013.07.19 |
Android - 바야바엔진 - 아이폰 포팅 (0) | 2013.02.27 |
● fopen() 함수에서 r+, w+ 모드의 차이 파일처리 (0) | 2013.01.14 |
● MFC - 파일저장 (0) | 2013.01.14 |
● 시간관련 C (0) | 2012.12.28 |
□ DAO (Data Access Object) / VO (Value Object) (0) | 2013.07.19 |
---|---|
Android - 바야바엔진 - 아이폰 포팅 (0) | 2013.02.27 |
□ sin cos TABLE (0) | 2013.02.20 |
● MFC - 파일저장 (0) | 2013.01.14 |
● 시간관련 C (0) | 2012.12.28 |
■ Warning 제외 선행처리 옵션 (1) | 2012.12.17 |
//파일읽기
FILE *fStream;
HANDLE fileSearch;
WIN32_FIND_DATA wfd;
fileSearch = ::FindFirstFileW(_T("다내꺼_전투일지.txt"), &wfd);
if(fileSearch == INVALID_HANDLE_VALUE) errno_t e =_tfopen_s(&fStream, _T("다내꺼_전투일지.txt"), _T("w+, ccs=UNICODE")); //없으면, 생성후 읽기쓰기
else errno_t e =_tfopen_s(&fStream, _T("다내꺼_전투일지.txt"), _T("r, ccs=UNICODE")); //있으면, 읽기만
CString resText(_T(""));
CString temp;
CStdioFile fw(fStream);
while((fw.ReadString(temp))!=NULL) //■한줄씩 전체만큼의 라인 받음.
{
temp.Delete(temp.GetLength()-1,1);
// temp = temp.Mid(temp.
resText += (temp+_T("\r\n"));
}
if(resText.IsEmpty()) resText = _T("Text Line : 45 set.\r\n")
_T("\r\n기억해야 할 것들을 적어주세요.")
_T("\r\n(입력한 내용은 자동저장 됩니다.)")
_T("\r\n\r\n\r\n")
_T("\r\n==============================================")
_T("\r\n[ U R L Link ] www.naver.com")
_T("\r\n[ 네이버 검색 ] 영화순위")
_T("\r\n")
_T("\r\n→ URL or 찾을 키워드 적고,")
_T("\r\n→ 더블클릭(셀지정),")
_T("\r\n→ 우클릭!")
_T("\r\n\r\n 검색하기, 차암~ 쉽죠잉~?")
_T("\r\n==============================================")
_T("\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t")
_T("\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t")_T("\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t")
_T("\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t")_T("\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t");
fw.Close();
this->m_ctrlEdit->SetWindowTextW(resText);
this->ShowWindow(SW_SHOW);
Android - 바야바엔진 - 아이폰 포팅 (0) | 2013.02.27 |
---|---|
□ sin cos TABLE (0) | 2013.02.20 |
● fopen() 함수에서 r+, w+ 모드의 차이 파일처리 (0) | 2013.01.14 |
● 시간관련 C (0) | 2012.12.28 |
■ Warning 제외 선행처리 옵션 (1) | 2012.12.17 |
■ SWAP (0) | 2012.10.24 |
DECLARE @cnt int
DECLARE @i int
SELECT @cnt = COUNT(*)
FROM TEST
SET @i = 0
WHILE(@i < @cnt)
BEGIN
SET @i = @i + 1
END
혹은 SELECT 의 결과를 사용하기 위해서는 커서를 사용해야 합니다
DECLARE cur CURSOR FOR
SELECT id,name
FROM TEST
OPEN cur
DECLARE @id int
DECLARE @name varchar(50)
FETCH NEXT FROM cur INTO @id, @name
WHILE(@@FETCH_STATUS = 0)
BEGIN
SELECT @id, @name
FETCH NEXT FROM cur INTO @id, @name
END
CLOSE cur
DEALLOCATE cur
다른 DB 에서 특정 데이터 가져오기 (0) | 2013.01.02 |
---|---|
ODBC 연결 (0) | 2013.01.02 |
MSSQL server 2008 - 스케줄러(자동화) (0) | 2012.12.27 |
DB 튜닝이란? (0) | 2012.12.27 |
디비 작업을 하다보면, 다른 디비의 특정 데이터만 가져올 경우가 생긴다.
그때 유용한 기능이 디비간 연결이다.
연결 방법 - 첫번째
1. 'SQL Server Management Studio' 에서 연결할 서버로 접속한다.
2. 서버 개체 > 연결된 서버 > 오른쪽 마우스 > '새 연결된 서버' 메뉴를 선택한다.
3-1. 일반탭 : '연결된 서버' 에서 접속할 서버의 IP 또는 도메인을 적고 '서버유형' 에서
SQL Server를 선택한다.
3-2. 일반탭 : '연결된서버' 에서 별칭을 적어준다. 예를들어 'TestServer' 정도. 그리고
기타 데이터 원본을 선택 후 공급자를 'SQL Native Client', 데이터 원본을 서버의 IP 또는
도메인을 적어준다. 3-1 보다는 이 방법을 추천.
4. 보안탭 : '다음 보안 컨텍스트를 사용하여 연결' 을 선택한 후, 계정을 적어준다.
5. 서버 옵션 : 권한을 어느 정도까지 허용할지 설정해 준다.
연결 방법 - 두번째
1. 쿼리 분석기를 연다.
2. 'sp_addlinkedserver' 로 서버를 추가한다.
Exec sp_addlinkedserver
@server = 'TestServer', -- 추가할 링크드 서버이름
@srvproduct = '', -- 공백처리 (OLEDB 데이터 원본의 제품 이름)
@provider = 'SQLOLEDB', -- 공급자, MSSQL
@datasrc = '111.222.33.44', -- 디비 경로
@provstr='', -- 공백처리 (연결할 특정 인스턴스의 이름)
@catalog='' -- 공백처리, 특정 디비를 쓰고 싶으면 적어준다.
Go
3. 'sp_addlinkedsrvlogin' 로 추가된 링크드 서버에 접속한다.
-- Exec sp_addlinkedsrvlogin '링크드서버명', 'False', Null, '아이디', '비밀번호'
Exec sp_addlinkedsrvlogin 'TestServer', 'False', Null, 'test', 'test4321'
이렇게 하면 첫번째와 똑같은 설정을 할 수 있다. 좀 더 자세한 설명은 SQL 도움말을 참고.
사용 방법
불러오는 형식은 '디비서버명.디비명.테이블명' 이다.
예를 들면 이런 식이다.
- Select * From [111.222.33.44].Test.dbo.T_Test
- Select * From TestServer.Test.dbo.T_Test
[출처] [MSSQL] 디비간 연결|작성자 셰프
프로시저 for/while/cursor (0) | 2013.01.02 |
---|---|
ODBC 연결 (0) | 2013.01.02 |
MSSQL server 2008 - 스케줄러(자동화) (0) | 2012.12.27 |
DB 튜닝이란? (0) | 2012.12.27 |
ODBC 연결하는 경우는 다음방법을 사용합니다.
Set db=Server.CreateObject("ADODB.Connection")
db.Open "DB명", "계정", "패스워드"
OLD DB 연결하는 경우에는 다음방법을 사용합니다.
Const DBString = "Provider=SQLOLEDB.1;Password=패스워드;Persist Security Info=True;User ID=계정;Initial Catalog=DB명;Network Address=localhost" //여기서 localhost인부분이 만약 mssql이 사용자명으로 되어있으면 사용자명으로해야접속이됨
Set db=Server.CreateObject("ADODB.Connection")
db.Open DBString
프로시저 for/while/cursor (0) | 2013.01.02 |
---|---|
다른 DB 에서 특정 데이터 가져오기 (0) | 2013.01.02 |
MSSQL server 2008 - 스케줄러(자동화) (0) | 2012.12.27 |
DB 튜닝이란? (0) | 2012.12.27 |
■ 시간관련 C ■
clock_t clock(void) 은 [ CPU time ]
반환값 밀리세컨드
time_t time(time_t *timer) 은 [ 시스템 time ]
반환값 세컨드
time_t aclock;
struct tm *CurrentTime = NULL;
time( &aclock );
CurrentTime = localtime( &aclock );
Android - 바야바엔진 - 아이폰 포팅 (0) | 2013.02.27 |
---|---|
□ sin cos TABLE (0) | 2013.02.20 |
● fopen() 함수에서 r+, w+ 모드의 차이 파일처리 (0) | 2013.01.14 |
● MFC - 파일저장 (0) | 2013.01.14 |
■ Warning 제외 선행처리 옵션 (1) | 2012.12.17 |
■ SWAP (0) | 2012.10.24 |
MSSQL server 2008 - 스케줄러(자동화)
MSSQL server 에이전트
└작업 (우클릭 새작업)
└작업명 (우클릭 속성)
----------------------------------------------
[일반]
이름 작업명
소유자(DB계정) 계정경로
범주
[단계]
ㅇ새로만들기
ㅇ삽입
ㅇ편집
ㅇ삭제
단계이름 : 사용하려는 프로시저와 목적의 중간 느낌
유형 : Transact-SQL 스크립트(T-SQL)
다음계정으로 실행 : 빈칸
데이터베이스 : 프로시저가 있는 DB명(팝업리스트)
명령 : exec update_week_to_day (프로시저 명)
[일정]
ㅇ새로만들기
ㅇ선택
ㅇ편집
ㅇ제거
이름 : week_to_day
일정유형 : 되풀이 [v]사용
되풀이 : 주별
매 : 1회 (팝업리스트)
일별빈도 : (특정 시간)
시작시간 : (특정 일 이후)
----------------------------------------------
■프로시저■ 리스트중 다음작업 반복-> [ dbo.update_week_to_day ]
USE [NewChic]
GO
/****** Object: StoredProcedure [dbo].[update_week_to_day] Script Date: 12/27/2012 18:20:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[update_week_to_day]
AS
DELETE FROM score_day
insert into score_day select iden, score, reg_date, rank from score_week
프로시저 for/while/cursor (0) | 2013.01.02 |
---|---|
다른 DB 에서 특정 데이터 가져오기 (0) | 2013.01.02 |
ODBC 연결 (0) | 2013.01.02 |
DB 튜닝이란? (0) | 2012.12.27 |
DB 튜닝이란?
튜닝은 효율적인 SQL을 만들어 SQL문의 결과가 빠르게 나오도록 하는 것을 말합니다.
(테이블 구조 변경, 인덱스 변경 등등)
프로시저 for/while/cursor (0) | 2013.01.02 |
---|---|
다른 DB 에서 특정 데이터 가져오기 (0) | 2013.01.02 |
ODBC 연결 (0) | 2013.01.02 |
MSSQL server 2008 - 스케줄러(자동화) (0) | 2012.12.27 |
Android - 바야바엔진 - 아이폰 포팅 (0) | 2013.02.27 |
---|---|
□ sin cos TABLE (0) | 2013.02.20 |
● fopen() 함수에서 r+, w+ 모드의 차이 파일처리 (0) | 2013.01.14 |
● MFC - 파일저장 (0) | 2013.01.14 |
● 시간관련 C (0) | 2012.12.28 |
■ SWAP (0) | 2012.10.24 |
// a = a+b;
// b = a-b;
// a = a-b;
// #define SWAP(a,b) a^= b^= a^= b
// int a = 3; b = 4;
// SWAP(a,b);
Android - 바야바엔진 - 아이폰 포팅 (0) | 2013.02.27 |
---|---|
□ sin cos TABLE (0) | 2013.02.20 |
● fopen() 함수에서 r+, w+ 모드의 차이 파일처리 (0) | 2013.01.14 |
● MFC - 파일저장 (0) | 2013.01.14 |
● 시간관련 C (0) | 2012.12.28 |
■ Warning 제외 선행처리 옵션 (1) | 2012.12.17 |