-- Table structure for table `g5_write_gallery`
--

CREATE TABLE `g5_write_gallery` (
  `wr_id` int(11) NOT NULL AUTO_INCREMENT,
  `wr_num` int(11) NOT NULL DEFAULT '0',
  `wr_reply` varchar(10) NOT NULL,
  `wr_parent` int(11) NOT NULL DEFAULT '0',
  `wr_is_comment` tinyint(4) NOT NULL DEFAULT '0',
  `wr_comment` int(11) NOT NULL DEFAULT '0',
  `wr_comment_reply` varchar(5) NOT NULL,
  `ca_name` varchar(255) NOT NULL,
  `wr_option` set('html1','html2','secret','mail') NOT NULL,
  `wr_subject` varchar(255) NOT NULL,
  `wr_content` text NOT NULL,
  `wr_link1` text NOT NULL,
  `wr_link2` text NOT NULL,
  `wr_link1_hit` int(11) NOT NULL DEFAULT '0',
  `wr_link2_hit` int(11) NOT NULL DEFAULT '0',
  `wr_hit` int(11) NOT NULL DEFAULT '0',
  `wr_good` int(11) NOT NULL DEFAULT '0',
  `wr_nogood` int(11) NOT NULL DEFAULT '0',
  `mb_id` varchar(20) NOT NULL,
  `wr_password` varchar(255) NOT NULL,
  `wr_name` varchar(255) NOT NULL,
  `wr_email` varchar(255) NOT NULL,
  `wr_homepage` varchar(255) NOT NULL,
  `wr_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `wr_file` tinyint(4) NOT NULL DEFAULT '0',
  `wr_last` varchar(19) NOT NULL,
  `wr_ip` varchar(255) NOT NULL,
  `wr_facebook_user` varchar(255) NOT NULL,
  `wr_twitter_user` varchar(255) NOT NULL,
  `wr_1` varchar(255) NOT NULL,
  `wr_2` varchar(255) NOT NULL,
  `wr_3` varchar(255) NOT NULL,
  `wr_4` varchar(255) NOT NULL,
  `wr_5` varchar(255) NOT NULL,
  `wr_6` varchar(255) NOT NULL,
  `wr_7` varchar(255) NOT NULL,
  `wr_8` varchar(255) NOT NULL,
  `wr_9` varchar(255) NOT NULL,
  `wr_10` varchar(255) NOT NULL,
  PRIMARY KEY (`wr_id`),
  KEY `wr_num_reply_parent` (`wr_num`,`wr_reply`,`wr_parent`),
  KEY `wr_is_comment` (`wr_is_comment`,`wr_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `g5_write_gallery`
--

INSERT INTO `g5_write_gallery` VALUES (1,-1,'',1,0,0,'','','html1','갤러리 테스트','<p>내용무</p>','','',0,0,5,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2021-09-06 15:11:43',2,'2021-09-06 15:11:43','112.222.138.204','','','','','','','','','','','',''),(2,-2,'',2,0,0,'','','html1','linux wallpaper','<p>&nbsp;linux wallpaper</p>','https://wallpaperaccess.com/minimal-linux','',1,0,8,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-04-17 13:09:17',2,'2022-04-17 13:09:17','192.168.219.101','','','','','','','','','','','',''),(3,-3,'',3,0,0,'','','html1','windows backgroud image 1','<p>windows backgroud image 1</p>','','',0,0,8,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-04-30 23:04:04',2,'2022-04-30 23:04:04','192.168.219.110','','','','','','','','','','','',''),(4,-4,'',4,0,0,'','','html1','windows backgroud image 2','<p>windows backgroud image 2</p>','','',0,0,13,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-05-06 11:07:40',2,'2022-05-06 11:07:40','112.222.138.204','','','','','','','','','','','','');

--
-- Table structure for table `g5_write_tech`
--

CREATE TABLE `g5_write_tech` (
  `wr_id` int(11) NOT NULL AUTO_INCREMENT,
  `wr_num` int(11) NOT NULL DEFAULT '0',
  `wr_reply` varchar(10) NOT NULL,
  `wr_parent` int(11) NOT NULL DEFAULT '0',
  `wr_is_comment` tinyint(4) NOT NULL DEFAULT '0',
  `wr_comment` int(11) NOT NULL DEFAULT '0',
  `wr_comment_reply` varchar(5) NOT NULL,
  `ca_name` varchar(255) NOT NULL,
  `wr_option` set('html1','html2','secret','mail') NOT NULL,
  `wr_subject` varchar(255) NOT NULL,
  `wr_content` text NOT NULL,
  `wr_link1` text NOT NULL,
  `wr_link2` text NOT NULL,
  `wr_link1_hit` int(11) NOT NULL DEFAULT '0',
  `wr_link2_hit` int(11) NOT NULL DEFAULT '0',
  `wr_hit` int(11) NOT NULL DEFAULT '0',
  `wr_good` int(11) NOT NULL DEFAULT '0',
  `wr_nogood` int(11) NOT NULL DEFAULT '0',
  `mb_id` varchar(20) NOT NULL,
  `wr_password` varchar(255) NOT NULL,
  `wr_name` varchar(255) NOT NULL,
  `wr_email` varchar(255) NOT NULL,
  `wr_homepage` varchar(255) NOT NULL,
  `wr_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `wr_file` tinyint(4) NOT NULL DEFAULT '0',
  `wr_last` varchar(19) NOT NULL,
  `wr_ip` varchar(255) NOT NULL,
  `wr_facebook_user` varchar(255) NOT NULL,
  `wr_twitter_user` varchar(255) NOT NULL,
  `wr_1` varchar(255) NOT NULL,
  `wr_2` varchar(255) NOT NULL,
  `wr_3` varchar(255) NOT NULL,
  `wr_4` varchar(255) NOT NULL,
  `wr_5` varchar(255) NOT NULL,
  `wr_6` varchar(255) NOT NULL,
  `wr_7` varchar(255) NOT NULL,
  `wr_8` varchar(255) NOT NULL,
  `wr_9` varchar(255) NOT NULL,
  `wr_10` varchar(255) NOT NULL,
  PRIMARY KEY (`wr_id`),
  KEY `wr_num_reply_parent` (`wr_num`,`wr_reply`,`wr_parent`),
  KEY `wr_is_comment` (`wr_is_comment`,`wr_id`)
) ENGINE=MyISAM AUTO_INCREMENT=675 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `g5_write_tech`
--

INSERT INTO `g5_write_tech` VALUES (1,-1,'',1,0,0,'','','','[mysql] update 구문과 root 암호 변경, 새 유저환경 추가...','################################################### \r\n### root 암호 변경 \r\nupdate 테이블명 set 변경할필드명=\'변경데이타\' where 필드명=\'테이타\'; \r\n\r\nex) mysql> update  member set password=password(\'000000\') where user=\'root\'; \r\n\r\n\r\n\r\n### 새로운 DB 생성 \r\n[console@root] mysqladmin -u root -p create newDB \r\n### 환경설정-DB 테이블 \r\nmysql> insert into db values(\'%\',\'newID\',\'newDB\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\'); \r\n### 환경설정-USER 테이블 \r\nmysql> insert into user (host,user,password) values(\'localhost\',\'newID\',password(\'000000\'));','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:33:41',0,'2019-03-23 23:33:41','192.168.219.102','','','','','','','','','','','',''),(2,-2,'',2,0,0,'','','','[html/javascript] tag 소스보기 금지...','1. <body> 안에... \r\n<body bgcolor=\"#FFFFFF\" oncontextmenu=\"return false;\" onselectstart=\"return false\" ondragstart=\"return false\"> \r\n\r\n2.<head> 사이에... \r\n<script language=JavaScript type=text/javascript> \r\nfunction m_click() { \r\n    if ((event.button==2) || (event.button==3) || (event.keyCode == 93)) { \r\n    return false; \r\n    } else { \r\n    if((event.ctrlKey) || (event.shiftKey)) { \r\n    return false; \r\n    } \r\n} \r\n} \r\n\r\nfunction keypressed() { \r\n    event.keyCode = 0; \r\n    event.cancelBubble = true; \r\n    event.returnValue = false; \r\n} \r\ndocument.onmousedown=m_click; \r\ndocument.onkeydown=keypressed; \r\n</script>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:33:56',0,'2019-03-23 23:33:56','192.168.219.102','','','','','','','','','','','',''),(3,-3,'',3,0,0,'','','','[html/javascript] value 값읽어 alert 메세지 출력하기','<body onLoad = \"//setTimeout(\'checkMethod()\',1000)\"> \r\n// body 태그에 onLoad 삽입... 호출시간 설정 \r\n\r\n<script> \r\n        setInterval(\'checkMethod()\', 1000); \r\n        function checkMethod() { \r\n                if(document.push.gas.value == \'on\') alert(\'가스 누출이 검출되었습니다!!!\');            \r\n                if(document.push.fire.value == \'on\') alert(\'화재가 감지되었습니다!!!\');        \r\n                if(document.push.dore.value == \'open\') alert(\'도어가 열렸습니다!!!\');          \r\n        } \r\n</script> \r\n... \r\n... \r\n<input type=text name=gas value=$val1>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:34:52',0,'2019-03-23 23:34:52','192.168.219.102','','','','','','','','','','','',''),(4,-4,'',4,0,0,'','','','[Linux] xfce 4.0 설치시 환경설정','1. xfce 설치 - rpm... \r\n\r\n2. /root/.i18n \r\nexport XMODIFIERS=\"@im=nabi\" \r\nexport XIM_PROGRAM=/usr/bin/nabi \r\n\r\n3. /root/.xsession \r\nxfce-mcs-manager \r\nxfwm4 --daemon \r\nxftaskbar4 & \r\nxfdesktop & \r\nexec xfce4-panel','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:35:02',0,'2019-03-23 23:35:02','192.168.219.102','','','','','','','','','','','',''),(5,-5,'',5,0,0,'','','','[Linux] Proftp 와 Mysql 연동하여 사용자 인증하기','-ProFTPD 설치 방법- \r\n\r\n일단, MySQL은 설치되었다고 가정하고...저의 경우에는 RedHat 7.2에 \r\n기본적으로 들어있는 RPM 으로 설치를 했습니다. \r\n\r\n그다음은 ProFTPD 설치를 합니다. \r\nwww.proftpd.org 에 가셔서 1.2.5rc1 버전을 다운받습니다. \r\n압축 푸시고 \r\n./configure --prefix=/usr --with-modules=mod_sql:mod_sql_mysql \\\\ \r\n--with-includes=/usr/include/mysql --with-libraries=/usr/lib/mysql \\\\ \r\n--sysconfdir=/etc --localstatedir=/var \r\nmake \r\nmake install \r\n\r\n-설정 방법- \r\n\r\n그리고 mysql에 database를 만듭니다. \r\ndatabase 이름은 proftp로 짓습니다. \r\n그리고 아래의 테이블을 만듭니다. 아래 테이블은 아래에 있던 \r\nProFTP + MySQL 팁에서 가져왔습니다. 단 한가지 다른 점이 있다면 \r\ngroup 테이블에서 Field 에 gname 을 groupname으로 변경했습니다. \r\n1.2.5rc1에서 Default로 groupname을 찾습니다. \r\n\r\n* 테이블명: users \r\n    +---------+------------------+------+-----+---------+-------+ \r\n    | Field  | Type            | Null | Key | Default | Extra | \r\n    +---------+------------------+------+-----+---------+-------+ \r\n    | userid  | char(12)        |      | PRI |        |      | \r\n    | uid    | int(10) unsigned | YES  |    | NULL    |      | \r\n    | gid    | int(10) unsigned | YES  |    | NULL    |      | \r\n    | passwd  | char(63)        | YES  |    | NULL    |      | \r\n    | shell  | char(255)        | YES  |    | NULL    |      | \r\n    | homedir | char(255)        | YES  |    | NULL    |      | \r\n    | count  | int(10) unsigned |      |    | 0      |      | \r\n    | valid  | int(10) unsigned | YES  |    | NULL    |      | \r\n    +---------+------------------+------+-----+---------+-------+ \r\n\r\n  * 테이블명: groups \r\n    +-----------+------------------+------+-----+---------+-------+ \r\n    | Field    | Type            | Null | Key | Default | Extra | \r\n    +-----------+------------------+------+-----+---------+-------+ \r\n    | groupname | char(12)        |      | PRI |        |      | \r\n    | gid      | int(10) unsigned |      |    | 0      |      | \r\n    | members  | text            | YES  |    | NULL    |      | \r\n    +-----------+------------------+------+-----+---------+-------+ \r\n\r\n그리고 /etc/proftpd.conf 를 아래와 같이 편집합니다. \r\n물론 서버명이나 포트, 디렉토리 같은 부분은 여러분에게 \r\n맞게 변경해주시기 바랍니다. \r\n\r\nServerName                      \"r2al3ac\'s FTP server\" \r\nServerType                      standalone \r\nServerIdent                    on \"r2al3ac\'s FTP server ready...\" \r\nServerAdmin                    \"r2al3ac@hananet.net\" \r\nDefaultServer                  on \r\n\r\nPort                            21 \r\n\r\nUmask                          022 \r\n\r\nMaxInstances                    30 \r\n\r\nUser                            nobody \r\nGroup                          nobody \r\n\r\n#아래 SQLConnectInfo 문에서 proftp는 데이터베이스명이며 아이디와 비밀번 \r\n호는 \r\n#여러분의 mysql 설정에 맞게 변경해주시면 됩니다. \r\n#보시면 1.2.4 버전때와는 다른점이 있음을 알 수 있습니다. \r\nSQLConnectInfo                  proftp@localhost:3306 아이디 비밀번호 \r\nSQLAuthTypes                    Backend \r\nSQLAuthenticate                on \r\nSQLUserInfo                    users userid passwd uid gid homedir \r\nshell \r\nSQLLog                          PASS updatecount \r\nSQLNamedQuery                  updatecount UPDATE \"count=count+1 \r\nWHERE userid=\'%u\'\" users \r\nSQLUserWhereClause              \"valid = 1\" \r\nSQLDefaultHomeDir              /var/ftp \r\nDisplayLogin                    welcome.msg \r\nDisplayFirstChdir              .message \r\n\r\nDefaultRoot                    /var/ftp \r\nMaxClients                      4 \r\nMaxClientsPerHost              1 \r\nMaxHostsPerUser                1 \r\n\r\nRequireValidShell              off \r\n\r\nAllowRetrieveRestart            on \r\nAllowStoreRestart              on \r\nAllowOverwrite                  on \r\n\r\n<Directory /var/ftp> \r\n<Limit READ> \r\nAllowAll \r\n</Limit> \r\n<Limit WRITE> \r\n\r\n</Limit> \r\n<Limit WRITE> \r\nDenyAll \r\n</Limit> \r\n</Directory> \r\n\r\n<Directory /var/ftp/pub/*> \r\n<Limit READ> \r\nAllowAll \r\n</Limit> \r\n<Limit WRITE> \r\nDenyAll \r\n</Limit> \r\n</Directory> \r\n\r\n<Directory /var/ftp/incoming/*> \r\n<Limit READ> \r\nDenyAll \r\n</Limit> \r\n<Limit STOR MKD> \r\nAllowAll \r\n</Limit> \r\n</Directory> \r\n\r\n-테스트 하기- \r\n\r\n1. mysql에서 proftp 데이터베이스에 users 테이블에 사용자를 하나 등록 시 \r\n킵니다. 단, 반드시 valid 값을 1로 주셔야 됩니다. 만약 1이 아닐경우에는 \r\n로그인이 되지 않습니다. \r\n\r\n2. /usr/sbin/prftpd start 를 쳐서 proftpd 를 실행합니다. \r\n\r\n3. ftp 나 ncftp 를 사용해서 1번에서 등록해준 사용자와 비밀번호로 로그인 \r\n을 해봅니다. \r\n\r\n-만약 안된다면- \r\n\r\nproftpd.conf 셋팅에 문제는 없는지 확인해보시고, \r\n포트를 다른 걸로 바꿔보시고, \r\n그래도 안된다면 아래와 같은 방법으로 proftpd를 디버그 모드로 실행해서 \r\n어디서 어떻게 잘못되었는지 알아보시기 바랍니다. \r\n\r\n/usr/sbin/proftpd -d 5 -n -c /etc/proftpd.conf \r\n\r\n이렇게 입력하시면 디버그 모드로 실행이 됩니다. \r\n\r\n그리고 터미널 창을 하나 더 열어서 ftp 로 접속을 시도해 보시면 \r\n어디서 어떻게 잘못되었는지 알 수 있습니다. \r\n\r\n-덧붙이는 말- \r\n\r\n위에서 SQLAuthenticate 부분을 on 이라고 해놓았는데, 만약 \r\ngroup 테이블을 사용하지 않으시면 SQLAuthenticate users 로 \r\n바꿔서 사용하시면 됩니다. \r\n\r\n하지만 on으로 해놓아도 별문제 없이 쓰실수 있습니다. \r\n\r\n설정문과 관련해서 자세한 것은 proftpd 문서를 참고하시기 \r\n바랍니다. 참고로 proftpd.oops.org 나 www.proftpd.org 문서들은 \r\noutdate 되어서 1.2.5rc1 과는 차이가 있으므로 proftpd1.2.5rc1을 \r\n다운받으면 안에 첨부된 문서를 참조하셔야됩니다.','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:35:21',0,'2019-03-23 23:35:21','192.168.219.102','','','','','','','','','','','',''),(6,-6,'',6,0,0,'','','','[Linux] 한글자바 설치 - font.properties.ko / fonts.dir','font.properties.ko 파일은 /usr/java/j2sdk1.4.0/jre/lib/ 에, fonts.dir 은 /usr/java/j2sdk1.4.0/jre/lib/fonts/fonts.dir 에 추가해줍니다. \r\n(맨위 라인 넘버 수정...) \r\n================================================================== \r\n# \r\n# @(#)font.properties.kr 0.01 01/12/26 \r\n# \r\n# Copyright 1999-2001 by Sun Microsystems, Inc., \r\n# 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. \r\n# All rights reserved. \r\n# \r\n# This software is the confidential and proprietary information \r\n# of Sun Microsystems, Inc. (\"Confidential Information\"). You \r\n# shall not disclose such Confidential Information and shall use \r\n# it only in accordance with the terms of the license agreement \r\n# you entered into with Sun. \r\n# \r\n\r\n# \r\n# AWT Font default Properties for Hangeul Hancom Linux 0S 2.0 or Redhat 7.1 (and higher) \r\n# \r\n\r\n# Serif font definition \r\n# \r\nserif.0=-ms-Batang-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\nserif.1=-ms-Batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\nserif.italic.0=-ms-Batang-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\nserif.italic.1=-ms-Batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\nserif.bold.0=-ms-Batang-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\nserif.bold.1=-ms-Batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\nserif.bolditalic.0=-ms-Batang-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\nserif.bolditalic.1=-ms-Batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\n# SansSerif font definition \r\n# \r\n\r\nsansserif.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\nsansserif.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\nsansserif.italic.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\nsansserif.italic.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\nsansserif.bold.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\nsansserif.bold.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\nsansserif.bolditalic.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\nsansserif.bolditalic.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\n# Monospaced font definition \r\n# \r\nmonospaced.0=-ms-GulimChe-medium-r-normal--*-%d-*-*-m-*-iso8859-1 \r\nmonospaced.1=-ms-GulimChe-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\nmonospaced.italic.0=-ms-GulimChe-medium-r-normal--*-%d-*-*-m-*-iso8859-1 \r\nmonospaced.italic.1=-ms-GulimChe-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\nmonospaced.bold.0=-ms-GulimChe-medium-r-normal--*-%d-*-*-m-*-iso8859-1 \r\nmonospaced.bold.1=-ms-GulimChe-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\nmonospaced.bolditalic.0=-ms-GulimChe-medium-r-normal--*-%d-*-*-m-*-iso8859-1 \r\nmonospaced.bolditalic.1=-ms-GulimChe-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\n# Dialog font definition \r\n# \r\ndialog.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\ndialog.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\ndialog.italic.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\ndialog.italic.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\ndialog.bold.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\ndialog.bold.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\ndialog.bolditalic.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\ndialog.bolditalic.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\n# DialogInput font definition \r\n# \r\ndialoginput.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\ndialoginput.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\ndialoginput.italic.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\ndialoginput.italic.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\ndialoginput.bold.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\ndialoginput.bold.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\ndialoginput.bolditalic.0=-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\ndialoginput.bolditalic.1=-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0 \r\n\r\n# Default font definition \r\n# \r\ndefault.char=274f \r\n\r\n# name aliases \r\n# \r\nalias.timesroman=serif \r\nalias.helvetica=sansserif \r\nalias.courier=monospaced \r\n\r\n# for backward compatibility \r\n# zapfdingbats.0=-urw-itc zapfdingbats-medium-r-normal--*-%d-*-*-p-*-sun-fontspecific \r\n\r\n# Static FontCharset info. \r\n# \r\n# This information is used by the font which is not indexed by Unicode. \r\n# Such fonts can use their own subclass of FontCharset. \r\n# \r\n# This information can be overriden by describing more specific style. \r\n# For example \r\n# \r\n# fontcharset.serif.plain.3=SpecialSymbols \r\n# means serif.plain.3 font\'s index can be retrieved with the convert() method \r\n# of instance of SpecialSymbols and what kind of characters serif.plain.3 font \r\n# has can be judged with the isCovered() method of instance of SpecialSymbols. \r\n# \r\nfontcharset.serif.0=sun.io.CharToByteISO8859_1 \r\nfontcharset.serif.1=sun.awt.motif.CharToByteX11KSC5601 \r\n\r\nfontcharset.sansserif.0=sun.io.CharToByteISO8859_1 \r\nfontcharset.sansserif.1=sun.awt.motif.CharToByteX11KSC5601 \r\n\r\nfontcharset.monospaced.0=sun.io.CharToByteISO8859_1 \r\nfontcharset.monospaced.1=sun.awt.motif.CharToByteX11KSC5601 \r\n\r\nfontcharset.dialog.0=sun.io.CharToByteISO8859_1 \r\nfontcharset.dialog.1=sun.awt.motif.CharToByteX11KSC5601 \r\n\r\nfontcharset.dialoginput.0=sun.io.CharToByteISO8859_1 \r\nfontcharset.dialoginput.1=sun.awt.motif.CharToByteX11KSC5601 \r\n\r\n# exclusion info. \r\n# \r\n# This information describe exclusion ranges for each fonts. \r\n# \r\n# \'exclusion.serif.plain.0\' overrides \'exclusion.serif.0\', and \r\n# \'exclusion.serif.0\' overrides exclusion.0, and so on. \r\n# \r\n\r\n# XFontSet string \r\n# X11 only properties \r\n# \r\n\r\n# Serif font definition \r\n# \r\nfontset.serif.plain=\\\\ \r\n-ms-Batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Batang-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.serif.italic=\\\\ \r\n-ms-Batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Batang-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.serif.bold=\\\\ \r\n-ms-Batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Batang-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.serif.bolditalic=\\\\ \r\n-ms-Batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Batang-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\n# SansSerif font definition \r\n# \r\n\r\nfontset.sansserif.plain=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.sansserif.italic=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.sansserif.bold=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.sansserif.bolditalic=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\n# Monospaced font definition \r\n# \r\nfontset.monospaced.plain=\\\\ \r\n-ms-GulimChe-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-GulimChe-medium-r-normal--*-%d-*-*-m-*-iso8859-1 \r\n\r\nfontset.monospaced.italic=\\\\ \r\n-ms-GulimChe-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-GulimChe-medium-r-normal--*-%d-*-*-m-*-iso8859-1 \r\n\r\nfontset.monospaced.bold=\\\\ \r\n-ms-GulimChe-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-GulimChe-medium-r-normal--*-%d-*-*-m-*-iso8859-1 \r\n\r\nfontset.monospaced.bolditalic=\\\\ \r\n-ms-GulimChe-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-GulimChe-medium-r-normal--*-%d-*-*-m-*-iso8859-1 \r\n\r\n# Dialog font definition \r\n# \r\nfontset.dialog.italic=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.dialog.bold=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.dialog.bolditalic=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.dialog.plain=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\n# DialogInput font definition \r\n# \r\nfontset.dialoginput.italic=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.dialoginput.bold=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.dialoginput.bolditalic=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\nfontset.dialoginput.plain=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n\r\n# \r\nfontset.default=\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0,\\\\ \r\n-ms-Gulim-medium-r-normal--*-%d-*-*-p-*-iso8859-1 \r\n# \r\n================================================================= \r\n\r\n6 \r\ngulim.ttc -ms-Gulim-medium-r-normal--0-0-0-0-c-0-ksc5601.1987-0 \r\ngulim.ttc -ms-Gulim-medium-r-normal--0-0-0-0-p-0-iso8859-1 \r\ngulim.ttc -ms-GulimChe-medium-r-normal--0-0-0-0-c-0-ksc5601.1987-0 \r\ngulim.ttc -ms-GulimChe-medium-r-normal--0-0-0-0-m-0-iso8859-1 \r\nbatang.ttc -ms-Batang-medium-r-normal--0-0-0-0-c-0-ksc5601.1987-0 \r\nbatang.ttc -ms-Batang-medium-r-normal--0-0-0-0-p-0-iso8859-1','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:35:51',1,'2019-03-23 23:35:51','192.168.219.102','','','','','','','','','','','',''),(7,-7,'',7,0,0,'','','','[Windos] XP 설치후 해야할것들...','1. (시스템등록정보 설정) 제어판-시스템 \r\n- 시스템복원 해제 : [시스템복원-모든드라이브에 시스템복원 사용안함]에 체크한다. 필요하면 C:드라이브만 설정한다. \r\n- 자동업데이트 해제 : [자동업데이트-자동업데이트를 사용하지 않고...]에 체크한다. \r\n- 오류보고 해제 : [고급-오류보고-오류보고 사용안함]에 체크하고 [치명적인 오류가 발생하면 알림]에 체크한다. \r\n- 멀티부팅 선택 해제 : [고급-시작및복구-설정-운영체제목록을 표시할 시간]에 체크를 지운다.(멀티부팅시 알맞게 조절할 것) \r\n그 아래쪽에 [시스템오류-자동으로 다시 시작]도 체크를 지운다. \r\n- 하드웨어 충돌 확인 : [하드웨어-장치관리자]에서 느낌표나 물음표가 표시된 충돌목록은 드라이버 업데이트등 조치를 취한다. \r\n저사양에서 가상메모리 설정 \r\n항상 최저랑 최고랑 같이 설정하시구 하드가 조금~~남는 분..- -;^^은 모두 가상 설정하시구여.(저사양에있으신 분만여.) \r\n\r\n(한통외장형 연결법) 제어판-네트워크 연결 \r\nRaspppoe를 쓰지 않고도 자체내장된 PPPoE기능으로 인터넷에 연결할 수 있다. 처음 xp설치 도중에 잘 설정했다면 [제어판-네트워크 연결-내ISP]가 있다. 없으면 \r\n[제어판-네트워크 연결-네트워크작업-새연결 만들기]를 누른다. [다음-인터넷에 연결-연결을 수동으로 설정-사용자 이름 및 암호를...-KT(아무거나 적고..)- 사용자이름과 암호에 한통아이디와 암호적고-[바탕화면에 이 연결의...]에 체크하고 [마침] 클릭. \r\n내ISP 생긴걸 확인하고, 바탕화면에 만들어진 단축아이콘을 시작프로그램에 가져다 놓으면 부팅하면서 바로 연결된다 \r\n\r\n또한 이건 인증 확인 명령이구여.\"oobe/msoobe /a\" 입력. \r\n\r\n- 인증이 되어 있다면...안심. \r\n\r\nC:\\\\WINDOWS\\\\system32\\\\DLLCACHE 폴더안의 파일 모두 삭제 - [ 360MB 용량 확보 ] \r\nC:\\\\WINDOWS\\\\Driver Cache\\\\I386 폴더안의 파일 모두 삭제 [ 73.5MB 용량 확보 ] \r\n참고로 꼼꼼하신 분들은 드라이버 백업하셔두 되구여....^^ \r\n\r\nXP시작할때 새로운 시작 화면 안뜨게 하기 \r\n\r\nXP시작할때 새로운 시작 하면서 화면이 뜹니다.없앨려면 먼저 제어판-->사용자 계정에 가시면 사용자 계정 창이 뜹니다거기서 `사용자 로그온 또는 로그오프 방법 변경`에 가시면새로운 시작 화면 사용`이 있습니다. 새로운 시작이 뜨면 새로운 시작 화면 사용에 체크가 되어 있겠죠 그 체크 표시를 안하면 이제 부터 새로운 시작화면 이 안뜹니다 \r\n\r\n가상메모리] 설정하는부분이 있습니다. \r\n하드가 여러개로 파티션이 나눠져 있다면 윈도우가 설치된 드라이버 말고 다른곳으로 페이징 파일을 설정합니다..크기는 최소범위와 최대범위를 가능하면 같도록 384-384 나768-768 등으로...설정하시면 됩니다 .번복합니당..^^ \r\n\r\n또한 시스템 종료 안되시는 분들 있져..먼저 제어판에 가셔서 새 하드웨어 추가를 합니다. \r\n자동 검색을 먼저 하시면 새 장치가 없다고 나옵니다. \r\n그러면 새 장치 수동으로 추가 하는게 있습니다. \r\n거기서 NT APM/LEGASY SUPPORT 를 추가합니다... 그러면 바로 시스템 종료를 할 수 있습니다... 정말 오늘 하루 컴터만 했음당~~~ 수고염 \r\n또한 제어판에서 시스템 전원 자동 종료도 추가. \r\n\r\n한영 전환이 안될때...ctfmon.exe 라는 파일이 가끔 죽는 경우가 있습니다. 이럴때 작업관리자에서 ctfmon.exe를 강제로 죽이신다음 시작메뉴 실행에서 ctfmon.exe를 치시고 엔터치시면 돌아옵니다.. \r\n\r\n훗..시디 스페이스 때문에 고생한 신분들 있져? 나...- -;.. 아래 경로의 LCDPLAYER를 모두 삭제해야 합니다... \r\nAll Users의 LCDPLAYER 를 삭제하지 않을경우 시스템 재부팅등 정상적으로 동작 불가능할수도 있음.. (CROW는 제PC의 계정입니다.. 참고) \r\n\\\\Documents and Settings\\\\All Users\\\\시작 메뉴\\\\프로그램\\\\시작프로그램 \r\n\\\\Documents and Settings\\\\CROW\\\\시작 메뉴\\\\프로그램\\\\시작프로그램 \r\n\r\n또! 시작 메뉴의 기본 속도는 상당히 느립니다. 그러나 레지스트리 키를 수정함으로써 이것을 변경시킬 수 있습니다. \r\n\r\nRegistry Editor를 가동시키고 다음 키들을 진행시키십시오.: \r\nHKEY_CURRENT_USER \\\\ Control Panel \\\\ Desktop \\\\ MenuShowDelay 기본적으로, 설정값은 400입니다. 이를 설정값을 0과 같이 작게 설정하여 속도를 빠르게 하십시오. \r\n\r\n또한 자기 ip정도는 알아야 겠져?>윈xp에서 ip주소를 확인하려면 일단 시작->실행->cmd를 치시고 도스창이 뜨시면 거기에다가 ipconfig를 치시면 나옵니다... \r\n실행에서 ipconfig치면 도스창이 갑자기 사라지는...;; \r\n\r\ndirectx 라는 게 있습니당...지금은 9a가 최신이구여. 이거 해줘야 마음 편하시져...시작 - 실행에서 dxdiag 라고 쳐넣코 엔터 .. \r\n(dxdiag : DirectX 진단도구 실행 명령어)확인 해보셔여...^^ \r\n\r\n베드섹터 검사및 베드섹터 복구하는 방법 \r\n\r\n님들중에 디스크 키퍼하시고 또한 디스크 검사 못찿는 분들 계실거예여...내가 그랬거든여.. \r\nxp오리 지널 검사 해야 계져...? \r\n내컴퓨터-검사를 원하는 하드디스크를 선택하고 마우스 오른쪽 버튼을 클릭해서 -속성-도구로이동-디스크검사 옵션 항목에서 [불량섹터 검사 및 복구 시도]를 체크하고 시작을 클릭해주시면됩니다 \r\n\r\n중요합니당..레지 클리너를 다운받아서 불필요한 파일을 삭제한다.님들중에 특히 말안들었던 프로그램 , 지웠다고 생각했던 프로그램 여기서 확인해 보면...- - ...확실히 삭제해주셔야져..ex)시디 스페이스의 엘시디 플래얼, 노턴 바이러스 지우는뎅 안지워짐 ,,이때여;..^^ \r\n\r\n부팅후 및 탐색기실행시 A드라이브 안 읽게 하기 \r\n\r\n음...읽어도 별상관은 없는데 아무래도 상관없는뎅...읽으니 고쳐야져..^^ \r\n\r\n부팅직후나 탐색기를 실행할때 이상하게 A드라이브를 이유없이 읽는 경우가 있을수 있다. \r\n갑자기 이런증상이 나타날때는 이렇게 해보면 된다. \r\n제어판->관리도구->서비스->shell hardware detection항목을 찿아 자동으로 설정->재부팅 \r\n\r\n또한 하드가 이유없이 계속 읽기를 반복할때....후 다왔습당...^^ \r\n\r\n아무 작업도 하지 않는데 하드디스크드라이브 표시등이 계속 켜지면서 하드가 작동을 한다면 \r\n다음 설정을 해제한다. \r\n제어판->관리도구->서비스->Indexing Service->속성->사용안함','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:36:31',0,'2019-03-23 23:36:31','192.168.219.102','','','','','','','','','','','',''),(8,-8,'',8,0,0,'','','','[Linux] 커널 2.6 컴파일','커널 2.6 으로 업그레이드 하기 \r\n글쓴이: Jeremy Andrews (jeremy@kerneltrap.org) \r\n옮긴이: 박슬기로 (spark@cpsc.ucalgary.ca) \r\n원문: http://kerneltrap.org/node/view/799 \r\n\r\n문서의 저작권은 커널트랩(KernelTrap) 에 있습니다. \r\n------------------------------------------------------------- \r\n\r\n여러분이 최근 몇달간 리눅스 커널 개발 활동을 지켜 보았다면 아직 발표되지 않은 커널 2.6 에 통합된 이후 한가지 흥미로운 특징을 보았을 것입니다. 로버트 러브(Robert Love, 인터뷰)의 선점형 커널 작업(Preemptible Kernel, 참고), 잉고 모날(Ingo Molnar, 인터뷰)의 0(1) 스케줄러(O(1) Scheduler, 참고), 릭 밴 리엘(Rik Van Riel, 인터뷰)의 역(逆)매핑 VM(Reverse Mapping VM, 참고), 닉 피긴스(Nick Piggins, 인터뷰)의 선행 I/O 스케줄러(Anticipatory I/O Scheduler, 참고) 그리고 그외 여러가지 새로운 특징들이 리눅스 커널에 영향을 주고 있습니다. \r\n\r\n몇일전 시간이 남았을 때 가장 최근 커널 2.6.0-test4 를 제 오래된 펜티엄3 컴퓨터에 시험해보기로 했습니다. 그리고 결과는 매우 환상적이였습니다. 커널 버전 2.6.0 발표가 가까워짐에 따라 그리고 특별히 현재 개발자들에게 새로운 커널 버그 잡기와 안정화 작업이 중요한 시점에서 늘어나는 많은 사용자들이(테스터) 새로운 커널을 시도하는 것은 중요합니다. 커널 2.7 개발이 시작되면 많은 개발자들은 다시 새로운 기능 구현에 몰두할 것 입니다. \r\n\r\n이 문서의 목적은 현재 커널 2.4 를 컴파일 하여 사용중이지만 아직 커널 2.6 을 시도해보지 못한 독자들에게 유용한 팁 제공하는 것입니다. 커널 2.6 은 현재 개발중인 커널이기때문에 문제가 발생할 수도 있지만 전체적으로 안정성과 성능은 상당히 좋습니다. 그렇지만 아직 여러분들에게 추천하기는 이른 것 같습니다. \r\n\r\n\r\n------------------------------------------------------------ \r\n\r\n대상 독자: \r\n이 글은 커널 2.4 컴파일에 익숙한 리눅스 사용자들을 위해 쓰여졌습니다. 리눅스 커널을 한번도 컴파일 해본적이 없는 사용자들은 다음 문서를 참고하시기 바랍니다. \r\n\r\nThe Linux Kernel HOWTO \r\n그 밖에 또한 커널 2.6 이 새로운 사용자들은 데이브 존스(Dave Jones)의 할로윈 문서 이후(\"커널 2.5 에 기대되는 것\"으로 알려져 있음.)를 읽어볼 것을 권합니다. \r\n\r\n0단계: 중요한 데이터 백업하기 \r\n시작하기전에, 개발중인 커널을 시도하려고 한다면 현재 중요한 데이터를 모두 백업하십시요. 저는 커널 2.6.0-test4 사용중에 아무 문제가 없었지만 여전히 버그는 존재합니다. \r\n\r\n1단계: 커널 2.6 구하기 \r\n모든 공식적인 리눅스 커널 소스 코드들은 http://kernel.org/ 에서 찾으실 수 있습니다. 커널 소스 코드를 다운 받으려는 다른 사용자들의 네트웍 트래픽 부담을 줄이기 위해 가장 빠르고 가까운 미러 사이트를 이용할 것을 적극 권장합니다. 미러 사이트 목록은 http://kernel.org/mirrors/ 에서 찾으실 수 있습니다. \r\n\r\n이 글을 쓰는 시점 현재 커널 2.6 버전은 개발중인 2.6.0-test4 입니다. 리눅스 첫 개발자 리누스 토발즈(Linus Torvalds)가 안정화 될것으로 예상되는 공식 커널 트리의 첫 버전 2.6.0 을 정식 발표를 결정하기 이전까지는, 다음 버전은 -test5, 그 다음은 -test6... 와 같은 방법으로 버전 번호가 바뀔 것 입니다. \r\n\r\n커널 소스 코드를 다운로드하고 나서, GnuPG 서명파일(*.sign)을 다운로드하여 출처가 명확하고 다운로드한 새로운 커널 소스가 유효한지 검증하는 것도 좋은 생각입니다. 자세한 정보는 http://www.kernel.org/signature.html 에서 찾으실 수 있습니다. \r\n\r\n2 단계: 제공되는 문서 읽기 \r\n적어도 커널 소스와 함께 제공되는 최상위 디렉토리에 있는 README(../README) 파일과 하위 디렉토리인 Documentation에 있는 Changes(../Documentation/Changes) 파일을 읽어두는 것이 좋습니다. \r\n\r\n최상위 디렉토리에 있는 README 파일은 커널 2.6.0-test 버전이 개발중임에 따라 이 것이 여전히 2.5 개발 버전이라는 것을 보여줍니다. (-test 확장자가 붙지 않은 버전 2.6.0 이 첫 공식 커널 2.6 이 될겁입니다.) 이 문서에서 어떻게 성공적으로 리눅스 커널을 컴파일 하는지 등 많은 유용한 팁들을 찾을 수 있을 것입니다. 문서는 다음과 같은 문장으로 시작합니다: \r\n\r\n\"이것은 리눅스 커널 2.5 버전 릴리즈 노트입니다. 문서가 어떻게 커널을 설치하는지, 뭔가 잘 못되었을 경우 어떻게 대처하는지 등 커널 설치에 대한 모든 것을 포함하고 있으니 자세하게 읽기 바랍니다.\" \r\n\r\n하위 디렉토리인 Documentation에 있는 Documenation/Changes 파일은 새 커널 2.5 를 문제 없이 설치하기 위해 꼭 업그레이드 되어야 하는 프로그램 리스트를 보여줍니다. 문서는 다음과 같이 시작합니다: \r\n\r\n\"이 문서는 커널 2.5 를 운영하기 위해 필요한 최소 프로그램 목록을 제공하고, 모험을 즐기는 사용자들이 만날 수 있는 문제점들에 관해 간단한 명령들을 제공하기 위해 쓰여졌습니다.\" \r\n\r\n3 단계: Changes 파일에 따라 시스템 업그레이드 하기 \r\n새로운 커널 2.6 을 문제 없이 설치하기 위해 업그레이해야만 하는 몇몇 유틸리티들이 있습니다. Changes 에 나열된 그 중 몇 가지 유틸리티들은 걱정 안해도 될 것입니다. 예를 들면 파일 시스템과 관련된 것과 같이 특정적인 유틸리티들이 있습니다. 그렇지만 적어도 아래와 같은 최소 버전 요구사항은 따라야 할 것입니다. (가장 최근 요구사항은 \'Documentation/Changes\' 를 참고하십시요. -- 바뀌었을 수도 있습니다.): \r\n\r\n제목: 최소 버전: 버전 알아내기: Gnu C Compiler 2.95.3 gcc --version Gnu Make 3.78 make --version binutils 2.12 ld -v util-linux 2.10o fdformat --version module-init-tools 0.9.9 depmod -V procps 2.0.9 ps --version [procps 2.x] [procps 3.x] \r\n다음 유틸리티들은 특정 파일 시스템에 관련된 유틸리티들입니다. ext2 나 ext3 를 사용중이라면 e2fsprogs 를 업데이트 하고 jfs 를 사용중이라면 jfsutils 를 업데이트 하십시요. 그 외 유틸리티들도 ext2, ext3, 아니면 jfs 와 같은 방법으로 업데이트 하십시요: \r\n\r\n제목: 최소 버전: 버전 알아내기: e2fsprogs 1.29 tune2fs jfsutils 1.0.14 fsck.jfs -V reiserfsprogs 3.6.3 reiserfsck -V 2>&1 | grep reiserfsprogs xfsprogs 2.1.0 xfs_db -V nfs-utils 1.0.5 showmount --version \r\n그리고 아래 목록의 다른 유용한 유틸리티들도 필요에 따라 업데이트 해주십시요: \r\n\r\n제목: 최소 버전: 버전 알아내기: pcmcia-cs 3.1.21 cardmgr -V quota-tools 3.09 quota -V PPP 2.4.0 ppd --version isdn4k-utils 3.1pre1 isdnctrl 2>&1 | grep version oprofile 0.5.3 oprofiled --version \r\n처음으로 ALSA (Advanced Linux Sound Architecture) 를 사용하려 한다면 ALSA 프로젝트 웹사이트 http://www.alsa-project.org/ 에 접속해 가장 최신 alsa-lib 와 alsa-utils 를 다운로드 하십시요. \r\n\r\n4 단계: 새 커널 설정하기 \r\n한 가지 주목할 만한 달라진 점은 새로운 설정 시스템 [참고] 입니다. 예전에 쓰이던 Tk/Tcl 기반의 \'xconfig\' 설정 방법은 새로운 QT 기반의 \'xconfig\' 로 교체되어 더 이상 존재 하지 않습니다. GTK 기반의 \'gconfig\'도 이용할 수 있어 QT 팬이 아닌 사용자들도 기쁠것 입니다. \r\n\r\n2.6 설정 방법은 다음과 같습니다: \r\n\r\nmake config \r\n\r\n이 것은 커널 2.4 의 \'config\' 설정 방법과 똑같은 것입니다. 가장 간단한 설정 방법인 \'config\' 는 단순히 각각 설정 옵션을 한번에 한번씩 묻습니다. 배쉬(bash) 쉘이 설치되어 있어야 합니다. \r\n\r\nmake menuconfig \r\n\r\n이 것 역시 커널 2.4 의 \'menuconfig\' 와 동일한 것입니다. 간단한 텍스트 기반의 설정 방법입니다. \r\n\r\nmake xconfig \r\n\r\n새로운 기본 그래픽 설정 시스템은 QT 라이브러리를 사용합니다. 저는 상당히 실용적이고 사용하기 편했습니다. \r\n\r\nmake gconfig \r\n\r\n이 옵션은 새로운 \'xconfig\' 와 동일한 것이지만 QT 라이브러리 대신 GTK 라이브러리를 이용합니다. 불행히도 간단한 테스트에서 불안정했습니다. 실행도중에 같은 오류를 계속 발생하고 재빨리 실행에 실패했습니다. \r\n\r\nmake oldconfig \r\n이 설정 옵션은 새로운 2.6 커널들을 컴파일 하면서 굉장히 유용할 것입니다. 대강 훑어 보면 \'make config\' 와 동일하게 보이지만 \'oldconfig\' 는 현재 .config 설정을 읽어와 기존 설정을 바탕으로 자동으로 설정하고 새로운 설정 선택사항만 보여줍니다. 이 설정 옵션을 사용하기 위해 간단히 이전의 .config 파일을 복사하고 \'make oldconfig\' 명령을 입력합니다. \r\n\r\n처음으로 커널 2.6 을 설정할 때 다음과 같이 리눅스 소스 코드 패키지에 포함되어 있는 README 파일의 유용한 팁을 기억 하십시요: \r\n\r\n불필요한 드라이버 선택은 커널을 크게 만들고 특정한 상황에서는 문제를 일으킬 수도 있습니다: 존재하지 않는 콘트롤러 카드 탐색은 다른 콘트롤러에게 혼란을 줄 수도 있습니다. \r\n\r\n\"커널 해킹(Kernel Hacking)\" 세부 설정은 보통 커널이 커지거나 느려지는 (아니면 둘다) 결과를 초래하고 가끔 활동적으로 커널의 문제점 (kmalloc()) 을 찾기 위해 좋지 않은 코드를 분석하는 일로 커널이 불안정해 질 수도 있습니다. 그러므로 개발용(\"development\"), 시험용(\"experimental\"), 이나 디버깅용(\"debugging\") 설정들에 대한 질문에는 아니요(\"n\") 라고 대답하는 것이 좋습니다. \r\n\r\n\r\nALSA (Advanced Linux Sound Architecture): \r\n2.4 에서 2.6 으로 업그레이드 하는 많은 사용자들에게 OSS (Open Sound System) 을 대체할 ALSA 는 처음 사용하는 것일겁니다. 간단히 구버전 OSS 를 활성함으로서 평상시와 같이 설치할 수 있으나 아마도 ALSA 를 사용하는 것도 좋은 생각입니다. ALSA 의 OSS API 에뮬레이션 덕분에 ALSA 설치는 그리 어렵지 않습니다. 커널을 설정할 때 OSS 에뮬레이션 옵션(SND_OSSEMUL, SND_MIXER_OSS, 그리고 SND_PCM_OSS)들을 활성화 시키십시요. 알맞은 사운드 카드 드라이버(PCI devices 항목 안에 있음)를 활성화 시키는 것 역시 잊지 마십시요. - 저는 커널안에 포함시켜 컴파일 하였습니다. 마지막으로 가장 최신 alsa-lib 와 alsa-utils 를 다운로드하고 설치하십시요. \r\n\r\n5 단계: 커널 컴파일하기 \r\n더 이상 \'make dep\' 명령을 주지 않아도 됨으로서 커널 컴파일 과정은 커널 2.4 보다 한 단계 쉬워졌습니다. \'make bzImage\' 명령으로 새로운 커널을 컴파일합니다. 모듈을 설치하려고 한다면 \'make modules\' 명령과 \'make modules_install\' 명령 또한 입력해야 할 것입니다. 혹은 \'make bzImage && make modules && make modules_install\' 과 같이 모든 명령을 한꺼번에 입력할 수도 있습니다. \r\n\r\n컴파일이 시작되면 컴파일 결과를 모두 출력하는 것과 달리 요약된 내용만 보여줌으로서 기본 컴파일 과정이 커널 2.4 보다 훨씬 빨라진 것을 눈치챌 수 있을 겁니다. \r\n\r\n6 단계: 커널 설치하기 \r\n커널을 컴파일 하였으면 이제 적당한 장소에 복사해야 합니다. 예를 들어 x86 시스템에서는 \'arch/i386/boot/\' 디렉토리에서 컴파일된 커널 이미지(bzImage)를 찾을 수 있습니다. 이 파일과 새로운 System.map 파일을 \'/boot\' 디렉토리로 복사합니다. 예를 들면: \r\n\r\n# pwd \r\n/usr/src/linux-2.6.0-test4 \r\n# mv arch/i386/boot/bzImage /boot/bzImage-2.6.0-test4 \r\n# mv System.map /boot/System.map-2.6.0-test4 \r\n# cd /boot \r\n# rm System.map \r\n# ln -s System.map-2.6.0-test4 System.map \r\n\r\n제 커널 2.6 은 같은 버전의 gcc로 컴파일한 커널 2.4 보다 조금 큰 것을 알 수 있습니다. 그렇지만 좀 더 많은 옵션이 활성화 되어 있을 수도 있습니다: \r\n\r\n-rw-r--r-- 1 root root 1094390 Aug 12 20:30 bzImage-2.4.21-ck3 \r\n-rw-r--r-- 1 root root 1639129 Aug 27 22:06 bzImage-2.6.0-test4 \r\n\r\n새 커널을 적당한 장소에 복사하였다면 이제 부트로더를 설정할 차례입니다. 여러분은 아마도 grub [설명서] 이나 lilo [설명서] 를 사용하고 계실 것입니다. 부트로더가 어떻게 작동되는지 잘 모르시는 분들은 해당 문서를 참고하십시요. \r\n\r\n7 단계: 아직 늦지 않았습니다... \r\n여러분에게 겁을 주는 것은 아니지만 지금까지 여러분은 하드디스크에 악영향을 미치는 아무 일도 하지 않았습니다. 하지만 다음 단계는 새로운 커널로 부팅하는 작업과 연관되어 있어 마지막으로 한번더 여러분의 하드디스크에 저장되어 있는 중요한 데이터를 백업 받았는 지 확인할 것을 적극 권장합니다. \r\n\r\n8 단계: 새로운 커널 시도하기 \r\n이제 여러분이 기다려오던 시간입니다. 컴퓨터를 재부팅하고 새로 컴파일한 커널을 시도할 시간입니다. 모든 작업을 정상적으로 마쳤다면 여러분은 친근한 커널 부트 메세지와 로그인을 요청하는 프롬프트를 보실 수 있을 것입니다. (initstate=3 으로 부팅한다면 새로운 커널임을 바로 눈치챌것입니다.) \r\n\r\n처음으로 ALSA 를 설치하였다면 \'cat /proc/asound/cards\' 명령으로 사운드 카드 드라이버가 제대로 적재되었는지 확인하실 수 있습니다. 예를 들면: \r\n\r\n$ cat /proc/asound/cards \r\n0 [Live ]: EMU10K1 - Sound Blaster Live! \r\nSound Blaster Live! (rev.5) at 0x18e0, irq 11 \r\n위와 같은 결과물을 볼 수 있지만 사운드카드가 아직 작동하지않는다면 \'alsamixer\' 를 실행하여 사운드카드를 조정하십시요. 저는 처음에 \'Master\' 를 조정하는 것만으로 부족하여 어찌할 바를 몰랐습니다. \'PCM\' (/dev/dsp) 역시 조절해줘야 했습니다. \r\n\r\n\r\n새로운 커널을 시도해본 후 이곳에 여러분의 의견을 남겨주시면 기쁠 것입니다. 어떻게 위의 과정을 좀더 유용하게 할지에 대한 의견을 받습니다. \r\n\r\n새로운 커널에 어떤한 문제가 발생한다면 다시 한번 커널 소스 패키지에 포함되어 있는 최상위 디렉토리에 있는 \'README\'의 유용한 항목 \"뭔가 잘못되었다면(IF SOMETHING GOES WRONG)\"을 참고하십시요. 부가적으로 필요에 따라 최상위 디렉토리에 있는 \"버그 보고하기(REPORTING-BUGS)\"를 참고하십시요. 트래픽이 높은 리눅스 커널 메일링 리스트에 문제를 보고하기 이전에 이곳이나 이곳등... 많은 온라인 리눅스 커널 메일링 리스트 아카이브에 이미 다른 사람들이 같은 문제를 보고 하였는지 혹은 벌써 문제가 해결되었는지 검색하십시요. 마지막으로 커널트랩(KernelTrap)의 2.6 커널 포럼에서도 도움을 받으실 수도 있습니다. \r\n\r\n추가정보(팁/FAQ): \r\n독자들의 많은 의견과 이메일로 두서없는 그렇지만 유용한 팁들을 이 문서 끝에 덧붙일 수 있었습니다. 추가적인 팁이 있다면 제게 이메일을 보내주십시요. (의견을 보냈지만 아직 답을 받지 못한 독자들은 조금만 참아주십시요.) \r\n\r\n저는 이미 커널 2.6.x 를 사용하고 있습니다. 어떻게 다음 버전으로 쉽게 업그레이드 할 수 있을까요? \r\n: 이곳에 설명되어 있습니다. \r\n\r\n리눅스 커널 컴파일에 GCC 3.x 를 사용할 수 있습니까? \r\n: 개인적으로 현재 GCC 3.2 을 이용하여 커널 2.6.0-test4 를 컴파일 하고 사용중입니다. 저는 아무런 문제 없이 사용하고 있습니다. 일반적인 여론은 대부분 상황에서 사용할 수 있다고 합니다. 하지만 어떤 컴파일 문제가 발생한다면 GCC 2.95.3 을 사용할 것을 추천합니다. \r\n\r\n어디서 ALSA (Advanced Linux Sound Architecture) 에 대해 좀더 배울 수 있습니까? \r\n: http://www.alsa-project.org/ 에서 ALSA 에 대한 풍부한 자료를 얻을 수 있습니다. \r\n\r\n커널 2.6 과 NVidia 드라이버를 사용할 수 있습니까? \r\n: 커널 2.6 과 NVidia 드라이버 사용은 http://www.minion.de/ 에서 찾으실 수 있습니다. \r\n\r\n어떻게 Reiser4 파일 시스템을 설치하고 사용할 수 있습니까?? \r\n: Reiser4 파일시스템 제작사 namesys 에서 간단한 \'시작하기(getting started)\' 문서를 찾으 실 수 있습니다. \r\n\r\n레드햇9 사용자를 위한 특별한 팁이 있습니까? \r\n: 레드햇9 사용자들은 운이 좋습니다. 이곳과 이곳에서 레드햇9 를 커널 2.6 으로 업그레이드 할때 발생할 수 있는 특별한 문제에 대해 다룬 문서들을 독자들이 알려주었습니다. \r\n\r\n데비안 사용자를 위한 특별한 팁이 있습니까? \r\n: 커널 2.4 컴파일에 대해 다루고 있지만 많은 독자들이 linmagau.org에 의해 작성된 문서에 대해 알려주었습니다. 현 시점 커널 2.6.0-test2 (이곳) 데비안 패지키가 있습니다. 추가: \"데비안 우디 시스템은 모듈 문제가 있습니다. 하지만 데비안 시드(Sid) (그리고 사지(Sarge))를 사용중인 사용자는 \'apt-get install module-init-tools\' 명령으로 해결할 수 있습니다. 대부분 배포판이 같은 기능을 사용하고 있지만 데비안 역시 부팅시 새로운 module-init-tools 를 사용할 것인지 아니면 구버전 modutils 를 사용할 것인지 구별할 수 있습니다.\" \r\n\r\n왜 문제에 대해 경고하지 않았습니까? \r\n: 사실 커널 2.6.0-test4 로 업그레이드 할때 어떠한 문제도 발생하지 않았습니다. 하지만 많은 문제와 해결책들을 배워감에 따라 이곳에 게재하도록 하겠습니다.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:36:49',0,'2019-03-23 23:36:49','192.168.219.102','','','','','','','','','','','',''),(9,-9,'',9,0,0,'','','','[Linux] 커널2.6 컴파일 한줄에 끝내기...','1. make menuconfig -> make install \r\n\r\n2. make modules -> make modules_install \r\n\r\n3. cd /lib/modules -> mkinitrd /boot/initrd-2.6.0-test8.img  2.6.0-test8','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:37:02',0,'2019-03-23 23:37:02','192.168.219.102','','','','','','','','','','','',''),(10,-10,'',10,0,0,'','','','[Linux] BTTV(bt878) S-Video(input 2) 칼라 제대로 나오게 하기...','커널 소스 수정 (커널 2.6.7 기준) -> 재 컴파일... \r\n/usr/src/linux/drivers/media/video/bttv-driver.c \r\n\r\n    865    if (input == btv->svhs)  { \r\n    866 //    btor(BT848_CONTROL_COMP, BT848_E_CONTROL); //주석 \r\n    867 //    btor(BT848_CONTROL_COMP, BT848_O_CONTROL); //주석 \r\n    868      btand(~BT848_CONTROL_COMP, BT848_E_CONTROL); //아래복사 \r\n    869      btand(~BT848_CONTROL_COMP, BT848_O_CONTROL); //아래복사 \r\n    870    } else { \r\n    871      btand(~BT848_CONTROL_COMP, BT848_E_CONTROL); \r\n    872      btand(~BT848_CONTROL_COMP, BT848_O_CONTROL); \r\n    873    }','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:37:16',0,'2019-03-23 23:37:16','192.168.219.102','','','','','','','','','','','',''),(11,-11,'',11,0,0,'','','','[Linux] iptables 사용하기','iptables는 상당히 자세한 메뉴얼 페이지(man iptables)를 가지고 있다. ipchains 에 익숙하다면 <@@ref>Appendix-Aipchains와 iptables의 다른점을 보아라. 이 둘은 매우 비슷하다. \r\n\r\n\r\niptables로 할수 있는 일에는 몇가지 다른것이 있다. 첫번째 작동은 전체 체인을 조절한다. 처음 시작은 세개의 미리 만들어진 체인으로 시작하는 데 이것은 제거될 수 없다. \r\n\r\n\r\n새로운 체인 만들기 (-N). \r\n비어있는 체인을 제거하기 (-X). \r\n미리 만들어진 체인의 정책을 바꾸기 (-P) \r\n어떤 체인의 규칙들을 나열하기 (-L) \r\n체인으로부터 규칙들을 지우기 (-F) \r\n체인내의 모든 규칙들의 패킷과 바이트의 카운드를 0 으로 만들기 (-Z) \r\n체인 내부의 규칙을 조작하는 몇가지 방법이 있다. \r\n\r\n\r\n체인에 새로운 규칙을 추가하기 (-A) \r\n체인의 어떤 지점에 규칙을 삽입하기 (-I) \r\n체인의 어떤 지점의 규칙을 교환하기 (-R) \r\n체인의 어떤 지점의 규칙을 제거하기 (-D) \r\n체인에서 일치하는 첫번째 규칙을 제거하기 (-D) \r\n  \r\n\r\n\r\n7.1 컴퓨터가 부팅될때 여러분이 보게 되는 것 \r\niptables는 모듈로 되어있을 것이다. 이것은 iptable_filter.o 이다. 이것은 처음으로 iptables를 실행할때 자동으로 로드될 것이다. 이것느 커널에 영구히 포함될 수도 있다. \r\n\r\n\r\niptables 명령이 실행되기 전에는 기본적으로 만들어져있는 체인(입력, 포워딩, 출력)에는 아무른 규칙도 없다. (주의 : 어떤 배포판에는 초기화 스크깁트에 iptables를 실행하는 것이 들어있을 수 있다.) 입력과 출력 체인의 정책은 ACCEPT이고 포워딩 체인의 정책은 DROP이다. (iptable_filter 모듈에 \'forward=1\' 옵션을 선택하여 이것을 고칠 수 있다.) \r\n\r\n\r\n7.2 하나의 규칙으로 작동하기 \r\n이것은 패킷 필터링의 약방의 감초이다. 일반적으로 추가와 제거 명령을 사용할 것이다. 다른것은 이런 개념의 단순한 확장이다. \r\n\r\n\r\n각 규칙은 패킷이 일치되어야할 상태를 설정하고, 일치되었을때 무었을 할 것인가 (\'target\')를 나타낸다. 예를들어, 여러분은 127.0.0.1로부터의 모든 ICMP 패킷을 DROP하려고 할 것이다. 그렇다면, 이경우 일치되어야할 상태는 \'ICMP이면서 그 출처 가 127.0.0.1\' 이다. 이 경우 \'target\' 은 DROP 이다. \r\n\r\n\r\n127.0.0.1 은 \'loopback\' 인터페이서 이고 실제적인 네트워크 접속이 전혀 없더라도 이것은 가지고 있을 것이다. 이러한 패킷은 \'ping\' 프로그램을 이용하여 생성할 수 있다. (이것은 단순히 ICMP type 8 (반응요구)을 보내고 모든 협조적인 호스트는 친절하게 ICMP type 0 (반응요구에 대한 응답)을 대답한다. 이것은 테스트하는데 유용 하다. \r\n\r\n여기서 첫번째 ping 이 성공한 결과를 볼 수 있다. (\'-c 1\'은 하나의 패킷만 보내도록 ping에게 말하는 것이다.) \r\n\r\n\r\n# ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes \r\n64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms \r\n--- 127.0.0.1 ping statistics --- \r\n1 packets transmitted, 1 packets received, 0% packet loss \r\nround-trip min/avg/max = 0.2/0.2/0.2 ms \r\n\r\n\r\n# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP \r\n# ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes \r\n--- 127.0.0.1 ping statistics --- \r\n1 packets transmitted, 0 packets received, 100% packet loss # \r\n\r\n\r\n\r\n그리고, \'입력\' 체인에 127.0.0.1에서 오는 패킷(\'-s 127.0.0.1\')으로 ICMP 프로토콜인것 (\'-p icmp\')은 DROP (\'-j DROP\')하라는 규칙을 추가(-A)하였다. \r\n\r\n\r\n그리고는 다시 ping으로 규칙을 테스트하였다. ping이 오지않은 응답을 기다 리지 못하고 응답받기를 포기하기까지 약간의 시간이 걸릴것이다. \r\n\r\n\r\n규칙을 제거하는데는 두가지 방법이 있다. 첫째, 입력체인에는 단 하나의 규칙 만이 있다는 것을 앎으로, 몇번을 지워라는 방식으로 할 수 있다. \r\n\r\n # iptables -D INPUT 1 # \r\n입력 체인으로부터 1번 규칙을 제거한다. \r\n\r\n\r\n두번째 방법은 -A 명령을 이용한 이전의 명령에서 -A를 -D로 다꿔주면 된다. 이것은 복잡한 규칙을 가지고 있고 각 규칙이 몇번째 규칙인지를 외우고 다니기를 싫어 한다면, 아주 유용한 방법이다. \r\n\r\n # iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP # \r\n-D 명령은 -A 명령과 똑 같은 문법이다. (-I 나 -R 도 마찬가지이다.) 만약, 여러개의 똑 같은 규칙들이 같은 체인에 있다면, 첫번째 것만 제거 될 것이다. \r\n\r\n\r\n7.3 필터링 지정 \r\n앞에서 프로토콜을 지정하기위하여 \'-p\'를 이용하였고, 출처를 지정하기 위하여 \'-s\'를 이용하였다. 그 외에도 패킷의 특징을 지정하는데 사용되 는 다른 옵션들이 있다. 아래는 이것들에 대한 완벽한 개요이다. \r\n\r\n\r\n출처와 목적지 지정 \r\n출처(\'-s\', \'--source\', \'--src\')와 목적지(\'-d\', \'--destination\', \'--dst\') IP 주소를 지정하는데 4가지 방법이 있다. 가장 보편적인 방법은 \'www.linuxhq.com\', \'localhost\' 처럼 이름을 이용하는 것이다. 두번째 방법은 \'127.0.0.1\' 처럼 IP 주소를 이용하는 것이다. \r\n\r\n\r\n세번째와 네번째 방법은 IP 주소의 그룹을 지정하는 것으로 \'199.95.207.0/24\' 또는 \'199.95.207.0/255.255.255.0\' 같은 형태이다. 이 둘은 모두 199.95.207.0 부터 199.95.207.255 사이의 모든 IP 주소를 지정한다. \'/\' 다음의 숫자는 IP 주소의 어떤 부분이 의미있는가를 나타낸다. \'/32\' 나 \'/255.255.255.255\' 가 기본값이다.(IP 주소의 모든부분이 일치해야 한다.) 모든 IP 주소를 지정하는데 \'/0\' 가 사용된다. \r\n\r\n # iptables -A INPUT -s 0/0 -j DROP # \r\n이것은 \'-s\' 옵션을 이용하지 않은것과 같은 효과를 나타내므로 잘 사용되지 않는다. \r\n\r\n\r\n\'역\'의 경우 지정 \r\n많은 지시자들(\'-s\'나 \'-d\' 같은)은 일치하지 않는 주소를 나타내기 위하여 \'!\'(\'not\'을 의미한다)로 시작하는 설정을 할 수 있다. 예로, \'-s ! localhost\' 는 localhost로부터오는 패킷이 아닌경우를 나타낸다. \r\n\r\n\r\n프로토콜 지정 \r\n프로토콜은 \'-p\' 지시자로 지정할 수 있다. 프로토콜을 숫자가 될수 있고 (IP의 프로토콜 번호를 알고 있다면) \'TCP\', \'UDP\', \'ICMP\' 같은 이름이 될 수도 있다. 그리고 \'tcp\'는 \'TCP\'와 같은 역할을 한다. \r\n\r\n\r\n프로토콜 이름 지정에도 \'!\'을 이용할 수 있다. \'-p ! TCP\' \r\n\r\n\r\n인터페이서 지정 \r\n\'-i\'(\'--in-interface\')와 \'-o\'(\'--out-interface\')가 인터페이서를 저정 하는데 사용된다. 인터페이서는 패킷이 들어오고 나가는 물리적인 도구이다. ifconfig 명령을 사용하여 현재 활성화 되어있는 인터페이서를 알아볼수 있다. \r\n\r\n입력 체인을 지나는 패킷은 출력 인터페이서를 가지고 있지 않으므로 \'-o\' 설정에 일치하는 패킷이 없을 것이고 출력 체인을 지나는 패킷은 입력 인터 페이서를 가지고 있지 않으므로 \'-i\' 설정에 일치하는 패킷이 없을 것이다. \r\n\r\n\r\n포워딩 체인을 지나는 패킷만이 입력과 출력 인터페이서를 모두 가질것이다. \r\n\r\n\r\n현재 존재하지 않는 인터페이서를 지정하는 것도 아무런 문제없이 될 수 있 다. 이것은 인터페이서가 활성화 되기 전까지는 규칙에 일치하는 패킷이 있을수 없을 것이다. 이것은 dial-up PPP를 사용하는 경우 특히 유용하다. \r\n\r\n\r\n특별한 경우로, 인터페이서 이름이 \'+\'로 끝날수 있는데 이것은 그 이름으로 시작하는 모든 인터페이서를 모두 지정한다(그것이 현재 존재하든 존재하지 않든). 예를들어, 모든 PPP 인터페이서와 일치하는 규칙을 지정하려면 -i ppp+와같이 하면 된다. \r\n\r\n\r\n인터페이서 이름앞에 \'!\'도 이용할 수 있다. \r\n\r\n\r\n분절 (Fragments) 지정 \r\n가끔 패킷은 한번에 다 전달되기에는 너무 큰 경우가 있다. 이런경우 패킷은 여러 분절로 나뉘어지고 다중패킷의 형태로 전달된다. 목적지에서 이 분절들 은 재 구성되어 전체 패킷이 된다. \r\n\r\n\r\n분절에서 문제점은 내부 패킷의 부분으로 IP 헤더 다음의 위치에서 프로토콜 헤더를 찾는데, 이것은 첫번째 분절에만 있기 때문에 찾을수가 없다. \r\n\r\n\r\n만약 여러분이 접속추적이나 NAT를 한다면 모든 분절은 필터링 코드에 도달하 기 전에 뭉쳐지므로 분절에 대한 걱정은 할 필요가 없다. \r\n\r\n\r\n그렇지 않다면, 분절들이 필터링 규칙에서 어떻게 처리되는가를 이해하는 것 은 중요하다. 우리가 가지고있지 않은 정보를 요구하는 필터링 규칙에 부합될 수가 없다. 이것은 첫번째 패킷은 다른 패킷과 같이 처리되고 두번째 이후의 분절은 전달될 수 없음을 의미한다. 그러므로 -p TCP --sport www (\'www\' 를 출신 포트로 지정하는 경우)와 같은 규칙에 맞는 분절은 있을 수 없다( 첫번째 분절을 제외하고). 그 반대의 규칙인 -p TCP --sport ! www도 분 절들을 처리할 수 없다. \r\n\r\n\r\n그러나, 두번째 이상의 분절에 대하여 규칙을 지정하기위하여 \'-f\' (\'--fragment\')라는 지시자를 사용할 수 있다. 두번째 이상의 분절에는 적용 되지않는 규칙을 지정하기 위하여 \'-f\' 앞에 \'!\' 를 붙이는 것도 가능하다. \r\n\r\n\r\n일반적으로 , 첫번째 분절에 필터링이 적용되어 DROP 되면 목적지 에서 다른 분절들의 재합성이 되지 않으므로, 두번째 이상의 분절이 그냥 지나가도록하는 것도 안전한 것으로 간주 된다. 그러나 단순히 분절들을 전달하는 것만으로 호스트를 크래쉬가 생기는 버그가 알려져 있다. 여러분이 결정할 일이다. \r\n\r\n\r\n네트워크 헤더에 대한 주의 : 잘못 구성된 패킷들은 이러한 시험을 할때 DROP 되었다. (TCP, UDP, ICMP 패킷중 길이가 너무 짧아 파이어월 코드가 포트나 ICMP 코드와 형태를 읽을 수 없는 경우). 왜냐하면 TCP 분절은 8번째 위치부터 시작되기 때문이다. \r\n\r\n\r\n예로, 다음과 같은 규칙은 192.168.1.1 로 향하는 분절을 DROP 시킨다. \r\n\r\n\r\n# iptables -A OUTPUT -f -d 192.168.1.1 -j DROP # \r\n\r\niptables 의 확장 : 새로운 대상(Matches) \r\niptables는 확장 가능하다. 즉 새로운 형태를 제공하기 위하여 iptables와 커널 모두가 확장 가능하다는 의미이다. \r\n\r\n\r\n이중 일부는 표준적이고 다른 것은 이색적이다. 다른사람에 의해서도 확장 은 만들어질 수도 있으며 독립적으로 배포될 수 있다. \r\n\r\n\r\n정상적으로 커널 확장은 커널 모듈 하부 디렉토리에 존재한다. (/lib/modules/2.3.15/net). 이것은 요구에 의하여 적재된다. 그러므로 직 접 이들 모듈을 적재할 필요는 없다. \r\n\r\n\r\niptables의 확장들은 공유라이버러리 형태로 보통 /usr/local/lib/iptables 에 위치한다. 배포판은 이것을 /lib/iptables나 /usr/lib/iptables에 넣으 려 할 것이다. \r\n\r\n\r\n확장은 두가지 형태이다. : 새로운 타겟(target), 새로운 적용(match) 아래에 새로운 타겟에 대하여 이야기 할 것이다. 어떤 프로토콜은 자동으로 새로운 테스트를 제공하는데 현재로는 TCP, UDP, ICMP 에 대해서 아래에 보여 줄 것이다. \r\n\r\n\r\n이것을 위해서 \'-p\' 옵션 뒤에 지정하는데 그러면 확장을 적제할 것이다. 명백히 할려면 \'-m\' 옵션으로 확장을 적재하고 확장 옵션을 사용가능하게 할 수 있다. \r\n\r\n\r\n확장에 대한 도움을 얻으려면, 적제하는 옵션(\'-p\', \'-j\', \'-m\')을 \'-h\'나 \'--help\' 다음에 지정하면 된다. \r\n\r\n\r\nTCP 확장 \r\nTCP 확장은 \'--protocol tcp\' 가 지정되고 다른 적용이 지정되지 않으면 자동으로 적제된다. 이것은 다음과 같은 옵션을 제공한다. \r\n\r\n\r\n\r\n--tcp-flags \r\n\'!\' 옵션을 사용한다면 이것 뒤에 두개의 단어를 사용한다. 첫번째 것은 검사하고자 하는 지시자 리스트의 마스크이다. 두번째 단어는 지시자에게 어떤것이 설정 될 것인지를 말해준다. 예를들어, \r\n\r\n\r\n# iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY \r\n이것은 모든것이 검사되어야 함을 말한다.(\'ALL\'은 `SYN,ACK,FIN,RST,URG,PSH\' 와 같다.) 그러나 SYN 과 ACK 만 설정된다. \'NONE\'는 지시자가 없음 을 말한다. \r\n\r\n\r\n--syn \r\n\'!\' 옵션이 선행될 수 있다. 이것은 \'--tcp-flags SYN,RST,ACK,SYN\'의 약어이다. \r\n\r\n\r\n--source-port \r\n\'!\' 옵션이 선행될 수 있다. 이후에 하나의 TCP 포트나 포트의 범위를 지정한다. /etc/services 에 기록된 것과 같은 포트 이름이 사용될 수 도 있고 숫자로 나타낼 수도 있다. 범위는 두개르 포트 이름을 \'-\' 으 로 연결해서 사용하거나 (커거나 같은경우를 위해서) 하나의 포트 뒤에 \'-\'를 사용하거나 (작거나 같은 경우를 위해서) 하나의 포트 앞에 \'-\' 를 덧붙일 수 있다. \r\n\r\n\r\n--sport \r\n이것은 \'--source-port\'와 동의어이다. \r\n\r\n\r\n--destination-port \r\n와 \r\n\r\n--dport \r\n는 위의 내용과 같으나 목적 지를 지정한다. \r\n\r\n\r\n--tcp-option \r\n\'!\' 나 숫자가 옵션에 선행될 수 있는데 숫자가 앞에 올경우 그 숫자 와 TCP 옵션이 같은 경우의 패킷을 검사한다. TCP 옵션을 검사하려 할 때 완전한 TCP 헤더를 갖지않는 것은 자동으로 DROP 된다. \r\n\r\n\r\nTCP 지시자에대한 설명 \r\n가끔 한쪽 방향에서의 TCP 접속만 허랑하고 다른 방향에서의 접속을 불허하 는 것이 유용하다. 예로, 여러분은 외부 WWW 서버로의 접속은 허락하며 그 서버로 부터의 접속은 불허하기를 원할 것이다. \r\n\r\n\r\n단순하게 그 서버로부터 오는 TCP 패킷을 막으면 된다고 생각할 것이다. 그러 나, 불행히도 작동하기 위해서 TCP 접속은 양방향의 패킷을 요구한다. \r\n\r\n\r\n해법은 접속을 요구하는 패킷만 막는 것이다. 이러한 패킷을 SYN 패킷이라한다. (물론, 기술적으로 SYN 지시자 셋을 갖는 패킷이 있다. 그리고 FIN 과 ACK 지시 자는 지워진다. 그러나 간단히 그것을 SYN 패킷이라고 한다.) 이러한 패킷만 불가능으로 만듬으로서 외부로 부터의 접속 시도를 막을 수 있다. \r\n\r\n\r\n이러한 것을 위해서 \'--syn\' 지시자가 사용된다. : 이것은 프로토콜을 TCP 로 지정했을 때만 효과가 있다. 예를 들면, 192.168.1.1 로부터의 TCP 접속을 지 정하기 위하여 다음과 같이 하면 된다. \r\n\r\n-p TCP -s 192.168.1.1 --syn \r\n\r\n접속을 시작한 것 외의 모든 패킷을 지정하기 위하여 \'!\' 옵션이 선행될 수 있다. \r\n\r\n\r\nUDP 확장 \r\n이 확장은 \'--protocol udp\'가 지정되고 적용이 저정되지 않으면 자동으로 적재된다. 이것은 \'--source-port\', \'--sport\', \'--destination-port\', \'-dport\'를 지원하고 내용은 TCP 설명에서 자세히 나왔다. \r\n\r\n\r\nICMP 확장 \r\n이 확장은 \'--protocol icmp\'가 지정되고 그 적용이 지정되지 않으면 자동으로 적재된다. 이것은 단 하나의 새로운 옵션만 지원한다.: \r\n\r\n\r\n\r\n--icmp-type \r\n\'!\' 옵션이 선행될 수 있다. 이후에 ICMP 타입의 이름(\'host-unreachable\') 이나 숫자형태 (\'3\'), 또는 숫자형태와 코드(\'/\'로 분리 예. \'3/3\') 의 형 태가 사용된다. 사용할 수 있는 ICMP 형태의 이름의 리스트는 \'-p icmp --help\' 하면 나타난다. \r\n\r\n\r\n그외의 적용 확장 \r\nNetfilter 패키지의 다른 확장은 시험적인 확장이다. 이것은 (설치 되어있다면) \'-m\' 옵션으로 활성화 된다. \r\n\r\n\r\nmac \r\n이 모듈은 \'-m mac\' 또는 \'--match mac\' 이라고 함으로 지정할 수 있다. 이것은 들어오는 패킷의 이더넷 주소를 검사한다. 그러므로 입력 체인에 서만 유용하다. 이것은 하나의 옵션만 제공한다. \r\n\r\n\r\n--mac-source \r\n\'!\' 옵션이 선행 될 수 있다. 이후에 콜론으로 분리된 16진수 숫자의 이더넷 주소가 온다. 예 \'--mac-source 00:60:08:91:CC:B7\' \r\n\r\n\r\nlimit \r\n이 모듈은 \'-m limit\' 또는 \'--match limit\'이라고 함으로 지정할 수 있 다. 이것은 로그 메세지를 억제할때 처럼 적용검사의 속도를 제한하는데 사용한다. 1초에 주어진 숫자만큼의 적용만 검사한다. (기본값은 한 시간 에 3번, 최고 5번이다.) 이것은 두개의 옵션을 제공한다. \r\n\r\n\r\n--limit \r\n숫자가 따라온다 : 초당 평균 최대 적용 검사 수를 지정한다. 숫자뒤 에 시간단위를 지어할 수 도 있다. (\'/second\', \'/minute\', \'/hour\', \'/day\'형태이다. 예로, \'5/second\' 또는 \'5/s\'가 가능하다) \r\n\r\n\r\n--limit-burst \r\n숫자가 따라온다. 위의 제한이 적용되기전의 최대 Burst(?) 를 제한 한다. \r\n\r\n이 적용은 종종 로그의 속도를 제한하기위하여 LOG 타겟과 함께 사용된 다. 이것을 이해하기위하여 아래에 기본 제한설정을 하는 로그 패킷제한 을 보자. \r\n\r\n\r\n# iptables -A FORWARD -m limit -j LOG \r\n이 규칙에 도달될때까지 패킷은 로그될 것이다. 사실 Burst의 기본값은 5 이므로 처므ㅇ 5개의 패킷은 로그될것이다. 그 이후 얼마나 많은 패킷이 도달하든 간에 하나의 패킷이 로그되기전에 20분이 걸릴 것이다. 그리고 20분 동안 패킷 적용이 없으면 Burst 하나가 다시 생길 것이다. 패킷없이 100분 이 지나면 Burst는 완전이 원상 복구 될것이다. 처음 시작할때로 돌아가는 것 이다. \r\n\r\n\r\n재복구 시간을 59시간 이상으로는 설정하지 못한다. 그러므로 평균속도를 하 루에 1개로 설정하였다면 Burst 속도는 3 이하가 되어야 한다. \r\n\r\n\r\nowner \r\n이 모듈은 지역에서 생성된 패킷의 생성자의 여러 특징을 적용하려고 한다. 이것은 출력 체인에만 사용되며 어떤 패킷들(ICMP ping 응답같은)은 소유자 가 없으므로 적용되지 않는다. \r\n\r\n\r\n--uid-owner userid \r\n유효한 사용자 id (숫자)의 프로세서가 생성한 패킷에 적용한다. \r\n\r\n--uid-owner groupid \r\n유효한 그룹 id (숫자)의 프로세서가 생성한 패킷에 적용한다. \r\n\r\n--pid-owner processid \r\n주어진 프로세서 id 의 프로세서가 생성한 패킷에 적용한다. \r\n\r\n--sid-owner processid \r\n세션 그룹내의 프로세서가 생성한 패킷에 적용한다. \r\n\r\n\r\nunclean \r\n이 시험적인 모듈은 정확히 \'-m unclean\' 또는 \'--match unclean\'으로 지정해 주어야 한다. 이것은 무작위의 여러 건전성 검사를 한다. 이것은 제대로 검사되지 않았고 안전성 도구로도 사용되지 못한다.(아마도 이것 은 무제를 더욱 힘들게 하고 버그 그 자체일 것이다.) 이것은 옵션이 없다. \r\n\r\n\r\n상태 적용 \r\n가장 유용한 적용 기준은 \'ip_conntrack\' 모듈의 접속 추적 분석을 해석하는 \'state\' 확장이다. 이것을 강력히 추천한다. \r\n\r\n\r\n\'-m state\'를 지정함으로 \'--state\' 옵션을 사용할 수 있는데 이후에 콤마로 분리되는 적용할 상태들의 리스트가 온다.(\'!\' 지시자는 사용되어지지 않는 다.) 이 상태들은 ; \r\n\r\n\r\nNEW \r\n새로운 접속을 만드는 패킷 \r\n\r\n\r\nESTABLISHED \r\n존재하는 접속에 속하는 패킷 (즉, 응답 패킷을 가졌던 것) \r\n\r\n\r\nRELATED \r\n기존의 접속의 부분은 아니지만 연관성을 가진 패킷으로 . ICMP 에러 나 (FTP 모듈이 삽입 되어있으면) ftp 데이터 접속을 형성하는 패킷. \r\n\r\n\r\nINVALID \r\n어떤 이유로 확인할 수 없는 패킷: 알려진 접속과 부합하지 않는 ICMP 에러와 \'out of memory\' 등을 포함한다. 보통 이런 패킷은 DROP 된다. \r\n\r\n\r\n7.4 타겟 지정 \r\n이제 패킷에서 어떤 검사를 할 수 있는지를 알았다. 이제 우리의 검사에 일치 하는 패킷을 어떻게 할 것인지를 말하는 것을 알아야 한다. 이것을 규칙 타겟 이라고 한다. \r\n\r\n\r\n두개의 이미 만들어진 단순한 타겟이 있다. : DROP 과 ACCEPT. 이미 이것에 대해서는 이야기를 한 적이 있다. 적용이 되는 패킷과 그것의 타겟이 위의 두 개중 하나라면 더이상의 참고할 규칙은 없다. : 패킷의 운명은 결정 되는 것 이다. \r\n\r\n\r\n이미 만들어진 두개의 타겟외에 두가지 형태의 타겟이 있다.: 확장과 사용자 지정의 체인들 이다. \r\n\r\n\r\n사용자 지정의 체인들 \r\nipchains로 부터 상속되는 iptables의 강력한 기능중의 하나는 능력되는 사용 자가 기존의 세개의 체인(입력, 출력, 포워드)외에 새로운 체인을 생성할 수 있다는 것이다. 모임의 결과 사용자 지정의 체인은 그것을 구분하기 위하여 소문 자로 나타낸다. (아래 전체 체인에 대한 작용 부분에서 어떻게 사용자 지정의 새로운 체인을 만드는지 기술할 것이다.) \r\n\r\n\r\n타겟이 사용자 지정의 체인인 규칙에 패킷이 맞으면 패킷은 사용자 지정의 체인을 따라 움직이게 된다. 그 체인이 패킷의 운명을 결정하지 못하면 그리고 그 체인에 따른 이송이 끝나면, 패킷은 현제 체인의 다음 규칙으로 돌아온다. \r\n\r\n\r\n그림을 보자. 두개의 체인이 있고 그것이 \'INPUT\'과 \'test\'라는 사용자 지정의 체인이 라고 가정하자.  \r\n\r\n\r\n`INPUT\'                      `test\' \r\n---------------------------- ---------------------------- \r\n| Rule1: -p ICMP -j DROP 1 | | Rule1: -s 192.168.1.1  3 | \r\n|--------------------------| |--------------------------| \r\n| Rule2: -p TCP -j test  2 | | Rule2: -d 192.168.1.1  4 | \r\n|--------------------------| ---------------------------- \r\n| Rule3: -p UDP -j DROP  5 | \r\n----------------------------  \r\n\r\n  \r\n\r\n192.168.1.1 로부터 와서 1.2.3.4 로 향하는 TCP 패킷이 있다고 가정한다. 이것은 입력 체인으로 들어온다. Rule1 을 검사한다. 맞지 않음. Rule2 맞음. 그것의 타겟 은 테스트, 고로 다음 검사할 규칙은 테스트의 시작이다. 테스트의 Rule1 이 맞다. 그러나 이것이 타겟을 지정하지 않는다. 그러므로 다음 규칙이 검사된다. Rule 2. 맞지 않다. 그 체인의 끝에 도달했다. 다시 입력 체인으로 돌아가서 Rule3 을 검사 한다. 그것도 맞지 않다. \r\n\r\n\r\n\r\n사용자 지정의 체인에서 대를 사용자 지정의 체인으로 갈수 있다. (그러나 루프 를 돌수는 없다. 루프를 발견하게 되면 패킷은 DROP 된다.) \r\n\r\n\r\niptables로의 확장 : 새로운 타겟 \r\n타겟의 다른 형태는 확장이다. 타겟 확장은 커널 모듈로 구성된다. 그리고 iptables 에 대한 선택적 확장은 새로운 명령행의 옵션을 제공한다. 기본적으로 넷필터 배포에 포함된 몇몇의 확장은 다음과 같다. \r\n\r\n\r\nLOG \r\n일치하는 패킷의 커널 로그를 제공한다. 이것은 부가의 옵션을 제공한다. \r\n\r\n--log-level \r\n레벨 숫자나 이름이 따라온다. 유효한 이름은 (상황에 따라 다르다) \'debug\' \'info\', \'notice\', \'warning\', \'err\', \'crit\', \'alert\', \'emerg\' 이고 이것 은 각각 숫자 7 에서 0 에 대응한다. 이런 레벨에 대한 설명은 syslog.conf 의 man 페이지를 보라. \r\n\r\n\r\n--log-prefix \r\n14자 까지의 문장이 따라온다. 이 메세지는 로그 메세지의 시작부분으로 보내져서 확인에 사용될 수 있다. \r\n\r\n이 모듈은 \'limit\' 타겟 다음에 사용하면 가장 효과적이다. 그래서 로그가 넘 지나지 않도록 할 수 있다. \r\n\r\n\r\nREJECT \r\n이 모듈은 \'DROP\'과 같은 효과를 나타낸다. 다만, \'port unreachable\' 이라는 에러 메세지를 ICMP 로 보낸다. 주의할 것은 ICMP 에러 메세지는 다음의 경우 보내 지지 않는다 ( RFC 1122 를 보라) : \r\n\r\n\r\n검사된 패킷이 ICMP 에러메세지이거나나 알수 없는 ICMP 형태인 경우 \r\n검사된 패킷이 헤더가 없는 분절인 경우 \r\n너무 많은 ICMP 에러 메세지를 그 목적지로 보낸 경우. \r\nREJECT 는 \'--reject-with\'라는 옵션을 가지는데 이것은 사용할 응답 패킷을 변경한다. 자세한 것은 메뉴얼 페이지를 보라. \r\n\r\n\r\n특별한 미리 만들어진 타겟 \r\n두개의 미리 만들어진 타겟이 있다 : RETURN, QUEUE \r\n\r\n\r\nRETURN은 한 체인의 끝으로 보내지는 것과 같은 효과가 있다. : 미리 만들어진 체 인의 경우 그 체인의 정책은 실행이다. 사용자 정의 체인의 경우 이 체인으로 점프 하는 규칙의 바로 다음인 이전 체인으로 이동한다. \r\n\r\n\r\nQUEUE은 특별한 타겟으로, 사용자공간의 작업을 위해 패킷을 대기하도록 한다. 패킷 을 위해서 대기하고있는 것이 없다면(즉, 이 패킷을 다룰 프로그램이 아직 씌어져 있지 않다면) 패킷은 DROP 될 것이다. \r\n\r\n\r\n7.5 전체 체인에 대한 작용. \r\niptables의 유용한 기능주 하나는 여러 관계가 있는 규칙을 하나의 체인속으로 그룹화 하는 것이다. 체인의 이름은 어떤 것을 사용할 수도 있으나 미리 만들어 진 체인과의 혼동을 막기 위하여 소문자를 사용하기를 권한다. 체인의 이름은 16 자 까지 가능하다. \r\n\r\n\r\n새오룬 체인 생성 \r\n새로운 체인을 만들어 보자. 나는 매우 상상력이 좋은 사람이므로 이것을 테스트 라고 부르기로 하겠다. \'-N\' 또는 \'--new-chain\' 옵션을 사용한다. \r\n\r\n\r\n# iptables -N test # \r\n\r\n단순하다. 이제 이 체인에 상세한 규칙을 적용할 수 있다. \r\n\r\n\r\n체인 제거 \r\n체인을 제거하는 것도 단순하ㄷ. \'-X\' 나 \'--delete-chain\' 을 사용한다. \r\n\r\n\r\n# iptables -X test # \r\n\r\n체인을 제거 하는데는 몇가지 제한이 있다. 이것은 비어있어야 한다. (아래의 체인 비우기를 보라) 그리고 그것은 다른 어떤 규칙의 타겟도 아니어야 한다. 미리 만들어진 세개의 체인은 제거할 수 없다. \r\n\r\n\r\n체인의 이름을 지정하지 않으면 모든 사용자 정의의 체인은 제거된다. \r\n\r\n\r\n체인 비우기 \r\n하나의 체인의 모든 규칙을 비우는 간단한 방법이 있으니, \'-F\' (\'--flush\') 명령이다. \r\n\r\n\r\n # iptables -F forward # \r\n\r\n체인을 지정하지 않으면 모든 체인의 규칙이 지워진다. \r\n\r\n\r\n체인 규칙 나열하기 \r\n한 체인의 모든 규칙은 \'-L\' 명령으로 나열할 수 있다. \r\n\r\n\r\n각 사용자 정의의 체인을 나열했던 \'refcnt\' 는 그 체인을 그들의 타겟으로하 는 규칙들의 번호이다. 체인이 제거되기 위해서는 이것이 \'0\' 으로 되어야 한다. (그리고 그 체인은 비어야 한다) \r\n\r\n\r\n체인의 이름이 생략되면 비어있는 것을 포함한 모든 체인이 나열된다. \r\n\r\n\r\n\'-L\' 명령에 따르는 옵션은 세개가 있다. \'-n\' (numeric) 옵션은 iptables가 여러분이 DNS 요구를 필터링 아웃한 경우나 DNS가 적절이 설정되어 있지 않다면 오랜 시간이 걸리는, IP 주소를 찾는 것을 예방하는 아주 유용한 옵션이다. 이것 은 TCP와 UDP 포트가 이름이 아닌 숫자로 출력되도록 하기도 한다. \r\n\r\n\r\n\'-v\' 옵션은 규칙의 자세한 정보(패킷과 바이트 카운터, TOS 비교, 인터페이서와 같은)를 나타낸다. \r\n\r\n\r\n패킷과 바이트 카운트는 \'K\'(1000), \'M\'(1,000,000), \'G\'(1,000,000,000) 와 같은 접미어와 함께 나타난다. \'-x\' (확장 수) 지시자를 사용하면 얼마나 큰 숫자든 전 체 숫자가 나타난다. \r\n\r\n\r\n카운트 리셋트 (\'0\'으로 만들기) \r\n이것은 카운트를 리셋하는데 유용하다. 이것은 \'-Z\' (\'--zero\') 옵션으로 가능하다. \r\n\r\n\r\n이것의 문제점은 리셋하기 직전의 카운트 값을 알필요가 있을 때가 가끔 있다는 것 이다. 이러한 경우의 예로, 어떤 패킷이 \'-L\' 과 \'-Z\' 명령 사이에 지나갈 수 있다. 이런이유로 카운트를 읽는 것과 동시에 리셋하기위해서 \'-L\' 과 \'-Z\' 명령을 같이 사용할 수 있다. \r\n\r\n\r\n정책 설정 \r\n우리가 이전 체인을 패킷이 어떻게 지나가는가를 의논할 때, 미리 만들어진 체인의 끝에 패킷이 다다렀을때 무슨 일이 일어날 것인가를 설명하였다. 이 경우 체인의 정책이 그 패킷의 운명을 결정한다. 미리 만들어진 체인(입력, 출력, 포워드)만이 정책을 가지는데, 이것은 사용자 정의의 체인의 끝에 다다른 패킷의 이동은 이전 체인에서 요약되어지기 때문이다. \r\n\r\n\r\n정책은 ACCEPT 또는 DROP 이 될수 있다.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:37:35',0,'2019-03-23 23:37:35','192.168.219.102','','','','','','','','','','','',''),(12,-12,'',12,0,0,'','','','[Linux] vim 에서 ^M 없애기',':1,$s/^M//g \r\n\r\n근데 ^M 은 ^ 하고 M 을 치는 것이 아니고 \r\n컨트롤V -컨트롤 M 을 연달아 치면된다.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:37:54',0,'2019-03-23 23:37:54','192.168.219.102','','','','','','','','','','','',''),(13,-13,'',13,0,0,'','','','[html] iframe 대신 사용하는 object 태크...','<object id=\"miniwini\" width=\"650\" height=\"400\" type=\"text/x-scriptlet\"> \r\n<param name=\"url\" value=http://news.naver.com> \r\n<param name=\"selectablecontent\" value=\"0\"> \r\n<param name=scrollbar value=\"1\"> \r\n</object>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:38:15',0,'2019-03-23 23:38:15','192.168.219.102','','','','','','','','','','','',''),(14,-14,'',14,0,0,'','','','[Linux] vim 에서 컬럼수 조절하기...','두 줄을 한 줄로 합치기 \r\n두 줄을 한 줄로 합치기 위해서는 대문자 J 명령키를 사용한다. 반대로, 한 줄을 두 줄로 나눌 때는 r 키와 엔터 키의 조합을 쓰면 편리하다. r 명령키는 커서가 위치한 곳의 문자 하나를 치환(replace) 하고 명령어 모드로 복귀한다. 여기서 잠깐 유닉스의 파이프를 이용한 팁 하나를 알아보자. vi에서는 이렇게 J 키로 두 줄을 합치다 보면 문단의 오른쪽이 들쑥날쑥해지는 것이 그다지 보기 좋지 않은 경우가 많다. \r\n\r\n이럴 때 유닉스의 파이프(pipe) 기능을 이용해서 문단 정렬을 해볼 수 있다. 유닉스에는 기본으로 fmt 명령이 제공된다. fmt는 문단을 72컬럼 근처에서 다듬어주는 역할을 한다. 보통 다음과 같은 방식으로 쓰면 document.txt의 문단을 예쁘게 정렬해서 출력해 주는 아주 간단한 유틸리티이다. \r\n\r\n\r\n$ cat document.txt | fmt \r\n\r\n\r\n이것을 vi에서 사용해 보자. vi에서는 ‘!’ 키를 누르면 필터(filter)가 동작한다. ! 키를 누르고 처리할 텍스트 범위를 선택한 다음 외부 명령어 이름을 적어준 뒤 엔터를 누르면 그 외부 명령어가 처리한 텍스트 결과물이 다시 vi 편집 화면에 돌아오는 것이다. 이제 한 문단 정렬을 외부 명령어 fmt를 이용해 보자. 방법은 다음과 같다. \r\n\r\n\r\n[1] 줄이 들쑥날쑥한 문단에 커서를 위치시킨다. \r\n[2] ! 키를 누른다. \r\n[3] } 키를 눌러 커서가 위치한 문단 끝까지 선택한다. \r\n[4] 외부 명령어인 fmt를 타이핑한 뒤 엔터 키를 친다. \r\n\r\n\r\n이렇게 하면 문단이 fmt를 통해 예쁘게 정렬된다. ! 키를 누른 이후에 선택한 부분이 fmt에 들어가서 포맷팅이 되고, 그 결과가 다시 vi 편집 화면으로 돌아온 것이다. 조금 복잡해 보이지만 vi가 간단한 기능으로도 강력한 성능을 발휘할 수 있는 특징 중의 하나이므로 한번쯤 연습해 보도록 하자. 필자의 경우에는 } 대신 아예 파일 끝부분을 가리키는 G를 이용해서 편집중인 파일 전체를 fmt를 통해 문단 정렬을 자주 하는 편이다.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:38:25',0,'2019-03-23 23:38:25','192.168.219.102','','','','','','','','','','','',''),(15,-15,'',15,0,0,'','','','[Linux] ffmpeg conf 파일 - 속초','ffmpeg conf 파일 - 속초 예제 \r\n======================================= \r\nPort 80 \r\n\r\nBindAddress 0.0.0.0 \r\n\r\nMaxClients 100 \r\n# kbit/sec \r\nMaxBandwidth 30000 \r\n# log file.. - : stdout \r\nCustomLog - \r\n\r\nNoDaemon \r\n\r\n<Feed feed1.ffm> \r\nFile /tmp/feed1.ffm \r\nFileMaxSize 100M \r\nACL allow 127.0.0.1 \r\n</Feed> \r\n\r\n<Stream play1.asf> \r\nFeed feed1.ffm \r\nFormat asf \r\nVideoFrameRate 14 \r\n#VideoSize 640x480 \r\nVideoSize 320x240 \r\nVideoBitRate 400 \r\nVideoGopSize 10 \r\nNoAudio \r\n#AudioBitRate 64 \r\nAuthor \"SOKCHO CITY HALL\" \r\nTitle \"Realtime Streaming Service\" \r\nStartSendOnKey \r\nACL ALLOW 0.0.0.0 240.255.255.255 \r\n</Stream> \r\n\r\n<Stream play1.avi> \r\nFeed feed1.ffm \r\nFormat avi \r\nVideoFrameRate 12 \r\n#VideoSize 640x480 \r\nVideoSize 320x240 \r\nVideoBitRate 400 \r\nVideoGopSize 10 \r\nNoAudio \r\n#AudioBitRate 64 \r\nAuthor \"SOKCHO CITY HALL\" \r\nTitle \"Realtime Streaming Service\" \r\nStartSendOnKey \r\nACL ALLOW 0.0.0.0 240.255.255.255 \r\n</Stream> \r\n\r\n\r\n<Stream system_stat.html> \r\nFormat status \r\nACL allow 1.0.0.0 240.255.255.255 \r\n#FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico \r\n</Stream> \r\n=======================================','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:38:45',0,'2019-03-23 23:38:45','192.168.219.102','','','','','','','','','','','',''),(16,-16,'',16,0,0,'','','','[Visual C++] 메뉴 활성화/비활성화','UPDATE_COMMAND_UI 메세지 핸들러 중에서 <b>Enable</b> 함수를 사용 \r\n- Enable 함수는 인자가 TRUE 일때 활성화, FALSE 일때 비활성화 된다. \r\n\r\nexam. \r\n\r\nvoid CMenuTestView::OnUpdateBrowWidth(CCmdUI* pCmdUI) \r\n{ \r\n&nbsp;&nbsp;&nbsp; pCmdUI->Enable((BrowWidth < 20) ? TRUE : FALSE); &nbsp;&nbsp;  // BrowWidth 값이 20보다 작으면 비활성화 \r\n}','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:38:55',0,'2019-03-23 23:38:55','192.168.219.102','','','','','','','','','','','',''),(17,-17,'',17,0,0,'','','','[Visual C++] Check 마크','Class Wizard / Message: 에서 Command 아래 <b>UPDATE_COMMNAND_UI </b>사용 하며 <b>SetCheck()</b> 함수가 이용된다. \r\n\r\n- 예를 들어 풀다운 메뉴가 화면에 표시하기 전에 UPDATE_COMMAND_UI 메세지를 발생시킨다. \r\n- 메세지 핸들러의 함수명은 [OnUpdate~] 로 시작된다. \r\n- COMMAND 메세지 핸들러와 달리 pCmdUI라는 인수를 가진다.(CCmdUI 클래스의 개체를 가리키는 포인터이다) \r\n- SetCheck 함수는 인수를 하나 가지고, 그 값이 1 이면 체크 On, 0 이면 체크 Off 로 한다. \r\n\r\nexam. \r\n\r\nvoid CMenuTestView::OnUpdateMouthPos(CCmdUI* pCmdUI) \r\n{ \r\n&nbsp;&nbsp;&nbsp;pCmdUI->SetCheck((MouthPos == 10) ? 1 : 0);  // MouthPos 이 10 이면 체크 \r\n}','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:39:06',0,'2019-03-23 23:39:06','192.168.219.102','','','','','','','','','','','',''),(18,-18,'',18,0,0,'','','','[Visual C++] InvalidateRect()','InvalidateRect() 함수는 CWnd 클래스 멤버함수로 윈도의 표시내용을 갱신한다. \r\nthis->InvalidateRect() \r\n\r\nexam. \r\n\r\nvoid CMenuTestView::OnMouthPos() \r\n{ \r\n    MouthPos = 10; \r\n    InvalidateRect(NULL, FALSE);  // 윈도를 수정하여 다시 그린다. \r\n}','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:39:15',0,'2019-03-23 23:39:15','192.168.219.102','','','','','','','','','','','',''),(19,-19,'',19,0,0,'','','','[C-lang] C 언어 프로그래밍','전체 요약본...','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:39:33',1,'2019-03-23 23:39:33','192.168.219.102','','','','','','','','','','','',''),(20,-20,'',20,0,0,'','','','[mysql] 테이블의 특정 필드데이터만 백업하기','1. select  백업받을 필드명 into outfile \'백업될 파일명\' fields terminated by \'\\n\\n(구분자)\' from 테이블명; \r\n\r\n2. mysqldump -u유저명 -p패스워드 [테이타베이스명] [특정테이블명] > [외부로 저장할 파일명] \r\nex) mysqldump -u tgc -p tgc ta_admin > ta_admin.sql','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:39:45',0,'2019-03-23 23:39:45','192.168.219.102','','','','','','','','','','','',''),(21,-21,'',21,0,0,'','','','[Linux] MPLAYER/MENCODER를 Windows 에서 컴파일 하기','이글은 http://www.kipple.pe.kr/doc/mplayer/ 에서 가져왔음을 밝힌다. \r\n문제가 있으면 삭제 하겠습니다. \r\n  \r\nMPLAYER/MENCODER를 Windows 에서 컴파일 하기 \r\n소개 \r\n이 문서는 mplayer를 MinGW/Msys / cygwin을 이용해서 Win32 환경에서 컴파일 하는 방법을 설명한다. \r\n이 문서는 dubble 이 작성한 문서를 다시한번 편집한 문서이다. \r\n\r\n문서 수정 기록 \r\n- 2004/12 dubble 이 바닥에 쓰인 mencoder.exe를 MinGW로 컴파일 할것을 제안 \r\n- 2005/01 dubble 이 MinGW를 통한 컴파일 방법 문서 작성 \r\n- 2005/01/23 현재 문서 최초 작성 \r\n- 2005/02/04 cygwin 컴파일 방법 추가 \r\n\r\n주의사항 \r\n- 이 문서에 기록된 프로그램/라이브러리들은 전부 문서 작성 시점에서 문제가 없는 파일들이다. 이 문서가 작성된 이후에 발표된 최신 프로그램, 라이브러리에서는 문제가 발생할 수도 있으며 컴파일 방법이 다를 수 도 있다. 만일 문제가 발생하면 문서에 적혀있는 버전의 파일을 설치하여서 작업을 하도록 하기바란다. \r\n- 이 문서는 2004.12.29 공개된 MPlayer-1.0pre6a.tar.bz2 버전을 기준으로 작성되었다. \r\n- 이 문서의 위치는 http://www.kipple.pe.kr/doc/mplayer/ 이다. \r\n\r\nMingW/Msys 로 컴파일 하기 \r\nMingW/Msys 로 컴파일 하면 하나의 실행파일만이 나온다는 장점이 있다. 하지만 테스트 결과 인코딩시 에러가 많이 발생하는 문제점이 발견되었다. 가급적 Cygwin 으로 컴파일 하기를 권장한다. \r\n\r\nMingw 설치 \r\n- 다운로드 : http://www.mingw.org/download.shtml \r\n- 버전 : MinGW-3.2.0-rc-3.exe \r\n- 설치 : 프로그램을 실행하여 설치한다. 가급적 기본 폴더인 c:\\MinGW 에 설치하도록 한다. \r\n\r\nmsys 설치 \r\n- 다운로드 : http://www.mingw.org/download.shtml \r\n- 버전 : MSYS-1.0.10.exe \r\n- 설치 : 프로그램을 실행하여 설치한다. 설치중 Mingw 가 설치된 폴더를 물어보면 c:/Mingw 를 적어주면 된다. \r\n\r\nmsys 실행 \r\n- 바탕화면에 있는 msys 아이콘을 더블클릭하여 msys 를 실행한다. 이제부터는 Unix 환경과 동일하므로 Unix 명령어를 사용하여서 작업을 해야 한다. \r\n\r\nDirectX 헤더 설치 \r\n- 다운로드 : http://www.mplayerhq.hu/MPlayer/releases/win32-beta/contrib/ \r\n- 파일명 : dx7headers.tgz \r\n- 설치 : \r\ntar -xvzf dx7headers.tgz \r\nmv *.h c:/mingw/include \r\n\r\nnasm 설치 \r\n- 다운로드 : http://sourceforge.net/project/showfiles.php?group_id=6208 \r\n- 버전 : nasm-0.98.39.tar.gz \r\n- 설치 \r\ntar zvzf nasm-0.98.39.tar.gz \r\ncd nasm-0.98.39 \r\n./configure --prefix=c:/mingw \r\nmake \r\nmake install \r\n\r\nlibiconv 설치 \r\n- 다운로드 : http://ftp.gnu.org/pub/gnu/libiconv/ \r\n- 버전 : libiconv-1.8.tar.gz \r\n- 설치 \r\ntar xvfz libiconv-1.8.tar.gz \r\ncd libiconv-1.8 \r\n./configure --prefix=c:/mingw --disable-shared \r\nmake \r\nmake install \r\n\r\nfreetype2 설치 \r\n- 다운로드 : http://sourceforge.net/project/showfiles.php?group_id=3157 \r\n- 버전 : freetype-2.1.9.tar.gz \r\n- 설치 \r\ntar xvfz freetype-2.1.9.tar.gz \r\ncd freetype-2.1.9 \r\n./configure --prefix=c:/mingw --disable-shared \r\nmake \r\nmake install \r\n\r\nzlib 설치 \r\n- 다운로드 : http://www.gzip.org/zlib/ \r\n- 버전 : zlib-1.2.1.tar.gz \r\n- 설치 \r\ntar xvzf zlib-1.2.1.tar.gz \r\ncd zlib-1.2.1 \r\n./configure --prefix=c:/mingw \r\nmake \r\nmake install \r\n\r\nlame 설치 \r\n- 다운로드 : http://sourceforge.net/project/showfiles.php?group_id=290 \r\n- 버전 : lame-3.96.1.tar.gz \r\n- 설치 \r\ntar xvzf lame-3.96.1.tar.gz \r\ncd lame-3.96.1 \r\n./configure --prefix=c:/mingw --disable-shared --disable-decoder \r\nmake \r\nmake install \r\n\r\nogg 설치 \r\n- 다운로드 : http://downloads.xiph.org/releases/ogg/ \r\n- 버전 : libogg-1.1.2.tar.gz \r\ntar zxvf libogg-1.1.2.tar.gz \r\ncd libogg-1.1.2 \r\n./configure --prefix=c:/mingw --disable-shared \r\nmake \r\nmake install \r\n\r\nvorbis 설치 \r\n- 다운로드 : http://downloads.xiph.org/releases/vorbis/ \r\n- 버전 : libvorbis-1.1.0.tar.gz \r\ntar zxvf libvorbis-1.1.0.tar.gz \r\ncd libvorbis-1.1.0 \r\n./configure --prefix=c:/mingw --disable-shared \r\nmake \r\nmake install \r\n\r\nxvid 설치 \r\n- 다운로드 : http://www.xvid.org/downloads.html \r\n- 버전 : xvidcore-1.1.0-beta1.tar.gz \r\n- 설치 \r\ntar xvzf xvidcore-1.1.0-beta1.tar.gz \r\ncd xvidcore-1.1.0-beta1/build/generic \r\n./configure --prefix=c:/mingw --disable-shared \r\nmake \r\nmake install \r\nmv c:/mingw/lib/xvidcore.a c:/mingw/lib/libxvidcore.a \r\n\r\nMPlayer 컴파일 \r\n- 다운로드 : http://www.mplayerhq.hu/homepage/design7/dload.html \r\n- 버전 : MPlayer-1.0pre6a.tar.bz2 \r\n- 컴파일 : \r\nbzip2 -dc MPlayer-1.0pre6a.tar.bz2 | tar xv \r\ncd MPlayer-1.0pre6a \r\n./configure \r\nmake \r\n- 추가 사항 \r\nMPlayer 설정시 아래와 같이 명시적으로 일부 옵션을 적어줄 수 도 있다. \r\n./configure --enable-runtime-cpudetection --with-codecsdir=codecs --enable-static --enable-win32 --disable-winsock2 --disable-tv --disable-network --disable-smb --disable-ftp --disable-gif --disable-jpeg --disable-png --enable-real --disable-mad \r\n\r\nCygwin 으로 컴파일하기 \r\nCygwin으로 컴파일된 실행파일은 실행시 cygwin1.dll 파일이 필요하다. \r\n\r\nCygwin 설치 \r\n- 다운로드 : http://www.cygwin.com/ \r\n- 설치 방법 \r\n. 홈페이지의 Install Cygwin Now 를 클릭해서 설치 프로그램을 실행시킨다. \r\n. 미러 사이트를 설정에서는 ftp://linux.sarang.net 을 고른다. \r\n. 설치 패키지 선택 화면에서 기본 설치 이외에 다음 패키지를 설치한다. \r\n\r\n devel - nasm          \r\n devel - gcc / gcc-g++      \r\n devel - make \r\n devel - gcc mingw / gcc mingw core / gcc mingw g++ \r\n devel - libfreetype2-devl \r\n devel - subversion \r\n libs - freetype2      \r\n libs - libiconv        \r\n libs - glib \r\n\r\n(문제가 발생하는것도 싫고, 하드도 많고, 시간도 많고, 네트웍도 빠르면 옵션에서 전부를 선택해서 설치해도 좋다 ) \r\n. 참고 사이트 http://www.ezbox.net/cygwin/ \r\n\r\nDirectX 헤더 설치 \r\n- 다운로드 : http://www.mplayerhq.hu/MPlayer/releases/win32-beta/contrib/ \r\n- 파일명 : dx7headers.tgz \r\n- 설치 : \r\ntar -xvzf dx7headers.tgz \r\nmv *.h /usr/include \r\n\r\nlame 설치 \r\n- 다운로드 : http://sourceforge.net/project/showfiles.php?group_id=290 \r\n- 버전 : lame-3.96.1.tar.gz \r\n- 설치 \r\ntar xvzf lame-3.96.1.tar.gz \r\ncd lame-3.96.1 \r\n./configure --prefix=/usr --disable-decoder --disable-shared \r\nmake \r\nmake install \r\n\r\nogg 설치 \r\n- 다운로드 : http://downloads.xiph.org/releases/ogg/ \r\n- 버전 : libogg-1.1.2.tar.gz \r\ntar zxvf libogg-1.1.2.tar.gz \r\ncd libogg-1.1.2 \r\n./configure --prefix=/usr --disable-shared \r\nmake \r\nmake install \r\n\r\nvorbis 설치 \r\n- 다운로드 : http://downloads.xiph.org/releases/vorbis/ \r\n- 버전 : libvorbis-1.1.0.tar.gz \r\ntar zxvf libvorbis-1.1.0.tar.gz \r\ncd libvorbis-1.1.0 \r\n./configure --prefix=/usr --disable-shared \r\nmake \r\nmake install \r\n\r\nlibdts 설치 \r\n- 다운로드 : http://debian.unnet.nl/pub/videolan/libdts/0.0.2/ \r\n- 버전 : libdts-0.0.2.tar.gz \r\ntar zxvf libdts-0.0.2.tar.gz \r\ncd libdts-0.0.2 \r\n./configure --prefix=/usr --disable-shared \r\nmake \r\nmake install \r\n\r\nx264 설치 \r\n- 참고페이지 : http://www.videolan.org/x264.html \r\n- 버전 : cvs \r\nsvn co svn://svn.videolan.org/x264/trunk x264 \r\ncd x264/build/cygwin \r\nmake \r\ncp ../../libx264.a /usr/lib/ \r\ncp ../../x264.h /usr/include/ \r\n\r\nDivx4/5 설치 \r\n- 다운로드 : divxencore5src.zip \r\n- 버전 : divx encore 5 \r\n- 참고 : http://ftp.intron.ac/pub/algorithm/MPEG4/opendivx/ http://www.mplayerhq.hu/DOCS/HTML/en/codecs.html 에서 2.2.1.1. DivX4/DivX5 항목 \r\n- 설치 \r\ncd encoder/build/cygwin \r\nmake \r\ncp libdivxencore.a /lib/ \r\ncp ../../src/encore.h /usr/include/ \r\n- 문제가 있으므로 사용하지 않는다. \r\n\r\nxvid 설치 \r\n- 다운로드 : http://www.xvid.org/downloads.html \r\n- 버전 : xvidcore-1.1.0-beta1.tar.gz \r\n- 설치 \r\ntar xvzf xvidcore-1.1.0-beta1.tar.gz \r\ncd xvidcore-1.1.0-beta1/build/generic \r\n./configure --prefix=/usr --disable-shared \r\nmake \r\nmake install \r\nmv /lib/xvidcore.a /lib/libxvidcore.a \r\n\r\nMPlayer 컴파일 \r\n- 다운로드 : http://www.mplayerhq.hu/homepage/design7/dload.html \r\n- 버전 : MPlayer-1.0pre6a.tar.bz2 \r\n- 컴파일 : \r\nbzip2 -dc MPlayer-1.0pre6a.tar.bz2 | tar xv \r\ncd MPlayer-1.0pre6a \r\n./configure \r\nmake \r\n- 추가 사항 \r\nMPlayer 설정시 아래와 같이 명시적으로 일부 옵션을 적어줄 수 도 있다. \r\n./configure --enable-runtime-cpudetection --with-codecsdir=codecs --enable-static --enable-win32 --disable-winsock2 --disable-tv --disable-network --disable-smb --disable-ftp --disable-gif --disable-jpeg --disable-png --enable-real --disable-mad \r\n\r\n패치하기 \r\n위의 설명대로 컴파일 할 경우 버그로 인해서 일부 정상 작동을 하지 않는다. 이경우 아래와 같이 패치를 적용해야 한다. \r\n\r\n자막이 깨지는 문제 ( MingW/Msys 로 컴파일시 ) \r\n- 설명 : isspace() 함수에서 128 보다 큰 char 를 설치할때 발생하는 문제로 인하여 utf-8 문자의 한글 코드가 깨지는 문제가 발생한다. \r\nsubreader.c 파일에 있는 \"static void trail_space(char *s)\" 를 \"static void trail_space(unsigned char *s)\" 로 바꾸면 문제를 해결할 수 있다. \r\n\r\n한+영 통합자막파일 처리 문제 \r\n- 설명 : 한+영 통합 자막파일일 경우 기존의 mencoder 에서는 정상 처리를 못하는 문제가 있다. 한+영 통합자막일 경우 동시에 나오도록 파일을 수정하였다. 내부적(config.h)으로 USE_SORTSUB 가 define 되어 있어야만 정상 작동한다. \r\n- 수정된 자막 처리 파일 다운로드 : subreader.c(63KB) \r\n\r\n오디오 코덱 문제 \r\nmplayer는 기본적으로 ffmpeg 의 wma 처리 모듈로 wma 오디오를 처리하도록 되어 있는데, WMA v2 파일들이 이 모듈로 정상 처리가 안되어서 일부 wmv 파일의 소리가 정상적으로 나오지 않는 문제가 발생한다. \r\n이 문제를 해결하기 위해서는 ./etc/codecs.conf 파일에서 ffwmav2 부분을 아래와 같이 주석 처리를 해야 한다. \r\n이렇게 막아 놓으면 wma v2 를 시스템에 설치된 기본 코덱(wmadmo)으로 재생하게 된다. \r\n\r\n ; audiocodec ffwmav2              \r\n ;  info \"DivX audio v2 (ffmpeg)\"  \r\n ;  status untested                \r\n ;  format 0x161                  \r\n ;  driver ffmpeg                  \r\n ;  dll \"wmav2\"                    \r\n\r\nffmpeg 컴파일. \r\nhttp://forum.videolan.org/viewtopic.php?t=885 \r\n\r\nlibfaac \r\n- 다운로드 : http://www.rarewares.org/aac.html http://www.saunalahti.fi/~cse/files/faac.zip \r\n- 버전 : faac.zip \r\n- 컴파일 : \r\n\r\nffmpeg \r\n- 다운로드 : http://ffmpeg.sourceforge.net/download.php \r\n- 버전 : cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg \r\n- 컴파일 : \r\n\r\n참고 페이지 \r\n- dubble 의 \"MPlayer 를 Mingw32 에서 컴파일해봅시다\" : http://my.netian.com/~dubble/MPlayer_MinGW_build.txt \r\n- mplayer 메일링 리스트중 Mingw32 컴파일 관련 부분 : http://mplayerhq.hu/pipermail/mplayer-cygwin/2005-January/001701.html','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:39:58',0,'2019-03-23 23:39:58','192.168.219.102','','','','','','','','','','','',''),(22,-22,'',22,0,0,'','','','[mysql] MySQL + Apache + PHP4 + IMAP + Zend Optimizer 설치하기','1. 설치에 필요한 파일 다운받기 \r\n\r\n설치에 필요한 파일들 \r\n\r\nimap-2001a.tar.Z (ftp://ftp.cac.washington.edu/imap) \r\nmysql-3.23.51.tar.gz  (http://www.mysql.com/downloads/mysql-3.23.html) \r\napache_1.3.26.tar.gz  (http://www.apache.org/dist/httpd/) \r\nphp-4.2.2.tar.gz (http://www.php.net/downloads.php) \r\nZendOptimizer-1.3.2-Linux_glibc21-i386.tar.gz (https://www.zend.com/store/products/zend-optimizer.php) \r\n\r\n해당 사이트 또는 미러사이트 등을 이용하여 파일을 다운로드 받습니다. \r\n설치에 필요한 소스들의 경로는 조금씩 변경될 수도 있습니다. 직접 찾아보기 번거로우시면 저의 홈페이지(http://www.kernel.tv)에서 다운받으세요.\r\n\r\n다운받은 파일들을 /usr/local/src/ 또는 적당한 위치에 저장을 합니다. root계정으로 로그온 되어 있고, 리눅스시스템에 익숙한 분은 어느곳에 두고 설치를 해도 상관없습니다. \r\n하지만 소스파일들을 같은 디렉토리에 두세요. \r\n2. RPM으로 설치된 패키지 제거하기 \r\n\r\n주의: 지금부터의 작업은 반드시 root의 권한으로 해야 합니다. \r\n\r\n배포본 리눅스에 기본적으로 설치되어 있는 RPM 패키지를 제거. \r\n[root@www root]# /etc/rc.d/init.d/httpd stop    아파치 데몬 종료.또는 killall httpd \r\n[root@www root]# ps -ef | grep httpd    httpd 데몬이 없는 것을 확인. \r\nroot 1395 1360 0 17:12 pts/1 00:00:00 grep httpd    아무 메세지가 안뜨거나 이런형식으로 뜨면 실행되고 있는 아파치 데몬이 없는겁니다. \r\n\r\n[root@www root]# /etc/rc.d/init.d/mysqld stop    mysql  데몬을 종료. \r\n[root@www root]# ps -ef | grep mysqld    MySQL 데몬이 없는 것을 확인 \r\nroot    20246 20060  0 14:05 pts/0    00:00:00 grep mysqld \r\n\r\n[root@www root]# rpm -qa | grep apache    설치된 아파치 패키지를 검색합니다. \r\napache-1.3.23-11 \r\napache-devel-1.3.23-11 \r\n................................ \r\n\r\n[root@www root]# rpm -e apache    \r\nerror: removing these packages would break defendencies: \r\n    webserver is needed by mod_perl-1.24-6 \r\n    webserver is needed by mod_php-4.0.4pl1-1 \r\n    webserver is needed by mod_ssl-2.7.1-3 \r\n    webserver is needed by mod_dav-1.0.2-2 \r\n    webserver is needed by mod_python-2.7.6-5 \r\n  ............................. \r\n\r\n아파치를 제거합시다. 그런데 에러메시지가 뜨죠? 의존성이 있는 패키지를 먼저 제거합니다. \r\nrpm -e --nodeps apache와 같이 의존성 검사를 무시하고 지울 수도 있으나 꼭 필요하지 않는 것을 남겨두면 공간만 차지하고 시스템효율성을 떨어뜨릴 수 있으므로 본인판단하에 사용하지 않는 것은 과감히 지우시고 다음에 필요하면 설치하세요. \r\n그리고 배포판 또는 설치환경에 따라 다소 패키지별로 차이가 있습니다. \r\n실수로 잘못 지운 것은 배포판 CD가 있으면 다시 설치하면 그대로 됩니다.(예: rpm -ivh apache-1.3.23-11.i386.rpm) \r\n\r\n[root@www root]# rpm -e mod_perl \r\n[root@www root]# rpm -e php    (php를 지울 때 의존성 문제가 뜨는 패키지도 같은 방법으로 지웁니다) \r\n[root@www root]# rpm -e mod_ssl \r\n[root@www root]# rpm -e mod_dav \r\n\r\n의존성이 있는 패키지를 제거하고 아파치도 제거합니다. \r\n[root@www root]# rpm -e apache \r\n[root@www root]# rpm -e apache-devel (처음 아파치의 패키지 검사시에 보였던 패키지를 모두 지운다) \r\n\r\n나머지 php, mysql, imap관련 패키지도 위와 같은 방법으로 지웁니다 \r\n\r\n[root@www root]# rpm -qa | grep php    설치된 php패키지를 검색 후 삭제 \r\nphp-devel-4.2.2-7 \r\n............................... \r\n\r\n[root@www root]# rpm -qa | grep mysql    설치된 mysql 패키지를 검색 후 삭제 (참고: 배포판에 따라 대소문자가 달라서 MySQL로 검색해야 할 경우도 있음.) \r\nmysql-3.23.49-3 \r\n.............................. \r\n\r\n[root@www root]# rpm -qa | grep imap  설치된 imap 패키지를 검색 후 삭제 \r\nimap-2001a-10 \r\nimap-devel-2001a-10 \r\n\r\n배포판이 생성시킨 MySQL 데이터에 추가된 것이 없을 경우 지웁니다. \r\n[root@www root]# rm -rf /var/lib/mysql \r\n\r\n/var/lib/mysql 은 MySQL을 RPM패키지로 설치했을 경우 DB파일이 저장되는 경로 입니다. \r\n\r\n다시 한번 관련패키지를 덜 지운 것이 없는지 확인합니다. 많은 문제점 질문중 원인이 관련패키지가 남아 있는 상태에서 컴파일을 해서 생기는 문제입니다. \r\n3. IMAP, MySQL, Apache, PHP4, Zend Optimizer 바이너리 파일 압축풀기 \r\n\r\n소스파일들이 /usr/local/src 디렉토리에 있다고 가정하고 설명합니다. \r\n\r\n[root@www src]# tar zxvf imap-2001a.tar.Z \r\n[root@www src]# tar zxvf mysql-3.23.51.tar.gz \r\n[root@www src]# tar zxvf apache_1.3.26.tar.gz \r\n[root@www src]# tar zxvf php-4.2.2.tar.gz \r\n[root@www src]# tar zxvf ZendOptimizer-1.3.2-Linux_glibc21-i386.tar.gz \r\n4. IMAP 설치 \r\n\r\n[root@www src]# cd imap-2001a \r\n[root@www imap-2001a]# make slx  imap을 컴파일 한다 \r\n\r\n컴파일이 완료되면 imapd 디렉토리에 imapd가 ipopd디렉토리에는 ipop2d, ipop3d가 생성된다. \r\nipop2d는 잘 쓰지 않으므로 복사하지 않아도 됩니다. \r\n\r\n[root@www imap-2001a]# cp imapd/imapd /usr/sbin  생성된 실행화일들을 복사. \r\n[root@www imap-2001a]# cp ipopd/ipop3d /usr/sbin \r\n[root@www imap-2001a]# cp ipopd/ipop2d /usr/sbin \r\n\r\n이들은 xinetd 슈퍼데몬에 의해서 실행되므로 클라이언트 쪽에서 접속하여 사용할 수 있도록 하려면 환경설정을 수정해 주어야 한다. \r\n배포판 레드햇6.2이하에서는 inetd 슈퍼데몬에 의해 실행되므로 환경설정이 조금 다릅니다. \r\n\r\n[root@www imap-2001a]#  vi /etc/xinetd.d/imapd    imapd 실행을 위한 환경설정화일을 생성. \r\n\r\nservice imap \r\n{ \r\n        disable = no \r\n        socket_type = stream \r\n        wait  = no \r\n        user = root \r\n        server = /usr/sbin/imapd \r\n        log_on_success += HOST DURATION \r\n        log_on_failure += HOST \r\n} \r\n\r\n[root@www imap-2001a]#  vi /etc/xinetd.d/ipop3d \r\n\r\nservice pop3 \r\n{ \r\n        disable = no \r\n        socket_type = stream \r\n        wait  = no \r\n        user = root \r\n        server = /usr/sbin/ipop3d \r\n        log_on_success += HOST DURATION \r\n        log_on_failure += HOST \r\n} \r\n\r\n[root@www imap-2001a]# vi /etc/services \r\n...... \r\npop3            110/tcp        pop-3          # POP version 3 \r\npop3            110/udp        pop-3                                          \r\n...... \r\nimap          143/tcp        imap2          # Interim Mail Access Proto v2 \r\nimap          143/udp        imap2                                          \r\n...... \r\n\r\n보통 위의 내용이 있습니다. 찾아보고 있으면 주석처리가 되어 있지 않는지만 확인하고 그대로 두세요. \r\n\r\n[root@www imap-2001a]# /etc/rc.d/init.d/xinetd restart    슈퍼데몬을 재가동. \r\n\r\nStopping xinetd: [  OK  ] \r\nStarting xinetd: [  OK  ] \r\n\r\ntelnet을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트 합니다. \r\n\r\n[root@www imap-2001a]# telnet localhost 110 \r\n\r\nTrying 127.0.0.1... \r\nConnected to localhost.localdomain. \r\nEscape character is \'^]\'. \r\n+OK POP3 localhost.localdomain v2001.78 server ready \r\nuser mhbaek \r\n+OK User name accepted, password please \r\npass abc123 \r\n+OK Mailbox open, 0 messages \r\nquit \r\n+OK Sayonara \r\nConnection closed by foreign host. \r\n\r\nIMAP은 기본적으로 143 포트를 사용. \r\n5. MySQL 설치 \r\n\r\n[root@www imap-2001a]# cd mysql-3.23.51 \r\n[root@www mysql-3.23.51]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/var/lib/mysql \r\n\r\n옵션과 옵션사이는 공백 하나만 있으면 됩니다. \r\n위 옵션은 설치디렉토리를 지정하고 한글을 지원하도록 하고, --localstatedir 옵션은 DB파일을 저장할 디렉토리를 지정합니다. \r\n혹시 실수로 환경설정을 다시 해야할 경우 make distclean 명령을 하세요. \r\n\r\n이외에도 필요한 옵션에 대하여 알고 싶으면  ./configure --help 명령으로 살펴보세요. \r\n\r\nThank you for choosing MySQL! 이라는 메시지가 나온다면 MySQL을 컴파일할 준비가 다 되었다는 말입니다. \r\n\r\n[root@www mysql-3.23.51]# make    컴파일 시작. \r\n시스템 사양에 따라 시간 차이가 있으므로 사양이 낮은 컴퓨터는 조금 기다리세요. ^^ \r\n\r\n[root@www mysql-3.23.51]# make install    MySQL을 설치. \r\n\r\n[root@www mysql-3.23.51]# scripts/mysql_install_db      MySQL의 데이터를 관리할 기초적인 DB와 테이블을 생성 \r\n\r\n주의할 점은 mysql_install_db은 반드시 한번만 실행시켜야 합니다. \r\n\r\n최근의 MySQL에서 달라진 점은 MySQL이 mysql사용자 권한으로 실행됩니다. \r\n해당유저가 없어서 파일소유자가 root인 경우 에러가 발생합니다. \r\n따라서 다음과 같이 mysql 유저와 그룹을 생성합니다. 배포판에 따라 설치되었던 RPM버전에 의해 이미 생성되어 있을 수도 있습니다. \r\n\r\n[root@www mysql-3.23.51]# groupadd mysql \r\n[root@www mysql-3.23.51]# useradd -g mysql mysql \r\n[root@www mysql-3.23.51]# chown -R mysql /var/lib/mysql \r\n[root@www mysql-3.23.51]# chgrp -R mysql /var/lib/mysql \r\n[root@www mysql-3.23.51]# vipw  보안을 위해 새로 생성된 mysql유저가 로그인을 못하도록 수정. \r\n\r\nmysql:x:500:500::/home/mysql:/bin/bash  라인을 찾아서 다음과 같이 수정.  \r\nmysql:x:500:500::/var/lib/mysql:/sbin/nologin  \r\n\r\n:x를 통해 저장후 종료, \r\nYou are using shadow passwords on this system. \r\nWould you like to edit /etc/shadow now [y/n] 라고 물으면 n 라고 하면 됩니다. \r\n\r\n저장후 초기 홈디렉토리인 /home/mysql를 삭제 \r\n[root@www mysql-3.23.51]# rm -rf /home/mysql  홈디텍토리는 사용자마다 다를 수도 있습니다. \r\n[root@www mysql-3.23.51]# ls -al /var/lib/mysql  MySQL  DB디렉토리 확인 \r\n합계 16 \r\ndrwx------    4 mysql    mysql        4096  7월 27 17:05 . \r\ndrwxr-xr-x  15 root    root        4096  7월 27 17:05 .. \r\ndrwx------    2 mysql    mysql        4096  7월 27 17:05 mysql \r\ndrwx------    2 mysql    mysql        4096  7월 27 17:05 test \r\n\r\n위와 같은 출력하면을 볼 수 있습니다. DB가 하나 추가될 때마다 디렉토리가 생깁니다. \r\nmysql DB는 앞에서 생성시킨 MySQL을 관리할 DB입니다. \r\n\r\n[root@www mysql-3.23.51]# cp support-files/my-medium.cnf /etc/my.cnf \r\n[root@www mysql-3.23.51]# vi /usr/local/mysql/share/mysql/mysql.server \r\n\r\n편집기로 열어서 safe_mysql이 실행되는 라인(107 line쯤)에 --language=korean 옵션을 추가. \r\n참고로 mysql.server는 mysql이 정상적으로 실행되도록 짜여 있는 스크립트화일입니다. \r\n\r\n$bindir/safe_mysqld --pid-file=$pid_file --datadir=$datadir --language=korean &    한글메세지를 띄우도록 해줍니다. \r\n\r\n시스템 부팅시에 자동 실행되도록 해 줍니다. \r\n[root@www /mysql-3.23.51]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld \r\n\r\n[root@www /mysql-3.23.51]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld \r\n만일 Xwindows로 부팅할 경우를 위해 /etc/rc.d/rc5.d/ 디텍토리에도 링크를 만듭니다 \r\n[root@www /mysql-3.23.51]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld \r\n\r\n이후에 ntsysv명령을 하면 시스템 부팅시에 자동실행될 데몬을 쉽게 지정할 수 있습니다. \r\n[root@www /mysql-3.23.51]# ntsysv \r\n\r\nmysql데몬의 시작과 종료 및 관련 명령어를 사용하기 편하게 하기위해서 시스템 부팅환경에 PATH를 지정해 둡니다. \r\n\r\n[root@www /mysql-3.23.51]# vi /root/.bash_profile \r\n\r\n# User specific environment and startup programs \r\n\r\nPATH=$PATH:$HOME/bin:/usr/local/mysql/bin \r\nBASH_ENV=$HOME/.bashrc \r\nUSERNAME=\"root\" \r\n\r\n시스템 부팅환경은 배포판마다 조금씩 다를 수 있으니 사용자의 환경에 맞게 적절히 설정하세요. \r\n\r\n[root@www mysql-3.23.51]# /etc/rc.d/init.d/mysqld start \r\n[root@www mysql-3.23.51]# ps -ef | grep mysql    MySQL 프로세스 확인하기 \r\n[root@www mysql-3.23.51]# /etc/rc.d/init.d/mysqld stop    MySQL 데몬 종료하기 \r\n6. Apache Configure(1) \r\n\r\n[root@www mysql-3.23.51]# cd ../apache_1.3.26    초기에 아파치소스 압축을 풀어놓은 곳으로 이동. \r\n[root@www apache_1.3.26]# ./configure --prefix=/usr/local/apache \r\n7. PHP4설치 \r\n\r\n[root@www mod_python-2.7.8] cd ../php-4.2.2 \r\n[root@www php-4.2.2]# ./configure --with-config-file-path=/etc \\ \r\n--with-exec-prefix=/usr/bin \\ \r\n--with-imap=../imap-2001a \\ \r\n--with-mysql=/usr/local/mysql \\ \r\n--with-apache=../apache_1.3.26 \\ \r\n--disable-debug \\ \r\n--enable-track-vars \\ \r\n--with-gd \\ \r\n--enable-safe-mode \r\n\r\n\\(역슬래시) 표시는 입력할 내용이 많을 경우 다음줄에서 보기 좋게 입력하도록 해 줍니다. \r\n기타옵션에 대한 추가 설명은 PHP메뉴얼을 참고하기 바랍니다. \r\n만약 PostgeSQL이나 mSQL을 사용한다면 --with-pgsql=디렉토리경로 --with-msql=디렉토리 경로와 같이 옵션을 사용하면 됩니다. \r\n--enable-track-vars  옵션은 HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어 있는 GET, POST, cookie 변수들이 어디서 왔는지 기억하도록 합니다. 꼭 설정해 두세요. \r\n--disable-debug  옵션은 Zend Optimizer 를 위한 옵션입니다. \r\n\r\n위 옵션외 기타 옵션들을 모두 설치하실 필요는 없습니다. \r\n사용하지 않는 옵션은 시스템 성능만 떨어뜨립니다. \r\n\r\n[root@www php-4.2.2]#make    컴파일 \r\n[root@www php-4.2.2]#make install    인스톨 \r\n8. Apache Configure(2), 컴파일 \r\n\r\n[root@www php-4.2.2]# cd ../apache_1.3.26 \r\n[root@www apache_1.3.26]# ./configure --prefix=/usr/local/apache \\ \r\n--activate-module=src/modules/php4/libphp4.a \\ \r\n--enable-module=so --enable-shared=max \\ \r\n--sysconfdir=/usr/local/apache/conf \\ \r\n--datadir=/home/httpd \\ \r\n--localstatedir=/var/httpd \\ \r\n--htdocsdir=/home/httpd/html \\ \r\n--logfiledir=/var/log/httpd \r\n\r\n단골로 묻는 질문의 원인 중에 하나가 위의 옵션 때문입니다. 옵션을 줄 때 그냥 TAB key를 두드리지 말고 위 옵션을 잘 보고 입력하세요. \r\n--sysconfdir=/usr/local/apache/conf 옵션은 사용하지 않아도 Default 로 설정되는 경로입니다. 설정변경을 하실분은 참고하세요. \r\n\r\n[root@www apache_1.3.26]# make    아파치를 컴파일. \r\n[root@www apache_1.3.26]# make install    아파치 인스톨 \r\n\r\n[root@www apache_1.3.26]# cp ../php-4.2.2/php.ini-dist /etc/php.ini  php환경설정 파일 복사 \r\n\r\n시스템 부팅시 자동실행이 되도록 하기 위하여 설정을 합니다. \r\n[root@www apache_1.3.26]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd \r\n[root@www apache_1.3.26]# vi /etc/rc.d/init.d/httpd \r\n\r\nhttpd를 편집기로 열어서 아래와 같이 \"chkconfig: - 85 15\" 를 추가합니다. \r\n\r\n#!/bin/sh \r\n# \r\n# Startup script for the Apache Web Server \r\n# \r\n# chkconfig: - 85 15 \r\n# description: Apache is a World Wide Web server.  It is used to serve \\ \r\n#              HTML files and CGI. \r\n# processname: httpd \r\n\r\n위와 같이 설정을 하고 나면 레드햇의 경우 다음과 같이 데몬시작과 종료를 편리하게 할 수 있는 툴에서 시작설정이 가능합니다. \r\n[root@www apache_1.3.26]# ntsysv \r\n\r\n또는 다음과 같이 시작과 종료설정을 해도 됩니다. \r\n\r\n[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S85httpd \r\n[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S85httpd \r\n\r\n시스템 종료 및 재부팅을 위하여.... \r\n[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc0.d/K15httpd \r\n[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc1.d/K15httpd \r\n[root@www apache_1.3.26]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc6.d/K15httpd \r\n9. 환경설정 파일 편집 \r\n\r\n아파치 환경설정화일을 열어서 다음과 같은 환경설정을 합니다. \r\n[root@www apache_1.3.26]# vi /usr/local/apache/conf/httpd.conf \r\n\r\n404 라인쯤에 Default 시작페이지 설정을 수정해 줍니다 \r\n\r\n\r\nDirectoryIndex index.php index.php3  index.html index.htm \r\n\r\nSection 2의 단락에서 아래 내용을 추가합니다. \r\n\r\n\r\n................................ \r\n\r\n# And for PHP 4.x, use: \r\nAddType application/x-httpd-php .php .php3 .inc .ph .htm \r\nAddType application/x-httpd-php-source .phps \r\n\r\n................................. \r\n\r\n환경설정 수정후 저장을 합니다. \r\n[root@www apache_1.3.26]# /usr/local/apache/bin/httpd -t      엔터를 두드리고  다음과 같은 메시지만 있으면 아파치 환경이 잘 설정되었습니다. \r\nSyntax OK  \r\n\r\n만일 에러가 발생하였다면 몇 번째 라인에서 잘못되었다는 메시지를 보고 수정하세요. \r\n\r\n[root@www apache_1.3.26]# /usr/local/apache/bin/apachectl start        아파치를 실행시킵니다. 중지는 stop 재시작은 restart 인수를 사용하면 됩니다. \r\n\r\n아파치 관련 스크립트를 쉽게 실행하기 위한 환경설정을 합니다. \r\n[root@www apache_1.3.26]# vi /root/.bash_profile \r\n\r\n# User specific environment and startup programs \r\n\r\nPATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/apache/bin \r\nBASH_ENV=$HOME/.bashrc \r\nUSERNAME=\"root\" \r\n\r\nroot 에서만 필요하므로 root의 PATH에 아파치의 디렉토리를 지정합니다. 다시 root로 로그인 하면 설정을 적용하여 사용할 수 있습니다. \r\n10. Test 하기 \r\n\r\n테스트 화일을 만들어 확인을 해 보세요. 물론 홈페이지가 뜰 수 있는 디렉토리가 되어야 합니다. \r\n메인 홈페이지 경로는 아파치 컴파일옵션(--htdocsdir=/home/httpd/html) 또는 아파치 환경설정파일 325라인 정도에서 DocumentRoot \"/home/httpd/html\"에 의해 설정된 경로입니다. \r\n\r\n[root@www apache_1.3.26]# vi /home/httpd/html/phpinfo.php \r\n\r\n에디터 창에서 다음내용을 입력합니다. \r\n\r\nphpinfo(); \r\n?> \r\n\r\n저장을 하고 브라우저에서 http://localhost/test.php 또는 홈페이지URL/test.php를 입력하여 어떤 내용이 출력되는지 봅시다. \r\n\r\n다음과 같은 내용이 출력된다면 정상적으로 설치가 잘 되었습니다. \r\nPHP LogoPHP Version 4.2.2 \r\n\r\nSystem Linux linux.ctrclab.go.kr 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 unknown \r\nBuild Date Jul 23 2002 \r\nConfigure Command \'./configure\' \'--with-config-file-path=/etc\' \'--with-exec-prefix=/usr/bin\' \'--with-imap=../imap-2001a\' \'--with-mysql=/usr/local/mysql\' \'--with-apache=../apache_1.3.26\' \'--disable-debug\' \'--enable-track-vars\' \'--with-gd\' \'--enable-safe-mode\' \r\nServer API Apache \r\nVirtual Directory Support disabled \r\nConfiguration File (php.ini) Path /etc/php.ini \r\nZEND_DEBUG disabled \r\nThread Safety disabled \r\n  \r\nZend logo This program makes use of the Zend Scripting Language Engine: \r\nZend Engine v1.2.0, Copyright (c) 1998-2002 Zend Technologies \r\n\r\n11. Zend Optimizer 설치 \r\n\r\n[root@www apache_1.3.26]# cd ../ZendOptimizer-1.3.2-Linux_glibc21-i386 \r\n[root@www ZendOptimizer-1.3.2-Linux_glibc21-i386]# ./Install.sh \r\n\r\n다음과 같은 화면이 뜨면 Enter! 후 아래와 같은 간단한 내용의 질문을 읽고 환경에 맞게 입력해줍니다. \r\n\r\nWelcome to the Zend Optimizer 1.3.2 Installation Script! \r\nFor more information on this script, see the Installation \r\nsection in the Zend Optimizer User Guide. \r\n\r\nSpecify the location where to install Zend Optimizer \r\n\r\n/usr/local/Zend \r\n\r\nConfirm the location of your php.ini file \r\n\r\n/etc \r\n\r\nAre you using the Apache web server? \r\n\r\nYes \r\n\r\nSpecify the location of your Apache root directory \r\n\r\n/usr/local/apache \r\n\r\nInstall has detected PHP version 4.2.2 \r\nDoes this look correct? \r\nYes \r\n\r\nYour php.ini is relocated to the /usr/local/Zend/etc directory \r\nand symbolic link from the former place /etc/httpd/php.ini is created. \r\nThe installation completed successfully and your Zend Optimizer \r\nis setup for use.  \r\n\r\n\r\nYou must RESTART your Apache web server for the modifications to take effect \r\n\r\n설치 완료 메시지 지시대로 아파치를 재시작 해줍니다. \r\n[root@www apache_1.3.26]# /usr/local/apache/bin/apachectl restart \r\n\r\n아까 띄웠던 테스트 화면을 다시 Reload 해보면 다음과 내용을 볼 수 있습니다. \r\nZend logo This program makes use of the Zend Scripting Language Engine: \r\nZend Engine v1.2.0, Copyright (c) 1998-2002 Zend Technologies \r\n    with Zend Optimizer v1.3.1, Copyright (c) 1998-2002, by Zend Technologies \r\n\r\n속도 테스트 \r\n\r\n자신의 시스템에서 다음과 같은 PHP파일을 만들어 Optimizer 설치 전과 비교해 보세요.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:40:16',0,'2019-03-23 23:40:16','192.168.219.102','','','','','','','','','','','',''),(23,-23,'',23,0,0,'','','','[Linux] 특정파일 경로 찾기','>>find ./ |grep aaa(찾을파일명) \r\n\r\nfind : 찾기명령어 \r\n./ : 현재 디렉도리 \r\n| : 여려개 명령 실행가능케하는 명령 \r\ngrep : 일정한 단어나 디렉토리를 포함하는 파일이나 디렉토리 포함 \r\naaa : 포함할 파일이나 디렉토리명','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:40:30',0,'2019-03-23 23:40:30','192.168.219.102','','','','','','','','','','','',''),(24,-24,'',24,0,0,'','','','[html] 스타일쉬트 예제','<link rel=\"stylesheet\" href=\"type.css\"> \r\n\r\n============================================================= \r\na:link, a:visited, a:active { text-decoration:none; color:#354364; } \r\na:hover { text-decoration:none; color:#9fadce; } \r\nbody { font-size: 9pt; color:#000000; } \r\ntd, th, li, ul, ol, b, p { font-size: 9pt; } \r\nselect { font-size: 9pt; } \r\ninput { font-size: 9pt; }','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:40:44',0,'2019-03-23 23:40:44','192.168.219.102','','','','','','','','','','','',''),(25,-25,'',25,0,0,'','','','[html/javascript] 팝업창으로 변수값전달하기','<script language=\"JavaScript\" type=\"text/JavaScript\"> \r\n<!-- \r\nfunction open_win(p_info) \r\n{ \r\n    window.open(\'pop_taginfo.php?p_info=\'+p_info,\'_blank\',\'scrollbars=no, resizable=no,height=10\'); \r\n} \r\n//--> \r\n</script> \r\n\r\n============================== \r\n\r\n<a href=\"javascript:open_win(\'<?=$row[value]?>\');\"> <? echo\"$row[value]\" ?> </a>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:40:53',0,'2019-03-23 23:40:53','192.168.219.102','','','','','','','','','','','',''),(26,-26,'',26,0,0,'','','','[WinCE] 플랫폼빌더 에뮬사용','Emulator에서 Custom OS Image 생성하기 \r\ncustom OS image를 생성하기 위한 Platform Wizard를 사용한다. \r\nEmulator를 위한 custom OS image 생성하기 \r\ndevelopment workstation에서 Platform Builder appliation을 실행 \r\nFile -> New Platform -> New Platform Wizard가 나타날때 Next 선택 \r\n사용가능한 BSP의 list에서 EMULATOR: X86을 선택하고 Next 선택 \r\nplatform configuration Web Pad \r\nPlatform name box에서 , \r\nWeb Pad에서 Next 선택 \r\nApplication & Media \r\nNetworking & Communications Next \r\nEmulator에서 Custom OS Image Building \r\nplatform을 생성한 후에, paltform에 기반한 OS image를 build한다. \r\nMyPlatform? platform으로부터 custom OS image를 build한다. \r\n이 tutorial의 목적을 위해 custom OS image를 build하기전에 debug OS image를 선택해야만 한다. 추가로 debug OS image의 size 가 release OS image의 size보다 크므로, 더큰 OS image를 수용하기 위해 환경 변수의 값을 변경해야만 한다. \r\ncustom OS image를 build하기 \r\nBuild -> Set Active Configuration 선택 \r\nplatform configuration의 list에서 MYPLARFORM - EMULATOR: X86 Win32(WCE emulator) Debug선택 \r\nPlatform -> Settings 선택 \r\nBuild Option tab -> Enable Full Kernel Mode 체크 박스가 선택되어 있는지 확인 \r\nEnvironment tab -> New \r\nVariable Name box에서 IMGRAM64라고 넣는다. \r\nVariable Value box에서 1을 넣고 OK \r\nPlatform Settings window 선택 \r\nBuild -> Build Platform 선택 (Build동안 .NET Compact Framework의 포함에 관한 경고 창이 보일 것이다.) \r\nOK 선택 \r\nEmulator에 Connection 설정 및 OS Image 다운로드 \r\nSetup 및 Emulator에 연결을 구성. custom OS image를 다운 받는다. \r\nconnection 설정 및 OS image 다운로드 \r\nTarget -> Configure Remote Connection \r\nServices Tab \r\nServices for active named connection -> Download box -> Emulator 선택 \r\nConfigure 선택 \r\nScreen Size(WxHxD?) 설정(640x480x16). emulator window는 적당하게 보이지 않을 수 있다. \r\nMemory(MB) box에서 64라고 넣던지 선택한다. \r\nKernel Transport box -> Emulator 선택 \r\nSettings tab 선택 \r\nDownload/Initialize Device -> Download Image, Initialize(Jump to Image), Connect to Device 체크 박스가 선택되어 있는지 확인한다. \r\nTarget -> Download/Initialize \r\nKITL Security Warning dialog box에서 Yes선택.(target device가 development workstation에서 flat release dir에 접근을 원할 경우) \r\nMYPLAT~1 - Emulator for Windows CE window에서 OS가 나타날 때까지 기다린다.(대략 1분 정도) \r\nOS가 성공적으로 boot된 후에, Windows CE OS는 MYPLAT~1 - Emulator for Windows CE window에 나타난다. 이제 OS를 debug할 준비가 된것이다. \r\nKernel Debugger를 이용해서 Emulator에서 OS Debugging \r\n지금까지 OS image를 다운로드해서 boot했다. 이제 OS를 debug해 보자. 기본적으로 Platform Builder는 자동으로 OS가 boot될 때, kernel debugger를 시작한다. 그리고 IDE에서 Debug toolbar를 보여준다. \r\nplatform을 debug하기 위해서 먼저 OS를 수행을 중지한다.(OS가 수행중에는 breakpoint를 사용할 수 없으므로) 이제 custom OS를 debug하기 위해서 kernel을 사용한다. \r\nkernel debugger으로 OS debug \r\nIDE의 Debug menu -> Break \r\nFile -> Open \r\n브라우저로 %_WINCEROOT%\\Platform\\Emulator\\Drivers\\Kbdmouse\\Emulkbms에 가서 ps2mouse.cpp를 선택하고 open \r\nEdit -> Find \r\nFind What box -> _move라고 넣는다. -> Find Next \r\nF9키를 눌러 mouse가 움직이는 event에 대해서, source code에 breakpoint를 설정한다. \r\nDebug -> Go \r\ntaskbar -> MYPLAT~1 - Emulator for Windows CE 선택(MYPLAT~1 - Emulator for Windows CE 윈도우를 보여주기 위해) \r\nMYPLAT~1 - Emulator for Windows CE 창으로 cursor를 옮긴다.(breakpoint 활성. IDE 창으로 스위칭. source code에 breakpoint 표시를 보게 된다.) \r\nEdit(IDE) - > Breakpoints \r\n설정한 breakpoint를 제거하기 위해 Remove All을 선택 \r\nDebug -> Go (성공적으로 OS를 중지시켰고 driver들 중에 하나에 breakpoint를 설정하고 활성화했다. 그리고 breakpoin를 제거했다. OS debugging을 멈추기 위해 아래와 같은 단계를 수행) \r\nDebug -> Stop Debugging (창이 나타나서 KdStub?를 disabling하지 않고 debugging을 멈추기를 원하는지 물어본다.) \r\nYes 선택(Tutorial이 목적이므로) -> IDE로 control이 넘어감 \r\nTarget -> Disconnect -> OK \r\nEmulator를 위한 window에서 Emulator메뉴 -> Shut down 선택 \r\nShut Down dialog box에서 Turn off Emulator를 선택하고 OK를 누르면 Emulator를 끄게 된다. \r\nOS image를 localize할 준비가 되었다. \r\nEmulator에서 OS Image Localizing \r\nOS image를 여러 언어로 localize할 수 있다. 이번 단계에서 custom Web Pad OS image를 Germany로 설정해 본다. \r\nOS image localize시키기 \r\nPlatform 메뉴(IDE) -> Settings \r\nSettings For 박스 -> EMULATOR-X86 Win32 (WCE emulator) Debug가 선택되었는지 확인 \r\nLocale tab을 선택 \r\nDefault Language list에서 German을 선택 \r\nPlatform Settings dialog box를 선택하기 위해, OK 선택 \r\nBuild 메뉴에서 Build Platform을 선택(build 동안, .NET Compact Framework을 포함할 것인지를 물어보는 창이 뜬다.) \r\nOK 선택 (OS image를 build하는데 20분 정도 걸린다.) \r\nTarget 메뉴 -> Download/Initialize 선택 (KITL Security Warning dialog box가 나타남) \r\ntutorial의 목적이므로 Yes 선택 (1분 정도 소요. Emulator로 다운로드가 끝나면 application을 생성하고 build할 준비가 되었다.) \r\nApplication 생성 및 구축 \r\nPlatform Builder를 사용해 simple application을 생성 및 build \r\nApplication 생성 및 build \r\nTarget(IDE) -> Disconnect - > OK \r\nYes를 선택해서 KdStub?를 disabling 하지 않고 debugging을 멈추기를 원하는지 확인.(Control을 IDE로) \r\nEmulator 창에서 Emulator 메뉴 -> Shut Down \r\nShut Down dialog box에서 Turn Off Emulator -> OK 선택 (Emulator를 끈다.) \r\nFile -> New Project or File 선택 \r\nProject tab -> WCE Application \r\nProject name box에서 Hello로 치고 OK를 누른다. \r\nA typical \"Hello World!\" application을 선택하고 Finish 선택 \r\nBuild 메뉴에서 application을 build하기 위해 Build Hello.exe를 선택 \r\napplication 생성에 성공. 이제 Emulator에서 application을 실행할 준비가 되었다. \r\nCustom OS Image에서 Application 실행 \r\n새로 생성된 Hello.exe application을 실행. \r\nHello.exe는 OS image에 포함되어 있지 않다. 실행시에 development workstation으로부터 target device로 download. 이렇게 함으로서 전체 OS image를 rebuild하지 않고 application 개발 가능. \r\ncustom OS image에서 application 실행하기 \r\nTarget(IDE) -> Download/Initialize \r\ntutorial의 목적이므로 Yes 선택. (1분 정도 소요. MYPLAT~1 - Emulator for Windows CE 윈도우에 OS가 나타남) \r\nTarget 메뉴 -> Run Programs \r\nAvailable Programs list에서 Hello.exe를 선택하고 Run을 선택 (Hello.exe application이 development workstation에서 Emulator로 다운로드된다. application은 Emulator에서 실행된다.) \r\ntaskbar에서 MYPLAT~1 - Emulator for Windows CE 윈도우에서 실행되는 동안 Hello.exe을 보기위해서 MYPLAT~1 - Emulator for Windows CE을 선택한다. \r\neMbedded Visual C++을 위한 SDK 생성 \r\nplatform을 customized -> OS debug -> paltform을 위한 SDK를 생성하기 위해 Platform Builder를 사용할 수 있다. \r\neMbedded Visual C++ 4.0에서 SDK를 생성 \r\nSDK 생성 및 export \r\nTarget(IDE) -> Disconnect -> OK \r\nYes를 선택해서 KdStub?를 disabling하지 않고 debugging을 멈추기를 원한다는 것을 확인 \r\nEmulator 메뉴 -> Shut Down \r\nShut Down 다이어로그 박스에서 Turn Off Emulator를 선택하고 OK 선택 \r\nPlatform -> Configure SDK \r\nExport SDK Wizard가 나타날 때, Next 선택 \r\nProduct name for MSI installation box에서 MyPlatformSDK?라고 입력한다. \r\nManufacturer name box에서 MyCompany?라고 입력하고 Next 선택 \r\neMbedded Visual C++ 4.0 support radio 버튼이 선택되었는지 확인하고 Next 선택 \r\nCongratulation page의 위에 Customized SDK아래에서 Modify the SDK configuration settings을 선택 \r\nLicense File tab -> Append End User License Agreement 체크 박스를 선택 \r\nEnd User License Agreement Path box에서 EULA(End User License Agreement로 사용하기 원하는 text file의 위치와 이름을 입력한다.(or sample EULA로 사용할려는 브라우저로 text file을 선택하고 Open) \r\n창을 닫기 위해 OK 클릭 \r\nPlatform 메뉴에서 Build SDK를 선택(Export SDK Wizard 다이얼로그 박스는 SDK가 생성되는 동안 정보를 보여준다. OK 선택) \r\nbuild가 끝나면 Done을 선택(Myplatform_sdk.msi 파일에 만든 SDK가 있다. 위치는 %_WINCEROOT%\\Public\\MyPlatform?\\SDK )','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:41:06',0,'2019-03-23 23:41:06','192.168.219.102','','','','','','','','','','','',''),(27,-27,'',27,0,0,'','','','[winapp] AVI, MPEG Spliter','AVI, MPEG Spliter','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:41:24',1,'2019-03-23 23:41:24','192.168.219.102','','','','','','','','','','','',''),(28,-28,'',28,0,0,'','','','[Linux] 리눅스 프로그램 3개','gqmpeg-0.20.0-1.rh8.i386.rpm \r\n\r\ngqview-2.0.1-1.i386.rpm \r\n\r\nmpg321-0.2.10-1.1hl.i386.rpm','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:41:41',1,'2019-03-23 23:41:41','192.168.219.102','','','','','','','','','','','',''),(29,-29,'',29,0,0,'','','','[Windows] 웹마 브라우져 자동로그인 백업방법','1,도움말의 \"자동 로그인 정보 백업과 복구\"를 참조하세요. \r\n\r\n2,백업하시려면,우선 kid.exe파일을 크릭하여-자동로그인레지스트리키백업 을 크릭하면 나타나는 창에-사용자만이 아는 비밀번호를 기입한후-다른이름으로저장창에서 자동로그인레지스트백업 파일이름을 원하는 폴더에(예: 자동로그인정보저장.ini)저장시키고-닫기 \r\n\r\n2,이때 로그인 정보가 기록된 WMLOGIN.INI 파일도 함께 백업해야 합니다. \r\n\r\n3,신버전으로 설치후 WMLOGIN.INI파일을 덮어 씌우고 kid.exe프로그램 크릭-자동로그인레지스트리키복구 를 크릭-앞서 저장한 \"자동로그인레지스트백업 파일\" (예: 자동로그인정보저장.ini)을 선택-비밀번호 확인창에 비밀번호를 기입-확인-닫기. \r\n4,구버전의 WMLOGIN.INI 파일을 webma 폴더에 덥어 씌우세요.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:41:52',0,'2019-03-23 23:41:52','192.168.219.102','','','','','','','','','','','',''),(30,-30,'',30,0,0,'','','','[Linux] 간단한 트래픽 분석 프로그램 (su_traffic)','무언가 거창한 제목이다. 하지만 별 것 아니다. \r\n 실무를 하다보면 급하게 서버의 트래픽을 알고 싶을 때가 있다. 서버 트래픽 분석은 잘 알려진 snmp 프로토콜을 이용하여 mrtg를  사용하면 멋지고 화려하게 모니터링 할 수 있지만, mrtg 설치 작업은 여간 귀찮은 것이 아니다. 만약 잠시가아닌 지속적으로 트래픽을 모니터링 하고 싶다면, 본 강좌를 읽는 것을 중단하고, mrtg 란의 강좌들을 읽기 바란다.\r\n su_traffic 프로그램은 아주 아주 간단한 쉘 프로그램이다. 물론 이 강좌를 쓰고 있는 저자가 만든 프로그램이다. 소스를 분석해서 모든걸 이해 하는 것 도 좋지만, 급한데로 사용하고 나중에 분석하는 것이 좋을 것이다. 그래서 본 강좌에서는 사용법부터 다룰 것이다.\r\n1. 설치\r\n  일단, 본 프로그램을 다운로드한다.\r\nsu_traffic.tar.gz   <== 다운로드\r\n적당한 위치에 복사한다.그리고 압축을 해제한다..\r\ntar xvfpz su_traffic.tar.gz \r\n이런 프로그램은 거의 root만 사용하기 때문에 다음 디렉토리에 설치할 것을 권장한다.\r\n/root/bin\r\n2. 실행\r\n이렇게 간단하게 설치(이건 설치란 말보단 복사가 맞겠죠^^)하고 이제 운영에 들어간다.\r\n다음 명령어를 아무 위치에서 때려 본다.\r\n[root@test bin]# su_traffic \r\n\r\n┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\r\n┃                                                                    ┃\r\n┃  패 키 지 명  : 수퍼유저 유틸리티 Ver 0.9                          ┃\r\n┃  프로그램 명  : 트래픽 모니터링 프로그램 V0.9(su_traffic)          ┃\r\n┃  저  작  권   : 이 프로그램의 저작권은 수퍼유저코리아에 있습니다.  ┃\r\n┃                 이 프로그램의 사용은 허용되나 재배포는 금지합니다. ┃\r\n┃  제  작  자   : 정우영(더리ㅡ,.ㅡ) : doly@superuser.co.kr          ┃\r\n┃  메인사이트   : www.superuser.co.kr                                ┃\r\n┃  주배포사이트 : ftp.superuser.co.kr                                ┃\r\n┃                                                                    ┃\r\n┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\r\n\r\n\r\n사용법 : /root/bin/su_traffic 이더넷디바이스번호 text|html [시간간격]\r\n예) /root/bin/su_traffic eth0 text 60\r\n  위와같이 간단한 설명이 나온다. \r\n여기서 이더넷디바이스번호는 대부분 eth0 또는 eth1 일 것이다. \r\n출력모드는 text 또는 html 으로 설정 가능하다.\r\n 시간 간격은 초 단위로 설정해야 한다. 기본값은 60초 이다. 만약 60초로 설정하면, 60초간 조사하여, 결과를 낸다는 의미이고, 약 60초 마다 조사한다는 의미도 된다.\r\n그럼 다음과 같이 간단하게 기본 옵션을 주어서 실행 시켜 본다.\r\n[root@test bin]# su_traffic eth0 text 60\r\n 날짜     입력            출력\r\n04-02-27 14:25 : 20 KBit/Sec 277 KBit/Sec\r\n04-02-27 14:26 : 22 KBit/Sec 416 KBit/Sec\r\n04-02-27 14:27 : 26 KBit/Sec 555 KBit/Sec\r\n04-02-27 14:28 : 25 KBit/Sec 533 KBit/Sec\r\n04-02-27 14:29 : 19 KBit/Sec 395 KBit/Sec\r\n 위와 같은 결과를 볼 수 있다. 시간 60 초 간격이기 때문에 60초가 지나면 한줄씩 나올것이다.\r\n위의 트래픽을 보면, 입력 트래픽은 약 : 20KBit/Sec이고, 출력은 533KBit/Sec 이다.\r\n 이렇게 중단시키지 않으면, 1분마나 한번씩 계속 남기게 된다. \r\n만약 하루치를 남기고 싶다면 다음과 같이 하면된다.\r\n [root@test bin]# su_traffic eth0 text 60 > /root/traffic.log &\r\n\r\n이렇게 하면 위 출력을 /root/traffic.log파일로 하기 때문에 원하는 만큼 시간이 지난후에 파일을 관찰하면 될것이다.\r\n\r\n\r\n\r\n웹으로 결과 보기>\r\n시스템 관리자라면 서버에 접속하여 결과를 보면 좋겠지만, 다른 사람에게 확인시키거나 좀더 화려한 그래픽으로 보길 원한다면 다음 명령어를 내려본다.\r\n[root@test bin]# su_traffic eth0 html 60 > /home/doly/www/traffic.html &\r\n위 명령어와 다른게 있다면, text대신 html 이 되고, 뒤에 저장되는 디렉토리는 웹에서 접근 가능한 디렉토리가 되어야 한다. 이렇게 해 두고 난 뒤.. 시간이 지났을 때 , 결과를 관찰해 보면... 다음과 같은 화면을 얻을 수 있다.\r\n \r\n\r\n이와 같이 운영하기 바란다. \r\n이 프로그램을 단지 사용만 하고 싶다면 이제 더 이상 강좌를 읽을 필요가 없다.\r\n이젠 이 프로그램이 얼마나 간단하게 작성되었는지 보여 줄 것이다.\r\n \r\n\r\n3. 소스 분석.\r\n핵심은 다음의 자료이다.\r\n[root@test bin]# cat /proc/net/dev\r\nInter-|   Receive                                                |  Transmit\r\n face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed\r\n   lo:2033310139 2236997    0    0    0     0          0         0 2033310139 2236997    0    0    0     0       0      0\r\n  eth0:262141998 1953315617 160910    0 87219     0          0         0 2630588740 4036754123    0    0   0    0     0      0\r\n  eth1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0 \r\n\r\n 뭔가 숫자가 많아서 뭘까 하지만 가만히 보면.. 중요한 것은 지금까지 누적된 받은 자료의 양(bytes)과, 보낸 자료의 양(bytes)을 확인 할 수 있다. 우리가 필요로 하는 자료는 위 두 개의 값일 뿐이다. 그럼 적당한 명령어로 두 자료를 뽑아내야 하고 그리고 정해진 시간을 기다린 후에 다시 그 값을 뽑아내어서 차이만큼을 계산하면 끝나는 것이다. 다음 소스코드를 보자.\r\n #!/bin/bash\r\n\r\n## 인자를 조사하는 것이다. 첫 번째 또는 두 번째 인자가 없으면 다음 화면을 뿌린다.\r\nif [ \"$1\" == \"\" -o \"$2\" == \"\" ] ; then\r\n        echo \"\"\r\n        echo \"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\"\r\n        echo \"┃                                                                    ┃\"\r\n        echo \"┃  패 키 지 명  : 수퍼유저 유틸리티 Ver 0.9                          ┃\"\r\n        echo \"┃  프로그램 명  : 트래픽 모니터링 프로그램 V0.9(su_traffic)          ┃\"\r\n        echo \"┃  저  작  권   : 이 프로그램의 저작권은 수퍼유저코리아에 있습니다.  ┃\"\r\n        echo \"┃                 이 프로그램의 사용은 허용되나 재배포는 금지합니다. ┃\"\r\n        echo \"┃  제  작  자   : 정우영(더리ㅡ,.ㅡ) : doly@superuser.co.kr          ┃\"\r\n        echo \"┃  메인사이트   : www.superuser.co.kr                                ┃\"\r\n        echo \"┃  주배포사이트 : ftp.superuser.co.kr                                ┃\"\r\n        echo \"┃                                                                    ┃\"\r\n        echo \"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\"\r\n        echo \"\"\r\n        echo \"\"\r\n        echo \"사용법 : $0 이더넷디바이스번호 text|html [시간간격]\"\r\n        echo \"예) $0 eth0 text 60\"\r\n        exit 1\r\nfi\r\n# 시간 간격 인자인데 .. 없으면 기본갓으로 60을 설정한다. 있으면 입력한 인자값을 적용한다.\r\nif [ \"$3\" == \"\" ] ; then\r\n        interval=60\r\nelse\r\n        interval=$3\r\nfi\r\nif [ \"$2\" == \"text\" ] ; then\r\n#text 모드일 때 아래와 같은 헤드(??)를 뿌린다.\r\n        echo \" 날짜     입력            출력\"\r\nelse\r\n# html 모드일 때는 html 코드를 뿌린다. 테이블 정의 하고 쬐끔의 디자인^^\r\n        echo \"<table align=center cellSpacing=1 cellPadding=1 border=1 bordercolor=#FFFFFF height=25\r\nbgcolor=#6699CC>\r\n    <tr bgcolor=#FFFFFF valign=middle>\r\n        <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;날&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;</td>\r\n        <td>입력</td>\r\n        <td>출력</td>\r\n    </tr>\"\r\nfi\r\n# 무한루프로 돌린다.\r\nwhile ( true ) ; do\r\n# 지금까지 전송한 양을 구하다.\r\n        in_start=`cat /proc/net/dev | grep $1 | awk -F: \'{print $2}\' | awk \'{print $1 }\'`\r\n        out_start=`cat /proc/net/dev | grep $1 | awk -F: \'{print $2}\'| awk \'{print $9 }\'`\r\n# 인자로 넘겨받은 시간만큼 잔다.\r\n        sleep $interval\r\n# 또 지금까지 전송한 자료의 양들을 구한다.\r\n        in_end=`cat /proc/net/dev | grep $1 | awk -F: \'{print $2}\'| awk \'{print $1 }\'`\r\n        out_end=`cat /proc/net/dev | grep $1 | awk -F: \'{print $2}\'| awk \'{print $9}\'`\r\n# 들어온 양을 계산한다. *8을 해준 것은 단위가 Bit이기 때문이다. 1024를 곱하는 것은 KBit 단위 때문\r\n        in_traffic=$(( ($in_end - $in_start)*8/($interval*1024) ))\r\n        out_traffic=$(( ($out_end - $out_start)*8/($interval*1024) ))\r\n# 오늘 날짜 및 시간을 구한다.\r\n        export today=\"`date \'+%y-%m-%d %k:%M\'`\"\r\nif [ \"$2\" == \"text\" ] ; then\r\n# text 모드일 경우 아래와 같이 출력\r\n        echo $today     : $in_traffic KBit/Sec  $out_traffic KBit/Sec\r\nelse\r\n# html 모드일 경우 아래와 같이 출력 (html 디자인을 바꾸고 싶다면 아래 부부분을 변경하면 더 이뿌게 된다.\r\n        echo \"<tr><td> $today  </td><td><img src=http://superuser.co.kr/linux/doly/su_traffic/bar_in.gif height=9 width=$(($in_traffic/10))> $in_traffic KBit/Sec </td>\"\r\n        echo \"<td><img src=http://superuser.co.kr/linux/doly/su_traffic/bar_out.gif height=9 width=$(($out_traffic/10))> $out_traffic KBit/Sec</td></tr>\"\r\nfi\r\ndone\r\n4. 마치며..\r\n\r\n  이렇게 간단한 쉘 프로그램으로 간단하지만 멋진 트래픽 측정 프로그램을 만들 수 있다. 긴급하게 필요하거나 짧게는 몇초 길게는 몇 달 . 트래픽을 분석 할 수 있을 것이다.  조금 변경하면 mrtg 처럼 멋지게 꾸밀 수 있지만, 너무 복잡하기 때문에 .. 프로그램 짜는 것 보다. mrtg 설치 하는 것이 더 노가다를 적게 하는 일이라 생각하기에 이쯤에서 마무리 한다. \r\n  혹시 이 프로그램에 대한 질문 및 버그를 발견하게 되면, 메일 한통 보내주기 바란다. 메일주소는 doly 골뱅이superuser.co.kr 이다. 메일 주소를 무단 수집해서 스팸메일을 보내는 이를 막기 위해서 위와 같이 표기했으며, 골뱅이 부분은 @ 치환하면 된다.\r\n  이상... 수퍼유저 운영자 doly ...\r\n\r\n- 2004년 4월 17일 정지하는법 추가^^\r\n안녕하세요 정우성님께서 요청해주신 글을 바탕으로 데몬모드 실행시 정지시키는 방법을 알려 드리겠습니다.\r\n특별한 방법은 없으며, 해당 프로세스를 찾아서 죽여주면 됩니다. 이 명령어를 한줄로 쓰면.. 다음과 같습니다.\r\nkill -9 `ps -ef | grep su_traffic | awk \'{printf $2 \" \"}\'`','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:42:34',0,'2019-03-23 23:42:34','192.168.219.102','','','','','','','','','','','',''),(31,-31,'',31,0,0,'','','','[php] A ~ Z 까지 임의이 문자 추출하기','<? \r\n$result = chr(rand(ord(\'A\'), ord(\'Z\'))).chr(rand(ord(\'A\'), ord(\'Z\'))); \r\necho (\" $result \\n \"); \r\n?>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:42:53',0,'2019-03-23 23:42:53','192.168.219.102','','','','','','','','','','','',''),(32,-32,'',32,0,0,'','','','[php] 다중 조건분기문 간단한 알고리즘','list.php에서 \r\n<form action=search.php> \r\n<input type=text name=조건1> \r\n<input type=text name=조건2> \r\n<input type=text name=조건3> \r\n<input tpye=submit> \r\n</form> \r\n이렇게해서 search.php 에서 mysql 검색을 할때, 각 조건들이 각각 있을경우를 따질라고, \r\nif문으로 분기를 시키려니, \r\n=============================== \r\nif(조건1 != null && 조건2 == null && 조건3 == null) { \r\n  $query=\"select count(uid) from log where 필드조건1=\"조건1\"; \r\n} else if(조건1 != null && 조건2 != null && 조건3 == null) { \r\n  $query=\"select count(uid) from log where 필드조건1=\"조건1\" && 필드조건2=\"조건2\"; \r\n} else if ... \r\n=============================== \r\n이렇게 조건들이 많이질수록 각각의 경우가 너무 많아지네요...(ㅠㅠ) \r\n어떻게 간단하게 짧게 하는 수가 없나요? \r\n\r\n==> \r\n$where_arr = array(); \r\nif( 조건1 ) { $where_arr[] = \"필드조건1=$조건1\"; } \r\nif( 조건2 ) { $where_arr[] = \"필드조건2=$조건2\"; } \r\nif( 조건3 ) { $where_arr[] = \"필드조건2=$조건3\"; } \r\n$where = $where_arr ? implode( \" and \", $where_arr ) : \"1=1\"; \r\n$query=\"select count(uid) from log where \".$where;','https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=126827','https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=27047',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:43:32',0,'2019-03-23 23:43:32','192.168.219.102','','','','','','','','','','','',''),(33,-33,'',33,0,0,'','','','[mysql] 깨진 DB 복구 (error : 145)','/usr/local/mysql/data/ \r\n    *.FRM : 테이블 정보 \r\n    *.MYI : 인덱스 정보 \r\n    *.MYD : 데이타 정보 \r\n\r\n#myisamchk 옵션을 보면 \r\n    # -r -o로 복구가 안되면다 -f 옵션을 이용한다. \r\n    -f, --force Overwrite old temporary files. \r\n\r\n    #복구 \r\n    -r, --recover Can fix almost anything except unique keys that aren\'t unique. \r\n\r\n    #안전하게 복구 \r\n    -o, --safe-recover Uses old recovery method; Slower than \'-r\' but can \r\n    handle a couple of cases where \'-r\' reports that it \r\n    can\'t fix the data file. \r\n\r\n    #데이터 정렬 및 속도 증가 -R1 저도 주면 될듯 싶네요 \r\n    -R, --sort-records=# \r\n    Sort records according to an index. This makes your \r\n    data much more localized and may speed up things \r\n\r\n============================= \r\n[참고] Can\'t open file: \'zetyx_board_real.MYD\'. (errno: 145) 이런 에러 뜨시는 분..  \r\n\r\n간단히 말씀드려 테이블이 깨졌다고 표현하죠.. \r\n\r\n하지만 너무 낙담하지 마시길.. ^^ \r\n\r\n(contents update - 2001 / 10 / 16) \r\n\r\nmyisamchk 란 놈을 이용해서 어느정도 해결할 수 있죠.. \r\n\r\n절차를 설명드리겠습니다. \r\n\r\n1. root 권한으로 로그인 (su) \r\n\r\n2. mysqladmin -uroot -p shutdown (mysql 데몬을 죽인다.) \r\n\r\n3. DB가 있는 곳으로 이동.. \r\n\r\n4. myisamchk 테이블 ---> 문제가 있는지 체크해줍니다. \r\n\r\n예) \r\nmyisamchk /var/lib/mysql/test/zetyx_board_real \r\n\r\n5. 만일의 사태에 대비해서 백업(mysqldump 말고 화일 자체를 다른 곳에 복사) \r\n\r\n6.  문제가 있다면 복구옵션으로 복구 \r\n\r\nmyisamchk -r /var/lib/mysql/test/zetyx_board_real \r\n\r\n\r\n7. safe_mysqld & (mysql 데몬 시동) \r\n이렇게 하면 복구가 끄읏!! \r\n\r\n8. 웹상에서 문제가 있는지 없는지 확인한다.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:43:45',0,'2019-03-23 23:43:45','192.168.219.102','','','','','','','','','','','',''),(34,-34,'',34,0,0,'','','','[Linux/Ubuntu] 한글입력, 한/영 한자키, 글꼴 설정','1. 로케일 언어 설정 \r\n코드: \r\n$ sudo dpkg-reconfigure locales \r\n\r\n[*] en_US.UTF-8 UTF-8 \r\n[*] ko_KR.EUC-KR EUC-KR \r\n[*] ko_KR.UTF-8 UTF-8 \r\n3가지 선택(나머지는 모두 해제)후 기본 언어로 ko_KR.UTF-8 UTF-8 를 선택 \r\n\r\n\r\n2. 한글 입력기 설정 \r\n: 나비(XIM 한글 입력기) 설치 \r\n\r\n코드: \r\n$ sudo apt-get install nabi \r\n\r\n: gnome setting \r\n\r\n코드: \r\n$ cd ~ \r\n$ vi .gnomerc \r\nexport XMODIFIERS=\"@im=nabi\" \r\nexport GTK_IM_MODULE=xim \r\nexport VTE_USE_XFT=0 \r\n\r\n: 나비 자동 실행 설정 \r\n\r\n메뉴에서 시스템 -> 기본 설정 -> 세션 \r\n-> 시작 프로그램 탭에서 + 더하기(A) 버튼을 누르고 /usr/bin/nabi 를 등록합니다. \r\n\r\n\r\n3. 폰트 및 볼드패치 설정 \r\n: 윈도우 폰트인 굴림,바탕,돋움 폰트 다운 (참고 : 아래 코드는 한줄입니다.) \r\n\r\n코드: \r\n$ wget -c ftp://ftp.hancom.com/pub/HancomLinux/linux/i386/desktop2003/os/Hancom/RPMS/hanyang-ttf-2.0-1hl.noarch.rpm \r\n\r\n: .ttf 폰트만 압축 해제 \r\n\r\n메뉴에서 위치 -> 내폴더 -> 마우스로 hanyang-ttf-2.0-1hl.noarch.rpm 더블클릭 \r\n-> 풀기 선택 -> 디렉토리 부분에 \'폴더 만들기(L)\'를 선택해 temp라는 폴더를 만듬 \r\n-> \'파일(F)\' 선택해서 *.ttf 입력하고, 오른쪽의 \'동작\' 부분에서 \r\n-> 폴더 다시 만들기(E) 를 선택 해제 하면 temp 디렉토리에 *.ttf만 풀립니다. \r\n\r\n: 한글 폰트 등록 \r\n\r\n코드: \r\n$ cd /usr/share/fonts/truetype \r\n$ sudo mkdir hanyang \r\n$ cd hanyang \r\n$ sudo mv ~/temp/*.ttf . \r\n$ sudo chown root.root *.ttf \r\n$ sudo mkfontdir \r\n$ cd .. \r\n$ pwd \r\n/usr/share/fonts/truetype \r\n$ sudo vi font.cache-1 \r\n\"hanyang\" 0 \".dir\" \r\n$ sudo fc-cache \r\n\r\n이제 메뉴에서 시스템 -> 기본 설정 -> 글꼴 을 선택하면 \r\nGulim, Dotum, Batang 폰트를 볼 수 있습니다. \r\n\r\n: 볼드 패치 패키지 설치 \r\n\r\ndownload Xft patch (  libxft2_2.1.2-6ubuntu1_i386.deb  ) \r\n\r\n설치 \r\n\r\n코드: \r\n$ sudo dpkg -i libxft2_2.1.2-6ubuntu1_i386.deb  \r\n\r\n: 글꼴 설정 파일 수정 \r\n\r\n코드: \r\n$ gedit ~/.fonts.conf \r\n\r\n코드: \r\n<?xml version=\"1.0\"?> \r\n<!DOCTYPE fontconfig SYSTEM \"fonts.dtd\"> \r\n<!-- ~/.fonts.conf for per-user font configuration --> \r\n<fontconfig> \r\n\r\n<match target=\"font\"> \r\n  <test qual=\"any\" name=\"family\"> \r\n    <string>Gulim</string> \r\n    <string>GulimChe</string> \r\n    <string>Batang</string> \r\n    <string>BatangChe</string> \r\n    <string>Datum</string> \r\n    <string>DatumChe</string> \r\n    <string>Gungsuh</string> \r\n    <string>GungsuhChe</string> \r\n    <string>Baekmuk Batang</string> \r\n    <string>Baekmuk Dotum</string> \r\n    <string>Baekmuk Gulim</string> \r\n    <string>Baekmuk Headline</string> \r\n  </test> \r\n  <test name=\"pixelsize\" compare=\"more_eq\"><int>8</int></test> \r\n  <test name=\"pixelsize\" compare=\"less_eq\"><int>14</int></test> \r\n  <edit name=\"antialias\" mode=\"assign\"><bool>false</bool></edit> \r\n  <edit name=\"globaladvance\"><bool>false</bool></edit> \r\n  <edit name=\"spacing\"><int>0</int></edit> \r\n</match> \r\n\r\n<!-- \r\n  Serif faces \r\n --> \r\n        <alias> \r\n                <family>Bitstream Vera Serif</family> \r\n                <family>Times</family> \r\n                <family>Times New Roman</family> \r\n                <family>Nimbus Roman No9 L</family> \r\n                <family>Luxi Serif</family> \r\n                <family>Kochi Mincho</family> \r\n                <family>AR PL SungtiL GB</family> \r\n                <family>AR PL Mingti2L Big5</family> \r\n                <family>BatangChe</family> \r\n                <family>FreeSerif</family> \r\n                <default><family>serif</family></default> \r\n        </alias> \r\n<!-- \r\n  Sans-serif faces \r\n --> \r\n        <alias> \r\n                <family>Bitstream Vera Sans</family> \r\n                <family>Helvetica</family> \r\n                <family>Arial</family> \r\n                <family>Verdana</family> \r\n                <family>Nimbus Sans L</family> \r\n                <family>Luxi Sans</family> \r\n                <family>Kochi Gothic</family> \r\n                <family>AR PL KaitiM GB</family> \r\n                <family>AR PL KaitiM Big5</family> \r\n                <family>Gulim</family> \r\n                <family>SimSun</family> \r\n                <family>FreeSans</family> \r\n                <default><family>sans-serif</family></default> \r\n        </alias> \r\n<!-- \r\n  Provide required aliases for standard names \r\n--> \r\n        <alias> \r\n                <family>serif</family> \r\n                <prefer> \r\n                        <family>Bitstream Vera Serif</family> \r\n                        <family>Times New Roman</family> \r\n                        <family>Nimbus Roman No9 L</family> \r\n                        <family>Luxi Serif</family> \r\n                        <family>Times</family> \r\n                        <family>Frank Ruehl</family> \r\n                        <family>Kochi Mincho</family> \r\n                        <family>AR PL SungtiL GB</family> \r\n                        <family>AR PL Mingti2L Big5</family> \r\n                        <family>BatangChe</family> \r\n                        <family>FreeSerif</family> \r\n                </prefer> \r\n        </alias> \r\n        <alias> \r\n                <family>sans-serif</family> \r\n                <prefer> \r\n                        <family>Bitstream Vera Sans</family> \r\n                        <family>Verdana</family> \r\n                        <family>Nimbus Sans L</family> \r\n                        <family>Luxi Sans</family> \r\n                        <family>Arial</family> \r\n                        <family>Helvetica</family> \r\n                        <family>Nachlieli</family> \r\n                        <family>Kochi Gothic</family> \r\n                        <family>AR PL KaitiM GB</family> \r\n                        <family>AR PL KaitiM Big5</family> \r\n                        <family>Gulim</family> \r\n                        <family>SimSun</family> \r\n                        <family>FreeSans</family> \r\n                </prefer> \r\n        </alias> \r\n        <alias> \r\n                <family>monospace</family> \r\n                <prefer> \r\n                        <family>Bitstream Vera Sans Mono</family> \r\n                        <family>Andale Mono</family> \r\n                        <family>Courier New</family> \r\n                        <family>Luxi Mono</family> \r\n                        <family>Nimbus Mono L</family> \r\n                        <family>Miriam Mono</family> \r\n                        <family>Kochi Gothic</family> \r\n                        <family>AR PL KaitiM GB</family> \r\n                        <family>GulimChe</family> \r\n                        <family>FreeMono</family> \r\n                </prefer> \r\n        </alias> \r\n\r\n<!-- \r\n한글폰트와 영문폰트 매칭시키기 \r\n--> \r\n<match target=\"pattern\"> \r\n        <test name=\"family\"> \r\n                <string>ProFontWindows</string> \r\n        </test> \r\n        <edit name=\"family\" mode=\"append\" binding=\"strong\"> \r\n                <string>Gulim</string> \r\n        </edit> \r\n</match> \r\n\r\n<match target=\"font\"> \r\n  <test name=\"weight\" compare=\"less_eq\"> \r\n    <const>medium</const> \r\n  </test> \r\n  <test target=\"pattern\" name=\"weight\" compare=\"more\"> \r\n    <const>medium</const> \r\n  </test> \r\n  <edit name=\"weight\" mode=\"assign\"> \r\n    <const>bold</const> \r\n  </edit> \r\n</match> \r\n\r\n</fontconfig> \r\n\r\n\r\n4. 한/영, 한자키 설정 \r\n: 한/영, 한자키를 인식하도록 하기 위한 명령어.. \r\n\r\n코드: \r\n$ sudo setkeycodes 71 122 \r\n$ sudo setkeycodes 72 123 \r\n\r\n: xev는 키보드의 키값을 보여주는 프로그램입니다. \r\n\r\n코드: \r\n$ xev \r\n\r\n프로그램이 뜨면 한/영, 한자키를 눌러서 터미널창에 보여지는 값을 확인합니다. \r\n(보통 한/영키는 210 이나 122 , 한자키는 209 혹은 121 값으로 나타납니다.) \r\n\r\n: 해당값에 따라 아래와 같이 입력하면 한/영, 한자키가 사용가능하게 됩니다. \r\n\r\n코드: \r\n$ xmodmap -e ’keycode 210 = Hangul’ \r\n$ xmodmap -e ’keycode 209 = Hangul_Hanja’ \r\n\r\n부팅시 자동적용을 위한 설정 \r\n\r\n: Xmodmap 파일을 만들어 두줄을 입력합니다. \r\n\r\n코드: \r\n$ vi ~/.Xmodmap \r\nkeycode 210 = Hangul \r\nkeycode 209 = Hangul_Hanja \r\n\r\n: bootmisc.sh 파일을 열어서 두 줄을 삽입합니다. \r\n\r\n코드: \r\n$ sudo vi /etc/init.d/bootmisc.sh \r\nsetkeycodes 71 122 \r\nsetkeycodes 72 123 \r\n\r\n첫번째 Xmodmap 파일은 개인 설정 파일로 만든것으로 우분투에서는 설정 후 \r\n첫 부팅 (혹은 X윈도우 재시작) 시에 설정 파일을 불러들일 것인지 묻는데 추가를 \r\n선택해주시면 다음부터는 자동으로 불러들이게 됩니다. \r\n(참고로 .파일명 은 개인 사용자의 설정 파일로서 사용자 로그인시 자동으로 불러들여 \r\n적용되는 파일들 입니다. ls -all 을 해보면 많은 설정 파일 및 디렉토리들이 \r\n있는것을 확인하실 수 있을겁니다.) \r\n\r\n두번째 bootmisc.sh 파일에 추가해준 두줄은 슈퍼유저 권한이 필요한 명령어이기 때문에 \r\n부팅시 실행되는 스크립트 명령 파일에 같이 실행될 수 있도록 설정한 것입니다. \r\n(꼭 bootmisc.sh 파일이 아니더라도 부팅시 설정이 적용될 수만 있게 한다면 \r\n개별적으로 쉘스크립트를 만들어서 사용하셔도 됩니다.)','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:44:01',0,'2019-03-23 23:44:01','192.168.219.102','','','','','','','','','','','',''),(35,-35,'',35,0,0,'','','','[Linux] apt & dpkg 간단 사용법','자주 쓰는 APT문 # \r\n\r\napt-get install <패키지> \r\n\r\n지정된 <패키지>와 더불어 의존적인 패키지들까지 다운로드해서 설치하거나 판올림한다. 이것은 이미 설치된 <패키지>에 대해서 hold된 상태를 해제할 수 있다. hold상태에 관해서는 아래를 보기 바란다. \r\n\r\napt-get remove [--purge] <패키지> \r\n\r\n지정된 <패키지>와 더불어 의존적인 패키지들까지 삭제한다. --purge 옵션은 패키지의 잔재까지도 말끔히 제거할 때 함께 쓴다. 자세한 정보는 dpkg -P 에 관해 찾아보기 바란다. \r\n\r\napt-get update \r\n\r\n데비안 미러서버로부터 패키지 목록정보들을 갱신한다. 특정 패키지를 설치할 때 또는 /etc/apt/sources.list의 내용이 변경되었을 때는 적어도 한번은 실행해 주어야 한다. \r\n\r\napt-get upgrade [-u] \r\n\r\n설치된 모든 패키지들을 최신판으로 판올림시켜 주며, 새로 올라온 패키지를 설치하거나 오래된 패키지를 삭제하지는 않는다. 만약 특정 패키지의 의존성에 변화가 생겼거나 새 패키지 설치를 필요로 하는 경우라면 해당된 패키지를 판올림하지 않으며, 대신 hold(잠금) 상태로 바꾼다. apt-get upgrade는 hold 상태인 패키지를 판올림하지 않을 것이다.(이것이 hold(잠금)의 의미이기도 하다.) 패키지를 손수 hold 상태로 설정하는 방법에 관해서는 아래를 참고하도록 한다. \r\n-u 옵션을 쓰면 판올림될 패키지목록을 확인할 수 있다. \r\n\r\napt-get dist-upgrade \r\n\r\n의존성 관계들을 만족시키기 위해서 패키지들을 새로 설치하거나 삭제하는 점만 빼고 apt-get upgrade와 비슷한 기능을 수행한다. \r\n\r\napt-cache search <패턴> \r\n\r\n지정된 <패턴>과 일치하는 패키지들과 패키지설명부(description)를 검색한다. \r\n\r\napt-cache show <패키지> \r\n\r\n지정된 <패키지>에 대한 전체설명을 보여준다. \r\n\r\napt-cache showpkg <패키지> \r\n\r\n지정된 <패키지>뿐만 아니라 다른 패키지와의 연관성까지도 상세하게 보여준다. \r\n\r\n1. dselect \r\n2. console-apt \r\n3. aptitude \r\n4. gnome-apt \r\nAPT에 시각적인 요소를 가미한 프런트-엔드 프로그램 종류(이것들중의 일부는 패키지에 자체적으로 포함되어 있을 수도 있다. 그러한 것들은 사용전에 반드시 설치되어 있어야 한다.) dselect는 분명히 가장 막강한 성능을 지닌 프로그램인데다, 제일 오래되었고 제일 사용하기 까다롭기도 하다. \r\n\r\n[edit] \r\n자주 쓰는 Dpkg문 # \r\n\r\ndpkg -i <패키지.deb> \r\n\r\n데비안 패키지 파일을 설치한다; 이를 테면 유저가 직접 다운로드한 패키지 파일. \r\n\r\ndpkg -c <패키지.deb> \r\n\r\n<패키지.deb> 또는 .deb파일에 든 내용물을 목록형식으로 보여준다. \r\n\r\ndpkg -I <패키지.deb> \r\n\r\n<패키지.deb> 또는 .deb파일로부터 패키지 정보를 추출한다. \r\n\r\ndpkg -r <패키지> \r\n\r\n지정된 <패키지>를 시스템에서 삭제한다. \r\n\r\ndpkg -P <패키지> \r\n\r\n지정된 <패키지>를 시스템에서 말끔히 삭제한다. remove와 purge의 차이는 remove가 데이터와 실행파일만 지우는 반면, purge는 추가적인 각종 환경설정 파일들까지도 지우는 점이다. \r\n\r\ndpkg -L <패키지> \r\n\r\n<패키지>를 통해 설치된 모든 파일의 목록을 제공한다. .deb 파일의 내용도 확인하려면 dpkg -c도 참고하기 바란다. \r\n\r\ndpkg -s <패키지> \r\n\r\n시스템에 설치된 <패키지>에 관한 정보를 보여준다. 데비안 패키지 저장소에서 패키지 정보를 보여주는 apt-cache show와 .deb파일로부터 패키지 정보를 추출해서 보여주는 dpkg -I도 참고하기 바란다. \r\n\r\ndpkg-reconfigure <패키지> \r\n\r\n이미 설치된 <패키지>가 debconf를 쓰는 경우 그것을 이용해서 다시 설정해준다. \r\n(debconf는 패키지 설치시 일관적인 설정 인터페이스를 제공한다.) front-end(역자주: ncurse방식의 텍스트 그래픽 설정을 따를것인가, 아니면 gnome그래픽 대화상자 설정을 따를 것인가, 아니면 그냥 콘솔명령행을 따를 것인가 등..)를 바꾸거나 설정중에 뜨는 질문의 순서를 바꾸기 위해서 debconf 자체를 재설정할 수도 있다. \r\n예를 들어, 대화상자를 쓰는 프런트-엔드를 쓰려면 아래처럼 실행하면 된다: \r\n\r\n dpkg-reconfigure --frontend=dialog debconf \r\n\r\n\r\necho ``<패키지> hold`` | dpkg --set-selection \r\n\r\n<패키지>를 hold(잠금)상태로 둔다.(명령행 방식) \r\n\r\ndpkg --get-selection ``<패키지>`` \r\n\r\n<패키지>의 현재 상태를 얻는다. \r\n\r\ndpkg -S <파일> \r\n\r\n지정한 <파일>을 패키지 데이터베이스에서 검색해서 그것을 포함하고 있는 패키지들을 알려준다. \r\n\r\n[edit] \r\n소스로부터 데비안 패키지 만들기 # \r\n\r\napt-get source [-b] <패키지> \r\n\r\n지정한 <패키지>와 일치하는 소스패키지를 다운로드해서 푼다. 이것이 제대로 작동하려면 /etc/apt/sources.list파일 내용에 deb-src가 존재해야 된다. 루트로 로그인한 상태에서 \'-b\' 옵션을 곁들이면 (가능한 경우) 패키지를 자동으로 빌드해준다. \r\n\r\napt-get build-dep <패키지> \r\n\r\n지정된 소스 <패키지>를 빌드할 때 반드시 필요한 패키지들을 다운로드해서 설치해준다. 이 기능은 apt버전 0.5버전과 이후 버전에만 적용된다. 현재로선 우디(woody) 이상의 버전에서 모두 작동한다. 오래된 버전의 apt를 쓰고 있는 경우, 빌드 의존관계를 확인할 수 있는 가장 쉬운 방법은 소스 패키지 디렉토리에서 debian/control 파일을 확인하는 것이다. \r\n이 명령은 \'apt-get source -b\'명령과 함께 자주 쓰인다. 이를 테면 아래처럼 실행할 경우: \r\n\r\napt-get build-dep <패키지> \r\napt-get source -b <패키지> \r\n\r\n소스 패키지와 의존관계에 딸린 패키지들을 모두 다운로드한 다음, 소스패키지 빌드를 시도한다. \r\n\r\ndpkg-source -x <패키지.dsc> \r\n\r\n소스 패키지를 직접 다운로드하면 .orig.tar.gz(또는 데비안 기반일 경우 .tar.gz로), .dsc, .diff.gz(데비안 기반이 아닐 경우)형태를 띤 파일이 들어있다. 이런 경우에는 이 명령을 .dsc 파일에 적용시킴으로써 소스패키지를 풀 수 있다. \r\n\r\ndpkg-buildpackage \r\n\r\n데비안소스트리로부터 데비안 패키지를 빌드한다. 이 명령을 제대로 실행시키려면 작업경로가 소스트리의 메인 디렉토리이어야 한다. \r\n사용예: \r\n\r\ndpkg-buildpackage -rfakeroot -uc -b \r\n\r\n\'-rfakeroot\' 옵션은 root 권한(소유권 획득을 목적으로)을 흉내내기 위해서 fakeroot 프로그램을 쓸 수 있도록 한다. \'-uc\'는 changelog에 대해서 암호화 서명을 하지 않게 함을 의미하며, \'-b\'는 바이너리 패키지만 빌드함을 의미한다. \r\n\r\ndebuild \r\n\r\nlintian과 gpg를 함께 쓰는 경우처럼, dpkg-buildpackage와 함께 쓰이는 유용한 wrapper 스크립트로서 fakeroot 사용여부를 스스로 판단한다. \r\n\r\n[edit] \r\n의존성 고치기 # \r\n\r\ndpkg --configure --pending \r\n\r\napt-get install, upgrade, 또는 dist-upgrade 명령 실행중에 dpkg가 오류와 함께 종료되었을 때 이 명령을 통해 이미 풀린 패키지들에 대해서 설정할 수 있도록 시도한다. \r\n(역자주: 이 명령은 dselect 메뉴에서 Config을 선택했을 때도 실행된다.) \r\n그런 다음 apt-get install, upgrade, 또는 dist-upgrade -f를 실행하고, apt-get install, upgrade, 또는 dist-upgrade -f를 필요한 만큼 반복실행해라. 이렇게 하면 의존관계로 인해 발생하는 대부분의 문제점들을 해결할 수 있다. (만약, 어떠한 이유 때문에 특정 패키지가 언급되면 그 패키지를 설치하거나 지워야한다.) \r\n\r\n* apt-get install -f \r\n* apt-get upgrade -f \r\n* apt-get dist-upgrade -f \r\n위의 명령중에 어느 한가지를 실행하면 스스로 의존성 문제를 해결하려고 한다. \'apt-get install -f\' 는 <패키지>인자를 넣지 않고 그냥 실행함을 유의하기 바란다. \r\n\r\n-------------------------- \r\n* 설치되어있는 패키지 검색 \r\ndpkg -l | grep 패키지명 \r\n\r\n* 의존성 걸린 패키지 삭제 \r\ndpkg -P --force-depends 패키지명','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:44:19',0,'2019-03-23 23:44:19','192.168.219.102','','','','','','','','','','','',''),(36,-36,'',36,0,0,'','','','[html/javascript] 용인/횡성 View (embed 속성예제)','용인/횡성 View (embed 속성예제) \r\n\r\n=================================== \r\n<html> \r\n<head> \r\n<title>Cam-view</title> \r\n<script language=\"javascript\"> \r\n<!-- \r\n        function play1() { \r\n                        WM1.play(); \r\n                } \r\n//--> \r\n</script> \r\n\r\n<script language=\"javascript\"> \r\n<!-- \r\ndocument.write(\'<input type=text size=20 name=time1 readonly>\'); \r\n\r\nfunction fn01() \r\n{ \r\nvar vn_date_today = new Date(); \r\nvar vn_hour = vn_date_today.getHours(); \r\nvar vn_minute = vn_date_today.getMinutes(); \r\nvar vn_second = vn_date_today.getSeconds(); \r\nvar vn_str=\'\'; \r\n\r\nif ( vn_hour <= 12 ) { vn_hour = \'오전 \'+vn_hour; } \r\nif ( vn_hour > 12 ) { vn_hour = \'오후 \'+(vn_hour-12); } \r\nif ( vn_minute < 10 ) { vn_minute = \'0\'+vn_minute; } \r\nif ( vn_second < 10 ) { vn_second = \'0\'+vn_second; } \r\n\r\nvn_str = vn_hour+\':\'+vn_minute+\':\'+vn_second; \r\n//vn_str = vn_hour+\':\'+vn_minute; \r\n\r\ntime1.value = vn_str; \r\ntimer_id = setTimeout(\"fn01()\",1000); \r\n} \r\n\r\nfn01(); \r\n//--> \r\n</script> \r\n\r\n</head> \r\n\r\n<body bgcolor=\"#FFFFFF\"> \r\n<table width=640 cellpadding=4 cellspacing=1 bgcolor=D4CDEC> \r\n  <tr bgcolor=#000000> \r\n          <td width=\"240\"><object classid=\"CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95\" id=\"WM1\" width=\"240\" height=\"180\"> \r\n      <param name=\"FileName\" value=\"http://61.38.62.251/play1.asf\"> \r\n              <param name=\"AutoStart\" value=\"true\"> \r\n              <param name=\"ShowControls\" value=\"false\"> \r\n              <param name=\"ShowTracker\" value=\"false\"> \r\n              <param name=\"ShowDisplay\" value=\"false\"> \r\n              <param name=\"ShowGotoBar\" value=\"false\"> \r\n              <param name=\"ShowStatusBar\" value=\"true\"> \r\n            </object> \r\n          <a href=# class=\'autolink\' style=\"cursor:hand\" onClick=\"play1();blur();\">▶</a>&nbsp;&nbsp; \r\n          <a href=# class=\'autolink\' style=\"cursor:hand\" onClick=\"stop1();blur();\">■</a> \r\n          </td> \r\n    </tr>    \r\n    \r\n</table> \r\n</body> \r\n</html>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:44:46',2,'2019-03-23 23:44:46','192.168.219.102','','','','','','','','','','','',''),(37,-37,'',37,0,0,'','','','[Windows] AVI 삭제가 안될때','윈도 XP를 처음 설치한 후에 가끔 AVI를 보고 삭제가 되지 않는 경우가 있습니다. \r\n재부팅을 해도 안되고 어떤 수를 써도 처리할 수가 없지요. \r\n\r\n이는 XP의 버그 중 하나로서, 다음과 같이 해결합니다. \r\n\r\n1. [시작] 버튼에서 [실행]을 누르고 regedit를 입력해서 실행 \r\n2. \r\nHKEY_LOCAL_MACHINE -> \r\nSOFTWARE -> \r\nClasses -> \r\nCLSID -> \r\n{87D62D94-71B3-4b9a-9489-5FE6850DC73E} \r\n에 들어가면 \r\n\r\nInProcServer32 \r\n\r\n라는 폴더가 있다. 이 폴더를 삭제. \r\n\r\n이후에는 삭제가 안 되던 AVI 파일이 쉽게 삭제될 것입니다.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:44:58',0,'2019-03-23 23:44:58','192.168.219.102','','','','','','','','','','','',''),(38,-38,'',38,0,0,'','','','[Linux/Ubuntu] 팁-창설정/totem자막보기/mplayer자막보기','- 창 내용 움직일때 안보이게 하는 방법 \r\n  ; 프로그램-시스템도구-설정편집기-apps-metacity-general-reduced_resource 체크하기 \r\n\r\n-------------------------------------- \r\n\r\n- totem 플레이어 자막보기 \r\n\r\n*win32 코덱 설치 \r\n$ vi /etc/apt/sources.list \r\n... \r\ndeb ftp://ftp.nerim.net/debian-marillat stable main \r\ndeb ftp://ftp.nerim.net/debian-marillat unstable main \r\ndeb ftp://ftp.nerim.net/debian-marillat testing main \r\n... \r\n$ sudo apt-get update \r\n$ sudo apt-get install w32codecs \r\n\r\n*플레이어 설치 \r\n$ sudo apt-get install totem-xine 또는 $ sudo apt-get install xine-ui \r\n\r\n*truefont에서 xine font 만들기 \r\nhttp://xinehq.de/index.php/releases 에서 xine-lib 다운로드 \r\n$ tar -xvzf xine-lib-1.0.tar.gz \r\n$ cp xine-lib-1.0/misc/xine-fontconv.c scratch/ \r\n$ cd scratch(임의의 디렉토리 - 컴파일용) \r\n$ sudo apt-get install libfreetype6-dev \r\n$ gcc xine-fontconv.c -o xine-fontconv `freetype-config --cflags --libs` -lz \r\n은돋음을 자막폰트로 사용한다면 \r\n$ sudo apt-get install ttf-unfonts \r\n$ cp /usr/share/fonts/truetype/unfonts/UnDotum.ttf . \r\n$ ./xine-fontconv UnDotum.ttf UnDotum iso-8859-1 cp949 \r\n$ mkdir ~/.xine/fonts \r\n$ cp UnDotum*.gz ~/.xine/fonts \r\n\r\n*한글자막 설정 \r\ntotem-xin: \r\n$ vi ~/.gnome2/totem_config \r\n\r\nxin-ui: \r\n$ vi ~/.xine/config \r\n설정파일은 최소한 플레이어를 한번이상 실행해야 생성됩니다 \r\n... \r\n# font for subtitles \r\n# string, default: sans \r\n#subtitles.separate.font:sans \r\nsubtitles.separate.font:UnDotum \r\n\r\n# encoding of the subtitles \r\n# string, default: iso-8859-1 \r\n#subtitles.separate.src_encoding:iso-8859-1 \r\nsubtitles.separate.src_encoding:cp949 \r\n... \r\n\r\n*실행 \r\nApplications->Sound & Video->Totem Movie Player \r\nApplications->Sound & Video->xine \r\n\r\n-------------------------------------- \r\n\r\n-mplayer 자막보기 \r\n~/.mplayer/config 설정 \r\n\r\nfont = /usr/share/fonts/truetype/unfonts/UnBatang.ttf \r\nunicode = 1 \r\nvo = xv \r\nframedrop = yes \r\nsubfont-text-scale = 3 \r\nexpand = -1:430 \r\nsubcp = cp949 \r\nsubfont-outline = 3','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:45:11',0,'2019-03-23 23:45:11','192.168.219.102','','','','','','','','','','','',''),(39,-39,'',39,0,0,'','','','[Linux/Opera] 오페라 브라우져 팁 모음','- opera 브라우져에서 url 입력시 자동완성을 탭으로 선택하기 \r\n\r\nEdit Operas keyboard setup like this: \r\n\r\n1. Search for \"tab\" in quick find. \r\n2. Delete all key bindings for the key \"tab\" (not \"tab shift\" or other combinations) \r\n3. Create a new entry in the \"Application\" section binding \"tab\" to the action: \r\n\r\nNext line | Focus next widget \r\n\r\n------------------------------------------------------------- \r\n\r\n- opera 브라우져 한글파일명 이미지 보이게하기 \r\n\r\n오페라에서는 도구 > 환경설정 > 고급설정 > 네트워크로 가시면 \"국제 웹주소 UTF-8 인코딩 사용\"이 있습니다. \r\n여기서 체크 해제 하시면 잘보이더군요.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:45:22',0,'2019-03-23 23:45:22','192.168.219.102','','','','','','','','','','','',''),(40,-40,'',40,0,0,'','','','[Windows] XP cmd에서 ip주소 바꾸기','빈 텍스트파일을 열어 다음과같이 입력하고 확장자를 bat 로 하여 저장합니다.- ex) 회사.bat \r\n\r\nnetsh -c int ip set address name=\"로컬 영역 연결\" source=static addr=11.11.11.11 mask=255.255.255.0 gateway=11.11.11.1 gwmetric=0 \r\n\r\n바꿔야하는 IP마다 위와같이 파일을 만들고 배치파일을 실행하면 IP변경 끝~~ \r\n\r\n\r\n내용을 간단히 설명하자면 \r\n\r\nname : 변경하고자하는 interface (보통 \"로컬 영역 연결\" 이라고 되어있습니다.) \r\n- 내 내트워크환경->오른쪽 클릭->속성 에서 확인할 수 있습니다. \r\naddr : 변경하고자하는 IP주소 \r\nmask : 변경하고자하는 subnetmask \r\ngateway : 변경하고자하는 gateway \r\n\r\n입니다. \r\n\r\n자동IP일 경우는 \r\n\r\nnetsh -c int ip set address name=\"로컬 영역 연결\" source=dhcp \r\n\r\n로 사용하면 됩니다. \r\n\r\n게이트웨이를 설정하지 않을경우 \r\nnetsh -c int ip set address name=\"로컬 영역 연결\" source=static addr=11.11.11.11 mask=255.255.255.0 gateway=none \r\n(gateway=none 설정, gwmetric 은 설정하지 않음) \r\n\r\n예를 들어 노트북을 회사와 집에서 사용할 경우 \r\n회사에서는 IP : 111.111.111.111 , MASK : 255.255.255.0 , GW : 111.111.111.1 을 사용하고 \r\n집에서는 자동IP를 쓴다면 \r\n\r\n회사.bat \r\nnetsh -c int ip set address name=\"로컬 영역 연결\" source=static addr=11.11.11.11 mask=255.255.255.0 gateway=11.11.11.1 gwmetric=0 \r\n\r\n집.bat \r\nnetsh -c int ip set address name=\"로컬 영역 연결\" source=dhcp \r\n\r\n로 만들어두고 사용하면 됩니다. \r\n\r\n\r\n\r\nPS 1. DNS를 변경해야 하는경우 \r\n\r\nnetsh -c int ip set dns name=\"로컬 영역 연결\" source=static addr=111.111.111.11 register=PRIMARY \r\n\r\n자동은 \r\nnetsh -c int ip set dns name=\"로컬 영역 연결\" source=dhcp \r\n\r\n\r\nPS 2. 현재 IP설정을 모르는 경우나 일일이 적어두기 귀찮은 경우, \r\nIP외 여러가지 설정을 바꿔야 하는경우 \r\n현재 IP 설정을 파일로 저장해두고 불러쓰는 방법도 있습니다. \r\n\r\ncmd 창에서 다음과 같이 입력하면 현재 Interface 구성이 사무실.txt에 저장됩니다. \r\n\r\nnetsh -c interface dump > 사무실.txt \r\n\r\n그 구성을 불러서 IP를 세팅하려면 \r\n\r\nnetsh exec 사무실.txt \r\n\r\n특정경로에 텍스트파일을 두고 사용하려면 사무실.txt 앞에 경로 적어주면 됩니다. \r\n위와 마찬가지로 배치파일로 만들어 사용할 수 있습니다. \r\n사무실.txt 를 열어보면 여러가지 설정값들을 확인할 수 있습니다. \r\n\r\nPS 3. Win98에서는 안됩니다. \r\n\r\nPS 4. 기타 상세한 내용은 도움말 (netsh ?)를 활용하세요. \r\n\r\n자료출처 : miniwini.com','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:45:45',0,'2019-03-23 23:45:45','192.168.219.102','','','','','','','','','','','',''),(41,-41,'',41,0,0,'','','','[html/javascript] 클릭시 이미지 팝업창 띄우기','<script language=\"JavaScript\"> \r\n<!-- \r\nvar win1Open = null \r\n\r\nfunction displayImage(picName, windowName, windowWidth, windowHeight){ \r\nreturn window.open(picName,windowName,\"toolbar=no,scrollbars=no,resizable=no,width=\" + (parseInt(windowWidth)+20) + \",height=\" + (parseInt(windowHeight)+15)) \r\n} \r\n\r\nfunction winClose(){ \r\nif(win1Open != null) win1Open.close() \r\n} \r\n\r\nfunction doNothing(){} \r\n//--> \r\n</script> \r\n\r\n<td> \r\n<a href=\"javascript:doNothing()\" onClick=\"win1Open=displayImage(\'images/tag_1.jpg\', \'popWin1\', \'480\', \'360\')\" onMouseOver=\"window.status=\'Click to display picture\'; return true;\" onMouseOut=\"window.status=\'\'\"> \r\n<img src=\"images/tag_1_s.jpg\" width=\"200\" height=\"150\" border=\"0\"></a></div> \r\n</td> \r\n\r\n------------------ \r\n\r\n창닫기 \r\n<input type=\"button\" value=\"현재창 닫기\" onClick=\"window.close()\"> \r\n\r\n------------------- \r\n\r\n클릭시 팝업창 띄우기 \r\n<script language=\"javascript\"> \r\n<!-- \r\nfunction OpenWindow(url,intWidth,intHeight) { \r\n    window.open(url,\"_blank\",\"width=\"+intWidth+\",height=\"+intHeight+\",resizable=1,scrollbars=1\"); \r\n} \r\n//--> \r\n</script> \r\n\r\n<a href=\"javascript:OpenWindow(\'popup.html\',\'300\',\'200\')\">새창띄우기</a>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:45:57',0,'2019-03-23 23:45:57','192.168.219.102','','','','','','','','','','','',''),(42,-42,'',42,0,0,'','','','[html/script] 그누보드 최신글추출, iframe태그','<? \r\n$g4_path = \"./board/\";  //현재디렉토리에서 보드 경로 \r\ninclude_once(\"$g4_path/common.php\"); \r\ninclude_once(\"$g4[path]/lib/latest.lib.php\"); \r\n?> \r\n\r\n\r\n<? \r\n$sql = \" select bo_table, bo_subject from $g4[board_table] where bo_table=\'notice1\' \r\norder by gr_id, bo_table \"; \r\n$result = sql_query($sql); \r\nfor ($i=0; $row=sql_fetch_array($result); $i++) \r\n{ \r\n echo latest(\"basic\", $row[bo_table], 5, 50); \r\n //<?=latest(\"스킨명\", \"게시판아이디\", 출력라인수, 출력글자수);?> \r\n echo \"\\n\"; \r\n} \r\n?> \r\n\r\n<iframe frameborder=\"O\" width=\"600\" height=\"400\" scrolling=\"auto\" name=\"memberframe\" \r\nsrc=\"http://realmsg.com/bbs/bbs/board.php?bo_table=notice\"> \r\n<iframe>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:46:07',0,'2019-03-23 23:46:07','192.168.219.102','','','','','','','','','','','',''),(43,-43,'',43,0,0,'','','','[html/script] 웹서버 접속자 ip추출 쉘스크립트','netstat -n|grep -F :80|egrep \'(ESTAB|SYN)\'|awk \'{print $5}\'|sed \'s/:[0-9]*//\'|sort -u','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:46:21',0,'2019-03-23 23:46:21','192.168.219.102','','','','','','','','','','','',''),(44,-44,'',44,0,0,'','','','[Linux/ubuntu] 우분투에서 루트로 로그인','# sudo passwd \r\n자신의 암호 \r\n새 관리자 암호 \r\n새암호 확인 \r\n# su \r\n관리자 암호 입력 \r\n\r\n관리자 암호가 바뀌었음을 확인 할 수 있습니다. \r\n그리고 시스템->관리->로그인 화면 설정 에서 \r\n보안탭->GDM으로 root 사용자 로그인 허용 을 해주면 x윈도우로도 root 로그인이 가능','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:46:30',0,'2019-03-23 23:46:30','192.168.219.102','','','','','','','','','','','',''),(45,-45,'',45,0,0,'','','','[html/javascript] 클릭시 팝업창 띄우기 2','원하는 크기의 팝업창을 띄우기 위해서-  \"드림위버\"에서는 \"비헤비어\" 기능중 \"OPEN BROWSER WINDOW\" 기능을 이용합니다만, \r\n\r\n아래와 같은 간단한 구조를 가지고 있는 내용으로 한번 해보시기 바랍니다. \r\n<onClick=\"javascript:window.open(\'열고자하는 파일명\',\'이름명\',\'크기 및 속성 지정\')\"> \r\n\r\n예제1 \r\n<a href=\"#\" onClick=\"javascript:window.open(\'http://blog.naver.com/flashbox.do\',\'flashbox\',\'width=760,height=300\')\">플래시박스</a> \r\n\r\n예제2 \r\n원하는 위치에 창을 띄우는 소스는 <left=X좌표값,top=Y좌표값> 만을 입력해주면 오케이. \r\n<a href=\"#\" onClick=\"javascript:window.open(\'http://blog.naver.com/flashbox.do\',\'flashbox\',\'width=760,height=300,left=100,top=50\')\"> \r\n\r\n플래시박스</a> \r\n\r\n예제3 \r\n그 외 또다른 속성을 지정하고자 한다면 <toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes>를 원하는 내용만을 넣어주시면 되겠습니다. \r\n<a href=\"#\" onClick=\"javascript:window.open(\'http://blog.naver.com/flashbox.do\',\'flashbox\',\'width=760,height=300,left=100,top=50,scrollbars=yes\')\">플래시박스</a>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:46:39',0,'2019-03-23 23:46:39','192.168.219.102','','','','','','','','','','','',''),(46,-46,'',46,0,0,'','','','[windows] 아크로에디터에서 자바설정','아크로에디터에서 자바설정','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:47:08',2,'2019-03-23 23:47:08','192.168.219.102','','','','','','','','','','','',''),(47,-47,'',47,0,0,'','','','[windows] BMP -> JPG 일괄변환 프로그램','BMP -> JPG 일괄변환 프로그램 \r\n\r\n폴더에서 변환활 bmp 파일을 프로그램 창안으로 드래그&드롭...','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:47:26',1,'2019-03-23 23:47:26','192.168.219.102','','','','','','','','','','','',''),(48,-48,'',48,0,0,'','','','[windows] 동영상 자막입히는 방법','◆ 자막 입히는 방법 \r\n\r\n※ 새폴더를 하나 만들어 다운 받으신 자막 파일을 그 새폴더 안네 넣어주신후 진행을 해주시기 바랍니다. \r\n\r\n① 다운 받으신 자막 파일을 압축풀기로 압축을 풀어주세요. \r\n\r\n② 압축을 풀어주시면 VirtualDub-MPEG2와 subtitler-2_4와 multicon이라는 \r\n파일이 있습니다. \r\n\r\n③ VirtualDub-MPEG2와 subtitler-2_4에 압축을 풀어주시기 바랍니다. \r\n④ 2개에 파일을 풀어주시면 노란색 폴더로 VirtualDub-MPEG2와 subtitler-2_4가 \r\n생성이 되십니다. \r\n\r\n⑤ subtitler-2_4를 더블 클릭->Subtitler.vdf를 복사후->VirtualDub-MPEG2더블클릭->plugins더블클릭->Subtitler.vdf를 붙여넣기 해주세요. \r\n\r\n⑥ 메인페이지로 이동 하신 후 다운 받으신 동영상 파일과 자막 파일을 불러 옵니다. \r\n\r\n⑦ 불러온 자막파일과 똑같은 파일을 복사하여 하나를 만들어 주세요. \r\n\r\n⑧ 사본으로 만들어진 자막파일에 이름을 123.smi로 변경을 해주시기 바랍니다. \r\n\r\n⑨ multicon을 더블클릭->Enter Target File에 123.smi라고 입력해주세요.->Enter->3을 입력해주신후->Enter->Enter \r\n\r\n⑩ 메인화면에 123.ssa라는 자막파일 하나가 생성이되십니다. \r\n\r\n⑪ 123.ssa파일을 더블클릭->[V4 styles]에->style에 보시면 arial이라는 단어가 있습니다. \r\n\r\n“arial” 이 단어를 “굴림” 이라고 변경해 주시구요->옆에 “12”를 “20”으로 변경해주세요->그러신후 맨 끝에 “0”를 “1”로 변경해 주신후->파일->저장을 눌러주신후 창을 닫아주세요. \r\n\r\n⑫ VirtualDub-MPEG2 폴더 더블클릭->VirtualDub 더블클릭->File선택->Open Video File선택->다운받은 동영상 파일을 선택후 “열기” 선택->Audio선택->Source audio와 Direct stream을 선택->Video선택->Full processing mode을 선택후->Filter선택->Add선택->Avery Lee선택후->“OK\"선택->”...“라는 아이콘 선택->자막파일인 ”123“선택후->“OK\"선택->다시한번 \"OK\"선택->Compression선택->DivX 5.2.1Codec을 선택->\"OK\"선택->File선택->Save as AVI선택->파일이름에 원하시는 제목을 기재한 후 저장을 누르면 자막 입히기가 진행이 됩니다. \r\n\r\n⑬ 저장을 누르시면 바로 “VirtuaIDub-MPEG2 Status”라는 창이 뜹니다. \r\n그곳에 “Time elapsed\" 는 현재 진행되고 있는 시간을 나타내는 것이구요. \r\n“Total time[estimated]\"은 동영상이 변환되는 시간을 나타내는 것입니다.','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:47:37',0,'2019-03-23 23:47:37','192.168.219.102','','','','','','','','','','','',''),(49,-49,'',49,0,0,'','','','[Linux/ffmpeg] ffmpeg & motion 관련자료','ffmpeg 실행 명령 \r\nffmpeg -vd /dev/video1 http://localhost/feed2.ffm \r\n\r\nmotion 실행 명령 \r\n1tmotion -d /dev/video0 -t 1/08/01','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:47:51',0,'2019-03-23 23:47:51','192.168.219.102','','','','','','','','','','','',''),(50,-50,'',50,0,0,'','','','[html/javascript] 이미지 마우스 롤오버','<a href=\"링크주소\"> \r\n<img src=\"원이미지\" onmouseover=\"this.src=\'변경될이미지\'\" onmouseout=\"this.src=\'원이미지\'\"></a>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:48:03',0,'2019-03-23 23:48:03','192.168.219.102','','','','','','','','','','','',''),(51,-51,'',51,0,0,'','','','[html/php] 그누보드4 페이지 권한 확인','if ($member[mb_id] && $member[mb_level] >= 2) // 회원 일때 \r\n{ \r\n alert(네 , 회원이군요...); \r\n}  else { \r\n alert(빨리 나가주세요...); \r\n} \r\n\r\nif ($is_admin == \"super\" || $is_auth) // 관리자일때 \r\n{ \r\n alert(네, 주인님); \r\n} else { \r\n alert (손님이군요); \r\n} \r\n\r\n-------------------------------------------------------- \r\n\r\n페이지에 권한이 없을경우 페이지닫기 \r\n<? \r\n// 회원 인증 소스 \r\ninclude_once(\"./_common.php\"); \r\n\r\n$g4[title] = \"홈타이틀\"; \r\n\r\ninclude_once(\"./_head.php\"); // 삽입된 페이지에... 삭제해도됨 \r\n\r\nif ($member[mb_level] < 5)  // 회원의 접근 권한 조정 \r\n{ \r\n    echo \"<script language=\'javascript\'> alert(\'죄송합니다. 정회원만 이용하실 수 있습니다.\'); window.close(); \r\n    javascript:history.go(-1);  </script>\"; \r\n    exit; \r\n } \r\n//회원인증 소스 \r\n ?> \r\n\r\n\r\n회원 권한없을때 로그인 페이지로 돌리기 \r\n<? \r\ninclude_once(\"./_common.php\"); \r\n\r\n$g4[title] = \"타이틀\"; \r\n\r\ninclude_once(\"./_head.php\"); \r\n// 접근 권한 검사 \r\nif (!$member[mb_id]) \r\nalert(\"로그인 하십시오.\", \"$g4[bbs_path]/login.php?url=\" . urlencode(\"$_SERVER[PHP_SELF]?w=$w&mb_id=$mb_id\")); \r\n\r\nelse if($member[mb_level] < 3) { //3레벨 미만이면 홈페이지 메인으로 튕겨주기*^^* \r\nalert(\"접근권한이 없습니다.\", $g4[path]); \r\n} \r\n\r\nelse if ($is_admin != \"super\") { \r\n$auth = array(); \r\n$sql = \" select au_menu, au_auth from $g4[auth_table] where mb_id = \'$member[mb_id]\' \"; \r\n$result = sql_query($sql); \r\nfor($i=0; $row=sql_fetch_array($result); $i++) { \r\n$auth[$row[au_menu]] = $row[au_auth]; \r\n}} \r\n?>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:48:14',0,'2019-03-23 23:48:14','192.168.219.102','','','','','','','','','','','',''),(52,-52,'',52,0,0,'','','','[Etc] memtest 프로그램 (메모리 하드웨어 테스트)','memtest 프로그램 (메모리 하드웨어 테스트)','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:48:40',2,'2019-03-23 23:48:40','192.168.219.102','','','','','','','','','','','',''),(53,-53,'',53,0,0,'','','','[windows] 웹마 드래그&드랍으로 네이버 선택하기','도구->웹마옵션->주소바 \r\n주소바별명 selected_ \r\n주소 http://search.naver.com/search.naver?where=j&query=%s','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:48:51',0,'2019-03-23 23:48:51','192.168.219.102','','','','','','','','','','','',''),(54,-54,'',54,0,0,'','','','[Linux] SSH 기본보안설정','SSH 기본보안설정 #1 \r\n\r\n레드햇 배포판을 기본설치하고 나면 의외로 취약점이 많다. 기본적으로 패키지가 구형이라면 패치하면되지만, 기본설정역시 중요하다. 그래서 이번엔 OpenSSH 버젼의 취약점과 기본 보안설정에 대해서 쓰고자 한다. ps) 체리님 블로그에 댓글달로갓다가 팁하나보고 문득정리해야겠다는 생각에 추가함. \r\n\r\n1. 패키지확인. \r\n먼저 쉘에서 사용중인 openssh 패키지의 버젼을 확인한다. \r\n----------------------------------------------------- \r\n[root@www1 log]# rpm -qa | grep ssh \r\nopenssh-clients-3.9p1-8.RHEL4.4 \r\nopenssh-server-3.9p1-8.RHEL4.4 \r\nopenssh-3.9p1-8.RHEL4.4 \r\n[root@www1 log]# \r\n----------------------------------------------------- \r\n\r\n현재나는 CentOS 4.1 을 쓰고 있는데, yum 을 통해서 항상 최신버젼을 유지하고있는터라 \r\n2005년 08월 12일자 해당버젼에 대해서 보안권고는 없었다. \r\nssh가 원격에서 접속이 가능하고 포트를 항상개방해놓아야 되기 때문에 버젼이 낮다면 업데이트먼저하기를 바란다. \r\n\r\n단! openssh를 rpm 이나 기타 패키지 매니저를 통한 방법으로 업데이트 하지않을 경우는 필히 주의해서 해야한다; 초보때 IDC를 한번 더가야했던.. \r\n\r\n2. 원격에서 root 접속 설정. \r\nroot 라는 아이디자체가 워낙 코흘리게도 아는 아이디다 보니.. 사전공격에 가장 취약하다고 볼수있다. 또, openssh 1.x 버젼은 보안구멍이 많은 버젼으로 필히 패치하기 바란다. 그리고 root 의 비밀번호는 자주변경해줘야하고. root 비밀번호만큼은 나도 그때그때 암호표를 작성해서 접속할때마다 본다; \r\n\r\nRPM 설치시 - \r\n/etc/ssh/sshd_config \r\n------------------------- \r\n#LoginGraceTime 2m \r\n#PermitRootLogin yes \r\n#StrictModes yes \r\n#MaxAuthTries 6 \r\n----------------------------------------------- \r\n\r\n#PermitRootLogin yes -> PermitRootLogin no \r\n로 변경한다. \r\n#LoginGraceTime 2m -> LoginGraceTime 60 \r\n로 변경 / 로그인을 하지못햇을 경우 60초 뒤에 서버와 연결을 끊음 \r\n#MaxAuthTries 6 -> MaxAuthTries 3 \r\n로 변경 / 인증실패시 암호를 묻는 재시도 횟수 설정 \r\n\r\n3. 원격 접속 포트 변경, 접속 프로토콜 설정. \r\n서버를 운영하다 보면 /var/log/message 로그에서 다음과 같은 줄을 발견할수있을것이다. \r\n/var/log/message \r\n---------------------------------------------------------------------- \r\nAug  7 13:05:13 cls sshd(pam_unix)[10288]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=61.x.x.x \r\nAug  7 13:05:14 cls sshd(pam_unix)[10290]: check pass; user unknown \r\n---------------------------------------------------------------------------------------- \r\nssh 기본포트( no. 22 )원격지에서 스캐닝, 사전공격 등을 하면 기록이 된다. 무시하면 상관이 없지만.. 개인적인 생각으로 관리자라면 작은부분에서도 신경을 써야한다는거.. 해결책은 포트를 변경g해도 상당한 효과를 볼수있다 ^^ \r\n\r\nRPM 설치시 - \r\n/etc/ssh/sshd_config \r\n------------------------- \r\n#Port 22 \r\n#Protocol 2,1 \r\n#ListenAddress 0.0.0.0 \r\n#ListenAddress :: \r\n----------------------------------------------- \r\n\r\n#Port 22 -> Port 2222 \r\n 나는 2222번 포트로 운영을 한다. 임의의 포트로 지정을 해서 사전공격 및 스캐닝에 대해서 방지한다. \r\n#Protocol 2,1 -> Protocol 2 \r\nssh2 프로토콜로 요청하는 클라이언트만 받아드린다. \r\n#ListenAddress 0.0.0.0 \r\n이 부분은 접속가능한 아이피를 설정하는 부분인데.. 기본설정은 모든곳에서 접속가능하도록 되어있다. 접속제한은 sshd 의 설정에서 하지 않고 tcpd 의 /etc/hosts.allow ; /etc/hosts.deny 를 사용하여 제어한다. \r\n\r\n4. 특정그룹, 특정유저만 원격접속 제한 \r\n기본설정에는 포함되어있지 않으나 #man sshd_config 를 보면 AllowGroups, AllowUsers 라는 항목을 볼수있다. \r\n\r\n원격에서 ssh 를 이용함에 있어서 접속이 가능한 유저, 그룹을 설정하는 내용이다. \r\n설정하시기 전에 꼭 그룹과 유저를 확인하기 바랍니다. \r\n/etc/ssh/sshd_config 의 적당한 부분에 아래 내용을 포함시킨다. \r\n------------------------- \r\nAllowGroups wheel \r\nAllowUsers lampwzd \r\n------------------------------------------------------------------------------------- \r\n\r\n빨간색으로 된부분에 각자 관리자 아이디를 넣으면 됨. \r\n본인의 경우는 관리자 아이디를 wheel 그룹으로 설정해 놓아서 AllowGroups 에 그룹 wheel 을 추가해놓았다. \r\n\r\n반대로 \r\nDenyGroups wheel \r\nDenyUsers lampwzd \r\n으로 지정해놓으면 해당 그룹, 유저가 접속이 거부된다. \r\n\r\n5. sshd 재시작 \r\nRPM 설치시 \r\n-------- \r\n#/etc/rc.d/init.d/sshd restart \r\n또는 \r\n#killall -HUP sshd','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-23 23:49:02',0,'2019-03-23 23:49:02','192.168.219.102','','','','','','','','','','','',''),(55,-55,'',55,0,0,'','','html1','[Linux] VSFTPD 설정하기','<p>&nbsp;참고로 우분투에서 방화벽 설정</p>\r\n<p>&nbsp;</p>\r\n<p style=\"margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; font-size: 16px; line-height: 28px; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">vsftpd를 설치한 Ubuntu 서버에는 방화벽이 설정되어 있습니다.</p>\r\n<p style=\"margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; font-size: 16px; line-height: 28px; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">아래와 같이 방화벽을 추가합니다.</p>\r\n<pre class=\"brush:batchfile ace_editor ace-terminal-theme ace_dark\" style=\"overflow: hidden; margin: 28px auto; padding: 16px; position: relative; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 14px; line-height: 20px; font-family: Menlo, Consolas, Monaco, monospace; direction: ltr; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); background-color: black; color: #dedede; overflow-wrap: break-word; height: 20px;\"><textarea class=\"ace_text-input\" wrap=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" style=\"margin: 0px -1px; padding-top: 0px; padding-right: 1px; padding-left: 1px; vertical-align: middle; outline: none; font: inherit; color: #666666; -webkit-appearance: none; position: absolute; z-index: 0; width: 7.6975px; height: 20px; opacity: 0; background: transparent; border-width: initial; border-style: none; border-color: initial; resize: none; overflow: hidden; text-indent: -1em; user-select: text; left: 45px; top: 0px; white-space: pre !important;\"></textarea>\r\n   <div class=\"ace_gutter\" style=\"margin: 0px; padding: 0px; position: absolute; overflow: hidden; width: auto; top: 0px; bottom: 0px; left: 0px; cursor: default; z-index: 4; user-select: none; background: rgb(26, 0, 5);\">\r\n      <div class=\"ace_layer ace_gutter-layer ace_folding-enabled\" style=\"margin: 0px; padding: 0px; z-index: 1; position: relative; overflow: hidden; overflow-wrap: normal; height: 60px; width: 41px; box-sizing: border-box; pointer-events: auto; text-align: right;\">\r\n         <div class=\"ace_gutter-cell \" style=\"margin: 0px; padding: 0px 13px 0px 19px; background-repeat: no-repeat; height: 20px;\"><span style=\"color: #eeeeee;\">1</span></div>\r\n         </div>\r\n      <div class=\"ace_gutter-active-line\" style=\"margin: 0px; padding: 0px; position: absolute; left: 0px; right: 0px; background-color: #2a112a; top: 0px; height: 20px;\"><span style=\"color: #eeeeee;\">&nbsp;</span></div>\r\n      </div>\r\n   <div class=\"ace_scroller\" style=\"margin: 0px; padding: 0px; position: absolute; overflow: hidden; top: 0px; bottom: 0px; background-color: inherit; user-select: none; cursor: text; left: 41px; right: 0px;\">\r\n      <div class=\"ace_content\" style=\"margin: 0px; padding: 0px; position: absolute; box-sizing: border-box; min-width: 100%; width: 759px; height: 60px;\">\r\n         <div class=\"ace_layer ace_print-margin-layer\" style=\"margin: 0px; padding: 0px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none;\">\r\n            <div class=\"ace_print-margin\" style=\"margin: 0px; padding: 0px; position: absolute; height: 60px; width: 1px; background: rgb(26, 26, 26); left: 619.8px; visibility: hidden;\">&nbsp;</div>\r\n            </div>\r\n         <div class=\"ace_layer ace_marker-layer\" style=\"margin: 0px; padding: 0px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none;\">\r\n            <div class=\"ace_active-line\" style=\"margin: 0px; padding: 0px; position: absolute; z-index: 2; background: rgb(42, 42, 42); height: 20px; top: 0px; left: 0px; right: 0px;\">&nbsp;</div>\r\n            </div>\r\n         <div class=\"ace_layer ace_text-layer\" style=\"margin: 0px; padding: 0px 4px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none; font: inherit !important;\">\r\n            <div class=\"ace_line\" style=\"margin: 0px; padding: 0px; height: 20px;\">$ sudo ufw allow 21/tcp</div>\r\n            </div>\r\n         <div class=\"ace_layer ace_marker-layer\" style=\"margin: 0px; padding: 0px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none;\">&nbsp;</div>\r\n         <div class=\"ace_layer ace_cursor-layer ace_hidden-cursors\" style=\"margin: 0px; padding: 0px; z-index: 4; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none;\">\r\n            <div class=\"ace_cursor\" style=\"margin: 0px; padding: 0px; z-index: 4; position: absolute; box-sizing: border-box; border-left: 2px solid; transform: translateZ(0px); opacity: 0.2; color: #9f9f9f; left: 4px; top: 0px; width: 7.6975px; height: 20px;\">&nbsp;</div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div style=\"margin: 0px; padding: 0px; height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; font: inherit; overflow: hidden;\">\r\n      <div style=\"margin: 0px; padding: 0px; height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; font: inherit; overflow: visible;\">&nbsp;</div>\r\n      <div style=\"margin: 0px; padding: 0px; height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; overflow: visible;\">&nbsp;</div>\r\n      </div>\r\n   </pre>\r\n<p style=\"margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; font-size: 16px; line-height: 28px; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">만약 Passive 모드로 사용할 경우 해당 port 대역도 지정해 줍니다.</p>\r\n<pre class=\"brush:batchfile ace_editor ace-terminal-theme ace_dark\" draggable=\"false\" style=\"overflow: hidden; margin: 28px auto; padding: 16px; position: relative; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 14px; line-height: 20px; font-family: Menlo, Consolas, Monaco, monospace; direction: ltr; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); background-color: black; color: #dedede; overflow-wrap: break-word; height: 20px;\"><textarea class=\"ace_text-input\" wrap=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" style=\"margin: 0px -1px; padding-top: 0px; padding-right: 1px; padding-left: 1px; vertical-align: middle; outline: none; font: inherit; color: #666666; -webkit-appearance: none; position: absolute; z-index: 0; width: 7.6975px; height: 20px; opacity: 0; background: transparent; border-width: initial; border-style: none; border-color: initial; resize: none; overflow: hidden; text-indent: -1em; user-select: text; left: 60.395px; top: 0px; white-space: pre !important;\"></textarea>\r\n   <div class=\"ace_gutter\" style=\"margin: 0px; padding: 0px; position: absolute; overflow: hidden; width: auto; top: 0px; bottom: 0px; left: 0px; cursor: default; z-index: 4; user-select: none; background: rgb(26, 0, 5); color: steelblue;\">\r\n      <div class=\"ace_layer ace_gutter-layer ace_folding-enabled\" style=\"margin: 0px; padding: 0px; z-index: 1; position: relative; overflow: hidden; overflow-wrap: normal; height: 60px; width: 41px; box-sizing: border-box; pointer-events: auto; text-align: right;\">\r\n         <div class=\"ace_gutter-cell \" style=\"margin: 0px; padding: 0px 13px 0px 19px; background-repeat: no-repeat; height: 20px;\">1</div>\r\n         </div>\r\n      <div class=\"ace_gutter-active-line\" style=\"margin: 0px; padding: 0px; position: absolute; left: 0px; right: 0px; background-color: #2a112a; top: 0px; height: 20px;\">&nbsp;</div>\r\n      </div>\r\n   <div class=\"ace_scroller\" style=\"margin: 0px; padding: 0px; position: absolute; overflow: hidden; top: 0px; bottom: 0px; background-color: inherit; user-select: none; cursor: text; left: 41px; right: 0px;\">\r\n      <div class=\"ace_content\" style=\"margin: 0px; padding: 0px; position: absolute; box-sizing: border-box; min-width: 100%; width: 759px; height: 60px;\">\r\n         <div class=\"ace_layer ace_print-margin-layer\" style=\"margin: 0px; padding: 0px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none;\">\r\n            <div class=\"ace_print-margin\" style=\"margin: 0px; padding: 0px; position: absolute; height: 60px; width: 1px; background: rgb(26, 26, 26); left: 619.8px; visibility: hidden;\">&nbsp;</div>\r\n            </div>\r\n         <div class=\"ace_layer ace_marker-layer\" style=\"margin: 0px; padding: 0px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none;\">\r\n            <div class=\"ace_selection ace_start ace_br15\" style=\"margin: 0px; padding: 0px; border-radius: 3px; position: absolute; z-index: 5; background: rgb(66, 66, 66); height: 20px; width: 215.53px; top: 0px; left: 19.395px;\">&nbsp;</div>\r\n            </div>\r\n         <div class=\"ace_layer ace_text-layer\" style=\"margin: 0px; padding: 0px 4px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none; font: inherit !important;\">\r\n            <div class=\"ace_line\" style=\"margin: 0px; padding: 0px; height: 20px;\">$ sudo ufw allow 9900:9999/tcp</div>\r\n            </div>\r\n         <div class=\"ace_layer ace_marker-layer\" style=\"margin: 0px; padding: 0px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none;\">&nbsp;</div>\r\n         <div class=\"ace_layer ace_cursor-layer ace_hidden-cursors\" style=\"margin: 0px; padding: 0px; z-index: 4; position: absolute; overflow: hidden; overflow-wrap: normal; height: 60px; width: 759px; box-sizing: border-box; pointer-events: none;\">\r\n            <div class=\"ace_cursor\" style=\"margin: 0px; padding: 0px; z-index: 4; position: absolute; box-sizing: border-box; border-left: 2px solid; transform: translateZ(0px); opacity: 0.2; color: #9f9f9f; left: 19.395px; top: 0px; width: 7.6975px; height: 20px;\">&nbsp;</div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div style=\"margin: 0px; padding: 0px; height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; font: inherit; overflow: hidden;\">\r\n      <div style=\"margin: 0px; padding: 0px; height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; font: inherit; overflow: visible;\">&nbsp;</div>\r\n      <div style=\"margin: 0px; padding: 0px; height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; overflow: visible;\">&nbsp;</div>\r\n      </div>\r\n   </pre>\r\n<p style=\"margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; font-size: 16px; line-height: 28px; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">방화벽 설정을 적용하려면 stop/start를 해줍니다.</p>\r\n<pre class=\"brush:batchfile ace_editor ace-terminal-theme ace_dark\" style=\"overflow: hidden; margin: 28px auto; padding: 16px; position: relative; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 14px; line-height: 20px; font-family: Menlo, Consolas, Monaco, monospace; direction: ltr; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); background-color: black; color: #dedede; overflow-wrap: break-word; height: 40px;\"><textarea class=\"ace_text-input\" wrap=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" style=\"margin: 0px -1px; padding-top: 0px; padding-right: 1px; padding-left: 1px; vertical-align: middle; outline: none; font: inherit; color: #666666; -webkit-appearance: none; position: absolute; z-index: 0; width: 7.6975px; height: 20px; opacity: 0; background: transparent; border-width: initial; border-style: none; border-color: initial; resize: none; overflow: hidden; text-indent: -1em; user-select: text; left: 45px; top: 0px; white-space: pre !important;\"></textarea>\r\n   <div class=\"ace_gutter\" style=\"margin: 0px; padding: 0px; position: absolute; overflow: hidden; width: auto; top: 0px; bottom: 0px; left: 0px; cursor: default; z-index: 4; user-select: none; background: rgb(26, 0, 5); color: steelblue;\">\r\n      <div class=\"ace_layer ace_gutter-layer ace_folding-enabled\" style=\"margin: 0px; padding: 0px; z-index: 1; position: relative; overflow: hidden; overflow-wrap: normal; height: 80px; width: 41px; box-sizing: border-box; pointer-events: auto; text-align: right;\">\r\n         <div class=\"ace_gutter-cell \" style=\"margin: 0px; padding: 0px 13px 0px 19px; background-repeat: no-repeat; height: 20px;\">1</div>\r\n         <div class=\"ace_gutter-cell \" style=\"margin: 0px; padding: 0px 13px 0px 19px; background-repeat: no-repeat; height: 20px;\">2</div>\r\n         </div>\r\n      <div class=\"ace_gutter-active-line\" style=\"margin: 0px; padding: 0px; position: absolute; left: 0px; right: 0px; background-color: #2a112a; top: 0px; height: 20px;\">&nbsp;</div>\r\n      </div>\r\n   <div class=\"ace_scroller\" style=\"margin: 0px; padding: 0px; position: absolute; overflow: hidden; top: 0px; bottom: 0px; background-color: inherit; user-select: none; cursor: text; left: 41px; right: 0px;\">\r\n      <div class=\"ace_content\" style=\"margin: 0px; padding: 0px; position: absolute; box-sizing: border-box; min-width: 100%; width: 759px; height: 80px;\">\r\n         <div class=\"ace_layer ace_print-margin-layer\" style=\"margin: 0px; padding: 0px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 80px; width: 759px; box-sizing: border-box; pointer-events: none;\">\r\n            <div class=\"ace_print-margin\" style=\"margin: 0px; padding: 0px; position: absolute; height: 80px; width: 1px; background: rgb(26, 26, 26); left: 619.8px; visibility: hidden;\">&nbsp;</div>\r\n            </div>\r\n         <div class=\"ace_layer ace_marker-layer\" style=\"margin: 0px; padding: 0px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 80px; width: 759px; box-sizing: border-box; pointer-events: none;\">\r\n            <div class=\"ace_active-line\" style=\"margin: 0px; padding: 0px; position: absolute; z-index: 2; background: rgb(42, 42, 42); height: 20px; top: 0px; left: 0px; right: 0px;\">&nbsp;</div>\r\n            </div>\r\n         <div class=\"ace_layer ace_text-layer\" style=\"margin: 0px; padding: 0px 4px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 80px; width: 759px; box-sizing: border-box; pointer-events: none; font: inherit !important;\">\r\n            <div class=\"ace_line\" style=\"margin: 0px; padding: 0px; height: 20px;\">$ sudo ufw disable</div>\r\n            <div class=\"ace_line\" style=\"margin: 0px; padding: 0px; height: 20px;\">$ sudo ufw enable</div>\r\n            </div>\r\n         <div class=\"ace_layer ace_marker-layer\" style=\"margin: 0px; padding: 0px; z-index: 1; position: absolute; overflow: hidden; overflow-wrap: normal; height: 80px; width: 759px; box-sizing: border-box; pointer-events: none;\">&nbsp;</div>\r\n         <div class=\"ace_layer ace_cursor-layer ace_hidden-cursors\" style=\"margin: 0px; padding: 0px; z-index: 4; position: absolute; overflow: hidden; overflow-wrap: normal; height: 80px; width: 759px; box-sizing: border-box; pointer-events: none;\">\r\n            <div class=\"ace_cursor\" style=\"margin: 0px; padding: 0px; z-index: 4; position: absolute; box-sizing: border-box; border-left: 2px solid; transform: translateZ(0px); opacity: 0.2; color: #9f9f9f; left: 4px; top: 0px; width: 7.6975px; height: 20px;\">&nbsp;</div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div style=\"margin: 0px; padding: 0px; height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; font: inherit; overflow: hidden;\">\r\n      <div style=\"margin: 0px; padding: 0px; height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; font: inherit; overflow: visible;\">&nbsp;</div>\r\n      <div style=\"margin: 0px; padding: 0px; height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; overflow: visible;\">&nbsp;</div>\r\n      </div>\r\n   </pre>\r\n<p style=\"margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; font-size: 16px; line-height: 28px; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">방화벽 적용이 잘 되었는지 ftp에 연결해 보세요.</p>','https://dejavuqa.tistory.com/251','https://dejavuqa.tistory.com/252',1,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-03-24 02:18:28',0,'2019-03-24 02:18:28','192.168.219.102','','','','','','','','','','','',''),(56,-56,'',56,0,0,'','','html1','[Linux] GStreamer 설치','<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">1. Gstreamer 0.10 패키지 설치</span></p>\r\n<div><span style=\"color: #ffffff;\">&nbsp;</span></div>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; $ sudo apt-get install libglib2.0-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gstreamer-tools gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-bad</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">2.Gstreamer 0.10 서버 &amp; 스크립트 다운로드</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; $ wget http://gstreamer.freedesktop.org/src/gst-rtsp/gst-rtsp-0.10.8.tar.bz2</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; $ bzip2 -d gst-rtsp-0.10.8.tar.bz2</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; $ tar xvf gst-rtsp-0.10.8.tar</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; $ cd gst-rtsp-0.10.8</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">3. 빌드</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; $ ./configure</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; $ make</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">4. 서버 실행 (스트리밍 시작)</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; $ cd examples</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; $</span><span style=\"font-family: &quot;맑은 고딕&quot;, sans-serif; font-size: 10pt; color: #ffffff;\">&nbsp;</span><span style=\"font-family: &quot;맑은 고딕&quot;, sans-serif; font-size: 10pt; text-align: justify; color: #ffffff;\">raspivid -t 0 -h 720 -w 1280 -fps 25 -b 2000000 -vf -hf -n -o - | gst-launch -v fdsrc ! h264parse ! gdppay ! tcpserversink host=127.0.0.1 port=5000 | ./test-launch \"( tcpclientsrc host=127.0.0.1 port=5000 ! gdpdepay ! avdec_h264 ! rtph264pay name=pay0 pt=96 )\"</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"font-family: &quot;맑은 고딕&quot;, sans-serif; font-size: 10pt; text-align: justify; color: #ffffff;\">&nbsp; 수행되는 process 확인 : $ ps -ef | more -&gt; pi 계정으로 다음과 같이 3개의 process가 실행된다.</span></p>\r\n<div class=\"autosourcing-stub-extra\" style=\"background-color: #969696; position: absolute; opacity: 0; line-height: 1.5; font-family: 돋움; text-align: justify;\">\r\n   <p style=\"margin-top: 11px; margin-bottom: 7px; padding: 0px; line-height: 1.5; font-family: dotum;\"><strong style=\"padding: 0px 7px 0px 0px;\"><span style=\"color: #ffffff;\">[출처]</span></strong><span style=\"color: #ffffff;\">&nbsp;</span><a href=\"http://blog.naver.com/lapint/220330786481\" target=\"_blank\" style=\"text-decoration-line: none;\"><span style=\"color: #ffffff;\">Gstreamer 설치하기</span></a><span style=\"padding: 0px 7px 0px 5px; color: #ffffff;\">|</span><strong style=\"padding: 0px 7px 0px 0px;\"><span style=\"color: #ffffff;\">작성</span></strong></p>\r\n   <p style=\"margin-top: 11px; margin-bottom: 7px; padding: 0px; line-height: 1.5; font-family: dotum;\"><strong style=\"padding: 0px 7px 0px 0px;\"><span style=\"color: #ffffff;\">자</span></strong><span style=\"color: #ffffff;\">&nbsp;</span><a href=\"http://blog.naver.com/lapint\" target=\"_blank\" style=\"text-decoration-line: none;\"><span style=\"color: #ffffff;\">라핀트</span></a></p>\r\n   </div>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"border: 1px solid rgb(221, 221, 221); padding: 5px; margin: 5px 0px; display: inline-block; width: 630px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/2704494958D639C625\" width=\"630\" filename=\"gstreamer-ps.png\" filemime=\"image/jpeg\" style=\"border: 0px; cursor: pointer; max-width: 100%; height: auto;\" /></span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp;</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; 수행되는 네트워크 관련 상태를 확인해 본다. $ netstat -an | more</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; - port 8554, 5000가 동작함을 다음과 같이 확인할 수 있다.</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"border: 1px solid rgb(221, 221, 221); padding: 5px; margin: 5px 0px; display: inline-block; width: 630px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/2509343958D63AD218\" width=\"630\" filename=\"gstreamer-netstat.png\" filemime=\"image/jpeg\" style=\"border: 0px; cursor: pointer; max-width: 100%; height: auto;\" /></span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">5. 확인</span><br /></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; - PC에서 다음 팟 플레이어를 설치하고, 실행한다.</span></p>\r\n<p style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">&nbsp; - Control-U를 누르고 주소 열기를 실행하고 rtsp://라즈베리파이IPaddress:8554/test</span></p>\r\n<p><br style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #969696;\" /><br style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #969696;\" /><span style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696; color: #ffffff;\">출처:&nbsp;</span><a href=\"https://talanton.tistory.com/76\" target=\"_blank\" style=\"text-decoration-line: none; font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696;\"><span style=\"color: #ffffff;\">https://talanton.tistory.com/76</span></a><span style=\"font-family: dotum, verdana, applegothic, sans-serif; background-color: #969696; color: #ffffff;\">&nbsp;[달란트(Talanton)]</span></p>','https://talanton.tistory.com/76','',0,0,3,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-14 19:58:40',0,'2019-04-14 19:58:40','192.168.219.103','','','','','','','','','','','',''),(57,-57,'',57,0,0,'','','html1','[Linux/Ubuntu] 인텔 82945G 와이드 모니터 설정하기','<p><span style=\"color: #404040; font-family: 굴림;\">&nbsp;[HOWTO] 와이드 스크린(1280 x 768) 설정하기.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">TR2에 Edgy(or Feisty)를 처음 설치하면 그래픽 드라이버로 xserver-xorg-video-i810이 잡혀있다. 물론 intel 82852/82855 GM/GME Graphic controller 내장 그래픽 칩셋을 위한 드라이버이긴 하지만 TR2의 와이드 스크린을 지원하지 못한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">우분투 포럼을 살펴보니 815Resolution(915Resolution)이나 1280patch를 사용하는 법이 있었다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이중 사용이 간단한 915Resolution을 이용하여 간단히 와이드 화면을 잡아보기로 하자.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">작 업에 앞서 현재 시스템이 지원하는 해상도를 확인해 둘 필요가 있다. 915resolution은 BIOS를 해킹하여 사용하지 않는 해상도를 원하는 해상도로 교체하여 사용하는 원리이다. 그러므로 현제 시스템의 해상도 중 앞으로 사용하지 않을 해상도를 선택해야 한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">보통 TR2에 edgy나 feisty를 설치하면 기본적으로 1024x768, 800x600, 640x480 이렇게 3가지 해상도를 제공한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">나는 800x600을 사용하지 않을 것이므로 800x600을 와이드 해상도 1280x768로 변경하여 사용할 것이다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1.우선 915Resolution을 설치하자.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sudo apt-get install 915resolution&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">혹시 설치가 안 되면 repository가 모두 추가 되었는지 확인하기 바란다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2.이제 사용하지 않을 해상도를 해킹해 보자. 먼저 터미널에 다음과 같이 입력하여 해킹가능한 해상도의 모드를 파악해야 한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sudo 915resolution -l&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">아마 위와 같은 화면을 보게 될것이다. 다만 차이가 있다면 원래는 \"mode 52가 \"800x600\"이었는데 본인의 경우는 이미 해킹을 실행한 후 이므로 \"1280x768\"로 변경되어 있다는 점이다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">아마 처음으로 위의 명령을 실행했다면 tr2의 경우 \"mode 52 : 800x600\"으로 되어 있을 것이다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그래서 혹시나 하는 마음에 드라이버를 intel 로 변경해봤다. 그랬더니 ㅤㅆㅔㄱ시한 와이드 스크린이 날 반겨 주었다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">우분투도 윈도우 못지않게 편하게 쓸 수 있다. 그래픽 환경에 설정을 해보자.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">---------------------------------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. System &gt;&gt; Administration &gt;&gt; Synaptic Package Manager를 선택한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. 메뉴에서 검색(Search)를 선택. \"xserver-xorg-video-intel\"을 키워드로 검색한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. 위의 그림과 같이 intel 드라이버가 검색이 될 것이다. (만약 검색이 안되면 메뉴의 setting&gt;&gt;repositories를 선택하여 \"universe, multiverse, restricted\" 소스를 추가한 다음. reload를 실행하고 다시 검색해 본다.)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">검색된 드라이버를 설치한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">4. 드라이버 설치가 끝이나면 시스템이 이 드라이버를 사용할 수 있게 해주어야 한다. 터미널을 실행시켜 다음의 코드를 입력한 후 \"xorg.conf\" 파일을 수정한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sudo gedit /etc/X11/xorg.conf&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">5. 텍스트 파일이 열리면 Section \"Device\" 부분을 찾는다.(Ctrl+F 이용) 다음과 같이 수정한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Section \"Device\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">.......&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Driver \"i810\" &lt;==== Driver \"intel\"로 수정한다. .......&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">(dpkg-reconfigure xserver-xorg 를 사용할 수 있으면 이를 이용해도 좋다.)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">6. 저장하고 닫은 후 시스템을 제시작하면 아마 섹시한 와이드 화면을 볼 수 있을 것이다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">만약안될시 아래방법 해볼것...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. 첨부파일 다운로드 -&gt; 압축해제 -&gt; 915resolution 을 /usr/bin 에 복사&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. 915resolution -l 으로 해상도 확인&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. # 915resolution 38 1440 900&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">4. # 915resolution 38 1440 900 24&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">5. /etc/X11/xorg.conf \"Display\" 부분 편집&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; Subsection \"Display\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Depth&nbsp; &nbsp; &nbsp; 24&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Modes&nbsp; &nbsp; &nbsp; \"1440x900\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EndSubsection&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; EndSection&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">6. /etc/init.d/bootmisc.sh 맨 아래부분에 입력&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/usr/bin/915resolution 38 1440 900&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--------------------------------------------------------</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:06:52',1,'2019-04-15 16:06:52','210.101.103.92','','','','','','','','','','','',''),(58,-58,'',58,0,0,'','','html1','[Windows] VC++.NET의 프로젝트를 VC++ 6.0 프로젝트로 변환','<p><span style=\"color: #404040; font-family: 굴림;\">말 그대로 VC++.NET의 프로젝트를 하위인 VC++ 6.0 프로젝트로 변환해 주는 프로그램입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">현재 VC++ 6.0에서는 .NET의 프로젝트와 호환이 되지 않아 읽어 오지를 못했죠..&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이 프로그램을 이용하여 변환하시고 사용하시면 됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">간단한 사용법은... 도스모드에서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">prjconverter c:\\project\\test\\test.sln&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">(c:\\project\\test\\test.sln은 해당 프로젝트의 sln 파일 경로 및 파일명입니다.)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">형식으로 작업해주시면 되구요...</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:07:37',1,'2019-04-15 16:07:37','210.101.103.92','','','','','','','','','','','',''),(59,-59,'',59,0,0,'','','html1','[Etc] C 포인터, 확실히 알자(1) - 변수와 포인터','<p><span style=\"color: #404040; font-family: 굴림;\">C Language를 공부하면서 가장 이해하기 어려운 것이 무어냐고 물어본다면,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">아마도 거의 대부분 \"바로 포인터(Pointer)라는 녀석이다!\" 라고 말할 것입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">C에서 다른 건 다 이해가 되어도 \"포인터 만큼은 죽어도 모르겠다\" 라고 말하는 경우를 제 주변에서도 심심치 않게 봐왔습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">사실 C는 어려울 수밖에 없습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">C를 그저 프로그래밍의 기초 과정에서 배우는 옛날 언어라고 생각하고 가볍게 볼만큼 만만한 녀석이 전혀 아닙니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">C는 어셈블리(Assembly)의 사촌입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">다시 말하면, C는 하드웨어 - 특히 마이크로프로세서(CPU)와 친한 녀석입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">때문에 하드웨어에 대한 기반 지식없이는 C를 제대로 이해할 수가 없습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">포인터라는 녀석이 특히 그렇습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">C를 강력하게 만드는 무기가 바로 포인터라고 흔히 말하지만,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이걸 이해하는 것은 왜 그리 어려운 걸까요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">조엘(\'조엘 온 소프트웨어\'의 저자)은 이 \'포인터\'의 개념을 이해하는 게 \'그냥 불가능\'한 인간이 있다고 말합니다만, 저는 절대로 이해 불가능한 것이 아니라고 굳게 믿습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">제가 여기서 그것을 감히 증명해 보려고 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">일단 기초의 기초부터 들어갑니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">아주 유치할 정도로 기초부터 다시 설명하겠습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. 메모리(Memory)와 어드레스(Address)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">일단 포인터의 동작은 전부 메모리(Memory)와 관련이 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">따라서 우리는 먼저 메모리에 대해서 알아야 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">폰 노이만 구조(프로그램 내장 방식)를 따르는 현대의 모든 컴퓨터들은 기본적으로 모든 것이 주기억장치 - \'메모리\'에 올라가야 CPU가 실행을 시킬 수 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">프로그램 수행 코드도 메모리에 올라가고, 그에 필요한 데이터 역시 메모리에 올라갑니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">일단 여기서 우리는 \'데이터\'에 관심을 가져보기로 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">\'100\' 이라는 숫자가 메모리에 올려졌다고 해보죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그러면 메모리의 어딘가에 이런식으로 데이터가 저장이 될겁니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">─┬───┬───┬───┬─&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">…│１００│　　　│　　　│…&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">─┴───┴───┴───┴─&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이제 메모리에 저장된 \'100\'이란 숫자를 꺼내오려고(읽어오려고) 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그런데 문제는 이 100이란 숫자가 드넓은 메모리 영역의 어디에 존재하는지 알아야 한다는 겁니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그래서 데이터가 저장되는 메모리 공간에는 일종의 일련번호가 부여되어 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그것을 메모리의 주소 - 어드레스(Address)라고 부릅니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">메모리는 기본적으로 바이트(Byte = 8bit) 단위로 데이터가 저장되기 때문에,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">하나의 어드레스는 메모리 상의 하나의 바이트 공간과 대응됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이 말이 이해가 안된다면, C에서의 배열(Array)을 연상하면 되겠습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">int A[10];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이렇게 하면 C에서는 10개의 정수(int) 데이터를 저장하는 배열이 만들어집니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이것은 마치 10개의 int형 변수를 하나로 묶어서 다루는 것과 같습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">배열의 각 공각에 데이터를 기억시키기 위해서는 이렇게 하죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">A[0] = 100;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">A[1] = 200;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">A[2] = 300;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">A[9] = 1000;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이때 [ ]안에 넣는 숫자, 이것은 곳 배열에서 어느 영역을 지칭하는 \'번호\'인 셈인데,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이것을 메모리의 관점으로 바꿔보면...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">메모리 전체가 하나의 거대한 배열이라고 가정하면,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이 거대 배열의 각 영역에 접근하기 위한 \'번호\'가 필하요게 되고,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">바로 이것이 주소(Address)라는 것으로 보면 됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. 변수&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">우리가 C 코드를 만들때, main() 함수를 작성하면서 가장 먼저하는 일이 무엇입니까?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">────────────────────────────────────────&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">void main()&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">int a, b;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">────────────────────────────────────────&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">바로 변수를 선언하는 거죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">바로 이 선언이라는 것은, 자신이 사용할 메모리 공간을 예약하는 것입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">─┬───┬───┬───┬─&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">…│　ａ　│　ｂ　│　　　│…&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">─┴───┴───┴───┴─&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그럼 예약도 되었겠다, 값을 써보도록 하죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">a = 10;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">b = 20;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">─┬───┬───┬───┬─&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">…│　１０│　２０│　　　│…&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">─┴───┴───┴───┴─&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그럼 이번엔 a, b의 값을 한번 출력해 봅니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">printf(\"%d %d\", a, b);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">[결과]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">10 20&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">C에서는 이처럼 변수 이름을 통해서 메모리에 값을 읽고 쓸 수가 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이 당연한 걸 왜 새삼스레 다시 설명하냐고 태클이 들어올 것 같습니다만, 잠시 참아주세요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">앞서 메모리 상의 데이터는 \'어드레스\'를 통해서 접근할 수 있다고 얘기했습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">C에서 변수는 메모리의 한 부분입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그런데 C에서는 \'변수 이름\'을 가지고 접근하고 있군요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">바로 이 \'변수 이름\'이라는 것은 메모리 어드레스를 추상화시킨 것입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">실제 C에서는 변수앞에 \'&amp;\' 연산자를 붙여서 그 변수의 어드레스를 바로 얻을 수 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">────────────────────────────────────────&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#include&nbsp;</span><stdio.h style=\"color: #404040; font-family: 굴림;\"><br />void main()&nbsp;<br />{&nbsp;<br />int a, b;&nbsp;<br />a = 10;&nbsp;<br />b = 20;&nbsp;<br />printf(\"Address: %d %d\\n\", &amp;a, &amp;b);&nbsp;<br />}&nbsp;<br /><br />[결과]&nbsp;<br /><img name=\"target_resize_image[]\" tmp_width=\"0\" tmp_height=\"0\" src=\"http://blogfiles10.naver.net/data19/2006/5/6/185/pointer_test_1-bitessay.jpg\" style=\"cursor: pointer;\" />&nbsp;<br />────────────────────────────────────────&nbsp;<br />이 결과를 잘 보면, a와 b의 어드레스에는 4만큼의 차이가 있습니다.&nbsp;<br />이것은 둘다 int형(정수형)이고, 일반적으로 32bit CPU에서 정수는 4byte의 크기를 같습니다.&nbsp;<br />그리고 두 변수가 나란히 선언되었기 때문에, 이 둘은 메모리상에서도 연속해서 공간을 차지하게 됩니다.&nbsp;<br />참고로 x86 계열의 CPU는 어드레스가 높은 쪽에서 낮은쪽으로 채워집니다.&nbsp;<br />때문에 먼저 선언된 쪽이 높은 주소값을 가지게 됩니다.&nbsp;<br /><br />3. 데이터와 타입&nbsp;<br />기본상식이지만, 컴퓨터에서는 모든 데이터는 2진수(Binary)로 표현됩니다.&nbsp;<br />이말은 즉, 그 어떤 종류의 데이터라할지라고 메모리에 저장될 때는 2진수로 기록된다고도 할 수 있습니다.&nbsp;<br /><img name=\"target_resize_image[]\" tmp_width=\"0\" tmp_height=\"0\" src=\"http://blogfiles7.naver.net/data17/2006/5/6/86/binary-bitessay.gif\" style=\"cursor: pointer;\" />&nbsp;<br />그럼 반대로, 메모리에 저장된 데이터를 읽어 올때도 역시, 이것을 \"문자열\"로도 \"정수\"로도 \"실수\"로도, 기타 얼마든지 다른 형식으로 읽어 들일 수 있다는 것이 됩니다.&nbsp;<br /><img name=\"target_resize_image[]\" tmp_width=\"0\" tmp_height=\"0\" src=\"http://blogfiles16.naver.net/data19/2006/5/6/239/binary2-bitessay.gif\" style=\"cursor: pointer;\" />&nbsp;<br />그렇다면, 메모리에 저장된 자료를 과연 어떤 형식(Type)으로 해석해야 하는지 문제가 됩니다.&nbsp;<br /><br />그렇기 때문에 우리는 변수를 선언할 때, 반드시 그 변수가 취급하는 데이터형(Type)을 명시하게 됩니다.&nbsp;<br /><br />int number; // 정수형&nbsp;<br />float real_num; // 실수형&nbsp;<br />double bigsize_real; // 큰 실수형&nbsp;<br />char* string; // 문자열&nbsp;<br /><br />또한 이 데이터 타입은, 변수의 선언에 있어서, 그 변수에게 얼마만큼의 메모리 공간을 할당해야 하는가를 결정하는 정보이기도 합니다.&nbsp;<br /><br />보통 int와 float은 4 Byte 크기를 할당받게 되고, double은 8Byte, 문자열의 경우에는 문자열의 길이에 따라 다릅니다.&nbsp;<br /><br />4. 포인터&nbsp;<br />자, 이제 드디어 포인터에 대해 이야기할 차례입니다.&nbsp;<br />\"포인터(Pointer)란 무엇인가?\"&nbsp;<br />라고 묻는 다면, 그 정의는 간단합니다.&nbsp;<br />\"메모리의 어드레스(Address)를 데이터로 취급하는 변수\"&nbsp;<br />즉 포인터 변수에는 어드레스 값을 저장할 수 있습니다.&nbsp;<br />그래서 포인터 변수는 다음처럼 특정 변수의 어드레스를 기억하는 것이 가능합니다.&nbsp;<br /><br />int V;&nbsp;<br />int *P;&nbsp;<br />P = &amp;V;&nbsp;<br /><br />포인터 변수가 어느 변수의 주소(Address)값을 가지고 있는 상태.&nbsp;<br />이 상태를 우리는 포인터 변수 P가 일반 변수 V를 \"가리키고 있다\"라고 표현합니다.&nbsp;<br /><img name=\"target_resize_image[]\" tmp_width=\"0\" tmp_height=\"0\" src=\"http://blogfiles4.naver.net/data17/2006/5/6/211/pointer_1-bitessay.gif\" style=\"cursor: pointer;\" />&nbsp;<br />앞서 메모리의 어드레스를 통해서 메모리에 있는 데이터에 접근할 수 있다고 했습니다.&nbsp;<br />변수 역시 자신이 어드레스를 가지고 있기 때문에, 우리가 변수를 통해서 데이터를 읽고 쓸수 있는 것입니다.&nbsp;<br /><br />그렇다면, 포인터 변수가 데이터로서 가지고 있는 어드레스를 이용해서도 메모리에 접근 할 수 있지 않겠습니까?&nbsp;<br /><img name=\"target_resize_image[]\" tmp_width=\"0\" tmp_height=\"0\" src=\"http://blogfiles6.naver.net/data17/2006/5/6/197/pointer_2-bitessay.gif\" style=\"cursor: pointer;\" />&nbsp;<br />변수 V가 가지고 있는 데이터에 접근 하려 한다고 하면, 보통은 변수 V를 직접 호출해서 바로 접근할 수 있습니다.&nbsp;<br />그런데 포인터 변수 P가 V를 가리키고 있는 상태에서는 포인터 변수 P를 통해서 간접적으로 V에 접근할 수도 있게 됩니다.&nbsp;<br />예를 들면,&nbsp;<br /><br />V = 10;&nbsp;<br /><br />이렇게 V에 10 이란 상수를 바로 기록할 수도 있고,&nbsp;<br /><br />*P = 10;&nbsp;<br /><br />이렇게 포인터 변수를 통해서 간접적으로 V에 10을 저장시킬 수도 있습니다.&nbsp;<br />여기서 포인터 변수 앞에 쓰인 \'*\' 연산자는 보통 \"P가 가리키고 있는 변수의 값을 가져온다\" 라고 말하는데, 사실 정확한 정의는 \"P가 가리키고 있는 곳=장소\" 그 자체입니다.&nbsp;<br /><br />간단히 말하면 \'*\' 연산자가 붙은 포인터 변수 = (*P) 자체가 하나의 변수처럼 취급될 수 있다는 겁니다.&nbsp;<br />따라서 아래처럼 값을 가져오는데도 쓸 수 있고,&nbsp;<br /><br />A = *P;&nbsp;<br /><br />이처럼 값을 저장할 때도 쓸 수 있습니다.&nbsp;<br /><br />*P = A;&nbsp;<br /><br />5. 포인터와 타입&nbsp;<br />C에서 포인터 변수를 선언은 이런식으로 하게됩니다.&nbsp;<br /><br />int *p;&nbsp;<br /><br />자 그럼, 이 p 라는 변수의 타입(Type)은 무엇일까요? 정수(int) 일까요 ??&nbsp;<br />잠깐 다른 문제를 내보겠습니다.&nbsp;<br /><br />정수형(int) 변수의 타입(Type)은? → 정수(int)&nbsp;<br />실수형(float) 변수의 타입은? → 실수(float)&nbsp;<br /><br />자, 그럼 포인터 변수의 타입은?&nbsp;<br />네, 당연히 포인터(Pointer)입니다.&nbsp;<br /><br />int *ip;&nbsp;<br />float *fp;&nbsp;<br />double *dp;&nbsp;<br />char *cp;&nbsp;<br />void *vp;&nbsp;<br /><br />이렇게 선언된 변수들은 죄다 \'포인터\' 형입니다.&nbsp;<br />결국 그 정체는 그저 \'어드레스\'를 저장하는 변수인 겁니다.&nbsp;<br />32bit CPU에서 이 어드레스는 32bit 정수(4 Byte)로 표현됩니다.&nbsp;<br />따라서 결국은 포인터 변수라는 건 int형 변수나 별반 다를게 없습니다.&nbsp;<br />단지 그 정수를 \'어드레스\'라고 해석할 뿐인 겁니다.&nbsp;<br />C에서는 변수 선언시에, 이름 앞에 \'*\' 라는 표시를 붙여서 이것이 포인터형 변수라고 컴파일러에게 알려줍니다.&nbsp;<br />그럼 * 앞에 있는 int 같은 타입 정보는 대체 무엇인가?&nbsp;<br /><br />앞서 메모리에 저장된 데이터를 해석하려면 타입(Type) 정보가 필요하다고 했습니다.&nbsp;<br />포인터 변수의 타입은 포인터이니까, 포인터 변수의 데이터는 어드레스로 인식하면 됩니다.&nbsp;<br /><br />그치만, 포인터 변수가 가리키는 곳(포인터 변수에 저장된 어드레스)에 있는 데이터는 어떻게 해석해야 하는가가 문제가 됩니다.&nbsp;<br />따라서 포인터 변수를 선언할 때는 두 가지 타입 정보가 필요합니다.&nbsp;<br />정확히 말하면, 포인터 변수가 가리키는 것에 대한 타입 정보가 추가로 필요해 지는 겁니다.&nbsp;<br /><br />int *p;&nbsp;<br /><br />이렇게 선언된 포인터 변수는 가리키는 대상이 정수(int) 타입이라는 것을 의미합니다.&nbsp;<br />앞서 \'*\' 가 붙은건 다 포인터형 변수라고 말했습니다만...&nbsp;<br /><br />int *ip;&nbsp;<br />float *fp;&nbsp;<br /><br />그 말대로라면 여기서의 ip와 fp는 같은 타입이라는 얘기가 됩니다.&nbsp;<br />그럼 이런 것도 가능할까요.&nbsp;<br /><br />int a = 10;&nbsp;<br />int *ip;&nbsp;<br />float *fp;&nbsp;<br />ip = &amp;a;&nbsp;<br />fp = ip;&nbsp;<br /><br />마지막 문장 \"fp = ip\"에서는 ip가 가진 값이 변수 a에 대한 어드레스이므로, fp에는 a의 어드레스 값이 기록됩니다. \"fp = &amp;a\"와 같은 결과가 되죠.&nbsp;<br />결론적으로 ip와 fp에 둘 다 같은 정수형 변수 a의 어드레스를 저장시켰습니다.&nbsp;<br />뭔가 불안해 보이는 코드이지만, 사실 이렇게 해도 컴파일은 됩니다.&nbsp;<br />다만 컴파일러는 정중하게 경고(warring) 메세지를 보냅니다.&nbsp;<br /><br />\'int \' differs in levels of indirection from \'float *\'&nbsp;<br /><br />실수형 자료를 가리키는 포인터 fp에 정수형 변수의 어드레스를 할당시켰다는 거지요.&nbsp;<br />그래서 데이터를 잘못 해석해버릴 가능성이 있기 때문에 컴파일러가 경고를 보낸겁니다.&nbsp;<br />실제로 저렇게 사용하면 큰일(?)날 수 있습니다(...)&nbsp;<br /><br />마무리&nbsp;<br />결론적으로 포인터라는 것은 메모리, 그 중에서도 \'어드레스\'를 다루는 테크닉입니다.&nbsp;<br />그렇기에 포인터를 알려면 메모리와 어드레스에 대한 이해가 필수인 거지요.&nbsp;<br />그래서 본격적으로 포인터에 대해 얘기하기 전에,&nbsp;<br />메모리와 연관지어서 기초적인 부분을 다시 정리해본 겁니다.&nbsp;<br />여기까진 그다지 어렵진 않을 겁니다.&nbsp;<br /><br />다음에는 포인터를 처음 접할때 조금씩 햇갈리기 시작하는 배열과 포인터의 관계에 대해서 알아보겠습니다.</stdio.h></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:08:10',0,'2019-04-15 16:08:10','210.101.103.92','','','','','','','','','','','',''),(60,-60,'',60,0,0,'','','html1','[Linux] 우분투(Ubuntu) 설치 후 사라진 Windows XP 복구 방법','<p><span style=\"color: #404040; font-family: 굴림;\">우분투 7.10을 설치한 이후 윈도 XP가 뜨지 않는다는 제보(?)가 심심치 않게 들립니다. 이 경우에 어떻게 하는지에 대하여 아래 써 놓았는데도 많은 분들이 조금 혼동스럽게 생각하고 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">따라서 그림을 곁들여 우분투 7.10을 설치한 후 윈도 XP가 뜨지 않을 때의 복구 방법을 설명할까 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-윈도 XP의 복구가 가능한 경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">우분투를 설치한 후 윈 XP가 뜨지 않음&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">마운트된 드라이브를 보면 \'sda1\'(또는 개인 환경에 따라서 \'sda2\'로 존재할 경우도 있습니다.)이 존재하고 그 안 폴더를 보면 \"Windows\"폴더 및 XP환경에서의&nbsp; 여러 폴더가 존재함 - 마운트 된 하드에서 Windows\"폴더 및 XP환경에서의&nbsp; 여러 폴더가 존재하는지 찾아 보시라는 이야기입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-윈도 XP의 복구가 불가능한 경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">우분투를 설치한 후 윈 XP가 뜨지 않음&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">마운트된 드라이브를 열어 아무리 찾아 봐도 Windows\"폴더 및 XP환경에서의&nbsp; 여러 폴더가 보이지 않음 - 기존 윈 XP 드리이브가 포멧된 경우입니다. 불가합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">자신의 시스템이 복구 가능한지 확인하셨으면 아래 &lt;그림 1&gt;을 참고하여 터미널을 엽니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-아래 &lt;그림 2&gt;를 참고하여 root 계정으로 gedit를 띄워 작업합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">계정@ubuntu:~$ sudo -s&nbsp; &nbsp; - root로 들어갑니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">[sudo] password for 계정:&nbsp; &nbsp; - root 암호를 넣습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"mailto:root@ubuntu\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">root@ubuntu</a><span style=\"color: #404040; font-family: 굴림;\">:~# gedit&nbsp; &nbsp; - gedit( 텍스트 편집기)을 엽니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-\'enu.lst\'의 경로는 아래와 같으며 이해가 되지 않는 분은 &lt;그림 3&gt;을 참조하시기 바랍니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/boot/grub/menu.lst&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">위 &lt;그림 3&gt;을 참조하시면 \"menu.lst\"가 열립니다. 이를 사정에 맞게 수정하시면 됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">아래는 제 시스템(우분투 7.10)의 \"menu.lst\"이며 이를 수정하는 방법을 간단하게 적었습니다.(파일로 첨부되어 있기도 합니다.) 영어로 되어 있지만 잘 읽어 보시면 어렵지 않게 되어 있습니다. 몇 번 만져보는 수고를 하시면 쉽게 수정하실 수 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">나의 menu.lst&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">전제 : 각 줄의 명령이 유효하게 하시려면 각 줄 맨 앞의 \"#\"표시를 지우시면 됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># menu.lst - See: grub(8), info grub, update-grub(8)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; grub-install(8), grub-floppy(8),&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; grub-md5-crypt, /usr/share/doc/grub&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; and /usr/share/doc/grub-doc/.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## default num&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># Set the default entry to the entry number NUM. Numbering starts from 0, and&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># the entry number 0 is the default if the command is not used.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># You can specify \'saved\' instead of a number. In this case, the default entry&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># is the entry saved with the command \'savedefault\'.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># WARNING: If you are using dmraid do not use \'savedefault\' or your&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># array will desync and will not let you boot your system.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">default&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## timeout sec - 처음 grub가 뜰 때의 시간을 나타냅니다. 아마 이 시간을 0으로 하면 가장 위에 올라온 시스템(우분투)으로만 부팅되겠죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># Set a timeout, in SEC seconds, before automatically booting the default entry&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># (normally the first entry defined).&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">timeout&nbsp; &nbsp; &nbsp; &nbsp; 10 -10초로 지정되어 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## hiddenmenu -말 그대로 메뉴를 숨기는 것입니다. \"ESC\"를 누르면 나타난다고 되어 있죠?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># Hides the menu by default (press ESC to see the menu)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#hiddenmenu - 앞의 #을 지우시면 구동시 grub는 \"hiddenmenu\"를 실행합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># Pretty colours&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#color cyan/blue white/blue&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## password [\'--md5\'] passwd&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># If used in the first section of a menu file, disable all interactive editing&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># control (menu entry editor and command-line)&nbsp; and entries protected by the&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># command \'lock\'&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># e.g. password topsecret&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; &nbsp; password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># password topsecret&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># examples - 예를 적어 놨네요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># title&nbsp; &nbsp; &nbsp; &nbsp; Windows 95/98/NT/2000&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,0) - C드라이브의 첫번째 파티션&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># makeactive&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># chainloader&nbsp; &nbsp; +1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># title&nbsp; &nbsp; &nbsp; &nbsp; Linux&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,1) - C드라이브의 첫번째 파티션&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># kernel&nbsp; &nbsp; /vmlinuz root=/dev/hda2 ro&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">### BEGIN AUTOMAGIC KERNELS LIST&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## lines between the AUTOMAGIC KERNELS LIST markers will be modified&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## by the debian update-grub script except for the default options below&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## DO NOT UNCOMMENT THEM, Just edit them to your needs&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## ## Start Default Options ##&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## default kernel options&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## default kernel options for automagic boot options&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## If you want special options for specific kernels use kopt_x_y_z&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## where x.y.z is kernel version. Minor versions can be omitted.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. kopt=root=/dev/hda1 ro&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">##&nbsp; &nbsp; &nbsp; kopt_2_6_8=root=/dev/hdc1 ro&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">##&nbsp; &nbsp; &nbsp; kopt_2_6_8_2_686=root=/dev/hdc2 ro&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># kopt=root=UUID=451e8690-c177-4720-8ee5-090837eae5e1 ro&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## Setup crashdump menu entries&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. crashdump=1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># crashdump=0&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## default grub root device&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. groot=(hd0,0)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># groot=(hd0,2)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## should update-grub create alternative automagic boot options&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. alternative=true&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">##&nbsp; &nbsp; &nbsp; alternative=false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># alternative=true&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## should update-grub lock alternative automagic boot options&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. lockalternative=true&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">##&nbsp; &nbsp; &nbsp; lockalternative=false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># lockalternative=false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## additional options to use with the default boot option, but not with the&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## alternatives&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. defoptions=vga=791 resume=/dev/hda5&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># defoptions=quiet splash&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## should update-grub lock old automagic boot options&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. lockold=false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">##&nbsp; &nbsp; &nbsp; lockold=true&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># lockold=false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## Xen hypervisor options to use with the default Xen boot option&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># xenhopt=&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## Xen Linux kernel options to use with the default Xen boot option&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># xenkopt=console=tty0&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## altoption boot targets option&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## multiple altoptions lines are allowed&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. altoptions=(extra menu suffix) extra boot options&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">##&nbsp; &nbsp; &nbsp; altoptions=(recovery) single&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># altoptions=(recovery mode) single&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## controls how many kernels should be put into the menu.lst&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## only counts the first occurence of a kernel, not the&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## alternative kernel options&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. howmany=all&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">##&nbsp; &nbsp; &nbsp; howmany=7&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># howmany=all&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## should update-grub create memtest86 boot option&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## e.g. memtest86=true&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">##&nbsp; &nbsp; &nbsp; memtest86=false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># memtest86=true&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## should update-grub adjust the value of the default booted system&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## can be true or false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># updatedefaultentry=false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## should update-grub add savedefault to the default options&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## can be true or false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># savedefault=false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## ## End Default Options ## - 아래부터가 grub메뉴에 나타나는 OS들이 순서입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">title&nbsp; &nbsp; &nbsp; &nbsp; Ubuntu 7.10, kernel 2.6.22-14-generic - 우분투&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,2) - 디폴트 드라이브의 세번째 파티션&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">kernel&nbsp; &nbsp; &nbsp; &nbsp; /boot/vmlinuz-2.6.22-14-generic root=UUID=451e8690-c177-4720-8ee5-090837eae5e1 ro quiet splash&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">initrd&nbsp; &nbsp; &nbsp; &nbsp; /boot/initrd.img-2.6.22-14-generic&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">quiet&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">title&nbsp; &nbsp; &nbsp; &nbsp; Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,2)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">kernel&nbsp; &nbsp; &nbsp; &nbsp; /boot/vmlinuz-2.6.22-14-generic root=UUID=451e8690-c177-4720-8ee5-090837eae5e1 ro single&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">initrd&nbsp; &nbsp; &nbsp; &nbsp; /boot/initrd.img-2.6.22-14-generic&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">title&nbsp; &nbsp; &nbsp; &nbsp; Ubuntu 7.10, memtest86+&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,2)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">kernel&nbsp; &nbsp; &nbsp; &nbsp; /boot/memtest86+.bin&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">quiet&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">### END DEBIAN AUTOMAGIC KERNELS LIST&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># This is a divider, added to separate the menu items below from the Debian&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># ones.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">title&nbsp; &nbsp; &nbsp; &nbsp; Other operating systems:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># This entry automatically added by the Debian installer for a non-linux OS&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># on /dev/sda1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">title&nbsp; &nbsp; &nbsp; &nbsp; Microsoft Windows XP Professional - 윈 XP&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,0) - 디폴트 하드의 첫번째 파티션&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">savedefault&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">makeactive&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">chainloader&nbsp; &nbsp; +1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">여기까지가 제 \"menu.lst\"의 내용인데요, 빨간 글씨는 저의 설명입니다. 좀 어렵게 느껴 지실 것 같은데요, 쉽게 정리하면 아래와 같습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. root 계정으로 들어가 gedit를 연다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. 경로를 찾아( /boot/grub/menu.lst) menu.lst 파일을 연다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. menu.lst 파일을 아래와 같이 수정한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">## ## End Default Options ##&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">여기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">title&nbsp; &nbsp; &nbsp; &nbsp; Ubuntu gutsy (development branch), kernel 2.6.22-13-generic&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,2)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">kernel&nbsp; &nbsp; &nbsp; &nbsp; /boot/vmlinuz-2.6.22-13-generic root=UUID=d4054918-443a-46cb-a7c7-864c0bd00dd7 ro quiet splash&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">initrd&nbsp; &nbsp; &nbsp; &nbsp; /boot/initrd.img-2.6.22-13-generic&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">부분이 나오는데, 이 부분 다음에&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">title&nbsp; &nbsp; &nbsp; &nbsp; Windows 95/98/NT/2000&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,0)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">makeactive&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">chainloader&nbsp; &nbsp; +1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">라는 네 줄을 입력한다. 이 때 염두해야 할 점은 혹 윈도가 어디에 설치되었는지 확인해야 한다는 것입니다. 대부분은 마스터 드리이브의 처음 파티션(\"C\"라고 하죠.)에 윈도를 설치하기 때문에 위와 같이 입력하면 됩니다만, 혹 파티션을 나눠 두번째 파티션(\"D\")에 윈도를 설치하셨다면 그에 알맞게 위 입력 부분 중에서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,0)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">를 아래와 같이 조정하셔야 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,0) - 마스터 하드의 첫번째 파티션(\"C\")에 윈도 XP가 설치된 경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,1) - 마스터 하드의 두번째 파티션(\"D\")에 윈도 XP가 설치된 경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd0,2) - 마스터 하드의 세번째 파티션(\"E\")에 윈도 XP가 설치된 경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd1,0) - 슬래이브 하드의 첫번째 파티션(\"C\")에 윈도 XP가 설치된 경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd1,1) - 슬래이브 하드의 두번째 파티션(\"D\")에 윈도 XP가 설치된 경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">root&nbsp; &nbsp; &nbsp; &nbsp; (hd1,2) - 슬래이브 하드의 세번째 파티션(\"E\")에 윈도 XP가 설치된 경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">4. 처음 부팅할 때 GRUB메뉴에서 윈도를 가장 윗 줄에 보이게 하려면&nbsp; 위 설정을 3번의 &lt;여기&gt;에 적어 주시면 됩니다.</span></p>','','',0,0,3,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:08:42',1,'2019-04-15 16:08:42','210.101.103.92','','','','','','','','','','','',''),(61,-61,'',61,0,0,'','','html1','[Windows] Visual C++ 에러메세지 조치방안','<p><span style=\"color: #404040; font-family: 굴림;\">D:\\imgae_programming\\TestCV\\TestCV.cpp(139) :&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">error C2664: \'cvSetMouseCallback\' : cannot convert parameter 2 from \'void (void)\' to \'void (__cdecl *)(int,int,int,int,void *)\' None of the functions with this name in scope match the target type Error executing cl.exe.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">===&gt; 맨위에 함수원형을 정의해준다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">void mouseHandler(int event, int x, int y, int flags, void *param)</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:09:06',0,'2019-04-15 16:09:06','210.101.103.92','','','','','','','','','','','',''),(62,-62,'',62,0,0,'','','html1','[Windows] OpenCV 를 이용한 face detection','<span style=\"color: #404040; font-family: 굴림;\">OpenCV 를 이용한 face detection</span>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:09:40',2,'2019-04-15 16:09:40','210.101.103.92','','','','','','','','','','','',''),(63,-63,'',63,0,0,'','','html1','[Windows] ARToolKit 셋팅방법','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"tt\" style=\"color: #575757; font-size: 9pt;\">&nbsp;<img src=\"http://geoworld.cafe24.com/gnu3/bbs/skin/board/2basic/icon_file.gif\" align=\"absmiddle\" />&nbsp;<a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gbdownload.php&amp;bo_table=Computer&amp;wr_id=7421&amp;index=2\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"><span class=\"tt\" style=\"font-size: 9pt; color: #575757;\">ARToolKit.zip (9.6M)</span></a>, Down:2</td>\r\n         </tr>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">출처&nbsp;<br /><a href=\"http://blog.naver.com/doodog2113?Redirect=Log&amp;logNo=40034329962\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40;\">http://blog.naver.com/doodog2113?Redirect=Log&amp;logNo=40034329962</a>&nbsp;<br /><a href=\"http://rajent.tistory.com/24\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40;\">http://rajent.tistory.com/24</a>&nbsp;<br />-------------------------------------------------------------------&nbsp;<br />ARToolkit은 Augmented reality를 쉽게 구현할 수 있도록 만들어진 툴.&nbsp;<br />손바닥 크기 내외의 마커를 기준으로 가상의 물체를 생성하여 보여줄 수 있다.&nbsp;<br />입력 비디오 장치(작은 캠으로도 충분)가 필요하다.&nbsp;<br /><br />[설치 및 실행 방법]&nbsp;<br />1. visual studio 6.0이상을 설치한다.&nbsp;<br /><br />2. ARToolkit을 다운로드 받는다.&nbsp;<br />&nbsp; &nbsp; ARToolKit2.65vrml.zip (9MB 정도)&nbsp;<br /><br />3. glutdll을 다운로드 받는다.&nbsp;<br />&nbsp; &nbsp; glutdll.zip&nbsp;<br /><br />4. glutdll.zip의 압축을 풀어서 다음 위치에 복사한다.&nbsp;<br />&nbsp; &nbsp; glut32.dll -&gt; %WinDir%System&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 예) C:WINDOWSsystem&nbsp;<br />&nbsp; &nbsp; glut32.lib, ARmulti32.lib -&gt; $(MSDevDir)....VC98lib&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 예) C:Program FilesMicrosoft Visual StudioVC98Lib&nbsp;<br />&nbsp; &nbsp; glut.h&nbsp; &nbsp; -&gt; $(MSDevDir)....VC98includeGL&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 예) C:Program FilesMicrosoft Visual StudioVC98includeGL&nbsp;<br /><br />5. ARToolKit2.65vrml.zip 파일의 압축을 풀어 사용한다.&nbsp;<br />&nbsp; simple, simpleVRML, multiTest 의 세종류가 구현되어 있는데,&nbsp;<br />&nbsp; simple은 하나의 마커 위에 openGL으로 만든 육면체를 생성함으로써 테스트 하는 것.&nbsp;<br />&nbsp; simpleVRML은 하나의 마커 위에 vrml로 만든 물체를 생성하여 보여주는 것.&nbsp;<br />&nbsp; multiTest는 여러개의 마커 위에 가상의 물체를 생성하여 보여주는 것.&nbsp;<br /><br />&nbsp; 모두의 실행 파일이 bin 디렉토리에 존재하므로 시험해볼 수 있다.&nbsp;<br />&nbsp; 그리고 각각의 소스 파일은 example 디렉토리에 들어있다.&nbsp;<br />&nbsp; 컴파일 해서 사용하되, 비주얼 스튜디오에서 바로 실행시키면 당연히 안된다;;;&nbsp;<br />&nbsp; bin 디렉토리로 가서 실행시킬 것. (라이브러리 path 문제&gt;_&lt;)&nbsp;<br />&nbsp;&nbsp;<br />[응용하기]&nbsp;<br />1. 새로운 마커를 만들어 사용하는 방법&nbsp;<br />&nbsp; 다운받은 ARToolkit에 mk_patt 라는 폴더가 있다.&nbsp;<br />&nbsp; 이것의 실행 파일이 bin 디렉토리에 있는데, 새로 만든 마커를 카메라로 찍어 인식하여 사용한다. 비디오 화면에 마커 주위로 테두리가 생길 때 마우스 왼쪽 클릭을 하고 파일 이름을 입력하면 패턴 파일이 *.dat로 bin/data 폴더에 생성된다.&nbsp;<br /><br />[레퍼런스]&nbsp;<br />&nbsp; &nbsp;&nbsp;<a href=\"http://www.xmission.com/~nate/glut/README-win32.txt\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40;\">http://www.xmission.com/~nate/glut/README-win32.txt</a>&nbsp;<br />&nbsp; &nbsp;&nbsp;<a href=\"http://www.hitl.washington.edu/research/shared_space/download/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40;\">http://www.hitl.washington.edu/research/shared_space/download/</a></span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','https://blog.naver.com/doodog2113/40034329962','https://rajent.tistory.com/24',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:10:28',2,'2019-04-15 16:10:28','210.101.103.92','','','','','','','','','','','',''),(64,-64,'',64,0,0,'','','html1','[html/script] 간단한 트리메뉴 만들기','<p><span style=\"color: #404040; font-family: 굴림;\">&lt;HTML&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;HEAD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TITLE&gt;BLUEB&lt;/TITLE&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;STYLE&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; #demo {cursor: hand}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; #demo UL {display: none;cursor: text}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; .key {text-decoration: underline}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/STYLE&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;SCRIPT&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">function disp(el) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; el.children[1].style.display = (el.children[1].style.display==\'\' ? \'block\' : \'\')&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">function checkKey(el) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; if (event.keyCode==13)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; el.click()&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/SCRIPT&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/head&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;BODY&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;UL ID=demo&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;LI&gt;&lt;SPAN ACCESSKEY=A TABINDEX=1 ONKEYPRESS=\"checkKey(this)\" ONCLICK=\"disp(this.parentElement)\"&gt;menu 1&lt;/SPAN&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;UL&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;LI&gt;menu 1-1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;LI&gt;menu 1-2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/UL&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;LI&gt;&lt;SPAN ACCESSKEY=D TABINDEX=2 ONKEYPRESS=\"checkKey(this)\" ONCLICK=\"disp(this.parentElement)\"&gt;menu 2&lt;/SPAN&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;UL&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;LI&gt;menu 2-1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;LI&gt;menu 2-2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;LI&gt;menu 2-3&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;/UL&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;LI&gt;&lt;SPAN ACCESSKEY=R TABINDEX=3 ONKEYPRESS=\"checkKey(this)\" ONCLICK=\"disp(this.parentElement)\"&gt;menu 3&lt;/SPAN&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;UL&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;LI&gt;menu 3-1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;LI&gt;menu 3-2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;LI&gt;menu 3-3&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;/UL&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;LI&gt;&lt;SPAN ACCESSKEY=R TABINDEX=3 ONKEYPRESS=\"checkKey(this)\" ONCLICK=\"disp(this.parentElement)\"&gt;menu 4&lt;/SPAN&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;UL&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;LI&gt;menu 4-1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;LI&gt;menu 4-2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;/UL&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/UL&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/BODY&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/HTML&gt;&nbsp;</span></p>','http://www.blueb.co.kr/bbs.php?table=JS_03&where=ALL&search_step=1&category=트리메뉴&query=view&uid=38&p=1','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:11:02',0,'2019-04-15 16:11:02','210.101.103.92','','','','','','','','','','','',''),(65,-65,'',65,0,0,'','','html1','[html/script]탐색기 같은 트리메뉴','<p><span style=\"color: #404040; font-family: 굴림;\">첨부파일에 있는 tree.js파일을 다운받은후 아래와 같이 인클루드 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;script language=\"JavaScript\" src=\"http://blueb.co.kr/SRC/javascript/tree.js\"&gt;&lt;/script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">메뉴 설정부분은 아래 예제를 참고하시기 바랍니다..&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;var TREE_ITEMS = [&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; [\'Home\', \'</span><a href=\"http://www.blueb.co.kr/\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.blueb.co.kr/\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'검색엔진\', null,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'국내\', null,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'DAUM\', \'</span><a href=\"http://www.daum.net%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.daum.net\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'Naver\',\'</span><a href=\"http://www.naver.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.naver.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'Empas\',\'</span><a href=\"http://www.empas.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.empas.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'국외\', null,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'Yahoo\', \'</span><a href=\"http://www.yahoo.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.yahoo.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'Altavista\',\'</span><a href=\"http://www.altavista.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.altavista.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'쇼핑몰\', null,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'LGeshop\', \'</span><a href=\"http://www.lgeshop.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.lgeshop.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'롯데쇼핑\',\'</span><a href=\"http://www.lotte.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.lotte.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-----------------------------------------------------------------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;html&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;head&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;title&gt;BLUEB&lt;/title&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;style&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; .header1, h1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {color: #ffffff; background: #4682B4; font-weight: bold; font-family: Tahoma, Verdana; font-size: 13px; margin: 0px; padding: 2px;}</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; .header2, h2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {color: #000000; background: #DBEAF5; font-weight: bold; font-family: Tahoma, Verdana; font-size: 12px;}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; .intd&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {color: #000000; font-family: Tahoma, Verdana; font-size: 11px; padding-left: 15px; padding-right: 15px;}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; .ctrl&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {font-family: Tahoma, Verdana, sans-serif; font-size: 12px; width: 100%; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; form&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; { margin: 2px;}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/style&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/head&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;body&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;script language=\"JavaScript\" src=\"http://blueb.co.kr/SRC/javascript/tree.js\"&gt;&lt;/script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var tree_tpl = {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'target\'&nbsp; : \'_blank\',&nbsp; &nbsp; // name of the frame links will be opened in&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // other possible values are: _blank, _parent, _search, _self and _top&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_e\'&nbsp; : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/empty.gif\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/empty.gif\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// empty image&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_l\'&nbsp; : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/line.gif\',%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/line.gif\',&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// vertical line&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; \'icon_32\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// root leaf icon normal&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; \'icon_36\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// root leaf icon selected&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_48\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// root icon normal&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_52\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// root icon selected&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_56\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// root icon opened&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_60\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/base.gif\',&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// root icon selected&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_16\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/folder.gif\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/folder.gif\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// node icon normal&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_20\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/folderopen.gif\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/folderopen.gif\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// node icon selected&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_24\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/folderopen.gif\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/folderopen.gif\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// node icon opened&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_28\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/folderopen.gif\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/folderopen.gif\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// node icon selected opened&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_0\'&nbsp; : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/page.gif\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/page.gif\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// leaf icon normal&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_4\'&nbsp; : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/page.gif\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/page.gif\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// leaf icon selected&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_2\'&nbsp; : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/joinbottom.gif\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/joinbottom.gif\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// junction for leaf&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_3\'&nbsp; : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/join.gif\',%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/join.gif\',&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp; &nbsp; // junction for last leaf&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_18\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/plusbottom.gif\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/plusbottom.gif\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;// junction for closed node&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_19\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/plus.gif\',%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/plus.gif\',&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp; &nbsp; // junctioin for last closed node&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_26\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/minusbottom.gif\',//\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/minusbottom.gif\',//</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;junction for opened node&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \'icon_27\' : \'</span><a href=\"http://blueb.co.kr/SRC/javascript/image/treeicon/minus.gif\'%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blueb.co.kr/SRC/javascript/image/treeicon/minus.gif\'&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp; &nbsp; // junctioin for last opended node&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var TREE_ITEMS = [&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; [\'Home\', \'</span><a href=\"http://www.blueb.co.kr/\',\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.blueb.co.kr/\',</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; [\'검색엔진\', null,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'국내\', null,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'DAUM\', \'</span><a href=\"http://www.daum.net%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.daum.net\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'Naver\',\'</span><a href=\"http://www.naver.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.naver.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'Empas\',\'</span><a href=\"http://www.empas.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.empas.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'국외\', null,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'Yahoo\', \'</span><a href=\"http://www.yahoo.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.yahoo.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'Altavista\',\'</span><a href=\"http://www.altavista.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.altavista.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; [\'쇼핑몰\', null,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'LGeshop\', \'</span><a href=\"http://www.lgeshop.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.lgeshop.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [\'롯데쇼핑\',\'</span><a href=\"http://www.lotte.com%27/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.lotte.com\'</a><span style=\"color: #404040; font-family: 굴림;\">],&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;script language=\"JavaScript\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;!--&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new tree (TREE_ITEMS, tree_tpl);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //--&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/body&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/html&gt;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:11:21',1,'2019-04-15 16:11:21','210.101.103.92','','','','','','','','','','','',''),(66,-66,'',66,0,0,'','','html1','[html/javascript] 마우스 롤오버시 하위메뉴 나타내기','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">&lt;html&gt;&nbsp;<br /><br />&lt;Script language=\"javascript\"&gt;&nbsp;<br />function menuShow(menuidx) {&nbsp;<br />&nbsp; &nbsp; menuHide();&nbsp;<br />&nbsp; &nbsp; document.all(menuidx).style.display=\"inline\";&nbsp;<br />}&nbsp;<br /><br />function menuHide() {&nbsp;<br />&nbsp; &nbsp; menu1.style.display = \"none\";&nbsp;<br />&nbsp; &nbsp; menu2.style.display = \"none\";&nbsp;<br />&nbsp; &nbsp; menu3.style.display = \"none\";&nbsp;<br />}&nbsp;<br />&lt;/script&gt;&nbsp;<br /><br />&lt;body&gt;&nbsp;<br />&lt;table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"700\"&gt;&nbsp;<br />&lt;tr&gt;&nbsp;<br />&nbsp; &nbsp; &lt;td onmouseover=\"javascript:menuShow(\'menu1\');\"&gt;&lt;img src=\"ttt/m1.jpg\"&gt;&lt;/td&gt;&nbsp;<br />&nbsp; &nbsp; &lt;td onmouseover=\"javascript:menuShow(\'menu2\');\"&gt;&lt;img src=\"ttt/m2.jpg\"&gt;&lt;/td&gt;&nbsp;<br />&nbsp; &nbsp; &lt;td onmouseover=\"javascript:menuShow(\'menu3\');\"&gt;&lt;img src=\"ttt/m3.jpg\"&gt;&lt;/td&gt;&nbsp;<br />&lt;/tr&gt;&nbsp;<br />&lt;tr&gt;&nbsp;<br />&nbsp; &nbsp; &lt;td colspan=\"5\"&gt;&nbsp;<br /><br />&nbsp; &nbsp; &lt;table border=\"0\" ID=\"menu1\" style=\"display:none;\" width=\"100%\"&gt;&nbsp;<br />&nbsp; &nbsp; &lt;tr&gt;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;&lt;img src=\"ttt/sub1-1.jpg\"&gt;&lt;/td&gt;&nbsp;<br />&nbsp; &nbsp; &lt;/tr&gt;&nbsp;<br />&nbsp; &nbsp; &lt;/table&gt;&nbsp;<br /><br />&nbsp; &nbsp; &lt;table border=\"0\" ID=\"menu2\" style=\"display:none;\" width=\"100%\"&gt;&nbsp;<br />&nbsp; &nbsp; &lt;tr&gt;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;&lt;img src=\"ttt/sub2-1.jpg\"&gt;&lt;/td&gt;&nbsp;<br />&nbsp; &nbsp; &lt;/tr&gt;&nbsp;<br />&nbsp; &nbsp; &lt;/table&gt;&nbsp;<br /><br />&nbsp; &nbsp; &lt;table border=\"0\" ID=\"menu3\" style=\"display:none;\" width=\"100%\"&gt;&nbsp;<br />&nbsp; &nbsp; &lt;tr&gt;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;&lt;img src=\"ttt/sub3-1.jpg\"&gt;&lt;/td&gt;&nbsp;<br />&nbsp; &nbsp; &lt;/tr&gt;&nbsp;<br />&nbsp; &nbsp; &lt;/table&gt;&nbsp;<br /><br />&nbsp; &nbsp; &lt;/td&gt;&nbsp;<br />&lt;/tr&gt;&nbsp;<br />&lt;/table&gt;&nbsp;<br /><br />&lt;/body&gt;&nbsp;<br />&lt;/html&gt;&nbsp;</span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:11:34',0,'2019-04-15 16:11:34','210.101.103.92','','','','','','','','','','','',''),(67,-67,'',67,0,0,'','','html1','[html/flash] 플래쉬 메뉴 만들기','<p><span style=\"color: #404040; font-family: 굴림;\">출처)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://likeme.pe.kr/entry/%EB%93%9C%EB%A6%BC%EC%9C%84%EB%B2%84-CS3-Live-Style-Menu-%ED%94%8C%EB%9E%98%EC%89%AC-%EB%A9%94%EB%89%B4%EB%A7%8C%EB%93%A4%EA%B8%B0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://likeme.pe.kr/entry/드림위버-CS3-Live-Style-Menu-플래쉬-메뉴만들기</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span></p>','https://likeme.pe.kr/entry/%EB%93%9C%EB%A6%BC%EC%9C%84%EB%B2%84-CS3-Live-Style-Menu-%ED%94%8C%EB%9E%98%EC%89%AC-%EB%A9%94%EB%89%B4%EB%A7%8C%EB%93%A4%EA%B8%B0','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:12:24',2,'2019-04-15 16:12:24','210.101.103.92','','','','','','','','','','','',''),(68,-68,'',68,0,0,'','','html1','[windows] 포토샵 메뉴판 요약','<span style=\"color: #404040; font-family: 굴림;\">포토샵 메뉴판&nbsp;요약</span>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:13:16',1,'2019-04-15 16:13:16','210.101.103.92','','','','','','','','','','','',''),(69,-69,'',69,0,0,'','','html1','[php] 서버푸쉬를 이용한 실시간 테이블 갱신','<p><span style=\"color: #404040; font-family: 굴림;\">1. 서버푸시를 사용할 수 밖에 없었던 이유는...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">많은 내용을 계속 실시간으로 보여 줘야 되는데, 리플레쉬는 너무 딸그락, 껌뻑~~ ,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">마우스 커서의 변화... 짜증남... ^^;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. 그러나 문제점 발생&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">한 페이지 가득인 테이블의 내용을 갱신하기에는 푸시도 껌뻑~~&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. 꽁수 부리기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">리플레쉬 처럼 프레임으로 나누고 히든으로 한다음, 자바스크립트가 필요한 부분을 뿌리게 끔 했습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">히든 프레임 : push&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">내용 프레임 : main 라고 하면....&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">테이블에서 내용이 나올 부분은 &lt;INPUT&gt;을 이용하였습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">갱신되는 내용은 push 프레임에 자바스크립트로 씌여지고,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">여기의 자바스크립트가 main 프레임의 &lt;INPUT&gt;에 내용을 씁니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이렇게 하니까... 필요한것만 바뀌어서, 아주 보기가 좋더군요...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">버벅 되지 않고, 딸깍 소리도 없고, 쉽게 구현되고......&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">update.data의 내용을 갱신하면 최대 sleep()에 설정된 시간후에&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">웹페이지가 갱신됨...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">실제 이용할때는 update.data라는 파일은 서버에서 자동으로 갱신 해주면 됨...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">4. 소스 보기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">----&lt; index.html &gt;---------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;HTML&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;HEAD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;FRAMESET rows=\"0,*\" border=0 frameborder=0 framespacing=0 noresize&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;FRAME name=\"push\" src=\"push.php\" scrolling=no noresize&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;FRAME name=\"main\" src=\"main.php\" scrolling=auto noresize&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/FRAMESET&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/HEAD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/HTML&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">----&lt; main.php &gt;-----------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;HTML&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;HEAD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TITLE&gt;PUSH 테스트&lt;/TITLE&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;META http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/HEAD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;BODY&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;H2&gt;빵야아찌가 좋아하는 여자 연예인 베스트 5 ㅡ.ㅡ;;&lt;/H2&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;FORM name=\"pushform\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;TABLE border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &lt;TR&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TD align=\"center\"&gt;&lt;B&gt;NO.&lt;/b&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TD align=\"center\"&gt;&lt;B&gt;이름&lt;/b&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TD align=\"center\"&gt;&lt;B&gt;키&lt;/b&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TD align=\"center\"&gt;&lt;B&gt;몸무게&lt;/b&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &lt;/TR&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">for( $i=1;$i&lt;=5;$i++ )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; echo \"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &lt;TR&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TD align=\"center\"&gt;&lt;B&gt;$i&lt;/B&gt;&lt;/TD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TD align=\"center\"&gt;&lt;INPUT type=text name=\"name_$i\" size=8&gt;&lt;/TD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TD align=\"center\"&gt;&lt;INPUT type=text name=\"height_$i\" size=4&gt;&lt;/TD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;TD align=\"center\"&gt;&lt;INPUT type=text name=\"weight_$i\" size=4&gt;&lt;/TD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &lt;/TR&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; \";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/TABLE&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/FORM&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/BODY&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/HTML&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">----&lt; update.data &gt;--------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">옥주현@</span><a href=\"mailto:173@55\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">173@55</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">송혜교@</span><a href=\"mailto:161@45\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">161@45</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">김하늘@</span><a href=\"mailto:167@45\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">167@45</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">배두나@</span><a href=\"mailto:168@50\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">168@50</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">김남주@</span><a href=\"mailto:169@48\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">169@48</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">----&lt; push.php &gt;-----------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">function push()&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $fp = fopen( \"./update.data\", \"r\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; echo \"&lt;script language=\"javascript\"&gt;n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; echo \"&lt;!--n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; for( $i=1;$i&lt;=5;$i++)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; $buff = fgets( $fp, 1024 );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; $buff = trim( $buff );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; $array = explode( \"@\", $buff );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; echo \"parent.main.document.pushform.name_$i.value = \"$array[0]\";n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; echo \"parent.main.document.pushform.height_$i.value = \"$array[1]\";n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; echo \"parent.main.document.pushform.weight_$i.value = \"$array[2]\";nn\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; echo \"self.status = \"10초에 한번씩 자료를 업데이트 합니다. 서버푸시를 사용하였습니다.\";n\"; // 이걸 넣어주면, 연결중이라는 보기안좋은 메시지를 가릴수가 있지요..&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; echo \"--&gt;n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; echo \"&lt;/script&gt;n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; fclose( $fp );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sleep( 1 ); // main 프레임의 테이블보다 먼저 불려지면 오류가 뜨기 때문에...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">while(1)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; push();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; flush();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; sleep( 10 ); // 10초에 한번씩 갱신...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:13:42',0,'2019-04-15 16:13:42','210.101.103.92','','','','','','','','','','','',''),(70,-70,'',70,0,0,'','','html1','[Linux] IP 머스커레이딩 예제 - iptables 이용...','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">###################################################&nbsp;<br />#!/bin/sh&nbsp;<br /><br /># ppp0은 ADSL,modem 인터페이스, eth1은 내부이더넷&nbsp;<br /># ppp0을 EXTIF변수로 선언&nbsp;<br /># eth1을 INTIF변수로 선언&nbsp;<br />EXTIF=\"ppp0\"&nbsp;<br />INTIF=\"eth1\"&nbsp;<br />INTIF2=\"eth2\"&nbsp;<br /><br />echo \" External Interface: $EXTIF\"&nbsp;<br />echo \" Internal Interface: $INTiF\"&nbsp;<br />echo \" Internal Interface: $INTIF2\"&nbsp;<br /><br /># iptables와 ftp사용을 위한 모듈올리기&nbsp;<br />/sbin/insmod ip_tables&nbsp;<br />/sbin/insmod ip_conntrack&nbsp;<br />/sbin/insmod ip_conntrack_ftp&nbsp;<br />/sbin/insmod iptable_nat&nbsp;<br />/sbin/insmod ip_nat_ftp&nbsp;<br /><br /># ip_forward위한 커널매개변수변경&nbsp;<br />echo \"1\" &gt; /proc/sys/net/ipv4/ip_forward&nbsp;<br /><br /># SLIP, PPP, or DHCP의 유동IP를 위한 커널매개변수변경&nbsp;<br />echo \"1\" &gt; /proc/sys/net/ipv4/ip_dynaddr&nbsp;<br /><br /># IP forwarding과 Masquerading 설정시작&nbsp;<br /># 기존에 존재하는 rule을 지우고, 새로운 룰을 적용하기위한 정책설정&nbsp;<br />iptables -P INPUT ACCEPT&nbsp;<br />iptables -F INPUT&nbsp;<br />iptables -P OUTPUT ACCEPT&nbsp;<br />iptables -F OUTPUT&nbsp;<br />iptables -P FORWARD DROP&nbsp;<br />iptables -F FORWARD&nbsp;<br />iptables -t nat -F&nbsp;<br /><br />#iptables rule정책설정&nbsp;<br />iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT&nbsp;<br />iptables -A FORWARD -i $EXTIF -o $INTIF2 -m state --state ESTABLISHED,RELATED -j ACCEPT&nbsp;<br />iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT&nbsp;<br />iptables -A FORWARD -i $INTIF2 -o $EXTIF -j ACCEPT&nbsp;<br />iptables -A FORWARD -j LOG&nbsp;<br /><br /># ip-masq설정&nbsp;<br />iptables -t nat -A POSTROUTING -o $EXTIF -j&nbsp;<br />###################################################</span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:13:56',0,'2019-04-15 16:13:56','210.101.103.92','','','','','','','','','','','',''),(71,-71,'',71,0,0,'','','html1','[php] 프로그래밍시 소수의 곱셈과 나눗셈은 이렇게 피하자','<p><span style=\"color: #404040; font-family: 굴림;\">사업을 하기 위해서는 \'부가가치세\'나 \'세금계산서\'등은 기본적으로 알고 있어야 하는 상식이다. 그래서 종종 [×1.1]이나 [÷1.1]과 같은 소수 곱하기(또는 나누기) 계산을 하게 된다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그런데, 오늘 아주 재미있는 현상을 발견했다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">PHP에서 위의 아주 단순한 계산에 뜻밖의 결과값을 내어놓는 것이었다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">일단 아래 소스를 보자.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?php&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$cost = 11000 / 1.1 ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if ( $cost == 10000 ) { echo $cost . \"원 (부가세 별도)\" ; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">10000원 (부가세 별도)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">당연한 결과이다. 그렇다면, 11000원을 22000원으로 해 보자.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?php&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$cost = 22000 / 1.1 ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if ( $cost == 20000 ) { echo $cost . \"원 (부가세 별도)\" ; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">20000원 (부가세 별도)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이 역시 뜻대로 되었다. 그러면 33000원은 어떨까?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?php&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$cost = 33000 / 1.1 ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if ( $cost == 30000 ) { echo $cost . \"원 (부가세 별도)\" ; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그렇다. 33000원부터는 결과값이 나오지 않는다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">위의 실험을 44000원, 55000원, 66000원…… 식으로 계속 해 나가다 보면&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">66000원도 결과값이 나오지 않는 것을 볼 수 있다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그렇다면 3의 배수에서만 이런 오류가 나는 것일까?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그렇지 않다. 재미있게도 99000원에서는 예상대로 결과값이 나온다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">대체, 프로그램에서 왜 이런 비상식적인 결과가 나오게 되는 것이며,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그 해결책은 무엇일까?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">일단, 나의 해결책은 이렇다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">소수를 사용하지 않고 정수만을 사용해 계산해 보았다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">따라서 코드로 한다면 아래와 같이 될 것이다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?php&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$costIncVat = 30000 * 11 / 10 ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$costExcVat = 33000 * 10 / 11 ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">위와 같이 공식이 바뀌면 위에서 보았던 오류가 발생하지 않는다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?php&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$a = 30000 ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$b = 33000 ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$bb = $a * 11 / 10 ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if ( $bb == $b ) { echo $bb . \"원 (부가세 포함)\" ; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">echo \"&lt;br&gt;\" ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$aa = $b * 10 / 11 ;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if ( $aa == $a ) { echo $aa . \"원 (부가세 별도)\" ; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">33000원 (부가세 포함)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">30000원 (부가세 별도)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그렇다면, 왜 소수점으로 곱셈 또는 나눗셈을 할 때는 이러한 현상이 나타나는 것일까?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이유는, 컴퓨터는 2진수로 계산하는데,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">10진수의 \'소수\'를 2진수로 완벽하게 표현할 수 없기 때문이다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">퍼온글 : 오차의 원인과 대책 (작성자 : 조무영[moonyeom])&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. 숫자 자체에 오차가 생기는 원인&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 컴퓨터는 2진수로 계산을 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 2 의 n 승(이하 2^n 으로 표기)의 숫자 합으로만 취급할 수 있지요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 그래서 다음 숫자들을 다음과 같이 만듭니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 3 = 0*2^3+0*2^2+1*2^1+1*2^0 = 0011 (이진수입니다)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 4 = 0*2^3+1*2^2+0*2^1+0*2^0 = 0100&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 5 = 0*2^3+1*2^2+0*2^1+1*2^0 = 0101&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 위와 같죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 정수는 이렇습니다만, 소수점 이하의 수는 어떻게 만들어야 할까요 ?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 0.5 는 1/2 입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 이것은 2 의 -1 승으로 표현할 수 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 그럼 다음 숫자들을 표현하는게 가능합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 3.5&nbsp; = 0*2^3+0*2^2+1*2^1+1*2^0 + 1*2^(-1)+0*2^(-2) = 0011.10&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 0.5&nbsp; = 0*2^3+0*2^2+0*2^1+0*2^0 + 1*2^(-1)+0*2^(-2) = 0000.10&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 0.25 = 0*2^3+0*2^2+0*2^1+0*2^0 + 0*2^(-1)+1*2^(-2) = 0000.01&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 뭐 이런 식입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 그런데요...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 이런 이진수의 세계에서 0.1 은 만들 수가 없습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 0.1 은 1/(2*5) 로 표현할 수 있지요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 여기서 5 라는 성분이 2 의 n 승 형태로 만들어질 수 없기 때문입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 무조건 2 만으로 인수분해되는 수만 표현이 가능한겁니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 0.3 도 마찬가지이구요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 0.01 도 마찬가지입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 이건 모든 진법이 마찬가지입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 10 진법에서도 2, 5, 10(10의 약수)으로 나누어 떨어지지 않고&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 계속 소수점 아래자리로 진행되는 소수를 무한소수라고 부르지요...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 예를 들자면,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 1/3 = 0.33333...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 1/7 = 0.142857... 이렇게 무한한 소수가 되지만&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 1/2 = 0.5&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 1/5 = 0.2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 1/(2*2*5) = 0.05 등은 요렇게 딱 떨어지게 되죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 그래서 컴퓨터가 이진수로 표현할 수 없는 수에 대해서는 근사치를 쓰게 되는거죠...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. FloatToStr 을 통해 원하는 값을 얻으려면...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 실수형에는 여러가지가 있는데요, Help 에서 Single 을 찾아보시면 나옵니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 대표적인 실수 자료형과 사용 바이트수를 보면 다음과 같습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; Single&nbsp; : 4 바이트&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; Double&nbsp; : 8 바이트&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; Extended : 10 바이트&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 많은 바이트를 사용해서 표현하는 경우에 그 정밀도가 그만큼 커지겠지요 ?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 그래서 상대적으로 Single 형을 쓰면 오차가 크게 되는거지요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; SysUtils 에 정의되어있는 FloatToStr 함수를 보면 다음과 같습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; function FloatToStr(Value: Extended): string;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; var&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; Buffer: array[0..63] of Char;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; begin&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; SetString(Result, Buffer, FloatToText(Buffer, Value, fvExtended, ffGeneral, 15, 0));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; end;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; FloatToText 함수의 파라미터로 들어간 15 라는 숫자가 바로 정밀도입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 어느정도 자리수 이하를 버릴것인가 하는것을 정의한 것이지요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 이 때문에 FloatToStr 으로 출력을 할 경우 소수점 이하의 숫자는 최대 15 개까지만&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 나오게 됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; FloatToStr 함수는 근사값을 만들기 위해 생긴 오차가 소수점 15자리 이후일 경우엔&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 오차를 보정해줍니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; (그래봐야 단순 반올림이겠지만...)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 이제 FloatToStr(0.01) 을 생각해보겠습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 만약 0.01 을 Single 형 변수로 FloatToStr 함수에 넣어주면 어떻게 될까요 ?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 실제로 넘어가는 숫자는&nbsp; 0.0099999997764825... 가 됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 이미 숫자 자체에 소수점 15자리 이내의 오차가 포함되어버린 것이지요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 이걸 FloatToStr 에서 Extended 형으로 받은 후에 오차보정을 해도&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 여전히 0.01 은 되지 않는거지요.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 결국 FloatToStr 함수를 통해 나온 결과는 \"0.00999999977648258\" 이 됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 하지만 Double 형이나 Extended 형에 0.01 을 담았다면 얘기가 달라집니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 정밀도가 훨씬 높은 자료형이기 때문에 오차의 크기도 훨씬 작고,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 따라서 오차는 소수점 15자리 이후에 존재하게 된다는거죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 그래서 Double 이나 Extended 에 0.01 을 넣어서 FloatToStr 함수를 통과시키면&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; \"0.01\" 이 나오게 됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 결국 정밀도가 더 높은 자료형인 Double 이나 Extended 를 사용해서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; 문제를 해결하시면 되겠다는 얘기입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">출처 : 델마당 질문과 답변 게시판&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:14:15',0,'2019-04-15 16:14:15','210.101.103.92','','','','','','','','','','','',''),(72,-72,'',72,0,0,'','','html1','[Etc] Net Transport build 2.60','<span style=\"color: #404040; font-family: 굴림;\">설치후, Crack 폴더안에 파일을 Program폴더안에 net transport 아래에 복사.</span><br /><br />','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:14:39',1,'2019-04-15 16:14:39','210.101.103.92','','','','','','','','','','','',''),(73,-73,'',73,0,0,'','','html1','[php] php 웹프로그래밍 소스','<span style=\"color: #404040; font-family: 굴림;\">[php] php 웹프로그래밍 소스</span><br /><br />','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:15:01',1,'2019-04-15 16:15:01','210.101.103.92','','','','','','','','','','','',''),(75,-75,'',75,0,0,'','','html1','[php] 금액 숫자를 한글로 표시하기','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">function read_korean($num)&nbsp;<br />&nbsp;{&nbsp;<br />&nbsp; $return_val = \"\";&nbsp;<br />&nbsp; if(!is_numeric($num))&nbsp;<br />&nbsp; {&nbsp;<br />&nbsp; echo(\"&lt;script&gt;window.alert(\'유효한 숫자가 아닙니다\')&lt;/script&gt;\");&nbsp;<br />&nbsp; return 0;&nbsp;<br />&nbsp; }&nbsp;<br />&nbsp;&nbsp;<br />&nbsp; $arr_number = strrev($num);&nbsp;<br /><br />&nbsp; for($i =strlen($arr_number)-1; $i&gt;=0; $i--)&nbsp;<br />&nbsp; {&nbsp;<br />&nbsp; /////////////////////////////////////////////////&nbsp;<br />&nbsp; // 현재 자리를 구함&nbsp;<br />&nbsp; $digit = substr($arr_number, $i, 1);&nbsp;<br />&nbsp; ///////////////////////////////////////////////////////////&nbsp;<br />&nbsp; // 각 자리 명칭&nbsp;<br />&nbsp; switch($digit)&nbsp;<br />&nbsp; {&nbsp;<br />&nbsp; &nbsp; case \'-\' : $return_val .= \"(-) \";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp;<br />&nbsp; &nbsp; case \'0\' : $return_val .= \"\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp;<br />&nbsp; &nbsp; case \'1\' : $return_val .= \"일\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; case \'2\' : $return_val .= \"이\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; case \'3\' : $return_val .= \"삼\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; case \'4\' : $return_val .= \"사\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; case \'5\' : $return_val .= \"오\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; case \'6\' : $return_val .= \"육\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; case \'7\' : $return_val .= \"칠\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; case \'8\' : $return_val .= \"팔\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; case \'9\' : $return_val .= \"구\";&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp;&nbsp;<br />&nbsp; }&nbsp;<br /><br />&nbsp; &nbsp; if($digit==\"-\")continue;&nbsp;<br /><br />&nbsp; &nbsp; ///////////////////////////////////////////////////////////&nbsp;<br />&nbsp; &nbsp; // 4자리 표기법 공통부분&nbsp;<br />&nbsp; &nbsp; if($digit != 0)&nbsp;<br />&nbsp; &nbsp; {&nbsp;<br />&nbsp; &nbsp; if($i % 4 == 1)$return_val .= \"십\";&nbsp;<br />&nbsp; &nbsp; else if($i % 4 == 2)$return_val .= \"백\";&nbsp;<br />&nbsp; &nbsp; else if($i % 4 == 3)$return_val .= \"천\";&nbsp;<br />&nbsp; &nbsp; }&nbsp;<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; ///////////////////////////////////////////////////////////&nbsp;<br />&nbsp; &nbsp; // 4자리 한자 표기법 단위&nbsp;<br />&nbsp; &nbsp; if($i % 4 == 0)&nbsp;<br />&nbsp; &nbsp; {&nbsp;<br />&nbsp; &nbsp; if( floor($i/ 4) ==0)$return_val .= \"\";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==1)$return_val .= \"&lt;b&gt;만&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==2)$return_val .= \"&lt;b&gt;억&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==3)$return_val .= \"&lt;b&gt;조&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==4)$return_val .= \"&lt;b&gt;경&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==5)$return_val .= \"&lt;b&gt;해&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==6)$return_val .= \"&lt;b&gt;자&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==7)$return_val .= \"&lt;b&gt;양&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==8)$return_val .= \"&lt;b&gt;구&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==9)$return_val .= \"&lt;b&gt;간&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==10)$return_val .= \"&lt;b&gt;정&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==11)$return_val .= \"&lt;b&gt;재&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==12)$return_val .= \"&lt;b&gt;극&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==13)$return_val .= \"&lt;b&gt;항하사&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==14)$return_val .= \"&lt;b&gt;아승기&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==15)$return_val .= \"&lt;b&gt;나유타&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==16)$return_val .= \"&lt;b&gt;불가사의&lt;/b&gt; \";&nbsp;<br />&nbsp; &nbsp; else if(floor($i / 4)==16)$return_val .= \"&lt;b&gt;무량대수&lt;/b&gt; \";&nbsp; &nbsp; }&nbsp;<br />&nbsp; }&nbsp;<br /><br />&nbsp; return $return_val;&nbsp;<br />&nbsp;}&nbsp;<br /><br />&nbsp;////////////////////////////////////////////////////////////////&nbsp;<br />&nbsp;// 예제 출력&nbsp;<br />&nbsp;// (-) 일십이경 삼천팔백사십조 일천오십육억 칠천팔십구만 오천이백 이 출력된다.&nbsp;<br />&nbsp;// 매개변수는 반드시 아래처럼 텍스트 형태 또는 변수로 줘야 합니다..&nbsp;<br /><br />&nbsp;// 만약 그냥 숫자로 주면 중간에서 값이 잘려서 올바른 결과를 얻을 수 없습니다.&nbsp;<br /><br />&nbsp;echo read_korean(\"-123840105670895200\");&nbsp;<br />?&gt;&nbsp;<br /><br />제가 만든 함수입니다.. 잘 이용해보세요...^^;</span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:15:37',0,'2019-04-15 16:15:37','210.101.103.92','','','','','','','','','','','',''),(74,-74,'',74,0,0,'','','html1','[html/javascript] 자바스크립트 뒤로 돌아가기 팁','<p><span style=\"color: #404040; font-family: 굴림;\">session_cache_limiter(\'no-cache, must-revalidate\');&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">session_start();&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:15:25',0,'2019-04-15 16:15:25','210.101.103.92','','','','','','','','','','','',''),(76,-76,'',76,0,0,'','','html1','[Linux/Ubuntu] 우분투 grub복구하기','<p><span style=\"color: #404040; font-family: 굴림;\">1. 라이브 시디로 부팅&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. sudo -i&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. mkdir /mnt/aaa&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">4. mount /dev/sdb1 /mnt/aaa&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; (자신의 우분투 파티션을 모르면, 시스템-관리-디스크로 확인)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">5. grub&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">6. find /boot/grub/stage1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">7. root (hd1,0)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">8. setup (hd0)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">9. quit&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">10. 재부팅</span></p>\r\n<p><span style=\"color: #404040; font-family: 굴림;\">-----------------------------------------------------------</span></p>\r\n<p>&nbsp;</p>\r\n<div class=\"area_title\" style=\"margin: 0px 0px 30px; padding: 0px 0px 15px; border-bottom: 1px solid rgb(239, 239, 239); color: #666666; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 14px; background-color: #ffffff;\">\r\n   <h3 class=\"tit_post\" style=\"font-size: 34px; margin: 0px; padding: 5px 0px 10px; font-weight: normal; line-height: 43px; color: #222222;\">듀얼 부팅 시 grub 실행이 안 될 경우 grub 설치</h3>\r\n   <span class=\"info_post\" style=\"font-size: 13px; color: #a7a7a7;\">ufris&nbsp;<span class=\"txt_bar\" style=\"display: inline-block; width: 1px; height: 9px; margin: 0px 9px 0px 5px; background-color: #ebebeb;\"></span>2020. 8. 14. 15:56</span></div>\r\n<div class=\"area_view\" style=\"margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; background-color: #ffffff;\">\r\n   <div class=\"tt_article_useless_p_margin contents_style\" style=\"margin: 0px; padding: 0px;\">\r\n      <p style=\"margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; line-height: 28px; padding-top: 0px !important; padding-bottom: 0px !important;\"><font color=\"#555555\"><span style=\"font-size: 15px;\">듀얼 부팅 시 bios를 지나면 grub이 뜨면서 윈도우로 부팅할 지 우분투로 부팅할 지 선택하는 grub이 뜨는데</span></font><br /><font color=\"#555555\"><span style=\"font-size: 15px;\">설치 과정에서 grub이 잘못 깔려서 grub 창이 안뜨는 경우가 있습니다.</span></font><br /><font color=\"#555555\"><span style=\"font-size: 15px;\">부트 로더를 다시 깔면 이 문제가 해결 됩니다</span></font><br /><i style=\"\"><br /><b style=\"color: #5c5c5c; font-size: 1.44em;\">1. Try&nbsp;Ubuntu&nbsp;without&nbsp;installing</b><font color=\"#5c5c5c\"><span style=\"font-size: 21.6px;\"><b><br /></b></span></font></i><font color=\"#555555\"><span style=\"font-size: 15px;\">우분투 부팅 usb를 연결한 상태에서 부팅 usb로 부팅하면&nbsp;</span></font><b style=\"color: #555555; font-size: 15px;\">Try Ubuntu without installing&nbsp;</b><font color=\"#555555\"><span style=\"font-size: 15px;\">으로 우분투를 실행시켜 줍니다</span></font></p>\r\n      <p style=\"margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; line-height: 28px; padding-top: 0px !important; padding-bottom: 0px !important;\"><i style=\"\"><b style=\"color: #5c5c5c; font-size: 1.44em;\">2. 터미널에서 부트로더 복구</b><font color=\"#5c5c5c\"><span style=\"font-size: 21.6px;\"><b><br /></b></span></font></i><font color=\"#555555\"><span style=\"font-size: 15px;\">$ sudo add-apt-repository ppa:yannubuntu/boot-repair<br /></span></font><span style=\"color: #555555; font-size: 15px;\">$ sudo apt-get update<br /></span><span style=\"color: #555555; font-size: 15px;\">$ sudo apt-get install boot-repair</span></p>\r\n      <p style=\"margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; line-height: 28px; padding-top: 0px !important; padding-bottom: 0px !important;\"><i style=\"\"><b style=\"color: #5c5c5c; font-size: 1.44em;\">3. boot-repair 실행</b><font color=\"#5c5c5c\"><span style=\"font-size: 21.6px;\"><b><br /></b></span></font></i><font color=\"#555555\"><span style=\"font-size: 15px;\">$ sudo boot-repair&nbsp;<br /></span></font><span style=\"color: #555555; font-size: 15px;\">로 boot-repair을 실행한 후에 추천 복구 방식으로 복구를 해주면 됩니다.</span><span style=\"color: #555555; font-size: 15px;\">&nbsp;</span></p>\r\n      <p style=\"color: #555555; font-size: 15px; margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; line-height: 28px; padding-top: 0px !important; padding-bottom: 0px !important;\">진행 과정에서 선택창이 나오는데 yes를 선택해주고 넘어가면 됩니다.&nbsp;</p>\r\n      <p style=\"color: #555555; font-size: 15px; margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; line-height: 28px; padding-top: 0px !important; padding-bottom: 0px !important;\">마지막으로 재부팅을 하면 정상적으로 grub 창이 뜹니다</p>\r\n      </div>\r\n   </div>','','',0,0,7,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:15:50',0,'2019-04-15 16:15:50','210.101.103.92','','','','','','','','','','','',''),(77,-77,'',77,0,0,'','','html1','[html/script] 플래쉬 효과같은 이미지 갤러리','<p><a href=\"http://www.huddletogether.com/projects/lightbox2/%C2%A0\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.huddletogether.com/projects/lightbox2/&nbsp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;여기 가셔서 최신버전 다운받으신후&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">압축을 푸시고 폴더안에 있는 CSS, JS, IMAGES 세 폴더를 FTP로 서버에 올리신후&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;link rel=\"stylesheet\" href=\"css/lightbox.css\" type=\"text/css\" media=\"screen\" /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;script src=\"js/prototype.js\" type=\"text/javascript\"&gt;&lt;/script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;script src=\"js/scriptaculous.js?load=effects\" type=\"text/javascript\"&gt;&lt;/script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;script src=\"js/lightbox.js\" type=\"text/javascript\"&gt;&lt;/script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이부분을 넣고자 하시는 페이지 상단 head 부분에 넣으시고&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">썸네일 이미지 부분에&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;a href=\"보여지는 이미지 URL\" rel=\"lightbox\" title=\"이미지제목\"&gt;&lt;img src=\"썸네일이미지 URL\" border=0&gt;&lt;/a&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">을 넣으시면 아주 잘됩니다.&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:16:09',1,'2019-04-15 16:16:09','210.101.103.92','','','','','','','','','','','',''),(78,-78,'',78,0,0,'','','html1','[C/C++] C 포인터 설명자료들...','<p><span style=\"color: #404040; font-family: 굴림;\">출처 :&nbsp;</span><a href=\"http://kr.blog.yahoo.com/mr_21_kr/MYBLOG/dist_frame.html?d=http%3A%2F%2Fkr.blog.yahoo.com%2Fmr_21_kr%2F936554%3Fm%3Dc%26amp%3Bno%3D936554&amp;s=n\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://kr.blog.yahoo.com/mr_21_kr/MYBLOG/dist_frame.html?d=http%3A%2F%2Fkr.blog.yahoo.com%2Fmr_21_kr%2F936554%3Fm%3Dc%26amp%3Bno%3D936554&amp;s=n</a></p>','http://wiki.kldp.org/wiki.php/CLangaugeComplexDeclaration','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:16:47',1,'2019-04-15 16:16:47','210.101.103.92','','','','','','','','','','','',''),(79,-79,'',79,0,0,'','','html1','[ETC] mplayer을 이용한 mms다운로드','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">mplayer mms://주소 -dumpstream -dumpfile&nbsp;파일명.wmv</span><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=15&amp;wr_id=30921\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=15&amp;wr_id=30921\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a></td>\r\n         </tr>\r\n      <tr></tr>\r\n      </tbody>\r\n   </table>\r\n<br />','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:17:18',0,'2019-04-15 16:17:18','210.101.103.92','','','','','','','','','','','',''),(80,-80,'',80,0,0,'','','html1','[windows] Vast TV USB(arkTV) driver & program','<span class=\"content\" style=\"color: #404040;\">Vast TV USB(arkTV) driver &amp; program</span>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:17:46',1,'2019-04-15 16:17:46','210.101.103.92','','','','','','','','','','','',''),(81,-81,'',81,0,0,'','','html1','[php] 엑섹과 mysql간 데이터 이동','<p><span style=\"color: #404040; font-family: 굴림;\">엑셀의 데이타는 .xls라는 확장자이다 보통 엑셀에서 로딩을 한후 다른이름으로 저장시&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">탭으로 분리되는 txt와 콤마로 분리되는 csv파일로 저장할수있다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">둘다 곧바로 mysql에는 load문으로 입력할수있다 당연히 table구조도 엑셀구조와 같아야&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">한다. 하지만 곧바로 넣기전에 약간의 가공이 필요하다면 중간에 php스크립트로 처리를 해서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sql파일로 만들어서 복원하는게 좋다. 그리고 반대로 mysql에서 엑셀로의 방법도 여러가지이다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">데이타를 뽑아내서 table을 만들어 상단에 엑셀다운해더를 추가해서 다운을 받게 하는방법과&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">ex)상단에 다음의 소스를 기술하며 filename부분을 filename.xls(엑셀) filename.txt(텍스트파일)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">filename.cvs(cvs파일)로 원하는 다운 파일로 바꾼후&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">엑셀ex) 탭으로 나눔&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-type: application/vnd.ms-excel; charset=ks_c_5601-1987\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-Disposition: attachment; filename=leejunsik.xls\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-Descript-xion: PHP4 Generated Data\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">echo \"a\\ta\\ta\\ta\\ta\\r\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">echo \"a\\ta\\ta\\ta\\ta\\r\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">cvs ex) 쉄표로 나눔(,)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-type: application/vnd.ms-excel; charset=ks_c_5601-1987\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-Disposition: attachment; filename=leejunsik.cvs\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-Descript-xion: PHP4 Generated Data\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">echo \"a,a,a,a,a\\r\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">echo \"a,a,a,a,a\\r\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txt ex) 탭으로 나눔&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-type: application/vnd.ms-excel; charset=ks_c_5601-1987\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-Disposition: attachment; filename=leejunsik.txt\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-Descript-xion: PHP4 Generated Data\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">echo \"a\\ta\\ta\\ta\\ta\\r\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">echo \"a\\ta\\ta\\ta\\ta\\r\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mysql데이타를 뽑아내서 파일에 tab으로 나누면서 파일에 써서 txt로 저장하거나 ,로 분리해서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">파일에 저장하여 scv로 만들어서 엑셀에서 로딩해도 된다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">엑셀_html형식으로 ex)html문법 사용&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header(\"Content-type: application/vnd.ms-excel\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header(\"Content-Disposition: attachment; filename=leejunsik.xls\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header(\"Expires: 0\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header(\"Cache-Control: must-revalidate, post-check=0,pre-check=0\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header(\"Pragma: public\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;table border=\"1\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;tr align=\"center\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;!--valign은 top과 bottom만 먹음--&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;td width=\"100\" height=\"50\" valign=\"top\"&gt;순번&lt;/td&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;td width=\"100\" height=\"50\" valign=\"middle\"&gt;이름&lt;/td&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;td width=\"100\" height=\"50\" valign=\"bottom\"&gt;값&lt;/td&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/tr&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;tr align=\"center\" valign=\"middle\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;td width=\"100\" height=\"50\" bgcolor=\"blue\"&gt;&lt;font color=\"white\"&gt;&amp;nbsp;001&lt;/font&gt;&lt;/td&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;td width=\"100\" height=\"50\" bgcolor=\"red\"&gt;&lt;font color=\"white\"&gt;순신&lt;/font&gt;&lt;/td&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;td width=\"100\" height=\"50\" bgcolor=\"blue\"&gt;&lt;font color=\"white\"&gt;노량해전&lt;/font&gt;&lt;/td&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/tr&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/table&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">방법1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$srcfn = \"dat.txt\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$linebuf = file($srcfn);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//파일의 내용을 배열로 \\n단위로 잘라서 대입한다.(좋은함수)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$fp = fopen(\"insert.sql\",\"w\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//쓰기 모드로 없으면 만들며 있으면 덮어쒸운다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">for($i=0;$i&lt;count($linebuf);$i++) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$tok = explode(\"\\t\",$linebuf[$i]);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$aaa=trim($tok[0]);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//빈공간제거&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$bbb=trim(ereg_replace(\",\",\"\", $tok[1]));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//빈공간제거와,제거&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$ccc=trim($tok[7]);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$query = \"INSERT INTO table (aaa, bbb, ..., ccc) VALUES ($aaa, \'$bbb\', ..., \'$ccc\');\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">fputs($fp,$query,strlen($query));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">fputs($fp,\"\\n\",strlen(\"\\n\"));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//입력시 엔터를 줘야 줄바꿈을 한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">fclose($fp);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">방법2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$file = \"경로/파일.csv\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$fp = fopen($file,\"r\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$data = \"\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">while($buffer = fread($fp,4096)) $data .= $buffer;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$rows = explode(\"\\n\",$data); // 한줄씩 나눠서 배열에 저장&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">for($i=0; $i&lt;sizeof($rows); $i++){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$field = explode(\",\",$rows[$i]);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$sql = \"insert into table values(\'$field[0]\', \'$field[1]\', \'$field[2]\', \'$field[3]\')\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mysql_query($sql);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">방법3&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">csv를 이용하는 것은 특정 목록을 PHP에서 불러다가 인식하여 처리하기가 편하기 때문입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">csv 파일을 열어보면 레코드가 줄별로 나누어지고 한 행은 ,(콤마)를 기준으로 필드가 나누어서 저장이 됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">a, 1, 1, 1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">b, 2, 2, 2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">c, 3, 3, 3&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">위와 같이 저장이 된 csv 파일이 있다면 이것을 php에서는&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">fopen()함수를 이용하여 불러들입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$file = \"경로/파일.csv\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$fp = fopen($file,\"r\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$data = \"\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">while($buffer = fread($fp,4096)) $data .= $buffer; //모든자료받아옴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$rows = explode(\"\\n\",$data); // 한줄씩 나눠서 배열에 저장&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">for($i=0; $i&lt;sizeof($rows); $i++){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$field = explode(\",\",$rows[$i]);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$sql = \"insert into table values(\'$field[0]\', \'$field[1]\', \'$field[2]\', \'$field[3]\')\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mysql_query($sql);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">file 함수로 이용하시면 편리합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">예)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">while ($line = file($file)) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$value = str_replace(\",\",\"\',\'\",$line);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$sql = \"insert into table values(\'\".$value.\"\')\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mysql_query($sql);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">**csv보다는 txt파일이 좋은이유는 단어 중에 , 가 들어있으면 그것도 분리가 되서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">에러가 날가망성도 있다. txt파일에서의 탭(\\t)은 보통 입력을 안하므로 위에 오류가 일어날&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">확률이 적다.</span></p>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:18:16',0,'2019-04-15 16:18:16','210.101.103.92','','','','','','','','','','','',''),(82,-82,'',82,0,0,'','','html1','[html/script] 웹페이지에서 인쇄시 머리글, 바닥글, 여백 제어 컨트롤 v1,3,0,2','<p><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-----------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">웹페이지 즉, HTML에서 window.print();로 인쇄할 때 머리글, 바닥글을 제어하지 못해서 인쇄시 지저분하게 나오는 것을 방지할 수 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">각종 여백, 머리글, 바닥글을 설정할 수 있으며, 이전값으로 되돌리기, 기본값으로 초기화, 인쇄방향, 인쇄 용지 설정 등을 지원합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">링크 페이지를 참고 하세요..&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">속성:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header: 머리글 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">footer: 바닥글 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">leftMargin: 왼쪽 여백(단위: mm)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">rightMargin: 오른쪽 여백(단위: mm)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">topMargin: 위쪽 여백(단위: mm)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">bottomMargin: 아래쪽 여백(단위: mm)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">PrintBackground: 배경색 및 이미지 인쇄 여부 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Orientation: 인쇄방향 설정(1:가로, 0:세로)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Printer: 인쇄 시 사용할 프린터 지정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">PaperSize: 인쇄 용지 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">메소드:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">RollBack(): 수정 이전 값으로 되돌림(한 단계 이전만 지원)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Clear(): 여백은 0으로, 머리글/바닥글은 모두 제거&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SetDefault(): 기본값으로 복원(여백 모두: 0.75mm, 머리글:&amp;w&amp;b페이지 &amp;p / &amp;P, 바닥글:&amp;u&amp;b&amp;d)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Preview(): 미리보기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Print(confirm): 인쇄, confirm: true이면 인쇄대화상자 표시, 생략하거나 false이면 곧바로 인쇄&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SetupPage(): 페이지 설정 창 띄우기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">CloseIE(): 웹브라우즈 닫기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">string GetPrinters(): 프린터 목록 구하기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">string GetDefaultPrinter(): 기본 프린터 구하기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이벤트:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">OnError(ErrCode, ErrMsg): 에러 발생 시 호출됨&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://isulnara.com/myAPP/IEPageSetupX/IEPageSetupX.html\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">[예제]</a><a style=\"color: #404040; font-family: 굴림;\">&nbsp;<br /></a><a href=\"http://isulnara.com/myAPP/IEPageSetupX/IEPageSetupX.cab\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">[다운로드]</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://isulnara.com/myAPP/IEPageSetupX/IEPageSetupX.exe\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">[수동 설치 프로그램(한글)]</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://isulnara.com/myAPP/IEPageSetupX/IEPageSetupX_en.exe\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\" target=\"_blank\">[수동 설치 프로그램(영문)]</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">라이센스 관련:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">OBJECT 코드에서 아래 코드를 삭제하지 않고, 이 컨트롤 자체를 판매하지 않으며 또한 이 컨트롤을 사용하는 또 다른 ActiveX 컨트롤을 만들지 않는 조건으로 사용을 허가합니다 ^^&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">v1.3.0.2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+1.3.0.0에서 발생한 오른쪽, 위 여백 뒤바뀌는 문제 해결&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">v1.3.0.0&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+기본 프린터 구하는 메소드 추가&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+인쇄 방향 설정 후 인쇄 설정 창 띄울 경우 인쇄방향과 여백 일부 정상적으로 표시되지 않던 문제 해결&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+프린터 설치되지 않은 컴퓨터에서 미리보기할 경우 발생하는 에러 제거&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">v1.1.0.1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+네이버PC그린에서 바이러스/스파이웨어로 오진단되는 문제 해결&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">v1.1.0.0&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+Printer 속성 추가&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+PaperSize 속성 추가&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+GetPrinters() 메소드 추가&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+OnError() 이벤트 추가&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2008/02/11 추가사항 - 홍길동님의 팁&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">인쇄 또는 미리보기 시 점이 찍히는 문제 해결 방법: OBJECT 태그에 style=\"width:0;height:0\" 추가&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">v1.0.20.4&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-OBJECT 코드를 동적으로 로딩할 경우 라이센스 관련 메시지 나오는 것 제거&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">v1.0.20.3&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">+프린터 설치되어 있지 않을 경우 IE 포커스 잃어 버리던 버그 해결&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:18:48',2,'2019-04-15 16:18:48','210.101.103.92','','','','','','','','','','','',''),(83,-83,'',83,0,0,'','','html1','[php] php를 이용, mysql데이터 엑셀저장','<p><span style=\"color: #404040; font-family: 굴림;\">&lt;?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// mysql connect.inc&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@include $_SERVER[\'DOCUMENT_ROOT\'].\"/lib/connect.inc\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// $mode 를 파라메터 값으로 받을경우 여러가지의 excel 파일을 다운 할 수 있다. 예) get_excel.php?mode=1 또는 2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$mode = $_GET[\"mode\"];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">switch($mode){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; case \"1\" : $title = \"다운로드 파일 이름 지정\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $query = \"쿼리\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $columns = \"쿼리의 필드 수\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $field = array(\"필드와 동일한 이름\" , \"아이디\" , \"이 름\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; case \"2\" : $title = \"다운로드 파일 이름 지정\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $query = \"쿼리\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $columns = \"쿼리의 필드 수\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $field = array(\"필드와 동일한 이름\" , \"아이디\" , \"이 름\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; default : $title = \"\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$connect=@mysql_connect($host,$id,$pass);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$mysql=@mysql_select_db($db,$connect);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-type: application/vnd.ms-excel\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-Disposition: attachment; filename=$title.xls\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">header( \"Content-Description: PHP4 Generated Data\" );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;html&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;head&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;title&gt;&lt;/title&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/head&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;body&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;table style=\"border-width:1; border-color:green; border-style:solid;\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;tr align=center&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//$fields = mysql_list_fields(\"$db\", \"$table\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//$columns = mysql_num_fields($fields);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">for ($i = 0; $i &lt; $columns; $i++) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; //$field[$i]=mysql_field_name($fields, $i);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; echo \"&lt;th style=\'border-width:1; border-color:red; border-style:solid;\'&gt;\".$field[$i]. \"&lt;/th&gt;\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/table&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/body&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/html&gt;&nbsp;</span></p>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:19:03',0,'2019-04-15 16:19:03','210.101.103.92','','','','','','','','','','','',''),(84,-84,'',84,0,0,'','','html1','[html/javascript] iframe 인쇄하기','<p><span style=\"color: #404040; font-family: 굴림;\">&lt;HTML&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;HEAD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;SCRIPT&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; function printDiv () {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; top.printArea.focus();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; window.print();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/SCRIPT&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/HEAD&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;BODY&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">인쇄버튼을 클릭하세요!&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;INPUT TYPE=\"button\" ONCLICK=\"printDiv();\" VALUE=\"인쇄\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">어쩌구 저쩌구&lt;br&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;iframe id=\"printArea\" name=\"printArea\" style=\"width:10;height:10\" src=\"innerPrintTest.html\" frameborder=0 style=\"background-color:#ffffff\" &gt;&lt;/iframe&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/BODY&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/HTML&gt;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:19:17',0,'2019-04-15 16:19:17','210.101.103.92','','','','','','','','','','','',''),(85,-85,'',85,0,0,'','','html1','[ETC] Adobe Flex Trial','<p><span style=\"color: #404040; font-family: 굴림;\">1377-4163-0413-3188-7599-9298&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Dear kim bomuk,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Thanks for your interest in Adobe Flex Builder.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Get Started&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">If you have not downloaded Flex Builder, please download the trial version.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Activate Flex Builder&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">After installing the Flex Builder trial, enter the following serial number to activate your product.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Standard Serial Number: 1307-4000-7565-0846-7075-8665&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Start Developing&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">The fastest and easiest way for you to get started with Flex Builder is to visit the Flex Learning Paths on the Flex Developer Center . Go through the tutorials there and see how easy it is to build your own Flex applications.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Get Recognized&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Developers all around the world have built some amazing applications with Flex Builder; you can see their work at the Flex Showcase . We encourage you to build your own application and then submit it to the Flex Showcase so others can see what you\'ve built.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">We look forward to seeing what you build.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">The Adobe Flex Team&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Flex on Facebook</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:19:34',0,'2019-04-15 16:19:34','210.101.103.92','','','','','','','','','','','',''),(86,-86,'',86,0,0,'','','html1','[php] Flex3를 이용한 php연동프로그램 예제','<p><a href=\"https://blog.naver.com/seodaewoo/130038360102\" target=\"_blank\">https://blog.naver.com/seodaewoo/130038360102</a></p>','https://blog.naver.com/seodaewoo/130038360102','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:20:01',1,'2019-04-15 16:20:01','210.101.103.92','','','','','','','','','','','',''),(87,-87,'',87,0,0,'','','html1','[Flex] Flex에 iframe을 이용한 html 불러오기','<p><span style=\"color: #404040; font-family: 굴림;\">------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">플렉스에 네이버나 야후 지도를 표시하기 위해서 시작된 궁금증은 결국 Iframe이라는 커스텀 컴포넌트를 사용해야 한다는 것을 알았다. 근데 Iframe이 뭐람? 커스텀 컴포넌트야? 어디서 구해? 이런 시작부터 쉽지 않았다. 플렉스 초보인 나로써는 플렉스 컴포넌트 까페에가서 이것저것 뒤져보는 수밖에... 다행스럽게도 나같은 초짜들의 질문공세가 상당히 많았다.이것저것 알아본 결과, 일단은 아이프레임을 사용할 수 있게되었다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">일단, 필요한것은 누군가가 멋지게 만들어놓은 Iframe 컴포넌트다. 확장자는 *.mxml 이다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Iframe컴포넌트는 파일 첨부시켜 놓았다. 컴포넌트를 다운받았으면 제일 먼저해주어야 할것이 파일이름을 IFrame.mxml으로 바꿔주어야 한다. 이유는 application mxml파일에서 IFrame이란 이름으로 컴포넌트를 가져다 쓰기 때문이다. 그런다음 플렉스 프로젝트를 생성하고, 이프레임을 src 폴더에 드레그 한다. 이것은 따로 컴파일이 되지 않는다. MXML Application 파일만 컴파일이 된다. 그리고 컴파일이 되는 과정에서 swf 파일과 html파일이 생성된다. 이 컴포넌트를 프로젝트에 포함시켰다면, 이제 이 Iframe컴포넌트를 이용한 플렉스 Application을 만들어보자. 새로운 MXML Application을 생성한다. 이름은 자기 마음데로, 소스는 아래와 같다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">(참고로 이소스는 네이버 까페 FLEX COMPONENT에서 활동중인 \'장창학\'님의 소스임을 밝힌다.)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">************************************************************************&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;mx:Application xmlns:mx=\"http://www.adobe.com/2006/mxml\" xmlns=\"*\" creationComplete=\"iFrame.visible=true\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;mx:Canvas xmlns:mx=\"http://www.adobe.com/2006/mxml\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; resize=\"callLater(moveIFrame)\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; move=\"callLater(moveIFrame)\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;mx:Script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;![CDATA[&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; import flash.external.ExternalInterface;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; import flash.geom.Point;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; import flash.net.navigateToURL;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; private var __source: String;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; /**&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; * Move iframe through ExternalInterface.&nbsp; The location is determined using localToGlobal()&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; * on a Point in the Canvas.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; **/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; private function moveIFrame(): void&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var localPt:Point = new Point(0, 0);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var globalPt:Point = this.localToGlobal(localPt);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.call(\"moveIFrame\", globalPt.x, globalPt.y, this.width, this.height);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; /**&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; * The source URL for the IFrame.&nbsp; When set, the URL is loaded through ExternalInterface.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; **/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; public function set source(source: String): void&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (source)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (! ExternalInterface.available)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw new Error(\"ExternalInterface is not available in this container. Internet Explorer ActiveX, Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime are required.\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; __source = source;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.call(\"loadIFrame\", source);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; moveIFrame();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; public function get source(): String&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return __source;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; /**&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; * Whether the IFrame is visible.&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; **/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; override public function set visible(visible: Boolean): void&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; super.visible=visible;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (visible)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.call(\"showIFrame\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.call(\"hideIFrame\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ]]&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;/mx:Script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/mx:Canvas&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;mx:HBox width=\"100%\" height=\"100%\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;mx:Panel title=\"Tree\" width=\"200\" height=\"100%\" roundedBottomCorners=\"true\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;mx:Tree id=\"tree\" width=\"100%\" height=\"100%\" dataProvider=\"{treeData}\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; labelField=\"@label\" showRoot=\"false\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; change=\"iFrame.source = (Tree(event.target).selectedItem.attribute(\'path\').toString());\"&nbsp; /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/mx:Panel&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;mx:Panel width=\"100%\" height=\"100%\" title=\"Content\" paddingTop=\"1\" paddingBottom=\"1\" paddingLeft=\"1\" paddingRight=\"1\" &gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;IFrame id=\"iFrame\" source=\"http://www.naver.com/\" width=\"100%\" height=\"100%\"&nbsp; /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;mx:ControlBar&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;mx:CheckBox id=\"cbVisible\" label=\"IFrame Visible\" selected=\"true\" click=\"iFrame.visible=cbVisible.selected\"/&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/mx:ControlBar&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/mx:Panel&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;/mx:HBox&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;mx:XMLList id=\"treeData\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;node label=\"검색엔진\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;node label=\"NAVER\" path=\"http://www.naver.com/\" /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;node label=\"EMPAS\" path=\"http://www.empas.com/\" /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;node label=\"YAHOO\" path=\"http://kr.yahoo.com/\" /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/node&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;/mx:XMLList&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/mx:Application&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">************************************************************************&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이 MXML Application 파일을 컴파일하면서 이 안에쓰인 Iframe 컴포넌트가 사용된다. 하지만 이데로 하면 원하는 결과를 얻을 수 없다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">무엇때문인지 모르겠지만, 컴파일후 생성된 html파일을 약간 수정해주어야 한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">************************************************************************&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;!--&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;script language=\"JavaScript\" type=\"text/javascript\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;!--&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// -----------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// Globals&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// Major version of Flash required&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var requiredMajorVersion = 9;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// Minor version of Flash required&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var requiredMinorVersion = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// Minor version of Flash required&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var requiredRevision = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// -----------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// --&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">위에 부분을 아래와 같이 수정한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;script language=\"JavaScript\" type=\"text/javascript\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;!--&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// -----------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// Globals&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// Major version of Flash required&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var requiredMajorVersion = 9;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// Minor version of Flash required&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var requiredMinorVersion = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// Minor version of Flash required&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var requiredRevision = 124;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// -----------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// --&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var requiredMajorVersion = 9;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var requiredMinorVersion = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var requiredRevision = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">function moveIFrame(x,y,w,h) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var frameRef=document.getElementById(\"myFrame\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">frameRef.style.left=x;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">frameRef.style.top=y;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">var iFrameRef=document.getElementById(\"myIFrame\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">iFrameRef.width=w;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">iFrameRef.height=h;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">function hideIFrame(){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">document.getElementById(\"myFrame\").style.visibility=\"hidden\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">function showIFrame(){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">document.getElementById(\"myFrame\").style.visibility=\"visible\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">function loadIFrame(url){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">document.getElementById(\"myFrame\").innerHTML = \"&lt;iframe id=\'myIFrame\' src=\'\" + url + \"\'frameborder=\'0\'&gt;&lt;/iframe&gt;\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/script&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">************************************************************************&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그리고 바로 아래 이 태그를 추가한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;div id=\"myFrame\" style=\"position:absolute;background-color:transparent;border:0px;visibility:hidden;\"&gt;&lt;/div&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그리고 이건 누군가가 질문한 것인데, 그에 대한 답변이 유용할 것 같아 적어둔다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">누군가 패널에 여러개의 아이프레임을 사용하고 싶은데 안된다고 질문했다. 실제로 나도 해보니 안됐다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이에대한 답은 아래와 같다. 아직 해보진 않았지만, 해결되길...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;div&gt;&lt;iframe&gt;&lt;/iframe&gt;&lt;/div&gt; 이렇게 해보세요.. 두개.. 이상.. 다 되요..</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:20:32',1,'2019-04-15 16:20:32','210.101.103.92','','','','','','','','','','','',''),(88,-88,'',88,0,0,'','','html1','[php]  php function - 디렉토리 내의 모든 하위구조를 삭제','<p><span style=\"color: #404040; font-family: 굴림;\">웹파일매니저를 제작하는 과정에서 만들어봤던 php함수.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">재귀함수를 이용해서 만들고 phpschool과 nzeo에 올려놓고보니&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이미 php.net에 더 깔끔한 코드가 올라와있었다;;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">////본인이 제작한 함수////&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">function deldir($name){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;if(is_dir($name)){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $ch=0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $data_list = opendir($name);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; while($file = readdir($data_list)){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; if ($file != \".\" &amp;&amp; $file != \"..\"){$ch++;}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; closedir($data_list);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; if($ch){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $data_list = opendir($name);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; while($file = readdir($data_list)){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; if ($file != \".\" &amp;&amp; $file != \"..\"){delete_all($name.\"/\".$file);}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; closedir($data_list);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; return rmdir($name);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;else{ return unlink($name); }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">////php.net에서 발견한 함수////&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">function delete_all($dir)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $handle = opendir($dir);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; while (false!==($FolderOrFile = readdir($handle)))&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; if($FolderOrFile != \".\" &amp;&amp; $FolderOrFile != \"..\")&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; {&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; if(is_dir(\"$dir/$FolderOrFile\"))&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; { delete_all(\"$dir/$FolderOrFile\"); }&nbsp; // recursive&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; else&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; { unlink(\"$dir/$FolderOrFile\"); }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; closedir($handle);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; if(rmdir($dir))&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; { $success = true; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; return $success;&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">[출처] php function - 디렉토리 내의 모든 하위구조를 삭제|작성자 레파스&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:20:52',0,'2019-04-15 16:20:52','210.101.103.92','','','','','','','','','','','',''),(89,-89,'',89,0,0,'','','html1','[ubuntu] 우분투 9.10 NVIDIA 셋팅 오류 팁','<span style=\"color: #404040; font-family: 굴림;\">우분투 9.10에서 NVIDIA 오류로 인해 xorg.conf 파일저장시 오류해결방법</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--------------------------------------------------------------------------------------------------------------</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sudo nvidia-xconfig</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sudo nvidia-settings</span>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:21:18',0,'2019-04-15 16:21:18','210.101.103.92','','','','','','','','','','','',''),(90,-90,'',90,0,0,'','','html1','[ubuntu/Etc] EPS를 PDF로 변환하는 방법','<p><span style=\"color: #404040; font-family: 굴림;\">출처 &gt;&gt;&nbsp;</span><a href=\"http://doc.ktug.or.kr/metapost/mp_misc/node2.html\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://doc.ktug.or.kr/metapost/mp_misc/node2.html</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">EPS를 PDF로 변환하는 방법&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">MetaPost에서 TEX/LATEX 모드로 PostScript를 만들었을 때에는 앞에서 설명한 바와 같이 먼저 일반적인 EPS로 만들어 주어야 한다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">ghostscript를 사용하여 EPS를 PDF로 변환할 수 있다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=foo.pdf foo.eps&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그러나 이 경우에는 EPS의 Bounding Box를 제대로 처리하지 못하여 변환된 PDF의 크기가 A4 등의 default paper size로 된다. ghostscript에서 BoundingBox를 제대로 처리하려면 Sebastian Rahtz의 perl script, epstopdf를 사용하면 된다. 이 script는 EPS의 Bounding Box를 ghostscript에서 제대로 처리하도록 EPS의 Bounding Box를 수정한 후 ghostscript로 변환하게 해 주는 것이다. 이 perl script는 대부분의 TEX distribution에 포함되어 있다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Perl이 설치되지 않은 OS를 사용한다면 CTAN/support/epstopdf에서 C 언어로된 source와 MS Windows용 binary를 구할 수 있는데 Windows 용 fpTeX이나 MikTeX에 이미 포함되어 있을 것이다. 이 C 언어로된 source는 개인적으로 Perl 없이 Windows에서 사용하기 위하여 필자가 수년 전에 Sebastian Rahtz의 perl script를 번역하여 C source로 바꾼 것인데 현재는 다른 사람이 관리하고 있다.</span></p>','http://doc.ktug.or.kr/metapost/mp_misc/node2.html','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:21:38',0,'2019-04-15 16:21:38','210.101.103.92','','','','','','','','','','','',''),(91,-91,'',91,0,0,'','','html1','[Etc] LG Cyon LB-3400 디카사진 깨끗하게 넣는방법','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">LG Cyon에서 다운받은 Mobile Sync III 에서 사진-&gt; 편집 이용.&nbsp;<br /><br />1. 사진선택 -&gt; 편집&nbsp;<br />2. 크기조정 -&gt; 비율설정&nbsp;<br />&nbsp; &nbsp; ; 1920 * 1280 -&gt; 680 * 455 / 400 * 267등으로 화면에 알맞은 비율로 축소&nbsp;<br />3. 잘라내기 -&gt; 잘라내기툴 이용 580*435 / 350 *262 (또는 기타 비율참조) 로 잘라내여 저장&nbsp;<br />4. 파일전송</span><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=14&amp;wr_id=30936\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=14&amp;wr_id=30936\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a></td>\r\n         </tr>\r\n      <tr></tr>\r\n      </tbody>\r\n   </table>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:21:52',0,'2019-04-15 16:21:52','210.101.103.92','','','','','','','','','','','',''),(92,-92,'',92,0,0,'','','html1','[AR] SimpleVRML(example) 에서 객체증강구조','<p><span style=\"color: #404040; font-family: 굴림;\">1. example &gt; simpleVRML.c&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-----------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">int main(int argc, char** argv)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; int i;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; char glutGamemode[32];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; const char *cparam_name = \"Data/camera_para.dat\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; #ifdef _WIN32&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; char *vconf = \"Data\\\\WDM_camera_flipV.xml\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; #else&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; char *vconf = \"\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#endif&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">char objectDataFilename[] = \"Data/object_data_vrml\";&nbsp; // 실제 객체위치&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-----------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. Data 폴더 아래 object_data_vrml 파일&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-----------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#the number of patterns to be recognized&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#pattern 1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">VRML	Wrl/bud_B.dat&nbsp; //실제 vrml 파일위치&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Data/patt.hiro&nbsp; &nbsp; //인식패턴 명&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">80.0&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">0.0 0.0&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#pattern 2&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">VRML	Wrl/snoman.dat&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Data/patt.kanji&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">80.0&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">0.0 0.0&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-----------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. Wrl 폴더에 bud_B.dat&nbsp; 파일 및 bud_B.wrl 파일 위치&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*.dat 파일 과 *.wrl 파일의 관계는???&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">해준형을 통하여 VRML 파일을 얻었다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">근데, 받아보니 .wrl 파일(VRML 파일형식)과 .obj 파일 뿐이 아닌가..&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SimpleVRML에서는 .dat 파일을 사용하던데…&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그래서 구글링 끝에 다음의 글을 찾았다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">원본링크 (</span><a href=\"http://www.hitlabnz.org/forum/showthread.php?t=986\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.hitlabnz.org/forum/showthread.php?t=986</a><span style=\"color: #404040; font-family: 굴림;\">)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그래서 각 .dat 파일을 텍스트 에디터로 열어보니&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. &lt;VRML 파일명&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. &lt;##.## ##.## ##.##&gt;&nbsp; &nbsp; &nbsp; # Translation&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. &lt;##.## ##.## ##.##&gt;&nbsp; &nbsp; &nbsp; # Rotation&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">4. &lt;##.## ##.## ##.##&gt;&nbsp; &nbsp; &nbsp; # Scale&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이렇게 이루어져 있다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. VRML 파일명은 어렵지 않을테고&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. Translation: 패턴의 중심으로부터의 상대적인 위치(Coordinates from Marker Coordinate System)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. Rotation: 패턴의 중심으로부터의 상대적인 각도(Angle from Marker Coordinate System)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">4. Scale: 상대적인 크기(확대/축소)</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:22:13',0,'2019-04-15 16:22:13','210.101.103.92','','','','','','','','','','','',''),(93,-93,'',93,0,0,'','','html1','[Android] Android 관련 site','<p><span style=\"color: #404040; font-family: 굴림;\">truemobile.com&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*강사재직회사&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">infodev.tistory.com&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*강사 개인블로그&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">motodev.com&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*모토롤라 android 개발툴 / develop-&gt;motodev studio&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">androidpub.com&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*국내 안드로이드 커뮤니티&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">androidside.com&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*국내 안드로이드 강좌사이트&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">kandroid.org&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*국내 안드로이드 커뮤니티&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">kandroid.org/guide/basics/what-is-android.html&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*안드로이드 개발사이트 referesnse 한글번역&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">source.android.com&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*해외 안드로이드 오픈소스 프로젝트사이트&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://www.androidpub.com/91035\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">www.androidpub.com/91035</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*안드로이드 애플리케이션 개발강좌모음</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:22:26',0,'2019-04-15 16:22:26','210.101.103.92','','','','','','','','','','','',''),(94,-94,'',94,0,0,'','','html1','[AR] ARToolkit Marker Maker','<span style=\"color: #404040; font-family: 굴림;\">AR 관련 Marker Maker</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><span style=\"color: #404040; font-family: 굴림;\">사용방법</span>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:22:49',1,'2019-04-15 16:22:49','210.101.103.92','','','','','','','','','','','',''),(95,-95,'',95,0,0,'','','html1','[AR] 임의의 3D객체 증강 순서','<p><span style=\"color: #404040; font-family: 굴림;\">1. wrl 파일 저장 : ./bin/wrl&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. *.dat 파일 생성(기존파일 복사 이용)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. *.dat 파일 수정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">audi.wrl&nbsp; // 첫줄에 wrl 파일명 수정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">0.0 0.0 0.0	# Translation&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">0.0 0.0 0.0 0.0	# Rotation&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3.0 3.0 3.0	# Scal&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">x:50\'&nbsp; 50.0f 1.0f 0.0f 0.0f&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">y:50\'&nbsp; 50.0f 0.0f 1.0f 0.0f&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">z:50\'&nbsp; 50.0f 0.0f 0.0f 0.0f&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">4. *.wrl 에서 texture 이미지 경로 수정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">texture ImageTexture {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; url \"../Wrl/textures/HDM_01_car_taillight_bump2.jpg\"&nbsp; //이렇게 수정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">5. ./bin/wrl/textures/ 아래에 맵핑소스 이미지 저장</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:22:59',0,'2019-04-15 16:22:59','210.101.103.92','','','','','','','','','','','',''),(96,-96,'',96,0,0,'','','html1','[AR] ARToolkit Pro VS2008 컴파일','<p><span style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff; font-size: 20pt;\"><font color=\"navy\">1. 개요<br /></font></span><br style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\" /><strong style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\"><span style=\"font-size: 10pt;\">ARToolKit</span></strong><span style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">은 (자신들의 메뉴얼에 따르면)</span><br style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\" /><span style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">세계에서 가장 범용적으로 사용되는 &nbsp;Augmented Reality 구현을 위한 라이브러리입니다.</span><br style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\" /><span style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">Windows, Mac OS X, Linux 등 다양한 플랫폼을 지원하며,</span><br style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\" /><span style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">ARToolKit Professional 4, osgART, ARToolKit NFT 등 다양한 버젼을 제공합니다.</span></p>\r\n<div style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">그리고 ARToolKit Pro.의 경우, 2.x의 버전을 오픈소스 라이센스인 GPL로 제공하고 있습니다.</div>\r\n<div style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\"><br /></div>\r\n<div style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">증강현실 프로젝트를 진행하며 ARToolKit 을 사용해 보기 위하여</div>\r\n<div style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">오픈소스인 ARToolKit Pr.o 2.x 를 다운받아 테스트해 보았으나</div>\r\n<div style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">만족할 만큼의 성능을 보이진 못했습니다.&nbsp;</div>\r\n<div style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\"><br /></div>\r\n<div style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">그래서 이번에 ARToolKit의 제작회사인 ARTOOLWORKS INC. 에 직접 문의하여<br />상용버전인&nbsp;ARToolKit Pro. 4 버젼을 trial 해 보았습니다.<br /><br /><br /><span style=\"font-size: 20pt;\"><font color=\"navy\">2. AR 이란?<br /></font></span><br />아마도 AR이란 단어가 생소한 분들이 많으리라 생각합니다.<br /><strong>AR(augmented reality)이란</strong>&nbsp;한글로는&nbsp;<strong><font color=\"#112a75\">증강현실</font></strong>이라고 하는데,<br />이는 \"현실의 세계에 가상의 물체를 더하여 보여주는 것\"을 의미합니다.<br />예를 들면, 드래곤볼에 나오는 스카우터, 터미네이터의 시야(?) 등이죠.<br /><br />아래는 sprxmobile 라는 회사에서 만든 Layar라는 구글 안드로이드폰에서 실행되는<br />어플리케이션입니다. 이 동영상에서처럼, 현실의 영상을 캠으로 촬영하여<br />그 위에 추가적으로 정보를 보여주는 것이 바로 증강현실 입니다.<br />&nbsp;<br /><br />이러한 증강현실 기술을 구현하는데 있어서 핵심이 되는 기술들은<br /><u>Image Processing</u>과&nbsp;<u>Computer Graphics</u>에 기반합니다.<br />ARTookKit은 이러한&nbsp;기술들을 모아놓은 라이브러리로,<br />개발자들로 하여금 손쉽게 증강현실 어플리케이션을 구현할 수 있게 도와줍니다.<br /><br /><span style=\"font-size: 20pt;\"><font color=\"navy\"><br />3. 설치 및 빌드<br /></font></span><b><span style=\"font-size: 12pt;\"><br />3.1. Download &amp; Install ARToolKit Pro.<br /><br /></span></b>ARToolKit Pro.는 앞서 말씀드린바와 같이<br />Linux, Mac, Windows 등 다양한 OS를 지원합니다.<br />또한 Windows 버전의 경우 Visual Sudio(이하 VS)7.1, VS8.0, VS9.0등<br />다양한 &nbsp;VS 버전으로 제공됩니다.<br /><br />저의 작업 환경은 Windows 이므로, Windows 버전을 설치하였습니다.<br /><br />ARToolKit Pro.을 설치 후 폴더 구조는 아래와 같습니다.<br />\r\n   <div class=\"imageblock\" style=\"border: 1px solid rgb(221, 221, 221); padding: 5px 0px; margin: 5px 0px; text-align: center; display: inline;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/160770134A9B8AF653\" width=\"151\" alt=\"\" filename=\"pic2.jpg\" filemime=\"image/jpeg\" style=\"border: 0px; cursor: pointer; max-width: 100%; height: auto;\" /></div>\r\n   <br /><br />각 폴더의 구성을 살펴보겠습니다.<br />\r\n   <p>&nbsp;</p>\r\n   <table cellspacing=\"0\" cellpadding=\"5\" width=\"562\" border=\"1\">\r\n      <tbody>\r\n         <tr>\r\n            <td width=\"152\">\r\n               <p><b><font color=\"blue\">ARToolKit4.xcodeproj<br /></font></b><b><font color=\"blue\">bin<br /></font></b><b><font color=\"blue\">doc<br /></font></b><b><font color=\"blue\">examples<br /></font></b><b><font color=\"blue\">include<br /></font></b><b><font color=\"blue\">lib<br /></font></b><b><font color=\"blue\">share<br /></font></b><b><font color=\"blue\">util<br /></font></b><b><font color=\"blue\">VisualStudio</font></b></p>\r\n               </td>\r\n            <td width=\"400\">\r\n               <p>Mac OS용 프로젝트 폴더<br />ARToolKit Pro.의 exe, dll 의 output 폴더<br />ARToolKit 문서 및 테스트 마커 이미지 폴더<br />예제 프로그램 소스 폴더<br />헤더파일 폴더<br />라이브러리 폴더 및 전체 라이브러리 소스 폴더<br />linux 용 환경 화일 폴더<br />ARToolKit Pro.를 위한 Utility 소스 폴더 (ex. 마커 패턴 추출 프로그램)<br />Windows 용 프로젝트 폴더</p>\r\n               </td>\r\n            </tr>\r\n         </tbody>\r\n      </table>\r\n   <p>&nbsp;</p>\r\n   <b><span style=\"font-size: 12pt;\"></span></b>\r\n   <p><b><br />3.2. Required software/source packages - for Windows<br /></b><br />ARToolKit Pro.의 라이브러리를 사용하기 위해선, 추가적으로 요구되는 패키지들이 있습니다.<br />아래 URL에 접속하시면, 이에 대한 원문을 확인할 수 있습니다.<br /><a href=\"http://www.artoolworks.com/support/library/Installing_ARToolKit_Professional\" target=\"_blank\" style=\"color: #333333; text-decoration-line: none;\">http://www.artoolworks.com/support/library/Installing_ARToolKit_Professional</a><br /><br />저의 작업 환경은 Windows 이므로, Windows 기준으로 설명하겠습니다.<br /><br />0.&nbsp;<b>Compiler (필수)</b>&nbsp;<br />&nbsp;- 이건 너무 당연한거군요. Visual Studio 를 설치해야 합니다.<br />&nbsp;&nbsp;&nbsp;ARTOOLSWORKS INC.에서 제공하는 솔루션 버젼은 VS 2003, VS 2005, VS 2008 3가지 입니다.<br /><br />1.&nbsp;<b>OpenGL (필수)</b><br />&nbsp;- ARToolKit은 3D 라이브러리로 OpenGL을 사용합니다. 따라서, OpenGL의 설치는 필수입니다.<br />&nbsp;&nbsp;&nbsp;작업환경이 Windows이므로, Windows Platform SDK를 설치합니다.<br />&nbsp;&nbsp;&nbsp;다운로드 :&nbsp;<a href=\"http://www.microsoft.com/downloads/details.aspx?familyid=484269E2-3B89-47E3-8EB7-1F2BE6D7123A&amp;displaylang=en\" target=\"_blank\" style=\"color: #333333; text-decoration-line: none;\">http://www.microsoft.com/downloads/details.aspx?familyid=484269E2-3B89-47E3-8EB7-1F2BE6D7123A&amp;displaylang=en</a><br /><br />2.&nbsp;<b>GLUT (선택)</b><br /><br />&nbsp;- ARgsub 라이브러리를 빌드하고자 할 때 설치합니다. ARToolKit Pro. 안에 함께 포함되어 있습니다.<br />&nbsp;&nbsp;&nbsp;다운로드 :&nbsp;<a href=\"http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip\" target=\"_blank\" style=\"color: #333333; text-decoration-line: none;\">http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip</a><br /><br />3.&nbsp;<b>OpenCV (선택)</b><br /><br />- calib_camera 유틸리티를 빌드하고자할 때 설치합니다.<br />&nbsp;&nbsp; 다운로드 :&nbsp;<a href=\"http://sourceforge.net/projects/opencvlibrary/files/opencv-win/1.1pre1/OpenCV_1.1pre1a.exe/download\" target=\"_blank\" style=\"color: #333333; text-decoration-line: none;\">http://sourceforge.net/projects/opencvlibrary/files/opencv-win/1.1pre1/OpenCV_1.1pre1a.exe/download</a><br /><br />4.&nbsp;<b>Video Capture Source (필수)</b><br /><br />&nbsp;- ARvideo 라이브러리를 빌드하고자 할 때 설치합니다. AR 프로젝트 개발시, 비디오 캡쳐는 필수이므로<br />&nbsp;&nbsp; 반드시 설치해야 합니다. Windows를 사용한다면, QuickTime, 혹은 DirectShow를 지원합니다<br />&nbsp;&nbsp; (다른 라이브러리가 더 있지만, 생략하겠습니다).<br />&nbsp;&nbsp;&nbsp;OpenGL 설치시 이미 Platform SDK를 설치하였는데, 이 때 DirectShow가 설치되므로 이를 이용하겠습니다.<br /><br />5.&nbsp;<b>OpenVRML (선택)</b><br /><br />- AR에서 VRML을 이용하여 3D 오브젝트를 렌더링 하기 위해 필요합니다. 필수 사항은 아닙니다.<br />&nbsp;&nbsp;&nbsp;참고로, Visual Studio 2008에서 VRML이 잘 지원되지 않아서, 2005 이하 버전에서만 설치하였습니다.<br />&nbsp;&nbsp;&nbsp;다운로드 :&nbsp;<a href=\"http://www.artoolworks.com/dist/openvrml/\" target=\"_blank\" style=\"color: #333333; text-decoration-line: none;\">http://www.artoolworks.com/dist/openvrml/</a><br /><br />6.&nbsp;<b>DSVL.dll (필수)</b><strong><br /><br />&nbsp;</strong>- ARTOOLWORKS INC.의 홈페이지에 소개되어 있지는 않지만, ARvideo 라이브러리 빌드시 필요합니다.<br />&nbsp;&nbsp;&nbsp;Source Forge의 ARToolKit 다운로드 페이지에 가면, 그 안에 포함되어 있습니다.<br />&nbsp;&nbsp; (대체 왜 Pro버전엔 넣어놓지 않았을까요?;;)<br />&nbsp;&nbsp; 다운로드 :&nbsp;<a href=\"http://sourceforge.net/projects/artoolkit/files/artoolkit/2.72.1/DSVL-0.0.8b.zip/download\" target=\"_blank\" style=\"color: #333333; text-decoration-line: none;\">http://sourceforge.net/projects/artoolkit/files/artoolkit/2.72.1/DSVL-0.0.8b.zip/download</a><br /><span style=\"font-size: 12pt;\"><b></b></span></p>\r\n   <p><span style=\"font-size: 12pt;\"><b>3.3. 프로젝트 빌드 및 실행</b></span></p>\r\n   <p><span style=\"font-size: 12pt;\"></span>환경 설정이 모두 끝났습니다. 다음으로 ARToolKit Pro. 내에 있는 솔루션을 빌드해 보겠습니다.<br />빌드를 위해서, 3.2.에서 설치한 추가 패키지들을 모두 include와 lib 폴더로 지정합니다.<br />저의 Visual Studio 에서 추가한 include 및 lib 폴더 입니다.<br /><b></b></p>\r\n   <p><b>* include 폴더</b></p>\r\n   <p>C:\\Program Files\\OpenCV\\cv\\include<br />C:\\Program Files\\OpenCV\\cvaux\\include<br />C:\\Program Files\\OpenCV\\cxcore\\include<br />C:\\Program Files\\OpenCV\\ml\\include<br />C:\\Program Files\\OpenCV\\otherlibs\\cvcam\\include<br />C:\\Program Files\\OpenCV\\otherlibs\\highgui<br />C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003<br />C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Samples\\Multimedia\\DirectShow\\BaseClasses<br />C:\\Program Files\\ARToolKit4\\include\\AR<br />C:\\VSlib\\DSVL\\src ( 압축 푼 폴더로 지정)</p>\r\n   <p>&nbsp;<b>* lib 폴더</b></p>\r\n   <p>C:\\Program Files\\OpenCV\\lib<br />C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Samples\\Multimedia\\DirectShow\\BaseClasses\\SRV2003_RETAIL<br />C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Samples\\Multimedia\\DirectShow\\BaseClasses\\XP32_DEBUG<br />C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib<br />C:\\Program Files\\ARToolKit4\\lib<br />C:\\VSlib\\DSVL\\lib ( 압축 푼 폴더로 지정)<br /><br />이제 빌드할 수 있는 환경이 모두 갖추어 졌습니다.<br />우선, 제 랩탑에 라이센스로 신청되어있는 VS80을 빌드하였습니다.<br />빌드는 무사히 됐습니다만, 아래와 같은 에러가 발생하였습니다.<br /><br /></p>\r\n   <div class=\"imageblock\" style=\"border: 1px solid rgb(221, 221, 221); padding: 5px 0px; margin: 5px 0px; text-align: center; display: inline;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/180770134A9B8AF754\" width=\"600\" alt=\"\" filename=\"pic3.jpg\" filemime=\"image/jpeg\" style=\"border: 0px; cursor: pointer; max-width: 100%; height: auto;\" /></div>\r\n   <br /><br />제어판의 이벤트뷰어를 찾아보니, VC80.CRT 에서 어셈블리를 찾을 수 없다는 에러를 확인할 수 있었습니다.<br />\r\n   <div class=\"imageblock\" style=\"border: 1px solid rgb(221, 221, 221); padding: 5px 0px; margin: 5px 0px; text-align: center; display: inline;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/190770134A9B8AF755\" width=\"469\" alt=\"\" filename=\"pic4.jpg\" filemime=\"image/jpeg\" style=\"border: 0px; cursor: pointer; max-width: 100%; height: auto;\" /></div>\r\n   <br /><br />어떤&nbsp;윈도우 전문 개발자의 말에 따르면, VS80(Visual Studio 2005)의 경우 호환성에 있어서<br />문제가 있다고 하더군요. 같은 VS80에서 빌드한 어셈블러 코드라도,<br />세부 버젼이 다를 경우 호환이 제대로 되지 않아 실행이 되지 않는다고 합니다.<br /><br />VS80 재배포판을 설치하여도 계속해서 실행이 되지 않은 관계로, 어쩔 수 없이<br />VS71과 VS90 을 테스트해보니, 실행이 잘 되었습니다.<br />결국, 2003의 솔루션을 2005로 컨버젼하여 빌드&nbsp;하는 것으로 문제를 해결하였습니다.<br /><br />아래는 VS2500를 통하여 빌드한 화일을 실행한 화면입니다.<br />\r\n   <div class=\"imageblock\" style=\"border: 1px solid rgb(221, 221, 221); padding: 5px 0px; margin: 5px 0px; text-align: center; display: inline;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/110770134A9B8AF856\" width=\"600\" alt=\"\" filename=\"pic5.jpg\" filemime=\"image/jpeg\" style=\"border: 0px; cursor: pointer; max-width: 100%; height: auto;\" /></div>\r\n   <p>&nbsp;</p>\r\n   <p>&nbsp;</p>\r\n   <p><span style=\"font-size: 20pt;\"><font color=\"navy\">4. 결론</font></span></p>\r\n   <p><br />ARToolKit Pro를 테스트해본 결과 예상외로 괜찮은 성능을 보여주었습니다.<br />GPL인 ARToolKit 2.72에 비하여 훨씬 더 안정적이며, 속도도 향상되어 있었으며,<br />특히나, Cube 예제 등 Sample 프로그램도 흥미로운 것들이 많이 포함되어 있었습니다.<br />단일 프로젝트일 경우, 라이브러리 가격도 적정한 선이라 판단됩니다.<br />(구체적인 가격은 밝힐 수 없음을 양해바랍니다).<br /><br />아직은 상용 AR 서비스가 거의 전무한 상태라 벤치마킹을 할 정도로 실례가 충분하지는 않았지만,<br />테스트 결과, 상용 프로그램 개발시 효과적으로 사용할 수 있는 라이브러리라고 판단합니다.</p>\r\n   </div>\r\n<p><br style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\" /><br style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\" /><span style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">출처:&nbsp;</span><a href=\"https://abekdh.tistory.com/tag/ARtoolKit\" style=\"color: #333333; text-decoration-line: none; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\" target=\"_blank\">https://abekdh.tistory.com/tag/ARtoolKit</a><span style=\"color: #666666; font-family: Dotum, Verdana, AppleGothic, sans-serif; background-color: #ffffff;\">&nbsp;[abekdh\'s home]</span></p>','https://abekdh.tistory.com/tag/ARtoolKit','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:23:21',0,'2019-04-15 16:23:21','210.101.103.92','','','','','','','','','','','',''),(98,-98,'',98,0,0,'','','html1','[Etc] 인터넷이서 비트맵 이미지를 백터 이미지로 변환하기','<p><span style=\"color: #404040; font-family: 굴림;\">비트맵 이미지는 흔히 여러분이 알고 계시는 이미지를 비트맵 이미지로 생각하시면 됩니다. 포토샵, 페인터 에서 작업 되는 사진이나 이미지 역시 비트맵 방식입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">백터는 일러스트나 코렐드로우의 쓰이는 방식이며 확대시 깨지거나 뭉개지지 않습니다. 라고 말은 할수 있지만 정확한 차이점이라고 하기엔 무리가 있습니다.&nbsp; 그래서 비트맵과 백터이미지의 차이점은 : [관련글] 을 통하여 확인 하시는게 좋겠습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이런 비트맵 이미지를 백터 방식으로 변한을 할때 툴을 이용해야 하지만, 웹상에서 바로 가능한 사이트가 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">백터매직이라는 사이트입니다.&nbsp;</span><a href=\"http://vectormagic.com/home\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://vectormagic.com/home</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">왼쪽에 하단에 업로드 이미지를 클릭 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">왼쪽은 원래의 비트맵 이미지이고, 오른쪽은 변환 후의 백터 방식의 이미지입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">오른쪽에 보시면 퀄리티를 조정하는 부분도 있습니다. 용량이 커지겠지만 좀더 세밀한 백터로의 변환이 가능합니다.&nbsp; 모든 작업이 만족스럽게 끝이 났다면, 오른쪽 상단에 다운로드를 눌러 주게 되면 다운이 바로 되는게 아니라 이메일로 인증을 확인 해야 합니다.&nbsp;</span></p>','https://blog.jaea.net/1338','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:24:30',0,'2019-04-15 16:24:30','210.101.103.92','','','','','','','','','','','',''),(99,-99,'',99,0,0,'','','html1','[AR] ARToolkit + OpenVRML with VC2008','<p><span style=\"color: #404040; font-family: 굴림;\">출처 :&nbsp;</span><a href=\"http://calmarea.net/?tag=openvrml\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://calmarea.net/?tag=openvrml</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:24:52',1,'2019-04-15 16:24:52','210.101.103.92','','','','','','','','','','','',''),(100,-100,'',100,0,0,'','','html1','[Ubuntu] 우분투 부팅시 복구모드 에러','<p><span style=\"color: #404040; font-family: 굴림;\">우분투 부팅시 간혹 복구모드로 들어갈 경우...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">콘솔에서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">update-rc.d gdm defaults&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">명령을 통해 다시 정상적으로 X환경으로 부팅수행.</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:25:05',0,'2019-04-15 16:25:05','210.101.103.92','','','','','','','','','','','',''),(101,-101,'',101,0,0,'','','html1','[Etc] 안녕리눅스 apm 설정관련 팁','<p><span style=\"color: #404040; font-family: 굴림;\">안녕 1.2 apm설정 링크&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://annyung.oops.org/?m=white&amp;p=apm\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://annyung.oops.org/?m=white&amp;p=apm</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">lvm 네이버 링크&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://blog.naver.com/76ymyoung?Redirect=Log&amp;logNo=70008469288\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blog.naver.com/76ymyoung?Redirect=Log&amp;logNo=70008469288</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">(vgchang -a y /dev/cfciVG/cfciVG1 을 활성화 시킨다)&nbsp;</span></p>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:25:15',0,'2019-04-15 16:25:15','210.101.103.92','','','','','','','','','','','',''),(102,-102,'',102,0,0,'','','html1','[ETC] 파이어폭스에 네이버/다음 등 검색엔진 추가','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\"><a href=\"http://mycroft.mozdev.org/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40;\">http://mycroft.mozdev.org/</a>&nbsp;<br /><br />에서 추가하고픈 검색엔진 검색하여 추가하기.&nbsp;<br /><br />주소줄에서 바로 네이버 검색하려면,&nbsp;<br />about:config -&gt; keyword.url 수정 :&nbsp;<a href=\"http://search.naver.com/search.naver?where=nexearch&amp;query=\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40;\">http://search.naver.com/search.naver?where=nexearch&amp;query=</a></span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:25:27',0,'2019-04-15 16:25:27','210.101.103.92','','','','','','','','','','','',''),(103,-103,'',103,0,0,'','','html1','[Ubuntu] VirtualBox 에서 폴더공유하기','<p><span style=\"color: #404040; font-family: 굴림;\">Host : Ubuntu&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Guest : Windows XP&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. VitualBox에서 공유폴더 추가&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. Gesut OS(Windows XP)에서 \\\\vbosxvr\\공유폴더명 으로 접근</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:25:38',0,'2019-04-15 16:25:38','210.101.103.92','','','','','','','','','','','',''),(104,-104,'',104,0,0,'','','html1','[Ubuntu] screenlet 위젯 root권한 실행하기','<p><span style=\"color: #404040; font-family: 굴림;\">oot 환경에서는 awn 같은 매니저도 실행이 안됩니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">꼼수 이긴 한데 /usr/share/screenlets-manager/screenlets-manager.py 파일에서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if os.geteuid()==0:를 찾아서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if os.geteuid()==1: 로 변경 하여 보십시오.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">출처 &gt; 우분투kr 포럼</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:26:01',0,'2019-04-15 16:26:01','210.101.103.92','','','','','','','','','','','',''),(105,-105,'',105,0,0,'','','html1','[Ubuntu] CoreAVC 기반 mplayer 설치하기','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">1. CoreAVC 가 빌드된 mplayer ppa추가&nbsp;<br />&nbsp; &nbsp; add-apt-repository ppa:ripps818/coreavc&nbsp; //관련ppa 추가&nbsp;<br />&nbsp; &nbsp; *참고사이트&nbsp;<a href=\"https://launchpad.net/~ripps818/+archive/coreavc\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40;\">https://launchpad.net/~ripps818/+archive/coreavc</a>&nbsp;<br /><br />2. 패키지 인스톨&nbsp;<br />&nbsp; &nbsp; apt-get install dshowserver mplayer-build&nbsp;<br /><br />3. CoreAVCDecoder.ax 를 /usr/lib/win32&nbsp;<br />&nbsp; *기존 문서에는 wine으로 coreavc를 인스톨 한 후 사용하게 되어있으나&nbsp;<br />&nbsp; &nbsp; 인스톨에러로 기존 윈도우에서 사용하던 ax 파일 이용.&nbsp;<br />&nbsp; &nbsp; /win-c/Program\\ Files/CoreCodec/CoreAVC\\ Professional\\ Edition/&nbsp;<br />&nbsp;&nbsp;<br />&nbsp; &nbsp; cp \"~/.wine/drive_c/Program Files/CoreAVC Pro/CoreAVCDecoder.ax\" /usr/share/dshowserver/&nbsp;<br /><br />4. mplayer 옵션설정&nbsp;<br />&nbsp; 옵션은 mplayer 뒤에 붙혀주면됨.&nbsp;<br />&nbsp; &nbsp; -vc coreserve&nbsp;<br />&nbsp; 그 런데 이 빌드에는 ffmpeg-mt 있음.&nbsp;<br />&nbsp; &nbsp; ~/.mplayer/config 에서 [default] 아래에&nbsp;<br />&nbsp; &nbsp; -lavdopts threads=쓰레드수</span><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=13&amp;wr_id=30952\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=13&amp;wr_id=30952\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a></td>\r\n         </tr>\r\n      <tr></tr>\r\n      </tbody>\r\n   </table>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:26:13',0,'2019-04-15 16:26:13','210.101.103.92','','','','','','','','','','','',''),(97,-97,'',97,0,0,'','','html1','[AR] OpenVRML을 이용한 SimpleVRML컴파일 팁','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"tt\" style=\"color: #575757; font-size: 9pt;\">&nbsp;<img src=\"http://geoworld.cafe24.com/gnu3/bbs/skin/board/2basic/icon_file.gif\" align=\"absmiddle\" />&nbsp;<a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gbdownload.php&amp;bo_table=Computer&amp;wr_id=30943&amp;index=1\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"><span class=\"tt\" style=\"font-size: 9pt; color: #575757;\">simpleVRML_compile_A.JPG (197.5K)</span></a>, Down:1</td>\r\n         </tr>\r\n      <tr>\r\n         <td class=\"tt\" style=\"color: #575757; font-size: 9pt;\">&nbsp;<img src=\"http://geoworld.cafe24.com/gnu3/bbs/skin/board/2basic/icon_file.gif\" align=\"absmiddle\" />&nbsp;<a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gbdownload.php&amp;bo_table=Computer&amp;wr_id=30943&amp;index=2\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"><span class=\"tt\" style=\"font-size: 9pt; color: #575757;\">simpleVRML_compile_B.JPG (61.9K)</span></a>, Down:1</td>\r\n         </tr>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><a style=\"color: #3a4e40;\"><img src=\"http://geoworld.cafe24.com/gnu3/data/file/Computer/275f12ac_simpleVRML_compile_A.JPG\" width=\"750\" height=\"2140\" border=\"0\" /></a>\r\n            <p><a style=\"color: #3a4e40;\"><img src=\"http://geoworld.cafe24.com/gnu3/data/file/Computer/0e30f4c8_simpleVRML_compile_B.JPG\" width=\"750\" height=\"676\" border=\"0\" /></a></p>\r\n            <p><span class=\"content\" style=\"color: #404040;\">출처 :&nbsp;<a href=\"http://blog.naver.com/PostView.nhn?blogId=piccoro77&amp;logNo=100064264851&amp;viewDate=&amp;currentPage=1&amp;listtype=0&amp;userTopListOpen=false&amp;userTopListCount=5&amp;userTopListManageOpen=false&amp;userTopListCurrentPage=undefined\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40;\">http://blog.naver.com/PostView.nhn?blogId=piccoro77&amp;logNo=100064264851&amp;viewDate=¤tPage=1&amp;listtype=0&amp;userTopListOpen=false&amp;userTopListCount=5&amp;userTopListManageOpen=false&amp;userTopListCurrentPage=undefined</a>&nbsp;<br /></span></p>\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:24:11',0,'2019-04-15 16:24:11','210.101.103.92','','','','','','','','','','','',''),(106,-106,'',106,0,0,'','','html1','[XP] Windows XP Royale테마','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">Windows&nbsp;XP Royale테마</span><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=13&amp;wr_id=30953\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=13&amp;wr_id=30953\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a></td>\r\n         </tr>\r\n      <tr></tr>\r\n      </tbody>\r\n   </table>\r\n<br />','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:26:31',1,'2019-04-15 16:26:31','210.101.103.92','','','','','','','','','','','',''),(107,-107,'',107,0,0,'','','html1','[ubuntu] How to fix Firefox slow problem in ubuntu 10.04(Lucid)','<span style=\"color: #404040; font-family: 굴림;\">- network.http.pipelining &gt; Make it True</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">- network.http.pipelining.maxrequests &gt; Make it 8 or 10</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">- network.http.proxy.pipelining &gt; Make it True</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">- network.dns.disableIPv6 &gt; Make it True</span>','http://www.ubuntugeek.com/how-to-fix-firefox-slow-problem-in-ubuntu-10-04lucid.html','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:26:57',0,'2019-04-15 16:26:57','210.101.103.92','','','','','','','','','','','',''),(108,-108,'',108,0,0,'','','html1','[android] 안드로이드 관련 주요 어플목록','<p><span style=\"color: #404040; font-family: 굴림;\">파일매니저 -&nbsp; EStrongs File Explorer&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">파일매니저 - Astro file manager&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">사용중인 서비스 종료 - taskiller&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">화면꺼짐,잠금설정 관리어플 - ScreenModeWidget&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3G 데이터 사용량 체크 - 3G Watchdog&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3G 데이터 사용량 체크 - 도돌&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3G망 온오프 어플 - APNdroid&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">와이파이[일반무선랜] 온오프 어플 - WiFi OnOff&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">와이파이 - WifiScaner&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">주소록 그룹 만들기 – Contacts Group&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">문자 시간 확인하자 - HandcentSMS&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">문자 백업 및 저장 - SMS Backup &amp; Restore&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">코리아 버스 – 코리아버스&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">서울 버스운행정보 - Korea NextBus!&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">경기도 버스정보 - G-Bus Mini&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">트위터어플 - Twidroid&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">네이트온 - JateRoid&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">동영상플레이어 - mvideo Player&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">동영상플레이어 - Soul Movie V2.0 (자막지원 Movie Player)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Music Player - RockOn&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">안드로이드용 음악플레이어 - 벅스뮤직&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">음악재생플레이어 - BTUNES MUSC PLAYER BETA&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">MP3벨소리 만들기 - ringdroid&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">손쉬운 길찾기를 위한 - MyDirections&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">전화기 추척하기 - antidroidtheft&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">다양한 배경화면 - Backgrounds&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">테마 바꾸기 - pandahome&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">테마 바꾸기 - openhome&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">인터넷 웹브라우저 – Opera Mini&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">웹브라우저 - xScope&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">워드&amp;엑셀 뷰어 - Document To Go&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">메모 - easy note&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">주변 사물들에 대한 정보 보여줌 - 오브제&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">스마트폰 서버만들기 - serversman&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">D-Day 위젯 - The Day Before&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">070인터넷전화 사용 - asip&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">PC음악 안드로이드폰으로 듣기 - gmote&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">증권 미래 에셋 - M-Stock&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">데이터 백업 복구 - app manager&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">태스크킬러 - Advanced Task Killer&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">할일정리 - Astrid&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">컴퓨터액세스 - PhoneMyPC&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">달력 - Pure Calendar&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">PDF제작 - Scan2PDF Mobile&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">[출처] 어플리케이션 정보 소개[펌] (안드로이드폰 시리우스 사용자모임[시리우스폰,팬택시리우스폰]) |작성자 쟈클오빠</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:27:11',0,'2019-04-15 16:27:11','210.101.103.92','','','','','','','','','','','',''),(109,-109,'',109,0,0,'','','html1','[android] 스카이 개발어플 설치를 통한 화면캡쳐','<span style=\"color: #404040; font-family: 굴림;\">*첨부파일&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. 구글안드로이드 개발sdk / tools 디렉토리에 압축풀것 : ADB파일&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. 시리우스 usb드라이버</span>','https://neoskin.tistory.com/2120','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:27:51',2,'2019-04-15 16:27:51','210.101.103.92','','','','','','','','','','','',''),(110,-110,'',110,0,0,'','','html1','[Ubuntu] 10.04버전에서 루트사용자 사운드 활성화','<p><span style=\"color: #404040; font-family: 굴림;\">시스템-기본설정-시작응용프로그램 추가하기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이름: Pulseaudio 데몬&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">명령: /usr/bin/pulseaudio&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">설명: 사운드 데몬 시작</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:28:00',0,'2019-04-15 16:28:00','210.101.103.92','','','','','','','','','','','',''),(111,-111,'',111,0,0,'','','html1','[Ubuntu] 나비 아이콘 테마','<p><span style=\"color: #404040; font-family: 굴림;\">아래 파일을 받으셔서, 안에 있는 ubuntu-mono-light, ubuntu-mono-dark 폴더를&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/usr/share/nabi/themes&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">에 복사하여 사용.</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:28:18',1,'2019-04-15 16:28:18','210.101.103.92','','','','','','','','','','','',''),(112,-112,'',112,0,0,'','','html1','[Windows] 윈도우 종료 빠르게 하기','<p><span style=\"color: #404040; font-family: 굴림;\">간단한 팁입니다. 어느정도 컴퓨터를 쓰시다 보면 윈도우 종료시 한참 걸려 답답하신&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">경우가 있으실텐데요, 그냥 꺼버리자니 또 그렇고 기다리자니 느려서 답답하고 해결&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">할 수 있는 간단한 팁을 올려드립니다. 실행 -&gt; regedit(레지스트리 편집기)로 가셔서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">HKEY_LOCAL_MACHINE&gt;SYSTEM&gt;CurrentControlSet&gt;Control의 오른쪽을 보시면&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">WaitToKillServiceTimeout의 이름이 있는데 아마 대부분 데이터 값이 20000으로 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이 되어있을 겁니다, 어떻게 설정 되어있어도 괜찮습니다. 이 값을 5000~1000정도로&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">잡아 주시면 윈도우가 종료되는데 답답함(?)을 조금은 해소 하실 수 있을 겁니다. 만약&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">자신의 사양이 낮다면 빠른시간에 다 처리할수 없어 데이터의 손실이 올 수도 있으니&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">자신의 컴퓨터에 무리가 안가게 설정해주세요. 숫자가 낮을수록 빠르긴 하나 컴퓨터의&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">무리를 줄 수도 있습니다. 알고는 있지만 사용하려고 막상 찾게 되면 눈에 뜨이질 않죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">스크랩 기능을 사용하셔서 보관하시면 도움이 될 것 같습니다.</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:28:28',0,'2019-04-15 16:28:28','210.101.103.92','','','','','','','','','','','',''),(113,-113,'',113,0,0,'','','html1','[Ubuntu/Linux] Samba 서버설정','<p><span style=\"color: #404040; font-family: 굴림;\">~$ sudo vi /etc/samba/smb.conf&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">변경한 내용은 아래와 같습니다. 내용 중에 한글 파일 이름이 깨지지 않도록 CP949와 UTF8을 사용한 부분을 참고하여 주십시오.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">[global]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># 윈도우 네트워크 환경의 작업 그룹 이름을 입력했습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">workgroup = workgroup&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">dos charset = CP949&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">display charset = UTF8&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">unix charset = UTF8&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">; load printers = yes&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">printing = lpmg&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># 윈도우 탐색기에 출력할 컴퓨터 이름입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">server string = vmUbuntuSambaServer&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">printcap name = /etc/printcap&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">cups options = raw&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">log file = /var/log/samba/%m.log&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">max log size = 50&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># 사용자 계정으로 설정합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">security = USER&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">dns proxy = no&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">password server = None&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">username map = /etc/samba/smbusers&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">; idmap uid = 16777216-33554431&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">; idmap gid = 16777216-33554431&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">; template shell = /bin/false&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">; guest ok = no&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">; winbind use default domain = no&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># jwjw 유저에 대한 삼바 공유 폴더 설정입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">[jwjw]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">comment = jwjw samba&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">path = /home/jwjw&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">writeable = yes&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">guest ok = no&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">create mask = 0644&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">directory mask = 0755&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">[tmp]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">comment = tmp samba&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">path = /tmp&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">valid users = jwjw jwmx&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">writeable = yes&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">guest ok = no&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">create mask = 0644&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">directory mask = 0755&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">samba 사용자를 등록합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">~$ sudo smbpasswd -a jwjw&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">New SMB password:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Retype new SMB password:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist. File successfully created.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Added user jwjw.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">~$&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이제 사바 서버를 재 실행합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">~$ sudo /etc/init.d/samba restart&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;* Stopping Samba daemons&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ OK ]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;* Starting Samba daemons&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ OK ]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">~$</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:28:44',0,'2019-04-15 16:28:44','210.101.103.92','','','','','','','','','','','',''),(114,-114,'',114,0,0,'','','html1','[Android] 우분투 안드로이드 환경 설정 팁 링크','<p><span style=\"color: #404040; font-family: 굴림;\">1. 우분투 안드로이드 개발환경 구축&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://blog.naver.com/akj61300?Redirect=Log&amp;logNo=80107198511\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blog.naver.com/akj61300?Redirect=Log&amp;logNo=80107198511</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. 우분투에서 안드로이드폰 인식시키기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://ihoney.pe.kr/777\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://ihoney.pe.kr/777</a></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:29:02',0,'2019-04-15 16:29:02','210.101.103.92','','','','','','','','','','','',''),(115,-115,'',115,0,0,'','','html1','[Windows] usb 메모리로 xp설치하기','<p><span style=\"color: #404040; font-family: 굴림;\">관련링크 &gt;&gt;&gt;&nbsp;</span><a href=\"http://blog.naver.com/baljern/140095247798\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://blog.naver.com/baljern/140095247798</a></p>','http://blog.naver.com/baljern/140095247798','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:29:29',1,'2019-04-15 16:29:29','210.101.103.92','','','','','','','','','','','',''),