StoryCode

'분류 전체보기'에 해당되는 글 563건

  1. Swallow Copy, Deep Copy, json 복사시 문제점과 대응
  2. Node.js
  3. 완납폰
  4. Lamda
  5. 더모아.나마네카드(NAMANE).네이버페이결제시
  6. 이벤트소싱, CQRS
  7. 동영상.ffmpeg.합치기
  8. 동영상.ffmpeg.변환.mkv2mp4
  9. 문법.for
  10. C++ 학습

Swallow Copy, Deep Copy, json 복사시 문제점과 대응

JavaScript, ECMAScript
반응형

# 참조 : https://paperblock.tistory.com/218

 

● Javascript 가 Json / 배열 객체를 다루는 법 .

요약하면 포인터 방식이다 .

1: const original = {name: '철수', age: 12};
2: const clone = original;
3: console.log(clone === original) //true

4: clone.name = '영희';
5: console.log(original.name) //영희

1열 : javascript 는 {} 객체를 할당하고 그 주소를 original 에 담는다.

2열 : clone 에 original 에 담긴 주소를 담는다 . 즉, orignal 과 clone 은 같은 객체를 가르킨다 . call by ref .

 

● Javascript 가 Json / 배열 객체를 다룰 때 특이사항

javascript 에는, 객체를 복사할 때 Object.assign() 이나 Paste객체= {...Copy객체 } ( ES6 Spread Operator )방식을 사용한다.

1: const original = {name: '철수', age: 12};
2: const clone = Object.assign({}, original);
3: clone.name = '영희'

4: console.log(original) // {name: '철수', age: 12}
5 :console.log(clone); // {name: '영희', age: 12}
1: const original = {profile: {name:'철수', age:12}, grade: 'A'};
2: const clone = { ...original };

3: clone.profile.name = '영희';
4: clone.grade = 'B';

5: console.log(original) // {profile: {name: '영희', age: 12}, grade: 'A'}
6: console.log(clone); // {profile: {name: '영희', age: 12}, grade: 'B'}

 

문제는,

1: const original = {profile: {name:'철수', age:12}, grade: 'A'};
2: const clone = { ...original };

3: clone.profile.name = '영희';
4: clone.grade = 'B';

5: console.log(original) // {profile: {name: '영희', age: 12}, grade: 'A'}
6: console.log(clone); // {profile: {name: '영희', age: 12}, grade: 'B'}

1열에서 Json 객체안에 Json 객체가 있을 경우 복사가 특이하다. ( 이를 Swallow Copy = 얕은 복사라 한다 )

즉, original 에는 바깥쪽 Json 객체 주소를 가지는데, 문제는 안쪽 Json 객체인 {name:'철수', age:12} 도 별도의 Json 객체로 주소를 가진다 . 즉 profile 은 다시 Json 객체 주소이다.

 

그렇기 때문에 3열에서 name = '영희' 로 바꾸면 original 과 clone 의 name 이 모두 바뀐다.

 

그래서 객체안의 객체까지 "복사" 하는게 Deep Copy 이다.

 

 Deep Copy

과거에는 Deep Copy 를

const clone = JSON.parse(JSON.stringify(original));

와 같이 parse 와 stringfy 직렬화를 사용하였다 .

하지만, 엔진에서 parse 속도 개선하였으나 그래도 느렸고, 심지어 복잡한 구조의 경우 복사에 문제가 발생했다 .

* 복잡한 구조 = Recursive data structures, Built-in types (Date, Map, Set, Date, RegExp, ArrayBuffer...), Functions

 

이를 Application 레벨에서 해결하려고 나온게 underscore와 Lodash.deepclone 함수 이다.

하지만 이젠 엔진레벨에서 모든 브라우저저가 StructuredClone() 을 지원한다.

 

StructuredClone

사용법은 아래와 같다.

const pasteobject = structuredClone(copyobject)

* 문법 ) structuredClone(value, { transfer })
반응형

'JavaScript, ECMAScript' 카테고리의 다른 글

Indexed DB  (0) 2022.08.03
디버깅.Debugging.VSC.VisualStudioCode.연동  (0) 2022.07.28
Callback, Promise, Async/Await  (0) 2022.04.04
import, export  (0) 2021.09.28
CORS.ajax.fetch.어떻게 해도 CORS 가 발생할 경우  (0) 2021.08.31

Node.js

IT 용어, 인터넷 활용 등등
반응형

참고 ) https://www.youtube.com/watch?v=u-hZI2tFGdU

 

Javascript 고성능 엔진인 크롬 V8 엔진을 받아 브라우저 없이 커널상에서 동작하게 수정한 것이다 .

그리고, ( Node.js 사에 말하길 ) Node.js 는 Scalable 네트워크 어플리케이션용이다 .

Asynchronous event-driven 방식이다 .

 

참고) Mongodb 에는 V8 엔진이 들어가고, Couchbase 에는 Node.js 가 들어간다.

반응형

완납폰

사무
반응형

완납폰은 잔여할부금이 없을뿐 요금제나 부가서비스 가입기간은 강제되고 계약기간 미사용하면 위약금도 있다.

반응형

Lamda

AWS, 아마존
반응형

# 참조 : https://www.youtube.com/watch?v=t8sjTFM_tfE 

1) aws web console 상에서 코딩 및 디버깅 ( 로그 를 AWS.LogWatch 로 디버깅 )

 

2) Coding 은 web console 상에서 먼저 Function 을 만들고, Function 은 Node 나 Python 으로 작성한다음 Deploy 하면 됨.

 

3) 콘솔 실행같은 경우는 이벤트 ( 실행 플랜 ) 을 간단히 만들어서 파라미터 넘겨서 실행가능.

 

4) Trigger 로 실행하는 경우는 ,

예를들면, 트리거 목록중 하나인 "S3" 를 선택하면 , S3 버킷에 파일이 올라오면 동작하게 된다는 뜻임 .

그리고, 작성된 함수는 S3 버킷 속성의 이벤트 알림에 나타나게 됨 .

 

반응형

'AWS, 아마존' 카테고리의 다른 글

AWS.Cli.EC2  (0) 2022.10.19
Amazon.cli.configure  (0) 2022.10.19
주의대상.비용.폭탄.RDS.AuroraPostgres.ParallelQUery  (0) 2022.06.17
EC2 & RDS RI 요금제  (0) 2022.04.04
인증서발급.Nginx.적용  (0) 2021.09.08

더모아.나마네카드(NAMANE).네이버페이결제시

사무
반응형

카카오 페이 결제시 = N카카오페이

카드 결제시 = (주)아이오로라

네이버 페이 결제시 = (주)아이오로라

 

네이버 페이 결제와 카드 결제가 같은 가맹점.

반응형

'사무' 카테고리의 다른 글

동영상.Windows11기본기능.합치기  (0) 2022.10.28
완납폰  (0) 2022.07.17
동영상.ffmpeg.합치기  (0) 2022.06.27
동영상.ffmpeg.변환.mkv2mp4  (0) 2022.06.27
신한카드.더모아.카드이용실적.실시간  (0) 2022.06.17

이벤트소싱, CQRS

IT 용어, 인터넷 활용 등등
반응형

참조 ) https://www.youtube.com/watch?v=NJ2GxSIH00s

 

내가 이해한 바)

보통 RDB 는 변경후 최종 데이타만 기록한다 .

요기요들 예로 들자면 "고객이 삼계탕을 주문했다 "

하지만 이벤트소싱, CQRS 는 "고객이 육개장 선택했다가 삼겹살 선택했다가 최종적으로 삼계탕을 주문했다" 는 과정까지 모두 기록한다 .

 

맞나 ?

반응형

'IT 용어, 인터넷 활용 등등' 카테고리의 다른 글

CPU  (0) 2022.10.28
Node.js  (0) 2022.07.25
2022-415.대칭키,비대칭키,공개키,개인키,AES,RSA차이  (0) 2022.06.02
CleanArchitecture,클린아키텍처  (0) 2022.06.02
HTTP/3, QUIC, HOL, RTT  (0) 2022.03.04

동영상.ffmpeg.합치기

사무
반응형

1) list.txt

시작은 file. 파일은 홀 따옴표로 묶을 것

file 'c:\1.mp4'

file 'c:\2.mp4'

...

 

2) convert.bat

Rem 유튭에서 받은 mkv 로는 잘 안되는 경우가 많아서 mp4 로 변환후 하면 잘 됨

for /R %%f IN (*.mkv) DO ffmpeg.exe -i "%%f" -c copy "%%~nf.mp4"

Rem 실제 변환
ffmpeg.exe -safe 0 -f concat -i list.txt -c copy output.mp4

반응형

'사무' 카테고리의 다른 글

완납폰  (0) 2022.07.17
더모아.나마네카드(NAMANE).네이버페이결제시  (0) 2022.07.11
동영상.ffmpeg.변환.mkv2mp4  (0) 2022.06.27
신한카드.더모아.카드이용실적.실시간  (0) 2022.06.17
네이버, 고정, 일일적립  (0) 2022.04.14

동영상.ffmpeg.변환.mkv2mp4

사무
반응형

1 . https://ffmpeg.org/download.html#build-windows 에서 Windows 로고 선택후  "Windows builds by BtbN" 클릭하면https://github.com/BtbN/FFmpeg-Builds/releases 으로 이동

 

2. ffmpeg-n5.0-latest-win64-gpl-5.0.zip 다운로드 후 압축해제

 

3. C:\ffmpeg-n5.0-latest-win64-gpl-5.0\bin\ffmpeg.exe  -i "원본.mkv"  -vcodec copy -acodec copy "복사본.mp4"

하면 100M 정도는 1초만에 변환됨 

 

 

반응형

문법.for

CPP, C++
반응형

 

int aList[3] = {40, 30 ,10}

 

# n 은 auto 지역변수. 값을 0 으로 넣어봐야 auto 지역변수인 n 만 바뀌고 aList 는 안 바뀜.

for ( auto n : aList )     n = 0;

 

# 참조변수 n 이 되서 값이 바뀜.

for ( auto &n : aList ) n = 0;

반응형

'CPP, C++' 카테고리의 다른 글

C++ 학습  (0) 2022.06.22
문법.복사생성자 (Copy Constructor).Copy Elision.이동생성자  (0) 2022.06.22

C++ 학습

CPP, C++
반응형

http://www.tcpschool.com/cpp/intro

반응형

'CPP, C++' 카테고리의 다른 글

문법.for  (0) 2022.06.22
문법.복사생성자 (Copy Constructor).Copy Elision.이동생성자  (0) 2022.06.22