64bit OS 사용시 주의사항 OS/프로그램 Tip

현재 쓰는 PC를 조립할때 부터 Windows7로 OS를 넘어오면서 64bit를 쓰기 시작했다..
메모리를 8기가 달고 나서부터는 제대로 쓰기 위해서는 64bit를 쓸 수 밖에 없었다.

그러면서 역시나 몇 가지 프로그램들이 OS와의 호환성 때문에 사용 불가능해졌고
(특히나 스캐너와 프린터...  스캐너야 산지 이제 10년째 되니까 그렇다고 하지만 프린터는 캐논 LBP3200이라 산지 그리 오래 되지도 않는구만..)
대신 DirectX11과 같이 이전 OS에서 더이상 지원하지 않는 프로그램들을 사용할 수도 있게 되었다.

그런데 아직까지는 대부분의 프로그램들이 32bit이고 64bit로 넘어가는 과도기이므로 현재로서는 두 가지 프로그램을 같이 사용할 수 밖에 없는데 여기서 의외로 좀 헷갈리는 부분들이 있다.
예전에 16bit 에서 32bit로 올라갈때는 지금 생각해 보면 의외로 호환성이 그리 좋지도 않았고 또 비교적 빠르게 전환이 되어서 그렇게 큰 차이점이 있던거 같지는 않은데 현재는 아직까지 대세는 32bit인데다가 일반 사용자들이 그냥 쓰기에는 둘 다 별 차이가 없어 보여서 별 생각없이 쓰다가 나중에 삽질했던 경험들이 좀 있다.
관련 내용들을 한 번 정리해 보려고 한다.


1. IE9 64bit용
현재 64bit로의 전환이 이루어지고 있는 중이기 때문에 제작사가 부지런하거나 여유가 있을 경우는 32bit/64bit용 프로그램을 별도로 만들기도 한다.
MS야 당연히 Windows OS를 만드는 회사이다 보니 IE 같은 경우도 두 가지 버전이 설치가 된다.
그런데 처음에 이상하게 생각했던 부분은 두 가지의 IE 중 32bit IE가 기본 IE로 설정이 되어있는 것이다.

나는 64bit OS를 쓰는 김에 되도록이면 전환을 먼저 하려고 두 가지 버전을 제공하는 프로그램은 64bit용을 먼저 사용하려고 했었다.(물론 OS가 64bit니까 그게 효율이 낫지 않을까 하는 생각도 들었고..)

그런데 여기 맹점이 하나 있었다.
프로그램이 64bit니까 IE에 붙어서 도는 프로세스들도 모두 64bit여야 하는 것이다.
즉, IE용 ActiveX들, 쓰기는 싫지만 예를들어 금융거래를 위한 플러그인 들도 유명한 것이 아니면 64bit용은 제공을 하지 않는 상황인 것이다.
특히나 지금은 아니지만 초기에는 Flash조차도 베타버전으로 패치가 상당히 자주 나왔었다.
(아래 글들이 대개 주제는 다르지만 근본 원인은 이것과 동일한 내용임)
처음에 왜 64bit OS에 32bit 프로그램을 default 로 설정했나 잠시 의아해 했었지만 이걸 한 번 당하고 나니까 그렇구나 싶으면서도 64bit로의 전환이 쉽지 않겠다는 생각이 들기 시작했다.
그래서 그런지 모르겠지만 요즘 ActiveX를 쓰는 사이트가 아니면 주로 Firefox와 Chrome을 사용하는데 이 두 프로그램은 아예 64bit용을 제공 자체를 하지 않는다.
(물론 이건 내부적으로 64bit 작업을 하지 않아서일 가능성이 더 크지만..)

2. Virtual Dub/비디오 인코딩
동영상 인코딩을 할 때 Virtual Dub을 사용하여 주로 작업한다.
편집작업 같은 건 보통 잘 안하고 오디오 뽑거나 용량/크기 조절하거나 등등의 작업에 많이 사용한다.
그런데 새 버전을 받으러 가봤더니 웬일로 64bit 버전도 같이 제공을 하는 것이다.
그런데 제공을 하면서 별로 권장은 하지 않고 있었다.  코덱 문제로 되도록이면 32bit 버전을 쓰라고..
무슨 얘긴가 싶었는데 각각의 프로그램으로 영상을 로드한 다음 재인코딩을 위해 코덱설정 페이지를 가보고서 이유를 알 수 있었다.

<32bit virtual dub. 한페이지가 넘어가는 코덱 목록이 나온다>

<64bit Virtual Dub. 반페이지도 못 채운다>

어차피 Virtual Dub이 자체적으로 인코딩을 하는 프로그램이 아니라 환경을 잡아주고 코덱을 이용해서 인코딩을 수행하기 때문에 프로그램이 64bit라봤자 대부분의 코덱이 32bit인 상황에서 인코딩할 코덱 자체가 거의 없다.
Windows에 기본적으로 깔려있는 거의 15~20년 묵은 사용할 일이 전혀~ 없는 코덱들만이 보인다.(하나 빼고..)
주로 사용하는 Xvid나 요즘 들어 많이 사용하는 H.264 계열 등은 설치가 되지 않았다.
따로 64bit 버전 코덱이 있는지는 모르겠으나 내가 사용하는 코덱인 K-Lite Codec에서 배포하는 64bit 용도 따로 설치를 했건만 역시 리스트에는 보이지 않는다.  디코딩 전용 코덱만 있는 것인가..
여튼 혼자 앞서 나간다고 되는 건 아닌 것 같다.

3. Total Commander
사용한지 15년이 다 되어가고 정품구매해서 사용하고 있는, 없으면 PC 사용 효율이 절반 이하로 급락하는 필수 프로그램인 Total Commander도 비슷한 문제가 있다.
Total Commander는 아직도 16bit 버전부터 지원하고 있는데(이제 16bit 는 6.x까지만 지원하는 걸로 알고 있다. 지금 현재 최신버전은 7.56a) 64bit 버전은 8.0부터 지원을 목표로 아직 베타 테스트중이다.

Total Commander에서 파일이나 폴더를 누르면 일반적으로 탐색기 등에서 눌렀을 때 나오는 Context 메뉴에 Total Commander에서 지원하는 추가 메뉴들이 같이 나타난다.
그런데 Windows7에서는 아래 그림과 같이 X64라는 항목과 함께 그 메뉴 위로 갔을 때 세부 메뉴로서 윈도우 자체의 Context 메뉴가 나타난다.
처음에는 Windows7이라서 그런가보다 하고 그냥 넘겼는데.
쓰다가 보니까 귀찮기도 하지만 X64로 커서를 옮기면 만일 PC가 좀 버벅이던 상황이거나 하면 오른쪽 메뉴가 나타나는데 시간이 좀 걸린다. 하드를 읽는 소리도 들리고.
그래서 위의 일들을 좀 겪은 다음에 보니 아무래도 32bit 에서 저런 context 메뉴를 읽는데 제약이 있어서 64bit용으로 구성된 저것만 읽어주는 프로그램이 따로 있어서 그걸 통해서 context를 읽은 뒤 소켓통신이던, IPC던 통해서 전송받아 표시하는, 그러한 좀 비효율적인 방식으로 도는 것이 아닌가 하는 생각이 들었다.
그래서 Total Commander 설치 폴더를 보니 역시나 그런 프로그램들이 존재했다.

TCMDX32.EXE : Total Commander 32bit->64bit helper tool
TCMDX64.EXE : Total Commander 32bit->64bit helper tool

위 프로그램은 32bit용이지만 아래 프로그램은 64bit 용이다.
아마 저런 프로그램을 실행해서 읽어오는 듯 하다.

그래서 아직 베타버전이긴 하지만 64bit용 Total Commander 8을 깔아서 봤더니 원래 나오던 형식대로 아래와 같이 표시가 된다.
물론 버벅이지도 않고 바로 나온다.
그래서 잠깐 정식 버전 나오면 64bit로 갈아타야지 싶다가...
역시 받을 때 경고가 나왔듯이 64bit로 실행하면 지금까지 쓰던 그 많던 플러그인들이 상당수가 사용불가가 되는 상황이라..
Total Commander를 플러그인 없이 쓰는건 Firefox를 Plugin 없이 쓰는 것의 절반 정도로 불편하기 때문에..
아무래도 Plugin들의 옮겨가는 상황을 보고 판단해야 할 듯 하다..

4. Java
이건 직업상 Java를 이용해서 개발일을 하다 보니 생긴 문제인데..

물론 Java 자체는 OS도 상관없는데 32bit/64bit야 문제가 될 이유가 없다.
예전에도 주로 Unix들에서는 자바가 32bit/64bit용이 모두 설치가 된 경우가 많아서(물론 요즘 Unix OS는 다들 64bit이다) 어느걸로 실행하도록 잡냐고 물어올 경우 나는 대개 64bit로 하라고 해왔다.  OS가 64bit니 그게 가장 성능향상에 도움이 될 듯 하여..

그런데 개발환경으로 사용하는 Eclipse의 경우는 32/64bit가 별도로 배포된다.
이것까지는 이미 알고 있었는데 일반적으로 순수 Java는 상관이 없지만 Eclipse 는 UI 사용을 위해 OS Independent한 Swing을 사용하지 않고 성능향상등의 목표를 위해 OS Dependent한 SWT를 사용하기 때문에 OS별로도 배포본이 따로 있었고 물론 32/64bit용도 별도로 존재한다.

그래서 아무 생각없이 64bit용을 받아서 실행해 봤는데 화면도 안뜨고 오류발생..
또 곰곰히 생각을 해봤는데 아차 싶은게.. Java도 32/64bit용이 따로 있기 때문에 64bit로 깔아야 했던 것..
참고로 이런저런 상황에 대응하기 위해 Java 는 1.2버전부터 최근의 7까지 모두 깔아놓는데 다 설치본으로 깔면 꼬일까봐 최신버전만 인스톨을 하고 나머지는 기존에 설치해 놓은 JDK 폴더 전체를 복사해서 쓰고 있는데..
(JAVA_HOME이나 Path만 신경쓰면 복사해 써도 별 문제 없음.  특히나 Eclipse에서는 알아서 맞춰주므로 더 편함)
예전에 깔아놨던 32bit용을 copy해서 사용해서 생긴 문제였다.
순수 Java 를 실행했으면 역시나 또 문제가 없는 것이었지만 SWT 사용을 위해 64bit dll이 존재했기 때문에 JNI에서 문제가 발생했던 듯...
Java 인스톨을 64bit용으로 하니 이제 문제가 해결되었다.


위의 네 가지는 내가 실제로 겪었던 문제이고 일부는 다른 사람들도 겪을 만한 일들이긴 한데.. 아마도 64bit로의 완전한 전환이 이루어 질 때까지는 당분간 발생할 문제일 듯 하다.
이러한 문제들 때문에 되도록이면 64bit 프로그램을 사용한다는 원칙을 가지고 있으면서도 일부 32bit 프로그램을 설치할 수 밖에 없는 경우들이 생겼다.
(Oracle 접속을 위한 Client 설치시에도 32bit를 깔아야 했다. oci.dll 을 쓰는 DB 툴들이 다들 32bit기 때문에..-.-;;)

예전 16bit->32bit의 경우에는 16bit에서의 제약이 너무 컸기 때문에 프로그램 개발자들의 입장에서도 되도록이면 32bit로 만드려고 했기에 비교적 쉽게 넘어갈 수 있었지만 32->64bit의 경우는 대부분의 일반 프로그램에서 32bit를 사용해도 메모리 부족 등의 문제가 생길만한 프로그램은 일부 멀티미디어 프로그램을 제외하고는 거의 없고 64bit로 넘어온다고 큰 이득도 없는 편이라(개별 프로그램에서는) 아마 시간이 꽤나 걸리지 않을까 싶다.

일부 CPU에서는 벌써 128bit를 쓰는 것도 있는걸로 아는데(PC는 아니지만 PS3의 Cell..  Register만 128bit 인지도...) 어느 정도까지 올라갈지 모르겠지만 당분간은 64bit까지만 가면 잘 바뀌지 않길 바란다.

Windows7 에서 파티션 나눌 시 주의사항 OS/프로그램 Tip

이번처럼 새로 하드를 사거나 해서 파티션을 나눌 경우 부팅을 위한 C 드라이브의 첫번재 파티션이야 Primary에 Active로 설정하지만그 외의 데이터 저장용 HDD는 Extended(확장) 파티션에 논리드라이브로 해서 잡는다.
Windows 2000 이상이면 드라이브명을 내가 임의로 줄 수 있기는 하지만 원래 Primary Partition이 뒷 하드라도 먼저 나와서 잡히는게 귀찮기도 하고 데이터 저장용 파티션은 별도로 취급하기 위해서인데..

원래 파티션 매직이라던지 기타 유사한 프로그램을 써서 작업하는데 이게 64비트가 되어놓으니 기존 프로그램들이 다들 맞지 않아서 일단 급한대로 윈도우 제어판의 컴퓨터관리->저장소->디스크 관리를 이용해서 쪼갰다.(예전에도 깔기 귀찮으면 이렇게 했었다.)
새로 산 2TB HDD를 균등하게 4동강 내서 (대략 465GiB 정도씩 나눠진다) 거기에 거의 하루종일 기존 HDD의 자료를 옮긴 뒤 기존 HDD를 다시 정리해서 쪼개려고 보니....

일단 기존 1.5TB HDD는 전체를 하나의 확장 파티션으로 잡고 거기에 논리 드라이브를 4개 만들었었는데 크기를 키워서 3개로 다시 쪼개려고 일단 논리 드라이브를 다 지운 다음에 새 파티션을 만드려고 했더니 이상하게 자꾸 용량이 부족하다고 한다.
1.5TB 짜리에 465GiB를 왜 못 만드는가 이해가 안 되어 이번에는 원하는대로 디폴트 값으로 전체를 잡도록 시도했더니 여전히 오류다.
그래서 찬찬히 살펴봤더니...

기존에 4동강 낸 2TB HDD가 3개의 Primary Partition과 1개의 확장 파티션+논리 드라이브로 쪼개져 있었다...
즉, 이놈은 물어보지도 않고 무조건 3개까지의 파티션은 Primary로 생성, 4번째부터는 확장 파티션으로 생성하는 것 같았다...

아니...  편하게 작업하게 하는 건 좋지만 그렇다고 이전 버전(XP)까지 잘 설정해서 나눠지던 기능을 없애는 건 뭔지...
미리 이게 어떻게 나눠지는지 고지라도 줬으면 내가 어떻게든 다른 프로그램을 구해서 했을텐데(물론 나눈 다음에 자세히 확인 못 한 죄는 있지만) 이미 다 나누고 복사한 뒤라 다시 2TB의 자료를 복사할 생각하니 아득하다...

여튼 다시 찾아보니 다행히 64bit OS도 지원하는 무료 파티션 지원툴이 있었다.
MiniTool Partition Wizard라는 프로그램인데 Home Edition의 경우는 무료로 기간제약없이 사용 가능하고 자세히 살펴보진 않았지만 기능제약이 그리 크지는 않은 듯 했다.  파티션 쪼개고 합치는데는 아무 지장 없었다.

안그래도 OS 기본 프로그램으로 쪼개면서 좀 불안하기는 했었는데.. 이 사태를 어찌 수습해야 할지...
뭐 기능적으로는 큰 문제는 없으니 그냥 가야 할 지도 모르겠다...
다만 OS든 기타 다른 프로그램이나 전자제품 등이 점점 사용자 편의성 위주로 가면서 단순화하고 자동화 하는 건 좋긴 한데 다만 고급(?) 사용자들을 위해서 기존 방식을 숨김 옵션으라로도 남겨줬으면 하는 바람이다..(프로그램 설치 같은 걸 하다 보면 Advanced라는 옵션이 있지 않은가?)

Windows7에서 비트맵 폰트(Fixedsys 등) 사용하기 OS/프로그램 Tip

이번에 PC를 새로 조립하면서 드디어 Windows7 64bit로 넘어왔다.(Vista는.. 하도 평이 안 좋아서 넘어갔고..)
거의 10년 가까이 써 온 XP에서 새로운 OS, 그것도 64bit로 넘어가니 이래저래 삽질할 것도 많은데 삽질내역을 좀 정리해서 나중에 참고 할 겸 정리한다.

그 중 첫번재는 제목과 같이 Bitmap 폰트 사용에 대한 내용이다.
주로 프로그래밍시에 사용하는 Fixed Width의 폰트로서 계속 사용하던 폰트가 Fixedsys인데 Windows7에서는 아예 선택 목록에 보이질 않았다.
자세히 보니 폰트 수가 아무래도 좀 적어서 이상하다 했더니 Bitmap 폰트는 아예 싸그리 다 빠져버린 것이다.
ClearType도 좋은데 아예 폰트를 이렇게 다 빼니 귀찮기도 하고 찾아봤더니 역시나 돌리는 옵션은 존재했다.

제어판->모양 및 개인설정->글꼴 설정 메뉴에 들어가서 첫번 째 있는 "글꼴 표시 및 숨기기" 에 있는 "언어 설정에 따라 글꼴 숨기기(H)" 항목을 꺼주면 전체 폰트 목록이 다시 보이면서 Fixedsys를 비롯한 비트맵 글꼴을 사용 가능하다.
(지금 윈도우 설정이 아직 안되서.. 화면캡쳐는 나중에..)

Firefox 6.0 발표 프로그램 설치/사용법


8월 16일(아마 미국 동부시각일듯 하니 우리나라 시각으로는 17일인 듯.) 또다시 Firefox가 6.0으로 업데이트 되었다.
오랜 기간동안 2.x, 3.x 버전을 지나오다가 4.0 이후부터 버전이 너무 빨리 올라간다.
예전에 어디서 보기로는 버전업이 잦은 Google의 Chrome을 의식해서(Chrome은 이미 버전이 13대임) 올리는 거라는 얘기도 있는데 그런 의견도 신빙성이 간다.

예전 4.0에서 5.0으로 몇 달만에 업데이트 했을 때 보다가 일단 겉보기에는 더 바뀐게 없는 것 같다.
일반 사용자들은 아무래도 UI의 편이성이나 새로운 기능 등에서 차이점을 찾을 텐데 글쎄.. 그건 잘 모르겠다.
물론 이제 막 한거라 좀 더 봐야 하긴 하겠지만..

Firefox의 잦은 업데이트를 막는 원인 중 하나인 확장기능은 내가 비교적 많은 사람들이 사용하는 유명한 확장기능만 사용하는 이유도 있겠지만 특별히 안되는 건 없었다.

Java의 경우도 1.5버전부터 5.0, 6,0, 요번에 발표된 7.0 등 메이저 버전을 올리기 시작했지만 그래도 갑자기 너무 빨라지는, 그리고 그리 크게 변하지도 않는 버전업에 무덤덤해 가는 것 같다.
예전 포스팅 하기도 했지만 3.5 쓰다가 한참을 기다리다 3.6으로 기쁘게 업그레이드 했던 그 때의 기억은 이제 다시 겪기 어려울지도...

Tomcat6에서 JNDI 설정 및 Spring(2.5)에의 연결(Eclipse WTP 사용)

웹을 검색하면 많이 나오는 질문/답변이지만 실제로 내가 할 때 잘 안된 경험이 있어서 실제로 되었던 사례를 정리해 본다.
Tomcat6를 WAS로 하여 Spring 2.5를 사용하는데 처음에는 Spring의 DBCP를 이용한 Connection Pool을 만들어 쓰다가 원래 운영환경처럼 JNDI를 설정해서 사용을 하도록 바꾸기 위해서 변경했다.

1. server.xml 파일의 JNDI 설정
사용하려는 Context 안에서 JNDI를 다음과 같이 설정한다.
(개발환경의 세팅이기에 실제 tomcat이 아닌 WTP Servers 프로젝트 밑의 "Tomcat v6.0 Server at localhost-config"에 추가)

<Context>
    <Resource name="JNDI 명"
              auth="Container"
              type="javax.sql.DataSource"
              driverClassName="oracle.jdbc.driver.OracleDriver"
              factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
              url="jdbc:oracle:thin:@IP주소:Service명"
              username="user_name"
              password="user_password"/>
</Context>

위 예제는 Oracle에 BasicDataSource 사용 예이다.

2. web.xml 파일의 변경
web.xml 파일에 리소스 reference를 추가한다.
단, 실제 운영환경이었던 weblogic은 아래의 추가가 필요없기에 실제 사용할 web.xml 파일이 아니라 WTP Servers 프로젝트 밑의 "Tomcat v6.0 Server at localhost-config" 에 추가하였다.

    <resource-ref>
        <res-ref-name>jd_kais</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

3. Spring Datasource의 변경
원래의 Datasource 설정은 다음과 같았다.

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@IP주소/서비스명"/>
        <property name="username" value="user_name"/>
        <property name="password" value="user_password"/>
    </bean>

설정한 JNDI를 가져오기 위하여 다음과 같은 bean을 사용하여 변경 가능하다.
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:/comp/env/JNDI명" />
</bean>

단, Spring 2.5 이후에는 새로 생긴 jee Namespace를 활용하여 아래와 같이 더욱 편하게 설정이 가능하다.
하지만 Namespace를 XML 설정에 추가해야 하기 때문에 비슷할 수도 있다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">

    <jee:jndi-lookup id="dataSource" jndi-name="jd_kais" resource-ref="true" />

</beans>

이 경우에는 bean을 사용하지 않으므로 default namespace를 jee로 놓고 하면 더 간단할 수도 있겠다.

4. JNDI 의 연결을 위해 JDBC 드라이버를 WAS에 추가해 준다.
위 경우는 오라클이므로 %Tomcat_Home%\lib에 ojdbc14.jar 파일을 추가한다.(Pooling 관련 파일들은 이미 있다.)


이후에 잊을 경우 참고를 위해...

1 2 3 4 5 6 7 8


메모장