2013.09.23 16:20

현재 MSDN Download Page

Lyn
조회 수 19526 추천 수 0 댓글 0
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

page.png


얼마전이랑 비교했을때 큰 변화는 없는데 Windows 8.1 Enterprise 가 올라왔네요.
그외엔 바뀐게 없어보입니다.

TAG •
?

Lyn
조회 수 2817 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

컴퓨터의 발전과 함께 발전해온 것 중 하나가 바로 폰트(Font) 이다.

컴퓨터를 초창기에는 계산용으로 사용했고, 그 다음으로 컴퓨터가 널리 보급 된 이유는 역시나 사무용이다. 타자기를 대체하기 위한 WordProcessor 라는 프로그램이 등장 한 이후, 압도적인 수정/복제의 편리함으로 타자기를 순식간에 밀어내고 컴퓨터가 널리 쓰이게 되었는데, 타자기에서 절대 흉내낼 수 없었던 워드프로세서의 장점 중 하나가 바로 다양한 폰트를 사용 할 수 있다는 것이다.

 

당연히 많은 폰트가 개발 되어 왔고, 프로그래머들은 그 폰트를 담을 파일 포맷 역시 설계해야 했다.
 

초창기에는 컴퓨터 모니터의 해상도가 워낙 낮았고, PC 성능또한 처참했기에 폰트 하나하나를 픽셀로 표현하는 방법을 사용했다. 바로 비트맵 폰트 라고 하는 녀석인데, 이것은 FON 확장자를 사용한다.
하지만 출력물의 해상도는 당시에도 모니터보다 훨씬 높았기 때문에(이것은 현재에도 대부분의 경우 마찬가지다. 자세한것 후술) 비트맵 폰트로는 좋은 출력물을 얻을 수 없었으며, 그 연구의 결과물이 바로 Adobe 가 만든 PostScript 포맷이다.
 

그 이후 애플이 Adobe에 대응하기 위해 새 포맷을 만들었는데, 바로 트루타입 폰트이다. PS 와 한가지 다른 특징을 가지고 있는데, 바로 2차원 베지어 곡선을 이용한다는 점이다. 이는 용량,속도에서 장점이 있고, 해상도가 낮은 모니터에서도 비교적 깔끔하게 보이는 특징이 있다. 나중에 LCD 같은 고정밀도의 디스플레이에 대응하기 위해 힌팅이 추가되었다(MS에서는 ClearType 이란 이름으로 XP 이후부터 지원한다). 확장자는 TTF 를 사용한다. TTF는 패밀리 폰트(이탤릭, 굵게 등등..) 을 넣을 수 없으므로, TTF 여러개를 묶는 컨테이너 포맷이 등장하게 되는데 이 포맷의 확장자는 TTC를 사용한다.

 

90년대 들어와서 MS는 새 파일 포맷을 만드는데, PS와 TTF 의 장점만을 취한 포맷으로 확장자는 OTF이다. PS 처럼 3차원 베지어 곡선을 사용하고, 자체적으로 패밀리 폰트를 지원한다. 3차원 베지어 곡선을 사용하므로 속도가 느리고 용량도 크며, 모니터에서는 곡선의 복잡도로 인해 제대로 표현히 되지 않는다는 단점이 존재한다. 주로 PS와 마찬가지로 출력물에서 사용한다.

 

그 외 HFT 같은 한컴에서 만든 폰트 포맷도 존재한다.
 

그러나 2015년 현재 시점에는 굉장히 아이러니한 상황이 벌어졋는데, MS Windows 에서 가장 많이 쓰는 포맷이 Apple 이 만든 TTF 이고, Apple OSX 에서 가장 많이 사용하는 포맷이 MS가 만든 OTF이다 (....) 
또 디스플레이도 상황이 많이 달라졋는데, "일반적인" 출판물의 DPI 는 지금도 300정도로 변함이 없지만, 스마트폰의 경우 500이 넘는 무식한 PPI를 지원하는 녀석들이 등장했다. 마찬가지로 PC에서도 250PPI를 넘는 디스플레이들이 많이 등장했는데, 당장 지금 본인이 쓰는 노트북만 해도 13.9인치 크기에 3200*1800 해상도를 자랑한다. 비교적 "저해상도" 를 지원하기 위한 기술들이 디스플레이가 고해상도화 되면서 난감한 상황이 된것. 이 상황이 오면서 가장 치명타를 입은게 MS Windows 인데, Windows 는 속도와 가독성 양쪽을 다 잡기 위해 2차원베지어곡선을 이용하는 TTF 포맷을 쓰면서 강력한 힌팅 알고리즘과 데이터를 이용해 가독성을 올리는 방법을 택했기 때문이다. 하지만 그대로 해상도가 깡패인 (...) 환경에서 이런 알고리즘은 도움이 되지 않았고, OS의 폰트가 전체적으로 예쁘지 않게 보이는 결과를 낳게 되었다(구형 맥을 보면 생각보다 폰트가 안이쁜걸 알 수 있다... 폰트가 정말 이뻐진건 레티나 디스플레이 장착한 머신 부터. 논리 해상도를 1440*900으로 1/4토막을 내면서 까지 극단적으로 폰트의 미려함을 추구한 OS이다). Windows 8 이후 추가된 UWA(윈도우 10 이전엔 Modern UI 라고 불럿다)에서는 결국 다른 방법으로 랜더링한다. ClearType 은 낮은 해상도에서 높은 가독성을 얻기 위함이지 높은 해상도에 최적화된 방법이 아니었기때문에..

?

Lyn
조회 수 27210 추천 수 0 댓글 0
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
#include <windows.h>
#include <cstdio>
#include <cstdlib>

bool isThreadWaiting(HANDLE ThreadHandle)
{
	bool Result = false;

	SuspendThread(ThreadHandle);
	CONTEXT ThreadContext;
	ThreadContext.ContextFlags = CONTEXT_CONTROL;
	BOOL a = GetThreadContext(ThreadHandle, &ThreadContext);
	INT_PTR* StackPointer = reinterpret_cast<INT_PTR*>(ThreadContext.Esp);

	HMODULE DLLHandle = LoadLibraryA("Ntdll.dll");
	INT_PTR WaitFunctionPtr = reinterpret_cast<INT_PTR>(GetProcAddress(DLLHandle, "NtWaitForSingleObject")); 
	//WaitForSingleObject의 종착점이 되는 함수가 NtWaitForSingleObject
	
	if ((*StackPointer >= WaitFunctionPtr) && (*StackPointer <= WaitFunctionPtr + 50))
	{
		//대충 +50을 해 주는 이유는 실제 복귀주소로 저장된 곳이 NtWaitForSingleObject의 시작주소가 아니라 조금 실행된 뒤이기 때문
		Result = true;		
	}

	FreeLibrary(DLLHandle);
	ResumeThread(ThreadHandle);

	return Result;
}

DWORD PASCAL ThreadFun1(PVOID Param)
{
	WaitForSingleObject(HANDLE(Param), INFINITE);

	return 0;
}

DWORD PASCAL ThreadFun2(PVOID Param)
{
	while(true)
	{
		Sleep(100000);
	}

	return 0;
}
void main()
{	
	HANDLE Event = CreateEvent(nullptr, TRUE, FALSE, nullptr);

	HANDLE Thread1 = CreateThread(nullptr, 0, &ThreadFun1, reinterpret_cast<LPDWORD>(Event), 0, nullptr);
	HANDLE Thread2 = CreateThread(nullptr, 0, &ThreadFun2, nullptr, 0, nullptr);

	Sleep(1000); //Thread 돌 시간좀 주고 ...

	printf("Is Thread1 Waiting? %s\n", isThreadWaiting(Thread1) ? "Yes" : "No");
	printf("Is Thread2 Waiting? %s\n", isThreadWaiting(Thread2) ? "Yes" : "No");

	system("pause");
}


sc1.png


Wait계열 함수가 몇종류 더 있는데 그것도 그냥 각자 처리해 주면 간단...


?

Lyn
조회 수 36762 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
아래코드는 C++ Builder 2009에서 테스트되었습니다.

//---------------------------------------------------------------------------

#include <vcl.h>
#include <vector>
#include <memory>
#include <iostream>
#include <cstdlib>
#pragma hdrstop

#include <tchar.h>

using namespace std;
using namespace std::tr1;

class Test
{
public:
    int i;
    Test()
    {
        cout << "Test is Create!" << endl;
    }
    Test(const Test& )
    {
        cout << "Test's Copy Constructor!" << endl;
    }
    ~Test()
    {
        cout << "Test is Destroy!" << endl;
    }
};
using namespace std;

//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
    cout << "스택에 1개 생성" <<endl;
    Test t1; // 생성 되고, 함수가 끝날때 파괴 될 것

    cout << "힙에 1개 생성" <<endl;
    Test* t2 = new Test; //생성
    cout << "힙에서 1개 파괴" <<endl;
    delete t2; //파괴

    cout << "스택에 10개 생성" <<endl;
    Test t3[10];
    vector<Test> v1;

    cout << "복사생성자가 작동한다" <<endl;
    for(int i=0;i<10;++i)
    {
        v1.push_back(t3[i]);
        //이렇게 하면 Copy Contructor 가 작동하므로 오버헤드가 큼
        //게다가 반드시 동적으로 할당해야 하는 VCL 객체에는 사용이 불가능
    }

    cout << "힙에 10개 생성 후 Vector에 넣는다" << endl;
    vector<Test*> v2;
    for(int i=0;i<10;++i)
    {
        Test* tt = new Test;
        v2.push_back(tt);
        //이렇게 하면 동적으로 할당할 수 있음.
        //그러나 vector 를 파괴하기 전에 일일히 루프를 돌면서 delete 해줘야함
        //vetror가 파괴될때 내장하고 있는 모든 객체를 파괴할 수는 없을까?
        //VCL 에서는 TObjectList 클래스를 제공한다! 그러나 이는 C++ 표준이 아니다.
        //게다가 Templete Class 가 아니라 Casting 을 추가로 해줘야 한다는 부담도있다
    }
    cout << "Vector 에 있는 10개를 파괴" << endl;
    for(int i = 10 - 1;i >= 0;--i)
    {
        delete v2[i];
    }

    cout << "shared_ptr 을 이용하여 넣는다" << endl;
    vector<shared_ptr<Test> > v3;
    for(int i=0;i<10;++i)
    {
        shared_ptr<Test> spt(new Test);
        v3.push_back(spt);
    //vector 인 v3 역시 Main이 끝나야 파괴됨.
    //v3이  파괴되기 전 shared_ptr 의 효과에 의해 v3 이 가지고있던 Test가 모두 파괴
    }

    cout << "벡터 자체를 동적으로 생성해서 테스트 해 보자" << endl;
    vector<shared_ptr<Test> > *v4 = new vector<shared_ptr<Test> >;
    for(int i=0;i<10;++i)
    {
        shared_ptr<Test> spt(new Test);
        v4->push_back(spt);
    }
    cout << "벡터를 박살내면 가지고 있던 Test 10개도 다 박살난다" << endl;
    delete v4;

    system("pause"); //이게 끝나야 Main 이 끝나므로 t1은 이 뒤에 파괴
    //vector 인 v3 역시 Main이 끝나야 파괴됨.
    //v3이  파괴되기 전 shared_ptr 의 효과에 의해 v3 이 가지고있던 Test가 모두 파괴
}
//---------------------------------------------------------------------------

/*
Ps. CopyConstructor 가 10번이 아닌 그 이상 실행 되는데.. 그 이유는 Vector 가 공간이 부족해서 재할당을 하면서 다시 복사생성자가 호출되기 때문입니다. 생각보다 오버헤드가 많이큽니다.
*/
?

Lyn
조회 수 2262 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

https://www.visualstudio.com/visualstudio-release-event-vs

 

많이 봐주세요

TAG •
?

Lyn
조회 수 689 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

http://blog.gaerae.com/2017/11/mozilla-microsoft-google-w3c-samsung-mdn-web-docs.html

 

문서화 잘해주던 MS가 참가하니 좀 더 나아지지 않을까 싶다..... 라고 생각하다가도 요즘 MS 보면 구글스러워 져서 걱정이 앞선다.

문서화 대충 안정화 대충 일단 던져놓고 유저들이 디버깅하게 만들기, 만들다가 중간에 버리기 등등 ...

?

Lyn
조회 수 546 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

닫을까 ...

?

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

놀것들 저장하는 서버로 전락해버렸네...

 

이걸 어째야하나 ...

?

Lyn
조회 수 1676 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

C++ Korea 에서 질문을 하나 받았습니다.

 

왜 아래 코드를 출력하면 결과가 1인가요? 라는 질문이었지요

struct Some
{
public:
    void func()
    {
        int i;
        i = 100;
        cout << i << endl;
    }
};

int main()
{
    cout << "Value : " << &Some::func << endl;
}

 

 

이걸 이해하려면 C++ 의 Type System 을 이해 하면 간단합니다.

 

첫째 :  &Some::func 는 Some의 Member function 으로서 void (Some::*foo)(void) 라는 Member Function Pointer Type을 가집니다.

 

둘째 : cout 은 stdout 을 대상으로 하는 출력 객체 이며 << 연산자에 대해 여러가지 type 으로 overloading 되어 있습니다.
실제 코드를 보면 bool, ushort ,short, int, uint, long, ulong, longlong, ulonglong, float, double, long double, void*, char, whcar_t, char* wchar_t* 에 대해 overloading 되어 있는것을 확인 할 수 있습니다(visual c++ 기준 ostream 헤더). string / wstring 에 대한 overloading 은 ostream 측에서 제공하는 것이 아니라 string 쪽에서 추가로 지원 하는 것이라 ostream 의 일부라 보기는 어렵습니다.

 

셋째 : overloading 된 함수를 호출 할 경우 완전히 매칭 되는 타입의 함수를 호출합니다.

하지만 내가 방금 만든 Class 의 MemberFunction Type 이 미리 준비 되어 있을리가 없겠죠

 

넷째 : 완전히 매칭되는 함수가 없을 경우 변환 가능한 가장 "적절한" type 의 함수로 호출합니다.
 

자 그럼 이제 어떤 type으로 캐스팅이 가능하냐를 봐야 하는데... 일단 정수형과 부동소수점은 딱 봐도 안될 것 같습니다.

문자 / 문자열포인터 역시 가지고 있는것이 string 일리가 없으므로 그렇게 암시적으로 캐스팅 하면 AccessVoliation 의 지름길일 겁니다.

그럼 void* 는 어떨까요? 임의의 pointer를 가지는 type 이지만 Member Function Pointer 만큼은 예외입니다.

void*는 일반적인 포인터 사이즈 이지만 Member Function Pointer 는 그렇지 않습니다. 상속을 어떤 구조로 어떻게 받느냐에 따라 크기가 변하지요

간단한 예로 

 

cout << sizeof(&iostream::flush);

 

를 실행시켜 보면 VC++ x64 기준 16Byte가 나오는 것을 볼 수 있습니다. 경우에 따라 크기가 달라지는 이 시스템은 C++만의 독특한 구현이며 이것이 std::function 이 나오기 전까지 임의의 member function 을 가지는 변수를 선언 할 수 없었던 이유이기도 합니다. 그래서 void* 도 아웃이네요

 

자 그럼 bool 하나만 남았는데... 그럼 Member Function Pointer 가 bool로 캐스팅 될 수 있을까요? 정답은 가능하다 입니다.

어렵게 생각 하실 것 없습니다. 그동안 Function Pointer 를 다루셧던 분들은 아래와 같은 코드를 보거나 혹은 사용해 보셨을 것입니다

 

if(ptr) {

   //dosomething

}

 

이런식으로 ptr 이 nullptr 이 아닌지 체크 하여 사용하는 코드가 가능햇죠. 이 말은 반대로 말하면 ptr이 if 의 조건 이 될 수 있다는 것이며 if 의 조건이 될 수 있다는 말은 C++ 에서는 bool 로 캐스팅 가능 하다는 이야기가 됩니다. 

C++ 표준 라이브러리의 많은 식도 이런식으로 bool 캐스팅을 가능하게 하여 구현했는데 shared_ptr<T> 같은 포인터를 랩핑하는 객체가 대표적입니다. 특정 객체의 사용 가능 여부를 bool 로 캐스팅 하여 체크한다는 아주 단순한 방법을 이용 할 수 있게 하는거지요. 이런 기법을 C++ Safe Bool Idiom 이라고 부릅니다. Classic C++ 에서는 구현이 상당히 복잡했지만 C++11 에 와서는 특히 간단히 구현할 수 있게 되어 더욱 많이 쓰게 되는 방법이 되었지요.

 

자 그럼 Member Function Pointer 가 bool로 캐스팅이 될 수 있다는것은 알았습니다. 그리고 당연히 변수가 아니라 존재하는 Function 의 Pointer를 가져온 것이므로 nullptr 이 아닐것이 확실합니다. 결과적으로 cout << true 의 결과물인 1이 출력 되는 거겠구요.

 

그럼 위 코드에 간단한 함수를 하나 추가 해서 정말 그러한지 테스트를 해 봅시다

 

void foo(void* v)
{
    cout << "ptr";
}

void foo(bool v)
{
    cout << "bool";
}

void foo(int v)
{
    cout << "int";
}

void foo(double v)
{
    cout << "double";
}

int main()
{
    foo(&Some::func);
}

 

결과물은 당연히 bool이 나오게 됩니다.

 

참고자료 : C++ Idioms/Safe bool https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Safe_bool

TAG •
?

Lyn
조회 수 477 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

우분투 LTS 버전 나온지 좀 된 김에 서버 옮김..

 

CentOs4 -> Windows 2008 -> -> Windows 2008 R2 -> Windows 2012 R2 -> Ubuntu 16.04 -> Ubuntu 18.04 로의 이전 프로세스를 밟은... 듯?

겸사겸사 인증서도 만료되어있길래 갱신..

 

?

Lyn
조회 수 5758 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

업데이트 하다가 설정 꼬여서 오밤중에 쇼를 했구나 (...)


왜이리 웹서버 설정이 어려운거야...





근데 하고 나니 뭔가 좀 빨라진 느낌이 든...다?

?

Lyn
조회 수 15485 추천 수 0 댓글 2

"비밀글입니다."


Lyn
조회 수 186 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

Lyn
조회 수 28711 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

뭐 달라진건 별로 없지만 아마 속도는 좀 빨라졋을거에요 (...)


그동안 왜 뻘짓을 후 ...

?

Lyn
조회 수 22082 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

속도가 아주 쬐~금 올라간 거 같긴 하네요.


역시 변경 이후는 PC를 쓸땐 상관 없는데 터미널 쓸때는 구석에 딱 맞춰서 마우스 이동하는게 쉽지 않기 때문이었습니다 =_=;

습관적으로 마우스 죽~ 끌면 터미널 창 밖으로 나가버리니...


이전시간은 OS 설치 30분, 데이터 백업 30분, 세팅맞추는데 15분 정도 해서 1시간 좀 넘게 걸렸네요. 데이터가 그리 많지 않다는 점이 컷지요.

?
  • profile
    Lyn 2013.09.29 06:37
    몇가지 테스트 해보니 생각보다 많이빠른데? ㅡ.ㅡ;;;

2019.02.05 00:51

새해복 많이받으세요

Lyn
조회 수 289 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

2019년에도 좋은일만 있으시길

?

2012.01.01 07:14

새해다 ...

Lyn
조회 수 28080 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

뭐 업다 18 ㅜㅜ

?

Lyn
조회 수 4319 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

어떨라나요. 좀 빨라졌으려나요?

?

Lyn
조회 수 2071 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

인증서는 wosign 에서 무료 3년짜리를 받았고,

 

Windows + Apache => IIS => Linux + Apache 를 거쳐 현재는 서버를 Linux + Nginx 로 돌리고 있으므로 ...

 

아래와 같이 세팅합니다.

 

80번 포트로 들어 오는건 https 로 리다이렉트 되도록...

 

http2 도 세팅 할까 했는데... 서버의 nginx 버전이 낮아서 실패. 다음에 업그레이드 할때를 노리기로.

 

server {
  listen        443 ssl;
  server_name   lunapiece.net;

  access_log    access.log main;
  error_log     error.log error;
  
  ssl                   on;
  ssl_certificate       /etc/nginx/conf.d/CRTFILENAME.crt;
  ssl_certificate_key   /etc/nginx/conf.d/KEYFILENAME.key;
}

server {
    listen       80;
    server_name  lunapiece.net;
    rewrite ^ https://$server_name$request_uri? permanent;
}

TAG •
?

Lyn
조회 수 42342 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

XMarks : 북마크 동기화


Fire Gesutrs : 제스쳐


FasterFox : 속도 증가(캐시 이용)

?

Board Pagination Prev 1 2 3 4 5 6 7 ... 8 Next
/ 8