vmdk 를 vdi 로 변환하기

 VMware 사용할때 쓰던 가상시스템 파일을 VirtualBox에서 쓰려고 이미지 변환법을 찾아보다가

실제로 변환하여 성공한 방법을 정리한다.

순서는
VMware 용 vmdk 파일을 Raw 이미지 파일로 변환하고 그 파일을 다시 VirtualBox용 vdi 파일로 변환한다.

Raw 이미지로 변환하기 위해 Qemu Manager 를 다운로드 한다.
http://www.davereyn.co.uk/download.htm
설치본과 압축본이 있는데 편한걸로 받으면 된다.
압축본은 http://www.davereyn.co.uk/qem/qman70.zip 여기서 다운로드 한다.

설치 또는 압축해제 한 디렉토리 아래에 qemu 디렉토리를 보면 qemu-img.exe 파일이 있다.
이 파일을 사용한다.

도스창을 열고 (시작->실행-> cmd [엔터]) qemu-img.exe 파일이 있는 곳으로 찾아 들어간뒤 아래처럼 입력한다.
주의할것은 -O 는 영어 대문자 O 이다.

qemu-img.exe convert d:\vm\ms-dos\ms-dos.vmdk -O raw d:\vm\ms-dos\ms-dos.bin

제대로 입력했다면 지정한 위치에 raw 이미지 파일인 bin 파일이 생성 되었을것이다.

다음 과정은 bin을 vdi 로 바꾸는 과정이다.

이 과정에서는 VirtualBox에 포함되어있는 vboxmanage.exe 라는 프로그램을 사용할것이다.

vboxmanage convertfromraw d:\vm\ms-dos\ms-dos.bin d:\vm\ms-dos\ms-dos.vdi

제대로 실행 되었다면 아래와 비슷한 내용이 출력된다.

이제 VirtualBox에서 변환한 이미지를 불러오면 되는데

VirtualBox에서 새로만들기 버튼을 누르고

적당히 입력한뒤에

우측에 이미지 불러오기 버튼을 누르고 변환된 vdi 파일을 선택해주면 된다.


가상 머신을 만든후에 실행 시키면 변환된 이미지가 VirtualBox에서 제대로 실행 되는것을 확인할 수 있다.

윈도우 설치 날짜 알아내기

윈도우 설치가 알고 싶을 때가 있다.
도스 창을 열고 아래와 같이 입력하면 된다.

systeminfo |find /i "설치"


4개 정도 결과가 나오는데 "원래 설치 날짜" 라고 적힌게 보일것이다.
원래 설치 날짜만 꼭 보고 싶다면 위에 명령어에서 "설치" 를 "원래 설치 날짜"로 바꾼다.
덤으로 부팅 시간은 아래와 같이 확인한다.

systeminfo |find /i "부트"

실행해보면 아래와 같이 결과가 나온다.



위의 명령어 결과가 안나오거나 영문 윈도우라면 아래와 같이 명령어를 바꿔준다.
systeminfo |find /i "install date"

systeminfo |find /i "boot time"


Eclipse Indigo로 업데이트후 Flash Builder Plug-in 설치

 이클립스 Helios를 쓰고 있는데 Indigo로 업데이트 하려고 한다.


한김에 Flash Builder Plug-in 까지 설치 하려고 한다.

Indigo 업데이트는 쉽다.

Eclipse 실행 후 Help -> Install New Software 메뉴로 들어간다.

Add 메뉴 누르고 Name 에 Indigo 입력, Location 에 http://download.eclipse.org/releases/indigo 입력 한다.

그다음에는 일반 적인 업데이트와 마찬가지로 진행하면 된다.

Flash Builder Plug-in은 4.51 까지 업데이트 한 후 실행하는게 좋다.

기본 설치 했다면 아래 파일을 찾을 수 있을것이다.
c:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\utilities\Adobe Flash Builder 4.5 Plug-in Utility.exe

실행하고 중간쯤에 Eclipse 설치된 경로를 지정해준다.

설치를 마치면 도움말로 eclipse.ini 수정하라고 한다.

나처럼 이미 수정해서 쓰는 사람도 있을것이다.

수정 안한 사람은 -vmargs 아래 부분에 아래 내용을 추가한다.
-Xms256m
-Xmx512m
-XX:MaxPermSize=256m
-XX:PermSize=64m

그리고 eclipse를 실행하면 실행은 되나 오류가 발생할 수 있다. 모든 창에서 오류가 발생해서 제대로 로드가 안되었다.
Eclipse를 껐다가 다시 실행 시키니 문제없이 실행 되었다.

메뉴가 한글로 나오는게 거슬리는 사람이 있을텐데
eclipse.ini 에 아래 내용을 추가하면 다시 영문으로 나온다.
-Duser.language=en
-Duser.country=US

Flash Builder Plug-in 을 설치하면 Flash Builder 를 제거해도 되는 줄 알았는데 그게 아닌가 보다.
Flash Builder는 계속 유지해두고 개발만 Eclipse에서 하게 되는 방식 같다.
어차피 Flash Builder가 Eclipse 기반인데... 그리도 다른 개발환경이 셋팅된 Eclipse에서 개발하는게 편할 수도 있으니
선택해서 쓰면 되겠다.

마지막으로 Flash Perspective를 추가해야 하는데 알겠지만 우측 상단에 Open Perspective 버튼을 누르고 Other... 로 들어가서 Flash 선택하면 된다.


참고 :
http://lenettoyeur-on-eclipse.blogspot.com/2011/06/from-helios-to-indigo-is-easy.html
http://www.eclipsezone.com/eclipse/forums/t67064.html

BlazeDS 연동

 존칭은 생략합니다.

 

 

1. Tomcat 설치

http://tomcat.apache.org/ 접속해서 다운로드 한다.

 

이 글에 사용한 버전은 7.0.19 이다. 6.x 버전이 이미 설치 되어 있었으나 이번 기회에 간만에 업글 했다.

 

zip 버전을 다운 받아서 적당한 곳에 압축을 해제 한다.

 

내가 설치한 곳은 C:\Server\Tomcat 이다.

 

그리고 당연히 기본적으로 JDK 는 설치 되어있어야 한다.

 

JDK 설치는 웹검색을 하기 바란다.

 

JDK와 Tomcat 까지 설치를 마쳤다면 시스템변수 설정을 해줘야 한다.

아래와 같이 설정한다.

JAVA_HOME C:\Java\jdk1.6.0_18

CATALINA_HOME C:\Server\Tomcat

CLASSPATH .;C:\Java\jre6\lib

그리고 PATH 에 C:\Java\jdk1.6.0_18\bin 추가한다.

 

도스창을 열고 c:\Server\Tomcat\bin\startup.bat 실행한다. Tomcat이라는 도스창이 하나 더 뜨면 실행이 된 것이다.

오류 메세지가 없는지 확인하고 웹브라우저를 띄워 http://localhost:8080/ 으로 접속해서 뜨는지 확인한다.

 

Tomcat 서버 관리자로 들어가려면 계정설정을 해줘야한다. Tomcat 하위에 conf 안에 보면 tomcat-users.xml 파일이 열어

<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->

이 부분을 주석제거하고 적절하게 수정한 뒤 서버를 재시작 하면 관리자로 접근이 가능하다.

서버를 중지 하려면 도스창처럼 떠있는 서버창에서 Ctrl+C 를 누르면 된다.

 

그리고 주의 할 것 이 하나 있는데 메모장으로 xml 파일을 열어서 수정하면 기본적으로 ansi로 저장되어서 Tomcat 구동 시 오류가 발생하는 경우가 있다.

 

다른 이름으로 저장을 선택한 다음 저장 버튼 옆에 인코딩 부분을  UTF-8로 선택하여 저장한다.

 

아래에 나오는 설정 편집 부분에도 해당되는 내용이니 참고한다.

 

 

2. 프로젝트 폴더 생성

 

Tomcat\webapps 하위에 프로젝트용 폴더를 생성한다.

나는 blazeds_test 라는 폴더를 생성 했다.

 

 

3. BlazeDS 설치

 

https://www.adobe.com/cfusion/entitlement/index.cfm?e=lc%5Fblazeds 에서 다운로드 받는다.

 

다운 받으려면 Adobe.com 계정이 있어야 한다. 무료 가입이니 계정이 없으면 하나 생성하도록 한다.

 

다운로드가 3가지 있는데 4M 크기의 BlazeDS binary distribution 파일을 받으면 된다.

 

다운 받은 zip 파일을 압축 해제하면 war 파일과 htm 파일이 나온다.

 

적당한 압축해제 프로그램을 사용해 war 파일을 압축 해제 한다. 7-zip을 추천한다.

 

압축 해제 된 blazeds/WEB-INF/lib 안에 있는 모든 JAR 확장자를 가진 파일을 blazeds_test/WEB-INF/lib 에 복사한다.

blazeds/WEB-INF/flex 폴더 채로 blazeds_test/WEB-INF 안에 복사한다.


4. database connector 설치

자신이 사용하는 DB용 Connector를 설치한다.

나는 MySQL 용 Connector를 설치했다. 설치한 버전은 5.1.17 이다.

 

http://www.mysql.com/downloads/connector/j/ 에서 다운로드를 받은 파일의 압축을

해제하면 나오는 mysql-connector-java-5.1.17-bin.jar 파일을 blazeds_test/WEB-INF/lib 에 복사한다.


5. 샘플 데이터 생성

데이터베이스를 만든다.

CREATE DATABASE `blazedb_test`;

 

테이블을 만든다.

 

CREATE TABLE `blazedb_test`.`users` (
`idx` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(50) NOT NULL,
`age` INT(2) UNSIGNED NOT NULL
) ENGINE=MYISAM;

 

데이터를 만든다.

 

INSERT INTO `blazedb_test`.`users` (`idx`, `name`, `age`)
VALUES
(NULL, 'Hugo Reyes', '11'),
(NULL, 'Sayid Jarrah', '13'),
(NULL, 'Jack Shephard', '15'),
(NULL, 'Jin Kwon', '22'),
(NULL, 'Sun Kwon', '14'),
(NULL, 'Kate Austen', '22'),
(NULL, 'John Locke', '24'),
(NULL, 'Claire Littleton', '17'),
(NULL, 'Ben Linus', '22'),
(NULL, 'Desmond Hume', '28'),
(NULL, 'Michael Dawson', '26'),
(NULL, 'Juliet Burke', '20'),
(NULL, 'Miles Straume', '17'),
(NULL, 'Shannon Rutherford', '21'),
(NULL, 'Richard Alpert', '12'),
(NULL, 'Walt Lloyd', '25'),
(NULL, 'Daniel Faraday', '22'),
(NULL, 'Frank Lapidus', '4'),
(NULL, 'Boone Carlyle', '6'),
(NULL, 'Alex Rousseau', '11'),
(NULL, 'James Ford', '15'),
(NULL, 'Charlie Pace', '7');

 

테이블 생성을 마쳤으면 클래스를 만들어야 한다.

 

object 와 service 두가지를 만들어야 한다.

 

나는 c:\Server\Tomcat\webapps\blazeds_test\WEB-INF\classes\kr\pe\kyrandia\ 하위에

objects 와 services 폴더를 만들었다.

 

각자 자신의 환경에 맞게 폴더를 만들면 된다.

 

아래 소스를 objects\TestUser.java 로 저장하고 complie 한다.

 

package kr.pe.kyrandia.objects;

 

public class TestUser {

    private int userIdx;
    private String userName;
    private int userAge;
   
    public int getUserIdx() {
        return userIdx;
    }
    public void setUserIdx(int userIdx) {
        this.userIdx = userIdx;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public int getUserAge() {
        return userAge;
    }
    public void setUserAge(int userAge) {
        this.userAge = userAge;
    }
}

 

아래 소스를 services\TestUserService.java 로 저장하고 Compile 한다.

빨간색으로 표시한 곳은 자신의 설정의 맞게 수정한다.

 

package kr.pe.kyrandia.services;

 

import java.util.ArrayList;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

 

import kr.pe.kyrandia.objects.TestUser;

 

public class TestUserService {
   
    public TestUserService() {
    }

 

    public ArrayList<TestUser> getAllUsers() {
       
        try {
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch (ClassNotFoundException e) {}

 

        Connection conn = null;
       
        ArrayList<TestUser> users = new ArrayList<TestUser>();
       
        String sql = "SELECT * FROM users";
       
        try {
       
            String url = "jdbc:mysql://localhost/blazeds_testdb";
            conn = DriverManager.getConnection(url, "blazeds_testid", "blazeds_testpw");
            PreparedStatement stmt = conn.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();
            while (rs.next()) {
                TestUser user = new TestUser();
                user.setUserIdx(rs.getInt("idx"));
                user.setUserName(rs.getString("name"));
                user.setUserAge(rs.getInt("age"));
                users.add(user);
            }

        }
        catch(Exception e)
        {
            throw new RuntimeException(e);
        }
        finally{
            try {
                conn.close();
            }
            catch (Exception ignored) {
            }
        }
        return users;
    }
}

 

 

 

혹시 Compile 시 오류가 발생한다면  아래와 같이 해준다.

C:\Server\Tomcat\webapps\blazeds_test\WEB-INF\classes\kr\pe\kyrandia>javac -cp ../../../ objects/*.java

C:\Server\Tomcat\webapps\blazeds_test\WEB-INF\classes\kr\pe\kyrandia>javac -cp ../../../ services/*.java

 

 

6. 설정 파일 수정

 

WEB-INF\web.xml 파일에서 rds 관련부분 주석을 제거 한다.

 

<param-name>useAppserverSecurity</param-name>
<param-value>true</param-value>

 

주석 제거후 위의 true 부분을 찾아서 false 로 바꿔준다.

 

 

WEB-INF\flex\remoting-config.xml 파일에서

 

<destination id="TestUserServiceDestination">
    <properties>
        <source>kr.pe.kyrandia.services.TestUserService</source>
    </properties>
</destination>

 

를 <service></service> 태그 안에 추가 한다.

 

 

7. Flash Builder 4.5 에서 설정

 

새로운 프로젝트를 시작한다. 나는 Mobile Project를 선택했다.

 

이미지 02

 

이미지 03

 

이미지 04

 

자신의 설정 대로 입력한 후 Validate Configuration 버튼을 눌러서 위쪽에 나온 메시지 처럼 Valid 가 나와야 제대로 설정 된거다. 오류가 난다면 설정이나 경로를 다시 한번 확인 한다.

 

이미지 05

 

프로젝트가 열리면 아래쪽에 Data/Services 탭에서 Connect to Data/Services 링크를 누른다.

 

이미지 06

 

BlazeDS 를 선택한다.

 

이미지 07

 

생성해둔 Destination 을 선택한다.

 

이미지 08

 

Finish 버튼을 누르면 위처럼 Data/Services 탭에 내용이 채워진걸 확인 할 수 있다.

 

이제 DataGrid를 추가해야하는데 Component를 찾아봐도 DataGrid가 없다. 걱정하지말고

 

프로젝트 Code 모드로 들어가서 <s:DataGrid></s:DataGrid> 를 추가한다.

모바일 버전에선 최적화가 안됐다고 나오지만 쓰기엔 무리가 없다.

 

이미지 09

 

Design 모드로 나와서 위처럼 크기를 설정한다.

 

이미지 10

 

그 다음 위와 같이 마우스로 끌어서 DataGrid 위에 놓는다.

 

이미지 11

 

창이 뜨면 별다른 수정 없이 OK 버튼을 누른다.

 

이미지 12

 

위와 같이 DataGrid에 Field 가 생긴걸 볼 수 있다.

 

이미지 13

 

Code 모드로 들어가서 headerText 부분을 찾아서 값을 수정한다.

userIdx 를 Idx 로 userName 을 Name 으로 userAge를 Age로 바꾼다.

 

이미지 14

 

Run 버튼을 누르거나 Ctrl+F11 키를 누르면 위와 같은 창이 뜬다.

 

플랫폼을 Android 로 선택하고 실행한다. iOS 로 선택해도 된다.

 

이미지 15

 

최종적으로 실행된 화면이다.

 

SC20110802-053322

 

데이터를 좀 더 추가하고 프로그램 타이틀과 refresh 버튼을 추가 한 후

실제 폰(갤럭시탭)에서 구동해본 화면이다.

자작 프로그램 라이선스

특별한 언급이 없는 한 제가 배포하는 프로그램들은 아래의 라이선스를 따릅니다.


==========

License

==========

이 프로그램은 공개프로그램(freeware)입니다.
회사, 관공서, 학교 등 어떤 곳에서도 자유롭게 사용하실 수 있으며
부록이나 무료의 형태로 제공될 수 없습니다.
제 홈페이지를 제외한 단체 혹은 기관에서의 재배포는 원칙적으로 금하고 있으며
제작자의 동의 없이 판매 및 상업적 활용 할 수 없습니다.
또한 제작자는 이 프로그램이 사용자의 필요 사항을 만족시킨다거나,
이 프로그램의 작동이 제대로 이루어진다거나,
이 프로그램에 오류가 없음을 보증하지 않습니다.
이 프로그램 사용 시에 발생하는 모든 문제에 대해 제작자는 책임을 지지 않습니다.

CintaNotes 1.4.2 한글판

 CintaNotes 1.4.2 가 Release 되었네요.


제가 작업한 한글화 파일이 적용 되어 있습니다.

아래 1.4.1 버전 말고 1.4.2 정식 버전으로 다운받으셔서 메뉴에서
설정 -> 언어 -> 한국어로 선택하시면 됩니다.

CintaNotes 홈페이지 : http://cintanotes.com/

Portable 버전 다운로드 :

한글화 내용중 혹시 거슬리거나 수정할 부분이 있으시면 댓글 남겨주세요.

Crysis2 Invalid parameter detected in CRT function 에러 발생시 처리법

 Crysis2 실행하면


Invalid parameter detected in CRT function 이라는 오류가 나오면서 실행조차 되지 않는 문제가 있습니다.




현재 저는 사블 X-fi 외장형 사운드 카드를 사용하고 SPDIF 출력으로 사용하고 있습니다.

구글링 해보니 게임 할때 마다 X-fi 를 사용안함으로 해놓고 사용하라는 글들이 해결법으로 올라와있더군요.

그런데 이상하게도 X-fi 외장형 사운드 카드의 경우 해외에서도 많이 사용할텐데 해외 웹사이트에선
이 문제 대한 글들을 찾을 수가 없었습니다.

그리고 영문 윈도우 에서는 문제가 없다는 국내 사용자의 글을 보게 되었습니다.

그래서 한글 문제 일것으로 결론을 내렸습니다.

저는 계정명도 영문이고 아무리 생각해도 문제가 될만한 부분이 없었습니다.

혹시나 해서 재생 장치명이 한글이라서 문제인가 싶어서 바꿔보니 잘 되더군요.


수정하는 방법은
트레이에서 재생 설정으로 들어가던지 제어판에서 소리 설정으로 들어가셔서 아래처럼 수정하시면 됩니다.

SPDIF 출력에서 마우스 오른쪽 버튼을 누른다.


메뉴가 나오면 속성을 누른다.


SPDIF 출력을 SPDIF Output 으로 변경 후 (영어로 이뤄진 다른단어로 변경 가능) 확인 버튼을 누른다.

Insert DateTime Plugin for Notepad++ v0.3 업데이트 (32bit, 64bit)

   Notepad++용 현재 날짜 및 시간 입력 플러그인 v0.3 이 프로그램은 Notepad++(이하 Npp) 플러그인으로 단축키를 누르면 현재 날짜와 시간을 편집창에 삽입합니다. 이번 버전에서는 항상 생각하고 있던 옵션 기능을 추가 했습니다. 기...