여행_trip/제주도2020. 7. 31. 00:11

코로나 제주도 여행 괜찮을까?

7월 중순에 갔다왔는데, 괜찮았다. 코로나 인데, 또 제주도가라면 글쎄..... 다른곳으로 ....

좋았던 점은 마지막에 적어 놓았다.

코로나 발생 전, 1월에 특가 제주도 행 비행기 티켓을 구입했다. 날짜는 점점 다가 오는데, 걱정이 앞섰다.

이전에 갔다온 지인이 별 문제 없었다고 했고, 인터넷 검색해보니, 제주에서 일산까지 출퇴근 하시는 분도 있다고 보았다. 살짝 안심이 되었다.

김포공항은 작년 여름보다 사람이 많지 않았지만, 생각보다 북적였다. 열 감지도 백화점에서 하는것 처럼 똑같았다. 단, 백화점처럼 손소독제로 손 소독하고 기내에 탑승할 수 없었다.

무사히 제주도에 도착하길 _ 비행기 안에서 찍은 구름

비행기 탑승 시, KF94마스크 쓰고, 일회용 비닐장갑 끼고 탔다. 기내 화장실은 이용 절대 이용하지 말라고 다른 글에서 보아서, 탑승 전에 물도 안 마셨다. 물론 기내에서 음료서비스도 없었다. 에어팟 프로, 휴대용 손 소독제, 소독용 티슈만 기내에 가지고 탔다. 앉자마자 손잡이, 테이블 등을 소독용 티슈로 닦아주었다.

제주도 곳곳에서 볼 수 있는 마스크 쓴 돌하루방

좋았던 점은 코로나 이전 여름의 제주도 였다면, 할 수 없는 일들을 경험할 수 있었다. 핫플레이스에 줄서서 기다리지 않아도 되고, 사진찍는데 옆에 다른 일행들 찍히는 일 없고, 특히 성산 쪽에 중국인분들 안 계셔서 조용했고, 빛의 벙커도 좋아하는 자리에 앉아서 봤다. 사진도 넉넉하게 찍을 수 있고, 여행 내내 모든것이 좋았다.

좋아하는 자리에서 본 빛의 벙커 반고흐

단, 여행 내내 코로나로 불안했다.

.

2020/07/30 - [여행_trip] - 제주도 가면 구입해야 할 것 - 혼디주 육포 타르트

2020/07/31 - [여행_trip] - 제주도 가면 꼭 가는 맛집 - 횟집

2020/08/05 - [여행_trip] - 제주도 황우지 해안 - 선녀탕 즐기는 방법

2020/09/02 - [여행_trip] - 제주 겨울 한라산 백록담 등반

 

2020/08/31 - [여행_trip] - 제주 1100 고지 - 30분동안 제주 습지 느끼기

2020/08/04 - [여행_trip] - 제주도 빛의 벙커 사진찍기 좋은곳

 

제주도 빛의 벙커 사진찍기 좋은곳

제주도 빛의 벙커 사진 찍기 좋은 곳 - 관람 존&포토존 알아보기 제주도 가면 매번 가는 곳이 있다. 바로 빛의 벙커! 사진 찍기도 예쁜 곳 이지만, 작품과 음악을 한 번에 감상하는 묘미가 있어, ��

mj0316.tistory.com

2020/08/06 - [여행_trip] - 제주 거문오름 - 비밀의 숲 용암길

 

제주 거문오름 - 비밀의 숲 용암길

천연기념물 444호, 세계자연 유산으로 지정된 거문오름 용암길 누가 가봤을까? 제주도의 진짜 비밀의 숲은 거문오름의 용암길 아닐까? 이번에 소개할 곳은 한림읍에 있는 검은오름 아니고 거문��

mj0316.tistory.com

2020/08/07 - [여행_trip] - 제주 히든 클리프 호텔 - 태풍 속 풀파티

2020/08/31 - [여행_trip] - 제주 1100 고지 - 30분동안 제주 습지 느끼기

2020/09/02 - [여행_trip] - 제주 겨울 한라산 백록담 등반

2020/09/05 - [여행_trip] - 제주 함덕 바다뷰 델문도 카페 - 뷰가 예쁜 카페

2020/09/06 - [여행_trip] - 제주 사계항근처 커피가 맛있는 - 스테이위드커피

2020/09/07 - [여행_trip] - 제주 월정리 카페 - 기억해

2020/09/08 - [여행_trip] - 제주 성산 경미네집 - 해물라면, 뿔소라, 전복, 멍게, 성게, 막걸리

2020/09/12 - [여행_trip] - 제주 성산 바다전망 예쁜카페 - 카페 더 라이트

 

제주 성산 바다전망 예쁜카페 - 카페 더 라이트

제주 성산 바다전망 예쁜 카페 - 카페 더 라이트 cafe the light 지인 추천으로 알게 된 카페 더 라이트 먹어본 것 중에, 당근 생크림 케이크, 리얼 초콜렛 밀크(단거 좋아하시는 분), 추천. 아메리카�

mj0316.tistory.com

 

Posted by 검지발가락♡
여행_trip/제주도2020. 7. 30. 18:33

제주도에 가면 사야 할 것

혼디주, 우도 땅콩타르트, 말 or 돼지육포

제주도에가면 꼭 사는 것이 있다. 바로 혼디주 이다. 벌써 몇년째 계속 사오고 있다. 매년 제주도 가고 있는....!

혼디주 올해는 몇 병이나 샀을까?

혼디주는 고기랑도 잘 어울리지만 회랑 찰떡이다. 한라산 소주보다는 비싸지만.... 쭉쭉 목구멍으로 들어가는 신비함이 있다. 이게 술이야? 하면서 마셨다가는 12도 짜리 술에 어느새 취새있다. 주위사람들에게 선물도 하고, 선물 받은 사람들이나 소개 받은 사람들은 제주도에 가면 꼭 구입해온다. 지난번 제주도 갔다가 혼디주에 맛 들려서 온라인으로 구입하셨다는 분도 있다.

이번 여행에서 놀라운 사실을 알았는데, 제주시 이마트에서 혼디주를 시장보다 싸게 팔고 있었다. 6천원이 안 되는 가격에 ... (서귀포시 이마트에서는 잘 모르겠음) 구입하려면 제주도에 있는 이마트에서 사는것이 좋을꺼 같다. 예전에는 이마트에서 안 팔았던거 같은데, 올해는 이마트에서 팔고 있었다. 백종원 효과인가..... 만남의 광장에서 혼디주 사장님 나와서 깜짝 놀랐는데 사정이 어렵다고 하셔서 놀랐었다. 엄청 좋아하는 술인데 유통이 잘 되었으면 했는데 이마트에 있다니~ 유통이 잘 되어서 육지에 있는 이마트에서도 저렴한 가격에 만날수 있었으면 좋겠다.

딱새우회랑 고등어회랑 갈치회에 딱인 혼디주

다음은 우도 땅콩 타르트~

한박스에 8개 들어있지만.... 땅콩 타르트

3년전에 엄마랑 카페에 갔다가 맛 만 보겠다고 낱개로 1개샀다가 반해서 한 박스 사려고했는데, 15000원 이란 가격에 놀랐다가 올레시장에서 좀더 저렴하게 팔길래 구입하기 시작했다. 타르트 위에 우도 땅콩으로 덮여있어서 어르신분들께 선물해도 좋아하신다.

다음은 흑돼지 or 말육포

특별한 맛은 아니지만, 말고기로 만든 육포

한우 육포는 어디서나 먹을 수 있지만, 제주도에 왔다면, 말 육포나 흑돼지 육포는 한번쯤 드셔보시길~ 엄청 특이한 맛이 있는건 아니지만, 제주도에서 유명한 흑돼지와 말고기로 만든 육포 하나 쯤은 먹어보는 것도 좋다.

7월 중순(2020년 07월)에 다녀왔는데, 코로나라서 그런지, 작년보다 제주도에 사람이 없었고, 구입 한 말육포와 땅콩타르트는 유통기한이 짧았다. 가족들에게 선물하려고 샀는데 내가 다 먹어야할 판.......

내가 쓴 글로, 제주도의 내가 좋아하는 상품이 다른분들에게도 소개되어, 계속 보길 바란다.

2020/07/31 - [여행_trip] - 제주도 가면 꼭 가는 맛집 - 횟집

2020/07/31 - [여행_trip] - 코로나 제주도 여행 괜찮을까?

2020/08/05 - [여행_trip] - 제주도 황우지 해안 - 선녀탕 즐기는 방법

2020/08/31 - [여행_trip] - 제주 1100 고지 - 30분동안 제주 습지 느끼기

2020/08/07 - [여행_trip] - 제주 히든 클리프 호텔 - 태풍 속 풀파티

2020/08/04 - [여행_trip] - 제주도 빛의 벙커 사진찍기 좋은곳

 

제주도 빛의 벙커 사진찍기 좋은곳

제주도 빛의 벙커 사진 찍기 좋은 곳 - 관람 존&포토존 알아보기 제주도 가면 매번 가는 곳이 있다. 바로 빛의 벙커! 사진 찍기도 예쁜 곳 이지만, 작품과 음악을 한 번에 감상하는 묘미가 있어, ��

mj0316.tistory.com

2020/08/06 - [여행_trip] - 제주 거문오름 - 비밀의 숲 용암길

 

제주 거문오름 - 비밀의 숲 용암길

천연기념물 444호, 세계자연 유산으로 지정된 거문오름 용암길 누가 가봤을까? 제주도의 진짜 비밀의 숲은 거문오름의 용암길 아닐까? 이번에 소개할 곳은 한림읍에 있는 검은오름 아니고 거문��

mj0316.tistory.com

Posted by 검지발가락♡
공대생의 일기/Embedded2010. 12. 28. 02:01
2009년

설치. ( qte에서 (보드없이)사용가능한 )

 

① CD 의 /kenel/mkimage를 /usr/bin와 /usr.src 에 옮긴다.

② /usr/src/linux-2.6.21 -xstation 으로 이동한다.

③ xstation에 기본적으로 설정된 환경을 적용합니다.

#make xstation_defconfig

 

④기본 설정 환경 이외에 설정될 환경을 적용합니다.

# make oldconfig

 

⑤ 마지막으로 커널 이미지를 생성합니다.

# make uImage

 

⑥ 툴 체인을 최상위로 이동 합니다.

#cp toolchain_ tar.gz /

 

⑦ 최상위에서 압축을 풀어줍니다.

# tar zxvf toolchain_tar.gz

 

⑧ 다음과 같은 경로에 설치가 된다.

 

/usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softloat-linux-gnu/bin

 

⑨ #cd /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softloat-linux-gnu/bin 으로 옮긴다.

 

⑩ path를 지정해 준다.

 

# vi /root/.bash_profile

 

PATH = $ PATH : $ HOME/bin

PATH = /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softloat-linux-gnu/bin:$PATH

 

⑪ 부팅을 해줘야 하는데 부팅후 오류를 방지하기위해 부팅을 하지 않고

# source /root/./bash_profile

 

⑫ #echo $PATH

 

⑬ 최상위 디렉토리로 가서

#arm - tab 키 두 번 해서 arm 파일 나오면 성공.!

(tool 체인 설치 끝)

 

⑭ qt에 대한 관리를 위해서 최상위 디렉토리에섯 qtdir이라는 디렉토리를 만듭니다.

#mkdir/qtdir

 

⑮해당 디렉토리로 이동합니다.

#cd /qtdir

 

⑯qt소스 및 관련 파일을 복사 해두기 위해서 qtsrc 디렉토리를 만듭니다.

 

#mkdir qtsrc

 

⑰qtsrc 디렉토리에 qt 컴파일에 필요한 파일들을 모두 복사합니다.

 

qt_install-file.tar.gz (터치 수정 파일 및 컴파일 스크립트)

qt-embedded-free-3.3.7.tar.gz(qt 3.3.7 임베디드 소스)

qt-x11-free-3.3.7.tar.gz (qt 3.3.7 x11소스)

tsilib-0.0.2.tar.bz2(터치 스크린 소스)

 

⑱압축을 모두 해제합니다. bz2 파일은

 

#tar jxvf tslib-0.0.2.tar.bz2 를 사용하여 압축을 해제 합니다.

 

⑲ 압축이 해제 되면, 파일명과 같은 디렉토리가 생성됩니다.

 

#mv /qtdir/qtsrc/qt-embedded-free-3.3.7 /qtdir/qta

#cp -rf /qtdir/qta /qtdir/qte

#mv /qtdir/qtsrc/qt-x11-free-3.3.7 /qtdir/qtx

#mv /qtdir/qtsrc/tslib-0.0.2 /qtdir/qta/tslib

 

⑳ qt-embedded 컴파일에 사용될 스크립트 파일을 복사합니다.

#cd /qtdir/qtsrc/install-file

#cp /qtdir/qtsrc/build-arm.sh /qtdir/qta

 

수정된 터치 패드 소스를 qta의 지정된 경로로 복사 합니다.

#cp -rf qmouselinuxtp* /qtdir/qta/src/embedded

 

x11용 QT를 설치하기 위해서 설치 디렉토리로 이동합니다.

#cd /qtdir/qtx

 

#./configure -shared -thread -no-cups

컴파일 설정을 해줍니다. 쉐어드 라이브러리는 사용하고 스레드를 사용하며, 일반적인 유닉스 프린팅 시스템(cups)을 사용하지 않겠다.

 

Makefile을 수정합니다.

 

#vim Makefile

 

"all : 항목애소 sub-tutorial 앞에 #을 붙여 줍니다. (#은 주석처리)

 

컴파일 해줍니다.

#make

 

컴파일 도중 라이센스 여부가 나오면 yes를 입력합니다.

 

컴파일이 완료되면, 기존에 호스트의 qt 심볼릭 링크들을 삭제 하거나 백업을 해 줍니다.

#mv /usr/bin/qmake /usr/bin/qmake-old

#mv /usr/bin/uic /usr/bin/uic-old

#mv /usr/bin/moc /usr/bin/moc-old

#mv /usr/bin/designer /usr/bin/designer-old

 

새로운 QT x11 심볼릭 링크를 생성 합니다.

 

#ln -s /qtdir/qtx/bin/qmake /usr/bin/qmake

#ln -s /qtdir/qtx/bin/uic /usr/bin/uic

#ln -s /qtdir/qtx/bin/moc /usr/bin/moc

#ln -s /qtdir/qtx/bin/designer /usr/bin/designer

#cd /qtdir/qtx/tools/qvfb

#make clean

#make

#ln -s /qtdir/qtx/tools/qvfb/qtfb /usr/bin/qvfb

 

정상적으로 qvfb가 실행되는지 확인해 보아야 합니다.

 

#qvfb

 

 

qtx.source 파일을 만들어 리부트 후 필요 시점에서 개발환경 설정을 해 줄 수 있도록 환경변수 변경 스크립트를 만들어 줍니다.

 

#vim /qtdir/qtx/qtx.source

넣어야 할 내용

 

#!/bin/sh

 

export QTDIR=/qtdir/qtx

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QTINC=$QTDIR/include

export QTLIB=QTDIR/lib

 

qt-embedded를 컴파일 할 때 , 필요한 파일이 있습니다. qtx에 있는 uic가 qta의 bin 디렉토리에 있어야 하므로, uic 파일을 해당 디렉토리로 복사해 줍니다.

 

#cp /qtdir/qtx/bin/uic /qtdir/qta/bin

 

qte 디렉토리로 이동 합니다.

#cd /qtdir/qte

 

qte의 컴파일 환경을 설정해 줍니다.

 

./configure -shared -thread -no-cups -qvfb -no-nis -no-s시 -no-ipv6 -qt-libpng -qt-libjpeg

 

컴파일 해 줍니다.

#make

 

vi 명령어를 사용하여 qte.source 스크립트를 만들어 줍니다.

#vim /qtdir/qte/qte/source

 

#!/bin/sh

 

export QTDIR=/qtdir/qte

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export PATH=$QTDIR/bin:$LD_LIBRARY_PATH$PATH

 

 

컴파일 테스트

#source /qtdir/qte/qte.source

#cd /qtdir/qte/examples/hello

 

#make

 

#qvfb&

 

# ./hello -qws

 

 

실행이 완료 되면 QVFB에 응용 프로그램이 구동되는 것을 볼 수 있습니다.

 

 

 

-embedded[arm] 설치

 

① QT arm 용 소스 디렉토리로 이동 합니다.

 

#cd /qtdir/qta

 

② 빌드 스크립트의 내용을 현재 장비 그리고 본 문서에 맞도록 일부 변경합니다.

 

#vim build-arm.sh

 

변경할 내용은 다음과 같다.

 

#!/bin/sh

 

#build tslib

cd tslib/

export CC=arm-softloat-linux-qnu-gcc

#./autogen.sh --host=arm-linux

./confiqure--host=arm-linux -prefix=/usr/src/linux-2.6.21-xstation

#make clean

 

.....이하 생략.....

 

 

③qstring.h 파일을 수정 합니다.

#vim qstring.h

 

196라인부터 202라인 까지의 내용을 주석처리를 하고 한 줄을 추가로 입력 해 줍니다.

 

/*

 

#ifdef Q_NO_PACKED_REFERENCE

ushort &unicode(){ return *(&ucs); }

#else

ushort &unicode(){ return ucs; }

#endif

*/

 

ushort &unicode() { ushort& tmp =ucs; return tmp;}

 

 

④ 크로스 컴파일 및 관련 라이브러리를 사용할수 있도록 qmake.conf를 설정 합니다.

 

196 라인 정도에 있는 QMAKE_INCDIR에 /qtdir/qta/include를 넣어 줍니다.

그리고 그 아랫줄에 QMAKE_LIBDIR에 /qtdir/qta/lib를 넣어 줍니다. 그리고 20여줄 아래에 보면 QMAKE_LIB_DYNLOAD에 -lts(엘티에스)를 추가 시켜 줍니다.

 

 

QMAKE_INCDIR = /qtdir/qta/include

QMAKE_LIBDIR = /qtdir/qta/lib

..(20여줄 생략)

QMAKE_LIBS_DYLOAD = -ldl -lts

......

 

수정이 끝나면, 저장하고 종료합니다. 종료가 다되면 컴파일을 시작할 수 있습니다.

 

⑤ 빌드 스크립트는 터치 패드 드라이버를 컴파일 하고, 그 이후에 필요한 헤더파일을 qta디렉토리로 복사해 줍니다. 복사된 뒤에, qta를 설정하고, 컴파일 합니다.

 

#build-arm.sh

 

⑥스크립트 수행 중 라이선스 부분에서 yes를 선택합니다.

 

⑦수행중 디스플레이 해상도 선택 부분에서 16을 선택 합니다.

(삼성 6410은 24를 지원 합니다.)

 

⑧컴파일이 정상적으로 종료되면 Enjoy! 라는 메시지를 확인 할 수 있습니다.

 

⑨컴파일이 완료 되어었으면, 라이브러리가 정상 컴파일 되었는지 확인합니다.

#cd/ qtdir/qta/lib

#file libqte-mt.so.3.3.7

 

ARM version 이라고 출력되었으면, 이것은 arm 보드에서 구동이 가능하다.

 

⑩프로그램시 qta로 환경설정을 바꿔주는 스크립트를 만든다.

#!/bin/sh

 

export QTDIR =/qtdir/qta

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QMAKESPEC=/qtdir/qta/mkspecs/qws/linux-arm-q++

export QTLIB = $QTDIR/lib

 

⑪타겟 포팅

 

#mkdir /nfsroot/qta

#체 /qtdir/qta/lib/libqte-mt* /nfsroot/qta

 

⑫보드에 적용

 

(타겟) #mount -t nfs ip :/mnt/nfs -o rw,rsize=1024,nolock

(타겟) #cd /usr/lib

(타겟) #cp /mnt/nfs/qta/* /usr/lib

 


'공대생의 일기 > Embedded' 카테고리의 다른 글

[QT]qt에 대하여  (0) 2010.12.28
Posted by 검지발가락♡
공대생의 일기/Embedded2010. 12. 28. 01:54
2008년

검지발가락이 정리한 임베디드 리눅스/GUI QT 강의 내용

 

Windows와 Linux 양쪽의 플랫폼에서 동작 가능하게 하기 위해 노르웨이의 TrollTech의 두 명의 창업자에 의해 개발이 시작되었음.

 

1.중점 설계 사항

․ 각 플랫폼별 라이브러리를 따로 작성

․ 개발자는 플랫폼 의존적인 부분을 신경쓰지 않고 고 수준 API만을 쓰도록 지원

․ C++을 기반으로 작성

 

1)장점

․ 세련된 UI 디자인

․ 16년의 오래된 역사 만큼 안정성 보장

․ 풍부한 레퍼런스 및 기술 문서 제공

․ GPL 라이선스 및 QPL 상업용 라이선스로 제공

․ 빠른 버그 패치

․ 국제화 지원 - Uicode 지원

․ 다른 GUI 툴킷에 비해 코드량이 적음

․ 처음 접하는 개발자돠 쉽게 익히고 활용 가능

 

2)단점

 

․ 해외와 달리 국내에서는 부족한 개발 저변

․ 상업용을 위해서는 라이선스를 구입해야 함.

․ C++ 및 MOC로 인한 느린 컴파일 속도

․ GTK+에 비해 상대적으로 큰 용량이 필요.

 

3)활용 분야

․ KDE프로젝트

․ PMP나 스마트 폰등을 통해 해외에서 상용화 되었음

 

4)특징

(1)멀티 플렛폼 C++ GUI ToolKit

 

․ 해당 플랫폼에서 재컴파일 하는 것으로 유닉스/윈도우/Mac/Embedded 환경에서 실행가능

 

(2)C++ 기반 객체 지향 클래스 라이브러리

 

․ QT 모든 구현이 C++ Class로 캡슐화하여 사용이 용이하고 상속을 이용하여 확장 기능

 

(3)국제화 기능 지원(2.0부터 | 18n 기본 제공)

 

․ 유니코드 지원

․ QT Languist를 통해 메시지의 번역이 쉬움 (QT3.0이후)

 

(4)Opne Source

 

․ 모든 소스가 오픈되어 있음.

․ 필요에 따라 Library Customizing 이나 debugging 가능

 

(5)Signal / Slot 메커니즘

 

․ 객체의 신호를 다른 객체 슬롯에 연결함으로써 프로그램 동작을 결정

 

(6)표준 GUI를 구성할 수 있는 풍부한 Widget

 

․ 표준 User Interface(Push button, list, menu, checkbox..) 모두 제공

․ 표준 Look 과 Feel을 제공(Theme 기능 제공)

 

(7)QT용 font 지원

 

․ qpf라는 QT용 폰트 지원

․ 사이즈 작고 속도 빠름

 

(8)멀티 Thread 지원

 

․ QThread 라는 쓰레드 클레스를 지원하여 쓰레드 프로그램 작성이 쉬움

 

(9)비디오 프레임 버퍼 직접 액세스 하여 Display 기능 수행

 

․ Qt/E 라이브러리가 직접 프레임 버퍼를 제어함.

 

(10)타 GUI 툴킷에 비해 적은 코드량

 

․ 텍스트 문자가 흘러가는 위젯을 작성하기 위한 코드 작성시

 

․ MOTIF : 224라인

․ MFC : 164라인

․ Qt : 64라인

 

 

2.

1)Qtopia

 

․ Qt/Embedded 기반으로 만들어진 Window Manager(WM)로서 콘솔 상에서 실행하는 Qt/E 어플리케이션 MS-windows처럼 윈도우 상의 아이콘을 클릭하여 실행 할 수 있는 환경 제공

 

․ WM 기능 뿐만 아니라 Qt/E 기반으로 여러 가지 어플리케이션을 포함하고 있으므로 Qtopia를 타겟보드에 포팅하여 PDA를 위한 WM 기능 구현

2)Qt Designer

 

․ GUI 프로그램의 초기 디자인 Tool

․ 각 GUI 위젯의 속성 설정

․ 간단한 코드 입력

․ 저장시 .ui 라는 xml 형태의 파일로 저장됨

 

3.

Qt x11

QT-embeded

qtx

qte

qta

x86

x86

ARM

qvfb

가상 버퍼를 만든 뒤 애뮬레이터 사용시.

 

qvfb가 사용된

library 추출하여

보드에 이식.

uic

moc

qmake

 

 

1) uic

․ ui. 파일을 컴파일 가능한 .cpp 및 .h로 추출해주는 Tool

․ Xml 형태의 .ui파일을 분석하여 소스형태로 추출

․ uic 출을 이용한 소스 파일 추출 예제

 

 

2)MOC (Meta Object Compiler)

 

․ Qt 만의 SIGNAL/SLOT 문법은 C++에서 제공해 주지 않기 때문에 내부적으로 미리 처리하기위한 코드(Preprocessor)를 작성해야 함.

․ 원본소스의 헤더 파일 분석하여 자동으로 추가적인 소스파일(moc_기존파일명.cpp)을 생성함.

․ 원본소스 헤더파일내의 QOBJECT라는 매크로가 선언되어 있어야함.

․ slots 함수 및 signal 함수들을 파싱하여 새로운 소스파일을 생성함.

 

 

4)QMAKE

 

․ UIC/MOC등 복잡한 컴파일 절차를 간소화 하기위해 만들어짐.

․ 소스파일들에 대한 프로젝트 파일(.pro) 생성과 Makefile 생성의 두 가지 기능을 가짐.

․ qmake 실행 디렉토리내의 소스파일들과 디자인 파일(.ui)을 검색하여 프로젝트 파일을 생성해줌

․ 프로젝트 파일을 이용하여 Makefile을 생성함.

․ 프로젝트 파일 생성 예


․ Makefile 생성 예

 

 

 

5)QVFB(Qt Virtual Frame Buffer)

 

․ x86 리눅스 상에 가상의 프레임 버퍼를 만들어 줌.

․ x86 상에서 작성된 Embedded Qt 프로그램을 테스트 할 수 있음.

․ 가상의 프레임 버퍼이기 때문에 실제로 Embedded 장비에서도 똑같이 동작한다고 보장하기 힘듬.

․ QPF 폰트를 생성하기 위해서는 반드시 필요.

'공대생의 일기 > Embedded' 카테고리의 다른 글

[QT]qt3환경설정  (0) 2010.12.28
Posted by 검지발가락♡
공대생의 일기/2010年2010. 12. 28. 01:41
2010년 12월 7일
사용한 개발 툴 : JAVA, eclipse-Helios, MySQL, Tomcat7.0

1.응답자 정보조사


이름과 연락처를 입력합니다.
-> 입력하지 않고, Next 버튼을 누를 경우 에러처리
->SQ1에서 다중응답형을 사용하고, 응답형에서 Toeic을 선택하지 않으면 조사를 종료.


2.응답자 선호조사


->SQ2~SQ4는 단일응답형 사용
->SQ5는 다중응답순위형을 사용하여 체크박스 클릭 순서대로 Text 박스에 보여주도록
->SQ6은 Step by Step으로 만족도 점수 선택

3.설문종료


귀요미들의 인사

4.차트보여주기


5.DB확인

토익 900넘는 그날 까지 화이팅!!!
Posted by 검지발가락♡
공대생의 일기/2010年2010. 12. 25. 17:23

2010년 11월 10일

사짜의 연습;


♣inputbox 

<input type ="text" name="id" size = 10>
예외처리 : id.value=="", id.focus()

♣selectbox

 <select name="p1">
   <option value="010">010<option value="011">011<option value="016">016<option value="019">019</select>
   -<input type = "text" name="p2" size =10>-<input type = "text" name="p3" size =10>

♣radio(단일선택)
<input type="radio" name="year">
<input type="radio" size = 10 name="pro" onclick='closeWindow()'> -> onclick 속성을 사용

예외처리 : 라디오 버튼은 배열 형식으로 값을 받아온다. -> year[0].checked 

♣checkbox(다중선택)

<input type="checkbox" name="drink">
 
예외처리 : 체크박스도 배열 형식으로 값을 받아온다. -> drink[0].checked

♣알림창

alert("")

버튼으로 창전환

<input type= "button" value="Next" onClick="closeWindow()">
<Script>
function closeWindow(){
   navigate("beer6.html");    // 현재의 윈도우에 새로운 창으로 변환
}

function closeWindow(){ 
   window.close(); // 현재의 윈도우 종료.
}
</Script>

그림도 적절하게 삽입했으나....................;;;  제거.



// 틀
▶ 응답자 정보 조사 ◀
   
안녕하십니까? 조사하기에 참여하기 앞서 귀하의 이름과 연락처를 입력하세주세요.
  성명 :
연락처 : --
▶ 선정 질문 ◀

   
SQ1.귀하의 성별은 어떻게 되십니까?
  남자 여자
SQ2.귀하의 연령은 어떻게 되십니까?
  만 10~19세 만 20~29세 만 30~39세 만 40~49세 만 50~59세 만 60세 이상
▶ 선정 질문 ◀
   
 SQ3. 귀하의 직업은 무엇입니까?
직장인
대학생
중/고등학생
자영업자
주부
기타
▶ 선정 질문 ◀
   
 SQ4.다음 중 귀하께서 지난 1개월간 드셔본 적이 있는 것을 모두 선택해 주십시오.
맥주  소주
스포츠음료 양주
요쿠르트 우유
전통주/과실주/청주 주스류
차음료 커피
탄산음료 모두 마셔본 경험이 없다.
▶ 맥주 브랜드 / 응용 실태 ◀
   
 A1. 귀하께서는 '맥주'하면 어떤 브랜드가 생각나십니까? 생각나시는 것을 모두 적어주세요.
    (생맥주 및 하우스 맥주 등 특별한 브랜드가 없는 제품은 제외해 주십시오.)
, , , ,
 A2. 다음 중 귀하께서 최근 1개월 간 드셔본 적이 있는 맥주 브랜드를 모두 선택해 주시기바랍니다.
  하이트 맥스 카스 카스레드 OB블루 엑스필S 카프리 버드와이져 코로나
  하이네캔   기타
 A3. 귀하께서 드시는 맥주는 다음 중 어떠한 종류의 맥주 입니까?
  병맥주 캔맥주 생맥주
▶ 선정 질문 ◀
   
  A3-1. 귀하께서는 주로 생맥주를 드신다고 답하셨습니다. 생맥주를 드실 때 주로 어느 용량의 생맥주를 주문하십니까?
500cc
2000cc
3000cc
5000cc
▶ 맥주 브랜드 / 응용 실태 ◀
   
 A4. 다음 중 귀하께서 맥주 안주로 가장 선호하시는 안주는 무엇입니까? 선호하시는 순서대로 2순위까지 선택해 주시기 바랍니다.
1순위 :, 2순위 :

1. 과일안주 2. 골뱅이 무침 3.치킨류

4. 소시지볶음류  5.마른안주   6.기타

 

 A5. 귀하께서는 맥주를 선택할 때 다음의 속성별로 어느 정도 중요하다고 생각하십니까? 다음의 속성들 중에서 맥주를 선택할 때 중요하다고 생각되는 항목을 1점에서 ~ 5점 사이에 선택해 주시기 바랍니다.
 
속성 전혀중요하지않다 중요하지않다 보통이다 중요하다 매우중요하다
1.맥주의 맛
2.맥주의 브랜드
3.맥주의 가격
4.맥주의 신선도
 A6. 귀하께서는 맥주의 맛은 어떠한 것을 선호하시는지 자유롭게 기입하여 주시기 바랍니다.
 
▶ 응답자 특성 ◀

   
DQ1. 귀하께서 거주하는 지역은 어디입니까?
  서울 경기 기타지역
Posted by 검지발가락♡
공대생의 일기/2010年2010. 12. 24. 04:10

2010년 11월 9일

11월은 참 중요한 것을 배우는 달이었는데 개인적인 사정으로 중요한 수업을 거의 듣지 못 했다 ㅡㅅㅡ
신기한건 java script 예외처리를 D사의 코딩 테스트에 가서 배웠다.;;;;;  물론 코딩테스드도 무사히 통과했지만ㅋ
이 수업을 통해 인터넷 개발도 재미를 느끼게 되었다. 뭐 로그인을 어떻게 하면 빨리 하는지에 대한 답은 아직 미지수 이지만.......;;;
수업을 같이 들은 선후배들에게 고마울 뿐~
----------------------------------------------------------------------------------------------------------------

1. Eclipse 설치
- 물론 java는 깔려있다는 가정 하-

이상하게 조교(?)는 Eclipse Helios를 깔았다. 그냥 Eclipse에 설정해 주면 될 것을........;;  조교님이 시키는 대로...;;;

이클립스가 깔려 있을 경우 충돌이 생길 수 있다. 그 때는  eclipse 설치폴더의 eclipse.lini파일 마지막 구문을 Xmx256 으로 바꿔준다.

2. tomcat 설치

Eclipse Helios는 tomcat 7.0 (베타버전 -2010년 11월의 일) 밖에 안 된다. 압축파일을 선호 한다.

압축파일을 C:\ 에 깔아주고 eclipse에서 경로를 설정해 준다.


3. My SQL 설치

mysql-connector-javaXXX 압축파일을 Webcontent - WEB_INF-lib 폴더에 드래그해준다.

 

<%@ page contentType="text/html;charset=euc-kr"%>

<%@page import="java.sql.*"%>

<html>

<head>

<title>Insert title here</title>

</head>

<body>

<%

try {

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection con = DriverManager.getConnection(

"jdbc:mysql://localhost:3306/register", "root", "123456");

String value = "";

Statement stmt = con.createStatement();

%>

<h4>정상 접속</h4>

<%

} catch (Exception e) {

%>

<h4>정상 접속 못함</h4>

<%

}

%>

</body>

</html>



이렇게 해서 DB가 연결됐는지 확인 하면 끝~!


4. MySQL 설정

포트번호는 3306  변경하지 말 것
root
비밀번호는 1234, 123456 처럼 쉬운게 좋지 않을까???  학습차원이라면....
register DB를 만든다.

5. select

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.sql.*"%>
<html>
<head><title>테이블의 레코드를 화면에 표시하는 예제</title></head>
<body>
  <h2>member1 테이블의 레코드를 화면에 표시하는 예제</h2>
  <TABLE width="550" border="1">
  <TR>
  <TD width="100">in</TD>
  <TD width="100">gender</TD>
  <TD width="100">age</TD>
  <TD width="250">occ</TD>
  </TR>
<%
  Connection conn=null;
  PreparedStatement pstmt=null;
  ResultSet rs=null;
  try{
String jdbcUrl="jdbc:mysql://localhost:3306/register";
    String dbId="root";
    String dbPass="123456";
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(jdbcUrl,dbId ,dbPass );
String sql= "SELECT * FROM survey_data s;";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
  String id = rs.getString("id");
      String gen = rs.getString("gen");
      String age = rs.getString("age");
      String occ =rs.getString("occ");
%>
     <TR>
     <TD width="100"><%=id%></TD>
     <TD width="100"><%=gen%></TD>
     <TD width="100"><%=age%></TD>
     <TD width="250"><%=occ%></TD>
    </TR>
<%  }
  }catch(Exception e){
e.printStackTrace();
  }finally{
    if(rs != null) try{rs.close();}catch(SQLException sqle){}
if(pstmt != null) try{pstmt.close();}catch(SQLException sqle){}
if(conn != null) try{conn.close();}catch(SQLException sqle){}
  }
%>
</TABLE>
</body>
</html>

6.차트 만들기
 
q설치 프로그램
JFREECHART

-   Jreechart-1.0.13.jar

-Jcommon-1.0.15.jar

 
<%@ page contentType="text/html;charset=euc-kr"%>
<%@ page import="org.jfree.data.general.DefaultPieDataset"%>
<%@ page import="org.jfree.chart.JFreeChart"%>
<%@ page import="org.jfree.chart.plot.PiePlot"%>
<%@ page import="org.jfree.chart.ChartRenderingInfo"%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import="org.jfree.chart.ChartFactory"%>
<%@ page import="org.jfree.chart.ChartUtilities"%>
<%@ page import="org.jfree.data.general.PieDataset"%>
<%@ page import="org.jfree.data.category.DefaultCategoryDataset"%>
<%@ page import="org.jfree.chart.plot.PlotOrientation"%>
<%@ page import="java.io.*"%>
<%
try {
DefaultPieDataset dataset2 = new DefaultPieDataset();
dataset2.setValue("male", 20);
dataset2.setValue("female", 16);
JFreeChart chart2 = ChartFactory.createPieChart("Pie Chart", dataset2, true, true, false);
chart2.setBackgroundPaint(java.awt.Color.white);
chart2.setTitle("gender");
ChartRenderingInfo info2 = new ChartRenderingInfo(new StandardEntityCollection());
String fileName2 = "C:/" + "K0002.jpeg";
ChartUtilities.saveChartAsJPEG(new File(fileName2),chart2,600,300,info2);
} catch (Exception e) {
System.out.println("error!!");
}
%>
<img src="C:/K0002.jpeg"/>

여기에서 차트의 이미지를 C:/ 에 만들어 주는데 컴퓨터 OS 비스타일 경우 C:/ 에 만들어 주면 당연히 안된다. 번거롭더라도 프로젝트 파일의 경로를 지정해 주는게 더 좋은거 같다.

글 설명 끝-


Posted by 검지발가락♡
공대생의 일기/2010年2010. 12. 24. 03:42

2010년 11월 20일

1.조사내용

 

1.1 ‘정보은닉’은 왜? 유지보수를 용의하게 할까?

정보 은닉은 객체와 알고리즘이 필요하지 않은 시스템 일부에는 가능한 한 이들을 보이지 않게 한다. 모듈화 된 코드는 시스템의 주어진 일부를 이해하기 위해 필요한 정보의 양을 최소화함으로써 프로그래머가 “인지하는 부하”를 줄여준다. 잘 설계된 프로그램에서는 모듈 간의 인터페이스가 가능한 “간단하며” 변경될 수 있는 설계적 결정 사항은 하나의 모듈에 숨겨진다. 여기서 모듈에 숨겨져 있다는 것이 중요한데, 대부분의 상용 소프트웨어는 처음의 개발보다 유지보수에 들어가는 프로그래머의 시간이 훨씬 더 많기 때문이다.[1]

 

1.2 ‘정보은닉’을 했다고 해서 유지보수성이 높은 것은 아니다.

클래스에 정보은닉의 원칙을 적용한다고 해서 항상 프로그램의 유지 보수성이 좋은 것은 아니다. 객체지향 프로그램이 유지 보수성이 높은 것은 바로 클래스 내부의 변경이 프로그램의 다른 부분에 영향을 미치지 않기 때문이다 만약 그 변경이 클래스의 내부에만 한정된 것이 아니라, 클래스의 외부에도 영향을 줄 수 있는 변경이라면 변경이 파급되는 것을 막을 방법은 없다. 예를 들어 공용 연산의 이름을 변경하거나, 인지를 수정하거나 하는 등의 변경은 클래스 내부의 변경이 아니다. 즉 클래스와 프로그램의 다른 부분과의 인터페이스에 대한 변경이다. 따라서 클래스의 인터페이스에 변경이 발생하는 경우에는 그 변경이 프로그램의 다른 부분에 파급되는 것을 피할 수 없다. 즉 유지 보수성이 낮아지게 된다. 따라서 단순히 속성은 전용으로 하고 연산을 공용으로 선언한다고 해서 높은 유지보수성을 쉽게 얻을 수 있는 것은 아니다.[2]

 

1.3 JAVA에서 ‘정보은닉’의 예

class Test{  

 private String name = "홍길동";
String name2 = "김모씨"; 
private void A(){ }
private void B(){ }
private void C(){ }
public void execute(){ 

C();
B();
A();

 }

}


public class Test01{

public static void main(String args[]){  

  Test t = new Test(); 
  t.execute();//이건 가능함
  t.A();//불가능 
  System.out.println(t.name );//불가능

}

}


 

5.참고문헌

[1]Michael L. Scott, “(새로보는)”프로그래밍언어“, 에이콘출판사, 2008.

[2]채흥석, “클래스 구조의 이해와 설계”, 한빛미디어, 2004.

[3]http://aeternum.egloos.com/1232020   ->  여기가 더 자세함!

Posted by 검지발가락♡
공대생의 일기/2010年2010. 12. 24. 03:32
2010년 11월 8일

1.조사내용

1.1 Baseline 정의

각 형상항목들의 기술적 통제시점으로 개발 과정의 각 단계별 산출물을 검토, 평가, 조정, 처리 등의 모든 변화를 통제하는 시점의 기준이다.

1.2 Baseline의 필요성

산출물 적용과 활용의 판단을 제시하고, 고객으로부터 승인된 소프트웨어 생명주기의 산출물 상태를 알 수 있다. 기준선을 확정해야 형상관리가 가능해진다.

1.3 Baseline의 분류

Baseline

설명

형상항목

기능적Baseline

사용자의 요구분석명세서 또는 시스템 기능 요구 정의서 검토하는 시점이다.

프로젝트계획서, 개발 표준 및
프로세스

분배적Baseline

사용자 요구기능들이 하위시스템에 어떻게 할당되는 가를 정의하는 기본설계 명세서를 검토하는 시점이다.

요구사항정의서, DFD, WBS,
기능분해도

설계Baseline

프로그래밍 전 설계명세서를 검토하는 시점이다.

ERD, UI명세서, Architecture

시험Baseline

소프트웨어 성능을 평가할 수 있는 원시코드, 실행코드, 시험계획서를 검토하는 시점이다.

원시코드, 실행코드, 목적코드

제품Baseline

하나의 시스템으로 완료된 제품의 품질을 보증하는 시점이다.

통합테스트계획서, 보고서

운용Baseline

설치, 운용되기 시작한 소프트웨어 품질을 사용자 입장에서 평가하는 시점이다.

매뉴얼, 이관소스

 

1.4 형상관리에서 기준선의 역할

형상통제위원회에서 고객 또는 개발자등의 변경의뢰를 심사 한 후 문서 통일이후 프로젝트를 진행시 킬 수 있다. 개발의 중간목표이며 프로젝트의 관리를 위하여 기준선을 활용 할 수 있다.

2. 참고문헌

1. 권용수, “시스템엔지니어링 입문”, 아이워크북, 2007.

2. 고석하, 홍정유, “소프트웨어 프로젝트 관리”, 생능출판사, 2008.

3. 이동철, “IT 개발 프로세스의 이해”, 기전연구사, 2006.

4. http://en.wikipedia.org/wiki/Baseline_(configuration_management)   ->  여기가 더 자세함!

5. http://anyflow.net/443

Posted by 검지발가락♡
공대생의 일기/2010年2010. 12. 24. 03:24

2010년 10월 10일

1.조사내용

1.1 검토회 [檢討會, walkthrough]

설계서나 프로그램의 오류를 탁상에서 발견하기 위한 회의. 상세 설계서나 프로그램 설계서는 처음부터 프로그램 논리나 부호화의 내용까지를 대상으로 하여 그 내용에 탈락이나 모순, 기타 잘못된 것이 있는지의 여부를 심의한다. 검토의 목적은 개발 담당자가 서로 검사함으로써 문제점을 찾아내고 동시에 다른 사람이 알 수 있는 프로그램을 작성하기 위한 것으로, 검토회가 공정 관리나 개인의 능력을 평가하는 자리는 아니다.

-출처: Daum IT용어사전

 

1.2 워크스루 주요목적

 요구분석단계가 완료되면
- 프로젝트 팀 내에서 단계 산출물의 완전성, 정확성, 기능간의 적합성 등을 확인 
- 단계 산출물이 프로젝트의 표준 및 절차 매뉴얼에 따라 작성되었는지 여부 확인
- 고객요구사항의 단계별 반영여부를 확인 하기 위하여 PM이 주관하여 워크스루를 실시하는 것이 바람직합니다.

 

1.3 워크스루 주요절차

수행절차

입력물

산출물

1. 계획수립
 1.1 계획 확정
 1
.2 계획공지

프로젝트 계획서
품질활동 계획서

워크스루 계획수립

2. 준비
 2.1 체크리스트 작성
 2.2 대상 산출물 준비

품질활동 계획서
고객요구사항 추적표
표준체크리스트

체크리스트 작성
워크스루 대상 산출물

3. 실시
 3.1 진행방법 설명
 3.2 실시

체크리스트
워크스루 대상산출물

워크스루 결과입력

4. 결과정리
 4.1 지적사항 정리
 4.2 보완조치계획 수립
 4.3 지적사항 보완
 4.4 보완결과 확인

워크스루 결과

워크스루 지적사항 입력

 

1.4 워크스루 적용 가이드

- 프로젝트 계획서나 품질활동계획서 상의 일정과 프로젝트 일정이 많이 차이가 나는 경우 PM과 QAO는 프로젝트계획서상의 공정을 다시 한 번 검토해 보아야한다.

- 워크스루 실시 1주일 전에 개발자들이 작성한 산출물을 중간검토(비공식 검토)를 실시하여 워크스루 실시에 차질이 없는지를 확인하여야 한다.

- 워크스루 실시 시 프로젝트 팀 이외의 전문 인력을 참여시켜 검토를 받는 것도 품질을 높일 수 있는 좋은 방법이다.

- 고객과 협의 되어야 할 사항은 별도로 정리하여 고객검토 수행 시 해결될 수 있도록 한다.

- QAO는 워크스루 보완기일에 최종 보안사항을 확인한 후 종합관리시스템에 완료 처리를 한다.

1.5 인지적 워크스루

인지적 워크스루는 사용자가 생각하고 있는 내용을 포함해서 사용자가 작업을 완수하기 위해 필요한 인터페이스 단계의 수와 유형을 면밀히 검토하는 것을 말합니다. 사용자들이 기억해야 할 것이나 평가해야 할 것 즉, 제품을 학습하고 사용하기 쉽게 또는 어렵게 하는 인지적인 작업에 초점을 맞추십시오. 인지적 워크스루는 스펙상의 허점은 물론 잠재적인 사용 편리성 문제들을 검증하는 데 도움을 줍니다.

 

●Gregory Abowd의 "인지적 워크스루 수행(Performing a Cognitive Walkthrough)"에 의하면 인지적 워크스루 수행을 위해 필요한 4가지 요소는 다음과 같습니다.

 

1.예비 명세서 같은 시스템의 프로토타입에 대한 세부 설명서가 제공되어야 합니다. 세부 설명서는 완벽할 필요는 없지만 충분히 상세한 정보를 담고 있어야 합니다. 메뉴의 위치 및 용어 등의 세부 항목은 큰 차이가 날 수 있습니다.

2.사용자가 시스템 상에서 수행할 작업 설명서. 이것은 대부분 사용자들이 하기를 원하는 대표적인 작업이어야 합니다.

3.주어진 프로토타입으로 작업을 완료하기 위해 필요한 완전한 작업 목록.

4.사용자가 누구인지, 어떤 종류의 경험과 지식을 가지고 있는지 등 평가자들이 사용자들에 대해 추정할 수 있는 정보.

이와 같이 주어진 정보로 사용자들이 이러한 단계들을 무리 없이 이행할 수 있는지를 결정하기 위해 평가자들은 작업 시퀀스(위의 항목 3번)를 단계적으로 수행합니다.

-출처 : msdn

Posted by 검지발가락♡