글 목록 보기

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

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


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





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

?

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

"비밀글입니다."


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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

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


그동안 왜 뻘짓을 후 ...

?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

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


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

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


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

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

2012.01.01 07:14

새해다 ...

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

뭐 업다 18 ㅜㅜ

?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

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

?

Lyn
조회 수 1989 추천 수 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
조회 수 42294 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

XMarks : 북마크 동기화


Fire Gesutrs : 제스쳐


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

?

?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

https://support.microsoft.com/en-us/kb/3080351

 

물론 일반적인 경우는 까놓고 말해 10으로 안올라 가는게 바보입니다. 특수목적일 경우만 설치하세요.

?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

지인이 물어온 김에 정리 해 둡니다....



Windows Thread API 는 고성능이지만 치명적인 단점이 하나 있(었)는데... 바로 대기하는 Thread를 몽땅 한번에 다 깨우는 방법이 없다는 겁니다.
Event 객체는 유용하지만 하나의 쓰래드만 깨우거나(오토리셋 이벤트) 아니면 락이 다 풀리거나(메뉴얼리셋 이벤트) 둘중 하나의 동작만을 하게됩니다.


Java에 익숙하신 분이라면 notifyAll을 유용하게 사용하셨을 거고 pthread 라이브러리를 쓰시는 분도 역시 자주 사용 하실 겁니다.


그래서 거기에 대한 몇가지 꼼수를 프로그래밍 하다 보면 만나볼 수 있는데


1. 무한 루프 돌면서 상태를 체크한다 

- CPU 낭비도 이만한게 없습니다.

2. 메뉴얼 리셋 이벤트를 이용해서 잠깐 락을 풀고 다시 건다 

- 락이 걸리지 않고 그냥 지나칠 가능성이 있어 위험합니다.

3. pthread나 ACE에 포팅된 상태변수를 가져다 쓴다 해결책이 아니잖아


실제로 ACE는 상태변수를 자체 구현하고 있는데 그 대략적인 방법은 아래와 같습니다.

1. 오토 리셋 이벤트와 크리티컬 섹션을 생성한다

2. join 할 때 마다 카운트를 증가시킨다

3. 이벤트 발생시 증가된 카운트만큼 이벤트를 Set 한다.



뭐 그리 복잡한 방법도 아니고 구현 자체는 어렵지 않은데...
어쨋든 OS의 부족한 기능을 외부에서 가져오자니 좀 그렇습니다.


어쨋든 Windows Vista/2008 부터는 여기에 대응하는 API가 추가되었습니다.
WakeAllConditionVariable라는 놈인데요. 말 그대로 모든놈 다 깨우라는 뜻입니다.


pthread의 상태변수가 그런것 처럼 상태변수 자체만으론 Lock 의 기능을 하지 않고 다른 락의 힘을 빌리게 되는데 기본적으론 Critical Section 을 사용하게 됩니다.
이 다음은 귀찮으니 소스 보면서 하겠습니다.


#include <Windows.h>
#include <cstdio>

CRITICAL_SECTION cs;
CONDITION_VARIABLE cv;

DWORD PASCAL TestThread(LPVOID pParam)
{
	EnterCriticalSection(&cs);
	
	SleepConditionVariableCS(&cv, &cs, INFINITE);
	printf("%d\n", GetCurrentThreadId());
	LeaveCriticalSection(&cs);

	return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
	InitializeCriticalSection(&cs);
	InitializeConditionVariable(&cv);

	HANDLE Threads[10];
	for(int i = 0; i < 10; ++i)
	{
		Threads[i] = CreateThread(nullptr, 0, &TestThread, nullptr, 0, nullptr);
	}
	Sleep(1000);
	WakeAllConditionVariable(&cv);
	WaitForMultipleObjects(10, Threads, TRUE, INFINITE);
	DeleteCriticalSection(&cs);
	return 0;
}


CriticalSection 에 추가적으로 ConditionVariable 을 초기화 시켜 준 후, WaitForSingleObject 대신 SleepConditionVariableCS을 사용합니다(만약 Read/Write Lock 을 사용중이라면 SleepConditionVariableSRW을 대신 이용합니다)


그리고 Thread가 대기하고 있을때 WakeAllConditionVariable를 이용해서 쓰래드를 몽땅 깨워 주면 됩니다.
당연히 대기중인 Thread가 하나도 없을땐 아무 일도 하지 않습니다.


만약 하나만 깨운다면 WakeConditionVariable를 사용할 수 있습니다.
하나만 깨운다는면에서는 동일하지만 Event 와는 동작이 미묘하게 다른것이 이벤트는 대기중인 Thread가 없어도 Set 상태가 되면 언제라도 통과할 수 있지만 WakeConditionVariable은 대기중인 Thread가 없으면 아무 일도 하지 않습니다.


덤으로 Condition Variable 은 해제 함수가 없습니다. 그냥 냅두시면 됩니다.


TAG •
?

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