Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/#14 JS SDK mvp1을 제작한다 #35

Merged
merged 8 commits into from
Aug 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions sdk/js/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Dependency directories
node_modules/

# Build output
dist/

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 패치에 대한 간단한 리뷰입니다.

  1. 문법 및 형식: 패치는 .gitignore 파일을 추가하고 있는 것으로 보입니다. 전반적으로 형식이 잘 되어 있습니다.

  2. 버그 위험: 현재로서는 명백한 버그는 없습니다. 하지만, Thumbs.db와 같은 특정 파일은 Windows에서만 생성되므로, 다른 운영 체제를 사용하는 경우에는 필요하지 않을 수 있습니다. 각 팀원의 OS에 맞춰 추가/제거할 필요가 있을 수 있습니다.

  3. 개선 사항:

    • 비슷한 파일 또는 디렉토리를 그룹화하여 가독성을 높일 수 있습니다. 예를 들어, OS 관련 항목들을 한 섹션으로 묶고 주석을 추가하면 좋습니다.
    • 필요 없는 파일의 예시는 팀별로 별도의 검토가 필요할 수 있으니, 팀원들과 상의하여 일반적으로 필요한 항목들은 유지하고, 불필요한 것들은 제거하는 것도 고려해보세요.
  4. 새 줄: 파일 끝에 새 줄이 없으므로, 이 점도 수정하는 것이 좋습니다. 대다수의 코드 스타일 가이드에서는 파일 끝에 빈 줄을 권장합니다.

전반적으로 잘 작성된 패치이며, 몇 가지 개선 포인트를 반영하면 더 좋을 듯합니다.

53 changes: 53 additions & 0 deletions sdk/js/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# LogBat SDK

LogBat SDK는 웹 애플리케이션에서 로그를 쉽게 수집하고 중앙 서버로 전송할 수 있게 해주는 JavaScript 라이브러리입니다.

## 특징

- 간편한 초기화 및 설정
- `console.log`와 `console.error`의 자동 캡처
- 비동기 로그 전송으로 애플리케이션 성능 영향 최소화
- TypeScript 지원

## 설치

CDN을 통해 직접 스크립트를 포함할 수 있습니다:

```html
<script src="https://sdk.logbat.info/sdk.js"></script>
```

## 사용법

### 초기화

LogBat SDK를 사용하기 전에 먼저 초기화해야 합니다:

```html
<script src="https://sdk.logbat.info/sdk.js"></script>
<script>
LogBat.init({ appId: 'YOUR_APP_ID' });
</script>
```

### 로그 전송

초기화 후에는 `console.log`와 `console.error`가 자동으로 캡처되어 LogBat 서버로 전송됩니다:

```javascript
console.log('This is a log message');
console.error('This is an error message');
```

LogBat SDK의 메서드를 직접 사용할 수도 있습니다:

```javascript
LogBat.log('This is a direct log message');
LogBat.error('This is a direct error message');
```

## 주의사항

- SDK를 사용하기 전에 반드시 `init` 메서드를 호출해야 합니다.
- `init` 메서드를 여러 번 호출해도 안전합니다. 중복 호출은 무시됩니다.
- 로그 전송 실패는 애플리케이션의 정상적인 실행을 방해하지 않습니다.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 패치에 대한 간단한 코드 리뷰입니다.

잠재적 버그 위험

  1. 초기화 누락: LogBat.init이 호출되지 않으면 로그가 전송되지 않는데, 사용자가 이를 잊을 수 있습니다. 초기화 여부를 확인하는 로직을 추가하면 좋습니다.
  2. 네트워크 오류 처리: 로그 전송 실패에 대한 처리 로직이 부족해 보입니다. 예를 들어, 실패 시 재시도 메커니즘이나 사용자에게 알림을 제공하는 방법이 필요합니다.

개선 제안

  1. 문서화 강화: 각 메서드의 기능과 인자에 대한 설명을 자세히 추가하면 사용자가 SDK를 보다 쉽게 이해하고 사용할 수 있습니다.
  2. 비동기 함수 사용: 로그 전송 기능을 비동기적으로 처리하여 성능을 더욱 향상시킬 수 있습니다. fetch 또는 XMLHttpRequest를 사용하는 것이 좋습니다.
  3. 구성 파라미터 검증: LogBat.initappId와 같은 필수 파라미터에 대한 유효성 검사를 추가하는 것이 좋습니다.
  4. 예외처리: 로그 캡처 과정에서 발생할 수 있는 예외를 처리하여 앱 크래시를 방지해야 합니다.

이러한 점들을 고려하여 개선한다면 SDK의 안정성과 사용성을 높일 수 있을 것입니다.

6 changes: 6 additions & 0 deletions sdk/js/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['**/__tests__/**/*.ts?(x)', '**/?(*.)+(spec|test).ts?(x)'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 패치를 검토해보겠습니다.

  1. 이슈: 파일 끝에 개행 없음

    • 대부분의 코드 스타일 가이드에서 파일의 끝에 개행을 권장합니다. 마지막 줄에 \ No newline at end of file 메시지가 있다면 이 부분을 추가해야 합니다.
  2. 전반적인 설정

    • ts-jestnode 환경은 TypeScript와 Node.js 테스트에 적합하며, 기본 설정으로 문제가 없어 보입니다.
    • testMatch 배열에서 패턴을 잘 정의했습니다. 하지만 프로젝트 내 테스트 파일 경로가 표준 경로에 위치하도록 확인해야 합니다.
  3. 확장자 일관성

    • moduleFileExtensions에 포함된 모든 확장자가 사용되는지 확인하십시오. 필요 없는 확장자는 제거하여 파일 처리 속도를 높일 수 있습니다.
  4. 추가 설정 고려 사항

    • 필요에 따라 collectCoverageverbose 같은 추가 설정을 고려할 수 있습니다. 코드 커버리지를 추적하고 테스트 결과를 명확히 하기 위해 유용할 수 있습니다.
  5. 문서화

    • 팀원이나 후속 개발자를 위해 이 설정 파일에 대한 간단한 설명 주석을 추가하는 것이 좋습니다.

이 외에 특별한 버그 리스크는 없어 보이며, 전체적으로 문제 없는 설정입니다.

Loading