比特熊:夏天不能少的一项流动就是追《怪奇物语》了,这季可太难看了,搓搓手等季终终局了。
比特熊:大家看到本期直播的Banner色彩是不是能猜到这次的嘉宾和Visual Studio以及C++无关?没错!这次比特熊请到了咱们的微软MVP毛利老师以及英特尔特邀来的专家张银奎老师!
【比特熊故事汇】作为比特熊直播间的重要栏目,定期请来技术大牛和行业先锋做客。这里不仅讲最“热”的技术,还有更多待解锁的集体故事和趣味话题!请继续关注,更激励大家举荐你想意识的“英雄”。欢送大家来到直播间,跟比特熊一起,与专家们零距离畅聊
。
欢送大家拜访MSLearn学习平台
与比特熊一起布局学习门路,减速进阶
比特熊:在技术分享和MVP英雄故事前,想问问两位老师在电影或电视剧里有没有崇拜或者神往的人物?IT圈子里大家都比拟相熟的灵魂人物也行。
张银奎:可能和年龄无关,我喜爱的比拟并重中国传统文化,比方周润发演的孔子,还有中国历史上另一位驰名思想家——朱熹,惋惜朱熹还没被拍成电影,至多没有太有名的。
毛利:我集体的偶像是Windows古代内核即Windows NT之父大卫·卡特勒,我十分拜服他,他往年80了,仍然在一线岗位进行高强度我的项目开发。我心愿本人也成为这样的人,能一辈子写代码,把代码写到人生的最初一刻其实也是十分不错的一件事件,把本人之前开的坑都负责任地填完,算是我的人生现实之一。
比特熊:毛利老师“一生写代码”的信心令人钦佩,毛利老师也是咱们的微软MVP,上面有请毛利老师开始技术剖析。
毛利:我明天次要讲的是如何应用古代Visual Studio C++ 工具链改善理论我的项目开发中的体验,明天次要从XAML动手,而后谈到UEFI,尽管这两个名词跨度有点儿大,但我置信通过接下来的解说能够让大家十分平顺地转换概念。
去年九月份我创立了一个文件归档工具NanaZip,做这个货色的起因是去年6月份的时候Windows 11公布了第一个预览版,然而过了两个月,我却还没看到第三方的适配Windows 11文件资源管理器旧式上下文菜单的文件归档工具。我自认为是一个业余的Windows桌面利用开发者,必定要跟进最新的Windows,但如果我降级到新的平台,却在右键菜单里没法用压缩工具的话,生产力会大幅升高。
于是我8月31号创立了NanaZip这个我的项目,通过一个月的开发火速上线,在这种状况下帮到了一些人。NanaZip是7-Zip的衍生版,7-Zip自身是一个十分传统的Windows桌面利用,所以这是一个十分好的例子,讲述如何把一个传统的利用,逐渐进行现代化的时候遇到的一些问题以及解决方案。比方咱们创立一个Windows应用程序打包我的项目,试图去打包的时候大概率会呈现找不到你写的动态链接库。
次要起因在于Windows应用程序打包我的项目默认状况下会把你的每一个我的项目生成的文件独自寄存在每一个文件夹外面,这个问题的解决方案比较简单,在应用程序打包我的项目配置文件中上方增加上面的内容即可解决问题。
当咱们要对一个传统桌面利用进行现代化的时候,必然会应用Windows Runtime接口去武装本人的传统利用,咱们个别举荐应用NuGet 版本。Visual Studio C++我的项目外面,NuGet版本用起来挺不不便的。当然,如果你用.NET,就会发现.NET我的项目外面是反对Package Reference个性的……如果你心愿在应用XAML的状况下,还能应用Visual Studio设计器来时来批改界面的话,为了编译可能胜利,咱们还须要退出以下内容:
详细信息能够浏览NanaZip实战案例这里自用的MSBuild的配置外面的实现。
为了实现NanaZip从 2.0 开始应用XAML Islands进行现代化的承诺,我依据本人的理论状况登程,须要先做两个我的项目以探明XAML Islands的边界,其中一个界面比较简单的我的项目是个文件传输工具,即开源的 aria2 前端 NanaGet,我以NanaGet为例子解说如何在 Visual Studio 下较舒服的应用XAML Islands进行开发……为了可能应用UWP的或者是XAML Islands的古代资源文件,咱们须要引入PRI文件的生成……
因为现阶段Windows App SDK 中的Windows UI Library 3 并不反对和Win32 HWND进行互操作,如果要做的话须要用到非公开且常常变动的接口,但XAML Islands因为能够把 XAML 内容当作一个Win32 HWND 进行操作,于是就没有这个问题,这也是我目前不应用Windows App SDK而抉择XAML Islands的起因,并且我感觉XAML Islands是一个比拟好的一个计划。
张银奎:明天我想跟大家分享一下我对于软件调试技术的教训和想法。明天元宇宙这个词很热,我了解所谓的元宇宙其实就是比特的宇宙,是二进制的宇宙,比特熊直播间这个名字获得十分好,咱们明天其实曾经生存在一个比特的世界里了。这次为了直播呢,我画了一个很特地的架构图,模拟了宇宙天体关系图。宇宙是大的套小的,简直有限对吧?软件世界差不多也是这样。最上面是硬件世界,比方基于英特尔的x86架构、386486奔流之类,酷睿之后,英特尔喜爱用美国国家公园的名字来命名新的处理器微架构,比方这个Skylake, Ivy Lake, Tiger Lake, Alder Lake,比拟新的第12代就是Alder Lake啊。我很喜爱这个命名办法,让咱们能够开展设想的空间。
硬件世界上就是软件世界,有固件——方才毛利老师提到的UEFI,再往上有虚拟化、云,Hypervisor (VMM)。那Hypervisor外部又蕴含虚拟机外部的Supervisor,就是咱们传统说的操作系统内核,操作系统下面也有环境子系统,比方咱们明天的Windows其实也是能够跑Linux的。Windows操作系统里有传统的Windows程序,Windows程序里又细分成.NET和CLR的……明天又有很多容器技术,这个世界任何一个点,深挖起来都非常复杂,方才毛利老师分享的Visual Studio的一些开发技巧,任何一个点都会让咱们困扰,说搞不定卡在那里。明天我想给大家讲讲,如何了解这样一个纷繁复杂的世界。
我当初给大家展现的是英特尔十一代的Tiger Lake的挪动版本,既蕴含CPU又蕴含GPU。两头蓝色这一块能够看做是CPU的核,右侧是GPU的外围,我在英特尔最初的五年,就在英特尔的GPU团队。无论是CPU还是GPU,都是集体力量无奈反抗的复杂度。远远超出集体甚至一个小团队的控制力,所以须要大规模团队,大规模团队还要依赖一些内部条件,整个产业的充沛合作,软硬件的合作。面对这样一个极其简单的软硬世界,对于集体技术的工程师来说,应该怎么样看,援用我十分青睐的朱熹的一句话就是“千头万绪,终归一理”。当咱们深刻看硬件和软件的时候,任何一个小的点,都很简单,在无限的人生不可能齐全了解,如何能疾速把握一些法则,能力疾速地攻克它,所以要找到“一理”。长话短说,演绎成四个字——上调试器。
咱们应用以调试器为外围的调试工具,来疾速穿透到咱们想了解的关键点。那怎么来深刻理解它呢?须要很多实际的领会,能力转换成咱们本人的方法论,我2003年退出英特尔的时候,没想到会在英特尔做这么久,一做就是13年。英特尔有太多我舍不得来到的中央,十分宽松的工作环境让我有工夫在英特尔工作的时候还能写一本书,《软件调试》第一版有1000多页, 100多万字,那几年在英特尔工作的时候,我早晨根本不加班,所有业余时间都投入到写书上来了,《格蠹汇编》也是在英特尔工作期间写的。
然而想学好调试技术也不容易,原理加实际,左一脚右一脚,才可能实现粗浅意识软件的指标。我往年曾经50岁,国内很多同行感觉这个年纪曾经不适宜做技术,但我依然保持做技术,大家看桌面就齐全还是一个程序员的桌面。我这里关上一个虚拟机给大家演示一下……我举荐大家用调制器穿透到你最想了解的那一部分,比如说我当初把内核中断下来,能够疾速了解最要害的一些概念,每次停下来大家最先看到的就是所谓的CPU的寄存器上下文,计算机系统遵循一个最根本的原理,就是图灵所创始的基本原理,它的状态是无限的。从CPU的角度来说它的无限状态就间接体现在寄存器上下文,对CPU来说最外围的就是寄存器,咱们当初看到的x86经典架构,有一个十分好的长处就是易于学习。它的寄存器数量非常少,如果把同样的ARM断下来,你一下子看到30多个寄存器,然而咱们经典x86只有8个通用寄存器,加上一个程序指针。
咱们当初停的是什么地位,为什么在这个地位停下来呢?能够执行K命令看他的执行通过,这是内核里的一个驰名的线程,idle过程。我说CPU一上电就要奔跑,要取指令,当没有指令执行的时候,因为我这个虚拟机比拟空,CPU就会到idle过程里来打盹,进入一个低功耗状态。所以我给他一个break那它执行一个驰名的int 3指令,中断调制器承受审查,就能够看到CPU当初很空,在执行idle循环。
当初给大家运行一个我写的软件,叫“I’m Buggy!”,专门模仿各种谬误。调试器你能够认为它像一个幽灵,始终监督着咱们的计算机系统,计算机系统的任何要害事件都会汇报给调制器,这是操作系统内核设计,CPU硬件或者设计整个软件世界所遵循的一个基本原理。咱们明天所谓的计算机科学,其实称的上迷信的货色是不多的,大多数都是细枝末节,各种code,那咱们明天能称的上迷信的货色就是图灵创立的无限状态机的思维。
我当初模仿一个谬误,Load一个驱动,驰名的空指针。一点空指针立即断下来了,因为软件和硬件一起约定,有些空间是不能够拜访的,比如说地址0,整个0号页都不能够拜访,整个CPU是在保护模式下执行的,这个时候它有一些潜规则。我方才成心触发空指针,内核立即报警。咱们施展弱小的调试器的威力,就能够看到它的前因后果,这里大体看到说是一个叫RealBug的内核模块触发了空指针。咱们也能够u,r命令来看执行的指令的上下文,这是一条x86的mov指令,mov指令就是赋值,间接地址0写1,是成心的一个空指针。这个一执行CPU报警报给操作系统内核,操作系统内核报给调试器,因为我在调试,如果不带调试器就蓝屏蓝掉了。
方才我是用虚拟机给大家做演示,我在理论工作中有大量的调试配备,这都是大大小小的x86零碎,又分成不同的版本,有的是专门用来调试Hypervisor,有的是用来调Windows 10、Windows 11的。那略微演绎一下,我对根底局部的一个分享,援用王国维的一句话就是“有境界自成高格”……文学作品是有境界的,电视剧也是有境界的,第一个镜头就给你境界,到底是硝烟弥漫,还是绿水青山。软件也有境界,就像我方才一个断点停在那里,看当初是在内核模式还是用户模式,是在执行.NET还是在执行Java代码,立即就辨别当初CPU在做什么。所以咱们肯定要建设这样的境界思维……要抓住这个境界,进入场景才能够粗浅思考。
比特熊:大家晓得张老师做技术的工夫很长,从业经验十分丰盛,上面有请张老师分享一下本人的守业经验。
张银奎:我的守业故事从手边的一把扇子讲起,朱熹做了一个最大的奉献,就是把咱们中国的文化提炼成了四本书,第一本叫《大学》(尽管不是朱熹写的),只有205个字,一个扇面就能够放下。这把扇子是我守业的团队做的,做了几百把,用安徽宣纸。第一句话是“大学之道,在明明德”,“明明德”就是我守业最发自内心的一个想法。我守业的次要做的一个平台,就是“盛格塾”,指标就是通过这个平台把互联网技术流传进来。
方才毛利老师也提到,内核之父大卫·卡特勒。他的这张照片大概是两年前拍的,往年他曾经80岁,我十分拜服。他是我古代的人生偶像,通过邮件我感触到过他心田的光明。比方咱们看卡特勒这张照片,都有一种力量,80岁高龄的人坐在那里写代码,和一个80岁的人躺在病床上,给咱们的感触是不一样的。我守业的所有产品都带着这样的思维,这是2020年第一批GDK7下面印的这个钟馗,因为钟馗专门抓鬼,祛除世间的邪恶,所以我的所有产品下面都是钟馗的Logo。
GDK7是基于英特尔的DCI技术,能够在没有软件调试器的状况下间接从硬件层面把零碎中断下来,找一些流氓软件、病毒,这种办法十分彻底,任何软件调试器都可能被流氓软件所绑架,所以咱们这款产品失去国内许多钻研平安的同行,尤其是偏底层的同行的喜爱……咱们最新在做的“挥码枪”,是一种更玲珑的调试器,适宜随身携带。
那守业是否赚钱呢?坦白说我真的不太在乎,所以我当初也没有用投资,投资人可能会给我压力,我当初得心应手来做本人喜爱做的事件。
比特熊:咱们在开篇介绍了毛利老师是一位新晋MVP,请问毛利老师为什么要退出MVP小家庭呢?
毛利:起因非常简单,我最早接触计算机的时候,看的第一本对于Windows的启蒙书籍就是两位MVP写的,他们是彭爱华和刘晖,这本对于《Windows Vista 应用详解》的书我翻了不下50遍。我始终对他们十分神往,也心愿有一天能成为MVP。起初我也理解到,如果某天不小心进入了微软,MVP就大概率拿不到了。所以对我来说,越早拿到MVP越好。即便我一不小心进了微软,至多也有做过MVP的教训,让我遗憾少一点,某种程度上是凑个大满贯的感觉。
张银奎:我也意识彭老师。盆盆!
比特熊:看起来彭老师很有名啊!心愿当前也有机会能够请盆盆老师来咱们直播间。
比特熊:之前张老师提到本人喜爱看的电影,比方周润发的《孔子》,还有毛利老师,据我理解您跟张老师的电影“口味”也非常不同!
张银奎:我很喜爱周润发演的孔子,这个故事是从孔子人生最辉煌的时刻讲起,到他周游列国遇到各种艰难曲折。外面有一幕是孔子在讲课的时候,有人来捣鬼,把大树砍倒了。还有很乏味的一个细节,孔子去见一位驰名的美女南子,这场戏的矛盾抵触十分精彩。无论是人生还是软件,其实都充斥了矛盾。
毛利:我看电影少一些,个别看美剧或者纪录片。美剧的话强推《绝命毒师》,老白是一个不折不扣的大反派,然而我从他这边学到了一件事件。如果有机会去做本人喜爱的事件,那就要尽可能去做。我还想举荐一个纪录片系列,叫《巅峰拍档》(Top Gear),BBC讲汽车的节目。我从他们的体现中,看到了对汽车的酷爱。我大学的时候,学的是汽车业余,然而我对汽车一点趣味都没有。即便是这样的我,也喜爱看这个节目。如果一个人对本人的事业真的酷爱的话,也能吸引其余本来对这件事件一点趣味都没有的人。
比特熊:通过一个节目喜爱上了本来不太感兴趣的畛域,如此有魅力的纪录片比特熊也要看看!
比特熊有话说
本期比特熊请来了从事Windows桌面开发的微软新晋MVP——毛利,还有善于使用调试工具的英特尔特邀大来宾——张银奎!毛利长期利用C++做一些开发,所以他用实例分享了用 Visual Studio 开发 UEFI 应用程序和XAML Islands C++ 开发方面的一些应用技巧,也给咱们慷慨地看了本人写的“家伙们”! 而张银奎老师有着多年行业经验和感悟,以特地“形象”的示意图解说收场,利用很多乏味的举例,高饱和度畅谈了软件调试技术的多重价值。
两位嘉宾尽管在年龄和经验上都有肯定“间隔”,然而他们独特的偶像——NT 内核之父David Cutler,始终激励着他们追寻着本人“一生写代码”的幻想!比特熊还理解到毛利老师从2014年就投身开源(过后还是在校生),直到现在开源激情没有减,咱们能够看到他做了很多事件,以他的话来说“填好坑”。在直播时还有很多毛利老师的“粉丝”和敌人继续反对,整场直播充斥了踊跃沟通的气氛。张银奎老师推崇孔子、朱熹等文化名人,用其思维领导实际,在直播中旁征博引,让比特熊在技术学习之余也享受了一场文化之旅。张银奎老师在工作之余种种田,而毛利老师喜爱骑着单车到处逛,察看他所生存的城市。即便两位经验和习惯如此不同,但谈到技术,两位对于本人喜爱的事业不惜力的付出和摸索是高度一致的。比特熊也心愿大家能够在本人喜爱的畛域没有遗憾地追寻本人的幻想并享受这个过程!
比特熊与各位的消夏团聚告一段落啦!欢送搭档们把你想说的话通知比特熊,可能会收到意想不到的惊喜回复哦!
Attention Pls!月末还有大事件!
满心欢喜,敬请期待!
点击重温本次直播!