EulogiaKoine / koine

카카오톡 봇 라이브러리 ver 2
Apache License 2.0
1 stars 0 forks source link

Tasks #1

Open EulogiaKoine opened 1 year ago

EulogiaKoine commented 1 year ago

Tasks

대충 개발 예정인 것들 올리는 이슈게시판

EulogiaKoine commented 1 year ago

version 0.2

2023-05-06

initialization 방식 개선

before:
    koine.init() 으로 통합되긴 했지만 포맷이 통일되지 않음
    심지어 세부사항은 내부 패키지를 직접 호출해서 다른 형식으로 init해줘야하는 문제도 있음. 심각. 생산성 저하 예고.

goal:
    require('koine')(global)로 최초에 전역 전달
    koine.init( "packageName.moduleName"[, string req2[, ...]]) 형태로 기존 사용

result:
    koine.PackageManager.init(...)
    koine.lib.packageName.moduleName 으로 속성 직접 호출 가능
EulogiaKoine commented 1 year ago

version 0.3

2023-05-06

extension.Array.findLast~ 추가

생각보다 불편했다...


extension.Date 추가

 java.text.SimpleDateFormat을 이용, 간편한 문자열 형식화/파싱 지원. 날로 먹는 것 같아서 좋... 아니 좀 찔리지만 편하니까.

EulogiaKoine commented 1 year ago

version 0.4

2023-05-06

+koine.reinforce


0. klib, kpack 설치

전역에 넘겨받은 _global 객체로 koine 대신

koine.PackageManager -> kpack
koine.lib -> klib

으로 라이브러리 인터페이스명을 확실히 보장함으로써 모듈/패키지 간 소통을 가능하게 하고 접근성을 향상시킨다.



1. 모듈 index.js 반환 양식 변경

모듈 간 소통 강화 수단 및 독립된 모듈 스코프클로저 사용 강제를 통한 모듈 안정성 보장. 모듈은 index.js에서 모듈이 제공하는 기능/클래스function를 반환하는 함수를 export해야 한다는 양식 추가.



2. reinforce.setTimeout2

기존 RhinoJS setTimeout/setInterval: 매 실행마다 스레드를 생성. 이로 인한 문제점:

  1. 스레드 과다 생성으로 인한 속도 감소(가끔 과부화)
  2. 멀티 스레딩의 장점을 기본적으로 장착하게 됨
  3. 컴파일해도 그대로 남아있어서 비상 정지가 곤란함

개선 방향:

  1. 새로운 스레드 생성X
  2. 기존 JS 환경과 동일하게 싱글 스레드로 처리되도록 변환
  3. 컴파일 시 자동 소멸

추가점:

  1. id 저장 까먹더라도 비상 정지가 가능하도록 timeout/interval id[]를 static 속성으로 저장
  2. (1)번 응용, static allStop()


3. send

 기존 Api.replyRoom / bot.send 혹은 (replier|msg).reply는 필자 기기 기준 15~30ms정도를 연산에 소요한다. 중간에 껴서 처리하기엔 매우 비효율적이며, 결과값에 다른 코드가 영향을 전혀 받지도 않는다. 따라서 비동기적으로 빼버리는 게 최선.

 사용법은 동일하다.