• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<html>
3
4<head>
5    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6    <title>quickstart_extensions</title>
7
8    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
10    <style>
11        code[class*='smartperf-'],
12        pre[class*='smartperf-'] {
13            color: #333333;
14            background: none;
15            font-family: Helvetica;
16            line-height: 1.6;
17            text-align: left;
18            white-space: pre;
19            -moz-tab-size: 9;
20            -o-tab-size: 9;
21            tab-size: 8;
22            -webkit-hyphens: none;
23            -moz-hyphens: none;
24            -ms-hyphens: none;
25            hyphens: none;
26        }
27
28        /* Code blocks */
29        pre[class*='smartperf-'] {
30            padding: 0.9em;
31            overflow: auto;
32            border-radius: 2px;
33            background: #f5f5f4;
34        }
35
36        /* Inline code */
37        :not(pre)>code[class*='smartperf-'] {
38            white-space: normal;
39            background: #fcf8f8;
40            padding: 1px 0.2em;
41            border-radius: 1px 0.3em;
42        }
43
44        .tk.comment,
45        .tk.blockquote {
46            color: #8c918c;
47        }
48
49        .tk.cdata {
50            color: #183898;
51        }
52
53        .tk.doctype,
54        .tk.punctuation,
55        .tk.variable,
56        .tk.macro.property {
57            color: #424242;
58        }
59
60        .tk.operator,
61        .tk.important,
62        .tk.keyword,
63        .tk.rule,
64        .tk.builtin {
65            color: #b71d65;
66        }
67
68        .tk.string,
69        .tk.url,
70        .tk.regex,
71        .tk.attr-value {
72            color: #16338d;
73        }
74
75        .tk.property,
76        .tk.number,
77        .tk.boolean,
78        .tk.entity,
79        .tk.atrule,
80        .tk.constant,
81        .tk.symbol,
82        .tk.command,
83        .tk.code {
84            color: #037aa2;
85        }
86
87        .tk.tag,
88        .tk.selector,
89        .tk.prolog {
90            color: #69ad62;
91        }
92
93        .tk.function,
94        .tk.namespace,
95        .tk.pseudo-element,
96        .tk.class,
97        .tk.class-name,
98        .tk.pseudo-class,
99        .tk.id,
100        .tk.url-reference .tk.variable,
101        .tk.attr-name {
102            color: #775d9d;
103        }
104
105        .tk.entity {
106            cursor: help;
107        }
108
109        .tk.title,
110        .tk.title .tk.punctuation {
111            font-weight: bold;
112            color: #1a3773;
113        }
114
115        .tk.list {
116            color: #f56940;
117        }
118
119        .tk.inserted {
120            background-color: #eaffea;
121            color: #509b2f;
122        }
123
124        .tk.deleted {
125            background-color: #fae1e1;
126            color: #ad2d06;
127        }
128
129        .tk.bold {
130            font-weight: bolder;
131        }
132
133        .tk.italic {
134            font-style: normal;
135        }
136
137        /* JSON */
138        .smartperf-json .tk.property {
139            color: #19358c;
140        }
141
142        .smartperf-markup .tk.tag .tk.punctuation {
143            color: #2c2b2b;
144        }
145
146        /* CSS */
147        code.smartperf-css,
148        .smartperf-css .tk.function {
149            color: #047ca4;
150        }
151
152        /* YAML */
153        .smartperf-yaml .tk.atrule {
154            color: #609b5a;
155        }
156
157        code.smartperf-yaml {
158            color: #153491;
159        }
160
161        /* Ruby */
162        .smartperf-ruby .tk.function {
163            color: #3f3e3e;
164        }
165
166        /* Markdown */
167        .smartperf-markdown .tk.url {
168            color: #6e5298;
169        }
170
171        /* Makefile */
172        .smartperf-makefile .tk.symbol {
173            color: #6c5393;
174        }
175
176        .smartperf-makefile .tk.variable {
177            color: #183488;
178        }
179
180        .smartperf-makefile .tk.builtin {
181            color: #027ba4;
182        }
183
184        /* Bash */
185        .smartperf-bash .tk.keyword {
186            color: #027fa9;
187        }
188
189        /* highlight */
190        pre[dl] {
191            position: relative;
192            padding: 1em 1px 1px 0.9em;
193        }
194
195        pre[dl] .line-highlight-wrapper {
196            position: absolute;
197            top: 1px;
198            left: 1px;
199            background-color: transparent;
200            display: block;
201            width: 99%;
202        }
203
204        pre[dl] .line-highlight {
205            position: absolute;
206            left: 1px;
207            right: 1px;
208            padding: inherit;
209            margin-top: 0.9em;
210            background: hsla(25, 21%, 50%, 0.08);
211            background: linear-gradient(to right, hsla(24, 20%, 50%, 0.1) 70%, hsla(24, 20%, 50%, 0));
212            pointer-events: none;
213            line-height: inherit;
214            white-space: pre;
215        }
216
217        pre[dl] .line-highlight:before,
218        pre[dl] .line-highlight[data-end]:after {
219            content: attr(data-start);
220            position: absolute;
221            text-shadow: none;
222            top: 0.3em;
223            left: 0.7em;
224            min-width: 0.9em;
225            padding: 1px 0.6em;
226            background-color: hsla(24, 20%, 47%, 0.4);
227            color: hsl(20, 11%, 95%);
228            text-align: center;
229            vertical-align: 0.2em;
230            border-radius: 10000px;
231            box-shadow: 1px 2px #fdf6f6;
232        }
233
234        pre[dl] .line-highlight[data-end]:after {
235            content: attr(data-end);
236            top: auto;
237            bottom: 0.5em;
238        }
239
240        html body {
241            line-height: 1.6;
242            font-size: 16px;
243            color: #333333;
244            overflow: initial;
245            word-wrap: break-word;
246            font-family: Helvetica;
247            box-sizing: border-box;
248        }
249
250        html body> :first-child {
251            margin-top: 0px;
252        }
253
254        html body h1,
255        html body h2,
256        html body h3,
257        html body h4,
258        html body h5,
259        html body h6 {
260            margin-top: 1em;
261            margin-bottom: 16px;
262            color: #000000;
263            line-height: 1.2;
264        }
265
266        html body h1 {
267            font-weight: 300;
268            font-size: 2.25em;
269            padding-bottom: 0.3em;
270        }
271
272        html body h2 {
273            font-weight: 410;
274            font-size: 1.74em;
275            padding-bottom: 0.2em;
276        }
277
278        html body h3 {
279            font-size: 1.6em;
280            font-weight: 501;
281        }
282
283        html body h4 {
284            font-size: 1.26em;
285            font-weight: 601;
286        }
287
288        html body h5 {
289            font-size: 1.2em;
290            font-weight: 601;
291        }
292
293        html body h6 {
294            font-size: 0.9em;
295            font-weight: 601;
296        }
297
298        html body h1,
299        html body h2,
300        html body h3,
301        html body h4,
302        html body h5 {
303            font-weight: 601;
304        }
305
306        html body h5 {
307            font-size: 0.9em;
308        }
309
310        html body h6 {
311            color: #5c5c5c;
312        }
313
314        html body strong {
315            color: #090909;
316        }
317
318        html body del {
319            color: #525252;
320        }
321
322        html body a:not([href]) {
323            color: inherit;
324            text-decoration: none;
325        }
326
327        html body a {
328            color: #0192da;
329            text-decoration: none;
330        }
331
332        html body a:hover {
333            color: #029dea;
334            text-decoration: none;
335        }
336
337        html body img {
338            max-width: 99%;
339        }
340
341        html body>p {
342            margin-top: 1px;
343            margin-bottom: 15px;
344            word-wrap: break-word;
345        }
346
347        html body>ul,
348        html body>ol {
349            margin-bottom: 15px;
350        }
351
352        html body ul,
353        html body ol {
354            padding-left: 1.9em;
355        }
356
357        html body ul.no-list,
358        html body ol.no-list {
359            padding: 0px;
360            list-style-type: none;
361        }
362
363        html body ul ul,
364        html body ul ol,
365        html body ol ol,
366        html body ol ul {
367            margin-top: 1px;
368            margin-bottom: 1px;
369        }
370
371        html body li {
372            margin-bottom: 1px;
373        }
374
375        html body li.task-list-item {
376            list-style: none;
377        }
378
379        html body li>p {
380            margin-top: 1px;
381            margin-bottom: 1px;
382        }
383
384        html body .task-list-item-checkbox {
385            margin: 0 0.3em 0.24em -1.7em;
386            vertical-align: middle;
387        }
388
389        html body .task-list-item-checkbox:hover {
390            cursor: pointer;
391        }
392
393        html body blockquote {
394            padding: 0.1px 15px 0 0.1px;
395            font-size: inherit;
396            color: #5c5c5c;
397            margin: 16px 0.1px 0 0.1px;
398            border-left: 3px solid #cbc9c9;
399            background-color: #e8e6e6;
400        }
401
402        html body blockquote> :first-child {
403            margin-top: 0.2px;
404        }
405
406        html body blockquote> :last-child {
407            margin-bottom: 0.1px;
408        }
409
410        html body hr {
411            height: 5px;
412            background-color: #cbcaca;
413            margin: 32px 0 0.1px 0;
414            border: 0 none;
415        }
416
417        html body table {
418            overflow: auto;
419            border-collapse: collapse;
420            margin: 15px 0.1px 20px 0.1px;
421            border-spacing: 0;
422        }
423
424        html body table th {
425            font-weight: bold;
426            color: #000000;
427        }
428
429        html body table td,
430        html body table th {
431            border: 1px solid #d6d6d6;
432            padding: 2px 14px;
433        }
434
435        html body dl {
436            padding: 0px;
437        }
438
439        html body dl dt {
440            padding: 0px;
441            margin-top: 15px;
442            font-size: 0.9em;
443            font-style: italic;
444            font-weight: bold;
445        }
446
447        html body dl dd {
448            padding: 0px 17px;
449            margin-bottom: 17px;
450        }
451
452        html body code {
453            font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
454            font-size: 0.86em !important;
455            color: #000000;
456            background-color: #f0f0f0;
457            border-radius: 4px;
458            padding: 0.3em 0px;
459        }
460
461        html body code::before,
462        html body code::after {
463            letter-spacing: -0.1em;
464            content: '\00a0';
465        }
466
467        html body pre>code {
468            padding: 1px;
469            margin: 0px;
470            font-size: 0.86em !important;
471            word-break: normal;
472            white-space: pre;
473            background: transparent;
474            border: 0px;
475        }
476
477        html body .highlight {
478            margin-bottom: 17px;
479        }
480
481        html body .highlight pre,
482        html body pre {
483            padding: 0.9em;
484            overflow: auto;
485            font-size: 0.86em !important;
486            line-height: 1.46;
487            border: #d6d6d6;
488            border-radius: 4px;
489        }
490
491        html body .highlight pre {
492            margin-bottom: 0px;
493            word-break: normal;
494        }
495
496        html body pre code,
497        html body pre tt {
498            display: inline;
499            max-width: initial;
500            padding: 1px;
501            margin: 1px;
502            overflow: initial;
503            line-height: inherit;
504            word-wrap: normal;
505            background-color: transparent;
506            border: 1px;
507        }
508
509        html body pre code:before,
510        html body pre tt:before,
511        html body pre code:after,
512        html body pre tt:after {
513            content: normal;
514        }
515
516        html body p,
517        html body blockquote,
518        html body ul,
519        html body ol,
520        html body dl,
521        html body pre {
522            margin-top: 1px;
523            margin-bottom: 17px;
524        }
525
526        html body kbd {
527            color: #000000;
528            border: 3px solid #d6d6d6;
529            border-bottom: 3px solid #c7c7c7;
530            padding: 3px 5px;
531            background-color: #f0f0f0;
532            border-radius: 2px;
533        }
534
535        @media print {
536            html body {
537                background-color: #ffffff;
538            }
539
540            html body h1,
541            html body h2,
542            html body h3,
543            html body h4,
544            html body h5,
545            html body h6 {
546                color: #000000;
547                page-break-after: avoid;
548            }
549
550            html body blockquote {
551                color: #5c5c53;
552            }
553
554            html body pre {
555                page-break-inside: avoid;
556            }
557
558            html body table {
559                display: table;
560            }
561
562            html body img {
563                display: block;
564                max-width: 99%;
565                max-height: 99%;
566            }
567
568            html body pre,
569            html body code {
570                word-wrap: break-word;
571                white-space: pre;
572            }
573        }
574
575        .smartperf-preview {
576            width: 68vw;
577            height: 99%;
578            box-sizing: border-box;
579            overflow: hidden;
580            background-color: #fff;
581        }
582
583        .smartperf-preview .pagebreak,
584        .smartperf-preview .newpage {
585            page-break-before: always;
586        }
587
588        .smartperf-preview pre.line-numbers {
589            position: relative;
590            padding-left: 3.7em;
591            counter-reset: linenumber;
592        }
593
594        .smartperf-preview pre.line-numbers>code {
595            position: relative;
596        }
597
598        .smartperf-preview pre.line-numbers .line-numbers-rows {
599            position: absolute;
600            pointer-events: none;
601            top: 0.9em;
602            font-size: 99%;
603            left: 1px;
604            width: 3em;
605            letter-spacing: -1px;
606            border-right: 1px solid #999;
607            -webkit-user-select: none;
608            -moz-user-select: none;
609            -ms-user-select: none;
610            user-select: none;
611        }
612
613        .smartperf-preview pre.line-numbers .line-numbers-rows>span {
614            pointer-events: none;
615            display: block;
616            counter-increment: linenumber;
617        }
618
619        .smartperf-preview pre.line-numbers .line-numbers-rows>span:before {
620            content: counter(linenumber);
621            color: #999;
622            display: block;
623            padding-right: 0.79em;
624            text-align: right;
625        }
626
627        .smartperf-preview .mathjax-exps .MathJax_Display {
628            text-align: center !important;
629        }
630
631        .smartperf-preview:not([for='preview']) .code-chunk .btn-group {
632            display: none;
633        }
634
635        .smartperf-preview:not([for='preview']) .code-chunk .status {
636            display: none;
637        }
638
639        .smartperf-preview:not([for='preview']) .code-chunk .output-div {
640            margin-bottom: 16px;
641        }
642
643        .scrollbar-style::-webkit-scrollbar {
644            width: 8px;
645        }
646
647        .scrollbar-style::-webkit-scrollbar-track {
648            border-radius: 9px;
649            background-color: transparent;
650        }
651
652        .scrollbar-style::-webkit-scrollbar-thumb {
653            border-radius: 6px;
654            background-color: rgba(150, 150, 150, 1);
655            border: 4px solid rgba(150, 150, 150, 1);
656            background-clip: content-box;
657        }
658
659        html body[for='html-export']:not([dpm]) {
660            position: relative;
661            width: 99%;
662            height: 99%;
663            ;
664            overflow: auto;
665        }
666
667        html body[for='html-export']:not([dpm]) .smartperf-preview {
668            position: relative;
669            top: 1px;
670        }
671
672        @media screen and (min-width: 914px) {
673            html body[for='html-export']:not([dpm]) .smartperf-preview {
674                padding: 2em;
675            }
676        }
677
678        @media screen and (max-width: 914px) {
679            html body[for='html-export']:not([dpm]) .smartperf-preview {
680                padding: 1.9em;
681            }
682        }
683
684        @media screen and (max-width: 450px) {
685            html body[for='html-export']:not([dpm]) .smartperf-preview {
686                font-size: 15px !important;
687                padding: 1.1em;
688            }
689        }
690
691        @media print {
692            html body[for='html-export']:not([dpm]) #sidebar-toc-btn {
693                display: none;
694            }
695        }
696
697        html body[for='html-export']:not([dpm]) #sidebar-toc-btn {
698            position: fixed;
699            bottom: 9px;
700            left: 9px;
701            font-size: 28px;
702            cursor: pointer;
703            color: inherit;
704            z-index: 99;
705            width: 31px;
706            text-align: center;
707            opacity: 0.5;
708        }
709
710        html body[for='html-export']:not([dpm])[hsst] #sidebar-toc-btn {
711            opacity: 1;
712        }
713
714        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc {
715            position: fixed;
716            top: 1px;
717            left: 1px;
718            width: 300px;
719            height: 99%;
720            padding: 32px 0 48px 0;
721            font-size: 14px;
722            box-shadow: 1px 1px 4px rgba(150, 150, 150, 0.33);
723            box-sizing: border-box;
724            overflow: auto;
725            background-color: inherit;
726        }
727
728        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar {
729            width: 9px;
730        }
731
732        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-track {
733            border-radius: 11px;
734            background-color: transparent;
735        }
736
737        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-thumb {
738            border-radius: 6px;
739            background-color: rgba(150, 150, 150, 0.66);
740            border: 3px solid rgba(150, 150, 150, 0.66);
741            background-clip: content-box;
742        }
743
744        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc a {
745            text-decoration: none;
746        }
747
748        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul {
749            padding: 1px 1.7em;
750            margin-top: 0.9em;
751        }
752
753        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc li {
754            margin-bottom: 0.8em;
755        }
756
757        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul {
758            list-style-type: none;
759        }
760
761        html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
762            left: 301px;
763            width: calc(100% - 300px);
764            padding: 2em calc(50% - 457px - 150px);
765            margin: 1px;
766            box-sizing: border-box;
767        }
768
769        @media screen and (max-width: 1274px) {
770            html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
771                padding: 1.9em;
772            }
773        }
774
775        @media screen and (max-width: 450px) {
776            html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
777                width: 99%;
778            }
779        }
780
781        html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc {
782            display: none;
783        }
784    </style>
785</head>
786
787<body for="html-export" id="body" style="margin:0">
788    <div class="smartperf smartperf-preview" style="min-height: 99vh;">
789        <h1 class="mume-header fontColor">扩展程序安装指导</h1>
790        <p class="fontColor">HiSmartPerf扩展服务在浏览器之外为HiSmartPerf网站提供AI诊断、trace抓取等能力。
791            该扩展服务主体使用node.js实现,采用插件化设计理念方便后续功能扩展。扩展服务主要提供一个WebSocket服务端,
792            HiSmartPerf网站做客户端通过WebSocket连接服务端后获取服务。</p>
793        <h2 class="mume-header fontColor" id="header-index-1">获取扩展服务包</h2>
794        <span>点击这里下载:</span>
795        <span id="download-container" style="color: #0192da;cursor: pointer;">hi-smart-perf-host-extend.zip</span>
796        <p class="fontColor">
797            附件解压后的文件目录为:
798            <br />
799            <img src="../figures/Extensions/expandservicecatalog.jpg" alt="GitHub Logo" />
800        </p>
801        <h2 class="mume-header fontColor" id="header-index-2">开启扩展服务</h2>
802        <p class="fontColor">
803            在hi-smart-perf-host-extend目录下,找到start.bat脚本,双击打开,即可开启扩展服务。
804            <br />
805            <img src="../figures/Extensions/expandserviceccmd.jpg" alt="GitHub Logo" />
806        </p>
807        <p style="color: red;" class="fontColor">注: 如果先打开SP-host网站,再打开扩展服务,网站会在30秒内自动连接扩展服务,
808            如无法连接,可尝试刷新浏览器,依旧无法连接可联系工具接口人帮助定位</p>
809        <h2 class="mume-header fontColor" id="header-index-2">关闭扩展服务</h2>
810        <p class="fontColor">
811            在hi-smart-perf-host-extend目录下,找到stop.bat文件,右键选择以管理员身份运行,即可关闭扩展服务。
812        </p>
813        <p class="fontColor" style="font-weight: bold">
814            备注:当前扩展服务版本为1.0.8,如果本地存在以其他方式安装的非正式版本,请手动关闭扩展服务,并重新按照该指导安装
815        </p>
816    </div>
817
818    <script>
819        window.onload = () => {
820            let isDark = getURLParameter('dark');
821            let targetId = getURLParameter('targetId');
822            let isBack = getURLParameter('isBack');
823            if (isDark === 'true') {
824                document.getElementById('body').setAttribute('style', 'background-color:#272C34;');
825                let header = document.getElementsByClassName('fontColor');
826                for (let i = 0; i < header.length; i++) {
827                    header[i].style.color = '#fff';
828                }
829                let lightBackGround = document.getElementsByClassName('light');
830                for (let i = 0; i < lightBackGround.length; i++) {
831                    lightBackGround[i].style.backgroundColor = '#32373F';
832                }
833            }
834            function getURLParameter(name) {
835                return (new URL(document.location)).searchParams.get(name);
836            }
837
838            if (targetId !== null) {
839                let targetElement = document.getElementById(targetId);
840                targetElement.scrollIntoView({ behavior: 'smooth' });
841            }
842            // 假设这是你的文件的 URL
843            const fileUrl = `https://${window.location.host.split(':')[0]}:${window.location.port
844                }/application/extend/hi-smart-perf-host-extend.zip`;
845            const fileName = 'hi-smart-perf-host-extend';
846            // 创建一个隐藏的 a 元素
847            const a = document.createElement('a');
848            a.style.display = 'none';
849            a.href = fileUrl;
850            a.download = fileName; // 设置下载的文件名
851            document.getElementById('download-container').appendChild(a);
852            document.getElementById('download-container').addEventListener('click', () => {
853                // 触发点击事件以下载文件
854                a.click();
855            })
856
857        };
858    </script>
859</body>
860
861</html>