시간이 지나도 비주얼 에디터에 대한 생각은 계속 제 머릿속에 남아 있습니다. 저를 떠나고 싶지 않아요. 틈틈이 생각해보면 매번 "무엇이 문제인가?"라는 질문을 스스로에게 던집니다. - 이미 만들었는데 스위치가 켜지지 않았을 뿐이지."라는 생각이 들곤 합니다.
오랜 고민 끝에 같은 결론에 도달했습니다. 비주얼 에디터의 기본 기능은 이미 구현되어 있고 복잡한 도구만 누락되어 있다는 것이죠. 그러나 마크업 언어를 통해 복잡한 것을 만들 수 있으며, 실제로는 시각적 모드보다 훨씬 빠르고 편리합니다.
예를 들어 표와 트리 목록은 수동으로 작성하는 것이 길고 번거롭지만, 특히 템플릿을 사용할 때는 킵 코드로 작성하는 것이 빠르고 쉽습니다. 특히 템플릿을 사용할 때는 더욱 그렇습니다. 간단한 복사-붙여넣기만으로 표와 목록을 만들 수 있는데 굳이 번거로운 시각적 편집 도구를 만들 필요가 있을까요? 그럴 필요가 없다는 것은 분명합니다. 그렇다면 무엇이 문제일까요?
간단합니다. 마크업 언어의 작업과 시각적 편집기의 현재 기능을 결합하는 것이 과제입니다. 전자와 후자에 새로운 것을 추가할 필요는 없으며 서로 보완하는 방식으로만 결합하면 됩니다.
이 문제에 대해 진지하게 생각한 결과 지금 시각적 GUI 구성으로 완전히 전환 할 기회가 있더라도 거부 할 것이라는 결론에 도달했습니다. 그 이유는 마크업 언어 환경에서 킵 코드 템플릿과 요소 또는 속성의 간단한 복사-붙여넣기를 사용할 수 있는 기회를 잃고 싶지 않기 때문입니다. 너무 소중한 이점입니다. 아마도 저뿐만 아니라 앞으로 개발을 공유하거나 이전 개발의 일부를 복사할 수 있게 될 모든 사용자들에게도 마찬가지일 것입니다. 필수 불가결한 기능입니다.
즉, 시각적 편집기를 위해 마크 업 언어를 포기하는 것은 절대 불가능합니다. 전에는 이해하지 못했습니다....
따라서 오늘날 문제는 언어와 시각적 편집기 기능을 조화롭게 결합한 시스템을 개발하는 것입니다. 사실 기술적으로는 아주 쉬운 일입니다. (1) 첫째, 시각적 편집기에 필요한 모든 기능은 몇 년 전에 작성 및 테스트되었으며 (2) 둘째, 최근 몇 달 동안 마크 업 언어의 주요 메커니즘이 잘 강화되고 소프트웨어 인터페이스 관리가 추가되어 대대적 인 업그레이드가 수행되었습니다. 즉, 모든 것이 통합 및 병합 할 준비가되었으며 작업은 그래픽 인터페이스를 모델링하고 구축하는 과정에서 두 기능의 충돌없는 상호 작용 개념을 생각하기 만하면됩니다.
개념적으로 마크업 언어와 비주얼 에디터는 실제로 충돌합니다.
이 작업을 어렵게 만드는 몇 가지 이유가 있습니다:
GUI 요소와 창은 기본적으로 코드로 작성되지만 위의 gif와 같이 시각적 편집기로도 만들 수 있다는 점을 기억하세요.
1) 첫 번째와 두 번째 경우 모두 생성자의 기능은 다른 방식으로 그래픽 코어를 빌드하지만 시각적 편집기의 기능이 언어의 기능보다 약하기 때문에 생성된 요소는 편집기를 통해 사용자의 전체 설정 세트를 받아들이지 않습니다. 편집기를 작성하여 설정을 보완 할 수 있지만 마크 업 언어가 불필요 해지고 코드 템플릿에 의존 할 가능성이 없기 때문에 이것은 좋지 않습니다. 마크업 언어를 포기할 수는 없습니다.
2) 시각적 모드에서 새 요소와 창을 만들 때 마크업 언어가 이를 "보지" 못합니다. 즉, GUI를 시각적으로 구성하는 동안 마크업 언어가 업데이트되지 않습니다. 원래 키비 코드에 아무것도 "추가"되지 않습니다. 이 사실은 다시 시각적 편집기와 마크업 언어의 개념적 분리로 이어집니다. 이는 충돌입니다.
그렇다면 이 상황에서 어떻게 해야 하고 무엇을 해야 할까요? 두 가지 강력한 GUI 구축 도구의 공생으로 이어지는 타협점은 무엇일까요?
그 해답을 찾아보겠습니다:
요점: 인터페이스 모델링에서 시각적 편집기의 역할을 제한하고 언어 기능은 그대로 두세요. 실질적으로 이것은 다음을 의미합니다:
1. 새 요소와 창을 추가할 때 마크업 코드가 업데이트되지 않으므로 시각적 모드에서 새 요소와 창을 만들지 않습니다.
2. 시각적 편집기의 설정 창을 통해 사용자 GUI의 요소 및 창의 위치를 편집하고 속성을 설정할 수 있는 가능성을 남겨두고, 키비 코드에서 사용자의 기본값 및 사용자 지정 값 위에 놓습니다. 이 경우 편집기는 값의 재정의가 포함된 특수 파일을 작성하고 저장하여 커널에 로드하고 요소에 할당합니다. 실제로 이것은 편집기에서 "처리된" 새로운 유형의 요소 템플릿을 의미합니다. 이 템플릿은 kib 코드 템플릿과 충돌하지 않으며 그 안에 설정된 속성 값만 재정의합니다.
제 생각에는 이것은 편집기와 마크업 언어 간의 효과적인 공생이라고 생각합니다.
추신 : 아이러니 한 점은 기술적으로 편집기와 언어 기능을 병합하는 아이디어를 며칠 안에 실현할 수 있고 매우 현실적이지만 사용자의 작업에서 통합 및 상호 작용에 대한 모든 세부 사항을 생각하려면.... 시간이 더 걸립니다. :)
추신 그러나 주요 결론은 서로를 보완하면서 함께 작동 할 수 있고 함께 작동해야한다는 것입니다.
hini #: 원하는 작업을 하려면 시간이 오래 걸리고 소스 코드에 에 기여할 수 있는 사람은 거의 없을 것이며, 여러분은 스스로에게 의존해야 할 것입니다.
저는 첫 번째 진술에 강력히 동의하지 않습니다. 시각적 편집기의 개념은 4년 전에 생각되었을 뿐만 아니라 사용자가 기본 컨트롤에서 간단한 설정 창을 쉽게 조립할 수 있도록 기술적으로 충분히 구현되어 있습니다. 예를 들어 디자이너에는 치수와 격자가있는 유익한 마크 업이 있으며 프로젝트를 저장하고 API 파일을 인쇄하기위한 속성 및 기능을 설정하기위한 패널, 프레임, 이미지 및 글꼴이있는 동일한 보조 창이 있습니다. 모든 것이 마크업 언어와 똑같습니다.
하지만 시각적 편집기를 완성하려면 파일 탐색기가 필수입니다. 파일 탐색기는 프로젝트를 업로드하거나 저장할 폴더를 선택할 수 있는 기능을 제공하며, 좋은 소식은 파일 탐색기가 이미 있다는 것입니다 - 앞서 지점 페이지에서 보여드렸듯이 - 조정이 필요하지만 기본 기능은 작동한다는 것입니다.
파일 탐색기 외에도 키브 코드와 유사한 템플릿의 개념을 개발해야 합니다. 처음에는 불가능하다고 생각했지만 해결책은 매우 간단했습니다. 파일 탐색기가있는 경우 시각적 편집기는 빌드 된 인터페이스를 프로젝트가 아닌 템플릿으로 저장할 수 있습니다. 결국 본질적으로 같은 것입니다. 또한 전체 프로젝트뿐만 아니라이 프로젝트의 개별 창도 템플릿으로 저장됩니다. 빌드 된 코어의 일부만 저장되고 다른 프로젝트에로드 할 수 있고 사용자가 필요한 요소를 추출 (위 gif에 표시된 복사)한 다음 프로젝트에서이 템플릿을 지울 수 있기 때문에 쉽게 수행 할 수 있습니다. 창과 요소를 지우는 기능이 있습니다. 그게 다입니다.
위 gif의 버튼에서 예제에 따라 셀을 복사하기만 하면 표를 만들 수 있습니다. 똑같습니다. 트리 목록은 더 복잡하지만.... 하지만 중요한 것은 아닙니다.
열정이 많으면 한 달, 한 달 반 안에 모든 것을 할 수 있습니다. 하지만 지금은 기사 자료 준비로 바쁘기 때문에이 작업은 연기됩니다.
다른 프로그래머가 프로젝트를 개발할 수 없다는 진술에 관해서는..... 네, 프로젝트를 직접 개발할 수는 없습니다. 그러나 그들은 솔루션을 제공하고, 경험과 의견을 공유하고, 그라데이션으로 색상 작업 기능을 제공 할 수 있습니다. 저는 그러한 상호 작용과 협력에 열려 있습니다.
하지만 시각적 편집기를 완성하려면 파일 탐색기가 반드시 필요합니다. 프로젝트를 로드하거나 저장할 폴더를 선택할 수 있는 기능을 제공하며, 좋은 소식은 파일 탐색기가 이미 있다는 것입니다 - 앞서 지점 페이지에서 보여드렸듯이 - 조정이 필요하지만 기본 기능은 작동한다는 것입니다.
피터, 저는 당신이 하는 일이 환상적이라고 생각합니다! 사람들이 "완벽함을 선의 적으로 삼지 말라"고 말하는 것은 너무 쉽지만, 프로젝트가 어떻게 작동해야 하는지에 대한 비전이 있다면 말보다 쉽습니다. 비주얼 에디터의 작동 방식에 대한 다음 기사 등을 기대합니다. 그리고 좋은 비주얼 에디터는 결코 "진공 속의 쓸모없는 구형 말"이 아니라는 것을 알아주세요.
Douglas Prager 프로젝트가 어떻게 작동해야 하는지에 대한 비전이 있다면 말처럼 쉬운 일은 아닙니다. 더 많은 기사 등을 읽어보시길 기대합니다.... 를 통해 시각적 편집기의 작동 방식에 대해 알아보세요. 그리고 좋은 비주얼 에디터는 결코 '진공 상태의 쓸모없는 구형 말'이 될 수 없다는 점을 알아주세요.
안부 전해주세요,
Doug
영감을 주는 더글라스님의 말씀에 감사드립니다. 사람들이 패배주의적 비판, 열망의 평가절하, 비하하는 생각을 신념을 가지고 벗겨낼 때 함께 가장 높은 봉우리에 도달할 수 있다는 것을 알고 있습니다!
원하는 작업을 하려면 시간이 오래 걸리고 소스 코드에 에 기여할 수 있는 사람은 거의 없을 것이며, 여러분은 스스로에게 의존해야 할 것입니다.
...
파일 탐색기의 작동 방식은 다음과 같습니다(왼쪽). 편집기에 통합하기만 하면 됩니다.
이 동영상은 MT5의 비주얼 에디터에서 설정 창을 만드는 과정을 보여줍니다. 이를 통해 에디터의 완성도를 대략적으로 판단할 수 있습니다.
원하는 작업을 하려면 시간이 오래 걸리고, 소스 코드에 개발에 기여할 수 있는 사람은 거의 없을 것이며, 여러분 스스로에게 의존해야 할 것입니다.
어떤 목적으로 이 게시물을 작성하셨는지 궁금합니다. :) 그냥 궁금해서요.
다른 뜻이 아니라 그냥 아이디어일 뿐입니다. 여러분이 하고 싶은 일이 결실을 맺을 수 있도록 응원합니다.
----------------------------
<사회자 편집> 러시아어로: 다른 뜻이 아니라 그냥 아이디어일 뿐입니다. 여러분이 하고 싶은 일을 결실을 맺을 수 있도록 응원합니다.
피터, 저는 당신이 하는 일이 환상적이라고 생각합니다!
사람들이 "완벽함을 선의 적으로 삼지 말라"고 말하는 것은 너무 쉽지만, 프로젝트가 어떻게 작동해야 하는지에 대한 비전이
있다면 말보다 쉽습니다.
비주얼 에디터의 작동 방식에 대한 다음 기사 등을 기대합니다.
그리고 좋은 비주얼 에디터는 결코 "진공 속의 쓸모없는 구형 말"이 아니라는 것을 알아주세요.
안부
Doug
다른 뜻이 아니라 그냥 아이디어일 뿐이며, 여러분이 하고 싶은 일을 실현할 수 있도록 응원합니다.
----------------------------
<사회자 편집> 러시아어: 다른 뜻이 아니라 그냥 아이디어일 뿐입니다. 여러분이 하고 싶은 일을 결실을 맺을 수 있도록 응원합니다.
더 많은 기사 등을 읽어보시길 기대합니다.... 를 통해 시각적 편집기의 작동 방식에 대해 알아보세요.
그리고 좋은 비주얼 에디터는 결코 '진공 상태의 쓸모없는 구형 말'이 될 수 없다는 점을 알아주세요.
안부 전해주세요,
Doug