영삼이의 IT정보2012. 5. 19. 17:05

맥북에어는 광학리더기가 없어서 윈도우 설치시 매우 불편합니다. 값비싼 맥북슈퍼드라이버를 사는 것도 좀...

그래서 간편하게 USB로 설치하는 과정을 정리합니다.

( 이미지들은 검색에서 업어왔어요 :) )

1. 준비물

- 윈도우 설치된 PC : 윈도우 7 iso 파일을 usb에 굽기위한 도구(?)

- 맥북에어 : 가능한 최신 업데이트를 하자

- 윈도우 7 iso 파일 : 순정품 CD를 iso파일로 변환(혹은 어둠의 경로로?)

- USB 4G 이상 2개(1번, 2번) : 윈도우7용 1개, 맥용 드라이버파일들 저장용 1개, 둘다 FAT32 포맷으로 포맷해둔다.

2. Step by Step

1) 윈도우에서, 윈도우 7 iso 파일을 1번 usb에 구워야 합니다.

: 그냥 복사하면 안됩니다.

: 굽는 방법은 이 블로그에 자세히 설명되어 있습니다.

(마이크로 소프트에서 제공하는 부팅가능한 usb 만들기 프로그램)

2) 맥북에어에서 rEFIt 프로그램 설치

: 다운로드

3) rEFlt 설치가 끝나면, 최소 2회 이상 맥을 종료/시작 합니다. 아래 화면이 나와야 함

원래 맥북에어 부팅할때 'alt'키를 누르고 있으면, 여러 운영체제가 설치된 경우 선택화면이 나오는데요.

그자리에 들어갔다고 보시면 됩니다.

: 처음에는 윈도우(하드디스크 아이콘) 아이콘이 없습니다.

[그림 1]

4) 맥북에어에서 응용프로그램->유틸리티->부트캠프

부트캠프에 들어가서, 계속 누르다보면 아래 화면이 나옵니다.

: 2번 usb를 끼웁니다.

: 맥북에어의 경우는 젤 위쪽 'Windows 7 설치 디스크 생성'이 비활성화 되어 있습니다.

: 3가지중 가운데 'Apple에서 최신 Windows 지원 소프트웨어 다운로드'를 선택하고 계속 갑니다.

: 이제 apple에서 제공되는 드라이버 파일들이 usb에 저장될겁니다. 이건 나중에 윈도우7 설치가 완료된 이후

: 윈도우에서 실행시켜줄 놈이라서 잘 보관하고 있어야 합니다.

[그림 2]

5) 다시 맥북에어에서 '응용프로그램->유틸리티->디스크 유틸리티'로 들어갑니다.

여기서 해줄것은 현재 하드디스크를 파티션하는 건데요. 최초에는 파티션정보가 어디있지?

안보이는데? 하고 당황할수 있습니다.

: 왼쪽 제일 위쪽 디스크 아이콘을 클릭해야 '파티션' 정보가 보입니다.

: 처음에는 MAC 파티션 1개만 100%로 보입니다.

: 파란색으로 되어 있는 구간 오른쪽 하단의 /// 형태 부분을 마우스로 찍어서 위쪽으로 드래그하면

MAC 파티션의 사이즈가 줄어드는게 보일겁니다.

: 100%가 100G이고 윈도우 7용으로 32G를 잡는다면, 68G정도로 줄이면 되겠죠.

: '적용'을 누르면 최종 확정됩니다.

: 그 다음에 '+' 버튼을 누르면 다른 파티션 하나가 추가됩니다.

: '이름'을 BOOTCAMP로 넣고, '포맷'은 FAT32로 잡습니다.

: 역시 '적용'을 눌러야합니다.

[그림 3]

6) 여기까지 오면 이제 거의 다 준비된 상태입니다. 이제 윈도우 7 iso가 구워진 1번 usb를 끼우고, 리부팅을 합니다.

7) 그러면 [그림 1] 화면이 보일건데요. 다른 점은 윈도우 아이콘이 몇개 더 있습니다.

여기서 제일 오른쪽 윈도우아이콘(1번 usb임)을 클릭하면 윈도우 설치가 시작됩니다.

8) 윈도우 설치 도중에 2번정도 재부팅이 되는데요. 그때는 [그림 1] 화면에 나온

윈도우아이콘(하드디스크 아이콘)을 클릭해야 됩니다.

9) 윈도우 설치중 키보드 타입은 3번으로 하시구요.

10) 중간에 cd key를 입력하라고 나오는데, 가지고 있는 key를 입력하세요. 없으면 '다음에 하기'를 누르면 됩니다.

11) 드디어 윈도우 화면이 보이는데요. 이제 남은 작업을 계속 진행합니다.

: 위에서 마련한 2번 usb를 끼우고 WindowsSupport 디렉토리 안의 setup.exe를 실행시킵니다.

: apple에서 제공하는 모든 드라이버의 설정이 끝나면 초기 윈도우 화면보다 좀더 세련된 화면으로 바뀝니다.

: '제어판->bootcamp'로 들어가서 트랙패드 설정을 해줍니다.

오른쪽 버튼이라던가 터치로 클릭하게 한다던가... 그런 선택입니다.

: 한영전환 설정을 해야하는데요. 이 글에 있는 레지스트리를 다운받아서 실행시키고 리붓하면 됩니다.

12) 제어판에서 '인증'으로 검색하면 '윈도우7 정품인증' 메뉴를 찾을 수 있는데, 여기 들어가서

인증 버튼을 살짝 눌러줍니다.

: cd key를 어둠의 경로에서 얻었다면 문제가 있을 수 있는데요. 그건 알아서... ㅋㅋ;

: 물론 이거 하기 전에 네트웍 연결해줘야합니다.

13) 마지막으로 ms office iso 파일이 있다면

데몬툴즈를 다운받아서 설치하고, iso를 추가해서 setup 실행시키면 잘 설치될거에요.

글로는 좀 길지만, 맥북에어에서 하니 아주 빠르게 진행되네요.

Posted by 다오나무
영삼이의 IT정보2012. 5. 19. 14:29

1. 맥 OS X가 설치되었다면 응용프로그램 > 유틸리티 > Bootcamp 지원 을 선택해서 부트캠프로 윈도우 7을 설치할 수 있다.

2. 외장 ODD가 있다면 그걸 이용하면 되지만 없을 경우에는 부팅 USB 드라이브를 만든다. 보통 윈도우 7용 부팅 USB는 MS의 USB Tool이나 UltraISO 등을 이용해서 만드는데, 라이온 이상의 맥 OS에서는 부트캠프 내에 자체적으로 부팅 USB를 만들어 주는 기능이 있으므로 이런 것을 이용할 필요는 없다.

3. 부트캠프를 실행하면 3가지 항목이 나온다.

1) Windows 7 설치 디스크 생성 :
이게 부팅 USB를 만드는 항목이다. (당연히 ODD로 설치할 경우에는 필요없다)
이 항목을 선택했을 경우, 설치에 사용할 윈도우 7 원본 설치 DVD 이미지(ISO파일)의 경로와, 대상 USB 드라이브를
지정할 수 있다.

2) Apple에서 최신 Windows 지원 소프트웨어 다운로드 :
부트캠프를 이용해 윈도우 7을 설치했다고 하더라도, 실제 윈도우를 기동하면 맥북의 각종 하드웨어를 윈도우에서
제어하는 데에 필요한 드라이버가 설치되지 않은 상태이다. 이를 위해서는 맥을 위해서 제공되는 드라이버들이 필요한데
바로 이 드라이버들을 다운받는 항목이다. 이 항목을 선택했을 경우, 설치 디스크 생성 과정이 끝난 뒤 인터넷으로
드라이버를 다운로드하게 된다. (꽤 상당히 시간이 걸린다)

3) Windows 7 설치 :
1)에서 생성된 USB나, ODD의 설치 디스크를 이용해서 실제로 윈도우 7을 설치한다.
이 항목을 선택했을 경우, 설치 과정에서 맥북의 하드디스크 파티션을 원하는 크기만큼 나누어 윈도우용으로 할당할 수
있다. (별도의 포맷 과정이 필요없다)

Posted by 다오나무
영삼이의 피부정보2012. 5. 19. 13:00

안티에이징 습관 및 노화방지에 좋은 음식
1. 안티에이징 습관으로 노화방지!!
    ㄴ 음식, 당, 단 음식, 엘라스틴, 콜라겐, 과식
    ㄴ 클렌징, 피부 마찰, 항산화 과일, 야채, 수면
    ㄴ 척추 건강, 바른 자세, 허리 통증, 환기
    ㄴ 습도, 자외선 차단제, 보습제
2. 노화방지에 좋은 음식
    ㄴ 블루베리, 토마토, 마늘, 양파

 

 안티에이징 습관 및 노화방지에 좋은 음식







오늘은 노화방지에 좋은음식 및
안티에이징 습관에 대해 알아보겠습니다.







 

 안티에이징 습관으로 노화방지!!







1. 음식

설탕이나 탄수화물이 포함된 고혈당 식단을 계속 섭취하게 되면 당이 몸속에서 콜라

겐이나 엘라스틴의 붕괴를 초래하여 노화를 앞당기므로 단 음식은 되도록 피하는 것
이 좋습니다. 또한 평소 과식을 하는 습관도 노화를 촉진할 수 있는데, 위 속에 음
식이 가득차게 되면 필요하지 않은 당분과 영양분이 쌓여 혈액 속 노폐물이 늘어나
기 때문에 피부 트러블이 생길 수 있으며 피부 노화를 촉진할 수 있습니다.




Tip>
클렌징을 할 때나 화장솜으로 얼굴을 문지를 때, 화장품을 바를 때 등의 경우 너무
과도하게 한다면 주름을 유발할 수 있으므로 위의 경우 피부와의 마찰을 최소화 하
는 것이 좋습니다.









2. 과일 및 야채

평소 항산화 과일이나 야채를 충분히 섭취하면 피부 노화를 막는데 도움을 줄 수

있습니다. 화장품의 경우 피부 깊숙하게 침투하기 힘들지만 과일과 야채 등에 함
유된 항산화 성분(노화방지)은 피부 깊숙하게 전달할 수 있어 과일과 야채는 노화
를 막는데 큰 도움을 줍니다.




Tip>
수면이 부족한 경우 체내 스트레스 호르몬 분비로 인해 주름발생을 촉진시키므로
충분한 수면 및 규칙적인 수면습관(밤 10시-새벽 2시에는 취침하는 것이 좋음)을
가지는 것이 좋습니다.








3. 척추건강

척추 건강을 잃게 되면 일상생활에 제한이 생기게 되어 이로 인해 모든 신체건강이

흔들리게 됩니다. 그러므로 척추 건강을 위해 평소 규칙적인 운동(걷기운동, 수영
등)과 함께 바른 자세(다리 꼬고 앉기 등 나쁜 자세는 피해야 함)를 유지하는 습관
을 가지는 것이 좋습니다. 그리고 반복적인 허리통증이나 만성적인 허리통증이 있는
경우 조기에 병원을 방문하여 적절한 치료를 받는다면 척추 노화를 늦출 수 있다고
합니다.




Tip>
건강검진시 척추 상태를 체크하고 척추사진을 남겨두게 되면 매년 척추의 변화를
확인하면서 질병진행 여부를 판단하면 진단 및 치료에 큰 도움이 될 수 있습니다.









4. 환기 및 습도

실내 공기가 환기되지 않는 사무실이나 작업 공간의 경우 피부가 건조해 질 수 있어

주름의 원인이 되기 때문에 피부 탄력과 주름 개선 등 피부 건강을 위해서는 시간날
때마다 환기를 시켜 주고 가습기 등을 이용하여 습도(40-60%)를 조절해 주는 것이
좋습니다.




Tip>
평소 외출 시에는 자외선 차단제와 보습제를 발라주어 자외선 차단과 함께 유,수분
밸런스를 맞춰 주는 것이 좋습니다.









 노화방지에 좋은 음식








블루베리







토마토







마늘







양파



 안티에이징을 위해 필요 이상의 시술을 받거나 몸에 좋다는 보약류를 과하게 섭취하
    는 것은 피해야 할 것입니다.

Posted by 다오나무
2012. 5. 19. 12:14

Trigger an Error

오류 발생시키기(Trigger an Error)
사용자가 데이터를 입력할 수 있는 스크립트에서는,
불법적인 입력이 발생했을때 오류를 발생시키는 것이 상당히 유용합니다.

PHP에서는, 이걸 trigger_error() 함수를 통해 실행 할 수 있습니다

'' 카테고리의 다른 글

그누보드 게시판 테이블 그리고 댓글  (0) 2014.06.16
남은 글자수 체크  (1) 2012.07.23
jQuery Mobile 페이지 이동  (1) 2011.11.03
자바스크립트 레퍼런스  (0) 2011.11.03
소셜 관련 3가지  (0) 2011.09.29
Posted by 다오나무
기타2012. 5. 19. 11:13

 


 

맨인블랙시리즈입니다.

2편이 나온지 정말 오래됬지요~? 무려 10년이나 지난 지금에서야 맨인블랙3가 나왔다고 합니다~

정말 정말 기대가 되네요~!!

시사회는 세계최초로 국내에서 진행했다고 하네요!!!!!! 


 

 

현실이 뒤바뀌고 외계인 공격으로 인해 지구가 위험에 빠진 상황에서 mbi요원이 갑자기 사라져요

 

모든 해결의 실마리를 풀수있는 요원이 사라지고 그동안 감춰진 비밀을 캐려고 과거로 시간여행을 떠나게

 

되면서 이야기가 펼쳐집니다! 

 



 

 

이둘은 현재로 돌아가야하는 시간은 단 24시간~! mbi미션에 도전하게 된다고 해요! 



 



 

 

그리고 마지막은 충격적인 반전을 더 해 감동까지 있다고 합니다.

정말 맨인블랙을 기다려온 팬분들에게 좋은 보답을 하는 것같애요~!

저도 맨인블랙을 정말 좋아하는데 맨인블랙3가 나와서 얼마나 좋은지 몰라요! 


 

 

정말 더 대박인건 우리나라에 전 세계 최초 시사회를 진행했다니 그것도 이벤트까지 겸해서...

그만큼 우리나라 영화산업이 발전했다는 말이겠지요~? 


맨인블랙3 평점또한 8점후반대를 유지하고 있어서 영화관에서 꼭 볼만한영화로 추천을 하고 싶습니다!

'기타' 카테고리의 다른 글

marsEdit Test  (0) 2012.05.20
오 ecto 테스트중  (0) 2012.05.20
차량용 블랙박스 선택 요령 - 블랙박스는 이제 필수!  (0) 2012.05.19
gasdfsdfasdf  (0) 2011.10.23
새로운내용  (0) 2011.10.23
Posted by 다오나무
기타2012. 5. 19. 10:53

블랙박스 하면 아직까지도 항공기 등에 탑재되는 고가의 장비인것으로 이해하는 사람들이 있다. 하지만, 최근 자동차 사고 시에 증거 등으로 사용되면서 자동차를 소유한 사람들을 중심으로 블랙박스에 대한 관심이 높아지고 있다.

블랙박스의 용도는 자동차 사고 시 정확한 시시비비를 가릴 수 있고 이와 함께 자동차보험료 할인혜택까지 받을 수 있다.

블랙박스 선택 요령


이런 이유로 블랙박스가 인기를 끌면서 시중에 정말 많은 블랙박스 제품이 선보여지고 있다. 어떤 기능과 가격대 의 제품을 사야 할지 고민하는 분들을 위해 블랙박스 선택 요령에 대해서 정리해 보고자 한다.

블랙박스 선택 요령 - 몇 채널이 좋을까?


채널이란 블랙박스에 연결되는 카메라를 의미한다.
블랙박스라는 것이 영상+음성을 녹화 하는 기기이므로 당연히 카메라가 탑재가 되는데, 블랙박스에 탑재되는 카메라 개수에 따라 1채널, 2채널, 4채널 등으로 구분된다.

가장 일반적인 블랙박스는 1채널(즉 한대의 블랙박스에 1개의 카메라가 연결된 제품) 제품이다. 1채널 블랙박스 제품은 당연히 전방 녹화를 위해 전방에 설치하게 된다.

후방의 경우는 운전자의 개인 취향이나 사용 환경 등에 따라 선택할 수 있다.
이때 후방까지 고려하는 경우 1채널 블랙박스 제품 2개를 장착하는 방법과 2채널(두개의 카메라가 연결되는 블랙박스) 블랙박스 제품 1대를 장착하는 방법이 있다.

블랙박스 선택 요령


다만, 후방 사고의 경우 과실이 보통 상대방에게 있는 경우가 많으므로 본인이 운전에 익숙하하다면 전방에 1채널 블랙박스를 설치하는 것이 좋고, 운전이 미숙하다거나 사고시 대처 방안 등에 대해 미숙하다면 2채널 블랙박스 혹은 1채널 블랙박스 2대를 자동차 전/후방에 설치하는 것이 좋다.

물론 요즘은 전/후/좌/우 모두 녹화할 수 있는 4채널 제품도 출시가 되고 있으나 실제 4채널 제품을 사용하는 경우는 드물다.

블랙박스 선택 요령 - 화질은 야간 화질도 중요하다.


블랙박스란 기본적으로 카메라를 통해 들어오는 영상을 녹화하는 기기이다. 그리고 블랙박스를 통해 녹화된 이 영상은 사고시에 시시비비를 가릴 수 있는 중요한 증거물이 될 수 있다. 당연히 사람이 눈으로 영상을 보고 판별을 해야 하므로 화질은 좋으면 좋을수록 당연히 좋다.

즉, 사고시 정황 파악과 앞차 혹은 뒷차의 번호판 식별이 무엇보다 중요하기 때문에 화질은 당연히 좋아야 하는 것이다.
화질은 VGA급보다는 HD(1280 x 720)급이 일반적으로 많이 사용되고 있지만, 요즘은 Full HD(1920 x 1080) 화질을 지원하는 블랙박스가 많아졌다. 되도록이면 HD급 이상의 화질을 지원하는 블랙박스를 사용하는 것이 좋은데, Full HD급 화질을 지원하는 블랙박스라면 더할나위 없이 좋은 선택이 될 수 있다.

블랙박스 선택 요령


다만, 화질이 좋아질수록 당연히 가격이 올라갈 수 밖에 없는데, 요즘 1채널 블랙박스 기준으로 Full HD를 지원하는 제품도 20만원대에 구입이 가능하므로 나쁘지 않은 선택이 될 수 있다.

여기서 한가지 주의해야 할 점은 화질이 높아질수록 녹화시 파일 크기가 커질 수 밖에 없다. 따라서 Full HD급의 블랙박스 제품을 선택했다면 메모리는 16GB 이상을 선택하는 것이 좋다.

화질 당연히 중요하다. 하지만 블랙박스 선택에 있어 간과해서는 안되는 것이 바로 야간 화질이다. 야간에 운전하는 경우도 많을 뿐 아니라 주차해 놓은 경우 야간에 주차 테러를 당하는 경우도 많은데 야간 화질이 좋은 블랙박스라면 사건 해결에 많은 도움이 될 수 있다.

블랙박스 선택 요령 - 화각은 얼마나?


블랙박스가 찍는 범위를 의미하는 화각은 넓을수록 좋다고 착각한다. 그래서인지 최근에는 170도까지 보이는 제품이 나왔으나 주면부로 갈수록 왜곡이 심해지기 때문에 선명하게 볼 수 있는 각도는 130도 내외다. 화각이 좁아지면 선명하고, 넓어지면 흐려지는 점을 염두에 둬야 한다.

즉, 화각은 130도 이상만 된다면 블랙박스를 선택하는 데 중요한 선택 기준이 되는 항목은 아니다.
다만, 130도 보다 좁은 화각은 촬영 범위가 좁으므로 선택을 피하는 것이 좋다.

블랙박스 선택 요령 - LCD? GPS?


블랙박스 제품에 LCD 화면이 장착되어 있는 제품들도 있다. 이 경우 실시간 촬영 영상 및 녹화 영상을 즉시 확인할 수 있다는 장점이 있다. 그러나 저화소의 작은 LCD 화면은 사고 상황 식별이 힘들며 고화질 LCD 가 장착된 제품은 거의 없으므로 블랙박스 선택에 있어 LCD 장착 여부는 중요한 선택 기준이 아니다. 따라서 LCD 장착 여부보다는 차량에 장착되어 있는 디스플레이 장치 중 하나인 네비개이션과 연동이 되는지 즉, 이를 위해 AV-OUT 단자가 블랙박스에서 장착되어 있는지를 확인하는 것이 더 좋다.


또한, GPS 포함 여부도 중요하다. GPS가 블랙박스에 내장되어 있는 경우 사고 발생 시 정확한 위치와 시간 및 자동차 속도 등을 알 수 있으며, 보험사에서 보험료 할인 혜택 또한 받을 수 있다.

블랙박스 선택 요령 - AS 및 전용 뷰어


블랙박스 또한 전자제품 중 하나이다. 따라서 제품 결함이 발생되었을 때 AS를 받을 수 있어야 한다.
이를 위해서는 어느정도 안정화 되어 있고 규모도 있으며 인지도가 있는 회사의 제품을 선택하는 것이 좋으며, 되도록 블랙박스 전문기업의 제품을 선택하는 것이 좋다.

블랙박스는 하드웨어이다. 하지만, 이들 제품에는 대부분 전용 소프트웨어 혹은 전용 뷰어 프로그램이 제공된다.
전용 뷰어 프로그램이 제공되지 않는다면 블랙박스 선택의 감점 요인이 될 수 있다.

전용 뷰어 프로그램의 경우 화면 캡쳐 기능, 야간 화질 개선 기능, 블랙박스 옵션 설정 기능 등이 제공되며, 전용 뷰어를 통해 녹화 파일 관리, 구글 맵이나 다음지도 등의 전용 맵 화면과의 연동을 통해 영상 촬영 위치 등을 좀 더 다양한 방법으로 확인할 수 있다.

지금까지 차량용 블랙박스 선택 요령에 대해 내 나름대로 정리를 해 봤다. 싼게 비지떡이 될수도 있고, 비싸다고 무조건 좋은 것은 아니다.

여러가지 선택 기준을 정의해서 그에 맞는 블랙박스 제품을 선택하는 것이 중요하다.
마지막으로 차량용 블랙박스를 장착하게 되면 자동차 보험료 할인 혜택이 있으니 꼭! 확인하자.

'기타' 카테고리의 다른 글

오 ecto 테스트중  (0) 2012.05.20
맨인블랙3  (0) 2012.05.19
gasdfsdfasdf  (0) 2011.10.23
새로운내용  (0) 2011.10.23
고양이 이모티콘  (0) 2011.10.21
Posted by 다오나무
영삼이의 IT정보2012. 5. 18. 13:26

INNER JOIN : simple join이라고도 하며, 둘 이상의 테이블에서 join condition을 만족하는 행만 반환한다.

즉, 둘 이상의 테이블에 전부 존재하는 데이터만 조회한다는 것이다. (물론 ON조건에 만족하는 데이터)

집합으로 표현하자면 교집합이라 이해하면 된다.

간단한 예는 http://isstory83.tistory.com/entry/조인Join-쿼리

 

OUTER JOIN : OUTER JOIN 에는 LEFT , RIGHT, FULL OUTER JOIN 등의 세가지 형식이 있다.

INNER JOIN과 는 달리 두 테이블에서 지정된 쪽의 (LEFT or RIGHT) 모든 결과를 모두 보여준 후 반대쪽에 매칭되는 값을 보여주고, 값이 없어도 NULL로 보여주는 JOIN이다.

JOIN 이전에 나오는 테이블이 왼쪽(LEFT)테이블이 되고, JOIN 이후에 나오는 테이블은 오른쪽(RIGHT)테이블이 된다.

 

OUTER JOIN의 종류 및 사용

LEFT OUTER JOIN - A라는 테이블과 B라는 테이블이 있다면 그 두 테이블 중 왼쪽 테이블을 기준을 세우는 JOIN

SELECT t1.컬럼1, t1.컬럼2, t2.컬럼4, t2.컬럼5  FROM 테이블1 t1 LEFT JOIN 테이블2 t2 ON (t1.컬럼1 = t2.컬럼6)

왼쪽 TABLE1을 기준으로 컬럼1과 컬럼6를 매칭하여 결과 값을 보여주되 컬럼6에 3이 매칭되는 값이 없기에 NULL을 보여준다.

 

RIGHT OUTER JOIN - A라는 테이블과 B라는 테이블이 있다면 그 두 테이블 중 오른쪽 테이블을 기준을 세우는 JOIN

SELECT t1.컬럼1, t1.컬럼2, t2.컬럼4, t2.컬럼5 FROM 테이블1 t1 RIGHT JOIN 테이블2 t2 ON (t1.컬럼1 = t2.컬럼6)

테이블2의 컬럼6의 값 4에 해당하는 컬럼1이 없으므로 해당 데이터를 NULL로 보여준다.


FULL OUTER JOIN - 간단하게 LEFT와 RIGHT OUTER JOIN의 합이라고 생각하면 된다.

SELECT t1.컬럼1, t1.컬럼2, t2.컬럼4, t2.컬럼5 FROM 테이블1 t1 FULL OUTER JOIN 테이블2 t2 ON (t1.컬럼1 = t2.컬럼6)

 

참고적으로, 같은 두 개의 테이블을 INNER JOIN하면 아래와 같은 결과를 보여준다.

SELECT t1.컬럼1, t1.컬럼2, t2.컬럼4, t2.컬럼5 FROM 테이블1 t1 INNER JOIN 테이블2 t2 ON (t1.컬럼1 = t2.컬럼6)

위의 FULL OUTER JOIN에서 양쪽에 NULL이 들어간 데이터들이 사라진 것을 확인 할 수 있다.

Posted by 다오나무
영삼이의 IT정보2012. 5. 16. 12:08

먼저 서버로 사용하고자 하는 컴퓨터에서 작업하셔야 합니다.

 

1. 브라우져(익스플로러 or firefox)를 열고 공유기 관리 페이지(기본값:192.168.0.1)에 접속합니다



2. 고급 설정 - 내부 네트워크 설정에서 서버로 사용하고자 하는 컴퓨터의 ip를 수동으로 고정합니다. 서버 ip가 변경되면 무용지물이겠죠?^^

수동으로 고정하는 방법은 검색된 IP/MAC주소에서 서버로 사용하실 컴퓨터의 IP혹은 MAC의 체크박스를 체크한 후 추가 버튼을 누르면 왼쪽의 수동 IP 할당 설정에 등록이 됩니다.



3. NAT/라우터관리 - 포트 포워드 설정에서 외부 접속 포트를 서버 컴퓨터의 포트로 연결시킵니다.

http는 기본 80번이고 ftp는 기본 21번 포트를 사용합니다. 하지만 인터넷 서비스 업체에서 서버용 포트를 막아놓는 경우가 있습니다.

이런 경우에 웹서버(http)를 예로 들자면 다른 포트를 80번 포트로 연결시키면 됩니다. 8000번 혹은 8080번 같은 포트를 서버 컴퓨터의 80번으로 연결 시키면 웹서버에 연결이 됩니다.



4. 일반 가정에서는 비싼 고정IP가 아닌 유동IP를 사용하게 됩니다. 이런 경우 매번 IP가 변경되어 서버 접속시 많은 불편함이 있겠지요.

iptime에서 도메인 서비스를 제공하고 있는데 이것이 DDNS입니다.

호스트 이름에서는 외부에서 접속시 사용할 도메인네임을 입력하시는데 iptime.org는 반드시 붙여야 합니다.

캡쳐된 화면에서는 scdc라는 호스트 네임을 사용하기에 scdc.iptime.org를 사용하였습니다.

사용자 계정에는 개인 email주소를 치시고 암호는 DDNS 관리에 사용할 암호를 입력하시면 됩니다.



5. 생각하지 못한 복병입니다. 저도 방화벽을 생각 못하는 바람에 계속 헤맸었습니다.

내컴퓨터 - 설정 - 제어판 - 보안센터를 클릭합니다.

보안센터 화면에서 Windows 방화벽을 클릭합니다.



6. 서버 포트를 예외로 지정해야만 외부에서 접근이 가능합니다.

포트추가 버튼을 클릭합니다.



7. 웹서버를 예로 들었을때 이름은 아무거나 상관없습니다.www으로 하든 web로 하든.

포트 번호는 웹서버에서 설정된 포트 번호(80)을 사용합니다.

임의로 변경하신 경우에는 변경된 포트 번호를 예외로 지정하시면 됩니다.




8. 모든 설정이 끝났습니다.

브라우져에서 scdc.iptime.org를 치니 제 서버 페이지가 보이는 군요..

Posted by 다오나무
영삼이의 IT정보2012. 4. 30. 15:33

PHP에서 꼭 알아야 될 함수

(1) 변수 관련 함수

☞ empty 함수

      

구문 : int empty(mixed var)
기능 : 변수가 설정되어 있는지 알아본다.

변수가 설정되어 있지 않으면 true를 리턴하고, 값이 있으면 false를 리턴합니다.

<파일명 : ex29.php>

<?
$a="";
$b="string";
if (empty($a)) echo "a empty<br>";
if (empty($b)) echo "b empty<br>";
?>

☞ isset 함수

      

구문 : int isset(mixed var)
기능 : 변수가 설정되어 있는지 알아본다.

변수가 설정되어 있으면 true, 그렇지 않으면 false를 리턴합니다.

만약에 unset()으로 변수가 이미 해제되었다면 더 이상 isset()는 true를 리턴하지 않습니다.

<파일명 : ex30.php>

<?
$a="string";
if (isset($a)) echo "1. a is set<br>";
unset($a);
if (isset($a)) echo "2. a is set<br>";
?>

☞ unset 함수

      

구문 : int unset(mixed var)
기능 : 변수의 설정을 해제한다.

변수의 설정을 해제한 루 true를 리턴합니다.

 

(2) 문자열 관련 함수

☞ addslashes 함수

      

구문 : string addslashes(string str)
기능 : 필요한 곳을 역슬래시(\)로 감싼다.

문자열이 작은 따음표(')나 큰 따음표("), 또는 역슬래시(\)와 같은 문자를 가지고 있는 경우 이 문자 앞에 역슬래시(\)를 추가하여 전체 문자열을 반환합니다.

보통 SQL 문에서 작은 따음표나 큰 따음표에 역슬래시를 추가할 때 많이 사용합니다.

<파일명 : ex31.php>

<?
$str="addslash 연습입니다. '연습'";
echo "addslash() 함수 사용 전 : $str <br>";
$str=addslashes($str);
echo "addslash() 함수 사용 후 : " . $str . "<br>";
?>

☞ stripslashes 함수

      

구문 : string stripslashes(string str)
기능 : addslashes()로 역슬래시가 추가된 문자열에서 역슬래시를 제거한다.

addslashes() 함수를 통해 역슬래시 처리가 된 문자에서 역슬래시(\) 문자를 제거하여 원 상태로 되돌립니다.

<파일명 : ex32.php>

<?
$str="addslash 연습입니다. '연습'";
echo "addslashes() 함수 사용 전 : $str <br>";
$str=addslashes($str);
echo "addslashes() 함수 사용 후 : $str <br>";
$str=stripslashes($str);
echo "stripslashes() 함수 사용 후 : $str <br>";
?>

☞ echo 함수

      

구문 : echo(string arg1, string [argn] …)
기능 : 하나 또는 그 이상의 문자열을 출력한다.

인자들을 모두 출력합니다.

<파일명 : ex33.php>

<?
$str1="echo 연습입니다.";
$str2="echo 사용하기";
echo $str1 . "<br>";
echo $str1.$str2;
?>

☞ explode 함수

      

구문 : array explode(string separator, string string)
기능 : 구분자를 사용하여 문자열을 나눈다.

첫 번째 인자를 구분자로 하여 두 번째 인자를 나누어 배열로 리턴합니다.

<파일명 : ex34.php>

<?
$str="aaa;bbb;ccc;ddd;eee;fff;";
$array=explode(";",$str);
for ($i=0, $max=count($array); $i<$max; $i++) {
   echo "$i = $array[$i] <br>";
}
?>

☞ htmlspecialchars 함수

      

구문 : string htmlspecialchars(string string)
기능 : 특수문자들을 HTML 코드로 바꾼다.

게시판이나 방명록 등에서 사용자가 입력한 특수문자들을 변환시킵니다.

  &(ampersand)를 '&'로
  "(double quote)를 '"'로
  <(less than)을 '&It;'로
  >(greater than)을 '>'로 바꾸어 리턴합니다.

위의 4가지 특수문자를 제외한 나머지 문자는 변환하지 않습니다.

<파일명 : ex35.php>

<?
$str="HTML 에서 <b>특수문자</b> 변환하기";
echo "htmlspecialchars() 사용 전 : $str <br>\n";
$str=htmlspecialchars($str);
echo "htmlspecialchars() 사용 후 : $str <br>";
?>

☞ nl2br 함수

      

구문 : string nl2br(string string)
기능 : 개행(\n)을 <BR>태그로 바꾼다.

폼으로 입력받을 때 입력하는 사람이 엔터를 치면 다음 줄로 넘어갑니다. 그런데 입력받은 내용을 데이터베이스에 넣고 나중에 출력할 때는 문자들이 모두 붙어서 나옵니다. 따라서 데이터베이스에서 내용을 얻어 브라우저로 보여줄 때 함수를 사용하면 다음 줄로 넘어가게 보입니다.

<파일명 : ex36.php>

<?
$str="nl2br 을 위한 예제
한줄...
두줄...
세줄...
";

echo "nl2br() 사용 전 : $str <br>\n";
$str=nl2br($str);
echo "nl2br() 사용 후 : $str <br>";
?>

☞ printf 함수

      

구문 : string nl2br(string string)
기능 : 개행(\n)을 <BR>태그로 바꾼다.

echo 함수와 비슷한 역할을 합니다.

<파일명 : ex37.php>

<?
$a=14.5;
$b=3.3;
$sum=$a+$b;
printf("%02.2f + %02.2f = %02.2f <br>", $a, $b, $sum);
printf("결과값의 정수값 = %d", $sum);
?>

☞ sprintf 함수

      

구문 : string sprintf(string format, mixed [args]...)
기능 : 포맷 문자열을 통해 지정해 준 포맷으로 문자열을 반환합니다.

 sprintf() 함수는 C에서 사용법과 비슷하게 지정해 준 포맷에 맞게 문자열을 반환합니다.

<파일명 : ex38.php>

<?
$a=14.5;
$b=3.3;
$sum=$a+$b;
$str=sprintf("%02.2f + %02.2f = %02.2f <br>", $a, $b, $sum);
echo $str;
$str=sprintf("정수값 = %d <br>", $sum);
echo $str;
$str=sprintf("실수값 = %f <br>", $sum);
echo $str;
?>

☞ strip_tags 함수

      

구문 : string strip_tags(string str, string [allowable_tags])
기능 : 문자열에서 HTML과 PHP 태그를 제거한다.

문자열 중에서 HTML과 PHP 태그를 제거한 문자열을 반환합니다.

<파일명 : ex39.php>

<?
$str="strip_tags() 연습입니다.
<b>HTML 태그</b>
<? echo \"php 태그 \"; ?>
";

echo ("strip_tags 사용 전 : $str <br>");
$str=strip_tags($str);
echo ("strip_tags 사용 후 : $str <br>");
?>

☞ strlen 함수

      

구문 : int strlen(string str)
기능 : 문자열의 길이를 구한다.

문자열의 길이를 리턴합니다.

<파일명 : ex40.php>

<?
$str="We are the world";
echo ("$str 의 문자열 길이 = ");
echo strlen($str);
?>

☞ substr 함수

      

구문 : string substr(string string, int start, int [length])
기능 : 문자열의 일부분을 리턴합니다.

start로부터 length 만큼 리턴합니다. length가 생략되면 문자열의 끝까지 리턴합니다. start가 음수일 경우 뒤에서부터 리턴합니다. length가 음수일 경우 뒤에서부터 length까지만 리턴합니다.

<파일명 : ex41.php>

<?
//start가 양수일 경우
$rest=substr("abcdef", 1); 
echo "$rest <br>";
$rest=substr("abcdef", 1, 3);
echo "$rest <br>";

//start가 음수일 경우
$rest=substr("abcdef", -1);
echo "$rest <br>";
$rest=substr("abcdef", -2);
echo "$rest <br>";
$rest=substr("abcdef", -3,1);
echo "$rest <br>";

//length가 음수일 경우
$rest=substr("abcdef", 1, -1);
echo "$rest <br>";
?>

☞ trim 함수

      

구문 : string trim(string str)
기능 : 문자열의 시작과 끝의 공백을 없앤다.

인자로 주어진 문자열의 맨 앞과 맨 끝의 공백을 지우고 리턴합니다.

<파일명 : ex42.php>

<?
$str="\t 앞과 뒤쪽의 탭과 공백이 있는 문자\t  ";
echo "trim 사용 전 : $str <br>\n";
$str=trim($str);
echo "trim 사용 후 : $str <br>";
?>

 

(3) 정규표현형식 관련 함수

☞ ereg 함수

      

구문 : int ereg(string pattern, string string, array [regs])
기능 : 일치하는 문자열을 찾는다.

두 번째 인자(문자열)에서 첫 번째 인자(패턴)를 찾습니다. 패턴에 괄호가 포함되어 있으면 세 번째 인자를 필요로 합니다. 일치된 패턴이 세 번째 인자인 배열로 차곡차곡 들어갑니다.

예를 들어, 첫 번째 괄호와 일치된 문자열은 $regs[1] 안에 들어가고, 두 번째 괄호와 일치된 문자열은 $regs[2]에 들어갑니다. $regs[0]에는 두 번째 인자 전체가 들어가 있습니다.

<파일명 : ex43.php>

<?
//YYYY-MM-DD 형식의 날짜를 DD.MM.YYYY 형식으로 출력하는 예제
$date=date("Y-m-d", time());

if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
   echo "$regs[3].$regs[2].$regs[1]";
} else {
   echo "잘못된 데이터 형식입니다.: $date";
}
?>

☞ eregi 함수

      

구문 : int eregi(string pattern, string string, array [regs])
기능 : 대소문자 구분 없이 일치하는 문자열을 찾는다.

ereg()와 똑같습니다. 차이점은 대소문자 구별을 하지 않습니다.
두 번째 인자(문자열)에서 첫 번째 인자(패턴)를 찾습니다. 패턴에 괄호가 포함되어 있으면 세 번째 인자를 필요로 합니다. 일치된 패턴이 세 번째 인자인 배열에 차곡차곡 들어갑니다.
예를 들어, 첫 번째 괄호와 일치된 문자열은 $regs[1] 안에 들어가고, 두 번째 괄호와 일치된 문자열은 $regs[2]에 들어갑니다. $regs[0]에는 두 번째 인자 전체가 들어가 있습니다.

☞ ereg_replace 함수

      

구문 : string ereg_replace(string pattern, string replacement, array string)
기능 : 일치하는 문자열을 찾아 바꾼다.

문자열(string)에서 패턴(pattern)을 찾아 바꿀문자(replacement)로 바꾼 후에 리턴합니다. 일치하는 패턴(pattern)이 없으면 원래의 문자열을 리턴합니다.

패턴(pattern)에는 괄호를 사용할 수 있습니다. 맨 바깥쪽 괄호부터 괄호 전체를 1,2,...로 생각하면 됩니다.

<파일명 : ex44.php>

<?
$string="This is a test";
echo ereg_replace(" is", " was", $string) . "<br>\n";
echo ereg_replace("( )is", "\\1was", $string) . "<br>\n";
echo ereg_replace("(( )is)", "\\2was", $string) . "<br>\n";
?>

☞ eregi_replace 함수

      

구문 : string eregi_replace(string pattern, string replacement, array string)
기능 : 일치하는 문자열을 찾아 바꾼다.

문자열(string)에서 패턴(pattern)을 찾아 바꿀문자(replacement)로 바꾼 후에 리턴합니다. 일치하는 패턴(pattern)이 없으면 원래의 문자열을 리턴합니다.
ereg_replace()함수와 같은 기능입니다. 단지 차이는 대소문자를 무시한다는 것입니다.

☞ split 함수

      

구문 : string split(string pattern, string string, int [limit])
기능 : 정규 표현식을 사용하여 문자열을 나눈 후 배열로 저장한다.

패턴(pattern)으로 준 첫 번째 인자가 구분자가 되어 두 번째 인자의 문자열을 나누어 배열로 리턴합니다. 오류가 발생하면 false를 리턴합니다.

limit는 나누어 저장할 문자열의 개수이며, 생략 가능합니다. 주의할 점은 패턴(pattern)으로 앞에서부터 나누어집니다. limit보다 뒤에 있는 문자열들은 나눠지지 않고 마지막 배열에 들어갑니다.

<파일명 : ex45.php>

<?
$date="04/30/1998";
list($month, $day, $year)=split("[/.-]", $date);
echo "Month: $month; Day: $day; Year: $year";
?>

(4) 배열 관련 함수

☞ array 함수

      

구문 : array array(...)
기능 : 배열을 만든다.

....부분에 매개변수가 들어갑니다.

매개변수는 '=>' 연산자를 이용하여 배열 인덱스에 넣을 수도 있습니다. 즉 array(키 => 값);

<파일명 : ex46.php>

<?
$fruits=array("fruits" => "orange", "numbers" => 1);

echo "fruits value = " . $fruits["fruits"] . "<br>";
echo "fruits numbers = " . $fruits["numbers"] . "<br>";
?>

☞ count 함수

      

구문 : int count(mixed var)
기능 : 변수가 가지고 있는 값들의 수를 리턴한다.

주로 배열변수를 대상으로 합니다. 여기서 그냥 변수라고 한 것은 어느 변수든디 한가지 값은 가지고 있기 때문입니다.

변수가 배열이 아닐 경우 1을 리턴합니다.(배열변수가 아니면 그냥 한가지 값을 가집니다.)

변수가 정의되지 않았을 경우 0을 리턴합니다.

[참고] 변수가 정의되지 않았을 경우 0을 리턴하지만, 배열변수가 공백으로 정의되었을 경우에도 0이 리턴됩니다. 변수가 정의되었는지 확인하려면 isset()함수를 사용합니다.

<파일명 : ex47.php>

<?
$fruits = array("fruits" => "orange", "numbers" => 1);
$array = array("a", "b", "c", "d", "e");

echo "fruits 배열의 개수 = " . count($fruits) . "<br>";
echo "array 배열의 개수 = " . count($array);
?>

☞ each 함수

      

구문 : array each(array array)
기능 : 배열에서 현재 포인터가 가리키고 있는 키 값과 값을 리턴한다.

배열 내부 포인터가 가리키고 잇는 키와 값을 리턴한 후 포인터는 다음 요소를 가르키게 됩니다.

실행하면 4개의 요소를 가진 배열로 리턴을 하는데 0과 key는 키 값을 가지고 있고, 1과 value는 값을 가지고 있습니다.

<파일명 : ex48.php>

<?
$fruits = array("fruits" => "orange", "numbers" => 1);
$result=each($fruits);
echo "key = $result[0], value = $result[1] <br>";
list($key, $value)=each($fruits);
echo "key = $key, value = $value <br>";
?>

☞ list 함수

      

구문 : void list(...)
기능 : 변수들을 배열처럼 쓸 때 사용한다.

array()와 마찬가지로 변수들을 배열처럼 쓸 때 사용합니다.

☞ sizeof 함수

      

구문 : int sizeof(array array)
기능 : 배열의 크기를 구한다.

배열 요소의 개수를 리턴합니다. count()와 같습니다.

<파일명 : ex49.php>

<?
$array=array("shellfish", "wheat", "stock");
$num1=count($array);
echo "count = " . $num1 . "<br>";
$num2=sizeof($array);
echo "sizeof = " . $num2 . "<br>";
?>

☞ sort 함수

      

구문 : void sort(array array)
기능 : 배열을 정렬한다.

배열 값들을 정렬합니다.

<파일명 : ex50.php>

<?
$fruits=array("lemon", "orange", "banana", "apple");
sort($fruits);
for ($i=0, $max=count($fruits); $i<$max; $i++) {
   echo "fruits[$i] = " . $fruits[$i] . "<br>";
}
?>

Posted by 다오나무
영삼이의 IT정보2012. 4. 28. 16:46

xcode 4.2를 사용하다가 4.3을 사용하니 MainWindow.xib 가 없어서

MainWindow.xib 를 사용하여 프로젝트를 시작하는 방법을 정리한다.


  • xcode 4.3 empty project로 새 프로젝트를 생성
  • NewFile → User Interface → Window → ... → MainWindow 로 저장
  • AppDelegate.h 파일에 아래와 같이 IBOutlet을 추가
    • @property (strong, nonatomic) IBOutlet UIWindow *window;
  • MainWindow.xib 를 클릭하여 Interface Builder 에서 아래와 같이 작엄
    • Objects 항목에다가 우측 Library에서 Object를 끌어다 놓기
    • Objects 항목에다가 우측 Library에서 Window 끌어다 놓기
    • 끌어다 놓은 Object 선택하고 Identity Inspector 에서 Class 를 해당하는 xxxAppDelegate 로 변경
    • File's Owner 선택하고 Identity Inspector 에서 Class 를 UIApplication 으로 변경
      • File's Owner 선택하고 Connections Inspector 에서 Outlets 의 delegate를 xxx App Delegate 로 연결
      • Objects에서 xxx App Delegate 를 선택하고 Connections Inspector 에서 rootController, window를 연결
        • 여기서 rootController 는 사용하고자 하는 ViewController 를 미리 만들어 놓아야 함(아래 그림에서는 TabBarController)
    • Project Targets 세팅에서 Main Interface를 MainWindow로 적어준다
    • AppDelegate.m 의 초기 코드를 아래와 같이 변경 (window를 위에서 IBOutlet으로 변경했으므로 alloc 제거)
      • //self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

        // Override point for customization after application launch.

        //self.window.backgroundColor = [UIColor whiteColor];


        self.window.rootViewController = rootController;

        [self.window addSubview:rootController.view];


        [self.window makeKeyAndVisible];


    ※ 위 방법은 Beginning iPhone4 Development 책에서 사용하는 방식을 Xcode 4.3 에서 세팅하는 것이다.

    꼭 위와 같이 시작할 필요는 없으며, 시작하는 코드에 ViewController를 alloc 하여 AppDelegate가 멤버로 가지고 있는 window에 rootController로 지정해서 시작해도 될 것이다. 해당 ViewController 의 viewDidLoad 등의 함수에서 초기 화면을 세팅하면 된다.

    Posted by 다오나무