DICOM 영상의 프레임 정보를 추출하다 에러가 발생해 원인을 확인하다 찾아본 내용을 정리해 둡니다. 영상처리에선 어찌 보면 기본적인 내용일 수도 있지만 혹시 제가 겪은 문제와 유사한 경험을 하시는 분들에게 도움이 되었으면 합니다.

 

 

 

1.  문제: Offset 정보 추출 실패

 

시작은 DICOM 영상의 offset 정보를 추출하는 것으로부터 시작되었습니다. 영상을 정상적으로 로드해왔으나 DcmPixelSequence에서 getItem을 해오는 과정에서 이상한 현상이 발생하였습니다.

 

 

 

2. 현상

 

해당 영상을 Weasis로 오픈해 TransferSyntax를 확인한 결과 MPEG2 영상으로 확인되었습니다.

DICOM 영상의 TransferSyntax

DICOM 파일에서 영상만 추출해 ffmpeg로 모든 프레임을 추출한 결과 총 360장의 프레임을 추출할 수 있었습니다. 따라서 내부 로직에서 프레임의 개수는 360이 되어야 한다고 추측하고 있었습니다.

영상에서 추출해낸 프레임

하지만 DCMTK 디버그 결과 첫 번째 프레임에서 모든 영상의 크기만큼의 바이트를 불러오고 두 번째 프레임에선 null을 리턴하고 있었습니다.

추출한 MPEG2 영상의 파일 크기
첫번째 오프셋 추출 정보.

위의 사진에서 확인하듯이 첫 번째 오프셋에서 모든 길이를 다 가져오고 있었으며 아래의 사진에서 볼 수 있듯이 두 번째 오프셋에서는 NULL값을 확인할 수 있었습니다.

두번 째 오프셋 추출 정보.

 

 

 

3. 원인: MEPG2

 

확인 후 결론부터 말씀드리자면 해당 동작은 정상이었으며 DCMTK와 MPEG2의 특징을 잘 이해하지 못한 제가 오류로 인식하고 있던 상황이었습니다.

 

https://forum.dcmtk.org/viewtopic.php?p=9897#p9897 

 

how to extract frames from DICOM "Mpeg2 Main Profile @ Main Level" file - DICOM @ OFFIS

All other questions regarding DCMTK Moderator: Moderator Team Ro2a Posts: 9 Joined: Fri, 2010-09-17, 17:14 #1 Post by Ro2a » Tue, 2010-09-21, 00:24 Hello I want to develope a programe using VS c++ and dcmtk that can load a dicom file which has the followi

forum.dcmtk.org

위 링크의 답변을 인용해 보자면 다음과 같습니다.

 

For compressed pixel data you have to use the DcmPixelSequence class due to the internal structure of the compressed PixelData element. This gives you acccess to the included offset table (empty for MPEG2) and all frames. However, for MPEG2 there is only a single "frame" containing all MPEG2 data as a blob. You won't be able to access individual frames with DCMTK because DCMTK does not know how to decompress MPEG2 data and hence is not able to find out where a specific frame begins.

So you have to get the complete MPEG2 data, and then decompress it using another library. I will post an example how to do that soon in the wiki and reference here in the forum topic.

 

DCMTK에서 MPEG2의 오프셋 정보를 얻기 위해선 MPEG2 영상의 BLOB 데이터를 로드해 온 뒤 FFMPEG와 같은 외부 라이브러리를 사용해 압축을 풀고 난 뒤에야 오프셋 정보 추출을 시도할 수 있었습니다.

 

 

 

기반 지식이 얼마나 중요한지 다시 깨달아 가는 문제였습니다. 오늘도 하나 더 배우고 갑니다.

 

 

 

 

 

반응형

 

 

이 글은 NEMA의 DICOM 표준 중 6.2 Value Representation (VR)에서 PN을 정리한 글입니다. 원문은 아래의 링크를 통해 확인해 주시기 바랍니다.

http://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html#sect_6.2

 

6.2 Value Representation (VR)

A character string that may contain one or more paragraphs. It may contain the Graphic Character set and the Control Characters, CR, LF, FF, and ESC. It may be padded with trailing spaces, which may be ignored, but leading spaces are considered to be signi

dicom.nema.org

 

 

6.2. Value Representation (VR) - PN: PersonName

5개의 구성으로 이루어진 규칙을 사용해 인코딩 된 문자열입니다.

문자코드 5CH(ISO-IR 6에서의 백 슬래시"\")는 멀티 밸류 데이터에서 구분 기호로 사용되기 때문에 존재하면 안 됩니다.

해당 문자열의 뒷부분은 공백으로 채워질 수 있습니다.

사람에게 사용되는 경우 순서에 따라 5개로 구성됩니다: 성, 이름, 중간 이름, 접두사, 접미사.

 

노트: HL7은 구성요소 내에서 선행 공백을 금지합니다. DICOM은 선행 및 후행 공백을 허용하며 중요하지 않은 것으로 간주합니다.

 

5개의 구성요소 중 일부는 공백일 수 있습니다.

해당 구성 요소 간의 구분 기호는 캐럿("^") 문자입니다.

구분 기호는 4개 이하입니다. 즉 모든 구성 요소가 존재하는 경우 마지막의 구분 기호는 필요하지 않습니다.

내부에 NULL값이 있는 경우 구분 기호가 필요하지만 마지막이 NULL값인 경우 구분 기호는 생략할 수 있습니다.

각각의 구성요소마다 여러 개의 항목이 허용되며 사람이 선호하는 형식으로 문자열을 통해 인코딩 됩니다.

 

수의학적으로 사용되는 경우 순서에 따라 다섯 개의 구성 요소 중 처음 두 개는 책임 담당자의 성 또는 조직 이름과 환자 이름이 됩니다. 나머지 구성요소는 사용되지 않으면 존재하지 않아야 합니다.

 

위와 같은 다섯 가지 구성 요소의 그룹을 개인 이름 구성 요소 그룹(Person Name component group)이라고 합니다.

 

표의 문자와 음성 기호로 이름을 쓸 목적으로 최대 3개의 구성요소 그룹(부록 H, I, J 참조)을 사용할 수 있습니다.

구성요소 그룹의 구분 기호는 등호("=", 3DH) 문자입니다.

구성 요소 그룹의 구분 기호는 두 개 이하여야 합니다. 즉 모든 구성 요소 그룹이 있는 경우 마지막 구성 요소 그룹 뒤의 구분 기호는 생략됩니다. 

순서에 따른 구성 요소 그룹은 알파벳, 표의문자, 음성 기호 순서입니다.

 

첫 번째 구성 요소 그룹을 포함하여 모든 구성 요소 그룹이 없을 수도 있습니다. 

이 경우 사람의 이름은 하나 이상의 등호("=") 구분 기호로 시작할 수 있습니다.

내부에 NULL 구성 요소 그룹이 있는 경우 구분 기호가 필요합니다. 

가장 뒤의 구성 요소 그룹이 NULL인 경우 구분 기호는 생략될 수 있습니다.

 

정확한 의미는 각 구성 요소 그룹에 정의되어 있습니다. 섹션 6.2.1.2를 참고하시기 바랍니다.

 

예제 및 참고사항은 섹션 6.2.1.1을 참고하시기 바랍니다.

 

 

 

6.2.1.1 Examples of PN VR and Notes

 

Rev. John Robert Quincy Adams, B.A. M.Div. ⇒ Adams^John Robert Quincy^^Rev.^B.A. M.Div.

성 1개, 이름 3개, 중간 이름 0개, 접두사 1개, 접미사 2개

 

Susan Morrison-Jones, Ph.D., Chief Executive Officer ⇒ Morrison-Jones^Susan^^^Ph.D., Chief Executive Officer

성 2개, 이름 1개, 중간 이름 0개, 접두사 0개, 접미사 2개

 

John Doe ⇒ Doe^John

성 1개, 이름 1개, 중간 이름, 접두사, 접미사 0개(모든 후행 구성요소가 NULL이므로 구분 기호 생략)

 

Smith^Fluffy

책임자의 성이 Smith, 이름이 Fluffy인 고양이

 

ABC Farms^Running on Water

ABC Farms 소속의 이름이 Running on Water인 말

 

 

 

 

 

반응형

'Trunk > DICOM' 카테고리의 다른 글

[C#|FO-DICOM] DICOM 파일을 로드 해 태그 추출하기.  (0) 2022.05.03
[DCMTK] MEPG2와 프레임  (0) 2022.05.03
[DICOM] Modality(0008, 0060) tag list.  (0) 2020.12.02
[DICOM] DIMSE란?  (1) 2020.11.25
[DICOM] DICOM이란?  (0) 2020.11.25

https://smartstore.naver.com/waycos/products/5525844038

 

0. 앞선 글.

 

사무실에서 5년간 애지중지 쓰던 무접점 키보드가 마침내 돌아가셨습니다. 완전 먹통은 아니고 사용하면서 불편함이 좀 있는 정돈데 오래 쓸 만큼 썼고 새로운 키보드도 써보고 싶고 해서 이 기회에 바꾸기로 하였습니다.

 

사실 이전에 산 키크론 K8 키보드를 회사에 가져가서 사용하려고 했습니다만 소음도 소음이고 무엇보다 어쩔 수 없는 블루투스의 키 씹힘 현상 때문에 포기하고 다른 키보드를 알아보게 되었습니다. 

 

참고 글: 2020.12.16 - [Trunk] - Keychron K8 - 키크론 K8 텐키리스 87키 구매 후기.

 

Keychron K8 - 키크론 K8 텐키리스 87키 구매 후기.

키크론 K8을 구매하게 되어 사용 후기를 남기고자 합니다. 1. 선택한 이유. 코로나 전까지만 해도 별문제 없이 잘 살고 있었습니다. 집에선 윈도우 데스크톱을 쓰고 공부나 개발을 할 땐 카페에

smoh.tistory.com

 

 

 

1. 왜 이 키보드를 고르게 되었나?

 

사실 가장 먼저 구매하고자 했던 키보드는 싱크웨이 토체티 K320w가 아니었습니다. 가장 처음 생각했던 건 리얼포스 무접점이었습니다. 5년 정도 한 키보드를 쓰다 보니 가격은 그리 큰 문제가 아니었어요.

 

http://www.leaderskey.com/shop/item.php?it_id=1538219216

 

오히려 수년간 같은 키보드를 쓰면서 느껴지는 단조로움이 문제였습니다. 이 전 키보드도 무접점이었고 밋밋한 디자인에 투박한 색... 키캡을 바꾸려 해도 그놈의 스테빌라이저때문에 바꿀 수 가없었습니다. 

 

그래서 다음으로 찾아본 게 저소음 적축 키보드였습니다. 기존 들고 있던 키크론이 옵티컬 적축이었는데 이게 생각보다 소음이 심해 사무실에선 쓸 수 없을 정도였습니다. 저소음 적축으로 찾아본 게 바밀로 키보드였습니다.

 

https://funkeys.co.kr/shop/item.php?it_id=1603171218&ca_id=10

 

문젠 이 브랜드는 진짜 인기가 많아서 그런 건지 애초에 물량이 적어서 그런 건지 한번 발매 주기를 놓치면 매물이 없어요... 6월 말부터 2주는 기다렸는데 다 품절이랍니다. 7월 초에 공지가 나왔는데 7월 말은 지나야 매물이 들어온답니다.

 

그리고 바밀로 저소음 적축 키보드의 가장 거슬렸던 점이 USB 연결 방식입니다. 한참 전에 발매된 Anne Pro 2도 C타입을 지원하는데 얘네 모델은 PRO 타입의 키배열을 제외하고는 아직도 USB Mini-B만을 지원합니다. 당연히 블루투스 같은 거도 지원을 안 합니다.

 

마지막으로 돌고 돌아 씽크웨이 토체티 BW D&T 콜라보 K320w 모델을 찾게 됩니다.

 

https://smartstore.naver.com/waycos/products/5525844038

 

기다려서라도 바밀로 저소음 적축 모델을 사려고 했다가 마음이 틀어진 결정적 이유는 블루투스와 리시버를 통한 무선과 유선을 모두 지원한다는 점이 가장 크게 작용했습니다. 정방향 체리 스위치라 키캡을 변경하기에도 용이합니다.

 

현재 사무실에선 테스트용 서버, 개발용 노트북, 개인 아이패드를 사용하고 있습니다. 서버는 노트북으로 원격 접속이라도 하지만 아이패드는 블루투스를 지원하지 않으면 정말 불편해집니다. 무선 키보드를 따로 들고 다닐 수도 없고 그렇다고 매직 키보드를 위해 45만 원을 태우는 건 아까웠으니까요.

 

결국 저소음 적축 체리 스위치에 블루투스, 무선, 유선 동시 지원이 제게는 가장 큰 장점으로 다가와 이 키보드를 선택하게 되었습니다.

 

 

 

2. 개봉기

 

개봉전에 직접 구매한 영수증 먼저 올리고 들어갑니다.

 

저소음적축은 만원이 추가됩니다.

 

처음 택배 상자를 받았을 때 뭔가 잘못 온 줄 알았습니다. 그동안 받은 키보드 택배 상자의 사이즈가 아니었어요. 

 

거대한 박스에 잘못 배송된줄 알았습니다.

 

배송 박스를 뜯자 그 안에 에어캡으로 감싸진 키보드와 팜레스트가 들어있었습니다.

 

키보드 본품과 팜레스트

 

팜레스트는 지금 행사 중으로 구매한 모든 분들에게 무료로 나눠주고 있다고 합니다.

 

https://smartstore.naver.com/waycos/products/5525844038

 

내부 구성품은 다음과 같았습니다.

 

뭔가 다양하게 들어있습니다.

 

케이블, 추가 키캡, 리시버, 리시버용 젠더, 케이블 등등이 들어있었습니다. 공식 구성품은 다음과 같습니다.

 

https://smartstore.naver.com/waycos/products/5525844038

 

비교해보니 모든 구성품이 다 들어있는 것을 확인할 수 있었습니다. 여기에 이것 말고도 플라스틱 커버가 동봉되어있습니다.

 

 

 

3. 장점.

 

우선 장점부터 나열해 보도록 하겠습니다. 우선 블루투스와 무선의 동시 사용성입니다. 

 

블루투스와 무선모드를 사용할 수 있습니다.

 

사용하자마자 바로 와닿은 장점입니다. 기존 타 키보드는 유선과 블루투스만을 지원해 여러 기기에서 동시에 사용할 때 어느 정도 귀찮은 부분이 있었습니다. 블루투스의 키 씹힘이나 지연을 피하기 위해 보통 메인 컴퓨터에는 유선으로 연결해 사용합니다. 다른 기기에서 사용하기 위해 블루투스를 연결하려면 일반적으로 유선 모드에서 무선 모드로 스위치를 바꾸고 블루투스 페어링을 시도해 연결을 기다려야 했습니다. 

 

유선/블루투스 전환 스위치가 키보드 뒤편에 있는 경우도 흔해 사용하다 키보드를 뒤집고 스위치를 바꾸고 다시 블루투스로 기기에 연결해야 하는 다소 귀찮은 과정이 필요했습니다. 특히 스위칭이 잦으면 더욱 짜증 나게 됩니다.

 

씽크웨이 토체티 K320w는 리시버를 통한 무선 연결을 지원해 굳이 유선 연결을 고집할 필요가 없어졌습니다. 스위치를 켜고 메인 컴퓨터에는 리시버를 통해 키 씹힘이나 지연 없이 사용하다 스위칭이 필요하면 바로 블루투스로 전환해 사용할 수 있게 되었습니다.

 

 

다음 장점은 소음과 통울림입니다. 유명한 저소음 적축 스위치답게 스위치 소음과 통울림은 확실히 줄어들었습니다.

 

체리사 저소음 적축

 

이전에 사용하던 무접점이나 같은 사무실 직원의 멤브레인 키보드보다 소음이 더 작습니다. 확실히 체감할 수 있을 정도로 소음이 줄어들어 상당히 만족하며 사용하고 있습니다.

 

https://smartstore.naver.com/waycos/products/5525844038

 

소개글에 적힌 흡음재가 진짜 효과를 발휘하는 것인지 통울림도 없습니다. 개발하다 보면 무의식적으로 엔터, 스페이스, ESC를 힘껏 누르다 못해 때리게 되는데 통울림이 전혀 발생하지 않습니다. 예전에 사용했던 AnnePro2는 뭐만 해도 울리는 거 같아 굉장히 거슬렸는데 확실히 스위치에 의한 소음과 통울림이 없어 사무실에서 사용하기 좋습니다.

 

 

다음은 전용 지원 소프트웨어입니다. 

 

듀가드 제우스

 

듀가드에서 제공해주는 전용 지원 소프트웨어인 제우스를 사용할 수 있습니다. 스크린샷에서 볼 수 있듯이 매크로, 키 변경, 키 조합, 멀티미디어, 프로그램 실행뿐 아니라 마우스의 기능도 사용할 수 있습니다.

 

공식 홈페이지에서는 0.99 버전을 제공하고 있으며 해당 버전에서는 영문과 중문만 지원되지만 업데이트를 통해 한국어도 지원하고 있습니다.

 

 

 

4. 단점

 

키캡 품질에 비해 각인이 진짜 최악입니다. 도대체 왜 이런 색으로 각인을 했는지 모르겠어요 

 

숫자, 한글, 스페이스의 민트색 각인

 

대체 왜 이런 식으로 각인을 한 건지 의아할 뿐입니다. 영문만 있으면 차라리 나을 뻔했는데 민트색으로 한글 각인이 섞여 들어가 있으니까 너무 안 어울립니다. 키보드 색상의 테마가 "웜톤 베이지"인데 민트색이 이 테마에 왜 어울린다고 생각한 걸까요?

 

그리고 스페이스에 저 각인도 맘에 안 들긴 마찬가집니다. 

 

하우징에 각인되어 있는 듀가드 x 씽크웨이 콜라보 각인

 

차라리 하우징에 각인되어 있는 콜라보 문양을 검은색으로 각인했으면 훨씬 좋았을 뻔했습니다. 저처럼 애초에 키캡질 할 생각이 있으신 분들은 모르겠지만 키보드 각인이 거슬리면 이게 은근 눈에 띄어서 짜증이 납니다.

 

게다가 구매 옵션에서 키보드 스위치만 옵션으로 고를 수 있었고 키캡 옵션은 고를 수 없었던 게 아쉬운 점으로 남았습니다. 가능하면 영문 각인이나 측각으로 바꿨을 텐데...

 

 

배터리 용량도 아쉬운 점으로 꼽혔습니다

 

https://smartstore.naver.com/waycos/products/5525844038

 

1200mAh라는 용량이 진짜 큰 건지 작은 건지 절대적으로 판단할 순 없어 결국 다른 제품과 비교를 하게 됩니다. 이전에 사용했었던 키크론 K8과 비교를 해보자면 K8은 배터리 용량이 무려 4000mAh였습니다. 이 제품과 비교하면 3배가 넘는 배터리 용량을 탑재하고 있습니다.

 

심지어 포커 배열이라 이보다 더 작은 Anne Pro 2도 1900mAh의 배터리 용량을 갖습니다. AnnePro2는 더 적은 키배열이라 사이즈도 작았는데 1.5배 이상의 용량을 탑재하고 있으니 이게 안 아쉬울 수가 없습니다.

 

물론 키크론 K8과 AnnePro2는 LED 모델이므로 실 사용시간은 다르게 느껴질 수 있습니다만 그래도 배터리 용량만 두고 비교해본다면 아쉬운 건 사실입니다.

 

 

그 외 기타 구성품에 대한 아쉬움이 살짝 있습니다. 이 부분은 키보드 본체에 대한 아쉬움이 아니기 때문에 개인적인 불평으로 생각하고 넘어가셔도 좋습니다.

 

하나는 팜 레스트의 품질입니다. 이게 제 제품이 불량인지 원래 이런 건진 모르겠는데 일단 손바닥을 올려두면 내부 젤과 손바닥이 닿는 마감재 사이에 공기층이 발생합니다. 이로 인해 손바닥이 없는 팜레스트 가운데 부분이 부풀어 오르는 현상이 있습니다.

 

http://www.thway.co.kr/bbs/board.php?bo_table=product&wr_id=129

 

그리고 팜 레스트 디자인을 잘 보면 키보드와 닿아있는 부분도 곡선형 디자인으로 되어 있는데 이 때문인지 키보드와 팜 레스트 사이에 틈이 발생합니다. 가운데는 괜찮지만 양 끝은 확실히 떨어져 있습니다. 다만 애초에 하우징이 그리 높지 않고 키캡 프로파일도 체리 프로파일이라 팜 레스트 없이도 무난하게 사용할 순 있습니다.

 

또 다른 하나는 키캡 리무버입니다. 동봉된 키캡 리무버가 키캡이랑 안 맞아요. 다른 리무버는 키캡과 수평으로 넣어서 키캡을 제거하곤 했는데 동봉된 키캡 리무버는 수평으로 넣으면 키캡이 더 커서 들어가지 않습니다. 애초에 노린 설계라면 할 말은 없습니다만 키캡을 제거하기 위해선 키캡에 사선으로 리무버를 넣어서 키캡을 제거해야 합니다.

 

마지막은 리시버 젠더와 리시버입니다. "웜톤 베이지"인데 검은색이에요. 별거 아니긴 한데 그냥 아쉬워서요. 색상을 맞춰줬으면 하는 아쉬움이었습니다.

 

 

 

5. 총평 및 마무리

 

https://smartstore.naver.com/waycos/products/5525844038

 

기능적으론 훌륭했으나 디자인이 살짝 아쉬운 키보드였습니다. 

 

특히 여러 기기를 동시에 사용하고 유선/블루투스 전환에 귀찮음을 느끼셨다면 씽크웨이 토체티 K320w는 좋은 선택이 될 것입니다. 하지만 하나의 기기만을 사용한다고 유선으로 키보드를 사용한다면 매력적이지 않을 수 있습니다. 

 

디자인은 개인마다 느끼는 게 다르기 때문에 더 평가할 수 없습니다. 다만 제 의견으론 아쉬운 점이 있으며 전 사용하면서 100% 키캡은 바꿔 쓸듯 합니다.

 

아직 오랜 기간 사용한 키보드가 아닌 데다 리뷰는 개인의 주관이 들어가기 때문에 사용자별로 느끼는 점이 다를 수밖에 없습니다. 특히 자신이 어떤 기능이 꼭 필요했는지에 대한 기준이 다르기 때문에 더더욱 그렇습니다. 

 

이 글이 키보드를 구매하시는데 조금이라도 도움이 되셨길 바랍니다.

 

 

 

 

 

반응형

 

Notion API Developer - Beta 한글 번역

 

 

 

0. 앞선 글

 

페이지는 사용자가 빠른 메모부터 공유문서, 랜딩페이지에 이르기까지 모든 것을 작성하는 곳입니다. 통합을 사용해 사용자는 콘텐츠를 조직하여 Notion을 단일 소스로 변경하거나 Notion내에서 콘텐츠를 수집, 연결, 시각화할 수 있습니다.

 

이 가이드에서는 페이지 콘텐츠의 구성요소가 API에 표시되는 방식과 이를 사용하여 수행할 수 있는 작업에 대해 알아보도록 하겠습니다. 이 가이드를 통해 사용자는 콘텐츠가 포함된 새 페이지를 만들고 다른 페이지의 콘텐츠를 읽어와 기존 페이지 블록에 추가할 수 있습니다.

 

 

 

1. 페이지 콘텐츠와 속성.

 

일반적으로 페이지 속성은 기한, 범주, 다른 페이지와의 관계 같은 구조화된 정보를 저장하는데 적합합니다. 페이지 콘텐츠는 좀 더 느슨한 구조나 자유 형식 콘텐츠를 저장하는데 적합합니다. 페이지 콘텐츠는 사용자의 생각을 작성하거나 이야기하는 곳입니다. 페이지 속성은 사용자가 데이터를 저장하고 시스템을 구축하는 곳입니다. 여러분의 통합은 여러분이 기대하는 대로 속성과 콘텐츠를 사용하는 것을 목표로 해야 합니다.

 

https://developers.notion.com/docs/working-with-page-content

 

 

2. 콘텐츠를 블록으로 모델링하기.

 

페이지 콘텐츠는 블록 객체 목록으로 표시됩니다. 이러한 블록을 페이지의 자식이라고도 합니다. 각 블록에는 단락, 제목, 이미지와 같은 타입이 있습니다. 토글 목록과 같은 일부 타입의 블록에는 자체 자식이 존재할 수 있습니다.

 

간단한 예제로 단락 블록을 확인해 보겠습니다.

 

{
  "object": "block",
  "id": "380c78c0-e0f5-4565-bdbd-c4ccb079050d",
  "type": "paragraph",
  "created_time": "",
  "last_edited_time": "",
  "has_children": false,

  "paragraph": {
    "text": [/* details omitted */]
  }
}

 

모든 단락 블록에는 object, type, created_time, last_edited_time, has_children의 공통된 속성을 포함합니다. 또한 단락 속성 내에 type-specific 정보가 포함되어 있습니다. 단락 블록에는 "text" 속성이 존재하며 블록 타입에 따라 type-specific 속성이 달라질 수 있습니다.

 

이제 블록에 자식 블록이 있는 예시를 살펴보도록 하겠습니다. "paragraph"에 들여 쓰기 된 "to_do" 블록을 확인해 보세요.

 

{
  "object": "block",
  "id": "380c78c0-e0f5-4565-bdbd-c4ccb079050d",
  "type": "paragraph",
  "created_time": "",
  "last_edited_time": "",
  "has_children": true,

  "paragraph": {
    "text": [/* details omitted */],
    "children": [
      {
        "object": "block",
        "id": "6d5b2463-a1c1-4e22-9b3b-49b3fe7ad384",
        "type": "to_do",
        "created_time": "",
        "last_edited_time": "",
        "has_children": false,
  
        "to_do": {
          "text": [/* details omitted */],
          "checked": false
        }
      }
    ]
  }
}

 

자식 블록은 type-specific 속성 내에 블록 목록으로 표시됩니다. 만약 블록에 자식이 있다면 "has_children" 속성은 true가 됩니다. 단락 블록과 같은 일부 블록 타입만 자식을 지원합니다.

 

* 지원하지 않는 블록 타입(Notion Version 2021-05-13 기준)

Notion API는 현자 텍스트와 유사한 블록만을 지원하며 곧 더 많은 블록을 지원할 예정입니다. 지원되지 않는 블록 타입은 페이지에 "unsupported" 타입으로 표시됩니다.

 

 

 

3. 서식이 있는 텍스트(Rich Text)

 

앞선 블록 예시에서 "text" 속성의 생략된 값은 서식이 있는 텍스트(Rich Text) 객체의 목록이었습니다. 서식이 있는 텍스트 객체는 단순한 문자열 이상을 표현할 수 있습니다. 이 객체에는 스타일 정보, 링크, 멘션 등이 포함될 수 있습니다.

 

"Grocery List"라는 단어만 포함된 간단한 예시를 살펴보도록 하겠습니다.

 

{
  "type": "text",
  "text": {
    "content": "Grocery List",
    "link": null
  },
  "annotations": {
    "bold": false,
    "italic": false,
    "strikethrough": false,
    "underline": false,
    "code": false,
    "color": "default"
  },
  "plain_text": "Grocery List",
  "href": null
}

 

서식이 있는 텍스트 객체는 type-specific 한 구성과 유사한 패턴을 따릅니다. 위의 서식이 있는 텍스트 객체에는 "text" 타입이 있으며 "text" 속성에 해당 타입과 관련된 추가 구성이 존재합니다. annotations, plain_text, href와 같은 타입에 의존하지 않는 기타 정보들은 서식이 있는 텍스트 객체의 최상위 수준에 위치하게 됩니다.

 

서식이 있는 텍스트는 페이지 콘텐츠와 내부 페이지 속성 값 모두에 사용될 수 있습니다.

 

 

 

4. 콘텐츠가 있는 페이지 만들기.

 

페이지 생성 엔드포인트를 사용하면 자식 블록을 통해 페이지를 만들 수 있습니다. 이 엔드포인트는 다름 페이지 내에서 페이지를 만들거나 데이터베이스 내에서 페이지 만들기를 지원합니다.

 

샘플 콘텐츠가 있는 다른 페이지 내에 페이지를 새로 만들어 보도록 하겠습니다. 이 엔트포인트에 대해 세 가지 파라미터를 사용하게 됩니다. "parnet" 파라미터는 부포 페이지가 됩니다. 기존의 페이지 ID를 사용할 수 있습니다.

 

{
  "type": "page_id",
  "page_id": "494c87d0-72c4-4cf6-960f-55f8427f7692"
}

 

"properites" 파라미터는 페이지 속성을 표현하는 객체입니다. 우선 이 예시에서는 "title" 속성만이 있는 간단한 페이지 속성을 구성하도록 하겠습니다.

 

{
  "Name": {
    "type": "title",
    "title": [{ "type": "text", "text": { "content": "A note from your pals at Notion" } }]
  }
}

 

"children" 파라미터는 페이지 콘텐츠를 표현하는 블록 객체 목록입니다. 몇 가지 샘플 콘텐츠를 사용하도록 하겠습니다.

 

[
  {
    "object": "block",
    "type": "paragraph",
    "paragraph": {
      "rich_text": [{ "type": "text", "text": { "content": "You made this page using the Notion API. Pretty cool, huh? We hope you enjoy building with us." } }]
    }
  }
]

 

이 세 가지 파라미터를 모두 사용해 엔드포인트에 요청을 전송하여 페이지를 생성해 보도록 하겠습니다.

 

curl -X POST https://api.notion.com/v1/pages \
  -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2021-05-13" \
  --data '{
    "parent": { "database_id": "494c87d0-72c4-4cf6-960f-55f8427f7692" },
    "properties": {
        "title": {
      "title": [{ "type": "text", "text": { "content": "A note from your pals at Notion" } }]
        }
    },
    "children": [
    {
      "object": "block",
      "type": "paragraph",
      "paragraph": {
        "text": [{ "type": "text", "text": { "content": "You made this page using the Notion API. Pretty cool, huh? We hope you enjoy building with us." } }]
      }
    }
  ]
}'

* 토큰과 ID 정보는 적절히 수정되어야 합니다.

* API 요청에는 크기 제한이 존재합니다. 자세한 내용은 Size Limit를 확인해 주세요.

 

페이지가 추가되면 새 페이지 객체가 포함된 응답을 받게 됩니다. Notion을 살펴보고 새 페이지를 확인해 보세요.

 

 

 

5. 페이지에서 블록 읽어오기.

 

페이지 콘텐츠는 자식 블록 검색 엔드포인트를 이용해 읽어올 수 있습니다. 이 엔드포인트는 모든 자식 목록을 반환합니다. 페이지는 블록 자식을 읽어오기 위한 일반적인 시작 방법이지만 다른 종류의 블록에 대한 자식들도 검색할 수 있습니다.

 

"block_id" 파라미터는 블록의 ID를 의미합니다. 예시에 따른다면 응답에 페이지 ID가 포함되어 있을 것입니다. 해당 페이지의 ID를 "block_id"로 사용해 페이지에서 샘플 콘텐츠를 읽어오도록 하겠습니다.

 

이제 "block_id"를 사용해 엔드포인트에 요청을 보내고 하위의 블록을 검색합니다.

 

curl https://api.notion.com/v1/blocks/16d8004e-5f6a-42a6-9811-51c22ddada12/children?page_size=100 \
  -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \
  -H "Notion-Version: 2021-05-13"

* block_id 및 토큰 정보는 적절히 수정되어야 합니다.

 

블록 객체 목록이 포함된 응답을 받게 됩니다.

 

{
  "object": "list",
  "results": [
    {
      "object": "block",
      /* details omitted */
    }
  ],
  "has_more": false,
  "next_cursor": null
}

 

페이징 된 응답을 받을 수 있습니다. 페이징 된 응답은 Notion API 전반에서 사용됩니다. 페이징 된 응답의 최대 결과 개수는 100개입니다. "start_cursor"과 "page_size" 파라미터를 통해 100개가 넘는 결과를 얻어올 수도 있습니다.

 

이 응답에서 요청한 자식 블록은 "results" 배열 내부에 존재하게 됩니다.

 

 

 

6. 중첩된 블록 읽어오기.

 

결과 자체에 자식이 포함된 블록이 있는 경우 어떤 일이 일어날까요? 이 경우 응답에 중첩된 블록이 포함되지는 않지만 "has_children"의 값은 true가 됩니다. 통합에 페이지 콘텐츠 혹은 모든 블록의 완전한 표현이 필요하다면 "has_children"이 true인 블록에 대해 결과를 검색하고 엔드포인트를 재귀적으로 호출해야 합니다.

 

큰 페이지를 읽는데 다소 시간이 걸릴 수 있습니다. 아키텍처에서 작업 대기열과 같은 비동기 작업을 사용하는 것이 좋습니다. 또한 요청 제한에 도달할 수 있으므로 새 요청을 전송하는 속도를 적절히 늦춰야 할 수도 있습니다.

 

 

 

7. 페이지에 블록 추가하기.

 

통합은 블록 자식 추가 엔드포인트를 사용해 더 많은 콘텐츠를 추가할 수도 있습니다. 예시에서 만든 페이지에 다른 블록을 추가해 보도록 하겠습니다. 이 엔드포인트에는 "block_id"와 "children"의 두 개의 파라미터가 필요합니다

 

"block_id"는 기존 블록의 ID입니다. 블록 ID에 앞선 예시에서 사용한 페이지 ID를 동일하게 사용하도록 합니다.

 

"children" 파라미터는 추가할 내용을 설명할 블록 객체 목록입니다. 더 만든 샘플 콘텐츠를 사용해 보도록 하겠습니다.

 

[
  {
    "object": "block",
    "type": "paragraph",
    "paragraph": {
      "text": [{ "type": "text", "text": { "content": "– Notion API Team", "link": { "type": "url", "url": "https://twitter.com/NotionAPI" } } }]
    }
  }
]

 

두 파라미터를 이용해 엔드포인트에 요청을 전송하여 블록을 추가합니다.

 

curl -X PATCH https://api.notion.com/v1/blocks/16d8004e-5f6a-42a6-9811-51c22ddada12/children \
  -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2021-05-13" \
  --data '{
    "children": [
    {
      "object": "block",
      "type": "paragraph",
      "paragraph": {
        "text": [{ "type": "text", "text": { "content": "– Notion API Team", "link": { "type": "url", "url": "https://twitter.com/NotionAPI" } } }]
      }
    }
  ]
}'

* 블록 ID와 토큰을 적절히 수정하는 것을 잊지 마세요.

 

업데이트된 블록이 포함된 응답을 받게 됩니다. 응답에 하위 블록이 포함되어 있지는 않지만 "has_children"의 값이 true로 설정된 것을 확인할 수 있습니다.

 

 

 

8. 맺는 글.

 

사용자가 Notion에서 보는 것의 거의 모든 것이 블록으로 표시됩니다. 이제 통합으로 블록이 있는 페이즈를 만들었고 블록을 읽어올 수 있으며 페이지에 블록을 추가하는 방법을 이해했습니다. 이제 Notion에서 노출된 대부분의 영역을 다를 수 있게 되었습니다. 

 

 

 

* 현재 블록을 삭제하거나 업데이트하는 것은 불가능합니다.

(NotionVersion 2021-05-13) 이러한 작업은 파괴적이므로 API를 통해 이 작업을 노출하는 가장 좋은 방법을 신중히 조사하고 있습니다. 향후 기능에 대한 업데이트를 위해 계속 지켜봐 주시기 바랍니다.

 

 

* 이 글은 Notion API Develpers - Beta: Working with page content를 번역한 글입니다.

 

Working with page content

Overview Pages are where users write everything from quick notes, to shared documents, to curated landing pages in Notion. Integrations can help users turn Notion into the single source of truth by syndicating content or help users gather, connect, and vis

developers.notion.com

 

 

 

반응형

 

Notion API Developer - Beta 한글 번역 

 

 

 

0. 앞선 글.

 

Notion에서 드디어 API 서비스를 시작했습니다. 오래 기다린 기능인만큼 바로 사용해보고 싶은데 아직 한글 가이드가 없어 공식 가이드를 읽으며 참고할만한 내용을 포스팅합니다.

 

 

 

1. 시작하기.

 

Notion API를 사용해 처음으로 API 요청을 만드는 방법에 대해 알아보겠습니다.

 

Notion API를 처음 사용한다면 잘 찾아오셨습니다. 이 가이드에서는 다음과 같은 방법을 알아봅니다.

* Notion 워크스페이스에서 통합(Integration)을 생성합니다.

* Notion에서 새 데이터베이스를 만들고 통합 권한을 부여해 액세스 합니다.

* 코드를 사용해 데이터베이스에 페이지를 추가합니다.

 

 

 

2. 시작하기 전에.

 

시작하기 전에 필요한 몇 가지 사항이 있습니다.

* 관리자 유저로 Notion 워크스페이스에 로그인합니다.

* CURL 커맨드가 설치된 터미널 프로그램.

 

 

 

3. 신규 통합 만들기.

 

브라우저를 새로 열어 Notion 통합 페이지를 엽니다. "새 통합" 버튼을 사용해 신규 통합을 생성합니다. 통합 이름을 지정하세요. 이 예시에서는 "Vacation Planner"로 정했습니다. 제출을 완료해 통합을 생성합니다.

 

https://developers.notion.com/docs/getting-started

 

시크릿 아래에서 내부용 통합 토큰을 찾을 수 있습니다. 이 토큰을 표시하도록 하고 복사해두세요. 텍스트 에디터와 같은 나중에 쉽게 찾을 수 있는 곳에 붙여 넣어 둡시다.

 

 

 

4. 통합을 사용해 데이터베이스 공유.

 

API로 구축된 통합은 사용자에 공유 권한과 유사한 권한 시스템을 따릅니다. 여기에는 중요한 차이점이 있습니다. 통합은 처음엔 워크스페이스의 페이지나 데이터베이스에 액세스 할 수 없습니다. API를 통해 해당 페이지에 액세스 하려면 사용자가 특정 페이지를 통합에 공유해야 합니다. 이런 방식으로 Notion에서 사용자와 팀의 정보를 안전하게 보호할 수 있습니다.

 

워크스페이스의 새 페이지 또는 기존 페이지에서 시작해봅시다. /표 혹은 /table을 입력하여 새 데이터베이스를 추가합니다. 제목을 정해줍니다. 이 예시에서는 "Weekend getaway destinations"라고 정했습니다. 이제 공유 버튼을 클릭해 실렉터에서 통합을 찾아 선택한 뒤 초대를 클릭합니다.

 

https://developers.notion.com/docs/getting-started

 

이제 통합에 새 데이터베이스를 읽고 쓰고 편집할 수 있는 권한이 부여되었습니다. 통합이 워크스페이스에 추가되면 모든 구성원과 통합이 같이 페이지 및 데이터베이스를 공유할 수 있습니다. 이 단계에서는 관리자 권한이 요구되지 않습니다.

 

계속하기 전에 방금 만든 데이터베이스의 ID를 알아보도록 합시다.

Notion 데스크톱 앱을 사용하는 경우 공유 버튼을 다시 한번 클릭해 링크 복사를 선택합니다. 브라우저에 이 URL을 붙여 넣고 확인하세요. 이 URL에서 데이터베이스 ID는 워크스페이스 이름 슬래시(/) 뒤부터 물음표(?) 앞까지입니다. 데이터베이스 ID는 문자와 숫자를 포함하는 32자입니다. 이 ID를 복사해 나중에 쉽게 찾을 수 있는 곳에 저장해 두세요.

 

https://www.notion.so/myworkspace/a8aec43384f447ed84390e8e42c2e089?v=...
                                                                    |-------------------- Database ID ------------------|

 

 

 

5. 데이터베이스에 아이템 추가하기.

 

Notion 데이터베이스에서 각각의 아이템은 자식 페이지입니다. 부모를 데이터베이스로 설정함으로써 새 페이지를 생성해 데이터베이스에 아이템을 추가할 수 있습니다. 새 아이템을 추가하기 위해 페이지 생성 엔드포인트에 HTTP 요청을 보내봅시다.

 

터미널 프로그램을 열고 다음 커맨드를 입력하세요. Authorization와 database_id의 값은 앞서 생성한 적절한 값으로 변경되어야 합니다. 줄 끝에 보이는 문자(\) 뒤에 공백이 없어야 함을 주의하세요.

 

curl -X POST https://api.notion.com/v1/pages \
  -H "Authorization: Bearer MY_NOTION_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2021-05-13" \
  --data '{
    "parent": { "database_id": "DATABASE_ID" },
    "properties": {
      "Name": {
        "title": [
          {
            "text": {
              "content": "Yurts in Big Sur, California"
            }
          }
        ]
      }
    }
  }'

 

커맨드를 실행하고 Notion으로 이동해 새 항목이 데이터베이스에 추가되었는지 확인하세요.

 

이제 Notion API를 사용해 데이터베이스에 새 항목을 추가했습니다. 커맨드와 함께 보낸 HTTP 요청에 대해 좀 더 자세히 살펴보겠습니다.

* Notion API는 REST API 규칙을 따릅니다.

* 토큰은 Authorization 헤더에 포함되며 요청의 출처를 식별합니다.

* Notion API의 각 엔드포인트는 파라미터를 사용해 호출할 수 있습니다. 엔드포인트의 참고 페이지에는 이러한 파라미터에 대해 설명되어 있습니다. 이 예시에서 parent와 properties는 모두 본문에 명시되어 있습니다. 데이터베이스 작업 가이드에는 다른 엔드포인트를 사용하는 방법에 대해 설명되어 있습니다,

 

 

 

6. 마무리

 

방금 배운 내용을 사용하면 다른 서비스와 시스템을 연결해 새로운 정보를 Notion에 보내거나 업데이트 해 여러분의 팀이 정보를 확인하고 조치를 취할 수 있도록 합니다.

 

이 가이드에서는 CURL 명령어를 통해 Notion API에 HTTP 요청을 보내는 방법을 사용하였습니다. 일반적으로 통합은 프로그래밍 언어를 사용하여 코드로 작성될 것입니다. 거의 모든 프로그래밍 언어를 사용할 수 있지만 통합을 사용한 코드를 실행하는데 가장 쉽고 빠른 방법을 찾고 있다면 이 예제를 사용해 보세요. 숙련된 프로그래머들에게도 이 예제는 훌륭한 시작점이 될 것입니다.

 

* 이 글은 Notion API Develpers - Beta: Getting started를 번역한 글입니다.

 

Getting started

Learn how to make your first API requests using the Notion API

developers.notion.com

 

 

반응형

 

Notion API Developer - Beta 한글 번역

 

 

 

0. 앞선 글.

 

데이터베이스 스키마, 쿼리 등에 대해 알아봅시다.

 

데이터베이스를 통해 사용자는 Notion에서 구조화된 데이터를 만들고 다룰 수 있습니다. 통합을 사용해 사용자는 데이터베이스를 외부 시스템과 동기화하거나 Notion 데이터베이스를 중심으로 워크플로우를 구축할 수 있습니다.

 

이 가이드에서는 데이터베이스가 API에서 어떻게 표현되는지부터 데이터베이스에 아이템을 추가하는 방법, 아이템을 찾는 방법뿐 아니라 페이지의 속성(properties)을 업데이트하는 방법도 배울 것입니다.

 

 

 

1. 데이터베이스의 구조.

 

데이터베이스 객체는 사용자가 데이터베이스를 열 때 Notion에서 보는 것을 표현합니다. 가장 중요한 부분은 속성(properties) 컬렉션에 정의된 데이터베이스의 스키마입니다.

 

{
  "object": "database",
  "id": "2f26ee68-df30-4251-aad4-8ddc420cba3d",
  "created_time": "2020-03-17T19:10:04.968Z",
  "last_edited_time": "2020-03-17T21:49:37.913Z",
  "title": [/* details omitted */],
  "properties": {/* a collection of property objects */},
}

 

 

 

2. 데이터베이스의 속성(Properties)

 

여러분이 보고 있는 데이터베이스가 표라고 가정해 보도록 합시다. 속성 객체는 열에 있는 모든 값들의 타입을 포함하며 열에 대한 설명을 저장합니다. 텍스트, 숫자, 날짜, 사람 등의 일반적인 타입을 사용할 수 있으며 각 타입에 대한 추가 구성 또한 사용할 수 있습니다. 다음 데이터베이스 객체 예시를 통해 속성 섹션에 대해 알아보도록 하겠습니다.

 

{
  "object": "database",
  "properties": {
    "Grocery item": {
      "id": "fy:{",
      "type": "title",
      "title": {}
    },
    "Price": {
      "id": "dia[",
      "type": "number",
      "number": {
        "format": "dollar"
      }
    },
    "Last ordered": {
      "id": "]\\R[",
      "type": "date",
      "date": {}
    },
  }
  // remaining details omitted
}

 

이 데이터베이스 객체에는 세 가지 속성이 정의되어 있습니다. 각각의 키는 속성의 이름이며 그 값은 속성 객체입니다. 몇 가지 핵심 사항에 대해 알아보겠습니다.

* "title"은 특별한 타입입니다. 모든 데이터베이스에는 "title" 타입을 가진 딱 하나의 속성이 존재합니다. 이 타입의 속성은 데이터베이스에서 각각의 아이템에 대한 페이지 제목을 참조하게 됩니다. 이 예시에서는 "Grocery item" 속성에 이 "title" 타입이 있습니다.

* "type"의 값은 속성 객체의 또 다른 키에 해당됩니다. 각 속성 객체에는 "type"의 값과 동일한 이름의 속성이 존재합니다. 예를 들어 "Last ordered"에는 "type"에 "date"라는 값이 존재하고 "date" 속성도 존재합니다. 이 패턴은 Notion API 전체에서 사용되며 type-specific 데이터라고 합니다.

* 특정 속성 객체에는 추가 구성이 있습니다. "number" 속성 내부에는 추가 구성이 있는 것을 확인할 수 있습니다. 이 예시에서 포맷 설정은 이 열이 보이는 방식을 제어하며 "dollar"로 설정되었습니다.

 

 

 

3. 데이터베이스에 페이지 추가하기.

 

페이지는 데이터베이스 내부의 아이템으로 사용되며 각 페이지의 속성은 부모 데이터베이스의 스키마를 따라야 합니다. 데이터베이스를 표라고 가정하면 페이지의 속성들은 한 행의 모든 값을 정의합니다.

 

페이지는 페이지 생성 API의 엔드포인트를 사용해 데이터베이스에 추가됩니다. 이 예시에서 데이터베이스에 새 페이지를 추가해 보도록 하겠습니다. 엔드포인트는 "parent"와 "properies"라는 두 가지 파라미터가 요구됩니다.

 

데이터베이스에 페이지를 추가할 때 "parent" 파라미터는 데이터베이스가 되어야 합니다. 

 

{
  "type": "database_id",
  "database_id": "2f26ee68-df30-4251-aad4-8ddc420cba3d"
}

* 데이터베이스에 접근하기 위해 통합에 미리 권한을 부여해야 합니다.

 

"properties" 파라미터는 속성 이름이나 ID를 키로 사용하고 속성 값 객체를 값으로 사용하는 객체입니다. 이 파라미터를 올바르게 작성하기 위해 데이터베이스 스키마의 특성 객체를 참고하세요. 예시 데이터베이스에 대해서 다음 객체를 생성할 수 있습니다.

 

{
  "Grocery item": {
    "type": "title",
    "title": [{ "type": "text", "text": { "content": "Tomatoes" } }]
  },
  "Price": {
    "type": "number",
    "number": 1.49
  },
  "Last ordered": {
    "type": "date",
    "date": { "start": "2021-05-11" }
  }
}

 

이제 위의 "parent"와 "properties" 두 파라미터를 사용해 페이지를 생성하기 위해 엔드포인트에 HTTP 요청을 전송해 보겠습니다.

 

curl -X POST https://api.notion.com/v1/pages \
  -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2021-05-13" \
  --data '{
      "parent": { "type": "database_id", "database_id": "2f26ee68-df30-4251-aad4-8ddc420cba3d" },
      "properties": {
      "Grocery item": {
        "type": "title",
        "title": [{ "type": "text", "text": { "content": "Tomatoes" } }]
      },
      "Price": {
        "type": "number",
        "number": 1.49
      },
      "Last ordered": {
        "type": "date",
        "date": { "start": "2021-05-11" }
      }
    }
  }'

* Authorization와 database_id를 적절히 바꾸는 것을 잊지 마세요

* 정상적으로 페이지가 추가되기 위해선 데이터베이스의 스키마가 알맞게 구성되어야 함을 잊지 마세요.

 

페이지가 추가된다면 새 페이지 객체가 포함된 응답을 받게 됩니다. 이 응답에서 중요한 속성은 페이지 ID입니다. Notion을 외부 시스템에 연결하여 사용하는 경우 이 페이지 ID를 알아두는 것이 좋습니다. 나중에 이 페이지의 속성을 업데이트할 때 업데이트 페이지 엔드포인트에서 이 ID를 사용합니다.

 

 

 

4. 데이터베이스에서 페이지 찾기.

 

데이터베이스 쿼리 엔드포인트를 사용해 데이터베이스에서 페이지를 읽어올 수 있습니다. 이 엔드포인트를 사용하려면 "Last ordered가 지난주부터"와 같은 기준에 따라 페이지를 찾을 수 있습니다. 일부 큰 데이터베이스에서는 이 엔드 포인트를 사용하면 특정 순서의 더 작은 결과를 얻어 낼 수 있습니다.

 

이렇게 페이지를 찾는 데 사용되는 조건을 필터라고 합니다. 필터는 "Tag에 긴급이 포함됨"과 같은 단순한 조건부터 "Tag에 긴급이 포함되어야 하고 Due date는 몇 주 이내여야 하며 Assignee는 Cassandra Vasquez여야 함"과 같은 복잡한 조건으로 설정할 수 있습니다. 이러한 복잡한 조건은 "and"나 "or"을 사용해 여러 개의 단순한 조건을 결합하여 사용하므로 복합필터라고 합니다.

 

이 가이드에서는 예시 데이터베이스에 단일 속성 조건을 사용하는 것을 중점으로 둡니다. 데이터베이스 스키마를 살펴보면 "Last ordered" 속성이 "date" 타입을 사용한다는 것을 알고 있습니다. 즉 "date" 타입에 대한 조건을 사용해 "Last ordered"에 대한 필터를 만들 수 있습니다. 

 

{
  "property": "Last ordered",
  "date": {
    "past_week": {}
  }
}

 

이 필터를 사용해 예시 데이터베이스에서 조건에 맞는 페이지를 찾아와 보도록 합시다.

 

curl -X POST https://api.notion.com/v1/databases/2f26ee68df304251aad48ddc420cba3d/query \
  -H 'Authorization: Bearer '"$NOTION_API_KEY"''
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2021-05-13" \
    --data '{
      "filter": {
      "property": "Last ordered",
      "date": {
        "past_week": {}
      }
        }
    }'

* Authorization과 URL의 databases 뒤에 데이터베이스 ID를 적절하게 바꿔야 함을 잊지 마세요.

 

필터에 일치하는 페이지 객체 목록이 포함된 응답을 받을 수 있습니다.

 

{
  "object": "list",
  "results": [
    {
      "object": "page",
      /* details omitted */
    }
  ],
  "has_more": false,
  "next_cursor": null
}

 

사실 이 응답은 페이징 된(paginated) 응답입니다. 페이징 된 응답은 큰 객체 목록을 반환하는 모든 Notion API의 응답에 사용됩니다. 페이징 된 응답의 최대 결과 개수는 100개입니다. 페이징 된 결과는 "start_cursor"과 "page_size" 파라 미터를 사용해 100개 이상의 결과를 얼어올 수도 있습니다.

 

이 예시에서 요청한 개별 페이지에 대한 정보는 "results"에 있습니다. 통합이나 사용자가 최근에 만들어진 페이지에 관심이 있다면 어떨까요? 가장 최근에 생성된 페이지가 첫 번째로 오도록 결과를 정렬할 수 있습니다. 특히 결과 페이지가 하나가 아닌 경우에 유용합니다.

 

"sort" 파라미터는 개별 속성 혹은 타임스탬프에 의해 결과를 정렬하는 데 사용됩니다. 이 파라미터는 정렬 객체의 배열에 할당될 수 있습니다.

 

페이지가 생성된 시간은 데이터베이스 스키마를 따르는 페이지 속성이 아닙니다. 이 속성은 모든 페이지에 존재는 두 종류의 타임스탬프 중 하나입니다. 이를 "created_time" 타임스탬프라고 합니다. 

 

이제 가장 최근에 생성된 페이지가 먼저 표시되도록 결과를 정렬하는 정렬 객체를 만들어보도록 하겠습니다.

 

{
  "timestamp": "created_time",
  "direction": "descending"
}

 

마지막으로 이 정렬 객체를 사용해 페이지를 요청해 보도록 하겠습니다.

 

curl -X POST https://api.notion.com/v1/databases/2f26ee68df304251aad48ddc420cba3d/query \
  -H 'Authorization: Bearer '"$NOTION_API_KEY"''
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2021-05-13" \
    --data '{
      "filter": {
      "property": "Last ordered",
      "date": {
        "past_week": {}
      }
        },
    "sorts": [{ "timestamp": "created_time", "direction": "descending" }]
    }'

* 데이터베이스 ID과 토큰 정보를 적절히 수정해야 함을 잊지 마세요.

 

 

 

5. 맺는 글.

 

데이터베이스 속성들에 의해 만들어진 데이터베이스 스키마를 이해하는 것은 Notion 데이터베이스 작업의 핵심입니다. 이를 통해 데이터베이스에 페이지를 추가하고 데이터베이스에서 아이템을 찾을 수 있습니다.

 

* 이 글은 Notion API Develpers - Beta: Working with database를 번역한 글입니다.

 

Working with databases

Learn about database schemas, querying databases, and more.

developers.notion.com

 

 

 

반응형

 

쿠폰 입력은 여기서: 쿠폰 입력 페이지

 

DevPlay

 

game.devplay.com

 

 

 

[2021. 05. 13] 쿠키런 킹덤 쿠폰 리스트

 

VANGIZJUWJPNAZGJ - 1분 가속권 20개

XYOKSPZLLUJYFKJN - 경험치 별사탕

 

COOKIECHICKENRUN - 크리스탈 500개

POONGDENGKINGDOM - 크리스탈 500개

KINGDOMYUNIKO720 - 크리스탈 500개

KINGDOMIAMSIXTAN - 크리스탈 500개

2CHAMCOOKINGDOM2 - 크리스탈 500개

 

GETUR1SUGARGNOME - 만우절 기념 노움 장식

GETUR3SUGARGNOME - 만우절 기념 노움 장식

GETUR5SUGARGNOME - 만우절 기념 노움 장식

GETUR7SUGARGNOME - 만우절 기념 노움 장식

 

 

 

[2021. 05. 01] 쿠키런 킹덤 쿠폰 리스트

 

HAPPY100DAYSGIFT - 100일 기념 초상화, 토핑조각, 별사탕, 크리스탈 1000개

IELLBHSLKSKZHBGD - 특별한 쿠키커터 3개

 

 

 

[2021. 04. 29] 쿠키런 킹덤 쿠폰 리스트

 

WELCOMETOKINGDOM - 크리스탈 500개

KINGDOMWELOVEYOU - 크리스탈 3000개 + 스태미너 젤리 100개

 

 

 

[2021. 03. 12] 쿠키런 킹덤 쿠폰 리스트

 

50CAFEREWARD1000 - 크리스탈 1000개

 

 

 

[2021.03.03] 쿠키런 킹덤 쿠폰 리스트

 

KINGDOMNAMDOBLUE - 크리스탈 500개

 

 

 

[2021.02.14] 쿠키런 킹덤 쿠폰 리스트

 

WELCOMETOKINGDOM - 크리스탈 500개

KINGDOMWELOVEYOU - 크리스탈 3000개 + 스태미너 젤리 100개

KINGDOMSUNBA0128 - 크리스탈 500개

KINGDOMYANGDDING - 크리스탈 500개

KINGDOMSWAMP0130 - 크리스탈 500개

TK2PO5GA87DBJALQ - 크리스탈 500개

KINGDOMLILKA2021 - 크리스탈 500개

KINGDOMOKING5927 - 크리스탈 500개

WELCOMETOCRKMATT - 크리스탈 300개

WELCOMETOCKSANNA - 크리스탈 300개

WELCOMETOCRKJACE - 크리스탈 300개

 

 

 

업데이트는 계속 할 예정이지만 공식 카페를 찾아보는것이 더 빠를 수 있습니다.

 

 

 

 

 

반응형

 

Mac의 Finder에서 Synology Nas에 접속해 파일을 관리하는 방법을 알아봅니다.

 

 

 

전송 프로토콜 선택

 

Synology NAS는 다양한 네트워크 액세스 프로토콜을 제공하고 있습니다. 우리는 가장 먼저 이 중에서 어떤 프로토콜을 사용할지 선택해야 합니다. 

 

DS718+의 파일 서비스에서 제공하고 있는 프로토콜

 

위의 사진에서처럼 다양한 프로토콜이 있으며 이 중 어떤 프로토콜을 사용할지 선택해야 합니다. 해당 프로토콜에 대한 설명은 다음 글을 참고해 주시기 바랍니다: 2021/01/30 - [Programming] - 파일 서비스 프로토콜: SMB, AFP, NFS, FTP, TFTP, RSync, WebDAV

 

파일 서비스 프로토콜: SMB, AFP, NFS, FTP, TFTP, RSync, WebDAV

시놀로지의 파일 서비스 시놀로지는 파일 서비스를 제공합니다. 파일 서비스는 중요 디지털 자산을 빠르고 안전하게 공유하고 Windows, macOS, Linux 플랫폼 간에 원활하게 파일을 공유할 수 있도록 D

smoh.tistory.com

 

이 글에서는 AFP와 WebDAV로 접속하는 방법을 알아보도록 하겠습니다.

 

 

 

AFP로 맥에서 Synology NAS에 접속하기

 

먼저 공유를 위한 폴더를 생성합니다. File Station에서 공유 폴더를 생성해 주세요.

 

 

특별한 설정은 하지 않고 기본값으로 둔 채 공유 폴더를 생성합니다.

 

 

폴더를 생성한 뒤 제어판 -> 파일 서비스 -> SMB/AFP/NFS로 이동해 AFP를 활성화시켜줍니다.

 

 

이제 맥에서 Finder를 켠 후 cmd + K 혹은 이동 -> 서버에 연결을 클릭해 시놀로지 접속 주소를 입력합니다. 

 

 

연결을 클릭하면 인증 절차를 수행해야 합니다. Synology NAS의 계정 정보를 입력한 뒤 연결을 눌러 접속을 시도합니다.

 

 

정상적으로 접속이되면 마운트 하려는 볼륨을 선택하라는 창이 뜹니다. 여기서 원하는 볼륨을 선택한 뒤 확인 버튼을 클릭해 마무리합니다.

 

 

정상적으로 연결되어 사용할 수 있습니다.

 

 

 

WebDAV를 통해 맥에서 Synology NAS에 접속하기

 

이 방법은 외부망에서 접속할 때 사용하면 좋습니다. 먼저 Synology에서 WebDAV를 활성화시켜줘야 합니다. WebDAV Server를 열어 HTTP/HTTPS를 활성화해 줍니다. 두 프로토콜 모두 사용 가능하지만 HTTPS를 추천드립니다. 일단 이 글에선 두 프로토콜 모두를 활성화한 채 진행하도록 하겠습니다.

 

 

동일하게 Finder를 열고 서버에 연결 창을 열어줍니다. WebDAV는 HTTP 프로토콜을 이용하며 5005번 포트를 사용합니다. 만약 HTTPS 프로토콜을 사용하고 싶다면 5006번 포트를 사용해야 하며 다음과 같이 작성한 뒤 연결을 클릭하면 됩니다.

 

 

이제 AFP와 동일한 절차를 수행해 주시면 됩니다. 인증 정보를 입력 한 뒤 연결 버튼을 클릭해 접속을 시도합니다.

 

 

인증 절차에 성공하면 이제  WebDAV를 통해 Synology NAS에 접속할 수 있습니다. 앞서 만든 공유 폴더를 확인할 수 있습니다.

 

 

 

 

 

 

반응형

 

https://www.premiumbeat.com/blog/beginners-guide-to-frame-rates/

 

앞선 글.

 

서로 다른 매체와 지역마다 다양한 이유로 모두 다른 초당 프레임 수(Freames per second, fps, 프레임 레이트)를 요구합니다. 영상에 적용하기로 결정된 프레임 레이트는 여러분의 프로젝트가 어떻게 보이는지 크게 변경시킬 수 있으며 작업 결과물에도 영향을 미칩니다. 

 

프레임 레이트가 무엇인지에 대해 간략하게 알아보고 여러분의 프로젝트에 적합한 프레임 레이트를 결장하는 방법에 대해 알아봅시다.

 

 

 

프레임 레이트가 무엇인가요?

 

프레임 레이트는 일반적으로 초당 프레임 수(Frames for second, fps)로 표시되며 영상의 1초가 얼마나 많은 스틸 프레임으로 구성되어 있는가를 설명하는 데 사용되는 용어입니다. 예를 들어 Gone Girl의 클립 1초는 24개의 프레임으로 구성되어 있습니다.

 

https://www.imdb.com/title/tt2267998/

 

이 클립을 우리의 편집 툴로 가져와서 각 프레임을 확인해보면 24개의 개별 프레임으로 구성되어 있는 것을 확인할 수 있습니다. 각 프레임은 1/24초를 나타냅니다.

 

https://www.20thcenturystudios.com/

 

위 사진은 클립 1초를 구성하는 프레임들입니다. 총 24개의 프레임이 1초를 구성하는 것을 확인할 수 있습니다. 디지털 영화를 만드는 데 있어서 약간은 구식이라고 느껴질 수 있는 "초당 프레임"이라는 용어는 셀룰로이드(8mm, 14mm, 35mm 필름)에서 파생되었으며 초마다 노출되는 프레임의 수를 자세히 설명합니다. 디지털카메라는 필름을 사용하지 않지만 개별 스틸 프레임을 전자적으로 유사하게 처리하므로 이 용어는 셀룰로이드와 디지털에 모두 사용됩니다.

 

 

 

특정 FPS를 사용하는 있는 이유가 있나요?

 

https://www.shutterstock.com/image-photo/vintage-8mm-film-projector-blank-frame-82577167

 

선택할 수 있는 선택지가 많은 셔터 스피드와는 달리 프레임 레이트는 일반적으로 일련의 표준을 준수하며 23.976, 24, 25, 29.97, 30, 48, 50, 59.94, 60fps 중에서 선택됩니다.

 

여기서 왜 하필 24fps에서 시작하는 걸까요? 왜 19개나 20개가 아닌 24개일까요? 일반적으로 인간은 10~12개의 프레임 정도면 식별 가능하며 개별적인 이미지로 인식합니다. 하지만 1초 내에 그보다 더 많은 이미지가 지나가게 되면 우리의 뇌는 이미지를 움직임으로 인식하게 됩니다. 1900년대 초에는 표준 프레임 레이트가 존재하지는 않았지만 프레임 속도를 높이기 위해선 더 많은 필름을 사용해야 하므로 프레임 속도를 낮게 유지하는 것이 스튜디오에 이득이었습니다.

 

왜 24fps에서부터 시작되는지에 대한 구체적인 이유는 없지만 주요한 이유로 수학과 녹음의 도입 때문이라고 결론지을 수 있습니다. "The Surprisingly Fascinating World of Frame Rates"의 글에서 16fps에서 24fps로의 전환에 대해 자세히 알아볼 수 있습니다.

 

 

 

영화에서의 프레임 레이트.

 

https://www.imdb.com/title/tt2310332/

 

앞서 언급했듯이 보편적으로 영화에서는 24fps가 표준으로 여겨집니다. 그럼에도 불구하고 몇몇의 혁신적이고 실험적인 영화 제작자들은 또 다른 선택지를 찾기 시작했습니다. 그중 한 가지 유명한 예시는 호빗 3부작을 48fps로 촬영한 Peter Jackson입니다.

 

Jackson의 48fps로의 진출은 엇갈린 피드백을 받았지만 일부에서는 이런 프레임 레이트에 대한 테스트를 그만두지 않았습니다. James Cameron은 아바타 후속작을 48fps로 촬영하고 있으며 Ang Lee는 최근 Genmini Man을 120fps로 촬영했습니다.

 

대부분의 디지털 프로젝터와 홈 스트리밍 서비스가 수용할 수 있는 다양한 프레임 레이트로 촬영할 수 있지만 영화가 24fps로 촬영되고 있는 이유는 단순히 이러한 특징이 우리에게 익숙한 것이기 때문입니다.

 

 

 

비디오와 TV에서의 프레임 레이트.

 

https://www.shutterstock.com/image-photo/tv-color-test-pattern-card-pal-93214642

 

비디오에 대한 미국의 표준은 오랫동안 30fps였지만 TV 방송에 대한 표준은 29.97fps입니다. 이 30fps라는 수치는 미국의 60Hz 전력 표준과 이상적인 동기화를 위해서 선택되었습니다. 이러한 형식을 NTSC라고 합니다. 유럽에서는 50Hz의 전력 표준으로 인해 비디오의 표준 프레임 레이트가 25fps입니다. 이러한 형식을 PAL이라고 합니다. 온라인에서의 비디오는 주로 30fps로 업로드되며 액션이 많은 콘텐츠의 경우 60fps로 업로드됩니다.

 

60Hz의 전력 표준으로 인해 많은 사람들이 PAL 영역에서 NTSC fps로 촬영이 가능한지 궁금해합니다. 다행히도 이미 이 질문에 대해 조사했으며 이 글에서 관련 정보를 확인할 수 있습니다.

 

 

 

드롭 프레임(Drop frame)과 타임 코드.

 

https://www.shutterstock.com/image-photo/viewing-habits-94006732

 

우리는 종종 24, 30, 60fps 외에도 23.976, 29.97, 59.94fps를 볼 수 있습니다. 이러한 프레임 레이트는 왜 사용하는 걸까요? 컬러 TV가 처음 도입되었을 때 Color Subcarrier라고 불리는 색조와 채도 레벨을 제공하는 추가적인 신호는 가시적이고 정적인 형태로 기존 흑백 TV에 간섭을 일으켰습니다. 다행히도 프레임 레이트를 29.97로 낮추면 이런 정적 형상이 해소되었습니다. 이후 29.97fps로 방송하는 것은 방송 업계의 표준이 되었습니다. 이러한 포맷을 드롭 프레임(Drop Frame)이라고 하며 그대로인 30fps를 논 드롭 프레임(Non Drop Frame)라고 합니다.

 

29.97fps에서 드롭 프레임 오프셋을 보정하기 위해 드롭 프레임에서 타임코드는 10분의 배수를 제외하고 1분에 한 번씩 00과 01 프레임을 반드시 건너뛰어야 합니다. 물론 24fps, 60fps에 대한 드롭 프레임의 타임코드 변형도 존재합니다. 일반적인 영상작업에서는 알아두는 것으로 괜찮지만 방송용 영상작업에서는 드롭 프레임과 타임코드 보정은 매우 중요합니다.

 

 

 

온라인 콘텐츠에서의 프레임 레이트.

 

 

유튜브와 페이스북 동영상과 같은 온라인 콘텐츠는 TV의 표준 관행을 따를 필요가 없으며 마찬가지로 영화의 프레임 레이트를 따를 필요도 없습니다. 온라인 콘텐츠에서 사용하기에 가장 좋은 프레임 레이트는 과연 무엇일까요? 온라인 플랫폼의 유연성 때문에 명확한 정답이 없습니다. 다만 유튜브의 경우 가이드라인에서 다음과 같이 설명되어 있습니다.

 

Content should be encoded and uploaded using the same frame rate that was used during recording. Common frame rates include: 24, 25, 30, 48, 50, and 60 frames per second (other frame rates are also acceptable).
콘텐츠는 녹화 중에 사용한 것과 동일한 프레임 레이트로 인코딩한 뒤 업로드되어야 합니다. 일반적인 프레임 레이트는 다음을 포함합니다: 24, 25, 30, 48, 50, 60fps(다른 프레임 레이트도 허용됨).

 

결국 여기서의 프레임 레이트는 만드는 콘텐츠의 유형에 따라 결정됩니다. 만약 여행 브이로그 영상을 촬영하고 영화와 같은 분위기를 연출하고 싶다면 24fps나 25fps로 하는 것이 좋습니다. 만약 빠른 페이스의 액션 영상을 촬영하는 경우 느린 프레임 레이트로 인해 흐림(블러) 현상이 발생할 수 있으므로 높은 프레임 레이트를 사용하는 것이 좋습니다.

 

 

 

맺는 글.

 

프레임 레이트가 동작하는 방식에 대한 기술적인 세부사항은 이보다 훨씬 더 많이 있지만 이 정도의 지식이 있다면 최소한 이를 식별하고 현재 프로젝트에 적합한 것을 선택할 수 있습니다.

 

 

 

본 글은 다음 글을 참조하였습니다: A Beginner’s Guide to Frame Rates

 

A Beginner's Guide to Frame Rates

Let's take a brief look at frame rates, what they are, and exactly how to decide how many frames per second will best benefit your next project.

www.premiumbeat.com

 

 

 

 

 

반응형

https://www.pcmag.com/news/adobe-premiere-pro-vs-apple-final-cut-pro-x-whats-the-difference

 

앞선 글

 

요새 들어 우리는 수많은 비디오 편집 툴을 찾아볼 수 있습니다. 하지만 진짜 프로처럼 편집하고 효과를 추가하고 완벽하게 마무리짓길 원한다면 상황이 바뀌어 리스트가 확연히 줄어듭니다. 결국 대부분의 사용자는 전문적인 비디오 편집 소프트웨어로 어도비의 프리미어 프로나 파이널 컷 프로 X 중에서 선택합니다.

 

이 둘 중에서 더 나은 한 가지만 고르라는 것은 불가능합니다. 각각 자신만의 장점과 단점이 있고 둘 중 하나에서 모든 기능을 마스터한다면 우리는 완전히 전문적인 결과를 만들어 낼 수 있을 것입니다.

 

하지만 만약 여러분이 둘 중 어느 하나를 선택해야 할지 의구심이 든다면 각 제품의 퍼블리셔가 무엇을 제공하고 우리는 어떤 것을 선택해야 하는지 자세히 알아보도록 합시다.

 

 

 

비디오의 포토샵 어도비 프리미어 프로.

 

사진 편집에 대해 말할 때 가장 먼저 떠오르는 프로그램은 당연히 포토샵입니다. 프리미어 프로는 여러분이 찾을 수 있는 가장 완벽하고 전문적인 비선형적 영상 편집 소프트 웨어입니다. 어도비의 그림자는 사진 편집을 뛰어넘어 영상편집에 있어서 그 가치를 보여줄 수 있는 기회를 놓치지 않았습니다.

 

https://itigic.com/adobe-premiere-pro-vs-final-cut-pro-x/#Adobe_Premiere_Pro_the_Photoshop_of_videos

 

어도비 프리미어는 우리가 찾을 수 있는 가장 완벽한 전문적인 영상 편집 툴입니다. 어도비는 프리미어가 영상 편집 경험이 없는 사용자와 전체 해상도에 대한 편집이 필요하고 전문적인 마무리를 원하는 모든 사용자를 위한 영산 편집 툴이 되기를 원합니다.

 

 

 

어도비 프리미어 프로의 장점.

 

어도비의 비선형적인 영산 편집 소프트웨어는 사용자에게 다른 제품이 제공해 주지 못하는 다양한 이점을 제공해 줍니다. 우선 가장 중요한 것으로 어도비사의 다른 프로그램과 유사한 인터페이스를 제공하면서 모든 사용자의 요구를 문제없이 충족시켰다는 것입니다. 게다가 우리는 직접 만들거나 심지어 스크래치(Scratch)로부터 생성된 다양한 워크스페이스를 사용할 수 있습니다. 이런 방식으로 프리미어는 사용자들의 작업 방식을 프로그램에 맞추는 것이 아닌 프로그램이 사용자에 맞추는 프로그램입니다. 프리미어의 러닝 커브는 다른 유사한 프로그램보다 훨씬 간단합니다.

 

 

프리미어의 또 다른 장점은 다른 어도비 프로그램과 쉽게 연결되고 작동한다는 것입니다. 가장 중요한 점은 프리미어의 구성이 애프터 이펙트(After Effect)와 동기화된다는 점입니다. 게다가 비디오에 효과를 추가하는 것 외에도 애프터 이펙트는 타이틀, 트랜지션을 만들 때  매우 인기 있는 툴입니다. 라이브러리 컬러와 포토샵, 일러스트레이터에서 콘텐츠를 가져올 수 있다는 점도 프리미어의 주요 장점 중 하나입니다.

 

 

어도비는 기술적 측면에서 항상 최신 상태를 유지하고 있으므로 프리미어는 항상 최신 코덱, 포맷, 해상도에 호환됩니다. 또한 구독 모델을 통해 매월 일정 금액을 지불하고 추가 갱신 비용 없이 항상 최신 버전의 프리미어를 사용할 수 있습니다.

 

 

 

어도비 프리미어의 단점.

 

 

영상을 편집할 때 고사양의 컴퓨터를 사용해야 합니다. 적정 메모리가 32GB에 달 할 정도로 많은 RAM이 필요하며 인텔의 i7이상의 높은 사양의 프로세서, SSD, 렌더링 속도를 높이기 위한 좋은 그래픽 카드가 필요합니다. 프리미어는 이러한 권장사항이 요구되며 많은 리소스를 사용합니다.

 

만약 중급 이하의 사양의 컴퓨터를 갖고 작업한다면 프로그램은 작동하겠지만 컴퓨터는 프리미어를 동작시키는 데 있어서 필사적일 것입니다. 콘텐츠를 렌더링 하는데 오랜 시간이 걸릴 것이며 작은 변경에도 새 렌더링이 필요할 것입니다. 

 

 

많이 개선되었다곤 하지만 프리미어는 많이 종료되는 프로그램 중 하나입니다. 예기치 않은 종료나 크래시로 작업을 잃지 않으려면 5분마다 데이터 자동 저장을 활성화하는 것이 중요합니다. 수많은 사용자가 불평하고 있지만 사라지지 않고 있습니다.

 

특정 작업을 위해 다른 어도비 프로그램에 의존하는 것도 불편할 수 있습니다. 예를 들어 프리미어에서 이펙트를 추가할 수 없고 애프터 이펙트를 사용합니다. 오디오를 편집하기 위해서는 오디션을 사용해야 합니다. 게다가 프로그램 간의 연결로 변경 사항이 항상 실시간으로 반영되는 것은 아닙니다.

 

 

 

많은 이들이 맥을 사는 이유 파이널 컷 프로 X.

 

파이널 컷 프로 X는 애플의 비선형 영상 편집 툴입니다. 파이널 컷은 애플의 Metal 엔진을 사용해 사용자들에게 모든 유형의 프로젝트에 대하여 최고의 성능과 안정성을 제공합니다. 애플은 어도비의 전체 제품군에 맞서 처음부터 끝까지 편집자에게 필요한 모든 것을 제공하는 영상 편집 툴이 되기를 바랍니다.

 

https://itigic.com/adobe-premiere-pro-vs-final-cut-pro-x/#Adobe_Premiere_Pro_the_Photoshop_of_videos

 

빈 공간이 없는 마그네틱 타임라인을 제공하는 새로운 영상 편집 엔진 외에도 파이널 컷은 가능한 가장 편한 방식으로 작업할 수 있는 도구들을 제공해 줍니다. 예를 들자면 태그와 카테고리에 따른 콘텐츠 구성 도구와 작업물의 오디오 최적화를 위한 멀티채널 오디오 편집기가 있습니다. 또한 애플은 애프터 이펙트의 대안으로 전문적인 타이틀과 이펙트를 만들 수 있는 Motion Graphics를 제공합니다. 그리고 Compressor 덕분에 뛰어난 비디오 인코딩 결과를 얻을 수 있습니다.

 

 

 

파이널 컷 프로 X의 장점.

 

파이널 컷의 강점 중 하나는 특정 하드웨어인 macOS에서만 동작하도록 프로그래밍되어 있다는 것입니다. 이로 인해 4K 및 HEVC 형식의 모든 종류의 영상을 편집할 때 최대 성능과 안정성을 제공합니다.

 

수년간 파이널 컷 프로 X로 영상을 편집하기 위해 Mac을 구입한 많은 이들에게 큰 명성을 얻었습니다. 결국엔 파이널 컷 이 애플의 판매 기술 중 하나가 되었습니다.

 

 

어도비와 같은 구독 방식의 영상 편집 프로그램들과 달리 파이널 컷 프로 X는 애플의 앱스토어에서 $299.99에 구매할 수 있습니다. 한 번의 결제로 파이널 컷을 제약 없이 사용할 수 있습니다. 

 

파이널 컷의 또 다른 장점은 다른 영상 편집 툴 보다 더 쉽게 멀티 캠 영상을 편집하고 구성할 수 있다는 것입니다. 또한 더 나은 크로마 컨트롤이 가능하며 후 처리 결과가 좀 더 전문적입니다.

 

 

 

파이널 컷 프로 X의 단점.

 

파이널 컷의 가장 큰 단점은 macOS에서만 사용할 수 있다는 것입니다. Windows 컴퓨터에서는 사용할 수 없습니다. macOS를 가상화하거나 해킨토시를 사용하는 경우 원래 맥에서 동작하는 것처럼 제대로 동작하지 않습니다. 좋은 영상 편집 툴을 원하지만 애플 컴퓨터에 투자하고 싶지 않은 사용자들을 떠나보냅니다.

 

https://static.packt-cdn.com/products/9781849692960/graphics/2960_01_38.jpg

 

애플은 항상 직관적이고 사용하기 쉬운 제품을 만들지만 많은 전문가들은 파이널 컷 프로가 어도비 프리미어 프로와 같은 다른 영상 편집 툴의 인터페이스보다 훨씬 더 복잡하다고 생각합니다. 프로들은 이 인터페이스 앞에서 많은 시간을 보낼 것이므로 가능한 한 인터페이스가 편하게 느껴지는 것이 가장 좋습니다. 심지어 파이널 컷의 인터페이스는 사용자가 직접 정의하거나 변경할 수 없습니다.

 

파이널 컷 프로 X 버전은 꽤 논란이 많은 버전입니다. 이 버전은 파이널 컷 프로라 불리는 이전 버전의 파이널 컷을 대체하지만 완전히 호환되지는 않습니다. 또한 애플은 이 버전에서 편집 방식을 변경하였습니다.

 

 

 

어도비 프리미어 프로와 파이널 컷 프로 X, 어떤 것을 선택해야 할까?

 

각 프로그램에는 프로그램만의 장단점이 있습니다. 일부 사용자에게는 좋은 기능이 다른 사용자에게 적합하지 않을 수 있습니다. 우리에게 익숙한 인터페이스 환경에서 다른 인터페이스로 변경하면 다른 프로그램의 인터페이스에 익숙해질 때까지 시간이 필요하며 그동안 전문성이 떨어질 수 있습니다.

 

그렇다면 아직 영상 편집을 시작하지 않았고 이 둘 중 하나를 선택할 예정이라면 어떤 것을 선택해야 할까요?

 

민약 여러분이 Windows를 사용한다면 이 질문에 대한 대답은 명확해집니다. 파이널 컷을 사용하기 위해 맥을 구매하지 않는 이상 Windows 컴퓨터에서 애플의 소프트웨어를 사용할 수 없기 때문에 어도비의 프리미어가 유일한 선택입니다.

 

만약 이미 맥이 있거나 맥을 구입할 예정이라면 두 제품 모두 macOS에서 사용할 수 있으므로 선택의 여지가 생깁니다. 많은 전문가들이 동의하는 한 가지가 있습니다. 상대적으로 작은 영상을 편집하고 빠른 속도가 필요하다면 파이널 컷 프로 X가 프리미어보다 훨씬 더 뛰어납니다. 반대로 이펙트를 제작하고 매우 큰 영상을 문제없이 더 잘 관리하고 제작하고 관리할 때 많은 기능을 원한다면 어도비 프리미어를 선택하는 것이 좋습니다.

 

마지막으로 가격 역시 고려해야 할 또 다른 요소입니다. 파이널 컷 프로 X는 영구 라이선스를 $299.99에 구매할 수 있지만 어도비 프리미어 프로만 사용할 때의 가격은 매 월 $20.99입니다. 그리고 만약 어도비 프로그램을 모두 사용하고 싶다면 매 월 $52.99의 구독료를 지불해야 합니다. 프리미어만 사용한다면 1년 반 안에 파이널 컷이 더 저렴할 것입니다.

 

 

 

 

 

반응형

+ Recent posts