Hanjst汉吉斯特🙋优化升级开发者模式

今日之北京(2021Mar16)与昨日之北京,是地狱(狂风大作沙尘暴白昼如夜)与天堂(和风暖阳春光大好)。慨叹大自然之神力,喟然全人类仍渺小。

Hanjst汉吉斯特🙋距离上次更新差不多有一年左右,期间陆续部署和使用,均工作良好。近日在一个老项目(有福工坊UfqiWork :https://ufqi.com/work )的新模块中测试时,发现一个小问题,问题虽小,其排解复杂过程和背后隐藏的问题却是值得书记于此。

故障表征为在 有福工坊UfqiWork 中当用户进行地址切换时,有时页面显示为空白页。这个“有时”的情况,经过多轮多设备、多浏览器的测试试验,发现只在iOS的Safari浏览器中会出现空白页现象。其他时候均正常显示,包括在iOS,Andr,Windows,Mac,Linux等,同时包括Chrome、Edge、Firefox、Safari等浏览器上,也均正常。问题锁定在 iOS + Safari 这个情况下是空白页。

由于是手机移动端,无法开启开发者模式(后面会动用iOS连接Mac的开发者模式大杀器,是后话),只能先从服务器端进行逐行诊断扫描。经过数次的接近对比,发现故障页面和正常页面的差异进一步地被定位到几行代码上,而这几行代码的共同特征又是页面的URL地址参数。


Notepad++ 文件逐行对比

通过NotePad++的文件对比功能,在上图中,左侧是能够正常显示的页面,右侧是无法正常显示,呈现为空白页的页面。由于从服务器端来看,已经正确地的输出相关代码,为何URL地址参数为影响到页面的正常加载? Hanjst汉吉斯特在接管页面之后干了些啥? 怎么会对URL参数进行区别对待或者进行相关修改?至此,后端、服务器端能做的工作已经到了极致,前端页面能显示和不能显示的差异已经很明确的定位到URL地址参数上了。

很快我们在前端打开了 Hanjst 的调试模式,在初始化时,给与变量 IsDebug 为 true.

 window.Hanjst = {‘JsonDataId’:’Hanjstjsondata’,
‘IsDebug’:true,
‘RandomString’:’randi’,
‘LoadingLayerId’:’Hanjstloading’}; // optional

遗憾地是,当Hanjst设置为调试模式时,空白页故障页面依然没有给出更多的调试信息( 后面为针对此处进行改变,是后话)。

迫不得已地,我们开始寻求在手机端怎么对其浏览器行为进行侦测,通过搜索引擎检索,找到iOS设备通过线缆连接到Mac上,然后同时开启Safari,可以在Mac的Safari的开发者模式下的控制台看到同步在iOS设备上是Safari相关页面的调试信息输出。

这个 iOS Safari + Mac Safari 的连接及配置的过程稍微复杂,下面是具体的步骤信息( -R/V2SS ),转载备忘。


To start debugging you’ll need your iOS device, a mac and a lightning cable. Then start by making sure both devices are configured to allow this.

Configure devices:

  1. Launch Safari on your mac; open preferences and within the advanced tab click the checkbox for “Show Develop menu in menu bar”.
    1. Confirm, you should now see a menu called Develop in the top bar
  2. On your iOS device (iPhone or iPad) go to Settings > Safari > Advanced and slide the toggle on for Web Inspector.

Debug a site in Mobile Safari:

  1. Connect your iOS device (iPhone or iPad) to your mac
  2. On the device browse to your site in Mobile Safari
  3. On your mac’s Safari, under the Develop menu you should see an option for your iOS device (either called iPhone or iPad).
  4. In that sub-menu you should see the url of the website you want to debug. Click that url and it will open a new Safari window with the full Safari Dev Tools.
  5. Start your investigation!

经过一番探索和折腾,最终我们在Mac的Safari控制台上看到在iOS上的Safari访问我们的目标故障页面的调试输出信息,结果出乎所料。


iOS Safari 连接Mac Safari调试

在控制台输出的调试信息中,Hanjst汉吉斯特确实执行失败了,抛出异常的消息是遇到未识别的关键词“tel”, 而tel 在上文中指示为“tel:00030101″。 根据这些信息,问题就一目了然了,iOS版的Safari在收到 addrCode=00030101 这样的文本时,根据浏览器设置,自动地对 00030101 加上了电话协议的链接,相关参数变成了: addrCode=<a href=”00030101″>00030101</a> . 于是问题发生了,Hanjst预期的是对纯文本进行显示,结果多出了 <a href=””></a> 等这些字符。

实际上,Hanjst有对待待处理的支付进行双引号转义的。此处之所以发生了异常,一时iOS Safari在终端对文本进行了修改加上了超链接,另一方面还在于这一句 Hanjst语句的书写。
{$pageUrl=”abc.jsp?addrCode=00030101″}

这种直接赋值语句的写法,就跳过了 Hanjst本身对待处理字符串的双引号转义的处理程序。
问题逐渐清晰,在iOS的Safari中,如果默认开启了电话号码识别,而且页面中相关变量又有点类似电话号码,再则在Hanjst的语句中写有如下这样的语句,四则碰巧这个语句是直接写在Hanjst的主模板文件( 参考 -Hanjst-doc )中, 同时满足这四个条件,则触发这个异常报错。
{$aStr=”aName=00001234567″}
–> 
{$aStr=”aName=<a href=”tel:00001234567″>00001234567</a>”}

弄清问题之后,我们开始着手进行修正,将aName的待赋值放入HTML的一个input元素之中,iOS的Safari目前默认将不对input元素的值进行自动追加tel协议超链接。如此则可以回避该问题。

{$aStr=”aName=00001234567″}
–>
<input id=”aNameTag” name=”aNameTag” value=”00001234567″ type=”hidden”/>
{$aStr=”aName=”+document.getElementById(‘aNameTag’).value}

故障原因找到,问题得以解决。
鉴于在移动终端上如此艰难地调试空白页面类似故障,我们还需要进一步地升级改进Hanjst汉吉斯特,使之能够在故障发生时,除了在控制台输出异常信息,还应该考虑移动终端上无法实时地、轻易地获取控制台输出信息的情况。结合这个Issue所反馈到的信息、解决问题获得的经验,对Hanjst汉吉斯特升级改进如下。

console.log(JSON.stringify(e1200, Object.getOwnPropertyNames(e1200));
–>
var tmpStr = JSON.stringify(e1200, Object.getOwnPropertyNames(e1200));
console.log(tmpStr);
if(isDebug){ window.alert((new Date())+’:\n’+tmpStr); }

如此改进之后,当Hanjst开启调试模式之后,遇有上述异常抛出,除了在控制台输出相关异常信息外,还通过windows.alert弹出框告知调用者,从而更方便移动终端用户进行相关信息调试。Hanjst改进后的调试信息如下图。


Hanjst 汉吉斯特在移动端浏览器调试

升级改进后的Hanjst将更加容易地的调试iOS上Safari的异常抛出信息,同样地,这些改进也可以帮助在移动设备上轻易地调试的Chrome、Firefox等中Hanjst的表现。


Hanjst汉吉斯特其他改进:

 1. 改进对 if conditionExpr 的支持:
{if aString.indexOf(‘abc’) > -1}
    {$hasAbd=true}
{/if}


祝愿明天会更好! 就如同我们越来越明晰地看到全人类即将战胜新冠肺炎病毒!

以上跨屏、跨设备传输截图图片使用:


Hanjst
Hanjst 汉吉斯特 Logo

🙋Hanjst汉吉斯特 是一种基于JavaScript的模板语言及模版解析引擎,她运行在客户端或服务器端。

🙋Hanjst汉吉斯特 能够表述逻辑控制,能够实现与服务器端模版语言相同的强大功能。

  • Hanjst当完全在客户端解析时,节省服务器端计算资源;

  • Hanjst模板语言独立,不与服务器端资源做任何绑定;

  • 纯粹的MVC,层间数据用JSON格式传递;

  • 常见模板语言功能全支持,附带复杂而强大的JavaScript编程能力;

  • 无学习成本,直接使用JavaScript书写模板语言;

  • ….

Hanjst is a JavaScript-based templating language and parsing engine that runs on both the client-side and/or server-side.

Hanjst can express logical controls and achieve the same functionalities as the server-side templating languages.

  • Hanjst’s Run-time in client-side, reduce computing render in server-side;

  • Hanjst is Language-independent, not-bound with back-end scripts or languages;

  • Totally-isolated between MVC, data transfer with JSON;

  • Full-support template tags with built-in logic and customized JavaScript functions;

  • No more tags languages to be learned, just JavaScript;

  • ….

呼应开头北京的沙尘暴!


北京风和日丽-vs-沙尘暴

 https://ufqi.com/blog/hanjst-updt-with-safari-tel/
-R/12Sg

发表在 -Hanjst/-汉吉斯特, 编程技术 | 标签为 , , | 一条评论

中国国民党革委会中国国民党Apache Softwares亮月亮科技

写写年度收益率年均收益率和年化收益率-4

没想到这个年化收益率写到第四篇,这一篇按之前年化收益率的叙述( https://ufqi.com/blog/income-rate-annuals-with-yale/ ),我们来分析股神、世界首富沃伦巴菲特(Warren E. Buffett)及其背后的公司Berkshire Hathaway Inc的历年投资收益情况, 同时拿来与耶鲁捐赠基金进行一些比较.

在动笔之前,我们搜索一下股神的相关股市的故事,材料很丰富,其成神之路也几乎不可复制,令人敬佩。在Berkshire的官网上可以轻松查询到股神巴菲特自1965年以来的历年的投资收益率,同时也包括有截至最后年份的年化收益率。截至2020年底,股神长达55年的投资历程(1965-2020),55年长期投资的年化收益率高达 20%, 当之无愧的神仙,财神。

Berkshire官网上的数据以2018年为分水岭,2018年之前的数据与之后的数据由于统计口径不同,导致是两个完全不同的版本,差异是会计计算方法,2018年之前没有适用GAAP(Generally Accepted Accounting Principles, 被广泛接受的会计准则,美国会计准则),2018年后则是适用了GAAP。具体到每一年年份上,两者差异挺大的,比如1965年的Non-GAAP的年度收益率是 23.8%, GAAP之后就变成了 49.5%, 1966年的Non-GAAP: 20.3%, GAAP: -3.4%, 具体可以参考Berkshire 2018年的年度报告。下文会再提到GAAP。

尽管每一年的调整前后都变化挺大的,有升有降,但拉长历史来看,多年后的年化收益率居然变化不大。
由于我们前一节在考察耶鲁捐赠基金的收益率数据时,只能拿到最早到1997年的数据,所以如下我们选取Berkshire的数据时,也从其1997年的数据开始对比考察。

也同样是由于耶鲁捐赠基金的对比基准选择了道琼斯工业指数,而不是SP标普500指数,所以这里我们也继续使用道琼斯工业指数。在Berkshire官网上,其基准对比的是SP标普500指数。同为美国股市指数,道琼斯工业指数与SP标普500指数虽有差异,但很相似。

8. 股神巴菲特24年来的年度、年化收益率分析

数据来源于Berkshire官网, https://www.berkshirehathaway.com/reports.html ,Berkshire的自我介绍:
“Berkshire Hathaway is re-engineering small business insurance.”
还是 Small business, 是依然很谦虚,还是没有更新官网?

Fig-1. Berkshire历年投资收益率, 对比耶鲁捐赠基金,道琼斯工业指数, 1997-2020

8.1. 过去24年未能跑赢耶鲁基金

过去24年里,巴菲特领导的Berkshire投资年化收益率为10.15%(10%),比老耶鲁基金的24年里年化收益率 11.94%(12%)略低,但仍是非常亮眼和令人骄傲的成绩。回顾最近20年来,世界经济2008金融危机,2018中美贸易战和2020新冠疫情,都对经济发展产生了广泛而深远的影响,股神巴菲特等人能持续保持财富按预期增长,实属不易!


Fig-2. Berkshire与耶鲁基金、道琼斯指数对比

巴菲特近24年来的收益跑输了耶鲁基金,可能主要归因于股神的主要资产在证券市场,而耶鲁基金正是依靠多元化资产配置,成功在股灾时避开了一部分亏损。可能所有的高手之间最后的比试,不是谁赚取得多,因为普通行情或者大涨行情,都赚取得很多,而是比试在亏损时,谁亏损的少。这一点恰如体育竞技比赛时,高手之间的竞技,更多的是依靠对手的失误。

根据网上盛传的资料,巴菲特是价值投资的倡导者,在选择具有价值的股票(很湿的雪和很长的坡道)的同时,也同时强调择时“别人贪婪时恐惧,别人恐惧时贪婪”。可能正是这种主动管理带有浓厚个人志趣和投资眼光,使得Berkshire的年收益率与道琼斯工业指数没有很强的相关性。

股神在Berkshire年度报告2019中写道他们选择股票与买入时机时,说了三个基本条件:1)在有形资产净值计算上有好的投资收益,2)有能力的且诚实的经理人和3)相对合适的价位。“In addition, we constantly seek to buy new businesses that meet three criteria. First, they must earn good
returns on the net tangible capital required in their operation. Second, they must be run by able and honest managers.
Finally, they must be available at a sensible price.”

8.2. 一直跑赢道琼斯工业指数,且与其不相关

进一步地计算,我们发现Berkshire的年收益率的变化与道琼斯工业指数和耶鲁捐赠基金均没有明显的相关性,呈现弱相关或者不相关,相应的系数分别为 0.52 和 0.34。

Fig-3. 道琼斯指数、巴菲特投资和耶鲁基金年度收益率对比, 2997-2020

股神巴菲特的24年年化收益率 10.15% 跑赢了道琼斯工业指数 6.7%,与之对应的相关系数为 0.52, 说明还是有一定的弱相关。大致可以推测,在大面积股灾的情况下,股神的股票配置也未能独善其身。比如在过去的24年中,2002,2008,2015等股神与大盘指数都同时录得了亏损记录。幸运的是,在股灾时,股神依然能够赢取大盘指数,跌的时候少跌些,而赢的时候则多多赚取了一把。这是股神的魅力所在之一吧。

8.3. Berkshire股神巴菲特视角下的GAAP

巴菲特作为Berkshire董事会主席在公司年报2018,2019中都明确表示反对采用GAAP方式编制年报数据,尤其是每年的年化收益率。

网上对于GAAP的评价,正面多于负面,原因在于市面上很多上市公司,需要统一的描述语言与标准来向公众报告年度业绩。如果没有统一的标准,很容易出现鸡同鸭讲,雪梨对蜜桃的情形,不利于公众解读和比较各个上市公司的业绩。

关于GAAP,股神在Berkshire公司年报2019中,在一节名为 The Power of Retained Earnings 中进行了详细说明。简而言之,股神巴菲特希望Berkshire的股东关注“到手的收益”(Operation Earnings)——这里主要是指股票的分红,而不要关注由股价上涨或下跌带来的“浮盈”或者“浮亏”——因为那是未交割未实现的部分(unrealized)。

2018年之前,Berkshire汇报给大家的收益,都是已经到手的分红等已经实现了的,不包括浮盈或者浮亏部分的。这部分大多数年份其收益率都是正数。
GAAP新规要求在年报中,需要包括浮盈和浮亏部分,这么一转换,Berkshire的部分年份的收益率就有正转负了,也有正的更高,或者负得更厉害的情况。终止,投资回报的振幅变大了许多。这可能也是近24年来,股神巴菲特的年化收益率(适用新GAAP)略低于耶鲁基金的年化收益率的原因之一。

一个实际的例子,比如Berkshire持有Apple Inc和Coca-Cola股份占比为5.7%, 9.3%, 2019年这两家公司的分红分别为 773M, 640M,而这两家公司股票市值当期的浮盈分别是2519M,194M。美国苹果公司股市浮盈很多,然而其分红却比可口可乐少,而可口可乐股市浮盈很少分红却与苹果公司差不多。

9. 年度、年化收益率分析小结-3

9.1. 股神巴菲特背后财大气粗的靠山

我们在此前的讨论小结中认为,在证券市场淘金,一般的守则是高抛低吸。股神巴菲特却有点另辟蹊径的意思,以自己感悟的三条选择标准,首先尝试100%买下,不能100%控股,再考虑部分持股,然后长期持有。在长期持有的情况下,享受连续不断的收益分红。

这的确有点像是滚雪球,有很厚很湿的雪和很长的坡道,发现这些,后面的就水道渠成。与在证券市场中频繁的审时度势地进行高低判断,进行高抛低吸不同,这种看似躺赢的背后,实际需要源源不断的的资金支持,尤其是分红较少或者没有分红的时期。

Berkshire具有某种不可复制的原因是其背后有Property/Causality Insurance业务,正是这些业务为其提供了源源不断的资金支撑,尤其是证券市场没有分红的时期。“Our property/casualty (“P/C”) insurance business has been the engine propelling Berkshire’s growth since 1967…, This collect-now, pay-later model leaves P/C companies holding large sums…”

因此,我们可以在高抛低吸地盈利模式下,额外增加一个在证券市场获利的途径,以股神巴菲特的选择标准,选定标的物,然后长期持有,享受分红,前提是有其他业务的现金流支撑。截至2019年,这些保险业务积累的浮动资金从1970年的39M,增加到2019年的129B(129,423M). 

这种二千亿美元的资金规模,我们在 写写年度收益率年均收益率和年化收益率-2 ( https://ufqi.com/blog/income-rate-annuals-with-cic/ )论述过,作为中国国家主权财富基金中投公司注册资本是2000亿美元。

美国政府2019年收了243B的公司所得税(corporate income tax), Berkshire一家缴纳了 3.6B,占比1.5%。

9.2. 山外青山楼外楼

我们从分析中国社保基金近20年年化收益率(8.5%)开始,进而分析了中国中投公司的近12年来的境外投资年化收益率(6.13%),小结道,证券市场淘金不易,顶级团队所获得收益与其他行业横向比较也是平均水平线上下,看似高大上,在充分竞争市场,实则获得正常收益。所使用方法也是高抛低吸。

随后我们发现通过资源配置多元化的耶鲁捐赠基金,另外一个传奇,近24年的年化收益率高达 12%,在高抛低吸的基础上,进行多元化配置到房地产、自然资源和私募股权等。

在之后我们聚焦到证券市场分析了股神巴菲特的传奇,55年来,年化收益率高达20%,尽管最近24年来,使用新的GAAP计算,年化收益率低于耶鲁基金,但不影响他证券市场“封神”。其所创立的价值投资也新开一派。

传奇远不止这些,低调的Jim Simons所领导的大奖章基金(the Medallion Fund),据传依靠量化投资,收获了高于股神巴菲特的年化收益率(30%?)。量化投资,依靠数学模型,依靠计算技术,自动化高频交易,不断发现并放大微小的利差,重复利用这些利差进行套利,与价值投资可谓是大相径庭,他们完全不看“价值”。

山外青山楼外楼,令各国政要都头疼的George Soros所领导的量子基金(对冲基金, Hedge Fund),依靠做空或做多,一度兴风作浪到触发一个国家或地区的金融危机、经济危机。他本人出席美国国会质询时,却说,他的一切手段都是合法的。

—-

这是温习经济学著作的第七篇习作,之前的各篇附列如下。

  1. 写写年度收益率年均收益率和年化收益率-3, 
    https://ufqi.com/blog/income-rate-annuals-with-yale/
  2. 写写年度收益率年均收益率和年化收益率-2 , https://ufqi.com/blog/income-rate-annuals-with-cic/
  3. 写写年度收益率年均收益率和年化收益率, https://ufqi.com/blog/income-rate-annuals/
  4. 治大国若过小家——写写王朝兴衰更替背后的经济账, https://ufqi.com/blog/political-reform-country-vs-home/
  5.  写写🏦存款利率贷款利率和负利率, https://ufqi.com/blog/captial-rate-and-minus-rate/
  6. 写写1929年美国经济大萧条与2020年美国股市大跌, https://ufqi.com/blog/us-1929-economic-crisis-2020-stock-shock/

—-

-R/y2SN , https://ufqi.com/blog/income-rate-annuals-with-buffet/

《投资学》进阶阅读推荐必读之书.

推荐:股神巴菲特是怎样炼成的?长文深度起底股神的传奇人生 , https://ufqi.com/news/ulongpage.842.html

发表在 社会生活 | 标签为 , , , , | 7条评论

Apache Softwares亮月亮科技OpenAI ChatGPTPdf Drive

写写年度收益率年均收益率和年化收益率-3

高瓴资本张磊在其新书《价值》一书中,描述了如下内容。

“…耶鲁捐赠基金(The Yale Endowments)的资产规模却不断扩大,从他(大卫-史文森, David Swensen)上任之初的13亿美元,增长到2019年6月的303亿美元,增长了22倍多,过去10年的年化收益率为11.1%,过去20年的年化收益率为11.4%,是世界上长期业绩最好的机构投资者之一,获得了基金管理界和华尔街的高度关注…”

这引发我们的兴趣,本来这个关于年化收益率的主题已经写了两篇,分别给出了年度收益率、年化收益率的定义及公式( https://ufqi.com/blog/income-rate-annuals/ ),考察和分析了全国社保基金投资收益率、中投公司境外投资收益率 ( https://ufqi.com/blog/income-rate-annuals-with-cic/ )。本篇我们打算深入分析一下美国耶鲁大学捐赠基金会(The Yale Endowments)的历年投资收益率。

6. 耶鲁捐赠基金24年来的年度、年化收益率分析

耶鲁捐赠基金的投资哲学(策略):”The Yale Investment Office seeks to provide high inflation-adjusted returns to support current and future needs of the University.  We work to establish an appropriate risk-adjusted asset allocation and seek out long-term partnerships across the globe with managers who provide deep analytical insights and improve the operations of public and private businesses.” 

Fig-1. 中国社保基金和美国耶鲁大学捐赠基金投资收益对比, 2001-2020, 最右侧为同时期美股道琼斯工业指数的相关数据

由上图对比数据可以看出,耶鲁捐赠基金的投资业绩相当亮眼。从官网查询可以获得最早1997年至今的年度收益率数据,据此可以进一步地计算出24年来的年化收益率,11.94%(12%)。这个数据高于20年来中国社保基金的年化收益率 8.5%. 大致1997-1999三年间取得了相当不错的成绩拉升了其整体年化收益率。耶鲁基金的计算方法略有偏差,他靠“财年”——当年7月1日至次年6月30日为一个财年,这个用财年计算周期与默认的用自然年(当年1月1日至12月31日)作为计算周期略有不同。

比如耶鲁基金唯一录得负数(亏损)的年份是2009年,实际当年股市大灾是发生在2008年下半年,这种偏移或偏差后面还会继续提到。

横向比较,2000、2001、2002三个年份,无论是中国社保基金、美国耶鲁基金,还是美股道琼斯工业指数,都表现不好,尤其是美股道琼斯工业指数,连续三年下跌。同时期的社保基金和耶鲁基金能够保持正收益,实在是难得。中国社保基金与美股可能关系不大,单独考察耶鲁基金与道琼斯工业指数或更有意义。在美股大跌的年份,耶鲁基金能够不跌甚至是小赚,可能与其引以为傲的资产配置有关。

6.1. 耶鲁基金资产配置多元化、持续不断调整配比

Fig-2. 耶鲁捐赠基金多元化资产配置, 1990-2020

通过Fig-2 可以看出耶鲁基金的配置与传统股票股权相关的比例一直很高,如Domestic Equity(国内股票)、Foreign Equity(国外证券)和Absolute Return(绝对收益,绝对正收益?), 国内外股票投资和经封装或委托的具有绝对正收益性质的证券投资。

变化较大较明显地地方在于国内股票和风险投资的此消彼长,直接投资美股的比例下降,而私募股和风险种子天使投资增多。
也许正是通过这种少投资或者不直接投资美国股票市场,所以可以避免股灾时,财富大幅下挫。
然而,尽管耶鲁基金极力避免亏损或者负数收益,在其过去的24年里,仍有一个年份的收益是负数,而且相当可怕的负数。2009年的 -24.9%, 当年道琼斯指数下跌了 -33.84% , 耶鲁基金的风险敞口几乎等同于美股。

6.2. 与美股道琼斯工业指数强正相关


Fig-3 耶鲁基金年度收益率与道琼斯工业指数

通过Fig-3的历史曲线图可以看出,耶鲁基金的收益率与道琼斯工业指数具有弱的正相关关系,相关系数为0.68。考虑到耶鲁基金按财年计算,而道琼斯工业指数按自然年计算,这个相关系数大致可以提升到 0.75~0.85, 几乎达到强相关的范围(>= 0.8)。毕竟国内外股权投资、绝对收益投资,最终都要流入证券市场。

尽管耶鲁基金极力避免股灾对投资收益的影响,也即追求稳健和绝对收益为第一位原则,2009年 -24.9% 年度收益率应该属于历史罕见的异常。这一亏损数据中,可能股灾并没有多大贡献,而耶鲁基金在资产配置中有大量的Real Estates(房地产),这些投资带来的巨亏,最终导致耶鲁基金历史上罕见的巨亏,从而使得耶鲁基金虽然隔离了股灾的风险,但没有预料到祸不单行地叠加了房地产巨亏!
从Fig-2中,我们也看到2009年后,资产配置中房地产的比例在逐渐降低。不过诡异的是,其后伴随多年的是年度收益率也在走低,可见随着风险敞口的缩小,收益似乎也逐渐降低。

通过更加多元化的资产配置,20年来,虽然历经证券市场的牛熊市,耶鲁基金当之无愧的基业长青,跑赢了道琼斯工业指数近一倍(11.94 vs. 6.7),也大幅跑赢了主要在证券市场淘金的中国社保基金和靠股灾大坑发财的中投公司的同期收益率。 

7. 年度、年化收益率分析小结-2

通过在 5.1、5.2节里,我们大致看到在证券市场赚钱是很难的,即便聪明绝顶且资金充沛,要想获得超出行业平均收益率,也不是容易的事。

通过证券市场获利的基本原则是高抛低吸,由于高低的相对性,实际操作起来要充分考虑各种因素进行判断,量化一下就是需要进行概率计算,在某种场景下,纳入各种考量因子,计算进行投资时的赢的概率。

经过对耶鲁基金投资的分析,我们在证券市场之外获悉多元化投资对整体收益率的影响,通过房地产、自然资源(矿产)等非金融市场的投资,可以放大投资收益。
正像硬币的两面,当房地产、自然资源遭遇行业危机时,也可能放大亏损。总体而言,多元化资产配置,收益率整体上要大于单一证券市场,可能是这个原因导致美国耶鲁基金24年来的年化收益率(11.95%)大于中国社保基金20年来的年化收益率(8.5%),大于中国中投公司12年来的年化收益率(6.54%)。

耶鲁基金是目前我们所考察长期投资年化收益率最高的对象。如有可能,我们希望再新开一篇继续这个分析,去看看股神巴菲特及其管理的投资公司的年化收益率情况。

—-

这是温习经济学著作的第六篇习作,之前的各篇附列如下。

  1. 写写年度收益率年均收益率和年化收益率-2 , https://ufqi.com/blog/income-rate-annuals-with-cic/
  2. 写写年度收益率年均收益率和年化收益率, https://ufqi.com/blog/income-rate-annuals/
  3. 治大国若过小家——写写王朝兴衰更替背后的经济账, https://ufqi.com/blog/political-reform-country-vs-home/
  4.  写写🏦存款利率贷款利率和负利率, https://ufqi.com/blog/captial-rate-and-minus-rate/
  5. 写写1929年美国经济大萧条与2020年美国股市大跌, https://ufqi.com/blog/us-1929-economic-crisis-2020-stock-shock/

—-

-R/j2SR , https://ufqi.com/blog/income-rate-annuals-with-yale/

《投资学》进阶阅读推荐必读之书.

发表在 社会生活 | 标签为 , , , , | 7条评论

愛自己悅己容2nd愛自己悅己容汽車老司機車載汽車老司機

写写年度收益率年均收益率和年化收益率-2

前述写到全国社保基金投资年度、年化和年均收益率分析及其与同期中国央行M2的增长率对比( -R/H2SR,  https://ufqi.com/blog/income-rate-annuals/ )。大致小结为社保基金投资之所以牛到厉害,由于在2007和2015中国股灾时能够成功逃顶获得远超出平均水平的收益率;同时在2019、2020两个年份,分别抢到低点,然后又获得较高的收益率;以此赢得20年来年化收益率8.5%的美誉,跑赢同期中国央行M2的增长率年化6%。

行文到这里,我们想进一步地写写中国另外一个投资大亨:中国投资有限责任公司,中投公司,看看他的投资业绩。毕竟与全国社保基金200亿人民币起家不同,中投以2000亿美元起家。她的投资业绩的年化收益率也值得品读。

4. 中投公司境外投资12年来的年度、年化收益率分析

中投公司2007年设立,是国家主权财富基金,初始资金规模2000亿美元。其业务主要分三块:中国国际、中投海外和中央汇金。前两者主要在境外进行投资活动,中央汇金是各大国有大银行的大股东。

在中投公司的官网上有截至2019年的投资业绩数据( -R/G2SZ )。截至2019年,其累积年化收益率为 6.13% , 略低于全国社保基金的 8.5%。 不过中投公布的数据统计口径有两处差异: 1) 年度净收益率(刨去税金等其他?), 2)计算时间以公司成立日2007年9月29日起计算(不是自然年?)。

在新华网的一篇报道中提到“新华社北京(2020年)9月25日电(记者吴雨)中国投资有限责任公司25日发布年报显示,按美元计算,2019年中投公司境外投资净收益率为17.41%,投资收益额422亿美元。” ( -R/a2SQ )。
由于我们即将进行的是趋势分析,上述两点差异并不妨碍将要做的分析与讨论。

纵向来看,12年来,中投公司境外投资收益率颇为中规中矩,没有太突出超常的收益率,也没有明显跌份的亏损,波动区间小于社保基金的收益率。初步推测,可能跟海外欧美国家证券市场波动小于中国沪深证券市场有关。因为从公司要求和管理团队风格来说,都是谨慎操作——赚多少无所谓,一定不能亏太多。

循着这个思路,我们把中投公司境外投资年度收益率(净收益率)的变化与美国股市道琼斯工业指数做对比,或能窥见在这不错的投资业绩背后的一些逻辑或手法。

中投公司境外投资在2008-2020这12年里,2009-2010, 2017和2019,这四个年份表现不错,其年度收益率分别为 11.7%, 11.7%(两年一样的?), 17.59% 和 17.41%。如果打开道琼斯工业指数的历史曲线进行事后判断分析,大致可以看到:
1) 2009年的大涨是由于2008年金融危机挖下一个巨大的坑,道琼斯指数低至 6440点;
2) 2010年的高收益,是由于2010年中有坑,在10000点徘徊,而年末又成功拉起到11500点附近;

3) 2019年的高收益,是由于中美贸易战2018年挖下的坑, 2018年末低至 21800点左右,而2019年末到 29000点;
4) 2020年预计会是高收益年份,估算给到 10%, 因为新冠疫情,在2020年3月份砸出巨型天坑,道琼斯指数低至 18000点,而2020年年末成功拉起到 30000点。

5)故意将 2017年的大涨留在最后说,这一年没有坑,近乎直线拉升? 为何能实现躺赢?这12年里,2017年唯一实现躺赢的年份,也即买啥都赚。

可以小结: 中投公司过去12年里,有5个年头将是大赚,而这些年份里,靠股灾砸出坑的有4次——2008年金融危机一次,2018年中美贸易战一次,2020年的新冠疫情一次,2010年中的小坑,原因不详。难怪在新冠疫情导致股灾时,有证券业内人士称之为“黄金坑”。
对于这种体量无限大“弹药无限多”的机构投资者来说,不怕套的无限长,在面临每次股灾时,似乎都会在心底泛起某种“大发国难财”的想法。

相反地,在2011、2015、2008和2018年里,都是亏损,从道琼斯指数上看,当年都是有坑,而且在年末没有反弹起来。令人称奇的时,2008、2018等大盘指数几乎都是 20%以上的下跌,而中投公司却能及时止损或者成功逃掉?即便是 2011、2015的坑,事后看来,也很深,很吓人,中投公司境外投资是如何做到及时止损或者成功逃顶的?

未卜先知的研判?如果说像社保基金等机构投资者主要在国内证券市场进行操作的话,我们还可以阴谋论地臆想一下可能的操作空间。然而中投公司境外投资主要投向的是欧美发达国家成熟运作的证券市场,如道琼斯工业指数等,我们几乎无法再进行任何阴谋论的猜测。
也许真实情况,只有那些实际操盘人知道,那些被称之为精英的操盘手们知道如何在牛市获取超过大盘的收益,而在熊市避免太多亏损。往往后者避免亏损,比在牛市获取超常收益更重要。

如果再横向地对比社保基金的神奇操作,或者真相就是那看起来再朴素不过的道理:高抛低吸。
2007年道琼斯指数连涨3年到高点 14200点左右;2017年连涨2年到24600点左右,或许在大跌来临之前的几周、几日,精英高手们已经逃离了,此为高抛。2008和2018股灾时,或他们已经在股灾前空仓持币待购了。也许没有2008、2018的股灾,他们同样会抛售,然后等待下一个入场的机会。

2011年和2015年的坑,或有点意外,其前期并没有连续的大涨。而坑后当年也有反弹,所以略微亏损在情理之中。从上帝视角来看,如果当时精英操盘手们能够在坑底进行买入操作时,或许当年的收益率能够扭亏为正。


美国股票道琼斯工业指数2007-2020

5. 年度、年化收益率分析小结

5.1. 金融证券市场赚钱是很难的。
纵向的20年、12年跨度观察,横向的全国社保和中投公司笔投资业绩比较,都说明这一点,靠钱生钱,这种有点“不劳而获”的行当,很艰难。根据数据( -R/c2SP ,有福常在:  https://ufqi.com/news/ulongpage.446.html  ),1995年-2018年,中国25个行业的平均利润率不过8.35%,依旧低于GDP年均增速。同时期,货币M2年均增速为16.14%,GDP年均增速为8.87%。

无论是全国社保基金还是中投公司,他们的资金量、团队操盘能力,如果说他们是这个地球上是二流的,估计无人敢称为一流的。他们勤勉尽责,殚精竭虑地工作,每年也是有亏有赚,多年后看,所获得收益,也基本与25个行业平均收益差不多( 8.35% )。

最顶级的人才团队,最顶尖机构,所获得的成绩不过如此 ( 8.5% 左右 )。排后面的二流团队、二流机构又所获几何?三流团队和三流机构呢? 草台班子呢?资金和投研能力都排在末梢的个人散户又如何?

当我们分别品读了社保基金和中投公司近20年的收益情况分析后,再来听听时任中国人民银行党委书记、银监会主席郭树清先生的话( -R/l2SW , -Url4P ):
“在打击非法集资过程中,要努力通过多种方式让人民群众认识到,高收益意味着高风险,收益率超过6%的就要打问号,超过8%的就很危险,10%以上就要准备损失全部本金。”

是不是有新的体会和感悟,醍醐灌醒,振聋发聩?这真不是吓唬人的!我们最顶级的团队上不封顶的资金量,没日没夜累死累活地干,也才只有 8% 左右年化收益率,随便来个隔壁老王,就能承诺 8% 年化收益率?

一时一事上获得暴利或有偶然性,基业长青的数年之后,能有媲美全国社保基金和中投公司的年化收益率,差不多可以去跟他们PK了。那么多基金经理,10年以上年化 10% 以上的,仍是凤毛麟角,恰如最精英最顶级的全国社保基金团队或者中投公司的团队。

5.2. 年化收益率攀高的秘诀:高抛低吸
高和低都是相对而言,何处为高,何处为低?
相比前一阶段,上涨了 10% 算高吗? 下跌了 10% 算低吗?
10% 不算的话,那 15% 呢? 20% 呢?
哪个算是高,又为何是?

另外,相比前一阶段,是前一天,两天,三天,一周,两周,三周,一月,两月,三月,半年,一年,两年?

即便是知道了此处是高不是低,或者是低不是高,那经济学中股价随机游走不可预测的魔咒又在时时响起…

于是,终极地,我们回到概率论和博弈论等上了。举凡知其不可为而为之,莫不是概率论或博弈论等,区别可能是,有的人赌的大,1%的胜率,也押上 90%的筹码;有的人堵的小,90%的胜率,只押上1%的筹码。

我们猜测,全国社保基金团队和中投公司境外投资团队,可能会 60% 以下的胜率不考虑押注,在有 7~80% 胜率时,也只押上 2~30% 的筹码。

—-

这是温习经济学著作的第五篇习作,之前的各篇附列如下。

  1. 写写年度收益率年均收益率和年化收益率, https://ufqi.com/blog/income-rate-annuals/
  2. 治大国若过小家——写写王朝兴衰更替背后的经济账, https://ufqi.com/blog/political-reform-country-vs-home/
  3.  写写🏦存款利率贷款利率和负利率, https://ufqi.com/blog/captial-rate-and-minus-rate/
  4. 写写1929年美国经济大萧条与2020年美国股市大跌, https://ufqi.com/blog/us-1929-economic-crisis-2020-stock-shock/

—-

-R/b2SO , https://ufqi.com/blog/income-rate-annuals-with-cic/

《投资学》进阶阅读推荐必读之书.

发表在 社会生活 | 标签为 , , , , , , | 9条评论

書中自有黃金屋書中自有顔如玉愛自己悅己容2nd愛自己悅己容

写写年度收益率年均收益率和年化收益率

银行存款利率一降再降,叠加一升再升的通货膨胀率( https://ufqi.com/news/ulonglist.5786.html ),实际上的存款利率已经早是负数,我们所持有的资金的购买力在不知不觉中降低再降低,贬值再贬值。只是由于官方存款利率还没有变成负数,直观上我们还感觉不到,或者刺激得不是那么强烈。

然而,“先知先觉”的同学们已经开始积极主动的进行投资理财了。在这项充满挑战和机遇,也伴随着刺激和风险的活动中,需要具备一些基础知识或者名词定义。其中较为高频和优先的词语叫做收益率,根据使用场景不同,又分为年度收益率,还有月度,月息,七日,每日收益率等等,还有年化收益率和年均收益率等。

这篇打算深究一下这几个收益率名词的定义和使用场景。这是温习经济学过程中的第四篇习作,之前三篇分别是《写写1929年美国经济大萧条与2020年美国股市大跌》( https://ufqi.com/blog/us-1929-economic-crisis-2020-stock-shock/ ),《写写🏦存款利率贷款利率和负利率》( https://ufqi.com/blog/captial-rate-and-minus-rate/ ) 和 《治大国若过小家——写写王朝兴衰更替背后的经济账》( https://ufqi.com/blog/political-reform-country-vs-home/  )。

前文在写写存款利率贷款利率和负利率的文章中已经谈到,当今,除了中国央行公布的官方存款利率是正数,美国美联储官方公布存款利率区间是0~0.25,其他一些国家和地区已经是存款负利率了。这只是名义存款利率,叠加通货膨胀率,则实际货币贬值得更加厉害,可能这也是国际社会上,不存钱,超前消费和信用消费诱因之一。

1. 年度、年化和年均的基本概念定义及计算公式

在讨论年度收益率,年化收益率和年均收益率之前,需要先定义和假设一下:
本金、期初/起初值,通常用 P 表示,Prime;
终值、末期/末值,通常用 F 表示, Final?
利率,用 R 表示, Rate;
期数、轮次,用 n 表示。
接下来要用到一些简单易懂的公式了,以便给那些“太长不看”的同学快速的答案。

年度收益率 R = ( ( F / P ) – 1 ) * 100% ;
年化收益率 R =  ( F / P ) ^( 1 / n ) – 1 ;
年均收益率 R = Sum ( R0 : Rn ) / n ;

其中: / 表示除法运算, * 表示乘法运算, ^ 表示幂运算, Sum 是求和函数, R0 是第一期收益率, Rn 是第n期收益率。这里的“期” 默认是指年。

年度收益率 含义是本年(自然年或者财政年),期末的数值除以期初的本金值,然后做百分化表示;
年均收益率 含义也相对好理解,就是每年平均,将多个年份的收益率加起来做算术平均数即可。年均还有另外一层意思是横向的,比如将同一年份内的多个不同数据对象的数值加起来做算术平均,如2019国民年均收入增长率。
年化收益率,相对较复杂一些,这里有复利计算的思想在里面,也即每年的收益率的计算总是以上一年的终值作为本金。另外,就是这里的轮次和期数 n , 当 n > 1 时,可以理解为多个年份后计算年化收益率;当 n < 1 时,表示短期收益率的延长理论值,这也是我们能够在小于一年期的理财产品中能够看到“七日年化利率”的由来。

行文至此,概念和理论希望已经说清楚了,接下来写写数据上的干货。我们希望使用上面的几个指标来考察一下全国社保基金(全国社会保障基金, ssf.gov.cn )权益投资收益的历年数据情况。

2. 全国社保基金投资年度、年化和年均收益率分析

拿全国社保基金投资收益率说事,是因为她干得漂亮。“(全国社保基金)理事会是境内最大机构投资者…,全国社保基金成立以来,取得了骄人的投资业绩,自20008月成立至2017年底,年均投资收益率8.44%累计投资收益额大于累计财政净拨入额。

Fig-1. 全国社保基金权益投资收益率2001-2020

上图表格中收录了全国社保20年来的每年年度收益率(绝对值),基于年度收益率,我们推导计算出了年化收益率和年均收益率。为了方便计算,我们假设了全国社保基金本金初期值为 10K,其实真实值应该是 200亿人民币左右。也为了凑数,我们根据2020年前11个月的数据,估算了2020年的年度增长率 15% 。

可以看出年度收益率波动较大,而年化收益率较平缓,年均收益率与年化收益率接近,且偏大。

可以看出,收益率最好和次高的年份是 2007和2006年,分别是 43% 和 29%。收益最差的年份是 2008和2018年,分别是 -6.8% 和 -2.3% 。令人惊奇是, 2009和2019都迎来了“报复性”的增长。
截至 2020年,20年来,全国社保基金年化收益率为 8.5% , 年均增长率为 9%, 这一业绩的确是“骄人”。之所以取得这样的成绩与好年份超高收益有关,如 2006-2007,2014-2015, 2019-2020. 其余年份也几乎乏善可陈。
这三个时间段里前两个刚好对应则中国股市是两次大的股灾,分别是2007年和2015年,牛气冲天之后一落千丈!全国社保基金的投资负责人是如何做到精准逃顶的?

2019-2020 这个时段的高收益却分别对应中国股市的两个低点,分别是2019年1月的2440点和2020年3月的2745点。中国股市分别在这两个低点之后迅雷不及掩耳之势快速拉升,2019年之后断崖下跌!2020年高位震荡至今。

小结她的傲人业绩,2006-2007, 2014-2015, 成功逃顶,赚取超高收益后在股灾来临之前一刻安全撤离;
2019-2020,成功埋伏,在市场最低点勇于加仓,在获得一定收益后,再度出逃, 如此操作,2019年一次,2020年一次,分别斩获 10+% 的收益率!
成功逃顶或有不可描述的缘由或故事,但成功埋伏确有某种投资人的慧眼识珠。
如果用美国投资大师沃伦巴菲特的话来配音,或就是那句“在别人贪婪时恐惧,在别人恐惧时贪婪。”

拉长历史来看,总是大道至简。20年来,全国社保基金的投资人可能换了几茬,也许回撤和亏损的理由各个不同,但赚取盈余的姿势和理由总是那么一致。只是我们凡夫俗子,不识庐山真面目,只缘身在此山中。做事后盘点说得头头是道,实盘操作当时已惘然。

3. 中国央行20年来的M2年度、年化和年均增速分析

Fig-1的表格中右侧是同时期中国央行M2的增长速度数据。广义货币供应量(M2,Broad Money)的定义大致约等于全社会的货币量。货币(M0)=流通中的现金,即流通于银行体系之外的现金。狭义货币(M1)=(M0)+单位活期存款;广义货币(M2)=M1+准货币(单位定期存款+居民储蓄存款+其他存款+证券公司客户保证金+住房公积金中心存款+非存款类金融机构在存款类金融机构的存款)。

为了方便计算,我们也假设了M2的本金、初期值为 10K。由于M2的增速里面一个重要因素是GDP的增长,所以我们还在后面增加了同时期的GDP增速。官方定义上,M2的增长,主要是由于GDP增加了。两者一致是理想状态,增加多少东西(货物或服务)印多少钱;如果GDP增速大于M2增速,则货币升值,如果GDP增速小于M2增速,则货币贬值。

通过上面的记录数据,我们发现全国社保基金投资年化收益率 8.5%, 确实傲人的业绩,而同时期的M2是多少呢? 通过公开数据收集、计算得出,2001-2020期间M2的年化增长率为 14.8% , 同时期GDP的年化增长率为  8.9%。于是我们有这样一组对比数据:

2001-2020年间主要年化收益率、增长率数据
全国社保基金投资年化收益率: 8.5% ;
中国央行M2年化增长率: 14.8% ;
中国GDP年化增长率: 8.9% ;
M2净增长率:M2增长率 – GDP增长率 = 6% ;

从这一角度看,全国社保基金投资收益跑赢了M2净增长率(扣减GDP增长率),净年化收益率为 8.5% – 6 = 2.5%。
进一步地,我们发现2001-2020这20年间,如果某项投资年化收益率低于 M2净增长率 6% 的话,其持有的货币(资产)的实际购买力是下降的,货币(资产)被贬值。

此外,根据M2的历史数据,我们会发现,2008年金融危机时候的“大放水”,“四万亿”的确推高M2,使其急速上升,致使2009年的M2年度增长率达到 27.7% 。而2017年以来,M2年度增长率开始大幅下降至 8% 左右,几乎与GDP年度增长率接近,似乎是完美的理想状态了。

小结全文,年度收益率年均收益率和年化收益率本不难理解和使用,希望上面的这些数据能够存档下来,便于后面接续使用,更长时期观察、对比和分析。

-R/D2SO

写写年度收益率年均收益率和年化收益率

《投资学》进阶阅读推荐必读之书。

发表在 社会生活 | 标签为 , , , , , , | 10条评论

書中自有黃金屋書中自有顔如玉愛自己悅己容2nd愛自己悅己容

GWA2吉娃兔引入JsDelivr公用CDN的开发与配置

新冠肺炎疫情持续差不多一年了,疫苗已经在望,希望人类早日战胜这个病魔。

GWA2吉娃兔 持续更新升级,这次在升级更新优化的路上,走得更远,尝试引入公用CDN(Content Delivery Network,内容分发网络)。借此,使得基于GWA2的各种应用程序、网页能够如虎添翼一般,更快的响应用户请求。这次改进源于我们持之以恒地追求——更高、更快和更强。

根据此前梳理的提速优化思路(-gMIS 吉密斯 升级:增加缓存,按时间快捷检索和全局SessionId等,https://ufqi.com/blog/gmis-update-with-cache-searchbytime/),我们分别在缓存和减少页面持续两个方便进行了各种优化改进。其中在缓存优化方向,已经进行了客户端缓存和服务器端缓存,独缺少网络层缓存(CDN)这块。迟迟没有下手进行这个网络层缓存的升级操作,一是CDN相对而言与代码层开发关系不大,或者没有关系;二是网络层的CDN几乎等同于加服务器、加带宽的意思,迟迟没有合适的机会。

根据 V2EX上技术高手的介绍,我们在考察了JsDelivr公用CDN之后,发现是一个很好的开源CDN方案,可以实现免费免备案使用的静态资源分发。

  WITH    

 

1. 使用JsDelivr的准备工作
JsDelivr 允许托管和分发的网页文件类型是JavaScript(.js)、CSS(.css) 和部分小尺寸的图片(.jpg, .png等)。

JsDelivr 可以读取开源发布在 npm 、GitHub和WordPress 上的以上相关静态文件。出于便于管理和更新GWA2所使用的全部静态资源类文件,我们选择将上述文件放在 GitHub 的公开项目上(Repository)。

在GitHub上为某个项目或者网站、App建立一个对应的Repos, 将GWA2 的 view子目录下的所有非html文件上传到 GitHub 对应的 Repos下即可。这些文件包括 ,js, .css, .ico, .jpg, .png 等等。

由于JsDelivr的目标是分发静态资源文件,当加载.html文件时,其content-type 为 text/plain , 所以目前还无法使用JsDelivr 分发 .html. 从另外一个角度来说,.html 文件通常包括有业务逻辑或者模板语言,放在自家服务器上,反而更好。

经过以上几步准备工作,现在可以通过如下路径访问到已经放入 CDN网络的静态文件。地址例如,

https://cdn.jsdelivr.net/gh/UserName/ReposName/view/SiteName/abc.css

其中, gh 代表在 JsDelivr语境中的 GitHub,
UserName 为当前资源文件在GitHub 上的用户名称,
ReposName 为当前资源文件在 GitHub 上的项目名称,
view 为 GWA2 的子目录,负责视图,文件结构保持与本地服务器相一致。

 

2. 在GWA2中引入CDN

GWA2 从最早时期已经采用了 MVC 分层设计,因此针对视图文件的修改,相对集中。所有视图文件的加载,都通过一个叫做 $viewdir 的全局变量进行控制。 $viewdir 告诉服务器或者模板引擎,视图文件的具体位置。

如果要引入JsDelivr ,则只需要在项目中,适当修改 $viewdir 的指向即可。通常涉及到的文件在 comm/footer.inc 中。

GWA2PHP:
$cdnStaticPrefix=”//cdn.jsdelivr.net/gh/UserName/ReposName”;
$viewdir = $cdnStaticPrefix.”/”.$viewdir;

GWA2Java:
//- +cdn, 12:34 2020-12-04
String cdnStaticPrefix = “//cdn.jsdelivr.net/gh/UserName/ReposName”;
viewdir = cdnStaticPrefix + “/” + viewdir;

 

3. 速度提升明显用户反馈良好

经过上述修改后,程序同步及html或模板更新后,页面浏览加载会感觉提升明显。直觉上会有所谓的“秒开”。这对于在国内浏览海外服务器的相关网站时,对比尤其明显。

理论上分析,一个HTML文件中,实际 html 代码的尺寸占比很小,网上有一些这方面的数据,可能在10%左右,而更多的则是需要呈现页面的 .js, .css和各类页面元素等。如果将后者这些静态资源文件交给CDN网络,其提速效果自然有突飞猛进的感觉。

另外,这些原本需要本地服务器解析请求做出应答的内容,完全交给了CDN网络,无疑极大地降低了本地服务器的负载和减少了本地网络的带宽占用。相应地,这些富裕出来的资源可以更好、更快地响应HTML页面的输出。

此消彼长,基本是在国内的用户浏览海外服务器的网站,页面打开实现“秒开”也是很有可能的。
这里的“秒开”应该主要是指首次打开某个全新的页面,由于GWA2已经在客户端进行了大量的缓存,在第二次之后打开或者刷新页面,这些静态的.js .css和图片文件等,多数将都由浏览器调用本地缓存来实现响应,那将是页面加载的极致快速。

有时候幸福来得就是这么突然,海外服务器的页面可以实现了秒开,而且这个CDN由于不涉及到具体内容文件,因此可以不用中国地区的备案,而且她也是免费的——GitHub免费寄存静态资源文件,JsDelivr负责免费分发到距离用户最近的地方——据说全球有上数百个CDN节点,这几乎可以媲美一流的CDN服务。

 

4. CDN回滚与容错

作为可靠的庞大的CDN网络,JsDelivr是稳定的,但也需要预防万一的突发偶然情况,如果由于某种未知的原因 JsDelivr突然不能用了,如何可以快速平滑的切回到本地服务器?

也即CDN服务需要能够在必要的时候进行回滚或者降级,以实现容错。这个在 GWA2 里改动相对简单,参照上面增加CDN的时候操作,如果感知到 CDN不可用时,可以清空其赋值即可将资源文件的请求切换到本地服务器上来。也即通常情况下说的所有CDN本击穿了。

GWA2PHP:
$cdnStaticPrefix=””; # failover
$viewdir = $cdnStaticPrefix.”/”.$viewdir;

GWA2Java:
//- +cdn, 12:34 2020-12-04
String cdnStaticPrefix = “”; # failover
viewdir = cdnStaticPrefix + “/” + viewdir;

5. 多源CDN及应用层CDN队列

显然,GWA2 可以在代码层实现多源CDN的集群式配置,我们可以在程序中定义 $cdnStatixPrefix 作为当前CDN分发网络的标志,可以可以同样地定义 N个不同的CDN网络,如 $cdnStaticPrefix2, $cdnStaticPrefix3… $cdnStaticPrefixN.

当有这么一个群组队列的CDN可以用时,可以使用随机算法或者权重算法,将请求分发给这个CDN池,从而实现更加可靠的内容分发。

当然,也可以加上一定的心跳检测装置,自动对下线失效的CDN做移除处理。同样地,基于心跳检测,将恢复正常的CDN网络加入到队列中来,从而实现网络自动化、智能化运行。

如上,完成 GWA2吉娃兔引入JsDelivr公用CDN的开发与配置.

 


-GWA2 吉娃兔 是“通用网络应用架构( General Web Application Architeture, https://ufqi.com/dev/gwa2/ )”,基于 -GWA2 可以轻便构建各种网络应用程序,
包括复杂的在线购物商城、在线医疗、在线教育、 旅游交易平台、社群或者社交网站和新闻资讯网站等,
也包括各种企事业单位网上门户,在线交互及服务作业系统等.  比如 开源通用管理信息系统软件 gMIS吉密斯( //ufqi.com/dev/gmis/ ), 新闻聚合 UfqiNew有福新闻( //ufqi.com/news/ )
还可以包括为NativeApp做服务器端支持, 甚至是WebApp的全部.
-GWA2 是为数不多的支持跨开发语言的应用框架,目前支持 -Java, -PHP, -Perl, -Aspx and -Python .

-GWA2 is a “General Web Application Architecture” and based on -GWA2 developers can easily build a variety of network applications,
including complex online shopping malls, online medical services, online teaching, travel trading platforms, community or social networking sites and news information sites, etc.
Also the applications include various online portals of enterprises and institutions, online interaction and service operations systems.
Moreover it contains server-side support for NativeApp, or even all of the WebApp.
-GWA2 is one of the web frameworks which provide cross-language support for -Java, -PHP, -Perl, -Aspx and -Python at present.

-GWA2 is E.A.S.Y 
Easy Along, Swift Yield
轻松启动, 快速产出.


 

JSDelivr: A free CDN for Open Source

fast, reliable, and automated

serving ~ 94 billion requests / month
 

serving ~ 2990 TiB / month
 

around since 2012
 
发表在 -GWA2, 服务器运维, 编程技术, 计算机技术 | 标签为 , , , , | 3条评论

中国国民党Apache Softwares亮月亮科技OpenAI ChatGPT