영삼이의 IT정보2012. 5. 20. 19:26

윈도우 라이브 라이터 테스트

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

부팅 캠프 지원 저장 다 끝나면
부팅캠프 지원이 새로운 보조도구를 추가할려고 합니다.

암호 입력 메뉴에서
암호 입력

보조응용프로그램 추가 누르면

파티션 선택 화면나옴

원하시는 용량 선택하고
설치버튼 누르면 되고


파티션 생성 끝나면
전원이 꺼졌다 켜지면서 윈도우로 부팅됨

부팅화면에서 다른것과 동일한데


전원껐다켜지면서

윈도우7 설치 디스크가 로딩

사용자 지정

파티션 4 : 부트캠프

키보드 종류: 호환키보드 종류 3

윈도우상에서 한영전환을 하게 되면
쉬프트 + 스페이스가 한영전환


한자변환키
컨트롤 + 스페이스


파티션 4: 부트캠프

고급
포맷
포맷버튼 누르고
계속 버튼 누르면

윈도우즈 설치 화면이
진행막대가 오른쪽으로 가게 됨.

윈도우즈 진짜 설치

Posted by 다오나무
영삼이의 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 다오나무
영삼이의 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 다오나무
    영삼이의 IT정보2012. 3. 27. 16:04

    Android 도 SQLite 를 사용하니 결과는 마찬가지라고 생각되지만 Android 에서 테스트해 보질 않아서 장담 할 수는 없을 것 같다.

    암튼...SQLite 가 원래 영어, 한글 순으로 정렬을 해버린다..-_-;
    기획자들의 요구사항은 한글, 영어다..

    어쩌할까...생각을 해보다..생각을 접고 구글링한다..

    when 을 이용하여 처리한 방법이 있다..(select절에 when사용 처음 해본다..)

    [NSString stringWithFormat:@"SELECT idx, title, writer_doc, writer_img, download_reg_date, download_end_date, free_yn, tidx, vidx, gidx, title_sub, abs(vidx) as vid, case when substr(title, 1, 1) BETWEEN '' AND '' then 1 else 4 end as number FROM cartoon GROUP BY title, vid ORDER BY number %@, title %@, vid %@ LIMIT %d", orderby, orderby, orderby, limit]

    abs(vidx)는 vidx값이 문자열이라 정렬하기 위해서 int형으로 변환했다...
    문자열을 int 로 변경하는 convert 함수가 이놈이 맞는지 모르지만..암튼 된다.-_-;

    그리고 한글, 영문 정렬.. 
    when substr(title, 1, 1) BETWEEN '' AND '' then 1 else 4 end as number 

    title의 첫글자를 substr 한 후 그값이  'ㄱ'에서 '힣' 사이에 속하면 1 아니면 4로 
    셋팅한 후 정렬할때 number를 기준으로 정렬한다..

    Posted by 다오나무
    영삼이의 IT정보2012. 2. 20. 17:05
    iPhone 사용하시다 보면, 다들 이런 경험 있으시죠? ^^

    iOS App Store에서 App.을 다운로드 받을때, 20 MB 이상인 녀석들은 3G 인터넷을 통해 다운로드 받을 수 없습니다. 
    App Download에 제한이 걸리게 되면, App 판매량에도 분명 영향을 미칠것입니다.

    자 그럼 어떻게 이 뚱뚱한 App 녀석을 다이어트 시켜야 할까요?

    최근에 알게된 것중에 하나 인데, 소개 해보려고 합니다. 
    Stretchable Image 즉, 확대 가능한 이미지를 사용함으로써, Image Size를 줄이고, 궁극적으로는 Application Size를 줄일 수 있습니다.
    Android개발을 해보신 분들이라면, 9 patch Image라는 녀석을 아실텐데요, 그녀석과 흡사하지만 덜 파워풀한녀석입니다 ㅎ

     

    실험 대상이 될 Image는 바로 요녀석인데요, 요녀석은 40x24 입니다. 
    근데 저는 이녀석을 40x24로도 사용하고, 240x24 로도 사용하고 싶습니다.

    가장 간단한 방법은 이녀석을 40x24 버전과 240x24버전을 따로 준비 하는것인데, 이러면서 App.이 뚱뚱해지기 시작합니다. 

    그럼 어떻게 해야 하냐 ? 범인, 아니 정답은 여기 있습니다 !

    - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;


    이녀석을 이용하면, 일단 UIImage를 Stretchable하게 바꿔줍니다. 


    위의 스킨 샷을 보시면, Stretchable한 Image를 이용하지 않고 그냥 UIImageView의 크기만 늘리게 되면, 
    두번째 나오는 녀석처럼 쭈욱 늘어나서, 못생긴 녀석이 됩니다. 
    그러나 UIImage를 Stretchable한 상태로 만들어 주면 짜잔 , 3번쨰 녀석 처럼 매끈하게 나옵니다. 


    UIImage *img = [[UIImage imageNamed:@"image.png"stretchableImageWithLeftCapWidth:10 topCapHeight:10];

    [stretchableView setImage:img];


    예제 코드는 위와 같은데요, 
    leftCap/topCap 값을 줄수 있어서, 값에 따라 Image를 upscale할때, 특정 픽셀들은 남기고, 아래 값들만 upscale시키게 됩니다. 

    애석하게도, 위의 방법은 Interface Builder에서는 할 수 있는 방법이 없기 때문에, 
    UIimageView에 Image를 세팅하는것을 소스코드 레벨에서 따로 해줘야 합니다. 

    Apple이녀석들은 이런 괜찮은걸 만들어 놨으면, InterfaceBuilder에서도 쓸 수 있게 해줘야지 ;ㅂ; 
    친구 녀석 말따라, Apple 애들도 IB를 잘 안써서 그런가 봅니다.


    Sample Project 첨부해 드리니, 살펴 보실 분들은 한번씩 살펴 보시기 바랍니다. 

    어떻게, 당신의 App은 다이어트에 성공하셨나요? ^^
    Posted by 다오나무