不理解,我是一个普通人,我平时辛辛苦苦上班,晚上回去休闲玩玩游戏,也被朋友推荐玩了原神,反正免费白嫖做的也不错就一直断断续续玩着。
结果在网上我说我玩原神,啪上了就给我骂一句原皮,我说你咋骂人呢?人家来一句快看快看米卫兵急了, 急了急了。
我越解释人家笑的越欢。最后我明白了,这TM就明摆着想找一个理由用来光明正大的发泄自己心中的恶念,就是TMD心里阴暗现实中老老实实又想做龌龊的事,实际又懦弱无能没胆子现实中骂人,甚至没胆量在网络上直接骂人,才像一只老鼠一样躲在缝里随时找一些能让自己宣泄心中恶念的机会,跟随大溜躲在暗处激动的叫骂两声,然后赶快缩回脑袋耳朵一捂为自己刚刚的壮举沾沾自喜,嘴里念叨着你急了你急了,我赢了我赢了。从而为自己毫无意义的无足轻重的无趣人生找一些卑劣的乐子。
木秀于林,风必摧之。
我支持。因为匿名是网络环境差的万恶之源。
知乎做得好。与此同时,头条和抖音也上线了IP属地。
根据 @新浪财经 报道:
据悉,今日头条、抖音展示的帐号IP属地均为用户最近一个月内最后一次发文或评论时的网络位置,境内展示到省(直辖市、自治区、特别行政区),境外展示到国家(地区)。而且帐号IP属地以运营商提供信息为准,相关展示不支持手动开启或关闭。
在公告中,今日头条和抖音均提出,展示账号IP属地是为了维护真实有序的讨论氛围,减少冒充热点事件当事人、恶意造谣、蹭流量等不良行为。快手则表示是为了防止部分网友在热点事件中出现蹭流量、传播不实信息、冒充当事人等干扰正常讨论的行为。
实际上,在字节跳动和快手的产品上线该功能之前,微博已经于今年3月先行一步。3月17日,微博官方账号称,因发现个别冒充当地网友发布和传播不实信息的行为,微博将上线“用户个人资料页展示近期发帖所在地”的功能。
据悉,微博也是在个人主页中展示用户最近一个月内最后一次发布微博或评论的IP归属地,而且IP归属地显示规则与评论区此前显示规则保持一致,国内显示到省份/地区,国外显示到国家。
2、
几乎所有的网红产品,都是利用人性的七宗罪所达到的。
而匿名就是网络环境的万恶之源。
匿名,意味着一个人不需要对自己的言行负责,无论你是咒骂那个普通人去死,还是问候他的十八代祖宗。
在网络平台上,我们看过了太多这种悲剧。
为什么女权的“权”会被污名化成“拳头”的拳?
我个人是支持女权的。但是里面有人在故意把水搅浑。
为什么有人被人肉和网暴?
因为在屏幕面前可怕的那个他,不需要承担任何责任。甚至很多明星粉丝对普通人群起而攻之,所倚仗的,不过如此。
为什么微信上的环境要比微博等好得多?
因为微信是实名化的。喷他,意味着他可能能找到你的真实身份,如果他想的话。
当然,做人是需要互联网树洞的。在BBS这种场景下,所有人都可以匿名化。
而在如微博等社交平台上,我支持全面实名化。
但愿天下不再有网络暴力。
必须那么贵,而且其实就是因为是厂家和赛方掌握着定价权,所以才那么贵。就像羽毛球一样,一个球那么贵,归根结底就是几大厂家掌握了定价权垄断了毛片市场罢了。别听厂家吹什么最顶级的球得几千只鹅才能做出一个,更别听冰壶厂家吹自己石头多好多好,都是胡说八道
以女真人和原辽东军为主的重甲步兵(包括各种工程兵,像推盾车的)、重甲骑兵。
以蒙古人为主的冷兵器轻骑兵。
以三顺王(孔、尚、耿)军队、佟氏武装为主的汉军重炮兵。
以原辽东军火器兵为主的火器营。
全员重甲,全员骑马机动。
1、后金军的甲胄、装束、武器,与大明辽东军基本一样,这个之前我科普过,这里不再赘述。
后金、清军在关外推行剃发的主要原因,就是为了战场识别。不然两边打起来,都不知道该砍谁。
2、明军的红衣炮是找葡萄牙人代工的,后金(清)军的红衣炮,才是国产的。后金的铸炮技术,原胜于同时期的明军。
明军的红衣炮,都是从澳门运过来的,后金第一次入关的时候,葡萄牙人将红衣炮运到涿州,发现了后金骑兵,葡萄牙人死活不往前走了。这时,被崇祯打为阉党的冯铨主动出资,招募家丁、乡勇,这才把这些炮运到了北京。
明军装备的红衣炮少得可怜,松锦大战中,十几万明军装备的红衣炮不足二十门,而同时期清军一年就可以造六十门。
下面为松锦大战之后,清军缴获的明军火器。
松山之战,获红夷炮5门,发熕炮2门,大将军炮146门,二将军炮737门,三将军炮1237门,行营炮200门,佛郎机33门;
锦州之战,获红夷炮7门,发熕炮1门,子母炮3门,大将军炮18门,二将军炮147门,三将军炮176门,行营炮33门,佛郎机12门;
塔山之战,获缴获红夷炮1门,发熕炮2门,大小将军炮409门,佛郎机37门;
杏山之战,获红夷炮2门,大将军炮6门,二将军炮122门,行营炮182门,佛郎机65门。
清军共缴获大小火炮3583门,其中红衣炮仅15门,佛郎机也只有百余门,其他大多数火炮都质量低劣,不堪使用。
说说后金将红衣炮国产化的过程。
孔有德投降,他在登州跟着孙元化打过工,孙元化是火炮专家,所以孔有德的几个部下,像王天相与金世祥也学习了不少火炮知识,对原理、架构都很精通,结构制造就没有问题。
然后需要解决的就是制作工艺。当时后金军中有一名汉族工匠刘汉,他精通冶铁技术,以复杂的退火、淬火程序处理火炮的不同部位,造出的铁炮接近钢炮的水准,质量已超越欧洲同时期水平。
崇祯四年,后金成功仿制了明朝的红夷炮,因满人对“夷”犯忌讳,故改称“红衣大炮”,定名“天佑助威大将军”。相较明朝的红夷炮,后金版的炮架先进,高低角可调,转向也方便,并有瞄准装置。
皇太极在八旗军设置新营“重炮军”,满语为乌真超哈,汉旗军都统佟养性任总兵官,曹振彦任教官,开始在战争中大规模使用重炮兵。
3、入关初期的清军,从人员构成上来说,是吴三桂辽东军(4万,打完李自成后约2万)+三顺王辽东军(1万)+佟氏兄弟手下零散投降的辽东军(1万)+祖大寿系辽东军(1万)+建州女真本部(2万)+努尔哈赤、皇太极掳掠的东北索伦诸部壮丁(1万)+漠南蒙古军(3万)。
以上人数为估算值,但误差不会太大,合计约11万人,原辽东军占了约半数,这就是入关前后清军的全部家当。
入关后,姜瓖的宣大军8万、河南地主武装约10万、南明江北四镇23万、左梦庚部(左良玉之子)约8万,先后投降清军。
这才让清军有了绝对的兵力优势。
而后期抵抗清军的,湖南何腾蛟,主力为原李自成大顺军的李过、高一功部;东南郑成功,主力为原海盗集团;西南孙可望、李定国,主力为原张献忠的大西军。
基本就这么个情况。
说明一下。
辽东军所谓的“军事地主制度”,就是明朝的卫所制度,即军籍即户籍,平常当地主,打仗的时候每户抽丁上阵,打仗→抢人、抢地盘→分地、种地。
努尔哈赤把这一套学来,搞出了八旗。
在清军入关前,关外最大的三股地主势力,即为吴襄系(辽西走廊南侧)、毛文龙系(辽宁半岛沿海)和祖大寿系(辽西走廊北侧)。在清军入关时,这三大系都给清军打工了,你说这得分多少地。
有很多朋友会说,人家毛文龙就占着个皮岛,怎么成地主了?
其实呢,在毛文龙死之前,东江所控制的地域甚至要大于明军在关外控制的地盘,请看下图:
图中深红色部分,即为毛文龙屯过田的地方。
所以,满洲不等于女真,八旗更不等于女真,它是一种满、蒙、汉相结合的军事贵族团体。
八旗军的主力,就是辽东军+爱新觉罗宗室+北方来的野人女真、海西女真+漠南蒙古。
上文所谓“祖大寿系”,并不是祖大寿一个人,而是一个利益集团,简单列一下辽东军投降后金军的情况。
李永芳,汉族,投降前为关宁军游击,带500人投降;投降后金后授三等总兵官。
这位仁兄有点意思,明明是一个地道的汉人,投降后却处处满洲化,最典型的就是给他的儿子起名,请看:
三儿子,李·刚阿泰,后官至宣府总兵;四儿子李·哈什库;五儿子李·巴颜,一个汉人,官至正蓝旗二把手,后封一等昭信伯;六儿子李·呼图礼;七儿子李·胡拜;八儿子李·克胜额;九儿子李·克德。
个性不?
孙得功,汉族,投降前为关宁军游击,开广宁城投降;投降后后金封爵封三等梅勒章京。
石廷柱,瓜尔佳氏,汉化满族人,投降前为关宁军广宁卫守备,协助孙得功开广宁城投降;后历任昂邦章京、总兵官、镶红旗汉军固山额真、镇海将军,因战功卓著,死后追封太子太傅。
金砺,汉族,投降前为辽东军武堡都司,协助孙得功开广宁城投降;投降后金后战功卓著,官至川陕总督,加太子太保,授一等阿思哈尼哈番。
孔有德,汉族,投降前为关宁军皮岛总兵毛文龙麾下参将,带3000人投降;投降后初封恭顺王,后改封定南王,顺治九年因被李定国击败,自焚而死。清廷破格予以厚葬,并追谥为武壮。
耿仲明,汉族,投降前为关宁军皮岛总兵毛文龙麾下参将,带3000人投降;投降后初封怀顺王,后改封靖南王。顺治六年,因其私藏逃人,多尔衮追查不休,耿仲明畏罪自缢于进军广东途中的江西吉安。
尚可喜,汉族,投降前为关宁军皮岛总兵毛文龙麾下副将,带军民万余人投降;投降后初封智顺王,后改封平南王。康熙十五年被其子尚之信逼迫而死。
祖大寿,汉族,李成梁管家祖承训之子,李家衰落后辽东最大的地主家族,吴三桂之娘舅。投降前为大明辽东军总兵,先是被围大凌河投降,再是被围锦州投降。投降后授汉军正黄旗总兵,跟随清军入关。
祖大乐,汉族,祖大寿之堂弟,投降前为关宁军副将,松锦之战后投降;投降后无记载。
祖大弼,汉族,祖承训次子,祖大寿之弟,投降前为关宁军副将,松锦之战后投降;顺治时授散秩内大臣,隶属汉军镶黄旗。
祖泽远,汉族,祖大寿从子,投降前为关宁参将,松锦之战后投降;投降后战功卓著,官至湖广四川总督,一个人管半个南方,爵位为得世职一等阿达哈哈番。
祖可法,汉族,祖大寿养子,大凌河之战中作为祖大寿的人质被扣在后金营中,祖大寿降而复叛后归降后金。皇太极对其信任有加,授汉军正黄旗副都统。后跟从睿亲王多尔衮入关,战功卓著,封为左都督,充任镇守湖广的总兵。
祖泽润,汉族,祖大寿从子,投降前为大明锦州副将;投降后战功卓著,为汉军正黄旗固山额真。
吴三凤,汉族,吴三桂长兄,投降前为辽东军参将,大凌河之战后投降;
张存仁,汉族,投降前为辽东军副将,大凌河之战后投降;投降后因其文武兼备,备受多尔衮赏识,先后任兵部尚书、直隶三省总督,爵位为一等精奇尼哈番。
洪承畴,不介绍了;吴三桂,不介绍了。
东北黑龙江流域的索伦诸部,也是八旗军的重要组成部分。
雅克萨原住民,达斡尔族博穆博果尔叛逃,皇太极北伐,一次性抢回来近5000人;
尼布楚原住民,茂明安蒙古人,一千余户南下,加入后金;
索尼的赫舍里氏、沙尔虎达的瓜尔佳氏等等,之前都不是建州女真,都是从北边过来的。
真正的建州女真,能凑出一万壮丁,就顶天了。
成为美国总统?
很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)
几乎是C++领域最流行的跨平台桌面端软件开发框架了,这个框架是两个挪威人在1995年创建的,发展至今可以说历史相当悠久,稳定性也很有保障。很多大公司都在用它做界面比如金山的WPS。
它内置了自绘引擎,也就是说界面上的一个按钮,一个文本框,都是Qt的引擎自己画的,这保证了基于Qt开发的软件界面在不同操作系统上看起来是一模一样的。
它提供了大量的与界面无关但与软件开发息息相关的API,比如、网络、文件系统、剪切板等,而且让这些API在不同的操作系统下都有效,这极大的节省了开发人员的时间。
但它也有一些缺点,比如在处理一些特殊需求上很不方便,比如:目前Qt有没有比较好解决高分屏下缩放显示的方案?,Qt没有真正完美的无边框解决方案吗?等,在一些组件的渲染上也会出一些隐藏的较深的问题(QListItem),一旦遇到,就很难解决。
Qt近年来不太专一,qml,qtquick等,搞了很多,而且这些新玩意儿一直不温不火,有些模块做了又废弃了,比如:qt script,搞来搞去,搞的模块繁多且复杂,用起来不是很舒服。
Qt有界面描述语言(XML描述界面),可以通过设计器拖拽空间设计界面,编译期界面描述语言被转义成C++代码,性能上没啥损失。
Qt商业授权不太友好,开发商业应用一定要谨慎,之前听说有公司为此付出了高额的版权费。个人开发者可以免费使用。Qt的免费版本不允许静态链接,会有版权上的限制,但开发者还是可以通过一些特殊的编译方法静态连接Qt的库的。
除了使用C++开发Qt应用外,开发者还可以使用其他语言开发Qt应用,最流行的就是使用Python基于PyQt做Qt应用了,其他语言的绑定不是很成熟,但PyQt仍然有版权的问题。
GTK是1997年创建的,也非常成熟稳定,是C语言开发的,但有很多语言的绑定,比如官方支持的JavaScript、Rust等,当然用C++语言操作GTK也很方便,它也有自绘引擎(Cairo),也提供了大量系统相关的API,商业授权也非常友好,基于GTK开发商业软件不用担心收到律师函的问题,虽然它是一个跨平台桌面软件,但它似乎只在Linux操作系统领域流行,有非常多的Linux桌面软件都是基于GTK开发的。
这也直接导致GTK的维护者很重视Linux领域的发展,而忽视Windows和Mac领域。这个框架提供的很多API,只在Linux下有,Windows和Mac下没有。这样的API数量众多。甚至在Windows下编译一下GTK的源码都要比Linux下难很多。而且GTK的渲染引擎在Windows下性能表现也不如在Linux下好。
GTK在Windows上也没办法静态连接,它到不是因为版权的问题,而是它依赖MSYS2的一些库,这个库用于在Windows上模拟Linux环境,这也是为什么GTK在Windows上表现不佳的原因之一。
另外,由于GTK是C语言开发的,所以开发风格也很C语言化,这对于部分开发者来说可能觉得繁琐。
wxWidgets是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。
它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。
它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。
fltk是1998年创建的跨平台开源GUI框架,历史悠久,商业授权友好,而且C++之父也用它,它非常轻量级,支持静态连接,一个简单的应用编译后只有500K左右,非常赞,
它有自己的自绘引擎,没记错的话用的是OpenGL,但它的重绘机制是按区域重绘的,如果组件A所在的区域上存在组件B,那么A组件重绘时,会把B组件的给重回掉,开发者必须自己写代码处理这种情况。想象一下,如果你想实现一个A组件fade out的同时B组件fade in的效果,就会非常麻烦。
FLTK提供的一些组件样式都比较刻板,绘图API也比较少,你想实现一个漂亮一点的圆角按钮(它内置圆角按钮的圆角大小是不能改的),必须自己画,而且还得借助一些非常奇葩的手段才行(如果你想知道,可以联系我)
它是C++开发的,但API不够现代,用起来总体还算舒服的,它有Rust绑定:fltk-rs。它的用户比前面三个都少。它提供了一些与界面无关的操作系统API,但非常少,几乎可以忽略。
Duilib
是2010年国内一个开发者开发的GUI开发框架,因为底层基于DirectUI开发,所以只支持Windows平台,不支持跨平台,开源协议友好,商用没有任何问题(需要附加Lincence文件),国内有很多大厂基于这个技术做桌面端应用,比如网易、腾讯、百度,这个框架是基于C++开发的,对C++开发者友好。但框架本身还有一些问题,比如对高分屏支持不佳、特殊控件绘制上也有一些小问题,除了界面相关的API外,几乎没有提供系统级的API,作者纯粹是用爱发电来开发这个框架,所以更新不是很及时。
相对来说网易基于Duilib开发的分支更完善一些:NIM_Duilib_Framework,添加了高分屏支持、多国语言、整合了多线程处理的支持,但环境搭建相对比较麻烦。如果开发者要用这个框架,一定要用develop分支下的代码,master分支下的代码问题很多,这个框架看上去也是作者一个人努力的成果。
Sciter是2006年创建的跨平台闭源GUI框架,足够稳定,商业授权不友好,但个人开发者可以随便用(只能用动态链接库),一旦公司规模超过3人,就得买版权了(有权静态连接)。
它内部封了一个浏览器核心,让开发者使用HTML,CSS,JS来创建界面,但对这个浏览器核心做了大量的精简,不像Electron和NW.js动辄上百兆的体积,它只要6M就够了。当然这也意味着有些浏览器特性它是不支持的,比如CSS3的flex布局,它就不支持(但它提供了自己的flex布局实现方式)。以前它使用自研的一个脚本语言(和JavaScript很像),自从集成了Fabrice Bellard大神的QuickJs之后,就全面支持JavaScript了。它还对一些特殊的场景做了内置的支持,比如渲染大列表。
它使用C++开发,对C++开发者很友好,有Rust、go、Python等语言的绑定,但都是社区提供的,质量堪忧。有很多知名厂商都用这个库做界面,比如360、teamviewer、赛门铁克等。
RmlUi和Sciter很像,可以看成Sciter的替代框架,但RmlUi这个项目有三界作者,一个一个的弃坑不知道新任作者会不会弃坑,目前还不是很成熟,比如我正在尝试帮作者解决的CJK输入法的问题,目前还不推荐大家使用这个框架。
CEF是2008年创立的,基于Chromium的跨平台GUI框架,稳定且商业授权友好,国内很多大厂都用的CEF:比如微信桌面端、网易云音乐桌面端、QQ桌面端、微信桌面端、MATLAB、FoxMail、OBS Studio,装机量破亿。
由于它几乎封了一个完整的Chromium,所以体积非常大,但支持所有的HTMLCSSJS特性,它几乎不提供任何与操作系统相关的API,创建个托盘图标、读写个文件啥的,都要开发者自己完成,它是C/C++开发完成的,对C++用户非常友好,它有gopythonjava等语言的绑定,但都是社区提供的,质量值得担忧。
它对Chromium封装的很好,避免了开发者直接与Blink、V8、Chromium等复杂的代码打交道,很多功能都有默认实现方式,遵从约定由于配置原则,有经验的C++开发者可以很轻松的驾驭CEF框架。
由于Chromium是版本弟,所以CEF版本发布也非常频繁,很多被标记为稳定的版本,还是会出一些莫名其妙的问题,选一个好的版本非常重要。
与Electron一样,它也是分主进程和渲染进程的,所以开发者要非常娴熟的运用跨进程通信的技术,虽然CEF提供了跨进程相关的API,但复杂度还是有点高的,使用的时候要认真细心。
这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。
它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。
使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。
这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。
它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。
JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。
这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。
如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。
由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。
开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。
这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。
这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。
它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。
它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。
这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。
开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。
采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,
使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,
NW.js最早把Chromium和Node绑定到一起,用前端知识做界面,用Node技术访问操作系统,最早叫node-webkit,在2012年创建。NW.js基于MIT开源,可以无忧使用。没记错的话,微信小程序开发工具是用NW.js开发的。作者是英特尔的员工,英特尔的一些工具也是用NW.js开发的。
除了Chromium和Node的能力外,NW.js自己也封装了一些系统级API,类似托盘图标、剪切板、系统菜单这种,但数量明显比Electron要少。
NW.js可以在多个窗口间共享同一个Node.js上下文,而且还可以通过配置让Node的上下文和Dom上下文混合,这给开发者带来了很多便利。心智负担减少很多。不像Electron要时刻想着进程间通信,哪些模块当前进程不能用这类问题。
NW.js虽然起步早,但奈何没有杀手级应用,周边的生态和工具链没发展起来。用的人越来越少,维护的投入也不如Electron大,再加上Chromium更新非常频繁,导致NW.js的有些API也不是很稳,恶性循环加剧。
Electron的作者曾经在NW.js团队工作过(NW.js项目贡献第二多的人就是Electron的作者),后来辗转到了github公司,于2013年在创建了Electron,也是个开源免费的产品。由于VSCode、slak等国际型产品都选择了Electron,所以从者甚众,生态和周边工具链也完善的多。虽然开发方式上有点蹩脚的地方(多进程架构及模块归属进程),但瑕不掩瑜。
Electron每创建一个窗口都会多一个进程,这使Electron创建窗口的效率不高(秒级),NW.js有复用进程的机制,即使新窗口加载完全不同域的页面也不会创建新的进程(毫秒级)。这也是为什么很多基于Electron开发的应用都使用Dom模拟弹窗的原因。
无论是浏览器相关的API,还是系统级API,Electron提供的都比NW.js多。
--------2022-02-25更新--------
这些框架除了对开发者使用的编程语言有要求外,还有一个重要的差异就是有没有独立的界面描述语言(也就是UI DSL),这非常重要,涉及到一个框架表达业务的重要能力。
类似XAML、qt的ui文件、HTML+CSS都是界面描述语言,下面这种也可以算界面描述语言,但我感觉它不够纯粹(flutter、qml和Compose Multiplatform都是类似这样的):
panel { row { checkBox(...) row { textField(...) // indented relatively to the checkbox above } } }
但无论如何,显而易见的是,没有任何一个界面描述语言能比的上HTML+CSS组合。想想看:HTML里各种花里胡哨的语义化标签和Dom操作技巧,CSS里的布局方式、伪元素、动画描述...,对比之下你就会觉得XAML、qml直流都是弟弟。
除此之外,一个优秀的GUI框架还有两个重要的需求,这里我简单聊聊:
强大的事件处理机制必不可少。
想想这些:鼠标事件、键盘事件、触屏事件...界面加载完成、媒体播放结束、元素大小改变...网络状态变更、数据段传输完成...另外,还得处理事件冒泡、事件捕获、事件分发吧...
qt的开发者曾经说过qt的SIGNAL和SLOT机制是有性能问题的(但影响很小)
强大的异步处理机制必不可少
你不能在用户处理业务逻辑的时候,让界面渲染工作阻塞,这就需要一个强大的异步处理机制,让开发者自己去开线程去完成业务处理,无疑是又麻烦又会增加开发者的心智负担。
我记得很早之前在C# WinForm应用中,点击一个按钮,如果不用Invoke执行逻辑处理的话,界面就会卡死。
这么看来,在你的GUI应用里包一个浏览器核心还是挺有必要的,这样你就可以用HTML+CSS强大的能力来描述你的界面,用JavaScript强大的事件处理机制和异步处理机制来完成用户交互。
可能有人会想,这会带来很多问题呀,比如应用体积会增大的100M以上、会占用更多的CPU和内存资源,还会更耗电等等。
确实,目前来看这些都是问题,但仔细想想,这些问题应该不会持续太久,网络会变的更快,用户的磁盘和内存会变得更大,CPU处理能力也会更好,耗电的问题当然会持续存在,甚至会愈发耗电,但电的供应会持续增长呀。
web相关的技术之所以胜出,并不是这些技术的设计者有多厉害,而是这20多年间,有大量的人涌入了这个领域,前赴后继的推动着它前进。其他任何一个领域都没有这么热火朝天的景象。推荐大家看看我的另一个回答:
------------2022-02-27更新----------
用Web相关的技术做GUI应用的优势是,让开发者可以把大部分精力投注在业务本身上,而不是处理与GUI相关的技术细节。
实际上所有的框架,都应该是这个目的,比如ORM框架,目的应该是让开发者把大部分精力投注在业务与数据之间的关系上,而不是管理关系型数据的技术细节。
当然这肯定是有损耗的,在性能、稳定性、资源消耗上,都会有所削减。而且,因为有框架的存在,开发者很难深入到框架内部做一些特殊的事情。比如,我们该如何修改HTML的排版渲染机制呢?
所以,有些框架注重性能,有些框架注重开发效率,开发者做选择题的时候也应该衡量这两个问题,你的应用对哪些方面要求多一些呢?
你如果要开发一个视频监控系统,没多少业务功能,但要24小时不间断的记录视频数据,随时调取某一段时间的视频数据,这种应用可能Qt是最好的选择。
你如果要开发一个类似飞书的团队协作应用,业务逻辑复杂的一塌糊涂,而且要在短时间内满足更多用户的需求,占领更多的市场,那么Electron可能是更好的选择(目前飞书已经不再用Electron了,他们自己编译了Chromium核心,自己封了一个类似CEF的框架)
目前微软、谷歌、JetBrains等公司都非常重视桌面端开发框架,也在推各自的框架产品,说明桌面应用领域并没有没落,反而应该更加受到重视。
虽然移动端应用大行其道,但我认为,只有生活、社交、轻娱乐等方向上的应用在移动端有较好的发展。文档协作、大型游戏、开发工具、专业管控软件等应用还是在PC端发展的更好一些,毕竟PC端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。
希望桌面软件开发领域的从业者都能获得幸福。
满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...
一大早起来真是笑死我了。
由于老头环空前的热潮,以及B站特有的UP主靠制作视频吸引流量转直播的模式,导致很多有人气但完全没有魂系列经验的主播在播这款游戏。比如某幻、瓶子。
(就是一开始制作视频是主业,直播是兼职,甚至是乐趣兴趣,到直播为主,制作视频反倒成了兼职。这种现象在游戏区特别明显。)
这就很有节目效果了,我看几个有名气的主播,都是重复被虐,平均活不过5分钟。真正是在哪里跌倒就从哪里跌倒。
很多在我们这些老玩家看来常识性的东西,对于他们来说完全不存在的。
盾反这种就不提了(其实我也不会),连二人转、回合制、推图都不懂。在大型地牢里不想打小怪,一个劲往前跑,结果变成开火车;当着怪物的面喝药=白喝;开宝箱被怪物背刺;以为学了法术就是法爷了,结果被几只鸟打得抱头鼠窜。
然后另一边,那些原本有魂系列经验的主播,就吃了刻板印象的亏。觉得自己有技术有实力,也不练级就顺着主线硬钢。就比如一上来的野外精英太阳骑士,要么你死要么我亡,绕路是不可能绕路的。
太阳骑士都还好,毕竟王老菊都能杀。
但没有等级,没有血量,没有伤害,硬钢噩兆。
真当噩兆快慢刀是假的,自己打几次就能盾反了?而且老头环这次砍了盾反在BOSS战中的作用,要反三次(二次)才能触发处决。
结果被虐3000遍,又不好意思去练级,尬在那了。
老头环是不是玩家的盛宴我还不知道(买了游戏,昨天也预下载了,结果今天起来发现那个盘满了……正在重新下载,下载完了又发现,我的电脑只有8G内存……),但肯定是不少主播的灾难、观众的盛宴。
当然,我也知道有些主播直播受罪是搞节目效果,但我也是真看到有主播被气到下播了。
另外一点,老头环这次其实是以探索为主要玩法。
B站UP主老戴今天专门做了一期视频讲解,想要玩好、玩轻松,就是尽可能的探索地图,拿物品、刷等级。而不是走到哪杀到哪,打不过硬去打。
就比如第一个剧情BOSS前,大地图上有的是小型地牢,野外精英,要把图清完了再去打噩兆,真跟打弟弟一样。(收回我的话,40级30血20耐20敏+3打刀7瓶奶,打了7次才过。前三次就是纯背板,后三次有点贪,经常血瓶白喝,最后一次基本掌握出手时机,就硬耗过去了。)
其实魂系列游戏特别吃角色强度(等级、装备),一些小怪你一刀砍死和一刀残血,完全就是两种难度。打BOSS,你挨一下就要喝药,和挨两下才需要喝药也是两倍的差距。
不过按照这么个玩法,的确没有什么节目效果。
讲真,还真就是看那些新手主播无能狂怒最有节目效果。
至于游戏本体,如今我也的确是玩上了,总体上来说符合我的期待。
作为一个中年人,我其实是在看了老头环试玩视频后才接触魂系列的。
原因有2,一是手残反映慢,玩这种游戏非常苦手;二是,我其实不太喜欢魂系列那种压抑的黑暗风格。
但老头环作为开放世界,虽然依旧以压抑阴郁为主,但也有光明广阔的场景。比如一开始做完新手指引推门而出的那一刻。
至于在难度与操作方面,远程技能的实用化,召唤物的存在,以及跳砍与伪盾反的出现,真的能够解决很多问题。
只是看你愿不愿意当一个“卑鄙的褪色者”。
远程技能包括法术与射击。我玩的武士,初始给的长弓非常给力。尤其记得推一座城堡图的时候,一开始不清楚套路,进入城堡被满地的炸药桶与两个放火球的法师直接秒了。复活后掏出长弓,一剑封喉,解决掉法师无伤过了。
还有初期的一个地牢,一个场景墙上爬着的与左右墙角蹲着的类似地精的怪物,近战5-6刀才能砍死。
第一次去直接围殴致死。
第二次,用弓箭一只只引过来,很轻松就过了。
至于近战武器,我是非常推荐初期见完老婆就能开箱子拿到的君王大剑。
这把武器虽然攻速低,成长性也低,但在初期真的非常实用。
尤其是在跳劈方面。
这一作跳劈虽然强但也看武器,比如武士上来给的打刀就属于跳劈对空,跳起来横着劈一刀,有时候都打不到站着的怪。而大剑则是竖着往地上砸,范围极大。
我举一个例子,就是我开地图第一次遇到红灵。就是等对方打完一套跳劈就完了。
我的战斗策略就是,遇事不决,举盾防御,然后跳劈。
至于BOSS战,依旧有难度,也许跳劈和法术都没啥作用,依靠的依旧是精准的闪躲后普攻(排除盾反)。
但我觉得这算是魂系列的乐趣之一。
如果随便什么BOSS战都能逃课,那也就没意思了。
这是我看到的最准确的总结。
总的来说,就是中国的高考相对公平,所以性价比极高,所以其他活动都可以适当让步。
本来不应该判这么重,无良媒体煽风点火。