[고석철]님이 남기신 글:
>죄송합니다. 저도 착각을 한 것 같은데 처음 설명해 주신 것이
맞는 것 같습니다.
>그런데 이해가 안되는 부분은,
>INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')에서
왜 INET_ATON('255.248.0.0')을
>빼는 것인지 그것이 무슨 의미인지 한번만 더 설명을
부탁드려요.
>
>========================================================
>
>의외로 간단한데 어렵게 설명했네요.
>
>'시작주소' , '마지막주소' , '국가코드'
>'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
>
===========================================================
파일 업로드는 잘 됩니다.
최대 10M 까지인데 2M 이하라면 잘올라 갑니다.
지금은 업무중이라서 ....
퇴근 후 저녁에 왜 그렇게 계산해야 하는지 다시 설명해
드리죠..
우선은
http://www.linuxchannel.net/board/read.php?table=alpha&no=96
보기가 불편하면,
http://www.linuxchannel.net/board/print.php?table=alpha&no=96
을 읽어보세요..급조한
문서입니다... :)
|