통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
Visual C++ 포럼마을 입니다.
  마을등급 Visual C++   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 나성훈 주민 1573 since 2006-12-29
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
마을 게시판
등록된 마을 게시판이
없습니다.
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 강좌&팁
 1000배 이상. 파일 압축 - LZMA (7zip WinZipX XZ BSC) PeaZip - FreeArc  | VC++ 일반 2018-12-18 오전 9:00:33
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 번호: 8887 추천:0  / 읽음:5,792

 

파판 3 주인공 이름 - 루네스 레피아 아르크 잉그스 Luneth Arc Refia Ingus  청주 주네스 ㅇ_ㅇ?  란마  라마다 호텔.

원피스 주인공 이름 - 루피 샹디 조로 나미 우솝 초파

드퀘4 주인공 이름 - 솔로 소피아 유릴 라이안 아리나 크리프트 브라이 토르네코 마냐 미네아

KBS 는 한국 방송 공사  /  KB 는 국민은행  /  BYC 는 속옷 이름  /  BYTE 는 바이트  /  음료수 이름 이프로  /  오디오 서라운드  /  웨딩 피치

반게리온 서드 임팩트 /  DPI  /  비치 발리볼 / 스타 크래프트  /  AR 증강현실 / 벽돌 폰 / 쌈짓 돈 내...

3차원 공간 좌표 Yaw Roll Pitch  /  빛'은 합쳐 질 수 록 밝아진다.  압축은 빛과 어둠'을 의미?  반갑습니다 - 당신은 하늘 같이. 밝고 큰 존재입니다.

불교경전 나마다 경 - 언젠가 예수 오시면. 내가 깨달은 도는 기름없는 등과 같다

윈도우 창문 Windows Door - if () 문 / for () 문 / switch () 문 / goto 문 / 토비라(とびら)’ 책 속 표지, 표제쪽, 제목쪽, 제호쪽

 

‘불설라마가경(佛說羅摩伽經)’에서 도깨비 신은 모든 세계 두루하고 법계의 평등한 모든 중생을 위하여 보기 좋아하는 몸으로 나타났다

일본 엔화 평성 (平成 )  북한 평양  평산 신씨


ㅇ_ㅇ;; 대충 때려 맞추기...




 

주인공 곁에는. 동료'가 있었다.

Excute SDK PlugIn Extension... ㅇ_ㅇ;;

 

 

// 압축 원리 구조 형식 ??

데이터---> BMP JPG---> RGB 문자형 숫자 %3d round pictch ---> BSC ARC 7z LZMA  압축효율 0%

                                                   rand() % 2 ~ 16 ---> BSC ARC 7z LZMA  압축효율 0%

                                        GetTickCount () % 2 ~ 16 ---> BSC ARC 7z LZMA  압축효율 0%

 

 

// RGB 문자형 숫자 구현방법 %3d round pictch

 

int pitch = 4*w; // 4 bytes per pixel but if not 32 bit, round pitch up to multiple of 4

// 픽셀 당 4 바이트이지만 32 비트가 아닌 경우 최대 4 배의 라운드 피치

int pos;

pos = j * pitch;  

pos = j;  

        pos += i*4;

        

char tmp[10];

sprintf(&tmp[0], "%3d", pdata[pos + 0]);

fwrite(&tmp[0], 1, 3, fp);

sprintf(&tmp[0], "%3d", pdata[pos + 1]);

fwrite(&tmp[0], 1, 3, fp);

sprintf(&tmp[0], "%3d", pdata[pos + 2]);

fwrite(&tmp[0], 1, 3, fp);

 

char c = ' ';

fwrite(&c, 1, 1, fp);


 

High performance data compression library
http://libbsc.com/

 

bsc.exe  e  7.txt  7.bsc  -G

 

 test Image Diff.7z

 

 

 

//

- HDC 는 GDI 로. 렌더링 후. 메모리 해제 해도. 사용이 가능.

- 10만개의 윈도우 빈폴더 파일 압축효율 0%

- FFMPEG 가속 + 압축 ㅇ_ㅇ;; 30배 정도 확인
- 3차원 모델 - Draco vs. Open3DGC 25 배 압축 OpenCTM Java3D VRML wrl 75 MB - ctm3 MB
- MP3 압축 차이값 압축 10배 이상
http://heroes.nexon.com/Community/userbbs/view?page=7&category=0&postno=444389

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//
.Net Framework 에서 Grpc 구현 - 10배 이상 압축 성능 - 원격 프로시저 호출
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNO=8&no=179410&ref=179410&page=1


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


내 동생 곱슬머리

개구쟁이 내 동생

이름은 하나인데 별명은 서너개

엄마가 부를 때는 꿀돼지

아빠가 부를 때는 두꺼비

누나가 부를 때는 왕자님

어떤 게 진짜인지

몰라 몰라 몰라

 

내 동생 곱슬머리

개구쟁이 내 동생

이름은 하나인데 별명은 서너개

잘 먹고 건강하게 꿀돼지

착하고 복스럽게 두꺼비

용감하고 슬기롭게 왕자님

어떤 게 진짜인지

몰라 몰라 몰라

 

 

디지털 논리 회로 연습 ★ 하나를 다양하게 서술 표현 ★ 드모르간의 정리

C code - 194 lines - codepad
http://codepad.org/Pjb7s99x


 

Microsoft PowerPoint - ch06_sym.pptx   6장 부울 함수의 간소화 - 6변수+카르노맵
http://cms3.koreatech.ac.kr/sites/yjjang/down/dig13/ch06_sym.pdf



카르노 맵 + Edward W. Veitch + 카르멘 오페라 ㅇ_ㅇ??

- 논리 회로 설계에 활용

- 2차원 3차원 원형 도넛 모양 공간

- 중복 없는. 번호 순서. 위치 변경 가능.

- 최소항 간소화 가능


2변수  최소항 4개

3변수  최소항 8개 

4변수  최소항 16개

5변수  최소항 32개

6변수  최소항 64개

 

GitHub - manashmandal/KMapSolver: Qt C++ and Lepton Based K-Map solver for unlimited variables
http://github.com/manashmandal/KMapSolver

 

 

네모네모 로직'도 유사하다.

 

RLE+         : 중복 누적 압축

멕시코모자  : 물결 곡선

 

독립기념관  : 겨레의 기념비

슬근 슬근 톱질 : 위치 자릿수 빼기

 

과일 꼬치 / 바늘 실 끼우기 : 공간 분할

알카노이드                   : 지우기

 

 


 

다시 정리.

 

//

하드웨어 가속 없는. 테스트 결과

압축 효율 0% 가 가장 좋음 7zip arc LZMA   (1000배 이상 압축 : 1GB -> 10KB)

 

추천

 

3MB당 처리 속도 / 초

압축 효율

미리 생성

압축 복원

 

 

자릿수 빼기 횟수

 

데이터 연산

5

2%

 

모두 가능

http://codepad.org/EKeGrzx7

 

비교 차이값 제거

큰 해상도 - 작은 해상도 = 차이값 압축

 

데이터 변환

5

2%

 

모두 가능

밉맵 동영상 이미지 해상도 

MJPEG GIF APNG 품질 100%

 

Zone Decimal Pack 연산 UnPack 입출력

 + register volatile

 

데이터 연산

 

 

 

 

최상위 1비트  :  직접 접근

최상위 0비트  :  캐시 접근

 

위치 변환 (데이터를 위치 공간'으로 변환)

 

데이터 변환

1

 

 

 

가상의 거대한 공간이 있는 경우.

엄청난 효율

 

위치 변환 + 인덱스 번호 순서

 

데이터 변환

30

2%

 

모두 가능

데이터를 위치공간+순서번호로 변환

 

시간 간격 카운터

 

데이터 변환

 

 

 

 

전송시간과 갯수로 연산

 

 논리 데이터 연산

 

데이터 변환

 

 

 

 

데이터를. 회로 값으로 변환

 

중복 된 데이터   ( 같은 값 )

 

데이터 변환

1

0%

 

중복값 가능

 

 

rand() % 2 ~16 

 

데이터 변환

10

0%

1초

중복값 가능

 

 

fn_randlength()  

 

데이터 변환

60

0%

1초

중복값 가능

 

 

GetTickCount() % 2 ~ 16 

 

데이터 변환

10

0%

1초

중복값 가능

 

 

10만개. 윈도우. 빈 폴더 파일

(순서대로 이름)

 

데이터 변환

120

0%

120

모두 가능

데이터를. 파일 속성 시간으로 사용

 

 
 중복 없는 경우의 수 = 팩토리얼!

 

데이터 변환

 


 

 

위치자리를. 경우의 가짓 수로 변환

 

 세로 같은 값

 

데이터 변환

 


 

 

세로 같은 값 채우기

 

데이터 위치 그림자를. 거리 갯수로 변환

 

데이터 변환

 

 

 

 

겹쳐지는 영역의 크기와 갯수

고무줄 놀이

 

 

.reg 레지스트리 100 MB 파일 압축 -> 3 MB .7z




 

// 하드웨어 가속 GFlops 단위 성능.

GPGPU VPU > DirectX OpenGL OpenCL OpenCV > AVX > registry > cache > I/O FSB > RAM > SSE MMX > 네트워크 드라이브 클라우드 컴퓨터 RAID VDI RPC SSD USB SmartPhone DockerContainer > HDD

 

2019 인터넷 컴퓨터 기술 활용 정리

https://1drv.ms/w/s!ApTyVmRLm3sztGhgPLT-ilyj9zCu

 

 

 

 

 

//-----------------------------------------------------------------------------------

타워 만국기

산타 클로스'의 양말?? 촟불?

 

돌담다리 징검다리

카메라?

 

한 시대의 모습이 보인다. ㅇ_ㅇ;;

 


 

//

 test 폴더 파일 생성 날짜 시간.zip

 

10만개의 빈파일

7zip   158 KB

arc    10 KB        근데. 마지막에. 압축 속도가 많이 느려짐.   RAMDISK 에서 했는데도. 10만개. 2분.   어쨌든. 10KB 달성. ㅇ_ㅇ;;

 

생성시간

수정시간 - 변경된 날짜'만 적용되는거 같은데... ㅇ_ㅇ??

액세스시간

 

 

//

testDataPos.zip

 

 

// 윈도우7 32비트에서 확인

 

- 압축효율 0%가 가장 좋음.

- 기능적으로는 작동. 완전하지는 않은 베타 테스트 정도.

- 압축 효율이 생각보다 떨어지는데. 원인은 아직 모름 ㅇ_ㅇ;;

- 100개로 파일을 나눠서. 같은 번호순서로 해봤지만. 생각보다 압축 효율이 별로... 원본 크기 수준. 오히려. 더 크고 느려지는 느낌. ㅇ_ㅇ;;

 

// ㅇ_ㅇ;; 랜덤 순서는 채웠으니. 이제 정리 압축'만 하면 완성.

.ods

OLAP

 

//

이런식으로. 000 을 앞에 안붙여서 그런가?? 했는데... 이번엔 안됨.
    char buf[1000];
    sprintf(&buf[0], "%08d\n", key);

0008

0022

4024

 

 

// ㅇ_ㅇ;; 가속 기능을 추가하면. 더 빨라질 수 있겠지?

cuda 에도 map 함수가 있다. ㅇ_ㅇ;;

- MMX SSE AVX 가속

- GPGPU CUDA

- 외장 하드웨어

- 네트워크 공유

 

 

 



테스트 코드

 test 압축효율 0%.zip

 

핵심1. 큰 수 변환 -> 위치 이동 + 번호 (zip도 압축잘됨)

핵심2. 01234569 카운터순서 rand()%2 4 8 16 GetTickCount()%2 랜덤값 (lzma만 압축잘됨) 초고속압축해제 FreeArc ZPaq 1초(PeaZip 피아캐롯 게임)

핵심3. RLE 보완압축 방식 (RLE+) 압축효율 0% 발견.

 

랜덤 압축 속도 35MB TXT

PeaZip

http://www.peazip.org/download-installer-p-windows.html

01초 freearc 20KB

01초 zpaq 50KB

17초 7z 20KB

10초 quad / balz / bcm200KB

12초 pea 5MB

15초 xz 4MB

17초 gz 5MB

20초 bz2 1.7MB

 



 

2837129371947 큰 수를 -------0 위치번호로 변환 하니. 압축이 잘됩니다. 

같은 위치번호는. 압축 잘되는 랜덤값을 추가 제거해서. 

비트맵 색상으로 변환하면. 되겠네요... ㅇ_ㅇ;

 

 

먼지가 되어라니... ㅇ_ㅇ;;





 

 

천사의 그림물감 - 마크로스 린민메이

 
건담 0083 - 스타더스트 메모리 ★★★★★ Gundam 0083 - STARDUST MEMORY 前期ED 「MAGIC」
 
스마트 더스트... ㅇ_ㅇ;;


란마1/2 에 지구오케스트라 노래가 있다. ㅇ_ㅇ;;

 


 

6MB -> 1MB -> 1KB

 

 6,000 KB   -->    1,000 KB   -->    1 KB




#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <time.h>
#include <crtdbg.h>
#include <math.h>

#include <Mmsystem.h>
#pragma comment (lib, "Winmm.lib")



int main()
{
 FILE * fpr;
 fpr = fopen("test.bmp", "rb");
 FILE * fp;
 fp = fopen("test.txt", "wt");

 srand( time(NULL) );
 char buf[100] = {"22"};
int cnt=0;
while(1)
{
 char data;
 int e;
 int i;
 for(i=0; i<6; i++)
 {
  e = fread(&data, 1, 1, fpr);
  buf[i] = data;
 }
 if(e == 0) break;
 int len=strlen(buf);

 long l = atol(buf);
 fseek(fp, 0, SEEK_CUR);
 fseek(fp, 0, SEEK_SET);
 fseek(fp, l, SEEK_SET);
 fseek(fp, l, SEEK_CUR);

 fread(&data, 1, 1, fp);
 if(data >= '0')
 {
  fseek(fp, 0, SEEK_CUR);
  fseek(fp, 0, SEEK_SET);
  fseek(fp, l, SEEK_SET);
  fseek(fp, l, SEEK_CUR);
//  printf("%c", data);
  data = data + 1;
  fwrite(&data, 1, 1, fp);
 }
 else
 {
  fseek(fp, 0, SEEK_CUR);
  fseek(fp, 0, SEEK_SET);
  fseek(fp, l, SEEK_SET);
  fseek(fp, l, SEEK_CUR);
  data = '0';
  fwrite(&data, 1, 1, fp);
 }
}
 printf("\n");
 fclose(fpr);
 fclose(fp);
 system("\"C:\\Program Files\\7-Zip\\7z.exe\" a test.7z test.txt");

 return 0;
}

 

 

 

test 위치변환 랜덤 고속압축 예제.zip

 

 

 

 


 


 

http://soen.kr/lecture/library/gdiplus/1-2.htm

 

 

Some Graphical Examples using GDI+ Vol. I 월트디즈니 스타워즈 DirectX 예제도. 보입니다...
https://www.autoitscript.com/forum/topic/87200-some-graphical-examples-using-gdi-vol-i/

 

 

누가 소프트웨어의 심장을 만들었는가? 플로우 챠트?

https://www.google.co.kr/search?q=%5B%ED%95%9C%EB%B9%9B%EB%AF%B8%EB%94%94%EC%96%B4%5D+%EB%88%84%EA%B0%80+%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%EC%9D%98+%EC%8B%AC%EC%9E%A5%EC%9D%84+%EB%A7%8C%EB%93%A4%EC%97%88%EB%8A%94%EA%B0%80&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj5muiFgZrhAhXFa7wKHawSCcUQ_AUIDigB&biw=1073&bih=619&fbclid=IwAR3OzDu_kWg9Nt_m3mzZRc5iQVl4HjWBKcctx2Y3nOwemRKB8d4MLxKBfS8



 

particle physics 素粒子 物理學 要約 - 讀後期 - 네이버 블로그

https://m.blog.naver.com/PostView.nhn?blogId=wyw9427&logNo=140172275278&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F


 

시간의 저편'이라는 말이 떠오름. ㅇ_ㅇ;;

 

 

 

 

//

우연하게도. GetTickCount() 를 시각화하니. OS 운영체제가 보입니다. ㅇ_ㅇ;;

 

한번에 1000번씩 PolyLine() 선을 긋는 기준으로 시각화


 static POINT       apt [NUM] ;
  for (i = 0 ; i < NUM ; i++)
  {
   apt[i].x = rand()%GetTickCount()/100+500;
   apt[i].y = rand()%GetTickCount()/100;
   apt[i].x = rand()%10*100+100;
   apt[i].y = rand()%10*100+100;
   apt[i].x = pow(1-rand()%3,3)*100+100;
   apt[i].y = pow(1-rand()%3,3)*100+100;
  }
  Polyline (hdc, apt, NUM) ;


- GetTickCount()

- rand()%2 3 4 5 6 7 8 9 10 ~ 16...

 

dw0 = GetTickCount();
   Sleep(3);
   dw11 = GetTickCount();
   Sleep(3);
   dw1 = GetTickCount()-dw0;
   Sleep(3);
   dw2 = GetTickCount()-dw11;
   Sleep(3);
   apt[i].x = (dw1*10)+500;
   apt[i].y = (dw2*10)+100;
   Rectangle(hdc, 0, 0, 200, 20);
   sprintf(&c[0], "%d %d", dw1, dw2);
   TextOut(hdc, 0, i*20, c, strlen(c));

 

 

 

[Win32/MFC] GetTickCount와 timeGetTime의 차이점

http://angoo.cafe24.com/xe/Tip/69518

 

 

 


 

 


 

 

 

 

 
굉장한 활력의 구슬 ㅇ_ㅇ!         일본에 3D렌더링 주전자 사이트가 있죠. https://t-pot.com/
 
 
반짝이는 구름을 헤치고 날아라
그 속에 활짝 펴지는 환상의 파노라마
얼굴을 채이고 지구가 화가 나서 화산을 폭발해 버렸네
녹아 내린 차디 찬 얼음 속 에 공룡이 있다면 저ㅈ 은 김을 담그고 싶어라
신나 신나게 무슨일이 일어나도 기분은 신나서 라랄라
신나 신나게 가 슴이 두근 두근 거릴 만큼 굉장한 활력의 구슬
신나 신나게 어린이들의 착한 마음은 꿈을 꾸기에 좋지
신나 신나게 웃음띤 울트라 Z로 오늘도 야야야야야 출발
 
 
 
 
 

About size_t and ptrdiff_t

http://www.viva64.com/en/a/0050/

 

A 64-bit horse that can count

http://www.viva64.com/en/a/0043/

 

A Collection of Examples of 64-bit Errors in Real Programs

http://medium.com/@CPP_Coder/a-collection-of-examples-of-64-bit-errors-in-real-programs-baba1a4a73b4

 

 

 

 

 

 

 

 

 

 

//---------------------------------------------------------------------

1000배 이상. 파일 압축 - LZMA (7zip WinZipX XZ) - 여기 주소의 맨 아래 예제 소스 보세요.
https://1drv.ms/w/s!ApTyVmRLm3szqFPwccacvcTAk7tr

 

테스트 방법 -  현재는 압축 테스트만 가능. 복구 기능은 안넣음. 대충 만든거라... ㅇ_ㅇ;;

main.exe 폴더에 test.bmp 파일을 넣고. main.exe를 실행. test.txt 파일 생성 후 7zip으로 압축 완료.

 

벌써. 6개월이 지났네요. ㅇ_ㅇ;; 어서 적용해야 할텐데...

각 포털 사이트. 압축 파일 회사. P2P 회사. 등에도 메일을 보냈지만. 소식이 없네요.

코드 프로젝트에 올렸더니. 계정이 삭제 되었네요. ㅠ_ㅠ;;

 

 

//---------------------------------------------------------------------

[원리]

- 데이터를

- 012 문자로 랜덤하게 텍스트 파일로 생성 (과학자 수학자가 만들면 더 효율)

현재는 갯수로 숫자를 복구해서 용량이 큼

- LZMA 7zip 으로 압축

(그냥 zip 도 조금 효과가 있음)

 

 

[대충 하는경우. 핵심 요점.]

- 1바이트는 255로 변환 됨.

- 255칸 위치에 0을 놓아 변환이 가능.

- 공간이 넓고. 갯수가 적을 수 록. 압축이 빠르게 잘됨.

- 랜덤값이 압축 효율이 좋음.

- 압축 효율이 0% 인 경우. 압축 효율이 좋음.

 

 

//---------------------------------------------------------------------

1MB 메모리 - 이미지 렌더링 성공

4KB 데이터 압축 성공

하드웨어 가속 성공

논리회로 데이터 처리 연구 + 양자 컴퓨터 + 광학 컴퓨터

 

 

윈도우 NTFS 압축 방식을. LZMA 로 변경하면.

4KB 파일 시스템이 가능하게 된다. ㅇ_ㅇ;;

 

윈도우를 1MB 로 사용할 수 도 있게 된다.

 

슈퍼 윈도우

Super Windows ㅇ_ㅇ!!

 

 

//---------------------------------------------------------------------

4KB 압축데이터 컴퓨터 통신시대가 옵니다. ㅇ_ㅇ;;

 

 

1만배 이상. 파일 압축. ㅇ_ㅇ;;

 

//---------------------------------------------------------------------

잘 만 하면. 1GB 파일도. 4KB 로 압축이 됩니다. ㅇ_ㅇ;; 직접 해보니 비슷하게는 됨.

원본파일 --- 012 텍스트 데이터 --- LZMA 알고리즘 (7Zip WinZipX xz) 1000배 이상 압축 됨.

 

 

 

 

 

 

 

 

 

 

 

 

//---------------------------------------------------------------------

1 MB 플로피 디스켓에 마영전'이나 윈도우'를 저장해서 사용할 수 있고.

인터넷도. 4KB 중계 서비스를 하면. 1초안에 다운이 가능하게 됩니다.

DMB 등에도 적용이 가능하게 되고.

영화 게임 애니 드라마 등도 4KB 로 압축이 가능합니다.

1KM 거리에 장거리Wi-Fi 도 나왔고... 공공 무선 인터넷도 되고...

컴퓨터에서도 4KB 데이터를 압축 해제하여 처리가 가능합니다.

GPGPU 를 연산 처리에사용하면. 더 빠른 압축이 가능

 

 

잘하시는 분들은 압축 없이도 가능하게 만들겠죠. ㅇ_ㅇ;;

 

4000 BYTE 정도면. 종이에 출력해서. 저장 할 수 도 있을겁니다.

 

 

 

//---------------------------------------------------------------------

2018년 기술 총정리

https://1drv.ms/w/s!ApTyVmRLm3szqGKNzKZ-ryqjbhVP

 

 

//---------------------------------------------------------------------

대충 예제를 올려봅니다. ㅇ_ㅇ;;

복원은 번호를 비트로 변경하면 될겁니다.

변환파일 용량은 너무 크지만. 스트림으로 직접 압축하면. 없어질 수 있습니다.

GPGPU > AVX > SSE MMX 를 사용하면 더 가속이 가능합니다.

수학자 과학자 개발자가 더 나은 성능을 보여줄것입니다. ㅇ_ㅇ;;

압축된 200KB 를 또. 압축하니. 용량이 30KB 까지 또 줄어듭니다. 여러번 압축 해제 됨.

압축효율 0% 6MB -> 48MB -> 70KB

압축효율 0% 96MB -> 755MB -> 179KB

압축효율 0% 1.7GB -> 8478MB -> 1.3MB

 

일단. 500MB 씩 100KB 는 가능할것 같네요. ㅇ_ㅇ;;

 

 

//---------------------------------------------------------------------

 

압축이 잘되는. 변환데이터의 핵심코드

data = rand() % 2;

fwrite(&data, 1, 1, fp);

 

//---------------------------------------------------------------------

비트값이 있는 경우에 rand() 와
비트값이 없는 경우에 rand() 를 동시에 저장하면. 압축 효율이 낮아집니다.
 
근데. 비트값이 있는 경우만 저장하고. 없는 경우만. 따로 따로 저장하면. 압축 효율이 높습니다.

 

//비트값이 있는 경우
if( (buf >> 0) & 0x1 == 1 )
{
/*
    data = rand() % 4+2;
    if(data == 2)
    {
        data = '2';
    }
    else
    {
        data = '3';
    }
    fwrite(&data, 1, 1, fp);
*/
}
 
//비트값이 없는 경우
else
{
    data = rand() % 2;
    if(data == 0)
    {
        data = '0';
    }
    else
    {
        data = '1';
    }
    fwrite(&data, 1, 1, fp);
}

 

//---------------------------------------------------------------------

 

//첫번째 예제 - 압축 효율이 좋은 랜덤값

 

//두번째 예제 - 바이트의 비트 순서를. 압축효율이 좋은 랜덤값으로 변환

 

//세번째 예제 - 바이트의 비트 순서를. 압축효율이 좋은 랜덤값으로 변환 후.

rand[i] 랜덤값에. rand[i]-48 (숫자) 랜덤값을 +로 더하여 로 압축 / -로 빼서 복원.

 

ㅇ_ㅇ;; 성공한거 같네요. (근데. 복원이 안되서 실패.)

6MB -> 48MB -> 35KB... ㅇ_ㅇ;; 1비트 - 압축효율 0%

 

2019년 01월 10일 오후 11시 16분.

 

 

 
/*
42 0100 0010
   0123 4567
비트순서 문자값 order[0] 4
비트순서의 위치번호 number 4
실제 비트값 (buf >> order[0]-48) & 0x1 [0]     첫번째 비트
4d 0100 1101
   0123 4567
비트순서 문자값 order[0] 0
비트순서의 위치번호 number 0
실제 비트값 (buf >> order[0]-48) & 0x1 [1]     첫번째 비트
36 0011 0110
   0123 4567
비트순서 문자값 order[0] 5
비트순서의 위치번호 number 5
실제 비트값 (buf >> order[0]-48) & 0x1 [1]     첫번째 비트
 
  //
    48411   00042   5:567 
*/
 
 
//성공 0% 6MB -> 48MB -> 35KB    //1비트
fwrite(&order[0], 1, 1, fp);
 
//앞 +된 랜덤 순서 값. 증가로. 기존값과 차이가 나면. +1. 원본이면. 0
char order2 = order[0]-48;
order[0] += order[0]-48;
 
//뒤 0   랜덤 순서값.
fwrite(&order[0], 1, 1, fp);
 
//복구값.
order[0] -= order2;
fwrite(&order[0], 1, 1, fp);
 
//
fwrite(&order[1], 1, 1, fp);
fwrite(&order[order[1]-48], 1, 1, fp);
 
 
//---------------------------------------------------------------------
 

다음날 다시 확인하니. 비트 비교에서. 좀 부족하네요. ㅠ_ㅠ;;

비트로 비교하면 안되고. 랜덤값에 비트를 넣는 방식이어야 할겁니다. ㅇ_ㅇ;;

현재는 3% 정도 압축효율이 됩니다. ㅇ_ㅇ;;

 

 
for(i=0; i<8; i++) //테스트 코드
{
fwrite(&order[i], 1, 1, fp); //원본.
 
//같은 번호 순서
if(order[i]-48 == i )
{
char order2 = order[0]-48;
 
if( (buf >> i) & 0x1 )
{
order[i] = order[i] + order[i]-48;
fwrite(&order[i], 1, 1, fp); //추가된 비트값
}
else
{
order[i] = order[i] - order2;
fwrite(&order[i], 1, 1, fp); //제거된 비트값
}
 
}
}

 

//---------------------------------------------------------------------

 

다시 생각해보니.

0~7 범위는 랜덤 순서값.

8~F 범위를. 비트값이 있는 경우. 1로 사용하면 될것도 보이네요. ㅇ_ㅇ;;

 
0123 4567   0비트
89AB CDEF  1비트
 
1234 5678 8개 = 16개가 필요한가?
0101 0101
 
1에 해당하는 랜덤값을 하나 더 만들어. 압축효율을 높인다.
ㅇ_ㅇ;; 되겠군...

 

 1        6    번째 순서가 1값

0123 4567

89AB CDEF

0100 0010 인 경우라면.

5B47 30F2 등으로 표현이 가능해보입니다. ㅇ_ㅇ;;

 

아니. 그냥. 넣으면 안되겠네요. 랜덤값의 순서로 표현해야 압축이 잘됩니다.

15032476   0~7 비트의 순서를 섞은 랜덤값 - 압축효율 0%

98DFACEB  8~F 비트의 순서를 섞은 랜덤값 - 압축효율 0%

15032476     섞여진. 비트의 순서위치 번호
1          6    번째 순서가 1 비트값 (비트의 위치 확인용. 반드시 같아야 함)
9          E    이것을 1로 인식하려면. 압축효율이 좋은. 다른 랜덤값을 사용. (8~F 면. 아무거나 됨)
9503247E     합치면 이값.인데... ㅇ_ㅇ;; 될런지는 안해봐서 모름...

15032476 비트위치 확인  9503247E  비트값 1 0 확인

아직은 불확실. ㅇ_ㅇ;; 근데. 구현해보니. 안되네요. ㅇ_ㅇ;; 된장... 하다보면 되겠죠. ;;

 

//----------------------------------------------------------------

중복없는. 랜덤키를 여러개 만들어서. 번호처럼 사용
 
0번   1번  2번   3번  4번   5번   6번  7번
4756 6745 5467 6475 5764 4567 6754 4576
 
그럼.
비트로 해도 되고.
숫자로 해도 되네요. ㅇ_ㅇ;; 더 큰 값도 가능하겠네요.
그렇지만. 순서가 달라도 될런지는 모르겠네요.
해보니. 압축효율 1% 입니다. 그래도 크죠. ㅇ_ㅇ;; 100MB 에 1MB 니...
 
1번   6번
6745 6754    1과 6 순서에 비트
 
 
//
0번   1번   2번   3번
0001 0010 0100 1000 도 압축효율 1% 입니다.
 
 
 
// 1비트 반복도. 압축효율 1%
if((data >> 0) & 0x1 > 0)
{
v = ' '; fwrite(&v, 1, 1, fp);
v = '4'; fwrite(&v, 1, 1, fp);
v = '7'; fwrite(&v, 1, 1, fp);
v = '5'; fwrite(&v, 1, 1, fp);
v = '6'; fwrite(&v, 1, 1, fp);
}
else
{
v = ' '; fwrite(&v, 1, 1, fp);
v = '6'; fwrite(&v, 1, 1, fp);
v = '7'; fwrite(&v, 1, 1, fp);
v = '4'; fwrite(&v, 1, 1, fp);
v = '5'; fwrite(&v, 1, 1, fp);
}

 

//남은 방법은 비트순서의 랜덤키를 255개정도 생성해서. 압축하는 방법입니다.

좀 더. 압축 확률이 높아지겠죠. ㅇ_ㅇ;;

하여간. 압축효율 0% 나와야 압축이 잘 됩니다.

원본 데이터 -- 압축효율 0% 비트순서랜덤 (가상키 가상키 가상키 가상키) -- 7zip

하지만. 해보니 안되네요. ㅇ_ㅇ;; 무작정 랜덤키를 많이해서. 갯수로 적어도 안됩니다.

압축효율 0% 랜덤키를 0~255 번호와 매칭시켜서 해보았지만. 압축효율이 4% ~ 10%

압축효율 4% - 변환 데이터 파일 크기가 작을 경우. (1MB) 작게 만들어서 압축해야 잘됩니다.

압축효율 10% - 변환 데이터 파일 크기가 큰 경우. (6MB)

 

압축효율 0% 가 나오려면. 첨부파일의 예제 3 소스'에서 처럼.

rand() 값의 비트 순서를 동적으로 맞춰서 생성해야 합니다.

(기능은 구현되어 있으니. 함수처럼 사용가능)

제 능력으로는 여기까지 인가봅니다. ㅇ_ㅇ;; 동적 생성과 반복갯수를 하다보면 될런지도...

 

//----------------------------------------------------------------

몇가지 더 해봤는데. 가능성이 또 보이네요.

- 가로 세로 랜덤값 ??

- 랜덤 비트순서의 길이'로 값을 표시 ㅇ_ㅇ;;

if(count1 >0){} 으로 하니... 랜덤길이가 변화해도 압축 효율 0%... (첨부파일 4번 예제 추가.)

마치. F-14 톰캣 가변익 전투기 날개...;; JSP 톰캣 서블릿 서버가 있죠. ㅇ_ㅇ?? 일단. 휴식...

 

이것이 성공 ㅇ_ㅇ?? (첨부파일 예제4 소스)

원본 데이터 -- 압축효율 0% 비트순서랜덤 (가상키 가상키 가상키 가상키) -- 랜덤키 갯수와 비트번호 매칭 (아무 숫자나 가능) -- 7zip

01234567  순서
01000010  비트  (buf >> i) & 0x1
  1      6   위치  
 
순서가 맞춰진 랜덤키 - 압축효율 0%    int rcount = fn_rand_length(); //랜덤키의 갯수
021         3개 == 3번
2301645   7개 == 7번
10423      5개 == 5번
 
여러개 중에서. 1번과 6번만 얻으려면?
1개의 경우 랜덤길이 1개만 얻기
6개인 경우 랜덤길이 6개만 얻기
 
값은 다를 수 있으나. 갯수는 일정 + 압축효율 0%   if( rcount == 비트 번호 )
5           = 1개 = 1번 비트
701325   = 6개 = 6번 비트
 
ㅇ_ㅇ;; 이렇게 완료.
남은건 테스트...
 
이것은 비트' 단위 일경우 이고. 0~7값
바이트 값 (숫자)으로도 처리가 가능. 0~9값
 
//
요약 설명
데이터에서. 비트 위치가 1인 0~7 위치값이 나올 경우.
압축효율 0%에 랜덤 비트 순서로 된. 랜덤키를 0~7 갯수로. 계속 만들다가.
0~7인 값과 같은 경우. 저장.
 
5 701325
1개 6개
1비트 6비트
01000010     비트
01234567     순서

이렇게 복원 가능. ㅇ_ㅇ;;

 

char rand_data[8];

int cnt = 0;

char idx[8];

 

fread(&buf);

for(i=0; i<8; i++)

{

    if( (buf >> i) & 0x1 )   //1비트 인경우.

    {

        //1개 6개
        //1비트 6비트
        //01000010     비트
        //01234567     순서

        idx[i] = i;   //비트 위치 저장.

    }

    else

    {

        idx[i] = -1;

    }

}

 

for(i=0; i<8; i++)

{
    if( idx[i] == -1 ) continue;
 
 
    //1인 비트가 있는 경우. 비트순서에 맞는 랜덤 가상키 생성. rand_data[]

    while(1)

    {

        int rcount = fn_rand_length();   //rand_data[] 는 전역변수로 설정. ㅇ_ㅇ;; 대충대충

        rcount = strlen( rand_data );    //멀티바이트'라면. 1바이트 단위니. 이렇게 사용해도 된다.

        if( rcount == idx[i] )              //가상키의 문자갯수가. 1인 비트위치와 같으면. 저장

        {

            //5          rand_data[]  ==  1개 == idx[i] == rcount

            //701325  rand_data[]  ==  6개 == idx[i] == rcount

            fwrite( &rand_data );

            break;

        }

    }

}

fclose();

대충 이런식으로 구현. ㅇ_ㅇ;;

 

해보니. 6MB -> 6MB -> 2KB 가 되네요. ㅇ_ㅇ?? 성공한건가...??? (첨부파일 예제 5번 소스) y2k?

변환 25초 / 압축 2초 / 해제 0.5초

기쁨도 잠시. 다시 해보니. ㅇ_ㅇ;; 아직이네요... 어째. 오류 코드가 더 잘되네요.

 

첨부파일 6번으로 구현은 되었으나. 압축효율 10% 6MB -> 120MB -> 12MB

 
//이렇게 하면. 압축효율 3% 6MB -> (조금 변환) 37MB -> 1MB
//압축 잘되는거에. ' ' 칸만 띄우기 추가... ㅡ_ㅡ;;
 
int rcount = fn_rand_length(); //rand_data[] 는 전역변수로 설정. ㅇ_ㅇ;; 대충대충
 
char data = ' ';
fwrite(&data, 1, 1, fp);
 
//5       rand_data[]  ==  1개 == idx[i] == rcount
//701325  rand_data[]  ==  6개 == idx[i] == rcount
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
 
if(idx[i] == 0 && i == 0)
{
break;
}
 
if( rcount == idx[i]) //가상키의 문자갯수가. 1인 비트위치와 같으면. 저장
{
//5       rand_data[]  ==  1개 == idx[i] == rcount
//701325  rand_data[]  ==  6개 == idx[i] == rcount
int m;
for(m=0; m
{
char data = ' ';
fwrite(&data, 1, 1, fp);
}
break;
}
else
{
}
}
 
 
 
//---------------------------------------------------------------
압축효율 0% 데이터에서.
파일 데이터 포인터 위치를 앞으로 이동하여 제거 할 경우.
압축효율 이 좋아지기도 하는듯 보였으나.
압축효율 4% 6MB -> 54MB -> 2.6MB
fseek() 는 엄청 느리다. ㅇ_ㅇ;;
 
 
fflush(fp);
 
int r = rand()%4;
fseek(fp, -r, SEEK_CUR);
fflush(fp);
 
int i;
for(i=0; i
{
data = ' ';
fwrite(&data, 1, 1, fp);
}
fflush(fp);
 
data = ' ';
fwrite(&data, 1, 1, fp);
 
 
//---------------------------------------------------------------
이제 남은 방법은 안보이네요. ㅇ_ㅇ;;
 
- 압축이 잘되는 데이터를 빼는 방법'이 남은거 같습니다.
 
0 빼서 다른 파일로 분리 후. 압축하기
1 빼서 다른 파일로 분리 후. 압축하기
2 빼서 다른 파일로 분리 후. 압축하기
3 빼서 다른 파일로 분리 후. 압축하기
...
255배
255개 빼서 압축. 255 * 2KB = 500KB...??
 
혹은.
0 비트만 빼서. 다른 파일로 분리 후. 압축하기
1 비트만 빼서. 다른 파일로 분리 후. 압축하기
 
2배... 분리 압축! 재활용... 드래곤볼 합체 퓨전! ㅇ_ㅇ!! ㅇ_ㅇ??
해보니. 압축효율 3% 네요. 큽니다.
 
 
//
아니. 제가 다른 폴더 파일을 보고 있었네요. ㅇ_ㅇ;; 된장.
0과 1 파일분리 -> 압축효율 30% 였다가 0%로 성공. 이번에도 착각한건가? ㅇ_ㅇ??
ㅠ_ㅠ;; 알고보니. 반복문 착각...
 
 
 
 
//-----------------------------------------------
int x;
for(x=0; x<8; x++)
{
if( (buf >> x) & 0x1 > 0 )
{
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
}
else
{
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp2);
}
}
}
 
char data = ' ';
fwrite(&data, 1, 1, fp);
data = ' ';
fwrite(&data, 1, 1, fp2);
 
 
 
 
 
 
 
 
//--------------------------------------
' ' 띄움표로 1
 
 
//
int x;
char data;
for(x=0; x<8; x++)
{
if( (buf >> x) & 0x1 > 0 )
{
int r = rand()%2;
if(r == 0)
{
//띄움표로 1
data = ' ';
fwrite(&data, 1, 1, fp);
data = '1';
fwrite(&data, 1, 1, fp);
}
else
{
data = '0';
fwrite(&data, 1, 1, fp);
}
}
else
{
int r = rand()%2;
if(r == 0)
{
//띄움표로 1
data = ' ';
fwrite(&data, 1, 1, fp2);
data = '1';
fwrite(&data, 1, 1, fp2);
}
else
{
data = '0';
fwrite(&data, 1, 1, fp2);
}
}
}
 
data = ' ';
fwrite(&data, 1, 1, fp);
data = ' ';
fwrite(&data, 1, 1, fp2);
 
 
 
//------------------------------------------------------------
0~255 값을 ' ' 로 띄우고. 마지막을 0으로 변환
압축효율 0% 6MB -> 194MB -> 1.7MB
 
효율은 좋지만. 변환 파일용량이 너무 크고. 압축용량도 적다.
빈 공간을 더. 잘 응용하면. 될지도. ㅇ_ㅇ;;
 
//
int i;
for(i=0; i
{
data = ' ';
fwrite(&data, 1, 1, fp);
}
data = '0';
fwrite(&data, 1, 1, fp);

 

 

//-------------------------------------------------------------------
 
/*
갯수 모양으로 표현 - 압축효율 6%  6MB -> 99MB -> 7MB
00
00000
00000
*/
 
//
int i;
// for(i=0; i
{
char tmp[5];
memset(&tmp[0], 0x00, 5);
sprintf(&tmp[0], "%d", buf);
// printf("//%s\n", tmp);
 
int len = strlen(tmp);
 
 
// printf("1");
if(len == 1)
{
// printf("\n");
// printf("\n");
data = '\n';
fwrite(&data, 1, 1, fp);
data = '\n';
fwrite(&data, 1, 1, fp);
}
if(len == 2)
{
// printf("\n");
data = '\n';
fwrite(&data, 1, 1, fp);
}
 
 
int i;
for(i=0; i
{
data = '0';
fwrite(&data, 1, 1, fp);
// printf("0");
}
data = '\n';
fwrite(&data, 1, 1, fp);
// printf("\n");
 
for(i=0; i
{
data = '0';
fwrite(&data, 1, 1, fp);
// printf("0");
}
data = '\n';
fwrite(&data, 1, 1, fp);
// printf("\n");
 
for(i=0; i
{
data = '0';
fwrite(&data, 1, 1, fp);
// printf("0");
}
data = '\n';
fwrite(&data, 1, 1, fp);
// printf("\n");
 
 
}
 

//--------------------------------------

//첫비트의 순서만 같으면. 랜덤 저장

//압축효율 10% ~ 5% 정도. 6MB -> (조금만 압축) 10MB -> 600KB

if( rand_data[0]-48 == idx[i])
{
}
 

//-----------------------------------------------------

첨부파일 7번 예제소스.

 

//랜덤비트순서 -> idx[i] 1비트 -> (랜덤비트순서'가). 맨 앞위치 rand_data[0]인 경우.
//잘되는것 처럼 보이나. 반정도 압축된다.
//이렇게 변환하면. 그냥. zip 으로 압축해도 비슷합니다. ㅇ_ㅇ;;
 
//30배 x 100KB = 3000KB = 3MB
//15배 x 100KB = 1500KB = 1.5MB
6MB -> 1MB 단위로 압축시 -> 88KB 빠름 / 용량적음
6MB -> 2MB 단위로 압축시 -> 97KB 빠름 / 용량적음
6MB -> 24MB -> 4MB 변환시간이 아주 오래 걸림
6MB -> 30MB -> 4MB 변환시간이 아주 오래 걸림
 
- 분리 압축 실패
- 랜덤값에서. 분리된 값 빼기. 압축 실패
 
 
 
 
//-----------------------------------------------------
 
압축효율 0% 가 되는 경우.
- 각각 같은것
- 각각 순서대로
- 영역 별로. 각각 압축되야 함
 
- 여기서. if()의 의미는 조건 분기가 아닙니다. 그룹 영역 지정입니다.
 
' ' 랜덤값1 영역
' '' ' 랜덤값2 영역
' '' '' ' 랜덤값3 영역
 
마치. 요즘 블록 체인 ㅇ_ㅇ?? 같네요.
DB 디비 쿼리 결과 처럼도 보이네요. ㅇ_ㅇ;;
 
 
 
[ 첨부파일 예제 8번 소스 ]
 
//-----------------------------------------------
//랜덤A 영역
//-----------------------------------------------
//0%
char data = ' ';
fwrite(&data, 1, 1, fp);
fwrite(&data, 1, 1, fp);
fwrite(&data, 1, 1, fp);
 
 
//5       rand_data[]  ==  1개 == idx[i] == rcount
//701325  rand_data[]  ==  6개 == idx[i] == rcount
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
 
}
// break;
 
 
 
//-----------------------------------------------
//랜덤B 영역
//-----------------------------------------------
//다른 랜덤키는 다른 파일에 저장
if( rand_data[0]-48 == idx[i]) //가상키의 문자갯수가. 1인 비트위치와 같으면. 저장
{
char data = ' ';
fwrite(&data, 1, 1, fp);
fwrite(&data, 1, 1, fp);
 
//5       rand_data[]  ==  1개 == idx[i] == rcount
//701325  rand_data[]  ==  6개 == idx[i] == rcount
int m;
// for(m=0; m
// for(m=0; m
{
char data = rand_data[0];
fwrite(&data, 1, 1, fp);
 
}
// break;
}
else
{
char data = ' ';
fwrite(&data, 1, 1, fp);
fwrite(&data, 1, 1, fp);
 
//5       rand_data[]  ==  1개 == idx[i] == rcount
//701325  rand_data[]  ==  6개 == idx[i] == rcount
int m;
// for(m=0; m
// for(m=0; m
{
char data = rand_data[0];
fwrite(&data, 1, 1, fp);
 
}
// break;
}
 
 
//-----------------------------------------------
//랜덤C 영역
//-----------------------------------------------
if( rand_data[0]-48 == 1)
{
/*
char data = ' ';
fwrite(&data, 1, 1, fp);
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
*/
break;
}
 
if( rand_data[0]-48 == 2)
{
char data = ' ';
fwrite(&data, 1, 1, fp);
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
break;
}
 
 
if( rand_data[0]-48 == 3)
{
char data = ' ';
fwrite(&data, 1, 1, fp);
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
break;
}
 
 
if( rand_data[0]-48 == 4)
{
char data = ' ';
fwrite(&data, 1, 1, fp);
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
break;
}
 
if( rand_data[0]-48 == 5)
{
char data = ' ';
fwrite(&data, 1, 1, fp);
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
break;
}
 
if( rand_data[0]-48 == 6)
{
char data = ' ';
fwrite(&data, 1, 1, fp);
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
break;
}
 
if( rand_data[0]-48 == 7)
{
char data = ' ';
fwrite(&data, 1, 1, fp);
int m;
for(m=0; m
{
char data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
break;
}
 
//-----------------------------------------------------------
 
다른 할만한것
- 비트순서의 첫번호. 뒤로. 가변 길이 저장하기 : 압축효율 5%? 어중간??
- 각 랜덤비트를 순서대로 각각 파일로 저장 후에. 조합하기 : 압축효율 5%? 실패
 
 
 
 
//-----------------------------------------------------------
 
다른 할만한것.
- 바이트 데이터와 랜덤값 합치기?  ㅇ_ㅇ?? A | rand()%2
 
- 데이터를 파일로 각각 분리 후. 띄우기로 데이터 위치를 표시.
(이전것과 차이) 1. 공백 띄우기 2. 각각 압축
6MB -> 79MB -> 19KB ㅇ_ㅇ;; 파일 한개당...
 
될것 같지만. 역시 간격 띄우기가 문제.
빈공간을 만들어서. 다른 문자로 치환은 가능.
파일 앞으로 이동. 빈공간에서 데이터를 작성한다면. ㅇ_ㅇ;; 가능성 상승.
fseek(fp1, -1L, SEEK_CUR);
 
값이 있으면.  11111---- (하나의 1이 5개 ----가 4개) 문자
값이 없으면. 11111' ' 띄우기 문자인경우.
11111---- 값이 있었던곳에서. 다음에 없는 값이 발생하면.
-1위치로 가서. 11111----을 없앨 수 있다. 1111---' ' 가 된다.
이것으로 없는값 0이 발생한것을 알 수 있다.
fwrite()가 증가만 하는걸 깜빡했다... ㅇ_ㅇ;; 걍 버퍼 처리할껄...
 
하고보니. 완료된 데이터를. 노트패드에서 치환하니. 압축효율 0% 되기도 하네요. ㅇ_ㅇ;;
1값 0값 랜덤출력 -> 노트패드에서. 일부 문자 치환 -> 압축 ㅇ_ㅇ!!
 
 1     1  1   1
1  1    1
 
x를 ' '로 채워서 저장하면. 압축효율 0%
' '를 x로 채워서 저장하면. 압축효율 0%
 
 
01234567
 1    6
 
- 데이터 파일분리 8개
- 값이 있으면. 랜덤값 데이터를 번호별로 생성
- 값이 없으면. ' ' 띄우기 데이터 생성
 
         0~7 파일
1바이트    0A0000A0
1바이트    0000A000
1바이트    00000A00
 
 
//-----------------------------------------------------------
 
test - 변환 압축 예제소스8-8 (랜덤키 리스트 AB 중 1은 A이고. 0은 AB를 사용) 0% 성공
 
랜덤키 리스트 2개를 만들고.
1일때는 리스트 A
0일때는 리스트 A / 리스트 B 를 해봤더니. 압축효율 0% 성공했네요. ㅇ_ㅇ;;
 
6MB -> 280MB -> 1MB 테스트 용량은 좀 크네요.
일단. 좀 더 확인해봐야 할거 같습니다. ㅇ_ㅇ;;
 
//
핵심내용은 램덤키 여러개 사용이 가능하다 입니다. ㅇ_ㅇ;; 랜덤키는 같은 횟수로 호출되야 합니다.
변환시간에 5분이나 소비 ㅇ_ㅇ;; 변환속도는 GPGPU SSE MMX를 적용하면. 빨라질겁니다. fwrite() 1바이트도 버퍼로 바꾸고... ㅡ_ㅡ;;
변환용량이 1MB 로 적으면. 변환속도가 빨라지고. 압축속도가 좋아집니다.
for(m=0; m<1 2 4 8; m++)
1개 랜덤 : 6MB -> 25MB -> 500KB 압축효율 2%
2개 랜덤 : 6MB -> 50MB -> 700KB 압축효율 1%
4개 랜덤 : 6MB -> 100MB -> 800KB 압축효율 0%
8개 랜덤 : 6MB -> 280MB -> 1MB 압축효율 0%
 
결국. 용량대비라서서. 0% 절대적인 의미는 아니네요. ㅠ_ㅠ;; 이전 내용이 더 효율적일지도.
어쨌든. 잘 활용하면. 수학 과학 연산만큼 성능이 나올 수 있을지도. ㅇ_ㅇ;;
 
1바이트를 1바이트값 만큼 SHIFT 하는 방식도 있는데. ㅇ_ㅇ;; 나중에 구현해볼 생각입니다.
100바이트를 100바이트값 만큼 이동하면. 변환 파일과 비슷하거나. 더 효율적일겁니다.
 
랜덤값을 미리 만들어 두고.
영상처리 이미지 프로세싱에서. 룩업 테이블 Lookup Table 처럼. 사용해도 나을 수 있습니다. ㅇ_ㅇ;;
 
드림캐스트에는 CRT 모니터로 볼 수 있는. VGABOX 고해상도 변환기가 있습니다. ㅇ_ㅇ;;
 
OpenGL 에서는 Vertex 정점에 RGB 값을 입력하면. 자동으로. 선형(색상)보간이 됩니다.
3 - 8 값이 있다면. 3 4 5 6 7 8 값이 생성되는거죠. ㅇ_ㅇ;;
 
빈공간이 많은 경우. 제거 또는 변환 하면. 용량을 확보 할 수 있기도 합니다.
 
파일에 저장된. 랜덤 데이터 순서에. 각 첫번째 위치.가 압축효율 0%
 
 
 
파일변환에 장점은. 압축이 여러번 된다는겁니다.
변환하면 보통 0~10%가 되는데. 여러번 압축하면. 계속 누적이 됩니다. ㅇ_ㅇ;;
 
가장 빠른 방식으로 변환한 후. 여러번 압축하는 방법도 좋을겁니다.
1000 -> 100 -> 10 -> 1 ㅇ_ㅇ;;
 

 

//---------------------------------------------------------

코딩 주의사항.

if( (buf >> 7) & 0x1 == 0 ) 과

if( (buf >> 7) & 0x1 == 1 ) 은 다릅니다.

1로 비교 해야 합니다.

 

//Unhandled exception in test.exe: 0xC0000005: Access Violation. 발생원인

i=0; 초기화를 하셔야 합니다.

 

//--------------------------------------------------------

test - 변환 압축 예제소스9 - 4KB 압축 - 데이터 줄삭제 / 위치변경가능

이번 랜덤 데이터는

- 줄삭제 가능

- 위치 변경도 가능합니다. ㅇ_ㅇ;; 이제 이거로 하면 되겠네요...

 

01234567 비트순서에 랜덤값을 0~7까지 얻고.

비트순서의 첫번째가 0~7까지인 랜덤값을 사용합니다.

줄마다 각각이어서. 줄바꿈 / 삭제 / 추가 / 편집 '해도 됩니다. ㅇ_ㅇ;;

제 착각일 수 도 있으니... ㅠ_ㅠ;; 좀 더 확인 필요.

 17630524 AGH  7 
 16754032 H  
 16730452 ADBGFCH  0 4 6 
 15320467 BAEFGCH  5 5 4 
 04136752 BCH  4 
 16240537 DCAGFEH  3 5 5 
 14206537 FADGEH  0 4 3
 
 
//---------------------------------------------
 
0% 압축 원리를 알아냈습니다. ㅇ_ㅇ;;
 
10MB -> 8 KB 이하가 되네요...
 
 
[원리]
1. 랜덤키를 순서대로 생성
01234567 번호에 랜덤키 생성
랜덤키가 생성된 순서대로. 01234567 번호가 모두 될때까지 맞춥니다.
10253476 생성된 순서대로. 같은 번호만 없으면 됩니다.
 
2. 데이터와 같은. 랜덤키 첫번째를. 가로로 붙이기
랜덤키 첫번째를 0~7번중에. 내가 원하는 번호 하나만 선택합니다.
랜덤키를 1개씩 사용해도 될겁니다.
세로로 맞추는것이 아니라. 가로로 랜덤키를 붙여 나가면 됩니다.
 
예제 5번쯤에서 했던것이 맞았던거 같네요.
랜덤키가 많으면. 더 효율적일겁니다. ㅇ_ㅇ;;
 
//이겁니다. ㅇ_ㅇ;;   rand_data[0]이 문자 '1'인 경우. 'A' 문자 48을 빼서. 숫자와 비교
if(rand_data[0]-48 == 0)   //0 번
{
}
 
if(rand_data[0]-48 == 1)   //1 번
{
}
 
if(rand_data[0] == 'A')   //'A' 번
{
}
 
압축원리 0%를 요약 설명하면.
데이터 값을. 순서대로 된. 랜덤키로 변환. ㅇ_ㅇ;; (랜덤값은 제가 임시로 입력)
3 데이터에. 순서대로 된 랜덤키는 3485 (길이 갯수가 달라도 됨)
2 데이터에. 순서대로 된 랜덤키는 2584 (길이 갯수가 달라도 됨)
5 데이터에. 순서대로 된 랜덤키는 5634 (길이 갯수가 달라도 됨)
원본 데이터 3 2 5 -> 변환 3485 2584 5634 -> 압축
 
이렇게 하니. 노트패드에서도 빠르게 읽습니다. ㅇ_ㅇ;;
현재 값의 갯수가 적어서. 잘못 판단 되었을 수 있더라도.
각 번호와 위치별로. 파일을 분해하거나. 번호와 갯수로 맞추면. 가능성이 있습니다.

if( (buf >> 0) & 0x1 == 1 ) 데이터로 조건을 두지 않아야 합니다.

 

//이렇게 압축효율 0% 가능 ㅇ_ㅇ;;
   if(rand_data[0]-48 == 0)
   {
    data = ' ';    fwrite(&data, 1, 1, fp);
    for(i=0; i<2; i++) { data = rand_data[i]; fwrite(&data, 1, 1, fp); }
   }
   if(rand_data[0]-48 == 1)
   {
    data = ' ';    fwrite(&data, 1, 1, fp);
    for(i=0; i<2; i++) { data = rand_data[i]; fwrite(&data, 1, 1, fp); }
    for(i=0; i<2; i++) { data = rand_data[i]; fwrite(&data, 1, 1, fp); }
   }
   if(rand_data[0]-48 == 2)
   {
    data = ' ';    fwrite(&data, 1, 1, fp);
    for(i=0; i<2; i++) { data = rand_data[i]; fwrite(&data, 1, 1, fp); }
    for(i=0; i<2; i++) { data = rand_data[i]; fwrite(&data, 1, 1, fp); }
    for(i=0; i<2; i++) { data = rand_data[i]; fwrite(&data, 1, 1, fp); }
   }

 

남은 방법은 이거 같네요... ㅇ_ㅇ;;

원본 데이터 - 압축효율 0% 랜덤값 = 남은 값

 

이렇게 압축효율 0% 가 된. 파일은.

일부 편집을을 해도. 압축효율 0%가. 가능하기도 합니다.

 

//-----------------------------------------------

랜덤키 값의 첫순서를. 데이터 비트 1에 맞춘 예제 코드

압축효율 10% ㅇ_ㅇ;; 크지만. 일단. 데이터 확인할때. 보기 편하니. 적어봅니다.


  
  //1인 비트가 있는 경우. 비트순서에 맞는 랜덤 가상키 생성. rand_data[]
  for(i=0; i<8; i++)
  {
   while(1)
   {
    int rcount = fn_rand_length();   //rand_data[] 는 전역변수로 설정. ㅇ_ㅇ;; 대충대충
    rcount = strlen( (char*)rand_data );    //멀티바이트'라면. 1바이트 단위니. 이렇게 사용해도 된다.
//    int rcount2 = fn_rand_length2();   //rand_data[] 는 전역변수로 설정. ㅇ_ㅇ;; 대충대충
//    rcount2 = strlen( (char*)rand_data2 );    //멀티바이트'라면. 1바이트 단위니. 이렇게 사용해도 된다.
//    printf("rcount %d   rand_data[0]-48 %d   idx[i] %d   i %d\n", rcount, rand_data[0]-48, idx[i], i);
    //0~7 값이 있는 경우. 1인 경우.
    if(rand_data[0]-48 == idx[i])
    {
     data = ' ';    fwrite(&data, 1, 1, fp);
     int m;
     for(m=0; m<2; m++) { data = rand_data[m]; fwrite(&data, 1, 1, fp); }
     break;
    }
//    else 이것 역시. 모두 랜덤값을 적어주면. 압축효율 0%
//    {
//     data = ' ';    fwrite(&data, 1, 1, fp);
//     int m;
//     for(m=0; m<2; m++) { data = rand_data[m]; fwrite(&data, 1, 1, fp); }
//    }
    if(idx[i] == -1) // 0인 경우. (buf >> i) & 0x1 == 0과 같지는 않음.
    {
     break;
    }
   }//while(1)
  }
 
//----------------------------------------------------
 
그러고 보니. 암호화 알고리즘의 소스코드를 KISA 에서 배포중입니다. ㅇ_ㅇ;;
이 블록암호화 데이터도 랜덤값일 확률이 놓으니. 압축하면. 효율이 좋을 수 도 있습니다.

 

 

//--------------------------------------------------------


데이터 자체로 처리해야 쉬움. ㅇ_ㅇ;;
가능성
- 랜덤값과 데이터가 같은 경우의 시간. 횟수. 거리로 계산
- 데이터값이 몇개 있는지. 확인.
- 가로 세로 위치.
- 5~7 사이에 값을 검색 = 6 ㅇ_ㅇ;;  6의 양쪽값은 5와 7
- 11 00을 빼고 연산 / 10 01을 빼고 연산
1010001000111001110111
1 1   1   111  111 111
   00  00 11 0011   11 : 11 00 빼기
101  01  0  1    101
10   01          10    : 10 01 빼기
  1      0  1      1
- 통신채널 영상분할 합체
압축효율 0% 가 되는 경우.
- 첫 번째. 번호를 지정할 수 있는. 순서대로 된 랜덤값 (미리 만들어서 사용해도 됨)
- 1차 정렬 후. / 2차 정렬
- 전체적으로. 같은 데이터는 삭제 해도 된다.
- 모두 같은 값
압축효율 0% 가 안되는 경우. 실패한 경우.
- 랜덤값 호출로. 그냥 저장은 안되기도 함.
- 값 중간에 끼워넣기
- A0 0A 값 뒤집어 넣기
- 블록암호화 알고리즘 ARIA SEED
- 첫번째 랜덤값은 정렬 + 두번째 랜덤값은 값으로 맞추기 + 8값이 있어야 할거 같다.
- 123xx 12xxx 랜덤순서를 정하는 방법.
- 0~255 를 ' ' 로 띄우다가. 마지막에 0 찍기
압축 알고리즘을 개발
- 큰값 만들어서. 빼기 / 나누기 / 각도 변환 / 갯수 / 크기
- 데이터의 비트를 값만큼 이동
- 이미지 크기 변환 후. 차이값 압축
- 동그란 공을 굴려서. 닿는 면접을 지운다.
- 데이터 인덱스 팔레트 구현
압축효율 1% 인 경우.
- 같은 랜덤값을 1과 0에 적고. 0인 경우. 값을 하나 'x'로 사용.
- 파일 변환하면. 여러번 누적압축 가능
- 5% ~ 1% 압축효율이면. 10배씩 압축됨.
 

 

 

//--------------------------------------------------------

압축효율 0%에 맞는.

분기 방식

    //0~7 값이 있는 경우. 1인 경우.
    if(rand_data[0]-48 == idx[i]) // <----- 번호가 있는 경우. 1인 경우.
    {
     if(rand_data[0]-48 == 4) // <------- 첫자리 순서가. 4번인 경우 조건.
     {
      data = ' ';    fwrite(&data, 1, 1, fp);
      int m;
      for(m=0; m<2; m++) { data = rand_data2[m]; fwrite(&data, 1, 1, fp); }
     }
     else
     {
      data = ' ';    fwrite(&data, 1, 1, fp);
      int m;
      for(m=0; m<2; m++) { data = rand_data[m]; fwrite(&data, 1, 1, fp); }
     }
     break;
    }
    else // <---------- 번호가 없는 경우. 0인 경우.
    {
     if(rand_data[0]-48 == 4) // <-------------- 첫자리 순서가. 4번인 경우
     {
      data = ' ';    fwrite(&data, 1, 1, fp);
      int m;
      for(m=0; m<2; m++) { data = rand_data2[m]; fwrite(&data, 1, 1, fp); }
     }
     else
     {
      data = ' ';    fwrite(&data, 1, 1, fp);
      int m;
      for(m=0; m<2; m++) { data = rand_data[m]; fwrite(&data, 1, 1, fp); }
     }
    }

 

//--------------------------------------------------------

랜덤값 생성에서 착각이 있었나 봅니다.

다시 해보니. 랜덤값으로 압축이 0% 되네요. ㅇ_ㅇ;; 된장...

test - 변환 압축 예제소스10 파일로 첨부합니다.

이것도 맞나 틀리나 확인중 ㅇ_ㅇ;;

 

//--------------------------------------------------

제가 알아낸건.

이렇게 랜덤값에 순서를 정렬하면. 압축효율 0% 라는겁니다. ㅇ_ㅇ;;

이건. 일반 데이터를 -> 랜덤값 순서'로 만들어 줍니다.

100KB 로 압축이 되는데. 압축시간이 좀 느립니다.?? 단점.

번호뒤에 -> 위치순서도. 붙일 수 있습니다.


 //----------------------------------------------------------------
 char ra[10][3] = {"47", "32", "40", "03", "60", "67", "20", "02"}; // 데이터
// char ra[10][4] = {"470", "321", "402", "033", "604", "675", "206", "027"};
//01234567 위치번호도 추가? 가능할런지 모르겠네요. 뒷자리 순서 맞추기를 해야 하나 ㅇ_ㅇ;;??
//저는 랜덤값을 순서대로 만들어야 하는줄 알았는데.
//그냥. 데이터에 순서만 정렬해도 되네요.
 int j;
 for(i=0; i<8; i++)
 {
//  printf("%s ", ra[i]);
 }
// printf("\n");
 
 //----------------------------------------------------------------
 fn_rand_length();                      //  <---------  1. 랜덤 순서생성
 //----------------------------------------------------------------
// printf("RAND------------------------");
 for(i=0; i<8; i++)
 {
//  printf("%d ", rand_data[i]-'0');
 }
// printf("\n");
 //----------------------------------------------------------------
// printf("NUM ------------------------");
 for(i=0; i<8; i++)
 {
  int num = rand_data[i]-'0';        //  <--------  2. 랜덤순서번호 위치
//  printf("%s ", ra[num]);
  data = ' ';   fwrite(&data, 1, 1, fp);
  data = ra[num][0]; fwrite(&data, 1, 1, fp);     //  <------- 3. 랜덤 순서번호 위치에 맞는 데이터
  data = ra[num][1]; fwrite(&data, 1, 1, fp);
 }
// data = '\n'; fwrite(&data, 1, 1, fp);
// printf("\n");
 

//---------------------------------------------------------

다시 해보니. ㅇ_ㅇ;; <----- 여기는 패스! 위에 ★ 표시 순서값 랜덤압축이 나은듯...

0과 1에 대한 랜덤값을. 동시에 모두 출력해도. 압축효율 0% 됩니다.

1 에 대한 랜덤값 (한줄)

0 에 대한 랜덤값 (한줄)


//-------------------------------------------------------------------------
  //0에 대한 랜덤값 / 1에 대한 랜덤값 - 각각 출력
//-------------------------------------------------------------------------
  count++;
  int n;
  int pos;
  if(idx[0] >= 0) { n = 1; }else{ n = 0; }
  if(idx[0] >= 0) { pos = idx[0]; }else{ pos = 0; }
  //1에 대한 랜덤값 : 0~7첫자리
  fn_rand_number(1, pos, 2);
  len = strlen((char*) vv1);
  for(m=0; m<len; m++) { data = vv1[m];  fwrite(&data, 1, 1, fp); }
  data = '\n';    fwrite(&data, 1, 1, fp);
  //0에 대한 랜덤값 : 0~7첫자리
  fn_rand_number(0, pos, 2);
  len = strlen((char*) vv1);
  for(m=0; m<len; m++) { data = vv1[m];  fwrite(&data, 1, 1, fp); }
  data = '\n';    fwrite(&data, 1, 1, fp);
  data = '\n';    fwrite(&data, 1, 1, fp);

 

//-------------------------------------------------------------------------
  //1과 0에 대한 랜덤값 n : 0~7첫자리'를 별도 파일로 분리해서. 저장합니다. ㅇ_ㅇ;;
//-------------------------------------------------------------------------
  fn_rand_number(n, 0, 2);
  len = strlen((char*) vv1);
  for(m=0; m<len; m++) { data = vv1[m];  fwrite(&data, 1, 1, fp1); }
//  data = '\n';    fwrite(&data, 1, 1, fp1);       //'\n' 를 사용하면. 0%가 안되기도 합니다.


 

다시 원리를 적어보면.

압축 잘되는 랜덤 데이터를 각 파일로 분리해서 저장 후.

분리된 파일 정보를 해석해서. 복원 ㅇ_ㅇ;; ...

걍. 포기... 대충. 여러번 저장하는 방법이나 해야지...

 

//----------------------------------------------------------------

다시. 생각이 들었는데.

위에 ★표한. 랜덤값 순서압축을  -> 데이터로 순서압축 사용하면 되겠네요. ㅇ_ㅇ;;

 

//--------------------------------------------------------------

첫번째 예제를 다시보니. 압축효율이 0% 네요. ㅇ_ㅇ;;

맞나 ㅇ_ㅇ?? 맞다면.

rand() 파일 / 0번 파일 / 1번 파일 / 2번 파일 하면 될지도...

해봤는데. 비트 갯수가 적어서였네요. ㅇ_ㅇ;;

#if 1
  //성공 0% 6MB -> 6MB -> 50KB
  data = rand() % 2;
  
  if (data == (buf >> 0) & 0x1)
  {
   data = ' ';
  }
  else if (data == (buf >> 1) & 0x1)
  {
   data = buf;
  }
  else if (data == (buf >> 2) & 0x1)
  {
   data = '2';
  }
  fwrite(&data, 1, 1, fp);
#endif
 

ㅇ_ㅇ;; 랜덤 압축은. 더 잘하시는분이 하셔야 할거 같습니다.

- 랜덤키값은 압축효율 0% : 변환 조합 추출 검색으로 향상?

- 데이터 변환시. 누적 압축 가능 1000 -> 100 -> 10KB

- 나머지는 다른 방식에 압축...

 

//----------------------------------------------------

rand()%2 는 if() 문에서 한쪽만. 넣어야 압축효율이 0% 되기도 합니다.

 

  //----------------------------------------------------------------
  //랜덤키 빼기 1과 0
  //----------------------------------------------------------------
  int r = rand()%2;    // <------ 동시에 위에 두면. 안됨
  int val = (buf >> 0) & 0x1;
  if( val == 1) //값이 있으면.
  {
   //둘중에 하나만 있어야 되는 경우도 있다.
  }
  else
  {
   //둘중에 하나만 있어야 되는 경우도 있다.
   int r = rand()%2;
   if( r == 1 )
   {
    data = '1';
    fwrite(&data, 1, 1, fp);
   }
   else
   {
    data = '0';
    fwrite(&data, 1, 1, fp);
   }
  }
 

 

//-------------------------------------------------------------

ㅇ_ㅇ;; 임시 방편으로 랜덤 데이터 삭제 / 복구 방법을 구현해봤습니다.

rand()%2 를 5번 반복해서. 데이터 삭제 및 복구

6MB -> 6MB -> 5번 반복 -> 35KB 로 압축이 되네요. ㅇ_ㅇ;;

전체값이 삭제되는 rand()%2 데이터는 12MB 정도 됩니다.

반복된 각 rand()%2 데이터 파일도. 각각 압축해야 합니다. 각각 3KB 정도 됩니다.

일단. 확인 점 해보져. ㅇ_ㅇ;; 엉터리긴 하지만...

test - 랜덤 데이터 삭제 예제소스 파일 첨부. (백신이 파일을 삭제하네요. ㅇ_ㅇ?)

 

파일변환 - 테스트 코드.zip

 

200MB -> 200MB -> 20번 파일변환 압축 -> 200KB ㅇ_ㅇ;;

rand()%2 라서 그런지. 한번에 절반씩 제거 및 압축'이 되네요.

200MB는 너무 크니. 2MB 정도로 압축하고. 다시 2MB 를 압축해도 됩니다. ㅇ_ㅇ;;

복원은 각 rand() 값을 저장해뒀다가. 7zip 으로 압축하면. 3KB 가 된것을 풀어서 할겁니다.

ㅇ_ㅇ;; 가능은하네요... 임시로... 랜덤값 방식으로 압축 / 복구 성공. ㅇ_ㅇ;; 2019년 1월 22일

 

다시 확인해보니. 1번만 복구 가능. 여러번은 더 해봐야겠습니다. ㅇ_ㅇ;;

 

 

//------------------------------------------------------

파일변환 - 테스트 코드2.zip

 

파일을 1/2 로 분할해서. 7zip으로 압축하면. 누적 압축이 되는데.

복원이 안됩니다.

결국. 저는 복원에. 실패 했네요. ㅠ_ㅠ;;

그냥. 수학 과학 계산을 해야겠네요... + (중복없는) 상수공식 값. 지우개 사용 등등...

내가 뭐했나. 생각해보니. 기능확인...

 

//----------------------------------------------------

랜덤 데이터 - 레이어 (크기 위치 조정) - 연결 방식

이러면. 랜덤 데이터는 압축시. 용량이 적고 빠르니. 가능성이 있습니다.

데이터를 for() 문으로 동적으로 만들어도 됩니다.

DB 데이터를 조합해도 됩니다.

 

//----------------------------------------------------

연습 참고용으로. 몇가지 방식을 올려봅니다.

테스트 - 선분 길이와 각도 - 나누기 - 랜덤값 횟수 빼기.zip

 

 

 

 

일단. 저는 여기까지 마무리. ㅇ_ㅇ;;

 

 

 

 

 

 

[코멘트] 놀람
2018-12-18 20:20
 gilgil  gilgil님께 메시지 보내기gilgil님을 내 주소록에 추가합니다.gilgil님의 개인게시판 가기 
...
저장 취소
[코멘트] 놀람
2019-01-09 09:45
 jjj0214  jjj0214님께 메시지 보내기jjj0214님을 내 주소록에 추가합니다.jjj0214님의 개인게시판 가기 
복구 실험도 안됐는데 무조건 압축만 하면 제대로 압축이 됐는지 어떻게 확인할까요?
저장 취소
[코멘트] 좋음
2019-01-09 09:48
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
압축과 해제는 LZMA 알고리즘을 사용하는 (7zip WinZipX XZ) 프로그램으로 할 수 있습니다. ㅇ_ㅇ;;
저희는 압축이 잘되는 변환파일만 만듭니다.
이 변환 파일에 대한 압축과 복원 방식은 다양할겁니다.
지금 대충 올린 예제는 압축이 잘되는 랜덤값의 순서에 맞게. 현재 바이트의 비트순서를 랜덤값으로 만들었습니다.
그런데. 너무 용량이 커서. 이 랜덤값도 바이트로 변경할 수 있는지 확인이 필요한 상태입니다.
하여간. 임시로 구현한 예제 내용은 아마도. 이러면 될겁니다.
변환문자
00100011
01234567 267 627 726 이 랜덤값으로 입력될것입니다.
- 사용하는 숫자의 갯수가 적을 수 록. 압축이 빠릅니다. 012 문자만 사용하면. 빠릅니다.
- 빈 공간이 많을 수 록. 압축이 빠릅니다.
- 랜덤 값이 압축이 잘 됩니다.
- 숫자 변환복원이 어려울 경우는 1과 0으로 나눠서해도 좋습니다.
- 비트 단위로 나눠서 압축할 경우. 더 빠르고 잘 됩니다.

변환비트
267 627 726 이 값은 어떤 순서라도. 비트로 변환이 가능합니다.
00100011

랜덤 숫자 - 마우스 보안입력과 같은 원리입니다. (마영전 에서는. 칼브람 코드)

확인해보니. 랜덤값에서 필요없는 값도 포함되네요.
일부. 필요없는 값만 제거해도. 압축효율이 낮아져 버립니다.
필요없는 값은 별도로 인덱스를 만들어서 압축해야 할것 같습니다.
저장 취소
[코멘트] 난감
2019-01-09 09:53
 jjj0214  jjj0214님께 메시지 보내기jjj0214님을 내 주소록에 추가합니다.jjj0214님의 개인게시판 가기 
넵 한번 테스트해봐야겠네요! 정보 감사합니다~
궁금한게 있는데 텍스트로 변환하면 거의 기본 파일 용량의 10배는 올라가는데
그 큰 용량에 관한 부분은 어떻게 처리될까요?
저장 취소
[코멘트] 좋음
2019-01-09 09:59
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
여러가지 방법이 있을겁니다. 예제소스에 비슷한 설명을 적어놨습니다;;
한국과 세계에서... 일류 대학 대기업 연구소가 엄청나게 많은데...
굳이 제가 해야 하는지도 모르겠습니다. ㅇ_ㅇ;; 다들 잘하시는분들이신데... 제가 한다는것도 이상합니다.

- 수학 과학 개발자 분들중에. 더 잘하시는분이 하시는 방법
- 스트림으로 변환된 데이터를 조금씩 직접 압축하는 방법이 가능한것 같습니다. 구글 보니...
아마도. 스트림으로 하는 방법이 추천.될겁니다.
- 조금씩 나눠서 압축하는 방법
- 랜덤값을 바이트로 변환시 압축 효율이 좋은지는 아직 모릅니다.

이 예제는 압축효율이 좋은. 샘플수준이니. 참고만 해보세요. ㅇ_ㅇ;; 보다 혁신적일겁니다.
USB 장비 꼽으면. 가속 되듯이... 생각해보면. .NET Framework 의 의도와 비슷해 보입니다.

제가 컴퓨터를 접한지. 30년. 통신과 인터넷을 접한지. 25년 정도 되네요. ㅇ_ㅇ;; 제가 한다는건. 뭔가 이상합니다.
수학 과학이 나온지도 오래 되었을텐데... 하여간. 저는 플로피 디스켓을 사용할 수 있게 되어서. 기쁩니다. ㅇ_ㅇ;;

그리고. 변환방식을 잘 정하면. zip 으로 압축해도 잘 됩니다. ㅇ_ㅇ;; 7zip 보다. 10배정도 차이나지만...
저장 취소
[코멘트] 좋음
2019-01-09 23:18
 isinstance  isinstance님께 메시지 보내기isinstance님을 내 주소록에 추가합니다.isinstance님의 개인게시판 가기 
혹시 파일의 복구 방법은 어떻게 되는지 알 수 있을까요?
저장 취소
[코멘트] 좋음
2019-01-10 00:00
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
저도 구현중이예요 ㅇ_ㅇ;; 예제소스는 첨부했습니다.
일단. 변환 순서는 만들었습니다.
그런데. 불필요한 값이 있어서. 별도로 분리하고 있습니다.
변환문자
00100011
01234567 267 627 726 이 랜덤값으로 입력될것입니다.

변환비트
267 627 726 이 값은 어떤 순서라도. 비트로 변환이 가능합니다.
00100011

rand() 랜덤값이 별도로 있고.
rand() 랜덤값과 비트 순서가 맞춰진. 랜덤값'이. 별도로 있습니다. <--- 이것에 압축이 성공했습니다.
- 267 627 726 같은. 비트순서 위치의 랜덤값 압축 성공.
근데. 267943 과 같이 되버려서. 어떤값이 1인지 알아볼 수 가 없습니다.
그냥. 비트가 1인 위치를 앞에 놓으면. 되는것을. 제가 착각 중 인걸지도. ㅇ_ㅇ;;
- 불필요한 비트 값 제거를 별도 파일로 분리해서. 압축 하면 될듯합니다. ㅇ_ㅇ;;

이것은 제가 임시로 구현한 방법이라서. 좋은 방법이라 할 수는 없을겁니다. ㅇ_ㅇ;;
남은 방법은 이정도네요.
- 인덱스를 비트 단위 파일로 0~7까지 나눠서 빠르게 구하기
- 랜덤값을 2개 만들어서. 일치하는 값을 구하기

- 랜덤값에 일정값을 더하는것은 압축률이 좋습니다. (인덱스로 더하기?)

00100011 267943 처럼 저장하니. 압축률 10% 는 복원도 되네요. ㅇ_ㅇ;;... 아쉽...

한가지 더.
압축 잘 되는 데이터를. 원본에서 지우며 압축 하는 방법.이 있을겁니다.
저장 취소
[코멘트] 좋음
2019-01-24 10:03
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
R 언어 - 큰 수 나누기
https://1drv.ms/w/s!ApTyVmRLm3szqXJSxlnewcf2DsSN
소수점 값 확인 필요.

큰수를 각도로 변환 압축 ㅇ_ㅇ;;

rand() 값의 이미지 공간을. 좌표로 비교하는 방법 (벡터, 도트로 영역지정 가능)

퍼센트 계산기
http://percent.san2.net/

호의 길이
https://www.mathopenref.com/arclength.html

2 x 2 x 2 x 3 = ㅇ_ㅇ;;

XML 트리 (도메인)
892374 - 42389742 - 249834732
-------- 23984


같은 2문자를 1문자로 합치기
1
1 A
1
1 A C
1
1 A
0
0 B D
1
1 A

검증은 별도로 해보셔야 합니다. ㅇ_ㅇ;;
저장 취소
[코멘트] 좋음
2019-01-26 19:24
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
//데이터 없애기 게임.
- 삭제 이름 마음대로 가능
- 데이터 공간 위치 지정. 모양. 갯수. 아랫쪽으로. 마음대로 가능
단. 순서는 바꾸면 안됨.

abcd
efgh
ibjk
ld


0100 a
1010 b
1101 c
1011 d
0101 e
0001 f
0010 g
0111 h
0010 i
10 10111 0 0110 0011 10110000 0000 0000
0101 1011 0001
1011 1000 1100 0000 0000 0011
100 111 01001 001001 0110101010
111111111
0001 001 001
1101 011011011
0110 110110110
110 1101101101
101 1011011011
0110 11011 0110
110110110110110110110110110110110110110110110110110110110100100111000100111000011100011111
10000000000001110000001110000000001111111110001110001111110001111110011101000110000001111
1111100011100000001110001101001010111011001110011100010110110110110110110110110110110110110
11011011011011011011011011011011011011
저장 취소
[코멘트] 좋음
2019-01-28 20:40
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
랜덤숫자의 세로 번호 압축이 성공한것 같습니다. ㅇ_ㅇ;;
세로 같은 번호는 길이에 영향을 받지 않는것 같습니다.

32150674 값을 321 0674 / 32150 74 등에 숫자로 변환할 수 있습니다.

랜덤 숫자가 빠른 이유를 생각해보니.
- 두번째 실행된 연산속도가 더 빠릅니다. 재할당을 안해서 같습니다.
- 랜덤 숫자도 값이 계속 반복되므로. 재할당이 줄어들어서. 빠른가 봅니다. (연산 및 로딩)

32150674
32150674
3 150674
150674
150674
150 74
50 74
50 4
5 410372
5 10372
5 1 372
5 1 72
5 72
5 72
5 2
5 2
저장 취소
[코멘트] 좋음
2019-01-29 00:13
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
#include < stdio.h>
#include < stdlib.h>
#include < memory.h>
#include < string>
#include < time.h>
#include < windows.h>

#include < map>

using namespace std;


//
int main(int argc, char* argv[])
{
FILE * fpr = fopen("test.bmp", "rb");
FILE * fp = fopen("test.txt", "wt");
srand( time(NULL) );

int i;
char data;
for(i=0; i<255; i++)
{
char name[3];
sprintf(&name[0], "%3d", i);
data = name[0];
fwrite(&data, 1, 1, fp);
data = name[1];
fwrite(&data, 1, 1, fp);
data = name[2];
fwrite(&data, 1, 1, fp);
data = ' ';
fwrite(&data, 1, 1, fp);
}
data = '\n';
fwrite(&data, 1, 1, fp);

int m;
for(m=0; m<255111; m++)
{
for(i=0; i<255; i++)
{
char buf;
int n = fread(&buf, 1, 1, fpr);
if(n == NULL) break;
int r = rand()%255;
r = buf;
if(r != i)
{
char name[3];
sprintf(&name[0], "%3d", r);
data = ' ';
fwrite(&data, 1, 1, fp);
data = ' ';
fwrite(&data, 1, 1, fp);
data = ' ';
fwrite(&data, 1, 1, fp);
data = ' ';
fwrite(&data, 1, 1, fp);
}
else
{
char name[3];
sprintf(&name[0], "%3d", r);
data = name[0];
fwrite(&data, 1, 1, fp);
data = name[1];
fwrite(&data, 1, 1, fp);
data = name[2];
fwrite(&data, 1, 1, fp);
data = ' ';
fwrite(&data, 1, 1, fp);
}
}
data = '\n';
fwrite(&data, 1, 1, fp);
}
return 0;
}

// 0 ~ 255 숫자 위치에 같은 값만 넣어주면 된다. ㅇ_ㅇ;;

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254

21 26
21 25 29

성공한거 같다. ㅇ_ㅇ;; 6MB -> 24MB -> 54KB
또 착각인가? ㅇ_ㅇ??
저장 취소
[코멘트] 좋음
2019-01-30 16:09
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
6MB -> 60MB -> 86KB
ㅇ?_ㅇ?;; 착각이라고 해도 압축은 되니...


//
int main(int argc, char* argv[])
{

unlink("test.txt");
unlink("test2.txt");
unlink("test3.txt");
unlink("test.7z");
unlink("test2.7z");
unlink("test3.7z");


FILE * fpr = fopen("test.bmp", "rb");
FILE * fp = fopen("test.txt", "wt");
FILE * fp2 = fopen("test2.txt", "wt");
FILE * fp3 = fopen("test3.txt", "wt");
srand( time(NULL) );


int m=0;
char data;
while(1)
{
char v[100] = {"00011011000101010111110111"};
char v2[100] = {"00011011000101010111110111"};
int i=0;
int cnt=0;
int len = strlen(v);
char buf;
int n = fread(&buf, 1, 1, fpr);
if(n == NULL) break;
fn_rand_length();
len = 8;

fn_rand_length();
for(m=0; m {
v[m] = rand_data[m];
}

fn_rand_length();
for(m=0; m {
v2[m] = rand_data[m];
}

for(m=0; m {
if(v[m] == v2[0])
{
n = (buf >> 5);
if(n == v[m])
{
data = ' '; //n;
fwrite(&data, 1, 1, fp);
}
else
{
data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
}
else
{
n = (buf >> 5);
if(n == v[m])
{
data = ' '; //n;
fwrite(&data, 1, 1, fp);
}
else
{
data = rand_data[m];
fwrite(&data, 1, 1, fp);
}
}
}
data = '\n';
fwrite(&data, 1, 1, fp);


char name[3];
sprintf(&name[0], "%3d", buf);


//0%
len = 8;

}
fclose(fp);
fclose(fp2);
fclose(fp3);
fclose(fpr);

system("\"C:\\Program Files\\7-Zip\\7z.exe\" a test.7z test.txt");
return 0;
}
저장 취소
[코멘트] 좋음
2019-01-30 20:37
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
//3bit 6MB -> 6MB -> 600KB
n = (buf >> 5) + '0';
//printf("%d %d \n", n, rand_data[0]);
if(n == rand_data[0])
{
data = ' ';
fwrite(&data, 1, 1, fp);
continue;
}

data = rand_data[0];
fwrite(&data, 1, 1, fp);

//데이터로 랜덤키를 7개 만든다.
//랜덤키 순서대로 7개를 지우고. 복원한다.
저장 취소
[코멘트] 좋음
2019-01-31 23:34
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
비트 확인 방법
오류코드 수정. (계산기에 맞추기)
unsigned char tmp;
//01
//각 비트를 rand() 값으로 제거. 3MB
printf("%3d %d %d %d %d %d %d %d %d BUF \n", buf, (buf>>7)&0x1, (buf>>6)&0x1, (buf>>5)&0x1, (buf>>4)&0x1, (buf>>3)&0x1, (buf>>2)&0x1, (buf>>1)&0x1, (buf>>0)&0x1);

tmp1 = (tmp>>0)&0x1;
tmp2 = (tmp>>1)&0x1;
tmp3 = (tmp>>2)&0x1;
tmp4 = (tmp>>3)&0x1;
tmp5 = (tmp>>4)&0x1;
tmp6 = (tmp>>5)&0x1;
tmp7 = (tmp>>6)&0x1;
tmp8 = (tmp>>7)&0x1;
tmp = tmp1 << 0 | tmp2 << 1 | tmp3 << 2 | tmp4 << 3 | tmp5 << 4 | tmp6 << 5 | tmp7 << 6 | tmp8 << 7;
printf("%3d %d %d %d %d %d %d %d %d (buf>>6) \n", tmp, (tmp>>7)&0x1, (tmp>>6)&0x1, (tmp>>5)&0x1, (tmp>>4)&0x1, (tmp>>3)&0x1, (tmp>>2)&0x1, (tmp>>1)&0x1, (tmp>>0)&0x1);


//--------------------
//절반은 되는 반대값...
//--------------------
//3의 반대값 0
//2의 반대값 1
//1의 반대값 2
//0의 반대값 3
//2bit 6MB -> 12MB -> 450KB
//1bit 6MB -> 12MB -> 200KB
// 01234567
// 01234567
// 01234567
// 567
buf = buf << 5;
unsigned char z = (buf >> 5); //6MB -> 12MB -> 2MB
data = z;
fwrite(&data, 1, 1, fp);
data = 7-z;
fwrite(&data, 1, 1, fp);


//--------------------
//11 10 01 00 을 ABCD로 변환 (1비트만 할 경우...)
//--------------------
6MB -> (11 10 01 00) 6MB -> (ABCD) 25MB -> (7z) 1MB


//--------------------------------
//3비트 3비트 2비트 조각으로 나눠서 압축하기
//--------------------------------
6MB -> 6MB 3개 -> (7z) 600KB 3개 -> zip 으로 묶기 (압축 반복 이 가능해 보이는것 같기도 합니다.)
6MB -> 4MB 3개 -> (7z) 1.5MB 3개 -> 7z 으로 묶기 4MB (압축 반복 안됨)
코드에 오류가 있네요. 확인 필요.

// 01234567
// 01234567 >>6
// 01234567 <<2
// 234567 >> 5
// 567 <<5
// 567 >>5

//01
data = (buf>>6);
fwrite(&data, 1, 1, fp);

//234
unsigned char tmp;
tmp = buf;
tmp = tmp << 2;
data = (tmp >>5);
fwrite(&data, 1, 1, fp2);

//567
tmp = buf;
tmp = tmp << 5;
data = (tmp >>5);
fwrite(&data, 1, 1, fp3);

//--------------------------------
//랜덤값 증가 + 문자 증가 + 숫자 증가 = 압축효율 0% 가능
//--------------------------------
6MB -> 12MB -> 4KB

//rand() + 0~100
data = rand()%2+'0';
fwrite(&data, 1, 1, fp);
data = cnt+'A';
fwrite(&data, 1, 1, fp);

if(cnt > 7)
{
cnt = 0;
}
cnt++;


//--------------------------------
//한글 조합형 완성형 분리 방식 : 한글자 2바이트 = 초성 / 중성 / 종성 (받침) 각각 2바이트
//--------------------------------
터보C 정복 책 예제로 있습니다. ㅇ_ㅇ;;
printf("%c%c", 0xc7, 0xd1); //한
printf("%c%c", 0xb1, 0xdb); //글
printf("%c%c", 0xc0, 0x9e); //핡
printf("%c%c", 0xc4, 0xa6); //칡
printf("%c%c", 0xc8, 0xeb); //흙
//unsigned char gul[3] = "글";
//printf("[%x%x]", gul[0], gul[1]);
//unsigned char gul[3] = "핡";
//printf("[%x%x]", gul[0], gul[1]); //c09e
//unsigned char gul[3] = "칡";
//printf("[%x%x]", gul[0], gul[1]); //c4a6
//unsigned char gul[3] = "흙";
//printf("[%x%x]", gul[0], gul[1]); //c8eb

unsigned char ar[100] = "ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ";
//ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ
//a4 a1 a4 a4 a4 a7 a4 a9 a4 b1 a4 b2 a4 b5 a4 b7 a4 b8 a4 ba a4 bb a4 bc a4 bd a4 be
unsigned char ar2[100] = "가나다라마바사아자차카타파하";
//가 나 다 라 마 바 사 아 자 차 카 타 파 하
//b0 a1 b3 aa b4 d9 b6 f3 b8 b6 b9 d9 bb e7 be c6 c0 da c2 f7 c4 ab c5 b8 c6 c4 c7 cf
unsigned char ar3[100] = "ㅏㅑㅓㅕㅗㅛㅜㅠㅡㅣㅐㅒㅔㅖ";
//ㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ ㅐ ㅒ ㅔ ㅖ
//a4 bf a4 c1 a4 c3 a4 c5 a4 c7 a4 cb a4 cc a4 d0 a4 d1 a4 d3 a4 c0 a4 c2 a4 c4 a4 c6
unsigned char ar4[100] = "간난단란만반산안잔찬칸탄판한";
//간 난 단 란 만 반 산 안 잔 찬 칸 탄 판 한";
//b0 a3 b3 ad b4 dc b6 f5 b8 b8 b9 dd bb ea be c8 c0 dc c2 f9 c4 ad c5 ba c6 c7 c7 d1
unsigned char ar5[100] = "각난닫랄맘밥삿앙잦찿캌탙팦핳";
//각 난 닫 랄 맘 밥 삿 앙 잦 찿 캌 탙 팦 핳";
//b0 a2 b3 ad b4 dd b6 f6 b8 be b9 e4 bb f1 be d3 c0 e6 aa 4f af 97 b5 79 bb 62 c1 4b
len = strlen((char*)ar5);
for(i=0; i {
printf("%x ", ar5[i]);
}
printf("\n");



//-----------------------------------
//나누기 값이 계속 오류가 났는데. 나머지 값을 넣지 않았네요. ㅇ_ㅇ;; 된장...
//-----------------------------------

//4바이트 숫자를 문자로 6MB -> 16MB -> 4MB
//4바이트 숫자를 문자로 6MB -> 12MB -> 4MB (n6/1024)
//4바이트 숫자를 문자로 6MB -> 6MB -> 2MB (n6/1024/1024)
//4바이트 숫자를 문자로 6MB -> 3MB -> 700KB (n6/1024/1024/1024) 0남은값. 오류.
unsigned char hex[10];
//sprintf((char*)&hex[0], "%d%d%d%d", ra[0], ra[1], ra[2], ra[3]);

//int n = atoi((char*)hex);
//printf("[n ] %s %d\n", hex, n);

//__int64 n6 = _atoi64((char*)hex);
//16진수를 10진수로 변환
printf("[hx] %x %x %x %x %x %x %x %x\n", ra[0], ra[1], ra[2], ra[3], ra[4], ra[5], ra[6], ra[7]);
__int64 n6 = ra[0] << 8*7 | ra[1] << 8*6 | ra[2] << 8*5 | ra[3] << 8*4 | ra[4] << 8*3 | ra[5] << 8*2 | ra[6] << 8*1 | ra[7] << 0;
printf("[64] %I64d\n", n6);

__int64 nmg = n6 % (1024*1024);
n6 = n6 / 1024 / 1024;
printf("[64] %I64d %I64d\n", n6, nmg);

n6 = (n6 * 1024 * 1024) + nmg;
printf("[64] %I64d\n", n6);
printf("\n");

//memset(&hex[0], 0x00, 10);
sprintf((char*)&hex[0], "%I64d", n6);

len = strlen((char*)hex);
for(i=0; i {
data = hex[i];
fwrite(&data, 1, 1, fp);
}
저장 취소
[코멘트] 좋음
2019-02-01 22:53
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
1비트씩 빼서 지우는 방법

101011
010110
000100
010100

온천의 모래 시계가 보입니다.
1____01011
01___0110
0001_00
01___0100

1_01011
1_0110
1_00
1_0100

모두 0일 경우가 문제. ㅇ_ㅇ;;
랜덤값은 압축 효율 0% + 압축 해제 속도'도 빠릅니다.
랜덤값을 만들거나. 삭제하는 방식도 괜찮아 보입니다.

SHA 체크썸 길이가 엄청기네요. ㅇ_ㅇ;;
https://www.onlinehexeditor.com/


모두 정리하면.
원리
랜덤값을 건드리지 않으면. 1초 이하 압축해제 가능. 4KB
랜덤값을 결합할 수 있다면. 1초 이하.
데이터를 같은 값으로. 줄이거나. 삭제. 1초 이하.
압축효율이 0% 인경우. 압축 해제. 1초 이하.
하드 읽기 쓰기. 1초 수준.
- rand()%2 를 압축하면. 압축효율 0%
- rand()%2 를 8개의 숫자로 랜덤정렬 가능. 압축효율 0%
- rand()%2 를 8개의 숫자로 랜덤정렬 후. 첫번째 숫자를 맞춰도. 압축효율 0%
- rand()%2 를 8개의 숫자로 랜덤정렬 후. 다음줄에. 세로로 랜덤 삭제해도. 압축효율 0%
- rand()%2 로 만들어진 데이터는. 1과 0중에 하나를 제거하거나. (빈번하지 않은.)중간값을 크게 제거해도 압축효율이 0%
- 데이터의 번호를 순서대로 늘려주면. 압축효율 0%

1. 상수값 랜덤값 지우기 : 빠르고 효율적이지만. 복구 방법을 잘 모름. (영역 지정도 문제)
2. 1비트씩 빼기 : 획기적이지만. 0인 경우. 영역을 지정하는 방법을 모름.
3. 나누기 / 빼기 : 처리 시간이 필요함
4. 모아서 그룹짓기 : 11 10 01 00 을 ABCD로. 계속 변환. 아직 정리방법을 모르겠음.

그 밖에
5. 3비트 씩 나눠서 압축 : 6M -> 6MB -> 600KB 정도 압축이 됩니다. (랜덤데이터 같이 사용) 다시하니. 안됨.
5-2. 7보다 작은. 최소값만 압축 : 6M -> 6MB -> 60KB (데이터 량이 적어서인가?) / 최대값은 500KB
5-3. 2바이트를 반대값으로 저장 : 6MB -> 12MB -> 최소 200KB ~ 최대 2MB (절반 가능)
5-4. 11 10 01 00 을 ABCD로 변환 : 6MB -> 25MB -> 1MB (1비트만 할 경우...)
6. 누적 압축이 잘 안됩니다. 압축은 되지만. 가짜로 됩니다.
7. SHA 를 CUDA GPGPU 등으로 가속하여 복구하는 방법
8. H264 화질과 크기의 차이값을 저장하는 방법
9. noise / threshold / histogram / bitmask / displacement / 한글 변환 / 비트 이동 / 짝수 홀수 / 데이터 분리 / 같은 번호에 랜덤값 / 시간과 거리 각도 로 변환 / 제한 시간안에 데이터 분류 / for() 문이나 Matrix / DB. 등으로 데이터 모양 만들기 (숫자 생성기) / 데이터 레이더 : 매칭 벡터 도트 / 위 아래로 숫자를 같은 비트 갯수로 만들기 / 데이터 논리 연산 / 반도체 모양에 데이터 검증 / 랜덤값 묶음 중에 필요없는 묶음 제거 사용 (랜덤값 겹치기) / 랜덤값을 순서 섞기로 사용 / 폰트 일부영역 비트수 비교 / 벡터 폰트 위치와 각도 응용
10. 지역망 - 중간 프록시 /캐시 / DB 인덱스 서버 사용
11. 기타 과학 수학 천문 생명 우주 영상처리 등등...

//랜덤 발생횟수 = 속도
//랜덤 값 = 압축률
저장 취소
[코멘트] 좋음
2019-02-10 20:47
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
의도하던데로. 랜덤값 삭제에. 성공한거 같네요. ㅇ_ㅇ;;
생각보다. 성능이 좋지는 않습니다. 6MB에 30초? 그냥. 나누는것이 나을지도...

원리는 랜덤값 갯수로 3비트(0~7값)을 빼는겁니다. ㅇ_ㅇ;;
현재는 랜덤길이가 값과 달라서. 실제 값은 다를 수 있습니다. 하지만. 적은 값을 만들거나. 응용하면 가능성이 높습니다.

랜덤값에 랜덤값을 최소치로 넣을 수 도 있습니다. (값의 오차 범위를 정할 수 있습니다.)
r = rand()%4+r; //<----- 중요. ㅇ_ㅇ;;

6MB -> 3비트 -> 2KB
6MB -> 3비트 -> (랜덤값) 23MB -> 26KB

//--------------------
//랜덤값 줄넘기기 가능 / 랜덤값으로 삭제하기 성공. ㅇ_ㅇ;;
//--------------------
cnt = 0;
int tmp = 0;
{
if(n > 7) //unsigned 라서. 250을 넘는 경우 제외 (비트값을 대충한거라. 생각안해도 됨)
{
continue;
}
r = rand()%4; // <---- 중요한 코드 : ★랜덤 길이'를 사용하면. 압축효율 0%
fn_rand_length(); // 랜덤 문자 8바이트

for( i=0; i < r ; i++)

{

// r = rand_data[i]-'0'; //오타!
// printf("%d ", n);
// printf("%d ", r);

n = n-1;
if(n-1 < 0) // 0보다 작아지면. 마지막 값 변수에 넣기
{
tmp = n;
}
data = rand_data[i];
fwrite(&data, 1, 1, fp_rand); //랜덤 데이터를 계속 입력
}
}
data = '\n';
fwrite(&data, 1, 1, fp_rand); //랜덤 데이터 줄 바꾸기
data = tmp+'0';
fwrite(&data, 1, 1, fp); // 원본에서 랜덤값을. 삭제하고 남은 데이터값
저장 취소
[코멘트] 좋음
2019-02-13 07:37
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
코드 프로젝트를 보니. 몇몇 다양한 방식이 보이네요. ㅇ_ㅇ;;

C# / C++ CLI Micro Chess (Huo Chess)
https://www.codeproject.com/Articles/20736/C-C-CLI-Micro-Chess-Huo-Chess


Why Real Neurons Learn Faster
https://www.codeproject.com/Articles/1275031/Why-Real-Neurons-Learn-Faster

4-bit encoder/decoder
https://www.codeproject.com/Tips/1276497/4-bit-encoder-decoder

Encoding / Decoding 7 bit User Data for SMS PDU (PDU Bit Packer)
https://www.codeproject.com/Tips/470755/Encoding-Decoding-bit-User-Data-for-SMS-PDU-PDU

QR Code Encoder and Decoder .NET Class Library Written in C# (Ver. 1.1.0)
https://www.codeproject.com/Articles/1250071/QR-Code-Encoder-and-Decoder-NET-Class-Library-Writ


//

HSV를 갯수로 분할하면. 작은 수?

[알고리즘 #3] 소수 판별 알고리즘
https://gomcine.tistory.com/entry/알고리즘-3-소수-판별-알고리즘

자리수의 제곱
https://www.acmicpc.net/problem/4881


거듭제곱의 합
https://librewiki.net/wiki/거듭제곱의_합

세제곱의 합 공식 == 자연수의 합 공식의 제곱
니코마코스의 정리(Nicomachus's theorem)

1+2+3+4+5= 15^2 = 225

1^3 = 1
2^3 = 8
3^3 = 27
4^3 = 64
5^3 = 125
1+8+27+64+125 = 225

[자연수의 거듭제곱의 합] 자연수의 세제곱의 합을 제곱의 합으로 바꾸다 | 흥미 광고 소식
https://m.blog.naver.com/PostView.nhn?blogId=alwaysneoi&logNo=100147617007&proxyReferer=https%3A%2F%2Fwww.google.com%2F

A4용지를 42번 접는다면 지구에서 달까지 갈 수 있는 두께가 된다? / YTN 사이언스 | 흥미 광고 소식

기초 음향 이론
https://www.wangoppa.net/56

천체의 관측[9] - 별의 밝기와 거리와의 관계, 겉보기 등급 | 흥미 광고 소식
https://m.blog.naver.com/PostView.nhn?blogId=at3650&logNo=40120433991&proxyReferer=https%3A%2F%2Fwww.google.com%2F

기수와 소수의 상관관계 - 거듭제곱
https://i-dentity.tistory.com/91


거듭제곱(exponentiation,승멱?冪 또는 멱冪)
https://ko.wikipedia.org/wiki/거듭제곱

왜 모든 수의 0제곱은 1인가요
https://www.ebsmath.co.kr/resource/rscView?cate=10095&cate2=10107&cate3=10132&rscTpDscd=RTP10&grdCd=MGRD02&sno=26518&historyYn=study

원의-넓이-계산하는-법
https://ko.wikihow.com/원의-넓이-계산하는-법


//

Cross+A 퍼즐들
http://www.cross-plus-a.com/kr/puzzles.htm

숫자퍼즐 - 국방일보
http://kookbang.dema.kr/newsWeb/20180221/1/BBSMSTR_000000010595/view.do

ランダムグラフの生成
https://stackoverrun.com/ja/q/10126855

//

스노우 큐브
http://www.smilegatemegaport.com/list/view?gameCode=14&lang=ko

C++로 네모로직 풀기
https://m.blog.naver.com/PostView.nhn?blogId=hist0134&logNo=220758265482&proxyReferer=https%3A%2F%2Fwww.google.com%2F

컬러 로직아트
http://blog.yes24.com/blog/blogMain.aspx?blogid=bluenanhee&artSeqNo=10810703

Pic-a-Pix Color
https://steamcommunity.com/sharedfiles/filedetails/?id=864620119
저장 취소
[코멘트] 좋음
2019-02-13 18:52
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
랜덤값 사용방식을 하나 더 알아냈습니다. ㅇ_ㅇ;;

45 32 랜덤값 2개
12___원본 빼기
-----
33
32___랜덤값B 빼기
-----
01___결과값
저장 취소
[코멘트] 좋음
2019-02-15 13:11
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
//-----------------------
//r 과 r+r 이 됨. ㅇ_ㅇ;;
//-----------------------
r = rand()%2;
data = r;
fwrite(&data, 1, 1, fp_rand);

if(0 <= n && n <= 7)
{
printf("x");
data = r+r;
fwrite(&data, 1, 1, fp_rand);
}


//GetTickCount() 도 되기는 하네요...
data = GetTickCount()%2+'0'; //큰 시간 차이로 값이 변경
data = i%2+'0'; //010101 로 증가
저장 취소
[코멘트] 좋음
2019-02-18 21:52
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
//
블록 인터리빙 (같은 비트3개를 인터리빙으로 재배열 - 오류가 생겨도 - 디인터리빙으로 복구)
http://sunkyu.tistory.com/71315


//
순서 정렬 방법 (자동차 와이퍼 처럼. 왼쪽 오른쪽)
111010 인 경우.

1 1 왼쪽 오른쪽
1 0 왼쪽 오른쪽
1 0 3번 정렬됨.

마치. 흔들어주세요. 광고 같네요. ㅇ_ㅇ;;

1000110101011010101011110101010010101010101010110 길이가 아주 길다면.
0000000000000000000000000000000000001111111111111 이 되는 경우가 된.
(횟수/ 방식/ 위치/ 길이) 등의 조합으로. 복구가 가능.

98789982384723894729374293472 의 경우.
22233334447777888889999999999 + 식'으로 정렬이 될때까지. 섞어주는 방식.

ㅇ_ㅇ;; 문자갯수를 줄일 수 있으려나...??


//
0,0 ~ 100,100 사이에 점에 갯수와 크기 DPI 방식도 있네요.
저장 취소
[코멘트] 좋음
2019-02-28 13:39
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
데이터를 위치로 변환

2389428974238 인 값의 위치. ----------------------0 에 체크만 하는 방법
우연하게도. 마법 마녀의 영어가 Witch 네요... ㅇ_ㅇ;;

중복 값과 순서 처리만 잘되면.
매우 효율 적입니다. ㅇ_ㅇ;;
6MB -> 1MB -> 1KB

#include < stdio.h>
#include < stdlib.h>
#include < string.h>
#include < windows.h>
#include < time.h>
#include < crtdbg.h>
#include < math.h>

#include < mmsystem.h>
#pragma comment (lib, "Winmm.lib")


int main()
{
FILE * fpr;
fpr = fopen("test.bmp", "rb");
FILE * fp;
fp = fopen("test.txt", "wt");

srand( time(NULL) );
char buf[100] = {"22"};
int cnt=0;
while(1)
{
char data;
int e;
int i;
for(i=0; i<6; i++)
{
e = fread(&data, 1, 1, fpr);
buf[i] = data;
}
if(e == 0) break;
int len=strlen(buf);

long l = atol(buf);
fseek(fp, 0, SEEK_CUR);
fseek(fp, 0, SEEK_SET);
fseek(fp, l, SEEK_SET);
fseek(fp, l, SEEK_CUR);

fread(&data, 1, 1, fp);
if(data >= '0')
{
fseek(fp, 0, SEEK_CUR);
fseek(fp, 0, SEEK_SET);
fseek(fp, l, SEEK_SET);
fseek(fp, l, SEEK_CUR);
// printf("%c", data);
data = data + 1;
fwrite(&data, 1, 1, fp);
}
else
{
fseek(fp, 0, SEEK_CUR);
fseek(fp, 0, SEEK_SET);
fseek(fp, l, SEEK_SET);
fseek(fp, l, SEEK_CUR);
data = '0';
fwrite(&data, 1, 1, fp);
}
}
printf("\n");
fclose(fpr);
fclose(fp);
system("\"C:\\Program Files\\7-Zip\\7z.exe\" a test.7z test.txt");

return 0;
}
저장 취소
[코멘트] 좋음
2019-03-30 23:46
 win3200  win3200님께 메시지 보내기win3200님을 내 주소록에 추가합니다.win3200님의 개인게시판 가기 
말도 안되는 소리 같아서 소스를 보다가... 그래도 한숨나와서... 그래도... 그래서 끝까지 읽어는 보고 있습니다
저장 취소
[코멘트] 좋음
2019-09-10 15:40
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
[데이타통신] 13.Random Access(ALOHA, CSMA)
http://it-learning.tistory.com/191
저장 취소
[코멘트] 좋음
2019-09-18 11:41
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
// 버로우즈-휠러변환 (순서 정렬 알고리즘)
Templated Burrows-Wheeler transformation - CodeProject
http://www.codeproject.com/Articles/10511/Templated-Burrows-Wheeler-transformation
저장 취소
[코멘트] 좋음
2019-10-22 10:33
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
압축은 자릿수 빼기
-99999
-9999
-999
-99

복구는 반대로 한다.
자릿수 더하기
+99
+999
+9999
+99999


빼다 보면. 오른쪽 끝 숫자'가. +1 씩 증가 된다. ㅇ_ㅇ;;
저장 취소
[코멘트] 좋음
2019-10-26 13:15
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
데이터를. 가장 압축 효율이 좋은 (필터) 파일'에 놓는 방식. ㅇ_ㅇ;;

학생 학교 지정.
직업 자격 지정.
병사 보직 지정.해주는것과 비슷하다.

위치 / 자릿수 / 읽는 방법 / 반전 / 반복값 / 간격 띄우기 / 지우기 - 파일'로 분리. 필터.

분리 수거... 잘 되는 곳에 놓는다... ㅇ_ㅇ;;

너는 여기 가면 100점'에 놓는다.

필터 펜 ㅇ_ㅇ?? 피터펜?
펜'을 만나면. 100점이 되니. 말 되네...

bool r;
r = 함수 0만들기 공식A() if( r == true ) { printf("0만들기 공식A 성공 \n"); return ; }
r = 함수 0만들기 공식B() if( r == true ) { printf("0만들기 공식B 성공 \n"); return ; }
r = 함수 0만들기 공식C() if( r == true ) { printf("0만들기 공식C 성공 \n"); return ; }
r = 함수 0만들기 공식D() if( r == true ) { printf("0만들기 공식D 성공 \n"); return ; }

데이터 압축 효율을 알 수 있게되면. 최적의 데이터 위치를 선정할 수 도 있게 된다.

//
데이터 오리
데이터 개
데이터 닭

0 = 공식 오리 ( 오리 )
멍꽥 = 공식 개 ( 오리 );
멍꼬 = 공식 닭 ( 개 );
0 = 공식 개 ( 개 );

뿐 만 아니라. 필터'를 순서 + 조합'으로 사용도 가능.
저장 취소
[코멘트] 좋음
2019-11-07 10:48
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
Packed Decimal Instructions ★★★★ To convert from zoned to packed
http://faculty.cs.niu.edu/~byrnes/csci360/notes/360pack.htm

1바이트의 절반(1/2)은. 니블 Nibbles ★ 팩 연산. 언팩(Unpack) 입출력 ★ 카노맵 ★ 논리식 회로도 만들기
http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=52&MAEULNo=20&no=52311&ref=52311

용량과 성능 속도의. 큰 차이와 관계가. 매우 적어지게 됩니다.

- rand() % 2 ~ 16 랜덤 데이터의 나머지값 = 초고속 + 압축 효율 0% 성공
- 카르노맵'을 활용한 회로 설계
- 윈도우의 상위 바이트. 하위 바이트 설계
- MMX Pack UnPack 도입

zoned packed 상위 하위 니블 (1/2 바이트)
1바이트의 팩 : 연산
1바이트의 언팩 : 입출력
여러가지 근거로 보아서. 가능성이 있습니다. ㅇ_ㅇ;;

추가로.
- 팩토리얼'은 중복없는 경우의 수 : 몇번째 값이. 어떤 값의 조합인지. 알 수 있게 되었다.
- 자릿수 빼기는 횟수 간격이 일정
- 윈도우 RAMDISK로 파일 복사시. 다른 하드로 1초 만에 옮겨지는 현상 600MB 정도.
- CreateFileMapping() 2배 빠름.


DirectX SDK 9 예제에 MMX 예제가 있음
MMXSwarm 샘플: CImage 및 Visual C++ MMX 지원 설명
https://msdn.microsoft.com/ko-kr/library/0aws1s9k(v=vs.90).aspx


VCSamples/VC2008Samples/MFC/general/MMXSwarm at master · microsoft/VCSamples · GitHub
http://github.com/microsoft/VCSamples/tree/master/VC2008Samples/MFC/general/MMXSwarm


High performance computing from C++ to MMX - CodeProject
http://www.codeproject.com/Articles/4662/High-performance-computing-from-C-to-MMX


Index of ftp://oscar3-2.ip.peterstar.net/Distributives/Microsoft/Visual Studio.NET/Disk_2/Samples/VC/MFC/general/MMXSwarm
http://www.mmnt.net/db/0/0/oscar3-2.ip.peterstar.net/Distributives/Microsoft/Visual%20Studio.NET/Disk_2/Samples/VC/MFC/general/MMXSwarm

android-libs/mmx.h at master · edubart/android-libs · GitHub
http://github.com/edubart/android-libs/blob/master/jni/SDL-hg/src/render/mmx.h

Finer Points of using SSE Instructions for Android* media apps on the Intel® Atom™ Platform | Intel® Software
http://software.intel.com/en-us/android/articles/finer-points-of-using-sse-instructions-for-android-media-apps-on-the-intel-atom-platform
저장 취소
[코멘트] 좋음
2019-11-08 13:50
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
Big Endian, Little Endian, Endianness: Understanding Byte Arrangements in Digital Systems - Technical Articles
http://www.allaboutcircuits.com/technical-articles/big-endian-little-endian-endianness-byte-arrangement-digital-systems/

1바이트를 오른쪽에서 왼쪽으로 읽기

빅 인디언 - 아래 --> 위
리틀 인디언 - 위 --> 아래
저장 취소
[코멘트] 좋음
2019-11-12 08:25
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
16진수 255 255 자릿수 빼기

//
Binary Fractions 이진 분수 표현
피보나치 Fibonacci Number Sequence 수열
Fixed-Point Number Representation 고정 소수점 표현
2 곱하기 ㅇ_ㅇ;;

(2) The Magical Fraction 1/999,999,999,999,999,999,999,998,999,999,999,999,999,999,999,999 - YouTube
http://www.youtube.com/watch?v=i2rDbfhRHok


For Now: Static Hierarchies and Binary Fractions in PostgreSQL
http://seespotcode.net/assets/fornow/static_hierarchies.html

Fixed-Point Number Representation - Introduction to DSP - OpenStax CNX
http://cnx.org/contents/8D0YvnW1@7.1:yXZdu-pq@2/Fixed-Point-Number-Representation


그저 그런 널널한 얘기들........ : Binary numeral system
http://engjjang.egloos.com/476170

(2) Floating Point Representation: Example - YouTube
http://www.youtube.com/watch?v=z9zKNiHPHGc


Music - Musical Scale
http://www.palmprints.com/guy/BookMusic.html
저장 취소
[코멘트] 좋음
2019-11-12 18:45
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
윈도우 빈 폴더 압축 ★★★★★ 압축 효율 0%

//
알고보니. 착각 ㅇ_ㅇ;; 이름이 같아서였다... ㅇ_ㅇ;;
대신. RAMDISK 에 폴더 복사시. 윈도우 속도 향상. 발견

//
더불어서. tree > test.txt 압축도. 압축용량에 10%정도로. 압축이 잘 된다. ㅇ_ㅇ;;

//
윈도우 빈 폴더 == 트리 모양
32,000 빈 폴더 (한글이름) - 압축 결과
7zip 33KB
arc 9KB
zip 9MB

장점
RAMDISK 를 사용하면. 약간 더 빠르다.
압축이 잘 된다.

단점
HDD 에서는 너무 느리다.
폴더 자체에 용량은 없지만. 윈도우 하드 용량이 늘어난다. 100MB 용량이 가득 해짐.

개선
파일 압축을 전부 풀지 않고. 압축 된 상태에서. 필요한 부분만. 읽는 방식
저장 취소
[코멘트] 좋음
2019-11-15 16:25
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
네트워크 바이트 순서 == Big Endian
저장 취소
[코멘트] 좋음
2019-11-16 08:49
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
10만개의 빈파일

7zip 158 KB
arc 10 KB 근데. 마지막에. 압축 속도가 많이 느려짐. RAMDISK 에서 했는데도. 10만개. 2분. 어쨌든. 10KB 달성. ㅇ_ㅇ;;

생성시간
수정시간 - 변경된 날짜'만 적용되는거 같은데... ㅇ_ㅇ??
액세스시간

예제 다운로드 (다운 안되면. 주소에서. 갱신하면. 다운 됨)
http://cfile215.uf.daum.net/attach/99B0C44C5DD4FDAF1644BC
저장 취소
[코멘트] 좋음
2019-12-20 09:55
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
인공지능의 이해
http://www.aistudy.com/cognitive/ai_back.htm
저장 취소
[코멘트] 좋음
2020-01-14 18:43
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
- FFMPEG 가속 + 압축 ㅇ_ㅇ;; 30배 정도 확인
- 3차원 모델 - Draco vs. Open3DGC 25 배 압축 OpenCTM Java3D VRML wrl 75 MB - ctm3 MB
- MP3 압축 차이값 압축 10배 이상
http://heroes.nexon.com/Community/userbbs/view?page=7&category=0&postno=444389
저장 취소
[코멘트] 좋음
2020-01-18 17:10
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
.Net Framework 에서 Grpc 구현 - 10배 이상 압축 성능 - 원격 프로시저 호출
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNO=8&no=179410&ref=179410&page=1
저장 취소
[코멘트] 좋음
2020-01-22 10:21
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
RGB 문자형 숫자 압축 12 KB
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=83&MAEULNo=28&no=8885

http://cfile233.uf.daum.net/attach/99890F395E279AB2286F88

// -------------------------------------------------------------------------------
Project1.exe 파일을 실행하고. 윈도우 UI 에서. 1 ~ 9 번 키를 누르면. 화면에 이미지가 보입니다.

8번과 9번을 누르면. 12 MB 에 test8.txt 와 test9.txt 파일이 생성 됩니다.
test8.txt 와 test9.txt 파일을. 7zip .arc .zip 등으로 압축하면. 압축효율이 0% 로. 12 KB 압축 파일이 생성됩니다. ㅇ_ㅇ;;

Project1.exe --> 8 9 번 키 입력 --> test8.txt test9.txt 파일 생성 --> 압축

// -------------------------------------------------------------------------------
원래는 JPG와 BMP이미지 RGB데이터 비교 차이값 압축을 하려던건데.
그냥. RGB 를 문자형 숫자로 압축했더니. 압축 효율이 매우 좋아졌네요. ㅇ_ㅇ;;
저장 취소
[코멘트] 좋음
2020-02-01 20:47
 shintx  shintx님께 메시지 보내기shintx님을 내 주소록에 추가합니다.shintx님의 개인게시판 가기 
// bsc.exe ★ GPU .NET - GPU 가속 압축 ㅇ_ㅇ;;
Compression library using Nvidia's CUDA - Stack Overflow
http://stackoverflow.com/questions/456829/compression-library-using-nvidias-cuda

Breakthrough in CUDA data compression
http://www.wave-access.com/public_en/blog/2011/april/22/breakthrough-in-cuda-data-compression.aspx

winrar, winzip or 7zip on GPU like the topic says - NVIDIA Developer Forums
http://devtalk.nvidia.com/default/topic/397951/cuda-programming-and-performance/winrar-winzip-or-7zip-on-gpu-like-the-topic-says/

GitHub - tidepowerd/GPU.NET-Example-Projects: Example projects for GPU.NET
http://github.com/tidepowerd/GPU.NET-Example-Projects

GitHub - dingwentao/GPU-lossless-compression: GPU CUDA Lossless Compressors Survey
http://github.com/dingwentao/GPU-lossless-compression

High performance data compression library
http://libbsc.com/


// RGB 문자형 숫자 파일 --> 압축... 성공 ㅇ_ㅇ;; 10 KB 약간 더 크지만. 0.1초 속도 ㅇ_ㅇ;;

bsc.exe e 7.txt 7.bsc -G

.txt 12 MB --> 0.400 초 --> .bsc 429 KB
.txt 12 MB --> 0.093 초 --> .bsc 025 KB -G 옵션 ㅇ_ㅇ ! 성공!

-G Enable Sort Transform acceleration on NVIDIA GPU, default: disable
저장 취소
코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.