포럼

제가 프로그램쪽은 잘 몰라서 지식이 많이 부족합니다.
앞으로 이야기하는 내용에 잘못된 점은 지적해주시고 좋은 방법이 있다면 이야기해주셨으면 합니다.


XE의 core중 core는 sequence설계입니다. XE는 그 sequence를 담을 정수형을 bigint로 설정하였습니다.

bigint

-2^63(-9223372036854775808) ~ 2^63-1(9223372036854775807) 8바이트


최대수인 값을 직접 document_srl에 입력 한 후 돌려보았습니다. 문제없이 조회, 수정 되었습니다. 하지만 저의 고민은 이곳이 아닌 다른곳에서부터 시작되었습니다.


function getNumberingPath($no, $size=3) {
    $mod = pow(10, $size);
    $output = sprintf('%0'.$size.'d/', $no%$mod);
    if($no >= $mod) $output .= getNumberingPath((int)$no/$mod, $size);
    return $output;
}

echo getNumberingPath(9223372036854775807);


결과

-01/000


일반 php로는 수를 담고 출력은 되지만 연산이 들어가게되면 올바른 처리를 하지못하게 됩니다.

9.22337203685E+18


실제 저런 터무니 없는 수까지 도달은 상당히 어려우니 일단 어느자릿수부터 문제가 나왔는지 테스트해보았습니다.

echo getNumberingPath(999999999);

결과

999/999/999


php의 조건상 9자리실제 10자리까지가 한계입니다.

XE는 sequence가 9자리를 넘어가게되면 모든 기능이 전부다 정상적인 동작이 되지 못하며, 첨부파일 등 sequence를 연산하는 곳에 대해서 문제가 발생하고 맙니다. 이 말은 결국 XE가 사용하가능한 데이터의 수는 000000000~999999999 = 1000000000 이라는 결과가 됩니다.

9.22337203685E+18처럼 나오는 수를 숫자모양처럼 나오게는 가능합니다.


function getNumberingPath($no, $size=3) {
    $mod = pow(10, $size);
    $output = sprintf('%0'.$size.'d/', sprintf("%.0f",$no)%$mod);
    if($no >= $mod) $output .= getNumberingPath((int)sprintf("%.0f",$no)/$mod, $size);
    return $output;
}
    
echo getNumberingPath(9223372036854775807);

결과

647/484/147/002/


하지만 이것은 그냥 그럴듯하게 보이게할뿐 결코 올바른 정보가 아닙니다. 입력한 숫자가 10자릿수를 넘는 순간 저 수만 나오게되니까요.


제가 이 문제 때문에 짧은 시간이지만 몇일간 여러 자료를 보고 검색을 해보았지만 결국 일반 php를 이용해서는 극복이 안되는걸로 결론을 냈습니다. 만약 이 부분에 대해서 규칙에 얽매이지 않고 연산처리없이 받은 수 그대로 폴더를 생성해낸다면 XE가 사용가능한 데이터 수는 bigint 자료형 그대로 사용되지 않을까 생각합니다.
연산처리 외에 기본적인 처리에 대해서는 pico님께서 이슈를 이미 남기셨더군요.


XE공홈에 sequence는 현재 8자리이네요. 앞에 설명한대로 10자리부터 이상증상이 나온걸 고려해본다면 9자리의 도달은 지극히 일반적이며 결코 무한이 아니라고 봅니다.


위의 문제점에 대해서 XE개발팀 이하 고수여러분들께서 좋은 방법이나 해결 방향을 고민하고 계시다면 어떠한 방법을 해보고계신지 이야기해주셨으면 합니다.

글쓴이 제목 최종 글
socialskyo 쇼케이스 관련 - 아이디어 제안 file  
푸시아 네이버 로그인 서비스 [10] 2014.07.16 by chansol
이즈야 와우... Ajax에 첫 발을 들여놓았습니다. [7] 2013.12.28 by scepter83
리크스 XE의 시퀀스 넘버와 유튜브와 같은 문자 형식은 차이점이 무엇인가요? [2] 2013.12.28 by 도라미
socialskyo 제로보드의 추억. [8] file 2013.12.28 by 권태성 
메테워 css , js브라우저캐시? [3] file 2013.12.28 by explode
콩치 [토론] XE의 모듈을 정의내린다면? [15] 2013.12.28 by sejin7940
nado0124 개발자 포럼이 앞쪽으로 갔네요. 개발자 우대...^^  
푸시아 xe개발자 vs xe사용자 [4] 2013.12.27 by XE
misol 개발자 포럼 글 관리 규칙 [5] 2013.12.27 by 또별
2donggalbi 사이트가 리뉴얼되는 건가요? [3] 2013.12.27 by 2donggalbi
졸라맨 menu_pop_area 팝업메뉴 수정에 관한 포럼. [3] 2013.12.27 by 졸라맨
라돌체 본문에 이미지 뽑아오기 되신 계시나요?  
라르게덴 php 정수형에 대해 논의해봅니다. [8] 2013.12.27 by 또별
socialskyo XE 마켓의 긍정적인 효과 [1] 2013.12.27 by 쿡래빗
socialskyo 네이버 이미지 검색 컴포넌트의 이미지를 XE가 섬네일을 생성 못하는듯 하네요..  
벨몽이 xe github에서 코멘트없이 closed된건 반영안된건가요? [6] 2020.03.14 by 벨몽이
너부리야 jquery 사용과 관련해서 말입니다. [2] 2013.12.27 by 너부리야
좋은친구들222 1.7.3.6 버전에서 블로그 api 쓰시는분 계신가요?  
bigblue2010 Vimeo 썸네일 자동추출 어떻게 안될까요? ㅠㅠ [1] 2013.12.26 by ToFinder