From d293d317c0ee43124d959314a26354e20c87b4eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 15 Jan 2026 05:36:10 +0000 Subject: [PATCH] deploy: ilei131/hugo@26dfe5d3ad7811a9b16128d2c611d0dddc8a658e --- .nojekyll | 0 404.html | 6 + CNAME | 1 + about/index.html | 10 + apple-touch-icon.png | Bin 0 -> 3151 bytes archives/index.html | 22 + bluesky.svg | 1 + categories/index.html | 6 + categories/index.xml | 1 + categories/page/1/index.html | 1 + favicon.ico | Bin 0 -> 971 bytes github.svg | 1 + highlight.min.js | 2 + imageeditor/index.html | 66 ++ img/hsclient.webp | Bin 0 -> 8044 bytes index.html | 11 + index.xml | 766 ++++++++++++++++++ instagram.svg | 1 + linkedin.svg | 1 + main.min.css | 1 + mastodon.svg | 1 + openwit/index.html | 1 + page/1/index.html | 1 + page/2/index.html | 12 + page/3/index.html | 8 + passworddisk/index.html | 46 ++ posts/czsc/index.html | 41 + posts/czsc108_deepseek/index.html | 136 ++++ posts/czsc108_hailuo/index.html | 149 ++++ posts/czsc_mmd/index.html | 175 ++++ posts/czsc_qjt/index.html | 191 +++++ posts/deviceproblem/index.html | 22 + posts/gstplugin/index.html | 20 + posts/index.html | 11 + posts/index.xml | 682 ++++++++++++++++ posts/kylindeb/index.html | 78 ++ posts/markdown/index.html | 99 +++ posts/page/1/index.html | 1 + posts/page/2/index.html | 12 + posts/page/3/index.html | 8 + posts/privacypolicy/index.html | 10 + posts/webrtc/index.html | 70 ++ posts/yszc/index.html | 55 ++ rss.svg | 1 + sitemap.xml | 1 + tags/android/index.html | 7 + tags/android/index.xml | 38 + tags/android/page/1/index.html | 1 + tags/gstreamer/index.html | 7 + tags/gstreamer/index.xml | 2 + tags/gstreamer/page/1/index.html | 1 + tags/h265/index.html | 7 + tags/h265/index.xml | 38 + tags/h265/page/1/index.html | 1 + tags/index.html | 6 + tags/index.xml | 1 + tags/iphone/index.html | 7 + tags/iphone/index.xml | 12 + tags/iphone/page/1/index.html | 1 + tags/mac/index.html | 7 + tags/mac/index.xml | 12 + tags/mac/page/1/index.html | 1 + tags/markdown/index.html | 7 + tags/markdown/index.xml | 42 + tags/markdown/page/1/index.html | 1 + tags/page/1/index.html | 1 + tags/tensorflow/index.html | 7 + tags/tensorflow/index.xml | 2 + tags/tensorflow/page/1/index.html | 1 + tags/webrtc/index.html | 7 + tags/webrtc/index.xml | 38 + tags/webrtc/page/1/index.html | 1 + .../index.html" | 7 + .../index.xml" | 30 + .../page/1/index.html" | 1 + .../index.html" | 7 + .../index.xml" | 38 + .../page/1/index.html" | 1 + theme.png | Bin 0 -> 7991 bytes theme.svg | 1 + threads.svg | 1 + twitter.svg | 1 + 82 files changed, 3071 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 CNAME create mode 100644 about/index.html create mode 100644 apple-touch-icon.png create mode 100644 archives/index.html create mode 100644 bluesky.svg create mode 100644 categories/index.html create mode 100644 categories/index.xml create mode 100644 categories/page/1/index.html create mode 100644 favicon.ico create mode 100644 github.svg create mode 100644 highlight.min.js create mode 100644 imageeditor/index.html create mode 100644 img/hsclient.webp create mode 100644 index.html create mode 100644 index.xml create mode 100644 instagram.svg create mode 100644 linkedin.svg create mode 100644 main.min.css create mode 100644 mastodon.svg create mode 100644 openwit/index.html create mode 100644 page/1/index.html create mode 100644 page/2/index.html create mode 100644 page/3/index.html create mode 100644 passworddisk/index.html create mode 100644 posts/czsc/index.html create mode 100644 posts/czsc108_deepseek/index.html create mode 100644 posts/czsc108_hailuo/index.html create mode 100644 posts/czsc_mmd/index.html create mode 100644 posts/czsc_qjt/index.html create mode 100644 posts/deviceproblem/index.html create mode 100644 posts/gstplugin/index.html create mode 100644 posts/index.html create mode 100644 posts/index.xml create mode 100644 posts/kylindeb/index.html create mode 100644 posts/markdown/index.html create mode 100644 posts/page/1/index.html create mode 100644 posts/page/2/index.html create mode 100644 posts/page/3/index.html create mode 100644 posts/privacypolicy/index.html create mode 100644 posts/webrtc/index.html create mode 100644 posts/yszc/index.html create mode 100644 rss.svg create mode 100644 sitemap.xml create mode 100644 tags/android/index.html create mode 100644 tags/android/index.xml create mode 100644 tags/android/page/1/index.html create mode 100644 tags/gstreamer/index.html create mode 100644 tags/gstreamer/index.xml create mode 100644 tags/gstreamer/page/1/index.html create mode 100644 tags/h265/index.html create mode 100644 tags/h265/index.xml create mode 100644 tags/h265/page/1/index.html create mode 100644 tags/index.html create mode 100644 tags/index.xml create mode 100644 tags/iphone/index.html create mode 100644 tags/iphone/index.xml create mode 100644 tags/iphone/page/1/index.html create mode 100644 tags/mac/index.html create mode 100644 tags/mac/index.xml create mode 100644 tags/mac/page/1/index.html create mode 100644 tags/markdown/index.html create mode 100644 tags/markdown/index.xml create mode 100644 tags/markdown/page/1/index.html create mode 100644 tags/page/1/index.html create mode 100644 tags/tensorflow/index.html create mode 100644 tags/tensorflow/index.xml create mode 100644 tags/tensorflow/page/1/index.html create mode 100644 tags/webrtc/index.html create mode 100644 tags/webrtc/index.xml create mode 100644 tags/webrtc/page/1/index.html create mode 100644 "tags/\347\274\240\344\270\255\350\257\264\347\246\205/index.html" create mode 100644 "tags/\347\274\240\344\270\255\350\257\264\347\246\205/index.xml" create mode 100644 "tags/\347\274\240\344\270\255\350\257\264\347\246\205/page/1/index.html" create mode 100644 "tags/\351\223\266\346\262\263\351\272\222\351\272\237/index.html" create mode 100644 "tags/\351\223\266\346\262\263\351\272\222\351\272\237/index.xml" create mode 100644 "tags/\351\223\266\346\262\263\351\272\222\351\272\237/page/1/index.html" create mode 100644 theme.png create mode 100644 theme.svg create mode 100644 threads.svg create mode 100644 twitter.svg diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..5d5138c --- /dev/null +++ b/404.html @@ -0,0 +1,6 @@ +404 Page not found - Openwit

404

\ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..c76715e --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +openwit.net diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..62c823c --- /dev/null +++ b/about/index.html @@ -0,0 +1,10 @@ +About Me - Openwit

About Me

尘世中一个迷途小书童

\ No newline at end of file diff --git a/apple-touch-icon.png b/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..20d0dd04143f8d13f619d10ee7a388939a9c7305 GIT binary patch literal 3151 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 - Openwit

Archives

2026

January

2025

January

2023

February

2022

November

0001

January

\ No newline at end of file diff --git a/bluesky.svg b/bluesky.svg new file mode 100644 index 0000000..3fd86f8 --- /dev/null +++ b/bluesky.svg @@ -0,0 +1 @@ + diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 0000000..10aaa94 --- /dev/null +++ b/categories/index.html @@ -0,0 +1,6 @@ +Categories - Openwit
\ No newline at end of file diff --git a/categories/index.xml b/categories/index.xml new file mode 100644 index 0000000..7c5dcc6 --- /dev/null +++ b/categories/index.xml @@ -0,0 +1 @@ +Categories on Openwithttps://openwit.net/categories/Recent content in Categories on OpenwitHugocn \ No newline at end of file diff --git a/categories/page/1/index.html b/categories/page/1/index.html new file mode 100644 index 0000000..e41d497 --- /dev/null +++ b/categories/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/categories/ \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a1de67e5bbdc1996acfac9095a7ac354e2da5454 GIT binary patch literal 971 zcmV;+12p`JP)&hF^RNI zL)0`@Byb>(JT7ML z&39*#G1D1Wdf;9z_d9c+_nvd^Ip0YCb#qViquJvR5(X)x7)U~SQ1--+O>6&}fZ5K6 zDH(&v^#~4ww0#gPhm5Ksx zc5QS36GDk{*lzIRA%u}b?##PC$L4oqH0%oR+~^19O5l$`8Kl#O4mr8~=G=aRL!i^3 z3}_P-#mL1mZcMi4`m2h-&903%fg3`N+i<2Nm+qcFaJN#_rjF%XkS>Dy!l;-YgSrN8 zHC2*--eSLih^eHH)n;fY1>|*?$?^m7z7!BYQPF2Gt z>Ahc?$1p~`+K2?{P4HLak+tgEpSOPTpHLcq*Dz@=lu1E08o$jElG5Cl68aIGs&>FKs-^tT!36Qk^&0K;1XzG(250Db`{Wj>$znh6V7wgceQsP; tymd8!NMVJ)W`^<(vO`{n```9ze*;`kPTSVLk9hz9002ovPDHLkV1nR{!>|AV literal 0 HcmV?d00001 diff --git a/github.svg b/github.svg new file mode 100644 index 0000000..b8fe0fd --- /dev/null +++ b/github.svg @@ -0,0 +1 @@ + diff --git a/highlight.min.js b/highlight.min.js new file mode 100644 index 0000000..f01246f --- /dev/null +++ b/highlight.min.js @@ -0,0 +1,2 @@ +/*! highlight.js v9.15.6 | BSD3 License | git.io/hljslicense */ +!function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs}))}(function(n){var b=[],o=Object.keys,h={},p={},t=/^(no-?highlight|plain|text)$/i,m=/\blang(?:uage)?-([\w-]+)\b/i,r=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,a={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},N="",v={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function y(e){return e.replace(/&/g,"&").replace(//g,">")}function f(e){return e.nodeName.toLowerCase()}function w(e,t){var r=e&&e.exec(t);return r&&0===r.index}function g(e){return t.test(e)}function u(e){var t,r={},a=Array.prototype.slice.call(arguments,1);for(t in e)r[t]=e[t];return a.forEach(function(e){for(t in e)r[t]=e[t]}),r}function _(e){var n=[];return function e(t,r){for(var a=t.firstChild;a;a=a.nextSibling)3===a.nodeType?r+=a.nodeValue.length:1===a.nodeType&&(n.push({event:"start",offset:r,node:a}),r=e(a,r),f(a).match(/br|hr|img|input/)||n.push({event:"stop",offset:r,node:a}));return r}(e,0),n}function i(e){if(a&&!e.langApiRestored){for(var t in e.langApiRestored=!0,a)e[t]&&(e[a[t]]=e[t]);(e.c||[]).concat(e.v||[]).forEach(i)}}function E(s){function l(e){return e&&e.source||e}function c(e,t){return new RegExp(l(e),"m"+(s.cI?"i":"")+(t?"g":""))}!function t(r,e){if(!r.compiled){if(r.compiled=!0,r.k=r.k||r.bK,r.k){var a={},n=function(r,e){s.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var t=e.split("|");a[t[0]]=[r,t[1]?Number(t[1]):1]})};"string"==typeof r.k?n("keyword",r.k):o(r.k).forEach(function(e){n(e,r.k[e])}),r.k=a}r.lR=c(r.l||/\w+/,!0),e&&(r.bK&&(r.b="\\b("+r.bK.split(" ").join("|")+")\\b"),r.b||(r.b=/\B|\b/),r.bR=c(r.b),r.endSameAsBegin&&(r.e=r.b),r.e||r.eW||(r.e=/\B|\b/),r.e&&(r.eR=c(r.e)),r.tE=l(r.e)||"",r.eW&&e.tE&&(r.tE+=(r.e?"|":"")+e.tE)),r.i&&(r.iR=c(r.i)),null==r.r&&(r.r=1),r.c||(r.c=[]),r.c=Array.prototype.concat.apply([],r.c.map(function(e){return(t="self"===e?r:e).v&&!t.cached_variants&&(t.cached_variants=t.v.map(function(e){return u(t,{v:null},e)})),t.cached_variants||t.eW&&[u(t)]||[t];var t})),r.c.forEach(function(e){t(e,r)}),r.starts&&t(r.starts,e);var i=r.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([r.tE,r.i]).map(l).filter(Boolean);r.t=i.length?c(function(e,t){for(var r=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,a=0,n="",i=0;i')+t+(r?"":N)}function l(){p+=null!=b.sL?function(){var e="string"==typeof b.sL;if(e&&!h[b.sL])return y(m);var t=e?k(b.sL,m,!0,i[b.sL]):x(m,b.sL.length?b.sL:void 0);return 0")+'"');return m+=t,t.length||1}var d=C(e);if(!d)throw new Error('Unknown language: "'+e+'"');E(d);var n,b=r||d,i={},p="";for(n=b;n!==d;n=n.parent)n.cN&&(p=o(n.cN,"",!0)+p);var m="",f=0;try{for(var s,g,_=0;b.t.lastIndex=_,s=b.t.exec(t);)g=a(t.substring(_,s.index),s[0]),_=s.index+g;for(a(t.substr(_)),n=b;n.parent;n=n.parent)n.cN&&(p+=N);return{r:f,value:p,language:e,top:b}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:y(t)};throw e}}function x(r,e){e=e||v.languages||o(h);var a={r:0,value:y(r)},n=a;return e.filter(C).filter(l).forEach(function(e){var t=k(e,r,!1);t.language=e,t.r>n.r&&(n=t),t.r>a.r&&(n=a,a=t)}),n.language&&(a.second_best=n),a}function M(e){return v.tabReplace||v.useBR?e.replace(r,function(e,t){return v.useBR&&"\n"===e?"
":v.tabReplace?t.replace(/\t/g,v.tabReplace):""}):e}function s(e){var t,r,a,n,i,s,c,o,l,u,d=function(e){var t,r,a,n,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",r=m.exec(i))return C(r[1])?r[1]:"no-highlight";for(t=0,a=(i=i.split(/\s+/)).length;t/g,"\n"):t=e,i=t.textContent,a=d?k(d,i,!0):x(i),(r=_(t)).length&&((n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=a.value,a.value=function(e,t,r){var a=0,n="",i=[];function s(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function o(e){n+=""}function l(e){("start"===e.event?c:o)(e.node)}for(;e.length||t.length;){var u=s();if(n+=y(r.substring(a,u[0].offset)),a=u[0].offset,u===e){for(i.reverse().forEach(o);l(u.splice(0,1)[0]),(u=s())===e&&u.length&&u[0].offset===a;);i.reverse().forEach(c)}else"start"===u[0].event?i.push(u[0].node):i.pop(),l(u.splice(0,1)[0])}return n+y(r.substr(a))}(r,_(n),i)),a.value=M(a.value),e.innerHTML=a.value,e.className=(s=e.className,c=d,o=a.language,l=c?p[c]:o,u=[s.trim()],s.match(/\bhljs\b/)||u.push("hljs"),-1===s.indexOf(l)&&u.push(l),u.join(" ").trim()),e.result={language:a.language,re:a.r},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.r}))}function c(){if(!c.called){c.called=!0;var e=document.querySelectorAll("pre code");b.forEach.call(e,s)}}function C(e){return e=(e||"").toLowerCase(),h[e]||h[p[e]]}function l(e){var t=C(e);return t&&!t.disableAutodetect}return n.highlight=k,n.highlightAuto=x,n.fixMarkup=M,n.highlightBlock=s,n.configure=function(e){v=u(v,e)},n.initHighlighting=c,n.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",c,!1),addEventListener("load",c,!1)},n.registerLanguage=function(t,e){var r=h[t]=e(n);i(r),r.aliases&&r.aliases.forEach(function(e){p[e]=t})},n.listLanguages=function(){return o(h)},n.getLanguage=C,n.autoDetection=l,n.inherit=u,n.IR=n.IDENT_RE="[a-zA-Z]\\w*",n.UIR=n.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",n.NR=n.NUMBER_RE="\\b\\d+(\\.\\d+)?",n.CNR=n.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",n.BNR=n.BINARY_NUMBER_RE="\\b(0b[01]+)",n.RSR=n.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",n.BE=n.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},n.ASM=n.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[n.BE]},n.QSM=n.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[n.BE]},n.PWM=n.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},n.C=n.COMMENT=function(e,t,r){var a=n.inherit({cN:"comment",b:e,e:t,c:[]},r||{});return a.c.push(n.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},n.CLCM=n.C_LINE_COMMENT_MODE=n.C("//","$"),n.CBCM=n.C_BLOCK_COMMENT_MODE=n.C("/\\*","\\*/"),n.HCM=n.HASH_COMMENT_MODE=n.C("#","$"),n.NM=n.NUMBER_MODE={cN:"number",b:n.NR,r:0},n.CNM=n.C_NUMBER_MODE={cN:"number",b:n.CNR,r:0},n.BNM=n.BINARY_NUMBER_MODE={cN:"number",b:n.BNR,r:0},n.CSSNM=n.CSS_NUMBER_MODE={cN:"number",b:n.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},n.RM=n.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[n.BE,{b:/\[/,e:/\]/,r:0,c:[n.BE]}]},n.TM=n.TITLE_MODE={cN:"title",b:n.IR,r:0},n.UTM=n.UNDERSCORE_TITLE_MODE={cN:"title",b:n.UIR,r:0},n.METHOD_GUARD={b:"\\.\\s*"+n.UIR,r:0},n.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),n.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,r,{cN:"string",b:/'/,e:/'/},t]}}),n.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},r="[A-Za-z$_][0-9A-Za-z$_]*",a={cN:"subst",b:/#\{/,e:/}/,k:t},n=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,a]},{b:/"/,e:/"/,c:[e.BE,a]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[a,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+r},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];a.c=n;var i=e.inherit(e.TM,{b:r}),s="(\\(.*\\))?\\s*\\B[-=]>",c={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(n)}]};return{aliases:["coffee","cson","iced"],k:t,i:/\/\*/,c:n.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,c]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[c]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{b:r+":",e:":",rB:!0,rE:!0,r:0}])}}),n.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U|L)?"',e:'"',i:"\\n",c:[e.BE]},{b:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/},{b:"'\\\\?.",e:"'",i:"."}]},a={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},n={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},e.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},e.CLCM,e.CBCM]},i=e.IR+"\\s*\\(",s={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile assets protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},c=[t,e.CLCM,e.CBCM,a,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:s,i:"",k:s,c:["self",t]},{b:e.IR+"::",k:s},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:s,c:c.concat([{b:/\(/,e:/\)/,k:s,c:c.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+i,rB:!0,e:/[{;=]/,eE:!0,k:s,i:/[^\w\s\*&]/,c:[{b:i,rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:s,r:0,c:[e.CLCM,e.CBCM,r,a,t,{b:/\(/,e:/\)/,k:s,r:0,c:["self",e.CLCM,e.CBCM,r,a,t]}]},e.CLCM,e.CBCM,n]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b://,c:["self"]},e.TM]}]),exports:{preprocessor:n,strings:r,k:s}}}),n.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc assets string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},r={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},a={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},n=e.inherit(a,{i:/\n/}),i={cN:"subst",b:"{",e:"}",k:t},s=e.inherit(i,{i:/\n/}),c={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,s]},o={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},i]},l=e.inherit(o,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},s]});i.c=[o,c,a,e.ASM,e.QSM,r,e.CBCM],s.c=[l,c,n,e.ASM,e.QSM,r,e.inherit(e.CBCM,{i:/\n/})];var u={v:[o,c,a,e.ASM,e.QSM]},d=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:"\x3c!--|--\x3e"},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},u,r,{bK:"class interface",e:/[{;=]/,i:/[^\s:,]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",r:0},{cN:"function",b:"("+d+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/\s*[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,r:0,c:[u,r,e.CBCM]},e.CLCM,e.CBCM]}]}}),n.registerLanguage("css",function(e){var t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}}),n.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}}),n.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),n.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_\.-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_\.-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}}),n.registerLanguage("java",function(e){var t="false synchronized int abstract float private char boolean var assets null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",r={cN:"number",b:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",r:0};return{aliases:["jsp"],k:t,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:"meta",b:"@[A-Za-z]+"}]}}),n.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",r={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await assets import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:r,c:[]},i={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,i,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:r,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:t+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:t,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+t+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:t},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor get set",e:/\{/,eE:!0}],i:/#(?!!)/}}),n.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:r,k:t},n={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(a,{b:/:/})],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return r.splice(r.length,0,n,i),{c:r,k:t,i:"\\S"}}),n.registerLanguage("makefile",function(e){var t={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("\x3c!--","--\x3e",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"meta",b:/<\?xml/,e:/\?>/,r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},e.inherit(e.ASM,{i:null,cN:null,c:null,skip:!0}),e.inherit(e.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[t],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[t],starts:{e:"<\/script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}}),n.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}}),n.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),n.registerLanguage("objectivec",function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,r="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile assets bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},l:t,i:""}]}]},{cN:"class",b:"("+r.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:r,l:t,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}}),n.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:a.c=s}}),n.registerLanguage("php",function(e){var t={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"meta",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php","php3","php4","php5","php6","php7"],cI:!0,k:"and include_once list abstract global private echo interface as assets endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[r]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},r,{cN:"keyword",b:/\$this\b/},t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),n.registerLanguage("properties",function(e){var t="[ \\t\\f]*",r="("+t+"[:=]"+t+"|[ \\t\\f]+)",a="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",n="([^\\\\:= \\t\\f\\n]|\\\\.)+",i={e:r,r:0,starts:{cN:"string",e:/$/,r:0,c:[{b:"\\\\\\n"}]}};return{cI:!0,i:/\S/,c:[e.C("^\\s*[!#]","$"),{b:a+r,rB:!0,c:[{cN:"attr",b:a,endsParent:!0,r:0}],starts:i},{b:n+r,rB:!0,r:0,c:[{cN:"meta",b:n,endsParent:!0,r:0}],starts:i},{cN:"attr",r:0,b:n+t+"$"}]}}),n.registerLanguage("python",function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},r={cN:"meta",b:/^(>>>|\.\.\.) /},a={cN:"subst",b:/\{/,e:/\}/,k:t,i:/#/},n={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[e.BE,r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[e.BE,r],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[e.BE,r,a]},{b:/(fr|rf|f)"""/,e:/"""/,c:[e.BE,r,a]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[e.BE,a]},{b:/(fr|rf|f)"/,e:/"/,c:[e.BE,a]},e.ASM,e.QSM]},i={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},s={cN:"params",b:/\(/,e:/\)/,c:["self",r,i,n]};return a.c=[n,i,r],{aliases:["py","gyp","ipython"],k:t,i:/(<\/|->|\?)|=>/,c:[r,i,n,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,s,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),n.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},a={cN:"doctag",b:"@[A-Za-z]+"},n={b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},o={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:t}),o].concat(i)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l;var u=[{b:/^\s*=>/,starts:{e:"$",c:o.c=l}},{cN:"meta",b:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:i.concat(u).concat(l)}}),n.registerLanguage("shell",function(e){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}}),n.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement assets statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t,e.HCM]},e.CBCM,t,e.HCM]}}),n}); diff --git a/imageeditor/index.html b/imageeditor/index.html new file mode 100644 index 0000000..a00a978 --- /dev/null +++ b/imageeditor/index.html @@ -0,0 +1,66 @@ +ImageEditor - Openwit

ImageEditor

ImageEditor 项目介绍

ImageEditor 是一个基于 Tauri 构建的图像编辑工具,允许用户调整图像大小、裁剪图像、转换格式等操作。适合需要快速处理图像的开发者和设计师。

主要功能

  • 裁剪图像:精确裁剪图像到所需尺寸
  • 调整图像大小:按比例或固定尺寸调整图像大小
  • 多格式保存:支持保存为 JPEG、PNG、ICO 等格式
  • 生成 icns 文件:为 macOS 应用生成图标文件
  • 提取图像颜色:从图像中提取主要颜色
  • 颜色拾取:从图像中拾取精确颜色值

技术特点

  • 基于 Tauri:使用 Rust 和 Web 技术构建的跨平台桌面应用
  • 轻量级:相比传统图像编辑软件更加小巧高效
  • 用户友好:简洁的界面设计,易于使用
  • 跨平台:支持 Windows、macOS 和 Linux

如何使用

开发环境搭建

# 安装依赖
+npm install
+
+# 启动开发服务器
+npm run tauri dev
+

构建应用

# 安装依赖
+npm install
+
+# 构建应用
+npm run tauri build
+

注意事项

  • 图片编辑操作无法撤销,请在使用前备份原始图片
  • 对于大尺寸图片,处理可能需要一些时间

项目链接

项目截图

ImageEditor 截图 +ImageEditor 截图 +ImageEditor 截图 +ImageEditor 截图

\ No newline at end of file diff --git a/img/hsclient.webp b/img/hsclient.webp new file mode 100644 index 0000000000000000000000000000000000000000..e1f2d1621b372659fedb6cfa5f3274ee21c4455a GIT binary patch literal 8044 zcmV-yACurxNk&Fw9{>PXMM6+kP&go19{>Olj{uzkDj@|feH(s{G+6ZRj&zkn~wKaYQV{<-}_{-5_hQT>xTulRpJFJ!)F z{-f@<(a-l!%J1VJ0)9{aXV?Sz7xTaI|Jl86|5f27_P_SO^gp|PM}33;ApWcVhx@Pi zui0;;pWy%O|APN<|8xDe8k66fCUFB7*(Kw|C)5J`lK0a1ZgDgeFA|N>DU$4o|HyIRha59p0m7jn+j9TpL)p8# z{TE7xT*mq?l?=I!^hxQ=r`the@+wJX)Q?saKszg^(mPKNXaIFq*&CL9Ms6?rKC!-w zr9&=beHTiGRw+YZ;Mgr;n4di{@27!w1a~fDeHTiGT*mq?lvaV*!P0*4r7MxWxc{lv z;6?qTx_m)5yeFfU`EwiSx>PdeH_>#c1+B?R&}bw;C?YAE#b|AWKYu60^Nw!QqE4yR z_Q4?7vj`aaE|ml2KY;MU zi1rvMtU3VN(QC&VVcfZm_xt)NoO|+^R_D??!qXpNwhM&#bn;()3{G7K zUpOU{3Ra2vUnBh*{&b}XD26S3^vi$13h%(y+15xNM`Q&LQU!sUnXu!|w|Jv~$I*1C zW#ej&gBVXHb>;TS0s^B>#uAI8R4DU-IB*+uWkVlD(xI0zzKgBj?p#J0$)#%0^P|mz zFD(|&Boyp{z>@3%vuhS7yNw}nq=!hlR5vbTeHc$veHTmQCZ1_|C#;sA9(bFI4eWVI zIWVz&yh*%&cHNZ>eHTiGUNzT_G{d?YSfEOV<;-uQ=}@}>0R71169=et2E33;uVA6T zz$O(eK?9iY0*eJoG4afdegO&AlC@;`&TmSw@&yH_1~DVlZkU@8^az4ZKCUi(*(C~7 z6za)2=W@J{8Fr8Q$#46P_lD{WIhtZ|;iy6D5MiL4V2hAhJtXHsz*^`);sVw=Qle;F z-}X{A3ru-uORom5w)nf#ZViBNFd*5`e-24o)mjWPA;Dz4lQ2!6 zVA!*V4{$;DO|<A+9@wv#R1Bynf|r;MSog9OS-X@3w1!Z{U~1WA zI6G3H_+(P4a`_vM!ELb9ey+GxiQA}ZR<$;S_e7r#p_bJ;#A3=Q6enfBOR*~qi3}^7 zUz-Fmql9Wz7r9)Wja!4i7?*8RUr1+Z{ZySWd?8i4=AHpbgjsJi%+{K!mr9(5q2 z3{_Vzq}qsL*BAojJuP7i46MM7Tn#lou1TAHuXj>kg*LsSo_Za6g2JkBb?B}SsyZRJ@Ly6nQJ&^Ai`K`d>Uy_1gcwVJnQ zafgH;BNevHwdsphh2jSY0P5Pnw2JraVP3i)6yY^5bw013Nb!k(B>Th|;pT`<*m5LpFZhb*TKYb@A(kp013a%{L9(s*U!DI*Vh^mzB|iP+C|^K*EKChs zyb{3n06`FgVa9^N^9tB5f08X59T)`~J_Y0KSW*nKbWUgRj@z=Q>kFw^m2idYiVkE4 zMRW+2f%RLY6kJ9-$5N_K32?e$Hte1|-&T$qDg}FK+D6Z%bbx$RL}UlBj@VE#vR_V7 z7X0NXdxj`;DR^?*g^{P_+nbP4%t^Ff07$F#IW8x@?TY!Hq9YyYs!w`}sfO;4E9GAmpYdL#97to^S4(icxw5Uies0|? zSZKm0l=;M%e`r*R;1NX)!tzsWzDd|{{{p7nm(Dn~G&<-TSA4E*0fY;~q|gdB?PoV$ z^Ms;AWizZzri#hq{JTi*<6)=Apu-CAer}cR%6cDPDbZwpQ}+GU3UK3Ht)&T;U)Sm> zvsL3He)_JCrS(edDCb}QzvqxGQ9*{mWn_&XZAMuv$zNj=ZMVG5{N2E0bMz6 z>>9q+j?!B~;b0#l+jF~=%SZ%37u_&jN&YytJ#hvF*_L-c z5=b}0g7HHuJLS)2f_zR?+L4>g2cuIgZozDhF2hYMcwpIqgY%S2P7CUpqY}uh?z3V$ z6Na;B6q|8l+GGy6qOGc8Utp8cG6Qof#%(Ju*(qSRxJp9<^q~NLB|yb|>DQGV; zhwwgma|J=E59J!xjPiR&C5^i@9Wlme%{fJ=W+FL=`(C<_3ldW(qtgbFtHb+G^lMI_ zol67fqbQ5>(BSo6K5_>F)Ayd1C*Pto8a;g*1SDw0ZYw@azQwg&nuLc8(dNP#{vMiPAB)aU*Vq9>u-dtu*Gw<217RwA`xFfmT4-4}yB%>e9t z7jEu72t4kIS2vdOL8KO1>c2L+oKvC6DwQ^azw5KeTCrI7Puxr565rSS;QG~=C(hNF|DRfIsW$2 z9FTrca*A6r2UPeV1yZ6B)^q=zXW9T!^0e2L)+=$%HL8|XZgj>nMtj>am7f`zJ_A^B zBdsRmLoJgpKJk4vgH1e_hJPvyykhw_Y!++qXKZCuDe1(iAmFA{BMiCW13Go6%yFY( zS;Z3cltZ~R))<8WJl;NE)pl3p5x0 z+CE-mdp&l?4O~3R1O6rsoSUt-=kB`j5V0)C$!hw~>a9)vuk(^@SM`gv*8kg4`)v~? zrjyTwm+1%#Ed{?h_5hc}9cc`+Vs>>>P5`NDvaBIPNc)t_c)`=0p{ybxHkH|ZdkqsX z;+1oy8=>x!lmq|zInio%qRJ}!rW&$*fQOh1J5!)6fVkltFF}tioC@n2Ua`{eWpDf~ zaWy0`s*PTFa_5j|Xu92;A7cBpKdbMg3|MpDSK*Ti<+7-1!OwdAU9QL0>)`0?#r$*O zPENv$YHBFQ`ZruL9my^U{HYV_n$6g5A(bD#y>=aPO!ziZKOHuCZIN&c){~G*`D{yJ ztp)odxT$V2o6%saS1e$sb@^oglanWc5n#NVhR#KzM3-{HFz}~5zhXStj_gc2H}zZp zec+h<*04YPN5@LJBEaHZ)r*NviX&*pKizUwfO5bF|8ojl>Bd+?qA{}I-pjJ&)5MW;2|6T}z5pRipa3dv_BNp^f`|Fpb#G&fBCduj^;g@X_v2RxR z<1o618|1M2W7@?bOsxxJY$PM8a~ZxFc`HI_u-B#IPVuf*J?(r^ff%_|Y0Se29 zIJ&K5GJy05j%uqEE$2)@$&ma>#%M6R4Ii$yn27A@8_-h^+`MQi0Nb`kYyDQ+v^cdG zFegeTOG|8@8sEc&>OjwD84Pnn(M&Zs8E&F7SzNGFSFRlP;ofMr4Drf+djzVfes3tUY}&GdP_D#yqa z7MzXol^eTzN*%@r{30W$KU1x{m>wX@Ay0>ekMg^{NnX}6SbG4nXv<3;;NvaH@ILE& zO#B}~DW%RBsPI;kM=$>7I4->5PoEu%`96}Yl7Dz;dV--7JKtRSIdUKXNTHzc*KoGD z^l>>!cPK})*ENTIs|$<7go86XaD@iZo;?!Lf*6At_U1BYNowfdGRFQ#8w_CSoF0=q z3nz5lOzI<)%53o<^uNE&vic4coc+OgGBvC*k7Du`rA4;HXAgJ)+DV)-XFU3LM7UXD zMWV6OYL5T$1@h5f^CuOpeVu9%yO;#21BZ&PvhVOOE8ZJrUSafWZFARXSZ`V4z*0A) z0xd?uuupo@6qoKXn5%4faUmltgp7h-4hh(5r0zqB!51c&{*HsW7%r$&PAl#P*cABo zO$X%=u5pN?y!|O58%<_qm1-Z{)0UAP+8Q^J@i^{Fz89FUkljpgXXxGzdF{(WR6j!6 z#y@cnAEBuTMYk&j%X;4m_RJIBa}IX)9*pPFhPhFLeVWRC^cJS#m0*$xKq5AQ{zneTzNWAs59~@8C1yMZ2%q$i2ZxGK4 z5|zvtnIdUe|3|#F3-24VFM_G)x~S~maJtF1#ycr0L!y2Uru}w5hc0;r#wDh&OK$w> zk8KUmnPs%w4L5cV-nol6k9-#ZRx=`*xD}3ucj9rK4Iv5|5CAT^)U$_1_iN4!q72v~BSa0o{DXqs}BU@1Ou)_`( zDq2rARb;9fH{2;vf-*VNX}?NTEi5h+fbj}~*>q%7K0?%S*0$edb!?XBjTjLXHq*_%hhShigHf|e zl-u4*R{$m5ilJ@Zg$8zM-K`s%BvUB4$|NAAtss||r=uiiyMUh(_^g>u7>sNz+AcKZ z*Yl)aSckMPM-_)xb~s5GKGXciyng^SSx{tOJdCv>Mv{cq#@{t-mi(EM-7HmR%$7G zXuL1LTmo;Ge{7d4I6gN`3ufyiMsgq_3r)#R1R!fHV-inXGTt)pV7t9%qxKVV41H?%jy4}#GG+*kss~mMo>PSD4DLM;n5=0j#ojsIGBIlIYC2~afc_v{?97T@--MaQP!74Y_myX z-lbvv#IJd_ToF)vZ8KO!40mn7{NC6KmfU~g z*a34EtR!ZRw=GEt_o@4(a=tTZ>pSxFXcwa+^5q+~UALpO;442-Y*o4vhNl?3C2VR| z$6;siy@{wJ|DJnk8?rX#xt^qW>m2wZwuGcc&p2O2onB#8K;=)*xy`KKzC_f*wdNU- z#opLZp^Q@pQb;&fq-Xdxt4Z-bOzEqjB0vGsjJg!EAlN`@v(6?@pX`PpCx-UqH~po6v_#w-O3BP4rs>@Xdk5jTW%~Np z5|nQ^*ls(8lZk$S^SNY}JDl4!WtfDQc=#gyn>v;q5CG9F)=@5&@-9&u&7DDwrp-oU zc$!!xq7L+6(Js+6OR$P`OM2I&sw;-7g#YMff3pHA zXWQDMoT=19Vwktk>EYupJIRy6R%*PpduHiOU6!!*zJGc9VucvX!Aw{>B3?MUi4%9l zLj>)2zKU_OI2Q0bu!QtX_5lzO-3Vnqg4j(wZ=`h+pQI_`vl^W52Z}*L9y#j-*-q#XkM&wa)1(;`-eX2h!ZwkSeK{Vurwz!x2g?Rqf=!L z7TteoQ8oSxWor>v=EmDvr$6vi;8q^)r4IrZtvP7`hyI9y0{=9+uV;X`xl{bYi1B8) zPz#pgGeje86wXa~_Qm`9zMVlrjOZTjwY_W&G6{2@e&}~dRN2w~D2IbV(Z68sPf}xw zLt830B?&zLEu%@4J+ZL4@yR|Qg$+F9>fv~TWdxD%nr|jkBAJB$x%5pfc2!+BP2$7J z8HM**E&axFd~!LfWh2L2v%y8*#*j$lQDP?9*;zR z^M892nGT=4$H_(WwZ}kX>E--YmVuBVr2Zgv%o;B>;5%%;^EX9ejqV3d3&{QZT?S#m zS$7gHam1*`wKHaR?k10m-*tQTau-*=S-}cQcw?ToeuSH%os#$J1IGak(JW8E>=;)9 z_UnuQFpDJzG>gBmgnFS-$7lDP(oUkWKdr&#V6Rx<3p^{k`y2C6~-&CzBxLM=R) z|8g#fo{&A7!5>SP5><&HY++T60L}uTIsPj4h#W?PmG3ZNKX3cFzxE4#^yccTakq6J z=A#eO`0d5Zv*qTR!rvp;Ygg%90&3rHFM$g_Btw3*Pzk_D_SQbI;~+J>tK6xE5=pE3 z(s@zL?q^8ilFDqt#VaYeF-QxR?Xytc!=5 zexIvI15q+f@~}&7E$LBe1IGE%(g6?vX4LN>_Xn4>=I~r-H8A}^!m4k&OVc!QDTm;C zQQz8;o6ZCOl(pBL^bXOfuK1Q^jmp=MQzTlYg7%(vP8|tCKMic_a3N|eM-m>8rUH@~q3%!YK_j|+k5>ePGd#E$ zH0ZZI0LjFrMTp_7?ruMCYyNizA6>P&R3!c|Iqb}paTbSmqn$qWOfutu7*$m#u|d`Y zqOrr-B4x$3ptCYzQdNCFYAI^#@TG*2gYe9EIksxcF%DMj8-;PJDn?dR85hqZEo4@I z*xyFR?c`Sl>QW@HLT4Yq)7I;{h{FJID|fG-OEa~#(sJax3n2>|l%f@`+TC11Pd=Jg z<^mLlDAK~5hv}iKAGj@+m|>7@SUXhS9;!HsGbr=>Nbtu0ae4wuA%J1K6~9+|X@-4B zprDQdq;%hBuZB~U59pU&a|Wu+JNEH9?4P^Dgo86c5e{v%%SqdKK^^j&VstQ;#Lsh? zS@sSI`<$tc2)sfEEVU|RLL9+bN<3dupcDf}Y$l$kv!oYL$d#>h$1YVeHf(OYqR?lI zvEE$Ok1jV%F>q7K@9mQ1X9vdVp={k`i1KRdA^Q`kFbYFu;eA~F2)yOR+tZdRYKGz7 zFE8z9N{H)TO|lax^pp)*hChH2QbJ7p9;}3Ti}@`-o&Y;ZJOmuPmdPiwq5F7HeY$rm z6|tn>`gUEcRzXrOt;IvzqrZ!{pntc<+5$IA~a~)IP9tPKmIY6GZE+<3bNw8?TZG z99Nf<oMCh9OZEL|vn>YPeP-Mu~ zb)BxRFI(=}?30xq)&6AQT7uu-q0HV`Pdexe9^^8}B3@8xId(`KI?jZjj{cAAK z{Mp+3o(L6Q$r+#!l&ESi;Gp$Pen?*Ez&owabMkZ+90`-)!o{GZE{c0W3EW4Zk+Hmg z0hKn8+D4SR)8g-csA->1fNZ^cNPsCj0{e& zPpA<8tXhbn5p1mA^Na!JtPs~68N=T4^EFb0!6?@iUVvCmrFA8g9yl)YFBuC!+RffOnX2b&S!&n+oL98{W&sw#CUm5IZw-!@0t%^7h0002*#)(+~ literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..868c11b --- /dev/null +++ b/index.html @@ -0,0 +1,11 @@ +Openwit
Ilei
Ilei
人生很短,每一秒都是岁月。

108课_海螺AI

+108课_海螺AI

108课_DeepSeek

+108课_DeepSeek

GStreamer插件编写,引入TensorFlow模型

+GStreamer插件编写,引入TensorFlow模型

缠中说禅笔记

+缠中说禅笔记

银河麒麟制作deb安装包

+银河麒麟制作deb安装包
\ No newline at end of file diff --git a/index.xml b/index.xml new file mode 100644 index 0000000..bf6a1fd --- /dev/null +++ b/index.xml @@ -0,0 +1,766 @@ +Openwithttps://openwit.net/Recent content on OpenwitHugocnThu, 15 Jan 2026 00:00:00 +0000ImageEditorhttps://openwit.net/imageeditor/Thu, 15 Jan 2026 00:00:00 +0000https://openwit.net/imageeditor/<h2 id="imageeditor-项目介绍">ImageEditor 项目介绍</h2> +<p>ImageEditor 是一个基于 Tauri 构建的图像编辑工具,允许用户调整图像大小、裁剪图像、转换格式等操作。适合需要快速处理图像的开发者和设计师。</p> +<h3 id="主要功能">主要功能</h3> +<ul> +<li><strong>裁剪图像</strong>:精确裁剪图像到所需尺寸</li> +<li><strong>调整图像大小</strong>:按比例或固定尺寸调整图像大小</li> +<li><strong>多格式保存</strong>:支持保存为 JPEG、PNG、ICO 等格式</li> +<li><strong>生成 icns 文件</strong>:为 macOS 应用生成图标文件</li> +<li><strong>提取图像颜色</strong>:从图像中提取主要颜色</li> +<li><strong>颜色拾取</strong>:从图像中拾取精确颜色值</li> +</ul> +<h3 id="技术特点">技术特点</h3> +<ul> +<li><strong>基于 Tauri</strong>:使用 Rust 和 Web 技术构建的跨平台桌面应用</li> +<li><strong>轻量级</strong>:相比传统图像编辑软件更加小巧高效</li> +<li><strong>用户友好</strong>:简洁的界面设计,易于使用</li> +<li><strong>跨平台</strong>:支持 Windows、macOS 和 Linux</li> +</ul> +<h3 id="如何使用">如何使用</h3> +<h4 id="开发环境搭建">开发环境搭建</h4> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># 安装依赖</span> +</span></span><span style="display:flex;"><span>npm install +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># 启动开发服务器</span> +</span></span><span style="display:flex;"><span>npm run tauri dev +</span></span></code></pre></div><h4 id="构建应用">构建应用</h4> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># 安装依赖</span> +</span></span><span style="display:flex;"><span>npm install +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># 构建应用</span> +</span></span><span style="display:flex;"><span>npm run tauri build +</span></span></code></pre></div><h3 id="注意事项">注意事项</h3> +<ul> +<li>图片编辑操作无法撤销,请在使用前备份原始图片</li> +<li>对于大尺寸图片,处理可能需要一些时间</li> +</ul> +<h3 id="项目链接">项目链接</h3> +<ul> +<li><strong>GitHub 仓库</strong>:<a href="https://github.com/ilei131/ImageEditor">https://github.com/ilei131/ImageEditor</a></li> +</ul> +<h3 id="项目截图">项目截图</h3> +<p><img src="https://github.com/ilei131/ImageEditor/raw/main/screenshot/1.png" alt="ImageEditor 截图"> +<img src="https://github.com/ilei131/ImageEditor/raw/main/screenshot/2.png" alt="ImageEditor 截图"> +<img src="https://github.com/ilei131/ImageEditor/raw/main/screenshot/3.png" alt="ImageEditor 截图"> +<img src="https://github.com/ilei131/ImageEditor/raw/main/screenshot/4.png" alt="ImageEditor 截图"></p>PasswordDiskhttps://openwit.net/passworddisk/Thu, 15 Jan 2026 00:00:00 +0000https://openwit.net/passworddisk/<h2 id="passworddisk-项目介绍">PasswordDisk 项目介绍</h2> +<p>PasswordDisk 是一个安全的密码管理工具,帮助用户安全地存储和管理各种账号密码信息。</p> +<h3 id="主要功能">主要功能</h3> +<ul> +<li><strong>安全存储</strong>:使用加密技术保护密码信息</li> +<li><strong>密码生成</strong>:生成强密码,提高账号安全性</li> +<li><strong>分类管理</strong>:按类别组织密码信息,方便查找</li> +<li><strong>备份恢复</strong>:支持离线备份、恢复密码数据</li> +<li><strong>双重认证</strong>:支持2FA密码生成</li> +</ul> +<h3 id="技术特点">技术特点</h3> +<ul> +<li><strong>加密存储</strong>:确保密码数据的安全性</li> +<li><strong>本地存储</strong>:密码数据存储在本地,减少云端风险</li> +<li><strong>多平台支持</strong>:支持 Windows、macOS</li> +<li><strong>开源透明</strong>:代码开源</li> +</ul> +<h3 id="如何使用">如何使用</h3> +<ol> +<li><strong>安装应用</strong>:从 GitHub 仓库下载对应平台的安装包</li> +<li><strong>创建密码库</strong>:设置主密码,创建新的密码库</li> +<li><strong>添加密码</strong>:添加账号密码信息,可设置分类和标签</li> +<li><strong>使用密码</strong>:通过搜索或分类查找并使用密码</li> +</ol> +<h3 id="项目链接">项目链接</h3> +<ul> +<li><strong>GitHub 仓库</strong>:<a href="https://github.com/ilei131/PasswordDisk">https://github.com/ilei131/PasswordDisk</a></li> +</ul> +<h3 id="安全建议">安全建议</h3> +<ul> +<li>使用强主密码,包含字母、数字和特殊字符</li> +<li>定期备份密码库</li> +<li>不在公共设备上使用</li> +</ul> +<h3 id="项目截图">项目截图</h3> +<p><img src="https://github.com/ilei131/PasswordDisk/raw/main/screenshot.png" alt="截图"> +<img src="https://github.com/ilei131/PasswordDisk/raw/main/2FA.png" alt="截图"></p>108课_海螺AIhttps://openwit.net/posts/czsc108_hailuo/Sat, 18 Jan 2025 00:00:00 +0000https://openwit.net/posts/czsc108_hailuo/<h2 id="教你炒股票108课内容总结">《教你炒股票108课》内容总结</h2> +<p>本文档是缠中说禅所著的《教你炒股票108课》的内容概述,涵盖了从股市基础知识到高级操作技巧,再到哲学思考的完整体系。</p> +<h3 id="一--股市本质与心态修炼">一、 股市本质与心态修炼</h3> +<p><strong>1. 股市本质:</strong></p> +<ul> +<li> +<p><strong>市场是合力:</strong> 股市走势是所有参与者合力作用的结果,而非庄家操控。庄家只是众多分力之一,且并非无所不能。</p> +<ul> +<li><strong>“没有庄家,只有赢家和输家”:</strong> 股市中不存在所谓的庄家,只有掌握市场规律、能够顺应市场节奏的赢家和被市场愚弄的输家。</li> +<li><strong>“主力资金的食物链”:</strong> 市场存在不同级别的主力资金,它们之间既有合作也有竞争,共同构成市场合力。</li> +</ul> +</li> +<li> +<p><strong>市场是零和博弈:</strong> 股票本身没有价值,只是废纸一张,其价格波动源于资金博弈。</p> +<ul> +<li><strong>“股票是废纸”:</strong> 股票只是资金流动的凭证,其价值在于能否通过买卖差价获利,而非其本身的价值。</li> +<li><strong>“市场没有同情,不信眼泪”:</strong> 股市是残酷的,不会同情失败者,只有强者才能生存。</li> +</ul> +</li> +<li> +<p><strong>市场充满不确定性:</strong> 走势不可预测,但可以通过分析其自相似性结构来把握规律。</p> +<ul> +<li><strong>“走势不可重复,但自同构性结构可复制”:</strong> 任何走势都是独一无二的,但都遵循着相同的自相似性结构,这使得技术分析成为可能。</li> +</ul> +</li> +</ul> +<p><strong>2. 心态修炼:</strong></p> +<ul> +<li> +<p><strong>克服贪婪与恐惧:</strong> 贪婪和恐惧是阻碍投资者成功的最大障碍,要学会控制情绪,理性分析市场。</p> +<ul> +<li><strong>“你的喜好,你的死亡陷阱”:</strong> 投资者要摒弃个人喜好,避免被情绪左右,才能在市场中生存。</li> +<li><strong>“宁当面首,莫成怨男”:</strong> 投资者要像面首一样积极主动地把握机会,而不是像怨男一样怨天尤人,被市场牵着鼻子走。</li> +</ul> +</li> +<li> +<p><strong>培养耐心与纪律:</strong> 耐心等待买卖点出现,严格按照操作纪律执行,才能避免追涨杀跌。</p> +<ul> +<li><strong>“买点买,卖点卖”:</strong> 投资者要严格按照买卖点进行操作,不追涨杀跌,不盲目操作。</li> +<li><strong>“没有节奏,只有死”:</strong> 投资者要把握市场节奏,根据不同级别走势进行操作,才能在市场中游刃有余。</li> +</ul> +</li> +<li> +<p><strong>保持谦逊与学习:</strong> 股市没有常胜将军,要不断学习新知识,总结经验教训,才能持续进步。</p> +<ul> +<li><strong>“远离聪明,机械操作”:</strong> 投资者要避免过度依赖主观判断,遵循市场规律,进行机械化的操作。</li> +<li><strong>“修炼自己”:</strong> 投资者要不断提升自身修养,克服人性弱点,才能在市场中立于不败之地。</li> +</ul> +</li> +</ul> +<h3 id="二--技术分析理论">二、 技术分析理论</h3> +<p><strong>1. 核心概念:</strong></p> +<ul> +<li> +<p><strong>中枢:</strong> 某级别走势类型中,被至少三个连续次级别走势类型重叠的部分,是走势分析的核心。</p> +<ul> +<li><strong>“走势终完美”:</strong> 任何级别的任何走势类型终将完成,并转化为其他类型的走势,这是技术分析的基础。</li> +<li><strong>“走势中枢”:</strong> 中枢是走势的“引力中心”,其级别和位置决定了走势的强度和方向。</li> +</ul> +</li> +<li> +<p><strong>笔、线段:</strong> 笔是相邻顶底分型之间不共用的K线构成的基本单位,线段由至少三笔构成,是构成中枢的要素。</p> +<ul> +<li><strong>“分型、笔与线段”:</strong> 笔和线段是构成中枢和走势类型的基本单位,其划分标准是技术分析的基础。</li> +</ul> +</li> +<li> +<p><strong>走势类型:</strong> 上涨、下跌、盘整三种基本走势类型,是市场走势的构成要素。</p> +<ul> +<li><strong>“走势类型连接结合性”:</strong> 任何走势都可以分解为不同级别走势类型的连接,这为走势分析提供了理论依据。</li> +</ul> +</li> +</ul> +<p><strong>2. 买卖点分析:</strong></p> +<ul> +<li> +<p><strong>三类买卖点:</strong></p> +<ul> +<li><strong>第一类买卖点:</strong> 背驰点,是趋势转折的标志。 +<ul> +<li><strong>“没有趋势,没有背驰”:</strong> 背驰是趋势与趋势之间的力度比较,只有在趋势中才存在背驰。</li> +<li><strong>“缠中说禅背驰-转折定理”:</strong> 某级别趋势的背驰将导致该趋势最后一个中枢的级别扩展、该级别更大级别的盘整或该级别以上级别的反趋势。</li> +</ul> +</li> +<li><strong>第二类买卖点:</strong> 第一类买卖点的次级别回抽结束后再次探底或回试的结束点,是趋势延续的确认点。 +<ul> +<li><strong>“第二类买卖点”:</strong> 第二类买卖点可以与第一类买卖点重合,也可以出现在中枢震荡中,其位置和力度决定了趋势的强度。</li> +</ul> +</li> +<li><strong>第三类买卖点:</strong> 中枢破坏点,是趋势加速或趋势结束的标志。 +<ul> +<li><strong>“第三类买卖点”:</strong> 第三类买卖点标志着中枢的破坏,其出现意味着趋势的加速或趋势的结束。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>买卖点与级别:</strong> 买卖点是有级别的,不同级别的买卖点对应着不同的操作周期和风险收益比。</p>108课_DeepSeekhttps://openwit.net/posts/czsc108_deepseek/Fri, 17 Jan 2025 00:00:00 +0000https://openwit.net/posts/czsc108_deepseek/<h2 id="教你炒股票108课内容总结">《教你炒股票108课》内容总结</h2> +<p>《缠中说禅:教你炒股票108课》是一本关于股票市场技术分析的经典著作,作者缠中说禅通过108课的形式,详细讲解了股票市场的操作技巧、市场哲学和数学原理。以下是DeepSeek对该书的要点总结:</p> +<h3 id="1-市场哲学与心态">1. <strong>市场哲学与心态</strong></h3> +<ul> +<li><strong>市场如猎场</strong>:市场是一个狩猎场,投资者需要成为猎手,冷静观察市场,不被情绪左右。</li> +<li><strong>无喜好操作</strong>:投资者应避免对某只股票产生情感依赖,市场中的喜好往往是陷阱。</li> +<li><strong>理性与当下</strong>:理性是当下的实践,投资者应根据市场当下的走势进行操作,而不是依赖预测。</li> +</ul> +<h3 id="2-技术分析基础">2. <strong>技术分析基础</strong></h3> +<ul> +<li><strong>走势类型</strong>:市场走势可以分为上涨、下跌和盘整三种类型。任何走势都可以分解为这三种基本类型的组合。</li> +<li><strong>中枢与趋势</strong>:中枢是走势的核心,趋势由至少两个同向的中枢构成。中枢的延伸、扩张和新生是判断走势变化的关键。</li> +<li><strong>背驰与转折</strong>:背驰是趋势转折的信号,通常出现在第二个中枢之后。背驰的出现意味着趋势可能反转。</li> +</ul> +<h3 id="3-买卖点分析">3. <strong>买卖点分析</strong></h3> +<ul> +<li><strong>三类买卖点</strong>: +<ol> +<li><strong>第一类买点</strong>:趋势背驰后的买点,通常出现在下跌趋势的末端。</li> +<li><strong>第二类买点</strong>:第一类买点后的回调低点,通常是趋势延续的信号。</li> +<li><strong>第三类买点</strong>:中枢突破后的回抽确认点,通常出现在趋势的延续或新趋势的开始。</li> +</ol> +</li> +<li><strong>买卖点的完备性</strong>:市场中的所有买卖点都可以归结为这三类买卖点,投资者应熟练掌握这三类买卖点的识别和操作。</li> +</ul> +<h3 id="4-资金管理与风险控制">4. <strong>资金管理与风险控制</strong></h3> +<ul> +<li><strong>主动带套</strong>:投资者应主动设置止损点,避免被动套牢。任何操作都应有一个明确的退出机制。</li> +<li><strong>资金管理</strong>:资金管理是投资的核心,投资者应根据市场情况合理分配资金,避免过度集中或分散。</li> +</ul> +<h3 id="5-macd与背驰判断">5. <strong>MACD与背驰判断</strong></h3> +<ul> +<li><strong>MACD辅助判断</strong>:MACD是判断背驰的重要工具,通过MACD的黄白线和红绿柱的变化,可以辅助判断趋势的背驰和转折。</li> +<li><strong>盘整背驰</strong>:盘整背驰通常出现在大级别走势中,尤其是周线以上的级别,往往预示着历史性的大底部。</li> +</ul> +<h3 id="6-市场风险与回避">6. <strong>市场风险与回避</strong></h3> +<ul> +<li><strong>市场风险的本质</strong>:市场风险最终都反映在价格波动上,投资者应通过技术分析来识别和控制风险。</li> +<li><strong>交易延续性</strong>:投资者应确保交易的延续性,避免因市场突然停止交易或政策变化导致的不可控风险。</li> +</ul> +<h3 id="7-操作策略与技巧">7. <strong>操作策略与技巧</strong></h3> +<ul> +<li><strong>短线与中线结合</strong>:投资者应根据市场走势灵活调整操作策略,短线操作可以增加资金利用率,中线操作则适合大资金。</li> +<li><strong>轮动与节奏</strong>:在牛市中,不同板块和个股会有轮动效应,投资者应把握市场节奏,及时调整持仓。</li> +</ul> +<h3 id="8-心态与修养">8. <strong>心态与修养</strong></h3> +<ul> +<li><strong>市场如人生</strong>:市场是修炼心态的最佳场所,投资者应通过市场磨练自己的贪婪与恐惧,最终达到自由与解脱的境界。</li> +<li><strong>技术与心态的结合</strong>:技术分析只是工具,真正的投资高手不仅要有精湛的技术,还要有良好的心态和修养。</li> +</ul> +<h3 id="9-大级别转折点的寻找">9. <strong>大级别转折点的寻找</strong></h3> +<ul> +<li><strong>区间套定理</strong>:通过不同级别的背驰段逐级收缩范围,可以精确找到大级别的转折点。这种方法适用于大资金的建仓和长线投资。</li> +</ul> +<h3 id="10-走势的级别与递归">10. <strong>走势的级别与递归</strong></h3> +<ul> +<li><strong>级别的重要性</strong>:走势的级别是技术分析的核心,不同级别的走势对应不同的操作策略。大级别走势(如日线、周线)决定大方向,小级别走势(如1分钟、5分钟)用于精确操作。</li> +<li><strong>递归分析</strong>:走势的级别是递归的,高级别的走势由低级别的走势构成。投资者应从大级别到小级别逐级分析,找到精确的买卖点。</li> +</ul> +<h3 id="11-中枢的延伸与扩张">11. <strong>中枢的延伸与扩张</strong></h3> +<ul> +<li><strong>中枢延伸</strong>:中枢的延伸是指中枢内部的波动不断重复,但没有形成新的中枢。延伸的中枢通常意味着市场处于盘整状态。</li> +<li><strong>中枢扩张</strong>:中枢扩张是指中枢的波动范围扩大,可能形成更大级别的中枢。扩张通常预示着市场可能进入新的趋势。</li> +</ul> +<h3 id="12-第三类买卖点的应用">12. <strong>第三类买卖点的应用</strong></h3> +<ul> +<li><strong>第三类买点</strong>:第三类买点出现在中枢突破后的回抽确认点,通常意味着趋势的延续或新趋势的开始。投资者应抓住第三类买点,避免错过趋势的延续。</li> +<li><strong>第三类卖点</strong>:第三类卖点出现在中枢跌破后的反弹确认点,通常意味着趋势的反转或结束。投资者应在第三类卖点及时离场,避免损失。</li> +</ul> +<h3 id="13-盘整背驰的应用">13. <strong>盘整背驰的应用</strong></h3> +<ul> +<li><strong>盘整背驰的意义</strong>:盘整背驰通常出现在大级别走势中,尤其是周线以上的级别。盘整背驰的出现往往预示着历史性的大底部或顶部。</li> +<li><strong>盘整背驰的判断</strong>:通过MACD的红绿柱面积和黄白线的变化,可以判断盘整背驰的出现。盘整背驰的判断需要结合走势的级别和位置。</li> +</ul> +<h3 id="14-趋势背驰与盘整背驰的区别">14. <strong>趋势背驰与盘整背驰的区别</strong></h3> +<ul> +<li><strong>趋势背驰</strong>:趋势背驰通常出现在趋势的末端,意味着趋势可能反转。趋势背驰的判断需要结合中枢的延伸和扩张。</li> +<li><strong>盘整背驰</strong>:盘整背驰通常出现在盘整的末端,意味着盘整可能结束,市场可能进入新的趋势。盘整背驰的判断需要结合MACD的变化。</li> +</ul> +<h3 id="15-大级别转折点的寻找">15. <strong>大级别转折点的寻找</strong></h3> +<ul> +<li><strong>区间套定理</strong>:通过不同级别的背驰段逐级收缩范围,可以精确找到大级别的转折点。这种方法适用于大资金的建仓和长线投资。</li> +<li><strong>精确转折点</strong>:通过从大级别到小级别的逐级分析,投资者可以找到精确的转折点,甚至精确到每一笔成交。</li> +</ul> +<h3 id="16-市场风险与回避">16. <strong>市场风险与回避</strong></h3> +<ul> +<li><strong>市场风险的本质</strong>:市场风险最终都反映在价格波动上,投资者应通过技术分析来识别和控制风险。</li> +<li><strong>交易延续性</strong>:投资者应确保交易的延续性,避免因市场突然停止交易或政策变化导致的不可控风险。</li> +</ul> +<h3 id="17-操作策略与技巧">17. <strong>操作策略与技巧</strong></h3> +<ul> +<li><strong>短线与中线结合</strong>:投资者应根据市场走势灵活调整操作策略,短线操作可以增加资金利用率,中线操作则适合大资金。</li> +<li><strong>轮动与节奏</strong>:在牛市中,不同板块和个股会有轮动效应,投资者应把握市场节奏,及时调整持仓。</li> +</ul> +<h3 id="18-心态与修养">18. <strong>心态与修养</strong></h3> +<ul> +<li><strong>市场如人生</strong>:市场是修炼心态的最佳场所,投资者应通过市场磨练自己的贪婪与恐惧,最终达到自由与解脱的境界。</li> +<li><strong>技术与心态的结合</strong>:技术分析只是工具,真正的投资高手不仅要有精湛的技术,还要有良好的心态和修养。</li> +</ul> +<h3 id="19-总结与展望">19. <strong>总结与展望</strong></h3> +<ul> +<li><strong>缠论的完备性</strong>:缠中说禅的理论是一个完备的技术分析体系,涵盖了市场走势的各个方面。投资者应通过不断实践和学习,逐步掌握这一理论,并在市场中灵活运用。</li> +</ul> +<hr> +<h3 id="关键概念">关键概念:</h3> +<ul> +<li><strong>中枢</strong>:走势的核心部分,由至少三个连续次级别走势类型重叠构成。</li> +<li><strong>背驰</strong>:趋势转折的信号,通常出现在第二个中枢之后。</li> +<li><strong>三类买卖点</strong>:第一类、第二类和第三类买卖点,分别对应不同的趋势转折和延续信号。</li> +<li><strong>MACD</strong>:辅助判断背驰的重要工具,通过黄白线和红绿柱的变化来判断趋势的强弱。</li> +</ul> +<hr> +<h3 id="核心要点">核心要点:</h3> +<ol> +<li><strong>市场哲学与心态</strong>:市场如猎场,投资者应冷静观察,避免情绪化操作。</li> +<li><strong>技术分析基础</strong>:走势分为上涨、下跌和盘整三种类型,中枢是走势的核心。</li> +<li><strong>买卖点分析</strong>:三类买卖点是操作的核心,投资者应熟练掌握其识别和应用。</li> +<li><strong>资金管理与风险控制</strong>:主动设置止损点,合理分配资金,避免过度集中或分散。</li> +<li><strong>MACD与背驰判断</strong>:MACD是辅助判断背驰的重要工具,通过黄白线和红绿柱的变化来判断趋势的强弱。</li> +<li><strong>走势的级别与递归</strong>:从大级别到小级别逐级分析,找到精确的买卖点。</li> +<li><strong>中枢的延伸与扩张</strong>:中枢的延伸和扩张是判断市场状态的重要依据。</li> +<li><strong>盘整背驰与趋势背驰</strong>:盘整背驰通常出现在大级别走势中,预示着历史性的大底部或顶部。</li> +<li><strong>大级别转折点的寻找</strong>:通过区间套定理,精确找到大级别的转折点。</li> +<li><strong>心态与修养</strong>:市场是修炼心态的最佳场所,技术与心态的结合是成功的关键。</li> +</ol> +<h3 id="整体总结">整体总结:</h3> +<p>《缠中说禅:教你炒股票108课》通过详细的技术分析和市场哲学,为投资者提供了一套完整的股票操作体系。书中强调理性操作、资金管理和风险控制,并通过大量的实例和图表,帮助投资者理解和掌握市场走势的变化规律。投资者应通过不断学习和实践,逐步提升自己的操作水平,最终在市场中实现稳定盈利。</p>GStreamer插件编写,引入TensorFlow模型https://openwit.net/posts/gstplugin/Wed, 25 Dec 2024 00:00:00 +0000https://openwit.net/posts/gstplugin/<p>最近有个调研性需求,在媒体服务器测引入机器学习相关模型进行降噪处理。为此编写了一个GStreamer插件用于降噪测试,采用开源模型,降噪效果不错,但是资源占用率较高,后续如果采用服务侧降噪需要进一步进行轻量化处理。 +有编写Gstreamer插件需求的同学可以参考。完整代码:<a href="https://github.com/ilei131/gst-plugin-tensorflow">https://github.com/ilei131/gst-plugin-tensorflow</a></p>缠中说禅笔记https://openwit.net/posts/czsc/Sun, 19 Feb 2023 00:00:00 +0000https://openwit.net/posts/czsc/<ol> +<li>而市场的波动,归根结底是在前后两个高低点 关系构成的一个完全分类中展开的,明白了这一点,市场就如同自己的掌纹一样举手可见了。</li> +<li>特别那些年线走平后向上出现拐点的股票,一定要看好了。至于还在年线下面的股票,先别看了,等他们上年线再说。</li> +<li>一只股票长起来千万别随意抛了,中线如果连三十天线都没跌破,证明走势很强,就要拿着。</li> +<li>有一个抛股票的原则,分两种情况,一种是缓慢推升的,一旦出现加速上涨,就要时刻注意出货的机会;另一种是第一波就火暴上涨,调整后第二波的上涨一旦出现背弛或放巨量的,一定要小心,找机会走人 。</li> +<li>上涨:最近一个高点比前一高点高,且最近一个低点比前一低点高。 +下跌:最近一个高点比前一高点低,且最近一个低点比前一低点低。 +盘整:最近一个高点比前一高点高,且最近一个低点比前一低点低;或者最近一个高点比前一高点低,且最近一个低点比前一低点高。</li> +<li>没有趋势,没有背驰。在盘整中是无所谓 “背驰” 的。</li> +<li>缠中说禅趋势力度:前一 “吻” 的结束与后一 “吻” 开始由短线均线与长期均线相交所形成的面积。在前后两个同向趋势中,当缠中说禅趋势力度比上一次缠中说禅趋势力度要弱,就形成 “背驰”。</li> +<li>一、首先只选择出现 “下跌 + 盘整 + 下跌” 走势的。二 、在该走势的第二段下跌出现第一类买点时介入。三、介入后,一旦出现盘整走势,坚决退出。</li> +<li>走势终完美。所有级别的走势都能分解成趋势与盘整。</li> +<li>牛市第一波涨的就是成分股,工行这最大的成分股不涨,还有谁涨?</li> +<li>所有情况都逃不过高位背驰卖,低位背驰买。</li> +<li>大跌,就把眼睛放大,去找会形成第三类买点的股票,这才是股票操作真正的节奏与思维。最好就是找有大级别第三类买点的强势股票(次级别不跌回中枢里面就是,但能不跌回最高点那自然是最强的)。选股票一 定要按技术来找,找有第三类买点的,或至少是刚从第三类买点起来的。</li> +<li>对于散户,根本没必须长期持有一只股票,那是大资金没办法的办法。对于散户,如果通道畅通的,最快的方法就是用第三类买点去操作,杀完一只继续一只,不断干下去,不参与任何的中枢震荡,只搞最强势的这才是散户该干的事情。持有到背驰卖点, 然后坚决走人,等待新的买点。</li> +<li>本 ID 所有介入的股票都不会走的,但一定会用震荡减低成本到 0 后继续增加筹 码。本 ID 介入一只股票,都是要至少持有两年以上的,甚至是天长地久,想快,就学好第三类买点,那是最快的。</li> +<li>长期投资,就是要在大级别买点介入 ,例如年线、季线、月线的买点,然后一直持有到大级别卖点再卖,这才是真正的长期投资。</li> +<li>不追高是投资第一要点。永远不追涨杀跌。没有股票是值得追高买的,当然也没必须杀跌卖股票。</li> +<li>一定要习惯于在放量突破回调时买股票,这样风险小很多。不要在以巨量大阴线构造顶部的下跌反抽中介入,这是投资最大忌。</li> +<li>新资金介入迹象:放量后有一个缩量站住的过程。</li> +<li>中线就是在周线级别上, 中短线指日线级别,短线指 30 分钟,超短指 5 分钟或 1 分钟的最小级别。短线是用来摊成本的,要挣大钱,关键是看中线。</li> +<li>开盘大幅度低开后,第一次次级别回拉不破顶或盘整背驰将构成最好的第二类卖点,这类卖点往往是突发事件中最好的逃命点。</li> +<li>个股,强者恒强在证券中表现明显,所以一直强调回调介入机会。</li> +<li>缠中说缠的 MACD 定律:第一类买点都是在 0 轴之下背驰形成的,第二类买点都是第一次上 0 轴后回抽确认形成的;卖点的情况就反过来。 第一次大洗盘让 MACD 日线第一次回拉 0 轴后一定要买回来。</li> +<li>跌,只能考虑买;涨,只能考虑卖。</li> +<li>精通本 ID 的理论后,涨跌的分别就消失了,在脑子里只有买点和卖点,没有什么涨跌,达到这种境界,就算初步有成了。</li> +</ol> +<p>阳胜进;阴胜出;小倍阳,大胆入。 +价板量缩,后劲不错;价板量平,可以跟进;价板量爆,赶快出逃。</p>银河麒麟制作deb安装包https://openwit.net/posts/kylindeb/Sun, 19 Feb 2023 00:00:00 +0000https://openwit.net/posts/kylindeb/<p>本篇记录一下银河麒麟制作deb安装包的主要步骤。 +制作安装包的命令很简单,以我近期的项目为例:</p> +<pre tabindex="0"><code>dpkg -b hsclient/ hsclient_1.0.0_arm64.deb +</code></pre><p>以上命令会将hsclient文件夹的内容制作成hsclient_1.0.0_arm64.deb安装包。制作时间取决于hsclient文件夹的大小。 +所以,主要工作量在于hsclient文件夹的准备。 +使用tree 命令查看hsclient目录结构如下: +<img src="https://openwit.net/img/hsclient.webp" alt=""> +可执行文件及相关依赖存放在HSClient目录,这里为了方便展示,我将里面的内容清空了,deb包安装完成后,可执行文件所在目录即为/opt/hbfec/HSClient。 +control 文件内容如下:</p> +<pre tabindex="0"><code>package: hsclient +version: 1.0.0 +architecture: arm64 +maintainer: hbfec +description: hsclient application +</code></pre><p>主要指定包名、版本号、系统架构、维护者、描述,根据实际情况填写即可。 +desktop 文件内容如下:</p> +<pre tabindex="0"><code>[Desktop Entry] +Name=HSClient +Name[zh_CN]=会商客户端 +Comment=HSClient application +Exec=/opt/hbfec/HSClient/HSClient +Icon=/usr/share/icons/hsclient.png +Terminal=false +Type=Application +Categories=Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http; +StartupNotify=true +</code></pre><p>主要指定可执行文件相关配置:名称、可执行文件路径、图标、应用类型等。 +程序图标这块没有固定的实现。简单实现,就放在/usr/share/icons目录下即可,推荐48*48大小,desktop中需要写绝对路径Icon=/usr/share/icons/hsclient.png。完整实现的话,icons目录下需要创建hicolor目录、kylin-icon-theme目录以及 kylin-icon-theme-one目录,目录下都需要放置对应大小的图片,desktop中可以直接写文件名Icon=hsclient,可参考已安装的其他应用程序。</p> +<p>以上内容都准备好以后,就可以通过文章开始处提到的命令制作安装包了。 +需要指出的是,在DEBIAN目录中至少要有control文件,还可以有preinst(preinstallation)、postinst(postinstallation)、prerm(preremove)、postrm(postremove)、copyright(版权)、changlog(修订记录)和conffiles等。 +具体作用如下:</p> +<pre tabindex="0"><code>preinst 文件:解包前运行的脚本。 +postinst 文件:解包完成并将目录文件拷贝到系统后,所需要执行的配置工作。 +prerm 文件:软件卸载前需要执行的脚本。 +postrm 文件:软件卸载后需要执行的脚本。 +control 文件:描述软件包的名称(Package),版本(Version),描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。 +</code></pre><p>银河麒麟下制作deb安装包涉及的主要内容就是这些,希望可以帮到有需要的人。</p>实现Android WebRTC支持H265https://openwit.net/posts/webrtc/Sun, 08 Jan 2023 00:00:00 +0000https://openwit.net/posts/webrtc/<p>谷歌的WebRTC,默认不支持H265,好在网上有开源的实现,但是想要传输层支持H265需要重新编译生成libjingle_peerconnection_so.so。本篇主要记录一下编译过程。<a href="https://github.com/open-webrtc-toolkit/owt-client-native">项目github地址:https://github.com/open-webrtc-toolkit/owt-client-native</a> +自己通过虚拟机安装Ubuntu18.04并翻墙,无论如何都无法编译成功,无奈,购买了1个月香港云主机,编译成功! +假设当前路径为/home/zhanggf</p> +<h2 id="1-下载代码">1. 下载代码</h2> +<pre tabindex="0"><code>git clone https://github.com/open-webrtc-toolkit/owt-client-native.git +</code></pre><p>下载完成后,将目录重命名为 src</p> +<pre tabindex="0"><code>mv owt-client-native src +</code></pre><h2 id="2-下载-depot_tools">2. 下载 depot_tools</h2> +<pre tabindex="0"><code>git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +</code></pre><p>下载完成后,设置 PATH</p> +<pre tabindex="0"><code>export PATH=$PATH:/home/zhanggf/depot_tools +</code></pre><h2 id="3-创建gclient">3. 创建.gclient</h2> +<pre tabindex="0"><code>vi .gclient +</code></pre><p>将以下内容复制到文件中并保存:</p> +<pre tabindex="0"><code>solutions = [ + { + &#34;managed&#34;: False, + &#34;name&#34;: &#34;src&#34;, + &#34;url&#34;: &#34;https://github.com/open-webrtc-toolkit/owt-client-native.git&#34;, + &#34;custom_deps&#34;: {}, + &#34;deps_file&#34;: &#34;DEPS&#34;, + &#34;safesync_url&#34;: &#34;&#34;, + }, +] +target_os = [&#34;android&#34;] +</code></pre><h2 id="4gclient-sync">4.gclient sync</h2> +<p>进入src目录,执行gclient sync。</p> +<pre tabindex="0"><code>cd src +gclient sync +</code></pre><p>后面就是漫长的等待,视网速情况,需要1-n个小时吧。</p> +<h2 id="5-编译">5. 编译</h2> +<p>进入/src/scripts 目录,执行python build_android.py开始编译。</p> +<pre tabindex="0"><code>cd /src/scripts +python build_android.py +</code></pre><p>全部编译完成大概1小时左右吧。</p> +<h2 id="6out">6.out</h2> +<p>最终生成的目标文件在src/out路径下,包括libwebrtc.jar和对应版本的libjingle_peerconnection_so.so。替换当前项目中的相关文件,恭喜,你的WebRTC项目已经支持H265硬编码了。</p> +<p>最后,编译成果放在了github,有需要的自取。<a href="https://github.com/ilei131/android_webrtc_h265">github链接</a></p>Mac设备问题及解决方法记录https://openwit.net/posts/deviceproblem/Sat, 19 Nov 2022 00:00:00 +0000https://openwit.net/posts/deviceproblem/<h2 id="macos-wifi连接后显示叹号">MacOS Wifi连接后显示叹号</h2> +<h3 id="现象">现象:</h3> +<p>连接多个 wifi 后,系统右上角 wifi 标识均显示叹号。</p> +<h3 id="解决方法">解决方法:</h3> +<p>进入 /Library/Preferences/SystemConfiguration 目录,将所有文件删除,重启系统,重新连接 wifi。</p> +<h2 id="ios设备连接mac电脑后频繁弹窗是否信任">iOS设备连接Mac电脑后频繁弹窗(是否信任)</h2> +<h3 id="现象-1">现象:</h3> +<p>将 iPad 或者 iPhone 连接Mac电脑后,设备频繁弹窗提示是否信任该电脑,无法点击信任或者不信任。</p> +<h3 id="解决方法-1">解决方法:</h3> +<p>打开终端,输入命令:</p> +<pre tabindex="0"><code>sudo killall -STOP -c usbd +</code></pre><p>然后输入电脑开机密码,再次连接设备与电脑,设备再次弹窗后点击信任即可。</p>Markdown 新手指南https://openwit.net/posts/markdown/Thu, 10 Nov 2022 00:00:00 +0000https://openwit.net/posts/markdown/<h2 id="标题">标题</h2> +<p>这是最为常用的格式,只需要在文本前面加上 # 即可,同理、你还可以增加二级标题、三级标题、四级标题、五级标题和六级标题,总共六级,只需要增加 # 即可,标题字号相应降低。例如:</p> +<pre tabindex="0"><code># 一级标题 +## 二级标题 +### 三级标题 +#### 四级标题 +##### 五级标题 +###### 六级标题 +</code></pre><p>注:# 和「标题」之间建议保留一个字符的空格,这是最标准的 Markdown 写法。 +效果如下:</p> +<h1 id="一级标题">一级标题</h1> +<h2 id="二级标题">二级标题</h2> +<h3 id="三级标题">三级标题</h3> +<h4 id="四级标题">四级标题</h4> +<h5 id="五级标题">五级标题</h5> +<h6 id="六级标题">六级标题</h6> +<h2 id="列表">列表</h2> +<p>列表格式也很常用,只需要在文字前面加上 - 就可以了,例如:</p> +<pre tabindex="0"><code>- 文本1 +- 文本2 +- 文本3 +</code></pre><p>如果你希望有序列表, +也可以在文字前面加上 1. 2. 3. 就可以了,例如:</p> +<pre tabindex="0"><code>1. 文本1 +2. 文本2 +3. 文本3 +</code></pre><p>注:- 和 1. 与后面文本之间要保留一个字符的空格。 +效果如下:</p> +<ul> +<li>文本 1</li> +<li>文本 2</li> +<li>文本 3</li> +</ul> +<ol> +<li>文本1</li> +<li>文本2</li> +<li>文本3</li> +</ol> +<h2 id="链接和图片">链接和图片</h2> +<p>在 Markdown 中插入链接,你只需要使用 <code>[显示文本](链接地址)</code> 这样的语法即可,例如:</p> +<pre tabindex="0"><code>[菜鸟教程](https://www.runoob.com/) +</code></pre><p>在 Markdown 中插入图片,你只需要使用 <code>![显示文本](图片链接地址)</code> 这样的语法即可,例如:</p>Privacy Policyhttps://openwit.net/posts/privacypolicy/Thu, 10 Nov 2022 00:00:00 +0000https://openwit.net/posts/privacypolicy/<p>We respect and protect the personal privacy of all users of the service. In order to provide you with more accurate and personalized services, this app will use and disclose your personal information in accordance with the provisions of this privacy policy. However, this application will treat such information with a high degree of diligence and prudence. Unless otherwise specified in this privacy policy, this app will not disclose such information to the public or provide it to a third party without your prior permission. This application will update this privacy policy from time to time. When you agree to this application service use agreement, you will be deemed to have agreed to all the contents of this privacy policy. This privacy policy is an integral part of this application service use agreement.</p>隐私政策https://openwit.net/posts/yszc/Thu, 10 Nov 2022 00:00:00 +0000https://openwit.net/posts/yszc/<p>我们尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。</p> +<h2 id="1适用范围">1.适用范围</h2> +<ul> +<li>(a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息;</li> +<li>(b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的 IP 地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;</li> +<li>(c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。 +您了解并同意,以下信息不适用本隐私权政策:</li> +<li>(a) 您在使用本应用平台提供的搜索服务时输入的关键字信息;</li> +<li>(b) 本应用收集到的您在本应用发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;</li> +<li>(c) 违反法律规定或违反本应用规则行为及本应用已对您采取的措施。</li> +</ul> +<h2 id="2信息使用">2.信息使用</h2> +<ul> +<li>(a) 本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息。</li> +<li>(b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。</li> +<li>(c) FaceID 仅用于快速解锁程序,本应用不会收集您的 FaceID 数据。</li> +</ul> +<h2 id="3信息披露">3.信息披露</h2> +<p>在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:</p> +<ul> +<li>(a) 经您事先同意,向第三方披露;</li> +<li>(b) 为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;</li> +<li>(c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;</li> +<li>(d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露;</li> +<li>(e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;</li> +<li>(f) 在本应用平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本应用有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。</li> +<li>(g) 其它本应用根据法律、法规或者网站政策认为合适的披露。</li> +</ul> +<h2 id="4信息存储和交换">4.信息存储和交换</h2> +<p>本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。</p> +<h2 id="5cookie-的使用">5.Cookie 的使用</h2> +<ul> +<li>(a) 在您未拒绝接受 cookies 的情况下,本应用会在您的计算机上设定或取用 cookies ,以便您能登录或使用依赖于 cookies 的本应用平台服务或功能。本应用使用 cookies 可为您提供更加周到的个性化服务,包括推广服务。</li> +<li>(b) 您有权选择接受或拒绝接受 cookies。您可以通过修改浏览器设置的方式拒绝接受 cookies。但如果您选择拒绝接受 cookies,则您可能无法登录或使用依赖于 cookies 的本应用网络服务或功能。</li> +<li>(c) 通过本应用所设 cookies 所取得的有关信息,将适用本政策。</li> +</ul> +<h2 id="6信息安全">6.信息安全</h2> +<ul> +<li>(a) 本应用帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本应用将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在 “完善的安全措施”。</li> +<li>(b) 在使用本应用网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对</li> +</ul> +<h2 id="7-本隐私政策的更改">7. 本隐私政策的更改</h2> +<ul> +<li>(a) 如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。</li> +<li>(b) 本公司保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。</li> +</ul><link>https://openwit.net/posts/czsc_mmd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openwit.net/posts/czsc_mmd/</guid><description><h2 id="如何有效判断缠论中的三类买卖点">如何有效判断缠论中的三类买卖点</h2> +<p>缠论中的三类买卖点是技术分析的核心,也是投资者进行操作的重要依据。准确判断买卖点需要深入理解缠论的基本概念,并结合多级别走势进行综合分析。以下是判断三类买卖点的详细方法:</p> +<h3 id="一--第一类买卖点背驰点">一、 第一类买卖点:背驰点</h3> +<p><strong>1. 定义:</strong></p> +<ul> +<li><strong>第一类买点:</strong> 某级别趋势的背驰点,是该趋势最后一个中枢下方出现的买点,标志着该趋势的结束和反转。</li> +<li><strong>第一类卖点:</strong> 某级别趋势的背驰点,是该趋势最后一个中枢上方出现的卖点,标志着该趋势的结束和反转。</li> +</ul> +<p><strong>2. 判断方法:</strong></p> +<ul> +<li> +<p><strong>识别趋势:</strong></p> +<ul> +<li>首先,需要明确当前走势处于何种趋势(上涨趋势或下跌趋势)。 +<ul> +<li><strong>上涨趋势:</strong> 高点不断抬高,低点也不断抬高。</li> +<li><strong>下跌趋势:</strong> 低点不断降低,高点也不断降低。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>识别中枢:</strong></p> +<ul> +<li>找到当前趋势中最后一个中枢。 +<ul> +<li><strong>中枢:</strong> 某级别走势类型中,被至少三个连续次级别走势类型重叠的部分。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>识别背驰:</strong></p> +<ul> +<li> +<p><strong>比较力度:</strong> 比较当前趋势与前一个同向趋势的力度,判断是否存在背驰。</p> +<ul> +<li><strong>趋势力度:</strong> 可以通过以下几种方式衡量: +<ul> +<li><strong>MACD 指标:</strong> 观察MACD红绿柱面积或黄白线的斜率。 +<ul> +<li>例如,在上涨趋势中,如果当前上涨段对应的MACD红柱面积小于前一个上涨段,则可能存在顶背驰。</li> +</ul> +</li> +<li><strong>均线系统:</strong> 观察短期均线与长期均线的距离变化。 +<ul> +<li>例如,在上涨趋势中,如果短期均线与长期均线的距离逐渐缩小,则可能存在顶背驰。</li> +</ul> +</li> +<li><strong>K线形态:</strong> 观察上涨或下跌的力度变化。 +<ul> +<li>例如,在上涨趋势中,如果出现上涨乏力,K线实体变小,上影线变长,则可能存在顶背驰。</li> +</ul> +</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>区间套验证:</strong> 利用区间套方法,将背驰的判断从大级别逐步细化到小级别,提高判断的准确性。</p> +<ul> +<li>例如,在日线级别发现顶背驰后,可以切换到30分钟、5分钟等更小级别图,观察是否存在更明显的背驰信号。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>确认买卖点:</strong></p> +<ul> +<li>一旦确认背驰成立,则可以判断第一类买卖点出现。 +<ul> +<li><strong>第一类买点:</strong> 出现在下跌趋势最后一个中枢下方。</li> +<li><strong>第一类卖点:</strong> 出现在上涨趋势最后一个中枢上方。</li> +</ul> +</li> +</ul> +</li> +</ul> +<p><strong>3. 注意事项:</strong></p> +<ul> +<li><strong>背驰不一定导致趋势反转:</strong> 背驰只是趋势反转的必要条件,而非充分条件。背驰后可能进入盘整,也可能形成更大级别的中枢。</li> +<li><strong>结合其他指标:</strong> 可以结合其他技术指标(如均线、成交量等)进行综合判断,提高准确性。</li> +</ul> +<h3 id="二--第二类买卖点回抽确认点">二、 第二类买卖点:回抽确认点</h3> +<p><strong>1. 定义:</strong></p> +<ul> +<li><strong>第二类买点:</strong> 第一类买点出现后,次级别走势回抽确认的结束点。</li> +<li><strong>第二类卖点:</strong> 第一类卖点出现后,次级别走势反抽确认的结束点。</li> +</ul> +<p><strong>2. 判断方法:</strong></p> +<ul> +<li> +<p><strong>确认第一类买卖点:</strong></p> +<ul> +<li>首先,需要确认第一类买卖点的出现。</li> +</ul> +</li> +<li> +<p><strong>观察次级别走势:</strong></p> +<ul> +<li>切换到次级别图(例如,第一类买卖点出现在日线级别,则切换到30分钟图),观察次级别走势的回抽或反抽情况。 +<ul> +<li><strong>回抽/反抽:</strong> 次级别走势对第一类买卖点位置的回调或反弹。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>识别结束点:</strong></p> +<ul> +<li><strong>第二类买点:</strong> 当次级别走势的回抽结束后,再次探底不创新低或出现盘整背驰,则第二类买点出现。 +<ul> +<li>例如,在30分钟图上,如果第一类买点出现后,30分钟走势回抽结束,再次下跌不创新低,则第二类买点出现。</li> +</ul> +</li> +<li><strong>第二类卖点:</strong> 当次级别走势的反抽结束后,再次冲高不创新高或出现盘整背驰,则第二类卖点出现。 +<ul> +<li>例如,在30分钟图上,如果第一类卖点出现后,30分钟走势反抽结束,再次上涨不创新高,则第二类卖点出现。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>确认买卖点:</strong></p></description></item><item><title/><link>https://openwit.net/posts/czsc_qjt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openwit.net/posts/czsc_qjt/</guid><description><h2 id="如何利用区间套方法精确定位买卖点">如何利用区间套方法精确定位买卖点</h2> +<p><strong>区间套方法</strong>是缠论中用于精确定位买卖点的重要工具,其核心思想是利用不同级别走势的嵌套关系,将买卖点的判断从大级别逐步细化到小级别,从而实现精确的定位。</p> +<h3 id="一--区间套方法的基本原理">一、 区间套方法的基本原理</h3> +<ol> +<li> +<p><strong>走势的递归性与自相似性:</strong></p> +<ul> +<li><strong>递归性:</strong> 任何级别的走势都可以分解为次级别走势类型的连接。例如,一个日线级别的走势可以分解为若干个30分钟级别的走势类型。</li> +<li><strong>自相似性:</strong> 不同级别的走势结构具有相似的形态特征。例如,一个日线级别的中枢与一个5分钟级别的中枢在形态上具有相似的特征。</li> +</ul> +<p>这种递归性和自相似性使得我们可以通过分析低级别走势来推断高级别走势的细节。</p> +</li> +<li> +<p><strong>区间套的逻辑:</strong></p> +<ul> +<li>当我们在一个较大级别(例如日线)上发现一个潜在的买卖点(例如背驰点)时,可以通过观察次级别(例如30分钟)走势来确认该买卖点的有效性。</li> +<li>如果次级别走势也出现了相应的买卖点信号(例如背驰),则可以进一步观察更次级别(例如5分钟)的走势来进一步确认。</li> +<li>通过这种逐级细化的方式,我们可以将买卖点的定位从大级别逐步精确到小级别,甚至精确到具体的K线或分笔成交。</li> +</ul> +</li> +</ol> +<h3 id="二--区间套方法的应用步骤">二、 区间套方法的应用步骤</h3> +<p>以下以<strong>背驰</strong>为例,说明如何利用区间套方法精确定位买卖点:</p> +<ol> +<li> +<p><strong>确定操作级别:</strong></p> +<ul> +<li>首先,根据自身资金量、操作风格等因素,确定一个合适的操作级别(例如日线级别)。</li> +</ul> +</li> +<li> +<p><strong>识别大级别买卖点:</strong></p> +<ul> +<li>在操作级别图上,利用技术指标(例如MACD)或其他分析方法,识别潜在的买卖点信号。 +<ul> +<li>例如,在日线图上,如果发现MACD出现顶背驰,则可能意味着日线级别的上涨趋势即将结束。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>切换到次级别图:</strong></p> +<ul> +<li>将分析切换到次级别图(例如30分钟图),观察次级别走势是否出现相应的买卖点信号。 +<ul> +<li>例如,在30分钟图上,观察MACD是否也出现顶背驰,以及该背驰是否发生在日线级别背驰的同一位置。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>进一步细化分析:</strong></p> +<ul> +<li>如果次级别图上也出现了买卖点信号,则可以进一步切换到更次级别图(例如5分钟图)进行更精细的分析。 +<ul> +<li>例如,在5分钟图上,观察MACD是否出现更明显的顶背驰信号,以及该背驰是否发生在30分钟级别背驰的同一位置。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>确认买卖点:</strong></p> +<ul> +<li>通过逐级细化的分析,如果不同级别图上都出现了相应的买卖点信号,并且这些信号相互印证,则可以确认买卖点的有效性。 +<ul> +<li>例如,如果日线、30分钟和5分钟图上都出现了顶背驰信号,并且这些信号发生在同一位置附近,则可以确认日线级别的顶背驰成立。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>执行操作:</strong></p> +<ul> +<li>一旦确认买卖点有效,则可以按照操作计划执行买卖操作。 +<ul> +<li>例如,在确认日线级别顶背驰后,可以选择卖出股票。</li> +</ul> +</li> +</ul> +</li> +</ol> +<h3 id="三--区间套方法的应用示例">三、 区间套方法的应用示例</h3> +<p><strong>示例:利用区间套方法定位日线级别的第一类卖点</strong></p> +<ol> +<li> +<p><strong>日线图分析:</strong></p> +<ul> +<li>观察日线图,发现MACD出现顶背驰迹象。 +<ul> +<li>股价创新高,但MACD红柱面积减小,黄白线未能创新高。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>30分钟图分析:</strong></p> +<ul> +<li>切换到30分钟图,观察MACD是否也出现顶背驰。 +<ul> +<li>如果30分钟图上也出现顶背驰,并且该背驰发生在日线级别背驰的同一位置附近,则进一步确认日线级别顶背驰的可能性。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>5分钟图分析:</strong></p> +<ul> +<li>进一步切换到5分钟图,观察MACD是否出现更明显的顶背驰信号。 +<ul> +<li>如果5分钟图上出现更明显的顶背驰信号,并且该背驰发生在30分钟级别背驰的同一位置附近,则可以确认日线级别的顶背驰成立。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>执行操作:</strong></p> +<ul> +<li>一旦确认日线级别顶背驰成立,则可以选择卖出股票。</li> +</ul> +</li> +</ol> +<h3 id="四--注意事项">四、 注意事项</h3> +<ul> +<li><strong>结合其他分析方法:</strong> 区间套方法并非万能,需要结合其他技术指标(如均线、成交量等)和基本面分析进行综合判断。</li> +<li><strong>关注市场环境:</strong> 不同市场环境下,走势的强度和节奏会有所不同,需要根据实际情况调整操作策略。</li> +<li><strong>控制风险:</strong> 任何分析方法都无法保证100%的准确性,需要做好风险控制,设置止损位,避免因判断失误造成重大损失。</li> +</ul> +<h3 id="五--总结">五、 总结</h3> +<p>区间套方法是一种强大的工具,可以帮助投资者更精确地定位买卖点,提高操作的准确性。但需要注意的是:</p> +<ul> +<li><strong>熟练掌握理论:</strong> 深入理解缠论的基本概念和原理,是运用区间套方法的前提。</li> +<li><strong>多练习,多实践:</strong> 不断在实战中应用和总结,才能真正掌握区间套方法的精髓。</li> +<li><strong>保持理性:</strong> 避免过度依赖技术分析,要结合市场环境和其他因素进行综合判断。</li> +</ul> +<p>通过不断学习和实践,投资者可以逐步提高运用区间套方法的能力,从而在股市中实现更精准的操作和更稳定的收益。</p></description></item><item><title>About Mehttps://openwit.net/about/Mon, 01 Jan 0001 00:00:00 +0000https://openwit.net/about/<p>尘世中一个迷途小书童</p> +<ul> +<li><a href="https://github.com/ilei131">github.com/ilei131</a></li> +<li><a href="https://openwit.net">openwit.net</a></li> +</ul>Archiveshttps://openwit.net/archives/Mon, 01 Jan 0001 00:00:00 +0000https://openwit.net/archives/archives \ No newline at end of file diff --git a/instagram.svg b/instagram.svg new file mode 100644 index 0000000..09117ea --- /dev/null +++ b/instagram.svg @@ -0,0 +1 @@ + diff --git a/linkedin.svg b/linkedin.svg new file mode 100644 index 0000000..d02bed3 --- /dev/null +++ b/linkedin.svg @@ -0,0 +1 @@ + diff --git a/main.min.css b/main.min.css new file mode 100644 index 0000000..a55de2a --- /dev/null +++ b/main.min.css @@ -0,0 +1 @@ +*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}:root{--w:calc(680px + 32px * 2)}body{min-height:100vh;background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}body:is(.dark *)::before{position:fixed;inset:0;content:var(--tw-content);background-color:rgb(0 0 0/.85)}h1,h2,h3{font-weight:600!important}pre{direction:ltr}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=As]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=as]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=Is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px rgb(var(--tw-prose-kbd-shadows)/10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0 / 50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-neutral{--tw-prose-body:#404040;--tw-prose-headings:#171717;--tw-prose-lead:#525252;--tw-prose-links:#171717;--tw-prose-bold:#171717;--tw-prose-counters:#737373;--tw-prose-bullets:#d4d4d4;--tw-prose-hr:#e5e5e5;--tw-prose-quotes:#171717;--tw-prose-quote-borders:#e5e5e5;--tw-prose-captions:#737373;--tw-prose-kbd:#171717;--tw-prose-kbd-shadows:23 23 23;--tw-prose-code:#171717;--tw-prose-pre-code:#e5e5e5;--tw-prose-pre-bg:#262626;--tw-prose-th-borders:#d4d4d4;--tw-prose-td-borders:#e5e5e5;--tw-prose-invert-body:#d4d4d4;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#a3a3a3;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#a3a3a3;--tw-prose-invert-bullets:#525252;--tw-prose-invert-hr:#404040;--tw-prose-invert-quotes:#f5f5f5;--tw-prose-invert-quote-borders:#404040;--tw-prose-invert-captions:#a3a3a3;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d4d4d4;--tw-prose-invert-pre-bg:rgb(0 0 0 / 50%);--tw-prose-invert-th-borders:#525252;--tw-prose-invert-td-borders:#404040}.btn{border-radius:.75rem;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity));padding-left:1.25rem;padding-right:1.25rem;padding-top:.75rem;padding-bottom:.75rem;font-size:.95em;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));text-decoration-line:none;transition-duration:100ms}.btn:active{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.btn:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.link{transition-duration:200ms}.link:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.link:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-8{left:2rem;right:2rem}.bottom-20{bottom:5rem}.top-0{top:0}.top-full{top:100%}.z-40{z-index:40}.z-50{z-index:50}.\!my-0{margin-top:0!important;margin-bottom:0!important}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.ml-auto{margin-left:auto}.mr-auto{margin-right:auto}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-24{margin-top:6rem}.mt-3{margin-top:.75rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.h-24{height:6rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-\[4\.5rem\]{height:4.5rem}.h-full{height:100%}.min-h-\[calc\(100\%-9rem\)\]{min-height:calc(100% - 9rem)}.w-24{width:6rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-\[5rem\]{width:5rem}.w-full{width:100%}.max-w-\[--w\]{max-width:var(--w)}.shrink-0{flex-shrink:0}.-translate-y-\[1px\]{--tw-translate-y:-1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-2\.5{gap:.625rem}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.break-words{overflow-wrap:break-word}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border-\[0\.5px\]{border-width:.5px}.border-black\/10{border-color:rgb(0 0 0/.1)}.\!bg-black\/5{background-color:rgb(0 0 0/5%)!important}.bg-black\/\[3\%\]{background-color:rgb(0 0 0/3%)}.bg-white\/50{background-color:rgb(255 255 255/.5)}.p-3{padding:.75rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.pb-16{padding-bottom:4rem}.pb-2\.5{padding-bottom:.625rem}.pl-3{padding-left:.75rem}.pt-14{padding-top:3.5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-9xl{font-size:8rem;line-height:1}.text-\[0\]{font-size:0}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.\!leading-\[1\.2\]{line-height:1.2!important}.leading-\[5rem\]{line-height:5rem}.tracking-wider{letter-spacing:.05em}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-60{opacity:.6}.duration-200{transition-duration:200ms}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.not-ready *{transition-property:none!important}.prose{overflow-wrap:break-word}.prose kbd:has(kbd){--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.btn-menu::before,.btn-menu::after{display:block;height:2px;width:1.25rem;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity));transition-duration:200ms;--tw-content:'';content:var(--tw-content)}.btn-menu:is(.dark *)::before,.btn-menu:is(.dark *)::after{--tw-invert:invert(100%);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.nav-wrapper{background:var(--bg)}.open{overflow:hidden}.open .btn-menu::before{width:1.5rem;--tw-translate-y:5.5px;--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.open .btn-menu::after{width:1.5rem;--tw-translate-y:-5.5px;--tw-rotate:-45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.open .nav-wrapper{top:0}article{font-size:1.125rem;line-height:1.75rem;line-height:1.8;--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}article:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}article code{display:inline-block;font-size:.875rem!important;line-height:1.5rem!important}article .highlight{margin-top:2rem;margin-bottom:2rem;pre { margin-top: 0px; margin-bottom: 0px; } > div { border-radius: 0.375rem; } > div { background-color: var(--tw-prose-pre-bg); } > div { table { margin-top: 0px; margin-bottom: 0px; } table { table-layout: fixed; } table { tr { display: flex; } tr { td { padding: 0px; } td { pre { background-color: transparent !important; } } &:first-of-type pre { padding-right: 4px; } &:first-of-type pre { code span { margin-right: 0px !important; } code span { display: block; } code span { min-width: 18px; } code span { padding: 0px !important; } code span { text-align: right; } code span { color: rgb(255 255 255 / 0.4); } } &:last-of-type { overflow: auto; } } } }}.\[background\:url\(\.\/theme\.png\)_left_center\/_auto_theme\(\'spacing\.6\'\)_no-repeat\]{background:url(./theme.png)0/auto 1.5rem no-repeat}.\[background\:url\(\.\/theme\.svg\)_left_center\/cover_no-repeat\]{background:url(./theme.svg)0/cover no-repeat}.\[background\:var\(--url\)_center_center\/cover_no-repeat\]{background:var(--url)50%/cover no-repeat}.\[transition\:_background-position_0\.4s_steps\(5\)\]{transition:background-position .4s steps(5)}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.\*\:flex>*{display:flex}.\*\:w-1\/2>*{width:50%}.\*\:items-center>*{align-items:center}.\*\:p-5>*{padding:1.25rem}.\*\:font-medium>*{font-weight:500}.\*\:no-underline>*{text-decoration-line:none}.first-of-type\:mt-0:first-of-type{margin-top:0}.last-of-type\:mb-0:last-of-type{margin-bottom:0}@keyframes spin{to{transform:rotate(360deg)}}.hover\:animate-spin:hover{animation:spin 1s linear infinite}.hover\:bg-black\/\[6\%\]:hover{background-color:rgb(0 0 0/6%)}.dark\:\!bg-black\/80:is(.dark *){background-color:rgb(0 0 0/.8)!important}.dark\:\!bg-white\/90:is(.dark *){background-color:rgb(255 255 255/.9)!important}.dark\:bg-black:is(.dark *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.dark\:bg-white\/\[8\%\]:is(.dark *){background-color:rgb(255 255 255/8%)}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:invert:is(.dark *){--tw-invert:invert(100%);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.dark\:\[background-position\:right\]:is(.dark *){background-position:100%}.dark\:hover\:bg-white\/\[12\%\]:hover:is(.dark *){background-color:rgb(255 255 255/12%)}@media(min-width:1024px){.lg\:static{position:static}.lg\:ml-12{margin-left:3rem}.lg\:mt-0{margin-top:0}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-6{height:1.5rem}.lg\:h-auto{height:auto}.lg\:w-6{width:1.5rem}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-center{justify-content:center}.lg\:space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:\!bg-transparent{background-color:initial!important}.lg\:pb-0{padding-bottom:0}.lg\:text-base{font-size:1rem;line-height:1.5rem}.lg\:font-normal{font-weight:400}.lg\:transition-none{transition-property:none}}.ltr\:-ml-1:where([dir=ltr],[dir=ltr] *){margin-left:-.25rem}.ltr\:-mr-8:where([dir=ltr],[dir=ltr] *){margin-right:-2rem}.ltr\:ml-1\.5:where([dir=ltr],[dir=ltr] *){margin-left:.375rem}.ltr\:ml-4:where([dir=ltr],[dir=ltr] *){margin-left:1rem}.ltr\:ml-auto:where([dir=ltr],[dir=ltr] *){margin-left:auto}.ltr\:mr-1\.5:where([dir=ltr],[dir=ltr] *){margin-right:.375rem}.ltr\:mr-5:where([dir=ltr],[dir=ltr] *){margin-right:1.25rem}.ltr\:mr-auto:where([dir=ltr],[dir=ltr] *){margin-right:auto}.ltr\:pr-3:where([dir=ltr],[dir=ltr] *){padding-right:.75rem}@media(min-width:1024px){.ltr\:lg\:ml-14:where([dir=ltr],[dir=ltr] *){margin-left:3.5rem}.ltr\:lg\:ml-12:where([dir=ltr],[dir=ltr] *){margin-left:3rem}}.rtl\:-ml-8:where([dir=rtl],[dir=rtl] *){margin-left:-2rem}.rtl\:-mr-1:where([dir=rtl],[dir=rtl] *){margin-right:-.25rem}.rtl\:ml-1\.5:where([dir=rtl],[dir=rtl] *){margin-left:.375rem}.rtl\:ml-5:where([dir=rtl],[dir=rtl] *){margin-left:1.25rem}.rtl\:ml-auto:where([dir=rtl],[dir=rtl] *){margin-left:auto}.rtl\:mr-1\.5:where([dir=rtl],[dir=rtl] *){margin-right:.375rem}.rtl\:mr-4:where([dir=rtl],[dir=rtl] *){margin-right:1rem}.rtl\:mr-auto:where([dir=rtl],[dir=rtl] *){margin-right:auto}.rtl\:space-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.rtl\:pl-3:where([dir=rtl],[dir=rtl] *){padding-left:.75rem}@media(min-width:1024px){.rtl\:lg\:ml-14:where([dir=rtl],[dir=rtl] *){margin-left:3.5rem}.rtl\:lg\:mr-12:where([dir=rtl],[dir=rtl] *){margin-right:3rem}.rtl\:lg\:mr-14:where([dir=rtl],[dir=rtl] *){margin-right:3.5rem}}.\[\&\>\*\:hover\]\:bg-black\/\[2\%\]>*:hover{background-color:rgb(0 0 0/2%)}.dark\:\[\&\>\*\:hover\]\:bg-white\/\[3\%\]>*:hover:is(.dark *){background-color:rgb(255 255 255/3%)}.\[\&_svg\]\:m-auto svg{margin:auto}.\[\&_svg\]\:block svg{display:block} \ No newline at end of file diff --git a/mastodon.svg b/mastodon.svg new file mode 100644 index 0000000..996f58b --- /dev/null +++ b/mastodon.svg @@ -0,0 +1 @@ + diff --git a/openwit/index.html b/openwit/index.html new file mode 100644 index 0000000..b07514a --- /dev/null +++ b/openwit/index.html @@ -0,0 +1 @@ +https://openwit.net/about/ \ No newline at end of file diff --git a/page/1/index.html b/page/1/index.html new file mode 100644 index 0000000..6579f54 --- /dev/null +++ b/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/ \ No newline at end of file diff --git a/page/2/index.html b/page/2/index.html new file mode 100644 index 0000000..9db4793 --- /dev/null +++ b/page/2/index.html @@ -0,0 +1,12 @@ +Openwit

实现Android WebRTC支持H265

+实现Android WebRTC支持H265

Mac设备问题及解决方法记录

+Mac设备问题及解决方法记录

Markdown 新手指南

+Markdown 新手指南

Privacy Policy

+Privacy Policy

隐私政策

+隐私政策
\ No newline at end of file diff --git a/page/3/index.html b/page/3/index.html new file mode 100644 index 0000000..d17206f --- /dev/null +++ b/page/3/index.html @@ -0,0 +1,8 @@ +Openwit

+

+
\ No newline at end of file diff --git a/passworddisk/index.html b/passworddisk/index.html new file mode 100644 index 0000000..a010a4a --- /dev/null +++ b/passworddisk/index.html @@ -0,0 +1,46 @@ +PasswordDisk - Openwit

PasswordDisk

PasswordDisk 项目介绍

PasswordDisk 是一个安全的密码管理工具,帮助用户安全地存储和管理各种账号密码信息。

主要功能

  • 安全存储:使用加密技术保护密码信息
  • 密码生成:生成强密码,提高账号安全性
  • 分类管理:按类别组织密码信息,方便查找
  • 备份恢复:支持离线备份、恢复密码数据
  • 双重认证:支持2FA密码生成

技术特点

  • 加密存储:确保密码数据的安全性
  • 本地存储:密码数据存储在本地,减少云端风险
  • 多平台支持:支持 Windows、macOS
  • 开源透明:代码开源

如何使用

  1. 安装应用:从 GitHub 仓库下载对应平台的安装包
  2. 创建密码库:设置主密码,创建新的密码库
  3. 添加密码:添加账号密码信息,可设置分类和标签
  4. 使用密码:通过搜索或分类查找并使用密码

项目链接

安全建议

  • 使用强主密码,包含字母、数字和特殊字符
  • 定期备份密码库
  • 不在公共设备上使用

项目截图

截图 +截图

\ No newline at end of file diff --git a/posts/czsc/index.html b/posts/czsc/index.html new file mode 100644 index 0000000..8d8f96c --- /dev/null +++ b/posts/czsc/index.html @@ -0,0 +1,41 @@ +缠中说禅笔记 - Openwit

缠中说禅笔记

+· +openwit
  1. 而市场的波动,归根结底是在前后两个高低点 关系构成的一个完全分类中展开的,明白了这一点,市场就如同自己的掌纹一样举手可见了。
  2. 特别那些年线走平后向上出现拐点的股票,一定要看好了。至于还在年线下面的股票,先别看了,等他们上年线再说。
  3. 一只股票长起来千万别随意抛了,中线如果连三十天线都没跌破,证明走势很强,就要拿着。
  4. 有一个抛股票的原则,分两种情况,一种是缓慢推升的,一旦出现加速上涨,就要时刻注意出货的机会;另一种是第一波就火暴上涨,调整后第二波的上涨一旦出现背弛或放巨量的,一定要小心,找机会走人 。
  5. 上涨:最近一个高点比前一高点高,且最近一个低点比前一低点高。 +下跌:最近一个高点比前一高点低,且最近一个低点比前一低点低。 +盘整:最近一个高点比前一高点高,且最近一个低点比前一低点低;或者最近一个高点比前一高点低,且最近一个低点比前一低点高。
  6. 没有趋势,没有背驰。在盘整中是无所谓 “背驰” 的。
  7. 缠中说禅趋势力度:前一 “吻” 的结束与后一 “吻” 开始由短线均线与长期均线相交所形成的面积。在前后两个同向趋势中,当缠中说禅趋势力度比上一次缠中说禅趋势力度要弱,就形成 “背驰”。
  8. 一、首先只选择出现 “下跌 + 盘整 + 下跌” 走势的。二 、在该走势的第二段下跌出现第一类买点时介入。三、介入后,一旦出现盘整走势,坚决退出。
  9. 走势终完美。所有级别的走势都能分解成趋势与盘整。
  10. 牛市第一波涨的就是成分股,工行这最大的成分股不涨,还有谁涨?
  11. 所有情况都逃不过高位背驰卖,低位背驰买。
  12. 大跌,就把眼睛放大,去找会形成第三类买点的股票,这才是股票操作真正的节奏与思维。最好就是找有大级别第三类买点的强势股票(次级别不跌回中枢里面就是,但能不跌回最高点那自然是最强的)。选股票一 定要按技术来找,找有第三类买点的,或至少是刚从第三类买点起来的。
  13. 对于散户,根本没必须长期持有一只股票,那是大资金没办法的办法。对于散户,如果通道畅通的,最快的方法就是用第三类买点去操作,杀完一只继续一只,不断干下去,不参与任何的中枢震荡,只搞最强势的这才是散户该干的事情。持有到背驰卖点, 然后坚决走人,等待新的买点。
  14. 本 ID 所有介入的股票都不会走的,但一定会用震荡减低成本到 0 后继续增加筹 码。本 ID 介入一只股票,都是要至少持有两年以上的,甚至是天长地久,想快,就学好第三类买点,那是最快的。
  15. 长期投资,就是要在大级别买点介入 ,例如年线、季线、月线的买点,然后一直持有到大级别卖点再卖,这才是真正的长期投资。
  16. 不追高是投资第一要点。永远不追涨杀跌。没有股票是值得追高买的,当然也没必须杀跌卖股票。
  17. 一定要习惯于在放量突破回调时买股票,这样风险小很多。不要在以巨量大阴线构造顶部的下跌反抽中介入,这是投资最大忌。
  18. 新资金介入迹象:放量后有一个缩量站住的过程。
  19. 中线就是在周线级别上, 中短线指日线级别,短线指 30 分钟,超短指 5 分钟或 1 分钟的最小级别。短线是用来摊成本的,要挣大钱,关键是看中线。
  20. 开盘大幅度低开后,第一次次级别回拉不破顶或盘整背驰将构成最好的第二类卖点,这类卖点往往是突发事件中最好的逃命点。
  21. 个股,强者恒强在证券中表现明显,所以一直强调回调介入机会。
  22. 缠中说缠的 MACD 定律:第一类买点都是在 0 轴之下背驰形成的,第二类买点都是第一次上 0 轴后回抽确认形成的;卖点的情况就反过来。 第一次大洗盘让 MACD 日线第一次回拉 0 轴后一定要买回来。
  23. 跌,只能考虑买;涨,只能考虑卖。
  24. 精通本 ID 的理论后,涨跌的分别就消失了,在脑子里只有买点和卖点,没有什么涨跌,达到这种境界,就算初步有成了。

阳胜进;阴胜出;小倍阳,大胆入。 +价板量缩,后劲不错;价板量平,可以跟进;价板量爆,赶快出逃。

\ No newline at end of file diff --git a/posts/czsc108_deepseek/index.html b/posts/czsc108_deepseek/index.html new file mode 100644 index 0000000..dbdf1b0 --- /dev/null +++ b/posts/czsc108_deepseek/index.html @@ -0,0 +1,136 @@ +108课_DeepSeek - Openwit

请输入密码查看内容:

+
\ No newline at end of file diff --git a/posts/czsc108_hailuo/index.html b/posts/czsc108_hailuo/index.html new file mode 100644 index 0000000..da4b494 --- /dev/null +++ b/posts/czsc108_hailuo/index.html @@ -0,0 +1,149 @@ +108课_海螺AI - Openwit

请输入密码查看内容:

+
\ No newline at end of file diff --git a/posts/czsc_mmd/index.html b/posts/czsc_mmd/index.html new file mode 100644 index 0000000..350f975 --- /dev/null +++ b/posts/czsc_mmd/index.html @@ -0,0 +1,175 @@ +- Openwit

如何有效判断缠论中的三类买卖点

缠论中的三类买卖点是技术分析的核心,也是投资者进行操作的重要依据。准确判断买卖点需要深入理解缠论的基本概念,并结合多级别走势进行综合分析。以下是判断三类买卖点的详细方法:

一、 第一类买卖点:背驰点

1. 定义:

  • 第一类买点: 某级别趋势的背驰点,是该趋势最后一个中枢下方出现的买点,标志着该趋势的结束和反转。
  • 第一类卖点: 某级别趋势的背驰点,是该趋势最后一个中枢上方出现的卖点,标志着该趋势的结束和反转。

2. 判断方法:

  • 识别趋势:

    • 首先,需要明确当前走势处于何种趋势(上涨趋势或下跌趋势)。
      • 上涨趋势: 高点不断抬高,低点也不断抬高。
      • 下跌趋势: 低点不断降低,高点也不断降低。
  • 识别中枢:

    • 找到当前趋势中最后一个中枢。
      • 中枢: 某级别走势类型中,被至少三个连续次级别走势类型重叠的部分。
  • 识别背驰:

    • 比较力度: 比较当前趋势与前一个同向趋势的力度,判断是否存在背驰。

      • 趋势力度: 可以通过以下几种方式衡量:
        • MACD 指标: 观察MACD红绿柱面积或黄白线的斜率。
          • 例如,在上涨趋势中,如果当前上涨段对应的MACD红柱面积小于前一个上涨段,则可能存在顶背驰。
        • 均线系统: 观察短期均线与长期均线的距离变化。
          • 例如,在上涨趋势中,如果短期均线与长期均线的距离逐渐缩小,则可能存在顶背驰。
        • K线形态: 观察上涨或下跌的力度变化。
          • 例如,在上涨趋势中,如果出现上涨乏力,K线实体变小,上影线变长,则可能存在顶背驰。
    • 区间套验证: 利用区间套方法,将背驰的判断从大级别逐步细化到小级别,提高判断的准确性。

      • 例如,在日线级别发现顶背驰后,可以切换到30分钟、5分钟等更小级别图,观察是否存在更明显的背驰信号。
  • 确认买卖点:

    • 一旦确认背驰成立,则可以判断第一类买卖点出现。
      • 第一类买点: 出现在下跌趋势最后一个中枢下方。
      • 第一类卖点: 出现在上涨趋势最后一个中枢上方。

3. 注意事项:

  • 背驰不一定导致趋势反转: 背驰只是趋势反转的必要条件,而非充分条件。背驰后可能进入盘整,也可能形成更大级别的中枢。
  • 结合其他指标: 可以结合其他技术指标(如均线、成交量等)进行综合判断,提高准确性。

二、 第二类买卖点:回抽确认点

1. 定义:

  • 第二类买点: 第一类买点出现后,次级别走势回抽确认的结束点。
  • 第二类卖点: 第一类卖点出现后,次级别走势反抽确认的结束点。

2. 判断方法:

  • 确认第一类买卖点:

    • 首先,需要确认第一类买卖点的出现。
  • 观察次级别走势:

    • 切换到次级别图(例如,第一类买卖点出现在日线级别,则切换到30分钟图),观察次级别走势的回抽或反抽情况。
      • 回抽/反抽: 次级别走势对第一类买卖点位置的回调或反弹。
  • 识别结束点:

    • 第二类买点: 当次级别走势的回抽结束后,再次探底不创新低或出现盘整背驰,则第二类买点出现。
      • 例如,在30分钟图上,如果第一类买点出现后,30分钟走势回抽结束,再次下跌不创新低,则第二类买点出现。
    • 第二类卖点: 当次级别走势的反抽结束后,再次冲高不创新高或出现盘整背驰,则第二类卖点出现。
      • 例如,在30分钟图上,如果第一类卖点出现后,30分钟走势反抽结束,再次上涨不创新高,则第二类卖点出现。
  • 确认买卖点:

    • 一旦确认回抽或反抽结束,则可以判断第二类买卖点出现。

3. 注意事项:

  • 第二类买卖点不一定出现在中枢震荡中: 它可以出现在任何位置,包括中枢内部、中枢上方或下方。
  • 第二类买卖点与第一类买卖点可能重合: 当次级别走势回抽或反抽力度较弱时,第二类买卖点可能与第一类买卖点重合。

三、 第三类买卖点:中枢破坏点

1. 定义:

  • 第三类买点: 中枢上方,次级别走势离开中枢后回抽不重新回到中枢内形成的买点,标志着中枢的破坏和趋势的延续。
  • 第三类卖点: 中枢下方,次级别走势离开中枢后反抽不重新回到中枢内形成的卖点,标志着中枢的破坏和趋势的延续。

2. 判断方法:

  • 识别中枢:

    • 首先,需要明确当前走势处于哪个中枢的震荡中。
  • 观察次级别走势:

    • 切换到次级别图(例如,中枢出现在日线级别,则切换到30分钟图),观察次级别走势的离开和回抽/反抽情况。
      • 离开: 次级别走势突破中枢区间。
      • 回抽/反抽: 次级别走势对中枢的回调或反弹。
  • 确认买卖点:

    • 第三类买点: 当次级别走势离开中枢后,回抽不重新回到中枢内,则第三类买点出现。
      • 例如,在30分钟图上,如果30分钟走势突破日线中枢后,回抽不重新回到中枢内,则第三类买点出现。
    • 第三类卖点: 当次级别走势离开中枢后,反抽不重新回到中枢内,则第三类卖点出现。
      • 例如,在30分钟图上,如果30分钟走势跌破日线中枢后,反抽不重新回到中枢内,则第三类卖点出现。
  • 确认买卖点:

    • 一旦确认回抽或反抽不重新回到中枢内,则可以判断第三类买卖点出现。

3. 注意事项:

  • 第三类买卖点后不一定出现趋势: 第三类买卖点后也可能进入更大级别的中枢震荡。
  • 第三类买卖点与第一、二类买卖点可能重合: 当次级别走势离开中枢后,回抽或反抽力度较弱时,第三类买卖点可能与第二类买卖点重合,甚至与第一类买卖点重合。

四、 综合判断与操作策略

  • 多级别综合分析: 买卖点的判断需要结合不同级别的走势进行综合分析。例如,在判断日线级别的买卖点时,可以参考30分钟、5分钟等更小级别的走势。
  • 结合其他指标: 可以结合MACD、均线、成交量等指标进行辅助判断,提高准确性。
  • 制定操作计划: 在确认买卖点后,需要制定详细的操作计划,包括买入/卖出的价格、数量、止损位等。
  • 严格执行纪律: 严格按照操作计划执行,避免因情绪波动而做出错误的决策。

五、 总结

判断三类买卖点是缠论操作的核心,需要深入理解理论,并结合多级别走势进行综合分析。通过不断学习和实践,投资者可以逐步提高对买卖点的判断能力,从而在股市中实现更精准的操作和更稳定的收益。

\ No newline at end of file diff --git a/posts/czsc_qjt/index.html b/posts/czsc_qjt/index.html new file mode 100644 index 0000000..b4781e3 --- /dev/null +++ b/posts/czsc_qjt/index.html @@ -0,0 +1,191 @@ +- Openwit

如何利用区间套方法精确定位买卖点

区间套方法是缠论中用于精确定位买卖点的重要工具,其核心思想是利用不同级别走势的嵌套关系,将买卖点的判断从大级别逐步细化到小级别,从而实现精确的定位。

一、 区间套方法的基本原理

  1. 走势的递归性与自相似性:

    • 递归性: 任何级别的走势都可以分解为次级别走势类型的连接。例如,一个日线级别的走势可以分解为若干个30分钟级别的走势类型。
    • 自相似性: 不同级别的走势结构具有相似的形态特征。例如,一个日线级别的中枢与一个5分钟级别的中枢在形态上具有相似的特征。

    这种递归性和自相似性使得我们可以通过分析低级别走势来推断高级别走势的细节。

  2. 区间套的逻辑:

    • 当我们在一个较大级别(例如日线)上发现一个潜在的买卖点(例如背驰点)时,可以通过观察次级别(例如30分钟)走势来确认该买卖点的有效性。
    • 如果次级别走势也出现了相应的买卖点信号(例如背驰),则可以进一步观察更次级别(例如5分钟)的走势来进一步确认。
    • 通过这种逐级细化的方式,我们可以将买卖点的定位从大级别逐步精确到小级别,甚至精确到具体的K线或分笔成交。

二、 区间套方法的应用步骤

以下以背驰为例,说明如何利用区间套方法精确定位买卖点:

  1. 确定操作级别:

    • 首先,根据自身资金量、操作风格等因素,确定一个合适的操作级别(例如日线级别)。
  2. 识别大级别买卖点:

    • 在操作级别图上,利用技术指标(例如MACD)或其他分析方法,识别潜在的买卖点信号。
      • 例如,在日线图上,如果发现MACD出现顶背驰,则可能意味着日线级别的上涨趋势即将结束。
  3. 切换到次级别图:

    • 将分析切换到次级别图(例如30分钟图),观察次级别走势是否出现相应的买卖点信号。
      • 例如,在30分钟图上,观察MACD是否也出现顶背驰,以及该背驰是否发生在日线级别背驰的同一位置。
  4. 进一步细化分析:

    • 如果次级别图上也出现了买卖点信号,则可以进一步切换到更次级别图(例如5分钟图)进行更精细的分析。
      • 例如,在5分钟图上,观察MACD是否出现更明显的顶背驰信号,以及该背驰是否发生在30分钟级别背驰的同一位置。
  5. 确认买卖点:

    • 通过逐级细化的分析,如果不同级别图上都出现了相应的买卖点信号,并且这些信号相互印证,则可以确认买卖点的有效性。
      • 例如,如果日线、30分钟和5分钟图上都出现了顶背驰信号,并且这些信号发生在同一位置附近,则可以确认日线级别的顶背驰成立。
  6. 执行操作:

    • 一旦确认买卖点有效,则可以按照操作计划执行买卖操作。
      • 例如,在确认日线级别顶背驰后,可以选择卖出股票。

三、 区间套方法的应用示例

示例:利用区间套方法定位日线级别的第一类卖点

  1. 日线图分析:

    • 观察日线图,发现MACD出现顶背驰迹象。
      • 股价创新高,但MACD红柱面积减小,黄白线未能创新高。
  2. 30分钟图分析:

    • 切换到30分钟图,观察MACD是否也出现顶背驰。
      • 如果30分钟图上也出现顶背驰,并且该背驰发生在日线级别背驰的同一位置附近,则进一步确认日线级别顶背驰的可能性。
  3. 5分钟图分析:

    • 进一步切换到5分钟图,观察MACD是否出现更明显的顶背驰信号。
      • 如果5分钟图上出现更明显的顶背驰信号,并且该背驰发生在30分钟级别背驰的同一位置附近,则可以确认日线级别的顶背驰成立。
  4. 执行操作:

    • 一旦确认日线级别顶背驰成立,则可以选择卖出股票。

四、 注意事项

  • 结合其他分析方法: 区间套方法并非万能,需要结合其他技术指标(如均线、成交量等)和基本面分析进行综合判断。
  • 关注市场环境: 不同市场环境下,走势的强度和节奏会有所不同,需要根据实际情况调整操作策略。
  • 控制风险: 任何分析方法都无法保证100%的准确性,需要做好风险控制,设置止损位,避免因判断失误造成重大损失。

五、 总结

区间套方法是一种强大的工具,可以帮助投资者更精确地定位买卖点,提高操作的准确性。但需要注意的是:

  • 熟练掌握理论: 深入理解缠论的基本概念和原理,是运用区间套方法的前提。
  • 多练习,多实践: 不断在实战中应用和总结,才能真正掌握区间套方法的精髓。
  • 保持理性: 避免过度依赖技术分析,要结合市场环境和其他因素进行综合判断。

通过不断学习和实践,投资者可以逐步提高运用区间套方法的能力,从而在股市中实现更精准的操作和更稳定的收益。

\ No newline at end of file diff --git a/posts/deviceproblem/index.html b/posts/deviceproblem/index.html new file mode 100644 index 0000000..b59319f --- /dev/null +++ b/posts/deviceproblem/index.html @@ -0,0 +1,22 @@ +Mac设备问题及解决方法记录 - Openwit

Mac设备问题及解决方法记录

+· +openwit

MacOS Wifi连接后显示叹号

现象:

连接多个 wifi 后,系统右上角 wifi 标识均显示叹号。

解决方法:

进入 /Library/Preferences/SystemConfiguration 目录,将所有文件删除,重启系统,重新连接 wifi。

iOS设备连接Mac电脑后频繁弹窗(是否信任)

现象:

将 iPad 或者 iPhone 连接Mac电脑后,设备频繁弹窗提示是否信任该电脑,无法点击信任或者不信任。

解决方法:

打开终端,输入命令:

sudo killall -STOP -c usbd
+

然后输入电脑开机密码,再次连接设备与电脑,设备再次弹窗后点击信任即可。

\ No newline at end of file diff --git a/posts/gstplugin/index.html b/posts/gstplugin/index.html new file mode 100644 index 0000000..7457f73 --- /dev/null +++ b/posts/gstplugin/index.html @@ -0,0 +1,20 @@ +GStreamer插件编写,引入TensorFlow模型 - Openwit

GStreamer插件编写,引入TensorFlow模型

+· +openwit

最近有个调研性需求,在媒体服务器测引入机器学习相关模型进行降噪处理。为此编写了一个GStreamer插件用于降噪测试,采用开源模型,降噪效果不错,但是资源占用率较高,后续如果采用服务侧降噪需要进一步进行轻量化处理。 +有编写Gstreamer插件需求的同学可以参考。完整代码:https://github.com/ilei131/gst-plugin-tensorflow

编译环境:

Ubuntu22.04(Windows10 Hyper-V虚拟机)

安装GStreamer插件和编译工具:

sudo apt install -y gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
+sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev build-essential
+

安装libtensorflowlite依赖

拷贝tflite-dist/include下的内容到/usr/local/include, +拷贝tflite-dist/libs/linux_x64的内容到/usr/local/lib, +然后更新系统库:

sudo ldconfig
+

编译插件:

编译前请按需修改filter.cpp文件中模型的加载路径,改为实际路径,然后执行:

make
+

拷贝插件:

cp libgstaudiodenoise.so /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstaudiodenoise.so
+

测试命令:

gst-launch-1.0 filesrc location=source.pcm ! audiodenoise ! filesink location=target.pcm
+

项目使用的开源模型为:

https://github.com/FragrantRookie/Realtime_Skip_Dpcrn_Tflite_Denoise

\ No newline at end of file diff --git a/posts/index.html b/posts/index.html new file mode 100644 index 0000000..d91a726 --- /dev/null +++ b/posts/index.html @@ -0,0 +1,11 @@ +Posts - Openwit

108课_海螺AI

+108课_海螺AI

108课_DeepSeek

+108课_DeepSeek

GStreamer插件编写,引入TensorFlow模型

+GStreamer插件编写,引入TensorFlow模型

缠中说禅笔记

+缠中说禅笔记

银河麒麟制作deb安装包

+银河麒麟制作deb安装包
\ No newline at end of file diff --git a/posts/index.xml b/posts/index.xml new file mode 100644 index 0000000..350eee4 --- /dev/null +++ b/posts/index.xml @@ -0,0 +1,682 @@ +Posts on Openwithttps://openwit.net/posts/Recent content in Posts on OpenwitHugocnSat, 18 Jan 2025 00:00:00 +0000108课_海螺AIhttps://openwit.net/posts/czsc108_hailuo/Sat, 18 Jan 2025 00:00:00 +0000https://openwit.net/posts/czsc108_hailuo/<h2 id="教你炒股票108课内容总结">《教你炒股票108课》内容总结</h2> +<p>本文档是缠中说禅所著的《教你炒股票108课》的内容概述,涵盖了从股市基础知识到高级操作技巧,再到哲学思考的完整体系。</p> +<h3 id="一--股市本质与心态修炼">一、 股市本质与心态修炼</h3> +<p><strong>1. 股市本质:</strong></p> +<ul> +<li> +<p><strong>市场是合力:</strong> 股市走势是所有参与者合力作用的结果,而非庄家操控。庄家只是众多分力之一,且并非无所不能。</p> +<ul> +<li><strong>“没有庄家,只有赢家和输家”:</strong> 股市中不存在所谓的庄家,只有掌握市场规律、能够顺应市场节奏的赢家和被市场愚弄的输家。</li> +<li><strong>“主力资金的食物链”:</strong> 市场存在不同级别的主力资金,它们之间既有合作也有竞争,共同构成市场合力。</li> +</ul> +</li> +<li> +<p><strong>市场是零和博弈:</strong> 股票本身没有价值,只是废纸一张,其价格波动源于资金博弈。</p> +<ul> +<li><strong>“股票是废纸”:</strong> 股票只是资金流动的凭证,其价值在于能否通过买卖差价获利,而非其本身的价值。</li> +<li><strong>“市场没有同情,不信眼泪”:</strong> 股市是残酷的,不会同情失败者,只有强者才能生存。</li> +</ul> +</li> +<li> +<p><strong>市场充满不确定性:</strong> 走势不可预测,但可以通过分析其自相似性结构来把握规律。</p> +<ul> +<li><strong>“走势不可重复,但自同构性结构可复制”:</strong> 任何走势都是独一无二的,但都遵循着相同的自相似性结构,这使得技术分析成为可能。</li> +</ul> +</li> +</ul> +<p><strong>2. 心态修炼:</strong></p> +<ul> +<li> +<p><strong>克服贪婪与恐惧:</strong> 贪婪和恐惧是阻碍投资者成功的最大障碍,要学会控制情绪,理性分析市场。</p> +<ul> +<li><strong>“你的喜好,你的死亡陷阱”:</strong> 投资者要摒弃个人喜好,避免被情绪左右,才能在市场中生存。</li> +<li><strong>“宁当面首,莫成怨男”:</strong> 投资者要像面首一样积极主动地把握机会,而不是像怨男一样怨天尤人,被市场牵着鼻子走。</li> +</ul> +</li> +<li> +<p><strong>培养耐心与纪律:</strong> 耐心等待买卖点出现,严格按照操作纪律执行,才能避免追涨杀跌。</p> +<ul> +<li><strong>“买点买,卖点卖”:</strong> 投资者要严格按照买卖点进行操作,不追涨杀跌,不盲目操作。</li> +<li><strong>“没有节奏,只有死”:</strong> 投资者要把握市场节奏,根据不同级别走势进行操作,才能在市场中游刃有余。</li> +</ul> +</li> +<li> +<p><strong>保持谦逊与学习:</strong> 股市没有常胜将军,要不断学习新知识,总结经验教训,才能持续进步。</p> +<ul> +<li><strong>“远离聪明,机械操作”:</strong> 投资者要避免过度依赖主观判断,遵循市场规律,进行机械化的操作。</li> +<li><strong>“修炼自己”:</strong> 投资者要不断提升自身修养,克服人性弱点,才能在市场中立于不败之地。</li> +</ul> +</li> +</ul> +<h3 id="二--技术分析理论">二、 技术分析理论</h3> +<p><strong>1. 核心概念:</strong></p> +<ul> +<li> +<p><strong>中枢:</strong> 某级别走势类型中,被至少三个连续次级别走势类型重叠的部分,是走势分析的核心。</p> +<ul> +<li><strong>“走势终完美”:</strong> 任何级别的任何走势类型终将完成,并转化为其他类型的走势,这是技术分析的基础。</li> +<li><strong>“走势中枢”:</strong> 中枢是走势的“引力中心”,其级别和位置决定了走势的强度和方向。</li> +</ul> +</li> +<li> +<p><strong>笔、线段:</strong> 笔是相邻顶底分型之间不共用的K线构成的基本单位,线段由至少三笔构成,是构成中枢的要素。</p> +<ul> +<li><strong>“分型、笔与线段”:</strong> 笔和线段是构成中枢和走势类型的基本单位,其划分标准是技术分析的基础。</li> +</ul> +</li> +<li> +<p><strong>走势类型:</strong> 上涨、下跌、盘整三种基本走势类型,是市场走势的构成要素。</p> +<ul> +<li><strong>“走势类型连接结合性”:</strong> 任何走势都可以分解为不同级别走势类型的连接,这为走势分析提供了理论依据。</li> +</ul> +</li> +</ul> +<p><strong>2. 买卖点分析:</strong></p> +<ul> +<li> +<p><strong>三类买卖点:</strong></p> +<ul> +<li><strong>第一类买卖点:</strong> 背驰点,是趋势转折的标志。 +<ul> +<li><strong>“没有趋势,没有背驰”:</strong> 背驰是趋势与趋势之间的力度比较,只有在趋势中才存在背驰。</li> +<li><strong>“缠中说禅背驰-转折定理”:</strong> 某级别趋势的背驰将导致该趋势最后一个中枢的级别扩展、该级别更大级别的盘整或该级别以上级别的反趋势。</li> +</ul> +</li> +<li><strong>第二类买卖点:</strong> 第一类买卖点的次级别回抽结束后再次探底或回试的结束点,是趋势延续的确认点。 +<ul> +<li><strong>“第二类买卖点”:</strong> 第二类买卖点可以与第一类买卖点重合,也可以出现在中枢震荡中,其位置和力度决定了趋势的强度。</li> +</ul> +</li> +<li><strong>第三类买卖点:</strong> 中枢破坏点,是趋势加速或趋势结束的标志。 +<ul> +<li><strong>“第三类买卖点”:</strong> 第三类买卖点标志着中枢的破坏,其出现意味着趋势的加速或趋势的结束。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>买卖点与级别:</strong> 买卖点是有级别的,不同级别的买卖点对应着不同的操作周期和风险收益比。</p>108课_DeepSeekhttps://openwit.net/posts/czsc108_deepseek/Fri, 17 Jan 2025 00:00:00 +0000https://openwit.net/posts/czsc108_deepseek/<h2 id="教你炒股票108课内容总结">《教你炒股票108课》内容总结</h2> +<p>《缠中说禅:教你炒股票108课》是一本关于股票市场技术分析的经典著作,作者缠中说禅通过108课的形式,详细讲解了股票市场的操作技巧、市场哲学和数学原理。以下是DeepSeek对该书的要点总结:</p> +<h3 id="1-市场哲学与心态">1. <strong>市场哲学与心态</strong></h3> +<ul> +<li><strong>市场如猎场</strong>:市场是一个狩猎场,投资者需要成为猎手,冷静观察市场,不被情绪左右。</li> +<li><strong>无喜好操作</strong>:投资者应避免对某只股票产生情感依赖,市场中的喜好往往是陷阱。</li> +<li><strong>理性与当下</strong>:理性是当下的实践,投资者应根据市场当下的走势进行操作,而不是依赖预测。</li> +</ul> +<h3 id="2-技术分析基础">2. <strong>技术分析基础</strong></h3> +<ul> +<li><strong>走势类型</strong>:市场走势可以分为上涨、下跌和盘整三种类型。任何走势都可以分解为这三种基本类型的组合。</li> +<li><strong>中枢与趋势</strong>:中枢是走势的核心,趋势由至少两个同向的中枢构成。中枢的延伸、扩张和新生是判断走势变化的关键。</li> +<li><strong>背驰与转折</strong>:背驰是趋势转折的信号,通常出现在第二个中枢之后。背驰的出现意味着趋势可能反转。</li> +</ul> +<h3 id="3-买卖点分析">3. <strong>买卖点分析</strong></h3> +<ul> +<li><strong>三类买卖点</strong>: +<ol> +<li><strong>第一类买点</strong>:趋势背驰后的买点,通常出现在下跌趋势的末端。</li> +<li><strong>第二类买点</strong>:第一类买点后的回调低点,通常是趋势延续的信号。</li> +<li><strong>第三类买点</strong>:中枢突破后的回抽确认点,通常出现在趋势的延续或新趋势的开始。</li> +</ol> +</li> +<li><strong>买卖点的完备性</strong>:市场中的所有买卖点都可以归结为这三类买卖点,投资者应熟练掌握这三类买卖点的识别和操作。</li> +</ul> +<h3 id="4-资金管理与风险控制">4. <strong>资金管理与风险控制</strong></h3> +<ul> +<li><strong>主动带套</strong>:投资者应主动设置止损点,避免被动套牢。任何操作都应有一个明确的退出机制。</li> +<li><strong>资金管理</strong>:资金管理是投资的核心,投资者应根据市场情况合理分配资金,避免过度集中或分散。</li> +</ul> +<h3 id="5-macd与背驰判断">5. <strong>MACD与背驰判断</strong></h3> +<ul> +<li><strong>MACD辅助判断</strong>:MACD是判断背驰的重要工具,通过MACD的黄白线和红绿柱的变化,可以辅助判断趋势的背驰和转折。</li> +<li><strong>盘整背驰</strong>:盘整背驰通常出现在大级别走势中,尤其是周线以上的级别,往往预示着历史性的大底部。</li> +</ul> +<h3 id="6-市场风险与回避">6. <strong>市场风险与回避</strong></h3> +<ul> +<li><strong>市场风险的本质</strong>:市场风险最终都反映在价格波动上,投资者应通过技术分析来识别和控制风险。</li> +<li><strong>交易延续性</strong>:投资者应确保交易的延续性,避免因市场突然停止交易或政策变化导致的不可控风险。</li> +</ul> +<h3 id="7-操作策略与技巧">7. <strong>操作策略与技巧</strong></h3> +<ul> +<li><strong>短线与中线结合</strong>:投资者应根据市场走势灵活调整操作策略,短线操作可以增加资金利用率,中线操作则适合大资金。</li> +<li><strong>轮动与节奏</strong>:在牛市中,不同板块和个股会有轮动效应,投资者应把握市场节奏,及时调整持仓。</li> +</ul> +<h3 id="8-心态与修养">8. <strong>心态与修养</strong></h3> +<ul> +<li><strong>市场如人生</strong>:市场是修炼心态的最佳场所,投资者应通过市场磨练自己的贪婪与恐惧,最终达到自由与解脱的境界。</li> +<li><strong>技术与心态的结合</strong>:技术分析只是工具,真正的投资高手不仅要有精湛的技术,还要有良好的心态和修养。</li> +</ul> +<h3 id="9-大级别转折点的寻找">9. <strong>大级别转折点的寻找</strong></h3> +<ul> +<li><strong>区间套定理</strong>:通过不同级别的背驰段逐级收缩范围,可以精确找到大级别的转折点。这种方法适用于大资金的建仓和长线投资。</li> +</ul> +<h3 id="10-走势的级别与递归">10. <strong>走势的级别与递归</strong></h3> +<ul> +<li><strong>级别的重要性</strong>:走势的级别是技术分析的核心,不同级别的走势对应不同的操作策略。大级别走势(如日线、周线)决定大方向,小级别走势(如1分钟、5分钟)用于精确操作。</li> +<li><strong>递归分析</strong>:走势的级别是递归的,高级别的走势由低级别的走势构成。投资者应从大级别到小级别逐级分析,找到精确的买卖点。</li> +</ul> +<h3 id="11-中枢的延伸与扩张">11. <strong>中枢的延伸与扩张</strong></h3> +<ul> +<li><strong>中枢延伸</strong>:中枢的延伸是指中枢内部的波动不断重复,但没有形成新的中枢。延伸的中枢通常意味着市场处于盘整状态。</li> +<li><strong>中枢扩张</strong>:中枢扩张是指中枢的波动范围扩大,可能形成更大级别的中枢。扩张通常预示着市场可能进入新的趋势。</li> +</ul> +<h3 id="12-第三类买卖点的应用">12. <strong>第三类买卖点的应用</strong></h3> +<ul> +<li><strong>第三类买点</strong>:第三类买点出现在中枢突破后的回抽确认点,通常意味着趋势的延续或新趋势的开始。投资者应抓住第三类买点,避免错过趋势的延续。</li> +<li><strong>第三类卖点</strong>:第三类卖点出现在中枢跌破后的反弹确认点,通常意味着趋势的反转或结束。投资者应在第三类卖点及时离场,避免损失。</li> +</ul> +<h3 id="13-盘整背驰的应用">13. <strong>盘整背驰的应用</strong></h3> +<ul> +<li><strong>盘整背驰的意义</strong>:盘整背驰通常出现在大级别走势中,尤其是周线以上的级别。盘整背驰的出现往往预示着历史性的大底部或顶部。</li> +<li><strong>盘整背驰的判断</strong>:通过MACD的红绿柱面积和黄白线的变化,可以判断盘整背驰的出现。盘整背驰的判断需要结合走势的级别和位置。</li> +</ul> +<h3 id="14-趋势背驰与盘整背驰的区别">14. <strong>趋势背驰与盘整背驰的区别</strong></h3> +<ul> +<li><strong>趋势背驰</strong>:趋势背驰通常出现在趋势的末端,意味着趋势可能反转。趋势背驰的判断需要结合中枢的延伸和扩张。</li> +<li><strong>盘整背驰</strong>:盘整背驰通常出现在盘整的末端,意味着盘整可能结束,市场可能进入新的趋势。盘整背驰的判断需要结合MACD的变化。</li> +</ul> +<h3 id="15-大级别转折点的寻找">15. <strong>大级别转折点的寻找</strong></h3> +<ul> +<li><strong>区间套定理</strong>:通过不同级别的背驰段逐级收缩范围,可以精确找到大级别的转折点。这种方法适用于大资金的建仓和长线投资。</li> +<li><strong>精确转折点</strong>:通过从大级别到小级别的逐级分析,投资者可以找到精确的转折点,甚至精确到每一笔成交。</li> +</ul> +<h3 id="16-市场风险与回避">16. <strong>市场风险与回避</strong></h3> +<ul> +<li><strong>市场风险的本质</strong>:市场风险最终都反映在价格波动上,投资者应通过技术分析来识别和控制风险。</li> +<li><strong>交易延续性</strong>:投资者应确保交易的延续性,避免因市场突然停止交易或政策变化导致的不可控风险。</li> +</ul> +<h3 id="17-操作策略与技巧">17. <strong>操作策略与技巧</strong></h3> +<ul> +<li><strong>短线与中线结合</strong>:投资者应根据市场走势灵活调整操作策略,短线操作可以增加资金利用率,中线操作则适合大资金。</li> +<li><strong>轮动与节奏</strong>:在牛市中,不同板块和个股会有轮动效应,投资者应把握市场节奏,及时调整持仓。</li> +</ul> +<h3 id="18-心态与修养">18. <strong>心态与修养</strong></h3> +<ul> +<li><strong>市场如人生</strong>:市场是修炼心态的最佳场所,投资者应通过市场磨练自己的贪婪与恐惧,最终达到自由与解脱的境界。</li> +<li><strong>技术与心态的结合</strong>:技术分析只是工具,真正的投资高手不仅要有精湛的技术,还要有良好的心态和修养。</li> +</ul> +<h3 id="19-总结与展望">19. <strong>总结与展望</strong></h3> +<ul> +<li><strong>缠论的完备性</strong>:缠中说禅的理论是一个完备的技术分析体系,涵盖了市场走势的各个方面。投资者应通过不断实践和学习,逐步掌握这一理论,并在市场中灵活运用。</li> +</ul> +<hr> +<h3 id="关键概念">关键概念:</h3> +<ul> +<li><strong>中枢</strong>:走势的核心部分,由至少三个连续次级别走势类型重叠构成。</li> +<li><strong>背驰</strong>:趋势转折的信号,通常出现在第二个中枢之后。</li> +<li><strong>三类买卖点</strong>:第一类、第二类和第三类买卖点,分别对应不同的趋势转折和延续信号。</li> +<li><strong>MACD</strong>:辅助判断背驰的重要工具,通过黄白线和红绿柱的变化来判断趋势的强弱。</li> +</ul> +<hr> +<h3 id="核心要点">核心要点:</h3> +<ol> +<li><strong>市场哲学与心态</strong>:市场如猎场,投资者应冷静观察,避免情绪化操作。</li> +<li><strong>技术分析基础</strong>:走势分为上涨、下跌和盘整三种类型,中枢是走势的核心。</li> +<li><strong>买卖点分析</strong>:三类买卖点是操作的核心,投资者应熟练掌握其识别和应用。</li> +<li><strong>资金管理与风险控制</strong>:主动设置止损点,合理分配资金,避免过度集中或分散。</li> +<li><strong>MACD与背驰判断</strong>:MACD是辅助判断背驰的重要工具,通过黄白线和红绿柱的变化来判断趋势的强弱。</li> +<li><strong>走势的级别与递归</strong>:从大级别到小级别逐级分析,找到精确的买卖点。</li> +<li><strong>中枢的延伸与扩张</strong>:中枢的延伸和扩张是判断市场状态的重要依据。</li> +<li><strong>盘整背驰与趋势背驰</strong>:盘整背驰通常出现在大级别走势中,预示着历史性的大底部或顶部。</li> +<li><strong>大级别转折点的寻找</strong>:通过区间套定理,精确找到大级别的转折点。</li> +<li><strong>心态与修养</strong>:市场是修炼心态的最佳场所,技术与心态的结合是成功的关键。</li> +</ol> +<h3 id="整体总结">整体总结:</h3> +<p>《缠中说禅:教你炒股票108课》通过详细的技术分析和市场哲学,为投资者提供了一套完整的股票操作体系。书中强调理性操作、资金管理和风险控制,并通过大量的实例和图表,帮助投资者理解和掌握市场走势的变化规律。投资者应通过不断学习和实践,逐步提升自己的操作水平,最终在市场中实现稳定盈利。</p>GStreamer插件编写,引入TensorFlow模型https://openwit.net/posts/gstplugin/Wed, 25 Dec 2024 00:00:00 +0000https://openwit.net/posts/gstplugin/<p>最近有个调研性需求,在媒体服务器测引入机器学习相关模型进行降噪处理。为此编写了一个GStreamer插件用于降噪测试,采用开源模型,降噪效果不错,但是资源占用率较高,后续如果采用服务侧降噪需要进一步进行轻量化处理。 +有编写Gstreamer插件需求的同学可以参考。完整代码:<a href="https://github.com/ilei131/gst-plugin-tensorflow">https://github.com/ilei131/gst-plugin-tensorflow</a></p>缠中说禅笔记https://openwit.net/posts/czsc/Sun, 19 Feb 2023 00:00:00 +0000https://openwit.net/posts/czsc/<ol> +<li>而市场的波动,归根结底是在前后两个高低点 关系构成的一个完全分类中展开的,明白了这一点,市场就如同自己的掌纹一样举手可见了。</li> +<li>特别那些年线走平后向上出现拐点的股票,一定要看好了。至于还在年线下面的股票,先别看了,等他们上年线再说。</li> +<li>一只股票长起来千万别随意抛了,中线如果连三十天线都没跌破,证明走势很强,就要拿着。</li> +<li>有一个抛股票的原则,分两种情况,一种是缓慢推升的,一旦出现加速上涨,就要时刻注意出货的机会;另一种是第一波就火暴上涨,调整后第二波的上涨一旦出现背弛或放巨量的,一定要小心,找机会走人 。</li> +<li>上涨:最近一个高点比前一高点高,且最近一个低点比前一低点高。 +下跌:最近一个高点比前一高点低,且最近一个低点比前一低点低。 +盘整:最近一个高点比前一高点高,且最近一个低点比前一低点低;或者最近一个高点比前一高点低,且最近一个低点比前一低点高。</li> +<li>没有趋势,没有背驰。在盘整中是无所谓 “背驰” 的。</li> +<li>缠中说禅趋势力度:前一 “吻” 的结束与后一 “吻” 开始由短线均线与长期均线相交所形成的面积。在前后两个同向趋势中,当缠中说禅趋势力度比上一次缠中说禅趋势力度要弱,就形成 “背驰”。</li> +<li>一、首先只选择出现 “下跌 + 盘整 + 下跌” 走势的。二 、在该走势的第二段下跌出现第一类买点时介入。三、介入后,一旦出现盘整走势,坚决退出。</li> +<li>走势终完美。所有级别的走势都能分解成趋势与盘整。</li> +<li>牛市第一波涨的就是成分股,工行这最大的成分股不涨,还有谁涨?</li> +<li>所有情况都逃不过高位背驰卖,低位背驰买。</li> +<li>大跌,就把眼睛放大,去找会形成第三类买点的股票,这才是股票操作真正的节奏与思维。最好就是找有大级别第三类买点的强势股票(次级别不跌回中枢里面就是,但能不跌回最高点那自然是最强的)。选股票一 定要按技术来找,找有第三类买点的,或至少是刚从第三类买点起来的。</li> +<li>对于散户,根本没必须长期持有一只股票,那是大资金没办法的办法。对于散户,如果通道畅通的,最快的方法就是用第三类买点去操作,杀完一只继续一只,不断干下去,不参与任何的中枢震荡,只搞最强势的这才是散户该干的事情。持有到背驰卖点, 然后坚决走人,等待新的买点。</li> +<li>本 ID 所有介入的股票都不会走的,但一定会用震荡减低成本到 0 后继续增加筹 码。本 ID 介入一只股票,都是要至少持有两年以上的,甚至是天长地久,想快,就学好第三类买点,那是最快的。</li> +<li>长期投资,就是要在大级别买点介入 ,例如年线、季线、月线的买点,然后一直持有到大级别卖点再卖,这才是真正的长期投资。</li> +<li>不追高是投资第一要点。永远不追涨杀跌。没有股票是值得追高买的,当然也没必须杀跌卖股票。</li> +<li>一定要习惯于在放量突破回调时买股票,这样风险小很多。不要在以巨量大阴线构造顶部的下跌反抽中介入,这是投资最大忌。</li> +<li>新资金介入迹象:放量后有一个缩量站住的过程。</li> +<li>中线就是在周线级别上, 中短线指日线级别,短线指 30 分钟,超短指 5 分钟或 1 分钟的最小级别。短线是用来摊成本的,要挣大钱,关键是看中线。</li> +<li>开盘大幅度低开后,第一次次级别回拉不破顶或盘整背驰将构成最好的第二类卖点,这类卖点往往是突发事件中最好的逃命点。</li> +<li>个股,强者恒强在证券中表现明显,所以一直强调回调介入机会。</li> +<li>缠中说缠的 MACD 定律:第一类买点都是在 0 轴之下背驰形成的,第二类买点都是第一次上 0 轴后回抽确认形成的;卖点的情况就反过来。 第一次大洗盘让 MACD 日线第一次回拉 0 轴后一定要买回来。</li> +<li>跌,只能考虑买;涨,只能考虑卖。</li> +<li>精通本 ID 的理论后,涨跌的分别就消失了,在脑子里只有买点和卖点,没有什么涨跌,达到这种境界,就算初步有成了。</li> +</ol> +<p>阳胜进;阴胜出;小倍阳,大胆入。 +价板量缩,后劲不错;价板量平,可以跟进;价板量爆,赶快出逃。</p>银河麒麟制作deb安装包https://openwit.net/posts/kylindeb/Sun, 19 Feb 2023 00:00:00 +0000https://openwit.net/posts/kylindeb/<p>本篇记录一下银河麒麟制作deb安装包的主要步骤。 +制作安装包的命令很简单,以我近期的项目为例:</p> +<pre tabindex="0"><code>dpkg -b hsclient/ hsclient_1.0.0_arm64.deb +</code></pre><p>以上命令会将hsclient文件夹的内容制作成hsclient_1.0.0_arm64.deb安装包。制作时间取决于hsclient文件夹的大小。 +所以,主要工作量在于hsclient文件夹的准备。 +使用tree 命令查看hsclient目录结构如下: +<img src="https://openwit.net/img/hsclient.webp" alt=""> +可执行文件及相关依赖存放在HSClient目录,这里为了方便展示,我将里面的内容清空了,deb包安装完成后,可执行文件所在目录即为/opt/hbfec/HSClient。 +control 文件内容如下:</p> +<pre tabindex="0"><code>package: hsclient +version: 1.0.0 +architecture: arm64 +maintainer: hbfec +description: hsclient application +</code></pre><p>主要指定包名、版本号、系统架构、维护者、描述,根据实际情况填写即可。 +desktop 文件内容如下:</p> +<pre tabindex="0"><code>[Desktop Entry] +Name=HSClient +Name[zh_CN]=会商客户端 +Comment=HSClient application +Exec=/opt/hbfec/HSClient/HSClient +Icon=/usr/share/icons/hsclient.png +Terminal=false +Type=Application +Categories=Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http; +StartupNotify=true +</code></pre><p>主要指定可执行文件相关配置:名称、可执行文件路径、图标、应用类型等。 +程序图标这块没有固定的实现。简单实现,就放在/usr/share/icons目录下即可,推荐48*48大小,desktop中需要写绝对路径Icon=/usr/share/icons/hsclient.png。完整实现的话,icons目录下需要创建hicolor目录、kylin-icon-theme目录以及 kylin-icon-theme-one目录,目录下都需要放置对应大小的图片,desktop中可以直接写文件名Icon=hsclient,可参考已安装的其他应用程序。</p> +<p>以上内容都准备好以后,就可以通过文章开始处提到的命令制作安装包了。 +需要指出的是,在DEBIAN目录中至少要有control文件,还可以有preinst(preinstallation)、postinst(postinstallation)、prerm(preremove)、postrm(postremove)、copyright(版权)、changlog(修订记录)和conffiles等。 +具体作用如下:</p> +<pre tabindex="0"><code>preinst 文件:解包前运行的脚本。 +postinst 文件:解包完成并将目录文件拷贝到系统后,所需要执行的配置工作。 +prerm 文件:软件卸载前需要执行的脚本。 +postrm 文件:软件卸载后需要执行的脚本。 +control 文件:描述软件包的名称(Package),版本(Version),描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。 +</code></pre><p>银河麒麟下制作deb安装包涉及的主要内容就是这些,希望可以帮到有需要的人。</p>实现Android WebRTC支持H265https://openwit.net/posts/webrtc/Sun, 08 Jan 2023 00:00:00 +0000https://openwit.net/posts/webrtc/<p>谷歌的WebRTC,默认不支持H265,好在网上有开源的实现,但是想要传输层支持H265需要重新编译生成libjingle_peerconnection_so.so。本篇主要记录一下编译过程。<a href="https://github.com/open-webrtc-toolkit/owt-client-native">项目github地址:https://github.com/open-webrtc-toolkit/owt-client-native</a> +自己通过虚拟机安装Ubuntu18.04并翻墙,无论如何都无法编译成功,无奈,购买了1个月香港云主机,编译成功! +假设当前路径为/home/zhanggf</p> +<h2 id="1-下载代码">1. 下载代码</h2> +<pre tabindex="0"><code>git clone https://github.com/open-webrtc-toolkit/owt-client-native.git +</code></pre><p>下载完成后,将目录重命名为 src</p> +<pre tabindex="0"><code>mv owt-client-native src +</code></pre><h2 id="2-下载-depot_tools">2. 下载 depot_tools</h2> +<pre tabindex="0"><code>git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +</code></pre><p>下载完成后,设置 PATH</p> +<pre tabindex="0"><code>export PATH=$PATH:/home/zhanggf/depot_tools +</code></pre><h2 id="3-创建gclient">3. 创建.gclient</h2> +<pre tabindex="0"><code>vi .gclient +</code></pre><p>将以下内容复制到文件中并保存:</p> +<pre tabindex="0"><code>solutions = [ + { + &#34;managed&#34;: False, + &#34;name&#34;: &#34;src&#34;, + &#34;url&#34;: &#34;https://github.com/open-webrtc-toolkit/owt-client-native.git&#34;, + &#34;custom_deps&#34;: {}, + &#34;deps_file&#34;: &#34;DEPS&#34;, + &#34;safesync_url&#34;: &#34;&#34;, + }, +] +target_os = [&#34;android&#34;] +</code></pre><h2 id="4gclient-sync">4.gclient sync</h2> +<p>进入src目录,执行gclient sync。</p> +<pre tabindex="0"><code>cd src +gclient sync +</code></pre><p>后面就是漫长的等待,视网速情况,需要1-n个小时吧。</p> +<h2 id="5-编译">5. 编译</h2> +<p>进入/src/scripts 目录,执行python build_android.py开始编译。</p> +<pre tabindex="0"><code>cd /src/scripts +python build_android.py +</code></pre><p>全部编译完成大概1小时左右吧。</p> +<h2 id="6out">6.out</h2> +<p>最终生成的目标文件在src/out路径下,包括libwebrtc.jar和对应版本的libjingle_peerconnection_so.so。替换当前项目中的相关文件,恭喜,你的WebRTC项目已经支持H265硬编码了。</p> +<p>最后,编译成果放在了github,有需要的自取。<a href="https://github.com/ilei131/android_webrtc_h265">github链接</a></p>Mac设备问题及解决方法记录https://openwit.net/posts/deviceproblem/Sat, 19 Nov 2022 00:00:00 +0000https://openwit.net/posts/deviceproblem/<h2 id="macos-wifi连接后显示叹号">MacOS Wifi连接后显示叹号</h2> +<h3 id="现象">现象:</h3> +<p>连接多个 wifi 后,系统右上角 wifi 标识均显示叹号。</p> +<h3 id="解决方法">解决方法:</h3> +<p>进入 /Library/Preferences/SystemConfiguration 目录,将所有文件删除,重启系统,重新连接 wifi。</p> +<h2 id="ios设备连接mac电脑后频繁弹窗是否信任">iOS设备连接Mac电脑后频繁弹窗(是否信任)</h2> +<h3 id="现象-1">现象:</h3> +<p>将 iPad 或者 iPhone 连接Mac电脑后,设备频繁弹窗提示是否信任该电脑,无法点击信任或者不信任。</p> +<h3 id="解决方法-1">解决方法:</h3> +<p>打开终端,输入命令:</p> +<pre tabindex="0"><code>sudo killall -STOP -c usbd +</code></pre><p>然后输入电脑开机密码,再次连接设备与电脑,设备再次弹窗后点击信任即可。</p>Markdown 新手指南https://openwit.net/posts/markdown/Thu, 10 Nov 2022 00:00:00 +0000https://openwit.net/posts/markdown/<h2 id="标题">标题</h2> +<p>这是最为常用的格式,只需要在文本前面加上 # 即可,同理、你还可以增加二级标题、三级标题、四级标题、五级标题和六级标题,总共六级,只需要增加 # 即可,标题字号相应降低。例如:</p> +<pre tabindex="0"><code># 一级标题 +## 二级标题 +### 三级标题 +#### 四级标题 +##### 五级标题 +###### 六级标题 +</code></pre><p>注:# 和「标题」之间建议保留一个字符的空格,这是最标准的 Markdown 写法。 +效果如下:</p> +<h1 id="一级标题">一级标题</h1> +<h2 id="二级标题">二级标题</h2> +<h3 id="三级标题">三级标题</h3> +<h4 id="四级标题">四级标题</h4> +<h5 id="五级标题">五级标题</h5> +<h6 id="六级标题">六级标题</h6> +<h2 id="列表">列表</h2> +<p>列表格式也很常用,只需要在文字前面加上 - 就可以了,例如:</p> +<pre tabindex="0"><code>- 文本1 +- 文本2 +- 文本3 +</code></pre><p>如果你希望有序列表, +也可以在文字前面加上 1. 2. 3. 就可以了,例如:</p> +<pre tabindex="0"><code>1. 文本1 +2. 文本2 +3. 文本3 +</code></pre><p>注:- 和 1. 与后面文本之间要保留一个字符的空格。 +效果如下:</p> +<ul> +<li>文本 1</li> +<li>文本 2</li> +<li>文本 3</li> +</ul> +<ol> +<li>文本1</li> +<li>文本2</li> +<li>文本3</li> +</ol> +<h2 id="链接和图片">链接和图片</h2> +<p>在 Markdown 中插入链接,你只需要使用 <code>[显示文本](链接地址)</code> 这样的语法即可,例如:</p> +<pre tabindex="0"><code>[菜鸟教程](https://www.runoob.com/) +</code></pre><p>在 Markdown 中插入图片,你只需要使用 <code>![显示文本](图片链接地址)</code> 这样的语法即可,例如:</p>Privacy Policyhttps://openwit.net/posts/privacypolicy/Thu, 10 Nov 2022 00:00:00 +0000https://openwit.net/posts/privacypolicy/<p>We respect and protect the personal privacy of all users of the service. In order to provide you with more accurate and personalized services, this app will use and disclose your personal information in accordance with the provisions of this privacy policy. However, this application will treat such information with a high degree of diligence and prudence. Unless otherwise specified in this privacy policy, this app will not disclose such information to the public or provide it to a third party without your prior permission. This application will update this privacy policy from time to time. When you agree to this application service use agreement, you will be deemed to have agreed to all the contents of this privacy policy. This privacy policy is an integral part of this application service use agreement.</p>隐私政策https://openwit.net/posts/yszc/Thu, 10 Nov 2022 00:00:00 +0000https://openwit.net/posts/yszc/<p>我们尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。</p> +<h2 id="1适用范围">1.适用范围</h2> +<ul> +<li>(a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息;</li> +<li>(b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的 IP 地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;</li> +<li>(c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。 +您了解并同意,以下信息不适用本隐私权政策:</li> +<li>(a) 您在使用本应用平台提供的搜索服务时输入的关键字信息;</li> +<li>(b) 本应用收集到的您在本应用发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;</li> +<li>(c) 违反法律规定或违反本应用规则行为及本应用已对您采取的措施。</li> +</ul> +<h2 id="2信息使用">2.信息使用</h2> +<ul> +<li>(a) 本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息。</li> +<li>(b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。</li> +<li>(c) FaceID 仅用于快速解锁程序,本应用不会收集您的 FaceID 数据。</li> +</ul> +<h2 id="3信息披露">3.信息披露</h2> +<p>在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:</p> +<ul> +<li>(a) 经您事先同意,向第三方披露;</li> +<li>(b) 为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;</li> +<li>(c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;</li> +<li>(d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露;</li> +<li>(e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;</li> +<li>(f) 在本应用平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本应用有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。</li> +<li>(g) 其它本应用根据法律、法规或者网站政策认为合适的披露。</li> +</ul> +<h2 id="4信息存储和交换">4.信息存储和交换</h2> +<p>本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。</p> +<h2 id="5cookie-的使用">5.Cookie 的使用</h2> +<ul> +<li>(a) 在您未拒绝接受 cookies 的情况下,本应用会在您的计算机上设定或取用 cookies ,以便您能登录或使用依赖于 cookies 的本应用平台服务或功能。本应用使用 cookies 可为您提供更加周到的个性化服务,包括推广服务。</li> +<li>(b) 您有权选择接受或拒绝接受 cookies。您可以通过修改浏览器设置的方式拒绝接受 cookies。但如果您选择拒绝接受 cookies,则您可能无法登录或使用依赖于 cookies 的本应用网络服务或功能。</li> +<li>(c) 通过本应用所设 cookies 所取得的有关信息,将适用本政策。</li> +</ul> +<h2 id="6信息安全">6.信息安全</h2> +<ul> +<li>(a) 本应用帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本应用将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在 “完善的安全措施”。</li> +<li>(b) 在使用本应用网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对</li> +</ul> +<h2 id="7-本隐私政策的更改">7. 本隐私政策的更改</h2> +<ul> +<li>(a) 如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。</li> +<li>(b) 本公司保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。</li> +</ul><link>https://openwit.net/posts/czsc_mmd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openwit.net/posts/czsc_mmd/</guid><description><h2 id="如何有效判断缠论中的三类买卖点">如何有效判断缠论中的三类买卖点</h2> +<p>缠论中的三类买卖点是技术分析的核心,也是投资者进行操作的重要依据。准确判断买卖点需要深入理解缠论的基本概念,并结合多级别走势进行综合分析。以下是判断三类买卖点的详细方法:</p> +<h3 id="一--第一类买卖点背驰点">一、 第一类买卖点:背驰点</h3> +<p><strong>1. 定义:</strong></p> +<ul> +<li><strong>第一类买点:</strong> 某级别趋势的背驰点,是该趋势最后一个中枢下方出现的买点,标志着该趋势的结束和反转。</li> +<li><strong>第一类卖点:</strong> 某级别趋势的背驰点,是该趋势最后一个中枢上方出现的卖点,标志着该趋势的结束和反转。</li> +</ul> +<p><strong>2. 判断方法:</strong></p> +<ul> +<li> +<p><strong>识别趋势:</strong></p> +<ul> +<li>首先,需要明确当前走势处于何种趋势(上涨趋势或下跌趋势)。 +<ul> +<li><strong>上涨趋势:</strong> 高点不断抬高,低点也不断抬高。</li> +<li><strong>下跌趋势:</strong> 低点不断降低,高点也不断降低。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>识别中枢:</strong></p> +<ul> +<li>找到当前趋势中最后一个中枢。 +<ul> +<li><strong>中枢:</strong> 某级别走势类型中,被至少三个连续次级别走势类型重叠的部分。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>识别背驰:</strong></p> +<ul> +<li> +<p><strong>比较力度:</strong> 比较当前趋势与前一个同向趋势的力度,判断是否存在背驰。</p> +<ul> +<li><strong>趋势力度:</strong> 可以通过以下几种方式衡量: +<ul> +<li><strong>MACD 指标:</strong> 观察MACD红绿柱面积或黄白线的斜率。 +<ul> +<li>例如,在上涨趋势中,如果当前上涨段对应的MACD红柱面积小于前一个上涨段,则可能存在顶背驰。</li> +</ul> +</li> +<li><strong>均线系统:</strong> 观察短期均线与长期均线的距离变化。 +<ul> +<li>例如,在上涨趋势中,如果短期均线与长期均线的距离逐渐缩小,则可能存在顶背驰。</li> +</ul> +</li> +<li><strong>K线形态:</strong> 观察上涨或下跌的力度变化。 +<ul> +<li>例如,在上涨趋势中,如果出现上涨乏力,K线实体变小,上影线变长,则可能存在顶背驰。</li> +</ul> +</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>区间套验证:</strong> 利用区间套方法,将背驰的判断从大级别逐步细化到小级别,提高判断的准确性。</p> +<ul> +<li>例如,在日线级别发现顶背驰后,可以切换到30分钟、5分钟等更小级别图,观察是否存在更明显的背驰信号。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>确认买卖点:</strong></p> +<ul> +<li>一旦确认背驰成立,则可以判断第一类买卖点出现。 +<ul> +<li><strong>第一类买点:</strong> 出现在下跌趋势最后一个中枢下方。</li> +<li><strong>第一类卖点:</strong> 出现在上涨趋势最后一个中枢上方。</li> +</ul> +</li> +</ul> +</li> +</ul> +<p><strong>3. 注意事项:</strong></p> +<ul> +<li><strong>背驰不一定导致趋势反转:</strong> 背驰只是趋势反转的必要条件,而非充分条件。背驰后可能进入盘整,也可能形成更大级别的中枢。</li> +<li><strong>结合其他指标:</strong> 可以结合其他技术指标(如均线、成交量等)进行综合判断,提高准确性。</li> +</ul> +<h3 id="二--第二类买卖点回抽确认点">二、 第二类买卖点:回抽确认点</h3> +<p><strong>1. 定义:</strong></p> +<ul> +<li><strong>第二类买点:</strong> 第一类买点出现后,次级别走势回抽确认的结束点。</li> +<li><strong>第二类卖点:</strong> 第一类卖点出现后,次级别走势反抽确认的结束点。</li> +</ul> +<p><strong>2. 判断方法:</strong></p> +<ul> +<li> +<p><strong>确认第一类买卖点:</strong></p> +<ul> +<li>首先,需要确认第一类买卖点的出现。</li> +</ul> +</li> +<li> +<p><strong>观察次级别走势:</strong></p> +<ul> +<li>切换到次级别图(例如,第一类买卖点出现在日线级别,则切换到30分钟图),观察次级别走势的回抽或反抽情况。 +<ul> +<li><strong>回抽/反抽:</strong> 次级别走势对第一类买卖点位置的回调或反弹。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>识别结束点:</strong></p> +<ul> +<li><strong>第二类买点:</strong> 当次级别走势的回抽结束后,再次探底不创新低或出现盘整背驰,则第二类买点出现。 +<ul> +<li>例如,在30分钟图上,如果第一类买点出现后,30分钟走势回抽结束,再次下跌不创新低,则第二类买点出现。</li> +</ul> +</li> +<li><strong>第二类卖点:</strong> 当次级别走势的反抽结束后,再次冲高不创新高或出现盘整背驰,则第二类卖点出现。 +<ul> +<li>例如,在30分钟图上,如果第一类卖点出现后,30分钟走势反抽结束,再次上涨不创新高,则第二类卖点出现。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>确认买卖点:</strong></p></description></item><item><title/><link>https://openwit.net/posts/czsc_qjt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openwit.net/posts/czsc_qjt/</guid><description><h2 id="如何利用区间套方法精确定位买卖点">如何利用区间套方法精确定位买卖点</h2> +<p><strong>区间套方法</strong>是缠论中用于精确定位买卖点的重要工具,其核心思想是利用不同级别走势的嵌套关系,将买卖点的判断从大级别逐步细化到小级别,从而实现精确的定位。</p> +<h3 id="一--区间套方法的基本原理">一、 区间套方法的基本原理</h3> +<ol> +<li> +<p><strong>走势的递归性与自相似性:</strong></p> +<ul> +<li><strong>递归性:</strong> 任何级别的走势都可以分解为次级别走势类型的连接。例如,一个日线级别的走势可以分解为若干个30分钟级别的走势类型。</li> +<li><strong>自相似性:</strong> 不同级别的走势结构具有相似的形态特征。例如,一个日线级别的中枢与一个5分钟级别的中枢在形态上具有相似的特征。</li> +</ul> +<p>这种递归性和自相似性使得我们可以通过分析低级别走势来推断高级别走势的细节。</p> +</li> +<li> +<p><strong>区间套的逻辑:</strong></p> +<ul> +<li>当我们在一个较大级别(例如日线)上发现一个潜在的买卖点(例如背驰点)时,可以通过观察次级别(例如30分钟)走势来确认该买卖点的有效性。</li> +<li>如果次级别走势也出现了相应的买卖点信号(例如背驰),则可以进一步观察更次级别(例如5分钟)的走势来进一步确认。</li> +<li>通过这种逐级细化的方式,我们可以将买卖点的定位从大级别逐步精确到小级别,甚至精确到具体的K线或分笔成交。</li> +</ul> +</li> +</ol> +<h3 id="二--区间套方法的应用步骤">二、 区间套方法的应用步骤</h3> +<p>以下以<strong>背驰</strong>为例,说明如何利用区间套方法精确定位买卖点:</p> +<ol> +<li> +<p><strong>确定操作级别:</strong></p> +<ul> +<li>首先,根据自身资金量、操作风格等因素,确定一个合适的操作级别(例如日线级别)。</li> +</ul> +</li> +<li> +<p><strong>识别大级别买卖点:</strong></p> +<ul> +<li>在操作级别图上,利用技术指标(例如MACD)或其他分析方法,识别潜在的买卖点信号。 +<ul> +<li>例如,在日线图上,如果发现MACD出现顶背驰,则可能意味着日线级别的上涨趋势即将结束。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>切换到次级别图:</strong></p> +<ul> +<li>将分析切换到次级别图(例如30分钟图),观察次级别走势是否出现相应的买卖点信号。 +<ul> +<li>例如,在30分钟图上,观察MACD是否也出现顶背驰,以及该背驰是否发生在日线级别背驰的同一位置。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>进一步细化分析:</strong></p> +<ul> +<li>如果次级别图上也出现了买卖点信号,则可以进一步切换到更次级别图(例如5分钟图)进行更精细的分析。 +<ul> +<li>例如,在5分钟图上,观察MACD是否出现更明显的顶背驰信号,以及该背驰是否发生在30分钟级别背驰的同一位置。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>确认买卖点:</strong></p> +<ul> +<li>通过逐级细化的分析,如果不同级别图上都出现了相应的买卖点信号,并且这些信号相互印证,则可以确认买卖点的有效性。 +<ul> +<li>例如,如果日线、30分钟和5分钟图上都出现了顶背驰信号,并且这些信号发生在同一位置附近,则可以确认日线级别的顶背驰成立。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>执行操作:</strong></p> +<ul> +<li>一旦确认买卖点有效,则可以按照操作计划执行买卖操作。 +<ul> +<li>例如,在确认日线级别顶背驰后,可以选择卖出股票。</li> +</ul> +</li> +</ul> +</li> +</ol> +<h3 id="三--区间套方法的应用示例">三、 区间套方法的应用示例</h3> +<p><strong>示例:利用区间套方法定位日线级别的第一类卖点</strong></p> +<ol> +<li> +<p><strong>日线图分析:</strong></p> +<ul> +<li>观察日线图,发现MACD出现顶背驰迹象。 +<ul> +<li>股价创新高,但MACD红柱面积减小,黄白线未能创新高。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>30分钟图分析:</strong></p> +<ul> +<li>切换到30分钟图,观察MACD是否也出现顶背驰。 +<ul> +<li>如果30分钟图上也出现顶背驰,并且该背驰发生在日线级别背驰的同一位置附近,则进一步确认日线级别顶背驰的可能性。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>5分钟图分析:</strong></p> +<ul> +<li>进一步切换到5分钟图,观察MACD是否出现更明显的顶背驰信号。 +<ul> +<li>如果5分钟图上出现更明显的顶背驰信号,并且该背驰发生在30分钟级别背驰的同一位置附近,则可以确认日线级别的顶背驰成立。</li> +</ul> +</li> +</ul> +</li> +<li> +<p><strong>执行操作:</strong></p> +<ul> +<li>一旦确认日线级别顶背驰成立,则可以选择卖出股票。</li> +</ul> +</li> +</ol> +<h3 id="四--注意事项">四、 注意事项</h3> +<ul> +<li><strong>结合其他分析方法:</strong> 区间套方法并非万能,需要结合其他技术指标(如均线、成交量等)和基本面分析进行综合判断。</li> +<li><strong>关注市场环境:</strong> 不同市场环境下,走势的强度和节奏会有所不同,需要根据实际情况调整操作策略。</li> +<li><strong>控制风险:</strong> 任何分析方法都无法保证100%的准确性,需要做好风险控制,设置止损位,避免因判断失误造成重大损失。</li> +</ul> +<h3 id="五--总结">五、 总结</h3> +<p>区间套方法是一种强大的工具,可以帮助投资者更精确地定位买卖点,提高操作的准确性。但需要注意的是:</p> +<ul> +<li><strong>熟练掌握理论:</strong> 深入理解缠论的基本概念和原理,是运用区间套方法的前提。</li> +<li><strong>多练习,多实践:</strong> 不断在实战中应用和总结,才能真正掌握区间套方法的精髓。</li> +<li><strong>保持理性:</strong> 避免过度依赖技术分析,要结合市场环境和其他因素进行综合判断。</li> +</ul> +<p>通过不断学习和实践,投资者可以逐步提高运用区间套方法的能力,从而在股市中实现更精准的操作和更稳定的收益。</p></description></item></channel></rss> \ No newline at end of file diff --git a/posts/kylindeb/index.html b/posts/kylindeb/index.html new file mode 100644 index 0000000..267bee9 --- /dev/null +++ b/posts/kylindeb/index.html @@ -0,0 +1,78 @@ +<!doctype html><html class="not-ready lg:text-base" style=--bg:#faf8f1 lang=cn dir=ltr><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><title>银河麒麟制作deb安装包 - Openwit

银河麒麟制作deb安装包

+· +openwit

本篇记录一下银河麒麟制作deb安装包的主要步骤。 +制作安装包的命令很简单,以我近期的项目为例:

dpkg -b hsclient/ hsclient_1.0.0_arm64.deb
+

以上命令会将hsclient文件夹的内容制作成hsclient_1.0.0_arm64.deb安装包。制作时间取决于hsclient文件夹的大小。 +所以,主要工作量在于hsclient文件夹的准备。 +使用tree 命令查看hsclient目录结构如下: + +可执行文件及相关依赖存放在HSClient目录,这里为了方便展示,我将里面的内容清空了,deb包安装完成后,可执行文件所在目录即为/opt/hbfec/HSClient。 +control 文件内容如下:

package: hsclient
+version: 1.0.0
+architecture: arm64
+maintainer: hbfec
+description: hsclient application
+

主要指定包名、版本号、系统架构、维护者、描述,根据实际情况填写即可。 +desktop 文件内容如下:

[Desktop Entry]
+Name=HSClient
+Name[zh_CN]=会商客户端
+Comment=HSClient application
+Exec=/opt/hbfec/HSClient/HSClient
+Icon=/usr/share/icons/hsclient.png
+Terminal=false
+Type=Application
+Categories=Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;
+StartupNotify=true
+

主要指定可执行文件相关配置:名称、可执行文件路径、图标、应用类型等。 +程序图标这块没有固定的实现。简单实现,就放在/usr/share/icons目录下即可,推荐48*48大小,desktop中需要写绝对路径Icon=/usr/share/icons/hsclient.png。完整实现的话,icons目录下需要创建hicolor目录、kylin-icon-theme目录以及 kylin-icon-theme-one目录,目录下都需要放置对应大小的图片,desktop中可以直接写文件名Icon=hsclient,可参考已安装的其他应用程序。

以上内容都准备好以后,就可以通过文章开始处提到的命令制作安装包了。 +需要指出的是,在DEBIAN目录中至少要有control文件,还可以有preinst(preinstallation)、postinst(postinstallation)、prerm(preremove)、postrm(postremove)、copyright(版权)、changlog(修订记录)和conffiles等。 +具体作用如下:

preinst 文件:解包前运行的脚本。
+postinst 文件:解包完成并将目录文件拷贝到系统后,所需要执行的配置工作。
+prerm 文件:软件卸载前需要执行的脚本。
+postrm 文件:软件卸载后需要执行的脚本。
+control 文件:描述软件包的名称(Package),版本(Version),描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。
+

银河麒麟下制作deb安装包涉及的主要内容就是这些,希望可以帮到有需要的人。

\ No newline at end of file diff --git a/posts/markdown/index.html b/posts/markdown/index.html new file mode 100644 index 0000000..3a7b75f --- /dev/null +++ b/posts/markdown/index.html @@ -0,0 +1,99 @@ +Markdown 新手指南 - Openwit

Markdown 新手指南

+· +openwit

标题

这是最为常用的格式,只需要在文本前面加上 # 即可,同理、你还可以增加二级标题、三级标题、四级标题、五级标题和六级标题,总共六级,只需要增加 # 即可,标题字号相应降低。例如:

# 一级标题
+## 二级标题
+### 三级标题
+#### 四级标题
+##### 五级标题
+###### 六级标题 
+

注:# 和「标题」之间建议保留一个字符的空格,这是最标准的 Markdown 写法。 +效果如下:

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

列表

列表格式也很常用,只需要在文字前面加上 - 就可以了,例如:

- 文本1
+- 文本2
+- 文本3
+

如果你希望有序列表, +也可以在文字前面加上 1. 2. 3. 就可以了,例如:

1. 文本1
+2. 文本2
+3. 文本3
+

注:- 和 1. 与后面文本之间要保留一个字符的空格。 +效果如下:

  • 文本 1
  • 文本 2
  • 文本 3
  1. 文本1
  2. 文本2
  3. 文本3

链接和图片

在 Markdown 中插入链接,你只需要使用 [显示文本](链接地址) 这样的语法即可,例如:

[菜鸟教程](https://www.runoob.com/)
+

在 Markdown 中插入图片,你只需要使用 ![显示文本](图片链接地址) 这样的语法即可,例如:

![RUNOOB 图标](https://static.jyshare.com/images/runoob-logo.png)
+

注:插入图片的语法和链接的语法很像,只是前面多了一个!。

效果如下: +菜鸟教程

RUNOOB 图标

引用

当需要引用他人的文字时,在 Markdown 中,你只需要在你希望引用的文字前面加上 > 就好了,例如:

> 我有明珠一颗,久被尘劳关锁。
+而今尘尽光生,照破青山万朵。
+

注:> 和文本之间要保留一个字符的空格。 +效果如下:

我有明珠一颗,久被尘劳关锁。 +而今尘尽光生,照破青山万朵。

粗体和斜体

Markdown 的粗体和斜体也非常简单,用 ** 包含一段文本就是粗体的语法,用 * 包含一段文本就是斜体的语法。例如:

*我有明珠一颗*,**久被尘劳关锁**。
+而今尘尽光生,照破青山万朵。
+

效果如下:

我有明珠一颗久被尘劳关锁。 +而今尘尽光生,照破青山万朵。

代码引用

如果引用的语句只有一行,可以用 ` 将语句包起来。 +如果引用的语句为多行,可以将 ``` 置于这段代码的首行和末行。例如:

`print('Hello world!')`
+
```
+def my_abs(x):
+    if x >= 0:
+        return x
+    else:
+        return -x
+```
+

效果如下:

print('Hello world!')
+
def my_abs(x):
+    if x >= 0:
+        return x
+    else:
+        return -x
+

表格

参考代码:

| Name          | Age           | Sex   |
+| ------------- |-------------- | ----- |
+| Zhangsan      | 10            |   male|
+| Lisi          | 20            |   male|
+| Wangwu        | 30            | female|
+

效果如下:

NameAgeSex
Zhangsan10male
Lisi20male
Wangwu30female

我们可以设置表格的对齐方式:

  • -: 设置内容和标题栏居右对齐。
  • :- 设置内容和标题栏居左对齐。
  • :-: 设置内容和标题栏居中对齐。

例如:

| 左对齐 | 右对齐 | 居中对齐 |
+| :-----| ----: | :----: |
+| 11111 | 11111 | 11111  |
+| 11    | 11    | 11     |
+

效果如下:

左对齐右对齐居中对齐
111111111111111
111111

结语

以上几种格式是比较常用的格式,如想了解和学习更多,可以参考菜鸟教程上的Markdown教程

\ No newline at end of file diff --git a/posts/page/1/index.html b/posts/page/1/index.html new file mode 100644 index 0000000..7caa250 --- /dev/null +++ b/posts/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/posts/ \ No newline at end of file diff --git a/posts/page/2/index.html b/posts/page/2/index.html new file mode 100644 index 0000000..8527754 --- /dev/null +++ b/posts/page/2/index.html @@ -0,0 +1,12 @@ +Posts - Openwit

实现Android WebRTC支持H265

+实现Android WebRTC支持H265

Mac设备问题及解决方法记录

+Mac设备问题及解决方法记录

Markdown 新手指南

+Markdown 新手指南

Privacy Policy

+Privacy Policy

隐私政策

+隐私政策
\ No newline at end of file diff --git a/posts/page/3/index.html b/posts/page/3/index.html new file mode 100644 index 0000000..a6ae1d0 --- /dev/null +++ b/posts/page/3/index.html @@ -0,0 +1,8 @@ +Posts - Openwit

+

+
\ No newline at end of file diff --git a/posts/privacypolicy/index.html b/posts/privacypolicy/index.html new file mode 100644 index 0000000..cf0334d --- /dev/null +++ b/posts/privacypolicy/index.html @@ -0,0 +1,10 @@ +Privacy Policy - Openwit

Privacy Policy

+· +openwit

We respect and protect the personal privacy of all users of the service. In order to provide you with more accurate and personalized services, this app will use and disclose your personal information in accordance with the provisions of this privacy policy. However, this application will treat such information with a high degree of diligence and prudence. Unless otherwise specified in this privacy policy, this app will not disclose such information to the public or provide it to a third party without your prior permission. This application will update this privacy policy from time to time. When you agree to this application service use agreement, you will be deemed to have agreed to all the contents of this privacy policy. This privacy policy is an integral part of this application service use agreement.

1.Scope of application

  • (a) The personal registration information you provided according to the requirements of this application when you registered this application account;
  • (b) When you use the application network service or visit the website of the application platform, the application automatically receives and records the information on your browser and computer, including but not limited to your IP address, browser type, language used, access date and time, software and hardware feature information, and the website records you need;
  • (c) This application obtains user personal data from business partners through legal channels. +You understand and agree that the following information is not applicable to this privacy policy:
  • (a) The keyword information you enter when using the search service provided by this application platform;
  • (b) Relevant information and data collected by the app that you publish in the app, including but not limited to participation activities, transaction information and evaluation details;
  • (c) Violation of legal provisions or this application rule and the measures taken by this application against you.

2.Use of information

  • (a) This app will not provide, sell, rent, share or trade your personal information to any unrelated third party.
  • (b) This app also does not allow any third party to collect, edit, sell or distribute your personal information for free by any means. If any user of the application platform engages in the above activities, once found, the application has the right to immediately terminate the service agreement with the user.
  • (c) FaceID is only used for quick unlocking the app. This app will not collect your FaceID data.

3.Information disclosure

Under the following circumstances, this app will disclose all or part of your personal information according to your personal will or legal provisions:

  • (a) Disclosure to a third party with your prior consent;
  • (b) To provide the products and services you require, you must share your personal information with a third party;
  • (c) Disclose to a third party or administrative or judicial authorities according to relevant provisions of laws or requirements of administrative or judicial authorities;
  • (d) If you violate the relevant laws and regulations of China or this application service agreement or relevant rules, you need to disclose to a third party;
  • (e) If you are a qualified intellectual property complainant and have filed a complaint, you should disclose it to the respondent at the request of the respondent so that both parties can handle possible rights disputes;
  • (f) In a transaction created on the application platform, if any party to the transaction performs or partially performs the transaction obligations and requests information disclosure, the application has the right to decide to provide the user with the necessary information such as the contact information of the counterparty to facilitate the completion of the transaction or the settlement of disputes.
  • (g) Other disclosures that the app deems appropriate according to laws, regulations or website policies.

4.Information storage and exchange

The information and materials about you collected by the app will be stored on the servers of the app and/or its affiliated companies. These information and materials may be transferred to your country, region or outside the country where the information and materials collected by the app are located, and accessed, stored and displayed outside the country.

5.Cookie usage

  • (a) If you do not refuse to accept cookies, the app will set or access cookies on your computer so that you can log in or use the services or functions of the app platform that depend on cookies. Cookies can provide you with more considerate personalized services, including promotion services.
  • (b) You have the right to accept or reject cookies. You can refuse to accept cookies by modifying your browser settings. However, if you choose to refuse to accept cookies, you may not be able to log in or use the application’s network services or functions that depend on cookies.
  • (c) This policy will apply to the relevant information obtained through the cookies set up in this application.

6.Information Security

  • (a) This application account has security protection function. Please keep your user name and password information properly. This application will ensure that your information will not be lost, abused or altered by encrypting user passwords and other security measures. Despite the aforementioned security measures, please note that there are no “perfect security measures” on the information network.
  • (b) When using this application network service to conduct online transactions, you will inevitably have to

7.Changes to this Privacy Policy

  • (a) If we decide to change the privacy policy, we will publish these changes in this policy, on our company’s website and where we think appropriate, so that you can understand how we collect and use your personal information, who can access it, and under what circumstances we will disclose it.
  • (b) The company reserves the right to modify this policy at any time, so please check it frequently. In case of any major change to this policy, the Company will notify it through website notification. Party A discloses its personal information, such as contact information or postal address. Please protect your personal information properly and provide it to others only when necessary. If you find that your personal information has been leaked, especially the user name and password of the application, please contact the customer service of the application immediately so that the application can take corresponding measures.
\ No newline at end of file diff --git a/posts/webrtc/index.html b/posts/webrtc/index.html new file mode 100644 index 0000000..78d6493 --- /dev/null +++ b/posts/webrtc/index.html @@ -0,0 +1,70 @@ +实现Android WebRTC支持H265 - Openwit

实现Android WebRTC支持H265

+· +openwit

谷歌的WebRTC,默认不支持H265,好在网上有开源的实现,但是想要传输层支持H265需要重新编译生成libjingle_peerconnection_so.so。本篇主要记录一下编译过程。项目github地址:https://github.com/open-webrtc-toolkit/owt-client-native +自己通过虚拟机安装Ubuntu18.04并翻墙,无论如何都无法编译成功,无奈,购买了1个月香港云主机,编译成功! +假设当前路径为/home/zhanggf

1. 下载代码

git clone https://github.com/open-webrtc-toolkit/owt-client-native.git
+

下载完成后,将目录重命名为 src

mv owt-client-native src
+

2. 下载 depot_tools

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+

下载完成后,设置 PATH

export PATH=$PATH:/home/zhanggf/depot_tools
+

3. 创建.gclient

vi .gclient
+

将以下内容复制到文件中并保存:

solutions = [
+  {
+     "managed": False,
+     "name": "src",
+     "url": "https://github.com/open-webrtc-toolkit/owt-client-native.git",
+     "custom_deps": {},
+     "deps_file": "DEPS",
+     "safesync_url": "",
+  },
+]
+target_os = ["android"]
+

4.gclient sync

进入src目录,执行gclient sync。

cd src
+gclient sync
+

后面就是漫长的等待,视网速情况,需要1-n个小时吧。

5. 编译

进入/src/scripts 目录,执行python build_android.py开始编译。

cd /src/scripts
+python build_android.py
+

全部编译完成大概1小时左右吧。

6.out

最终生成的目标文件在src/out路径下,包括libwebrtc.jar和对应版本的libjingle_peerconnection_so.so。替换当前项目中的相关文件,恭喜,你的WebRTC项目已经支持H265硬编码了。

最后,编译成果放在了github,有需要的自取。github链接

\ No newline at end of file diff --git a/posts/yszc/index.html b/posts/yszc/index.html new file mode 100644 index 0000000..54c32dc --- /dev/null +++ b/posts/yszc/index.html @@ -0,0 +1,55 @@ +隐私政策 - Openwit

隐私政策

+· +openwit

我们尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。

1.适用范围

  • (a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息;
  • (b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的 IP 地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;
  • (c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。 +您了解并同意,以下信息不适用本隐私权政策:
  • (a) 您在使用本应用平台提供的搜索服务时输入的关键字信息;
  • (b) 本应用收集到的您在本应用发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;
  • (c) 违反法律规定或违反本应用规则行为及本应用已对您采取的措施。

2.信息使用

  • (a) 本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息。
  • (b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。
  • (c) FaceID 仅用于快速解锁程序,本应用不会收集您的 FaceID 数据。

3.信息披露

在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:

  • (a) 经您事先同意,向第三方披露;
  • (b) 为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;
  • (c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;
  • (d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露;
  • (e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;
  • (f) 在本应用平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本应用有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。
  • (g) 其它本应用根据法律、法规或者网站政策认为合适的披露。

4.信息存储和交换

本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。

5.Cookie 的使用

  • (a) 在您未拒绝接受 cookies 的情况下,本应用会在您的计算机上设定或取用 cookies ,以便您能登录或使用依赖于 cookies 的本应用平台服务或功能。本应用使用 cookies 可为您提供更加周到的个性化服务,包括推广服务。
  • (b) 您有权选择接受或拒绝接受 cookies。您可以通过修改浏览器设置的方式拒绝接受 cookies。但如果您选择拒绝接受 cookies,则您可能无法登录或使用依赖于 cookies 的本应用网络服务或功能。
  • (c) 通过本应用所设 cookies 所取得的有关信息,将适用本政策。

6.信息安全

  • (a) 本应用帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本应用将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在 “完善的安全措施”。
  • (b) 在使用本应用网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对

7. 本隐私政策的更改

  • (a) 如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。
  • (b) 本公司保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。
\ No newline at end of file diff --git a/rss.svg b/rss.svg new file mode 100644 index 0000000..36810d3 --- /dev/null +++ b/rss.svg @@ -0,0 +1 @@ + diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..0502289 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://openwit.net/imageeditor/2026-01-15T00:00:00+00:00https://openwit.net/2026-01-15T00:00:00+00:00https://openwit.net/passworddisk/2026-01-15T00:00:00+00:00https://openwit.net/posts/czsc108_hailuo/2025-01-18T00:00:00+00:00https://openwit.net/posts/2025-01-18T00:00:00+00:00https://openwit.net/posts/czsc108_deepseek/2025-01-17T00:00:00+00:00https://openwit.net/tags/gstreamer/2024-12-25T00:00:00+00:00https://openwit.net/posts/gstplugin/2024-12-25T00:00:00+00:00https://openwit.net/tags/2024-12-25T00:00:00+00:00https://openwit.net/tags/tensorflow/2024-12-25T00:00:00+00:00https://openwit.net/tags/%E7%BC%A0%E4%B8%AD%E8%AF%B4%E7%A6%85/2023-02-19T00:00:00+00:00https://openwit.net/posts/czsc/2023-02-19T00:00:00+00:00https://openwit.net/tags/%E9%93%B6%E6%B2%B3%E9%BA%92%E9%BA%9F/2023-02-19T00:00:00+00:00https://openwit.net/posts/kylindeb/2023-02-19T00:00:00+00:00https://openwit.net/tags/android/2023-01-08T00:00:00+00:00https://openwit.net/tags/h265/2023-01-08T00:00:00+00:00https://openwit.net/tags/webrtc/2023-01-08T00:00:00+00:00https://openwit.net/posts/webrtc/2023-01-08T00:00:00+00:00https://openwit.net/tags/iphone/2022-11-19T00:00:00+00:00https://openwit.net/tags/mac/2022-11-19T00:00:00+00:00https://openwit.net/posts/deviceproblem/2022-11-19T00:00:00+00:00https://openwit.net/tags/markdown/2022-11-10T00:00:00+00:00https://openwit.net/posts/markdown/2022-11-10T00:00:00+00:00https://openwit.net/posts/privacypolicy/2022-11-10T00:00:00+00:00https://openwit.net/posts/yszc/2022-11-10T00:00:00+00:00https://openwit.net/posts/czsc_mmd/https://openwit.net/posts/czsc_qjt/https://openwit.net/about/https://openwit.net/archives/https://openwit.net/categories/ \ No newline at end of file diff --git a/tags/android/index.html b/tags/android/index.html new file mode 100644 index 0000000..630f29b --- /dev/null +++ b/tags/android/index.html @@ -0,0 +1,7 @@ +Android - Openwit

#Android

实现Android WebRTC支持H265

+实现Android WebRTC支持H265
\ No newline at end of file diff --git a/tags/android/index.xml b/tags/android/index.xml new file mode 100644 index 0000000..47303be --- /dev/null +++ b/tags/android/index.xml @@ -0,0 +1,38 @@ +Android on Openwithttps://openwit.net/tags/android/Recent content in Android on OpenwitHugocnSun, 08 Jan 2023 00:00:00 +0000实现Android WebRTC支持H265https://openwit.net/posts/webrtc/Sun, 08 Jan 2023 00:00:00 +0000https://openwit.net/posts/webrtc/<p>谷歌的WebRTC,默认不支持H265,好在网上有开源的实现,但是想要传输层支持H265需要重新编译生成libjingle_peerconnection_so.so。本篇主要记录一下编译过程。<a href="https://github.com/open-webrtc-toolkit/owt-client-native">项目github地址:https://github.com/open-webrtc-toolkit/owt-client-native</a> +自己通过虚拟机安装Ubuntu18.04并翻墙,无论如何都无法编译成功,无奈,购买了1个月香港云主机,编译成功! +假设当前路径为/home/zhanggf</p> +<h2 id="1-下载代码">1. 下载代码</h2> +<pre tabindex="0"><code>git clone https://github.com/open-webrtc-toolkit/owt-client-native.git +</code></pre><p>下载完成后,将目录重命名为 src</p> +<pre tabindex="0"><code>mv owt-client-native src +</code></pre><h2 id="2-下载-depot_tools">2. 下载 depot_tools</h2> +<pre tabindex="0"><code>git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +</code></pre><p>下载完成后,设置 PATH</p> +<pre tabindex="0"><code>export PATH=$PATH:/home/zhanggf/depot_tools +</code></pre><h2 id="3-创建gclient">3. 创建.gclient</h2> +<pre tabindex="0"><code>vi .gclient +</code></pre><p>将以下内容复制到文件中并保存:</p> +<pre tabindex="0"><code>solutions = [ + { + &#34;managed&#34;: False, + &#34;name&#34;: &#34;src&#34;, + &#34;url&#34;: &#34;https://github.com/open-webrtc-toolkit/owt-client-native.git&#34;, + &#34;custom_deps&#34;: {}, + &#34;deps_file&#34;: &#34;DEPS&#34;, + &#34;safesync_url&#34;: &#34;&#34;, + }, +] +target_os = [&#34;android&#34;] +</code></pre><h2 id="4gclient-sync">4.gclient sync</h2> +<p>进入src目录,执行gclient sync。</p> +<pre tabindex="0"><code>cd src +gclient sync +</code></pre><p>后面就是漫长的等待,视网速情况,需要1-n个小时吧。</p> +<h2 id="5-编译">5. 编译</h2> +<p>进入/src/scripts 目录,执行python build_android.py开始编译。</p> +<pre tabindex="0"><code>cd /src/scripts +python build_android.py +</code></pre><p>全部编译完成大概1小时左右吧。</p> +<h2 id="6out">6.out</h2> +<p>最终生成的目标文件在src/out路径下,包括libwebrtc.jar和对应版本的libjingle_peerconnection_so.so。替换当前项目中的相关文件,恭喜,你的WebRTC项目已经支持H265硬编码了。</p> +<p>最后,编译成果放在了github,有需要的自取。<a href="https://github.com/ilei131/android_webrtc_h265">github链接</a></p> \ No newline at end of file diff --git a/tags/android/page/1/index.html b/tags/android/page/1/index.html new file mode 100644 index 0000000..5e4f8e4 --- /dev/null +++ b/tags/android/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/tags/android/ \ No newline at end of file diff --git a/tags/gstreamer/index.html b/tags/gstreamer/index.html new file mode 100644 index 0000000..6a63bf1 --- /dev/null +++ b/tags/gstreamer/index.html @@ -0,0 +1,7 @@ +GStreamer - Openwit

#GStreamer

GStreamer插件编写,引入TensorFlow模型

+GStreamer插件编写,引入TensorFlow模型
\ No newline at end of file diff --git a/tags/gstreamer/index.xml b/tags/gstreamer/index.xml new file mode 100644 index 0000000..d954853 --- /dev/null +++ b/tags/gstreamer/index.xml @@ -0,0 +1,2 @@ +GStreamer on Openwithttps://openwit.net/tags/gstreamer/Recent content in GStreamer on OpenwitHugocnWed, 25 Dec 2024 00:00:00 +0000GStreamer插件编写,引入TensorFlow模型https://openwit.net/posts/gstplugin/Wed, 25 Dec 2024 00:00:00 +0000https://openwit.net/posts/gstplugin/<p>最近有个调研性需求,在媒体服务器测引入机器学习相关模型进行降噪处理。为此编写了一个GStreamer插件用于降噪测试,采用开源模型,降噪效果不错,但是资源占用率较高,后续如果采用服务侧降噪需要进一步进行轻量化处理。 +有编写Gstreamer插件需求的同学可以参考。完整代码:<a href="https://github.com/ilei131/gst-plugin-tensorflow">https://github.com/ilei131/gst-plugin-tensorflow</a></p> \ No newline at end of file diff --git a/tags/gstreamer/page/1/index.html b/tags/gstreamer/page/1/index.html new file mode 100644 index 0000000..66a296b --- /dev/null +++ b/tags/gstreamer/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/tags/gstreamer/ \ No newline at end of file diff --git a/tags/h265/index.html b/tags/h265/index.html new file mode 100644 index 0000000..06650cd --- /dev/null +++ b/tags/h265/index.html @@ -0,0 +1,7 @@ +H265 - Openwit

#H265

实现Android WebRTC支持H265

+实现Android WebRTC支持H265
\ No newline at end of file diff --git a/tags/h265/index.xml b/tags/h265/index.xml new file mode 100644 index 0000000..ceadfcf --- /dev/null +++ b/tags/h265/index.xml @@ -0,0 +1,38 @@ +H265 on Openwithttps://openwit.net/tags/h265/Recent content in H265 on OpenwitHugocnSun, 08 Jan 2023 00:00:00 +0000实现Android WebRTC支持H265https://openwit.net/posts/webrtc/Sun, 08 Jan 2023 00:00:00 +0000https://openwit.net/posts/webrtc/<p>谷歌的WebRTC,默认不支持H265,好在网上有开源的实现,但是想要传输层支持H265需要重新编译生成libjingle_peerconnection_so.so。本篇主要记录一下编译过程。<a href="https://github.com/open-webrtc-toolkit/owt-client-native">项目github地址:https://github.com/open-webrtc-toolkit/owt-client-native</a> +自己通过虚拟机安装Ubuntu18.04并翻墙,无论如何都无法编译成功,无奈,购买了1个月香港云主机,编译成功! +假设当前路径为/home/zhanggf</p> +<h2 id="1-下载代码">1. 下载代码</h2> +<pre tabindex="0"><code>git clone https://github.com/open-webrtc-toolkit/owt-client-native.git +</code></pre><p>下载完成后,将目录重命名为 src</p> +<pre tabindex="0"><code>mv owt-client-native src +</code></pre><h2 id="2-下载-depot_tools">2. 下载 depot_tools</h2> +<pre tabindex="0"><code>git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +</code></pre><p>下载完成后,设置 PATH</p> +<pre tabindex="0"><code>export PATH=$PATH:/home/zhanggf/depot_tools +</code></pre><h2 id="3-创建gclient">3. 创建.gclient</h2> +<pre tabindex="0"><code>vi .gclient +</code></pre><p>将以下内容复制到文件中并保存:</p> +<pre tabindex="0"><code>solutions = [ + { + &#34;managed&#34;: False, + &#34;name&#34;: &#34;src&#34;, + &#34;url&#34;: &#34;https://github.com/open-webrtc-toolkit/owt-client-native.git&#34;, + &#34;custom_deps&#34;: {}, + &#34;deps_file&#34;: &#34;DEPS&#34;, + &#34;safesync_url&#34;: &#34;&#34;, + }, +] +target_os = [&#34;android&#34;] +</code></pre><h2 id="4gclient-sync">4.gclient sync</h2> +<p>进入src目录,执行gclient sync。</p> +<pre tabindex="0"><code>cd src +gclient sync +</code></pre><p>后面就是漫长的等待,视网速情况,需要1-n个小时吧。</p> +<h2 id="5-编译">5. 编译</h2> +<p>进入/src/scripts 目录,执行python build_android.py开始编译。</p> +<pre tabindex="0"><code>cd /src/scripts +python build_android.py +</code></pre><p>全部编译完成大概1小时左右吧。</p> +<h2 id="6out">6.out</h2> +<p>最终生成的目标文件在src/out路径下,包括libwebrtc.jar和对应版本的libjingle_peerconnection_so.so。替换当前项目中的相关文件,恭喜,你的WebRTC项目已经支持H265硬编码了。</p> +<p>最后,编译成果放在了github,有需要的自取。<a href="https://github.com/ilei131/android_webrtc_h265">github链接</a></p> \ No newline at end of file diff --git a/tags/h265/page/1/index.html b/tags/h265/page/1/index.html new file mode 100644 index 0000000..fcf324b --- /dev/null +++ b/tags/h265/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/tags/h265/ \ No newline at end of file diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 0000000..ea93ccd --- /dev/null +++ b/tags/index.html @@ -0,0 +1,6 @@ +Tags - Openwit

#Tags

\ No newline at end of file diff --git a/tags/index.xml b/tags/index.xml new file mode 100644 index 0000000..f58dd40 --- /dev/null +++ b/tags/index.xml @@ -0,0 +1 @@ +Tags on Openwithttps://openwit.net/tags/Recent content in Tags on OpenwitHugocnWed, 25 Dec 2024 00:00:00 +0000GStreamerhttps://openwit.net/tags/gstreamer/Wed, 25 Dec 2024 00:00:00 +0000https://openwit.net/tags/gstreamer/TensorFlowhttps://openwit.net/tags/tensorflow/Wed, 25 Dec 2024 00:00:00 +0000https://openwit.net/tags/tensorflow/缠中说禅https://openwit.net/tags/%E7%BC%A0%E4%B8%AD%E8%AF%B4%E7%A6%85/Sun, 19 Feb 2023 00:00:00 +0000https://openwit.net/tags/%E7%BC%A0%E4%B8%AD%E8%AF%B4%E7%A6%85/银河麒麟https://openwit.net/tags/%E9%93%B6%E6%B2%B3%E9%BA%92%E9%BA%9F/Sun, 19 Feb 2023 00:00:00 +0000https://openwit.net/tags/%E9%93%B6%E6%B2%B3%E9%BA%92%E9%BA%9F/Androidhttps://openwit.net/tags/android/Sun, 08 Jan 2023 00:00:00 +0000https://openwit.net/tags/android/H265https://openwit.net/tags/h265/Sun, 08 Jan 2023 00:00:00 +0000https://openwit.net/tags/h265/WebRTChttps://openwit.net/tags/webrtc/Sun, 08 Jan 2023 00:00:00 +0000https://openwit.net/tags/webrtc/IPhonehttps://openwit.net/tags/iphone/Sat, 19 Nov 2022 00:00:00 +0000https://openwit.net/tags/iphone/Machttps://openwit.net/tags/mac/Sat, 19 Nov 2022 00:00:00 +0000https://openwit.net/tags/mac/Markdownhttps://openwit.net/tags/markdown/Thu, 10 Nov 2022 00:00:00 +0000https://openwit.net/tags/markdown/ \ No newline at end of file diff --git a/tags/iphone/index.html b/tags/iphone/index.html new file mode 100644 index 0000000..715db8a --- /dev/null +++ b/tags/iphone/index.html @@ -0,0 +1,7 @@ +IPhone - Openwit

#IPhone

Mac设备问题及解决方法记录

+Mac设备问题及解决方法记录
\ No newline at end of file diff --git a/tags/iphone/index.xml b/tags/iphone/index.xml new file mode 100644 index 0000000..a3914f9 --- /dev/null +++ b/tags/iphone/index.xml @@ -0,0 +1,12 @@ +IPhone on Openwithttps://openwit.net/tags/iphone/Recent content in IPhone on OpenwitHugocnSat, 19 Nov 2022 00:00:00 +0000Mac设备问题及解决方法记录https://openwit.net/posts/deviceproblem/Sat, 19 Nov 2022 00:00:00 +0000https://openwit.net/posts/deviceproblem/<h2 id="macos-wifi连接后显示叹号">MacOS Wifi连接后显示叹号</h2> +<h3 id="现象">现象:</h3> +<p>连接多个 wifi 后,系统右上角 wifi 标识均显示叹号。</p> +<h3 id="解决方法">解决方法:</h3> +<p>进入 /Library/Preferences/SystemConfiguration 目录,将所有文件删除,重启系统,重新连接 wifi。</p> +<h2 id="ios设备连接mac电脑后频繁弹窗是否信任">iOS设备连接Mac电脑后频繁弹窗(是否信任)</h2> +<h3 id="现象-1">现象:</h3> +<p>将 iPad 或者 iPhone 连接Mac电脑后,设备频繁弹窗提示是否信任该电脑,无法点击信任或者不信任。</p> +<h3 id="解决方法-1">解决方法:</h3> +<p>打开终端,输入命令:</p> +<pre tabindex="0"><code>sudo killall -STOP -c usbd +</code></pre><p>然后输入电脑开机密码,再次连接设备与电脑,设备再次弹窗后点击信任即可。</p> \ No newline at end of file diff --git a/tags/iphone/page/1/index.html b/tags/iphone/page/1/index.html new file mode 100644 index 0000000..8becd28 --- /dev/null +++ b/tags/iphone/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/tags/iphone/ \ No newline at end of file diff --git a/tags/mac/index.html b/tags/mac/index.html new file mode 100644 index 0000000..066cd05 --- /dev/null +++ b/tags/mac/index.html @@ -0,0 +1,7 @@ +Mac - Openwit

#Mac

Mac设备问题及解决方法记录

+Mac设备问题及解决方法记录
\ No newline at end of file diff --git a/tags/mac/index.xml b/tags/mac/index.xml new file mode 100644 index 0000000..6aa010b --- /dev/null +++ b/tags/mac/index.xml @@ -0,0 +1,12 @@ +Mac on Openwithttps://openwit.net/tags/mac/Recent content in Mac on OpenwitHugocnSat, 19 Nov 2022 00:00:00 +0000Mac设备问题及解决方法记录https://openwit.net/posts/deviceproblem/Sat, 19 Nov 2022 00:00:00 +0000https://openwit.net/posts/deviceproblem/<h2 id="macos-wifi连接后显示叹号">MacOS Wifi连接后显示叹号</h2> +<h3 id="现象">现象:</h3> +<p>连接多个 wifi 后,系统右上角 wifi 标识均显示叹号。</p> +<h3 id="解决方法">解决方法:</h3> +<p>进入 /Library/Preferences/SystemConfiguration 目录,将所有文件删除,重启系统,重新连接 wifi。</p> +<h2 id="ios设备连接mac电脑后频繁弹窗是否信任">iOS设备连接Mac电脑后频繁弹窗(是否信任)</h2> +<h3 id="现象-1">现象:</h3> +<p>将 iPad 或者 iPhone 连接Mac电脑后,设备频繁弹窗提示是否信任该电脑,无法点击信任或者不信任。</p> +<h3 id="解决方法-1">解决方法:</h3> +<p>打开终端,输入命令:</p> +<pre tabindex="0"><code>sudo killall -STOP -c usbd +</code></pre><p>然后输入电脑开机密码,再次连接设备与电脑,设备再次弹窗后点击信任即可。</p> \ No newline at end of file diff --git a/tags/mac/page/1/index.html b/tags/mac/page/1/index.html new file mode 100644 index 0000000..636e558 --- /dev/null +++ b/tags/mac/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/tags/mac/ \ No newline at end of file diff --git a/tags/markdown/index.html b/tags/markdown/index.html new file mode 100644 index 0000000..a9f3bc1 --- /dev/null +++ b/tags/markdown/index.html @@ -0,0 +1,7 @@ +Markdown - Openwit

#Markdown

Markdown 新手指南

+Markdown 新手指南
\ No newline at end of file diff --git a/tags/markdown/index.xml b/tags/markdown/index.xml new file mode 100644 index 0000000..a0f8e54 --- /dev/null +++ b/tags/markdown/index.xml @@ -0,0 +1,42 @@ +Markdown on Openwithttps://openwit.net/tags/markdown/Recent content in Markdown on OpenwitHugocnThu, 10 Nov 2022 00:00:00 +0000Markdown 新手指南https://openwit.net/posts/markdown/Thu, 10 Nov 2022 00:00:00 +0000https://openwit.net/posts/markdown/<h2 id="标题">标题</h2> +<p>这是最为常用的格式,只需要在文本前面加上 # 即可,同理、你还可以增加二级标题、三级标题、四级标题、五级标题和六级标题,总共六级,只需要增加 # 即可,标题字号相应降低。例如:</p> +<pre tabindex="0"><code># 一级标题 +## 二级标题 +### 三级标题 +#### 四级标题 +##### 五级标题 +###### 六级标题 +</code></pre><p>注:# 和「标题」之间建议保留一个字符的空格,这是最标准的 Markdown 写法。 +效果如下:</p> +<h1 id="一级标题">一级标题</h1> +<h2 id="二级标题">二级标题</h2> +<h3 id="三级标题">三级标题</h3> +<h4 id="四级标题">四级标题</h4> +<h5 id="五级标题">五级标题</h5> +<h6 id="六级标题">六级标题</h6> +<h2 id="列表">列表</h2> +<p>列表格式也很常用,只需要在文字前面加上 - 就可以了,例如:</p> +<pre tabindex="0"><code>- 文本1 +- 文本2 +- 文本3 +</code></pre><p>如果你希望有序列表, +也可以在文字前面加上 1. 2. 3. 就可以了,例如:</p> +<pre tabindex="0"><code>1. 文本1 +2. 文本2 +3. 文本3 +</code></pre><p>注:- 和 1. 与后面文本之间要保留一个字符的空格。 +效果如下:</p> +<ul> +<li>文本 1</li> +<li>文本 2</li> +<li>文本 3</li> +</ul> +<ol> +<li>文本1</li> +<li>文本2</li> +<li>文本3</li> +</ol> +<h2 id="链接和图片">链接和图片</h2> +<p>在 Markdown 中插入链接,你只需要使用 <code>[显示文本](链接地址)</code> 这样的语法即可,例如:</p> +<pre tabindex="0"><code>[菜鸟教程](https://www.runoob.com/) +</code></pre><p>在 Markdown 中插入图片,你只需要使用 <code>![显示文本](图片链接地址)</code> 这样的语法即可,例如:</p> \ No newline at end of file diff --git a/tags/markdown/page/1/index.html b/tags/markdown/page/1/index.html new file mode 100644 index 0000000..bdb9672 --- /dev/null +++ b/tags/markdown/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/tags/markdown/ \ No newline at end of file diff --git a/tags/page/1/index.html b/tags/page/1/index.html new file mode 100644 index 0000000..d3c55e4 --- /dev/null +++ b/tags/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/tags/ \ No newline at end of file diff --git a/tags/tensorflow/index.html b/tags/tensorflow/index.html new file mode 100644 index 0000000..55b61b6 --- /dev/null +++ b/tags/tensorflow/index.html @@ -0,0 +1,7 @@ +TensorFlow - Openwit

#TensorFlow

GStreamer插件编写,引入TensorFlow模型

+GStreamer插件编写,引入TensorFlow模型
\ No newline at end of file diff --git a/tags/tensorflow/index.xml b/tags/tensorflow/index.xml new file mode 100644 index 0000000..4a312cf --- /dev/null +++ b/tags/tensorflow/index.xml @@ -0,0 +1,2 @@ +TensorFlow on Openwithttps://openwit.net/tags/tensorflow/Recent content in TensorFlow on OpenwitHugocnWed, 25 Dec 2024 00:00:00 +0000GStreamer插件编写,引入TensorFlow模型https://openwit.net/posts/gstplugin/Wed, 25 Dec 2024 00:00:00 +0000https://openwit.net/posts/gstplugin/<p>最近有个调研性需求,在媒体服务器测引入机器学习相关模型进行降噪处理。为此编写了一个GStreamer插件用于降噪测试,采用开源模型,降噪效果不错,但是资源占用率较高,后续如果采用服务侧降噪需要进一步进行轻量化处理。 +有编写Gstreamer插件需求的同学可以参考。完整代码:<a href="https://github.com/ilei131/gst-plugin-tensorflow">https://github.com/ilei131/gst-plugin-tensorflow</a></p> \ No newline at end of file diff --git a/tags/tensorflow/page/1/index.html b/tags/tensorflow/page/1/index.html new file mode 100644 index 0000000..c92f270 --- /dev/null +++ b/tags/tensorflow/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/tags/tensorflow/ \ No newline at end of file diff --git a/tags/webrtc/index.html b/tags/webrtc/index.html new file mode 100644 index 0000000..f27bbf8 --- /dev/null +++ b/tags/webrtc/index.html @@ -0,0 +1,7 @@ +WebRTC - Openwit

#WebRTC

实现Android WebRTC支持H265

+实现Android WebRTC支持H265
\ No newline at end of file diff --git a/tags/webrtc/index.xml b/tags/webrtc/index.xml new file mode 100644 index 0000000..adf2c1d --- /dev/null +++ b/tags/webrtc/index.xml @@ -0,0 +1,38 @@ +WebRTC on Openwithttps://openwit.net/tags/webrtc/Recent content in WebRTC on OpenwitHugocnSun, 08 Jan 2023 00:00:00 +0000实现Android WebRTC支持H265https://openwit.net/posts/webrtc/Sun, 08 Jan 2023 00:00:00 +0000https://openwit.net/posts/webrtc/<p>谷歌的WebRTC,默认不支持H265,好在网上有开源的实现,但是想要传输层支持H265需要重新编译生成libjingle_peerconnection_so.so。本篇主要记录一下编译过程。<a href="https://github.com/open-webrtc-toolkit/owt-client-native">项目github地址:https://github.com/open-webrtc-toolkit/owt-client-native</a> +自己通过虚拟机安装Ubuntu18.04并翻墙,无论如何都无法编译成功,无奈,购买了1个月香港云主机,编译成功! +假设当前路径为/home/zhanggf</p> +<h2 id="1-下载代码">1. 下载代码</h2> +<pre tabindex="0"><code>git clone https://github.com/open-webrtc-toolkit/owt-client-native.git +</code></pre><p>下载完成后,将目录重命名为 src</p> +<pre tabindex="0"><code>mv owt-client-native src +</code></pre><h2 id="2-下载-depot_tools">2. 下载 depot_tools</h2> +<pre tabindex="0"><code>git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +</code></pre><p>下载完成后,设置 PATH</p> +<pre tabindex="0"><code>export PATH=$PATH:/home/zhanggf/depot_tools +</code></pre><h2 id="3-创建gclient">3. 创建.gclient</h2> +<pre tabindex="0"><code>vi .gclient +</code></pre><p>将以下内容复制到文件中并保存:</p> +<pre tabindex="0"><code>solutions = [ + { + &#34;managed&#34;: False, + &#34;name&#34;: &#34;src&#34;, + &#34;url&#34;: &#34;https://github.com/open-webrtc-toolkit/owt-client-native.git&#34;, + &#34;custom_deps&#34;: {}, + &#34;deps_file&#34;: &#34;DEPS&#34;, + &#34;safesync_url&#34;: &#34;&#34;, + }, +] +target_os = [&#34;android&#34;] +</code></pre><h2 id="4gclient-sync">4.gclient sync</h2> +<p>进入src目录,执行gclient sync。</p> +<pre tabindex="0"><code>cd src +gclient sync +</code></pre><p>后面就是漫长的等待,视网速情况,需要1-n个小时吧。</p> +<h2 id="5-编译">5. 编译</h2> +<p>进入/src/scripts 目录,执行python build_android.py开始编译。</p> +<pre tabindex="0"><code>cd /src/scripts +python build_android.py +</code></pre><p>全部编译完成大概1小时左右吧。</p> +<h2 id="6out">6.out</h2> +<p>最终生成的目标文件在src/out路径下,包括libwebrtc.jar和对应版本的libjingle_peerconnection_so.so。替换当前项目中的相关文件,恭喜,你的WebRTC项目已经支持H265硬编码了。</p> +<p>最后,编译成果放在了github,有需要的自取。<a href="https://github.com/ilei131/android_webrtc_h265">github链接</a></p> \ No newline at end of file diff --git a/tags/webrtc/page/1/index.html b/tags/webrtc/page/1/index.html new file mode 100644 index 0000000..e4a329d --- /dev/null +++ b/tags/webrtc/page/1/index.html @@ -0,0 +1 @@ +https://openwit.net/tags/webrtc/ \ No newline at end of file diff --git "a/tags/\347\274\240\344\270\255\350\257\264\347\246\205/index.html" "b/tags/\347\274\240\344\270\255\350\257\264\347\246\205/index.html" new file mode 100644 index 0000000..10aadce --- /dev/null +++ "b/tags/\347\274\240\344\270\255\350\257\264\347\246\205/index.html" @@ -0,0 +1,7 @@ +缠中说禅 - Openwit

#缠中说禅

缠中说禅笔记

+缠中说禅笔记
\ No newline at end of file diff --git "a/tags/\347\274\240\344\270\255\350\257\264\347\246\205/index.xml" "b/tags/\347\274\240\344\270\255\350\257\264\347\246\205/index.xml" new file mode 100644 index 0000000..dec8746 --- /dev/null +++ "b/tags/\347\274\240\344\270\255\350\257\264\347\246\205/index.xml" @@ -0,0 +1,30 @@ +缠中说禅 on Openwithttps://openwit.net/tags/%E7%BC%A0%E4%B8%AD%E8%AF%B4%E7%A6%85/Recent content in 缠中说禅 on OpenwitHugocnSun, 19 Feb 2023 00:00:00 +0000缠中说禅笔记https://openwit.net/posts/czsc/Sun, 19 Feb 2023 00:00:00 +0000https://openwit.net/posts/czsc/<ol> +<li>而市场的波动,归根结底是在前后两个高低点 关系构成的一个完全分类中展开的,明白了这一点,市场就如同自己的掌纹一样举手可见了。</li> +<li>特别那些年线走平后向上出现拐点的股票,一定要看好了。至于还在年线下面的股票,先别看了,等他们上年线再说。</li> +<li>一只股票长起来千万别随意抛了,中线如果连三十天线都没跌破,证明走势很强,就要拿着。</li> +<li>有一个抛股票的原则,分两种情况,一种是缓慢推升的,一旦出现加速上涨,就要时刻注意出货的机会;另一种是第一波就火暴上涨,调整后第二波的上涨一旦出现背弛或放巨量的,一定要小心,找机会走人 。</li> +<li>上涨:最近一个高点比前一高点高,且最近一个低点比前一低点高。 +下跌:最近一个高点比前一高点低,且最近一个低点比前一低点低。 +盘整:最近一个高点比前一高点高,且最近一个低点比前一低点低;或者最近一个高点比前一高点低,且最近一个低点比前一低点高。</li> +<li>没有趋势,没有背驰。在盘整中是无所谓 “背驰” 的。</li> +<li>缠中说禅趋势力度:前一 “吻” 的结束与后一 “吻” 开始由短线均线与长期均线相交所形成的面积。在前后两个同向趋势中,当缠中说禅趋势力度比上一次缠中说禅趋势力度要弱,就形成 “背驰”。</li> +<li>一、首先只选择出现 “下跌 + 盘整 + 下跌” 走势的。二 、在该走势的第二段下跌出现第一类买点时介入。三、介入后,一旦出现盘整走势,坚决退出。</li> +<li>走势终完美。所有级别的走势都能分解成趋势与盘整。</li> +<li>牛市第一波涨的就是成分股,工行这最大的成分股不涨,还有谁涨?</li> +<li>所有情况都逃不过高位背驰卖,低位背驰买。</li> +<li>大跌,就把眼睛放大,去找会形成第三类买点的股票,这才是股票操作真正的节奏与思维。最好就是找有大级别第三类买点的强势股票(次级别不跌回中枢里面就是,但能不跌回最高点那自然是最强的)。选股票一 定要按技术来找,找有第三类买点的,或至少是刚从第三类买点起来的。</li> +<li>对于散户,根本没必须长期持有一只股票,那是大资金没办法的办法。对于散户,如果通道畅通的,最快的方法就是用第三类买点去操作,杀完一只继续一只,不断干下去,不参与任何的中枢震荡,只搞最强势的这才是散户该干的事情。持有到背驰卖点, 然后坚决走人,等待新的买点。</li> +<li>本 ID 所有介入的股票都不会走的,但一定会用震荡减低成本到 0 后继续增加筹 码。本 ID 介入一只股票,都是要至少持有两年以上的,甚至是天长地久,想快,就学好第三类买点,那是最快的。</li> +<li>长期投资,就是要在大级别买点介入 ,例如年线、季线、月线的买点,然后一直持有到大级别卖点再卖,这才是真正的长期投资。</li> +<li>不追高是投资第一要点。永远不追涨杀跌。没有股票是值得追高买的,当然也没必须杀跌卖股票。</li> +<li>一定要习惯于在放量突破回调时买股票,这样风险小很多。不要在以巨量大阴线构造顶部的下跌反抽中介入,这是投资最大忌。</li> +<li>新资金介入迹象:放量后有一个缩量站住的过程。</li> +<li>中线就是在周线级别上, 中短线指日线级别,短线指 30 分钟,超短指 5 分钟或 1 分钟的最小级别。短线是用来摊成本的,要挣大钱,关键是看中线。</li> +<li>开盘大幅度低开后,第一次次级别回拉不破顶或盘整背驰将构成最好的第二类卖点,这类卖点往往是突发事件中最好的逃命点。</li> +<li>个股,强者恒强在证券中表现明显,所以一直强调回调介入机会。</li> +<li>缠中说缠的 MACD 定律:第一类买点都是在 0 轴之下背驰形成的,第二类买点都是第一次上 0 轴后回抽确认形成的;卖点的情况就反过来。 第一次大洗盘让 MACD 日线第一次回拉 0 轴后一定要买回来。</li> +<li>跌,只能考虑买;涨,只能考虑卖。</li> +<li>精通本 ID 的理论后,涨跌的分别就消失了,在脑子里只有买点和卖点,没有什么涨跌,达到这种境界,就算初步有成了。</li> +</ol> +<p>阳胜进;阴胜出;小倍阳,大胆入。 +价板量缩,后劲不错;价板量平,可以跟进;价板量爆,赶快出逃。</p> \ No newline at end of file diff --git "a/tags/\347\274\240\344\270\255\350\257\264\347\246\205/page/1/index.html" "b/tags/\347\274\240\344\270\255\350\257\264\347\246\205/page/1/index.html" new file mode 100644 index 0000000..e0526f8 --- /dev/null +++ "b/tags/\347\274\240\344\270\255\350\257\264\347\246\205/page/1/index.html" @@ -0,0 +1 @@ +https://openwit.net/tags/%E7%BC%A0%E4%B8%AD%E8%AF%B4%E7%A6%85/ \ No newline at end of file diff --git "a/tags/\351\223\266\346\262\263\351\272\222\351\272\237/index.html" "b/tags/\351\223\266\346\262\263\351\272\222\351\272\237/index.html" new file mode 100644 index 0000000..e45ad1f --- /dev/null +++ "b/tags/\351\223\266\346\262\263\351\272\222\351\272\237/index.html" @@ -0,0 +1,7 @@ +银河麒麟 - Openwit

#银河麒麟

银河麒麟制作deb安装包

+银河麒麟制作deb安装包
\ No newline at end of file diff --git "a/tags/\351\223\266\346\262\263\351\272\222\351\272\237/index.xml" "b/tags/\351\223\266\346\262\263\351\272\222\351\272\237/index.xml" new file mode 100644 index 0000000..05971c6 --- /dev/null +++ "b/tags/\351\223\266\346\262\263\351\272\222\351\272\237/index.xml" @@ -0,0 +1,38 @@ +银河麒麟 on Openwithttps://openwit.net/tags/%E9%93%B6%E6%B2%B3%E9%BA%92%E9%BA%9F/Recent content in 银河麒麟 on OpenwitHugocnSun, 19 Feb 2023 00:00:00 +0000银河麒麟制作deb安装包https://openwit.net/posts/kylindeb/Sun, 19 Feb 2023 00:00:00 +0000https://openwit.net/posts/kylindeb/<p>本篇记录一下银河麒麟制作deb安装包的主要步骤。 +制作安装包的命令很简单,以我近期的项目为例:</p> +<pre tabindex="0"><code>dpkg -b hsclient/ hsclient_1.0.0_arm64.deb +</code></pre><p>以上命令会将hsclient文件夹的内容制作成hsclient_1.0.0_arm64.deb安装包。制作时间取决于hsclient文件夹的大小。 +所以,主要工作量在于hsclient文件夹的准备。 +使用tree 命令查看hsclient目录结构如下: +<img src="https://openwit.net/img/hsclient.webp" alt=""> +可执行文件及相关依赖存放在HSClient目录,这里为了方便展示,我将里面的内容清空了,deb包安装完成后,可执行文件所在目录即为/opt/hbfec/HSClient。 +control 文件内容如下:</p> +<pre tabindex="0"><code>package: hsclient +version: 1.0.0 +architecture: arm64 +maintainer: hbfec +description: hsclient application +</code></pre><p>主要指定包名、版本号、系统架构、维护者、描述,根据实际情况填写即可。 +desktop 文件内容如下:</p> +<pre tabindex="0"><code>[Desktop Entry] +Name=HSClient +Name[zh_CN]=会商客户端 +Comment=HSClient application +Exec=/opt/hbfec/HSClient/HSClient +Icon=/usr/share/icons/hsclient.png +Terminal=false +Type=Application +Categories=Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http; +StartupNotify=true +</code></pre><p>主要指定可执行文件相关配置:名称、可执行文件路径、图标、应用类型等。 +程序图标这块没有固定的实现。简单实现,就放在/usr/share/icons目录下即可,推荐48*48大小,desktop中需要写绝对路径Icon=/usr/share/icons/hsclient.png。完整实现的话,icons目录下需要创建hicolor目录、kylin-icon-theme目录以及 kylin-icon-theme-one目录,目录下都需要放置对应大小的图片,desktop中可以直接写文件名Icon=hsclient,可参考已安装的其他应用程序。</p> +<p>以上内容都准备好以后,就可以通过文章开始处提到的命令制作安装包了。 +需要指出的是,在DEBIAN目录中至少要有control文件,还可以有preinst(preinstallation)、postinst(postinstallation)、prerm(preremove)、postrm(postremove)、copyright(版权)、changlog(修订记录)和conffiles等。 +具体作用如下:</p> +<pre tabindex="0"><code>preinst 文件:解包前运行的脚本。 +postinst 文件:解包完成并将目录文件拷贝到系统后,所需要执行的配置工作。 +prerm 文件:软件卸载前需要执行的脚本。 +postrm 文件:软件卸载后需要执行的脚本。 +control 文件:描述软件包的名称(Package),版本(Version),描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。 +</code></pre><p>银河麒麟下制作deb安装包涉及的主要内容就是这些,希望可以帮到有需要的人。</p> \ No newline at end of file diff --git "a/tags/\351\223\266\346\262\263\351\272\222\351\272\237/page/1/index.html" "b/tags/\351\223\266\346\262\263\351\272\222\351\272\237/page/1/index.html" new file mode 100644 index 0000000..cfdf439 --- /dev/null +++ "b/tags/\351\223\266\346\262\263\351\272\222\351\272\237/page/1/index.html" @@ -0,0 +1 @@ +https://openwit.net/tags/%E9%93%B6%E6%B2%B3%E9%BA%92%E9%BA%9F/ \ No newline at end of file diff --git a/theme.png b/theme.png new file mode 100644 index 0000000000000000000000000000000000000000..265ac1f6e7a9dc31301dedd2e6339385d1d6b5d4 GIT binary patch literal 7991 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 literal 0 HcmV?d00001 diff --git a/theme.svg b/theme.svg new file mode 100644 index 0000000..b12bc66 --- /dev/null +++ b/theme.svg @@ -0,0 +1 @@ + diff --git a/threads.svg b/threads.svg new file mode 100644 index 0000000..f2967d6 --- /dev/null +++ b/threads.svg @@ -0,0 +1 @@ + diff --git a/twitter.svg b/twitter.svg new file mode 100644 index 0000000..7abe197 --- /dev/null +++ b/twitter.svg @@ -0,0 +1 @@ +