nodejs 문자열을 gzip으로 압축하기 > javascript
javascript

nodejs 문자열을 gzip으로 압축하기

조회 412회 댓글 0건

chat GPT API를 통해서 물어본것에 대한 테스트 인데요.

잘 되네요.


별도의 모듈설치 없이 그냥 실행 되었습니다. 제가 전에 다른것 하면서 설치 되었는지는 확인 안해 봤습니다.


  // zlib 모듈을 불러온다.
  const zlib = require('zlib');
  const fs = require('fs');

  // 압축할 문자열
  const str = '압축할 문자열';

  // gzip으로 압축한다.
  zlib.gzip(str, (err, buffer) => {
    if (!err) {
      // 압축된 버퍼를 문자열로 변환한다.
      const gzip_base64 = buffer.toString('base64');
      console.log(gzip_base64);

      // 파일로 저장
      fs.writeFileSync('test_output_binary.txt', buffer);
      fs.writeFileSync('test_output_base64.txt', gzip_base64);

      // 위에서 압축이 된것
      zlib.gunzip(buffer, (err, result) => { // zlib 모듈의 gunzip 메소드를 사용하여 압축 해제
        if (err) throw err; // 에러 발생 시 예외 처리
        console.log(result.toString()); // 압축 해제된 결과 출력
      });

      // base64 디코딩
      const buffer2 = Buffer.from(gzip_base64, 'base64');
      let str = decodeBase64Gzip(buffer2);
      console.log('함수결과: ', str);
      console.log(str);

    } else {
      console.error(err);
    }
  });


  function gunzip_common( buffer ) {
    zlib.gunzip(buffer, (err, result) => { // zlib 모듈의 gunzip 메소드를 사용하여 압축 해제
      if (err) throw err; // 에러 발생 시 예외 처리
      console.log(result.toString()); // 압축 해제된 결과 출력
    });

    return result;
  }


/**
 * [Description for decodeBase64Gzip]
 *
 * @param mixed encoded
 *
 * @return [type]
 *
 */
function decodeBase64Gzip(encoded) {
  // base64 디코딩
  const decoded = atob(encoded);
  // gzip 디코딩
  const inflate = new pako.Inflate();
  inflate.push(decoded, true);
  // 결과 반환
  return inflate.result;
}

// // 예제
// const encoded = "H4sIAAAAAAAA/8vPBgBH5z+JAgAAAA==";
// const decoded = decodeBase64Gzip(encoded);
// console.log(decoded);


// const zlib = require('zlib'); // zlib 모듈 불러오기
// const buffer = Buffer.from('H4sIAAAAAAAA/8vPBgBH3Wt2AgAAAA==', 'base64'); // base64로 인코딩된 문자열을 Buffer로 변환
// zlib.gunzip(buffer, (err, result) => { // zlib 모듈의 gunzip 메소드를 사용하여 압축 해제
//   if (err) throw err; // 에러 발생 시 예외 처리
//   console.log(result.toString()); // 압축 해제된 결과 출력
// });

// const fs = require('fs'); // fs 모듈 불러오기
// const data = '이것은 파일에 쓰여질 문자열입니다.'; // 파일에 쓰일 문자열 데이터
// fs.writeFile('example.txt', data, (err) => { // example.txt 파일에 data를 쓰기
//   if (err) throw err; // 에러 발생 시 예외처리
//   console.log('파일에 성공적으로 쓰여졌습니다.'); // 파일 쓰기 성공 시 메시지 출력
// });

// const fs = require('fs'); // fs 모듈 불러오기
// const data = '이것은 쓰여질 문자열입니다.'; // 쓰여질 문자열
// try {
//   fs.writeFileSync('output.txt', data); // 동기식으로 파일 쓰기
//   console.log('파일 쓰기 완료'); // 파일 쓰기 완료 후 로그 출력
// } catch (err) {
//   console.error(err); // 에러 발생 시 에러 로그 출력
// }


위 실행 결과는 아래와 같습니다.

# node nodejs_gzip_test.js 

H4sIAAAAAAAAAwETAOz/7JWV7LaV7ZWgIOusuOyekOyXtPKrzeATAAAA


몇 가지 더 테스트 해봤는데요.

도움이 될 수도 오히려 시간만 들어 갈 수도 경우에 따라서 다를 수 있겠습니다.


앞으로 GPT 더 업그레이드 되고 더 학습이 되면 왠만한 모듈의 경우는 구글링이 많이 줄어들듯 합니다.

그러면 앞으로 이와 관련된 컨텐츠가 있는 사이트들은 위협적이 되겠습니다.

막는 방법은 GPT가 학습을 못하게 프라이빗 정책을 펴는 쪽으로 가지 않을까 싶습니다. 이건 양날의 칼 같아서 어찌 될지 궁긍하기도 합니다.


09b687c0366b2d4ac6f5d03a78d3d8b9_1680397614_4225.png
달리에서 nodejs gzip 으로 해달라고 했더니 이상한게 나왔네요.


● 아래는 GPT API 사용하는 확장 프로그램에 관한 것입니다.

   - [vscode] 코딩을 도와주는 GPT - AICodeHelper > 개발관련  

  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 92건 1 페이지
  • profile_image 프로그래머가 아니라 일반인이면 PDF 페이지번호 추가해주는 사이트가 있으니 아래를 참고하시면 됩니다.https://tools.pdf24.org/ko/add-page-numbers#s=1687481961009여기선 nodejs와 pdf-lib 설치에 대해선 언급하지 않습니다.아래는 간단한 소스 입니다.PDF파일에 페이지 번호가 없어서 인쇄하는데 있어 페이지수가 적으면 문제가 안되지만 수십페이지만 되어도 읽을때 문제가 될 수 있습니다. 페이지가 바…
  • profile_image 파일저장이나 또는 가져올때등 상대경로로 호출 하는 경우도 있지만때론 전체 경로를 알아야 되는 경우가 있습니다.그럴때 현재 디렉토리 기준으로 처리하면 좋은때 이럴때 사용 합니다.  // 현재 디렉토리   const _DIR_   = process.cwd();  php의 __DIR__ 과 같은 역활 입니다.확인 결과 위 예제는 잘 되는 것입니다. 현재 V16 버전에서 문제 없었습니다.* 사용한곳은 아래 입니다. 파일을 저장할때 유용합니다.  [no…
  • profile_image 현재 nodejs 실행중인 유저를 알아내기 위한 것입니다.같은 프로그램을 쉘에서 실행하기도 하고 웹서버를 통해서 실행하기도 합니다.그런 경우 파일을 쓰게 되면 문제가 발생합니다.  import os from "os";  let osUser  = os.userInfo().username;  if ( osUser  == 'root' ) {    console.log('루트 유저: ', osUser);  }  else {    console.log(…
  • profile_image 아작스로 서버에 전송하는 기능까지 테스트 된것입니다.jQuery 버전에 따라서 ajax 전송하는 방식이 약간 다른 부분이 있으니 버전 참고하세요.본인이 현재 사용하는것과 여기 샘플의 버전이 비슷하면 문제가 되지 않을듯 싶습니다.<!DOCTYPE html><html lang="ko"><head>  <meta charset="UTF-8">  <meta http-equiv="X-UA-Compatible…
  • profile_image 백엔드의 PDF-LIB에서 폰트를 지정하지 않으면 오류가 발생 합니다.영문은 문제 되지 않지만 한글의 경우 오류를 만나게 됩니다.그렇기 때문에 커스텀 폰드를 지정해야 하는데 스탠다드폰트가 아닌 별도 폰트를 사용할 때 필요한 부분입니다.Error: WinAnsi cannot encode "한" 이러한 오류를 만나게 된다면 한글을 사용할 수 없는 폰트이기 때문입니다.    // https://pdf-lib.js.org/#examples  impor…
  • profile_image 특정 문자로 구분자를 줘서 문자열로 만들어주는 함수인데요PHP의 implode에 해당하는 기능입니다.배열의 경우는 간단하게 join 메소드를 사용하면 되는데요. 객체는 안되기 때문에 만들어진것입니다.  let aa = {    'bb1' : 345,    'cc'  : 23,    'ee'  : 'abc'  }  let bb = ['name','2',33,5,'age'];    /**   * 문자열 구분자로 합치기   *   * @param s…