extract

PHP 2008. 10. 9. 14:11
 

extract

(PHP 3>= 3.0.7, PHP 4 , PHP 5)

extract --  배열의 현재 심볼 테이블로 변수들을 입력한다

설명

int extract ( array var_array [, int extract_type [, string prefix]])

이 함수는 배열의 값들을 현재 심볼 테이블에 입력하는데 사용된다. 연관 배열 var_array를 취해서 변수명을 키로, 변수값을 값으로 취급한다. extract_typeprefix 에 따라 각 키/값 쌍에 대해서 현재 심볼 테이블안에 변수를 생성한다.

참고: 버전 4.0.5에 시작하여, 이 함수는 추출된 변수의 수를 반환한다.

참고: EXTR_IF_EXISTSEXTR_PREFIX_IF_EXISTS는 버전 4.2.0에서부터 지원된다.

참고: EXTR_REFS 버전 4.3.0부터 지원된다.

extract()는 각 키가 유효한 변수명을 갖을수 있는지 검사 한다. 또한 심볼 테이블에 존재하는 변수들과의 충돌도 검사한다. 유효하지않은/숫자 키와 충돌인 경우를 취급하는 방법은 extract_type에 의해 결정된다. 다음 값들 중 하나가 될 수 있다:

EXTR_OVERWRITE

충돌이 발생하면, 기존 변수를 덮어쓴다.

EXTR_SKIP

충돌이 발생하면, 기존 변수를 덮어쓰지 않는다. variable.

EXTR_PREFIX_SAME

충돌이 발생하면, prefix를 변수명 앞에 첨가한다.

EXTR_PREFIX_ALL

prefix를 모든 변수명 앞에 첨가한다. PHP 4.0.5에서 시작하여, 이 플래그는 숫자 변수도 적용된다.

EXTR_PREFIX_INVALID

유효하지 않은/숫자 변수명 앞에만 prefix를 첨가한다. 이 플래그는 PHP 4.0.5에서 추가되었다.

EXTR_IF_EXISTS

현재 심볼 테이블에 이미 존재하는 변수만 덮어쓴다. 그렇지 않으면 아무것도 하지 않는다. 이 플래그는 유효한 변수 목록을 정의하고 이 변수들만 추출하는데 유용하다. 예를 들어, 이런 변수는 $_REQUEST에서 정의된 변수들이다. 이 플래그는 PHP 4.2.0에서 추가되었다.

EXTR_PREFIX_IF_EXISTS

현재 심볼 테이블에 앞첨가된 버전의 같은 변수가 존재할때만 앞첨가된 변수명을 생성한다. 이 플래그는 PHP 4.2.0에서 추가되었다.

EXTR_REFS

변수를 참조로써 추출한다. 입력된 변수 값이 var_array 매개변수의 값을 참조한다는 의미를 갖는다. 이 플래그는 그 자체로나 다른 플래그와 OR 연산하여 extract_type에서 사용할수 있다. 이 플래그는 PHP 4.3.0에서 추가되었다.

extract_type가 설정되지 않으면, EXTR_OVERWRITE가 설정되 있다고 가정한다.

prefixextract_typeEXTR_PREFIX_SAME, EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 또는, EXTR_PREFIX_IF_EXISTS 일때만 요구된다. 앞 첨가된 변수가 유효한 변수명이 아니면, 심볼테이블에 입력되지 않는다.

extract()는 심볼 테이블에 성공적으로 입력된 변수의 수를 반환한다.

extract()가 사용가능한 경우는 wddx_deserialize()에서 반환한 연관배열에 포함되어있는 심볼 테이블 변수들 안에 입력하는것이다.

예 1. extract() 예제코드

<?php

/* Suppose that $var_array is an array returned from
   wddx_deserialize */

$size = "large"
;
$var_array = array ("color" => "blue"
,
                  
"size"  => "medium"
,
                  
"shape" => "sphere"
);
extract ($var_array, EXTR_PREFIX_SAME, "wddx"
);

print
"$color, $size, $shape, $wddx_size\n"
;

?>

위 예제코드는 다음을 출력할것이다:

blue, large, sphere, medium

$size는 덮어씌어지지 않았다, 왜냐하면 EXTR_PREFIX_SAME를 설정했기 때문이다. 결과적으로 $wddx_size가 생성되었다. EXTR_SKIP가 설정되어 있으면, EXTR_OVERWRITE$size가 "medium" 값을 갖게 하고 EXTR_PREFIX_ALL는 새로운 변수인 $wddx_color, $wddx_size, $wddx_shape를 갖게한다.

연관 배열을 사용해야 한다. EXTR_PREFIX_ALLEXTR_PREFIX_INVALID를 사용하지 않으면 숫자로 인덱스된 배열은 결과를 도출할수 없다.

compact() 참고.



add a note add a note User Contributed Notes
extract
Csaba at alum dot mit dot edu
27-Nov-2005 07:41
Sometimes you may want to extract only a named subset of the key/value pairs in an array.  This keeps things more orderly and could prevent an unrelated variable from getting clobbered from an errant key.  For example,

$things = 'unsaid';
$REQUEST = array(He=>This, said=>1, my=>is, info=>2, had=>a,
                 very=>3, important=>test, things=>4);
$aVarToExtract = array(my, important, info);
extract (array_intersect_key ($REQUEST, array_flip($aVarToExtract)));

will extract
$my = 'is';
$important = 'test';
$info = 2;

but will leave certain
$things = 'unsaid'

Csaba Gabor from Vienna
NB.  Of course the composite request coming in from a web page is in $_REQUEST.
anon at anon dot org
30-May-2005 07:02
A warning about extract() and null values.

This might be an actual Zend2 Engine bug, but it's bad programming practice, so I'm sharing it here instead.

I often work in envrionments where E_STRICT (which would prevent errors like this) isn't on, and I don't have access to change it. I also use a very simple template class that in a nutshell works like this:

$t = new Template('somefile.php');
$t->title = $title;
$t->body = $body;
$t->display();

display() more or less looks like this:

function display(){
   extract(get_object_vars($this),EXTR_REFS);
   ob_start(); include $this->templateFileName;
   return ob_get_clean();
}

If any of the assigned values are null (let's say that in this case $title wasn't initialized above) it causes the engine to do all sorts of incredibly whacky stuff like certifiably lose track of variables in an incredibly inconsistent way. I traced the problem down to the fact that it's using the EXTR_REFS flag. I assume that in PHP's internal variable storage or reference counting mechanism, that trying to extract null references makes it lose track or count of something or rather.

In a nutshell, if you start getting wierd behavior when using extract() make sure that the array or object you are trying to get variables out of doesn't contain null keys or values!
kake26 at gmail dot com
01-May-2005 03:59
The following is a neat use for extract to store and manipulate large amounts of form data from. I basically loop through the $_POST and implode it seperating the key and value pairs by a space. Then store it in a db, the reversing function basically explodes the string to a array. Then converts the indexed array to a associative array then uses extract to seal the deal and make it easily available within a program. My main reason for sharing these are the fact I make some big web applications that store allot of forum data in a DB and these functions make it very easy to quickly and easily store and recall the data. I've contributed it because I spent many hours creating this code and recall going "I wish someone had previously submitted it to the page notes". Would have saved me allot of time and agony and I'm sure I'm not the only person that could really benefit from it, so I decided to share.

<?php
$stack
= array();
foreach (
$_POST as $key => $value
) {
array_push($stack, $key, $value
);
}
// store it
$block = implode(" ",$stack);
// yeilds a space delimited string
// insert query to store string in DB here, like the one below
$query = "INSERT INTO `sometable` VALUES('".$seluser."','".addslashes($block)."');"
;
$result = mysql_query($query) or die("Query failed for block insert: " . mysql_error
());
// note $seluser in my case is a user ID associated with that block
// in one of my web apps
?>

The nice thing is with the above we can quickly create a string of key and value pairs from the data the script-x got. Without really caring what their names are. You know how if register globals are on you say $someformvar rather than $_POST["someformvar"]; , basically the code below reads this previous created block returns it to that state. Sort of like presistant register globals.

<?php
// insert query to grab the previously stored string here
$query = "SELECT * FROM `sometable` WHERE `blockid` = '".addslashes($bid)."';"
;
$result = mysql_query($query) or die("Query failed read: " . mysql_error
());
$sql = mysql_fetch_array($result, MYSQL_ASSOC
);
$array = eplode(" ",$sql["data"
]);
for (
$i = 0; $i < sizeof($array); $i+=2
) {
$myassoc[$array[$i]] = isset($array[$i+1])?$array[$i+1]:NULL
;
}
extract($myassoc, EXTR_OVERWRITE
);
// now you're key and value pairs from $_POST have been restored
// instead of $_POST
?>
pg dot perfection at gmail dot com
14-Mar-2005 10:33
Here is a little example of how an extraction method should look like when it needs to work recursive (work on nested_arrays too)...

Note that this is only an example, it can be done more easily, and more advanced too.

<?php
/**
 * A nested version of the extract () function.
 *
 * @param    array    $array        The array which to extract the variables from
 * @param    int        $type        The type to use to overwrite (follows the same as extract () on PHP 5.0.3
 * @param    string    $prefix        The prefix to be used for a variable when necessary
 */
function extract_nested (&$array, $type = EXTR_OVERWRITE, $prefix = ''
)
{
  
/**
     *  Is the array really an array?
     */
  
if (!is_array ($array
))
   {
       return
trigger_error ('extract_nested (): First argument should be an array', E_USER_WARNING
);
   }

  
/**
     *  If the prefix is set, check if the prefix matches an acceptable regex pattern
     * (the one used for variables)
     */
  
if (!empty ($prefix) && !preg_match ('#^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$#', $prefix
))
   {
       return
trigger_error ('extract_nested (): Third argument should start with a letter or an underscore', E_USER_WARNING
);
   }

  
/**
     * Check if a prefix is necessary. If so and it is empty return an error.
     */
  
if (($type == EXTR_PREFIX_SAME || $type == EXTR_PREFIX_ALL || $type == EXTR_PREFIX_IF_EXISTS) && empty ($prefix
))
   {
       return
trigger_error ('extract_nested (): Prefix expected to be specified', E_USER_WARNING
);
   }

  
/**
     * Make sure the prefix is oke
     */
  
$prefix = $prefix . '_'
;

  
/**
     *  Loop thru the array
     */
  
foreach ($array as $key => $val
)
   {
      
/**
         *  If the key isn't an array extract it as we need to do
         */
      
if (!is_array ($array[$key
]))
       {
           switch (
$type
)
           {
               default:
               case
EXTR_OVERWRITE
:
                  
$GLOBALS[$key] = $val
;
               break;
               case
EXTR_SKIP
:
                  
$GLOBALS[$key] = isset ($GLOBALS[$key]) ? $GLOBALS[$key] : $val
;
               break;
               case
EXTR_PREFIX_SAME
:
                   if (isset (
$GLOBALS[$key
]))
                   {
                      
$GLOBALS[$prefix . $key] = $val
;
                   }
                   else
                   {
                      
$GLOBALS[$key] = $val
;
                   }
               break;
               case
EXTR_PREFIX_ALL
:
                  
$GLOBALS[$prefix . $key] = $val
;
               break;
               case
EXTR_PREFIX_INVALID
:
                   if (!
preg_match ('#^[a-zA-Z_\x7f-\xff]$#', $key{0
}))
                   {
                      
$GLOBALS[$prefix . $key] = $val
;
                   }
                   else
                   {
                      
$GLOBALS[$key] = $val
;
                   }
               break;
               case
EXTR_IF_EXISTS
:
                   if (isset (
$GLOBALS[$key
]))
                   {
                      
$GLOBALS[$key] = $val
;
                   }
               break;
               case
EXTR_PREFIX_IF_EXISTS
:
                   if (isset (
$GLOBALS[$key
]))
                   {
                      
$GLOBALS[$prefix . $key] = $val
;
                   }
               break;
               case
EXTR_REFS
:
                  
$GLOBALS[$key] =& $array[$key
];
               break;
           }
       }
      
/**
         *  The key is an array... use the function on that index
         */
      
else
       {
          
extract_nested ($array[$key], $type, $prefix
);
       }
   }
}
?>
Michael Newton
03-Mar-2005 01:23
They say "If the result is not a valid variable name, it is not imported into the symbol table."

What they should say is that if _any_ of the results have invalid names, _none_ of the variables get extracted.

Under 4.3.10 on Windows 2000, I was pulling some mySQL records, but needed to convert two fields into IP addresses:
<?
extract
(mysql_fetch_assoc(mysql_query('SELECT * FROM foo'
)));
extract(mysql_fetch_assoc(mysql_query('SELECT INET_NTOA(bar) AS bar, INET_NTOA(baz) FROM foo'
)));
?>

I had forgotten the second AS modifier in the SQL query.  Because it couldn't extract a variable called INET_NTOA(baz) into the symbol table, it didn't do either of them.

(BTW I don't normally stack functions up like that!  Just to make a short example!)
22-Feb-2005 03:31
To make this perfectly clear (hopefully), an underscore is always added when the string is prefixed.
extract(array("color" => "blue"),EXTR_PREFIX_ALL,'');// note: prefix is empty
is the same as
$color='_blue';
Aaron Stone
17-Nov-2004 06:44
If you are working porting an older application, and taking the advice above, extracting only _SERVER, _SESSING, _COOKIE, _POST, _GET, you have forgotten to extract _FILES. Putting _FILES last and using EXTR_SKIP doesn't work because the name of the file upload box is already set as a variable containing only the temporary name of the uploaded file from one of the earlier extracts (I haven't tested to see which one specifically, however). A workaround is to put _FILES last and use EXTR_OVERWRITE. This allows extract to replace that temp-name-only variable with the full array of file upload information.
Adam Monsen <adamm at wazamatta dot com>
03-Oct-2004 12:03
As shown in the example, if your 'prefix' is used, a single underscore is added to the name of the extracted variable. Meaning, a prefix of 'p' becomes a prefix of 'p_', so 'blarg' prefixed would be 'p_blarg'.

If you're not sure what variables you've created through extraction, you can call get_defined_vars() to see all defined variables in the current scope.

Posted by 철냄비짱
,
해당기사: http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=102&oid=117&aid=0001975507

한국정보문화진흥원은 2008년 상반기 정부기관 및 지자체 등 총 51개 기관이 신청한 장애인 웹 접근성 품질마크 심사에 대해 9월 4일‘웹 접근성 품질마크 심사위원회’를 개최해 청와대, 부산시, 거제시, 진주시 등 14개 홈페이지 등 웹 사이트를 “장애인 웹 접근성 품질 우수기관”으로 선정하고 심벌마크를 부여했다.

장애인 웹 접근성 품질마크는 2005년 국가표준으로 제정된 ‘인터넷 웹 콘텐츠 접근성 지침’의 13개 항목을 기반으로 엄정한 과정을 통과한 사이트에 대해 그 우수성을 인정해주는 제도이다.

품질마크 심사위원회 위원장인 충북대 김석일 교수는 “청와대 사이트가 장애인 웹 접근성 제고에 대해 지대한 관심을 가지고 장애인 웹 접근성 품질 우수기관으로 심벌마크를 부여 받음으로서 장애인 웹 접근성 제고에 공공기관 뿐만 아니라 민간부문에서도 많은 관심을 갖게 되는 계기가 될 것” 이라고 밝혔다.

※위 기사의 법적인 책임과 권한은 메디컬투데이에 있습니다.

마이데일리 제휴사 / 메디컬투데이 정혜원 기자 (wonny0131@mdtoday.co.kr)

건강이 보이는 대한민국 대표 의료, 건강 신문 ⓒ 메디컬투데이(www.mdtoday.co.kr)

- NO1.뉴미디어 실시간 뉴스 마이데일리(www.mydaily.co.kr) 저작권자 ⓒ 마이데일리. 무단전재&재배포 금지 -

P.S : 음...네이버 기사에도 실렸었군.. 왠지 뿌듯하긴 한데.........기분이 심하게 나빠지는 이유는 뭘까?
Posted by 철냄비짱
,

PHP XML 파일 Pasrsing

PHP 2008. 10. 1. 11:41

// 파일명 getXML.php


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<meta name="robots" content="noindex, nofollow">
</head>
<?
session_start();
error_reporting(E_ALL^ E_NOTICE); # report all errors
ini_set("display_errors", "1"); # but do not echo the errors "0" or "1")


include_once "../../common/config/common.php";
include_once "../../common/inc/db_con.inc.php";
include_once "../../common/inc/function.inc.php";

$sdate = RemoveXSS($_REQUEST["sdate"]);
$umode = RemoveXSS($_REQUEST["umode"]);

class RSSParser {

 var $feed_info = array();
 var $feed_articles = array();
 var $inchannel = FALSE;
 var $initem = FALSE;
 var $inimage = FALSE;
 var $current_item = array();
 var $current_el = FALSE;

 // 여는 태그 처리
 function startElement($parser, $name, $attrs)
 {
  $el = strtoupper($name);
  if ($el == 'RSS') {
   return;
  } else if ($el == 'CHANNEL') {
   $this->inchannel = TRUE;
  } else if ($el == 'ITEM') {
   $this->initem = TRUE;
  } else {
   $this->current_el = $el;
  }
 }

 // 닫는 태그 처리
 function endElement($parser, $name)
 {
  $el = strtoupper($name);

  //아래 'CHANNEL', 'ITEM' 부분에서 제공해주는 사이트의 XML 부분에 따라 필드셋을 변경해준다.
  if ($el == 'RSS') {
   return;
  } else if ($el == 'CHANNEL') {
   $this->inchannel = FALSE;
  } else if ($el == 'ITEM') {
   $this->feed_articles[] = $this->current_item;
   $this->current_item = array();
   $this->initem = FALSE;
  } else {
   $this->current_el = FALSE;
  }
 }

 // 태그 사이의 데이터 처리
 function characterData($parser, $data)
 {
  if ($this->initem) {
   if ($this->current_el) {
    $this->current_item[$this->current_el] .= $data;
   }
  } else if ($this->inimage) {
  } else if ($this->inchannel) {
   if ($this->current_el) {
    $this->feed_info[$this->current_el] .= $data;
   }
  }
 }
}

function parse_save_rss($document)
{
 global $cu_conn;

 // RSS 피드의 인코딩을 UTF-8에 맞춤
 if (preg_match('/<?xml.*encoding=[\'"](.*?)[\'"].*?>/m', $document, $m)) {
  $in_enc = strtoupper($m[1]);
  if ($in_enc != 'UTF-8') {
   $document = preg_replace('/(<?xml.*encoding=[\'"])(.*?)([\'"].*?>)/m', '$1EUC-KR$3', $document);
   $document = iconv($in_enc, 'EUC-KR', $document);
  }
 }
 
 /*
 $document = str_replace("&lt;", "<", $document);
 $document = str_replace("&gt;", ">", $document);
 */

 // XML 및 RSS 분석기 생성
 $xml_parser = xml_parser_create('ISO-8859-1');
 $rss_parser = new RSSParser();

 xml_set_object($xml_parser, $rss_parser);
 xml_set_element_handler($xml_parser, "startElement", "endElement");
 xml_set_character_data_handler($xml_parser, "characterData");

 if (!xml_parse($xml_parser, $document, true)) {
  printf("XML error: %s at line %d \n", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser));
 } else {
  foreach ($rss_parser->feed_articles as $article) {

   /*
   echo $article["LINK"]."<br />";
   echo $article["TITLE"]."<br />";
   echo $article["DESCRIPTION"]."<br />";
   echo $article["PUBDATE"]."<br /><br /><br />";
   */

   $title = addslashes($article["TITLE"]);
   $description = $article["DESCRIPTION"];
   //$description = addslashes($article["DESCRIPTION"]);
   $link = addslashes($article["LINK"]);
   $pub_date = $article["PUBDATE"];

   if($modify_date == "") $modify_date = $register_date;
   
   $query = "SELECT NVL(MAX(UNO), 0) + 1 AS NEW_UNO, NVL(MAX(GNO), 0) + 1 AS NEW_GNO FROM TBWB_BOARD_P06 " ;
   $req = cubrid_execute($cu_conn, $query);
   $rows = cubrid_fetch($req);

   $new_uno = $rows["NEW_UNO"];
   $new_gno = $rows["NEW_GNO"];
   $new_reply_depth = "A";

   // Insert Or Update
   $query  = " INSERT INTO TBWB_BOARD_P06 ";
   $query .= " (UNO, GNO, REPLY_DEPTH, MEMB_ID, NICKNAME, SUBJECT, CONTENT, HTMLTAG_YN, ACCESS_IP, PUB_DATE, INS_DATE, UPD_DATE, UPLOAD_MULTIMEDIA_TYPE, RECOMMEND_YN, SUMMARY, FLV_URL, CATE_CODE, SUB_TITLE)";
   $query .= " VALUES";
   $query .= " ($new_uno, $new_gno, '$new_reply_depth', '".$_SESSION['SS_ADMIN_ID']."', '".$_SESSION['SS_ADMIN_NICKNAME']."', '$title', '$description', 'Y', '127.0.0.1', 'TO_TIMESTAMP('$pub_date','YYYY.MM.DD HH24:MI')', sys_timestamp, sys_timestamp, '$upload_multimedia_type', 'N', '$summary', '$flv_url', '$cate_code', '$sub_title') ";
   echo $query."<br /><br /><br />";

   //$req = cubrid_execute($cu_conn, $query);
   //exit;
   //@cubrid_close_request($req);
  }
 }

 xml_parser_free($xml_parser);
}

// 읽어올 피드 목록
//local 서버에 존재하는 xml 파일로 바로 파싱할때
$feed_urls = array('./dataXML.xml'); //80포트 일 경우 해당 URL을 바로 입력시 웹XML 파일 파싱 가능

foreach ($feed_urls as $url) {

 $handle = fopen($url, 'r');
 if ($handle) {
  $document = '';
  while (!feof($handle)) {
   $document .= fgets($handle, 4096);
  }

  //echo $document;
  //echo "url : ".$url."\n";
  // 읽어온 피드를 분석하여 DB에 저장
  parse_save_rss($document);

  fclose($handle);
 }
}


/* FTP 상의 XML 파일을 파싱할때
// define some variables
$server_file = '';
$local_file = '';

// set up basic connection
$conn_id = ftp_connect("");

// login with username and password
$login_result = ftp_login($conn_id, "tantanloan", "*qlalft");

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    echo "Successfully written to $local_file\n";
} else {
    echo "There was a problem\n";
}

// close the connection
ftp_close($conn_id);
*/

?>

Posted by 철냄비짱
,



벼르고 있던 "천년동화 2권"
그리고 장형수 대리님 추천으로 지른 허브코헨의 협상의법칙,

굉장히 유명한 책이란다.
저자가 비지니스 거래 협상 부터 인질협상까지 경험도 굉장히 많다고 한다.
한 반정도 보고 있는데... 앞으로 2번 더 봐야 할 듯...내용이 꽤나 많아서 한번에 이해가 다 되질 않는다.

협상의 법칙...힘, 정보, 시간...

Posted by 철냄비짱
,


음.....일단 올려서 추후에 사용을 대비하긴 하는데...
안되는 것도 있고..정리가 영~

암튼 맘에 안들어....
Posted by 철냄비짱
,



Cubrid 의 페이징 공식 기술문서
Posted by 철냄비짱
,

http://openframework.or.kr/framework_reference/spring/ver2.x/html/index.html
스프링의 관한 내용의 책 한권 분량이 들어있다.

http://openframework.or.kr/
이 사이트 컨텐츠의 한 부분인것 같은데... 자세한 건 아직 보지 않음...
Posted by 철냄비짱
,


1.

C:\>

이렇게 표시가 되면 net stop wuauserv 를 입력, 엔터.

→ C:\>net stop wuauserv

 

2.

C:\>

regsvr32 %windir%\system32\wups2.dll 입력, 엔터.

→ C:\>regsvr32 %windir%\system32\wups2.dll

 

※ 여기서 Windows XP Professional x64 Edition 의 경우는 다음과 같이 입력합니다.

C:\>regsvr32 %windir%\syswow64\wups2.dll

 

3.

C:\>

net start wuauserv 입력, 엔터.

→ C:\>net start wuauserv

 

 
모든 작업을 마쳤으면 cmd 창을 닫고 부팅 후 인터넷 도구 → Windows Update(U),
               혹은 자동 업데이트를 통해 업데이트를 설치합니다.

Posted by 철냄비짱
,

 Vista 설치 후 바로 적용해야 할 몇 가지 추천 사항


지난 며칠 간의 여유 시간에 새로이 Windows XP와 Vista를 멀티 부팅 구조로 설치하였습니다.

소문을 들어 알고 있는 이들도 많겠지만, 전국적으로 불법 소프트웨어에 대한 단속이 진행 중이기에, 자의건 타의건 우리 모두가 속사정을 다 알고 있는 것과 같이 많은 적법하지 못한 소프트웨어가 설치된 컴퓨터를 그대로 방치할 수는 없는 노릇이므로, 깨끗한 상태로 신규 설치를 하였습니다.

보통은 작성자가 직접 업무용으로 사용하는 컴퓨터는, 새로 설치보다는, 항상 이상이 없는 상태로 백업본을 유지하여, 백업과 복원이라는 방법으로 시스템을 유지하였습니다.

이번에는, 물론 OS는 정품 설치 매체와 코어가 있는 것으로 설치하여야 하므로, 어쩔 수 없이 XP Home과 Vista Home Premium으로 설치하였습니다.

작성자는 별로이 경제적인 여건이 수월치 않아 시스템 사양이 높지 않다는 면과, 그리고 아무리 Vista 찬양론자들이 입에 거품을 물어도 실제로 와닿지 않는 Vista 사용법의 거리감으로 주로 XP를 사용하여 왔기에, Vista를 새로 설치하는 것은 흔치 않는 작업입니다.

새로 Vista(SP1)를 설치하면서, 이 정도는 바로 적용해두어야 하지 않을까라고 생각한 몇 가지 양념와 다른 고려해야 할 사항들을 아래에 정리하였습니다.

이 기사는 차후도 계속 보강토록 하겠으며, 우선 작성자가 직접 실제로 적용한 것들을 나열합니다.

Vista를 먼저 설치하고 SP1을 다운로드하여 따로이 설치하는 것은 설치 소요 시간에 상당한 차이가 발생합니다. 가급적 합본(통합)된 매체로 설치할 것을 권합니다.

 

  • 거의 필요가 없음에도 [중요] 업데이트로 설치되어 많은 디스크 공간을 차지한다는 KB955020 업데이트에 대한 정보입니다.

    Vista - KB955020 업데이트 삭제로 1GB의 디스크 공간 되살리기:
    http://suretek.namoweb.net/11142
     

  • SP1 설치 후 찌꺼기를 청소하지만, 삭제 후는 SP1의 제거가 불가능함에 유의합니다.

    Vista - 디스크 공간 반환을 위한 Vista SP1 파일 제거 도구:
    http://suretek.namoweb.net/4474
     

  • UAC를 무효 또는 유효로 하는 방법의 정리된 완결판

    Vista - Vista의 UAC를 무효화하는 방법의 정리:
    http://suretek.namoweb.net/8699
     

  • Aero 투명 효과를 즉각적으로 유효 또는 무효로 하는 바로 가기 만들기

    Vista - 에어로 투명 효과 전환 바로 가기 만들기:
    http://suretek.namoweb.net/4422

    바탕 화면의 빈 곳을 마우스 우클릭하여 [새로 만들기]-[바로 가기]를 선택합니다.

    [항목 위치 입력] 란에 아래와 타자하여 각각 상응한 적당 이름을 줍니다.

    rundll32.exe dwmApi #104
    Turn Aero Transparency Off

    rundll32.exe dwmApi #102
    Turn Aero Transparency On
     

  • XP와 Vista의 네트워크 구성 시에 XP가 Vista에서 보이지 않는 문제를 해결합니다.

    Vista - 네트워크 맵에 XP가 보이도록 XP에 LLTD 설치하기:
    http://suretek.namoweb.net/12830
     

  • Internet Explorer 7의 상단부를 이전 버전과 유사하게 배열하는 여러 가지 레지스트리 조작법입니다.

    Vista - IE7의 상단부를 내 마음대로 조정하는 여러 방법의 정리:
    http://suretek.namoweb.net/12283
     

  • 디스크 정리를 바로 실행하는 것보다도 더 많은 항목을 정숙 모드로 실행토록 합니다.

    XP - 디스크 정리의 무인 확장판 만들기:
    http://suretek.namoweb.net/3336

    Disc(Auto) Cleanup 바로 가기 만들기

    %SystemRoot%\System32\Cmd.exe /c Cleanmgr /sageset:65535 & Cleanmgr /sagerun:65535
     

  • 바탕 화면에 장치 관리자 바로 가기 만들기

    C:\Windows\system32\devmgmt.msc
     

  • 상승된 권한의 명령 프롬프트 열기 컨텍스트 메뉴 달기

    Vista - 관리자 권한의 상승된 명령 프롬프트 창 열기의 컨텍스트 메뉴 달기:
    http://suretek.namoweb.net/4314

    기사 중의 등록 파일로 바로 적용하면 됩니다.
     

  • 소유권 획득을 손쉽게 처리하는, Vista 사용자에겐 꼭 필요한 양념입니다.

    Vista - 파일과 폴더에 컨텍스트 Take Ownership 메뉴 옵션 달기:
    http://suretek.namoweb.net/4341
     

  • 바탕 화면에 없는, 바로 가기가 아닌 원래의 IE 아이콘을 만듭니다.

    Vista - XP3의 사라진 IE 바탕 화면 아이콘 다시 만들기:
    http://suretek.namoweb.net/8406
     

  • 잘 지워지지 않는 폴더나 파일을 처리하는 유틸리티

    Vista - 잠긴 파일과 폴더의 손쉬운 삭제 유틸리티 Unlocker 1.8.7:
    http://suretek.namoweb.net/13016
     

  • 고수에게는 꼭 필요한 Shell 확장 유틸리티

    Context Magic greatly extends the list of available features. It is a multi-purpose context (shortcut) menu extension that allows to copy or move files to folders that are used most of all, such as My Documents, My Pictures or My Music.

    A program is trying to send e-mail on your behalf. Stop this message with ClickYes.:
    http://www.contextmagic.com/?refid=cmmenuitem
     

  • 숨김 파일을 바로 보이게 또는 안 보이게 토글하는 작은 유틸리티

    Downloads - HiddenFilesToggle-숨김파일의 손쉬운 숨김-보임 토글:
    http://suretek.namoweb.net/5036
     

  • Vista의 시작 메뉴를 클래식으로 하면 자동적으로 나타나지만, 정상적인 종료 시에도 시스템 종료 유형을 사용자에게 선택할 수 있도록 합니다.

    Vista - Vista의 전원 단추에 내게 물어보기 옵션을 다는 방법:
    http://suretek.namoweb.net/11575
     

  • 원클릭으로 언제나 시스템 복원 지점을 생성할 수 있도록 합니다.

    Vista - Vista의 시스템 복원 지점 생성 숏컷 만들기:
    http://suretek.namoweb.net/8653      bullet_22_1.gif

Posted by 철냄비짱
,

T61[8897-A15]
시스템 운영체제 OS  Windows Vista Home Premium
프로세서 CPU  Intel Core2Duo T7500
클럭  2.2GHz
FSB  -
캐시 메모리  4MB
메인보드 칩셋  -
메모리 메인  4096GB DDR2 SDRAM
타입  PC2-5300 (667MHz)
Display LCD  14.1"SXGA+ (1400 x 1050) TFT LCD
칩셋  Intel GMA X3100
메모리  -
멀티미디어 사운드 칩셋  Sound MAX
스피커  -
DMB TV/DMB  -
TV포트  -
저장장치 HDD  160GB (S-ATA)
ODD  DVD-Multi
통신 유선 LAN  10/100/1000M Gigabit LAN
무선 LAN 칩셋  -
규격  802.11 a/b/g
블루투스  -
입력장치 키보드  풀사이즈 키보드
포인팅  터치패드, 트랙포인트
파워 배터리  6셀리튬이온배터리
보안기능 지문인식  -
크기/무게 크기(WxHxD) 본체크기  311mm x 255mm x 266mm
무게 본체무게  약 2.2Kg
웹카메라  -
I/O PORT USB  USB 2.0 x 3
영상 TV-Out  X
HDMI  X
VGA Out(RGB)  O
음성 Mic-in  O
Audio-Out  O
IEEE1394  X
Ethernet(RJ-45)  O
기타       

뭐 랄까.....CWD 파견근무로 인해 고유 노트북을 사용할 수 없다는 말에 좌절하고 버티던 순간,

근무장소가 바뀌면서 이전 15.4인치의 본인 노트북을 사용할 수 있다는 생각에 들뜬것도 잠시....

이 한여름에 땀 삐질삐질 흘려가며...노트북을 운반하다...지하철에 던지고 싶더라...

홧김에 돈도 들어 왔겠다. 질러버린 씽크패드 T시리즈,

처음 골라본 IBM 노트북이지만 나이스 초이스 였던 느낌...

꽤나 만족하고 사용중... 확실히 그래픽 메모리가 공유라 그런지 4GB를 장착해도 XP의 메모리 활용도가 그다지 좋진 않다.

좀 더 사용후, 노트북을 여러번 바꿔가면서도 한번도 써보진 않은 리뷰를 작성해 봐야겠다.



파견 근무 사무실에서 유일하게 노트북을 사용 중인 나는,
구매후에 이렇게 만족해 본적이 없는 노트북이다. 만족만족^^

씽크패드에만 달려 있는 일명 빨콩 ^^
나름 움직이는 재미도 있고, 뭣보다 개인적으로 중요시 여기는 키감, 키 타격감이 굉장히 좋다.
작년에 사용하던 HP DV5233TX 랑 비슷하면서도 약간의 더 무거운 면이 없지 않아 있지만,
이 키감..굉장히 맘에 든다.

LCD에 코팅이 되어 있는걸 주로 쓰다보니 그게 당연시 여겨 졌었는데,
이제보니.. 없는 것이 빛반사도 덜되고,
약간의 어두운 면이 있지만 조쿠나~

지문인식과 로고

노트북의 모든 면의 재질 자체가 어떤건지 모르겠지만,
지문이 묻어서 괜히 찝찝하고 지저분한 느낌을 매번 받던 지난 노트북들 보다 신경 안써도 되고
노트북 기능 자체에만 신경을 쓰게 되니 ^^ Good!!
Posted by 철냄비짱
,