samchon
1k
2016-09-16 02:56:14
3
3158

오픈소스 대회에 참가 중입니다. 조언을 구합니다.



https://github.com/samchon/framework

안녕하세요? Samchon Framework 라는 자작 프레임워크로 오픈소스 대회 참가중인 삼촌 이라고 합니다. 저는 오픈소스 대회에 이번 달 말일 (9월 30일) 까지 소스코드 일체와 보고서 및 3분 소개 동영상을 제출해야 합니다. 대회 막바지가 2주일 남은 이 시점에, 소스코드는 다 작성하였고, 이제는 가이드 문서와 보고서 등을 쓰고 3분 소개동영상을 제작해야겠지요.

가이드 문서는 어찌저찌 쓴다 하더라도, 보고서는 어떻게 쓰고 동영상은 또 어떻게 찍을지 막막합니다. 아래 삼촌 프레임워크에 대한 개략적인 소개글을 올립니다. 아래의 소개글을 골자로 하여 보고서를 쓰고 동영상을 찍을 생각입니다.

제가 무언가 놓치고 있는 것은 없는 지ㅡ 이런 보고서나 동영상을 만들 땐 무엇을 유의하여 만들어야 하는지 등... 피드백과 조언을 받고자 합니다. OKJSP에는 여러분야의 고수들이 많다고 하여 이렇게 글을 쓰게 되었습니다. 선배님들의 금싸라기같은 조언을 기다리고 있겠습니다. 대회 외적으로, 순수 프로젝트에 관한 피드백도 환영합니다. 감사합니다.



삼촌 프레임워크에 대한 소개

삼촌 프레임워크는 네트워크 시스템을 객체지향적으로 구현할 수 있게 해 주는 프레임워크로, OON (Object Oriented Network) 프레임워크라 이름 지었습니다. 타 시스템과 연동키 위하여 메시지를 주고 받는 것을, 클래스의 멤버함수 호출하듯이 간단하게 할 수 있습니다. 제공되는 시스템 템플릿을 상속하여, 클라우드 서버나 분산-병렬처리시스템을 쉽게 구현할 수도 있구요.

사용할 수 있는 언어로는 C++과 TypeScript (NodeJS) 가 있습니다. TypeScript로 웹 어플리케이션(Browser)과 클라우드 서버(NodeJS)를 제작하고, 무거운 작업은 제공되는 C++에 분산하여 처리하는 게, 제가 바라는 가장 이상적인 활용 모형입니다.

물론, TypeScript에서는 클라우드 서버만 만들 수 있고, C++에선 분산처리시스템만 만들 수 있고 그런 건 아닙니다. C++에서 가능한 건 TypeScript에서도 모두 가능합니다. 위 동영상은 TypeScript로 작성된 예제 프로젝트를 시연한 영상으로써, NodeJS와 제공되는 시스템 템플릿을 사용하여 트리 구조의 분산처리시스템을 만들고, 이 분산처리시스템의 데이터 흐름을 시각화한 예제입니다.


모듈 구성은 다음과 같습니다.

  • TypeScript-STL: C++의 STL 컨테이너와 알고리즘 일체를 TypeScript로 마이그레이션한 모듈.
  • 사실 TypeScript-STL은, 삼촌 프레임워크 (TypeScript로 짜인 코드 중 TypeScript-STL을 제외한 부분) 보다 (훨씬) 더 큽니다. TypeScript-STL 덕분에 C++과 연동하는 데에 많은 이점을 가져갈 수 있었지만, 뭔가 배보다 배꼽이 더 커진 것 같네요.
  • Collection: STL 컨테이너의 확장판. Elements I/O 를 이벤트로 받아볼 수 있음
  • Library: 유틸리티 라이브러리 모음. XML 파서, SQL 드라이버, 유전자 알고리즘 클래스 등
  • Protocol: 네트워크 통신에 관련된 모듈.

네트워크 통신에 관련된, 삼촌 프레임워크에서 가장 중요한 모듈입니다. 다음과 같은 세부 모듈들로 구성됩니다.

  • Basic Components: 네트워크 시스템을 객체지향적으로 구성할 수 있게 해주는 컴포넌트
  • Standard Messages: 삼촌 프레임워크에서 사용하는 표준 메시지 구조에 관한 모듈.
  • System Templates: 몇몇 네트워크 시스템을 상속을 통해 쉽게 구현할 수 있는, Basic Components Standard Messages 모듈의 적절한 활용과 조합으로 만들어진, 템플릿입니다.
  • Service: 클라우드 서버를 구축할 때 쓰이는 템플릿입니다.
  • External System: (다수의) 외부 시스템과 연동하고자 할 때 쓰이는 템플릿
  • Parallel System: (마스터가) 병렬처리시스템을 구축할 때 쓰이는 템플릿. 매 병렬처리 작업이 행해질 때마다 각 노드 (슬레이브 시스템) 의 성능을 측정하여, 다음 번 병렬처리 작업 때, 각 노드의 성능에 알맞은 만큼의 작업을 분배해준다.
  • Distributed System: (마스터가) 병렬 + 역할기반 분산처리시스템을 구축할 때 쓰임
  • Slave System: 슬레이브 시스템이 사용하는 템플릿

현재 작성 중인 문서는 아래 링크에서 보실 수 있습니다.

0
  • 댓글 3

  • kenu
    57k
    2016-09-18 04:21:21

    만드는 사람의 입장보다 사용자의 입장에서 동영상이든, 문서든 만드시면 좋을 것 같습니다.

    평가자의 입장, 매우 중요합니다. 자신이 평가하는 기술이 어떤 사회적인 영향력이 있을지를 중요하게 생각할 수도 있으니까요.


  • 혼나고
    180
    2016-09-19 09:51:53

    남을 위한 문서가 되어야 하는 데 너무 본인 위주의 문서 인 것 같습니다.

    그리고 대략적인 프로세스 구성도도 필요할 것 같습니다.



  • Q u i c K
    2k
    2016-09-19 10:52:43

    위의 내용만 봐서는 무슨 역할을 하는 프로그램인지 알기 어렵네요. 


    어떤식으로 어떤 영역의 복잡한 문제를 쉽게 해결해준다거나, 기존의 특정 업무를 어떻게 커버할 수 있다거나 하는 활용 예시도 좀 필요해보이구요.


    보고서는 아마도 양식이 있지 않나요?

    개발 동기라던가, 타겟 시장이라던가, 구현 스택이라던가,활용방안이라던가 이런 포맷에 맞춰서 심사위원들이 알아볼 수 있도록 하는게 중요할 거 같습니다.


    시연 발표때 본인의 프레임웍을 단 한마디로 정의 할 수 있어야 할텐데요.


    동영상은 화면 녹화 + 음성 녹화 하는 유틸들로 설치부터 활용하는 방법까지 step by step 으로 찍어서 편집하시면 되고, 편집하기 어려우면 중간에 PPT 장표 같은걸 활용해서 큰 목자를 넣어주고 시연하시는걸 녹화 뜨시면 될거 같아요. 


  • 로그인을 하시면 댓글을 등록할 수 있습니다.