sun's longitude:241 43 50.02 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
1763 번 글의 답장글: php 중에 가장 어려운 부분 같군요
글쓴이: 고석철 [홈페이지] 글쓴날: 2003년 11월 12일 00:22:06 수(새벽) 조회: 965
안녕하세요,
그런데, 아무리 쳐다 보아도 이 계산식은 이해가 가지
않습니다.
더구나 무언가 누락된 것 같기도 하구요.
한번만 더 설명을 부탁드리겠어요.
 죄송합니다.
디비 파일은 업로드가 안되는군요. 390K.zip 파일인데요.
이메일도 되돌아 오더라고요.
저는 PHP에서 100메가 파일도 업로드가 가능한데 왜 그런가요?

UPDATE table SET ipto = INET_NTOA ( ipfrom + INET_ATON('255.255.255.255') - ipto ),
ipfrom = INET_NTOA(ipfrom);



[산이]님이 남기신 글:

>
>[산이]님이 남기신 글:
>
>>
>>[고석철]님이 남기신 글:
>>
>>>산이님,
>>>제가 디비에 입력된 ntoa 아이피 자료가 45,500개 이고 새로
추가하려는 aton 자료가 90 여개 이므로 aton 자료만 ntoa로
변환하면 아주 간단할 것 같습니다. 이미 모듈도 ntoa 디비를
이용하는 것으로 되어 있어요.
>>>반대의 방법을 설명해 주신 것 같습니다.
>>>
>>
>>아 그런가요?
>>
>>ntoa 는 너무나 쉽죠? SQL 문 한방이면 끝나죠..
>>
>>mysql> UPDATE nuke_stats_country_ip_index SET
>>     > ipfrom = INET_NTOA(ipfrom),
>>     > ipto   = INET_NTOA(ipto)
>>     > WHERE id_nation != 100
>>     >;
>>
>>
>
>INET_ATON(): // Address TO Number
>INET_NTOA(); // Number TO Address
>
>number 형태로 DB 에 저장되어 있을 경우
>
>UPDATE table SET
>  ipto = INET_NTOA
>         ( ipfrom + INET_ATON('255.255.255.255') - ipto ),
>  ipfrom = INET_NTOA(ipfrom)
>;
>
>*주)
>계산순서상 ipto 을 먼저 update 해야함
>
>
>
>>>참고로, 제가 45천개의 ntoa 디비를 보내 드릴테니 좋은 작품을
한번 만들어 보시지요.
>>>
>>
>>4만 5천개이면 하나의 레코드당 15 + 15 + 4 => 약 34 bytes
>>이므로 45,000 * 33 = 약 1.5MB 정도 되겠군요. 맞나요?
>>
>>요즘 회사에서 FreeBSD 공부중이라서 시간이 거의 나질
않습니다...T.T
>>
>>>[산이]님이 남기신 글:
>>>
>>>>
>>>>[고석철]님이
 남기신 글:
>>>>
>>>>>친절히 답변해 주셔서 감사합니다. 저는 본시 PHP나 C 언어를
공부한 사람이 아니므로 클래스 같은 소스를 가져다가
가공해서 활용할 만큼의 지식은 없습니다. 현재 제가 갖고 있는
소스는,
>>>>>
>>>>>CREATE TABLE nuke_stats_country_ip_index (
>>>>>  ipfrom varchar(30) NOT NULL default '',
>>>>>  ipto varchar(30) NOT NULL default '',
>>>>>  id_nation smallint(6) NOT NULL default '0'
>>>>>) TYPE=MyISAM;
>>>>>
>>>>>#
>>>>># 테이블의 덤프 데이터 `nuke_stats_country_ip_index`
>>>>>#
>>>>>
>>>>>INSERT INTO nuke_stats_country_ip_index VALUES ('0033996344', '0033996351',
192);
>>>>>INSERT INTO nuke_stats_country_ip_index VALUES ('0050331648', '0083886079',
193);
>>>>>
>>>>>이며 약 45천개의 ip자료가 있습니다만, 한국은 제대로
분리가 되지 않고 있습니다. 그래서, 다음과 같은 산이님의
한국ip를 inet_ntoa() 형식으로 디비에 추가하려고 하는 것이지요.
★ 이것을 어떻게 바꾸어야 하는지요?
>>>>>
>>>>>INSERT INTO nuke_stats_country_ip_index VALUES ('61.248.0.0', '255.248.0.0',
100);
>>>>>INSERT INTO nuke_stats_country_ip_index VALUES ('129.254.0.0', '255.255.0.0',
100);
>>>>>INSERT INTO nuke_stats_country_ip_index VALUES ('141.223.0.0', '255.255.0.0',
100);
>>>>>INSERT INTO nuke_stats_country_ip_index VALUES ('147.6.0.0', '255.255.0.0',
100);
>>>>>INSERT INTO nuke_stats_country_ip_index VALUES ('147.43.0.0', '255.255.0.0',
100);
>>>>>INSERT INTO nuke_stats_country_ip_index VALUES ('147.46.0.0', '255.255.0.0',
100);
>>>>>INSERT INTO nuke_stats_country_ip_index VALUES ('146.47.0.0', '255.255.0.0',
100);
>>>>>
>>>>>국별 분리 스크립트는 다음과 같습니다.
>>>>>function GetCountryName($id_nation) {
>>>>>	global $prefix,$dbi;
>>>>>	$resultcn = sql_query("select countryname from
".$prefix."_stats_country_index where
id_nation='$id_nation'",$dbi);
>>>>>	list ($countryname) = sql_fetch_row($resultcn,$dbi);
>>>>>	return $countryname;
>>>>>}
>>>>>
>>>>>--------------------------------------------------------
>>>>
>>>>의외로 간단한데 어렵게 설명했네요.
>>>>
>>>>'시작주소'   , '마지막주소'  , '국가코드'
>>>>'0033996344' , '0033996351'  , 192
>>>>'2.6.190.56' , '2.6.190.63'  , 192
>>>>
>>>>이것이 맞군요.
>>>>
>>>>약간의 수작이 필요하겠네요.
>>>>
>>>>'61.248.0.0', '255.248.0.0', 100
>>>>
>>>>이것은 네트워크주소하고
 서브넷주소입니다.

>>>>따라서
>>>>
>>>>시작주소는 당연이 61.248.0.0 이고
>>>>마지막 주소는 61.255.255.255 입니다.
>>>>
>>>>좀 이해가 되나요?
>>>>
>>>>마지막 주소를 수식으로 표현하면 좀 복잡한데
>>>>간단하게 머리로 계산할 수 있습니다.
>>>>(AND 연산을 자주 접하면 금방 위의 주소가
나옵니다..)
>>>>
>>>>
>>>>수식으로 표현하면(mysql)
>>>>
>>>>SELECT INET_NTOA
>>>>(
>>>>  INET_ATON('61.248.0.0') +
>>>>  (
>>>>     INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
>>>>  )
>>>>); // 결과는  61.255.255.255 입니다.
>>>>
>>>>SELECT
>>>>(
>>>>  INET_ATON('61.248.0.0') +
>>>>  (
>>>>     INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
>>>>  )
>>>>); // 결과는 1040187391
>>>>
>>>>10 자리 zerofill 로 맞추려면
>>>>
>>>>SELECT LPAD
>>>>(
>>>>  INET_ATON('61.248.0.0') +
>>>>  (
>>>>     INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
>>>>  )
>>>>, 10, '0'); // 결과는 104018739
>>>>
>>>>따라서 이미 address 주소 형태로 DB 에 저장되어
있다면
>>>>(먼저 address 형태로 저장하는 것이 좋겠군요.)
>>>>
>>>>------------------------------
>>>>-- this file name 'aton.sql'
>>>>--
>>>>-- table name : nuke_stats_country_ip_index
>>>>--
>>>>-- 1. 먼저 마지막 주소를 수정
>>>>--
>>>>UPDATE nuke_stats_country_ip_index
>>>>  SET ipto = LPAD
>>>>      (
>>>>         INET_ATON(ipfrom) +
>>>>         (
>>>>           INET_ATON('255.255.255.255') - INET_ATON(ipto)
>>>>         ), 10, '0'
>>>>       )
>>>>   WHERE id_nation = 100
>>>>;
>>>>--
>>>>-- 2. 시작주소 수정
>>>>--
>>>>UPDATE nuke_stats_country_ip_index
>>>>  SET ipfrom = LPAD(INET_ATON(ipfrom), 10, '0')
>>>>  WHERE id_nation = 100
>>>>;
>>>>-------------------------------
>>>>
>>>>shell> mysql -u username -p dbname < aton.sql
>>>>
>>>>기존의 디비를 백업하고 시도하세요.
>>>>실수할수도 있으니깐요.
>>>>
>>>>good luck !!!
>>>>
>>>>>
>>>>>위와는 좀 다른 소스입니다만, 자체의 ip 디비를 가지 않고
호주의 netgeo.caida.org 를 접속하여 정보를 가져오는 방식인데
한국도 apnic인 호주 접속으로 나오는 수가 많습니다.
>>>>>
>>>>>function wbd_getlatdata($ip) {
>>>>>
>>>>>  $data = array("");
>>>>>
>>>>>$fp = fsockopen ("netgeo.caida.org", 80, $errno, $errstr,
30);
>>>>>if (!$fp) {
>>>>>    echo "$errstr ($errno)<br>\n";
>>>>>} else {
>>>>>    fputs ($fp, "GET /perl/netgeo.cgi?target=$ip HTTP/1.0\r\nHost:
netgeo.caida.org\r\n\r\n");
>>>>>    while (!feof($fp)) {
>>>>>        $packet = fgets ($fp,128);
>>>>>	array_push($data, $packet);
>>>>>    }
>>>>>    fclose ($fp);
>>>>>}
>>>>>
>>>>> // make it an array
>>>>>
>>>>>return $data;
>>>>>
>>>>>}
>>>>>
>>>>>=============================================================== 
>>>
>>>======================================== 
>>
>>======================================== 
>
>======================================== 

========================================

 
이전글 : Re: 헙 실수했구려... :)
다음글 : 바로 위의 글은 제가 잘못쓴 것입니다.  
 from 211.225.166.52
JS(Redhands)Board 0.4 +@

Re: 헙 실수했구려... :) 바로 위의 글은 제가 잘못쓴 것입니다.
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2024. linuxchannel.net. All rights reserved.

Page loading: 0.45(server) + (network) + (browser) seconds