구글크롬을 업데이트 한후 글꼴이 깨지는 문제가 발생했다.. 그러다가 도아님의 트윗중에 크롬이 깨지는 문제를 해결하는 방법이 있다고 한 것을 본 듯해.. 도아님의 블로그를 가 보았다.. 역시 도아님의 해결 방법으로 하니 글꼴이 볼 수 있도록 되었다..

깨지는 문제는 도아님의 블로그 중 아래 주소의 포스트를 보면 될 듯 하다.. 난 맑은 고딕으로 변경해서 쓰고 있다.. 조만간 구글측에서 수정 되기 전까지는 이 방법을 쓸 듯하다..

크롬(Chrome)에서 글자가 깨지면?

 http://offree.net/entry/Bypass-Font-Problem-for-Chrome


아웃룩을 사용하다보면 썬더버드에서 사용하는 TrayToMinimize 같이 되지가 않아서 조금 불편(?)한 점이 있다..

이럴때 최소화 시키면 트레이로 보낼려면 어떻게 해야 될까하고 구글사마에게 물어보니 다음과 같이 친절히 답변을 해 주었다..

RegEdit를 실행시키고 아래의 경로로 가서..
 HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Preferences\ 

다음과 같은 DWORD 값을 넣으면 된다..

MinToTray 값을 생성하고 값을  1 로 넣으면 된다.

 값을 넣고 저장하고 재부팅 하던지.. 재실행 시키고 아웃룩을 최소화 시키면 트레이로 들어가게 된다..

상단의 12.0은 버전따라 다르기 때문에 각자의 아웃룩 버전에 따라 바꾸어 찾아가면 된다. 

 DNS 주소를 자꾸 까먹어서 적어둠.

* KT 올레

기본 168.126.63.1
보조 168.126.63.2
 

* LG 파워콤
기본 164.124.101.2
보조 203.248.252.2
 

 * SK 브로드 밴드
기본 219.250.36.130
보조 210.220.163.82
 

 * Open DNS
 
기본 208.67.222.222
보조 208.67.220.220 

* 유투브 사용시
기본 8.8.8.8

'1.소프트웨어 이야기 > 09.ETC' 카테고리의 다른 글

Outlook을 최소화시 트레이로 보내기..  (0) 2011.08.24
ARToolkit Pro / NFT 설정 방법  (0) 2010.11.18
Handy AR  (0) 2010.04.01
ARToolKit 라이센스 버전을 설치하면서 겪은 문제점과 대처 방법을 정리..

사용툴 Visual Studio 2008.
사용 라이브러리.. ARToolKit Professional/NFT

사용자 변수는 아래와 같다..
ARTOOLKIT_2_ROOT C:\Program Files\ARtoolKit
ARTOOLKIT_4_ROOT C:\Program Files\ARToolKit4
ARTOOLKIT_NFT_ROOT C:\Program Files\ARToolKitNFT

'1.소프트웨어 이야기 > 09.ETC' 카테고리의 다른 글

유명 DNS 주소  (0) 2011.06.14
Handy AR  (0) 2010.04.01
윈도우용 특수 문자표  (0) 2010.03.04

'1.소프트웨어 이야기 > 09.ETC' 카테고리의 다른 글

ARToolkit Pro / NFT 설정 방법  (0) 2010.11.18
윈도우용 특수 문자표  (0) 2010.03.04
XCOPY 사용 방법  (0) 2010.01.14
인쇄시에는 첨부 파일을 받아서 인쇄하세요.. 

                        

!',./:;?^_`| ̄、、。· ¨ ­ ´ ˇ ˘ ˝ ˚ ˙ ¸ ˛ ¡ ¿ ː

"()[]{}‘’ 〔〕〈〉《》「」『』【】

+ - < = > ± × ÷
∬ ∈

$ % ₩ F ¢ £ ¥ ¤ ㎕ ㎖ ㎗ ㎘ ㏄ ㎣ ㎤ ㎥ ㎥ ㎦ ㎙
㎚ ㎛ ㎜ ㎝ ㎞ ㎟ ㎠ ㎡ ㎢ ㏊ ㎍ ㎎ ㎏ ㏏ ㎈ ㎉ ㏈ ㎧ ㎨ ㎰ ㎱ ㎲ ㎳ ㎴ ㎵
 ㎶ ㎷ ㎸ ㎹ ㎀ ㎁ ㎂ ㎃ ㎺ ㎻ ㎼ ㎽ ㎾ ㎿ ㎐ ㎑ ㎒ ㎓ ㎔
㏀ ㏁ ㎊ ㎋ ㎌
 ㏖ ㏅ ㎭ ㎮ ㎯ ㏛ ㎩ ㎪ ㎫ ㎬ ㏝ ㏐ ㏃ ㏉ ㏜ ㏆

# & * @ §

㉿ ㈜ ㏂ ㏘   ªº

─│┌┐┘└├┬┤┴│━┃┏ ┛┗┣┳┫┻╋┠┯┨
┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢

┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊

㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻
㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛

ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ
①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮
⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂

0123456789ⅰⅱⅲ ⅹⅠⅡ

½ ¼ ¾ ¹ ² ³ ₁₂₃₄

ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀ ㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜ
ㅝㅞㅟㅠㅡㅢㅣ

ㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ικ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω

Æ Ð Ħ IJ Ŀ Ł Ø Œ Þ Ŧ Ŋ æ đ ð ħ ı ij ĸ ŀ ł ø œ ß þ ŧ ŋ ʼn

ぁ あ ぃ い ぅ う ぇ え ぉ お か が きぎくぐ けぉ こ ご さ ざ し じ す ず せ ぜ そ ぞ た だ ち ぢ っ つ づ て で と ど な に ぬ ね の は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ ま み め も ゃ や ゅゆょよらりるれろゎわゐゑをん

ァアィイゥウェエォ オカガキギクグケゲコゴサザシジスズセ ゼソゾタダチヂッツ ヅテデトドナニヌネ ノハバパヒビピフブ プヘベペホボポマミ ムメモャヤュユョヨ ラリルレロヮワヰヱ ヲンヴヵヶ

А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я

'1.소프트웨어 이야기 > 09.ETC' 카테고리의 다른 글

Handy AR  (0) 2010.04.01
XCOPY 사용 방법  (0) 2010.01.14
[펌]C언어: OpenMP를 이용한 멀티 쓰레드 프로그래밍 HOWTO  (0) 2009.12.23
XCOPY Source Target [/A | /M] [/D[:날짜]] [/P] [/S [/E]] [/V] [/W] [/C]
[/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U] [/K] [/N][/Z] [/Y]

Source  = 복사할 파일을 지정합니다.
Target  = 새 파일의 디렉토리와 또는 파일 이름을 지정합니다.
/A = 보관 속성을 가진 파일을 복사하며, 보관 속성을 수정하지 않습니다.
/M = 보관 속성을 가진 원본 파일을 복사하며, 보관 속성을 지웁니다.
/D:날짜 = 지정된 날짜 이후에 바뀐 파일만 복사합니다. 
              날짜가 지정되지 않으면, 대상 파일보다 새로운 원본 파일만 복사합니다.
/P = 각 대상 파일을 만들기 전에 물어봅니다.
/S = 비어 있지 않은 디렉토리와 하위 디렉토리를 복사합니다.
/E = 디렉토리와 하위 디렉토리를 (비어 있어도) 복사합니다.
       /S /E 스위치와 같으며, /T를 수정하는 데 사용될 수 있습니다.
/V = 각각의 새 파일을 확인합니다.
/W = 복사하기 전에, 아무 키나 누르라고 프롬프트합니다.
/C = 오류가 생겨도 복사를 계속합니다.
/I = 대상을 찾을 수 없고 두 파일 이상을 복사하면, 대상을 디렉토리로 지정합니다.
/Q = 복사하는 동안 파일 이름을 표시하지 않습니다.
/F = 복사하는 동안 원본과 대상 파일의 전체 경로 를 표시합니다.
/L = 복사는 하지 않고, 복사할 파일을 표시만 합니다.
/H = 숨겨진 파일과 시스템 파일도 복사합니다.
/R = 읽기 전용 파일을 겹쳐 씁니다.
/T = 파일은 복사하지 않고 디렉토리 구조만 복사합니다. 
       빈 디렉토리와 하위 디렉토리는 포함되지 않습니다. 
       /T /E 스위치를 함께 사용하면 빈 디렉토리와 하위 디렉토리를 포함합니다.
/U = 대상에 이미 있는 파일을 새로 고칩니다.
/K = 속성을 복사합니다. 
       일반적으로 Xcopy는 읽기 전용 속성을 지웁니다.
/N = 만들어진 짧은 파일 이름을 사용하여 복사합니다.
/Z = 다시 시작할 수 있는 모드에서 네트워크 파일을 복사합니다.
/Y = 존재하는파일을 겹쳐쓸것인지 일일이 묻지않고 복사합니다.(Yes To All)

C언어: OpenMP를 이용한 멀티 쓰레드 프로그래밍 HOWTO #1  http://sunyzero.egloos.com/4227785


C언어: OpenMP를 이용한 멀티 쓰레드 프로그래밍 HOWTO #2 http://sunyzero.egloos.com/4227785

C언어: OpenMP를 이용한 멀티 쓰레드 프로그래밍 HOWTO #3
  http://sunyzero.egloos.com/4234766
single construct로 지시된 구간은 단 한번만 실행된다. 실행되는 쓰레드는 여러 쓰레드중에 제일 먼저 진입하는 쓰레드이다.
  • single construct는 처음으로 진입한 쓰레드가 실행한다.
  • 나머지 쓰레드들은 single construct 끝에 존재하는 implicit barrier에서 대기한다.
  • single construct가 끝나고 모든 쓰레드들은 implicit barrier에서 동시에 시작한다.

그림에서 보이듯이 parallel 구간에서 쓰레드들 중에 한 개만  single construct를 실행하고 나머지는 뒤에 존재하는 implicit barrier에서 대기하는 것을 볼 수 있다. 그러면 위 소스코드를 컴파일하고 실행해보자. 실행결과는 예상대로 "1. Hello world"는 1번 출력되고, "2. Hello world"는 2번 실행된다.(테스트 호스트는 듀얼 코어이므로)
$ gcc -o omp_single -fopenmp omp_single.c
$ ./omp_single
1. Hello world 2. Hello world 2. Hello world

7. Master Construct

master construct는 single construct와 매우 비슷하다.
하지만 다른 점이 2가지 있다.

  • master construct 구간은 무조건 master thread (main thread)가 1번 실행한다.
  • master construct 구간뒤에 implicit barrier가 없다. 
    즉 모든 쓰레드는 master construct 실행되는 동안에도 계속 실행한다.
실행 결과는 위의 single construct와 같지만 위 그림에서 보듯이 약간의 차이는 있다. master construct는 implicit barrier가 없다는 점이다. 중요한 차이므로 꼭 기억해야 한다. 


8. Barrier

배리어란 동기화(synchronization)을 위해서 사용되는 기능이다.

동기화는 시간적 개념이다. 풀어서 설명하기 위해 예를 들자. 스타크래프트 배틀넷은 왠만한 사람이면 다 해봤을 것이다. 최대 8명까지 게임에 참가할 수 있는데, 어떤 유저가 매우 느린 모뎀을 쓰고 있으면 게임 중간에 타임을 세는 화면이 뜨고 기다려주는 것을 볼 수 있다. 이는 빠른 네트워크/컴퓨터를 가진 유저와 느린 네트워크/컴퓨터를 가진 유저의 게임 속도를 맞추기 위해서 배리어가 작동한 것이다. 따라서 결과적으로 배리어는 느린 사람에 맞춰서 앞서 가는 사람이 대기하도록 하는 기능이다.

그러면 프로그래밍에서는 배리어를 어떻게 사용해야 하는가? 작업이 병렬적으로 이뤄진다고 하더라도 전처리, 후처리 작업들이 나눠져 있을 경우에는 전처리 작업들을 병렬처리했을때 어떤 특정 쓰레드가 빨리 처리했다고 후처리 작업을 먼저 출발하면 데이터가 꼬이거나 로직이 망가질 수 있다. 이럴 경우 중간중간에 적절한 배리어를 넣어주면 깔끔하게 해결된다.(하지만 역으로 배리어가 많으면 그 만큼 대기도 많아질 수 있다.)

8.a Implicit barrier

앞에서 implicit barrier(암묵적 배리어)에 대해서 이야기를 많이 했다. OpenMP는 각 작업의 동기화에 대한 편의성을 제공하기 위해서 implicit barrier를 잘 제공한다. 어떤 construct 에 대해서 implicit barrier가 제공되는지 정리하고 넘어가자.
  • #pragma omp parallel
  • #pragma omp for
  • #pragma omp sections
  • #pragma omp single
위의 4가지의 경우는 블록 끝에 자동적으로 implicit barrier가 들어간다. 하지만 위의 4가지 construct 의 끝에 nowait clause를 지정하면 implicit barrier가 제거되고 대기하지 않고 이후 코드가 즉시 실행된다.

위의 예제에서는 single construct에 nowait를 적용하여 implicit barrier를 제거하는 것을 볼 수 있다. 
(그림 아래에 있는 implicit barrier는 parallel construct에 있는 barrier다.)

8.b Explicit barrier

이번에는 사용자가 직접 지정할 수 있는 explicit barrier 기능에 대해서 보겠습니다.
  • #pragma omp barrier 구문을 지정하면 해당 부분에서 모든 쓰레드가 도착할 때까지 대기하게 된다.
char * get_time0(char *buf, size_t sz_buf);
int main() {
int t_sleep; char buf[16];
#pragma omp parallel private(t_sleep, buf)
{
#pragma omp single nowait
sleep(1);
printf("[%s] phase1:sleep %ld sec.\n", get_time0(buf, sizeof(buf)), t_sleep = times(NULL)%8);
sleep(t_sleep);
#pragma omp barrier
/* explicit barrier */
printf("[%s] phase2. Hello world\n", get_time0(buf, sizeof(buf)));
}
return 0;
}
char * get_time0(char *buf, size_t sz_buf)
{
time_t t0; struct tm tm_now;
if (buf == NULL) return NULL;
if (time(&t0) == ((time_t)-1)) return NULL;
localtime_r(&t0, &tm_now);
if (strftime(buf, sz_buf, "%H:%M:%S", &tm_now) == 0) return NULL;
return buf;
}
이제 실행해보면 배리어 효과때문에 마지막 실행한 19:12:28에서 5초뒤에 phase2가 실행되는 것을 볼 수 있다.
$ ./omp_barrier
[19:12:27] phase1:sleep 1 sec.
[19:12:28] phase1:sleep 5 sec.
[19:12:33] phase2. Hello world
[19:12:33] phase2. Hello world
_M#]

C언어: OpenMP를 이용한 멀티 쓰레드 프로그래밍 HOWTO #
4 http://sunyzero.egloos.com/4258873

+ Recent posts