c# winform 프로그램 파라미터 받아오는..
Main Load 이벤트에서
Environment.CommandLine() 함수를 사용하여
처리가능하다
커맨드라인의 첫번째는 프로그램 경로 두번째는 실행하는 파일의 경로
이상!
<화면 1> Form1의 구성 | <화면 2> Form2 추가하기 |
<화면 3> 영어를 지원할 수 있도록 속성창 변경하기 | <화면 4> Language를 영어로 설정했을 경우의 Form2 구성 |
<화면 5> 예제 2의 Form1의 구성 |
| ||||
<화면 6> resource1.resx가 추가된 모습 |
<화면 7> resource1.resx에 값이 추가된 모습 |
<화면 8> resource1.en-US.resx 파일 |
<화면 9> 한국어 실행화면 | <화면 10> 영어 실행화면 |
'*** get current Assembly object. Dim asm As Assembly = Assembly.GetExecutingAssembly() '*** load embedded resource into stream Dim ResourceName As String = "LitwareSmartClient.LitwareLogo.png" Dim str As Stream = asm.GetManifestResourceStream(ResourceName) '*** convert stream into image and load in '*** picture box Dim img As Image = Image.FromStream(str) PictureBox1.Image = img
'*** get current Assembly object. Dim asm As Assembly = Assembly.GetExecutingAssembly() '*** load embedded SQL resources file Dim SqlResourceName As String = "LitwareSmartClient.GetProducts.sql" Dim strSQL As Stream = asm.GetManifestResourceStream(SqlResourceName) Dim reader As New StreamReader(strSQL) Dim sql As String = reader.ReadToEnd reader.Close() '*** load embedded XML resources file Dim XmlResourceName As String = "LitwareSmartClient.Customers.xml" Dim strXML As Stream = asm.GetManifestResourceStream(XmlResourceName) Dim xmlDoc As New XmlDocument() xmlDoc.Load(strXML) strXML.Close()
<root> <data name="MainFormCaption"> <value>Litware Customer Manager</value> </data> <data name="UserWelcome"> <value>Good day</value> </data> <data name="ErrorMessage1"> <value>Oh no, Something went wrong!</value> </data> </root>
RESGEN.EXE LitwareStrings.resx LitwareStrings.resources
AL.EXE /t:library /out:LitwareStrings.resources.dll /link:LitwareStrings.resources
Dim asm As Assembly = Assembly.Load("LitwareStrings.resources") Dim rm As New System.Resources.ResourceManager("LitwareStrings", asm) Dim caption As String = rm.GetString("MainFormCaption")
RESGEN.EXE LitwareStrings.resx LitwareStrings.resources /str:vb
Shared ReadOnly Property MainFormCaption() As String Get Return ResourceManager.GetString("MainFormCaption", resourceCulture) End Get End Property
Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Text = _ My.Resources.LitwareStrings.MainFormCaption Me.lblUserWelcome.Text = _ My.Resources.LitwareStrings.UserWelcome End Sub
Private Sub LoadResources() '*** load project-level resources Me.Text = My.Resources.MainFormCaption Me.lblWelcomeMessage.Text = My.Resources.UserWelcome End Sub
Me.picLogo.Image = My.Resources.LitwareLogo Dim xmlDoc As New Xml.XmlDocument xmlDoc.LoadXml(My.Resources.Customers)
Dim culture1 As CultureInfo = New CultureInfo("en-US") Dim culture2 As CultureInfo = New CultureInfo("en-GB") Dim culture3 As CultureInfo = New CultureInfo("fr") Dim culture4 As CultureInfo = New CultureInfo("fr-BE")
'*** determine current culture and current UI culture Dim t As Thread = Thread.CurrentThread Dim currentCulture As CultureInfo = t.CurrentCulture Dim currentUICulture As CultureInfo = t.CurrentUICulture '*** display cultures in console Console.WriteLine("Current Culture: " & currentCulture.Name) Console.WriteLine("Current UI Culture: " & currentUICulture.Name)
My.Application.ChangeUICulture("fr-BE")
'*** code in ApplicationEvents.vb Namespace My Partial Friend Class MyApplication Private Sub MyApplication_Startup(ByVal sender As Object, _ ByVal e As StartupEventArgs) Handles Me.Startup '*** initialize application by setting preferred language Dim lang As String = My.Settings.UserLanguagePreference My.Application.ChangeUICulture(lang) End Sub End Class End Namespace
'*** retrieve user's language preference Dim lang As String = CType(sender, Control).Tag '*** save user setting My.Settings.UserLanguagePreference = lang My.Settings.Save() '*** change application's UI culture My.Application.ChangeUICulture(My.Settings.UserLanguagePreference) '*** call custom method to reload localized strings LoadResources()
Me.Text = My.Resources.MainFormCaption Me.lblWelcomeMessage.Text = My.Resources.UserWelcome
<Assembly: System.Resources.NeutralResourcesLanguage("en")>
Dim crm As ComponentResourceManager crm = New ComponentResourceManager(GetType(Main)) crm.ApplyResources(cmdAddCustomer, cmdAddCustomer.Name) crm.ApplyResources(mnuFile, mnuFile.Name) crm.ApplyResources(mnuFileAddCustomer, mnuFileAddCustomer.Name)
Send you questions and comments for Ted to instinct@microsoft.com.
/*Lognormdist = NORMSDIST((LN(x) – mu)/sigma) eg:- Lognormdist(0.367879441,3,2) will give 0.022750062 with this function and in excel it will give 0.022750132*/
/* Note: Doouble quotes for “en-US” and “F” may not be properly shown while pasting this code.you need to manaully remove the double quotes and add it again*/
public double Lognormdist( double x, double zeta, double sigma)
{
/*Gets a NumberFormatInfo associated with the en-US culture.*/
System.Globalization.NumberFormatInfo nfi =new System.Globalization.CultureInfo( “en-US”, false ).NumberFormat;nfi.NumberDecimalDigits = 9;
double u = (Math.Log(x) – zeta)/sigma; double p = this.NormalDistribution(u);
return Convert.ToDouble(p.ToString(“F”, nfi) );
}
private double NormalDistribution(double X)
{
/* Gets a NumberFormatInfo associated with the en-US culture.*/
System.Globalization.NumberFormatInfo nfi =new System.Globalization.CultureInfo( “en-US”, false ).NumberFormat;nfi.NumberDecimalDigits = 9;
double L = 0.0; double K = 0.0; double dCND = 0.0; const double a1 = 0.31938153; const double a2 = -0.356563782; const double a3 = 1.781477937; const double a4 = -1.821255978; const double a5 = 1.330274429;L = Math.Abs(X);K = 1.0 / (1.0 + 0.2316419 * L);dCND = 1.0 – 1.0 / Math.Sqrt(2 * Convert.ToDouble(Math.PI.ToString())) * Math.Exp(-L * L / 2.0) * (a1 * K + a2 * K * K + a3 * Math.Pow(K, 3.0) + a4 * Math.Pow(K, 4.0) + a5 * Math.Pow (K, 5.0));
if (X < 0){double ff = Convert.ToDouble(dCND.ToString( “F”, nfi )); return 1.0 – dCND;}
else{ return dCND;}
}
register unsigned int variable_name;
Time (numerator / denominator) = C0 + C1* log2 (numerator / denominator) = C0 + C1 * (log2 (numerator) - log2 (denominator)).널리 쓰이는 버젼은 약 20+4.3N의 사이클을 보여준다. ARM 뿐만 아니라 프로세서를 막론하고 이런 연산은 피하는게 바람직하다. 나눗셈연산은 가능하다면 곱셈으로 대체해서 사용하기 바란다.
int func_div_and_mod (int a, int b) { return (a / b) + (a % b); }
for (i = 0; i < n; i++) sum += i;보다는 아래가 낫다.
n(n+1) * 0.5천재 수학자의 어린시절 이야기를 들은 기억이 있다. 자리를 비운 사이 얘들이 놀지 못하게 하려고 1부터 100까지 더하라는 문제를 냈는데, 5분만에 풀고 놀았더란 얘기다. (수학자 파스칼의 어린시절 얘기이던가 가물가물 하다.)
1234 & 1 ? printf("짝수\n"):printf("홀수\n"); 이런 방법도 가능하다. 1234 << 31 ? printf("짝수\n"):printf("홀수\n");당연히 % 연산보다 훨씬 효율적이다.
typedef unsigned int uint; uint div32u (uint a) { return a / 32; } int div32s (int a){ return a / 32; }이경우에도 signed 값보다는 unsigned 로 나누어질 수 있도록 함수를 조절할 필요가 있다. signed의 경우에는 더많은 시간이 소비된다. 왜냐하면 오른쪽으로 쉬프트 시킬경우 가장왼쪽의 비트를 0으로 만들어주는 연산이 한번더 들어가기 때문이다.
#include <stdio.h> int main() { unsigned int a = 1024; unsigned b, c; b = a/32; // --- 1 c = a >> 5; // --- 2 }1과 2는 동일한 결과를 보여주며, 컴파일러내에서도 동일하게 shift 처리된다. 다음은 intel 프로세서에서 gcc로 컴파일된 어셈블리어중 1과 2에 해당되는 부분의 코드다.
movl $1024, -12(%ebp) movl -12(%ebp), %eax shrl $5, %eax # b = a / 32 movl %eax, -8(%ebp) movl -12(%ebp), %eax shrl $5, %eax # c = a >> 5
if(a==1) { } else if(a==2) { } else if(a==3) { } else if(a==4) { } else if(a==5) { } else if(a==6) { } else if(a==7) { } else if(a==8) { }이경우 2개로 나누어서 조건 검사를 하도록 한다.
if(a<=4) { if(a==1) { } else if(a==2) { } else if(a==3) { } else if(a==4) { } } else { if(a==5) { } else if(a==6) { } else if(a==7) { } else if(a==8) { } }이렇게 하면 최악의 경우 비교횟수가 절반이 됨을 알 수 있다. 필요에 따라서는 아래와 같이 3중루프 코드로 만들 수도 있다. 좀더 빠르게 동작하긴 하겠지만 코드가 보기 어려워진다는 단점이 생긴다.
if(a<=4) { if(a<=2) { if(a==1) { /* a is 1 */ } else { /* a must be 2 */ } } else { if(a==3) { /* a is 3 */ } else { /* a must be 4 */ } } } else { if(a<=6) { if(a==5) { /* a is 5 */ } else { /* a must be 6 */ } } else { if(a==7) { /* a is 7 */ } else { /* a must be 8 */ } } }
switch ( queue ) { case 0 : letter = 'W'; break; case 1 : letter = 'S'; break; case 2 : letter = 'U'; break; }혹은 if else 문을 사용할 수도 있을 것이다.
if ( queue == 0 ) letter = 'W'; else if ( queue == 1 ) letter = 'S'; else letter = 'U';
static char *classes="WSU"; letter = classes[queue];
uint modulo_func1 (uint count) { return (++count % 60); } uint modulo_func2 (uint count) { if (++count >= 60) count = 0; return (count); }if 문은 나머지 연산자보다 빠른코드를 생성한다. 주의 할점은 2번째 함수의 경우 0에서 60사이의 값에 대해서만 제대로 측정이 된다는 점이다.
void func1( int *data ) { int i; for(i=0; i<10; i++) { anyfunc( *data, i); } }
void func1( int *data ) { int i; int localdata; localdata = *data; for(i=0; i<10; i++) { anyfunc ( localdata, i); } }
int f(void); int g(void); int h(void); int errs; void test1(void) { errs += f(); errs += g(); errs += h(); } void test2(void) { int localerrs = errs; localerrs += f(); localerrs += g(); localerrs += h(); errs = localerrs; }test1은 매번 전역변수를 로드해야 한다. 반면 test2의 경우 레지스터에 등록된 localerrs에 값을 저장하고 마지막에 한번만 전역변수에 접근함을 알 수 있다.
int wordinc (int a) { return a + 1; } short shortinc (short a) { return a + 1; } char charinc (char a) { return a + 1; }3번째 코드가 가장 빠른결과를 보여줄 것이라고 생각할지도 모르지만, 1번째 코드가 가장 빠르게 작동한다.
void print_data_of_a_structure ( const Thestruct *data_pointer) { ...printf contents of the structure... }이렇게 하면 컴파일러는 인자로 넘어온 포인터가 수정할 수 없는 외부 구조체라는 것을 알게 된다. 이렇게 되면, 값이 사용될 때마다 다시 읽혀질 필요가 없어지게 된다. 또한 이러한 코드는 실수로 구조체 멤버의 변수를 바꾸는 것과 같은 실수를 하지 않도록 해준다.
typedef struct { int x, y, z; } Point3; typedef struct { Point3 *pos, *direction; } Object; void InitPos1(Object *p) { p->pos->x = 0; p->pos->y = 0; p->pos->z = 0; }이럴 경우 p->pos 를 다른 포인터에 할당해서 접근하도록 하자. 이렇게 하면 p->pos 가 캐쉬되므로 좀더 효율적으로 작동하게 된다.
void InitPos2(Object *p) { Point3 *pos = p->pos; pos->x = 0; pos->y = 0; pos->z = 0; }코드가 좀더 보기 좋아진다는 효과도 노릴 수 있다.
char * Condition_String1(int condition) { switch(condition) { case 0: return "EQ"; case 1: return "NE"; case 2: return "CS"; case 3: return "CC"; case 4: return "MI"; case 5: return "PL"; case 6: return "VS"; case 7: return "VC"; case 8: return "HI"; case 9: return "LS"; case 10: return "GE"; case 11: return "LT"; case 12: return "GT"; case 13: return "LE"; case 14: return ""; default: return 0; } }위의 코드는 아래와 같이 좀 더 효율적인 코드로 만들 수 있다. 덤으로 보기에도 편하다.
char * Condition_String2(int condition) { if ((unsigned) condition >= 15) return 0; return "EQ\0NE\0CS\0CC\0MI\0PL\0VS\0VC\0HI\0LS\0GE\0LT\0GT\0LE\0\0" + 3 * condition; }첫번째 루틴은 240byte가 필요하지만 두번째 루틴은 72바이트만 소모되고 있다.
int fact1_func (int n) { int i, fact = 1; for (i = 1; i <= n; i++) fact *= i; return (fact); } int fact2_func(int n) { int i, fact = 1; for (i = n; i != 0; i--) fact *= i; return (fact); }
for (i = 0; i < 10; i++) {...}i는 0,1,2,3,4,5,6,7,8,9 로 1씩 증가할 것이다.
for (i = 10; i--;) {...}첫번재 코드보다 두번째 코드가 더 빠른 수행능력을 보여준다.
for (i = 10; i ; i--) { } 혹은 for (i = 10; i!=0; i--) { }이들은 모두 동일한 수행능력을 보여준다.
for(i=0 ; i<100 ; i++) { func(t,i); } - - - void func(int w,d) { lots of stuff. }
func(t); - - - void func(w) { for(i=0 ; i<100 ; i++) { //lots of stuff. } }
int countbit1(uint n) { int bits = 0; while (n != 0) { if (n & 1) bits++; n >>= 1; } return bits; }
int countbit2(uint n) { int bits = 0; while (n != 0) { if (n & 1) bits++; if (n & 2) bits++; if (n & 4) bits++; if (n & 8) bits++; n >>= 4; } return bits; }
found = FALSE; for(i=0;i<10000;i++) { if( list[i] == -99 ) { found = TRUE; } } if( found ) printf("Yes, there is a -99. Hooray!\n");
found = FALSE; for(i=0; i<10000; i++) { if( list[i] == -99 ) { found = TRUE; break; } } if( found ) printf("Yes, there is a -99. Hooray!\n");
for(i=0; i<3; i++){ something(i); }보다는 아래의 코드가 더 효율적이다.
something(0); something(1); something(2);
//Example 1 #include<STDIO.H> #define BLOCKSIZE (8) void main(void) { int i = 0; int limit = 33; /* 33 번 함수를 호출한다 */ int blocklimit; /* The limit may not be divisible by BLOCKSIZE, * go as near as we can first, then tidy up. */ blocklimit = (limit / BLOCKSIZE) * BLOCKSIZE; /* 한번의 루프에서 8번의 함수를 호출해서 루프의 순환횟수를 줄이고 있다. */ while( i < blocklimit ) { printf("process(%d)\n", i); printf("process(%d)\n", i+1); printf("process(%d)\n", i+2); printf("process(%d)\n", i+3); printf("process(%d)\n", i+4); printf("process(%d)\n", i+5); printf("process(%d)\n", i+6); printf("process(%d)\n", i+7); /* counter 업데이트 */ i += 8; } /* * 8의 배수만큼 함수를 호출하고 있으므로, 처리하지 못한 함수가 생긴다. * 아래에서 처리하지 못한 함수를 호출한다. */ if( i < limit ) { /* Jump into the case at the place that will allow * us to finish off the appropriate number of items. */ switch( limit - i ) { case 7 : printf("process(%d)\n", i); i++; case 6 : printf("process(%d)\n", i); i++; case 5 : printf("process(%d)\n", i); i++; case 4 : printf("process(%d)\n", i); i++; case 3 : printf("process(%d)\n", i); i++; case 2 : printf("process(%d)\n", i); i++; case 1 : printf("process(%d)\n", i); } } }
int f1(int a, int b, int c, int d) { return a + b + c + d; } int g1(void) { return f1(1, 2, 3, 4); } int f2(int a, int b, int c, int d, int e, int f) { return a + b + c + d + e + f; } ing g2(void) { return f2(1, 2, 3, 4, 5, 6); }6개의 인자를 사용하는 f2와 g2함수는 스택에 저장되어 있는 인자를 꺼내기 위해서 2번의 메모리 접근이 더 발생하게 된다.
__inline int square(int x) { return x * x; } #include <MATH.H> double length(int x, int y){ return sqrt(square(x) + square(y)); }인라인 함수를 이용함으로써 얻을 수 있는 이득은 다음과 같다.
제작한 홈페이지를 인터넷에서 운영하기 위해서는 도메인이 필요합니다. 물론 호스팅업체에서 제공하는 도메인(예:YourID.site.com)이 있지만 보기에도 좋지 않으며 호스팅을 옮겨야 할 경우 해당 도메인을 사용할 수 없게 되어 기존의 도메인으로 방문하던 방문자와 링크를 모두 잃게 되게 됩니다. 단순한 연습용 홈페이지가 아니라면, 호스팅은 무료를 이용하게 되더라도 도메인만큼은 구입해 놓는게 좋습니다.
검색엔진의 관점에서 본다면 도메인은,
방문자의 입장에서는,
위와 같은 것들을 고려해서 도메인을 선택해야 하는데 크게 두가지 방법이 있습니다.
인터넷을 사용하면서 일반인이 접할 수 있는 도메인은 아래와 같이 크게 두 종류가 있습니다.
위와 같은 도메인이 모두 등록 가능한 것은 아닙니다. 자신이 살고 있는 국가나, 특정 자격 조건에 의해 등록할 수 있는 것이 있고 없는 것도 있습니다. 한국에 거주하는 일반 사용자들이 등록할 수 있는 도메인은 대락 다음과 같습니다.
가비아, 호스팅케이알 ,아이네임즈, 미리내, 블루웹 등 국내에는 많은 도메인 업체들이 있습니다. 따져 보면 비싼 곳도 있고, 상대적으로 저렴한 업체도 있고, 제공하는 서비스도 조금씩 차이가 있지만, 기본적인 기능은 다 제공하고 있기 때문에, 어떤 업체를 선택하더라도 사용에 별 지장은 없습니다. 해당 업체들에 대한 자세한 가격과 정보들은 이 페이지 상단에 있는 유,무료 도메인 메뉴에 자세히 나와 있습니다.
좀 더 다양한 국제 도메인을 원한다면 해외 도매인 등록업체를 알아 볼 수도 있습니다. 그리고 일반적으로 com, org, net, info 등의 도메인은 국내의 업체보다 저렴합니다. 결제는 보통 신용카드나 페이팔로 가능합니다. 페이지 상단에 있는 ‘유,무료 도메인’ 메뉴에 해외 도메인 업체에 대한 자세한 정보가 나와 있습니다.
Godaddy.com – 국내에서도 널리 알려진 업체로 com, org, info, net 등의 도메인 가격이 싼 편입니다.
Moniker – 아주 다양한 도메인을 검색하고 구매할 수 있습니다.
1&1.com – 도메인과 호스팅을 동시에 이용할 경우 좋은 조건이 많이 있습니다. 타 업체와 달리 주민등록증이나 여권같은 신분증을 요구할 수도 있습니다.
도메인 검색은 도메인 등록기관(등록 대행 업체)를 통해서 가능하며 특별히 어려운 점은 없습니다. 각 업체마다 보통 아래 스크린샷과 같은 검색창이 있는데 원하는 도메인을 입력하고 검색하면 등록가능 여부를 확인해 볼 수 있습니다.
도메인을 등록한다는 것은 해당 도메인을 일정기간 사용하겠다는 것을 뜻합니다. 영원히 자신의 소유가 되지 않습니다. 짧게는 1년 길게는 10년 정도의 기간이 가능하며, 만료기간이 되면 다시 연장이 가능하므로 소유기간을 짧게 해도 됩니다. 도메인 등록방법은 인터넷 쇼핑몰 결제보다 더 간단해서 특별히 설명할 부분이 없습니다. 한가지 주의할 점은 꼭 자신의 명의로 등록해야 합니다. 나중에 소유권을 변경하거나 할 때 문제가 발생할 수 있습니다.
도메인의 소유자가 만료일까지 도메인을 연장하지 않을 경우, 만료일이 끝나고 한달 정도 지나면 누구나 그 도메인을 구매할 수 있게 되는데, 이것을 낙장 도메인이라고 합니다. 낙장도메인이 좋은 점은,
낙장도메인의 정보는 등록업체에서 제공하기도 하며, nakjang.kr에서도 자세히 검색해 볼 수 있습니다. 좋은 도메인일 경우 경쟁이 치열해서 낙장 당일날 등록하기 힘들 수 있으므로, 등록업체에서 예약을 해 두는게 좋습니다. 이 경우 예치금으로 비용이 약간 더 들어가게 됩니다. 그리고 경쟁이 치열한 도메인일 경우, 예약한다고 해서 반드시 등록되지는 않습니다. 등록실패의 경우는 대부분 환불은 안되고, 그 예치금으로 다른 도메인을 예약하거나 구매할 수 있습니다.
도메인 중에는 등록비용 없이 무료로 사용할 수 있는 것들도 있습니다. 대부분 이런 것들은, 네임서버 변경을 해주는 것이 아니라 단순히 포워딩만을 해주며, 또한 접속시 팝업창 같은 광고가 뜨는 것도 있습니다.
하지만 무료 도메인 중에도, 아래와 같이, 네임서버를 지원하면서 광고도 없는 것들도 몇 개 있습니다. 페이지 상단에 있는 ‘유,무료 도메인’ 메뉴에 무료 도메인에 대한 자세한 정보가 나와 있습니다.
co.cc – 가장 유명한 무료도메인으로 국내업체입니다. 네임서버를 지원하며 광고도 없고, 일반 도메인처럼 사용이 가능합니다. 하지만 상업적인 용도로 사용시에는 소액의 비용이 발생합니다.
cz.cc – 해외 업체로 co.cc와 비슷합니다. 아직까지는 무료라고 말하고 있지만 co.cc처럼 시간이 지나면 상업적인 용도로 사용시 돈을 내야한다는 조건을 걸지도 모릅니다.
Tk – ‘yoursite.tk’와 같은 형식으로 도메인 사용이 가능합니다. 네임서버와 포워딩을 지원하고 한국어 설명도 지원하고 있습니다.
호스팅업체의 호스트는 숫자로 된 네자리의 고유주소(IP:Internet Protocol)를 가지고 있습니다. 도메인이 없어도 브라우저에 이 IP를 입력하면 자신의 호스팅으로 연결이 됩니다. 도메인은 사람들이 사용하기 편하게 하기 위해 사용하는 것으로, 도메인을 구입한 후에는 사용하고 있는 호스팅업체의 호스트의 IP로 구입한 도메인을 연결해야합니다. 네임서버(DNS)는 ‘Domain Name System’의 줄임말로 각각의 도메인을, 해당하는 IP 주소로 연결시켜주는 역할을 합니다.
KR도메인의 경우 과거에는 네임서버 변경을 KRNIC 에서 했습니다. 지금은 등록기관의 홈페이지를 통해서 해당 호스팅업체의 네임서버로 바로 변경할 수 있습니다.
우선 사용하고 있는 웹호스팅업체의 홈페이지로 가서 네임서버를 알아냅니다. 보틍은 왼쪽 그림처럼 사이트의 메인페이지에 나와 있습니다. 비상시를 대비해서 보통 네임서버 주소는 2~5개 정도가 됩니다.
호스팅 업체의 네임서버 주소를 야래 그림처럼, 도메인 등록업체의 네임서버 정보 관리창에 그대로 복사해서 입력하면 됩니다. 그러면 네임서버가 도메인 등록기관에서 호스팅업체로 변경이 됩니다. 보통 1~3일 정도 후면 브라우저에 도메인을 입력하면 자신의 호스팅으로 연결이 됩니다.
추후에 호스팅 업체를 바꾸게 될 경우, 위의 도메인 등록업체의 관리창에 그 호스팅업체의 네임서버로 변경해서 입력하면 호스팅업체를 바꾸더라도 똑같은 도메인으로 아무 이상없이 웹사이트를 계속 운영할 수 있게 됩니다.