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

카테고리

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

*어디까지나 제가 사용한 기준으로써, 저를 위한 포스팅입니다.

현재 SVN은 Tortoise SVN을 사용하고, 서버는 네이버 개발자 센터에 등록하여 사용합니다.

1. SVN 설치( Tortoise SVN )
2. 네이버 개발자 센터에 등록
3. 커밋, 업데이트 사용법


1. SVN 설치

[download] -> [TortoiseSVN 32-Bit (32비트) or TortoiseSVN 64-Bit(64비트)]
에서 SVN을 다운 받는다.

영문으로 쓰기에는 영어 실력이 많이 부족한 관계로, 하단에 보이는 한글패치를 받는다.
마찬가지로 32bit or 64bit 중 택해서 받는다.

다운 받은 SVN 설치
설치에서 특별한 부분은 없기 때문에, 그냥 Next, 설치 폴더등을 지정하여 설치를 완료한다.

2. 네이버 개발자 센터에 등록
프로젝트 생성을 하기 위해 [마이페이지] -> [프로젝트 등록]에서 이름, 아이디 설명등을 입력 후 프로젝트를 생성한다.

프로젝트 생성을 하면 약 10분 정도의 시간이 흐른 이후에 생성되니 주의.

프로젝트를 생성하고.
[회원정보] -> [코드저장소 비밀번호 설정]을 통하여 코드를 올릴때 필요한 암호를 설정한다.

3. 커밋, 업데이트 사용법
SVN에 커밋 & 업데이트할 폴더를 하나 생성한 이후
폴더안에서 마우스 오른쪽 버튼 ->[TortoiseSVN] -> [Setting] -> [한국어] 로 세팅
그 후 [SVN 체크 아웃] 네이버 ID : 코드 저장소 비밀번호 설정에서 설정했던 암호를 입력
커밋 & 업데이트를 사용 할 수 있다.


ps : 뭔가 자세히 적고 싶지만 orz 나도 잘 몰라서

기억나는것만 적었음.



출처 : http://mrhook.co.kr/173

반응형
Posted by blueasa
, |



출처 : http://mrhook.co.kr/38

반응형
Posted by blueasa
, |


MouseKeyboardLib2008.zip



원문 : http://www.codeproject.com/KB/system/globalmousekeyboardlib.aspx

물론 그냥 쌩으로 만들어 써도 되지만 , 이렇게 잘 정리되고 간단한 라이브러리를 쓰는것도 참 괜찮은 방법.

예제는 프로젝트를 열어보면 있다.

간단한 키보드 후킹 사용법 : 

            KeyboardSimulator.KeyDown(System.Windows.Forms.Keys.A);
            KeyboardSimulator.KeyUp(System.Windows.Forms.Keys.A);

유의점이라면 매개변수 'Keys' 는 윈폼의 것이다. 따라서 참조에 윈폼을 추가해야 한다.
그냥 WPF 로 바꿔도 무방하다만, WPF 만 할것도 아니고 XNA 도 있고 여러가지 상황을 생각한다면 
걍.. 이대로 쓰는것도 그리 불편하진 않다.

반응형
Posted by blueasa
, |






EventArgs 를 상속받는 클래스 안에다가 이벤트에 필요한 "event" 와 delegate  를 함께 작성 함으로서 구현 코드의 코드량을 줄였다.



이벤트 클래스 작성
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace StikusFrameAuth.events
{
    public class SFATraceEvent : EventArgs
    {
        //event
        public delegate void SFATraceEventDele(object sender, SFATraceEvent e);
        public static event SFATraceEventDele TraceEvent;


        //arg
        public STATUS_TYPE statusType { get; private set; }
        public string contentString { get; private set; } 
        public SFATraceEvent(STATUS_TYPE _statusType , params object[] _content)
            : base()
        {
            statusType = _statusType;
            foreach (var s in _content)
            {
                contentString += s.ToString() + " ";
            }
        }
        public enum STATUS_TYPE
        {
            COMMENT
        }


        //dispatch
        public static void dispatchEvent(object sender,  params object[] _content)
        {
            TraceEvent(sender, new SFATraceEvent(STATUS_TYPE.COMMENT, _content));
        }
    }
}



구현
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using StikusFrameAuth.events;
namespace StikusFrameAuth
{
    public class StikusFrameAuth
    {
        public StikusFrameAuth()
        {

            //addEventListener
            SFATraceEvent.TraceEvent +=new SFATraceEvent.SFATraceEventDele(SFATraceEventArg_SFATraceEvent);
            


            //dispatchEvent
            SFATraceEvent.dispatchEvent(this,  "argString" , "wow");
        }

        void SFATraceEventArg_SFATraceEvent(object sender, SFATraceEvent e)
        {
            Console.WriteLine(e.contentString);
        }
    }
}


AS3 의 addEventlistener , DispatchEvent 와 엇비슷한 형태로 사용이 가능하다

반응형
Posted by blueasa
, |

Dictionary foreach

Programming/C# / 2012. 4. 25. 12:04

KeyValuePair 를 이용한다


            Dictionary<String, Object> dic = new Dictionary<String, object>();
            dic.Add("String0", true);
            dic.Add("String1", 13);

            foreach (KeyValuePair<String, Object> p in dic)
            {
                Console.WriteLine(p);
            }




반응형
Posted by blueasa
, |

- Windows 7 에서 확장자별 파일연결 변경하는 유틸리티 입니다.


- Download (v1.61)

filetypesman-x64.zip


filetypesman.zip



홈사이트 : http://www.nirsoft.net/utils/file_types_manager.html

반응형
Posted by blueasa
, |





꼬부기에서 Tag/ Branch를 누르면 위와 같이 경고를 출력한다.
내가 사용중인 소스(Working copy)에 변경점이 있고, 서버와 버전이 동일하지 않기 때문에
변경점이 손실될수도 있다는 내용이다.

CVS에 비하면 부드러운 메시지이나(CVS는 서버와 workin copy가 동일하지 않으면 tag 자체를 시도할수 없다.)
어떤면에서는 CVS처럼 강인하게 변경점이 있으면 할수 없도록 하는 것도 나쁘진 않다고 생각된다.

하지만, 자유도 측면에서 서버내용을 독립적으로 분기할수 있다는 점은 상당한 매력이다.



출처 : http://minimonk.tistory.com/1572

반응형

'Tip & Tech > TortoiseSVN' 카테고리의 다른 글

excel, word, ppt 가 동일한지 판별하기  (0) 2013.04.26
TortoiseSVN - branch, tag, merge, switch  (0) 2012.04.18
TortoiseSVN Beginner Guide  (0) 2012.04.18
Posted by blueasa
, |

TortoiseSVN으로 brench/tag를 관리해 보자.

 

작업하기 전에 SVN서버에 디렉토리를 만들때 repository/project01/trunk 형태로 만들고 trunk 아래에 project의 모든 파일을 둔다. 그렇게 하고 모든 작업은 trunk에서 한다.

 

 

<< brench >>

 

brench를 만들 필요가 생기면(코드에 큰 변화가 있거나, 기능을 테스트 하거나, 수정기간이 오래걸릴때 등등..)

 

먼저 trunk폴더를 commit이나 update해서 최신상태로 만든다.

탐색기의 trunk 폴더에 마우스 오른쪽 클릭해서 Brench/tag 를 클릭한다.

Copy(Brench/tag) 창이 뜬다.

To URL에 복사본을 만들 폴더경로를 입력한다. 필요하면 ... 버튼 눌러서 SVN서버에 직접 필요한 폴더를 만든다.

project01/brenches/funcA 라고 입력하려면 brenches 폴더까지는 존재해하고 funcA폴더는 없어야 한다.

project01/brenches/funcA <-- 이 경로의 의미는 funcA란 기능을 테스트하기위한 brench를 만들겠다는 의미다.

brench는 한꺼번에 여러개 만들어놓고 사용할 경우가 있기때문에 brenches폴더를 따로 만들어 한꺼번에 관리하는게 폴더구조가 깔끔할듯 함.

 

이렇게 해놓고 필요하면 Log message를 입력하고나서,

맨 아래쪽에 있는 Switch working copy to new brench.tag 를 체크하고 OK를 누르면 SVN서버에 brech가 한개 만들어지게 된다.

 

이상태는 trunk폴더는 repository/project01/brench/funcA사본에 연결된 상태이다.

반드시 trunk폴더를 repository/project01/trunk 사본에 연결시켜야 된다.

이거 안하면 낭패본다.


Switch working copy to new brench.tag 이거를 체크 안하면 trunk폴더를 따로 Switch해줄 필요는 없는것 같다.

(이게 좋겠다..)


 

여기까지하면 서버의 repository/project01/ 에는 trunk, brench/funcA 폴더가 있고, 두 폴더에는 똑같은 파일들이 있다.

이 상태에서 탐색기의 project01 폴더에서 update해보면 서버의 폴더구조가 그대로 내려온다.

trunk에서의 작업은 trunk 폴더에서 trunk로 switch해서 작업하고,

brench/funcA 에서의 작업은 brench/funcA 폴더에서 brench/funcA로 switch해서 작업하면 됨.

 

 

*** 조심할 내용 ***

탐색기의 trunk 폴더에서 작업하더라고 switch 를 brench/funcA로 해두면 brench/funcA 의 내용이 다운받아진다.

이상태로 작업하고 commit하면 당연히 서버의 brench/funcA내용이 갱신된다. update도 마찬가지인다.

이거 햇갈리면 큰일난다. <-- 반나절 삽질후 깨달음... OTL

즉 swich라는것은 project01안의 여러사본중에 어떤 사본을 다운받아서 작업할지 선택하는 것임.

 

 

<< merge >>

 

brench/funcA 에서 작업이 끝나면 trunk로 merge한다.

trunk폴더에서 trunk로 switch해 놓은 상태로 마우스 오른쪽 클릭해서 merge 선택한다.

세가지 merge 타입을 선택하라고 하면 제일 위의 것(Merge a range of revision) 선택 하고 next

URL to merge from : brench/funcA의 경로를 선택

Revision range to merge : brench/funcA의 리비전중에서 merge할 범위(선택 안하면 모든 리비전을 다 merge함)

Working Copy : trunk의 경로

위와같이 입력하고 next -> Test merge해보면 어떻게 merge될지 미리한번 볼 수 있음.

merge 버튼을 누르면 brench/funcA의 변경,추가사항이 trunk로 합쳐진다.

같은 파일을 같이 수정한것들이 있으면 conflict 될것이고, 이 경우는 코드를 보면서 하나씩 수정해 줘야한다. (이런것까지 자동으로 할수는 없음...)

trunk에 적용되어있는 변경내용은 commit해줘야 서버의 trunk 폴더에 적용이 된다.

 

 

<< tag >>

 

tag는 merge와 똑같다.

tags라는 폴더를 만들어 놓고 여러개의 tag를 관리하길 추천함.

tags/release_version1.0,  tags/release_version2.0  같은 식으로..

이렇게 만들어진 tags는 건드리면 안됨.

현재 상태를 완벽하게 보관하기 위해서 사용함.



[출처] TortoiseSVN - branch, tag, merge, switch|작성자 베이스캠프

반응형

'Tip & Tech > TortoiseSVN' 카테고리의 다른 글

excel, word, ppt 가 동일한지 판별하기  (0) 2013.04.26
TortoiseSVN tag/branch = copy  (0) 2012.04.18
TortoiseSVN Beginner Guide  (0) 2012.04.18
Posted by blueasa
, |

[파일]



tortoisesvn_beginner_guide.doc


반응형

'Tip & Tech > TortoiseSVN' 카테고리의 다른 글

excel, word, ppt 가 동일한지 판별하기  (0) 2013.04.26
TortoiseSVN tag/branch = copy  (0) 2012.04.18
TortoiseSVN - branch, tag, merge, switch  (0) 2012.04.18
Posted by blueasa
, |

Latest Update 5/01/09
New Shader, codenamed 'Bleach' (for reasons I'll explain in a moment):
- Improved Vertex Color and Alpha support
- Tweaked the glow system to reduce blown-out glowing
- Added Light Attenuation (not yet linked to the lights' actual attenuation settings, but very good for moody lighting)
- Added Fresnel Highlights
- Added some simple subsurface scattering (nice alliteration, eh?)
- Added 'glowthru' subsurface scattering
- Half-Lambert is now tied to the alpha channel of the SSS map for added control
- Added a "Bleach Bypass" filter. Hence the shaders name. This is by no
means the marquee feature, its just a nifty little addition.

This shader is still a bit raw I feel, so I wanted to get it into your hands and see if you folks can exploit it to the point of breaking. So test the heck out of this and give me some feedback. With DomWar going on, I'm sure you all have nearly-complete characters to use as guinea pigs. 

Shader_Donze_Bleach_Beta.fx
Shader_Donze_Bleach_NoShad.fx




Important Info Concerning All Shaders
Any of the reflective shaders require DDS format cube maps for the environment. Since alot of folks don't know what a cube map or DDS is (or how to make them), here are a few samples that you can use:
Desert Scene
City Scene
Blurred version of Desert Scene (Good for brushed metal look)

I would like to encourage any of you to post images of work you've created with these shaders. Particularly when I start posting some of my more advanced shaders, I'd be very interested to see how you can get the most out of them. Hope you enjoy them!

Each shader has a 'No-Shadows' counterpart. Versions of Max prior to 2008 don't support shadows, so you'll need the no shadow version if you have Max9 or something.




NEW! COMPLETE SHADER - (requires Pixel Shader 3.0)
LAST UPDATED 4/13/09 - Version 1.1 Improved glow and added Vertex Color support
Shader_Donze_Complete.fx
Shader_Donze_Comp_NoShadows.fx




STANDARD SHADER
LAST UPDATED 1/30/09 - 4 lights and proper opacity support.
Shader_Donze_Std.fx
Shader_Donze_Std_NoShadows.fx




GLOW SHADER - (requires Pixel Shader 3.0 support for now)
LAST UPDATED 1/30/09 - 4 lights and proper opacity support.
Shader_Donze_Glow.fx
Shader_Donze_Glow_NoShadows.fx
Note: Still has one odd little bug, but I've not been able to fix it yet. Most people will never notice it anyway.




ENVIRONMENT SHADER - (requires Pixel Shader 3.0)
LAST UPDATED 1/30/09 - 4 lights and proper opacity support plus Fresnel reflectivity.
Shader_Donze_Env.fx
Shader_Donze_Env_NoShadows.fx




SKIN SHADER - (requires Pixel Shader 3.0)
LAST UPDATED 12/5/08 - first pass at skin.
Shader_Donze_Skin.fx
Shader_Donze_Skin_NoShadows.fx
Note: The skin shader has a lot of advanced features. For an explanation of them go HERE.




GLASS SHADER - (requires Pixel Shader 3.0)
LAST UPDATED 12/14/08 - first pass at glass.
Shader_Donze_Glass.fx
Shader_Donze_Glass_NoShadows.fx




TOON SHADER - (requires Pixel Shader 3.0)
LAST UPDATED 11/30/08 - first pass at toon shading.
Shader_Donze_Toon.fx
Shader_Donze_Toon_NoShadows.fx
Note: The outline part of the code is a bit shaky right now so the 'Line Thickness' setting is currently inactive.[/url]

Here's a quick explanation of the basic features available in all of my shaders. First, for those of you that have no idea how to even get a shader onto a model, here's a quick tut:

Bring up your Material Editor. Choose a material that you would like to be a DX Shader. Now in the top right there is a button that probably says "Standard" (circled in red here). Click that and you'll be presented with the menu pictured on the left. Choose "DirectX Shader" from that menu.




Voila, your material is now a shader. Now, to make it a specific shader (like the one you just downloaded from this thread) click on the big button at the top, circled here in red.



This is a path to an .fx file. So, find the one you like and select it. There are actually a bunch that ship with Max, but they are mostly for demonstraion and not all that useful.


So, once you've loaded my shader, your Material Editor will turn into this:


Now, let me explain what all of this means (most of it is pretty self-explanatory)
First, lets actually start at the bottom. The Material slot can pretty much be ignored. But, if you have an insatiable thirst for knowledge, this is a separate material that Max will use to display your model if you disable DirectX or if you try to render the scene (DirectX shaders don't render, but they really don't need to)

More importantly, at the bottom is also an option for "Technique." You have 2 options here, SingleLight and DualLight. This will tell the shader how many lights to use to light your model.

Now, back at the top, you'll see there are slots where you can specify lights and shadow casters. These, obviously, are where you specify what lights to use. If you have the Technique set to Single Light, then only "Light Position 1" and "shadowCaster1" will matter. Generally you will want the Light Position to match its cooresponding shadowCaster.

Below the lights, there is a slew of map options. First are the Diffuse Map options. This will set the color of the model. There is a "Diffuse Map" and a "Diffuse Color." If you check the box that says "Enable Diff Map" then the shader will use the Map you have selected in the Diffuse Map slot. If you uncheck "Enable Diff Map" then the shader will just use the color that you've selected in the Diffuse Color slot.

The same applies for the Specular Map. The spec map however, also has a few extra options for Glossiness. This shader is set up so that the alpha channel of the Spec Map can be used to control glossiness. If you do not want that option, you can just uncheck the box and use the spinner to control glossiness.

Next is the Normal Map. The only tricky thing here is the "Invert Green Channel" option. Basically, Max uses a somewhat oddball coordinate system. Because of this, your normal map's Green Channel needs to be inverted depending on how you generated your normal maps. So, if you select a normal map and it looks a little weird, try using this option.

You can also turn on "Half-Lambert" lighting. This is a little trick developed by Valve a long time ago. It basically softens the lighting, giving a more appealing but less-accurate look.



[출처] MAX Shader - DirectX Buzzy's Shaders|작성자 온새미로

반응형
Posted by blueasa
, |