• 목록
  • 아래로
  • 위로
  • 6
  • Seia
  • 조회 수 467

오늘은 간단한 질문하고 갑니다. 아직도 숙제가 안 풀렸어요 ㅠㅠ


Node.JS 환경입니다. 디스코드 봇을 개발 중인데.. (링크 업데이트됨) https://github.com/seriumium/seriumium/


다국어 지원에서 아직은 아이디어가 없어서 어쩔 수 없이 유동 require을 쓰고 있어요.........


혹시 문법을 모두 지키며 현재까지 간단하게 다국어지원을 구현할 수 있는 방법이 있을까요?


위 깃헙에서 /store/i18n 이 아마 번역된 것일 껍니다... ..... . . .. .


message 이벤트는 빨라야 하기 때문에 index.js에 두었는데 index.js에서 유동 require가 사용된 것을 볼 수 있답니다.....


덕분에 응답시간이 20ms 초반에서 40ms로 뒤쳐졌네요.


아직은 별다른 아이디어가 없고 새롭게 구조조정(?) 중 입니다.


작성자
Seia 33 Lv. (42%) 89400/92480EXP

GitHub에서 seia-soto로 활동 중입니다.

댓글 6

네모
profile image

디스코드 봇은 제대로 만들어 본 적이 없어서, 어떤식으로 응답이 오고, 어떤식으로 응답을 보내야 하는지는 모르겠지만...

제 짧은 눈으로 보면.. message 이벤트가 있을때마다 require이 실행되니 속도가 느린게 아닐까 싶습니다.

 

실행 직후 store/i18n 안에 있는 모든 json 파일을 불러서 전역변수로 설정을 하던지,

아니면 따로 i18n 클래스를 만들어서 lang("error_404", "en") 이런식으로 불러오게 만들던지 하면 되지 않을까 싶네요.

물론 국제화 클래스를 불러올때 지원하는 모든 언어를 모두 메모리에 박아두고 불러오게 하거나,

한번이상 요청한 언어는 메모리에서 지우거나 새로 불러오지 않게 만들면 되지 않을까요.

comment menu
2018.04.25. 01:54

신고

"네모님의 댓글"

이 댓글을 신고 하시겠습니까?

Seia 작성자 → 네모
profile image

NodeJS의 경우 시작 시에 require 된 모든 파일을 캐싱합니다. 그래서 한번 실행되고 파일이 바뀌더라도 정적 파일이 아닌 이상 변경사항이 적용되지 않습니다. 그리고 동적 require에 비해 정적 require가 훨씬 메모리도 덜 잡아먹어서 빠릅니다. 제가 require를 사용한 이유는 모듈화 그리고 직관성 때문인데 모듈화를 했을 때는 어떤 파일에서 오류가 발생했는지 쉽게 알 수 있었어요.

 

번역에 대해서는 어떻게 해야 할지 몰라서 O***U님의 조언 들어가며 했습니다. 이미 현업에서 활동하시는 고등학생 분이라서 참고했는데 저는 i18n 예제를 받았음에도 불구하고도 효율적으로 처리할 수 있는 구조가 뭔지 자세히 모르겠습니다. class에 같은 경우에는 제가 아직 다 익히지 못한 점도 있고 더욱 자세히 알아봐야 하지 않을까 싶네요. 답변 감사합니다.~

comment menu
2018.05.04. 00:13

신고

"Seia님의 댓글"

이 댓글을 신고 하시겠습니까?

네모 → Seia
profile image

...???

제가 답변을 달았을 때 당시의 코드에는 정적 require이 아닌 동적 require이 사용되어, 제가 정적 require을 사용해라고 말씀드린건데요?

comment menu
2018.05.04. 00:18

신고

"네모님의 댓글"

이 댓글을 신고 하시겠습니까?

Seia 작성자 → 네모
profile image

음.. 그런가요. 늦은 답변 죄송합니다;

지금은 이전보다 약 60ms 정도 더 빠른 성능을 기록하고 있습니다. 집에서도 200ms 전후였네요.

 

*다음은 업데이트된 코드입니다. https://github.com/Seriumium/seriumium/blob/nightly/index.js

try {

if (message.channel.type === 'dm') return

if (message.channel.permissionsFor(message.author).has('MANAGE_GUILD')) { permissions = 2 } else { permissions = 0 }

if (message.author.id === '324541397988409355') permissions = 4

prompt = prompts.names.get(message.content.split(' ')[0].slice(endpoints.prefix.length))

notAllowed =

(message.author.bot)

|| (message.channel.type === 'dm')

|| (!message.content.startsWith(endpoints.prefix))

|| (!prompt)

|| (permissions < prompt.permissions)

if (notAllowed) { return }

cache.first = message.content.split(' ')[0].slice(endpoints.prefix.length)

cache.second = prompts.languages.get(cache.first)

nt = {

arguments: message.content.split(' ').slice(1),

translations: prompts.translations.get(cache.second),

permissions: permissions

}

prompt.execute(client, message, nt)

} catch (error) {

console.error(error)

}

comment menu
2018.05.04. 00:21

신고

"Seia님의 댓글"

이 댓글을 신고 하시겠습니까?

네모 → Seia
profile image

코드를 보니 index.js 파일에 언어 세팅을 다 때려 박으셨는데...
제가 예제 하나 보내드릴게요. 한번 확인해 보세요.
 

translate.zip 

comment menu
2018.05.04. 00:39

신고

"네모님의 댓글"

이 댓글을 신고 하시겠습니까?

Seia 작성자 → 네모
profile image

그리고 추가적으로 restdot이라는 rest api 레벨 데이터베이스 프로젝트도 진행하고 있는데 한번 정도 코드 확인 가능하신가요;

comment menu
2018.05.04. 00:22

신고

"Seia님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [1차 해결 및 추가] 서버 접속 불가 문제 안내 14 마스터 24.06.20.15:22 1055
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 3028
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 6770
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4738
726 이거 이런 뜻인가요 4 image 탄소 18.05.16.18:44 211
725 studyforus 타 인증기관 인증서 설치 7 nx_OP 18.10.18.17:35 211
724 안녕하세요. AJAX로 페이지 긁어오는데에 보안오류가 생겼는데 조언을 구하고자 합니다. 6 Hanam09 18.11.19.23:35 211
723 사이트 정보 등록 관련 5 title: 에그joyful 18.12.01.20:17 211
722 VestaCP에서 roundcube 문제 해결 3 image Seia 18.07.14.19:43 212
721 [해결됨][미디어위키] 로그인 문제가 있습니다. 5 260578 18.09.02.15:32 213
720 현재 신제품 구매가 가능한 배터리 탈착식 스마트폰에 어떤 것이 있을까요? 이니스프리 19.11.10.22:18 213
719 여러 개의 반복작업을 켜고 끄는 버튼을 비동기적으로 구현해보려고 하는데요 ㅠㅠ 2 이니스프리 19.12.27.23:10 213
718 여러분들은 위키 업그레이드를 어떻게 하시나요? 12 가온이 21.03.07.20:53 213
717 레이아웃 유료로 파는건 법적 절차가 필요한가요? 5 title: 에그joyful 18.07.07.20:03 214
716 라이믹스 로그인 버튼 3 Nginx 18.11.15.17:51 214
715 프로세서 간의 성능 비교에 대해 질문 드립니다 ^^ 4 이니스프리 19.04.17.18:31 214
714 스터디포어스 웹호스팅상에서 비주얼에디터 설치하는 중 오류가 났습니다 ㅠㅠ image 입체그림 20.02.28.14:40 214
713 클론질라로 랜부팅해서 윈도우 설치시 느려짐 현상 질문입니다. 3 크로스하트 18.04.06.18:14 215
712 도메인 설정이 잘 되지 않아 질문드립니다 1 ndbdbbn 18.08.10.19:22 215
711 질문 드린 CSV 파일 업로드에 대한 코드를 작성했어요 ^^ 실사용 전에 보안상 취약점 등 문제는 없는지 여쭤봅니다 2 이니스프리 18.10.26.20:57 215
710 그누보드5 홈피 관리해주실분 찾습니다. 찰리 20.03.04.23:10 215
709 이 정도 디자인이면 괜찮으려나요? 9 image 제르엘 18.05.18.23:30 216
708 호스팅 서비스 바꾸기 4 title: 에그joyful 18.06.24.23:09 216
707 세션연동부분에 대하여 도움이 필요합니다. 2 Hanam09 19.01.21.17:18 216