개발 이것저것
오픈소스 응애의 험난한 컨트리뷰션 후기
오픈소스 응애의 험난한 컨트리뷰션 후기
2023.06.18대형 오픈소스에 컨트리뷰터가 되는 것은 언젠가 꼭 한번 쯤 해보고 싶다는 욕망과 함께 마음속 한켠에 고이 간직해 놓고, 오랫동안 외면해 왔던 도전 중 하나였다. 사실 오픈소스에 컨트리뷰션을 한다는 행위 자체는 누군가에겐, '엥 그게 뭐가 어려워? 그거 그냥 문서 번역이나 오탈자 기여만 해도 쉽게 해볼 수 있는건데?' 라고 말할 수 있을지도 모르는 그런 일인지도 모른다. 애초에 의미적으로만 따지자면, 코드가 공개되어 있는 레포라면 어디든 내가 PR을 올려서 머지가 되기만 한다면 그게 어떤 프로젝트이든 결과적으론 '오픈소스에 기여했다'고 할 수 있을테니까 말이다. 하지만, 내가 마음속에 품고 그리던 '컨트리뷰터'라는 단어가 가진 의미는 조금 달랐다. (컨트리뷰터의 사전적 의미를 재정의 하고 싶은 것이 아니다..
고루틴의 동작 원리에 관하여
고루틴의 동작 원리에 관하여
2022.02.13고루틴? 고루틴은 GO언어에서 프로그램의 동시성을 쉽게 구현하고 기존의 단순 스레드 기반의 구현에 비해 효율적인 동작을 수행해 내기 위해 만든 작업단위 이다. 고루틴의 장점 아래 내용에 들어가기에 앞서서 스레드에 관해 정리해야할 부분이 있다. CPU의 멀티스레딩에 활용되는 용어인 스레드와 아래에서 설명될 OS영역에서 다뤄지는 스레드는 서로 지칭하는 대상이 다르다. CPU의 스레드는 한개의 코어를 OS에게 여러개로 인식시켜 동작하도록 하는 하드웨어 영역의 개념이고, 아래에서 계속하여 언급할 스레드는 OS 하위의 소프트웨어 영역에서 CPU의 작업단위로 지칭되는 용어이다. 메모리 소비 고루틴은 스레드에 비해 더 작은 메모리만 필요로 함. 고루틴 생성에는 2KB의 스택만 필요로 하고 필요에 따라 힙을 사용. 반..
[confluence to tistory-10]공식 Confluence API의 개선 완료
[confluence to tistory-10]공식 Confluence API의 개선 완료
2021.10.10드디어 기다리고 기다리던 API가 개선이 완료되어, OAuth를 통해 발행 받은 토큰을 활용해서 게시물의 이미지와 첨부 파일 등을 다운로드 할 수 있도록 개선이 완료되었다.이번 개선을 통해 OAuth 2.0 토큰을 발행할 때 첨부 파일 다운로드를 위한 readonly:content.attachment:confluence 라는 scope가 새로 추가되었고, API 문서에도 관련된 사항이 업데이트 되어 Get URI to download attachment 섹션이 추가되었다.공식적으로 지원이 되면서, 원래 내 코드에서 테스트를 위해 첨부 파일과 이미지 다운로드 부분만 별도의 인증 체계를 통해 임시 성 코드를 덕지덕지 발라 놓았었는데, 그러했던 부분들을 모두 제거하고 공식 지원하는 API로 변환 하자, 코드들..
[confluence to tistory-9]Atlassian 개발자 커뮤니티의 지원
[confluence to tistory-9]Atlassian 개발자 커뮤니티의 지원
2021.10.10지난 글에서 제보했던 이미지 다운로드 API의 인증에러와 관련하여 Jira 티켓이 만들어지긴 했지만, 내가 제보한 이슈는 별로 많은 사람들이 고민하던 이슈는 아니었던가보다. 내가 제보한 이슈는 사람들의 관심으로부터 매우 동떨어져 있었고, 사실상 처리될 이슈로 분류되기에는 어려워 보였다. 약 5일여간을 기다렸으나 Atlassian에는 수많은 이슈들이 Jira에 등록이 되어 있었고, 이 이슈가 진행상태로 넘어가기 위해서는 많은 사람의 관심과 투표가 있어야 작업이 진행되는 시스템으로 보였다. 수많은 이슈들이 관심을 받지 못하고 GATHERING INTEREST 상태로 오랜시간을 버티고, 내 이슈도 그들과 같은 행보를 걷는듯 했다. 국내 개발자 커뮤니티의 도움을 받아서 투표수를 올려서 관심을 끌어볼까 하는 마음..
[confluence to tistory-8]재발한 이미지 처리 문제
[confluence to tistory-8]재발한 이미지 처리 문제
2021.10.10한동안 프로젝트 진행을 방해하며 괴롭혔던 포스팅의 이미지 처리에 대한 문제가 기어이 다시 재발하여 이번에는 아에 프로젝트 전체를 위기에 빠트리고 있다. 문제의 시작.. 문제의 내용을 요약하자면, Oauth2.0을 활용한 인증방식을 이용하는 경우 게시물의 이미지 및 첨부파일을 api를 통해 다운로드 받을 수 없다는 내용이다. confluence에서는 첨부파일이나 이미지를 아래와 같은 형태의 URI를 통해 다운로드 받을 수 있다. https://api.atlassian.com/ex/confluence/{baseId}/download/attachments/14778479/image-20210317-174604.png 하지만, 당연하게도 confluence에 게시되는 모든 컨텐츠들은 private한 형태로 게시..
[confluence to tistory-7]표 변환
[confluence to tistory-7]표 변환
2021.10.10구현하면서 기능들을 테스트 하다보니 이번에는 표를 변환하는 과정이 엄청 애를 먹였다. 해결하고 나서 보니 정말 아무것도 아닌 것들이었는데 내용이 다음과 같았다. 티스토리에 게시된 표의 모양이 예쁘지 않음 html2text 모듈 사용시 표 변환이 안됨 사실 두 문제 모두 각각의 상황에서만 보면 금방 디버깅 하여 해결했을 문제들 이었음에도 테스트 과정에서 공교롭게 두 문제를 동시에 마주하는 바람에 제대로 초점을 잡지 못해 삽질을 엉뚱하게 하다가 시간을 많이 보내었다. 선택과 집중이 중요함을 다시 한번 느낄 수 있었던 과정이었다. 티스토리에 게시된 표의 모양이 예쁘지 않음 해당 내용은 말 그대로, confluence api가 제공해주는 게시물의 html 컨텐츠를 티스토리에 게시했을 때 발생하는 문제였다. 변형..
[confluence to tistory-6]개발한 기능들 API화(feat. fastapi)
[confluence to tistory-6]개발한 기능들 API화(feat. fastapi)
2021.10.10컨플루언스에서 작성한 문서들을 Tistory 블로그로 옮기기 위한 POC작성 및 테스트가 끝났으니, 본격적으로 기능을 서비스화 하기 위해 각각의 기능들을 restapi 형태로 감싸기로 하였다. 파이썬 웹 프레임워크 선택 평소에 자주 사용하였던 Flask를 활용하여 만들어 볼까도 하였으나, 최근에 관심있게 보고 있었던 fastapi가 눈에 들어와서 이번 기회에 간단하게 문법을 공부해서 적용해 보기로 하였다. fastapi에 대해서 간단하게 소개하자면 Starlette(내부적으로 uvicorn을 사용하는 경량 ASGI 웹 프레임워크)과 Pydantic(데이터 유효성 검사 라이브러리)의 장점을 적절히 버무려서, 매우 간편하게 개발할 수 있으면서 매우 빠른 성능을 보여주는 파이썬 웹 프레임워크이다. 여기서 말하..
[confluence to tistory-5]이미지 삽입
[confluence to tistory-5]이미지 삽입
2021.10.10이놈의 이미지 때문에 삽질을 며칠을 하였다. 이미지 썸네일 표시 안됨.. 컨플루언스에 업로드 되어 있는 이미지는 권한이 있는 사용자(나)만 볼 수 있는 이미지이기 때문에, OAuth2.0으로 토큰을 발행받은 시점에 다른 이미지 저장소에 공개 이미지로 업로드 하여, 새로 발급받은 주소로 이미지 주소를 치환하여 첨부했었다. 지난 confluence to tistory-2 편에서 작업한 내용은, 이 공개 이미지 저장소로 imgbb 라는 사이트를 이용하는 것이었다. 하지만 포스팅 발행까지 어느정도 완료되고 나자 매우 거슬리는 문제 하나를 발견했다. 바로 이미지 썸네일이 보이지 않는 현상!!! 아래의 두개 포스팅과 같이 이미지를 첨부하면, 썸네일에 이미지가 출력되어야 하는데 현재 발행방식으로는 이미지가 썸네일에 ..
[confluence to tistory-4]Confluence Api도 OAuth2.0으로
[confluence to tistory-4]Confluence Api도 OAuth2.0으로
2021.10.10Tistory Api 덕분에 OAuth2.0의 원리 및 활용법을 알게 되었는데, 생각해보니 사용자를 위해서라면 Confluence Api를 사용할 때도 OAuth2.0 방식으로 해야겠다는 생각이 되어 찾아보니, Confluence에서도 OAuth2.0을 지원하고 있었다. OAuth2.0 앱 등록 당연한 이야기 이지만 Confluence도 OAuth2.0 인증을 사용하기 위해서는 개발자 콘솔에서 어플리케이션을 등록하고, AppID 및 Secret등을 발급 받아야 한다. 순서는 다음과 같다. 개발자 콘솔의 Myapps에서 Create app버튼에서 OAuth 2.0 (3LO) integration 을 선택한다. 만들 어플리케이션의 이름을 입력하고 생성한다. 방금 생성한 항목에 접속해서 Permissions ..
[confluence to tistory-3]tistory api 및 OAuth2.0
[confluence to tistory-3]tistory api 및 OAuth2.0
2021.10.10이슈개요 tistory api를 활용하여 게시물 포스팅 tistory에서는 굉장히 개발자 친화적인 api 문서를 제공 하고 있었다. (내가 꼬인건지 모르겠지만, 외국 솔루션의 Document 들은 괜히 공식 문서랍시고 설명들을 쓸데없이 어렵게 써놓고 개발자들이 이것 저것 찾아봐야하게 문서를 써놓는 것 같다) < - 지금 다시 읽어보니 이때 왜 이렇게 화가 나있지.. 티스토리의 Open Api는 api사용시 인증방식을 OAuth2.0을 활용하도록 만들어 그 기능을 제공하고 있다. 나중에 사용자들에게 서비스를 제공할 것을 생각해 보니 컨플루언서의 API 인증방식도 가능하다면 OAuth2.0을 활요하면 좋지 않을까 생각하고 찾아보니 해당 인증방식을 지원하고 있었다. 그래서 인증 방식을 모두 OAuth 방식을 ..
[confluence to tistory-2]html 다듬기
[confluence to tistory-2]html 다듬기
2021.10.10신규 단위목표이미지 추출 및 공개서버에 업로드 → html내 링크 정보 치환테이블 테그 tistory 형식에 맞게 변경codeBox tistory 형식에 맞게 변경 필요추출된 페이지 테스트 등록추출된 html이 tistory 게시물로 등록되었을 때 바람직한 모양으로 출력되는지 테스트하기 위해서 테스트 게시물을 게시해 보았다. 눈에 띄는 문제점 두가지가 보였다.표 디자인이 구림코드박스 syntax highlight가 동작하지 않음보이는 문제점 말고도 가장 치명적인 문제점이 하나 있는데, html내부에 삽입된 이미지가 confluence Cloud 서버내에 저장되어 링크가 걸려있었다. 당연히 로그인 통해 인가된 사용자만 접근하여 이미지를 로딩해 올 수 있었기 때문에, 블로그에 정상적으로 게시하기 위해서는 이..
confluence to tistory 제작-1
confluence to tistory 제작-1
2021.03.23개발 1일차 단위목표 confluence api 조사 페이지, 스페이스 목록 정보 조회 api 확인 특정 페이지 html or markdown export api 확인 REST API 활용 인증 구현 personal token 생성 : 을 base64로 인코딩 Authorization 헤더에 Basic 을 추가하여 사용 curl -H "Authorization: Basic " https://{confluenceBaseUrl}/rest/api/content space 목록 확인 구분 정보 비고 API 경로 https:///wiki/rest/api/space 매서드 GET 호출 목적 space의 name, key 쌍 확인 페이지 목록 조회 구분 정보 비고 API 경로 https:///wiki/rest/api..