9월, 2020의 게시물 표시

React Project 만들기

 yarn global add create_react_app   yarn global add npx   npx create-react-app myapp   yarn add prop-types    package.json과 같은 경로에 .env 파일 만듬 .env 안에 NODE_PATH=src port  설정도 .env 안에 yarn add react-router-dom ----react 구조----- * index.js - render App.js * App.js, GlobalStyle.js   render Router.js,GlobalStyle.js  THEN export App * Router.js   감싸기 < Router >      <>        < Header   />        < Switch >          < Route   path = "/"   exact   component = { Home }   />          < Route   path = "/tv"   component = { TV }   />          < Route   path = "/search"   component = { Search }   />          < Route   path = "/movie/:id"   component = { Detail }   />          < Route   path = "/show/:id"   component = { Detail }   />          < Redirect   from = "*"   to = "/"   />        </ Switch >      </>    </ Router > THEN export ()=> *Routes

SQL,DB 에서 현재 시간을 ms 시간대로 표현하기

 FLOOR(UNIX_TIMESTAMP(NOW(3))*1000)

리눅스에있는 대용량 파일들을 S3로 옮기는 방법

 https://qiita.com/alokrawat050/items/56820afdb6968deec6a2 https://superuser.com/questions/279986/uploading-files-to-s3-account-from-linux-command-line

요즘 결제 시스템 방식

 서류준비가 복잡함 심사같은걸 받아야함 결제시스템이 들어가면 환불 시스템도 무조건 들어가야함 아임포트 기준으로는 1. 걔네가 제공하는 인터페이스를 프론트쪽에서 무조건 써야함 2. 사용자가 정보를 입력하면 결제사쪽으로 정보를 보내고 3. 결제사에서는 특수코드나 영수증(애플 기준) 같은걸 줌(사용자 기준에선 이 시점에 결제는 이미 된거임) 4. 결제사로부터 받은 특수코드와 부가 정보들을 백엔드로 보냄 5. 백앤드에서 결제사가 지정해준 API로 특수코드나 영수증을 보냄 6. 애플은 바로 결제 정보내역을 보내주고, 아임포트같은 곳들은 authorization token을 보내줌 7. 아임포트 기준으로는 authorization token을 또다른 api에 실어서 보내줘야 결제내역을 보내줌. (이 단계가 끝나야 회사측에서는 결재내역 증거를 볼수 있음)

S3 방식 이미지, 오디오 클라로 넘겨주는 방법

 이미지 쪽-> 결론: 걍 아마존 s3 파일 주소를 집적 주면 된다. 하지만 indj 서버 구조는 페이크용 api 주소를 한번 거치기 때문에 페이크용 api->리다이렉트 방식으로 가면 끝이다. channel.controller.js router . route ( "/image/:type/:filename" ). get ( async  ( req ,  res ,  next )  =>  { const   imagePath   =   ` ${ config . file . path } /image/ ${        req . params . type      } / ${ encodeURIComponent ( req . params . filename ) } ` ;      res . redirect ( imagePath ); config.file.path 부분엔 s3 메인 베이스 주소를 넣어주면 된다. 오디오 쪽-> 이미지와 마찬가지로 걍 아마존 오디오 파일 주소를 주면 된다 페이크 api를 한번 거지기 때문에 마지막 api 종점지에서 send(filePath) 이렇게 하면 걍 문자열을 던져 주기 때문에 강제로 aws S3 파일 주소로 이동시키게 하면 끝이다. playtime skip은 App player가 s3 쪽으로 보내면 s3가 알아서 처리해준다 music.controller.js router . route ( "/file" ). get ( async  ( req ,  res ,  next )  =>  { // 파일 읽기      let   filePath   =   ` ${ config . file . path } /audio/high/ ${ encodeURIComponent (        file [ 0 ]. file . split ( "_album" )[ 0 ]     ) } .mp3` ;      let   folderPath   =   `audio/high/ ${ enc

S3 방식 스트리밍 서버 음악 플레이 타임 추출

  let   duration   =   await   getAudioDurationInSeconds (        `https://indj.s3.ap-northeast-2.amazonaws.com/audio/aac/HONNE(%ED%98%BC%EB%84%A4)-Coastal+Love.aac`     );

찬란님 오실때 물어볼것

 fulltext 검색에 들어갈 단어 정규화 원리  채널검색에 채널주인 검색초함 어캐 할것인지   ai~ai3, similarity 분석 streaming server 멀티코어 어떻게 할것인지 1초에 채널 한개씩 생성해봤더니 streaming 서버가 죽음 streaming pm2 log파일 보는방법 아마존에 12TB 파일을 한번에 옮기는 방법 new   Date (). getTime ()  -   new   Date ( latestStreamTime ). getTime () 여기서 new   Date (). getTime () 값이 new   Date ( latestStreamTime ). getTime () 보다 작게 나오는 버그
 lib/awsFileExists.js -> const   aws   =   require ( "aws-sdk" ); const  {  config  }  =   require ( "../../config" ); // aws S3 const   s3   =   new   aws . S3 (); aws . config . update ({    secretAccessKey:   config . aws . secret_access_key ,  // Not working key, Your SECRET ACCESS KEY from AWS should go here, never share it!!!    accessKeyId:   config . aws . access_key_id ,  // Not working key, Your ACCESS KEY ID from AWS should go here, never share it!!!    region:   config . aws . region ,  // region of your bucket }); exports . getFileFromS3   =   async  ( fullPath )  =>  {    var   params   =  {      Bucket:   config . aws . bucket ,      Key:   fullPath ,   };    try  {      await   s3 . headObject ( params ). promise ();      return   true ;   }  catch  ( error ) {      return   false ;   } }; router-> const   awsFileExists   =   require ( "../../lib/awsFileExists" ); router . route ( "/" ). get ( async  ( req ,  res )  =>

AWS-MULTER-S3-SHARP key, config, 세팅 value

  aws:  {      access_key_id:   " https://aws.amazon.com/ko/blogs/security/wheres-my-secret-access-key/ " ,      secret_access_key:   " https://aws.amazon.com/ko/blogs/security/wheres-my-secret-access-key/ " ,      region:   "ap-northeast-2" ,      bucket:   "indj" ,   }, Key:   경로/파일이름 ACL:   "public-read" , Lib 에 만든 s3용 multer upload uploadS3.js-> const  {  config  }  =   require ( "../../config" ); // AWS const   aws   =   require ( "aws-sdk" ); const   multer   =   require ( "multer" ); const   s3Storage   =   require ( "multer-sharp-s3" ); //const config = require("../../config.json"); const   crypto   =   require ( "crypto" ); const   path   =   require ( "path" ); // aws S3 const   s3   =   new   aws . S3 (); aws . config . update ({    secretAccessKey:   config . aws . secret_access_key ,  // Not working key, Your SECRET ACCESS KEY from AWS should go here, 

AWS S3 Nodejs 파일삭제

 Lib->deleteS3.js const  {  config  }  =   require ( "../../config" ); // AWS const   aws   =   require ( "aws-sdk" ); // aws S3 const   s3   =   new   aws . S3 (); aws . config . update ({    secretAccessKey:   config . aws . secret_access_key ,  // Not working key, Your SECRET ACCESS KEY from AWS should go here, never share it!!!    accessKeyId:   config . aws . access_key_id ,  // Not working key, Your ACCESS KEY ID from AWS should go here, never share it!!!    region:   config . aws . region ,  // region of your bucket }); exports . delete   =  ( fullPath )  =>  {    return   s3 . deleteObject (     {        Bucket:   config . aws . bucket ,  // 사용자 버켓 이름        Key:   fullPath ,  // 버켓 내 경로     },     ( err ,  data )  =>  {        if  ( err ) {          throw   err ;       }        console . log ( "s3 deleteObject " ,  data );     }   ); }; router-> router . route ( "/" ). get ( async  ( req ,  res )  =>  {    //'thumbnail

SSL Linux 적용버전

 PM2 사용법 설치 npm install pm2 -g 무중단 서비스 시작 (*) 코어 2개씩 돌릴 때 인자값을 2로 설정한다. CPU 개수가 많으면 많을수록 조정해서 줄 수 있다. pm2 start authServer.js -i 0 2 --watch pm2 start app.js -i 0 2 --watch pm2 프로세스 확인 pm2 monitor CentOS 환경에서의 CPU 갯수 확인 grep -c processor /proc/cpuinfo ==================================================================== Nginx 엔진x의 에러 유무 확인 sudo nginx -t 엔진x 리버스 프록시 설정 : 다른 도메인:80포트로 각각 실제 포트가 다른 내부 서비스로 지정해서 사용가능 설정 내용 - 도메인1 (인증서비스) : auth-minokuma.duckdns.org => localhost:4000 - 도메인2 (앱 서비스) : minokuma.duckdns.org => localhost:3000 sudo vi /etc/nginx/nginx.conf ----------------------------------------------------------------------------------------------- # For more information on configuration, see: #   * Official English Documentation: http://nginx.org/en/docs/ #   * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.