[컴] 메신저 별 서버 저장 기간

카톡 / 라인 / 서버 보관 / 대화내용 보관 기간

한국 메신저 대화내용 서버 보관기간

2014년 기준이여서 2019년 현재에는 달라졌을 수 있다. 참고 수준으로 알아두자.


  • 카카오톡 
    • 서버 데이터 저장기간을 2~3일 정도로 줄이기로 결정. (스크린샷 참고)
    • 서버에 보관이 안되기 때문에 누군가의 폰에 대화내용이 남아있지 않다면, 과거 대화는 복구할 수 없다.
  • 라인 : 타이머챗을 이용한 대화와 일반 대화내용은 암호화된 상태로 서버에 저장
    • 라인 '타이머챗' 기능 : 수신자가 메시지를 확인한 이후부터 최소 2초, 최장 1주일 뒤에 메시지가 자동 삭제된다. 그 순간 서버에 저장돼 있던 메시지도 사라진다.
    • 하지만 암호키가 저장된 위치와 서버 저장기간을 공개하지 않고 있다. 라인 측은 "서버 저장기간은 최소한의 기간으로 정확한 기간은 대외비"라며 "암호키의 저장위치 역시 공개할 수 없다".
  • SK플래닛 미국법인 틱톡플래닛의 '프랭클리'
    • 프랭클리 수신자가 메시지를 확인한 뒤 10초가 지나면 발신자와 수신자의 스마트폰은 물론 서버에서 메시지가 자동 삭제
  • 네이트온 : 6개월
    • 사용자가 메시지를 삭제하면 그 즉시 서버에서 메시지가 삭제
  • 마이피플 : 3개월
    • 사용자가 메시지를 삭제하면 그 즉시 서버에서 메시지가 삭제


Screenshots

카카오톡: https://cs.kakao.com/helps?articleId=470002560&service=8&category=24&device=1&locale=ko



References

  1. 카톡 아닌 메신저, 대화는 며칠이나 보관?, 2014.10.10

[컴][js] AdonisJS v3 ---> v4 에서 Encryption 문제

암호화 문제 / 마이그레이션 / encryption / simple encrypt /

Encryption (AdonisJS v3.x --> AdonisJS v4.x migration)

최신버전의 Adonis Encryption/index.js 에서 보면 아래처럼 Encryptor 를 호출할 때 object 를 parameter 로 보낸다.

하지만 옛버전의 Adonis Encryption/index.js 를 보면 그냥 string 을 parameter 로 넘긴다.

// latest version
// <root>\node_modules\@adonisjs\framework\src\Encryption\index.js
const Encryptor = require('simple-encryptor')
...
class Encryption {
  constructor (appKey, options) {
    /**
     * Throw exception when app key doesn't exists.
     */
    if (!appKey) {
      throw GE.RuntimeException.missingAppKey('Encryption')
    }
    this.appKey = appKey
    this.encryptor = Encryptor(Object.assign({ key: appKey }, options))
  }
  ...
// old version
// <root>\node_modules\@adonisjs\framework\src\Encryption\index.js
const Encryptor = require('simple-encryptor')
...
class Encryption {
  constructor (Config) {
    const appKey = Config.get('app.appKey')

    /**
     * Throw exception when app key doesn't exists.
     */
    if (!appKey) {
      throw GE.RuntimeException.missingAppKey('Encryption')
    }

    this.encryptor = Encryptor(appKey)
  }
  ...

simple-encryptor 의 option 이 변경된다.

이로 인해 발생하는 문제는 simple-encryptor 의 default option 이 변경된다.
// simple-encryptor
module.exports = function(opts) {
  if( typeof(opts) == 'string' ) {
    opts = {
      key: opts,
      hmac: true,
      debug: false
    };
  }
  var key = opts.key;
  var verifyHmac = opts.hmac;
  var debug = opts.debug;
  var reviver = opts.reviver;
  ...

해결책

그래서 혹시 이전의 option 을 사용하려 한다면 자신의 AppProvider 를 만들어서 사용해야 할 듯 하다. 아래 소스를 참고하자.
그리고 app.js 에 등록만 해주면 된다. 아래 글을 참고하면 된다.

[컴][nodejs] nodejs 의 crypto module 사용시 주의점



nodejs 의 crypto module 사용시 주의점

nodejs version 과 openssl


대략적으로 NodeJS 는 자체적으로 OpenSSL 을 포함하고 있다.(code)

아래 링크를 가면, nodejs version 에 따른 openssl 버전을 확인할 수 있다.

crypto module 사용시 주의점

How to use the crypto module | Node.js 를 보면 crypto 모듈은 openssl 를 이용한다. 그래서 openssl version 의 특별한 변화가 생기면, nodejs 의 openssl 도 영향을 받는다.

md5 --> sha256,  openssl version 1.1.0

openssl version 이 1.1.0 으로 올라가면서 기본 digest algorithm 이 md5 에서 sha256 으로 변경됐다.

nodejs 에서 openssl version 을 1.1.x 로 옮긴 것은 nodejs 의 version 이 10.0.0 이 된 순간이다.(참고)

그러므로, v10 미만을 사용할 때와 v10 이상을 사용할 때 만약 crypto module 을 사용하고 있다면 주의가 필요하다.

error

OpenSSL 1.0.x 버전에서 얻은 값을 OpenSSL 1.1.x 로 decrypt 를 시도하면 아래와 같은 error 가 발생한다.

error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt

알고리즘 선택

아래 처럼 algorithm 을 명시해주는 것이 나을 수 있다.
var cryptoKey = crypto.createHash('sha256').update(key).digest();

crypto 사용 예제

See Also

  1. 쿠...sal: [컴][알고리즘] AES 암호화 설명

[컴] git flow 자료들

gitflow / git flow 처음 시작 / git clone 후 git flow 적용 /



git flow

Extensions for Visual Studio Code

Git flow cheat sheet

git flow 를 사용하는 git repository 를 사용

1. git clone https://<git-address>

git clone 으로 source 를 가져온다.

2. git flow init

Which branch should be used for bringing forth production releases?
   - develop
   - master
Branch name for production releases: [master]

Which branch should be used for integration of the "next release"?
   - develop
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/]
Bugfix branches? [bugfix/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
Hooks and filters directory? [C:/a/prog/mainsource/.git/hooks]

git flow feature 사용

3. git flow feature start

git flow feature start 를 이용해서 feature branch 를 만들 수 있다. 이때 어느  branch 에서 만들어도 develop branch에서 만들어준다.

4. git flow feature rebase

base 를 develop branch 의 최신 상태로 rebase 해준다.(참고)

5. git flow feature finish

현재 feature 를 develop branch 에 merge 를 해주고 --> branch 를 없애고 --> develop branch 로 돌아간다.




[컴] 비디오 파일 보관 하기 좋은 곳

video repository / 스토리지 / storage

무료 비디오 파일 저장소

자신이 찍은 비디오를 보관하고 싶을 때 어디를 사용하면 될까? 일단 무료중에 현재 생각나는 것들을 정리해 봤다.

  • 구글 포토
    • 이건 원본으로 저장할 때는 무한이 아니다. 하지만 품질을 high quality 로 설정하면 용량에 제한없이 저장된다.
    • https://support.google.com/photos/answer/6193313?co=GENIE.Platform%3DAndroid&hl=en
  • git lfs 
    • github : 용량이 부족하고 느리다.
  • vimeo
    • 좋다. 원본 다운로드도 가능하다. 
    • 다만 비디오 총 용량은 5GB 의 한도가 있다.(Basic)
    • 일주일에 올릴 수 있는 크기가 500MB 로 제한된다.(Basic)
  • youtube
    • 원본을 받을 때는  전 비디오를 한번에 받아야만 한다.
    • 하나씩 받을 수 있지만, 원본 파일을 받을 수는 없다.
    • https://support.google.com/youtube/answer/56100?hl=en
  • telegram
    • upload/download 속도가 느리다.(upload 속도보다는 download 속도가 빠르다.)
    • 저장용량은 무한이다.
    • bot 을 이용하면, 외부 url 을 만들 수도 있다.
      • - https://t.me/TGhost_bot
      • - https://telegram.me/tlgurbot
      • 텔레그램 api 에서 20mb 이하 파일만 가능하다. 그래서 외부링크를 만들어주는 bot이 지원가능한 파일사이즈도 20mb 이하 만 가능하다.



선택

현재로서는 5GB 이내라면 vimeo 가 최선인듯 싶다. 다만 텔레그램을 사용하고 있다면, telegram 을 추천하고 싶다. 다만 backup 용으로만 적절하다. 바로바로 시청을 하고 싶다면, 아무래도 vimeo 가 더 적당할 듯 싶다.


[컴] git rebase 설명

git rebase / 깃 리베이스 /

git rebase

git rebase 는 아래처럼 설명이 된다.

Git - Rebase하기
  1. 실제로 일어나는 일을 설명하자면 일단 두 브랜치가 나뉘기 전인 공통 커밋으로 이동하고 나서
  2. 그 커밋부터 지금 Checkout한 브랜치가 가리키는 커밋까지 diff를 차례로 만들어
  3. 어딘가에 임시로 저장해 놓는다.
  4. Rebase할 브랜치(역주 - experiment)가 합칠 브랜치(역주 - master)가 가리키는 커밋을 가리키게 하고
  5. 아까 저장해 놓았던 변경사항을 차례대로 적용한다.

그림 3-29는 이러한 과정을 나타내고 있다.

다른 vcs 와 연관지어서...

이보다 이해를 돕기 위해 좀 더 근원적인 설명을 해보려 한다.

일단 rebase 의 의미에서 시작하자. rebase 라는 용어는 git 에서 처음사용된 것이 아니다. 이전의 version control software 에서 존재하던 용어이다.

그냥 단순하게 해석하면 "base 를 다시(re)" 만드는 것이다.

그럼 base 가 무엇을 이야기 하는 것일까. 그것은 현재 내가 작업하고 있는 source 다. 그래서 rebase 를 한다는 것은 현재 내가 base 로 사용하던 source 를 새로 다시 받는 것(rebase)이라고 보면 된다.






이것이 결국 git 에서도 같은 방식으로 동작한다.

git rebase 를 하면 현재 내가 branch 를 받은 시점, 즉 내 작업들이 적용되기 전,(commit 을 하기전) 으로 돌아가서, 나의 base 를 새로운 내용이 적용된 base 로 변경한다. 그리고 내가 작업한 내용(commit) 을 적용하게 되는 것이다.

git rebase 는 여기에 더해 훨씬 다양한 기능을 제공한다. 자세한 내용은 git rebase man page 를 확인하자.



[컴] 알아두면 쓸데없는 텔레그램 팁 Telegram Tips

rss reader / rss feed reader / 비번 설정 / 텔레 비번 설정 / 텔레그램에서 전화번호 변경 방법 /

알아두면 쓸데없는 텔레그램 팁 Telegram Tips

rss feed 를 telegram 으로 받기(subscribe the rss feed)

https://t.me/rss2tg_bot  : 이 봇(bot)을 이용하면 된다.

  • 이 봇을 등록하고, 채팅창에서 rss feed 를 넣기만 하면 subscribe 된다.

reminder

  • 이제 telegram 자체 내에 scheduled message 가 추가됐다. 그것을 사용하자.
  • 여기 에서 3개의 reminder bot 을 소개해 준다.
  • telegram 검색창에서 "@Remind me" 를 치면 나온다.

adaptive layout

일정너비 이상 telegram desktop(pc버전) 의 너비(width) 를 늘리면, 말풍선이 왼쪽으로 모입니다.

Last seen & online

이것은 내가 online 인지 여부나, 마지막 접속 시간등을 상대방과 공유할 것인지 여부를 정할 수 있다.

참고로, 상대방과 공유하지 않으면, 나도 상대방의 online 여부 등을 알 수 없다. 그리고 공유하지 않아도, 접속시간이, '최근', '일주일내' 등등 으로 상대방에게 알려진다.

  • Settings \--\> Privacy & security(개인 정보 및 보안) \--\> Privacy 부분 \--\> Last seen & online


전화번호 노출

내 전화번호가 상대방에게 노출되는 것을 막을 수 있다. 

그리고 상대방이 내 번호를 등록했다고 해도, 내가 상대방의 번호를 contacts 에 등록하지 않으면, 상대방은 내 번호를 확인할 수 없다. 이것은 홍콩시위때 중국 정부가 이것을 악용해서 막았다.(참고: 텔레그램, 곧 업데이트… 중국 당국의 홍콩 시위자 신원 추적 가능성 따라)

  • Settings --> Privacy & security --> Privacy 부분 --> Phone number

Local passcode

비밀번호를 설정 하는 방법이다.

  • Settings --> Privacy & security --> Local passcode 부분 --> Turn on local passcode

2단계 로그인

'안전한 메신저' 텔레그램도 뚫렸나? 기사에서도 보듯이 sms 를 통제당하게 되면(sim 카드복사등) 뚫리게 된다. 그래서 "2단계 로그인" 설정을 해놓는 것이 좋다.

  • Settings --> Privacy & security -->보안 부분 --> 2단계 인증

Delete my account

일정시간 텔레그램에 접속하지 않으면, 계정을 삭제한다. 이때 이 일정기간을 정할 수 있다. 최대 1년이다.

  • Settings --> Privacy & security --> Delete my account --> If away for ...

번호변경

번호를 변경하면, 그 번호로 모든 정보가 옮겨진다.

  • Settings --> Edit Profile --> Phone number 에서 클릭

자동 다운로드 방지

기본적으로 그림이나, 파일등은 일정크기 이하라면, 자동으로 다운로드 된다. 이 부분에 대한 설정을 할 수 있다.

  • Settings --> Advanced --> Automatic media download 부분 --> In private chats 

자동으로 메시지 삭제 Auto-Delete Messages

  • Set messages to auto-delete for everyone 24 hours or 7 days after sending.
  • Control auto-delete settings in any of your chats, as well as in groups and channels where you are an admin.
  • To enable auto-delete, right click on the chat in the chat list > Clear History > Enable Auto-Delete.
  • Channel 또는 group 에서 –> 메뉴 –> Channel Info –> 메뉴 버튼 –> Auto-Delete

채널, 그룹에서 캡쳐 못하게 하기

이 기능을 켜면 복사, 캡쳐 모두 안된다. 전달(forward)도 안된다.

  • Channel 또는 group 에서 –> 메뉴 –> Channel Info –> 메뉴 버튼 –> Manage Channel –> Channel Type –> Content Protection –> Restrict saving content 를 on

폴더 만들기

폴더로 채팅방을 구분할 수 있다.

  • Settings –> Folders

markdown 을 이용한, 페이지 만들기

https://telegram.org/blog/instant-view#telegraph

telegraph

  • @telegraph bot 을 이용하면, 자신의 계정을 만들어 작성할 수 있다. 그러면 추후에도 edit 가 가능하다. 하지만 삭제는 안되는 듯 하다.
  • 그렇지 않으면, 그냥 session 이 유효한 동안에만 edit 가 가능하다.
  • https://telegra.ph/ 에서 원하는 페이지를 만들어서 공유하면, 수신자는 instant view 를 통해서 확인해 볼 수 있다. 더 긴글, rich text 등을 사용하고 싶을 때 사용하면 된다.

텔레그램 프리미엄

프리미엄에서 얻을 수 있는 혜택

  • 두배 상승된 제한
    • 그룹, 채널을 1000개 까지 join, 무료는 500개
    • pinned chat 10개, 무료는 5 개
    • public links 는 20개 , 무료는 10개 (t.me/name)
    • Favorite GIFs 에 400개 저장 ,무료는 200개
  • 4GB 파일 업로드 : 무료는 2GB 까지 업로드 가능, 다운로드 제한은 없다.
  • 빨라진 다운로드 : 다운로드 속도제한이 사라진다.
  • 프리미엄 스티커 : 애니메이션 효과가 추가된 이모테콘을 쓸 수 있다. 계속 업데이트 된다.
  • 반응(reactions) 도 프리미엄만 쓸 수 있는 이모지가 추가된다.
  • 음성을 text 로 변환해준다.
  • 기본 chat folder 를 변경할 수 있다. 무료는 All Chats 가 기본이다.
  • 대화 리스트에 보이는 프로필에 영상을 넣을 수 있다.
  • 프리미엄 유저라는 표시(badget) 가 추가된다.
  • 홈화면에 새로운 아이콘이 추가된다.
  • 광고가 없다.