ICE

新iPad Pro更像电脑了 但MacBook Air仍将屹立不倒

感情迁移 提交于 2020-03-21 14:20:31
3 月,跳不动了?>>>   腾讯数码讯当苹果于 2015 年初发布 12 英寸 MacBook 的时候,我们起初都认为这将会是一款替代 MacBook Air 的全新系列。   彼时的 MacBook Air 已经有 5 年时间未迎来设计上的改变,粗大的边框和非高清屏让这款机器显得老态龙钟。   而 12 英寸 MacBook 的横空出世让我们耳目一新,窄边框、超薄机身、无风扇设计、Retina 显示屏,这一切看上去都像是 MacBook Air 的高级进化。   但事实证明,12 英寸 MacBook 是一款太过超前的产品。过高的售价、接口的缺乏、羸弱的性能、易坏的蝶式键盘,这些又让它未能真正继承 MacBook Air 的衣钵。   到最后,12 英寸 MacBook 在 2017 年的常规配置升级之后便再没了声音,而 MacBook Air 则继续维持着每年一更的稳定频率,2018 年末发布的第三代机型更是将前者取而代之。   在本周,苹果又带来了第三代 MacBook Air 的第三次更新,而除了配置升级之外,这个 MacBook 产品线中的入门系列似乎又多了一分专业的气质。    键盘的轮回   如今看来,12 英寸 MacBook 更像是一款实验性的产品,苹果在它身上尝试了几个他们希望在未来推进的功能点,比如窄边框、USB-C 接口、以及蝶式键盘。  

ICE专题:ICE架构

一个人想着一个人 提交于 2020-03-18 22:02:13
1)slice 首先就是ice的对象模型,slice(specification Language for Ice)就是用来描述ice的对象模型的,有哪些接口,有哪些操作,以及要交换的数据类型。可以把slice看成是一个合约,各种平台,各种语言映射,相互调用的公共接口,共同遵守的规则。 2)语言映射 目前ice提供了c++,java,c#,vb,python,php的语言映射。因为各种语言的对象模型是不一样的,必须把这些不同的对象模型映射到同一个模型上,进行操作。这就是一个抽象的过程。直接去定义接口,然后剩下的工作就交给ice run time来完成各种语言之间对象的相互转换。 3)客户机与服务器的结构 客户与服务器都由这样一些代码混合而成:应用代码、库代码、根据Slice 定义生成的代码 整个结构有两个方面:客户端/服务器,它们共同使用的就是ice核心(ice run time) 上图中最关键的部分就是ice核心,也就是ice run time Ice 核心为远地通信提供了客户端和服务器端运行时支持。其中的大量代码所涉及的是网络通信、线程、字节序,以及其他许多与网络有关的问题。之所以被称为中间件,就是因为有了ice run time把开发人员从繁琐的网络编程中解放出来了,让他们直接面对应用,解决业务逻辑这一块。 客户端=ice核心+代理代码+ice api 服务器=ice核心

ICE专题:ICE在Linux下的安装

浪子不回头ぞ 提交于 2020-03-14 22:23:48
Ice的安装 从年初的一期《程序员》杂志上了解到ICE以后,因为其对比于 CORBA具有简单、高效、易用的特点,所以一直都有留意。之前也有一段时间下载了Ice 1.x版本和相应的文档来研究,但因工作忙,中断了一段时间。 Ice的主页: http://www.zeroc.com 这几天工作稍微轻松点,有点时间,就继续研究Ice 2.1.1版本。在学习的过程中,免不了要安装的。这篇文章就是想说说安装的问题。 其实Ice-2.1.1安装算是蛮简单的。因为像比较新的Linux操作系统上,Ice所需的辅助软件包都已经有了,如果你装的系统确实没有这些软件,可以在Ice的下载页面上下载到第三方的软件包,然后安装,安装这些都不难,主要是要看软件相应的readme和install类型的文档。 我在Fedora 3上安装,上面带了expat, openssl, db4.2, bzip2,所以基本不用装第三方的软件。唯一一个问题是:Fedora 3上的db4.2没有安装db的C++开发库,所以需要重新编译安装db。 =========== STEP 1:安装db ============================= 安装db的文档在db包的docs里面有html格式的说明文档,很简单。解开db的tar/zip包后: $cd db-ver $cd build_unix $../dist

ICE专题:ICE起步

这一生的挚爱 提交于 2020-03-08 08:23:38
ICE初步 最早开始接触ICE是在2005,3月份,当时一个朋友向另一个正打算研究corba的朋友强烈的推荐了ICE. 参考: http://www.zeroc.com/ 1.什么是ICE? ICE(internet communications engine)是适用于异种环境的面向对象中间件平台。 那么什么是中间件呢? 比较流行的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通讯。 从中间件的定义可以看出,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,定义中特别强调了其网络通讯功能. (如此说来,twisted就是一个中间件) 目前中间件的三大主流平台: 1.OMG的CORBA 2.sun的J2EE(包括ejb等技术) 3.MS的Microsoft DNA 2000(DCOM/COM/COM+等技术) 关于中间件的介绍: http://tech.ccidnet.com/pub/article/c322_a204949_p3.html 2.ICE的一些概念 服务器/客户端(server/client):这个的定义与一般的定义相同,主动的一方被认为是client ICE对象:跟OOP中的对象类似,不同之处在于

如何查看Android的系统版本?

本秂侑毒 提交于 2020-02-25 23:28:53
有谁知道我怎么能检查系统版本(例如 1.0 , 2.2 ,等)编程? #1楼 我无法对答案发表评论,但是Kaushik的答案存在一个严重错误:SDK_INT与系统版本不同,但实际上是指API级别。 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){ //this code will be executed on devices running ICS or later } 值 Build.VERSION_CODES.ICE_CREAM_SANDWICH 等于 Build.VERSION_CODES.ICE_CREAM_SANDWICH 是Ice Cream Sandwich的API级别,而系统版本是4.0。 因此,如果您编写4.0,则代码将从Donut开始在所有设备上执行,因为Donut的API级别为4( Build.VERSION_CODES.DONUT 等于4)。 if(Build.VERSION.SDK_INT >= 4.0){ //this code will be executed on devices running on DONUT (NOT ICS) or later } 此示例是为什么使用“幻数”是一种不良习惯的原因。 #2楼 Build.Version 是此数据的存放地。

ICE学习——异步1

巧了我就是萌 提交于 2020-01-02 05:05:52
ICE 的 AMI 和AMD: AMI :指的是客户端的调用.一般有一个代理类,一个回调类。 从服务端返回的数据在回调类中的ice_response函数中. AMD:指的是服务端对客户端的调用分派.一般进行业务处理需要自己写一个类继承于_Disp类。重载method_async(AMD_CALLBACK __cb,arg1,arg2,...)函数.在这个函数中调用__cb的ice_response(result)往回调类中写result.这样客户端就能够接收到回写的结果 还有一点很有特色的是,AMI和AMD是完全互相独立的,也就是说对于同一个interface,客户端不会知道服务器是否用AMD方式相应请求,服务器端也不会知道客户端是否用AMI发起调用。 而且,他们也无需知道,这是实现的细节,不是接口的契约。 异步方法调用(Asynchronous Method Invocation,简称AMI) 下面这种情况就是AMI调用:“斧头帮”大哥(客户端)叫小弟(服务器端)去干收租的活(远程调用),并且给小弟一把烟花炮竹(回调类)。嘱咐说: “我还有其它事情要打扫打扫,如果你的事情办完了,就放'OK'烟花;如果遇到反抗,就放'斧头'烟花!”(服务器答复)。说完,这位大哥就可以放心的做 其它事去了,直到看到天上烟花盛开,根据"OK"或"斧头"状再作处理。 AMI是针对客户端而言的

Has anybody compared WCF and ZeroC ICE?

∥☆過路亽.° 提交于 2019-12-31 12:42:08
问题 ZeroC's ICE (www.zeroc.com) looks interesting and I am interested in looking at it and comparing it to our existing software that uses WCF. In particular, our WCF app uses server callbacks (via HTTP). Anybody who's compared them? How did it go? I'm particularly interested in the performance aspect, since interoperability isn't much of a concern for us right now. Thanks! 回答1: I did a very terse review of ICE a few years ago, and although I haven't compared them directly before, having

C++ Link external libraries

做~自己de王妃 提交于 2019-12-23 03:26:08
问题 i just started with c++ programming. For my new work, i have to download, install and take use of an external library. It is called ICE. It was composed as a .tar file, so i decomposed it inside my home-directory "/home/foo/ice". Now, there is the directory: "/home/foo/ice/src", within all the .h headers, i need for the program. But can i tell the compiler, where he can find all these new headers? I mean only with #include, he obviously doesn't know. What i need: #include <image.h> "image.h"

VS2015 Update 1 bug, or bad C++: Why can't a friend class access its friend's protected destructor?

删除回忆录丶 提交于 2019-12-21 08:15:35
问题 The following appears to be a pattern employed by ZeroC ICE in the code it auto-generates, which appears to me to be a way they have made singletons (not sure why) for many releases of their tool now. Various compilers have no problem with it, until I found today that Visual Studio 2015 Update 1 (VS version 14.0.24720.00, VC++ version 19.00.23506) emits an error. Before Update 1, VS2015 also had no problem with it. I'm not sure whether it's a bug (regression?) in the VS2015 C++ compiler with

ICE-python学习笔记(一)——ice demo

早过忘川 提交于 2019-12-18 07:22:26
基础 官网有个demo,大概意思就是: 先写一个.ice的文件:(Printer.ice) module Demo { interface subjectMatter { string printString(string s); } } 然后运行下面的语句生成文件: slice2py Printer.ice 生成如下文件: 然后运行ICE的Service和Client就可以了 Service.py: import sys, Ice import Demo class PrinterI(Demo.Printer): def printString(self,s,current=None): print(s) return len(s) with Ice.initialize(sys.argv) as communicator: adapter = communicator.createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000") object = PrinterI() adapter.add(object, communicator.stringToIdentity("SimplePrinter")) adapter.activate() communicator