首页 文章 精选 留言 我的

精选列表

搜索[开启],共10005篇文章
优秀的个人博客,低调大师

Databricks数据洞察 限时免费开启公测!

【Databricks数据洞察】: 企业级批流一体的Spark大数据分析平台,无论是数据分析师、数据开发工程师还是数据科学家,均可以通过Databricks数据洞察(DDI)分析平台,实现协同合作和数据共享,满足在大数据下对数据湖分析、实时数仓、离线数仓、BI数据分析、AI机器学习等场景需求。 【公测链接】: https://www.aliyun.com/product/spark ,8月末结束 【产品公测权益】: 申请即可免费拥有价值10万元以上的阿里云集群体验

优秀的个人博客,低调大师

OpenStack开启云计算行业新格局

关于OpenStack迅速崛起的原因很多人做过各种分析,不同的人可能结论不同,但OpenStack庞大的生态系统是大家比较一致认可的。放到几年前,OpenStack与同为开源、起步更早的CloudStack相比,在技术成熟度和可用性上还有不小差距,但今天这两者的江湖地位已经不言而喻,OpenStack在开源云计算领域成为了事实上的标准,而CloudStack大有被边缘化的趋势。应该说,OpenStack今日的崛起不仅是因为OpenStack的功能足够多、足够稳定,还因为其背后的生态系统。 开源促进技术演进 "OpenStack的成功首先是因为开源。因为传统上很多技术都是由一两家领导性的公司在做,他们一开始在这方面做得很好,然后就由这一两家厂商来推动技术的进步。随着技术的发展,在支持创新或者长期发展上就面临资源上的限制。另一方,获得成功后很容易形成垄断,不利于技术的发展。"云达科技技术处协理李家瑞告诉至顶网记者。 来自中国台湾的云达科技是OpenStack生态链上的一环。云达科技是广达电脑集团旗下的一个公司,是一家提供服务器、存储、网络交换器等IT硬件和IT解决方案的公司,其中也包括云计算解决方案。 作为云达科技(QCT) 的一名技术人员,担任技术处协理的李家瑞有着多年与OpenStack有关的从业经历,这份经历让他对OpenStack的发展有着更多的思考。李家瑞表示,开源最大的好处是开放,可以让各种各样的公司加入到一个共同的生态体系中来,其中不乏竞争对手,而且终端用户也可以参与其中。大家基于开源软件结合自己的优势提供差异化的产品和服务,比如有的提供软件和服务,有的提供硬件支持,这样来共同推动开源产品的不断完善。 "通过开源,大家可以在一起做各自最擅长的事,这样可以创造出更多的创新,激发出更多的能量来。所以,开源对技术的发展是一个非常好的方式。"李家瑞表示。 当然,开源也面临挑战。比如,不少最终用户会担心技术背后谁来提供支持,如果有问题要找哪些厂商来咨询、来帮助解决困惑。此时,生态的作用就非常重要,而OpenStack的成功在相当程度上就是因为其有相对完整的生态系统,基本上解除了用户的后顾之忧。 构建OpenStack大生态 OpenStack最早源于NASA和RackSpace共同发起的一个开源项目。从2010年OpenStack被正式开源以来,经过6年的发展取得了令人瞩目的成功。 李家瑞认为,这种成功首先就体现在生态系统上。如今在OpenStack的生态系统中几乎包含了各行各业的公司,不少是各领域中的领导品牌和顶尖用户。而且,除了英特尔、HPE、红帽这样的知名企业外,还有众多不知名的上下游厂商,它们围绕OpenStack这个平台建立各种合作伙伴关系,打造出一个完整的生态链。大家基于OpenStack构建各种解决方案,给客户带来业务上的价值,同时给自己的产品带来更高层次的差异化。 在这个生态系统中,一些专业的OpenStack服务器上起到了重要的作用。比如,国际上有像Mirantis这样专门从事OpenStack咨询和实施服务的厂商,在中国也有九州云、海云捷迅、UMCloud等从事OpenStack相关服务的厂商。 李家瑞强调说,OpenStack一定是一个大的生态系统,其中需要有各种角色,不光是有软件服务也需要有硬件支持,比如英特尔这样的厂商的加入就对OpenStack的普及起到了非常重要的作用。 "这几年我们跟英特尔有深度地合作,所以对这个问题有很深的体会。"李家瑞说,"我们不少人认为英特尔只是做芯片、做CPU,其实它也有软件,而且通过这些软件为包括OpenStack在内的上层软件提供了很好的支持。" 实际上,在整个IT架构中,软件才是价值的真正实现。在当下软件定义一切的背景下,英特尔通过芯片的指令、编译器等提供一些软件支持,同时英特尔还基于它对自己硬件的了解,来帮助优化OpenStack的整体性能,从而给用户更好的体验。正是这种支持和优化也让x86+OpenStack成为一种标准配置。另外,英特尔还在通过自己的力量来壮大OpenStack的生态。比如,红帽是在开源里面很重要的厂商,英特尔通过和红帽的合作,把红帽在OpenStack等软件方面的创新集成到英特尔的硬件生态系统中,这种作用非常关键。 李家瑞认为,未来OpenStack要进一步普及,要让更多的普通用户能用好,而不只技术型用户,除了功能完善、产品要易用,同时还需要更多的合作伙伴来推动。"OpenStack未来的目标应该是,企业可以根据自己的需求自由选择所需要的功能,自己引进,如果有问题后面有很多厂商来支持他,帮助能够实现商业价值。这个产业环境就成熟了。"他说。 原文发布时间为:2016年9月14日 本文作者:邹大斌 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

优秀的个人博客,低调大师

大数据开启“智能预测客户”时代

近年来,各大大数据服务提供商越来越关注利用人工智能(AI)来帮助分析大规模的数据,从而获得预测性的洞察,从而帮助B2B企业更好的完成销售。虽然这背后的逻辑——深度学习算法几十年前就已诞生,但直到最近才能够在足够便宜、足够快速地应用到大规模数据之后发挥它的最大潜能。可以预见,数据科学家的部分工作将会越来越自动化,边际成本将越来越低,从而可以极大提高生产力。 智能预测B2B企业客户在做的事情很像B端的搜索引擎,我们用百度这样的C端工具获取我们要的信息,而企业可以通过预测服务提供商搜到他们想要的目标客户。在国外,智能预测行业已经发展了好几年,类似Everstring、6Sense、Mintigo等预测服务提供商已经有了非常成熟的业务模式和稳定客户群体。 中国在大数据方面的应用和美国还相差了5-10年。最大的原因是企业级的SaaS应用还远远没有发展起来。如果一个企业连内部销售,市场营销,HR,财务数据都还没有,那么大数据和人工智能是无从谈起的。虽然差距非常明显,但是我们已经欣喜地看到这一年来中国的预测服务已经慢慢起来,例如前不久,国内首家与Everstring、6Sense、Mintigo等公司类似,为B2B企业提供智能销售预测的SaaS平台“探迹”正式上线,不到半个月时间已引起业界的广泛关注。其中探迹的“企业潜在客户挖掘、企业潜在客户评分”等多项智能化功能受到销售管理者的重点关注。据了解,目前探迹已积累数千万企业画像数据,在结合企业内部的客户关系管理系统后,即可利用机器学习自动建立和量化客户模型,轻松实现精准挖掘企业潜在客户,从而帮助企业提升销售转化率及收入。 但是,通常第一个“吃螃蟹的人”往往都要面临的外界所不知的压力和挑战,除了要应对像Everstring、6Sense、Mingtigo等国外企业进入中国市场的可能性外,探迹面临的挑战还很多,比如目前市场第三方数据在中国还是缺失的,即使有,很多公开的数据真实性有待考量。在潜在客户预测领域,挖掘和分析第三方互联网信息是非常关键的,国外有非常成熟的B2B企业营销数据供应商,整个产业链条非常完备,但是中国目前这块还亟待规范化。开放和充分市场化的数据环境才能让数据更加真实,也才能让大数据真正发挥价值。 再者,从竞争角度出发,虽然传统的BAT在短时间内不会让我们觉得带来太大的威胁。但是我们已经看到了阿里推出了钉钉,并与阿里云、OA、CRM等厂商联合推出了企业办公的终极大Boss——阿里云办公。意图控制所有中小企业的工作流,如果他们真的做到了,未来是很有可能自己做人工智能这方面产品的。目前智能预测企业客户这个市场还很新,就是因为这些大厂商也还在试水,不断在摸索。那么一些中小型的创业企业(如探迹)可能在早期会更有优势。 可喜的是,目前国家层面也开始关注大数据领域,各项政策也在不断制定和完善,这都为大数据发展提供了良好的土壤。真正的大数据市场还处于起步阶段,发展空间巨大。目前探迹已开通申请试用入口,全面开放功能模块,接受企业免费试用。期待探迹在企业智能销售预测市场中,打好这场让销售更精准的攻坚战,真正解决B2B营销难题。 本文转自d1net(转载)

优秀的个人博客,低调大师

手游渠道开启国战模式

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 2014刚开始一个星期,手游行业再次云涌风起。阿里巴巴昨日宣布正式推出手游平台,由原腾讯视频负责人刘春宁挂帅阿里数字娱乐事业群总裁。阿里与手游开发者的分成比例为2:8,阿里拿2,开发者拿7,还有10%将会捐助给公益基金。 从春秋到战国 前几年,CP们普遍要面对茫茫多的渠道,几百家商店,发新版本时光打包一项就得耗上半天时间,这还是在有脚本自动化处理的情况下,而且不考虑不同渠道对icon、sdk等的不同需求。从去年开始,二三线的渠道开始慢慢消隐,一线渠道也互相兼并联合,流量是进一步集中到几家巨头手中。手游的用户在成熟,市场在成熟,渠道与厂商也在成熟。就像中国历史,从八百诸侯的春秋,进入七雄争霸的战国。 强秦腾讯 如果非要类比,葡萄君觉得,腾讯更适合比作强秦(QQ=QiangQin)。QQ与微信的强关系链,就是移动互联网时代的天险崤山与函谷关。2013年整个手游行业的增长非常快,玩家数量突破3亿,市场总值从2012年的50多亿翻番到112亿元。但真正落在普通CP手中的数字,就不都是那么靓丽。 这 个道理,CP们懂,腾讯更懂。腾讯游戏的KPI,据说是占据手游行业份额的55%。在今天移动产业年度高峰会上,腾讯主要有两场演讲,其一宣布2013年 腾讯移动游戏平台第三方分成达到30亿元,其二是“铸就精品IP***产业明天”,它探讨的已经是作为行业领跑者如何来***大家奔向明天。 阿里入局 一家渠道独大的局面,没有哪家CP愿意看到,更没有哪家腾讯以外的渠道会轻松围观。急切宣布入局的,是阿里。有人会说,“100块钱的100%,也就是100块钱而已”。此前葡萄君分析过阿里做游戏的三条枪,分别是阿里妈妈(流量导入)、支付宝(支付功能与大数据分析)和淘宝天猫(懂用户消费)。这三条枪,组合在一起是流量+平台+变现,加上阿里投资的新浪微博与UC,还有今天阿里的宣言与某些传言,又为马云与游戏新增许多想象空间。 葡萄君了解到的,阿里确实挖了一些腾讯、360等平台型公司的人做手游,找猎头开出相当高的价码要人,跟北上广深诸多CP也密切接触洽谈合作。这一次,不像几年前阿里做页游时那样只是试水。 阿里合纵360 与阿里巴巴关系密切的某媒体登载一则传言,阿里将投资360,谈判已进入实质性阶段,方式可能是阿里巴巴向360注资,360输送流量给阿里。这或许能够解答CP们对于阿里手游平台“量”的质疑,但阿里的这些资源如何整合、能够整合到何种程度,都还不得而知。不管结果如何,巨头互掐、制衡,对创业者们是好事。 百度连横 几天前,葡萄君收到猛料,腾讯要牵头做手游联运渠道,这个要围剿360的联盟已经包括百度系的91与多酷,4月前产品上线,未来其他渠道或将加入。在这场战局中,百度似乎选择了助攻,拿不拿一血可能无所谓,要的就是360的人头。 小米等等 在阿里高调对腾讯宣战的这一天,小米也宣布独代游戏与开发者是三七分成,联运游戏比例不变,未来还会整合小米的资源共同推广游戏,包括开放米聊的关系链、浏览器等。同时公布的数字,2013年12月小米游戏中心的流水在三千万左右,手机销售是300万,MIUI的活跃用户是3000万。 在腾讯通过社交与流量与360阿里正面冲突时,小米通过硬件与操作系统把握住了一个不小的入口。这场渠道地位争夺战,也有了新的看点。

优秀的个人博客,低调大师

联想开启“全生态云”时代

当联想集团高级副总裁、联想中国区总裁陈旭东,在一段《星球大战》式的大屏幕开幕电影片段后,健步登上舞台面对台下人山人海般观众开始致辞之时,也预示着联想携手全球顶尖IT厂商、知名合作伙伴和国内外专家,召开的“商用技术发展论坛召开”则正式拉开的帷幕。而就是在这个曾经作为大运会总部酒店——五洲宾馆里,联想为在座嘉宾揭幕了其面向移动互联商用市场的移动云计算策略。 虽 然关于云计算的会议有很多,但该次的大会上联想却只有一个重点——“赢在移动云计算时代”。作为移动云来说,其是一个非常复杂的生态系统,需要终端厂商、 应用开发商、系统集成商、内容提供商、电信运营商等各个方面的通力合作方能完成。而如何将这些保罗万千的角色统一在一起形成“最高效”的协作,联想用一个 “一揽子计划”来作为其解决之道。 区别于以往云计算厂商在单个领域,推出相互独立的云计算产品而言,联想的移动云计算解决之道更像是一个“全生态”的解决方案。为什么这么说呢?早在五年前,就动手布局移动互联网和云计算领域的联想,编织了一个从终端(乐Phone、乐Pad等),到移动互联网行业应用基础平台,甚至是桌面云计算产品、后台企业级数据中心、大规模公共计算在内IT基础架构和联盟式解决方案四方面的全生态布局。这几乎囊括了云计算商用后,可能涉及的各个环节。 显然,这样大的一个“盘”,国内除了联想之外,也很少能有企业能够“吃得下”。在笔者看来,“大盘”的好处也很明显,那就是能极大“提升移动云计算的商用价值”,而这也是“赢在移动云计算时代”最至关重要的一点。 从 表面上看云计算就是“要把计算力像水和电一样作为公共资源提供给用户”,但当解决一个复杂体系下的云计算服务时,如何提升效率就是一个十分庞杂的问题,而 有趣的例子是新加坡是交易中心。会议上联想集团副总裁、全球应用开发部总经理刘晓煜,用这个“典型”的例子,解释了联想移动云计算解决之道过人之处。 由 于新加坡交易中心会将产品卖给全球各个国家,而围绕此企业的云计算规划,就必须通过从研发到销售、供应链、生产,提供一个端到端的全球体系架构来支持。倘 若将其每部分都采取不同云计算产品来实施,必将在协调方面耗费大量建设资源。而联想的做法是,利用其“全生态”解决方案,为其提供一揽子解决计划。从市场 和销售用客户管理软件管理,到各种终端的全球一体化采购,联想用一套优化、成熟的方案来解决整个云计算商用问题。在提升使用效率同时,也兼并提升了管理便 利性、安全可靠性,甚至还降低的整体成本。而这——成本(C:Cost)、效率(E:Efficiency)、管理(M:Management)和安全(S:Security),正是联想提升移动云计算的商用价值核心。 似乎是为了佐证联想这个“全生态”云计算的成熟,除了和合作伙伴们一起展示在政府、教育、保险、物流、警用、快消、城市管理及中小企业等多个行业已经实施的方案之外,联想更是一下展示了其全新推出的联想商用云存储、联想虚拟云终端(LVCC),甚至最近备受市场关注、上市不久的ThinkPad Tablet。 掐指算来,从2008 年 至今,联想商用技术发展论坛连续举办了四届。虽然每一届上的主题有所不同,但对于云计算这个大主题讨论却越来越深入。除了因为云计算已经逐渐成为企业商用 的未来必经之道以外,更重要的是已经成为如今大多数企业提升协同办公能力,降低企业运营成本,增加运营灵活性的重要手段。 本文如需转载,请用以下方式联系,并注明出自科幻星系 QQ:102927545 MSN:wangk1026@hotmail.com

优秀的个人博客,低调大师

开启 Wine 开发?看这篇就够了!

说起 Wine,稍微资深一点的 Linux 用户应该都听过,但是真要说起 Wine 到底是怎么回事,可能大多数人不见得说得清。这篇文章会简单地介绍 Wine 的工作原理,以及如何开始 Wine 的开发。所以如果您属于以下三类读者之一: * 想参与 Wine 开发,但是不知如何开始的。 * 仅仅想大致了解 Wine 是如何工作的。 * 只是想能够愉快的用上最新版本 Wine 的。 希望在看完本文后,能够有一些收获。 Part 1 Wine 是什么 Wine 是 "Wine Is Not an Emulator" 的递归缩写,如同 "GNU" 一样(GNU's Not Unix),字面意思就是 Wine 不是一个模拟器。这里的模拟器主要是指 Wine 并不是一个虚拟机,而是一个 Windows API 实现兼容层。这么说可能不太好理解,大家可以把 Windows 应用程序类比成 Android 应用程序,而 Wine 的角色就和 Android 很像了,将操作系统提供的各种功能封装成 API,并让应用程序在隔离的环境内运行。至于 API 长成啥样,隔离的力度如何,这些都是实现相关的,和本质并不冲突。另一方面,Wine 其实又是一个模拟器,不过模拟的对象不是硬件 CPU,而是 Windows 的行为。 Part 2 Wine 原理介绍 本节内容相对来说稍显基础和单一啦,并且阅读时最好对操作系统有一定程度的了解哦。如果只是想编译、运行,对原理不敢兴趣的同学,可以跳过,不影响后面的阅读。 Wine 的目的是运行 Windows 上的可执行程序(PE,portable executable)。我们知道,可执行程序的本质其实就是按照某一规则排列的机器码,而机器码是指令集相关的。得益于常见的 PC 机一般是 x86/x64 的,因此 Windows 应用程序从指令集的角度看,是完全可以在 x86/x64 的 Linux 机器上直接运行,而不需要硬件层模拟的。 但是为了能够直接加载运行 PE 文件,需要满足一些 ABI 兼容。最基本的,Windows PE 程序会假定自己被加载到地址 0x400000 处,因此 Wine 实现自己的 loader 时,需要保证将 PE 镜像加载到同样的位置。对于静态链接的程序,需要做的事情可能不是太多,但是对于动态链接的程序,Wine 需要模仿 Windows loader 的行为,加载依赖的库,并进行相应的重定位工作。 为了最大程度上减少对二进制层面的依赖,Wine 决定实现至少 GDI32,KERNEL32,USER32 三个动态库,因为其他库都是建立在这三个库的基础之上的。所以理论上来说,除此之外的其他动态库是可以直接使用 Windows 上面现有的库,但由于各种原因,Wine 还是倾向于尽量实现所有的 API。我们把 Wine 自己实现的 API 库称作 builtin,把 Windows 上现成的库称作 native。当 Wine 在加载 builtin 动态库的同时,还会在内存中建立 PE header,用来模仿 Windows 上的内存布局。更加详细的实现,有机会可以写一篇 Wine loader 相关的文章来介绍 Wine 本身、PE 程序和动态库是如何被加载的。 除开 loader 的功能外,Wine 还需要解决进程间通信(IPC)的问题。Wine 的实现方式是将所有跨进程的对象和机制,比如 GDI 对象,比如信号量,全部实现在 Wine server 中。同时 Wine 允许系统运行多个 Wine server 的实例。这样存在于同一个 Wine server 中的对象自然是可以相互通信,好像在同一个空间内;而不同 Wine server 下的对象,是相互隔离的,这种架构使得不同容器之间的程序相互没有影响。Wine server 的具体实现是通过 unix socket,实现了一套 IPC 机制,完成和 API 层的交互。 有了以上这些基础,Wine 实现起各种功能就可以按部就班了,只需理解 Windows 下 API 的行为和含义,然后再重新实现一遍就行了。听起来虽然简单,实际难度不小,特别是一些未公开的行为,必须对整体有相当的了解后才能下手。甚至一些差异,比如 UI 相关的内容,由于 Windows 窗口系统和 X 在设计哲学上的不同,实现上需要有所舍取。目前 Wine 支持的平台不仅包括 Linux,还包括 BSD、Mac OS X 和 Android。 Part 3 环境 下面的开发环境都以 deepin 为例进行说明。 首先获取代码。Wine 官方代码仓库地址为 >git://source.winehq.org/git/wine.git 如果你想方便打包给别人使用,又不太想折腾打包的一些细节,可以用各个发行版自己维护的 Wine。比如 Debian 维护的 Wine 仓库地址为 >https://salsa.debian.org/wine-team/wine.git 这里以官方的 Wine 为例: git clone git://source.winehq.org/git/wine.git 然后安装开发的依赖。为了简单起见,我们只编译 32 位的 Wine,因为 64 位的 Wine 只支持 64 位的 PE 程序,而目前 Windows 上仍有大量的程序只提供了 32 位的版本。 sudo apt install\ gcc-multilib\ flex\ bison\ libx11-dev:i386\ libfreetype6-dev:i386\ libxcursor-dev:i386\ libxi-dev:i386\ libxshmfence-dev:i386\ libxxf86vm-dev:i386\ libxrandr-dev:i386\ libxfixes-dev:i386\ libxinerama-dev:i386\ libxcomposite-dev:i386\ libglu1-mesa-dev:i386\ libosmesa6-dev:i386\ ocl-icd-opencl-dev:i386\ libpcap-dev:i386\ libdbus-1-dev:i386\ libgnutls28-dev:i386\ libncurses-dev:i386\ libsane-dev:i386\ libv4l-dev:i386\ libgphoto2-dev:i386\ liblcms2-dev:i386\ libpulse-dev:i386\ libgstreamer-plugins-base1.0-dev:i386\ libudev-dev:i386\ libcapi20-dev:i386\ libcups2-dev:i386\ libfontconfig1-dev:i386\ libgsm1-dev:i386\ libkrb5-dev:i386\ libtiff-dev:i386\ libmpg123-dev:i386\ libopenal-dev:i386\ libldap2-dev:i386\ libxrandr-dev:i386\ libxml2-dev:i386\ libxslt1-dev:i386\ libjpeg62-turbo-dev:i386\ libusb-1.0-0-dev:i386\ gettext\ libsdl2-dev:i386\ libvulkan-dev:i386 接着运行脚本: ./configure --with-gnutls --without-hal --without-oss 根据不同的 Wine 版本,此时可能会提示不同的 feature 支持情况。我们可以根据需求,对上面的依赖库和传入的参数进行调整,具体可以查看 configure.ac 的内容。 Wine 的源码比较大,编译有些耗时,可以根据 CPU 情况增加并行参数,比如 make -j8,进行编译。 编译完成后,运行: ./wine --version 可以查看版本号。如果想安装到系统,可以运行: sudo make install 但是注意,安装后可能会修改一些文件的默认打开方式。 Part 4 使用 运行: ./wine winecfg 可以对默认容器进行设置,默认的容器位于 HOME 目录下的 .wine,环境变量 WINEPREFIX 用来修改当前的容器路径。比如有一个叫 demo.exe 的可执行文件,我们想测试能否正常运行,可以运行。 WINEPREFIX=~/.demo_exe ./wine demo.exe HOME 目录下的`demo_exe`就会作为其容器目录。 Part 5 开发 编译过后的 Wine 源码目录结构如下: ├── aclocal.m4 ├── ANNOUNCE ├── AUTHORS ├── config.log ├── config.status ├── configure ├── configure.ac ├── COPYING.LIB ├── dlls ├── documentation ├── fonts ├── include ├── libs ├── LICENSE ├── LICENSE.OLD ├── loader ├── MAINTAINERS ├── Makefile ├── Makefile.in ├── po ├── programs ├── README ├── server ├── tools ├── VERSION └── wine -> tools/winewrapper * 目录 dlls 按照模块存放了所有 API 的实现。 * 目录 loader 是和 Wine 启动、加载相关的代码。 * 目录 programs 存放了外部程序的代码,比如注册表管理工具 regedit 。 * 目录 server 顾名思义,是 Wine server 的实现。 接下来需要做的就和普通开发没什么两样了。比如说我们发现某个应用存在字体相关的 BUG,可以首先根据经验判断在 Windows 上,该程序是如何实现的,然后查看对应的实现。例如 GDI 相关的字体实现,位于 dlls/gdi32/font.c 和 dlls/gdi32/freetype.c 。修改完代码后,在所在模块的目录,比如上例就是 dlls/gdi32 下重新 make 就可以快速验证了。 对于复杂的问题,不太好直接定位的,可以通过输出日志的方式来调试,环境变量 WINEDEBUG 指定了需要输出的日志。 有时我们可能需要把复杂的情况简单化,这时候难免会写一些小的 demo 程序来重现问题。如果不想到 Windows 上面编译,可以使用 mingw 直接在 deepin 下编译出 exe 文件。方法很简单,首先安装 mingw: sudo apt install mingw-w64 接着正常利用 Windows API 实现程序,最后利用 mingw 编译工具链生成文件即可,Makefile 示例: hello.exe: hello.c i686-w64-mingw32-g++ -o hello.exe hello.c -DUNICODE -D_UNICODE -municode -lgdi32 上面的例子,定义了 UNICODE,所以使用的 UNICODE 版本的 API,入口函数为 wmain,-lgdi32 表示需要链接库 gdi32 。生成出来的 hello.exe,可以同时在 Windows 和 deepin 下运行。 Part 6 其他 本文介绍的内容只涉及到 Wine 开发的基础,Wine 本身还有很多东西值得去探索。比如 Wine 是如何使用 driver 机制让接口和实现分离的,再比如 Wine 是如何使用纯 C 实现 COM 机制的。虽然 Wine 的出现已经有一些年头了,但是目前的开发仍然比较活跃,感兴趣的同学可以加入进来,为 Linux 生态添砖加瓦,让大家能用到更多的优质应用,也算是曲线救国了。 Part 7 更新 7.1 新的 WOW64 上面编译的例子中,我们只编译了 32 位的 Wine,忽略了编译 64 位 Wine 的细节。从 Wine 8 开始,Wine 开始了一个称为 PE Convertion 的开发过程,重新实现了 WOW64 的机制。此模式下只需要编译出一份 Wine,既可以运行 32 位程序,也能运行 64 位程序。同时也不再依赖 32 位的运行时库。虽然此模式还被认为处于实验阶段,但是从 deepin-wine8 开始,我们已经默认使用此方式。 编译新的 WOW64 方式的 Wine,步骤如下: Wine 官方的源码地址已经更改,在https://gitlab.winehq.org/wine/wine.git下载源代码。 依旧需要安装编译时依赖的开发库,不同在于我们这次只需要安装 amd64 的版本,在安装开发库时不再需要指定 :i386 后缀。此外 mingw-w64 在此模式下成为必须项。 在 Wine 源码目录的同级目录下新建 build-wine 目录,并进入此目录。 运行 ../wine/configure --prefix=/opt/wine-newwow64 --enable-archs=i386,x86_64。这一步如果有任何提示,比如缺少编译期依赖,可以在安装后再次运行。 make -j8,进行编译。 sudo make install 安装,Wine 会安装在第 4 步通过 prefix 指定的位置,即 /opt/wine-newwow64 。当然也可以选择不安装,直接在编译目录下运行。 7.2 其他架构 在关于原理一节的描述中我们提到过,x86/x64 机器的 Linux 系统可以通过 Wine 运行 x86/x64 的 PE 程序。实际上如今通过 DBT(dynamic binary translation)技术,在 ARM 及其他架构上已经有了运行 Wine 的方案。感兴趣的读者可以查看 [Box64](https://github.com/ptitSeb/box64) 项目。 11月份,微信在 deepin 商店上架了Linux原生版本,功能与 Windows、MacOS 相差无几。Wine 版本的微信终于可以"功成身退"了,我们也期待今后有更多软件推出原生版本,让 Wine 早点完成"历史使命"。 相关阅读: (1)支持 deepin(深度)社区 (2)deepin 技术分享合集

资源下载

更多资源
Oracle

Oracle

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat

Apache Tomcat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse

Eclipse

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

JDK

JDK

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。