'주저리주저리.....'에 해당되는 글 16건

  1. 2016.08.24 TIME_WAIT 커널단에서 해결법 3
  2. 2014.07.23 no-sql 데이터모델링 1
  3. 2014.04.16 흔히 쓰이는 구성요소(DB)
  4. 2011.08.10 고전게임음악
  5. 2011.03.15 SyntaxHighlighter . . .
  6. 2010.12.23 교통사고-보험사와의 합의방법
  7. 2010.12.17 게임소스모음
  8. 2010.05.19 포인터 개념!!
  9. 2010.03.23 D3DXVECTOR3 연산 함수
  10. 2009.04.01 점프를 뛰어보자!!


tcp_fin_timeout


# echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout

 

# vi /etc/sysctl.conf

#tcp fin timeout setting

net.ipv4.tcp_fin_timeout=10



tcp_tw_recycle 


# echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

# vi /etc/sysctl.conf

#tcp tw_recycle setting

net.ipv4.tcp_tw_recycle=1



tcp_tw_reuse


# echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

# vi /etc/sysctl.conf

#tcp_tw_reuse setting

net.ipv4.tcp_tw_reuse=1

Posted by 명혀니
,

1. NoSQL Data Models


NoSQL은 이제 인지 단계에서 벗어나 사용 단계로 발전되고 있다. 이 글을 본격적으로 전개하기 전에 NoSQL에는 어떤 것이 있고, 각 제품별 특성은 어떤 것이 있는지 간단히 살펴본다. 이전에 NoSQL에 대한 별도 연재가 나갔으므로 여기서는 본문 이해 차원에서 소개한다.



 
그림 1. NoSQL 카테고리와 종류

1.1 키 밸류형 NoSQL


키 밸류(Key-Value)형은 말 그대로 키와 값의 쌍으로 관리되고 키를 사용해 값을 확인하는 기본적인 스타일의 NoSQL이다. 특징은 데이터 모델이 단순하다는 점이다. 

키 범위 처리를 요구하는 경우 적용이 안돼 Key-Value 모델의 가장 큰 약점 중 하나다. 그래서 정렬된 Key-Value(Ordered Key-Value) 모델이 이 한계를 극복해 발전시켰다.

프로그래밍 언어에서 자주 등장하는 연관 배열 대신에 이용할 수 있고, 사용자 정보와 세션 정보를 여러 응용 프로그램 간에 공유하고, RDBMS의 검색 결과를 저장하는 등 현재 RDBMS가 기 구축된 응용 프로그램에 적용하기 쉬운 것이 특징이다.




RDBMS는 행(레코드) 단위로 데이터를 취급하는 반면, 칼럼형 NoSQL은 열 단위로 데이터 액세스를 한다. 특징은 지정된 열의 데이터를 빠르게 검색할 수 있다. 열 단위로 업데이트하는 대규모 데이터 검색 시스템 또는 업데이트 작업이 많은 경우 유용하다.



1.3 도큐먼트형 NoSQL


데이터가 일정한 형식을 취할 필요가 없는 데이터베이스 즉, 스키마가 필요 없는 데이터베이스이다. RDBMS 데이터 모델링 시 테이블 정의를 필요로 하는 반면, Document방식의 NoSQL은 포맷이 서로 다른 경우에도 상관 없다. 특징은 유연한 스키마와 인덱스를 통해 자동 색인 기능이 있다는 점이다. 미리 형식을 결정할 필요가 없기 때문에 변경 빈도가 높은 데이터베이스에 적용된다.



1.1 키 밸류형 NoSQL


키 밸류(Key-Value)형은 말 그대로 키와 값의 쌍으로 관리되고 키를 사용해 값을 확인하는 기본적인 스타일의 NoSQL이다. 특징은 데이터 모델이 단순하다는 점이다. 키 범위 처리를 요구하는 경우 적용이 안돼 Key-Value 모델의 가장 큰 약점 중 하나다. 그래서 정렬된 Key-Value(Ordered Key-Value) 모델이 이 한계를 극복해 발전시켰다. 프로그래밍 언어에서 자주 등장하는 연관 배열 대신에 이용할 수 있고, 사용자 정보와 세션 정보를 여러 응용 프로그램 간에 공유하고, RDBMS의 검색 결과를 저장하는 등 현재 RDBMS가 기 구축된 응용 프로그램에 적용하기 쉬운 것이 특징이다.



1.4 그래프형 NoSQL


데이터의 관계(노드, 관계, 프로퍼티) 정보를 저장하는 데이터베이스다. 주로 소셜 네트워크 등의 관계 데이터 분석에 활용된다.



2. NoSQL 데이터 모델링의 고려사항


NoSQL의 데이터 모델링은 관계형 데이터베이스 모델링과 달리 애플리케이션에 특화된 쿼리를 가진다. 그래서 비즈니스를 먼저 정의하고 거기에 맞는 쿼리 결과를 예측한 다음 데이터 모델링을 해야 한다. 

? -관계형 데이터 모델링의 중점은 사용 가능한 데이터 구조에서 출발한다. 그래서 데이터 모델링의 관점은 ‘내가 어떤 답을 가지고 있는가?’ 이다. 

? -NoSQL 데이터 모델링은 특정 애플리케이션에서 접근하는 액세스 패턴에서 출발한다. 즉, 지원되는 쿼리 가능성 여부다. 주요 모델링의 관점은 '자신은 무엇을 알고 싶은가?'이다. 

? -관계형 데이터베이스 모델링에 비해 NoSQL 데이터 모델링 시에 데이터 구조와 알고리즘에 대한 깊은 이해가 필요로 한다.NoSQL 데이터 모델링에 있어서 데이터 중복과 비정규화는 가장 중요한 사항이다. 계층적이거나 그래프 기반의 데이터 모델링은 기존 관계형 데이터베이스로는 매우 불편하다. 이런 경우에는 그래프 NoSQL이 해답을 줄 수 있다.



3. NoSQL 데이터 모델링의 기본 원칙들


3.1 개념적인 기법들


이 장에서는 NoSQL 데이터 모델링의 기본 원리에 대해 설명한다.



3.1.1 비정규화(Denormalization)


비정규화는 NoSQL 데이터 모델링의 필수 불가결한 원칙이다. 비정규화는 쿼리를 단순화?최적화하기 위해 사용자 데이터를 특정 데이터 모델에 맞추기 위해 동일한 데이터를 여러 다큐먼트나 테이블에 복사하는 것을 말한다. 비정규화는 다음과 같은 이율배반 (trade-offs)이 존재한다.

? -쿼리 데이터 볼륨 or 쿼리당 I/O vs. 전체 데이터 볼륨 비정규화를 사용하면 특정 쿼리를 처리하기 위해 필요한 모든 데이터를 한 곳에 모아둘 수 있다. 이를 통해 입출력에 대한 부담을 줄일 수 있다. 그런데 질의마다 다른 데이터들을 조합하기 위해 여러 가지 조합으로 동일한 데이터를 접근하게 된다. 같은 데이터에 대해 다른 방법의 조합으로 조회할 수 있음을 말한다. 따라서 비정규화를 통해 각 질의에 맞는 조합으로 데이터들을 모은다면 결국 같은 데이터를 복사해야 하고 그 결과 전체 데이터 볼륨은 늘어나게 된다. 

? -처리의 복잡성 vs 전체 데이터 볼륨 정규화와 사후 쿼리로 조인을 사용한다면 쿼리 프로세서의 부담을 가중시킬 수밖에 없다. 특히 분산 시스템에서는 더더욱 복잡해진다. 대신 비정규화를 적용하면 쿼리 처리를 단순하게, 쿼리 친화적인 구조로 데이터를 저장할 수 있다. 물론 이 경우도 전체 데이터 볼륨은 증가한다. 

키 밸류 스토어 데이터베이스, 도큐먼트 데이터베이스, 빅테이블(BigTable) 유형의 데이터베이스가 이에 해당된다.



3.1.2 집계(Aggregates)


대부분의 NoSQL은 어떻게든 소프트한 스키마를 제공한다. 

? -Key-Value 저장소와 그래프 데이터베이스는 일반적으로 값에 제약을 갖지 않기 때문에 값은 임의의 형식을 포함할 수 있다. 또 하나의 비즈니스 엔터티를 위해 복합 키를 사용해 약간의 레코드를 바UserID_email, UserID_messages 등의 복합 키를 가진 항목 집합으로 모델링할 수 있다. 만약 사용자가 전자메일 및 메시지를 갖고 있지 않으면 해당 항목은 기록되지 않는다. ? 

-BigTable 모델은 칼럼 패밀리 안에 다양한 칼럼 집합과 각각의 셀 버전 변수 같은 소프트 스키마를 지원한다. ? 

-도큐먼트 데이터베이스는 기본적으로 스키마리스이지만, 일부 제품은 사용자 정의 스키마를 사용해 입력 데이터의 유효성을 검증한다. 

소프트 스키마는 복잡한 내부 구조(중첩된 엔티티)의 엔티티 클래스를 형성할 수 있고, 특정 엔터티의 구조를 변경할 수 있다. 이 기능은 두 개의 큰 특징을 제공한다. 

? -엔티티의 중첩을 통해 one-to-many 관계를 최소화해 결과적으로 조인을 줄일 수 있다. ? 

-하나의 도큐먼트 집합또는 테이블을 사용해 잡다한 비즈니스 엔터티의 모델링과 비즈니스 엔티티 사이의 ’기술적인’ 차이를 희석시킬 수 있다. 

이러한 특징을 보여주는 것이 <그림 2>이다. 이 그림은 e커머스 비즈니스 도메인에서 제품 엔티티 모델링을 보여준다. 우선 모든 제품은 ID, Price, Description을 갖고 있고, 제품의 유형마다 다른 속성을 가질 수 있다. 예를 들어 Book의 Author, Jeans의 Length와 같이 다른 속성을 가질 수 있다. 이러한 속성 중 일부는 Music Album의 Tracks와 같이 one-to-many 또는 many-to-many의 특성을 갖는다. 그리고 어떤 엔티티는 고정된 유형으로 모델링 할 수 없다. 예를 들어, Jeans 속성은 브랜드와 특정 제조자가 모두 다르다. 이런 문제는 관계형 정규화 데이터 모델을 통해 해결할 수 있지만, 이 해결 방법은 현명하지 않다. 소프트 스키마를 통해 모든 종류의 제품과 그 속성들을 모델링해 단일 군집화(product) 기법을 사용할 수 있다.



 
그림 2. Entity Aggregation

비정규화는 업데이트의 성능과 일관성에 큰 영향을 미친다. 따라서 업데이트 흐름에 특별한 주의가 필요하다. 키 밸류 스토어, 도큐먼트 데이터베이스, 빅테이블 계열의 데이터베이스가 이에 해당된다. 다.



3.1.3 애플리케이션 사이드 조인(Application Side Join)


NoSQL 솔루션은 조인이 거의 지원하지 않는다. NoSQL의 질의지향의 특성으로 인해 조인은 쿼리 실행시간에 처리되는 관계 모델링과 달리 설계시에 처리된다. 쿼리를 실행할 때 조인은 항상 성능 저하를 가져오지만 많은 경우 비정규화 및 집계(군집화), 예를 들어 중첩된 엔터티를 사용해 이 문제를 해결 할 수 있다. 물론 조인이 불가피할 경우 애플리케이션에서 처리해야 한다. 주요 사례는 다음과 같다.



 
그림 3. Join 사례

? -Many-to-Many 관계는 보통 링크에 의해 모델링되고 조인이 필요하다. ?

-집계(Aggregates) 엔티티 내부가 자주 수정되는 경우 적용할 수 없다. 일반적으로 뭔가 일어났다는 것에 대해 레코드로 유지하는 것이 바람직하고, 값을 변경하지 않고 쿼리 실행 시에 조인하는 것이 낫다. 예를 들어 메시징 시스템은 Message 요소를 중첩해 User 엔티티로 모델링할 수 있다. 그러나 메시지가 자주 추가된다면, Message를 별도의 엔티티로 취급하고 쿼리할 때 조인하는 게 바람직하다. 

키 밸류 스토어, 도큐먼트 데이터베이스, 빅테이블 계열의 데이터베이스, 그래프 데이터베이스가 이에 해당된다.



3.2 일반 모델링 기법들


이 장에서는 다양한 NoSQL 구현에 적용할 수 있는 일반적인 모델링 기법에 대해 알아 본다.



3.2.1 원자 집계(Atomic Aggregate)


전부는 아니지만, 제한적으로나마 NoSQL 솔루션은 트랜잭션을 지원한다. 분산 잠금 또는 application-managed MVCC를 사용해 트랜잭션을 보장하지만, ACID 특성의 일부를 보장하기 위해 집계 기법을 사용해 데이터를 모델링하는 것이 일반적이다. MVCC 기법은 하나의 레코드에 대해 변경이 발생할 경우 그 레코드의 원래 버전은 그대로 유지한 채 새로운 버전을 만들어 그 새로운 버전에 대해 변경을 수행함으로써, 비록 한 트랜잭션이 동일 레코드에 대해 연산을 수행하고 있더라도 그 레코드를 검색하는 다른 트랜잭션에게는 영향을 미치지 않도록 하는 동시성 제어 기법이다. 강력한 트랜잭션 메커니즘은 관계형 데이터베이스의 필수 부분인 이유는 정규화된 데이터는 일반적으로 여러 부분의 업데이트가 필요하기 때문이다. 한편 집계(Aggregate)에서는 하나의 비즈니스 엔터티를 하나의 문서, 행 또는 key-value 쌍으로 저장하고 자동으로 업데이트할 수 있다.



 
그림 4. Atomic Aggregates

물론 데이터 모델링 기법으로 원자 집계(Atomic Aggregates)는 완벽한 트랜잭션 솔루션은 아니지만, 만약 저장소가 어느 정도의 일관성 보장하도록 원자성, 락, test-and-set 명령 도구를 제공하는 경우 Atomic Aggregate를 적용할 수 있다. 키 밸류 스토어, 도큐먼트 데이터베이스, 빅테이블 계열의 데이터베이스가 이에 해당된다.



3.2.2 열거 가능한 키(Enumerable Keys)


아마 순서가 지정되지 않은 키 밸류 데이터 모델의 가장 큰 장점은 단순히 키를 해싱해 여러 서버에 파티션 할 수 있다는 것이다. 정렬은 복잡해지겠지만, 스토리지가 이 기능을 제공하지 않더라도 애플리케이션에서 정렬된 키를 이용할 수 있다. 예를 들어 전자메일 메시지 모델링을 생각해 보자. 

? -일부 NoSQL 저장소는 순차적인 ID를 생성할 수 있는 원자 카운터를 제공한다. 이 경우 userID_messageID 복합 키로 저장할 수 있다. 만일 최신 message ID를 알고 있으면, 그 이전 메시지를 아는 것도 가능하다. 또한 주어진 어떤 message ID에 대해서도 전후의 메시지를 알 수 있다. 

? -메시지는 예를 들어 일별 버킷 등의 버킷으로 그룹화할 수 있다. 이는 특정 날짜나 현재 날짜로 앞뒤로 시작하는 메일 박스의 메시지들을 검색할 수 있다. 

키 밸류 스토어 데이터베이가 이에 해당한다.



3.2.3 차원 축소(Dimensionality Reduction)


차원 축소는 다차원 데이터를 키 밸류 모델로, 혹은 다른 비 다차원 모델로 매핑하는 기법이다. 전통적인 지리 정보 시스템은 인덱스를 Quadtree 또는 R-Tree의 변형된 형태를 사용한다. 이러한 데이터 구조는 in-place 업데이트를 해야 하는데 데이터 볼륨이 큰 경우에는 조작에 비용이 많이 든다. 대체 방법은 2D 구조를 탐색하고 일반 목록으로 평평하게 만들어서 엔트리 목록으로 구조화하는 방법이 있다. 이 기술의 잘 알려진 예는 Geohash이다. Geohash는 2D 공간을 채우기 위해 Z-like 검색을 사용하고 각각의 이동하는 방향에 따라 0 또는 1로 인코딩된다. 위도와 경도 비트는 이동할 때마다 교대로 이동한다. 이 인코딩 프로세스는 다음 그림과 같이 표시되고 검정과 빨강의 각 비트의 경도와 위도를 나타낸다.



 
그림 5. Geohash Index

Geohash 중요한 기능은 그림에서 볼 수 있듯이 bit-wise code proximity 기법을 사용해 영역의 거리를 측정하는 능력이 있다는 점이다. Geohash 인코딩은 평평한 데이터 모델을 사용해 공간 관계 정보를 가진 정렬된 key value처럼 지리 정보를 저장할 수 있다. 키 밸류 스토어, 도큐먼트 데이터베이스, 빅테이블 계열의 데이터베이스가 이에 해당된다.



3.2.4 인덱스 테이블(Index Table)


인덱스 테이블은 내부적으로 인덱싱을 지원하지 않는 저장소에 인덱싱 기술을 활용할 수 있도록 해주는 직관적인 기법이다. 그런 저장소의 가장 중요한 클래스는 빅테이블(BigTable)형 데이터베이스이다.

이 아이디어는 액세스 패턴에 따라 키의 특별한 테이블을 만들고 유지하는 것이다. 예를 들어 user ID로 접근하는 user account가 저장되는 마스터 테이블이 있다고 하자. 특정 도시에서 모든 사용자를 검색하는 쿼리는 city가 키인 추가 테이블을 사용해야 지원할 수 있게 된다.



 
그림 6. Index Table 예제

인덱스 테이블은 마스터 테이블의 개별 업데이트 및 배치 모드마다 업데이트할 수 있다. 어쨋든 이러한 방법은 추가적인 성능 저하 및 일관성 문제를 초래한다. 인덱스 테이블은 관계형 데이터베이스의 MView와 비슷하다고 생각될 수도 있다. 

MView는 어떤 결과를 뽑아내는 쿼리가 빈번히 사용될 경우, Query 실행 시간의 수행속도 향상을 위해 여러 가지의 Aggregate View를 두어, 미리 비용이 많이 드는 조인이나 Aggregate Operation을 처리해야 하는 SQL을 위해, 데이터베이스의 한 테이블로 저장하며, 그 테이블을 조회하도록 하는 것이다. 예를 들어 대용량의 데이터를 SUM, MIN, MAX, AVG, COUNT(*)이런 명령어를 사용해 자주 조회하는 Query를 수행 속도를 향상을 위해 Query의 결과만큼의 새로운 테이블을 생성해 놓는 벙법이다. Materialized View와 일반 View의 차이점은 MView의 결과값은 물리적으로 존재하는 것이고, 일반 View의 결과값은 물리적으로 존재하지 않는다. 그리고 MView는 MView를 생성할 때의 Query로 물리적으로 이미 데이터가 생성돼 있기 때문에 조회 속도가 빠르다. 하지만 View는 단지 쿼리정보가 딕셔너리에 저장돼 있고 사용될 때 그 SQL이 다시 실행되기 때문에 MView보다 느리다. MView로 생성된 결과값이 일반 View로 조회하는 Data의 결과값보다 훨씬 적은 Row를 조회하게 된다. 

빅테이블 계열 테이터베이스가 이에 해당된다.



3.2.5 복합 키 인덱스(Composite Key Index)


복합 키는 매우 일반적인 기법이지만, 정렬된 키를 사용할 때 매우 유용하다. 보조 정렬을 결합한 복합 키로 위의 차원 축소 기법과 근본적으로 유사한 다차원 인덱스를 만들 수 있다.

한 예로서 각 레코드가 사용자 통계인 레코드 집합을 생각해 보자. 만약 사용자 출신지 통계를 집계할 수 있다면, 그 저장소가 부분 키워드 검색에서 (BigTable-style 시스템처럼) 키 범위 선택을 지원하는 경우, (State : City : UserID) 형식의 키를 사용하여 특정 국가 또는 도시의 레코드를 반복 조회할 수 있다.



 
그림 7. 복합키 인텍스

빅테이블 계열 데이터베이스가 이에 해당된다.



3.2.6 복합 키를 활용한 집계(Aggregation with Composite Keys)


복합 키는 인덱싱뿐만 아니라 다른 유형의 그룹화에도 사용된다. 예로 인터넷 사용자와 그들이 어떤 사이트에서 방문했는지를 아는 방문 통계 정보(click stream)를 가진 엄청난 양의 로그 레코드의 배열이 있다. 목표는 각 사이트의 유니크 가입자 수다. 다음 SQL 쿼리와 비슷하다.



 

이 형태는 UserID를 프리픽스로 해 복합 키를 사용해 다음과 같이 모델화할 수 있다.



 
그림 8. 복합키를 사용한 유니크 사용자 카운팅

이 방법은 모든 레코드에 각 사용자 정보가 함께 저장되기 때문에 해시 테이블이나 다른 방법들을 사용해 사이트의 중복정보를 삭제한 뒤 메모리에 적재한다. 다른 대안은 한 사용자당 엔트리를 갖고 이벤트 도달 함께 site를 엔트리에 추가해 나가는 것이다. 그럼에도 불구하고 일반적으로 구현 단계 엔트리 삽입보다 엔트리 수정이 비효율적이다. Ordered Key-Value Stores, 빅테이블 계열 데이터베이스가 이에 해당된다.



3.2.7 역 검색- 직접 집계(Inverted Search - Direct Aggregation)


이 기술은 데이터 모델링보다는 데이터 프로세싱 패턴이다. 그럼에도 불구하고 데이터 모델 또한 이 패턴에 영향을 받는다. 이 기술의 주요 아이디어는 기준에 맞는 데이터를 찾는 데 인덱스를 사용하는 것이지만, 독자적인 표시나 전체 검색을 사용해 데이터를 집계한다. 한 예로서 인터넷 사용자와 그들이 어떤 사이트에서 방문했는지에 대한 엄청난 정보의 로그 레코드가 있다고 하자. 각 레코드는 user ID, 사용자가 속한 카테고리(Men, Women, Bloggers 등), 출신도시, 방문한 사이트의 정보를 갖는다. 주요 목표는 청중들 속에 발견되는 각 카테고리의 유니크 사용자 관점에서 몇 가지 기준(사이트, 도시 등)에 도달하는 청중들을 얻는 것이다(즉 기준을 만족하는 유저의 집합).

{Category -> user IDs]} 또는 {Site -> user IDs]} 같은 역 인덱스를 이용해 기준을 만족하는 사용자의 검색을 효과적으로 하는 것은 분명하다. 이러한 인덱스를 이용해 해당 사용자 ID를 교차 또는 통합(이것은 user IDs가 정렬된 목록 또는 비트 집합으로 저장되는 경우 효과적으로 실행 가능하다)할 수 있고 청중들 정보를 얻을 수도 있다. 그러나 청중을 뽑는 방식은 다음 집계 쿼리와 비슷하다.



 

이 카테고리 범위가 크다면 역 인덱스 사용은 비효율적으로 처리된다. 이를 해결하기 위해 {UserID -> Categories]} 형식의 직접 인덱스를 작성해야 최종 보고서를 작성할 수 있다. 이 스키마는 다음 그림과 같다.



 
그림 9. 직접/역인덱스를 사용해 유니크 사용자 카운팅

마지막으로 주의할 것은 청중의 사용자 ID를 위한 각 레코드의 무작위 검색은 비효율적일 수 있다. 누군가가 배치 쿼리 처리의 영향으로 이 문제를 놓고 고심하게 될지도 모른다. 이것은 여러 사용자 집합을(다른 기준) 사전에 계산될 수 있음을 의미한다. 그때 청중의 모든 배치 보고서는 직접 또는 역 인덱스의 풀 스캔 계산이 가능하다. 키 밸류 스토어, 도큐먼트 데이터베이스, 빅테이블 계열의 데이터베이스가 이에 해당된다.



3.3 계층 모델링 기법들


이 장은 계층형으로 분석하는 모델링 기법에 대해 논의한다.



3.3.1 트리 집계(Tree Aggregation)


트리나 비정규화의 힘을 빌린 모든 그래프는 단일 레코드와 도큐먼트로 모델링될 수 있다. 

? -이 기술은 트리가 한 번에 접근하는 경우에 효과적이다. 예를 들어, 블로그 댓글 트리를 가져와 게시물과 함께 표시하는 경우를 들 수 있다. 

? -엔트리의 검색과 임의 액세스는 문제가 될 수 있다. 

? -업데이트는 독립 노드들과 비교해 대부분의 NoSQL 구현물들 중에서 가장 비효율적이다.



 
그림 10. 트리 집계

키 밸류 스토어, 도큐먼트 데이터베이스가 이에 해당된다.



3.3.2 인접리스트(Adjacency Lists)


인접 리스트는 그래프 모델링의 직선적인 방법이다. 각 노드는 자손 또는 선조를 가리키는 배열을 포함하는 별도의 레코드로 모델링된다. 이것은 노드를 부모 또는 자식의 식별자로 검색할 수도 있고, 물론 쿼리마다 한 홉씩 그래프를 지나갈 수도 있다. 그러나 이 방법은 일반적으로 주어진 노드의 모든 하위 트리를 깊이 우선 탐색과 너비 우선 탐색으로 검색하는 데에는 비효율적이다.

키 밸류 스토어, 도큐먼트 데이터베이스가 이에 해당된다.



3.3.3 실체 경로(Materialized Paths)


실체 경로는 트리와 비슷한 구조로 재귀적으로 순회를 방지하는 데 도움이 되는 기술이다. 이 기술은 비정규화의 일종이라고 생각할 수 있다. 이 아이디어는 각 노드에 모든 부모 또는 자녀의 식별자를 속성화하는 것이므로, 탐색 없이 모든 조상 또는 자손을 구할 수 있다.



 
그림 11. 이숍 카테고리 계층화를 위한 Materialized Paths

이 기법은 계층 구조를 평면 문서로 변환할 수 있으므로, 전문 검색 엔진에 특히 유용하다. <그림 11>에서는 모든 제품 또는 Men's Shoes 커테고리의 하위 카테고리의는 단순한 카테고리 이름으로 된 숏쿼리로 검색될 수 있다. Materialized Paths는 ID 집합 또는 ID를 결합한 단일 문자열로 저장된다. 후자는 정규식을 사용하여 경로의 일부와 일치하는 노드를 검색할 수 있다. 이 옵션은 <그림 12>에서 나타난다.



 
그림 12. Query 정규식을 사용한 Materialized Paths

키 밸류 스토어, 도큐먼트 데이터베이스, 서치 엔진이 이에 해당된다.



3.3.4 중첩된 세트(Nested Sets)


중첩된 세트는 트리 모양의 구조를 모델링하기 위한 표준 기술이다. 관계형 데이터베이스에서 널리 이용되고 있지만, 키 밸류 스토어와 도큐먼트 데이터베이스에 완벽하게 적용할 수 있다. 이것은 아래 그림과 같이 트리의 리프를 하나의 배열에 저장하고 start와 end 인덱스를 사용해 리프 범위에 각각의 비 리프 노드를 매핑하는 아이디어다.



 
그림 13. 중첩 세트를 사용한 이커머스의 카탈로그 모델링

이 구조는 메모리 사용량이 적고 탐색 없이 주어진 노드의 모든 리프를 가져올 수 있으므로, 변하지 않는 데이터에 매우 효율적이다. 그렇지만 리프를 추가하는 것은 인덱스의 부하가 큰 업데이트를 일으키므로 삽입 및 업데이트는 높은 비용 구조를 갖고 있다. 키 밸류 스토어, 도큐먼트 데이터베이스가 이에 해당된다.



3.3.5 중첩된 도큐먼트의 평면화: 번호가 지정된 필드 이름(Nested Documents Flattening: Numbered Field Names)


검색 엔진은 일반적으로 평면 도큐먼트 작업, 즉 각 도큐먼트 필드와 값의 단순 목록이다. 이 데이터 모델링의 목적은 비즈니스 엔터티를 일반 도큐먼 트로 매핑하는 것이며, 이것은 엔터티가 복잡한 내부 구조를 갖고 있다면 도전에 직면할 것이다. 하나의 전형적인 도전은 도큐먼트를 계층 구조로 매핑하는, 예로 중첩된 도큐먼트가 들어있는 도큐먼트다. <그림 14>처럼 생각해 보자.



 
그림 14. 중첩 도큐먼트 문제

각 비즈니스 엔터티는 이력서와 같은 것이다. 이것은 사람의 이름과 그 사람이 가진 기술 목록, 기술 수준을 포함한다. 이러한 엔터티를 모델링하는 명백한 방법은 Skill과 Level 필드가 있는 일반 도큐먼트를 작성하는 것이다. 이 모델링은 개별 기술이나 기술 수준에서 인물을 검색할 수 있지만, 두 필드가 포함된 쿼리는 <그림 14>와 같이 false를 리턴해 버린다. 이 기술의 주요 아이디어는 각각의 기술과 지원 수준을 Skill_i, Level_i 필드를 전용의 쌍으로 인덱싱해 동시에 이러한 쌍을 병렬로 검색할 수 있게 하는 것이다(쿼리에서 OR되는 단어의 수는 한 사람의 스킬의 최대값까지).



 
그림 15. Numbered Field Names를 사용한 중첩 도큐먼트 모델링

이 방법은 중첩된 구조의 개수가 기능적으로 복잡성이 빠르게 증가 할 수 있으므로 확장성이 떨어진다. 서치엔진이 이에 해당된다.



3.3.6 중첩된 도큐먼트의 평면화: 근처 쿼리(Nested Documents Flattening: Proximity Queries)


이 아이디어는 도큐먼트 내에서 단어 사이의 거리를 제한하는 proximity 쿼리를 사용한다. <그림 16>에서는 모든 스킬과 수준이 하나의 SkillAndLevel 필드에 인덱스되고, 그 쿼리는 "Excellent"며 "Poetry"과 접해 있는 단어들을 가리키고 있다.



 
그림 16. Proximity Queries를 사용한 중첩 다큐먼트 모델링

Solr의 성공 사례가 돼 있고, 적용 범위는 서치 엔진이다.



3.3.7 배치 그래프 프로세싱


Neo4j와 같은 그래프 데이터베이스는 예외적으로 주어진 노드의 이웃 탐색 또는 두 개 혹은 약간의 노드 간의 관계 탐색은 잘 된다. 그러나 거대한 그래프의 글로벌 프로세스는 일반적인 용도의 그래프 데이터베이스여서 스케일하지 않기 때문에 효율이 별로 좋지 않다. 그러나 분산 그래프 프로세싱은 MapReduce와 Message Passing 패턴들을 실행할 수 있다. 

맵리듀스의 메시지 패싱 패턴에서 네트워크는 노드 집합으로 저장되고, 각 노드는 인접 노드의 ID 목록을 포함한다. 개념적으로 MapReduce 작업은 박복적으로 수행되고, 반복된 각 노드는, 옆에 엔터티에 메시지를 보낸다. 각각의 이웃 노드는 받은 메시지에 기초해 상태를 업데이트한다. 반복적인 작업은 두 개의 연속적인 반복 잡 간에 무시할 수 있는 상태의 변화와 정해진 반복 잡의 최대값 등의 여러 조건에 의해 종료된다. 결과적으로 모든 메시지는 수신자 노드로 그룹화되어 Reducer는 상태를 다시 계산해 새로운 상태에서 노드를 수정할 수 있다. 

이 방법은 키 밸류 스토어, 도큐먼트 데이터베이스, 빅테이블 계열의 데이터베이스를 거대한 그래프 처리에 적합하게 한다. 키 밸류 스토어, 도큐먼트 데이터베이스, 빅테이블 계열의 데이터베이스들이 이에 해당된다.



출처

http://www.dbguide.net/knowledge.db?cmd=view&boardUid=167344&boardConfigUid=20&boardStep=&categoryUid=209

Posted by 명혀니
,
1
2
3
4
--테이블
Select 'Drop Table ' + name As Command
From sys.objects
Where type='U'

 

 

1
2
3
4
--저장 프로시저
Select 'Drop Procedure ' + name As Command
From sys.objects
Where type='P'

 

 

1
2
3
4
--뷰
Select 'Drop View ' + name As Command
From sys.objects
Where type='V'

 

 

1
2
3
4
--함수
Select 'Drop Function ' + name As Command
From sys.objects
Where type='PN'


Posted by 명혀니
,

1980년대 게임 음악


게임음악 중 좋은 것들만 추려서 정리합니다.
이거 말고도 자신이 알고 있는 좋은음악 얘기해주면 감사하겠습니다.

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


1981년

방구차(New Rally X, Namco)



[다운로드 - 우클릭 다른 이름으로 저장]



1982년

뽀빠이(Popeye, Nintendo)



[다운로드 - 우클릭 다른 이름으로 저장]



1983년

마피(Mappy, Namco)



[다운로드 - 우클릭 다른 이름으로 저장]


봄버맨(Bomberman, Hudson Soft)



[다운로드 - 우클릭 다른 이름으로 저장]



1984년

남극탐험(Antarctic Adventure, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]


빵공장(Comic Bakery, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]


서커스찰리(CircusCharlie, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]


스파르탄 X - 쿵푸 마스터(Spartan X - Kung-Fu Master, Irem)



[다운로드 - 우클릭 다른 이름으로 저장]


양배추 인형(Cabbage Patch Kids, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]



1985년

닌자 자자마루 군(Ninja JaJaMaru-kun, Jaleco)



[다운로드 - 우클릭 다른 이름으로 저장]


마계촌(Ghosts 'n Goblins, Capcom)



[다운로드 - 우클릭 다른 이름으로 저장]


슈퍼마리오(Super Mario Bros, Nintendo)



[다운로드 - 우클릭 다른 이름으로 저장]


스페랑카(Spelunker, Irem)



[다운로드 - 우클릭 다른 이름으로 저장]


시티 커넥션(City Connection, Jaleco)



[다운로드 - 우클릭 다른 이름으로 저장]


이얼쿵푸(Yie Ar Kung-Fu, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]


킹스벨리(King's Valley, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]


트윈비(TwinBee, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]


푸얀(Pooyan, Konami - Hudson)



[다운로드 - 우클릭 다른 이름으로 저장]



1986년

구니스(Goonies, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]


덱스더(Thexder, Gamearts)



[다운로드 - 우클릭 다른 이름으로 저장]


마성전설(Nightmare, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]


젤다의 전설(The Legend of Zelda, Nintendo)



[다운로드 - 우클릭 다른 이름으로 저장]


카게의 전설(The Legend of Kage, Taito)



[다운로드 - 우클릭 다른 이름으로 저장]




1987년

마성전설2 갈리우스의 미궁(Knightmare II The Maze of Galious, Konami)



[다운로드 - 우클릭 다른 이름으로 저장]



(출처 : todayhumor.co.kr / 끝)
Posted by 명혀니
,


이 좋은걸 왜 이제야 알았을까 ㅋ

이전 포스팅한 코드들을 다 적용하긴 너무 빡시고...

앞으로 포스팅하는 코드들은

적용해야겠슴 ㅋ 


 
Posted by 명혀니
,
사고시 보험사에서 보상을 받는 방법은 크게 3가지 입니다



1. 단순 합의

2. 특인 합의 (초과심의)

3. 소송 입니다 ^^*



이중 90%이상이 1번에 단순합의로 끝나는것이 현실입니다



◈단순합의란 , 



진단 2~3주당 80~150만원 정도의 금액을 받고 합의하여 퇴원하는 경우입니다

보험사에서 규정한 보상지침에 그대로 따르는 경우이기도 합니다

경미한 사고이고 , 업무를 오래 비울수 없다면 조속히 합의하고 업무에 복귀하는 편이 나을수도 있습니다

하지만 부상의 경우가 심한 경우에는 아무렇게나 합의해 주어서는 절대로 안됩니다

사고와 부상의 기록이 보험사의 DB(데이터베이스)에 남게되어 향후 같은 부위로 보상을 청구할시 ,

이전의 사고기록을 근거로 불리한 입장에 처할수 있기때문입니다 

업무가 바빠 자리를 오래 비울수 없다면 , 합의는 뒤로 미루고 최대한 오랜기간 동안 통원 치료를 받으며

부상 부위의 차도를 지켜봐야 합니다

교통사고의 소멸시효는

종합보험 3년 / 그외는 2년인데 조건에 따라 중간에 시효가 늘어나는 경우가 많은므로 조급해할 필요가 전혀없습니다



◈특인이란 ,



단순합의의 기준으로 보상을 받지 못할때 , 보상직원이 보험사에 기준이상의 금액을 합의해 달라고 요청하는것을 말합니다

대부분의 사람들이 특인이라는 제도에 대해 생소할텐데요

피해자의 입에서 이말이 나오는 순간 보상직원의 안색은 변할겁니다

한마디로 만만하게 못보는거지요

"이사람 뭘좀 알고있구나" 할겁니다

보상직원들은 한달에도 수십내지는 수백건의 교통사고 가해자와 피해자를 대하다보니 이분야의 전문가이고

사람다루는 방법에 능숙합니다

때문에 대개의 교통사고 피해자는 보상직원에게 끌려 다니게 됩니다

마치 칼자루를 보상직원이 쥐고있는 것처럼 분위기를 몰고갑니다

평생에 보통 한두번 겪는 사고이니 피해자는 경험이 없어 허둥대기 마련이고 전문가를 당해낼 재간이 없을겁니다

하지만 간단히 생각해보면 ,

피해자는 채권자이며 보험사는 채무자 입니다

가해자가 해줘야 할 보상을 대신 해주는 역할을 맡았을 뿐인겁니다

당연히 칼자루를 쥐고있는 것은 채권자여야 합니다

하지만 관련 지식이 없으니 그저 보험사가 하라는 대로 따라갈수밖에 없는것이 현실입니다

이 상황에서 특인처리란 말을 하면 , 피해자를 쉽게 보기가 힘들어 지겠죠 ^^*

본래 특인제도의 도입취지는 피해자가 소송의 의지가 확고할 경우에 예상 판결 금액의 80~90% 정도에서 

원만히 합의하고 1년이 넘을수도 있는 소송기간에 앞서 미리 지급하여 , 변호사 비용과 소송비용등의

불필요한 지출을 막아 서로에게 윈윈이 되도록 하자는 제도입니다



◈마지막으로 소송은



보험사에서 가장 꺼려하는 합의방식 입니다

대개는 보상직원이 처음 합의한 합의 비용의 10배는 다반사고 100배를 훌쩍 넘는 비용으로 판결되는 경우도

있기 때문입니다

게다가 수백만원에 달하는 소송비용도 부담하게 되니 꺼려하는것은 당연합니다

소송의 장점은 자신이 입은 피해를 법에 의겨하여 보다 객관적으로 판정 받을수 있고 보상금액도 커진다는 점이지만

반대로 기간이 오래걸리고 신경 쓸일이 많아진다는 단점이 있습니다

이점 감안하시기 바랍니다



♠사고시 대처요령 



후유증이 남지않을것이 확실한 경미한 사고의 경우 ,

그냥 보험사의 규정대로 받고 단순합의로 빨리 종결짓는 편이 낫습니다

아래의 내용은 후유증이 남을 가능성이 있는 사고에 관하여 임을 참고하시기 바랍니다

초진 2~3주의 경우에도 부상 부위의 따라 후유장해가 남을수 있으니 유의하시구요 

(디스크 , 골절 등은 대부분 후유장해가능성이 높습니다)



첫째. 장해진단은 보험회사 자문병원에서 절대 받지 않는다



교통사고 전문 병원이라고 불리는 곳이 있습니다

이런곳은 대개 보험회사 자문병원이 많은데 , 주로 교통사고 환자를 받아 보험사에게 치료비를 청구해

운영하고 자문료 명목으로 돈을 받기도 합니다

이러한 긴밀한 관계 때문에 신제장해 감정시 , 기왕증을 운운하며 보험사 입장에서 유리하게 판정하기 마련입니다

초진 2~3주의 진단은 쉽게 내려주지만 , 그 이상의 부상 정도에 대해서는 진단 주수를 낮추려 하는 경향이 있습니다

입원은 자문병원에 하는 한이 있더라도 진단만큼은 다른병원에서 먼저 받는편이 유리합니다



둘째. 입원하는 동안 월급을 받았건 , 받지 않았건 지급받는 휴업손해액은 같다



2주 진단을 받았다면 월 급여의 50%를 보상받아야 정상인데 , 회사에서 월급이 지급되지 않았거나 

진단일수 만큼의 차액이 발생했다는 확인서를 요구하는 보상직원들이 있습니다

실제 손해가 발생한 만큼만 지불하겠다는 건데 , 이는 말이 안되는 소리입니다

휴업 손해는 월급을 받았건 , 받지 않았건 법적으로 보장되어 있습니다

또한 , 사고 당시 학생이거나 무직인 상태라면 소득이 없었다는 이유로 휴업 손해를 제외한 치료비 , 위자료 명목등만

지급하려는 보상직원도 있는데 ,

이 역시 말이 안되는 소리 입니다 ( 좀더 거친표현을 쓰고 싶은 카페지기의 마음만 알아주시길 ^^*)

소득이 없는 사람은 [도시일용노임] 이라 하여 , 월140여만원의 노동력이 있는 것으로 간주합니다

그러니 소득이 없어도 140만원에 해당하는 휴업 손해액은 반드시 받을수 있는것 입니다

(이보다 월급이 적을 경우에도 도시일용노임을 적용할수 있습니다)

또한 , 휴업 손해의 80%만 적용하겠다는 보상직원도 있는데요, 법적으로는 100% 모두 인정받습니다

각종 세금이나 공과금을 제외한 실수령액으로 보상해주겠다는 것도 잘못된 것입니다

간단히 말해 기준 연봉이 3600만원 이라면 , 월 300만원을 모두 보상받을수 있도록 법으로 보장되어 있습니다 



셋째. 보험사에서 주장하는 과실비율을 무시하라



원칙적으로 사고처리 담당자는 고객의 편에 서서 최대한 적은 과실 비율을 이끌어 내기 위해서 노력합니다

그런데 잘 지켜지지 않지요

뉴스에서도 다룬적이 있는데 , 실제로는 피해자측의 과실비율을 10~20% 정도 높여주는 관행이 있습니다

쌍방 과실에 가까워 질수록 대인 / 대물 모두 협상이 쉽고 보험사 측에서도 이득이 되는 경우가 많기 때문입니다

한마디로 상부상조 하는것입니다.

멈춰있는 차를 뒤에서 받은경우라면 10 : 0 이 가능하지만 , 직진 중이었다면 

그자리에 당신이 없었다면 사고가 나지 않았을것이다 란 얼토당토 않은 이유로 10%의 과실을 부여할 정도입니다

이러한 관행때문에 실제 소송에 가서는 피해자 쪽의 과실 비율이 적게 판결되는 경우가 상당히 많습니다

보험사에서 주장하는 과실 비율에서 자기 과실을 10%정도는 낮춰줄것을 당당히 요구해야 합니다



넷째. 빨리 퇴원 할수록 유리한게 절대 아니다



보험사에서 가장 싫어하는것이 [장기입원] 입니다

때문에 되도록 입원초기에 병원에서 빼내려 무척 애를 씁니다

보상직원이 반드시 제시하는 레퍼토리가 " 남은 진단일수에 해당하는 입원비와 치료비를 돈으로 보상해 드릴테니

퇴원하시죠. 시간이 지날수록 지불된 입원비 만큼 보상이 어려워 집니다 " 일겁니다

이말에 대부분의 피해자들은 입원비를 보너스로 받는다는 기분이 들어 냅다 합의서에 싸인할수 있습니다

그런데 과연 그럴까요?

오히려 반대 입니다

입원 기간이 길어질수록 보상금을 높게 제시하며 , 자주 찾아와 귀찮게 하고 , 그래도 안되면 통사정을 합니다

법적으로 입원일수에 비례해 보상해줘야할 금액이 커지기 때문입니다

게다가 산더미처럼 불어나는 치료비 때문에 보상직원은 사내에서 눈총을 받게 됩니다

보상직원의 역량을 평가하는 가장 중요한 두 가지 항목은 [빠른합의] 와 [적은금액의 합의]라 해도 과언은 아닐것입니다



다섯째. 필요한 촬영은 모두 받을수 있다



MRI와 CT는 부상을 진단하는데 가장 중요한 수단중 하나 입니다

그런데 보험사에서는 목이나 허리 둘중 하나만 찍을수 있다고 합니다 

물론 , 그들만의 규정일 뿐입니다

보험사에서 지급을 거부한다면 금융감독원이나 소비자보호원에 민원을 통해서 해결할수 있습니다

그게 귀찮다면 자비로 촬영후 , 소송이나 특인합의때 청구할수도 있습니다

촬영 결과 정상으로 나오더라도 이전에 통증이 있다고 충분히 어필했고 , 의사소견하에 진행된 검사는 

보험사에서 지급해야 할 의무가 있습니다 ( 이는 일반적인 건강보험에서도 마찬가지 입니다 )

소송을 하겠다고 엄포를 놓을 경우 , 아예 치료비 지급을 중단하는 수도 있는데 [치료비 가불금 신청서]를 

통해지급 받을수 있습니다.  이는 [자동차 손해배상보장법 제 10조] 에 명시된 권리 입니다



마치며..



읽어보니 마치 나이롱 환자 가이드가 아닌가 합니다 ^^*

하지만 나이롱 환자를 양산하는것은 다름아닌 보험사일수 있습니다

보상을 받으려면 [입원] 이라는 극단적인 대처를 해야 한다는 의식이 공공연히 사회에 만연합니다

보험사에서 제때에 제대로된 대처를 해준다면 귀한 시간을 갉아먹는 나이롱 환자는 더이상 있을 이유가 없을수도 있습니다

나이롱 환자는 비판받아 마땅하지만 , 지나치게 일방적인 기업논리로 사회적 낭비를 발생시키고 있는

보험사도 각성해야 할것입니다



또한 , 이러한 기업논리식 보험사에서 제대로 된 보상을 보장받으려면 ,

설계사의 역할이 매우 중요하다 할수있습니다

일반적으로 고객들은 설계사는 보험사의 직원이니 회사의 편이다 생각하기 쉬운데

이는 그릇된 사고입니다

보험금 청구 발생시 , 신속한 처리와 꼼꼼한 보상절차를 대신하는것이

흔히들 말하는 [관리]이며 

이것만이 본인이 업계에서 살아남을수 있는 가장 쉬운길 이라는것을 잘알고 있으리라 의심치 않습니다




[출처]

http://21341.blog.me/90042720818
Posted by 명혀니
,
Posted by 명혀니
,

능엄경(楞嚴經) 中....        
        
너희들은 오히려 인연하는 마음으로 법을 듣고 있으니, 이 법도 인연일 뿐,         
법의 본성을 얻은 것이 아니니라. 어떤 사람이 손으로 달을 가리켜 다른 사람에게 보인다면,         
그 사람은 당연히 손가락을 따라 달을 보아야 하는데,         
여기서 만일 손가락을 보고 달 자체로 여긴다면, 그 사람은 어찌 달만 잃었겠느냐.         
손가락도 잃었느니라.         
        
왜냐하면 가리킨 손가락을 밝은 달로 여겼기 때문이다. 어찌 손가락만 잃었다고 하겠느냐.         
밝음과 어둠도 모른다고 하리라. 왜냐하면 손가락 자체를 달의 밝은 성질로 여겨서,         
밝고 어두운 두 성질을 알지 못하기 때문이다











아놬ㅋㅋㅋㅋㅋ



Posted by 명혀니
,

// 크기를 리턴한다
FLOAT D3DXVec3Length(
    CONST D3DXVECTOR3* pv
);

ex)
D3DXVECTOR3 v(1.0f, 2.0f, 3.0f);
float magnitude = D3DXVec3Length( &v ); // = sqrt(14)



//벡터의 정규화
D3DXVECTOR3* D3DXVec3Normalize(
    D3DXVECTOR3* pOut,          //결과
    CONST D3DXVECTOR3* pV   //정규화 하려는 벡터
);


//내적
FLOAT D3DXVec3Dot(
    CONST D3DXVECTOR3* pV1,  //왼쪽 피연산자
    CONST D3DXVECTOR3* pV2   //오른쪽 피연산자
);


//외적
D3DXVECTOR3* D3DXVec3Cross(
    D3DXVECTOR3* pOut,           //결과
    CONST D3DXVECTOR3* pV1, //왼쪽 피연산자
    CONST D3DXVECTOR3* pV2  //오른쪽 피연산자
);


//항등 행렬
D3DXMATRIX* D3DXMatrixIdentity(
    D3DXMATRIX* pOut   //항등으로 지정될 행렬
)


//전치 행렬
D3DXMATRIX* D3DXMatrixTranspose(
    D3DXMATRIX* pOut,                //결과로 얻어진 전치 행렬
    CONST D3DXMATRIX* pM        //전치할 행렬
);


//역행렬
D3DXMATRIX* D3DXMatrixInverse(
    D3DXMATRIX* pOut,               //결과로 얻어진 역행렬
    FLOAT* pDeterminant,           //행렬식, 필요한 경우에 이용되며 그렇지 않으면 0을 전달
    CONST D3DXMATRIX* pM       //뒤집을 행렬
)


//이동 행렬
D3DXMATRIX* D3DXMatrixTranslation(
    D3DXMATRIX* pOut,    //결과
    FLOAT x,                      //x-axis 축으로 이동할 단위의 수
    FLOAT y,                      //y-axis 축으로 이동
    FLOAT z
);
Posted by 명혀니
,

난 수학따윈 잘 모른다.....
그런 내 머리에서 나온건!!!

점프란? = 높이를 넣으면 그 높이까지만 올라가는 포물선!! 이다!!


일단 공식은....

S = vt - 1/2*g*t^2

 
이걸 보기 쉽게 한글로 풀어보면

높이 = v*시간 - 1/2*중력*시간^2

  

이걸 코드로 풀어보면.....

v = sqrt( 2*중력*최대높이 ) 

  

그럼 이걸 이전에 썼던 공식에 그대로 적용시키면....

  현재높이 = v*시간 - 1/2*중력*시간^2



최대높이를 v값으로 세팅해 주자....ㅋ




Posted by 명혀니
,