Tag: 开发人员

10小时内的Appdevcon 2018

3月16日,我到达阿姆斯特丹的PathéArena。 今天,标志性的电影院都与 Appdevcon 有关, Appdevcon 是应用程序开发人员(主要)为应用程序开发人员而举行的年度会议。 我进入,迅速拿起我的徽章,然后上楼梯去会议厅。 在那儿,我加入了越来越多的排队等候咖啡的开发人员。 在他们的背后,像CocoaheadsNL,荷兰Android用户组,Appsterdam和Egeniq(活动组织者)这样的赞助商正在共享美食。 拿到急需的黑咖啡和一瓶水后,我去了13号馆进行当天的第一次演讲。 演讲者:Ash Furrow ( Artsy ) 主题:通过建立更好的团队来构建更好的软件 一个非常鼓舞人心的演讲,与实际的发展无关。 相反,Ash专注于管理心理学以及如何为在那里的团队创造最佳的工作环境-从而构建更好的软件。 简而言之:创造一个每个人都感到安全,没有任何羞辱的空间,并有足够的空间进行公开讨论。 这将使人们指出错误,承认错误,最重要的是从错误中学习。 怎么样? 假设每个人都在尽自己最大的努力,预期并解决苦难,并始终表现出同情心。 此外,Ash推荐Radical Candor作为一本不错的书,并总结了协同作用的概念,因为“……团队是团队合作的总和”。 演讲者:保罗·哈德森( 用Swift破解 ) 主题:如何像专业人士一样进行调试 Pauls的话题全部是关于iOS和Swift的。 Paul从一个非常熟悉的示例开始,在代码中包括print()来检查问题,然后是另一个print()然后是另一个,然后是另一个……然后,您明白了。 Paul提供的解决方案很简单: 断点 。 他演示了如何使用它们在激活时自动打印东西或播放声音。 Paul解释说,而不是删除断点,而是检查BreakpointManager枚举以使其为有条件的。 假设您要调试登录流程。 将BreakpointManager.login设置为’true’,所有登录流程断点将被激活。 由于某些断点适用于所有应用程序,因此您甚至可以在团队中共享它们。 Paul还分享了其他有用的调试技术,该网站真棒,使他们对Assert,Precondition和FatalError有所了解,并为我们提供了许多新的见解。 咖啡时间(休闲时光! 在拍摄下一张咖啡因时,我遇到了前同事Dylan Drost,他刚刚在Cross Platform大厅完成了关于Flutter的演讲。 我请他分享精彩片段,他很高兴地做到了: Flutter的当前状态,例如Dart语言的自定义渲染引擎 Flutter当前缺少可用于生产的内容,例如视频播放和其他基本本机功能 Google大量投资Flutter和Android,因此实际上是在与自己竞争 Google的新操作系统Fuchsia可能会在Flutter被采纳为Android的替代品时发挥作用 我很快又给自己喝了杯咖啡,坐下来进行下一次演讲。 演讲者:Phil Nash( Jetbrains ) 主题:可选不是失败 Phil首先讨论了函数的域和共域,并继续探讨Swift的发展方式,在错误处理方面缺乏该语言,以及如何以及为何引入可选函数。 […]

快速入门Swift中的面向协议的编程

首先,我不会理解为什么面向协议的编程要比继承等更好。 有很多有关该主题的材料,因此您可以发表自己的看法。 我只想与您分享一些我在学习过程中学到的好东西。 我目前正在将我的Objective-C库WANetworkRouting重写为Swift。 顺便说一句,我们在Wasappli的许多应用程序中都使用了该库,您应该尝试一下:通过一些配置行,您可以将应用程序连接到REST Web服务,并在几分钟内将数据缓存到CoreData。 我可能一直在说:我只是将我的代码翻译成Swift,但我想潜入该语言提供的新思维方式。 在过去的8年中,成为Objective-C开发人员使我的习惯变得异常激动。 在Swift中,我最喜欢的事情之一就是如何使用协议为类添加行为。 除了使用继承,您还可以摆脱任何层次结构并放宽行为堆栈。 您还可以精确地决定采用哪种行为,而不必在某个时候吃一堆意大利面。 这样做还鼓励您编写更可测试的代码👍 让我们深入研究代码:WANetworkRouting的功能之一就是能够执行GET myObject之类的功能,而无需知道API上的路由。 在OC库中,我有一个名为WANetworkRouter的组件(很明显),它注册WANetworkRoute,它具有一些属性,例如pathPattern (例如: pathPattern shelves/:itemID ), httpMethod ( POST , GET ,…)和对象类。 这主要是受RestKit和一种方便的配置方式(一劳永逸地配置所有库,以使内容分离)的启发。 例如,您可能正在编写此 然后,通过调用此方法,路由器将针对您的API构建路径。

Swift 3.0的新增功能以及您为什么要关心

自Apple的Swift于2015年12月开源以来,来自世界各地的开发人员一直在要求该公司引入其核心功能的变化。 在考虑了提议之后,Swift 3.0的beta版本终于在本月发布,它带来了许多值得一试的功能。 该版本的主要目标是丰富Swift语言并增强开发经验。 从大量改进工具质量到对API进行大规模修改以及为改善Objective-C API的自动命名指南,Swift 3.0为程序员提供了很多存储空间。 在列出这些功能之前,让我们简要介绍一下什么是Swift及其如何演变。 什么是Swift? Swift是一种针对iOS,OS X,watchOS和tvOS应用程序的编程语言,它基于C和Objective-C的最佳组合而构建,不受C兼容性的限制。 Swift采用安全的编程模式,并添加了现代功能,使编程更加轻松,灵活和有趣。 Swift对Objective-C开发人员感到熟悉。 它采用了Objective-C命名参数的可读性以及Objective-C动态对象模型的强大功能。 它提供对现有Cocoa框架的无缝访问,以及与Objective-C代码的混合匹配互操作性。 它是第一种与脚本语言一样表现力和令人愉悦的工业级系统编程语言。 它支持游乐场,这是一项创新功能,使程序员可以试验Swift代码并立即查看结果,而无需构建和运行应用程序。 修订记录: 每个版本的Swift的一些主要亮点: 2016年3月21日:Swift 2.2 –删除了有关C样式for循环,++前缀和后缀运算符以及—前缀和后缀运算符的讨论。 –在“选择器表达式”部分中添加了有关Objective-C选择器的#selector语法的信息。 –在“构建配置语句”部分中添加了有关如何根据所使用的Swift版本有条件地编译代码的信息。 2015年10月20日:Swift 2.1 –更新了“通过可选链接访问属性”部分,以阐明通过可选链接进行分配的行为。 –更新了“字符串插值”和“字符串文字”部分,因为字符串插值可以包含字符串文字。 2015年9月16日:Swift 2.0 –添加了有关新尝试的信息? 将错误转换为可选值部分的关键字。 –将有关API可用性检查的信息添加到“控制流”一章的“检查API可用性”部分和“语句”一章的“可用性条件”部分。 –更新了“同时重复”部分,其中包含有关“同时重复”循环的信息。 –使用有关标记的中断语句的信息更新了“中断语句”部分。 2015年4月8日:Swift 1.2 – Swift现在具有本机Set集合类型。 –在运行时可能失败的类型转换现在使用as? 还是一样! 运算符,并使用as运算符来保证不会失败的类型转换。 –更新了协议声明以阐明协议声明的范围和成员。 2014年10月16日:mSwift 1.1 – Any类型的常量和变量现在可以包含函数实例。 更新了Any的示例,以显示如何在switch语句中检查并强制转换为函数类型。 –现在,具有原始值的枚举具有rawValue属性而不是toRaw()方法,并且具有rawValue参数而不是fromRaw()方法的失败的初始化器。 2014年8月18日:Swift 1.0 –添加了有关仅类协议的新部分。 –在“声明属性”部分中添加了有关可用性属性的信息。 –可选参数不再具有值时隐式评估为true,而没有赋值时则隐式评估为false,以避免在使用可选Bool值时产生混淆。 而是使用==或!=运算符对nil进行显式检查,以找出可选值是否包含值。 […]

豆荚,迦太基和SPM:Swift的包装管理困境

到2019年,Swift已从Apple的少数几个开源项目之一发展成为一种功能强大的语言,成为Apple系统开发背后的强大力量,甚至还扩展到了Linux等其他操作系统。 现在处于4.2版中,期待已久的Swift 5发行版,Swift因其协议定位和为多个平台编写本机应用程序的能力而变得非常流行。 Swift 3是所有Swift用户和开发人员的标志性版本:它是代码破解版本,更改了大多数语法,删除了语言方面并添加了其他内容,并引入了其他主要工具和增强功能,例如Swift Package Manager和Swift Linux的核心库。 但是,随着Swift 3的到来,对开发人员来说,另一个艰难的决定。 Swift软件包管理器(Swift Package Manager)是Swift开发人员的第三个软件包管理器,但也是第一个正式软件包管理器,现已投入使用,使库和框架的选择和分发过程更加多样化。 Swift的包装管理困境 Google的词典将困境定义为“必须在两个或多个替代方案之间做出艰难选择的情况,尤其是同样令人讨厌的替代方案。”现在,我不会说所有可用的软件包管理器都是令人讨厌的,但我可以同意,它们都不是完美的。 与任何软件一样,程序包管理器都有其成功之处和不足之处,尽管每种缺点在开发中使用时都可能导致麻烦。 Swift的三个主要包管理器是Cocoapods,Carthage和Swift包管理器(SPM)。 Cocoapods是该小组中的老大,自从Objective-C是Apple的主要软件开发语言以来就一直存在。 Cocoapods最初于2011年9月17日发布,最初是为使用面向对象的C风格语言的库和框架提供服务的,为随之而来的软件包管理者铺平了道路。 当Swift成为主流时,Cocoapods慷慨地扩展到包括新语言的库和框架,新语言是其他程序包管理器将在以后建立的语言。 当2014年11月到来时,下一个软件包管理器发布了,这意味着Cocoapods不再是使用Xcode的那些的唯一发行商。 多种选择的能力都很强,这使得最初的Swift软件包管理器引起了争议。 尽管许多人认为它对Swift和Objective-C开发人员来说是革命性的,但其他人却因为它的明显缺点对其进行了轰炸。 Cocoapod最显着的功能之一就是它完全自动化了依赖程序,开发人员只需运行pod install ,Cocoapods便会获取并构建依赖项,将其插入项目中,将其链接到项目中,并生成一个包含两者的工作区。项目和豆荚。 事实证明,虽然该功能是主要的便利,但开发人员并不完全满意:尽管该过程确实节省了他们大量的时间和精力,但它也将对项目的控制权移交给了Cocoapods并让其处理文件和项目设置。 开发人员感到这是一种无声的痛苦,直到下一个程序包管理器发布时,这种痛苦才得以表达。 随着时间的流逝,开发人员对允许流行的第三方掌控为其项目构建程序包的满意度越来越低。 尽管较新的软件包管理器是用Swift编写的,但对于Swift而言,Cocoapods是用Ruby编写的,这意味着开发人员确实需要熟悉该语言才能操作软件包管理器。 许多人确实知道Ruby,而且学习曲线并不复杂,因此添加另一种语言的文件带来的不便并不麻烦。 但是,Swift的软件包管理器不是用自己的语言(例如Nuget,PyPi或NPM)编写的,而不得不使用另一种语言的事实给开发人员带来了痛苦。 Cocoapods是集中式的,这在软件包管理器中很常见(一个常见的指标是软件包注册表)。 程序包管理器中的集中化意味着存在一个中央代码注册表,可以在其中托管和查看程序包,并且客户端(通常是命令行界面)可以从中提取代码以生成程序包。 可以从cocoapods.org上浏览其网络上托管的所有Pod,这对于那些没有特定软件包或只想浏览可用软件包的开发人员来说非常有用。 但是,许多人似乎对新的分散化概念感到迷惑,这意味着Cocoapods不再是理想的包裹管理系统。 尽管Cocoapods有其缺点,并且最近一直受到嘲笑,但是它仍然是Swift的包管理器中最古老的,并且由于其自动化,对初学者非常友好。 CocoaPods.org iOS和Mac项目的依赖管理器 cocoapods.org 迦太基是第二位进入该小组的包装经理,从一开始它就与Cocoapods的主要区别显而易见。 它于2014年11月18日发布,在Swift 1.1正式发布后仅两个月就可用,并且支持Swift中的Objective-C。 迦太基在Cocoapods中发现了一个对开发人员来说很酸的话题:虽然Cocoapods是用Ruby编写的,但是Carthage完全用Swift编写了一个包管理器来迎合用户。 除了以Apple支持的语言以及您的项目被编写时,依赖管理的强大功能之外,Carthage还声称它利用Xcode的构建系统,同时为开发人员提供了集成其依赖的自由。 通过迦太基,开发人员可以控制他们项目的依赖关系,从而使他们能够在迦太基构建之后,根据自己的选择进行链接和管理。 第一次学习如何将Carthage集成到您的项目中(以及随后针对更复杂的需求)时,Carthage的README具有令人难以置信的描述性和实用性,但是对于经验较少的开发人员来说,开始使用它可能非常复杂。 但是,随着集成过程的延长,从长远来看,它将带来更多的简化和控制。 设置好迦太基并链接了依赖项后,只需要将一行添加到一个非常简单的文件(而不是将一行或多行添加到Ruby文件)和一个命令, carthage update ,就可以生成新的框架。可以导入原始文件的方式。 迦太基消除了在较大的.xcworkspace中处理多个.xcproject文件的麻烦,并消除了与核心项目一起添加的庞大文件结构,而仅在项目根目录中使用.framework文件夹对项目进行了补充,该文件夹清楚地说明了名称。框架。 迦太基提供了Swift,Objective-C或其他语言的其他软件包管理器所没有的某种程度的控制,那就是完全控制。 刚开始创建运行脚本并将框架链接到项目似乎很困难,但是一旦习惯后,该过程将变得异常顺利。 […]

用Swift编写Dijkstra算法的正确方法

剧透警报:您根本不写! ⭐️⭐️⭐️️⭐️⭐ 嗨! 此帖已移至新博客! 来到Fivestars.blog以获得最新文章! ⭐️⭐️⭐️️⭐️⭐ 上周,我写了关于如何在Swift中编写著名的Dijkstra算法的代码:本文是其后续内容。 我的原因 我没有写上一篇文章,而是花时间做文章研究:我所有的Metro Metro应用程序都实现了类似的算法。 在本文中,我将向您展示为什么您不需要利用我的相同方法,即利用Apple提供的工具并以更少的努力获得相同的结果 (同时获得其他好处)。 介绍GameplayKit 在Apple的数十种框架中,有GameplayKit:无论您的应用程序是否为游戏,该框架始终可供您使用。 但是什么是GameplayKit? 我很高兴你问! 我将让Apple的GameplayKit指南为您解答: GameplayKit是用于在iOS,OS X和tvOS中构建游戏的基础工具和技术的集合。 构建,发展和维护复杂的游戏需要精心计划的设计-GameplayKit提供了一些架构工具,可帮助您以最小的努力设计模块化,可扩展的游戏架构。 哇,这个框架听起来很多东西! GameplayKit核心 让我们使用分而治之范例更好地理解此GameplayKit,以下是其主要核心(摘自Apple的GameplayKit指南): 随机化 。 使用标准算法的这些强大,灵活的实现方式作为多种游戏机制的构建块。 实体和组件 。 通过在此架构上构建,设计更多可重用的游戏代码。 状态机 。 使用此体系结构可以解开游戏设计中的复杂程序代码。 Minmax策略家 。 为基于回合的游戏和AI玩家对象创建模型,并使用该模型计划最佳移动。 寻路 。 用图形描述游戏世界,允许GameplayKit规划游戏角色遵循的最佳路线。 代理人,目标和行为 。 使用此模拟可以使游戏角色根据高级目标移动自己并对周围环境做出反应。 规则系统 。 将游戏设计与可执行代码分开以加快游戏开发周期,或实施模糊逻辑推理以向游戏中添加逼真的行为。 等等…又是什么第五点? 5.寻路 。 将[…]世界描述为图表 ,[…] 规划最佳路线 […] 这听起来很像我们正在尝试做的事情! 让我们深入研究。 GameplayKit 寻路 […]

Oracle如何用UNDERSCORE欺骗我两个月

tldr; 我当时集成了Oracle的移动推送SDK,被困了2个月。 原来,他们有一个下划线的令人尴尬的错误! Oracle的Responsys / PushIO证明是正确的-企业产品糟透了。 这篇文章是我对甲骨文产品有多糟糕的抱怨。 我花了两个月的时间弄清楚为什么我们的iOS应用程序不显示从Oracle平台推送的丰富消息。 它归结为一个UNDERSCORE。 是的,在他们的API密钥中生成了_ ,这是我们的应用无法正常工作的原因。 从Oracle开发人员支持: 该错误是您的API密钥生成时带有下划线“ _”,并且对于在下游使用API​​密钥是无效的字符。 该修复应该很简单……创建一个新平台,直到您获得一个没有API密钥下划线的平台。 哇。 这是一个令人尴尬的错误,但更令我振奋的是他们如何处理它。 首先,该错误会影响大多数用户,因为在获得“有效”尝试之前,我进行了3次尝试。 我估计有66%的用户可能生成了“无效”密钥。 该错误影响很大。 所有丰富的推送消息将不会显示在应用程序中! PushIO SDK的最新版本是2017年6月16日,即撰写本文时的2个月前。 我给他们带来怀疑的好处,因为我认为该错误仅出现在该发行版中,尽管我确实认为该错误发生在6.32.1版之前。 关键是,应该尽快修复主要错误。 但是甲骨文没有。 更不用说这应该很容易解决。 他们可以用几行代码修复API密钥生成器。 Oracle不知何故选择不这样做。 在升级到开发人员之前,我们的客户经理和几个客户支持人员不了解尴尬_问题。 这可能意味着: 他们没有太多用户,这个问题从未出现过 他们在交流和共享此类知识时遇到问题 无论哪种方式,作为用户,我对Oracle都不太自信。 为什么这么久? 在尝试调查问题并找出问题时,我提出了一个简单的问题: 是否有iOS示例代码? 来自“企业支持”的回复并非很快。 他们花了2周的时间才终于得到答案-不,他们没有。 同样,这表明此类FAQ缺乏知识库。 调查我们的推送失败的原因是乏味且缓慢的,因为我必须等到第二天才能检查来自FTP服务器的日志。 感觉如此1990年代。 Responsys是企业电子邮件营销工具-一种缓慢而复杂的Web应用程序。 另一方面,Mail Chimp是竞争对手,很酷,而且用户友好。 自从苹果公司于2009年彻底改变了推送技术以来,PushIO是一个移动推送SDK,在一个非常拥挤的空间中。 更好的竞争对手包括Urban Airship和OneSignal(免费!)。 2014年,甲骨文吞并了Responsys,后者又吞并了PushIO,这是一笔15亿美元的收购 ! 当一家大公司收购一个团队及其产品时,这就是衰败的开始 。 这种情况比较麻烦,因为肥大的肥肉鱼吃掉了一条鱼,而鱼又吃了另一条小鱼。 小鱼(PushIO)可能不幸死亡。

了解如何从头开始开发自己的macOS应用程序!

您是否想学习如何开发自己的macOS应用程序,并以此为荣并在您的个人MacBook上使用它? 或者,也许您有激动的热情开始在Mac上进行开发? 然后,您来对地方了! 在这里,我将引导您完成使用最现代的语言之一Swift开发第一个非常macOS应用程序的步骤。 对编程有兴趣 对Swift编程有一些基本的了解(优势) 已安装Xcode 8.3.3 热情打造macOS应用 macOS开发的基本概念 如何将Alamofire与macOS应用程序集成以执行网络呼叫 如何创建拖放机制 一些Swift 3语法 我敢肯定,您很高兴知道我们将制造什么好东西! 在本教程中,我们将研究Mac的主要应用程序层Cocoa。 该层负责应用程序的外观和用户动作的响应能力,这也是我们将引入所有可视元素,网络和应用程序逻辑的地方。 我们会将图像上传到uploads.im,因为它提供了供我们使用的开放API。 完成整个教程后,这将是最终产品, 首先将向用户显示一个主屏幕,并显示“在此处拖放图像”的说明。 然后,用户可以将任何 jpg 格式的图像 拖动 到应用程序中,然后该应用程序将显示加载微调框,以通知用户它正在将图像上传到服务器。 服务器 成功 响应后 ,用户将获得一个弹出警报窗口,可以在其中 将URL复制到剪贴板 ,然后用户可以将URL粘贴到任何地方,例如在Internet浏览器上从服务器查看其图像。 聊够了,让我们开始吧! 首先,让我们启动Xcode 9并创建名为PushImage macOS应用项目。 在Application下选择macOS和Cocoa App 。 您可以按照我在下一页中输入的设置进行操作,然后为您的项目文件选择一个目录。 现在您已经完成了所有项目的设置,我想借此机会在Xcode 9中重构我最喜欢的一项新功能, 重构! 如果您使用过以前版本的Xcode,则无法重构Swift代码。 让我们试一试。 突出显示ViewController并转到Editor->Refactor 。 让我们将其更改为HomeViewController ,然后单击Rename 。 这将对您的filename , class name和Storyboard viewcontroller class […]

Swift 4.2有什么新功能?

又是一年中的那个时候,用于新的Swift语言更新。 4.2是Swift 4系列中继4.0和4.1之后的第二次更新。 在此博客中,让我们检查Swift 4.2中的新增功能,并记住Swift 4.2需要Xcode 10,并确保在开始之前运行Xcode 10。 枚举案例的派生集合: 引入了新的CaseIterable协议,该协议默认情况下会生成枚举中所有案例的数组属性。 我们只需要遵循CaseIterable协议,编译器就会生成allCases属性,该属性是所有枚举案例的数组。 枚举 CompassDirection:CaseIterable { 案例北,南,东,西 } print(“有\(CompassDirection.allCases.count)方向。”) //打印“有4个方向。” let caseList = CompassDirection.allCases .map({“ \($ 0)”}) .joined(分隔符:“,”) // caseList ==“北,南,东,西” allCases的自动综合仅适用于不使用关联值的enum 。 但是,如果需要,我们可以自己添加它们。 列举城市:CaseIterable { 静态var allCases:[城市] { 返回[.antwerp,.brussels,.mumbai,.hyderabad(国家名称:“印度”)] } 安特卫普案例 布鲁塞尔 孟买 大小写hyderabad(countryName:String) } 新的编译器指令: Swift 4.2引入了#warning和#error指令,它们会提示Swift编译器在编译期间发出自定义警告或错误 #warning主要用于提醒自己或其他人某些工作尚未完成。 如果提供的库需要其他开发人员提供一些数据,则#error主要有用。 #warning和#error工作方式相似。 func crypto(_字符串:字符串,密码:字符串)->字符串{ #warning(“这是可怕的加密方法”) 返回密码+字符串(string.reversed())+密码 }结构配置{ […]

Xcode iOS Xcode无线部署

当我们使用Xcode进行应用程序开发时,通常将我们的iOS设备绑定到Mac上以部署应用程序,但是Xcode 9引入了“无线部署-调试”,这份5分钟的指南将帮助您进行设置。 切换到无线。 Xcode 9+ IDE 苹果系统 无线网络 iOS 10+设备 从finder或Xcode最近的项目中打开您的Project_Name.xcodeproj文件。 选择主project_name,然后一般检查是否有任何错误或警告。 将iPhone或iPad连接到Mac,然后按“信任此计算机”。 无线部署设备列表 检查“设备”列表,其中将显示所有可用于运行的设备和模拟器。 当您的iOS设备显示时,您可以选择窗口 -> 设备和模拟器 ,这将使显示成为一个新的弹出窗口。 无线部署位置 在选择设备屏幕中选择iOS设备 。 选中通过网络连接选项。 就是这样,除非您想为不支持无线充电的iOS设备充电,否则就不会再打乱电线了。 应用程序设备窗口 通过电缆断开iOS设备的连接,现在在Xcode设备选择屏幕中,它将在设备名称旁边显示一个网络图标。 注意:要使无线部署正常工作,工作站和iOS设备都应通过无线路由器或移动热点连接在同一网络上。 设备列表成功 最初发布在 kautilya.design上 。

:-) Putzige表情符号

死者Strichmännchenwerden erwachsen 肯肯·西尼特(Wer kennt sie nicht)? Emojis grinsen sich schon seit geraumer Zeit durch die Chat-and SMS-Welt。 FileMaker将无法正常使用本软件和其他符号。 Viele Jahre lang haben wir aus Punkten,Strichen和Klammern kleineStrichmännchenzusammengestrickt,Einführungder Mobiltelefone zu grafischen Objekten和sogenannten Smileys geworden sind。 在智能手机上的显示设置和在手机上显示的表情符号—象征性的符号表示为家庭成员的符号表示为Angewachsen。 统一码 UTF格式的符号联盟与Unicode联盟(1)的最佳组合和标准化。 塞纳·米特格利德(Seine Mitglieder)在Linie aus verschiedenen计算机公司, zB Adobe,Apple,Facebook,华为,IBM,微软,部长级von Awqaf (阿曼苏丹国), 甲骨文,SAP和Yahoo等 公司 任职 。 Vereinigungen和Förderer的Hinzu kommen verschiedene研究所。(2) Verfügbarkeit Seit Mac OS […]