2015년 12월 30일 수요일

HLSL 내장함수, shader 함수

출처:여기

1. 삼각 함수

sin(x), cos(x), tan(x) : 기본삼각함수

asin(x), acos(x), atan(x) : 역삼각함수

atan2(y,x) : atan(y/x)에 해당하는 함수로, 
    atan(x)는 [-π/2, π/2]의 범위의 값을 가지지만, atan2(y,x)는  [-π, π]의 값을 리턴한다.
    atan2(y,x)는 x≠0 이면 항상 올바른 값을 계산핤 수 있으므로 더 선호한다.

sinh(x), cosh(x), tanh(x) : 쌍곡 삼각함수

sincos(x,s,c) : sin(x)와 cos(x)를 동시에 s, c로 리턴한다. 여기서 s, c는 x와 동일한 차원의 타입이어야 한다.

degrees(x) : 라디안 단위의 x값에 해당하는 각도값을 리턴한다.

radians(x) : 각도 단위의 x값에 해당하는 라디안값을 리턴한다.


2. 수학 함수
sqrt(x) : 제곱근

rsqrt(x) 
: 제곱근의 역수

exp(x), exp2(x), pow(x, y) : e^x, 2^x, x^y

ldexp(x) : x * 2^y

log(x), log10(x), log2(x) : loge(x), log10(x), log2(x)
→ 모든 로그함수의 인자값 x는 양수값으로 지정해야 한다.
    x가 음수이면 함수값이 정의되지 않고, x=0이면 -무한대를 리턴한다.


3. 값 변환 함수

abs(x)
 : 절대값

sign(x) : 부호에 따라 음수이면 -1, 0이면 0, 양수이면 1을 리턴

ceil(x) : 올림한 정수를 리턴
floor(x) : 내림한 정수를 리턴
round(x) : 반올림한 정수를 리턴
→ 리턴하는 정수값의 타입은 모드 float 타입이다.

max(x,y), min(x,y) : 최대, 최소값

clamp(x, min, max) : x를 [min, max] 범위로 클램프한다.
    즉, x가 범위안에 있으면 x를 그대로 리턴하지만, min보다 작으면 min을, max보다 크면 max를 리턴한다.

saturate(x) : x를 [0, 1] 범위로 클램프한다.

lerp(x,y,s) : 선형보간인 x + s(y - x) 를 리턴한다. x, y, s는 모두 동일한 타입으로 지정.

step(x,y) : x≤y 이면 1을 리턴하고, 그렇지 않으면 0을 리턴한다.

smoothstep(min,max,x) : x가 [min, max] 사이의 값인 경우에 대해서 [0, 1] 사이에서 부드럽게 변하는
    Hermite 보간법을 리턴한다. x가 min보다 작다면 0을 리턴하고, max보다 크다면 1을 리턴한다.

asfloat(x) : 입력인자값을 float 타입으로 바꾼다.
asint(x) : 입력인자값을 int 타입으로 바꾼다.
asuint(x) : 입력인자값을 uint 타입으로 바꾼다.

fmod(x,y) : x/y의 나머지를 실수로 리턴한다.

frac(x) : x의 소수점 이하 부분을 리턴한다.

frexp(x,e) : 주어진 실수 x의 표현에서의 소수점 이하값인 가수부분과 지수부분을 동시에 리턴한다.
    가수부분을 e로 리턴하고, 지수부분을 함수리턴값으로 리턴한다.

modf(x,i) : x의 정수부분을 i로 리턴하고, 소수점 이하부분을 함수리턴값으로 리턴한다.


4. 테스트 함수

a11(x) : 인자값의 모든 원소들이 0이 아닌지를 검사한다. 모두 0이 아니면 bool타입의 true값을 리턴한다.

any(x) : x의 원소중에 0이 아닌 원소가 하나라도 있으면 true값을 리턴한다.

isfinite(x) : 인자값이 무한대가 아닌 유한한 값이면 true를 리턴한다.

isinf(x) : 무한대 값(±INF)이면 true를 리턴한다.

isnan(x) : NAN(Not a Number)이면 true를 리턴한다.


5. 벡터 함수

cross(x,y) : 두 벡터의 외적을 계산한다. 두 인자값과 리턴값은 모두 float3 타입이다.

dot(x,y) : 두 벡터의 내적을 계산한다.
distance(x,y) : 두 벡터의 거리를 계산한다.
length(x) : 벡터의 길이를 계산한다.
→ 이들은 모두 하나의 float를 리턴한다.

normalize(x) : 정규화된 벡터를 리턴한다. 즉, 리턴값은 x/length(x) 와 동일하다.

determinant(m) : 행렬식을 리턴한다. 입력인자는 정방행렬이어야 한다.

transpose(m) : 전치행렬을 리턴한다.

mul(x,y) : 두 행렬의 곱을 계산한다.


6. 기타 함수

ddx(x), ddy(x) : 스크린공간의 x, y 좌표에 대한 x, y의 편미분을 리턴한다.
fwidth(x) : abs( ddx(x) ) + abs( ddy(x) ) 를 리턴한다.
clip(x) : x의 한 원소가 0보다 작으면 현재 픽셀을 버린다.
→ 이 함수들을 픽셀셰이더에서만 사용할 수 있다.

↓ 고급기법에서 사용되는 함수
faceforward(n, i, ng) : 관찰자를 향하는 표면 노말을 리턴한다.
reflect(i, n) : 반사벡터를 리턴한다.
refract(i, n, R) : 굴절벡터를 리턴한다.
lit(n·l, n·h, m) : 조명계수 벡터를 리턴한다.
noise(x) : 연기나 화재효과에 사용되는 Perlin 노이즈값을 리턴한다.

2015년 10월 18일 일요일

svn

============================================

svn merge


============================================

svn checkout URL Path

//부가 사항 테스트 필요
svn checkout -r 100 URL   (revision 100번 소스 받기)
svn checkout -r HEAD URL  (마지막 리비전 받기)


============================================

svn update Path

============================================

경로 만들기
svn mkdir Path\foldername

============================================

파일을 관리 대상으로 서버에 추가
svn add Path\filename.txt

============================================

svn commit Path --message comment

============================================

svn delete Path\filename.txt

============================================
============================================
============================================
============================================

출처 http://blog.naver.com/sjh77ch/62179981

SVN(Subversion)은 형상관리를 위한 도구이다. 다시 말하면 소프트웨어 개발의 버전 관리 시스템이다.

SVN에서 많이 사용되는 명령어는 다음과 같다.

checkout 또는 co - 저장소(repository)에서 로컬 작업공간으로 소스를 받아오는 것.
$ svn checkout 저장소URL [PATH...]
: 지정된 로컬경로에 저장소의 소스가 복사된다. 경로가 지정안되면 저장소URL의 맨마지막 디렉토리명이 저장될 디렉토리로 사용되어진다. -r 옵션으로 리비전을 지정한 경우엔 해당 리비전의 소스를 가져온다.
예제) svn checkout -r 99 http://repository/src src
설명) 저장소에서 리비전 번호 99의 src경로내의 소스를 가져온다.

update 또는 up - 저장소(repository)의 최신 내용으로 로컬 소스를 갱신 한다.
$ svn update [PATH...]
: 기본적으로 최신 리비전을 반영한다. 그러나 -r 옵션으로 리비전을 지정한 경우엔 그 리비전으로 맞춘다.

commit 또는 ci - 로컬에서 수정된 내용을 저장소에 적용시킨다.
$ svn commit [PATH...]
: 기본적으로 이 명령을 내리면 수정 사항을 코멘트할 수 있게 로그 편집기가 실행된다. lock된 파일이나 디렉토리는 commit성공후 자동적으로 unlock된다.

lock - 저장소의 파일이나 디렉토리를 잠근다.
$ svn lock TARGET
: lock이 걸린 파일이나 디렉토리는 다른 사용자가 변경하여 commit할 수 없다. 해당 경로의 작업이 너무 방대하여 그 동안 다른 사용자가 수정하지 못하도록 할때 유용.

unlock - 저장소의 잠근 파일이나 디렉토리를 풀어준다.
$ svn unlock TARGET
: lock의 반대. 기본적으로 lock을 건 사용자가 풀어줘야 한다.

add - 새 파일이나 디렉토리를 추가한다.
$ svn add PATH...
: add 명령은 지정된 PATH의 새로운 파일이나 디렉토리를 버전관리 대상에 등록할 뿐이므로, add후 commit 명령을 수행해야만 실제로 저장소에 해당 파일이 추가된다.

delete 또는 del, remove, rm - 파일이나 디렉토리를 제거한다.
$ svn delete PATH...(URL)
: delete 명령은 add와 반대로 해당 PATH의 파일이나 디렉토리을 버전관리 대상에서 삭제한다. 역시 commit 명령을 수행해야만 실제로 저장소에서 해당 목록이 제거된다. URL로 지정했을 경우 해당 목록은 즉시 저장소에서 제거된다.


copy 또는 cp - 로컬 사본이나 저장소 내용을 복사한다. 브랜치(branch)를 만들기 위해 사용.
$ svn copy SRC  DST
: SRC가 로컬경로이고 DST도 로컬경로일 경우, 로컬복사되고 commit시 저장소에 복사 목록이 추가 저장된다. SRC가 로컬경로이고 DST가 저장소URL일 경우, URL에 복사되고 즉시 commit됨. SRC가 저장소URL이고 DST가 로컬경로일 경우, 로컬로 checkout하고 commit시 저장소에 해당 사본이 추가.
SRC가 저장소URL이고 DST도 저장소URL일 경우, 저장소 내에 브랜치(branch)를 만듬.

move 또는 mv, rename, ren - 파일이나 디렉토리의 이름을 바꾸거나 이동시킨다. 이 명령은 copy후 delete와 같다.
$ svn move SRC  DST
: SRC가 로컬경로이고 DST도 로컬경로일 경우, 로컬로 rename 또는 move되고 commit시 저장소에 반영된다. SRC가 저장소URL이고 DST도 저장소URL일 경우, 저장소에서 rename,move가 바로 commit됨.

info - 해당 파일에 대한 정보를 출력한다.
$ svn info TARGET
: TARGET의 저장소 URL경로나 마지막 수정 일자등에 대한 정보를 보여준다.

log - 해당 경로나 파일의 로그( 리비전에 따라 변경된 내역)를 볼수 있다.
$ svn log [PATH]
: 지정된 로컬 PATH에 대한 로그를 출력한다. -r 옵션을 지정하면 출력할 리비젼 범위등을 정할 수 있다.
예제) svn log -r 30:100 test.c
설명) 리비전 번호 30~100 내에서 test.c에 대한 로그를 출력한다.

status 또는 stat, st - 로컬 경로의 파일이나 디렉토리의 상태를 보여준다.
$ svn status [PATH]
: 해당 파일이 수정, 추가되었는지 등의 정보를 보여준다. -u 옵션을 주면 저장소의 최신 리비젼이 얼마인지 알려준다.

diff 또는 di - 서로 다른 리비젼 간에 차이점을 출력해준다.
$ svn diff [-r N:M] TARGET
: 지정된 파일이나 경로에 대해 이전 리비젼하고 차이점을 보여준다. -r 을 지정하면 리비젼 N과 M사이의 차이점을 출력해준다.
예제) svn -r 30:45 test
설명) test 경로내에서 리비젼 번호 30과 45의 차이점을 출력해준다.

merge - 두 source 사이에 변경 내용을 작업 경로에 적용해준다.
1. $ svn merge URL1[@N] URL2[@M] [PATH]
2. $ svn merge [-r N:M] SOURCE [PATH]
: 1. URL1[리비젼 N]과 URL2[리비젼 M]을 비교하여, 변경 내용을 작업경로에 적용한다.
  2. SOURCE의 리비젼 N과 M을 비교하여, 해당 작업경로에 적용한다.
merge는 branch로 분리된 source에 대해 각각의 변경 내용을 현재의 작업에 병합하고자 할때 유용하다.

blame 또는 praise, annotate, ann - 지정한 파일이나 URL의 내용 수정내역을 각 라인별로 보여준다.
$ svn blame TARGET
: 해당 파일의 각 라인에 대해 리비젼과 작성자를 나타내 준다. 누가 언제 어떤행을 수정했는지 알수 있음.

import - 파일과 디렉토리를 저장소에 추가한다.
$ svn import [PATH] URL

: URL에 지정된 PATH의 하위 디렉토리는 재귀적으로 추가되며, 필요시 상위 디렉토리가 자동으로 생성된다.

export - 저장소에서 순수하게 프로그램 소스만 가져온다.
$ svn export URL [PATH]
: export는 버전관리를 위한 부속 파일들은 제외하고 순수한 소스만 받아오기 때문에, 주로 source release 용도로 사용되게된다. -r 옵션을 지정해서 해당 리비젼의 소스를 받아올 수 있다.



2015년 10월 2일 금요일

CodeIgniter


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

database 설정
application/config/database.php 값 세팅

$db['default'] = array(
'dsn' => 'mysql:host=localhost:33066;dbname=bkdb',
'hostname' => 'localhost:33066',
'username' => 'root',
'password' => 'qwer1234',
'database' => 'bkdb',
'dbdriver' => 'pdo',
        .
        .
        .

dsn :필히 입력해 줘야 하고
dbdriver : pdo로 해줘야 PDO 방식으로 적용됨

위 내용에서 hostname 과 database 는 주석 처리를 해도 됨

mysql:host=localhost:33066;dbname=bkdb 의 내용은

database가 mysql 이고
host 는 localhost, port는 33066
database에 붙여진 이름은 bkdb
(testDB 든 topic 이든 create database 하면서 지어준 이름)
   

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

설정값 가져오기
1. $this->config->item('base_url')
config.php 파일에 기술된 base_url 을 리턴



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

2015년 10월 1일 목요일

2015년 9월 30일 수요일

정규표현식


- \(.+\)
괄호를 포함하여 괄호에 싸여있는 모든 값 검색 됨

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

- ^+검색어
소스 상 한 줄의 가장 처음 나타나는 검색어를 검색
who is who 라면 앞의 who만 검색 됨

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

- 검색어+$
소스 상 한 줄의 가장 마지막 나타나는 검색어를 검색
who is who 라면 뒤의 who만 검색 됨
※ 특수문자 $ 를 찾을때
$12$\-\$25$
^\$를 하면 $가 문자처리되어 맨 앞의 $가 찾아짐

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

- .
모든 문자를 의미
...... 6개의 점은 6개의 글자를 가진 문자를 의미한다.

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

- [검색어]
[ ] 한 세트는 한 글자 의미
How Hone을 [ho]. 으로 검색하면 뒤에 .(점) 때문에 두글자를 찾되,
첫글자는 h또는o가 들어간 글자 중에서 찾게 된다.

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

- [검색어-검색어]
[c-k] c 부터 k 까지를 검색.
[C-Ka-d2-6] 등의 방법도..

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

-[^검색어]
[ ]내부의 ^(캐럿)은 부정의 의미
[c-k] c 부터 k 까지를 제외하고 검색.

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

- (on|ues|rida)
Monday Tuesday Friday

(Mon|Tues|Fri)day 하면 세 단어 전체가 모두 검색 됨
..(nd|esd|id)ay 해도 모두 검색됨, 앞에 점 두개는 두글자, 중간은 (), 끝은 ay

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

- 수량자(Quantifiers)  *, +, ?
a*b 는 b 앞에 a라는 문자가 있든 없는 다 검색한다.
a+b 는 b 앞에 a라는 문자가 1개 이상이면 있는 부분부터 다 검색한다.
a?b 는 b 앞에 a라는 문자가 없거나 1개이면 검색한다.

.* 는 모든 텍스트
-A*- 는 -(데시)앞에 -와A가 있든 없는 모두 검색

\*+ 는 + 앞의 것이 하나라도 있어야 검색
[^]+ 는 공백이 하나라도 있는 것을 검색


.{5} 는 어떤 것이든 5글자인 것 검색
[els]{1,3} 는 검색하려는 것이 1개 이상 3개 이하인 경우 검색
[a-z]{3,} 는 3개 문자 이상인 겨우 검색( 상한선이 없음)

AB*A 는 AB{0,}A와 같은 의미를 지닌다.
AB+A 는 AB{1,}A와 같은 의미를 지닌다.
AB?A 는 AB{0,1}A와 같은 의미를 지닌다.

r.* 는 r문자 뒤에 모든 문자를 잡는다.


수량자뒤에 바로 ? 가 올 경우 의미가 달라진다.
r.*? 의 경우
?가 *의 효력을 0~여러개 에서 0으로 바꿔버린다.
결국 r만 검색되고 .은 무용지물이 됨

r.+? 의 경우
?가 *의 효력을 1~여러개 에서 1으로 바꿔버린다.
결국 r과 뒤에 붙는 문자 하나만 검색됨

r.+? 의 경우
?가 *의 효력을 1~여러개 에서 1으로 바꿔버린다.
결국 r과 뒤에 붙는 문자 하나만 검색됨

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

- \w  word를 의미( 알파벳 과 숫자 그리고 _(언더라인) )
공백은 제외된다.
/w* 모든 문자 검색 ( = [A-z0-9] )
[a-z]\w*
\w{5} 문자 5개 검색

※ 대문자W는 문자가 아닌것 검색

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

- /d 는 0~9까지의 수 의미
※ 대문자D는 숫자가 아닌것 검색

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

- /b. 바운더리

\b\w 단어의 시작 스펠링이 강조
\w\b 단어의 끝 스펠링이 강조

\b\w+\b 1글자 이상인 단어를 강조

cat concat 에서
\bcat 이면 앞의 cat만 검색
cat\b 이면 두 단어의 cat 모두 검색

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

- \A...
문단에서 시작단어 중 3글자 단어 검색

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

- \Z...
문단에서 끝단어 중 3글자 단어 검색

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

- \w+(?=X)
X를 뺀 앞부분을 선택


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



2015년 9월 17일 목요일

python

Python

=========================================

파일 찾기

import glob
files = glob.glob("*.exe")
print files

=========================================

현재 디렉토리 알기

import os
print os.getcwd()

변경하기

os.chdir("C:/WINDOWS")
print os.getcwd()

경로내 모든 디렉토리 출력

print os.listdir('.')

=========================================

import os,re

루트 디렉토리를 중심으로 하위 폴더 중에서 파일 찾기

os.walk - > 리턴 tuple 형식 ( 경로, 폴더들, 파일들 )

모든 폴더 탐색
for t in os.walk('Root'):
    print t

특정 파일 찾기
def findfile(filepattern, base = '.'):
    regex = re.compile(filepattern)
    matches = []
    for root, dirs, files in os.walk(base):
        for f in files:
          if regex.match(f):
             matches.append(root + '/' + f)
    print(matches)


remove(path)
파일 경로를 제거한다.
path가 디렉토리이면, OSError가 일어난다; (디렉토리를 제거하려면 rmdir()을 사용하라).

rename(src, dst)
src 파일이나 디렉토리 dst로 이름을 바꾼다.
dst가 디렉토리이면, OSError가 일어난다.


=========================================

import shutil

copy(src, dst)
src 파일을 dst 파일이나 디렉토리에 복사한다. dst가 디렉토리이면, 지정된 디렉토리에 src와 바탕이름이 같은 파일이 생성된다(즉 오버라이트된다). 허가 비트도 복사된다. src와 dst는 문자열로 주어진 경로 이름이다.

move(src, dst)
재귀적으로 파일이나 디렉토리를 다른 곳으로 이동시킨다.
목적지가 현재 파일시스템이면, 그냥 src의 이름을 바꾸어라. 그렇지 않으면, src를 dst에 복사하고 src를 삭제하라.

=========================================

import os.path as p
import glob

for item in glob.glob('*')
   if p.isfile(item): print item, ' is a file'
   elif p.isdir(item): print item, ' is a directory'
   else: print item, ' is of unknown type'

p.isfile(item)
p.isdir(item)

=========================================

import time as t

t.localtime( )


=========================================
=========================================
=========================================

JavaScript

JS 는 함수다!


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

- 역슬러시 \
: 뒤에 나온 것을 문자로 처리한다.
:: \+' (= 역슬래시+') 하면  ' 을 문자로 처리한다.

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

- Math
:: Math.random(); -> 0.11323 같은 1 이하의 랜덤한 수 제공

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

- document
현재 html 문서 자체를 의미
document.getElementById("아이디") 하면 해당 아이디의 html 객체 튀어나옴
document.write("내용")의 경우 전체 문서를 해당 내용으로 다시 쓴다

DOM, BOM  개념에 대한 서술이 필요

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

JQuery, ajax 서술이 필요

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

-http request

form 태그 전송
<form enctype="multipart/form-data" action="1.php" method="POST">
  <input type="hidden" name="maxFileSize" value="30000"/>
  <input type="file" name="userFile"/>
  <input type="submit" value="upload">
</form>

enctype : encoding type, multipart/form-data 로 해야 한다. 심오한 이유는 알면 쓰겠음
action="URL", 전송할 목표 웹서버 페이지의 URL
method="POST", 파일 전송의 경우라서인지 POST 방식을 선택 ( GET no no )

type="hidden" 항목에서 "maxFileSize"은 웹서버측 php파일에서 $_POST["maxFileSize"]로
받아서 사용한다.

파일의 경우도 $_POST["userFile"] 으로 사용할 수 있지 않을까? 하는 생각은 버리자
파일의 경우 $FILES 라는 약속된 변수에 저장되어 있다.
$FILES["userFile"] 으로 배열화 되어있는 파일의 정보에 접근할 수 있다.
$FILES["userFile"]["name"] //-> 파일 이름. 확장자
$FILES["userFile"]["type"] //-> image 인지 text 인지 / 형식?(png , plain 등 )
$FILES["userFile"]["tmp_name"] //->템프 경로, 파일을 목표 경로로 옮기기 전 잠시있는 곳
$FILES["userFile"]["error"] //-> 전송중? 에러 사항?
$FILES["userFile"]["size"] //-> 파일 용량

이후에 일어나는 일은 php 항목에서 "$FILES"를 검색해서 찾아볼 수 있다

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

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

- 참고사항
<script> </script> 사이가 아니라도 자바 스크립트를 사용하 수 있다.

input tag의 onclick 부분
<input type="button" value="white" onclick="alert('hello world')"/>

input tag의 onfocus, onblur 부분
<input type="text" onfocus="alert('focus')" onblur="alert('blur')"/>

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