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

좌측 트리 썸네일 메뉴가 빈 이미지로 나타남 #116

Closed
vulcan9 opened this issue Apr 4, 2018 · 7 comments
Closed

좌측 트리 썸네일 메뉴가 빈 이미지로 나타남 #116

vulcan9 opened this issue Apr 4, 2018 · 7 comments
Labels
버그 알림 중요한 내용을 기록으로 남겨둡니다.

Comments

@vulcan9
Copy link
Owner

vulcan9 commented Apr 4, 2018

0.4.5 버전에서 편집 작업 중 좌측 트리 (썸네일 보기)의 이미지가 갱신되지 않습니다.
썸네일 캡쳐작업을 건너뛰고 있는듯한 느낌입니다.

@vulcan9
Copy link
Owner Author

vulcan9 commented Apr 4, 2018

한글경로에서 실행중일때 문제 현상이 재현됩니다.
원인 파악 결과 Node 에서 child_process.fork 메서드에서 한글 경로를 실행하지 않는것 같습니다.
Node 버그라고 생각됩니다.

@vulcan9 vulcan9 added this to the Todo 0.5버전 milestone Apr 5, 2018
@vulcan9
Copy link
Owner Author

vulcan9 commented Apr 9, 2018

  • #19888 child_process.fork method & unicode characters

NodeJS 이슈에 일단 올렸습니다.
응답이 올동안 다른 이슈를 먼저 처리합니다.
오랫동안 응답이 없을 경우 별도의 실행파일을 만들어 spwan 메서드로 처리할 계획입니다.

@vulcan9
Copy link
Owner Author

vulcan9 commented Apr 9, 2018

nodeJS (#19888) 이슈에 답변을 보니 nodeJS 쪽 버그는 아닌듯 합니다.
NwJS 이슈 게시판에서 검색해보니 fork 옵션으로 실행하는 방법이 있는데 이방법으로 해결할 수 있을것 같습니다.

var fork = require("child_process").fork;
var worker = fork("worker.js", {execPath:'node.exe'});

핵심은 execPath 옵션에 node.exe 값을 전달하는 것인데 아마도 node가 설치되어져 있어야만 동작할것 같은데 테스트 해보아야 할 것 같습니다.

@vulcan9
Copy link
Owner Author

vulcan9 commented Apr 9, 2018

역시 이 방법은 로컬에 node.exe가 설치되어져 있을때만 가능한 방법으로 사용하기에 적절하지 않네요

@vulcan9
Copy link
Owner Author

vulcan9 commented Apr 9, 2018

다음 방법으로 동작하는걸 확인했습니다.

var fork = require("child_process").fork;
var worker = fork("worker.js", {execPath:'nw/nw.exe'});

execPath 값으로 nw.exe 위치를 넘겨주니 동작합니다.

결국 spwan +socket 통신으로 구현하는 방법과 원리는 같으므로 fork 메서드로 퍼포먼스 이점은 거의 없을것 같고, 단지 구현이 간단해 지는 이점이 있다고 생각해야 할것 같습니다.

@vulcan9
Copy link
Owner Author

vulcan9 commented Apr 11, 2018

위 방법도 jik-ji 에서는 동작하지 않습니다.
(정확히는 zip으로 패키징된 버전에서는 동작하지 않습니다.)

이유는 아마도 jik-ji 실행시 nw.exe 실행 파일의 위치와 process의 기본위치(cwd)가 다르기 때문인것 같습니다. (jik-ji 는 런타임에 cwd를 바꿉니다.)

execPath를 런타임에 현재 cwd와의 상대경로 설정하면 (예 : ../bin/nw/nw.exe) 문제 없이 돌아가긴 하지만 패키징 후에는 bin 폴더의 위치가 root 드라이브 자체가 달라지기 때문에(임시폴더에 압축을 풀게됨) 상대 경로로 설정할 수 없어 문제는 여전히 발생하게 됩니다.

// unzip package 인 경우에는 사용 가능함
var relativeExecPath = path.relative(process.cwd(), process.execPath);
var worker = fork("worker.js", {execPath: relativeExecPath});

한글 경로를 생략하기 위해 환경변수에 등록해서 호출하는 방법도 효과가 없었습니다.

var obj = path.parse(process.execPath);
process.env['Path'] = obj.dir + ';' + process.env['Path'];
var worker = fork("worker.js", {
    env: Object.create(process.env), 
    execPath: obj.base
});

마지막으로 child process의 cwd를 직접 지정해 주었습니다.

var obj = path.parse(process.execPath);
var worker = fork("worker.js", {
    cwd: obj.dir,
    execPath: obj.base
});

패키징 후에도 아직까지 문제는 발생되지 않고 있습니다. ^^

@vulcan9 vulcan9 added the 버그 label Apr 13, 2018
@vulcan9 vulcan9 added the 알림 중요한 내용을 기록으로 남겨둡니다. label Apr 26, 2018
@vulcan9
Copy link
Owner Author

vulcan9 commented Apr 26, 2018

0.4.11 버전(이상)에서 처리(구현) 되었습니다.

@vulcan9 vulcan9 closed this as completed Apr 26, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
버그 알림 중요한 내용을 기록으로 남겨둡니다.
Projects
None yet
Development

No branches or pull requests

1 participant