우분투와 윈도우를 멀티부팅으로 사용하다가 윈도우를 포맷을 하고 다시 설치하니 Grub가 날아갔습니다.
윈도우는 설치시 MBR에 자신의 로더를 덮어씌우기 때문에 어쩔수 없이 Grub를 다시 설치해주어야합니다.
ubunt#sudo -i
을 입력하여 root권한을 얻습니다.
sudo로 매번 root권한을 얻어도 되지만 앞으로 하는 진행되는 작업들 모두 root권한을 필요로 함으로 root권한을 얻은채로 작업을 하는 것이 쉽습니다.
root#fdisk -l
우분투가 깔린 파티션을 root에 마운트 시킵니다 root#mount /dev/sda5 /root
root#grub-install --root-directory=/root /dev/sda
여기서 sda는 리눅스 파티션이 있는 물리하드디스크의 값입니다. 간단하게 리눅스가 깔린 파티션 이름의 숫자부분을 빼면 됩니다.
public static bool Register_Write(string o_key, string o_data)
{
try
{
RegistryKey regkey;
regkey = Registry.CurrentUser.OpenSubKey("Software", true);
regkey.CreateSubKey(@"레지스트리 목록이름");//레지스트리 목록 생성
regkey = Registry.CurrentUser.OpenSubKey(@"Software\Login", true);//생성한 레지스트리에 접근가능하도록 설정
regkey.SetValue(o_key, o_data);//키 값과 데이터를 저장
regkey.Close();
return true;
}
catch
{
return false;
}
}
public static string Register_Read(string o_key)
{
string l_str;
try
{
RegistryKey regkey;
regkey = Registry.CurrentUser.OpenSubKey(@"Software\Login", true);//해당 레지스트리에 접근
l_str = regkey.GetValue(o_key).ToString().Trim();//해당 키값에 대한 데이터를 저장
regkey.Close();
return l_str;//가져온 데이터를 반환
}
catch
{
return "";
}
}
MY-SQL 설치는 간단하게
$sudo apt-get install mysql-server
으로 설치 하였습니다.
먼저 외부에서 접속이 가능하도록 설정파일을 수정
$sudo vim /etc/mysql/my.cnf
으로 파일을 연뒤
bind-address = 127.0.0.1 <– 이부분을 #으로 주석처리 해줍니다. bind-address는 접속가능한 주소를 설정해주는 부분인데, 특정한 곳에서만 접속하고 싶다면 이 부분에 특정한 곳의 IP 주소를 입력해주면 됩니다.
그 다음으로 해야 할 일이 mysql에서 접속가능하도록 아이디를 설정해주는 부분입니다. 이 부분을 해주지 않으면
access denied for user ‘root’@~~~~~~ 라는 에러가 뜹니다.
$mysql -u root -p
입력하면
Enter password:
가 뜨는데 mysql을 설치할때 설정한 루트 비밀번호를 입력하시면 됩니다
그럼 mysql가 실행되었으면 mysql>으로 프롬프트가 바뀌게 됩니다.
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '루트비밀번호' WITH GRANT OPTION;
이렇게 하면 root가 mysql에 접속할 권한을 가지게 됩니다.
다른 아이디에게 접속 권하을 주려면 root자리에 해당 아이디를, 루트비밀번호에 해당 아이디의 비밀번호를 넣으시면 됩니다.
QT 응용프로그램에서 OpenGl를 사용하기 위해서는 QtOpenGL과 OpenGL 라이브러리에 링크를 해야 합니다. 라이브러리와 링크하기 위해서는 프로젝트 파일에 QT+= opengl 를 추가해주어야 합니다.

QGLWidget을 이용하면 표준 OpenGl 함수를 그대로 이용할 수 있습니다.

protected에 선언된 paintGL()는 위젯이 그려질때마다 호출되는 paint()이벤트를 재정의 한것이고, mousePressEvent(), mouseMoveEvent()는 각각 마우스를 눌렀을때와 움직였을때를 재정의한 것입니다.
private에 선언된 함수와 변수들은 실제로 OpelGl를 그리기 위한 함수와 변수들입니다.
자세한 코드는 첨부파일을 받으셔서 보시기 바랍니다.

QT에서는 위젯을 디자인하는 것이 프로그래밍과 분리가 되어있습니다.
QT 디자이너로 비주얼 스튜디오에서 C# 폼을 디자인하듯이 위젯에 여러 컨트롤들을 손쉽게 추가할 수 있습니다.
하지만 이렇게 디자인된 위젯을 바로 적용 할 수는 없습니다. 물론 QT Creator를 이용하면 디자이너에와 연동을 하여 바로 적용이 되게 할 수는 있지만 내부적으로는 다이렉트로 연결 된 것은 아닙니다.
QT 디자이너는 디자인된 위젯을 클래스 형태의 코드로 바꿔주는것 뿐이고 이를 QT 프로그램에서 상속을 받거나 객체를 생성하여 사용하게 됩니다.
먼저 QT 디자이너를 실행 합니다.
처음 실행하면 뜨는 창으로 생성할 위젯 형식을 지정해줍니다.

전체적인 QT 디자이너 창입니다. 기존의 IDE들과 거의 비슷합니다.
왼쪽에 컨트롤들이 있어 이를 가운데 있는 위젯에 드래그 하면 추가됩니다.
오른쪽에 있는 속성창들을 이용하여 좀 더 세부적인 디자인을 할 수 있습니다.

간단하게 PushButton버튼 하나를 추가하여 저장해보겠습니다. 저장을 하면 확장자가 .ui인 파일이 생성이 됩니다. 이 파일은 위젯을 xml로 표현한 파일인데 qmake 실행시 자동으로 QT의 유저 인터페이스 컴파일러인 uic를 통해 ui_파일이름.h 파일로 변환되게 됩니다.
즉, untitled.ui로 저장을 하면 ui_untitled.h 파일로 변환되어 저장이 되는 것입니다.
이렇게 생성된 클래스를 적용하는 방법에는 2가지 방법이 있는데, 하나는 클래스를 상송 받는 것이고, 나머지 하나는 setupui()를 정의하여 이 함수를 호출하여 세팅하는 것입니다.

main.cpp와 untitled.ui 파일을 같은 파일에 넣은 뒤
$qmake -proect
$qmake
를 수행하면 ui_untitled.h 파일과 MakeFile이 생성됩니다.
ui_untitled.h 파일 안에 보시면 setupUi()가 정의되어 있고 이 함수에서 디자이너에서 디자인했던 컨트롤들이 생성되는 코드들이 자동으로 생성되어 들어가 있는 것을 볼 수 있습니다.
그리고 소스 밑에 보시면 namespace UI 로 지정되어 있는데 이를 이용하여 main.cpp에서 접근 하시면 됩니다.
우분투 배포판을 설치할때 개발자 툴도 함께 설치 하였으면 설치 되어있겟지만 설치가 되어 있지 않다면 설치해줍니다.
#sudo apt-get install qt4-dev-tools
qt4-dev-tools에는 qt4를 개발하기 위한 몇가지 툴들이 포함되어 있습니다.
물론 위의 툴들을 사용하지 않고 문서 편집기를 이용하여 코딩하여 컴파일 하는 것도 가능 합니다만, 이러한 툴들을 사용하여 프로그래밍 하는 것이 당연히 더 편리하겠지요
QT는 C++로 코딩을 하고 qmake를 가지고 프로젝트 파일이라는 프로그램 환경 파일만든 후 make를 이용하여 프로그래밍하게 됩니다.
대부분의 프로그래밍 언어를 공부할 때 가장 처음 보게 되는 Hello Word 프로그램입니다.

#include <QApplication>
#include <QLabel>
//QT의 모든 클래스는 자신의 이름과 똑같은 이름으로 된 헤더 파일에 정의되어 있습니다.
QApplication app(arc, argv);
//QT 응용 프로그램에서의 자원 관리를 위해 QApplication 객체를 생성합니다. 매개변수로 main에서 받은 값들을 넘겨줍니다.
QLabel *label = new QLabel("Hello World!");
label.show();
//위젯에 Hello Word를 출력하기 위한 라벨을 생성하고 보여줍니다.
return app.exec();
//마지막으로 응용프로그램의 제어를 QT에게 넘겨주고 있습니다. 이렇게 함으로써 프로그램은 마우스 클릭과 같은 이벤트를 대기하는 이벤트 루프에 진입하게 됩니다.
$qmake -project
qmake로 프로젝트파일을 생성합니다.

다시한번 qmake를 하면 이 프로젝트 파일을 이용하여 Makefile이 생성되고 이 Makefile을 이용하여 컴파일이 됩니다.
QMAKESPEC를 환경변수에 등록시켜주어야 합니다.
만약 제대로 등록되어 있지 않으면 qmake 수행시 Failure to read QMAKESPEC conf file 오류가 발생하게됩니다
$export QMAKESPEC=/QT설치 경로/mkspecs/qws/리눅스 버전-g++/
$qmake
$make
$./hello